From 906ec30339723828a58b4241cb1b1a91a951732b Mon Sep 17 00:00:00 2001 From: Katherine Parry Date: Tue, 23 Feb 2021 20:19:12 +0000 Subject: [PATCH] inital FMA push --- wally-pipelined/src/fpu/FMA/add.v | 61 + wally-pipelined/src/fpu/FMA/align.v | 99 + wally-pipelined/src/fpu/FMA/array.sv | 114 + wally-pipelined/src/fpu/FMA/booth.sv | 55 + wally-pipelined/src/fpu/FMA/bypass.v | 30 + wally-pipelined/src/fpu/FMA/compressors.sv | 90 + wally-pipelined/src/fpu/FMA/expgen.v | 135 + wally-pipelined/src/fpu/FMA/flag.v | 85 + wally-pipelined/src/fpu/FMA/fmac.v | 130 + wally-pipelined/src/fpu/FMA/lop.v | 41 + wally-pipelined/src/fpu/FMA/normalize.v | 63 + wally-pipelined/src/fpu/FMA/round.v | 106 + wally-pipelined/src/fpu/FMA/sign.v | 93 + wally-pipelined/src/fpu/FMA/special.v | 70 + wally-pipelined/src/fpu/FMA/tb.v | 2824 ++++++++++++ .../src/fpu/FMA/tbgen/StineVectors | 1997 +++++++++ wally-pipelined/src/fpu/FMA/tbgen/ans | 199 + wally-pipelined/src/fpu/FMA/tbgen/output | 199 + wally-pipelined/src/fpu/FMA/tbgen/results.dat | 1 + wally-pipelined/src/fpu/FMA/tbgen/tb | Bin 0 -> 13120 bytes wally-pipelined/src/fpu/FMA/tbgen/tb.c | 116 + wally-pipelined/src/fpu/FMA/tbgen/tb.v | 3952 +++++++++++++++++ wally-pipelined/src/fpu/FMA/tbgen/tbgen | Bin 0 -> 13048 bytes wally-pipelined/src/fpu/FMA/tbgen/tbhead.v | 36 + wally-pipelined/src/fpu/FMA/tbgen/testMini | 1000 +++++ wally-pipelined/src/fpu/FMA/tbgen/test_gen.sh | 1 + .../src/fpu/FMA/tbgen/tstFlMult.awk | 1 + 27 files changed, 11498 insertions(+) create mode 100644 wally-pipelined/src/fpu/FMA/add.v create mode 100644 wally-pipelined/src/fpu/FMA/align.v create mode 100644 wally-pipelined/src/fpu/FMA/array.sv create mode 100644 wally-pipelined/src/fpu/FMA/booth.sv create mode 100644 wally-pipelined/src/fpu/FMA/bypass.v create mode 100644 wally-pipelined/src/fpu/FMA/compressors.sv create mode 100644 wally-pipelined/src/fpu/FMA/expgen.v create mode 100644 wally-pipelined/src/fpu/FMA/flag.v create mode 100644 wally-pipelined/src/fpu/FMA/fmac.v create mode 100644 wally-pipelined/src/fpu/FMA/lop.v create mode 100644 wally-pipelined/src/fpu/FMA/normalize.v create mode 100644 wally-pipelined/src/fpu/FMA/round.v create mode 100644 wally-pipelined/src/fpu/FMA/sign.v create mode 100644 wally-pipelined/src/fpu/FMA/special.v create mode 100644 wally-pipelined/src/fpu/FMA/tb.v create mode 100644 wally-pipelined/src/fpu/FMA/tbgen/StineVectors create mode 100644 wally-pipelined/src/fpu/FMA/tbgen/ans create mode 100644 wally-pipelined/src/fpu/FMA/tbgen/output create mode 100644 wally-pipelined/src/fpu/FMA/tbgen/results.dat create mode 100755 wally-pipelined/src/fpu/FMA/tbgen/tb create mode 100644 wally-pipelined/src/fpu/FMA/tbgen/tb.c create mode 100644 wally-pipelined/src/fpu/FMA/tbgen/tb.v create mode 100755 wally-pipelined/src/fpu/FMA/tbgen/tbgen create mode 100644 wally-pipelined/src/fpu/FMA/tbgen/tbhead.v create mode 100644 wally-pipelined/src/fpu/FMA/tbgen/testMini create mode 100755 wally-pipelined/src/fpu/FMA/tbgen/test_gen.sh create mode 100755 wally-pipelined/src/fpu/FMA/tbgen/tstFlMult.awk diff --git a/wally-pipelined/src/fpu/FMA/add.v b/wally-pipelined/src/fpu/FMA/add.v new file mode 100644 index 000000000..9fc6a78dd --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/add.v @@ -0,0 +1,61 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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(r[105:0], s[105:0], t[157:0], sum[157:0], + negsum, invz, selsum1, killprod, negsum0, negsum1, proddenorm); +//////////////////////////////////////////////////////////////////////////////// + + input [105:0] r; // partial product 1 + input [105:0] s; // partial product 2 + input [157:0] t; // aligned addend + input invz; // invert addend + input selsum1; // select +1 mode of compound adder + input killprod; // z >> product + input negsum; // Negate sum + input proddenorm; + output [157:0] sum; // sum + output negsum0; // sum was negative in +0 mode + output 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 [157:0] t2; // addend after inversion if necessary + wire [157:0] sum0; // sum of compound adder +0 mode + wire [157:0] sum1; // sum of compound adder +1 mode + + // Invert addend if necessary + + assign t2 = invz ? -t : t; + + // Zero out product if Z >> product or product really should be zero + + assign r2 = ~proddenorm & killprod ? 106'b0 : r; + assign s2 = ~proddenorm & killprod ? 106'b0 : s; + + // Compound adder + // Consists of 3:2 CSA followed by long compound CPA + + assign sum0 = {52'b0, r2} + {52'b0, s2} + t2 + 158'b0; + assign sum1 = {52'b0, r2} + {52'b0, s2} + t2 + 158'b1; + + // Check sign bits in +0/1 modes + assign negsum0 = sum0[157]; + assign negsum1 = sum1[157]; + + // Mux proper result (+Oil mode and inversion) using 4:1 mux + + assign sum = selsum1 ? (negsum ? ~sum1 : sum1) : (negsum ? ~sum0 : sum0); + +endmodule diff --git a/wally-pipelined/src/fpu/FMA/align.v b/wally-pipelined/src/fpu/FMA/align.v new file mode 100644 index 000000000..dd0c86f7d --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/align.v @@ -0,0 +1,99 @@ +/////////////////////////////////////////////////////////////////////////////// +// 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(z[51:0], ae[12:0], aligncnt, xzero, yzero, zzero, zdenorm, proddenorm, t[157:0], bs, ps, + killprod, bypsel[1], bypplus1, byppostnorm); +///////////////////////////////////////////////////////////////////////////// + + input [51:0] z; // Fraction of addend z; + input [12:0] ae; // sign of exponent of addend z; + input [11:0] aligncnt; // amount to shift + input xzero; // Input X = 0 + input yzero; // Input Y = 0 + input zzero; // Input Z = 0 + input zdenorm; // Input Z = denorm + input proddenorm; + input [1:1] bypsel; // Select bypass to X or Z + input bypplus1; // Add one to bypassed result + input byppostnorm; // Postnormalize bypassed result + output [157:0] t; // aligned addend (54 bits left of bpt) + output bs; // sticky bit of addend + output ps; // sticky bit of product + output killprod; // Z >> product + + // Internal nodes + + reg [157:0] t; // aligned addend from shifter + reg killprod; // Z >> product + reg bs; // sticky bit of addend + reg ps; // sticky bit of product + reg [7:0] i; // temp storage for finding sticky bit + wire [52:0] z1; // Z plus 1 + wire [51:0] z2; // Z selected after handling rounds + wire [11:0] align104; // alignment count + 104 + + // Increment fraction of Z by one if necessary for prerounded bypass + // This incrementor delay is masked by the alignment count computation + + assign z1 = z + 1; + assign z2 = bypsel[1] && bypplus1 ? (byppostnorm ? z1[52:1] : z1[51:0]): z; + + // Compute sign of aligncnt + 104 to check for shifting too far right + + assign align104 = aligncnt+104; + + // Shift addend by alignment count. Generate sticky bits from + // addend on right shifts. Handle special cases of shifting + // by too much. + + always @(z2 or aligncnt or align104 or zzero or xzero or yzero or zdenorm) + begin + + // Default to clearing sticky bits + bs = 0; + ps = 0; + + // And to using product as primary operand in adder I exponent gen + killprod = 0; + + if(zzero) begin + t = 158'b0; + if (xzero || yzero) killprod = 1; + end else if ((aligncnt > 53 && ~aligncnt[11]) || xzero || yzero) begin + // Left shift by huge amount + // or product = 0 + t = {53'b0, ~zzero, z2, 52'b0}; + killprod = 1; + ps = ~xzero && ~yzero; + end else if ((ae[12] && align104[11])) begin //***fix the if statement + // KEP if the multiplier's exponent overflows + t = {53'b0, ~zzero, z2, 52'b0}; + killprod = 1; + ps = ~xzero && ~yzero; + end else if(align104[11]) begin // Right shift by huge amount + bs = ~zzero; + t = 0; + end else if (~aligncnt[11]) begin // Left shift by reasonable amount + t = {53'b0, ~zzero, z2, 52'b0} << aligncnt; + end else begin // Otherwise right shift + t = {53'b0, ~zzero, z2, 52'b0} >> -aligncnt; + + // use some behavioral code to find sticky bit. This is really + // done by hardware in the shifter. + if (aligncnt < 0) + for (i=0; i<-aligncnt-52; i = i+1) + bs = bs || z2[i]; + end + end + +endmodule diff --git a/wally-pipelined/src/fpu/FMA/array.sv b/wally-pipelined/src/fpu/FMA/array.sv new file mode 100644 index 000000000..1c216e44e --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/array.sv @@ -0,0 +1,114 @@ + +module array(x, y, xdenorm, ydenorm, r, s, bypsel, bypplus1); +///////////////////////////////////////////////////////////////////////////// + + input [51:0] x; // Fraction of multiplicand x + input [51:0] y; // Fraction of multiplicand y + input xdenorm; // is x denormalized + input ydenorm; // is y denormalized + input bypsel; // Bypass X + input bypplus1; // Add 1 to X to handle rounding + output [105:0] r; // partial product 1 + output [105:0] s; // partial product 2 + + wire [51:0] xnorm; + wire [51:0] ynorm; + + 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 [17:0][105:0] lv1add; + logic [11:0][105:0] lv2add; + logic [7:0][105:0] lv3add; + logic [3:0][105:0] lv4add; + logic [21:0][106:0] carryTmp; + wire [26:0][105:0] acc; + // wire [105:0] acc + genvar i; + + assign xnorm = xdenorm ? {x[50:0], 1'b0} : x; // normalization of denormalized numbers + assign ynorm = ydenorm ? {y[50:0], 1'b0} : y; + assign yExt = {2'b01,ynorm,1'b0}; // y extended and added assumed 1 + assign xExt = {2'b01,xnorm}; // x with added assumed 1 + + + //booth encoding + + 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] = {50'b01,~e[1],pp[1],add1[0]}; + assign acc[2] = {48'b01,~e[2],pp[2],add1[1], 2'b0}; + assign acc[3] = {46'b01,~e[3],pp[3],add1[2], 4'b0}; + assign acc[4] = {44'b01,~e[4],pp[4],add1[3], 6'b0}; + assign acc[5] = {42'b01,~e[5],pp[5],add1[4], 8'b0}; + assign acc[6] = {40'b01,~e[6],pp[6],add1[5], 10'b0}; + assign acc[7] = {38'b01,~e[7],pp[7],add1[6], 12'b0}; + assign acc[8] = {36'b01,~e[8],pp[8],add1[7], 14'b0}; + assign acc[9] = {34'b01,~e[9],pp[9],add1[8], 16'b0}; + assign acc[10] = {32'b01,~e[10],pp[10],add1[9], 18'b0}; + assign acc[11] = {30'b01,~e[11],pp[11],add1[10], 20'b0}; + assign acc[12] = {28'b01,~e[12],pp[12],add1[11], 22'b0}; + assign acc[13] = {26'b01,~e[13],pp[13],add1[12], 24'b0}; + assign acc[14] = {24'b01,~e[14],pp[14],add1[13], 26'b0}; + assign acc[15] = {22'b01,~e[15],pp[15],add1[14], 28'b0}; + assign acc[16] = {20'b01,~e[16],pp[16],add1[15], 30'b0}; + assign acc[17] = {18'b01,~e[17],pp[17],add1[16], 32'b0}; + assign acc[18] = {16'b01,~e[18],pp[18],add1[17], 34'b0}; + assign acc[19] = {14'b01,~e[19],pp[19],add1[18], 36'b0}; + assign acc[20] = {12'b01,~e[20],pp[20],add1[19], 38'b0}; + assign acc[21] = {10'b01,~e[21],pp[21],add1[20], 40'b0}; + assign acc[22] = {8'b01,~e[22],pp[22],add1[21], 42'b0}; + assign acc[23] = {6'b01,~e[23],pp[23],add1[22], 44'b0}; + assign acc[24] = {4'b01,~e[24],pp[24],add1[23], 46'b0}; + assign acc[25] = {~e[25],pp[25],add1[24], 48'b0}; + assign acc[26] = {pp[26],add1[25], 50'b0}; + + //*** resize adders + generate + for(i=0; i<9; i=i+1) begin + add3comp2 #(.BITS(106)) add1(.a(acc[i*3]), .b(acc[i*3+1]), .c(acc[i*3+2]), + .carry(carryTmp[i][105:0]), .sum(lv1add[i*2+1])); + assign lv1add[i*2] = {carryTmp[i][104:0], 1'b0}; + end + endgenerate + + generate + for(i=0; i<6; i=i+1) begin + add3comp2 #(.BITS(106)) add2(.a(lv1add[i*3]), .b(lv1add[i*3+1]), .c(lv1add[i*3+2]), + .carry(carryTmp[i+9][105:0]), .sum(lv2add[i*2+1])); + assign lv2add[i*2] = {carryTmp[i+9][104:0], 1'b0}; + end + endgenerate + + generate + for(i=0; i<4; i=i+1) begin + add3comp2 #(.BITS(106)) add3(.a(lv2add[i*3]), .b(lv2add[i*3+1]), .c(lv2add[i*3+2]), + .carry(carryTmp[i+15][105:0]), .sum(lv3add[i*2+1])); + assign lv3add[i*2] = {carryTmp[i+15][104:0], 1'b0}; + end + endgenerate + + + generate + for(i=0; i<2; i=i+1) begin + add4comp2 #(.BITS(106)) 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][104:0], 1'b0}; + end + endgenerate + + add4comp2 #(.BITS(106)) add5(.a(lv4add[0]), .b(lv4add[1]), .c(lv4add[2]), .d(lv4add[3]) , + .carry(carryTmp[21]), .sum(s)); + assign r = {carryTmp[21][104:0], 1'b0}; + + // assign r = 106'b0; + // assign s = ({54'b1,xnorm} + (bypsel && bypplus1)) * {54'b1,ynorm}; + +endmodule diff --git a/wally-pipelined/src/fpu/FMA/booth.sv b/wally-pipelined/src/fpu/FMA/booth.sv new file mode 100644 index 000000000..46ad22e58 --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/booth.sv @@ -0,0 +1,55 @@ +module booth(xExt, choose, add1, e, pp); +///////////////////////////////////////////////////////////////////////////// + + input [53:0] xExt; // multiplicand xExt + input [2:0] choose; // bits needed to choose which encoding + output [1:0] add1; // do you add 1 + output e; + output [54:0] pp; // the resultant encoding + + logic [54:0] pp, temp; + logic e; + logic [1:0] add1; + logic [53:0] negx; + //logic temp; + + assign negx = ~xExt; + + always @(choose, xExt, negx) + case (choose) + 3'b000 : pp = 55'b0; // 0 + 3'b001 : pp = {xExt[53], xExt}; // 1 + 3'b010 : pp = {xExt[53], xExt}; // 1 + 3'b011 : pp = {xExt, 1'b0}; // 2 + 3'b100 : pp = {negx, 1'b0}; // -2 + 3'b101 : pp = {negx[53], negx}; // -1 + 3'b110 : pp = {negx[53], negx}; // -1 + 3'b111 : pp = 55'hfffffffffffffff; // -0 + endcase + + always @(choose, xExt, negx) + case (choose) + 3'b000 : e = 0; // 0 + 3'b001 : e = xExt[53]; // 1 + 3'b010 : e = xExt[53]; // 1 + 3'b011 : e = xExt[53]; // 2 + 3'b100 : e = negx[53]; // -2 + 3'b101 : e = negx[53]; // -1 + 3'b110 : e = negx[53]; // -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 @(choose) + 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/FMA/bypass.v b/wally-pipelined/src/fpu/FMA/bypass.v new file mode 100644 index 000000000..4a035c1ba --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/bypass.v @@ -0,0 +1,30 @@ +///////////////////////////////////////////////////////////////////////////// +// +// Block Name: bypass.v +// Author: David Harris +// Date: 11/2/1995 +// +// Block Description: +// This block contains the bypass muxes which allow fast prerounded +// bypass to the X and Z inputs of the FMAC +// +///////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +module bypass(xrf[63:0], zrf[63:0], wbypass[63:0], bypsel[1:0], + x[63:0], z[63:0]); +///////////////////////////////////////////////////////////////////////////// + + input [63:0] xrf; // X from register file + input [63:0] zrf; // Z from register file + input [63:0] wbypass; // Prerounded result for bypass + input [1:0] bypsel; // Select bypass to X or Z + output [63:0] x; // Source X + output [63:0] z; // Source Z + + // If bypass select is asserted, bypass source, else take reg file value + + assign x = bypsel[0] ? wbypass : xrf; + assign z = bypsel[1] ? wbypass : zrf; + +endmodule diff --git a/wally-pipelined/src/fpu/FMA/compressors.sv b/wally-pipelined/src/fpu/FMA/compressors.sv new file mode 100644 index 000000000..9dd3fc116 --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/compressors.sv @@ -0,0 +1,90 @@ +module add3comp2(a, b, c, carry, sum); +///////////////////////////////////////////////////////////////////////////// +//look into diffrent implementations of the compressors? + + parameter BITS = 4; + input [BITS-1:0] a; + input [BITS-1:0] b; + input [BITS-1:0] c; + output [BITS-1:0] carry; + output [BITS-1:0] sum; + genvar i; + + generate + for(i= 0; i> product + input sumzero; // sum exactly equals zero + input postnormalize; // postnormalize rounded result + input [8:0] normcnt; // normalization shift count + input infinity; // generate infinity on overflow + input invalid; // Result invalid + input overflow; // Result overflowed + input underflow; // Result underflowed + input inf; // Some input is infinity + input nan; // Some input is NaN + input xnan; // X is NaN + input ynan; // Y is NaN + input znan; // Z is NaN + input zdenorm; // Z is denorm + input specialsel; // Select special result + output [11:0] aligncnt; // shift count for alignment shifter + output [62:52] w; // Exponent of result + output [62:52] wbypass; // Prerounded exponent for bypass + output prodof; // X*Y exponent out of bounds + output sumof; // X*Y+Z exponent out of bounds + output sumuf; // X*Y+Z exponent underflows + output denorm0; // exponent = 0 for denorm + output [12:0] ae; //exponent of multiply + + // Internal nodes + + wire [12:0] aetmp; // Exponent of Multiply + 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] de0; // Normalized exponent + 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 + assign ae = x + y - 1023; + + assign prodof = (ae > 2046 && ~ae[12] && ~killprod); + + // 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 = z - ae[10:0] + 13'b0; + assign aligncnt1 = z - ae[10:0] + 13'b1; + assign aligncnt = bypsel[1] && byppostnorm ? aligncnt1 : aligncnt0; + + // Select exponent (usually from product except in case of huge addend) + + assign be = killprod ? z : 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 + 53 - normcnt; + assign de1 = sumzero ? 13'b0 : be + 53 - normcnt + 13'b1; + + // If the exponent becomes exactly zero (denormalized) + // signal such to adjust R bit before rounding + + assign denorm0 = (de0 == 0); + + // check for exponent out of bounds after add + + assign de = postnormalize ? de1 : de0; + assign sumof = de > 2046 && ~de[12]; + assign sumuf = (de == 0 || de[12]) && ~sumzero && ~zdenorm;//KEP ~zdenorm to prevent underflow flag + + // 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 = earlyressel ? earlyres : + invalid ? nanres : + overflow ? infinityres : + inf ? 11'b11111111111 : + underflow ? 11'b0 : 11'bx; + + assign infinityres = infinity ? 11'b11111111111 : 11'b11111111110; + + assign nanres = xnan ? x : (ynan ? y : (znan? z : 11'b11111111111)); + + // A mux selects the early result from other FPU blocks or the + // normalized FMAC result. Special cases are also detected. + + assign w = specialsel ? specialres[10:0] : de; +endmodule + diff --git a/wally-pipelined/src/fpu/FMA/flag.v b/wally-pipelined/src/fpu/FMA/flag.v new file mode 100644 index 000000000..d7765c540 --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/flag.v @@ -0,0 +1,85 @@ +/////////////////////////////////////////////////////////////////////////////// +// Block Name: flag.v +// Author: David Harris +// Date: 12/6/1995 +// +// Block Description: +// This block generates the flags: invalid, overflow, underflow, inexact. +///////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +module flag(xnan, ynan, znan, xinf, yinf, zinf, prodof, sumof, sumuf, + psign, zsign, xzero, yzero, v[1:0], + inf, nan, invalid, overflow, underflow, inexact); +///////////////////////////////////////////////////////////////////////////// + + input xnan; // X is NaN + input ynan; // Y is NaN + input znan; // Z is NaN + input xinf; // X is Inf + input yinf; // Y is Inf + input zinf; // Z is Inf + input prodof; // X*Y overflows exponent + input sumof; // X*Y + z underflows exponent + input sumuf; // X*Y + z underflows exponent + input psign; // Sign of product + input zsign; // Sign of z + input xzero; // x = 0 + input yzero; // y = 0 + input [1:0] v; // R and S bits of result + output inf; // Some source is Inf + output nan; // Some source is NaN + output invalid; // Result is invalid + output overflow; // Result overflowed + output underflow; // Result underflowed + output inexact; // Result is not an exact number + + // Internal nodes + + wire prodinf; // X*Y larger than max possible + wire suminf; // X*Y+Z larger than max possible + + // If any input is NaN, propagate the NaN + + assign nan = xnan || ynan || znan; + + // Same with infinity (inf - inf and O * inf don't propagate inf + // but it's ok becaue illegal op takes higher precidence) + + assign inf= xinf || yinf || zinf; + + // Generate infinity checks + + assign prodinf = prodof && ~xnan && ~ynan; + assign suminf = sumof && ~xnan && ~ynan && ~znan; + + // Set invalid flag for following cases: + // 1) Inf - Inf + // 2) 0 * Inf + // 3) Output = NaN (this is not part of the IEEE spec, only 486 proj) + + assign invalid = (xinf || yinf || prodinf) && zinf && (psign ^ zsign) || + xzero && yinf || yzero && xinf || + nan; + + // 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 overflow = suminf && ~inf; + + // Set the underflow flag for the following cases: + // 1) Any input is denormalized + // 2) Output would be denormalized or smaller + + assign underflow = (sumuf && ~inf && ~prodinf && ~nan); + + + // 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 inexact = (v[0] || v[1] || suminf) && ~(inf || nan); + +endmodule diff --git a/wally-pipelined/src/fpu/FMA/fmac.v b/wally-pipelined/src/fpu/FMA/fmac.v new file mode 100644 index 000000000..30e1f039a --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/fmac.v @@ -0,0 +1,130 @@ + //////////////////////////////////////////////////////////////////////////////// +// 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 X or Z inputs +// sign One bit sign handling block +// special Catch special cases (inputs = 0 / infinity / etc.) +// +// The FMAC computes W=X*Y+Z, rounded with the mode specified by +// RN, RZ, RM, or RP. The result is optionally bypassed back to +// the X or Z 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 fmac(xrf, y, zrf, rn, rz, rp, rm, + earlyres, earlyressel, bypsel, bypplus1, byppostnorm, + w, wbypass, invalid, overflow, underflow, inexact); +///////////////////////////////////////////////////////////////////////////// + + input [63:0] xrf; // input X from reg file + input [63:0] y; // input Y + input [63:0] zrf; // input Z from reg file + input rn; // Round to Nearest + input rz; // Round toward zero + input rm; // Round toward minus infinity + input rp; // Round toward plus infinity + input [63:0] earlyres; // Early result from other FP logic + input earlyressel; // Select early result, not W + input [1:0] bypsel; // Select W bypass to X, or z + input bypplus1; // Add one in bypass + input byppostnorm; // postnormalize in bypass + output [63:0] w; // output W=X*Y+Z + output [63:0] wbypass; // prerounded output W=X*Y+Z for bypass + output invalid; // Result is invalid + output overflow; // Result overflowed + output underflow; // Result underflowed + output inexact; // Result is not an exact number + +// Internal nodes + + wire [63:0] x; // input X after bypass mux + wire [63:0] z; // input Z after bypass mux + wire [105:0] r; // one result of partial product sum + wire [105:0] s; // other result of partial products + wire [157:0] t; // output of alignment shifter + wire [157:0] sum; // output of carry prop adder + wire [53:0] v; // normalized sum, R, S bits + wire [11:0] aligncnt; // shift count for alignment + wire [8:0] normcnt; // shift count for normalizer + wire [12:0] ae; // multiplier expoent + wire bs; // sticky bit of addend + wire ps; // sticky bit of product + wire killprod; // Z >> product + wire negsum; // negate sum + wire invz; // invert addend + wire selsum1; // select +1 mode of sum + wire negsum0; // sum +0 < 0 + wire negsum1; // sum +1 < 0 + wire sumzero; // sum = 0 + wire infinity; // generate infinity on overflow + wire prodof; // X*Y out of range + wire sumof; // result out of range + +// Instantiate fraction datapath + + array array(x[51:0], y[51:0], xdenorm, ydenorm, r[105:0], s[105:0], + bypsel[0], bypplus1); + align align(z[51:0], ae, aligncnt, xzero, yzero, zzero, zdenorm, proddenorm, + t[157:0], bs, ps, killprod, + bypsel[1], bypplus1, byppostnorm); + add add(r[105:0], s[105:0], t[157:0], sum[157:0], + negsum, invz, selsum1, killprod, negsum0, negsum1, proddenorm); + lop lop(sum, normcnt, sumzero); + normalize normalize(sum[157:0], normcnt, sumzero, bs, ps, denorm0, zdenorm, + v[53:0]); + round round(v[53:0], earlyres[51:0], earlyressel, rz, rn, rp, rm, w[63], + invalid, overflow, underflow, inf, nan, xnan, ynan, znan, + x[51:0], y[51:0], z[51:0], + w[51:0], postnorrnalize, infinity, specialsel); + bypass bypass(xrf[63:0], zrf[63:0], wbypass[63:0], bypsel[1:0], + x[63:0], z[63:0]); + +// Instantiate exponent datapath + + expgen expgen(x[62:52], y[62:52], z[62:52], + earlyres[62:52], earlyressel, bypsel[1], byppostnorm, + killprod, sumzero, postnorrnalize, normcnt, + infinity, invalid, overflow, underflow, + inf, nan, xnan, ynan, znan, zdenorm, specialsel, + aligncnt, w[62:52], wbypass[62:52], + prodof, sumof, sumuf, denorm0, ae); +// Instantiate special case detection across datapath & exponent path + + special special(x[63:0], y[63:0], z[63:0], ae, xzero, yzero, zzero, + xnan, ynan, znan, xdenorm, ydenorm, zdenorm, proddenorm, + xinf, yinf, zinf); + +// Produce W for bypass + +assign wbypass[51:0] = v[53:2]; +assign wbypass[63] = w[63]; + +// Instantiate control logic + +sign sign(x[63], y[63], z[63], negsum0, negsum1, bs, ps, + killprod, rm, sumzero, nan, invalid, xinf, yinf, inf, + w[63], invz, negsum, selsum1, psign); +flag flag(xnan, ynan, znan, xinf, yinf, zinf, prodof, sumof, sumuf, + psign, z[63], xzero, yzero, v[1:0], + inf, nan, invalid, overflow, underflow, inexact); + +endmodule + diff --git a/wally-pipelined/src/fpu/FMA/lop.v b/wally-pipelined/src/fpu/FMA/lop.v new file mode 100644 index 000000000..af496dfcc --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/lop.v @@ -0,0 +1,41 @@ +/////////////////////////////////////////////////////////////////////////////// +// 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 lop(sum, normcnt, sumzero); +///////////////////////////////////////////////////////////////////////////// + + input [157:0] sum; // sum + output [8:0] normcnt; // normalization shift count + output sumzero; // sum = 0 + + // Internal nodes + + reg [8:0] i; // loop index + reg [8:0] normcnt; // normalization shift count + + // 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 @ ( sum) + begin + i = 0; + while (~sum[157-i] && i < 157) 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/FMA/normalize.v b/wally-pipelined/src/fpu/FMA/normalize.v new file mode 100644 index 000000000..c92736d8a --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/normalize.v @@ -0,0 +1,63 @@ +/////////////////////////////////////////////////////////////////////////////// +// 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[157:0], normcnt, sumzero, bs, ps, denorm0, zdenorm, v[53:0]); +///////////////////////////////////////////////////////////////////////////// + input [157:0] sum; // sum + input [8:0] normcnt; // normalization shift count + input sumzero; // sum is zero + input bs; // sticky bit for addend + input ps; // sticky bit for product + input denorm0; // exponent = -1023 + input zdenorm; // Input Z is denormalized + output [53:0] v; // normalized sum, R, S bits + + // Internal nodes + + reg [53:0] v; // normalized sum, R, S bits + wire [157:0] sumshifted; // shifted sum + + // 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. + + always @(sum or normcnt or sumzero or bs or ps or sumshifted or denorm0) + begin + if (sumzero) begin // special case + v[53:1] = 0; + v[0] = ps || bs ; + end else begin // extract normalized bits + v[53:3] = sumshifted[156:106]; + // KEP prevent plus1 in round.v when z is denormalized. + v[2] = sumshifted[105] || sumshifted[106] && denorm0 && ~zdenorm; + v[1] = sumshifted[104] || sumshifted[105] && denorm0 && ~zdenorm; + v[0] = |(sumshifted[103:0]) || ps || bs; + end + end + + + // shift sum left by normcnt, filling the right with zeros + assign sumshifted = sum << normcnt; + +endmodule + diff --git a/wally-pipelined/src/fpu/FMA/round.v b/wally-pipelined/src/fpu/FMA/round.v new file mode 100644 index 000000000..217f33ad6 --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/round.v @@ -0,0 +1,106 @@ +///////////////////////////////////////////////////////////////////////////// +// 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 inputs, 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[53:0], earlyres[51:0], earlyressel, rz, rn, rp, rm, wsign, + invalid, overflow, underflow, inf, nan, xnan, ynan, znan, + x[51:0], y[51:0], z[51:0], + w[51:0], postnormalize, infinity, specialsel); +///////////////////////////////////////////////////////////////////////////// + + input [53:0] v; // normalized sum, R, S bits + input [51:0] earlyres; // result from other FPU blocks + input earlyressel; // use result from other FPU blocks + input rz; // Round toward zero + input rn; // Round toward nearest + input rp; // Round toward plus infinity + input rm; // Round toward minus infinity + input wsign; // Sign of result + input invalid; // Trap on infinity, NaN, denorm + input overflow; // Result overflowed + input underflow; // Result underflowed + input inf; // Some input is infinity + input nan; // Some input is NaN + input xnan; // X is NaN + input ynan; // Y is NaN + input znan; // Z is NaN + input [51:0] x; // Input X + input [51:0] y; // Input Y + input [51:0] z; // Input Z + output [51:0] w; // rounded result of FMAC + output postnormalize; // Right shift 1 for post-rounding norm + output infinity; // Generate infinity on overflow + output specialsel; // Select special result + + // Internal nodes + + wire 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. + + + assign plus1 = rn && ((v[1] && v[0]) || (v[2] && (v[1]))) || + rp && ~wsign && (v[1] || v[0]) || + rm && wsign && (v[1] || v[0]); + + // 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 + // inputs to the wide muxes can be combined at the expense of more + // complicated non-critical control in the circuit implementation. + + assign specialsel = earlyressel || overflow || underflow || invalid || + nan || inf; + assign specialres = earlyressel ? earlyres : + invalid ? nanres : + overflow ? infinityres : + inf ? 52'b0 : + underflow ? 52'b0 : 52'bx; // default to undefined + + // Overflow is handled differently for different rounding modes + // Round is to either infinity or to maximum finite number + + assign infinity = rn || (rp && ~wsign) || (rm && wsign); + assign infinityres = infinity ? 52'b0 : {52{1'b1}}; + + // Invalid operations produce a quiet NaN. The result should + // propagate an input if the input is NaN. Since we assume all + // NaN inputs are already quiet, we don't have to force them quiet. + + // assign nanres = xnan ? x: (ynan ? y : (znan ? z : {1'b1, 51'b0})); // original + assign nanres = xnan ? {1'b1, x[50:0]}: (ynan ? {1'b1, y[50:0]} : (znan ? {1'b1, z[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 w = specialsel ? specialres : (plus1 ? v1[51:0] : v[53:2]); + +endmodule + diff --git a/wally-pipelined/src/fpu/FMA/sign.v b/wally-pipelined/src/fpu/FMA/sign.v new file mode 100644 index 000000000..9503847f4 --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/sign.v @@ -0,0 +1,93 @@ +/////////////////////////////////////////////////////////////////////////////// +// 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, bs, ps, killprod, rm, + sumzero, nan, invalid, xinf, yinf, inf, wsign, invz, negsum, selsum1, psign); +////////////////////////////////////////////////////////////////////////////I + + input xsign; // Sign of X + input ysign; // Sign of Y + input zsign; // Sign of Z + input negsum0; // Sum in +O mode is negative + input negsum1; // Sum in +1 mode is negative + input bs; // sticky bit from addend + input ps; // sticky bit from product + input killprod; // Product forced to zero + input rm; // Round toward minus infinity + input sumzero; // Sum = O + input nan; // Some input is NaN + input invalid; // Result invalid + input xinf; // X = Inf + input yinf; // Y = Inf + input inf; // Some input = Inf + output wsign; // Sign of W + output invz; // Invert addend into adder + output negsum; // Negate result of adder + output selsum1; // Select +1 mode from compound adder + output psign; // sign of product X * Y + + // Internal nodes + + wire zerosign; // sign if result= 0 + wire infsign; // sign if result= Inf + reg negsum; // negate result of adder + reg selsum1; // select +1 mode from compound adder + + // Compute sign of product + + assign psign = xsign ^ ysign; + + // Invert addend if sign of Z is different from sign of product assign invz = zsign ^ psign; + assign invz = zsign ^ psign; + // Select +l mode for adder and compute if result must be negated + // This is done according to cases based on the sticky bit. + + always @(invz or negsum0 or negsum1 or bs or ps) + begin + if (~invz) begin // both inputs have same sign + negsum = 0; + selsum1 = 0; + end else if (bs) 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 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 && killprod) ? zsign : rm; + assign infsign = psign; //KEP 210112 keep the correct sign when result is infinity + // assign infsign = xinf ? (yinf ? psign : xsign) : yinf ? ysign : zsign;//original + assign wsign =invalid? 0 : (inf ? infsign: + (sumzero ? zerosign : psign ^ negsum)); + +endmodule diff --git a/wally-pipelined/src/fpu/FMA/special.v b/wally-pipelined/src/fpu/FMA/special.v new file mode 100644 index 000000000..ec588ca9a --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/special.v @@ -0,0 +1,70 @@ +/////////////////////////////////////////////////////////////////////////////// +// 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(x[63:0], y[63:0], z[63:0], ae, xzero, yzero, zzero, + xnan, ynan, znan, xdenorm, ydenorm, zdenorm, proddenorm, xinf, yinf, zinf); +///////////////////////////////////////////////////////////////////////////// + + input [63:0] x; // Input x + input [63:0] y; // Input Y + input [63:0] z; // Input z + input [12:0] ae; // exponent of product + output xzero; // Input x = 0 + output yzero; // Input y = 0 + output zzero; // Input z = 0 + output xnan; // x is NaN + output ynan; // y is NaN + output znan; // z is NaN + output xdenorm; // x is denormalized + output ydenorm; // y is denormalized + output zdenorm; // z is denormalized + output proddenorm; // product is denormalized + output xinf; // x is infinity + output yinf; // y is infinity + output zinf; // z 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 xnan = &x[62:52] && |x[51:0]; + assign ynan = &y[62:52] && |y[51:0]; + assign znan = &z[62:52] && |z[51:0]; + + // Check if input is denormalized + + assign xdenorm = ~(|x[62:52]) && |x[51:0]; + assign ydenorm = ~(|y[62:52]) && |y[51:0]; + assign zdenorm = ~(|z[62:52]) && |z[51:0]; + assign proddenorm = &ae & ~xzero & ~yzero; //KEP is the product denormalized + + // Check if input is infinity + + assign xinf = &x[62:52] && ~(|x[51:0]); + assign yinf = &y[62:52] && ~(|y[51:0]); + assign zinf = &z[62:52] && ~(|z[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 xzero = ~(|x[62:0]) || xdenorm; + // assign yzero = ~(|y[62:0]) || ydenorm; + // assign zzero = ~(|z[62:0]) || zdenorm; + // KATHERINE - removed denorm to prevent outputing zero when computing with a denormalized number + assign xzero = ~(|x[62:0]); + assign yzero = ~(|y[62:0]); + assign zzero = ~(|z[62:0]); + endmodule diff --git a/wally-pipelined/src/fpu/FMA/tb.v b/wally-pipelined/src/fpu/FMA/tb.v new file mode 100644 index 000000000..a28e3c4d2 --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tb.v @@ -0,0 +1,2824 @@ +`timescale 1 ns/10 ps +module tb; + + + reg [63:0] xrf; + reg [63:0] y; + reg [63:0] zrf; + reg rn; + reg rz; + reg rm; + reg rp; + reg [63:0] earlyres; + reg earlyressel; + reg [1:0] bypsel; + reg bypplus1; + reg byppostnorm; + wire [63:0] w; + wire [63:0] wbypass; + wire invalid; + wire overflow; + wire underflow; + wire inexact; + +reg [5:0] i; +integer fp; + +localparam period = 20; +fmac UUT(.xrf(xrf), .y(y), .zrf(zrf), .rn(rn), .rz(rz), .rp(rp), .rm(rm), + .earlyres(earlyres), .earlyressel(earlyressel), .bypsel(bypsel), .bypplus1(bypplus1), .byppostnorm(byppostnorm), + .w(w), .wbypass(wbypass), .invalid(invalid), .overflow(overflow), .underflow(underflow), .inexact(inexact)); + + +initial + begin +fp = $fopen("output","w"); + xrf = 64'hc22000007fffffff; + y = 64'h24700000ffffffef; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbfc00000000011fe; + y = 64'h3fdfffffffffff03; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'ha83100000007fffe; + y = 64'h41e0000effffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h001ffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h400327ca64d70ec7; + y = 64'h3ca0000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h43e207ffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h3fd0000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h3fdfffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h3fe0000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc870200000010000; + y = 64'h3fefffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc00aaa4fd557ef13; + y = 64'hc3b8917384eb32d0; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'hc18aca47203438e2; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h4000000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h47efff0008000000; + y = 64'hb1dcb0523546117f; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h43f000ffffff7fff; + y = 64'h22300000001fffdf; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h402ff000001fffff; + y = 64'h40759558e27de226; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h40efdeffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h434fffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h7ffc000000000000; + y = 64'h7fe0000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hb35e061abc769f3a; + y = 64'hc078000003fffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h403a793cfb1e2471; + y = 64'hbff0000100007fff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3d1ffffbfe000000; + y = 64'h216898822a24af3f; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbfb00000001bffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h37f0000000efffff; + y = 64'hc3d00007fffffeff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'hffefff8000080000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3fb00200000000ff; + y = 64'hc0000000011fffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h41c0000007ffffff; + y = 64'h49103fffefffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h407effbfffffffff; + y = 64'h3e00000040001fff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc1f00013fffffffe; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc3f00004000001ff; + y = 64'hc3d00bfffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h403b5ab30b28be12; + y = 64'hbfdfffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'hc1cfffffff87ffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'hbfe0000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h801ffc000007ffff; + y = 64'hbfeffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'hffe0000005fffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'hbfffffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'hc000000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc3d09308769f3f51; + y = 64'hc00fffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h402ffffdfefffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'hc010000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc01fffffffc00fff; + y = 64'hc01ffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc025e14360f49046; + y = 64'h412fff0000000003; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h43ee59a2f1155c8b; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3fe0000000008fff; + y = 64'h802ffffff7fffff6; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'hffefffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h40401007fffffffe; + y = 64'hfff0000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'hc0045abb4860cbf3; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0000000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbffffffec0000000; + y = 64'hc000000000003eff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h48000000004001ff; + y = 64'h41f331de979ac49e; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3d0fffffbff7ffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h43d3ffffff000000; + y = 64'h3caffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h7ffc000000000000; + y = 64'h43dfff8004000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbcaffe0000000008; + y = 64'h3fd00008000000ff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h404ffbfffffffffc; + y = 64'hc34ffff8003fffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h43e0000000000082; + y = 64'h3db000003ffffeff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc1d004000ffffffe; + y = 64'h4000000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc00fffffc000007e; + y = 64'hc02ffffdfffffbff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h409dfffbffffffff; + y = 64'h4010000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc120000003ffffe0; + y = 64'hc06000fffbffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3fd1f7ffffffffff; + y = 64'hc01000001dffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h2e0fefdfffffffff; + y = 64'h4030000020000040; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h43c0000803ffffff; + y = 64'h3fcfffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc0afffffbffffdfe; + y = 64'h3fc07ffdffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc0fffffffeffffee; + y = 64'h55139bb9349e058c; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h41ffdbaf18ce06bd; + y = 64'h8010000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc0e1000000080000; + y = 64'h801ffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3fbffffff0000007; + y = 64'hc807dfffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc357b53537b96da5; + y = 64'hbfd0000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h401fffffffffffff; + y = 64'hffebff8000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc7eff77bf2b59c3c; + y = 64'hbfe0000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h380c3f72cc3dec98; + y = 64'hc3fffffffbffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hb8e0000003fbffff; + y = 64'hc503f4d44f4bf888; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3f3ffffc001fffff; + y = 64'hc000000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc340002000004000; + y = 64'hc0db3367e0423019; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h4f60000801ffffff; + y = 64'h41c07fe000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc1ffffffbfefffff; + y = 64'hc340000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h404fff7fffffff7f; + y = 64'h48ab7e2aad4ec686; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h7ffc000000000000; + y = 64'hffefffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h41e189ea1a6fff97; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3ff0ee9046c9330f; + y = 64'h8479e1e79766e02b; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hd2f805130a8c11df; + y = 64'h43effffdfdfffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h4f1fffbfffe00000; + y = 64'hbcd02000000007ff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbe70000077ffffff; + y = 64'hc1efffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h41e1ffffbffffffe; + y = 64'h3caffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3bbd976272fb1d2a; + y = 64'hc06ffff80007fffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h434fff01ffffffff; + y = 64'h403dfeffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbe6fff7fffffffff; + y = 64'h3feffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h41d007ff80000000; + y = 64'h41f0fffffffc0000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hffeef7a206029708; + y = 64'hbdcfa4109a3a5b22; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3b6ffffffeffffc0; + y = 64'h3c7ffffe003ffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc1d1ffffffbfffff; + y = 64'hbfcffffefffff800; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h2030000000000090; + y = 64'hc05e2e90015c47a1; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbbf000000007efff; + y = 64'h001fe0000007fffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h41cae866712069f4; + y = 64'hc02fffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbfce1e32ccf56348; + y = 64'h3ca1f66d4c8eeef3; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hffedfffff0000000; + y = 64'hffeffff000000800; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h37effffc3ffffffe; + y = 64'hbca0fffffffffffd; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbc950a021bf9dee1; + y = 64'h3db0001fffdffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hfd4fffffdfffffef; + y = 64'h41cffffdffffffef; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbfc00000004007ff; + y = 64'hbcafffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc009130b80fe8274; + y = 64'hb811571307061a38; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc0600000ffffffdf; + y = 64'h7feda1b8c591f9c6; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc1e4af3f8d45e031; + y = 64'h3ca0020002000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3800008100000000; + y = 64'hb810000020000080; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h372ff00000003fff; + y = 64'h7fe000fdfffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h47d00021fffffffe; + y = 64'hc00fffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbfbc9ea0c2b4884b; + y = 64'h43f4a552574073d5; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbf1fe0000000ffff; + y = 64'hc01ffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h41ffffffff7ffffb; + y = 64'h0027ffffffffeffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc7e040000fffffff; + y = 64'hffe0000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h7ffc000000000000; + y = 64'h3fe0000ffffff7ff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc1effc1fffffffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc0d000000001ffbf; + y = 64'hc03ba46e644e4e9c; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc4500000005fffff; + y = 64'hc03a20ab4de47fc9; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h400e00000000007e; + y = 64'h001fffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h45a01fffff7fffff; + y = 64'hc3c0020200000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3e8ff800000000ff; + y = 64'h3caffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbe004000000007fe; + y = 64'h3fdffff7ff7fffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hb11000007ffffe00; + y = 64'h3fe0000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hb80cef50bd17db40; + y = 64'hc05fffc00000000e; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3d4000ffffffffff; + y = 64'h3d47f68d8eb6b9a4; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hffe3fffffffffffb; + y = 64'hc03dc3321aaa5380; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3ca3fffffffffeff; + y = 64'hbf02ffafb4e9241d; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h53598c812c3c39dd; + y = 64'h3f20000100fffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc3dffffff8000001; + y = 64'h3fe0020000003ffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h7ba00800003fffff; + y = 64'h3ff9a9a129c791b3; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc3d0000fffffffef; + y = 64'h7fe0000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc34f80001fffffff; + y = 64'hb7fffffe0007ffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000001ff8; + y = 64'h4800020000010000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h2c4c0000003fffff; + y = 64'h230ffffc00400000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h381fffffffbff7fe; + y = 64'h8010000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h802d3018ea8c241d; + y = 64'hc007fdffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h43e047fffffffffe; + y = 64'h4000003ffdfffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc000005fffffffff; + y = 64'h403ffffffff00002; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3fc8b60e46a80f6d; + y = 64'hbfdffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbd5fdffdffffffff; + y = 64'h5644b72ace1bbb6b; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hb80010001fffffff; + y = 64'h40e01ffffff7fffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h407000003ffbfffe; + y = 64'h38042862fe8e3368; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbf8ffbfff7ffffff; + y = 64'hc00fffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbcafc000003fffff; + y = 64'hc010000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h47eddf042473ef08; + y = 64'hb7e00000fe000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3fbfffff7fffffef; + y = 64'hc340ffffffffffbf; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc02f8000000007ff; + y = 64'hffe0000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h002f37ebf6c8eaec; + y = 64'hc08be464f4c81c69; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc00e800000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbfffc00000000003; + y = 64'h391001ffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc1db54446247aa52; + y = 64'hbfcc001fffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'hc0392c59c8e48f37; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'hc0000800000001ff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'hc1d0000004000fff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h4030040000200000; + y = 64'h0017055f48beeff5; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbc7000000000ffee; + y = 64'hc1e0001100000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc040000000007fff; + y = 64'hc3b2a6c91c557f56; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h41ffffffff003fff; + y = 64'hc3b0000007ffffee; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h21900001dfffffff; + y = 64'hbf20000017fffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0029954d0f0df5b3; + y = 64'h41e00000000003ff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hb810000020000001; + y = 64'h47ffdfffffffff80; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'hffeffff800007fff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'h4010000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbf700000000100ff; + y = 64'h401fffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h37feffffffffffff; + y = 64'h47ef8000000fffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hb80f800001fffffe; + y = 64'h44e00000ffff7fff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'h434ffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h41ffffdfffff8000; + y = 64'h7fe0000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hb80a16ad02c87cd3; + y = 64'h380fffffffffe7fe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h47f0fffffffffffb; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'h41ffffffffbfff7f; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'h8000000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc3d00001000001ff; + y = 64'hb7f60cb3edb38762; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'h8010000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h43c0007fffdfffff; + y = 64'h801ffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc7efffffdffffbff; + y = 64'hbca0000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'hc11ff00000000003; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'hbfd0000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc0ffffffffeffffe; + y = 64'hbfdfffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h6f7000000001fdff; + y = 64'h1510010000000fff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h37f002000000000f; + y = 64'hb1effcfffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hcc3050bc013d7cd7; + y = 64'hbff0000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'h87fff0000000fffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'hbffffffffffffffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h43effbfffffff7ff; + y = 64'h7fefffffff801ffe; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc015834380f2b995; + y = 64'h3f9fff0000000400; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'h41dfffffc0001000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'hc01fffffffffffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h41e010000000001f; + y = 64'hc5b04000000fffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h3b40018000000000; + y = 64'h3ea0400000000100; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'h4cdffeffff7fffff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h16dff0001ffffffe; + y = 64'h3fb500ae0796659d; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hb7e003ffffffff7f; + y = 64'hdeafffffeffffffd; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h406000001fffbfff; + y = 64'h3f20020000080000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h0010000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h439fbffffffbffff; + y = 64'hbf8454fd38ef0ba0; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hc1c000000200007e; + y = 64'hbf000001ffffffbf; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h480000000008fffe; + y = 64'h001637e790e69de2; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'hbffffffc000003fe; + y = 64'h3ca0000000000001; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + xrf = 64'h6b4848a9a8c0dcd5; + y = 64'h480ffffffffbdfff; + zrf = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h\n",xrf,y,w); + $stop; + end +endmodule \ No newline at end of file diff --git a/wally-pipelined/src/fpu/FMA/tbgen/StineVectors b/wally-pipelined/src/fpu/FMA/tbgen/StineVectors new file mode 100644 index 000000000..5014f01df --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tbgen/StineVectors @@ -0,0 +1,1997 @@ +b68ffff8000000ff_3f9080000007ffff_b6307ffbe0080080_00001 +0000000000000000_a57f319ede38f755_0000000000000000_00000 +41e00003fffbffff_bfdfffffffefffff_c1d00003fff3fffc_00001 +80251295103185ae_0000000000000000_0000000000000000_00000 +c040000000001000_802fff7fffffffc0_007fff8000001fc0_00001 +0000000000000000_0000000000000000_0000000000000000_00000 +c1dfffffffe00080_3fa48edf3623f067_c1948edf360f61da_00001 +0000000000000000_47fffffffff9fffe_0000000000000000_00000 +43d36fa3cad3f59e_802ffdfffbfffffe_84136e6cce2953e4_00001 +c7f7fd5b86c89ff5_c340097b5e4f0be0_4b480b93035b0b70_00001 +c22000007fffffff_24700000ffffffef_a6a00001800007ed_00001 +0000000000000000_c3e000000ffdffff_0000000000000000_00000 +353437f613f7e662_37f1000000007fff_2d357b7575380687_00001 +ffe564443115fb16_3fbfffffeffbffff_ffb5644426612c74_00001 +3ceec111f7d2af02_39715bac743e2963_3670aeac5438df23_00001 +0000000000000000_41ec86d0aa48e2a2_0000000000000000_00000 +400effffffffefff_c7e10000000000ff_c80077fffffff876_00001 +bff007fffffffffb_be6ffffffff87fff_3e7007fffffc3e1b_00001 +c03000ffffffffe0_47effdfffdffffff_c82fffffddffdfbf_00001 +0000000000000000_ba2fffdffff7ffff_0000000000000000_00000 +bfc00000000011fe_3fdfffffffffff03_bfb000000000117f_00001 +43e0000020007ffe_0010000000000000_0400000020007ffe_00000 +c1cfdeed86c3bb69_400003ffffbffffe_c1dfe6e541a5f09d_00001 +0000000000000000_0010000000000000_0000000000000000_00000 +c25f117a8f103940_4004e72ff4f60ee2_c2744b6155a30e59_00001 +0000000000000000_c01f000000080000_0000000000000000_00000 +c513492fa35969e3_bfcffdffffffffef_44f347fb105f3443_00001 +403000000000fffe_0010000000000001_0050000000010000_00001 +f6d01003ffffffff_419ffffffdffefff_f8801003fefef7b6_00001 +0000000000000000_0010000000000001_0000000000000000_00000 +a83100000007fffe_41e0000effffffff_aa21000ff0080004_00001 +0000000000000000_c3fffffdfffffffd_0000000000000000_00000 +41d000fffffdffff_001fffffffffffff_020000fffffdffff_00001 +c3d08000001fffff_40200000000005ff_c40080000020062d_00001 +0000000000000000_001fffffffffffff_0000000000000000_00000 +1a6ffffffffdffee_c0dfdffffffff7ff_9b5fdffffffdf9ed_00001 +0000000000000000_4800040080000000_0000000000000000_00000 +3eb000000000003f_37ec0c2ea2e8a60d_36ac0c2ea2e8a67c_00001 +f17ffffffff7fff0_001ffffffffffffe_b1affffffff7ffee_00001 +c02ffffffe7fffff_bfb000000007ffbe_3feffffffe8fff7b_00001 +0000000000000000_001ffffffffffffe_0000000000000000_00000 +ffeffbfffffffefe_41e003ffffffffff_81e001ff7fffff7d_00001 +0000000000000000_434000080000003e_0000000000000000_00000 +bacc892b4c13f29c_41e00000081fffff_bcbc892b5a919a96_00001 +50e0100000001000_3ca0000000000000_4d90100000001000_00000 +c04000010000000e_3cc1ffffc0000000_bd120000dffffc0f_00001 +0000000000000000_3ca0000000000000_0000000000000000_00000 +3d40000001007fff_eca000001bffffff_e9f000001d007fff_00001 +0000000000000000_c010000000000000_0000000000000000_00000 +3f69ffffffffffff_404716ea43fac45c_3fc2c29e573bbf8b_00001 +400327ca64d70ec7_3ca0000000000001_3cb327ca64d70ec9_00001 +d8bfff000000007f_b956dbd0aee817c4_5226db19d062a0de_00001 +0000000000000000_3ca0000000000001_0000000000000000_00000 +c007b8561c35da43_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_405f40f41f6021f8_0000000000000000_00000 +bfe00100001fffff_c24003ffffffffbf_42300500402007be_00001 +434fffffffffc003_3cafffffffffffff_400fffffffffc003_00001 +c03ffffffbfffffb_c02ffffffefffeff_407ffffffafffefb_00001 +0000000000000000_3cafffffffffffff_0000000000000000_00000 +40086202321a401c_47f86177898dd055_481293c5d18361f7_00001 +0000000000000000_43e207ffffffffff_0000000000000000_00000 +43effe000fffffff_a18c4acaee4cfd09_a58c49064fc37daf_00001 +74cffffffbff7fff_3caffffffffffffe_718ffffffbff7ffe_00001 +5be00000ffffffbf_421ffffffdffe000_5e100000feffefaf_00001 +0000000000000000_3caffffffffffffe_0000000000000000_00000 +bf47ffe000000000_c1ea1adf9696cf65_4143940d961184f5_00001 +0000000000000000_348ffffffdffffdf_0000000000000000_00000 +c0200003ffffffbf_40affffbfffffff7_c0e00001ffff7fba_00001 +3fdf7cc18997a120_3fd0000000000000_3fbf7cc18997a120_00000 +bf70200000000003_c3e0e4757c2948e7_4361063e67219b7c_00001 +0000000000000000_3fd0000000000000_0000000000000000_00000 +c3dfffff7ffffe00_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_faeffffffffff010_0000000000000000_00000 +41dff52055724a9e_41f3fffe00000000_43e3f9323615694c_00001 +c3c567a7fb6402c6_3fd0000000000001_c3a567a7fb6402c7_00001 +41e0000000000004_388fffffffffff7e_3a7fffffffffff86_00001 +0000000000000000_3fd0000000000001_0000000000000000_00000 +41bfffffffffffff_ed6fffffffffffe8_ef3fffffffffffe7_00001 +381ffffbffffffee_3fdfffffffffffff_380ffffbffffffee_00001 +c1ffffffffeffc00_ce70000800000001_50800007fff7fdfd_00001 +0000000000000000_3fdfffffffffffff_0000000000000000_00000 +c1500007f0000000_80201fffff7ffffe_01802007ff5fffbf_00001 +0000000000000000_c1cecf3286229074_0000000000000000_00000 +43df400000000000_bfefffffc003ffff_c3df3fffc183e7ff_00001 +43dfffffffffff07_80200007f7ffffff_84100007f7ffff82_00001 +0000000000000000_3fdffffffffffffe_0000000000000000_00000 +c80e0000001ffffe_b7efffffffffffe6_400e0000001fffe6_00001 +0000000000000000_c1c0000000002003_0000000000000000_00000 +3f500000000000fa_3fe0000000000000_3f400000000000fa_00000 +7ffc000000000000_c7ffffffffefffdf_7ff8000000000000_00000 +0000000000000000_3fe0000000000000_0000000000000000_00000 +bfe0004000000080_401ffffffffff801_c010003ffffffc80_00001 +0000000000000000_b7f17fffffffffff_0000000000000000_00000 +c3fc3945feb77579_c01000100fffffff_441c39625436ba2e_00001 +40300020001fffff_3fe0000000000001_4020002000200001_00001 +cd100100000fffff_381fffffffffffff_c5400100000ffffe_00001 +0000000000000000_3fe0000000000001_0000000000000000_00000 +41ffefffffffffdf_bff8000001000000_c207f40000ff7fe7_00001 +0000000000000000_7ffc000000000000_7ff8000000000000_00000 +57f01fffffff7fff_3fd00001f7ffffff_57d02001fbef7ffe_00001 +c870200000010000_3fefffffffffffff_c87020000000ffff_00001 +3e2fffe000000fff_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_3fefffffffffffff_0000000000000000_00000 +be36f03e8c9d3cd8_c7f9a4a35fede985_464261b53aedde07_00001 +0000000000000000_c180001ffffffffe_0000000000000000_00000 +c01fffffffef0000_401b5b155998eecc_c04b5b15598a6668_00001 +bfb0000400100000_3feffffffffffffe_bfb00004000ffffe_00001 +0000000000000000_3feffffffffffffe_0000000000000000_00000 +bfc8000000400000_c040000000005fff_4018000000408fff_00001 +0000000000000000_3fbe26137bc2717f_0000000000000000_00000 +c00aaa4fd557ef13_c3b8917384eb32d0_43d478efdc9216d8_00001 +33b002000007ffff_3ff0000000000000_33b002000007ffff_00000 +0000000000000000_3ff0000000000000_0000000000000000_00000 +3f50000000000000_c1cf9ffffffffffe_c12f9ffffffffffe_00000 +0000000000000000_b3f000000ffffe00_0000000000000000_00000 +3fffffffeffffff6_3fdfffffffff0020_3fefffffefff0017_00001 +bf6fffffffffff3f_3ff0000000000001_bf6fffffffffff40_00001 +47fffc0000000001_c03fffff7fffff7f_c84ffbff800fff80_00001 +0000000000000000_3ff0000000000001_0000000000000000_00000 +3caffe000000ffff_3fdffc7fffffffff_3c9ffa803800ffe3_00001 +0000000000000000_7ffc000000000000_7ff8000000000000_00000 +baa6a91cddacae08_510ff80000020000_cbc6a3729676ad6e_00001 +40300000083fffff_3fffffffffffffff_40400000083fffff_00001 +3cd00fffff7fffff_ffebc7d81171f5ef_fccbe39fe8a52922_00001 +0000000000000000_3fffffffffffffff_0000000000000000_00000 +a1407fff7fffffff_41cfffbffffffffe_a3207fde8000fffd_00001 +0000000000000000_c030080000ffffff_0000000000000000_00000 +4150040020000000_2eedc50618875049_304dcc7795977e4f_00001 +bfc676f7e5d9e346_3ffffffffffffffe_bfd676f7e5d9e344_00001 +0000000000000000_3ffffffffffffffe_0000000000000000_00000 +0000000000000000_c18aca47203438e2_0000000000000000_00000 +bd607ffffffffbfe_4024e704bfc3d6c1_bd958e3ce5c1f03a_00001 +40664093b187b4e5_4000000000000000_40764093b187b4e5_00000 +bffa5cf563cae7d4_bfeffbffffffffee_3ffa59a9c51e6e69_00001 +0000000000000000_4000000000000000_0000000000000000_00000 +3fcffffffffbffde_c02fbffdffffffff_c00fbffdfffc07dd_00001 +0000000000000000_7fedfffffdfffffe_0000000000000000_00000 +43e0ff7ffffffffe_c7effffffffff7ef_cbe0ff7ffffffbb5_00001 +8ad00000000041ff_4000000000000001_8ae0000000004200_00001 +5dfffffffff7fffc_bfffff8000010000_de0fff7ffff9001c_00001 +0000000000000000_4000000000000001_0000000000000000_00000 +ffefffffdfffffee_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_3cd000000043fffe_0000000000000000_00000 +c01d9eadf45189b8_3f50000000ffffbf_bf7d9eadf62b741e_00001 +37effffeffffff00_400fffffffffffff_380ffffeffffff00_00001 +0000000000000000_400fffffffffffff_0000000000000000_00000 +0000000000000000_ffe58b7bfa0536fd_0000000000000000_00000 +c190000007fffeff_429455aca15996be_c43455acab846bc8_00001 +43f00000000fffc0_400ffffffffffffe_44100000000fffbf_00001 +0000000000000000_400ffffffffffffe_0000000000000000_00000 +47efff0008000000_b1dcb0523546117f_b9dcaf6cb9e07bdb_00001 +0000000000000000_b800003ffe000000_0000000000000000_00000 +bfe0000000000000_c1ffffffffff0008_41efffffffff0008_00000 +41edfffffffffffe_4010000000000000_420dfffffffffffe_00000 +bfc0000000000017_bfe2697f4b561495_3fb2697f4b5614b0_00001 +0000000000000000_4010000000000000_0000000000000000_00000 +3ff3fffffbffffff_bbefffeffffffdff_bbf3fff5fc0000be_00001 +0000000000000000_c1c0000007ffbffe_0000000000000000_00000 +3fcbd27c9d3cfce9_3fbf7ffffeffffff_3f9b6332a9e97510_00001 +404fffff000007fe_4010000000000001_406fffff00000800_00001 +43f000ffffff7fff_22300000001fffdf_26300100001f81de_00001 +0000000000000000_4010000000000001_0000000000000000_00000 +abc0000000000022_c23ff803ffffffff_2e0ff80400000043_00001 +0000000000000000_bca00001ff7ffffe_0000000000000000_00000 +bfbfffc001000000_40c00000000040ff_c08fffc0010081fc_00001 +c1c07ffffffff7fe_401fffffffffffff_c1f07ffffffff7fd_00001 +bf5bfffffffffffa_bfe6386ce8894329_3f53715f4b781ac0_00001 +0000000000000000_401fffffffffffff_0000000000000000_00000 +47ffffbfffefffff_381001fdffffffff_402001ddfbfbff00_00001 +0000000000000000_078fffffffff00fe_0000000000000000_00000 +402ff000001fffff_40759558e27de226_40b58a8e3622388e_00001 +3fb57e5a898766cf_401ffffffffffffe_3fe57e5a898766ce_00001 +b813d14cf9cc6a0f_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_401ffffffffffffe_0000000000000000_00000 +0000000000000000_c01002003ffffffe_0000000000000000_00000 +ffe000010003ffff_eb50000000007f7e_2b40000100047f7e_00001 +f020400000000100_4340000000000000_f370400000000100_00000 +47f4000400000000_bf9fffbfc0000000_c7a3ffdbd7f7f800_00000 +0000000000000000_4340000000000000_0000000000000000_00000 +bfdf7ffffefffffe_3e2ffffffe007fff_be1f7ffffd087dfd_00001 +0000000000000000_40efdeffffffffff_0000000000000000_00000 +40bffffff0010000_c00fffbf7fffffff_c0dfffbf7001203c_00001 +b80ffffffffdfeff_4340000000000001_bb5ffffffffdff00_00001 +c7efe0000000001f_41cb6efdcaa9034a_c9cb538eccde5a61_00001 +0000000000000000_4340000000000001_0000000000000000_00000 +400ffffff00007ff_c1e40fffffffffff_c2040ffff5f80502_00001 +0000000000000000_bfdfffff8001ffff_0000000000000000_00000 +41c001ffffffff7f_43e061baf61ffb1f_45b063c72d7ebe9b_00001 +37e0080000003ffe_434fffffffffffff_3b40080000003ffe_00001 +c1f9046426f60438_bf7ffff7fffffffe_4189045de5dcfa79_00001 +0000000000000000_434fffffffffffff_0000000000000000_00000 +c03ffffffc00fffe_802002000007ffff_007001fffe08400e_00001 +0000000000000000_c5b00010000003fe_0000000000000000_00000 +3770000000000107_3fd48f00324582ef_37548f0032458441_00001 +b5affffffff7fffe_434ffffffffffffe_b90ffffffff7fffc_00001 +3fc0c468246a1620_bf9fc40000000000_bf70a4f7e125cf36_00001 +0000000000000000_434ffffffffffffe_0000000000000000_00000 +c0200000001fffff_bfc000ffffbffffe_3ff000ffffe001fd_00001 +0000000000000000_c1f6c9921fedfd35_0000000000000000_00000 +c02e0000ffffffff_3f8fc00000000100_bfcdc400fe0000ef_00001 +7ffc000000000000_7fe0000000000000_7ff8000000000000_00000 +c80f48a9d9dbc8c6_c1c007ffffeffffe_49df584e2ea96dfd_00001 +0000000000000000_7fe0000000000000_0000000000000000_00000 +0000000000000000_c02000003fff7fff_0000000000000000_00000 +7feffff800010000_37f21ffffffffffe_77f21ffb780090ff_00001 +c80c5e05644472e7_7fe0000000000001_87fc5e05644472e8_00001 +bfeffffffffffaff_bf800003fffffffe_3f800003fffffd7e_00001 +0000000000000000_7fe0000000000001_0000000000000000_00000 +3cbfffffffe00ffe_c1cc000001000000_be9c000000e40dfe_00001 +0000000000000000_b80fffffffc20000_0000000000000000_00000 +b35e061abc769f3a_c078000003fffffe_33e684941119bac2_00001 +c0ae000000000fff_7fefffffffffffff_80ae000000000ffe_00001 +643cfffffffffffe_3fc000000807ffff_640d00000e8e7ffd_00001 +0000000000000000_7fefffffffffffff_0000000000000000_00000 +c3efffdffffdfffe_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_3ff000000fffff80_0000000000000000_00000 +c0114a0730d7f7a8_c3dffc0000fffffe_440147ddf07c2ce2_00001 +c071f1a35952c0a4_7feffffffffffffe_8071f1a35952c0a2_00001 +bf74200a147ea166_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_7feffffffffffffe_0000000000000000_00000 +403a793cfb1e2471_bff0000100007fff_c03a793ea2b2c7eb_00001 +0000000000000000_3fd00003fffbfffe_0000000000000000_00000 +c09fffff7ffffff0_3cabffffffffffff_bd5bffff8ffffff1_00001 +3800008000000002_7ff0000000000000_7800008000000002_00000 +3dafffc3fffffffe_480ffff800000002_45cfffbc000f0000_00001 +0000000000000000_7ff0000000000000_7ff8000000000000_10000 +40cffffffffff880_39100003fff00000_39f00003ffeffc40_00001 +0000000000000000_4190200080000000_0000000000000000_00000 +41e56167e987d508_c3507641c18b2d15_c545ff6e26393368_00001 +3f43652672b8c04e_7ffc000000000000_7ff8000000000000_00000 +3d1ffffbfe000000_216898822a24af3f_1e98987f158ae1d8_00001 +0000000000000000_7ffc000000000000_7ff8000000000000_00000 +c1c8a60ffe18c7bf_c01bdaf03620c126_41f574c1d28158e8_00001 +0000000000000000_c741ffffffffffef_0000000000000000_00000 +3db000003ffffff7_43caaa16868406bc_418aaa16f12c60c8_00001 +a220000000000bff_7ffc000000000000_7ff8000000000000_00000 +39d0000007c00000_37efffffe07fffff_31cfffffeffffff0_00001 +0000000000000000_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_c7f0000000000ffe_0000000000000000_00000 +bf8fffffffffdfef_7fd000000100ffff_ff7000000100eff6_00001 +bfb00000001bffff_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_7ffc000000000000_7ff8000000000000_00000 +402fffffffffdfdf_c02fffffffffff6e_c06fffffffffdf4d_00001 +0000000000000000_1b6e0000000007ff_0000000000000000_00000 +4037ab310ba6cb64_7fefdffffdfffffe_00379385d9207187_00001 +c00195fa60036675_8000000000000000_0000000000000000_00000 +bfd000003fffbfff_c00fffe000000000_3fefffe07ffeffff_00001 +0000000000000000_8000000000000000_0000000000000000_00000 +c020000000800004_43d4a4d3867e8d13_c404a4d38723b3b4_00001 +0000000000000000_c1f8f41f2ee582b0_0000000000000000_00000 +37f0000000efffff_c3d00007fffffeff_bbd0000800efff75_00001 +64b00000000bffff_3b816cd156a62ab8_60416cd156b33c54_00001 +0000000000000000_4803ffffffffefff_0000000000000000_00000 +bfd7c2590b89786f_c000f4df3c754c0e_3fe92df857f975ae_00001 +3f0ffffffeffffc0_c003fffffff80000_bf23ffffff57ffd8_00001 +c3d2bbe6deae1f63_ffd0000000004010_03b2bbe6deae6a66_00001 +0000000000000000_403000000000003f_0000000000000000_00000 +41cffffffff7bfff_40600007fffffff8_42400007fffbdff6_00001 +c1dfff7ffffffff8_b7efffffffffffff_39dfff7ffffffff8_00001 +8020200007fffffe_c59000000000083f_05c020000800084e_00001 +0000000000000000_ffefff8000080000_0000000000000000_00000 +58b00000008003fe_3b6ff00001fffffe_542ff00002ff87f7_00001 +77f34f18a693527b_8010000000000000_b8134f18a693527b_00000 +42bfffffff80001e_408000004000000f_435000003fc0001e_00001 +0000000000000000_8010000000000000_0000000000000000_00000 +c7efffffc00007ff_c030000003fffffc_482fffffc80007e8_00001 +bec52f80f9199ec0_c3efff000007fffe_42c52ed77d1721d2_00001 +43f000000407ffff_8010000000000001_8410000004080000_00001 +401cc0bdc0613b09_bec09901b9b2a079_beedd3b3f0a24b73_00001 +0000000000000000_8010000000000001_0000000000000000_00000 +3fb00200000000ff_c0000000011fffff_bfc00200012024fd_00001 +0000000000000000_3fefffffffdff800_0000000000000000_00000 +9a5f095312a9cdc5_c1f1ffffdfffffff_1c61753e9b7630ac_00001 +c340000000000000_801fffffffffffff_036fffffffffffff_00000 +37e0000003fff7fe_37effffbbfffffff_2fdffffbc7ffeeec_00001 +0000000000000000_801fffffffffffff_0000000000000000_00000 +c1c0007dffffffff_bfb3fff7fffffffe_418400957fc0fffd_00001 +0000000000000000_3ef0000000000016_0000000000000000_00000 +3807fffffffffdff_4230000000002080_3a48000000002ebf_00001 +c1effffffffffc02_801ffffffffffffe_021ffffffffffc01_00001 +41c0000007ffffff_49103fffefffffff_4ae03ffff81ffff6_00001 +0000000000000000_801ffffffffffffe_0000000000000000_00000 +b81ffffffdfeffff_403dfffffff80000_b86dfffffe170fff_00001 +0000000000000000_32ee409a5f3b66fa_0000000000000000_00000 +3dcffffff0000000_c06fffffff800800_be4fffffef800800_00001 +2b50000200000020_bca0000000000000_a800000200000020_00000 +c1c39e834dacb36b_468f7fe000000000_c8634ff5a1f2b2f0_00001 +0000000000000000_bca0000000000000_0000000000000000_00000 +391f800001000000_46420003ffffffff_3f71b803f0900020_00001 +0000000000000000_3ff3d4f7273f6526_0000000000000000_00000 +407effbfffffffff_3e00000040001fff_3e8effc07bff3dfd_00001 +c00001000000007e_bca0000000000001_3cb0010000000080_00001 +0010000000003eff_419ffffff8200000_01bffffff8207dfe_00001 +0000000000000000_bca0000000000001_0000000000000000_00000 +c3f000000020003f_3fbf800000000006_c3bf8000003f0082_00001 +0000000000000000_41d1fdffffffffff_0000000000000000_00000 +47f9106b08704172_43f0000000bffffe_4bf9106b099d0674_00001 +3bddd6cd1eacf35d_bcafffffffffffff_b89dd6cd1eacf35c_00001 +3810003ffdffffff_c01f01d4d299b191_b83f0250d60cc15b_00001 +0000000000000000_bcafffffffffffff_0000000000000000_00000 +c1f00013fffffffe_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_c3d52e10f5566786_0000000000000000_00000 +403001fffffffeff_402ffffdfffffffe_407001feffdffefe_00001 +3fb0ffff00000000_bcaffffffffffffe_bc70fffefffffffe_00001 +7ffc000000000000_c03ffffeff800000_7ff8000000000000_00000 +0000000000000000_bcaffffffffffffe_0000000000000000_00000 +405e1876cd43dfed_b7efffffffffc006_b85e1876cd43a3c1_00001 +0000000000000000_3fc01fffffff0000_0000000000000000_00000 +37f46ac0cb227799_41c5ef5245dd848c_39cbfd80a6baabfb_00001 +bcaa61d451370385_bfd0000000000000_3c8a61d451370385_00000 +c3f00004000001ff_c3d00bfffffffffe_47d00c04030001ff_00001 +0000000000000000_bfd0000000000000_0000000000000000_00000 +088fdffdfffffffe_bf3000007c000000_87cfdffef707f07d_00001 +0000000000000000_bfb0010007fffffe_0000000000000000_00000 +c38011ffffffffff_3a60000000220000_bdf012000022263e_00001 +402feffff7fffffe_bfd0000000000001_c00feffff7ffffff_00001 +c1ec36947a5606cc_bfd0fffeffffffff_41cdf9fbfe921f92_00001 +0000000000000000_bfd0000000000001_0000000000000000_00000 +41f0001fffffffbf_c3cffeffffffffdf_c5cfff3ffdffff5d_00001 +0000000000000000_c312de637a398fb0_0000000000000000_00000 +403b5ab30b28be12_bfdfffffffffffff_c02b5ab30b28be11_00001 +3fc040000000007f_3fd0f88932487143_3fa13c6b5711938f_00001 +0000000000000000_bfdfffffffffffff_0000000000000000_00000 +f8d6275431da5f5a_c3f01fffffff0000_7cd653a2da3cb1a4_00001 +0000000000000000_434fffffff820000_0000000000000000_00000 +3aa002007fffffff_c1fe80c92278a049_bcae849a2fa3386e_00001 +4c20400000007ffe_bfdffffffffffffe_cc10400000007ffc_00001 +41f778782e71a049_41f0000000040004_43f778782e777e6d_00001 +0000000000000000_bfdffffffffffffe_0000000000000000_00000 +47f00001ffffffbf_7ffc000000000000_7ff8000000000000_00000 +0000000000000000_c1cfffffff87ffff_0000000000000000_00000 +bfcbcb96cd6ce0e7_bdf0403fffffffff_3dcc3b3456fdca1d_00001 +3810004000007fff_bfe0000000000000_b800004000007fff_00000 +b816b0e6a400c9f7_41d04000000003ff_b9f70baa3e90d2c9_00001 +0000000000000000_bfe0000000000000_0000000000000000_00000 +c2b6b180a7b11fce_434ffffffffe7ffe_c616b180a7b00f7a_00001 +0000000000000000_3ca00fffffffefff_0000000000000000_00000 +bfcfffe00001fffe_3ffffffffffffff9_bfdfffe00001fff7_00001 +381ffffffff0007f_bfe0000000000001_b80ffffffff00080_00001 +3c508003ffffffff_c9840007ffffffff_c5e4a00d4001fffd_00001 +0000000000000000_bfe0000000000001_0000000000000000_00000 +c3f500b2abbc6d5a_c00000000200003f_440500b2ae5c8403_00001 +0000000000000000_c1fc003ffffffffe_0000000000000000_00000 +381f83ffffffffff_401020007fffffff_383fc308fc1ffffe_00001 +c2d1fffffffffff8_bfefffffffffffff_42d1fffffffffff8_00001 +41c000000003fffd_ee8000020000007f_f05000020004007c_00001 +0000000000000000_bfefffffffffffff_0000000000000000_00000 +44d1dac2a47ae323_bf0ad596dbf9ffc8_c3edf1d4e2cf5d16_00001 +0000000000000000_1dc0000200000400_0000000000000000_00000 +802b02a4a7567581_400ffbffffffff7f_804aff4452c18a45_00001 +801ffc000007ffff_bfeffffffffffffe_001ffc000007fffe_00001 +4061a0ee04ab4a49_395f87fffffffffe_39d15ed28819c7f2_00001 +0000000000000000_bfeffffffffffffe_0000000000000000_00000 +488e6af849a7c8cc_c3c00000801ffffe_cc5e6af93d3c6106_00001 +0000000000000000_f895b944b616e64d_0000000000000000_00000 +c08ffffff807ffff_381fdfffffffdfff_b8bfdffff80fd7fe_00001 +3e8ff000001fffff_bff0000000000000_be8ff000001fffff_00000 +2740d36bf6e95244_b8512e32d34343c0_9fa21137ff9a0629_00001 +0000000000000000_bff0000000000000_0000000000000000_00000 +bfd00040000003ff_bfe601e4fe42b76a_3fc6023d05d6b5f4_00001 +0000000000000000_ffe0000005fffffe_0000000000000000_00000 +34ed63d731a69782_37e15e6928604d26_2cdfe7805e636848_00001 +002ffcfffffffffe_bff0000000000001_802ffcffffffffff_00001 +41000000003e0000_baddffffffffff80_bbee000000743f7f_00001 +0000000000000000_bff0000000000001_0000000000000000_00000 +40a00000020001ff_c340000000800001_c3f0000002800200_00001 +0000000000000000_c02ffeffbfffffff_0000000000000000_00000 +bfe85c97c592f839_b7f253013ebdb741_37ebe68cf6e766e6_00001 +c3f00000083ffffe_bfffffffffffffff_44000000083ffffe_00001 +bfe7ffffbfffffff_c04f7fff00000000_40479fff01000200_00001 +0000000000000000_bfffffffffffffff_0000000000000000_00000 +c033a9b295fcb4d4_c34fffffc00fffff_4393a9b26eb32481_00001 +0000000000000000_bfa0040000000040_0000000000000000_00000 +c7ee1b070553cb86_43c02000000003ff_cbbe573d135e7aa1_00001 +bddfffffffffc03f_bffffffffffffffe_3defffffffffc03e_00001 +0000000000000000_bffffffffffffffe_0000000000000000_00000 +bfdffff800020000_40504000007fffff_c0403ffbf08103df_00001 +0000000000000000_802ffb0000000000_0000000000000000_00000 +bfcffffffffe07ff_3fd5d55d6d4b65c1_bfb5d55d6d4a0ddf_00001 +c6efc00000001fff_c000000000000000_46ffc00000001fff_00000 +0000000000000000_c000000000000000_0000000000000000_00000 +c341000000007fff_ffe80007ffffffff_033980088000bffe_00001 +0000000000000000_c3d45a83d3e64a25_0000000000000000_00000 +bcaffc0000001fff_37e000000003fffe_b49ffc0000081efb_00001 +ffe00000003fffef_c000000000000001_7fefffffffffffff_00101 +b7f0020000000fff_4470000010000007_bc70020010021006_00001 +0000000000000000_c000000000000001_0000000000000000_00000 +41d00000010003ff_40400000007effff_42200000017f03ff_00001 +0000000000000000_402200000001ffff_0000000000000000_00000 +b7efffffbfffeffe_b7efe00000001fff_2fefdfffc040100e_00001 +c3d09308769f3f51_c00fffffffffffff_43f09308769f3f51_00001 +5b18007fffffffff_421000000004007e_5d380080000600dd_00001 +0000000000000000_c00fffffffffffff_0000000000000000_00000 +0140008000fffffe_d2e0001ffffffffb_943000a0020001f8_00001 +0000000000000000_b6a4df75cc5a8ac6_0000000000000000_00000 +3fc0000000100002_bfdffffff0ffffff_bfaffffff1200002_00001 +9249d03728460383_c00ffffffffffffe_1269d03728460382_00001 +c80fffffeffffffe_40346972210201a4_c854697216cd4892_00001 +0000000000000000_c00ffffffffffffe_0000000000000000_00000 +ffef003fffffffff_c3e000000007fffc_03df0040000f8018_00001 +0000000000000000_402ffffdfefffffe_0000000000000000_00000 +ef3fffe000007fff_ffd8000000000004_2f27ffe800006004_00001 +b7404000000007fe_c010000000000000_37604000000007fe_00000 +c00fbffffc000000_37e1c5f1f14e88f4_b801a2660b332da3_00001 +0000000000000000_c010000000000000_0000000000000000_00000 +400fffffffffffff_c1effffc00001000_c20ffffc00000fff_00001 +0000000000000000_b81fbfffffffdffe_0000000000000000_00000 +c18000001fffeffe_cd4fffafffffffff_4edfffb03fff3ffc_00001 +be0c000001ffffff_c010000000000001_3e2c000002000001_00001 +4030080000400000_3feffffffffff7ef_40300800003ffbf6_00001 +0000000000000000_c010000000000001_0000000000000000_00000 +41f000000000004f_b0d8d4e5d2e17fbc_b2d8d4e5d2e18036_00001 +0000000000000000_c3e4bafe2be6e7ab_0000000000000000_00000 +43c2000000000000_1b9003ffdfffffff_1f62047fdbffffff_00001 +3f0ffffffe000000_c01fffffffffffff_bf3ffffffdffffff_00001 +38000fffffdfffff_3eb000000fffffdf_36c010000fefffde_00001 +0000000000000000_c01fffffffffffff_0000000000000000_00000 +3ff620e228517034_d7b0007ffff00000_d7b621932f4c91dd_00001 +0000000000000000_b2d000010001fffe_0000000000000000_00000 +434002ffffffffff_b80dffffff7ffffe_bb5e059fff7fe7fc_00001 +c01fffffffc00fff_c01ffffffffffffe_404fffffffc00ffe_00001 +0000000000000000_c01ffffffffffffe_0000000000000000_00000 +43402000003ffffe_3fefbfffffffdfff_433fff80007edfbc_00001 +0000000000000000_40400000000103fe_0000000000000000_00000 +c840000fffc00000_8020800000100000_087080107fce0010_00001 +dc6fffe800000000_c340000000000000_5fbfffe800000000_00000 +380ff7fffffffff7_37e07fff7fffffff_30007bdf801ffffb_00001 +0000000000000000_c340000000000000_0000000000000000_00000 +3fc001fff8000000_c7e000000fffffee_c7b002000801ffe5_00001 +0000000000000000_c01f672422632eb4_0000000000000000_00000 +c025e14360f49046_412fff0000000003_c165e09456d988a3_00001 +40efbffffffffff0_c340000000000001_c43fbffffffffff1_00001 +bffffffffff00006_2ff00001ffffefff_b0000001fff7f001_00001 +0000000000000000_c340000000000001_0000000000000000_00000 +db80000000008001_c8000000001fffdf_6390000000207fe1_00001 +0000000000000000_43c0010ffffffffe_0000000000000000_00000 +c01a463c652ab793_c05ffffffffeffff_408a463c6529e561_00001 +43f000ffbfffffff_bfb97cb2bcb99946_c3b97e4a21f299eb_00001 +0000000000000000_c34fffffffffffff_0000000000000000_00000 +c34b6bcc142a6f56_c7e4a843ca846cd5_4b41b38f9341a0c3_00001 +0000000000000000_43ee59a2f1155c8b_0000000000000000_00000 +9dd926fa6482fb5b_c34ffffffffffffe_213926fa6482fb5a_00001 +3fe000000000fbff_39cd3b5aa5703bc0_39bd3b5aa5720825_00001 +0000000000000000_c34ffffffffffffe_0000000000000000_00000 +3c49fe3f310fdc0a_bfd0000000000406_bc29fe3f310fe293_00001 +0000000000000000_40307ff000000000_0000000000000000_00000 +9daffffffdffffef_bf34c1a973f2b94f_1cf4c1a972a69ead_00001 +4cadffffffffffbf_ffe0000000000000_8c9dffffffffffbf_00000 +3fcffc0000003fff_c3e0000083ffffff_c3bffc0107df3ffd_00001 +0000000000000000_ffe0000000000000_0000000000000000_00000 +3fe0000000008fff_802ffffff7fffff6_801ffffff8011ff3_00001 +0000000000000000_3f0773142edfbe27_0000000000000000_00000 +29d000000403ffff_3f80003f00000000_2960003f04040fcf_00001 +38bfffefffdffffe_ffe0000000000001_f8afffefffdfffff_00001 +47effffc00000001_c7e953179168449a_cfe953146705526d_00001 +0000000000000000_ffe0000000000001_0000000000000000_00000 +c02fffc000007ffe_37ffffffdffffffa_b83fffbfe000bff7_00001 +0000000000000000_c1f000fffffffe00_0000000000000000_00000 +41c00fffffffbffe_ffefffffffffffff_81c00fffffffbffd_00001 +bfcebb873724572c_43fffffffff007fe_c3debb8737150115_00001 +0000000000000000_ffefffffffffffff_0000000000000000_00000 +3daffffc04000000_c1dffbfffbffffff_bf9ffbfc007f807e_00001 +0000000000000000_c7d001ffe0000000_0000000000000000_00000 +5ce0010001ffffff_559000000007fe00_728001000207fe7f_00001 +7ffc000000000000_ffeffffffffffffe_7ff8000000000000_00000 +4d0ffffffffefff8_434000000407ffff_5060000004077ffb_00001 +0000000000000000_ffeffffffffffffe_0000000000000000_00000 +3ffdb267f5c69234_3e3e492b0370990d_3e4c1b285e7fc086_00001 +0000000000000000_b7f00083fffffffe_0000000000000000_00000 +be8ffbfff7ffffff_b7efffffedffffff_368ffbffe6024003_00001 +40401007fffffffe_fff0000000000000_80401007fffffffe_00000 +43d4000000200000_3ca03fffffffff7f_4084500000207f5f_00001 +0000000000000000_fff0000000000000_7ff8000000000000_10000 +c1cff80000040000_c30007ffffffe000_44e003fe0001e108_00001 +0000000000000000_c6affffffffffffe_0000000000000000_00000 +66ef3a141ea96df4_a5fe000007ffffff_ccfd4672e48d5c1b_00001 +403efff800000000_7ffc000000000000_7ff8000000000000_00000 +c3efff5fffffffff_3e10aaf54bbf14f4_c210aaa1f4f49a38_00001 +0000000000000000_7ffc000000000000_7ff8000000000000_00000 +815fffbffffffbfe_3fc953950e8a2680_813953626760063f_00001 +0000000000000000_c0045abb4860cbf3_0000000000000000_00000 +b26ffffffffff3ff_31f0083fffffffff_a470083ffffff9fb_00001 +41fffffffffc000f_7ffc000000000000_7ff8000000000000_00000 +ffe000000807ffff_c7ffffffffffc00e_07f000000807e006_00001 +0000000000000000_7ffc000000000000_7ff8000000000000_00000 +c42fffffffff7eff_400af1800bf02233_c44af1800befb594_00001 +0000000000000000_bfc307b45d013179_0000000000000000_00000 +43e67239f3caa98b_4030100000007fff_442688ac2dbf27c5_00001 +c020003fefffffff_7ffc000000000000_7ff8000000000000_00000 +43df800000000000_c800000007fffffd_cbef80000fbffffa_00001 +0000000000000000_7ffc000000000000_7ff8000000000000_00000 +3fc00003ffffe000_3fc00020000ffffe_3f9000240017e002_00001 +de308000000fffff_bff03ffefffffffe_5e30c1fef8103ffc_00001 +33c9eac8840374c2_0000000000000000_0000000000000000_00000 +bfbf7fffffdfffff_b15fffffff810000_312f7fffff62fc00_00001 +402e0f0ff2ae974a_c010000007fbffff_c04e0f1001ae9b7d_00001 +0029ab134ab9225a_c1d2c16dd8a224a2_820e16c585c2b039_00001 +341ffc8000000000_b87001fffffffe00_aca0003fc7fffe00_00001 +402fbefffffffffe_bfe00001fff7ffff_c01fbf03f7d0207c_00001 +401395a7515be3d9_8010000000040007_803395a75160c94b_00001 +bffffffec0000000_c000000000003eff_400ffffec0007dfe_00001 +418f7ff7ffffffff_b7f00000000000bf_b98f7ff800000177_00001 +bf6ffffffe000400_402160aef0d05b5b_bfa160aeefba5298_00001 +1641ffffff7ffffe_47e800000000001f_1e3affffff400020_00001 +411ffffeffffffff_3e9ffc0000000020_3fcffbff00200020_00001 +c3fa0e39a0436d68_3d3c9035c5b2e908_c14741de3814e038_00001 +c01fffffdefffffe_0510000f7fffffff_8540000f6f7ff001_00001 +1fc3fffffffff800_c1f0000200020000_a1c40002800277ff_00001 +41cfffff81ffffff_402f0000000fffff_420effff85fffffe_00001 +4801ffffbfffffff_c3c99366bccc8a8e_cbdcc5d32e1880ea_00001 +48000000004001ff_41f331de979ac49e_4a0331de97e78e7e_00001 +47f0ffffffbfffff_4890001ff0000000_50910021eebfff80_00001 +c7e000008001fffe_001fffffffffffff_881000008001fffd_00001 +b8013a04700abd60_ffdfd80000000000_77f1247bea7eaff4_00001 +3eafeffff8000000_ca302000003fffff_c8f017effc37dffe_00001 +31fffc0000007ffe_41229ed1840a7ed0_33329c7da9da47fb_00001 +7ffc000000000000_c0da7f18d03da9b8_7ff8000000000000_00000 +7ffc000000000000_00203effffffffff_7ff8000000000000_00000 +401fffc00000003f_c11d4f929c6863da_c14d4f57fd432b42_00001 +400ffffffff8003e_3ca0000000000000_3cbffffffff8003e_00000 +3d0fffffbff7ffff_7ffc000000000000_7ff8000000000000_00000 +41d0003fffffffff_bc1ffffefdfffffe_be00003f7efdfbfd_00001 +c1effff800001fff_3ca0000000000001_be9ffff800002000_00001 +c7e944135d63f2dd_43ff7fffefffffff_cbf8df03034c5962_00001 +3ca0f7fffffffffe_b4bffffffff00000_b170f7fffff783fe_00001 +41f000000008001f_30700007fc000000_32700007fc080023_00001 +3ffd6b6052240005_3cafffffffffffff_3cbd6b6052240005_00001 +bfc02000000001ff_c00ffffeffffff7f_3fe01fff7f0001be_00001 +5580000000ffffee_3ff509df8fb64af0_558509df9106e8d2_00001 +7ffc000000000000_bcae035f6e1c25b3_7ff8000000000000_00000 +43d3ffffff000000_3caffffffffffffe_4093fffffeffffff_00001 +d533ffffffffffff_3cafffffffbffbff_d1f3ffffffd7fd7e_00001 +3ecab8eca9bb4c17_c0fd750edac542c0_bfd8995702b66277_00001 +befff8000000007f_40bfffffffffffff_bfcff8000000007e_00001 +b7f0008003ffffff_3fd0000000000000_b7d0008003ffffff_00000 +bfe156f8e2d95e99_434ffffff8000ffe_c34156f8de83a90a_00001 +c3c000000000001e_7fde00003fffffff_83ae000040000037_00001 +80261e35bfb76142_41cfffff0000fffe_82061e350ec66434_00001 +41effffdfffffff6_3fd0000000000001_41cffffdfffffff8_00001 +190294f45fbe164e_bf70000005fffffe_988294f466b5f1ef_00001 +7ffc000000000000_43dfff8004000000_7ff8000000000000_00000 +c1d1b3346b46a9eb_bfc003fffffffff0_41a1b7a138617b84_00001 +c1ed5aa8b5beebe6_3fdfffffffffffff_c1dd5aa8b5beebe5_00001 +434202ad5699be09_307fffffc0100000_33d202ad329d64b3_00001 +480007ffdffffffe_43eff08b0c1adb83_4c00004188dfe96b_00001 +2d70d3775ee02e3a_3fdffffffffffffe_2d60d3775ee02e39_00001 +bfeed9443f12e7c3_c03fffffe0000000_403ed9442039a384_00001 +43404007fffffffe_deff4f3947dd05b5_e24fcc85d4991db6_00001 +bf9fdfffffffffef_3fe3a38b61a3da9a_bf938fe7d64236b4_00001 +c3debfffffffffff_3fe0000000000000_c3cebfffffffffff_00000 +bcaffe0000000008_3fd00008000000ff_bc8ffe0fff000205_00001 +c05fffffefffefff_3fe8010ee8a17cd1_c058010edca0e95b_00001 +3e1f29626b9ddd18_30bfffdf80000000_2eef2942c595e7cc_00001 +3ffffeffffffeffe_3fe0000000000001_3feffefffffff000_00001 +66cefffffffffbff_bee1c34e00ecb06b_e5c1353390e548ae_00001 +7ffc000000000000_ba4dfffff8000000_7ff8000000000000_00000 +c1d427301514e081_3fd8800000000000_c1bedc01a047f7c5_00001 +d750100fffffffff_3fefffffffffffff_d750100ffffffffe_00001 +ffd00000000004fe_c7cffffffefffff0_07afffffff0009ec_00001 +bff0004000000001_3cbfffeffffffdff_bcc00037ffdfff00_00001 +404ffbfffffffffc_c34ffff8003fffff_c3affbf8013ff7fb_00001 +3fffffdfc0000000_3feffffffffffffe_3fffffdfbfffffff_00001 +43c000001dfffffe_3c00800001000000_3fd080001ff00000_00001 +3fefffffe2000000_478fdfff80000000_478fdfff621e0078_00000 +00200003fff00000_c8dffdfffffffff0_890ffe07ff6001ef_00001 +3d1dbffffffffffe_3ff0000000000000_3d1dbffffffffffe_00000 +401e89aca33806c9_381fc00007ffffff_384e4c99519401e4_00001 +403ffffffffffddf_31ce00001fffffff_321e00001ffffe01_00001 +c04ffc000000fffe_bfa3f7525558148b_4003f4d36b0e0942_00001 +434fffffffd00000_3ff0000000000001_434fffffffd00002_00001 +43e0000000000082_3db000003ffffeff_41a000003fffff82_00001 +bfcfffff00000040_fd561631baa43441_7d36163109f2a699_00001 +402fffff0000007f_3fffffffffffffff_403fffff0000007f_00001 +bfa0400010000000_c3f00010000003ff_43a040105000140f_00001 +c1600003fffffffd_43fbffffffffbffe_c56c0006ffffbff8_00001 +71deffffffbffffe_4060003e00000000_724f00781fbfff06_00001 +b0d000001fffffff_3ffffffffffffffe_b0e000001ffffffd_00001 +37effffffefffff0_4029001bf472f471_3829001bf3aaf385_00001 +3814000000000fff_37e0001fffeffffe_30040027ffec0ffd_00001 +41a0000010000000_f2a00020000007ff_f4500020100027ff_00001 +c1d004000ffffffe_4000000000000000_c1e004000ffffffe_00000 +be9dfffffffffffd_380afffffffffffe_b6b94ffffffffffb_00001 +bfb4717e76986740_47ffeffffdffffff_c7c46745b6160324_00001 +40e9f0ae10a42de6_c1df000000008000_c2d92128a01f7439_00001 +0010000002000001_4000000000000001_0020000002000003_00001 +320ff7fffffffc00_7fe0001000000006_71fff81ff7fffc0c_00001 +425fffffcfffffff_41dffffbf7fffffe_444ffffbc800060a_00001 +4ff0fffffffdfffe_d930000001000fff_e9310000010e10fc_00001 +be500000004001ff_400fffffffffffff_be700000004001fe_00001 +3fe0380000000000_41affffffdfffc00_41a037fffefc7df9_00000 +c00fffffc000007e_c02ffffdfffffbff_404ffffdc000007e_00001 +3fcfffffffffffff_bcaffffffefffbff_bc8ffffffefffbfe_00001 +e9500000003ff7ff_400ffffffffffffe_e9700000003ff7fd_00001 +37f74d312c9c12e6_c59138b471d0b5f9_bd99149935ac4c00_00001 +6b10000007ffffe0_b84ffffffffdffde_e370000007feffce_00001 +3f8fff00001fffff_bfd00000201fffff_bf6fff00405dfdfd_00001 +362fc7fffffffffe_4010000000000000_364fc7fffffffffe_00000 +550c000000000003_c03fffff7ffffeff_d55bffff8fffff22_00001 +c1dff8000000007f_7ffc000000000000_7ff8000000000000_00000 +bfe0001ffffffeff_bfe008000000ffff_3fd008201000ff00_00001 +409dfffbffffffff_4010000000000001_40bdfffc00000001_00001 +43ec69813b94d362_bcaffffffaffffff_c0ac69813724572f_00001 +475703a683fd6399_d6d0000000003000_de3703a683fda8a3_00001 +390ffffffffe0006_479800000000007e_40b7fffffffe8083_00001 +381303276ef23657_c4f0000000000efe_bd1303276ef24827_00001 +3fe00000000f0000_55ffdffffffffffc_55efe000001de1fc_00001 +367000100001fffe_4340000007ffffee_39c00010080207ed_00001 +c1fbfffffffdffff_401ffffffffffffe_c22bfffffffdfffd_00001 +407080fd3d82dc9d_c3c00000fdffffff_c44080fe438290cc_00001 +3ca3b763df2216f1_bd50000000003ffb_ba03b763df2265c8_00001 +c120000003ffffe0_c06000fffbffffff_4190010000003fde_00001 +001003fffffffffd_4340000000000000_036003fffffffffd_00000 +3b10000000807ffe_be1fffff8000000f_b93fffff81010006_00001 +3ffb9699df82c260_480ecff57c220532_481a907a18f76c15_00001 +b10a400da0daec23_c66ffbffbffffffe_378a3cc56aa6b583_00001 +77efff7fbfffffff_4340000000000001_7b3fff7fc0000001_00001 +fc4ffffffffe00ff_c80583e64223c02f_046583e64222689d_00001 +4035c0011a5256f5_403bb950bcc2c81f_4082d7f5d4e4d1ba_00001 +bfd000800000007f_463ffff7fffbffff_c620007bffde006e_00001 +4026684586bcc03f_434fffffffffffff_4386684586bcc03f_00001 +3fd1f7ffffffffff_c01000001dffffff_bff1f80021b0fffd_00001 +b06fffffffffdeff_bcafdfffff7fffff_2d2fdfffff7fdf20_00001 +bfd0040000000007_41f00000000009ff_c1d0040000000a08_00001 +c1d02cdfc07b7411_434ffffffffffffe_c5302cdfc07b740f_00001 +3fd3ffdffffffffe_c1f001fdffffffff_c1d4025d7c03fffc_00001 +ffefffffffe0000e_3c6db11b9ddefb5e_fc6db11b9dc14a4f_00001 +391bfffffffffff6_7ffc000000000000_7ff8000000000000_00000 +c010000fffffbffe_7fe0000000000000_8000000000000000_00011 +c0000ffffdffffff_41fdeffffffffffe_c20e0deffc41fffc_00001 +9ffa2f3964887701_7ffc000000000000_7ff8000000000000_00000 +2e0fefdfffffffff_4030000020000040_2e4fefe03fdfc07f_00001 +bf743e9d43f80c40_7fe0000000000001_ff643e9d43f80c41_00001 +c1e00007f0000000_21bffffffff01000_a3b00007eff807fc_00001 +ffd0000017fffffe_c1f000ffffffc000_01d0010018013ffe_00001 +c1e0000080010000_079fffffeeffffff_899000007780ffbb_00001 +1feffffffffc003e_7fefffffffffffff_5feffffffffc003e_00001 +c3efefffffffdfff_3f90100000000004_c39007f7ffffeff3_00001 +c3effffff7e00000_3d9ffffdfffff7ff_c19ffffdf7dff881_00001 +c1f00d875c7ed339_55400003fffffffc_d7400d8b5fe0aa54_00001 +401fffdff7ffffff_7feffffffffffffe_001fffdff7fffffe_00001 +43c0000803ffffff_3fcfffffffffffff_43a0000803ffffff_00001 +bee00000000007f0_4030453834d7a591_bf20453834d7ada3_00001 +bfc0001fffffff00_c170000380000000_414000238006ff00_00001 +bfe0077fffffffff_7ff0000000000000_ffe0077fffffffff_00000 +8a9fffffffffffff_7fe0000000001080_ca9000000000107f_00001 +be7aba21defbaa50_fc3fffffffffffff_7acaba21defbaa50_00001 +47f0000ffffdffff_3fbfff0000000006_47bfff1ffefc0025_00001 +bf5ffff7fe000000_7ffc000000000000_7ff8000000000000_00000 +38f0100000007ffe_41e0000001010000_3ae01000010280ff_00001 +3ffffffffffffff2_3faffff8000007ff_3fbffff8000007f2_00001 +c0afffffbffffdfe_3fc07ffdffffffff_c0807ffddf0002f5_00001 +093fff7f7ffffffe_7ffc000000000000_7ff8000000000000_00000 +3fb8ed736b185958_43f07dac22ee32d4_43b9b13eafd17761_00001 +4315932d1fc6bca5_bfe00000047ffffe_c305932d25d82153_00001 +bfdfffff1fffffff_c00aab60f8ca27b4_3ffaab603e1a80e6_00001 +3800003fdfffffff_7ffc000000000000_7ff8000000000000_00000 +47f9dcc0dc84790c_bfd001ffffffffc0_c7d9dffc74a00933_00001 +ae6fff800000007e_c08787cf0c729bb6_2f078770ed366a49_00001 +c01000001000000e_bdbfffffdfffdffe_3ddfffffffffdffa_00001 +001fffffefff0000_8000000000000000_0000000000000000_00000 +c0fffffffeffffee_55139bb9349e058c_d6239bb9340127b7_00001 +b7ef7fffffe00000_c3e1db16103a3e46_3be193a9b7e77a37_00001 +bca000000008007e_3810000000000880_b4c00000000808fe_00001 +406ff7fffff7ffff_c03000020001ffff_c0aff803fefbfefc_00001 +41fffffc0fffffff_bff125048d9f0538_c20125027190f5ca_00001 +40101ffbffffffff_4030000001fffbff_40501ffc0203fb76_00001 +3fc71922783e2606_5ebfffffffffb7ff_5e971922783df20d_00001 +4805e01bec624433_bebfffe003fffffe_c6d5e0060f025b4c_00001 +bfe000fffdffffff_b5ffffc007fffffe_35f000e0000043fe_00001 +5b70007f80000000_c3cfffffffeff7ff_df50007f7ff7fbbf_00001 +41ffdbaf18ce06bd_8010000000000000_821fdbaf18ce06bd_00000 +c0dfff77ffffffff_bcff8b0a27d3ea94_3def8a8418e8c14f_00001 +40785ec8540ee022_402fffffffffffff_40b85ec8540ee022_00001 +c03fffdfff7ffffe_3ffffffbfffffffe_c04fffdbff84000c_00001 +c3fbba85b3184d07_8010000000000001_041bba85b3184d09_00001 +4a3ccc699c427a3d_4000002003ffffff_4a4ccca33c48cd28_00001 +4c3002003fffffff_40dffffff0ffffff_4d200200387f0fe1_00001 +d5803ffffffffffc_400fffffffffdfff_d5a03fffffffefbb_00001 +7ffc000000000000_c80fffffffffffd6_7ff8000000000000_00000 +c346e93e17d2b781_415fffffffa00000_c4b6e93e178dfbc6_00001 +c0e1000000080000_801ffffffffffffe_011100000007ffff_00001 +b01fffff8003ffff_41e1107888e2300a_b211107844a26ff4_00001 +3fefffffffff000e_c034a2b24bab636b_c034a2b24baabe5e_00001 +39e003ffffffffbf_3e504000000001ff_38404410000001be_00001 +3fa1ffff7fffffff_bca0000000000000_bc51ffff7fffffff_00000 +c1cffffffe000003_bd1eb76580b25d59_3efeb7657ec6e704_00001 +bfc000200003fffe_bb70007fbffffffe_3b40009fc103801c_00001 +401f003fffffffff_bfe8d71166319ab9_c018108a8922da45_00001 +3d6fde0000000000_bca0000000000001_ba1fde0000000001_00001 +403c2c5a3b9bb39e_b7efffdffffff000_b83c2c3e0f4169ec_00001 +3fbffffff0000007_c807dfffffffffff_c7d7dffff4100004_00001 +c1f007ffffffffff_41efffffffbffff6_c3f007ffffdfeff9_00001 +40205fffffffffff_bcafffffffffffff_bce05ffffffffffe_00001 +41f0220000000000_c3afffffbf800000_c5b021ffdf7b7800_00000 +3fb000001fffffc0_41d0804000000000_4190804021007fbe_00001 +c1d00010007ffffe_0bd0200ffffffffe_8db020202091007b_00001 +47203fffffffff7e_bcaffffffffffffe_c3e03fffffffff7c_00001 +3fba29d8ba0da6e3_894fff7fc0000000_891a296fde570d38_00001 +37eee003376d4ca7_bd381ffffffffffe_b53746e26cc966c7_00001 +7ffc000000000000_3ca0000400000100_7ff8000000000000_00000 +c357b53537b96da5_bfd0000000000000_4337b53537b96da5_00000 +3bc00000fffff000_b81000001ffffff7_b3e000011ffff1f6_00001 +3fbfff3fffffffff_b7fc000000000006_b7cbff5800000005_00001 +3fd12a08d1862ac2_e6000000000003f6_e5e12a08d1862f01_00001 +3caffdfdffffffff_bfd0000000000001_bc8ffdfe00000000_00001 +c50c00000003ffff_480004003fffffff_cd1c0700700400fd_00001 +c1effffbffffbfff_39a0007000000000_bba0006dfff1dffe_00001 +c02ffffff807fffe_bff7fe641162987a_4037fe640b68ff0e_00001 +400fffff00400000_bfdfffffffffffff_bfffffff003fffff_00001 +3f3007ffc0000000_434fffffdffffffa_429007ffaff8003d_00001 +401fffffffffffff_ffebff8000000000_801bff7fffffffff_00001 +3feff000003fffff_4db0000ffffffffa_4daff01ff0400034_00001 +bff3fffffeffffff_bfdffffffffffffe_3fe3fffffefffffe_00001 +41d400000000000f_406ec0bcf0b3df6c_4253387616706bb2_00001 +0d5f7fefffffffff_47ec8d501c4f76b7_155c1b0c95362ab4_00001 +4440f00000000000_bd8c00ffffffffff_c1dda50efffffffe_00001 +37ebffffffdffffe_bfe0000000000000_b7dbffffffdffffe_00000 +37efe7ffffffffff_44040e69405ca472_3c03ff5e716c5ef7_00001 +43f25bca4820614e_b7e4000000000006_bbe6f2bcda2879a8_00001 +3fd0000000000004_318c8fccd5b02d23_316c8fccd5b02d2b_00001 +c7eff77bf2b59c3c_bfe0000000000001_47dff77bf2b59c3e_00001 +4000000210000000_43c00103ffffffff_43d00106102183ff_00001 +401100007fffffff_c3dffffc0000003f_c400fffe5ffff020_00001 +41ffffffff9fffff_c060000003ffffef_c270000003cfffee_00001 +7ffc000000000000_bfefffffffffffff_7ff8000000000000_00000 +c00d37e1e0c4506a_3f8ffffffff801ff_bfad37e1e0bd0444_00001 +3f240001ffffffff_c1cff8000003fffe_c103fb01ff827ffe_00001 +434000000ff7ffff_bfdffffbdfffffff_c32ffffbffeffbdf_00001 +002e000fffffffff_bfeffffffffffffe_802e000ffffffffd_00001 +bfc000000fefffff_3fb54faffd79cc78_bf854fb012b42cc4_00001 +380c3f72cc3dec98_c3fffffffbffffff_bc1c3f72c8b5fe3d_00001 +3caebfd21432f7f8_bff0000000000000_bcaebfd21432f7f8_00000 +802fffdffeffffff_4047cb0f60814953_8087caf794b39055_00001 +43e1001000000000_37f20000003fffff_3be320120044003f_00001 +b5bffffffc1fffff_bff0000000000001_35bffffffc200001_00001 +45cfdffffffbffff_37e00000007fbffe_3dbfe00000fa807c_00001 +c02fffffffffffe2_972f800000003fff_176f800000003fe2_00001 +4800003fffbffffe_41b000fffffffffb_49c0014003bffbf9_00001 +7fee4b562439ed33_bfffffffffffffff_ffefffffffffffff_00101 +480ffffffc000020_4094000000001ffe_48b3fffffd802012_00001 +b8e0000003fbffff_c503f4d44f4bf888_3df3f4d454443066_00001 +381ffffdfffdfffe_41e2c2cc4e128c3c_3a12c2cb21e49b2d_00001 +002d08b65157014a_bffffffffffffffe_803d08b651570148_00001 +7fd00fffffff7ffe_bfe2000100000000_ffc2120100ff6ffd_00001 +bf090b74581d0095_c340101fffffffff_425924b1e35dcdcf_00001 +c02fbffffff7ffff_41f35be73c03f148_c233352f6d87126b_00001 +3e78df1020787b47_c000000000000000_be88df1020787b47_00000 +3fcffffff8000ffe_db60037fffffffff_db40037ffbff27ff_00001 +c00fffeff7ffffff_366ffffffeffffbe_b68fffeff700003d_00001 +b9960804588bf278_c0dfffefffff0000_3a8607f9548915f2_00001 +3f3ffffc001fffff_c000000000000001_bf4ffffc00200000_00001 +182fffffffffffc0_3fe00000001fffff_18200000001fffdf_00001 +3f10000000000400_47fffffffdffffff_471ffffffe0007ff_00001 +c1c40000000003ff_bc10000000000ffe_3de40000000017fd_00001 +3f300ffff7fffffe_c00fffffffffffff_bf500ffff7fffffd_00001 +b800000200000400_2f9fffffffdffffd_a7b00001fff003fc_00001 +bf50000000100fff_c865677a07e9dbac_47c5677a07ff588d_00001 +b7f000000000013e_3ff0000000002010_b7f000000000214e_00001 +4800203fffffffff_c00ffffffffffffe_c820203ffffffffd_00001 +403bfffbffffffff_bfc00000ffffff00_c00bfffdbfffbe3f_00001 +c340002000004000_c0db3367e0423019_442b339e47125d6b_00001 +c037ff8000000000_c010000000000000_4057ff8000000000_00000 +42c0010000080000_3cd45a0cb459b7b5_3fa45b52552f2a57_00001 +ffdffc0080000000_3fefffffff7fe000_ffdffc007f7ff001_00001 +41d0000000000060_3e3a83b1571e2cf8_401a83b1571e2d98_00001 +ffe00000000002ff_c010000000000001_0000000000000000_00011 +b7e7e7cc88b1f290_c3f2ac81d4039f01_3bebe683ea2b7707_00001 +7ef1fffdffffffff_3f8ff7ffffffdfff_7e91fb7e007fedff_00001 +c06fefffffe00000_7ffc000000000000_7ff8000000000000_00000 +4801000000000fff_c01fffffffffffff_c831000000000ffe_00001 +4f60000801ffffff_41c07fe000000000_51307fe841fffbff_00001 +40faeed5df2a2899_400000ffffefffff_410af084cc6d2c64_00001 +47f90f3fcc527003_c7e01fffbfffffff_cfe9415de7ae15b0_00001 +403fffe000000006_c01ffffffffffffe_c06fffe000000004_00001 +bfe0000020003ffe_bc1ffddfffffffff_3c0ffde03ffc3ff3_00001 +380ff7ffffffefff_d00fff00000000fe_c82ff7003ffff0fd_00001 +380ffffffffc007e_c340000000000000_bb5ffffffffc007e_00000 +2310800003ffffff_661000ffffefffff_4930810803efbffe_00001 +4340004000020000_44c00000008001ff_4810004000820400_00001 +3f3fffe00001ffff_c02008000000ffff_bf7007eff802007d_00001 +c1ffffffbfefffff_c340000000000001_454fffffbff00001_00001 +41d000400000003f_c1dfbfffe0000000_c3bfc07edfff807d_00001 +bfc000020000001f_bfa00800000007fe_3f7008020100081e_00001 +cd5fffffffffe1ff_4dbd2735bcda9589_db2d2735bcda7a33_00001 +c3effffff7ffefff_c34fffffffffffff_474ffffff7ffefff_00001 +3f98000000007fff_41d3af2126b9069b_417d86b1ba162761_00001 +3fc0000fffdfffff_c017d02e9840c356_bfe7d046683fbb38_00001 +c55048c1a2236a7e_bfbffe0001ffffff_452047bd170dd461_00001 +c7ffc0000000003f_c34ffffffffffffe_4b5fc0000000003e_00001 +c002d09cd8fe7e49_c27ff7fbffffffff_4292cbe657b4a38a_00001 +404fff7fffffff7f_48ab7e2aad4ec686_490b7dbcb4a410dd_00001 +3cdbf00000000000_43dffffddffffffe_40cbeffe250fffff_00001 +c35bffffffefffff_ffe0000000000000_034bffffffefffff_00000 +c3fffff5fffffffe_37e910297c4564f4_bbf91021a7386e1c_00001 +995000801fffffff_bfc600a072f928fd_19260150a3fe01ab_00001 +c7fc95c1023be015_38000001fffff7ff_c00c95c494f3f20f_00001 +1250000fbffffffe_ffe0000000000001_d240000fbfffffff_00001 +3f80000003ffffef_40cffffffffdfffe_4060000003feffee_00001 +4806199091f39a3e_3a54f1e8abc46a10_426cee1727f7af20_00001 +401fe00000000000_c3cab4ec3fa6d4eb_c3fa9a3753672e16_00001 +7ffc000000000000_ffefffffffffffff_7ff8000000000000_00000 +38a314b3956389c2_41e4554078c1c962_3a983f8b5796bf4d_00001 +402f800000001ffe_449000ffffe00000_44cf81f7ffc12000_00001 +c1cffffe001ffffe_ffeffffffffffffe_01cffffe001ffffd_00001 +3c00400000000fff_41dfffffbff7ffff_3df03fffdf7bffff_00001 +cbc0001ff7fffffe_d1c2000000001fff_5d920023f7001ffd_00001 +bfcffc1fffffffff_fff0000000000000_7fcffc1fffffffff_00000 +3fafffffffffff0f_c3dffe0400000000_c39ffe03ffffff0f_00001 +c02fffffffffffdd_41ffffffffe7ffff_c23fffffffe7ffdc_00001 +c1c0000003ffffc0_c00fbfffbffffffe_41dfbfffc7efff70_00001 +41e189ea1a6fff97_7ffc000000000000_7ff8000000000000_00000 +bf00000000017fff_402000000017ffff_bf30000000197ffe_00001 +c1cffffffffffffe_c7f03fffff7ffffe_49d03fffff7ffffd_00001 +43d4000000000020_cb9000007ffeffff_cf7400009ffec01e_00001 +3fd4000000000040_7ffc000000000000_7ff8000000000000_00000 +41deeffffffffffe_408096dfffe807a5_427009dd8fe8d363_00001 +d40fffffffefefff_4020000000001ffb_d43ffffffff02ff4_00001 +285fffffb0000000_bcc07ffffbffffff_a5307fffd2c00009_00001 +41dba3c9edc2d856_7ffc000000000000_7ff8000000000000_00000 +c0231e85f8945a25_bf9ffffffff04000_3fd31e85f88af120_00001 +3ff0ee9046c9330f_8479e1e79766e02b_847b63d14ff91acb_00001 +3800000000008002_c34fff800ffffffe_bb5fff801000fffe_00001 +bff00010001ffffe_0000000000000000_0000000000000000_00000 +324824baaf05e670_c02f1d6d391cd812_b28779c88aef6872_00001 +c3ce25f5756217be_beb8de9767c61bc6_42976e2e13caff56_00001 +bec0fffffffffffd_bff000fffbfffffe_3ec1010ffbbffffb_00001 +509ffff800000040_bf800002007fffff_d02ffffc00fefffe_00001 +408fffffffffffff_5f8fbcc496d14669_602fbcc496d14669_00001 +4010002000000006_5e9ffc001fffffff_5ebffc401800400b_00001 +3987fed51dcf1c87_bfb5383498e99ecc_b94fd2c2829010f7_00001 +d2f805130a8c11df_43effffdfdfffffe_d6f8051188ba9004_00001 +a66000000008ffff_b5f63e97ef44abfa_1c663e97ef512f2f_00001 +ffd08000fffffffe_c2e50f943cb3415f_02c5b8122f921f33_00001 +3ca03ffbffffffff_cd52199e0ff31aad_ca02620001cb6319_00001 +402ffffffe07ffff_0010000000000000_004ffffffe07ffff_00000 +361ffffffffffdfb_40451c57126e71b1_36751c57126e705c_00001 +be2fefffffffffff_b81ffffffffffffe_365feffffffffffe_00001 +c80fffffffbfff7f_4b2fffff800001ff_d34fffff7fc0017f_00001 +ba7dffffffffdfff_40138c01af69c4ee_baa2534194731512_00001 +3a90000001020000_c1cffffffffc000f_bc70000001000007_00001 +4f1fffbfffe00000_bcd02000000007ff_cc001fdfbfefe7fe_00001 +bfe0007ffffffeff_001fffffffffffff_8010007ffffffefe_00001 +4047ec41418542a9_bca07e0000000000_bcf8a8a5c3693c15_00001 +3ca0200000000100_c1c00000000ffffd_be702000001020fc_00001 +422007ffffffffff_43dfffff00000003_461007ff7fc00001_00001 +40dfe000003fffff_001ffffffffffffe_010fe000003ffffe_00001 +c02d53f3e871e98f_402000000003f7fe_c05d53f3e8792fde_00001 +41f0000000007bfe_43c07fff80000000_45c07fff80007fde_00001 +abfff80000ffffff_3ca0000000000000_a8aff80000ffffff_00000 +802fffffffffffbf_400ffff7ffffff7f_804ffff7ffffff3e_00001 +be70000077ffffff_c1efffffffffffff_4070000077ffffff_00001 +c1900000000ffff6_c0100000207fffff_41b00000208ffff6_00001 +3ff00000007ffffc_3ca0000000000001_3ca00000007ffffe_00001 +d3ad0f91e5202b24_948ff7fffffffdfe_284d084e00a6e147_00001 +434dfe591d17f337_3801fffffffefffe_3b60df12205c88db_00001 +41e3fffffbfffffe_c3e20000000007ff_c5d67ffffb8009fc_00001 +3549284c3d5f3c48_3cafffffffffffff_3209284c3d5f3c48_00001 +bc1fffdbfffffffe_ffe8492804aa9910_7c18490cb25d93cf_00001 +378fff7fffbfffff_c1f0000000200007_b98fff7fffffff0c_00001 +3fcffffffeffffe0_41300023fffffffe_41100023ff7ffece_00001 +41e1ffffbffffffe_3caffffffffffffe_3ea1ffffbffffffd_00001 +c1ede88c6af5824c_3fdfffff82000000_c1dde88bf531d966_00001 +b81fc00000003ffe_9b07b63efeb2a5b1_133786d280b56fd1_00001 +03909fc2a7ba5daf_3fd0000000000000_03709fc2a7ba5daf_00000 +41cfffbfffffff00_bfc454db14a7766b_c1a454b26af14c79_00001 +2bd2309c71f3442c_43d0000000000009_2fb2309c71f34437_00001 +b81fffffff080000_e6a07fffffff7fff_5ed07fffff7fa000_00001 +c05622dd78e30c7a_3fd0000000000001_c03622dd78e30c7b_00001 +19ba5c173102efbd_c56000000047fffe_9f2a5c1731798e22_00001 +c1e007fffffdffff_36ffffff80008000_b8f007ffbfde401f_00001 +3bbd976272fb1d2a_c06ffff80007fffe_bc3d975b0d29e641_00001 +bfdffffffff00000_3fdfffffffffffff_bfcfffffffefffff_00001 +47ef7ffffffeffff_3f60001fffffffef_475f803efffeffdc_00001 +262fefbfffffffff_7ffc000000000000_7ff8000000000000_00000 +bcafffc007fffffe_bfdffffefffffffe_3c9fffbf0801ffbd_00001 +c3a0000000007ff0_3fdffffffffffffe_c390000000007fee_00001 +bfd00001fffffc00_c1620001fffffffe_4142000440003b7e_00001 +c01100003fffffff_c80ffffefffffbff_4830ffffb7fffbdf_00001 +3ff00000000077fe_b90000000f000000_b90000000f0077fe_00001 +bcac3a797cd8e4f5_3fe0000000000000_bc9c3a797cd8e4f5_00000 +434fff01ffffffff_403dfeffffffffff_439dfe11e7efffff_00001 +c00fffffffc003ff_c03fffffc03ffffe_405fffffc00003fe_00001 +a2d32b1c7c92b19f_3fe0000000000001_a2c32b1c7c92b1a0_00001 +a640000043ffffff_41f00000000fff80_a8400000440fff7f_00001 +3fead93e15f6bba8_41c5006a9bd9854b_41c19eea30ca59a5_00001 +37efffffffff801e_aebffffffffe7fff_a6bffffffffe001d_00001 +3ff0000000107fff_3fefffffffffffff_3ff0000000107fff_00001 +84bffffff0ffffff_3c100040003ffffe_80e0003ff8bfe1fd_00001 +c7f0000007ffffee_bf97fffffbfffffe_4798000007ffffe2_00001 +7dc216346ad00be1_bfb5d37af4d918a8_fd88ac349d895e09_00001 +be6fff7fffffffff_3feffffffffffffe_be6fff7ffffffffd_00001 +bff00000000002ff_3e4b497c09187baf_be4b497c091880cb_00001 +c00ffbffffffbfff_40e000000201ffff_c0fffc0004033f7d_00001 +21f3fe0000000000_bfa7bdef23c7089e_a1adaa732ed451e4_00001 +c0ecb0cf56c6bd69_3ff0000000000000_c0ecb0cf56c6bd69_00000 +c02565653da65c70_402fff7fffeffffe_c065650fa806b322_00001 +43c0004000000003_4eb48be91251fe77_52848c3b41f647c3_00001 +c003310bd2998fff_41e00ff800000000_c1f3443345e64042_00001 +c1dfffdfdfffffff_3ff0000000000001_c1dfffdfe0000000_00001 +c0007a0c6d7de4fd_4e1000400000003e_ce207a4e55af9b34_00001 +41d007ff80000000_41f0fffffffc0000_43d1087f77fbfe01_00001 +c3d0040040000000_3fffffffffffffff_c3e004003fffffff_00001 +3f403ff7ffffffff_3fb911d8e2d1a307_3f097613bd707829_00001 +274fffdffdffffff_c1cff8000000007f_a92ff7e00600807d_00001 +31f2102fde21571e_bf67ffffffff7ffe_b16b1847cd317229_00001 +bff50c7f8469cefb_3ffffffffffffffe_c0050c7f8469cef9_00001 +43dbffffdfffffff_7fefff07fffffffe_03dbff26e000f7fe_00001 +7fdd0802349a67aa_7730000000017fff_371d0802349d2069_00001 +46e0000001fff000_b8007ffdfffffffe_bef07ffe020fef3e_00001 +c56fffffffff7fbf_4000000000000000_c57fffffffff7fbf_00000 +ffeef7a206029708_bdcfa4109a3a5b22_7dce9eaa2542875b_00001 +3fbffffdffffff00_3e2f419626e39c29_3dff419432ca38c1_00001 +43f7dcd3b83b1a38_7fded222c26e4b3d_03e6fbb995be62f0_00001 +a40fc000001ffffe_4000000000000001_a41fc000001fffff_00001 +c0a000000000023f_001bf55a98315677_80cbf55a98315a63_00001 +c802c57786e11b88_402007ffffeffffe_c832ceda4291c69b_00001 +4740000fe0000000_bf5fffffffffdfbf_c6b0000fdfffefdf_00001 +3b50004000040000_400fffffffffffff_3b70004000040000_00001 +fa5fffffffe01ffe_08e4b85713fba238_c354b85713e6fe97_00001 +c3f00800007fffff_3fa6e616c4e16784_c3a6f189d0fb08ec_00001 +3b6ffffffeffffc0_3c7ffffe003ffffe_37fffffdff3fffce_00001 +c0200001fffffbff_400ffffffffffffe_c0400001fffffbfd_00001 +b7e000801ffffffe_376fffffffbfffde_af6000801fdffeec_00001 +bc7c1babdee0743a_7ffc000000000000_7ff8000000000000_00000 +c03fc00000100000_43efdfffffffdffe_c43fa040000fd03e_00001 +434ff7ffffffefff_4010000000000000_436ff7ffffffefff_00000 +2b8a7a8d3c728052_bfa86acb62809317_ab4434482c1fc770_00001 +37e00002000007fe_ffd0008000002000_f7c00082001027fe_00001 +b7ed16be78e120f8_b97fffffffffff9e_317d16be78e1209f_00001 +bfffefffffffff7f_4010000000000001_c01fefffffffff80_00001 +c1d1ffffffbfffff_bfcffffefffff800_41b1ffff6fbffb82_00001 +40a0ffffbfffffff_c80fffffbffffdff_c8c0ffff9dffff6e_00001 +c019377796930508_cf2fffe00007fffe_4f59375e5f21bc52_00001 +3ff006ffffffffff_401fffffffffffff_402006ffffffffff_00001 +43effffdffffdfff_00201fffffffbfff_04201ffefdffafdf_00001 +40107fffffff0000_480ffffffff80003_48307ffffffae002_00001 +43ffc03fffffffff_bffc89ceeec323b9_c40c50f464837af6_00001 +c03847d851769ff3_401ffffffffffffe_c06847d851769ff1_00001 +c7e4cc95b36f21a4_4340000000000000_cb34cc95b36f21a4_00000 +d79f98b4522b366f_3ff0000001010000_d79f98b45426bb3f_00001 +2030000000000090_c05e2e90015c47a1_a09e2e90015c48b0_00001 +380ffff800000000_3fd001fffffff800_37f001fbff7ff801_00001 +bfbfff9fffffffff_4340000000000001_c30fffa000000000_00001 +44dc65e5d161d8f2_7fda6d3e1bb162b2_04c773bceef1605c_00001 +c7f0000007fffeff_43ed0d6b02dfccdb_cbed0d6b11668089_00001 +c7f0000000000a00_434fffffffffffff_cb500000000009ff_00001 +406d4a7b7029484b_c1cfffdfffe00000_c24d4a5e25908da6_00001 +401ffdffffffffde_407ffffffffdffef_40affdfffffdffee_00001 +47efdd469e302de0_b80000000080001e_bfffdd469f2f1850_00001 +c1dfffbffc000000_434ffffffffffffe_c53fffbffbfffffe_00001 +bbf000000007efff_001fe0000007fffe_fc1fe0000017d01c_00001 +43fffffc00100000_c0171459ccff2c1a_c4271456ea7f7ca7_00001 +7ffc000000000000_404ffeffffffdfff_7ff8000000000000_00000 +1d34898549e35148_7fe0000000000000_5d24898549e35148_00000 +c079c96edc9a6761_c1c010007ffffffe_4249e33919c278aa_00001 +3fe04390701a9d8d_32980a64e11ad16b_32886fe96d861b6f_00001 +c7ec000008000000_4020200001ffffff_c81c38000b8fffff_00001 +43cf77ffffffffff_7fe0000000000001_03bf780000000001_00001 +c1dfffffb7fffffe_bf35a1c5c5463803_4125a1c5949a3b06_00001 +4340607d2db01f47_c7effffc00007ffe_cb40607b21a0bb11_00001 +41cae866712069f4_c02fffffffffffff_c20ae866712069f3_00001 +ac6bfffffeffffff_7fefffffffffffff_ec6bfffffefffffe_00001 +c050000000000006_41e0000001000000_c240000001000006_00001 +412fd11c7ab3b025_c3fffbfffbfffffe_c53fcd22532a361d_00001 +7fd83ef8d8c91fd9_20a65e11c2d9c573_6090f291851e0d23_00001 +3fe2ad625e1082e2_7feffffffffffffe_7fe2ad625e1082e1_00001 +4083fffffffffeff_381d4e791b603cf5_38b2510bb11c252e_00001 +402000020000003f_43ffefffc0000000_442ff003bdfff87e_00001 +c02fffc7fffffffe_43d0008000000800_c4100063ff2007fe_00001 +b80000001001ffff_7ff0000000000000_f80000001001ffff_00000 +bfce1e32ccf56348_3ca1f66d4c8eeef3_bc80e7fa025544da_00001 +e6ffffffbfffffff_41d000000005ffff_e8dfffffc00bfffc_00001 +b7fffeffbfffffff_2e8ffffc0003ffff_a69ffefbc02407dd_00001 +3fb000007ffffc00_7ffc000000000000_7ff8000000000000_00000 +bcaffffbffffff7f_bf5000ffffffdffe_3c1000fdffdfdfbe_00001 +c3400008000001ff_4020000fff7ffffe_c3700017ff8801bd_00001 +442ff0000000000f_38100000001ffffc_3c4ff000003fe008_00001 +3fc0001ffffff000_7ffc000000000000_7ff8000000000000_00000 +bffbaf4aab76937a_400004003ffffffe_c00bb636ecde9bc9_00001 +47e099d3c7690936_b17ffdffffffffff_b97098ca2a2c92a4_00001 +ffedfffff0000000_ffeffff000000800_3fedfff0f0000f80_00001 +3fdffffffffbfffd_7ffc000000000000_7ff8000000000000_00000 +d74ffdfffffffffe_41e020001ffffffe_d9401efe1ffdfffc_00001 +bd4512fd478e497e_bc0886e981ed2f8d_39602717421b4cf4_00001 +bf1000000007fff0_381400000000ffff_b7340000000affeb_00001 +c3d0bc37284221aa_8000000000000000_0000000000000000_00000 +bfbf0000000001ff_403f8f9584adf87e_c00e9318d8888ab2_00001 +41e0400000000001_bca0000000010ffe_be9040000001143e_00001 +c008164611e5d5a7_802fffdfffffdfff_0048162dfb9fabab_00001 +95c40000000000ff_c07103ffffffffff_164545000000010e_00001 +37effffc3ffffffe_bca0fffffffffffd_b4a0fffe01fffffb_00001 +a2900000009fffff_b8c85070bbd9c196_1b685070bccce5fc_00001 +c1ee1fffffffffff_4110000003dfffff_c30e2000074bbffd_00001 +3ffffffffc200000_6b9fffffffdfffe0_6baffffffbffffe1_00001 +bfe3e01e845582e7_b6c009ffffffffff_36b3ec8a97683858_00001 +40568df4bf71d4de_41dffeffffffff7f_42468d404fcbd8f5_00001 +b7e0004000001fff_ecb0008000000007_64a000c002002008_00001 +c0386508df251ee3_8010000000000000_00586508df251ee3_00000 +7fd003ffffffffff_41c007fffffbffff_01a00c01fffbfefe_00001 +403fffdfffffff00_db02020000000000_db5201edfdffff6f_00001 +bc950a021bf9dee1_3db0001fffdffffe_ba550a2c2fd402cd_00001 +41c0400000000007_8010000000000001_81e0400000000008_00001 +3e90007ffffffdff_4263a6b86ea9d367_4103a755a46d4640_00001 +c000000001008000_3fafff8000200000_bfbfff800220f7fc_00001 +c01ffffffefffdff_384ffff800100000_b87ffff7ff0ffe3f_00001 +c7eb8b600079a271_801fffffffffffff_081b8b600079a271_00001 +4001ffffffffffff_c6d00003fffffbff_c6e200047ffffb7d_00001 +c01fd3d6f52fa881_2c3fffeff7ffffff_ac6fd3c7034f382a_00001 +2e3403fffffffffe_c7fffffeffffffbf_b64403ff5fdfffd5_00001 +47efffffffffefc0_18b03fffffffffff_20b03ffffffff7bf_00001 +fd4fffffdfffffef_41cffffdffffffef_ff2ffffde00001de_00001 +4a0ff80000800000_c3403f829e8acc09_cd603b72be242760_00001 +c7e0010000003fff_bca0000000000000_4490010000003fff_00000 +3f7e00003fffffff_403ffffffdfbffff_3fce00003e1c3ffb_00001 +40100010007fffff_b7e00001ffffffff_b80000120082000d_00001 +7c8ffffffbffffbf_bfe1ff8000000000_fc81ff7ffdc00fdb_00001 +418ffffe0fffffff_bca0000000000001_be3ffffe10000000_00001 +43cb7d45e24373f9_bf559488d625deb3_c33289cecc120933_00001 +3fe0000100ffffff_c03ffffffffef7ff_c030000100ff7bfe_00001 +bcafffffffffff82_c1e001000000003f_3ea0010000000000_00001 +bfc00000004007ff_bcafffffffffffff_3c800000004007ff_00001 +7ffc000000000000_7ffc000000000000_7ff8000000000000_00000 +37ee08352ef09dd4_2604d5494204c82f_1e038d4ca00591eb_00001 +b80f00ffffffffff_401ffffffff800ff_b83f00fffff840b6_00001 +32bfffffffff0002_bcaffffffffffffe_af7fffffffff0000_00001 +434fffffffbffeff_c34fffffdffffff0_c6afffffdfbffeef_00001 +7fdffffdfdffffff_403ff3fffffffffe_002ff3fdfec0bffe_00001 +47eda330abe8cbed_43dd1adeb484ff45_4bdaf4c6f6a96df0_00001 +bf4526d7f8d80bd7_bfd0000000000000_3f2526d7f8d80bd7_00000 +3190000020000007_ffef800010000000_f18f80004f00002d_00001 +c009130b80fe8274_b811571307061a38_382b2cb1993b60f3_00001 +c3413ffffffffffe_bdf7ab1d79033080_4149847bc6777048_00001 +b8000020000ffffe_bfd0000000000001_37e0002000100000_00001 +3fb0020000020000_4640040000000007_4600060080020088_00001 +e17d0c35c0de73a1_63185843aaa354bd_84a6194750eee6f6_00001 +80200000000000fe_bfdfffffffffffff_00100000000000fe_00001 +aefffffffc000003_3fc186e2c19646d9_aed186e2bf656a82_00001 +c01fff5fffffffff_bfafff7fffffbfff_3fdffee0027fc000_00001 +b818000000000001_b7f1d3f763b137ef_301abdf31589d3e8_00001 +001ffff7ffffff7f_c7e000010000003e_880ffff9ffff7ffa_00001 +c0600000ffffffdf_7feda1b8c591f9c6_805da1ba9fad85e2_00001 +c1320001ffffffff_3ff4000000000004_c136800280000003_00001 +41e001ffffffffff_bfe0000000000000_c1d001ffffffffff_00000 +802ffc0000000008_7ffc000000000000_7ff8000000000000_00000 +343ffffff007fffe_c3d000007ffffdff_b82000007803fdbe_00001 +3fc0003fffffffbf_bfe0000000000001_bfb0003fffffffc0_00001 +b81003effffffffe_ad7c04f924d58101_259c0bde5e259189_00001 +43507fffdfffffff_41c00003f7fffffe_45208003f7bff80d_00001 +bffffffffffffff0_5d4ffd0000000000_dd5ffcfffffffff0_00001 +48bffffbffffffff_bfefffffffffffff_c8bffffbfffffffe_00001 +c1e4af3f8d45e031_3ca0020002000000_be94b1d577cd70de_00001 +802fffffff7fdfff_cfaffff7ffff8000_0feffff7ff7f6020_00001 +37f0000003fffffd_a91000100001ffff_a1100010040203fc_00001 +7ffc000000000000_bfeffffffffffffe_7ff8000000000000_00000 +8f5fffffffffffff_311ffffbbfffffff_808ffffbbffffffe_00001 +402fffffffffdfdf_802ffffffe0007ff_806ffffffdffe7de_00001 +4020000080000040_4010a7a91ae0c98e_4040a7a9a01e12a8_00001 +3feffffffe000002_bff0000000000000_bfeffffffe000002_00000 +c02e000000008000_c57001ffffffff7e_45ae03c000007f1d_00001 +3fcfa39599be7563_638f800000001ffe_636f250743579b30_00001 +3800008100000000_b810000020000080_b020008120010280_00001 +3caffff000000007_bff0000000000001_bcaffff000000008_00001 +0a0eb920723db732_41a17037c319dc53_0bc0be16b7c15790_00001 +bfdffffffe000006_ac64ffffffffffff_2c54fffffeb00003_00001 +cbc000000008007e_bfffffffffffffff_4bd000000008007e_00001 +bfce00000007ffff_bf19713ef8574e3d_3ef7da2b08d835a9_00001 +f27fffffffffcffe_c67ff7fffffdffff_790ff7fffffdd00a_00001 +001effffffffe000_a780000200000000_e7af0003dfffdfff_00001 +4809b2aa55e663c2_bffffffffffffffe_c819b2aa55e663c0_00001 +c02fffffbfffffde_c1d000000001fbff_420fffffc003f7dc_00001 +372ff00000003fff_7fe000fdfffffffe_771ff1fb02003fff_00001 +c7ebfffffbffffff_560000000003fff8_ddfbfffffc06fff0_00001 +40000000000001ff_c000000000000000_c0100000000001ff_00000 +085fffff80007ffe_402a11bb3168c296_089a11bac9223e16_00001 +c1e62ef8919f035d_b2a0001000000002_34962f0ec09794ff_00001 +c3c0010000fffffe_683dfffffffffbff_ec0e01e001dffbfa_00001 +c3900fffffffe000_c000000000000001_43a00fffffffe002_00001 +c1e1fff7ffffffff_2250000003fffff7_a441fff8047ffdf4_00001 +bee007fffffffffa_435001001ffffffe_c2400900a00ffff7_00001 +3ca000000000000e_41df7ffffffbffff_3e8f7ffffffc001b_00001 +47d00021fffffffe_c00fffffffffffff_c7f00021fffffffd_00001 +c80978bafcce324c_3fcffffffffbffdf_c7e978bafccb031a_00001 +3fdc7fffffffffff_c7ffffffffff6ffe_c7ec7fffffff7fbd_00001 +b7e625be6b6b5de6_c0103fff00000000_38067e5402bd24a7_00001 +401e4ea4f33af325_c00ffffffffffffe_c03e4ea4f33af323_00001 +bca0000011000000_43dfffdffffffe00_c08fffe021ffdbff_00001 +bca47e03cc211f1d_c3c0040000000ffe_407483234d143be1_00001 +cd00001fffffffbf_7ffc000000000000_7ff8000000000000_00000 +3ee889b636e67325_c010000000000000_bf0889b636e67325_00000 +c3fa207d4382d6f3_4000007ffffdfffe_c40a214e4769aef6_00001 +bfbc9ea0c2b4884b_43f4a552574073d5_c3c277000b21a4e7_00001 +bf0c000080000000_c64ffffffffffc1f_456c00007ffffc9c_00001 +c2a0000000000101_c010000000000001_42c0000000000103_00001 +8341000001fffffe_c3407ffffffffffd_06918800020ffffb_00001 +7ffc000000000000_4720000780000000_7ff8000000000000_00000 +c1a0001000001000_c803d295a14dc259_49b3d2a973e3777a_00001 +b3d757f4aa26587e_c01fffffffffffff_340757f4aa26587e_00001 +37fffffffffff5ff_a190000080001ffe_99a0000080001afd_00001 +c0095ffaae004771_bff0040100000000_4009665442ab7263_00001 +4030000003ffffdf_c33fffffffff1fff_c380000003ff8fde_00001 +bf1fe0000000ffff_c01ffffffffffffe_3f4fe0000000fffe_00001 +3e3f7fffffbffffe_c324000000800000_c173b0000055fffe_00001 +3ca5ec40d9224e50_c3100003ffff0000_bfc5ec46543125d4_00001 +b7ef8000000ffffe_b7e000000000007b_2fdf8000001000f1_00001 +c03c99226bab2fdf_c340000000000000_438c99226bab2fdf_00000 +c0d0000000800040_b813260f6e05d589_38f3260f6e9f0652_00001 +bf10000004000003_be5efffffffdffff_3d7f000007be0005_00001 +41f0000080000007_c01bfffffbffffff_c21c0000dbffffeb_00001 +9239ba76a05ecbd7_c340000000000001_1589ba76a05ecbd9_00001 +47bb47c5d4f98afd_bfd00000004001fe_c79b47c5d566ad79_00001 +41ffffffff7ffffb_0027ffffffffeffe_0237ffffff9feffb_00001 +dd2003fff7ffffff_46ffffffeffffeff_e43003ffeffdff82_00001 +3faffffb7ffffffe_c34fffffffffffff_c30ffffb7ffffffd_00001 +c02f080000000000_7fe0000020100000_801f08003e2f0800_00000 +4020080ffffffffe_b8107b8a10fe7835_b84083d85191086d_00001 +3810008000000fff_bffd243f1bcee286_b81d25283dc7de1f_00001 +c8060448957c7df4_c34ffffffffffffe_4b660448957c7df3_00001 +48000000fffdffff_bfeffffff7efffff_c8000000fbf5ffbe_00001 +46700000003ffff7_c1f403b660b099b6_c87403b66100a884_00001 +3e3fffffeffffffa_b80e1fffffffffff_b65e1ffff0effff9_00001 +c7e040000fffffff_ffe0000000000000_07d040000fffffff_00000 +c00fffffffefffdf_41e0000000000000_c1ffffffffefffdf_00000 +c0107fffffffffdf_3ff8ba6f4e5ae4ee_c0198042c8cdbbe2_00001 +c1df80007fffffff_3c7ffff7ffff7ffe_be6f7ff89fff61fd_00001 +c34ffff7feffffff_ffe0000000000001_033ffff7ff000001_00001 +2d594c653e03ade2_c3e000003fffc000_b1494c65a334dda8_00001 +b800001ffe000000_bfde924b4ffe25d9_37ee928870c27c6c_00001 +c049124f686bf9b3_b7f000fffffff000_384913e08d626761_00001 +ffdffffffffdffff_ffefffffffffffff_3fdffffffffdffff_00001 +ffd00400000000ff_c0ada76631d3f698_008daed00b606d6f_00001 +7ffc000000000000_3fe0000ffffff7ff_7ff8000000000000_00000 +4020c540619836fa_c7f000ffefffffff_c820c64ca4d9101a_00001 +4364893437d666c6_ffeffffffffffffe_8364893437d666c4_00001 +c1cfe0000000ffff_c1d0000080400000_43afe000ff808000_00001 +bd70000fff7ffffe_291fffffe0000010_a6a0000fef7ff006_00001 +c1f20000000001ff_4012001fffffffff_c21440240000023d_00001 +b80fffffffbfdfff_fff0000000000000_780fffffffbfdfff_00000 +ffe000200000ffff_7ffc000000000000_7ff8000000000000_00000 +401650b0af16768d_be1001fe00000000_be365377fb164379_00001 +3f9000008000ffff_bfdffffffe000100_bf8000007f010076_00001 +c1effc1fffffffff_7ffc000000000000_7ff8000000000000_00000 +05d7728ced9039cb_c1eeffffff7fffff_87d6b6f885c5edc8_00001 +39a5106aa3a32bb8_bf1000fffffff7fe_b8c511bbaa4d5b5f_00001 +4070001ffffbfffe_c7e00000080ffffe_c8600020080c101b_00001 +c01fffffffff0080_7ffc000000000000_7ff8000000000000_00000 +c97ffffffff00ffe_c3c002000000000f_4d5001fffff8070f_00001 +3fe6ef3744bfe08c_4000000050000000_3ff6ef37b76bf4e4_00001 +c79feffffffeffff_42b040000000ffff_ca6037e000007d7e_00001 +47f03ffffffdffff_7ffc000000000000_7ff8000000000000_00000 +3fbff0000fffffff_bfd007fffffeffff_bf9ffff8100600fc_00001 +c0d000000001ffbf_c03ba46e644e4e9c_411ba46e6451c2ba_00001 +48000000401fffff_c3efffffbfff7fff_cc000000201fbf7e_00001 +380ffffffeffffff_b7efff00007fffff_b00ffeffff8007fd_00001 +3fefffff0000007f_41c0080fffffffff_41c0080f7fbf803f_00001 +8010e080b96f5390_c1c0000fffffefff_01e0e09199effc1e_00001 +47ffffffffffffdd_bfa080000000000f_c7b07ffffffffffc_00001 +480dfffffff7ffff_bfbffffffc0003ff_c7ddfffffc3803be_00001 +3fc0000000007efe_c3eea93f38dfa88a_c3bea93f38e09be5_00001 +4683fff7ffffffff_bfbfffdfffffffe0_c653ffe40007ffeb_00001 +3fefffffffe003fe_381b9635176eb14a_381b963517531e86_00001 +c4500000005fffff_c03a20ab4de47fc9_449a20ab4e8143cc_00001 +38101ffffefffffe_bfc3fffff0000000_b7e427ffee9ffffe_00001 +bfeffffffffdffde_7ffc000000000000_7ff8000000000000_00000 +4710003bfffffffe_0010000000000000_0730003bfffffffe_00000 +448c88eae42cd15d_c7e00000001dffff_cc7c88eae4625213_00001 +b810bffffffffffe_bfdfffff8000ffff_3800bfffbd0085fe_00001 +c030588b5c2ae8f5_bef5ba5fd85a7448_3f36329e27cafa0d_00001 +2a8ffff000007ffe_3e0ffff800004000_28afffe80004bffe_00001 +456f400000000000_924ffffffbffdfff_97cf3ffffc17e0bf_00001 +47f000001fffffdf_480fffff7fefffff_500fffffbfeffebd_00001 +400e00000000007e_001fffffffffffff_003e00000000007e_00001 +c1e1a9bf123eaa3f_ffefffff7ffff7ff_01e1a9becb97a98c_00001 +7b70000081fffffe_bf904000000003fe_fb104000840803fb_00001 +b810100200000000_37effffcffffffff_b01010007e7fcfff_00001 +c3bfffffff780000_001ffffffffffffe_83efffffff77fffe_00001 +be7ffc2000000000_c100000000060000_3f8ffc20000bfe8c_00000 +8020000000000ffb_47f000000080003f_882000000080103a_00001 +381300ec5ae729a0_c0c3975208fc137b_b8e744d2d1f394c2_00001 +40cffffffff80ffe_3ca0000000000000_3d7ffffffff80ffe_00000 +47effffebffffffe_bf936fbdb3967862_c7936fbcf1390f5c_00001 +45a01fffff7fffff_c3c0020200000000_c9702206037fefee_00001 +38cffff800003fff_3f80011fffffffff_3860011bffb82001_00001 +bfcfffffffffc01f_3ca0000000000001_bc7fffffffffc020_00001 +4020000010040000_c03000000207fffe_c0600000120c0000_00001 +bc9fffbfff7fffff_c1d0000003ffff80_3e7fffc0077feeff_00001 +43fffffe0001fffe_b16080003ffffffe_b5707fff380103fc_00001 +3fdfddbc012dea56_3cafffffffffffff_3c9fddbc012dea56_00001 +434352c905da85ec_7fd0000020000001_032352c92c8017f9_00001 +b2cfffffffbfff80_c0afffff7fffffff_338fffff7fbfff81_00001 +c06ffffffdfffff0_443f000000001000_c4befffffe100ff0_00001 +3e8ff800000000ff_3caffffffffffffe_3b4ff800000000fe_00001 +bffffffffffff007_400c899bdf7fd714_c01c899bdf7fc8d5_00001 +c5c1368ba271b92a_b811ffcdc1bd41c6_3de35d27095069f1_00001 +6480000100080000_c3cca35dae1517d8_e85ca35f78594468_00001 +c1d00000000083ff_3fd0000000000000_c1b00000000083ff_00000 +403bd37b5f01600f_40110003fffffffe_405d90ba09d04dcd_00001 +409000003fff0000_c020fffffffffffc_c0c1000043feeffb_00001 +fe6000100007fffe_bd6feffffffc0000_7bdff01ff00bf7f9_00001 +7fe00000007c0000_3fd0000000000001_7fc00000007c0002_00001 +401ffffffffff800_c020000000000300_c04ffffffffffdff_00001 +be004000000007fe_3fdffff7ff7fffff_bdf03ffbefbf07fd_00001 +43d00000003efffe_c02fffffafffffff_c40fffffb07dfff9_00001 +203000000001fbff_3fdfffffffffffff_202000000001fbff_00001 +30feffffffffefff_5137a780ee1f0e89_4246ea44e6ae0a41_00001 +c3cc00000000001f_3ffffff8003fffff_c3dbfff90038001e_00001 +401fe0000003fffe_3fa47c191d152036_3fd4679d03fa9a98_00001 +b1c0001fff7fffff_3fdffffffffffffe_b1b0001fff7ffffd_00001 +c0035f74d9e4a66e_c1c000800000003f_41d3600fd58b75e0_00001 +402fe04a50d62ff8_bfc0018000000000_bfffe34757cdc40c_00001 +47f08000007ffffe_ee9effffffffffff_f69ff80000f7fffb_00001 +b11000007ffffe00_3fe0000000000000_b10000007ffffe00_00000 +c00000401ffffffe_3fdfffffbfdfffff_bff0003fffef7f7d_00001 +7fdfebffffffffff_4fafffffffffff7d_0f9febffffffff7d_00001 +00300000bfffffff_c025ac1ab7310df3_8065ac1bbb424e87_00001 +bfe400001fffffff_3fe0000000000001_bfd4000020000000_00001 +ffe0001000000000_b4c3fffffffbffff_74b40013fffbfffb_00001 +41800000007ffbff_41ccce2758e7ac2f_435cce2759ce1635_00001 +c3ce000000000002_43c88b83def64702_c7a702cba106e293_00001 +0020003ffffff800_3fefffffffffffff_0020003ffffff800_00001 +402ff87ffffffffe_ab9f7ffffdffffff_abdf789dfe0077fd_00001 +b80cef50bd17db40_c05fffc00000000e_387cef16de76611d_00001 +41d0080000fffffe_381000ffffffff7f_39f0090081000f7d_00001 +47effffffdfffbff_3feffffffffffffe_47effffffdfffbfe_00001 +c7e46b2ebd63014a_bec00003feffffff_46b46b33d6e7fdb6_00001 +bf80040000000002_3ccffff5ffffffff_bc6003fafec00001_00001 +3ecfff8008000000_3ff0000000000000_3ecfff8008000000_00000 +3810410000000000_3ef621b8ce00723b_37167ba1ccc5540c_00001 +c3d6e92ed3061ec0_bfb3ffffffffffff_439ca37a87c7a66f_00001 +3fb0080000100000_bfbff00000003fff_bf7ffff80020301e_00001 +a5a7fffffffffffe_3ff0000000000001_a5a7ffffffffffff_00001 +3d4000ffffffffff_3d47f68d8eb6b9a4_3a97f80cf78fa50f_00001 +c16ff80001fffffe_c1dffffffffffdfc_435ff80001fffdfb_00001 +b81f000000003fff_4000000000001000_b82f000000005eff_00001 +3fdb6c04a6feb9f6_3fffffffffffffff_3feb6c04a6feb9f6_00001 +3fed24f6ded74376_cc7ffffffdffffef_cc7d24f6dd04f3f8_00001 +c01000000002003e_c02f044788fbab9f_404f044788ff8ca1_00001 +c02d8271a41fe6f3_47ffffffff600000_c83d8271a38c5aba_00001 +c7eed2778ed7be16_3ffffffffffffffe_c7fed2778ed7be14_00001 +c1fb827b7979160a_3fcbb9627f4399d0_c1d7d57735568a19_00001 +404ffffff0200000_c1cde621665f3871_c22de621578a0ddf_00001 +ffe3fffffffffffb_c03dc3321aaa5380_003299ff50aa742c_00001 +bfb0000ffffffe00_4000000000000000_bfc0000ffffffe00_00000 +43d00000000efffe_402ffeffffffffff_440fff00001dff0c_00001 +bfb000003fbffffe_79110003ffffffff_f8d1000443bc0fec_00001 +bf800000ffffefff_c7f000000107ffff_478000010107f00f_00001 +c04000000000801f_4000000000000001_c050000000008020_00001 +b8000000001fffff_3fcefffffbffffff_b7defffffc3dfffd_00001 +bfcffffdffffbfff_c16907618a99b2b2_4149075ffa2367f9_00001 +c7efffffdffffffc_400fffffffffffff_c80fffffdffffffb_00001 +40440a2b86699a62_bdfffa0000000000_be5406699e406695_00001 +3ca3fffffffffeff_bf02ffafb4e9241d_bbb7bf9ba2236bf3_00001 +862000000000807f_402007ffffffff80_865008000000803f_00001 +b8c0000037ffffff_400ffffffffffffe_b8e0000037fffffd_00001 +3f70002000000fff_be501ffdfffffffe_bdd0201e3ffc101c_00001 +433fffffffefff80_41dffffdfbffffff_452ffffdfbefff81_00001 +401feffdffffffff_7fd0000000000103_7fefffffffffffff_00101 +3fe003fffffdffff_4010000000000000_400003fffffdffff_00000 +c3e6c4abfbae3348_c3dffbfffdfffffe_47d6c1d364c272c1_00001 +41defffffefffffe_c01fffffffffe004_c20efffffeffe101_00001 +cf7fffffff87ffff_4010000000000001_cf9fffffff880000_00001 +53598c812c3c39dd_3f20000100fffffe_52898c82c69d14b1_00001 +c02f00000003ffff_c00814fbd82d4e31_40475453f96ee65f_00001 +3fbabd40046f3063_959ffc00000fffff_956ab9e85c7c011c_00001 +801010007ffffffe_401fffffffffffff_804010007ffffffd_00001 +359ddddaad68456b_b8000000fdfffffe_adaddddc878a34e8_00001 +c3c90596ea75d9c9_40c730520dce2fe8_c4a221cd04029cdd_00001 +3ff0000000000000_bffbffffffffdfff_bffbffffffffdfff_00000 +3ca4001000000000_401ffffffffffffe_3cd4000fffffffff_00001 +c1cfe7ffffffffff_c0c7dd56f5c5966e_42a7cb70f48d423d_00001 +bfcc298ec1c2e8e2_4010201000000000_bfec61fe08d53076_00001 +c3dffffff8000001_3fe0020000003ffe_c3d001fffbffbffe_00001 +b81a1948cf487bc6_4340000000000000_bb6a1948cf487bc6_00000 +7fe20fffffffffff_3d90000000000007_7d82100000000007_00001 +316ffffffffc0003_47f001fefffffffe_397001fefffdffc0_00001 +40b49d4b49693e4c_3f9fe0000001ffff_406488adfe211ee2_00001 +3f5fffff7ffdffff_4340000000000001_42afffff7ffe0001_00001 +c03ffffffd000000_bb8df851d942ba18_3bddf851d673726c_00001 +bfca6a374638a9a7_3694000003fffffe_b67082628f30b0ef_00001 +402ffffbffffff7f_4800080fffffffff_4840080dfefdffbf_00001 +c0c000000001fffd_434fffffffffffff_c42000000001fffc_00001 +7ba00800003fffff_3ff9a9a129c791b3_7ba9b675fac31bff_00001 +4517d68d04fb3028_f67973648aee082d_fba2f5941ca565da_00001 +5bbfffffbfff7fff_3f9fffff7ffffffc_5b6fffff3fff80fc_00001 +41f9b338f2e03e52_434ffffffffffffe_4559b338f2e03e51_00001 +b7e0880000000000_c8500400001ffffe_40408c2200210ffe_00001 +401f7fffffffe000_4110000003f7ffff_413f800007d01fff_00001 +41d001000000ffff_bfe000fbfffffffe_c1c001fc0fc1000c_00001 +38000000008001ff_305ffffdfffffffb_286ffffe010003e9_00001 +38143510168bb69f_bc6ffeffffefffff_b494346e6e00e7b8_00001 +c06400000000000e_bd00000ffffffdff_3d740013fffffd8d_00001 +c3d0000fffffffef_7fe0000000000001_83c0000ffffffff0_00001 +3f607efffffffffe_c3effeffbfffffff_c3607e7be701fffd_00001 +bfff00000000007f_b57f6f93eb9411db_358e74174c3771c9_00001 +3fc000400007ffff_bfb0000000fdffff_bf800040010603f6_00001 +c020007fdfffffff_7fefffffffffffff_8020007fdffffffe_00001 +bf958caed0772f21_3fdffffff0000fff_bf858caec5b0e27e_00001 +413fffffffffffbe_c009e266b690362d_c159e266b69035f7_00001 +bfedfffffffffffc_7feffffffffffffe_ffedfffffffffffa_00001 +57cfffffdfffffdf_a1b0007fffefffff_b990007fefef7fee_00001 +402fffff5fffffff_c2f007bfffffffff_c33007bfafd93ffe_00001 +c34f80001fffffff_b7fffffe0007ffff_3b5f7ffe2807ddff_00001 +41d04000007fffff_7ff0000000000000_01d04000007fffff_00000 +bfa03ffff7ffffff_c3dfbffffffffeff_43901f7ff80fff7d_00001 +a000000000000fff_c7e07f0000000000_27f07f000000107e_00001 +bfe00020000003ff_3fbffffff7fffdfe_bfb0001ffbfffafd_00001 +c030000001ffff7f_7ffc000000000000_7ff8000000000000_00000 +c3fb7e9782f90cc2_bca0800000004000_40ac5a8c3f114323_00001 +c1df2a4105eef916_c34fffffffffffe3_453f2a4105eef8fa_00001 +7df000400000007e_bfdfffdffffdfffe_fde0002fffbf0078_00001 +40c794dd327440fd_7ffc000000000000_7ff8000000000000_00000 +0010000000001ff8_4800020000010000_0820020000011ffc_00001 +c3c00007fffffefe_3fcffbfffffffffe_c39ffc0ffdfffdfa_00001 +2510000000000700_bff00004000007fe_a510000400000efe_00001 +43d3fffffffc0000_7ffc000000000000_7ff8000000000000_00000 +4d8ffbdfffffffff_bca03ffffffffff6_ca403de7bffffff5_00001 +97ead859955088eb_4a6d12c61bd00359_a26863d113b451ef_00001 +bfd1fffdfffffffe_8640000007fdffff_0621fffe08fdbefe_00001 +07cfffff0000ffff_8000000000000000_0000000000000000_00000 +434000003fffbfff_d29ffffffc7ffffe_d5f000003e3fbff7_00001 +c346f4237b7cbfe9_471000000000006f_ca66f4237b7cc088_00001 +2c4c0000003fffff_230ffffc00400000_0f6bfffc8077fff8_00001 +3fc4400000000000_43cc71fdbb55b450_43a20022908c3c1b_00001 +bdeffbfffff7fffe_403000000000dfff_be2ffbfffff9bfc4_00001 +c020001001000000_c34ec9a95e5b23e2_437ec9c829f11cd4_00001 +c3d7fffffffdffff_c01ff7feffffffff_4407f9ff3ffe007f_00001 +b245df5ba33a7f85_40100000004003ff_b265df5ba392026a_00001 +c06000007fffff7f_43eff90000000000_c45ff900ffc7fefe_00001 +c18ffc00000fffff_7ffc000000000000_7ff8000000000000_00000 +c0f1fffffffff000_429effffdfffffff_c3a16fffedfff07f_00001 +3c8000000bffffff_c52fff0000400000_c1bfff00183f3ffe_00001 +381fffffffbff7fe_8010000000000000_f83fffffffbff7fe_00000 +002ffffff0003fff_3ff000008000003f_0030000078001fff_00001 +b7fca13a9dbf49e7_bfe80000000001ff_37f578ebf64f7937_00001 +47e000000800003e_bfc080003ffffffe_c7b080004840005d_00001 +8b3ffc2000000000_7ffc000000000000_7ff8000000000000_00000 +4120001fff800000_7ffc000000000000_7ff8000000000000_00000 +517000001fff7ffe_c1cf000000003ffe_d34f00003dff47fa_00001 +380e000000000010_801fffffffffffff_f83e00000000000f_00001 +41168636954ae162_bfec00000001fffe_c113b56fc2a2ed97_00001 +330e000100000000_43ee0000000001ff_370c2000f00001e0_00001 +802d3018ea8c241d_c007fdffffffffff_0045e23fae5a7253_00001 +bffc505cc8a6e8ea_801ffffffffffffe_002c505cc8a6e8e9_00001 +bfbff8000001ffff_3acffffffff00000_ba9ff7fffff203fe_00001 +c80000001ffffbfe_3e40880000000000_c6508800210ffbdb_00001 +43d0080000000004_bca0000000000000_c080080000000004_00000 +41367c708f592990_c00a5078d45675b0_c1527da775ba1512_00001 +c3474f322c53fb6a_4c386ada422df8a5_cf91c93af32c74b4_00001 +41dffffff00003fe_bca0000000000001_be8ffffff00003ff_00001 +41f0000001fdffff_5ff53ac9cf7cf6c8_61f53ac9d221a8a8_00001 +3fb000001fffff7e_3ffbad41f232c7b1_3fbbad42298d4ab5_00001 +43e047fffffffffe_4000003ffdfffffe_43f048411df6fffc_00001 +bf9e000002000000_bcafffffffffffff_3c5e000002000000_00001 +c53fffffff77ffff_c05ffe000000003e_45affdffff7808be_00001 +c1cffffffffffe1f_717000005fffffff_f35000005fffff0e_00001 +402000003ffffbff_403000001f800000_406000005f7ffc7d_00001 +c039d0b1184126b6_06ad12e793d72c70_86f77460b35b5a57_00001 +c048000000000000_434000000800003e_c39800000c00005d_00000 +c06fc00001ffffff_0ec040faf47bd51e_8f402078ff96ed22_00001 +bf87ffffff7fffff_bfd0000000000000_3f67ffffff7fffff_00000 +bc70000200001fff_bf29fffffffffffe_3baa0003400033fd_00001 +c000005fffffffff_403ffffffff00002_c050005ffff7ffd0_00001 +45f00017fffffffe_47f2f5abbf28ad12_4df2f5c82faa4bcd_00001 +0dd00000000fffff_bfd0000000000001_8db0000000100000_00001 +bf0d45dab53a65b8_380fff7ffffffffe_b72d45659dcf90cc_00001 +7ffc000000000000_bfdeba273f5031a6_7ff8000000000000_00000 +7fdffffffffffdfc_3cd000008000001e_7cc000007fffff1c_00001 +a0bffffdfefffffe_bfdfffffffffffff_20affffdfefffffe_00001 +3feffff80000001e_c3dffff802000000_c3dffff00201ff9d_00001 +401bb79c251f0d03_bbfdf1012672bca6_bc29ef2550a601bc_00001 +ffdfffffc000000f_22efffffff0001ff_e2dfffffbf00020f_00001 +3fc8b60e46a80f6d_bfdffffffffffffe_bfb8b60e46a80f6b_00001 +4141058dae2059c1_bf9fffff0003ffff_c0f1058d25f60d01_00001 +ca3326c13bfeba24_bfe0000000000000_4a2326c13bfeba24_00000 +b53bffffffffc000_43cfffffffffefdf_b91bffffffffb1e3_00001 +b4f0000020ffffff_40095713ee956d23_b509571422d9063d_00001 +c0200001e0000000_bfe0000000000001_40100001e0000002_00001 +41c00080000000ff_40c000000000083f_429000800000093f_00001 +7d501ff7ffffffff_bff0000004000400_fd501ff804080206_00001 +c0cfeffffffffffe_4010ffffffffffde_c0f0f77fffffffdd_00001 +bfc06d169113d091_bfefffffffffffff_3fc06d169113d091_00001 +bd5fdffdffffffff_5644b72ace1bbb6b_d3b4a27257daf2cd_00001 +381ffff7ffffeffe_bf80003fffffe000_b7b0003bffefd7fe_00001 +3dc000000ffbffff_41c68f9b37c7034c_3f968f9b4e50fa9c_00001 +c7ffffffdf800000_bfeffffffffffffe_47ffffffdf7fffff_00001 +bfe0000000001000_bf3ffe00000001ff_3f2ffe00000021fe_00001 +380a8e204e2cb7dd_7fdfffcfffffffff_77fa8df878fc429a_00001 +bf8f000000000100_c29ffffffff04000_423efffffff0bf00_00001 +330fc7fffffffffe_bff0000000000000_b30fc7fffffffffe_00000 +41f0000000003ffe_c1d800000000000e_c3d800000000600b_00001 +c1e676ed17a50125_be900000000fefff_408676ed17bb619a_00001 +b80010001fffffff_40e01ffffff7fffe_b8f030202037f7fc_00001 +c020000000000000_bff0000000000001_4020000000000001_00000 +486007fffffffdff_3ca000003fc00000_451008003fdfddff_00001 +b81ffffffffff0fe_ba0dfffffbfffffe_323dfffffbfff1ed_00001 +205043ffffffffff_7ffc000000000000_7ff8000000000000_00000 +3ffffffdfffffff8_bfffffffffffffff_c00ffffdfffffff7_00001 +3fefffffffff7dff_3a6000040ffffffe_3a6000040fffbefe_00001 +401bffffeffffffe_b7fc497e1cedf965_b828c04e4b2b7b28_00001 +c34fff0000007fff_bffffffffffffffe_435fff0000007ffe_00001 +3fbfc000fffffffe_bff0000040007ffe_bfbfc0017f0101fa_00001 +407000003ffbfffe_38042862fe8e3368_388428634f2ab547_00001 +40f000000ff00000_c1effffff0003fff_c2f0000007f01ff7_00001 +c3dffffffff77ffe_c000000000000000_43effffffff77ffe_00000 +b811814b7ef464dc_fa807ffffbfffffe_72a20d55d68bb521_00001 +37efffffffe3fffe_3fe000000000001b_37dfffffffe40034_00001 +c010000001000004_c0000020001ffffe_4020002001200203_00001 +ca200000400007ff_c000000000000001_4a30000040000801_00001 +3f8fff7ffffefffe_3fb000000087ffff_3f4fff80010efbbc_00001 +3fd0008000007fff_c1c7099afc03c81c_c1a70a5348dc6085_00001 +c3f000000fdfffff_3ffd2e23653e84e9_c3fd2e2382324c05_00001 +bf8ffbfff7ffffff_c00fffffffffffff_3faffbfff7ffffff_00001 +3dcff00fffffffff_b7effff7ffffffff_b5cff00803fbfffe_00001 +353957789e95fd88_381d5abc75937d08_2d673f2091f73528_00001 +3f80080000080000_c00ffffffffffffe_bfa008000007fffe_00001 +b650004000ffffff_b7e00fffffffefff_2e4010404100effe_00001 +4390e6210af918da_46cfffc400000000_4a70e6015b7b2447_00001 +3fefffffffffdfef_40dffffefbfffffe_40dffffefbffdfee_00001 +401549a16416e287_c010000000000000_c03549a16416e287_00000 +41fffffc00001fff_c1fa652249c59e1f_c40a651efd216f4a_00001 +cfeffff6ffffffff_41ffff9fffffffff_d1ffff97001afffe_00001 +bcafc000003fffff_c010000000000001_3ccfc00000400001_00001 +b7f0000000810000_c3e2c0625a54229a_3be2c0625aeb51b3_00001 +a957fffffffbfffe_43cfff0000000400_ad37ff3ffffc031e_00001 +a464b1e64cae594f_c01fffffffffffff_2494b1e64cae594f_00001 +cedc00003ffffffe_41c000000000ffff_d0ac00004001bffc_00001 +c01fbeffffffffff_21600000003fffbf_a18fbf00007efb7e_00001 +c3de59209bb8a564_bfd0000007fdffff_43be5920aae16a8c_00001 +c7ffffffe3ffffff_c01ffffffffffffe_482fffffe3fffffe_00001 +b8a00000000002ff_43dfdfffffff7ffe_bc8fdfffffff85f6_00001 +c01e7d66f623cb4c_787feff7fffffffe_f8ae6e20a34efbdb_00001 +47eddf042473ef08_b7e00000fe000000_bfdddf05fea850ca_00001 +bf80100003ffffff_c340000000000000_42d0100003ffffff_00000 +43e0000000008006_7fdfffffc7fffffe_03cfffffc801000a_00001 +c01ffff03fffffff_3fddffffffffff7f_c00dfff13bffff7e_00001 +c7e0000000007ffe_3cae59ba3a79c7b6_c49e59ba3a7aba80_00001 +3caffff80001ffff_c340000000000001_bffffff800020000_00001 +bfbfdffffdfffffe_1a8fe1ffffffffff_9a5fc21dfe01dffd_00001 +3811c6a45a8e5bfc_b7e48cc87315baad_b006d4b6422c9dfb_00001 +36a0000000013ffe_c170004000000200_b820004000014202_00001 +7fefffffffffff07_c34fffffffffffff_834fffffffffff06_00001 +3fbfffff7fffffef_c340ffffffffffbf_c310ffffbbffffb5_00001 +3fc003ffffff0000_c800000037ffffff_c7d00400380cfffe_00001 +802fffe008000000_c3f00001fffffc00_042fffe407fbf901_00001 +c3c6c403d1bd7bc9_c34ffffffffffffe_4726c403d1bd7bc8_00001 +c80ffe0000001ffe_bcae9296e1ac0804_44ce90adb83e0bd5_00001 +b7ffffffffe00003_aa4ffffdffdfffff_225ffffdffc00005_00001 +674e000000010000_ffe0000000000000_a73e000000010000_00000 +3f5008000000007f_ffe0d019cec3a5a4_ff40d881dbab07fc_00001 +c3effc0100000000_417fffffff700000_c57ffc00ff7011fb_00000 +b811ffff7fffffff_c0cffff0003fffff_38f1fff680243ffe_00001 +c02f8000000007ff_ffe0000000000001_001f800000000801_00001 +c040000800000006_b550003fffffff7e_35a00048001fff84_00001 +ffdffffef0000000_37f400003fffffff_f7e3ffff95fffddf_00001 +3fb000040000001e_426ffefffe000000_422fff07fdbfffbc_00001 +b81fffffc00fffff_ffefffffffffffff_781fffffc00fffff_00001 +3e72cba2f8f989b2_c2b007fffffffff7_c132d508ca76066c_00001 +508ffeffbffffffe_3f00ffffffffbfff_4fa0ff77ddffc000_00001 +48000000027fffff_4063ffff7fffffff_4873ffff831fffea_00001 +4020017ffffffffe_ffeffffffffffffe_8020017ffffffffc_00001 +beb00000000fbfff_3fefff7ffffffffb_beafff80001f7f7b_00001 +002f37ebf6c8eaec_c08be464f4c81c69_80cb36000706e168_00001 +42dfffff80000100_c4befffdfffffffe_c7aefffd840008f5_00001 +c03ffffc00000100_fff0000000000000_003ffffc00000100_00000 +41c007fffffbfffe_43bfff77fffffffe_459007bbddfc000e_00001 +37ea265023bdd968_7ffc000000000000_7ff8000000000000_00000 +3fdfffffffbffffb_3fefffe000000000_3fdfffdfffc0003c_00001 +c1e001fffffefffe_7ffc000000000000_7ff8000000000000_00000 +41500000803fffff_bfadc816e2fbf1f7_c10dc817d1b3c968_00001 +bfeffdfffffffffc_7ffc000000000000_7ff8000000000000_00000 +c1e000007fe00000_bf1fffffffffffe8_411000007fdffff4_00001 +c00e800000000000_7ffc000000000000_7ff8000000000000_00000 +bfb5665a54ce0c12_beb0000008007ffe_3e75665a5f81e46d_00001 +c0300007ffffffef_3fb9cc340fc29b6a_bff9cc40f5dca32f_00001 +c1800000ffffffff_c0bfc00000003fff_424fc001fc003ffe_00001 +c80ffffffffffbfd_7ffc000000000000_7ff8000000000000_00000 +c0073e8cf3e13711_802807fffffffffe_004174b95a25e19a_00001 +37efffffffffaffe_3d7ffffffffe001f_357ffffffffdb01e_00001 +c7e457789619128b_40bff3fffffffffe_c8b44fd7c8e0c922_00001 +b8004379ab207ab5_0000000000000000_0000000000000000_00000 +27cd6fcc24e7623d_401000000003efff_27ed6fcc24eea0bf_00001 +0010000000000000_0000000000000000_0000000000000000_00000 +bca000400003ffff_c3fcb63607d6b0bc_40acb6a8e0b5fda3_00001 +0010000000000000_fb48000040000000_bb68000040000000_00000 +c010200100000000_7ffc000000000000_7ff8000000000000_00000 +bfff863c13828ae4_3fef8000000003ff_bfff0823233484a8_00001 +c0409fffffffffff_bfdfff0003ffffff_40309f7b0213ffff_00001 +b69ffff000001000_43dfc00003fffffe_ba8fbff024000dde_00001 +40d00000000403ff_43f0000027ffffff_44d00000280403ff_00001 +3e40552ef3ea764f_3c200ffffffffffc_3a70658422de60c2_00001 +0010000000000000_c0bfffe00000001e_80dfffe00000001e_00000 +bfffc00000000003_391001ffffffffff_b91fc3f800000001_00001 +bfc0007ffffff000_381ffffffffe1ffe_b7f0007ffffefff7_00001 +c010000ffffdfffe_bf5fffffff800fff_3f80000fffbe07be_00001 +3a0de408a1808afd_ffd00000000001fb_f9ede408a1808eb0_00001 +bca5e76e4f34d231_0010000000000000_fcc5e76e4f34d231_00000 +bfbffdffffffff00_404000000003fffb_c00ffe000007fe76_00001 +2f40000000000027_c35f7fffffffffc0_b2af80000000000c_00001 +434ffffff7ff7fff_3fcfff7ffffffeff_432fff7ff7ff9f01_00001 +c1000023fffffffe_0010000000000001_81200023ffffffff_00001 +a38000000800ffff_402ff7faa54f7d56_a3bff7fab54d7a26_00001 +c1db54446247aa52_bfcc001fffffffff_41b7e9d72a43174f_00001 +0010000000000000_b80000000000807e_f82000000000807e_00000 +c1dffbfefffffffe_c0c0000100000100_42affc00ffbff1fe_00001 +c3d00000000003be_001fffffffffffff_84000000000003bd_00001 +380154191efc4e28_381000001ff7ffff_30215419419bd659_00001 +3fb6ec4483f565b4_7fe657f1311c1385_7fb0016e3b91608a_00001 +0010000000000000_b28fffffffffe007_f2afffffffffe007_00000 +b7ffffffffefffbf_69a003ffffffefff_e1b003fffff7edde_00001 +c038e6a7fa682c54_4032e353cb91aeb8_c07d6547d23e6845_00001 +403000001fffffdf_43e2d8971b04eb4e_4422d89740b6195e_00001 +0010000000000000_c0392c59c8e48f37_80592c59c8e48f37_00000 +3c63320494ceb76c_4028000020000000_3c9ccb07059a1c4c_00001 +7ffc000000000000_3ca0000000000000_7ff8000000000000_00000 +c0201000000007ff_4288c3935a34e57b_c2b8dc56ed8f26c0_00001 +c1c00000007fff00_c01fffffffffef00_41f00000007ff680_00001 +0010000000000000_bcafffffffe01ffe_fccfffffffe01ffe_00000 +c01f000001ffffff_c7effffffffe0003_481f000001fe1002_00001 +4789b47aa1149764_3ca0000000000001_4439b47aa1149766_00001 +c60fdfffffffffff_a1c03fffffefffff_27e02fbffff00fff_00001 +c3ce000200000000_001bfffffffbffff_83fa4001bffc3ffe_00001 +0010000000000000_c0000800000001ff_80200800000001ff_00000 +3ff00000001ffefe_3feffff7fff7fffe_3feffff80037fdeb_00001 +bf300000000006ff_3cafffffffffffff_bbf00000000006fe_00001 +41ff000000000002_bfcffffffbfdfffe_c1defffffc1e1000_00001 +43c3e4c2b39d80cb_38080000001fffff_3bddd7240d940ab5_00001 +0010000000000000_41cfe00001ffffff_01efe00001ffffff_00000 +bfe1ff7fffffffff_7ffc000000000000_7ff8000000000000_00000 +c3e0000000006ffe_3caffffffffffffe_c0a0000000006ffc_00001 +47f6ea4106b65a11_3ec001ffffffffef_46c6ed1e4ed730c4_00001 +480fffffffffdf00_4010000000000400_482fffffffffe700_00001 +0010000000000000_c1d0000004000fff_81f0000004000fff_00000 +69ffffa000000000_c00ffffefbffffff_ea1fff9efc030bff_00001 +401000000006ffff_3fd0000000000000_3ff000000006ffff_00000 +c1e000ffffffffff_3812000000003ffe_ba02012000004000_00001 +0010000000000000_3fd0000000000000_7fefffffffffffff_00101 +0029ddf3657c97ac_bb62000400000000_fb9d19b849a90400_00001 +0010000000000000_5c10000001001fff_1c30000001001fff_00000 +c7f02007fffffffe_402000000100000f_c82020080102008d_00001 +947ffe00000ffffe_3fd0000000000001_945ffe00000fffff_00001 +c04000000047ffff_3feffffffffc0007_c040000000460002_00001 +4030040000200000_0017055f48beeff5_00570b20a0bf2a70_00001 +41c0000000fdffff_b81fffffffffffed_b9f0000000fdfff5_00001 +c3436f8f2b2e7e21_3fdfffffffffffff_c3336f8f2b2e7e20_00001 +c3cfffffffff7f7f_40bab08b43d48199_c49ab08b43d4166b_00001 +0010000000000000_3fdfffffffffffff_7fefffffffffffff_00101 +c1ffffffdff80000_402fffffc00000ff_c23fffff9ff8013f_00001 +0010000000000000_c05ffddfffffffff_807ffddfffffffff_00000 +47e00008000ffffe_3fdffffffffffffe_47d00008000ffffd_00001 +e8618845e92f15df_bfce0fd99d7c11ae_68407870a5c4189a_00001 +0010000000000000_3fdffffffffffffe_7fefffffffffffff_00101 +bc7000000000ffee_c1e0001100000000_3e6000110000fff0_00001 +c0cfffffdfc00000_c1c0200000000040_42a01fffefbfc040_00001 +7ffc000000000000_3fe0000000000000_7ff8000000000000_00000 +911f7ffffffffff0_3f90ca8f09d1be5d_90c08764cdaa775b_00001 +0010000000000000_3fe0000000000000_0000000000000000_00011 +c02200003ffffffe_c1d1ffffbffffffe_42043ffffffffefc_00001 +0010000000000000_ffe7ffffffffffee_c007ffffffffffee_00000 +bfe0000023ffffff_c06ffc000000000e_405ffc0047f7000d_00001 +bfb2001fffffffff_3fe0000000000001_bfa2002000000000_00001 +4269afb6393490b7_ba62478d7e1c3e1c_bcdd588bdfe3e666_00001 +c040000000007fff_c3b2a6c91c557f56_4402a6c91c56148c_00001 +c06007f7fffffffe_ddcfff9ffffffffe_5e4007c7e817fffd_00001 +c57ea73c304d054d_3fefffffffffffff_c57ea73c304d054c_00001 +43c086a10b8210ae_bf01ffffbfffffff_c2d29774ead7ce94_00001 +0010000000000000_3fefffffffffffff_0000000000000000_00011 +4343a987a0dad4a5_40caa5c07b2b6187_44205f969ae3434d_00001 +0010000000000000_40b007ffffffff7e_00d007ffffffff7e_00000 +c7e0100000000040_bff0002000000001_47e0102020000042_00001 +4403bb97ce60574a_3feffffffffffffe_4403bb97ce605749_00001 +3a0c0007fffffffe_381f800000fffffe_323b9007e0e0003d_00001 +41ffffffff003fff_c3b0000007ffffee_c5c0000007801fed_00001 +40232b23c9417cd7_ba5000000000087e_ba832b23c9418703_00001 +c05fbffbffffffff_3ff0000000000000_c05fbffbffffffff_00000 +bfc0000080000800_b80ffffffffffffe_37e00000800007ff_00001 +0010000000000000_3ff0000000000000_0010000000000000_00000 +c3e4003fffffffff_ffd0007ffffffffe_03c400e001fffffd_00001 +c0fbffffffffffef_c3cf100000000000_44db2dfffffffff0_00001 +4339ff8b8ee34977_3ff0000000000001_4339ff8b8ee34979_00001 +3fefffffffffffff_37f9fc8b9cbef88a_37f9fc8b9cbef88a_00001 +0010000000000000_3ff0000000000001_0010000000000001_00000 +21900001dfffffff_bf20000017fffffe_a0c00001f80002cc_00001 +0010000000000000_41e000003fffffff_020000003fffffff_00000 +7ffc000000000000_bf5369d33862aaac_7ff8000000000000_00000 +c0300001fffffffa_3fffffffffffffff_c0400001fffffff9_00001 +c06000400000007f_c1d00000fff7ffff_42400040fffc005f_00001 +0010000000000000_3fffffffffffffff_001fffffffffffff_00000 +bfdffffffff000fe_43dffdfffdffffff_c3cffdfffdf001fc_00001 +0010000000000000_41dffbffffffffff_01fffbffffffffff_00000 +c0a6000000000000_43fefffffffff7ff_c4b54ffffffffa7f_00001 +bff60484a5536536_3ffffffffffffffe_c0060484a5536534_00001 +0029954d0f0df5b3_41e00000000003ff_0219954d0f0dfc17_00001 +0010000000000000_3ffffffffffffffe_001ffffffffffffe_00000 +c01000081fffffff_308ffdffbfffffff_b0affe0ffefbdf7d_00001 +0010000000000000_c03fbffffffffffe_805fbffffffffffe_00000 +2fb00ffffffdffff_bd50000001fffff6_ad10100001fffff4_00001 +b7effffffffffc1f_4000000000000000_b7fffffffffffc1f_00000 +bfb83dc63477cd3d_4070007ffff80000_c0383e88229d5218_00001 +0010000000000000_4000000000000000_0020000000000000_00000 +bfcffffff8000100_bfc000000003e000_3f9ffffff807c100_00001 +0010000000000000_435f000003ffffff_037f000003ffffff_00000 +b810000020000001_47ffdfffffffff80_c01fe0003fbfff81_00001 +802fffefefffffff_4000000000000001_803fffeff0000000_00001 +3fd0000ffbfffffe_3fbbfffffdffffff_3f9c001bf6fffdfc_00001 +0010000000000000_4000000000000001_0020000000000001_00000 +43ec064c6152fc63_cd3fbffffff7fffe_d13bce3fc88954d5_00001 +3c3e54c4d8a3cf09_415ffffffffdffe0_3dae54c4d8a1e99f_00001 +4030fffffffeffff_400fffffffffffff_4050fffffffeffff_00001 +402efffffffffff7_bcafffc00001ffff_bceeffc20001eff6_00001 +0010000000000000_400fffffffffffff_002fffffffffffff_00000 +c1a000000001fdff_c7e29e108929df66_49929e10892c30d4_00001 +0010000000000000_ffeffff800007fff_c00ffff800007fff_00000 +dff0007f7fffffff_37fffffffffff77f_d800007f7ffffbbe_00001 +bfb0000000007f7f_400ffffffffffffe_bfd0000000007f7d_00001 +c3e44faf4fcc6d94_b80fec0000000000_3c0442fd823a8dd0_00001 +0010000000000000_400ffffffffffffe_002ffffffffffffe_00000 +47e0004008000000_bfb85853044ed3e1_c7a858b471c70e9e_00001 +0010000000000000_b06003ffffffffde_f08003ffffffffde_00000 +37e7518d337cc25b_7ffc000000000000_7ff8000000000000_00000 +d12000ffffefffff_4010000000000000_d14000ffffefffff_00000 +4490000003fffefe_4136bf27884c5b05_45d6bf278dfc2379_00001 +0010000000000000_4010000000000000_0030000000000000_00000 +c0221db466eedfb9_c3c0e83093586003_43f3249a1eb595ba_00001 +0010000000000000_4020000000004400_0040000000004400_00000 +4022ac23df608ace_3a2cddcec5bdb7f6_3a60d80ce2bc8b14_00001 +3fbffffffff60000_4010000000000001_3fdffffffff60002_00001 +3fefffff80000400_434615f1f239d053_434615f199e20b4d_00001 +0010000000000000_4010000000000001_0030000000000001_00000 +37ffe5d085a3877b_c000800000003fff_b810727f84e891a6_00001 +0010000000000000_c80ffffe00000006_882ffffe00000006_00000 +bc10001fffffefff_3ccd2ded70b56965_b8ed2e27cc902da0_00001 +bf700000000100ff_401fffffffffffff_bfa00000000100fe_00001 +c1f00207fffffffe_c1e03effffffffff_43e0410fff7ffffd_00001 +0010000000000000_401fffffffffffff_003fffffffffffff_00000 +403fffffff780000_b400023fffffffff_b450023fffbbf66f_00001 +47ffffe000020000_3fe5d02ba77755f7_47f5d015d74d0b83_00001 +43ef0000000000ff_401ffffffffffffe_441f0000000000fe_00001 +3ca0384aaa23be04_b940005fffffffff_b5f038abfbe3bad9_00001 +0010000000000000_401ffffffffffffe_003ffffffffffffe_00000 +40327ad957b1f5df_c000006000000000_c0427b4838ca040a_00001 +0010000000000000_b806f9c81cbb15f4_f826f9c81cbb15f4_00000 +37feffffffffffff_47ef8000000fffff_3ffe8400000f7fff_00001 +404ffefffffff000_4340000000000000_439ffefffffff000_00000 +3fc0001000200000_b100003ffffffff8_b0d0005000600077_00001 +0010000000000000_4340000000000000_0360000000000000_00000 +ffdb3470a5e3dd1b_480f7fffffffdfff_87fac79ee34c3271_00001 +0010000000000000_bca0000080003fff_fcc0000080003fff_00000 +3cce0ccf7d8e4a61_7ffc000000000000_7ff8000000000000_00000 +c1d00800ffffffff_4340000000000001_c520080100000000_00001 +41f000fffffdfffe_404effffffdfffff_424f01efffdc1dfc_00001 +0010000000000000_4340000000000001_0360000000000001_00000 +b80f800001fffffe_44e00000ffff7fff_bcff8001f9ff041c_00001 +401ffffbdfffffff_43d0000000000300_43fffffbe00005ff_00001 +c3c0000017fffffe_434fffffffffffff_c720000017fffffd_00001 +c1feffffff7ffffe_1af693ab1ab44f36_9d05df0dc1845e0e_00001 +0010000000000000_434fffffffffffff_036fffffffffffff_00000 +b20643cc9d9a536b_41e49085b10e049f_b3fc9ddc0081bc98_00001 +0010000000000000_4009ad651462b44a_0029ad651462b44a_00000 +41dff0000000003e_43effff7ffffffe0_45dfeff80400001f_00001 +c09ffff000004000_434ffffffffffffe_c3fffff000003ffe_00001 +3fd0200000000800_dc0ffe0002000000_dbf01efe010207ff_00001 +0010000000000000_434ffffffffffffe_036ffffffffffffe_00000 +be400000080001fe_14f0010000000ffe_93400100080091fc_00001 +0010000000000000_436eff7fffffffff_038eff7fffffffff_00000 +bfd883177e5f1999_43e4000000000003_c3cea3dd5df6e003_00001 +c3e0000000800003_7fe0000000000000_83d0000000800003_00000 +405ffffffffffb80_8015e1d67420ea5d_8085e1d67420e749_00001 +0010000000000000_7fe0000000000000_4000000000000000_00000 +3fd1000fffffffff_5d310000000000ff_5d1210110000010e_00001 +0010000000000000_c1efffdffbffffff_820fffdffbffffff_00000 +b8a008000000007f_c01ffffffc00001e_38d007fffdff008f_00001 +41ffffdfffff8000_7fe0000000000001_01efffdfffff8002_00001 +0010000000000000_7fe0000000000001_4000000000000001_00000 +c340708fc64cbb8d_802fc64018f098e6_038052e4afa4e3ab_00001 +bfffffbffff7ffff_bd400000200000ff_3d4fffc03ff781fd_00001 +c02008d3baee2879_7fefffffffffffff_802008d3baee2878_00001 +0010000000000000_7fefffffffffffff_400fffffffffffff_00000 +400ffe00003fffff_c1e507e54ddba03c_c2050694cfb0d24b_00001 +0010000000000000_4edffffffefffeff_0efffffffefffeff_00000 +c15000400ffffffe_c0500007fffdffff_41b00048101e07f5_00001 +c6bb60a15b9ca674_7feffffffffffffe_86bb60a15b9ca672_00001 +b80a16ad02c87cd3_380fffffffffe7fe_b02a16ad02c86940_00001 +0010000000000000_7feffffffffffffe_400ffffffffffffe_00000 +c00f7ffffffeffff_f7efefffffffffbe_780f703fffff003f_00001 +0010000000000000_40dffffffffff806_00fffffffffff806_00000 +32a89b054aa778be_38ee00000000000e_2ba71154f5fd013d_00001 +aa6f0618039cfa82_7ff0000000000000_ea6f0618039cfa82_00000 +40f007ff80000000_47fffff07fffffff_490007f7bc203e00_00001 +0010000000000000_7ff0000000000000_4010000000000000_00000 +4020000000020006_bb62b1da7ab47675_bb92b1da7ab6ccb7_00001 +3fc482ada40e5d82_bec10c5904e0bbb5_be95daac9db0f037_00001 +47f0fffffffffffb_7ffc000000000000_7ff8000000000000_00000 +c023b435d252ab57_c0efffffffbffffe_4123b435d22b42eb_00001 +0010000000000000_7ffc000000000000_7ff8000000000000_00000 +37ed147aa1f43557_bed00000003fffc0_b6cd147aa26886cd_00001 +0010000000000000_84fffbffffff0000_c51ffbffffff0000_00000 +42a0010000000000_c8000000001001ff_cab00100001002ff_00001 +37f00000003ffbfe_7ffc000000000000_7ff8000000000000_00000 +c67fefff7ffffffe_3eac1d26eec725e8_c53c0f17eadb2698_00001 +0010000000000000_7ffc000000000000_7ff8000000000000_00000 +7fdff7fffffdfffe_be603755dfca2a65_fe5033480a513464_00001 +0010000000000000_41ffffffffbfff7f_021fffffffbfff7f_00000 +47fc27499562c193_bfd7fffffffff7ff_c7e51d77300a0a23_00001 +bffffe000000fffe_7ffc000000000000_7ff8000000000000_00000 +401ffc0000000002_43cfff800000003e_43fffb8010000040_00001 +0010000000000000_7ffc000000000000_7ff8000000000000_00000 +43f7ffffffffdfff_ffed3e9e1f93387c_83f5eef697ae4d1d_00001 +0010000000000000_403fff8001000000_005fff8001000000_00000 +3fd004000000000f_37f6cfd4cb442f48_37d6d588c077006a_00001 +bf80001002000000_8000000000000000_0000000000000000_00000 +37e00000004007fe_c0036ff67812a280_b7f36ff678606c0f_00001 +0010000000000000_8000000000000000_0000000000000000_00000 +48070394b74ce3a4_480efc79a696d4b9_502648ef1c54f542_00001 +0010000000000000_8020000037fffffe_c040000037fffffe_00000 +bc3f7fffffffffbf_bca03ff7ffffffff_38effdf03fffffbd_00001 +b677ffffffffeffe_415ffffffdf7fffe_b7e7fffffe79effc_00001 +0010000000000000_c0fffffffdfffff6_811ffffffdfffff6_00000 +c02fffffdffffbff_3fd00000000003ff_c00fffffe00003fc_00001 +c0300000ffeffffe_3fffff8000001ffe_c03fff81ffd8207a_00001 +f98fff8007ffffff_3fe040003fffffff_f9803fbf440f000e_00001 +c7e80001ffffffff_bff0000000007ffe_47e800020000bffd_00001 +c3d00001000001ff_b7f60cb3edb38762_3bd60cb54e7ec8fe_00001 +546000000004003f_400663ca353eb4a4_547663ca35444def_00001 +bfeffffffffdffff_c3c800003ffffffe_43c800003ffe7ffe_00001 +c3c000000100000f_8010000000000000_03e000000100000f_00000 +43c86b97bdb4310f_2a1104f9c0a750d2_2de9f9e94ff2d4b0_00001 +0010000000000000_8010000000000000_c030000000000000_00000 +bfff000000000100_bff27243af555c1b_4001deb191dab1ce_00001 +0010000000000000_cf10008040000000_8f30008040000000_00000 +bfcf800000000000_bfc000000ffffffd_3f9f80001f7ffffb_00001 +bff0000000020fff_becc54fdffa82e36_3ecc54fdffabd529_00001 +0010000000000000_8010000000000001_c030000000000001_00000 +1590000080200000_e290003ff7ffffff_b83000407822003e_00001 +0010000000000000_48000000040007ff_08200000040007ff_00000 +434fffffffff7dfe_7fe0000000000043_033fffffffff7e84_00001 +407ffffffff7fff7_801fffffffffffff_80affffffff7fff6_00001 +47fe3fffffffffff_3fe12dc9c92e02e4_47f03d48c02d7ebb_00001 +0010000000000000_801fffffffffffff_c03fffffffffffff_00000 +b810000000003fe0_9f90000100000008_17b0000100003fe9_00001 +0010000000000000_46abd96de2786819_06cbd96de2786819_00000 +60d92d2aa25c2d87_bfbffe001fffffff_e0a92b97e8df3265_00001 +43c0007fffdfffff_801ffffffffffffe_83f0007fffdffffd_00001 +bfd00000407ffffe_d001000000800000_4fe1000045080000_00001 +0010000000000000_801ffffffffffffe_c03ffffffffffffe_00000 +4382a3880af103a1_801fffffffc08000_83b2a3880acc071f_00001 +0010000000000000_4017ffffefffffff_0037ffffefffffff_00000 +efd000800000fffe_37e34d3325f0bc2f_e7c34dcd8f8b2085_00001 +0010000000000000_bca0000000000000_fcc0000000000000_00000 +413effffffffffff_3ffffffdfffffffc_414efffe0ffffffc_00001 +0010000000000000_c04fff0000007ffe_806fff0000007ffe_00000 +3fbf800000000002_bfb892c300fae7f4_bf883077f4f6fc55_00001 +c7efffffdffffbff_bca0000000000001_449fffffdffffc01_00001 +41effffffff00002_c013ffffe0000000_c213ffffdff60001_00001 +0010000000000000_bca0000000000001_fcc0000000000001_00000 +c0272f86e7296ddc_c00fffffe1fffffe_40472f86d16cdf62_00001 +0010000000000000_480ffff000000080_082ffff000000080_00000 +c440000800000003_402ffffffdfffffd_c4800007feffff81_00001 +41f000000ffffffe_bcafffffffffffff_beb000000ffffffd_00001 +c21d2b9577b04a48_3caffffeff7fffff_bedd2b948ddef033_00001 +0010000000000000_bcafffffffffffff_fccfffffffffffff_00000 +46600000003ffffb_c7f03ffdfffffffe_ce603ffe0040fff0_00001 +0010000000000000_c11ff00000000003_813ff00000000003_00000 +404ffffffe001fff_3f183477e56b4fdb_3f783477e3e82091_00001 +7fe53580e079043e_bcaffffffffffffe_fca53580e079043c_00001 +3fcf000000400000_7ffc000000000000_7ff8000000000000_00000 +0010000000000000_bcaffffffffffffe_fccffffffffffffe_00000 +bfbffffffffff7fb_3f67c662a30b77d9_bf37c662a30b71e3_00001 +0010000000000000_bfff9793a2cfab94_801f9793a2cfab94_00000 +c2a602769741e0f4_41df7ffffffff800_c495aa6cbce4d3ef_00001 +47f28f0812269bb5_bfd0000000000000_c7d28f0812269bb5_00000 +4171ffffefffffff_bff0c7c76598ebc1_c172e0c0418441d2_00001 +0010000000000000_bfd0000000000000_ffefffffffffffff_00101 +7ffc000000000000_bcaffffbfffffff7_7ff8000000000000_00000 +0010000000000000_c340000000400020_8360000000400020_00000 +b81ffffffdffffbf_4168000000000007_b997fffffe7fffd6_00001 +43d2000000000002_bfd0000000000001_c3b2000000000003_00001 +40800041ffffffff_c3ced81c55396ab6_c45ed89b90ae4a40_00001 +0010000000000000_bfd0000000000001_ffefffffffffffff_00101 +4003069a0d38953d_40a077ffffffffff_40b3954b909bbd9c_00001 +0010000000000000_43f20ac9374433ed_04120ac9374433ed_00000 +4010618f5a6ec8f0_c3ddaa7859723ef0_c3fe5f5b9e50707d_00001 +c0ffffffffeffffe_bfdfffffffffffff_40efffffffeffffe_00001 +40100000020fffff_3530003bffffffff_3550003c021007ba_00001 +3ffffefeffffffff_47f0000040000fff_47fffeff7ffc1bfc_00001 +0010000000000000_c3e0000100004000_8400000100004000_00000 +bee07fffffbffffe_c008000000000ffe_3ef8bfffffa0107b_00001 +ffeffffffc002000_bfdffffffffffffe_7fdffffffc001fff_00001 +441ed7f6a4c867c6_c00fbffffffbfffe_c43e9a46b77afbf5_00001 +3fc0000000007fef_1980000002000007_1950000002007ff7_00001 +4007810b8f74ac1d_bfc856fb871d13a1_bfe1e0ac3a197c02_00001 +5677fffffffeffff_bfe0000000000000_d667fffffffeffff_00000 +6f7000000001fdff_1510010000000fff_4490010000020e1e_00001 +0010000000000000_bfe0000000000000_8000000000000000_00011 +c0000003ffffe000_bfd1684c1780a28e_3fe168507193859e_00001 +0010000000000000_47fff3c7f4f5dd0a_081ff3c7f4f5dd0a_00000 +80204000000ffffe_381fffffff81fffe_f8503fffffd003fc_00001 +95d00007ffffffff_bfe0000000000001_15c0000800000001_00001 +37f0800000008000_41c00000007ff800_39c08000008477c1_00001 +0010000000000000_bfe0000000000001_8000000000000000_00011 +413ffdffffdffffe_3fbc6dc2b14b6dd5_410c6bfbd503eb5a_00001 +0010000000000000_de70000600000000_9e90000600000000_00000 +37f002000000000f_b1effcfffffffffe_a9f0007fd000000d_00001 +be4bd57690ea5405_bfefffffffffffff_3e4bd57690ea5405_00001 +bfcffdffff000000_b7e44dc0093df58b_37c44c7b2c9af3ac_00001 +40100000083fffff_3c0dcff9f723ff06_3c2dcffa06833be8_00001 +0010000000000000_403ffff800000003_005ffff800000003_00000 +c3dffc0000000006_002ffffeffffffff_841ffbff00200005_00001 +3ca01ffffffffffc_bf8ffbffe0000000_bc401dfbefdffffc_00001 +43ebffefffffffff_401fffff80003fff_441bffef900077ff_00001 +0010000000000000_47f000021fffffff_081000021fffffff_00000 +4040000040200000_c030003ffffff7ff_c08000404020f87e_00001 +cc3050bc013d7cd7_bff0000000000000_4c3050bc013d7cd7_00000 +bca371e443fc6409_c3f0000004000003_40a371e448d8dd1e_00001 +0010000000000000_bff0000000000000_8010000000000000_00000 +3cd49ee0d5dc5dad_5dd2718355e26898_5ab7c50847fefa19_00001 +0010000000000000_46603fffe0000000_06803fffe0000000_00000 +c3dffffffffffffe_802fffffc8000000_041fffffc7ffffff_00001 +401fff7dffffffff_bff0000000000001_c01fff7e00000000_00001 +c3e00000400003ff_c041cb2ba6fa7627_4431cb2bee272935_00001 +0010000000000000_bff0000000000001_8010000000000001_00000 +c1d0003ff8000000_f9f000000010003f_7bd0003ff810007f_00001 +0010000000000000_87fff0000000fffe_c81ff0000000fffe_00000 +308fffffffffffe7_bc4fffffffefffbf_acefffffffefffa6_00001 +43c0003ffffffffc_bfffffffffffffff_c3d0003ffffffffb_00001 +c030007ffffefffe_37f1c5927efed20d_b831c620ab91ada8_00001 +0010000000000000_bfffffffffffffff_801fffffffffffff_00000 +7ffc000000000000_3111ffffffffbfff_7ff8000000000000_00000 +0010000000000000_43c8000000ffffff_03e8000000ffffff_00000 +ffe84f73fb8db6fe_bc1fffffc0000000_7c184f73caeecf07_00001 +47e0000000010080_bffffffffffffffe_c7f000000001007e_00001 +c04fffffbffffffb_3c7f7ffffffffdfe_bcdf7fffc0fffdf9_00001 +0010000000000000_bffffffffffffffe_801ffffffffffffe_00000 +37f000003fffffde_c3400000000ffe00_bb400000400ffdde_00001 +0010000000000000_c3fb5c5330475c41_841b5c5330475c41_00000 +472dfffffeffffff_c3448df0813db0ec_ca83451178856658_00001 +3ca36b7814b2d456_c000000000000000_bcb36b7814b2d456_00000 +a4ffffefdfffffff_c3e0020000000fff_28f001f7eefe0fff_00001 +0010000000000000_c000000000000000_8020000000000000_00000 +3feffffffffffbdf_bff0077965f9c355_bff0077965f9c143_00001 +c11ffff7fff7ffff_c1adeb3cfb8c4374_42ddeb3580b589c1_00001 +7feefffe00000000_c000000000000001_ffefffffffffffff_00101 +43effbfffffff7ff_7fefffffff801ffe_03effbffff8027fa_00001 +0010000000000000_c000000000000001_8020000000000001_00000 +32100007efffffff_c78ffffff0000007_b9b00007e7fffc0a_00001 +0010000000000000_b7efffffbffff7fe_f80fffffbffff7fe_00000 +bce98537abc2f82a_41e00003ffdffffe_bed9853e0cddd8a8_00001 +ffefffeffffdffff_c00fffffffffffff_0000000000000000_00011 +3f8007ffffffffff_c3f000401fffffff_c3800840400ffffd_00001 +0010000000000000_c00fffffffffffff_802fffffffffffff_00000 +c3d4f4adbfb6a5ea_3e700000000000c0_c254f4adbfb6a6e5_00001 +0010000000000000_408000000010ffff_00a000000010ffff_00000 +c015834380f2b995_3f9fff0000000400_bfc5829766d6b4af_00001 +3faffeffffffc000_c00ffffffffffffe_bfcffeffffffbffe_00001 +c3effffffffffef7_bf40445cd52bc22b_4340445cd52bc1a5_00001 +0010000000000000_c00ffffffffffffe_802ffffffffffffe_00000 +c340004000007fff_4070004000000400_c3c0008001008401_00001 +e0d20000000003ff_c34000002ffffffe_64220000360003fd_00001 +38185f449f6bf14d_c010000000000000_b8385f449f6bf14d_00000 +c341fffffffffffc_bec000003ffbffff_4212000047fb7ffb_00001 +0010000000000000_c010000000000000_8030000000000000_00000 +c23fff7ffffffbff_c8710000000000ff_4ac0ffbbfffffedf_00001 +0010000000000000_41dfffffc0001000_01ffffffc0001000_00000 +c8000003fffffff6_7fdffffffff7dffe_87f00003fffbeff3_00001 +32d3e44c3072f211_c010000000000001_b2f3e44c3072f212_00001 +c3efffdffeffffff_c22fffffffffefbf_462fffdffeffefbf_00001 +0010000000000000_c010000000000001_8030000000000001_00000 +40700200000001fe_bdffffffe0000040_be8001ffeffe021e_00001 +0010000000000000_802ffbffc0000000_c04ffbffc0000000_00000 +3c6fbfffffdfffff_40300000009fffff_3cafc000011d7ffe_00001 +001000003fffffff_c01fffffffffffff_804000003ffffffe_00001 +b80002000000007f_c7e000000007fbfe_3ff002000007fd7d_00001 +0010000000000000_c01fffffffffffff_803fffffffffffff_00000 +c0204000000fffff_406ffffffefffdfe_c0a03fffff8dfef9_00001 +4809f4b95e8684c3_b5a0000000000380_bdb9f4b95e868a70_00001 +c1f0020000001000_c01ffffffffffffe_4220020000000fff_00001 +c58fff8000010000_3ff000080000007f_c58fff8fffc100fe_00001 +0010000000000000_c01ffffffffffffe_803ffffffffffffe_00000 +bfefdfbffffffffe_3fb0101fffffffff_bfafffdf7f7ffffc_00001 +0010000000000000_7fdffffbfbfffffe_3ffffffbfbfffffe_00000 +3caffffffc00000e_ffefffffffe0007f_fcaffffffbe0008d_00001 +c34e3db1b794999c_c340000000000000_469e3db1b794999c_00000 +41e010000000001f_c5b04000000fffff_c7a050400010101e_00001 +0010000000000000_c340000000000000_8360000000000000_00000 +7fd00000001fffff_c1c0010000000000_81a00100002001fe_00001 +0010000000000000_7ffc000000000000_7ff8000000000000_00000 +41e43c7afaf93429_c3dffff8000ffffe_c5d43c75ebe493a6_00001 +1d60000000000000_c340000000000001_a0b0000000000001_00000 +bfe0000007fffffb_b7e000000000200e_37d000000800200a_00001 +0010000000000000_c340000000000001_8360000000000001_00000 +4c6000000ffffe00_b4cfbffff7fffffe_c13fc00017bffbfe_00001 +0010000000000000_7ffc000000000000_7ff8000000000000_00000 +3b40018000000000_3ea0400000000100_39f0418600000101_00001 +41cf871987a4786c_c34fffffffffffff_c52f871987a4786b_00001 +4261d11be1f2a3c5_3caf800000000080_3f2189d7726ad97e_00001 +0010000000000000_c34fffffffffffff_836fffffffffffff_00000 +a6d00ffffc000000_c1e0002080000000_28c010209c7ff7e0_00000 +c770000000001c00_450fffebfffffffe_cc8fffec000037fd_00001 +c000000100002000_c34ffffffffffffe_4360000100001fff_00001 +43dfffff40000000_3c700000003fffff_405fffff407ffffc_00001 +0010000000000000_c34ffffffffffffe_836ffffffffffffe_00000 +c504000080000000_c030000200400000_4544000300501002_00000 +0010000000000000_4cdffeffff7fffff_0cfffeffff7fffff_00000 +c3dff8000000007e_3fd0008000000002_c3bff8ffc0000082_00001 +c80e00000000001f_ffe0000000000000_07fe00000000001f_00000 +4038c1f6b59a2712_c1effe0000000ffe_c238c06a962ed9ce_00001 +0010000000000000_ffe0000000000000_c000000000000000_00000 +3f0fffffdfffffdf_c2a0000000000402_c1bfffffe00007e2_00001 +7fd007fbffffffff_400bfffffffefffe_7fec0df8fffeff7d_00001 +402fc000000007ff_ffe0000000000001_801fc00000000800_00001 +400c000003fffffe_43c0000000020002_43dc000004038002_00001 +0010000000000000_ffe0000000000001_c000000000000001_00000 +16dff0001ffffffe_3fb500ae0796659d_16a4f62dc5934871_00001 +0010000000000000_7fdfffffdf800000_3fffffffdf800000_00000 +40111e45b8b5ab55_ffefffffffffffff_80111e45b8b5ab54_00001 +ba0007fffffeffff_3ca0000008000200_b6b00800080301ff_00001 +0010000000000000_ffefffffffffffff_c00fffffffffffff_00000 +c1dfc7ffffffffff_c3cff00000000fff_45bfb81c00000fe3_00001 +47ffffffffffdff0_3f9fdffffffffbff_47afdfffffffdc10_00001 +c1fffffe000001ff_ffeffffffffffffe_01fffffe000001fe_00001 +ba6fffffbf7fffff_c00fffffbdffffff_3a8fffff7d800084_00001 +0010000000000000_ffeffffffffffffe_c00ffffffffffffe_00000 +b7e003ffffffff7f_deafffffeffffffd_56a003fff7fdff7e_00001 +03efffffffffff04_3dafff7ffffffffa_01afff7ffffffeff_00001 +381ff000000000ff_fff0000000000000_f81ff000000000ff_00000 +43fe000000004000_3fdfffc000000400_43edffc4000043c0_00001 +0010000000000000_fff0000000000000_c010000000000000_00000 +378b1c4beaf19830_c1d00000000081ff_b96b1c4beaf27474_00001 +bf8e00000000000e_342fffffffc01fff_b3cdffffffc41e0d_00001 +7febdc9a99e7a82d_7ffc000000000000_7ff8000000000000_00000 +c3d003fffffffffb_47effffff0000001_cbd003fff7fdfffb_00001 +0010000000000000_7ffc000000000000_7ff8000000000000_00000 +406000001fffbfff_3f20020000080000_3f900200200bbff8_00001 +0010000000000000_c0f01fff00000000_81101fff00000000_00000 +001fffefffffefff_40ac0001fffffffe_00dbfff3fffef1fe_00001 +b7ffffffff80000f_7ffc000000000000_7ff8000000000000_00000 +40fffe000001fffe_c28ffffeffffff7f_c39ffdff0011ff7c_00001 +0010000000000000_7ffc000000000000_7ff8000000000000_00000 +c1f010e938b5ded1_400dfffffffffffe_c20e1fb54a5501c5_00001 +415ffffffffffe1f_d96f7f7fffffffff_dadf7f7ffffffe25_00001 +ef00000ffffc0000_7ffc000000000000_7ff8000000000000_00000 +7ffc000000000000_bab0002007ffffff_7ff8000000000000_00000 +0010000000000000_7ffc000000000000_7ff8000000000000_00000 +3eefffffffffffed_43efe8e5002721cc_42efe8e5002721ba_00001 +51f00008003ffffe_c470040000000001_d670040802400ffe_00001 +3ca0020000000000_0000000000000000_0000000000000000_00000 +41d0040040000000_be4ffffffffbffef_c03004003ffdff77_00001 +0010000000000001_0000000000000000_0000000000000000_00000 +c1ca0de3d0d15dd1_3fffffffe03ffffe_c1da0de3b6f795c6_00001 +0010000000000001_b8d09a33206c9699_f8f09a33206c969a_00001 +4340800000000020_3f5fec0000000000_42b075b000000020_00001 +bfdffff800100000_10dfffffffffffff_90cffff8000fffff_00001 +439fbffffffbffff_bf8454fd38ef0ba0_c3342c533e7aa2e8_00001 +bfdf7fffffffffbe_c3f8cd30846286fc_43e869fbc250fcad_00001 +c010102396a7802c_c0200000000007bf_4040102396a787f3_00001 +c0258dbcf58dfc04_3da000000001007f_bdd58dbcf58f558a_00001 +0010000000000001_43400000000001f8_03600000000001fa_00001 +43e000000009ffff_407059db2c4f6829_446059db2c59a051_00001 +bca5daf2cc8924e1_c03000007ffffefe_3ce5daf37b60b9e5_00001 +bfc000000000043f_c2c084efd4d351ba_429084efd4d3561d_00001 +dc1fffffffffffaf_c34ffffffdffc000_5f7ffffffdffbfb0_00001 +418effffffffff7f_0010000000000000_01aeffffffffff7f_00000 +c1c000000200007e_bf000001ffffffbf_40d000020200007e_00001 +ae31fbffffffffff_1801c2793142b19f_8643f657b91eb725_00001 +0010000000000001_403fffffffffc1ff_005fffffffffc201_00001 +ffd0000fffdfffff_bb5fffffff81ffff_7b40000fffa0ffc0_00001 +2c8000080000ffff_f0000000010001ff_dc9000080101027e_00001 +37e7ff7fffffffff_43ff8acf4be4e380_3bf7a79d4dae7b0c_00001 +c3cfffffffefe000_37efff0001fffffe_bbcfff0001efe07e_00001 +ffd7ad4237371282_001fffffffffffff_c007ad4237371281_00001 +001e6a23746179de_4b3fffffbfffffe0_0b6e6a23378d32d7_00001 +c1a0000080fffffe_c00feffbfffffffe_41bfeffd017edfbb_00001 +480000000008fffe_001637e790e69de2_082637e790f31d52_00001 +c3400ffffffefffe_001ffffffffffffe_83700ffffffefffc_00001 +c050000003ffdfff_3fc000009ffffffe_c0200000a3ffe024_00001 +c02fffffffffffff_4030000000080000_c07000000007ffff_00001 +b7effef800000000_47efff7ffffeffff_bfeffe78041f0007_00001 +400fffffc3ffffff_3ca0000000000000_3cbfffffc3ffffff_00000 +bfefb80000000000_bfd9c346f3f0115d_3fd9894f944b3536_00001 +bfb007fffffffbfe_3fffff0000000007_bfc0077fbffffc01_00001 +0010000000000001_7fe8764cdc1ba128_4008764cdc1ba12a_00001 +419ffffffdfdffff_c01fffffffff0000_c1cffffffdfcffff_00001 +bffffffc000003fe_3ca0000000000001_bcaffffc000003ff_00001 +3ffffffbffe00000_402ffffbfefffffe_403ffff7fee08023_00001 +d1bfffffffffffff_4373dd6bcb6fc58e_d543dd6bcb6fc58d_00001 +b8cfffffffbefffe_3cafffffffffffff_b58fffffffbefffd_00001 +c0a684d24f5ca22b_c34ffffeffffffff_440684d19b360fb0_00001 +37e2e713ec3308f4_4010000000001fdf_3802e713ec332e9c_00001 +3fffff80000001ff_bffffc0000000040_c00ffb801000023e_00001 +43cffdff7fffffff_3caffffffffffffe_408ffdff7ffffffe_00001 +4014daa7249b383d_c804080000000000_c82a1bbe415453e8_00001 +43cffc00000000fe_43c1ffffffffffff_47a1fdc00000008e_00001 +6b4848a9a8c0dcd5_480ffffffffbdfff_736848a9a8bdbb77_00001 +3fc9e8c6d2ecf933_3fd0000000000000_3fa9e8c6d2ecf933_00000 +4037ab91bff33a68_3dbfdffffffffff7_3e0793e62e334727_00001 +ffeffffffffbfefe_3c503ffffeffffff_fc503ffffefdf77b_00001 +0010000000000001_400fffffffff7bff_002fffffffff7c01_00001 +c92bffffffffff7e_3cc00007fffe0000_c5fc000dfffc7f7d_00001 +c3d00000201fffff_3fd0000000000001_c3b0000020200000_00001 diff --git a/wally-pipelined/src/fpu/FMA/tbgen/ans b/wally-pipelined/src/fpu/FMA/tbgen/ans new file mode 100644 index 000000000..a915aa9af --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tbgen/ans @@ -0,0 +1,199 @@ +c22000007fffffff 24700000ffffffef a6a00001800007ed +bfc00000000011fe 3fdfffffffffff03 bfb000000000117f +a83100000007fffe 41e0000effffffff aa21000ff0080004 +0000000000000000 001ffffffffffffe 0000000000000000 +400327ca64d70ec7 3ca0000000000001 3cb327ca64d70ec9 +0000000000000000 43e207ffffffffff 0000000000000000 +0000000000000000 3fd0000000000000 0000000000000000 +0000000000000000 3fdfffffffffffff 0000000000000000 +0000000000000000 3fe0000000000000 0000000000000000 +c870200000010000 3fefffffffffffff c87020000000ffff +c00aaa4fd557ef13 c3b8917384eb32d0 43d478efdc9216d8 +0000000000000000 7ffc000000000000 7ff8000000000000 +0000000000000000 c18aca47203438e2 0000000000000000 +0000000000000000 4000000000000001 0000000000000000 +47efff0008000000 b1dcb0523546117f b9dcaf6cb9e07bdb +43f000ffffff7fff 22300000001fffdf 26300100001f81de +402ff000001fffff 40759558e27de226 40b58a8e3622388e +0000000000000000 40efdeffffffffff 0000000000000000 +0000000000000000 434fffffffffffff 0000000000000000 +7ffc000000000000 7fe0000000000000 7ff8000000000000 +b35e061abc769f3a c078000003fffffe 33e684941119bac2 +403a793cfb1e2471 bff0000100007fff c03a793ea2b2c7eb +3d1ffffbfe000000 216898822a24af3f 1e98987f158ae1d8 +bfb00000001bffff 7ffc000000000000 7ff8000000000000 +37f0000000efffff c3d00007fffffeff bbd0000800efff75 +0000000000000000 ffefff8000080000 0000000000000000 +3fb00200000000ff c0000000011fffff bfc00200012024fd +41c0000007ffffff 49103fffefffffff 4ae03ffff81ffff6 +407effbfffffffff 3e00000040001fff 3e8effc07bff3dfd +c1f00013fffffffe 7ffc000000000000 7ff8000000000000 +c3f00004000001ff c3d00bfffffffffe 47d00c04030001ff +403b5ab30b28be12 bfdfffffffffffff c02b5ab30b28be11 +0000000000000000 c1cfffffff87ffff 0000000000000000 +0000000000000000 bfe0000000000001 0000000000000000 +801ffc000007ffff bfeffffffffffffe 001ffc000007fffe +0000000000000000 ffe0000005fffffe 0000000000000000 +0000000000000000 bfffffffffffffff 0000000000000000 +0000000000000000 c000000000000000 0000000000000000 +c3d09308769f3f51 c00fffffffffffff 43f09308769f3f51 +0000000000000000 402ffffdfefffffe 0000000000000000 +0000000000000000 c010000000000001 0000000000000000 +c01fffffffc00fff c01ffffffffffffe 404fffffffc00ffe +c025e14360f49046 412fff0000000003 c165e09456d988a3 +0000000000000000 43ee59a2f1155c8b 0000000000000000 +3fe0000000008fff 802ffffff7fffff6 801ffffff8011ff3 +0000000000000000 ffefffffffffffff 0000000000000000 +40401007fffffffe fff0000000000000 80401007fffffffe +0000000000000000 c0045abb4860cbf3 0000000000000000 +0000000000000000 7ffc000000000000 7ff8000000000000 +bffffffec0000000 c000000000003eff 400ffffec0007dfe +48000000004001ff 41f331de979ac49e 4a0331de97e78e7e +3d0fffffbff7ffff 7ffc000000000000 7ff8000000000000 +43d3ffffff000000 3caffffffffffffe 4093fffffeffffff +7ffc000000000000 43dfff8004000000 7ff8000000000000 +bcaffe0000000008 3fd00008000000ff bc8ffe0fff000205 +404ffbfffffffffc c34ffff8003fffff c3affbf8013ff7fb +43e0000000000082 3db000003ffffeff 41a000003fffff82 +c1d004000ffffffe 4000000000000000 c1e004000ffffffe +c00fffffc000007e c02ffffdfffffbff 404ffffdc000007e +409dfffbffffffff 4010000000000001 40bdfffc00000001 +c120000003ffffe0 c06000fffbffffff 4190010000003fde +3fd1f7ffffffffff c01000001dffffff bff1f80021b0fffd +2e0fefdfffffffff 4030000020000040 2e4fefe03fdfc07f +43c0000803ffffff 3fcfffffffffffff 43a0000803ffffff +c0afffffbffffdfe 3fc07ffdffffffff c0807ffddf0002f5 +c0fffffffeffffee 55139bb9349e058c d6239bb9340127b7 +41ffdbaf18ce06bd 8010000000000000 821fdbaf18ce06bd +c0e1000000080000 801ffffffffffffe 011100000007ffff +3fbffffff0000007 c807dfffffffffff c7d7dffff4100004 +c357b53537b96da5 bfd0000000000000 4337b53537b96da5 +401fffffffffffff ffebff8000000000 801bff7fffffffff +c7eff77bf2b59c3c bfe0000000000001 47dff77bf2b59c3e +380c3f72cc3dec98 c3fffffffbffffff bc1c3f72c8b5fe3d +b8e0000003fbffff c503f4d44f4bf888 3df3f4d454443066 +3f3ffffc001fffff c000000000000001 bf4ffffc00200000 +c340002000004000 c0db3367e0423019 442b339e47125d6b +4f60000801ffffff 41c07fe000000000 51307fe841fffbff +c1ffffffbfefffff c340000000000001 454fffffbff00001 +404fff7fffffff7f 48ab7e2aad4ec686 490b7dbcb4a410dd +7ffc000000000000 ffefffffffffffff 7ff8000000000000 +41e189ea1a6fff97 7ffc000000000000 7ff8000000000000 +3ff0ee9046c9330f 8479e1e79766e02b 847b63d14ff91acb +d2f805130a8c11df 43effffdfdfffffe d6f8051188ba9004 +4f1fffbfffe00000 bcd02000000007ff cc001fdfbfefe7fe +be70000077ffffff c1efffffffffffff 4070000077ffffff +41e1ffffbffffffe 3caffffffffffffe 3ea1ffffbffffffd +3bbd976272fb1d2a c06ffff80007fffe bc3d975b0d29e641 +434fff01ffffffff 403dfeffffffffff 439dfe11e7efffff +be6fff7fffffffff 3feffffffffffffe be6fff7ffffffffd +41d007ff80000000 41f0fffffffc0000 43d1087f77fbfe01 +ffeef7a206029708 bdcfa4109a3a5b22 7dce9eaa2542875b +3b6ffffffeffffc0 3c7ffffe003ffffe 37fffffdff3fffce +c1d1ffffffbfffff bfcffffefffff800 41b1ffff6fbffb82 +2030000000000090 c05e2e90015c47a1 a09e2e90015c48b0 +bbf000000007efff 001fe0000007fffe fc1fe0000017d01c +41cae866712069f4 c02fffffffffffff c20ae866712069f3 +bfce1e32ccf56348 3ca1f66d4c8eeef3 bc80e7fa025544da +ffedfffff0000000 ffeffff000000800 3fedfff0f0000f80 +37effffc3ffffffe bca0fffffffffffd b4a0fffe01fffffb +bc950a021bf9dee1 3db0001fffdffffe ba550a2c2fd402cd +fd4fffffdfffffef 41cffffdffffffef ff2ffffde00001de +bfc00000004007ff bcafffffffffffff 3c800000004007ff +c009130b80fe8274 b811571307061a38 382b2cb1993b60f3 +c0600000ffffffdf 7feda1b8c591f9c6 805da1ba9fad85e2 +c1e4af3f8d45e031 3ca0020002000000 be94b1d577cd70de +3800008100000000 b810000020000080 b020008120010280 +372ff00000003fff 7fe000fdfffffffe 771ff1fb02003fff +47d00021fffffffe c00fffffffffffff c7f00021fffffffd +bfbc9ea0c2b4884b 43f4a552574073d5 c3c277000b21a4e7 +bf1fe0000000ffff c01ffffffffffffe 3f4fe0000000fffe +41ffffffff7ffffb 0027ffffffffeffe 0237ffffff9feffb +c7e040000fffffff ffe0000000000000 07d040000fffffff +7ffc000000000000 3fe0000ffffff7ff 7ff8000000000000 +c1effc1fffffffff 7ffc000000000000 7ff8000000000000 +c0d000000001ffbf c03ba46e644e4e9c 411ba46e6451c2ba +c4500000005fffff c03a20ab4de47fc9 449a20ab4e8143cc +400e00000000007e 001fffffffffffff 003e00000000007e +45a01fffff7fffff c3c0020200000000 c9702206037fefee +3e8ff800000000ff 3caffffffffffffe 3b4ff800000000fe +be004000000007fe 3fdffff7ff7fffff bdf03ffbefbf07fd +b11000007ffffe00 3fe0000000000000 b10000007ffffe00 +b80cef50bd17db40 c05fffc00000000e 387cef16de76611d +3d4000ffffffffff 3d47f68d8eb6b9a4 3a97f80cf78fa50f +ffe3fffffffffffb c03dc3321aaa5380 003299ff50aa742c +3ca3fffffffffeff bf02ffafb4e9241d bbb7bf9ba2236bf3 +53598c812c3c39dd 3f20000100fffffe 52898c82c69d14b1 +c3dffffff8000001 3fe0020000003ffe c3d001fffbffbffe +7ba00800003fffff 3ff9a9a129c791b3 7ba9b675fac31bff +c3d0000fffffffef 7fe0000000000001 83c0000ffffffff0 +c34f80001fffffff b7fffffe0007ffff 3b5f7ffe2807ddff +0010000000001ff8 4800020000010000 0820020000011ffc +2c4c0000003fffff 230ffffc00400000 0f6bfffc8077fff8 +381fffffffbff7fe 8010000000000000 f83fffffffbff7fe +802d3018ea8c241d c007fdffffffffff 0045e23fae5a7253 +43e047fffffffffe 4000003ffdfffffe 43f048411df6fffc +c000005fffffffff 403ffffffff00002 c050005ffff7ffd0 +3fc8b60e46a80f6d bfdffffffffffffe bfb8b60e46a80f6b +bd5fdffdffffffff 5644b72ace1bbb6b d3b4a27257daf2cd +b80010001fffffff 40e01ffffff7fffe b8f030202037f7fc +407000003ffbfffe 38042862fe8e3368 388428634f2ab547 +bf8ffbfff7ffffff c00fffffffffffff 3faffbfff7ffffff +bcafc000003fffff c010000000000001 3ccfc00000400001 +47eddf042473ef08 b7e00000fe000000 bfdddf05fea850ca +3fbfffff7fffffef c340ffffffffffbf c310ffffbbffffb5 +c02f8000000007ff ffe0000000000001 001f800000000801 +002f37ebf6c8eaec c08be464f4c81c69 80cb36000706e168 +c00e800000000000 7ffc000000000000 7ff8000000000000 +0010000000000000 0000000000000000 0000000000000000 +bfffc00000000003 391001ffffffffff b91fc3f800000001 +c1db54446247aa52 bfcc001fffffffff 41b7e9d72a43174f +0010000000000000 c0392c59c8e48f37 80592c59c8e48f37 +0010000000000000 c0000800000001ff 80200800000001ff +0010000000000000 c1d0000004000fff 81f0000004000fff +4030040000200000 0017055f48beeff5 00570b20a0bf2a70 +bc7000000000ffee c1e0001100000000 3e6000110000fff0 +c040000000007fff c3b2a6c91c557f56 4402a6c91c56148c +41ffffffff003fff c3b0000007ffffee c5c0000007801fed +21900001dfffffff bf20000017fffffe a0c00001f80002cc +0029954d0f0df5b3 41e00000000003ff 0219954d0f0dfc17 +b810000020000001 47ffdfffffffff80 c01fe0003fbfff81 +0010000000000000 ffeffff800007fff c00ffff800007fff +0010000000000000 4010000000000000 0030000000000000 +bf700000000100ff 401fffffffffffff bfa00000000100fe +37feffffffffffff 47ef8000000fffff 3ffe8400000f7fff +b80f800001fffffe 44e00000ffff7fff bcff8001f9ff041c +0010000000000000 434ffffffffffffe 036ffffffffffffe +41ffffdfffff8000 7fe0000000000001 01efffdfffff8002 +b80a16ad02c87cd3 380fffffffffe7fe b02a16ad02c86940 +47f0fffffffffffb 7ffc000000000000 7ff8000000000000 +0010000000000000 41ffffffffbfff7f 021fffffffbfff7f +0010000000000000 8000000000000000 0000000000000000 +c3d00001000001ff b7f60cb3edb38762 3bd60cb54e7ec8fe +0010000000000000 8010000000000001 c030000000000001 +43c0007fffdfffff 801ffffffffffffe 83f0007fffdffffd +c7efffffdffffbff bca0000000000001 449fffffdffffc01 +0010000000000000 c11ff00000000003 813ff00000000003 +0010000000000000 bfd0000000000000 ffefffffffffffff +c0ffffffffeffffe bfdfffffffffffff 40efffffffeffffe +6f7000000001fdff 1510010000000fff 4490010000020e1e +37f002000000000f b1effcfffffffffe a9f0007fd000000d +cc3050bc013d7cd7 bff0000000000000 4c3050bc013d7cd7 +0010000000000000 87fff0000000fffe c81ff0000000fffe +0010000000000000 bffffffffffffffe 801ffffffffffffe +43effbfffffff7ff 7fefffffff801ffe 03effbffff8027fa +c015834380f2b995 3f9fff0000000400 bfc5829766d6b4af +0010000000000000 41dfffffc0001000 01ffffffc0001000 +0010000000000000 c01fffffffffffff 803fffffffffffff +41e010000000001f c5b04000000fffff c7a050400010101e +3b40018000000000 3ea0400000000100 39f0418600000101 +0010000000000000 4cdffeffff7fffff 0cfffeffff7fffff +16dff0001ffffffe 3fb500ae0796659d 16a4f62dc5934871 +b7e003ffffffff7f deafffffeffffffd 56a003fff7fdff7e +406000001fffbfff 3f20020000080000 3f900200200bbff8 +0010000000000000 7ffc000000000000 7ff8000000000000 +439fbffffffbffff bf8454fd38ef0ba0 c3342c533e7aa2e8 +c1c000000200007e bf000001ffffffbf 40d000020200007e +480000000008fffe 001637e790e69de2 082637e790f31d52 +bffffffc000003fe 3ca0000000000001 bcaffffc000003ff +6b4848a9a8c0dcd5 480ffffffffbdfff 736848a9a8bdbb77 diff --git a/wally-pipelined/src/fpu/FMA/tbgen/output b/wally-pipelined/src/fpu/FMA/tbgen/output new file mode 100644 index 000000000..89af60799 --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tbgen/output @@ -0,0 +1,199 @@ +c22000007fffffff 24700000ffffffef a6a00001800007ee +bfc00000000011fe 3fdfffffffffff03 bfb000000000117f +a83100000007fffe 41e0000effffffff aa21000ff0080004 +0000000000000000 001ffffffffffffe 0000000000000000 +400327ca64d70ec7 3ca0000000000001 3cb327ca64d70ec8 +0000000000000000 43e207ffffffffff 0000000000000000 +0000000000000000 3fd0000000000000 0000000000000000 +0000000000000000 3fdfffffffffffff 0000000000000000 +0000000000000000 3fe0000000000000 0000000000000000 +c870200000010000 3fefffffffffffff c87020000000ffff +c00aaa4fd557ef13 c3b8917384eb32d0 43d478efdc9216d7 +0000000000000000 7ffc000000000000 7ffc000000000000 +0000000000000000 c18aca47203438e2 8000000000000000 +0000000000000000 4000000000000001 0000000000000000 +47efff0008000000 b1dcb0523546117f b9dcaf6cb9e07bdc +43f000ffffff7fff 22300000001fffdf 26300100001f81de +402ff000001fffff 40759558e27de226 40b58a8e3622388d +0000000000000000 40efdeffffffffff 0000000000000000 +0000000000000000 434fffffffffffff 0000000000000000 +7ffc000000000000 7fe0000000000000 7ffc000000000000 +b35e061abc769f3a c078000003fffffe 33e684941119bac1 +403a793cfb1e2471 bff0000100007fff c03a793ea2b2c7eb +3d1ffffbfe000000 216898822a24af3f 1e98987f158ae1d8 +bfb00000001bffff 7ffc000000000000 7ffc000000000000 +37f0000000efffff c3d00007fffffeff bbd0000800efff76 +0000000000000000 ffefff8000080000 8000000000000000 +3fb00200000000ff c0000000011fffff bfc00200012024fe +41c0000007ffffff 49103fffefffffff 4ae03ffff81ffff6 +407effbfffffffff 3e00000040001fff 3e8effc07bff3dfd +c1f00013fffffffe 7ffc000000000000 7ffc000000000000 +c3f00004000001ff c3d00bfffffffffe 47d00c04030001fe +403b5ab30b28be12 bfdfffffffffffff c02b5ab30b28be11 +0000000000000000 c1cfffffff87ffff 8000000000000000 +0000000000000000 bfe0000000000001 8000000000000000 +801ffc000007ffff bfeffffffffffffe 001ffc000007fffd +0000000000000000 ffe0000005fffffe 8000000000000000 +0000000000000000 bfffffffffffffff 8000000000000000 +0000000000000000 c000000000000000 8000000000000000 +c3d09308769f3f51 c00fffffffffffff 43f09308769f3f50 +0000000000000000 402ffffdfefffffe 0000000000000000 +0000000000000000 c010000000000001 8000000000000000 +c01fffffffc00fff c01ffffffffffffe 404fffffffc00ffd +c025e14360f49046 412fff0000000003 c165e09456d988a4 +0000000000000000 43ee59a2f1155c8b 0000000000000000 +3fe0000000008fff 802ffffff7fffff6 801ffffff8011ff4 +0000000000000000 ffefffffffffffff 8000000000000000 +40401007fffffffe fff0000000000000 fff0000000000000 +0000000000000000 c0045abb4860cbf3 8000000000000000 +0000000000000000 7ffc000000000000 7ffc000000000000 +bffffffec0000000 c000000000003eff 400ffffec0007dfe +48000000004001ff 41f331de979ac49e 4a0331de97e78e7d +3d0fffffbff7ffff 7ffc000000000000 7ffc000000000000 +43d3ffffff000000 3caffffffffffffe 4093fffffeffffff +7ffc000000000000 43dfff8004000000 7ffc000000000000 +bcaffe0000000008 3fd00008000000ff bc8ffe0fff000206 +404ffbfffffffffc c34ffff8003fffff c3affbf8013ff7fb +43e0000000000082 3db000003ffffeff 41a000003fffff81 +c1d004000ffffffe 4000000000000000 c1e004000ffffffe +c00fffffc000007e c02ffffdfffffbff 404ffffdc000007d +409dfffbffffffff 4010000000000001 40bdfffc00000001 +c120000003ffffe0 c06000fffbffffff 4190010000003fde +3fd1f7ffffffffff c01000001dffffff bff1f80021b0fffe +2e0fefdfffffffff 4030000020000040 2e4fefe03fdfc07f +43c0000803ffffff 3fcfffffffffffff 43a0000803fffffe +c0afffffbffffdfe 3fc07ffdffffffff c0807ffddf0002f6 +c0fffffffeffffee 55139bb9349e058c d6239bb9340127b7 +41ffdbaf18ce06bd 8010000000000000 821fdbaf18ce06bd +c0e1000000080000 801ffffffffffffe 011100000007ffff +3fbffffff0000007 c807dfffffffffff c7d7dffff4100004 +c357b53537b96da5 bfd0000000000000 4337b53537b96da5 +401fffffffffffff ffebff8000000000 fff0000000000000 +c7eff77bf2b59c3c bfe0000000000001 47dff77bf2b59c3e +380c3f72cc3dec98 c3fffffffbffffff bc1c3f72c8b5fe3e +b8e0000003fbffff c503f4d44f4bf888 3df3f4d454443065 +3f3ffffc001fffff c000000000000001 bf4ffffc00200001 +c340002000004000 c0db3367e0423019 442b339e47125d6b +4f60000801ffffff 41c07fe000000000 51307fe841fffbff +c1ffffffbfefffff c340000000000001 454fffffbff00001 +404fff7fffffff7f 48ab7e2aad4ec686 490b7dbcb4a410dc +7ffc000000000000 ffefffffffffffff 7ffc000000000000 +41e189ea1a6fff97 7ffc000000000000 7ffc000000000000 +3ff0ee9046c9330f 8479e1e79766e02b 847b63d14ff91acb +d2f805130a8c11df 43effffdfdfffffe d6f8051188ba9004 +4f1fffbfffe00000 bcd02000000007ff cc001fdfbfefe7ff +be70000077ffffff c1efffffffffffff 4070000077fffffe +41e1ffffbffffffe 3caffffffffffffe 3ea1ffffbffffffd +3bbd976272fb1d2a c06ffff80007fffe bc3d975b0d29e642 +434fff01ffffffff 403dfeffffffffff 439dfe11e7effffe +be6fff7fffffffff 3feffffffffffffe be6fff7ffffffffd +41d007ff80000000 41f0fffffffc0000 43d1087f77fbfe00 +ffeef7a206029708 bdcfa4109a3a5b22 7dce9eaa2542875b +3b6ffffffeffffc0 3c7ffffe003ffffe 37fffffdff3fffce +c1d1ffffffbfffff bfcffffefffff800 41b1ffff6fbffb81 +2030000000000090 c05e2e90015c47a1 a09e2e90015c48b1 +bbf000000007efff 001fe0000007fffe 8000000000000000 +41cae866712069f4 c02fffffffffffff c20ae866712069f3 +bfce1e32ccf56348 3ca1f66d4c8eeef3 bc80e7fa025544db +ffedfffff0000000 ffeffff000000800 7ff0000000000000 +37effffc3ffffffe bca0fffffffffffd b4a0fffe01fffffc +bc950a021bf9dee1 3db0001fffdffffe ba550a2c2fd402ce +fd4fffffdfffffef 41cffffdffffffef ff2ffffde00001de +bfc00000004007ff bcafffffffffffff 3c800000004007fe +c009130b80fe8274 b811571307061a38 382b2cb1993b60f2 +c0600000ffffffdf 7feda1b8c591f9c6 fff0000000000000 +c1e4af3f8d45e031 3ca0020002000000 be94b1d577cd70df +3800008100000000 b810000020000080 b020008120010280 +372ff00000003fff 7fe000fdfffffffe 771ff1fb02003fff +47d00021fffffffe c00fffffffffffff c7f00021fffffffd +bfbc9ea0c2b4884b 43f4a552574073d5 c3c277000b21a4e8 +bf1fe0000000ffff c01ffffffffffffe 3f4fe0000000fffd +41ffffffff7ffffb 0027ffffffffeffe 0237ffffff9feffa +c7e040000fffffff ffe0000000000000 7ff0000000000000 +7ffc000000000000 3fe0000ffffff7ff 7ffc000000000000 +c1effc1fffffffff 7ffc000000000000 7ffc000000000000 +c0d000000001ffbf c03ba46e644e4e9c 411ba46e6451c2ba +c4500000005fffff c03a20ab4de47fc9 449a20ab4e8143cb +400e00000000007e 001fffffffffffff 003e00000000007d +45a01fffff7fffff c3c0020200000000 c9702206037fefef +3e8ff800000000ff 3caffffffffffffe 3b4ff800000000fd +be004000000007fe 3fdffff7ff7fffff bdf03ffbefbf07fd +b11000007ffffe00 3fe0000000000000 b10000007ffffe00 +b80cef50bd17db40 c05fffc00000000e 387cef16de76611d +3d4000ffffffffff 3d47f68d8eb6b9a4 3a97f80cf78fa50e +ffe3fffffffffffb c03dc3321aaa5380 7ff0000000000000 +3ca3fffffffffeff bf02ffafb4e9241d bbb7bf9ba2236bf3 +53598c812c3c39dd 3f20000100fffffe 52898c82c69d14b0 +c3dffffff8000001 3fe0020000003ffe c3d001fffbffbfff +7ba00800003fffff 3ff9a9a129c791b3 7ba9b675fac31bff +c3d0000fffffffef 7fe0000000000001 fff0000000000000 +c34f80001fffffff b7fffffe0007ffff 3b5f7ffe2807ddfe +0010000000001ff8 4800020000010000 0820020000011ffc +2c4c0000003fffff 230ffffc00400000 0f6bfffc8077fff7 +381fffffffbff7fe 8010000000000000 8000000000000000 +802d3018ea8c241d c007fdffffffffff 0045e23fae5a7253 +43e047fffffffffe 4000003ffdfffffe 43f048411df6fffc +c000005fffffffff 403ffffffff00002 c050005ffff7ffd0 +3fc8b60e46a80f6d bfdffffffffffffe bfb8b60e46a80f6b +bd5fdffdffffffff 5644b72ace1bbb6b d3b4a27257daf2cd +b80010001fffffff 40e01ffffff7fffe b8f030202037f7fd +407000003ffbfffe 38042862fe8e3368 388428634f2ab547 +bf8ffbfff7ffffff c00fffffffffffff 3faffbfff7fffffe +bcafc000003fffff c010000000000001 3ccfc00000400001 +47eddf042473ef08 b7e00000fe000000 bfdddf05fea850cb +3fbfffff7fffffef c340ffffffffffbf c310ffffbbffffb6 +c02f8000000007ff ffe0000000000001 7ff0000000000000 +002f37ebf6c8eaec c08be464f4c81c69 80cb36000706e169 +c00e800000000000 7ffc000000000000 7ffc000000000000 +0010000000000000 0000000000000000 0000000000000000 +bfffc00000000003 391001ffffffffff b91fc3f800000001 +c1db54446247aa52 bfcc001fffffffff 41b7e9d72a43174f +0010000000000000 c0392c59c8e48f37 80592c59c8e48f37 +0010000000000000 c0000800000001ff 80200800000001ff +0010000000000000 c1d0000004000fff 81f0000004000fff +4030040000200000 0017055f48beeff5 00570b20a0bf2a70 +bc7000000000ffee c1e0001100000000 3e6000110000ffef +c040000000007fff c3b2a6c91c557f56 4402a6c91c56148b +41ffffffff003fff c3b0000007ffffee c5c0000007801fed +21900001dfffffff bf20000017fffffe a0c00001f80002cd +0029954d0f0df5b3 41e00000000003ff 0219954d0f0dfc17 +b810000020000001 47ffdfffffffff80 c01fe0003fbfff82 +0010000000000000 ffeffff800007fff c00ffff800007fff +0010000000000000 4010000000000000 0030000000000000 +bf700000000100ff 401fffffffffffff bfa00000000100fe +37feffffffffffff 47ef8000000fffff 3ffe8400000f7ffe +b80f800001fffffe 44e00000ffff7fff bcff8001f9ff041c +0010000000000000 434ffffffffffffe 036ffffffffffffe +41ffffdfffff8000 7fe0000000000001 7ff0000000000000 +b80a16ad02c87cd3 380fffffffffe7fe b02a16ad02c86940 +47f0fffffffffffb 7ffc000000000000 7ffc000000000000 +0010000000000000 41ffffffffbfff7f 021fffffffbfff7f +0010000000000000 8000000000000000 8000000000000000 +c3d00001000001ff b7f60cb3edb38762 3bd60cb54e7ec8fd +0010000000000000 8010000000000001 8000000000000000 +43c0007fffdfffff 801ffffffffffffe 83f0007fffdffffe +c7efffffdffffbff bca0000000000001 449fffffdffffc01 +0010000000000000 c11ff00000000003 813ff00000000003 +0010000000000000 bfd0000000000000 8000000000000000 +c0ffffffffeffffe bfdfffffffffffff 40efffffffeffffd +6f7000000001fdff 1510010000000fff 4490010000020e1e +37f002000000000f b1effcfffffffffe a9f0007fd000000e +cc3050bc013d7cd7 bff0000000000000 4c3050bc013d7cd7 +0010000000000000 87fff0000000fffe 8000000000000000 +0010000000000000 bffffffffffffffe 801ffffffffffffe +43effbfffffff7ff 7fefffffff801ffe 7ff0000000000000 +c015834380f2b995 3f9fff0000000400 bfc5829766d6b4b0 +0010000000000000 41dfffffc0001000 01ffffffc0001000 +0010000000000000 c01fffffffffffff 803fffffffffffff +41e010000000001f c5b04000000fffff c7a050400010101e +3b40018000000000 3ea0400000000100 39f0418600000100 +0010000000000000 4cdffeffff7fffff 0cfffeffff7fffff +16dff0001ffffffe 3fb500ae0796659d 16a4f62dc5934870 +b7e003ffffffff7f deafffffeffffffd 56a003fff7fdff7d +406000001fffbfff 3f20020000080000 3f900200200bbff7 +0010000000000000 7ffc000000000000 7ffc000000000000 +439fbffffffbffff bf8454fd38ef0ba0 c3342c533e7aa2e8 +c1c000000200007e bf000001ffffffbf 40d000020200007d +480000000008fffe 001637e790e69de2 082637e790f31d51 +bffffffc000003fe 3ca0000000000001 bcaffffc00000400 +6b4848a9a8c0dcd5 480ffffffffbdfff 736848a9a8bdbb76 diff --git a/wally-pipelined/src/fpu/FMA/tbgen/results.dat b/wally-pipelined/src/fpu/FMA/tbgen/results.dat new file mode 100644 index 000000000..e6165c5dd --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tbgen/results.dat @@ -0,0 +1 @@ +0020000803ffffff bfcb4181a9468e24 000fffffffffffff 7fe2f9c2bca0f33c 00092f9c2bca0f33 Wrong zdenorm 18 diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tb b/wally-pipelined/src/fpu/FMA/tbgen/tb new file mode 100755 index 0000000000000000000000000000000000000000..b4f39635ef37a5f5faa21f47959c71ddcf923359 GIT binary patch literal 13120 zcmeHNeQ;FQb-&Vrkg&ZH4qyQ;Tw|~$g4RMvij1RpSFqyA6&Pb-ry=rVrG1MwS?z9j z-y(@%M~uKmb>(W3ri1%2Lz9_|<4GDOnI;UKfC#Qh(o9D2OdY08$BY|yBoe!_<2b5= zy*=mNd*0snw2NtG@=wQCqdoWhe&?L~ec#vpe7L)_ysV5-DrcWys7+S{1tfnNoBF6w z71qY8Sdgt{Ygh#!i{U>g7?d(ca$bcdS*h%NAQ!=ZTe$?<%7Y?9@^%R`l2k*KSY9Co zRaVLktE5VjF)je~!@Ab26)MOBB11Bv>XBBG{7^-|I^|cV{76o#ijk!DVcYP(N5$(Y z4}ykz5Cz*IehU(9G3|NHj$(fPHlczHiVVqS2{V%9_YnADJ#RGCD8s#~yi)x#r`ktS zsqCIaysx$SoW52?atl%L`l?-95k%+a`?wNfc#gw zGQWN2$8U9S`}=V2!puL8q#yh41p3lHWN$dtg5|A6tT&dxx0b*kDuIVe;JgIh4>)q( zv>AY6^}MMBj<&_@yGr2OO5hB}tsjS}mBnI-Ty}uPQfVv6vUVofpB`Z`D-~n0{zNKk zvB5|pk?LpJk*sYEve-~2Zd)vt&cu^;j2*OW7_`#5ul1v zB@b!iyQ@IQuAQA0`dg@Dm(ETJ{VM7{)K3fjRn)NyXHNU)&5jEF zN2p_0&8CI^ebljwW)BGcEb7=bvwMX8E!43~W`jb19(C-B*+$T}yxukb)5nbQSB z%QF4>IG@g&H9)eQ!yS&Flojw`0}ob})A4Dd@O;M#CrwV{G1UjK4Ni-h1&3 z#1kF%cJFzl@>iCq6<1b48 zSC#*0`(mgs%Prdno-lK5vYN=gysiE;#>X z_?h{tgl5it9ie|f=!+7%a{k+>tpM#(cpgJ4G5ZvZq4D&-8DnDCWn&^dZH)f}qkk6t zj!#veI4byE)4-iRi_2IUJpW!k|6+Iws|1{}4ERZ%|1-g#B7VIwaU3UtZgNnVjFQP# zFkv2(9cXgA22irv0aiGJ&f;8Eby+K{`h?ZQzSB^pE9YK-_CiBMch9tgfibafQZPT$ znL7pZC9IktXLPbcl2|E0{!S-nuSxVQE~0b(YOT1R5Csf7ce_q~+eK~Csgo|MO{X4L zlretc>`IJ@WuET@lbM$^YK24fBK2L3!i$Xb$|Ci*MX4u|I;v5HfX^Zo(7b>N7>DNu(YuO3fkF zT$I|g0;p9QRp^b=NWK3*g(erMIi&tmqaG{Na3xSbC`wHt^^Ky`98zB>O6|D~s3D-9 z-giwb{ci%`%#1hY^ZBEXUyH#i%&kEhC+W>jZGMQ(+qAfN*^>+6Wu(>tH5R^BCOt3B zyaM6I!t-TgkI#SV^UDF9!5#QnKw$$uW@`OZSo^PFpqIgff^3p`;kp*`KfD+VRIfV* zB{LSA3_The&xaoA8hIBBurYhz zQUQ&4fx`=JBFU`RDw70cV^jsn9Cm4gE-kHVRwR=c$yh30U!w{@aMntIHKBbYX#m=J z)7_3CKxw!k-{Q7Pr?Pf3mBDh+_s%Vi@@^2@e9t|+D;y5T>&DE8S?B#c~!`Nk|QjcZwx;q>j#R6W>`>ccU zB!;T0+8`g;>SF25eEr6a1Kj)1AI+qa2l@KVuy!_&Z04{$HuIs)Sdvp6hyxWG;_b5D zuAYH`spqazhT0nrTbUGJ@9}@4?g*5D)o*F)t;d!Ly=4ou%@blcYKiGiAw>D$KjQKp z*nm(meU`OzjyI@24krGqb2-*pT!H)(=%IO zhk&i2Sp8J|5{pP~4hzWtOMGWNyQVZwP1t-K(z8gt_5ahHU8?@hIxii6;U;jS@x@ik zDdBoE04&{eK+HGI{{v%PjxGxPCN0fQOIBOWcl`6DtsLkP_*Ep02{x_=doR^!(a0k z=i>;8PP;ctAh!tl3^E!pJ{Cj4z7e`CmB*Wu?K{#vl_@K=g@ejVJ? z5XXH7ia|e2ANIh9J@8=<{QvKP$t6M2$h4BwVzvD{-&pV^2Bs^EgF@aSei=LFm%924 z>wITjqj-G7foZiAtX6$b#eE(V@xOULpF;g)c@Ty3&3Dcxb^7LVrd;ak@rgYFwwUPK zNUc=a3MEPSD8mnk9PRnsbDg7aIJYVLsYOANBm6m~Q@yD?`j$gFyd@XyIic*~O|j6a zU+0vbRJrrDUs;ok~8UWK79JN z<8|-_xSlr$+5#=Ssc}n7V{6k^UbokZawB3(ykYCT^*3(Z++5FCAUiT>NBTh887T)S zCtp&q0KBlU0-=ts20L<4X$Ozv0$)f2(UBy?lhV#e1|IRU@UF$B zn80PMLcM=lYR?q4uVA!}-S$gZvH9h%yS(ID7?{whZOF;ZapgE7wSp-ZA{<``*T9Yq3a;1B0USgWkts24B*Au zRjR$;6LFR?zA6a0Li!iT7V8JJC>H-`!u8e#^I=BBSvc-*Dtqs|S_Bm>D>Ck@0lyXc zAHSYsqU+-(feXm>b3fqRg-B(;z!%OR{3KGtY8T9(LBR17q&FQE_`-GfR0;dPDS_ih zSS;5&pD&fL|9J`g4Zyj#lAyl___Fe9cG9yCEQJnS#tQqxBIUaZaO`J1o`A^`zl_xj zTq&ApFM&S{@OXlr9#Qe>JRfnr%HF$vrlBg%$4H8`>2%!@GAtjb-&I@A8N;bH|_T4(;mN z4ptf?PGK=~XZM30p>FfR&d!I!J!Vg+qdSb@#6hk8Y)({^PJ9J}`T;Got7n&4=&GJw z+p(j1B7N}E2=6cCsV-((;$}mh6Z1q6H#qXln1}J66!X$r0qT^Q+XBy~xe?D%GZ>a^ z${c{tQczv9>p`e(G@dkbSqnO>(0uGLb-2wPPM(N!V=$E9tUA_&yDOC!N8QBPIgkAV zhs?cdrfp9|vRRmB>a3jGP=20qW2Ol`PQ#BwK@-$95MsoOthwI@!sjyBvYh>$?g!~y zEf+HgAI0XLALl3xEEfWzy_6qSFn zJSZ$rDuC+0SfGXHOQo{ikilm~@~8XNGYV)^4Xywi%zB^m9s$g!`O|&v9Dny*cT!Y;vLpFf@W*FM(&;|=g!1RWWAfHtqKqAe44RTZ-A_NK z{A-mVmG5o;G3DQ(?C8FGipp30hyHl4=kE{`f$LF&m}1^Gp7pauAuJ@<}cOn99~oU*=M)Btu1dR8cmq9o_%R h9a5W91NTRuHo!mi8|`bjyo!}ST_^podV+h)|6kj#(jNc- literal 0 HcmV?d00001 diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tb.c b/wally-pipelined/src/fpu/FMA/tbgen/tb.c new file mode 100644 index 000000000..0a5d42b30 --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tbgen/tb.c @@ -0,0 +1,116 @@ +#include +#include +#include + +void main() { + FILE *fp, *fq, *fr; + int cnt=0; + char *ln; + size_t nbytes = 80; + + ln = (char *)malloc(nbytes + 1); + + // fp = fopen("tb.dat","r"); + fp = fopen("testFloat","r"); + fq = fopen("tb.v","a"); + system("cp tbhead.v tb.v"); + int k=0; + for(k=0; k<91 && !feof(fp); k++) { + //3FDBFFFFFFFFFF7F DE608000000001FF 43CFED83C17EDBD0 DE4CE000000002F9 01 + // b68ffff8000000ff_3f9080000007ffff_b6307ffbe0080080_00001 + char ch; + int i,j; + char *ln; + char xrf[17]; + char y[17]; + char zrf[17]; + char ans[81]; + char flags[3]; + int rn,rz,rm,rp; + { + //my_string = (char *) malloc (nbytes + 1); + //bytes_read = getline (&my_string, &nbytes, stdin); + if(getline(&ln,&nbytes,fp) < 0) break; + //fprintf(stderr,"%s\n", ln); + + strncpy(xrf, ln, 16); xrf[16]=0; + strncpy(y, &ln[17], 16); y[16]=0; + strncpy(zrf, &ln[34], 16); zrf[16]=0; + // fprintf(stdout,"[%s]\n[%s]\n", ln,zrf); + strncpy(ans, &ln[51], 16); ans[16]=0; + strncpy(flags,&ln[68],2); flags[2]=0; + + // fprintf(stdout,"[%s]\n[%s]\n", ln,zrf); + fprintf(fq," xrf = 64'h%s;\n",xrf); + fprintf(fq," y = 64'h%s;\n",y); + fprintf(fq," zrf = 64'h%s;\n",zrf); + fprintf(fq," ans = 64'h%s;\n", ans); + // fprintf(fq," flags = 5'h%s;\n", flags); + } + + { + //rn=1; rz=0; rm=0; rp=0; + fprintf(fq," rn = %d;\n",1); + fprintf(fq," rz = %d;\n", 0); + fprintf(fq," rm = %d;\n", 0); + fprintf(fq," rp = %d;\n", 0); + } + { + fprintf(fq," earlyres = 64'b0;\n"); + fprintf(fq," earlyressel = 0;\n"); + } + { + + fprintf(fq," bypsel= 2'b0;\n"); //, bysel); + fprintf(fq," bypplus1 = 0;\n"); //, byp1); + fprintf(fq," byppostnorm = 0;\n"); //, bypnorm); + } + fprintf(fq,"#10\n"); + // IEEE 754-2008 section 6.3 states "When ether an input or result is NaN, this standard does not interpret the sign of a NaN." + //fprintf(fq," $fwrite(fp, \"%%h %%h %%h %%h \",xrf,y,w, ans);\n"); + fprintf(fq," // IEEE 754-2008 section 6.3 states: \"When ether an input or result is NaN, this\n"); + fprintf(fq," // standard does not interpret the sign of a NaN.\"\n"); + fprintf(fq," nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) ||\n"); + fprintf(fq," (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) ||\n"); + fprintf(fq," (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) ||\n"); + fprintf(fq," (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff );\n"); + // fprintf(fq," if(!(~(|xrf[62:52]) && |xrf[51:0] || ~(|y[62:52]) && |y[51:0])) begin\n"); + // not looknig at negative zero results right now + //fprintf(fq," if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) && !(w == 64'h8000000000000000 && ans == 64'b0)) begin\n"); + fprintf(fq," if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin\n"); + fprintf(fq," $fwrite(fp, \"%%h %%h %%h %%h %%h Wrong \",xrf,y, zrf, w, ans);\n"); + fprintf(fq," if(w == 64'h8000000000000000) $fwrite(fp, \"w=-zero \");\n"); + fprintf(fq," if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, \"xdenorm \");\n"); + fprintf(fq," if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, \"ydenorm \");\n"); + fprintf(fq," if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, \"zdenorm \");\n"); + fprintf(fq," if(invalid != 0) $fwrite(fp, \"invld \");\n"); + fprintf(fq," if(overflow != 0) $fwrite(fp, \"ovrflw \");\n"); + fprintf(fq," if(underflow != 0) $fwrite(fp, \"unflw \");\n"); + fprintf(fq," if(w == 64'hFFF0000000000000) $fwrite(fp, \"w=-inf \");\n"); + fprintf(fq," if(w == 64'h7FF0000000000000) $fwrite(fp, \"w=+inf \");\n"); + fprintf(fq," if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, \"w=sigNaN \");\n"); + fprintf(fq," if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, \"w=sigNaN \");\n"); + fprintf(fq," if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, \"w=qutNaN \");\n"); + fprintf(fq," if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, \"w=qutNaN \");\n"); + + fprintf(fq," if(ans == 64'hFFF0000000000000) $fwrite(fp, \"ans=-inf \");\n"); + fprintf(fq," if(ans == 64'h7FF0000000000000) $fwrite(fp, \"ans=+inf \");\n"); + fprintf(fq," if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, \"ans=sigNaN \");\n"); + fprintf(fq," if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, \"ans=sigNaN \");\n"); + fprintf(fq," if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, \"ans=qutNaN \");\n"); + fprintf(fq," if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, \"ans=qutNaN \");\n"); + fprintf(fq," $fwrite(fp,\"%d\\n\");\n",cnt); + if(cnt == 358)fprintf(fq," $stop;\n"); + // fprintf(fq," end\n"); + fprintf(fq," end\n"); + cnt++; + + //if(cnt > 100) break; + fflush(fq); + } + + fprintf(fq, "\t$stop;\n\tend\nendmodule"); + fclose(fq); + fclose(fp); +} + diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tb.v b/wally-pipelined/src/fpu/FMA/tbgen/tb.v new file mode 100644 index 000000000..136f13317 --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tbgen/tb.v @@ -0,0 +1,3952 @@ +`timescale 1 ns/10 ps +module tb; + + + reg [63:0] xrf; + reg [63:0] y; + reg [63:0] zrf; + reg [63:0] ans; + reg rn; + reg rz; + reg rm; + reg rp; + reg [63:0] earlyres; + reg earlyressel; + reg [1:0] bypsel; + reg bypplus1; + reg byppostnorm; + wire [63:0] w; + wire [63:0] wbypass; + wire invalid; + wire overflow; + wire underflow; + wire inexact; + +integer fp; +reg nan; + +localparam period = 20; +fmac UUT(.xrf(xrf), .y(y), .zrf(zrf), .rn(rn), .rz(rz), .rp(rp), .rm(rm), + .earlyres(earlyres), .earlyressel(earlyressel), .bypsel(bypsel), .bypplus1(bypplus1), .byppostnorm(byppostnorm), + .w(w), .wbypass(wbypass), .invalid(invalid), .overflow(overflow), .underflow(underflow), .inexact(inexact)); + + +initial + begin + fp = $fopen("/home/kparry/code/FMAC/tbgen/results.dat","w"); + xrf = 64'h400FEFFFFFFDFFFF; + y = 64'h4500001EFFFFFFFF; + zrf = 64'h0000000000000000; + ans = 64'h451FF03DE0FDFFF9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"0\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h44223BDB544F0B29; + ans = 64'h44223BDB544F0B29; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1\n"); + end + xrf = 64'hC2EA48415773CAAE; + y = 64'hF7FFFFFFF0000010; + zrf = 64'hC3EFFFDFFFFFFFFE; + ans = 64'h7AFA48414A4FAA0F; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2\n"); + end + xrf = 64'h7FF8CDB067A39BAF; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7FF8CDB067A39BAF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3\n"); + end + xrf = 64'h0000000000000000; + y = 64'hCFAFEFFEFFFFFFFE; + zrf = 64'hC0FFFFFFBF7FFFFE; + ans = 64'hC0FFFFFFBF7FFFFE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4\n"); + end + xrf = 64'h3FC00000000FFDFF; + y = 64'h0000000000000000; + zrf = 64'hBCA1570F41BFB2DC; + ans = 64'hBCA1570F41BFB2DC; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5\n"); + end + xrf = 64'h0000000000000000; + y = 64'hBFDFFFFDFFFFFEFF; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6\n"); + end + xrf = 64'h3FDBFFFFFFFFFF7F; + y = 64'hDE608000000001FF; + zrf = 64'h43CFED83C17EDBD0; + ans = 64'hDE4CE000000002F9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"7\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"8\n"); + end + xrf = 64'hBFDC091B6B9B61DA; + y = 64'hBF41FFFFFFFFFFDE; + zrf = 64'h0000000000000001; + ans = 64'h3F2F8A3ED90ECDDA; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"9\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'hC00FD6C97456B6F8; + ans = 64'hC00FD6C97456B6F8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"10\n"); + end + xrf = 64'hC3E8F36E6B907786; + y = 64'h3FC5C725C515C2B9; + zrf = 64'h7FE0000040080000; + ans = 64'h7FE0000040080000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"11\n"); + end + xrf = 64'hC6E000000000BFFF; + y = 64'h0000000000000000; + zrf = 64'h0000000000000001; + ans = 64'h0000000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"12\n"); + end + xrf = 64'h0000000000000000; + y = 64'h43400000FFFEFFFF; + zrf = 64'h47E61D287E42ED93; + ans = 64'h47E61D287E42ED93; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"13\n"); + end + xrf = 64'h42BC000000003FFF; + y = 64'h0000000000000000; + zrf = 64'hB1E9BC9A428F5884; + ans = 64'hB1E9BC9A428F5884; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"14\n"); + end + xrf = 64'h0000000000000000; + y = 64'h402E266600DC8429; + zrf = 64'h0000000000000001; + ans = 64'h0000000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"15\n"); + end + xrf = 64'h3FE0000000008002; + y = 64'h7A300001FFFF8000; + zrf = 64'h151001FFFDFFFFFF; + ans = 64'h7A20000200000002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"16\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h0000000000000001; + ans = 64'h0000000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"17\n"); + end + xrf = 64'h0020000803FFFFFF; + y = 64'hBFCB4181A9468E24; + zrf = 64'h000FFFFFFFFFFFFF; + ans = 64'h00092F9C2BCA0F33; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"18\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'hC00FFFFDFFC00000; + ans = 64'hC00FFFFDFFC00000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"19\n"); + end + xrf = 64'h403FFEFFFFFDFFFF; + y = 64'h480FFFFFFFFFFBFA; + zrf = 64'h38059A71C7F5B8A0; + ans = 64'h485FFEFFFFFDFBF9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"20\n"); + end + xrf = 64'h8FB0000BFFFFFFFF; + y = 64'h0000000000000000; + zrf = 64'h000FFFFFFFFFFFFF; + ans = 64'h000FFFFFFFFFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"21\n"); + end + xrf = 64'h0000000000000000; + y = 64'h4010000007FEFFFE; + zrf = 64'hC05FFFF7F7FFFFFF; + ans = 64'hC05FFFF7F7FFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"22\n"); + end + xrf = 64'h43DFFFFFFFC01FFF; + y = 64'h0000000000000000; + zrf = 64'hC010003FFFFFF7FE; + ans = 64'hC010003FFFFFF7FE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"23\n"); + end + xrf = 64'h0000000000000000; + y = 64'hC14FFFFFFFFFF77F; + zrf = 64'h000FFFFFFFFFFFFF; + ans = 64'h000FFFFFFFFFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"24\n"); + end + xrf = 64'hC80F0000FFFFFFFF; + y = 64'h80800003FFFFFFF6; + zrf = 64'h3FEFFFFF00000400; + ans = 64'h3FEFFFFF00000400; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"25\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h000FFFFFFFFFFFFF; + ans = 64'h000FFFFFFFFFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"26\n"); + end + xrf = 64'h3FA000004000FFFF; + y = 64'hBEBBDADC34FC7443; + zrf = 64'h000FFFFFFFFFFFFE; + ans = 64'hBE6BDADCA469A2C3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"27\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'hBFD00000F7FFFFFF; + ans = 64'hBFD00000F7FFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"28\n"); + end + xrf = 64'hBFCFFFFFE0000800; + y = 64'hC349D6DCD4B1B809; + zrf = 64'h2DB0000101000000; + ans = 64'h4329D6DCBADAE1AA; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"29\n"); + end + xrf = 64'h37EF000040000000; + y = 64'h0000000000000000; + zrf = 64'h000FFFFFFFFFFFFE; + ans = 64'h000FFFFFFFFFFFFE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"30\n"); + end + xrf = 64'h0000000000000000; + y = 64'h40B1D54BCBAB279F; + zrf = 64'h0DF0400000000FFF; + ans = 64'h0DF0400000000FFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"31\n"); + end + xrf = 64'hC1C0000002000007; + y = 64'h0000000000000000; + zrf = 64'h7FF0020007FFFFFF; + ans = 64'h7FF8020007FFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"32\n"); + end + xrf = 64'h0000000000000000; + y = 64'hFFD00001FFFFEFFF; + zrf = 64'h000FFFFFFFFFFFFE; + ans = 64'h000FFFFFFFFFFFFE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"33\n"); + end + xrf = 64'hB89FFE0000800000; + y = 64'hC000000008000010; + zrf = 64'h40BFFFF000000000; + ans = 64'h40BFFFF000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"34\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h000FFFFFFFFFFFFE; + ans = 64'h000FFFFFFFFFFFFE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"35\n"); + end + xrf = 64'h7FFFFFE0000FFFFF; + y = 64'h403000001EFFFFFF; + zrf = 64'h0010000000000000; + ans = 64'h7FFFFFE0000FFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"36\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'hC1E00000003FFF00; + ans = 64'hC1E00000003FFF00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"37\n"); + end + xrf = 64'h41DF6C9ACFECE989; + y = 64'hDDD000007FF80000; + zrf = 64'h3811FFFFBFFFFFFF; + ans = 64'hDFBF6C9BCB4209BB; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"38\n"); + end + xrf = 64'hBFE000007F7FFFFE; + y = 64'h0000000000000000; + zrf = 64'h0010000000000000; + ans = 64'h0010000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"39\n"); + end + xrf = 64'h0000000000000000; + y = 64'h7FDFFFFFF7FFF7FF; + zrf = 64'hC0ED55FCCA2B50EB; + ans = 64'hC0ED55FCCA2B50EB; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"40\n"); + end + xrf = 64'h3D20800000000007; + y = 64'h0000000000000000; + zrf = 64'hC7FB24E113B21D95; + ans = 64'hC7FB24E113B21D95; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"41\n"); + end + xrf = 64'h0000000000000000; + y = 64'h38F53256F1FD8142; + zrf = 64'h0010000000000000; + ans = 64'h0010000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"42\n"); + end + xrf = 64'hC7F01FFFFFFFDFFF; + y = 64'hC1ABF0533F99CA52; + zrf = 64'hC7AFFFFFFFBFFFBF; + ans = 64'h49AC2833E5F8C604; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"43\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h0010000000000000; + ans = 64'h0010000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"44\n"); + end + xrf = 64'hC3C000800000001E; + y = 64'hC00000004000FFFE; + zrf = 64'h0010000000000001; + ans = 64'h43D0008040030024; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"45\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h38069508D6E94770; + ans = 64'h38069508D6E94770; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"46\n"); + end + xrf = 64'h47ED0C441E79F5B4; + y = 64'h3FEB3443F10FF3AF; + zrf = 64'h381314487C5CB930; + ans = 64'h47E8B1CB14E9E948; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"47\n"); + end + xrf = 64'hE27F800000001FFF; + y = 64'h0000000000000000; + zrf = 64'h0010000000000001; + ans = 64'h0010000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"48\n"); + end + xrf = 64'h0000000000000000; + y = 64'h3FDF58F9EF4BA87A; + zrf = 64'h47E0001FFFFFC000; + ans = 64'h47E0001FFFFFC000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"49\n"); + end + xrf = 64'h405FFFFFFFFF7DFF; + y = 64'h0000000000000000; + zrf = 64'hB80FFFFFDFFF7FFF; + ans = 64'hB80FFFFFDFFF7FFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"50\n"); + end + xrf = 64'h0000000000000000; + y = 64'h4CA00000000020FF; + zrf = 64'h0010000000000001; + ans = 64'h0010000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"51\n"); + end + xrf = 64'h4F7FFFFFFFFFE008; + y = 64'hBD9FFBF7FFFFFFFE; + zrf = 64'h3CA9EF3DF0B18874; + ans = 64'hCD2FFBF7FFFFE00A; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"52\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h0010000000000001; + ans = 64'h0010000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"53\n"); + end + xrf = 64'h43D001FFFFFEFFFE; + y = 64'hB3B001FFFC000000; + zrf = 64'h001FFFFFFFFFFFFF; + ans = 64'hB79004003BFE7FDE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"54\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'hBFE42B7098B68BA8; + ans = 64'hBFE42B7098B68BA8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"55\n"); + end + xrf = 64'h985FFFFFBFFFFFF7; + y = 64'h3FBBEEC107717254; + zrf = 64'hBFD0100000001FFF; + ans = 64'hBFD0100000001FFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"56\n"); + end + xrf = 64'hB81FFFFFFFFFE000; + y = 64'h0000000000000000; + zrf = 64'h001FFFFFFFFFFFFF; + ans = 64'h001FFFFFFFFFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"57\n"); + end + xrf = 64'h0000000000000000; + y = 64'h2BDD9A85D2E4683C; + zrf = 64'hFFDFFFFFE0000004; + ans = 64'hFFDFFFFFE0000004; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"58\n"); + end + xrf = 64'h380FFFFFFF8001FF; + y = 64'h0000000000000000; + zrf = 64'h1B5B3B4837FBA184; + ans = 64'h1B5B3B4837FBA184; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"59\n"); + end + xrf = 64'h0000000000000000; + y = 64'h43DF7FFFFFFFFFC0; + zrf = 64'h001FFFFFFFFFFFFF; + ans = 64'h001FFFFFFFFFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"60\n"); + end + xrf = 64'hB7E49210AC9E1B87; + y = 64'hBF3FFFFFFE001FFF; + zrf = 64'hB23FFFFCFFFFFFFE; + ans = 64'h37349210AB550F0E; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"61\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h001FFFFFFFFFFFFF; + ans = 64'h001FFFFFFFFFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"62\n"); + end + xrf = 64'h403251D97A5E1D0C; + y = 64'h404705F7FFDBD87F; + zrf = 64'h001FFFFFFFFFFFFE; + ans = 64'h408A5C7E285F0A79; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"63\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'hFFEFFFFFFFFFF7EE; + ans = 64'hFFEFFFFFFFFFF7EE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"64\n"); + end + xrf = 64'h402017FFFFFFFFFF; + y = 64'h3831000FFFFFFFFF; + zrf = 64'h38159741BD9D38BC; + ans = 64'h3861C64A25ECE9C4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"65\n"); + end + xrf = 64'h3FBFEFFFFFFFFFF0; + y = 64'h0000000000000000; + zrf = 64'h001FFFFFFFFFFFFE; + ans = 64'h001FFFFFFFFFFFFE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"66\n"); + end + xrf = 64'h0000000000000000; + y = 64'h43226FDD109DA24F; + zrf = 64'hD9BFFC01FFFFFFFF; + ans = 64'hD9BFFC01FFFFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"67\n"); + end + xrf = 64'h5590001EFFFFFFFF; + y = 64'h0000000000000000; + zrf = 64'h0FB4EBC00336E272; + ans = 64'h0FB4EBC00336E272; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"68\n"); + end + xrf = 64'h0000000000000000; + y = 64'h3FB2B6972F81C429; + zrf = 64'h001FFFFFFFFFFFFE; + ans = 64'h001FFFFFFFFFFFFE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"69\n"); + end + xrf = 64'hB6EFFFFFFFFFFDDF; + y = 64'h7FD100000000003E; + zrf = 64'hC070000000003FF6; + ans = 64'hF6D0FFFFFFFFFF1C; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"70\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h001FFFFFFFFFFFFE; + ans = 64'h001FFFFFFFFFFFFE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"71\n"); + end + xrf = 64'h418023FFFFFFFFFF; + y = 64'h41D077FFFFFFFFFE; + zrf = 64'h3CA0000000000000; + ans = 64'h43609D0DFFFFFFFD; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"72\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h3D20000020100000; + ans = 64'h3D20000020100000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"73\n"); + end + xrf = 64'h3FDFFFFFFFFFC03F; + y = 64'hC1EFFFFFFFFFFC3F; + zrf = 64'hC00000007FFEFFFE; + ans = 64'hC1E00000003FDE41; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"74\n"); + end + xrf = 64'h41C0000000000002; + y = 64'h0000000000000000; + zrf = 64'h3CA0000000000000; + ans = 64'h3CA0000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"75\n"); + end + xrf = 64'h0000000000000000; + y = 64'h403978692A8E71A0; + zrf = 64'hC05EA17BB565F286; + ans = 64'hC05EA17BB565F286; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"76\n"); + end + xrf = 64'h47E70A2E50D58207; + y = 64'h0000000000000000; + zrf = 64'h3C13ABADB322843E; + ans = 64'h3C13ABADB322843E; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"77\n"); + end + xrf = 64'h0000000000000000; + y = 64'hBE8FFFFC00800000; + zrf = 64'h3CA0000000000000; + ans = 64'h3CA0000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"78\n"); + end + xrf = 64'hBFF000101FFFFFFE; + y = 64'hC00BFFFFFFFFFF7F; + zrf = 64'h3F1BAA5CC75710E9; + ans = 64'h400C00538CB98E2A; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"79\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h3CA0000000000000; + ans = 64'h3CA0000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"80\n"); + end + xrf = 64'hBE303FFFFF7FFFFF; + y = 64'hC7E0100FFFFFFFFE; + zrf = 64'h3CA0000000000001; + ans = 64'h462050503F7F7F7D; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"81\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'hC1D007FFFFFBFFFE; + ans = 64'hC1D007FFFFFBFFFE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"82\n"); + end + xrf = 64'h46D0400FFFFFFFFE; + y = 64'hC0B6AB0CA0885B97; + zrf = 64'h3FD0000080000000; + ans = 64'hC79705CF7E171D8B; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"83\n"); + end + xrf = 64'hCFB00000080FFFFF; + y = 64'h0000000000000000; + zrf = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"84\n"); + end + xrf = 64'h0000000000000000; + y = 64'h3FC000000000403F; + zrf = 64'hC1F0000000000107; + ans = 64'hC1F0000000000107; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"85\n"); + end + xrf = 64'h8160000200020000; + y = 64'h0000000000000000; + zrf = 64'hC3C00000002FFFFE; + ans = 64'hC3C00000002FFFFE; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"86\n"); + end + xrf = 64'h0000000000000000; + y = 64'h43401000000001FF; + zrf = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"87\n"); + end + xrf = 64'h4289103C0B784F2D; + y = 64'h4030000001FFFFFE; + zrf = 64'hC7F61FD7734A9B57; + ans = 64'hC7F61FD7734A9B57; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"88\n"); + end + xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"89\n"); + end + xrf = 64'h880E1FFFFFFFFFFE; + y = 64'h8CDFFFFF7FF7FFFF; + zrf = 64'h3CAFFFFFFFFFFFFF; + ans = 64'h3CAFFFFFFFFFFFFF; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + nan = (w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000) || + (w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) || + (w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) || + (w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ); + if( (nan && (w[62:0] != ans[62:0])) || (!nan && (w != ans)) ) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",xrf,y, zrf, w, ans); + if(w == 64'h8000000000000000) $fwrite(fp, "w=-zero "); + if(~(|xrf[62:52]) && |xrf[51:0]) $fwrite(fp, "xdenorm "); + if(~(|y[62:52]) && |y[51:0]) $fwrite(fp, "ydenorm "); + if(~(|zrf[62:52]) && |zrf[51:0]) $fwrite(fp, "zdenorm "); + if(invalid != 0) $fwrite(fp, "invld "); + if(overflow != 0) $fwrite(fp, "ovrflw "); + if(underflow != 0) $fwrite(fp, "unflw "); + if(w == 64'hFFF0000000000000) $fwrite(fp, "w=-inf "); + if(w == 64'h7FF0000000000000) $fwrite(fp, "w=+inf "); + if(w > 64'h7FF0000000000000 && w < 64'h7FF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w > 64'hFFF8000000000000 && w < 64'hFFF8000000000000 ) $fwrite(fp, "w=sigNaN "); + if(w >= 64'h7FF8000000000000 && w <= 64'h7FFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(w >= 64'hFFF8000000000000 && w <= 64'hFFFfffffffffffff ) $fwrite(fp, "w=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"90\n"); + end + $stop; + end +endmodule \ No newline at end of file diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tbgen b/wally-pipelined/src/fpu/FMA/tbgen/tbgen new file mode 100755 index 0000000000000000000000000000000000000000..9006e592e1c0cc5e125513d7e698d910a6873cac GIT binary patch literal 13048 zcmeHNeQXrR6`#8^#x`&^gb)KQ-Vz)PH5UWMa)Ky#w$H31LkQR;O#|z*Z_mE=zIwL@ zHf<9s1IjgZg48rZl`2I_nrywk(&~(@6FCT z&#v#3{L%hX-JEXUyx;qnnKvK1vpY}tJKLQO2czUkzxF%XA^jtto;NR>tfo7+dXNZ2rgc(t)AyO=FK6ypfr1fr- zCCZq>0kp%qR;}YK&>o&48Wi;y5R~kYMY}p-S10UQoJyEAnX97QnX`z#l4r`wHMn0lW`zl-W}~0Qu^< zqyUb(`Sd#q;P)568T4Bpc2g4zg(B(H01L$vdW@xvWUMbS#6o&J#6o?McuHr{KqM0H zW2vE(p+{NhSTbzrER;xwV@8Pe>jw0^&NK}@YAGX-G_+_S90R038jlG?V|zL~T3WSj zo^75TP$#GKlQ{?UHug7-%k-LXIm(lOVVbMy;S|UCVxBWE)k+V~Acppo6ba8wX%N;) zxQmp5Hb^+lDHJzLxV-LoC0w3&s)W;8fPVH%I5aGm9+B{h9LiXagyWc?G$7$i2?VMR z-zZa`T2#A6Vd|-IW6|`lIC!yaQc{9!cE<`($=0rfYh{fWa>x&$(#(}Cq}mGPF_be? zoOdFRA)FcK{70*ScOid{^Z!5|LpJj~=dUA=p_)0v`K!odh-OZ3{&&b@cg-X?|2Fa% zs+k_nzll7CXl6g>Uqv26Gvnoa3-F;c!1J{Ay^hRVN7T$!b@(r{`@1?WjW;auGWF8L zcmMITiw%<;h_#$O%Yb#@gf80&IXSlN9+fx8UoXQvL&d<{%0YuHQ*DEd&pd1DHS zyX3zGS7@RC@_wXG`7f)(;|?`*X*zQ|n^iOZ*|Gf)i3Qmj*>d4;9>WF_z&HNJmg;Dd=c;%CwT)uY-WarM~L=_67A7`_#`Ny#m zAXArv{ERF=%jM6Le7!nyssUOftE5ro6m~FEN4n2}rz>N}pkh!ykIVG4pa7CHT=Feh zavUX~uVyCBD^RI19J?2u$5vh7M&HH4xZQ+o*COoBqyE^hWzj|wfrO1+l|@S}qFGt= z{w=c@J{-nw%c9>15!P`P`s8(7x)kcTRyah_ojK9nC}NTb*M8ILJ``P(9L|e6QS_!H zns=z7=oLwXGuCvNM$xlEGk+bQILV4L1!y{*B3yr?TcGRE5Fv1@qbWurHJK z9qP#3^mTV+-tl#Hj?^~ap}>?K*@E<7=ca30f3Hq_?7|gt`kjx!->LVEb>yTobGMe4!sqGIOm34amYhN4~o-xL+MK z;I?>3?=#}b6bmq;*K?HhB^0A~Ko0~xMfFkpUwJj}(5K&Ql@#Z-(yF#^R16eCcK zKrsTv2oxhwj6g90#RwE5P>et^0{;&YI05g=G4%+_8MxpJOH4%R+r#UNyc`#wD_JAF z_QbTBU-5fu56`U?Jbe>cBlv0|$M+kUNdC{;**NlNon9olZ@#lGlc#SkqfV2j_eqa~ zE++bBQf;yfUs1{lU!m}%^l(D&I?6-?>3t1-Yr4zSX5%GZo+JDv!Bf4dymFyWJiIpI z?Riq@!z*ddQ#@w{9}{w6{y!)59ot?|X{nb(s|3AA&?Z6K1wABaNYJB#o)+{uL0=RU zo$hIEyyCz|ZQGT)1A0(V1BQuj+1|A2(p!!Kv{e_Y(Ggb{;WvxSl#-m9p0#*HI_Lf7aG7=oxXvwoZElZePFKxc~Wj(zz7b9*5-pGF~@FAk`Y&;LbkddGtC@DBI0u;2eE z^y$9DS-8By#o5L6u>6{S1c_xnJK`RJFA##TL=DtIFwB5Ly54x z0XW7JKigx{`IWI-92bm4svzL_;nSY*+jtdQ!|=1coW4W;ZS!aY_(6Sp{2RD`H^cJ- znD{prpgRhbs}{fy7r?&?_;Tm!1@*ki>zQZW?n@deBOMBP`rv@g1FZ+N&W?j!n#O{9 zQtuDL37w>7L^U|L6Vp?m5sYj7k$7()q6P6oq!vgIvc7mU5z!4j=xN%%V@G}^EfkK0 zwLmf%7}E5Zk%SXL$v{-sg6U{<2uvhS15LxC3ZFKycI^jzd;OY!UmH}}Z$~R=NfLgP2q1Vs(EO_KrnVhm+Mdn_TYR0`gYE4H{asp@ucgzECGZ1CeW^6B zJDp_mdgX&hnjQ=o0dcU&Dl(5ZS+NC&n(SiqW}a}O15s8DJVs?jY^S22hf;BEAP@_} z2S}~sL2wof$Fy`xhp^1I2*V=IVOiaohqtVlruC*$qE`GQ7C+i$)e*C z00+)I!J!!VGpUg@B}esSDjbhl7!71eJrY0zkxN7j=HWr{K-SYA2iDLB;fmuHl;XUf zJ^FwcsRKc9LY!%84q4NJ@?Y))H7F(!4fjDE;s&}01P6@=qRKold7>~O_+s#1xZwR8 zrh4waLC>Xh9+vh)R21sU>26?f4+6^wPxSms=S>xX6QOmM_^ptU?ddt!5DqtxqM&yB zHo$Mfo`uRk>-2KXvjU*{FXHI@zD}@gA7pTkM)splFK}?)N&wBG!KHv<*1o?w1ego{ zWKYl6vj{?>eW1yiJ}8g$2>fvmM)vd^9up0v{VCO-^oV{1>~T*=JUy>JDeM)HW3t!Z zL>a^9D^w+Wdai#-*jEchD&OAzlfu45=+VA(T-eh-7VXiO-TrC7Fs@iXOtepUT@*;| zH>GA>DUUP*f7zb)6SKm89F?Sm$Hg!aeHQYvJ?%Tri3(ADxe;9K{P%74AHZDGF+H$6glp)PM9m;}!N7(YciD_5T^jP=)MiUsNJq zq%=yln6;OG0WjH~_D{{i{zIF+z5F*o?uNgZF1dXcoddV)6HgSMuPY^c+K*MQ0}vAF zncO^2_@6<5^{4V_-=lnjJ^A}9WU#Brp7wWiP9L8?F^S=js}GHXvmlepr+wgD4L8f_ zo7}?s|J`Pv+b=4nMS=_krFIjY16(ejp2HK0X<+Yf(H!9o)*i^AFKRzMzZ#0E@=5kC zaELw|O!eHA>>te`W`@d_DUDrObxJY0%Odcf1@>O}Q@d$h!}&#ZH!aNTOB+r44V!Z+ WmvomyCZBz+ICO<)wB%%C*?$0U$X>z# literal 0 HcmV?d00001 diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tbhead.v b/wally-pipelined/src/fpu/FMA/tbgen/tbhead.v new file mode 100644 index 000000000..cef15c0ca --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tbgen/tbhead.v @@ -0,0 +1,36 @@ +`timescale 1 ns/10 ps +module tb; + + + reg [63:0] xrf; + reg [63:0] y; + reg [63:0] zrf; + reg [63:0] ans; + reg rn; + reg rz; + reg rm; + reg rp; + reg [63:0] earlyres; + reg earlyressel; + reg [1:0] bypsel; + reg bypplus1; + reg byppostnorm; + wire [63:0] w; + wire [63:0] wbypass; + wire invalid; + wire overflow; + wire underflow; + wire inexact; + +integer fp; +reg nan; + +localparam period = 20; +fmac UUT(.xrf(xrf), .y(y), .zrf(zrf), .rn(rn), .rz(rz), .rp(rp), .rm(rm), + .earlyres(earlyres), .earlyressel(earlyressel), .bypsel(bypsel), .bypplus1(bypplus1), .byppostnorm(byppostnorm), + .w(w), .wbypass(wbypass), .invalid(invalid), .overflow(overflow), .underflow(underflow), .inexact(inexact)); + + +initial + begin + fp = $fopen("/home/kparry/code/FMAC/tbgen/results.dat","w"); diff --git a/wally-pipelined/src/fpu/FMA/tbgen/testMini b/wally-pipelined/src/fpu/FMA/tbgen/testMini new file mode 100644 index 000000000..c2cf277cc --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tbgen/testMini @@ -0,0 +1,1000 @@ +400FEFFFFFFDFFFF_4500001EFFFFFFFF_451FF03DE0FDFFF9 +7FF8CDB067A39BAF_0000000000000000_7FF8CDB067A39BAF +0000000000000000_BFDFFFFDFFFFFEFF_0000000000000000 +0000000000000000_0000000000000000_0000000000000000 +BFD000000001FFFF_DCBFFFFFF0000008_5C9FFFFFF0040006 +BFCFFFFEF7FFFFFF_0000000000000001_8000000000000000 +0000000000000000_C3EDC5379E609531_0000000000000000 +0000000000000000_0000000000000001_0000000000000000 +3FC0080000100000_405FEFFFFFFFFFFF_402FFFF8001FEFFF +C04E0000003FFFFE_000FFFFFFFFFFFFF_806E0000003FFFFC +0000000000000000_EA4FFFFFFE00001E_0000000000000000 +0000000000000000_000FFFFFFFFFFFFF_0000000000000000 +C1E7999EFA5CB8B7_B7E6CD6B7AF10020_39E0D11CB2EAA14B +AC8FFFFDFFFFFFE0_000FFFFFFFFFFFFE_8000000000000000 +0000000000000000_403FFFFFFFFF7F80_0000000000000000 +0000000000000000_000FFFFFFFFFFFFE_0000000000000000 +46700000040003FF_FFD01FFFFFFFEFFF_FFF0000000000000 +41EFFFFFBFF00000_0010000000000000_020FFFFFBFF00000 +0000000000000000_C800080000004000_0000000000000000 +0000000000000000_0010000000000000_0000000000000000 +4020000002000007_3FEFFFFFFF7FBFFE_4020000001BFE006 +B807FFFFFFFFF7FE_0010000000000001_8000000000000000 +0000000000000000_41F8010000000000_0000000000000000 +0000000000000000_0010000000000001_0000000000000000 +3FB0FFFC00000000_FFD0004FFFFFFFFF_FF910050FFEBFFFF +40211829E4678335_001FFFFFFFFFFFFF_00511829E4678334 +0000000000000000_42D8A445AAA71568_0000000000000000 +0000000000000000_001FFFFFFFFFFFFF_0000000000000000 +0000010000000002_B817CDB89FDC55F4_8000000000000000 +BF101FFFFFFFFFC0_001FFFFFFFFFFFFE_8000008100000000 +0000000000000000_47E46906EEBEE918_0000000000000000 +0000000000000000_001FFFFFFFFFFFFE_0000000000000000 +E89FFFFFFFFFEF7E_04D2ED0B521C0CD4_AD82ED0B521C0311 +C02FFFFFFFFFEFDF_3CA0000000000000_BCDFFFFFFFFFEFDF +0000000000000000_CB53CEB78D3DA2DC_0000000000000000 +0000000000000000_3CA0000000000000_0000000000000000 +41F10FFFFFFFFFFF_381FF00000000040_3A21077800000021 +558B5B190F940823_3CA0000000000001_523B5B190F940825 +0000000000000000_C7B4FED9659CF8AE_0000000000000000 +0000000000000000_3CA0000000000001_0000000000000000 +47FFFFFFFFF80000_402D61B8AA025254_483D61B8A9FAF9E6 +4020017FFFFFFFFF_3CAFFFFFFFFFFFFF_3CE0017FFFFFFFFE +0000000000000000_41AFFFFFFFFC3FFE_0000000000000000 +0000000000000000_3CAFFFFFFFFFFFFF_0000000000000000 +3FB0000000001FDF_C1EFFDFFFFFFFE00_C1AFFE0000003DBA +3FE20007FFFFFFFF_3CAFFFFFFFFFFFFE_3CA20007FFFFFFFE +0000000000000000_2B3FFFFFFFBFC000_0000000000000000 +0000000000000000_3CAFFFFFFFFFFFFE_0000000000000000 +BE7CEA94F3B14E4F_BF1FFFFFFFF7FBFF_3DACEA94F3AA100C +C03FFEF000000000_3FD0000000000000_C01FFEF000000000 +0000000000000000_4000000000003DFF_0000000000000000 +0000000000000000_3FD0000000000000_0000000000000000 +380EA140715A3CD4_BFFFFFFEFFFFC000_B81EA13F7C4FFC07 +43FEFFFFFFFF7FFF_3FD0000000000001_43DEFFFFFFFF8001 +0000000000000000_43D000DFFFFFFFFF_0000000000000000 +0000000000000000_3FD0000000000001_0000000000000000 +44B01FFFF7FFFFFF_C45FFBFFFFFFFF7F_C9201DFBF800FFBE +00200000047FFFFF_3FDFFFFFFFFFFFFF_00100000047FFFFE +0000000000000000_3FD5C8FB38E9A49E_0000000000000000 +0000000000000000_3FDFFFFFFFFFFFFF_0000000000000000 +BFF8E60E5D344579_41D5816CF5D8B0D6_C1E0BBAD9ECC7B52 +C00FFFE000080000_3FDFFFFFFFFFFFFE_BFFFFFE00007FFFE +0000000000000000_43C0010000080000_0000000000000000 +0000000000000000_3FDFFFFFFFFFFFFE_0000000000000000 +47FE7FFFFFFFFFFE_40200002000FFFFE_482E8003D01E7FFA +C5A000FFFFFFFF7F_3FE0000000000000_C59000FFFFFFFF7F +0000000000000000_B7F148B5FB128399_0000000000000000 +0000000000000000_3FE0000000000000_0000000000000000 +40100000000000BE_0021C60C25274782_0041C60C25274855 +CDDFFFF00000003F_3FE0000000000001_CDCFFFF000000041 +0000000000000000_41DDFFFFFFF7FFFF_0000000000000000 +0000000000000000_3FE0000000000001_0000000000000000 +41CFFFFEF7FFFFFF_40B0000003FBFFFF_428FFFFEFFF7FFBB +C34E7FFFFFFFFFFF_3FEFFFFFFFFFFFFF_C34E7FFFFFFFFFFE +0000000000000000_FFEFF7FFFFFFEFFE_0000000000000000 +0000000000000000_3FEFFFFFFFFFFFFF_0000000000000000 +C3FFFFFFFFFEBFFF_EFEBFFFF00000000_73FBFFFEFFFEE7FF +7FD00007FFFFFFF8_3FEFFFFFFFFFFFFE_7FD00007FFFFFFF7 +0000000000000000_B073F65978980B32_0000000000000000 +0000000000000000_3FEFFFFFFFFFFFFE_0000000000000000 +41F000FFFFC00000_3FFFFFFFFFFFFDDF_420000FFFFBFFEEF +C1FE739481F2BE3F_3FF0000000000000_C1FE739481F2BE3F +0000000000000000_C0322919B9F21861_0000000000000000 +0000000000000000_3FF0000000000000_0000000000000000 +802688A188936073_40300000FFDFFFFF_806688A2F0F067B8 +B80BFFFC00000000_3FF0000000000001_B80BFFFC00000002 +0000000000000000_7FD8C936DE7F5A7F_0000000000000000 +0000000000000000_3FF0000000000001_0000000000000000 +BCA0002000000008_AB4FFFFFF00003FF_2800001FF7FFF208 +001FFFFE04000000_3FFFFFFFFFFFFFFF_002FFFFE03FFFFFF +0000000000000000_B7FFFFDFEFFFFFFF_0000000000000000 +0000000000000000_3FFFFFFFFFFFFFFF_0000000000000000 +C04F890B53A3EDB7_C0B0003FFFFFFFFC_410F898977D13C3F +20EFE0000003FFFF_3FFFFFFFFFFFFFFE_20FFE0000003FFFD +0000000000000000_4060207FFFFFFFFF_0000000000000000 +0000000000000000_3FFFFFFFFFFFFFFE_0000000000000000 +C03FFFF7FFFFFFFF_C3FC6F28895A14B1_444C6F216D8FF25A +C1CF000FFFFFFFFF_4000000000000000_C1DF000FFFFFFFFF +0000000000000000_406FFFBFFFFFF800_0000000000000000 +0000000000000000_4000000000000000_0000000000000000 +0020000400080000_CED3FFFFFFEFFFFE_8F040004FFF9FFFA +41DFFFFFFFF7EFFF_4000000000000001_41EFFFFFFFF7F001 +0000000000000000_BFF001FFFFFFFFFE_0000000000000000 +0000000000000000_4000000000000001_0000000000000000 +3FB67CD2866D8FA6_A3180E039B8F1FFB_A2E0E77709F1E847 +5BAE42362B008EE1_400FFFFFFFFFFFFF_5BCE42362B008EE0 +0000000000000000_405FFFFFFFFFC004_0000000000000000 +0000000000000000_400FFFFFFFFFFFFF_0000000000000000 +C3DFE08000000000_C69FFFFFFDFFFFFC_4A8FE07FFE01F7FC +000FFC000000007F_400FFFFFFFFFFFFE_002FF800000000FC +0000000000000000_C00800000FFFFFFF_0000000000000000 +0000000000000000_400FFFFFFFFFFFFE_0000000000000000 +3FFA684CBBED6A5A_48000003FFFFBFFE_480A685356002FB1 +3810402000000000_4010000000000000_3830402000000000 +0000000000000000_C44036F9705DCF7B_0000000000000000 +0000000000000000_4010000000000000_0000000000000000 +801FFFC000040000_C0100083FFFFFFFF_00400063FEFA0010 +43DFC04000000000_4010000000000001_43FFC04000000002 +0000000000000000_BFA6105CCA37DEC3_0000000000000000 +0000000000000000_4010000000000001_0000000000000000 +3FB0000007FF0000_3FDFFFFFFF7FF800_3FA0000007BEFC00 +EC400002000000FF_401FFFFFFFFFFFFF_EC700002000000FE +0000000000000000_C27FFFFFFFFF0FFF_0000000000000000 +0000000000000000_401FFFFFFFFFFFFF_0000000000000000 +7FD000000040001F_43D3FFFFFFFFFFFB_7FF0000000000000 +C02FFFFFFFFFFFF2_401FFFFFFFFFFFFE_C05FFFFFFFFFFFF0 +0000000000000000_FFDFFF7FFFFFFFFA_0000000000000000 +0000000000000000_401FFFFFFFFFFFFE_0000000000000000 +BFCFFFFE00FFFFFF_CF3FFFFBFFF7FFFE_4F1FFFFA00F83FDD +8028020CED088751_4340000000000000_8378020CED088751 +0000000000000000_C0A00001FFFFFEFF_0000000000000000 +0000000000000000_4340000000000000_0000000000000000 +466FFFFFF8007FFF_B7E302B4758E9CF0_BE6302B470CE3BDD +3460040000000007_4340000000000001_37B0040000000008 +0000000000000000_B80FFFFEF7FFFFFE_0000000000000000 +0000000000000000_4340000000000001_0000000000000000 +3F2A3423E9A84517_4B6B870AF5372E45_4AA68A933DBF53AA +001000007FFFFFFF_434FFFFFFFFFFFFF_037000007FFFFFFE +0000000000000000_7FE200000001FFFF_0000000000000000 +0000000000000000_434FFFFFFFFFFFFF_0000000000000000 +0020000F80000000_C06FFFFFC003FFFF_80A0000F6001E101 +400FC00000007FFF_434FFFFFFFFFFFFE_436FC00000007FFD +0000000000000000_C030010000002000_0000000000000000 +0000000000000000_434FFFFFFFFFFFFE_0000000000000000 +4004C8EA10E7ADCB_9E900000FFFBFFFF_9EA4C8EB5D711C9E +3DFFFFFFFFFFFF80_7FE0000000000000_7DEFFFFFFFFFFF80 +0000000000000000_C0200003FFFFFBFF_0000000000000000 +0000000000000000_7FE0000000000000_0000000000000000 +FFD0200000040000_7D3349A08E2390FB_FFF0000000000000 +D9FFFFEFFFFFC000_7FE0000000000001_FFF0000000000000 +0000000000000000_3FC001001FFFFFFF_0000000000000000 +0000000000000000_7FE0000000000001_0000000000000000 +C050000000101FFF_B7E000001000000F_384000001010200E +47FFFFFFFC001000_7FEFFFFFFFFFFFFF_7FF0000000000000 +0000000000000000_B93FFFFFFFFD7FFE_0000000000000000 +0000000000000000_7FEFFFFFFFFFFFFF_0000000000000000 +37F0210000000000_C02FFFFFFFEFFFFE_B83020FFFFF7EF7F +BFF5114D6D96342B_7FEFFFFFFFFFFFFE_FFF0000000000000 +0000000000000000_C02FE20000000000_0000000000000000 +0000000000000000_7FEFFFFFFFFFFFFE_0000000000000000 +BFC0000400000003_3A60801FFFFFFFFF_BA30802420080002 +41DFFFFFFFFFFFEE_7FF0000000000000_7FF0000000000000 +0000000000000000_BE10000000201FFE_0000000000000000 +0000000000000000_7FF0000000000000_FFF8000000000000 +43E371D1036B72C3_BF859A7E3A0C2F23_C37A412337175011 +B87FFFFFFFFEFFBF_7FF0000000000001_7FF8000000000001 +0000000000000000_C8D000000C000000_0000000000000000 +0000000000000000_7FF0000000000001_7FF8000000000001 +430FE005B89E3887_C05D8479D4B8952C_C37D66FAA1E29499 +BFCFFFFF00001FFE_7FFFFFFFFFFFFFFF_7FFFFFFFFFFFFFFF +0000000000000000_43C000021FFFFFFF_0000000000000000 +0000000000000000_7FFFFFFFFFFFFFFF_7FFFFFFFFFFFFFFF +41CFFFFFEFFC0000_BFC8001000000000_C1A8000FF3FCF7FE +C01F7FFFFFFFFFC0_7FFFFFFFFFFFFFFE_7FFFFFFFFFFFFFFE +0000000000000000_6A50FFFFFFDFFFFE_0000000000000000 +0000000000000000_7FFFFFFFFFFFFFFE_7FFFFFFFFFFFFFFE +C1E64F6BACB49699_BFBFFFFFF800007F_41B64F6BA720BC06 +C0300400001FFFFE_8000000000000000_0000000000000000 +0000000000000000_42900000200003FF_0000000000000000 +0000000000000000_8000000000000000_0000000000000000 +C100000001FFFFFA_BFDFDFFFFFFFEFFE_40EFE00003FBEFF2 +7FE00000FFFFDFFF_8000000000000001_BCC00000FFFFDFFF +0000000000000000_C3E0001FFFF7FFFF_0000000000000000 +0000000000000000_8000000000000001_0000000000000000 +409FFFFFFFF80004_FFDEA6822647B589_FFF0000000000000 +4CC003FFFFFFFFFB_800FFFFFFFFFFFFF_8CE003FFFFFFFFFA +0000000000000000_7FD080FFFFFFFFFE_0000000000000000 +0000000000000000_800FFFFFFFFFFFFF_0000000000000000 +7FE000000080003F_002000000400001E_401000000480005D +000450CD890B4179_800FFFFFFFFFFFFE_8000000000000000 +0000000000000000_4001FDFFFFFFFFFE_0000000000000000 +0000000000000000_800FFFFFFFFFFFFE_0000000000000000 +3FD000000004000F_C03E25F912FE70C4_C01E25F91305FA5F +FFE000FFFF7FFFFE_8010000000000000_400000FFFF7FFFFE +0000000000000000_403EAC2BA5BC629D_0000000000000000 +0000000000000000_8010000000000000_0000000000000000 +BF7FFFFFFF83FFFE_43C0000000008010_C34FFFFFFF85001E +4808F7FD87D24388_40D0FFFFFFFF0000_48EA877D604DD841 +2E8FBFFFFBFFFFFE_8010000000000001_8000000000000000 +0000000000000000_3FEB5FE3084DCBD4_0000000000000000 +0000000000000000_8010000000000001_0000000000000000 +B806622CB76C829F_43FFFFFFFBFBFFFE_BC16622CB49D70C1 +400000000013FFFE_801FFFFFFFFFFFFF_803000000013FFFD +0000000000000000_400FFFFFFFFBF800_0000000000000000 +0000000000000000_801FFFFFFFFFFFFF_0000000000000000 +BF9FFFFFFC00007F_C0E00000001003FF_408FFFFFFC20087D +C3412F70E854A3CD_801FFFFFFFFFFFFE_03712F70E854A3CC +0000000000000000_BF80000001000FFF_0000000000000000 +0000000000000000_801FFFFFFFFFFFFE_0000000000000000 +400A0E106668F71F_C7EFB60691768C51_C809D1D5398F7803 +5D40000020000001_BCA0000000000000_D9F0000020000001 +0000000000000000_4011EFFFFFFFFFFF_0000000000000000 +0000000000000000_BCA0000000000000_0000000000000000 +41F615F447443D4D_47FB520048B4C7C8_4A02DB1E90465D97 +C331FFFFFFFDFFFF_BCA0000000000001_3FE1FFFFFFFE0000 +0000000000000000_43CFB00000000000_0000000000000000 +0000000000000000_BCA0000000000001_0000000000000000 +43D000003FFFFFDF_332FFFDFFFFFBFFE_370FFFE07FFF3FBC +C0B00FFDFFFFFFFF_BCAFFFFFFFFFFFFF_3D700FFDFFFFFFFE +0000000000000000_801FFFFFDFFDFFFF_0000000000000000 +0000000000000000_BCAFFFFFFFFFFFFF_0000000000000000 +BA8020000007FFFE_CC630E69BC6B5947_46F334868FEDB72C +D2CDB3F1E461B363_BCAFFFFFFFFFFFFE_4F8DB3F1E461B361 +0000000000000000_BF1A4AE1112F1B36_0000000000000000 +0000000000000000_BCAFFFFFFFFFFFFE_0000000000000000 +D21FFFF7FFFFFBFF_C5600001FFFFFFF7_578FFFFBFFFEFBED +DD9DB170DCBBF900_BFD0000000000000_5D7DB170DCBBF900 +0000000000000000_001FFFFFFFFFF1FE_0000000000000000 +0000000000000000_BFD0000000000000_0000000000000000 +C3400000010FFFFF_C1D03F7FFFFFFFFF_45203F800114377E +41447D93CBEFEF97_BFD0000000000001_C1247D93CBEFEF98 +0000000000000000_C9CF7FFFEFFFFFFF_0000000000000000 +0000000000000000_BFD0000000000001_0000000000000000 +C0345B0019635AC8_400FFFFFFDFEFFFF_C0545B00181D07EE +FFE000000000807F_BFDFFFFFFFFFFFFF_7FD000000000807E +0000000000000000_43F0FDFFFFFFFFFE_0000000000000000 +0000000000000000_BFDFFFFFFFFFFFFF_0000000000000000 +47FFFFFFFFFC00FF_C0BA425E976EE2B8_C8CA425E976B9B3D +400FFFFFDBFFFFFF_BFDFFFFFFFFFFFFE_BFFFFFFFDBFFFFFD +0000000000000000_4D5FFFFFFBFFFFBF_0000000000000000 +0000000000000000_BFDFFFFFFFFFFFFE_0000000000000000 +59FBFFFE00000000_C027EFFFFFFFFFFF_DA34F1FE80FFFFFF +43D00000000000BF_BFE0000000000000_C3C00000000000BF +0000000000000000_402FFFFFE00003FF_0000000000000000 +0000000000000000_BFE0000000000000_0000000000000000 +B800003FFFFF8000_80007FF7FFFFFFFF_0000000000000000 +4020000000001FFF_BFE0000000000001_C010000000002000 +0000000000000000_3D9CA18D99CF24D6_0000000000000000 +0000000000000000_BFE0000000000001_0000000000000000 +37FFFF0000400000_47EFD7FFFFFFFFFE_3FFFD701403FAFFE +C3FFFFFF007FFFFE_BFEFFFFFFFFFFFFF_43FFFFFF007FFFFD +0000000000000000_BFE0003FBFFFFFFF_0000000000000000 +0000000000000000_BFEFFFFFFFFFFFFF_0000000000000000 +2AEFFFFFF7FFFFDF_800EE8D7022000B1_8000000000000000 +3FF00000000401FF_BFEFFFFFFFFFFFFE_BFF00000000401FE +0000000000000000_C3C00007FFDFFFFE_0000000000000000 +0000000000000000_BFEFFFFFFFFFFFFE_0000000000000000 +C00FFFF840000000_B7EFFFFFFF400000_380FFFF83F40002E +285FF7FFEFFFFFFE_BFF0000000000000_A85FF7FFEFFFFFFE +0000000000000000_403FFFBFFFF7FFFF_0000000000000000 +0000000000000000_BFF0000000000000_0000000000000000 +BED72C0F094A1B3F_7600000040007FFE_F4E72C0F65FB10C2 +4140000002FFFFFF_BFF0000000000001_C140000003000000 +0000000000000000_41DD7D0FA218C928_0000000000000000 +0000000000000000_BFF0000000000001_0000000000000000 +A96000403FFFFFFF_43F000000021FFFF_AD60004040220087 +3F5E0000000000FE_BFFFFFFFFFFFFFFF_BF6E0000000000FD +0000000000000000_7FF0000000024000_7FF8000000024000 +0000000000000000_BFFFFFFFFFFFFFFF_0000000000000000 +3A20000000803FFE_41DE5DAED7B5B96D_3C0E5DAED8A92057 +7FD0007FFFFFFFFC_BFFFFFFFFFFFFFFE_FFE0007FFFFFFFFB +0000000000000000_C03FFFFFDFFF8000_0000000000000000 +0000000000000000_BFFFFFFFFFFFFFFE_0000000000000000 +C1203FFFFFFFBFFE_BFF4001FFFFFFFFE_412450207FFFAFFB +C01F5E2568A7C286_C000000000000000_402F5E2568A7C286 +0000000000000000_FFD001000FFFFFFF_0000000000000000 +0000000000000000_C000000000000000_0000000000000000 +C3BFFF00000FFFFF_C02FFFF800000003_43FFFEF8004FFFFE +C1100001001FFFFF_C000000000000001_4120000100200000 +0000000000000000_C80EFFFF7FFFFFFF_0000000000000000 +0000000000000000_C000000000000001_0000000000000000 +3FBB7FFFFFFFFFFF_07FE52090A77DFF6_07CA0E7FC4FF0476 +B94FFDFFFFDFFFFF_C00FFFFFFFFFFFFF_396FFDFFFFDFFFFE +0000000000000000_BD86175278991CFB_0000000000000000 +0000000000000000_C00FFFFFFFFFFFFF_0000000000000000 +404633CAD2D9FF4D_B81FFFDFFEFFFFFF_B87633B49E5D8E1C +B80FFFFFFFFDFEFF_C00FFFFFFFFFFFFE_382FFFFFFFFDFEFD +0000000000000000_80080003FFFFFFFF_0000000000000000 +0000000000000000_C00FFFFFFFFFFFFE_0000000000000000 +C00FF000000007FE_C36FFFFF80000003_438FEFFF80400801 +C00FFFBFFFFF8000_C010000000000000_402FFFBFFFFF8000 +0000000000000000_3E37CA3A440B93F2_0000000000000000 +0000000000000000_C010000000000000_0000000000000000 +BFE848F15117B8F5_D5DFFFFFEFFFFDFF_55D848F144F33EC7 +3B50000004200000_C010000000000001_BB70000004200001 +0000000000000000_3FD2B1D6314EA651_0000000000000000 +0000000000000000_C010000000000001_0000000000000000 +C02FFFFFFF07FFFF_8BF00000003FBFFF_0C2FFFFFFF877FFD +BFF07FFEFFFFFFFF_C01FFFFFFFFFFFFF_40207FFEFFFFFFFE +0000000000000000_43E0000BFFFFFFFF_0000000000000000 +0000000000000000_C01FFFFFFFFFFFFF_0000000000000000 +8000000000002400_379FFFFF7FEFFFFF_8000000000000000 +C03FFDFFFFDFFFFF_C01FFFFFFFFFFFFE_406FFDFFFFDFFFFD +0000000000000000_401FFFFBFFFBFFFE_0000000000000000 +0000000000000000_C01FFFFFFFFFFFFE_0000000000000000 +CDAFFFFFF7FF8000_677FFE0000000003_F53FFDFFF800000B +43F00003FFFFFFBE_C340000000000000_C7400003FFFFFFBE +0000000000000000_47E0003FFFFFFFF7_0000000000000000 +0000000000000000_C340000000000000_0000000000000000 +C1D0004000000001_45C1EFFFFFFFFFFF_C7A1F047C0000000 +B840000005000000_C340000000000001_3B90000005000001 +0000000000000000_41DBFFFFFEFFFFFE_0000000000000000 +0000000000000000_C340000000000001_0000000000000000 +3FFFFFFFFF400000_3FE0000100001FFF_3FF00000FFA01FF9 +C7EFFFFFFFEFFFBE_C34FFFFFFFFFFFFF_4B4FFFFFFFEFFFBD +0000000000000000_C7EFFF87FFFFFFFE_0000000000000000 +0000000000000000_C34FFFFFFFFFFFFF_0000000000000000 +C98FFBFF7FFFFFFF_C024436216C48467_49C440D95974237B +3FE000002000FFFF_C34FFFFFFFFFFFFE_C34000002000FFFE +0000000000000000_401D27E8DCD864B4_0000000000000000 +0000000000000000_C34FFFFFFFFFFFFE_0000000000000000 +CCF56A812031F454_480D2D9053C8F4DB_D5138703621A58FE +C1E0000000000000_FFE0000000000000_7FF0000000000000 +0000000000000000_C1DFDFFFFFFBFFFE_0000000000000000 +0000000000000000_FFE0000000000000_0000000000000000 +561FFFFFFFDFFF00_BF859F5CCDF17B14_D5B59F5CCDDBDB0A +C1C0008000001000_FFE0000000000001_7FF0000000000000 +0000000000000000_37E0000000020FFE_0000000000000000 +0000000000000000_FFE0000000000001_0000000000000000 +002020000000001F_795C00000000001F_398C380000000055 +C034771CEE8F19C1_FFEFFFFFFFFFFFFF_7FF0000000000000 +0000000000000000_37FDC9CB87C9560C_0000000000000000 +0000000000000000_FFEFFFFFFFFFFFFF_0000000000000000 +C3CFFFFFFFFBFF7E_C0300000EFFFFFFF_44100000EFFDFFBE +67DE000080000000_FFEFFFFFFFFFFFFE_FFF0000000000000 +0000000000000000_3FFFC0000001FFFF_0000000000000000 +0000000000000000_FFEFFFFFFFFFFFFE_0000000000000000 +BFBFBFFFBFFFFFFF_40DFFFFFFE3FFFFE_C0AFBFFFBE438001 +46AFFFE00007FFFE_FFF0000000000000_FFF0000000000000 +0000000000000000_4622B04F697716EC_0000000000000000 +0000000000000000_FFF0000000000000_FFF8000000000000 +47F007FDFFFFFFFF_8010000002007FFF_881007FE02017FFE +402BFFFFFFFFFFDE_FFF0000000000001_FFF8000000000001 +0000000000000000_BFD000000000001C_0000000000000000 +0000000000000000_FFF0000000000001_FFF8000000000001 +3F6FFE0007FFFFFE_C02F800000000000_BFAF7E0807DFFFFE +B8EFFFFF0000000F_FFFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF +0000000000000000_C302E9A0E2FB7F01_0000000000000000 +0000000000000000_FFFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF +7670000000BFFFFE_001B46C40B2B81F0_369B46C40C72D31D +C1D0200100000000_FFFFFFFFFFFFFFFE_FFFFFFFFFFFFFFFE +0000000000000000_41F0008003FFFFFF_0000000000000000 +0000000000000000_FFFFFFFFFFFFFFFE_FFFFFFFFFFFFFFFE +37F8A185A32AD418_427FFFFC0007FFFF_3A88A1828F004813 +C1C0041FFFFFFFFF_0000000000000000_0000000000000000 +0000000000000001_3DDFFFFFFC0000FF_0000000000000000 +0000000000000001_0000000000000000_0000000000000000 +C00E0774599CC624_BFDFFF7EFFFFFFFF_3FFE06FB4B8FBCE3 +4EF74A66CE2FEE3C_0000000000000001_0BD74A66CE2FEE3C +0000000000000001_37FFFFFFBFFF7FFF_0000000000000000 +0000000000000001_0000000000000001_0000000000000000 +DEE00000FFBFFFFF_BCAFFFFFFFFFEBFE_5BA00000FFBFF5FE +802000000020007F_000FFFFFFFFFFFFF_8000000000000000 +0000000000000001_C04C0007FFFFFFFE_8000000000000038 +0000000000000001_000FFFFFFFFFFFFF_0000000000000000 +BEF000000A000000_47EFFFFFFFFFFF88_C6F0000009FFFFC4 +3AEFFFB7FFFFFFFF_000FFFFFFFFFFFFE_0000000000000000 +0000000000000001_C024F91426E8BB9F_800000000000000A +0000000000000001_000FFFFFFFFFFFFE_0000000000000000 +00156FEE8D11D18C_434FEFFF7FFFFFFF_03756536400B8E6E +D9800000080001FF_0010000000000000_99A00000080001FF +0000000000000001_43C56DDD9EE7B1D0_00A56DDD9EE7B1D0 +0000000000000001_0010000000000000_0000000000000000 +47FFFFBFFFFFFBFF_097080000FFFFFFF_11807FDF0FFFDDEE +C0AFFFFFFBFFFDFE_0010000000000001_80CFFFFFFBFFFE00 +0000000000000001_13CEFFFFFFFEFFFE_0000000000000000 +0000000000000001_0010000000000001_0000000000000000 +EB3972F509C9EC31_41EFEDFFFFFFFFFE_ED3964A45FF46A9B +C3F0000000008006_001FFFFFFFFFFFFF_8420000000008005 +0000000000000001_43EF0BB46298AEF4_00CF0BB46298AEF4 +0000000000000001_001FFFFFFFFFFFFF_0000000000000000 +BFCFFFFFFFFBF7FF_BB8003FFFFFFBFFF_3B6003FFFFFDBB7D +C01FDBFFFFFFFFFF_001FFFFFFFFFFFFE_804FDBFFFFFFFFFD +0000000000000001_4340AB6D8CE611D7_0020AB6D8CE611D7 +0000000000000001_001FFFFFFFFFFFFE_0000000000000000 +000FFFFFDFEFFFFF_3FE0000880000000_000800042FF7F77B +CEDFEBFFFFFFFFFF_3CA0000000000000_CB8FEBFFFFFFFFFF +0000000000000001_C80A1C4093F21AAC_84EA1C4093F21AAC +0000000000000001_3CA0000000000000_0000000000000000 +403FFFFFFFFFFFFF_438017FFFFFFFFFF_43D017FFFFFFFFFE +3FF2BE5D4AF2557B_3CA0000000000001_3CA2BE5D4AF2557C +0000000000000001_BFDFFFC00000000F_8000000000000000 +0000000000000001_3CA0000000000001_0000000000000000 +B7F400001FFFFFFE_D2600000000083FF_4A6400002000A4FD +BCAFBFFFFFFFFFFA_3CAFFFFFFFFFFFFF_B96FBFFFFFFFFFF9 +0000000000000001_BCA008007FFFFFFE_8000000000000000 +0000000000000001_3CAFFFFFFFFFFFFF_0000000000000000 +42EFFFFFBFF7FFFF_B95F0D53B2F5E431_BC5F0D5374D37975 +37FFFFFF8000003F_3CAFFFFFFFFFFFFE_34BFFFFF8000003D +0000000000000001_41FC0000007FFFFE_00000001C0000008 +0000000000000001_3CAFFFFFFFFFFFFE_0000000000000000 +B7EBFFFFEFFFFFFF_C80FFFFFE1FFFFFF_400BFFFFD5C0000D +C03301B70F92F179_3FD0000000000000_C01301B70F92F179 +0000000000000001_C670008002000000_8350008002000000 +0000000000000001_3FD0000000000000_0000000000000000 +2410000400000000_37E83FFFFFFFFFFF_1C0840060FFFFFFF +C03000203FFFFFFE_3FD0000000000001_C01000203FFFFFFF +0000000000000001_4010401FFFFFFFFF_0000000000000004 +0000000000000001_3FD0000000000001_0000000000000000 +3813A877851DA9FD_B590000003FFFFFF_ADB3A8778A07C7DD +B8C4E06540E8A4BD_3FDFFFFFFFFFFFFF_B8B4E06540E8A4BC +0000000000000001_B8CFFFFFE0000000_8000000000000000 +0000000000000001_3FDFFFFFFFFFFFFF_0000000000000000 +C06892F842C11DA8_8B3FDFFF7FFFFFFF_0BB87A64E8327B7F +43D0408000000000_3FDFFFFFFFFFFFFE_43C0407FFFFFFFFF +0000000000000001_401F0000FFFFFFFE_0000000000000008 +0000000000000001_3FDFFFFFFFFFFFFE_0000000000000000 +47EFFFE020000000_C1DF7FFFFFFFFFBF_C9DF7FE09F7FFFBF +4770000000101FFF_3FE0000000000000_4760000000101FFF +0000000000000001_7FFFFFFF80400000_7FFFFFFF80400000 +0000000000000001_3FE0000000000000_0000000000000000 +DD0FFF7FDFFFFFFE_BFC001FFF0000000_5CE001BFD7FE400F +412FFFFFFF7FFF7E_3FE0000000000001_411FFFFFFF7FFF80 +0000000000000001_BFB083FFFFFFFFFF_8000000000000000 +0000000000000001_3FE0000000000001_0000000000000001 +451FFFFFFFFBFDFF_BD70FFFFFDFFFFFF_C2A0FFFFFDFDDEEE +50C800B6B5B2FD27_3FEFFFFFFFFFFFFF_50C800B6B5B2FD26 +0000000000000001_4BEFFFFFFFBFFFC0_08CFFFFFFFBFFFC0 +0000000000000001_3FEFFFFFFFFFFFFF_0000000000000001 +C34BFFFFDFFFFFFE_399602EDE20FF4EE_BCF342900FCB086D +7FD0020080000000_3FEFFFFFFFFFFFFE_7FD002007FFFFFFF +0000000000000001_4198000008000000_0000000006000002 +0000000000000001_3FEFFFFFFFFFFFFE_0000000000000001 +38000FFEFFFFFFFF_C1FFFFFFFFE0FFFF_BA100FFEFFF0707F +C1FFFFFFFFFFFFBE_3FF0000000000000_C1FFFFFFFFFFFFBE +0000000000000001_C800000000010001_84E0000000010001 +0000000000000001_3FF0000000000000_0000000000000001 +C020800000000FFF_BFDFFFFFEFFFF000_40107FFFF7C007BF +EADFFFFFFFFFF080_3FF0000000000001_EADFFFFFFFFFF082 +0000000000000001_C01FFFF0000007FF_8000000000000008 +0000000000000001_3FF0000000000001_0000000000000001 +218FFFFFFFB00000_C06C000004000000_A20C000003BA0000 +381ABCCBF83E3414_3FFFFFFFFFFFFFFF_382ABCCBF83E3413 +0000000000000001_43C8000000000008_00A8000000000008 +0000000000000001_3FFFFFFFFFFFFFFF_0000000000000002 +C341E0811C296B57_401FFFFBFFFFFFFD_C371E07EE01947D0 +4D314B2DC2F83F9D_3FFFFFFFFFFFFFFE_4D414B2DC2F83F9C +0000000000000001_C18FEFFFF7FFFFFE_8000000003FDFFFF +0000000000000001_3FFFFFFFFFFFFFFE_0000000000000002 +FFD2000000001FFF_3F11FFBFFFFFFFFF_FEF43FB8000023FD +3FE401FFFFFFFFFF_4000000000000000_3FF401FFFFFFFFFF +0000000000000001_3F50000000400000_0000000000000000 +0000000000000001_4000000000000000_0000000000000002 +443FFFFFFC00007F_C3FEFFFFFFEFFFFF_C84EFFFFFC10007A +C34FFFFF80020000_4000000000000001_C35FFFFF80020002 +0000000000000001_FFDF7FFFFF000000_BCBF7FFFFF000000 +0000000000000001_4000000000000001_0000000000000002 +00200001EFFFFFFF_8006659B6BED88DA_8000000000000000 +B810000200010000_400FFFFFFFFFFFFF_B83000020000FFFF +0000000000000001_A6D0000800008000_8000000000000000 +0000000000000001_400FFFFFFFFFFFFF_0000000000000004 +FB20000002001FFF_43DFFFFFFBFFFFFF_FF10000000001FFE +47FFFF007FFFFFFE_400FFFFFFFFFFFFE_481FFF007FFFFFFC +0000000000000001_BF8E7FFFFFFFFFFE_8000000000000000 +0000000000000001_400FFFFFFFFFFFFE_0000000000000004 +E3BFBFFFFFFFFEFF_E9E15A004FCE6807_7FF0000000000000 +4340FFFFFFE00000_4010000000000000_4360FFFFFFE00000 +0000000000000001_BFC0BFDE31293D98_8000000000000000 +0000000000000001_4010000000000000_0000000000000004 +C030000000008FFE_0015D88E53B0A1CD_8055D88E53B16667 +7FD000000007FDFE_4010000000000001_7FF0000000000000 +0000000000000001_D6E000000080001E_93C000000080001E +0000000000000001_4010000000000001_0000000000000004 +4021E12E183CCA0F_B8D8F4801AD34750_B90BE2FE4AB7942E +A707357A4F8568A8_401FFFFFFFFFFFFF_A737357A4F8568A7 +0000000000000001_3FE178762201A644_0000000000000001 +0000000000000001_401FFFFFFFFFFFFF_0000000000000008 +7FDFFFC0FFFFFFFF_583FFEFFFFFF8000_7FF0000000000000 +BFB74259F79B4BB9_401FFFFFFFFFFFFE_BFE74259F79B4BB8 +0000000000000001_B81FEBD3A50FE362_8000000000000000 +0000000000000001_401FFFFFFFFFFFFE_0000000000000008 +D03FFFFFFD7FFFFF_C7F0001FFFFFFFFB_5840001FFEBFFD7A +41E9A4A230094AE9_4340000000000000_4539A4A230094AE9 +0000000000000001_48001CAA6570456B_04E01CAA6570456B +0000000000000001_4340000000000000_0020000000000000 +5FEE26480FB99D8D_4010000000DFFFFF_600E2648115FB57C +C3DFFFFEFFFFFF7F_4340000000000001_C72FFFFEFFFFFF81 +0000000000000001_3FFFFC0000000200_0000000000000002 +0000000000000001_4340000000000001_0020000000000001 +380FFFBFFFFFFFBF_4ECFFFDFFFFFFBFF_46EFFFA0003FFBBE +B9B000003EFFFFFF_434FFFFFFFFFFFFF_BD1000003EFFFFFE +0000000000000001_D71BFFFFFFFFFBFF_93FBFFFFFFFFFBFF +0000000000000001_434FFFFFFFFFFFFF_002FFFFFFFFFFFFF +BFB5FFFFFFFFFFFF_117681193B4BFFEA_913EF182B1887FE0 +40FFDFFFFFFFFEFF_434FFFFFFFFFFFFE_445FDFFFFFFFFEFD +0000000000000001_3BC4526231892215_0000000000000000 +0000000000000001_434FFFFFFFFFFFFE_002FFFFFFFFFFFFE +3DEFFFFFFFFBFFFC_C037FFFFFFFFFFEF_BE37FFFFFFFCFFEC +C010ECC1AEA52328_7FE0000000000000_FFF0000000000000 +0000000000000001_3CEA7FBFD31CA673_0000000000000000 +0000000000000001_7FE0000000000000_3CC0000000000000 +BE3FFFFFFFFFBF7E_41E000000003FFBF_C03000000003DF7E +C0B0000003E00000_7FE0000000000001_FFF0000000000000 +0000000000000001_40E80000003FFFFE_000000000000C000 +0000000000000001_7FE0000000000001_3CC0000000000001 +DA8F7FF800000000_7FFFFFEFFFFFE000_7FFFFFEFFFFFE000 +3D2FC00000008000_7FEFFFFFFFFFFFFF_7D2FC00000007FFF +0000000000000001_C000000000007FFC_8000000000000002 +0000000000000001_7FEFFFFFFFFFFFFF_3CCFFFFFFFFFFFFF +47DBD36CC06BACFB_C25905617E47F685_CA45C1DAC602E6E9 +37EFFFFFE0007FFF_7FEFFFFFFFFFFFFE_77EFFFFFE0007FFD +0000000000000001_41EFFFFFFF7EFFFF_00000000FFFFFFFC +0000000000000001_7FEFFFFFFFFFFFFE_3CCFFFFFFFFFFFFE +47FFFF8FFFFFFFFE_002FFFFFFFE0007F_083FFF8FFFE000ED +C3EBCD6E9C101F0A_7FF0000000000000_FFF0000000000000 +0000000000000001_3FEFFFFFFFFFFFE7_0000000000000001 +0000000000000001_7FF0000000000000_7FF0000000000000 +C003FFFFFFFFFFDF_C3DDFFFFBFFFFFFF_43F2BFFFD7FFFFE0 +3B3A26F7C907674C_7FF0000000000001_7FF8000000000001 +0000000000000001_C3CFBF7FFFFFFFFF_80AFBF7FFFFFFFFF +0000000000000001_7FF0000000000001_7FF8000000000001 +FFD571ED141357CC_48D13238F7A90FEF_FFF0000000000000 +FFEF00000000FFFE_7FFFFFFFFFFFFFFF_7FFFFFFFFFFFFFFF +0000000000000001_3FC000800000007E_0000000000000000 +0000000000000001_7FFFFFFFFFFFFFFF_7FFFFFFFFFFFFFFF +41FFFFFFFFFFFFFC_D26000001FF7FFFF_D47000001FF7FFFD +403FFFFFFFFFC07F_7FFFFFFFFFFFFFFE_7FFFFFFFFFFFFFFE +0000000000000001_A7D0000000000FF6_8000000000000000 +0000000000000001_7FFFFFFFFFFFFFFE_7FFFFFFFFFFFFFFE +47F001FFFF7FFFFF_C04FFDFFFFFEFFFF_C85000FFDF7F87EF +41FFFFFFFFFFF3FF_8000000000000000_0000000000000000 +0000000000000001_CF5FFFFE00001FFF_8C3FFFFE00001FFF +0000000000000001_8000000000000000_0000000000000000 +41DB1657445CD846_8E1040007FFFFFFF_8FFB82B17A2105C8 +C4F000000000006F_8000000000000001_01D000000000006F +0000000000000001_401FFFC001FFFFFF_0000000000000008 +0000000000000001_8000000000000001_8000000000000000 +BFA0000400000001_3FC000020001FFFF_BF70000600028000 +C3DFF0000000FFFF_800FFFFFFFFFFFFF_03FFF0000000FFFD +0000000000000001_C1DD324AC6EB4159_8000000074C92B1C +0000000000000001_800FFFFFFFFFFFFF_8000000000000000 +3F90000000000016_3FE000010000003F_3F80000100000055 +43D1117D9853FBE0_800FFFFFFFFFFFFE_83F1117D9853FBDE +0000000000000001_B7F0000FFFF80000_8000000000000000 +0000000000000001_800FFFFFFFFFFFFE_8000000000000000 +434EFFFFF7FFFFFE_4A77FFFEFFFFFFFE_4DD73FFF0200003D +BFC03FFFFFFFEFFF_8010000000000000_000207FFFFFFFE00 +0000000000000001_B7F0000FFFDFFFFF_8000000000000000 +0000000000000001_8010000000000000_8000000000000000 +B7FFFFFFF77FFFFF_0002BCC98A90728F_8000000000000000 +40100013FFFFFFFF_8010000000000001_8030001400000000 +0000000000000001_C7F0FFFDFFFFFFFE_84D0FFFDFFFFFFFE +0000000000000001_8010000000000001_8000000000000000 +FFDFFFFFFFFFBFFD_BF2C00000000FFFF_7F1C00000000C7FC +28CFEFFFFFFFFFFE_801FFFFFFFFFFFFF_8000000000000000 +0000000000000001_DD1FFFFFFFFFFFFE_99FFFFFFFFFFFFFE +0000000000000001_801FFFFFFFFFFFFF_8000000000000000 +DC8F000004000000_39BFFFFFFFC001FE_D65F000003C201EE +2FFFFFFFFFFFE01F_801FFFFFFFFFFFFE_8000000000000000 +0000000000000001_1BCFFFFFFDDFFFFE_0000000000000000 +0000000000000001_801FFFFFFFFFFFFE_8000000000000000 +480FFFFFFFFFFFFF_3E2C9A5A9EC07FDC_464C9A5A9EC07FDB +C1EFFFFFFFFFFDBF_BCA0000000000000_3E9FFFFFFFFFFDBF +0000000000000001_C34DDB49773FD16B_802DDB49773FD16B +0000000000000001_BCA0000000000000_8000000000000000 +40100000103FFFFE_3E1F7FFFEFFFFFFF_3E3F80000FFDFFEB +FFD7C6AFA1BB614D_BCA0000000000001_7C87C6AFA1BB614E +0000000000000001_C5FFFFFF3FFFFFFE_82DFFFFF3FFFFFFE +0000000000000001_BCA0000000000001_8000000000000000 +3F1FE00002000000_470FFE0001FFFFFF_463FDE0203FDDFFF +BFFFFFF80000003F_BCAFFFFFFFFFFFFF_3CBFFFF80000003E +0000000000000001_401FFFF000000003_0000000000000008 +0000000000000001_BCAFFFFFFFFFFFFF_8000000000000000 +3FF45B95085B60D5_C34FF8007FFFFFFF_C354567E74879E1E +380DD203735C6934_BCAFFFFFFFFFFFFE_B4CDD203735C6932 +0000000000000001_462C78F00C35C750_030C78F00C35C750 +0000000000000001_BCAFFFFFFFFFFFFE_8000000000000000 +C02313A786810A2A_407000000000403F_C0A313A7868156C4 +713C0C08CC84FDB5_BFD0000000000000_F11C0C08CC84FDB5 +0000000000000001_BFC000001000007E_8000000000000000 +0000000000000001_BFD0000000000000_8000000000000000 +BEBFFFFFFFB80000_434000003FFBFFFE_C21000003FD7FFFD +362200000007FFFE_BFD0000000000001_B60200000007FFFF +0000000000000001_3F42FFE933B9BB10_0000000000000000 +0000000000000001_BFD0000000000001_8000000000000000 +CFD000008003FFFE_C7FFFFFFF00FFFFF_57E00000780BFFBE +C03FFFC001FFFFFE_BFDFFFFFFFFFFFFF_402FFFC001FFFFFD +0000000000000001_BA4FFF7FFFFFFFFC_8000000000000000 +0000000000000001_BFDFFFFFFFFFFFFF_8000000000000000 +C04FFFBFFFFFF7FF_8010F80000000000_0070F7DE0FFFFBC1 +4D0EE00000000000_BFDFFFFFFFFFFFFE_CCFEDFFFFFFFFFFE +0000000000000001_3FA04000000FFFFF_0000000000000000 +0000000000000001_BFDFFFFFFFFFFFFE_8000000000000000 +BFC0000FFFFFDFFE_43FF7FFFFFFFFFBF_C3CF801F7FFFC0BB +3FB9AB239159DED5_BFE0000000000000_BFA9AB239159DED5 +0000000000000001_F2A003FFFFFFFBFE_AF8003FFFFFFFBFE +0000000000000001_BFE0000000000000_8000000000000000 +C02001000000007E_1B8E200000000000_9BBE21E2000000ED +403FFFFDFFF7FFFE_BFE0000000000001_C02FFFFDFFF80000 +0000000000000001_BFE000FF7FFFFFFE_8000000000000001 +0000000000000001_BFE0000000000001_8000000000000001 +7FD501AD5D9E2189_3F4FFFFFFE03FFFE_7F3501AD5C50A6E8 +B7FC0AAEDB09EA30_BFEFFFFFFFFFFFFF_37FC0AAEDB09EA2F +0000000000000001_BEB0200000000008_8000000000000000 +0000000000000001_BFEFFFFFFFFFFFFF_8000000000000001 +171008000000000E_BE7BFFFFFFFFFFBF_959C0DFFFFFFFFD7 +C0700011FFFFFFFF_BFEFFFFFFFFFFFFE_40700011FFFFFFFE +0000000000000001_C1DFFF000000001F_800000007FFC0000 +0000000000000001_BFEFFFFFFFFFFFFE_8000000000000001 +405000FFBFFFFFFF_5EBFFFDFFEFFFFFF_5F2000EFBE803800 +BFF0000000024000_BFF0000000000000_3FF0000000024000 +0000000000000001_C090040003FFFFFE_8000000000000401 +0000000000000001_BFF0000000000000_8000000000000001 +C3FFFFFFE0007FFF_44DFFFFE0003FFFF_C8EFFFFDE00481FE +C02FFFFFF8000040_BFF0000000000001_402FFFFFF8000042 +0000000000000001_D2AFFFF7FFFFBFFF_8F8FFFF7FFFFBFFF +0000000000000001_BFF0000000000001_8000000000000001 +7FF3C1D73DDD9076_402FFFF800000001_7FFBC1D73DDD9076 +FA9EC591D7B01CD9_BFFFFFFFFFFFFFFF_7AAEC591D7B01CD8 +0000000000000001_38048102083FC9E3_0000000000000000 +0000000000000001_BFFFFFFFFFFFFFFF_8000000000000002 +B88F880000000000_3FD56ECE521B8745_B8751E6ECC67A00A +403B952B8AE225F4_BFFFFFFFFFFFFFFE_C04B952B8AE225F2 +0000000000000001_3FC137B5E8A03D99_0000000000000000 +0000000000000001_BFFFFFFFFFFFFFFE_8000000000000002 +C0A00000001DFFFE_B3000001000001FE_33B00001001E01FE +B81CAFBB0B6DC6EC_C000000000000000_382CAFBB0B6DC6EC +0000000000000001_B80B07B5A33665F4_8000000000000000 +0000000000000001_C000000000000000_8000000000000002 +4FD003FFFFDFFFFF_47F7D101D738B33C_57D7D6F6177EDF64 +001B3F6963661396_C000000000000001_802B3F6963661398 +0000000000000001_3F2FFFF0001FFFFF_0000000000000000 +0000000000000001_C000000000000001_8000000000000002 +0034943A60F4EFB5_43E000080000001E_04249444AB122056 +3F7000001FFFFDFE_C00FFFFFFFFFFFFF_BF9000001FFFFDFD +0000000000000001_404FFFFFF001FFFE_0000000000000040 +0000000000000001_C00FFFFFFFFFFFFF_8000000000000004 +C91FFFFFFFFFE00E_BEE7FBFFFFFFFFFE_4817FBFFFFFFE80C +4A5FFFFDFFFFFDFF_C00FFFFFFFFFFFFE_CA7FFFFDFFFFFDFD +0000000000000001_BFDFFFF9FFFFFFFF_8000000000000000 +0000000000000001_C00FFFFFFFFFFFFE_8000000000000004 +3817A935C36334BA_C70FFFEFF7FFFFFE_BF37A929E8DE0596 +C3CBF80565D79A7A_C010000000000000_43EBF80565D79A7A +0000000000000001_C0186B90D3F5B30C_8000000000000006 +0000000000000001_C010000000000000_8000000000000004 +001FF80001FFFFFF_D5F00000002003FF_961FF800023FF7FB +8130000001FE0000_C010000000000001_0150000001FE0001 +0000000000000001_C40FFFFFFFFFF07E_80EFFFFFFFFFF07E +0000000000000001_C010000000000001_8000000000000004 +3FBB8FFE7BE7C539_415370AA7A2ED49E_4120BE89EA788AE4 +C0B0000000100001_C01FFFFFFFFFFFFF_40E0000000100000 +0000000000000001_37FF00007FFFFFFF_0000000000000000 +0000000000000001_C01FFFFFFFFFFFFF_8000000000000008 +C3CFFEFFFFDFFFFF_C80000010000000E_4BDFFF01FFD00019 +403FFDFFFF800000_C01FFFFFFFFFFFFE_C06FFDFFFF7FFFFE +0000000000000001_C73F2E150CDAC121_841F2E150CDAC121 +0000000000000001_C01FFFFFFFFFFFFE_8000000000000008 +BFDFFFFFF7FFFE00_0000008000007FFF_8000004000002FFF +C1DFFFFFFFFF8001_C340000000000000_452FFFFFFFFF8001 +0000000000000001_48DFFFFC00000FFF_05BFFFFC00000FFF +0000000000000001_C340000000000000_8020000000000000 +C3CFFFFFFFFBDFFF_800FFFBFFFFFFFFC_03EFFF7FFFFBE008 +B4BFF7FFFFFFBFFF_C340000000000001_380FF7FFFFFFC001 +0000000000000001_BFDFFFDFFFFFF7FF_8000000000000000 +0000000000000001_C340000000000001_8020000000000001 +FFEFFFFFFFBFFFFF_3C0002003FFFFFFF_FC0002003FDFFBFE +D50FC00000000002_C34FFFFFFFFFFFFF_586FC00000000001 +0000000000000001_C4B0FFFFFFFFF000_8190FFFFFFFFF000 +0000000000000001_C34FFFFFFFFFFFFF_802FFFFFFFFFFFFF +CE4F000000003FFE_C1F4001FFFFFFFFF_5053601F000027FE +C1DFFFFFFFE80000_C34FFFFFFFFFFFFE_453FFFFFFFE7FFFE +0000000000000001_381A2A6AB7776A91_0000000000000000 +0000000000000001_C34FFFFFFFFFFFFE_802FFFFFFFFFFFFE +B4CFFFFDFFFEFFFF_3F260584BD080937_B40605835CAF0D3A +C0400000000001FC_FFE0000000000000_7FF0000000000000 +0000000000000001_BDE969C24D971893_8000000000000000 +0000000000000001_FFE0000000000000_BCC0000000000000 +4025CF94566B4B58_8010100000200000_8045E563EAED55CC +B811EFFFFFFFFFFF_FFE0000000000001_7801F00000000000 +0000000000000001_C01003FFFFFFFFBF_8000000000000004 +0000000000000001_FFE0000000000001_BCC0000000000001 +404FF8000000007E_001FF7DFFFFFFFFF_007FEFE20800007D +C00003FEFFFFFFFF_FFEFFFFFFFFFFFFF_7FF0000000000000 +0000000000000001_B7F1000000000020_8000000000000000 +0000000000000001_FFEFFFFFFFFFFFFF_BCCFFFFFFFFFFFFF +6F800000000021FE_8000000FFFFFFFBE_AE9FFFFFFF7C43FC +4070FFFFFFFFFFFF_FFEFFFFFFFFFFFFE_FFF0000000000000 +0000000000000001_FFFFFF7FDFFFFFFF_FFFFFF7FDFFFFFFF +0000000000000001_FFEFFFFFFFFFFFFE_BCCFFFFFFFFFFFFE +0000000100000200_BCAFFFFFA0000000_8000000000000000 +00100003FFC00000_FFF0000000000000_FFF0000000000000 +0000000000000001_47FF000000000000_04DF000000000000 +0000000000000001_FFF0000000000000_FFF0000000000000 +3CA38A82442296EC_BF1FFFFFFF00000F_BBD38A82438642E3 +C03FFFF0001FFFFE_FFF0000000000001_FFF8000000000001 +0000000000000001_7FD008000000FFFF_3CB008000000FFFF +0000000000000001_FFF0000000000001_FFF8000000000001 +BA990A47FF91A237_3F15A1528236BE67_B9C0ECFB8A3280E7 +691007FFFFFDFFFF_FFFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF +0000000000000001_38FFFFF80000007E_0000000000000000 +0000000000000001_FFFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF +BFB782598EE1963D_C7FFFFFFFFFFFAFF_47C782598EE19290 +C2AFCC0D05774D24_FFFFFFFFFFFFFFFE_FFFFFFFFFFFFFFFE +0000000000000001_BFC3FC0000000000_8000000000000000 +0000000000000001_FFFFFFFFFFFFFFFE_FFFFFFFFFFFFFFFE +BFEFFFFFFFF7F7FF_002F07A6EB573EF6_802F07A6EB4F7549 +47E001FFFFFFFC00_0000000000000000_0000000000000000 +000FFFFFFFFFFFFF_3FE6CC569E37BA1B_000B662B4F1BDD0D +000FFFFFFFFFFFFF_0000000000000000_0000000000000000 +000FFFFFFFFFFFFF_0000000000000000_0000000000000000 +37F1C984DA2FA15D_8C60000000803FFF_8461C984DABE34A9 +C34FFFC001000000_0000000000000001_802FFFC001000000 +000FFFFFFFFFFFFF_C0280EEFA9D9947D_80480EEFA9D9947B +000FFFFFFFFFFFFF_0000000000000001_0000000000000000 +498FFFFFFFFFC100_8020000037FFFFFE_89C0000037FFE07E +41C5A5D87BCD5D1E_000FFFFFFFFFFFFF_01E5A5D87BCD5D1D +000FFFFFFFFFFFFF_47EFFFEFFF7FFFFF_080FFFEFFF7FFFFD +000FFFFFFFFFFFFF_000FFFFFFFFFFFFF_0000000000000000 +B7E0077FFFFFFFFE_BFC0000003FFFFFB_37B007800401DFF9 +450003FFFFFFF000_000FFFFFFFFFFFFE_052003FFFFFFEFFE +000FFFFFFFFFFFFF_41F0000000010002_0210000000010001 +000FFFFFFFFFFFFF_000FFFFFFFFFFFFE_0000000000000000 +3819F0E21E79F2CF_802BABDAA5FC7E3F_8000000000000000 +4AD57AD1D82F200A_0010000000000000_0AF57AD1D82F200A +000FFFFFFFFFFFFF_0000001000003FFF_0000000000000000 +000FFFFFFFFFFFFF_0010000000000000_0000000000000000 +40131FB8C050100E_7FEFFF00000001FE_7FF0000000000000 +3E6FFFF80007FFFF_0010000000000001_000000000FFFFC00 +000FFFFFFFFFFFFF_C7F000000001FDFF_881000000001FDFE +000FFFFFFFFFFFFF_0010000000000001_0000000000000000 +3FBFFFBFFFFF0000_CB8FFFDFFFF80000_CB5FFFA000370011 +8A784DA30375EC04_001FFFFFFFFFFFFF_8000000000000000 +000FFFFFFFFFFFFF_43EFFFFFEFFFFFFF_040FFFFFEFFFFFFD +000FFFFFFFFFFFFF_001FFFFFFFFFFFFF_0000000000000000 +3FF40000000003FF_BFDFE04000000000_BFE3EC28000003FB +401FFC0001000000_001FFFFFFFFFFFFE_004FFC0000FFFFFE +000FFFFFFFFFFFFF_380FF4BDB82DA02D_0000000000000000 +000FFFFFFFFFFFFF_001FFFFFFFFFFFFE_0000000000000000 +BFE0000001FFFFFC_FFDFFFFFFFF0007E_7FD0000001F8003B +C3F000400007FFFF_3CA0000000000000_C0A000400007FFFF +000FFFFFFFFFFFFF_41C2CF6CAD438055_01E2CF6CAD438054 +000FFFFFFFFFFFFF_3CA0000000000000_0000000000000000 +370000000004001F_C020007BFFFFFFFE_B730007C0004003C +8020000024000000_3CA0000000000001_8000000000000001 +000FFFFFFFFFFFFF_8010040000001FFF_8000000000000000 +000FFFFFFFFFFFFF_3CA0000000000001_0000000000000000 +C3D0030C167F60D9_37FFFFBEFFFFFFFE_BBE002EB904ED325 +3FE08007FFFFFFFF_3CAFFFFFFFFFFFFF_3CA08007FFFFFFFE +000FFFFFFFFFFFFF_B81FBDFBE9395EB3_8000000000000000 +000FFFFFFFFFFFFF_3CAFFFFFFFFFFFFF_0000000000000001 +A06CB433FB0FB66E_44FFFFFFFFFE0200_A57CB433FB0DECF6 +41AFFFFFFFFBEFFE_3CAFFFFFFFFFFFFE_3E6FFFFFFFFBEFFC +000FFFFFFFFFFFFF_C0108007FFFFFFFE_80308007FFFFFFFD +000FFFFFFFFFFFFF_3CAFFFFFFFFFFFFE_0000000000000001 +BFD0000000000000_C1ECEA38018E3B97_41CCEA38018E3B97 +D5F0000008000FFF_3FD0000000000000_D5D0000008000FFF +000FFFFFFFFFFFFF_40D00003FFFEFFFF_00F00003FFFEFFFE +000FFFFFFFFFFFFF_3FD0000000000000_0004000000000000 +3FF258CD32E658F4_47EFFFFF40000000_47F258CCC4D189C3 +C030000040000010_3FD0000000000001_C010000040000011 +000FFFFFFFFFFFFF_C7FFFF7FFFDFFFFE_881FFF7FFFDFFFFC +000FFFFFFFFFFFFF_3FD0000000000001_0004000000000000 +BE7FF7FFBFFFFFFE_4016E78241C01AF1_BEA6E1C83360A665 +411000000007FE00_3FDFFFFFFFFFFFFF_410000000007FDFF +000FFFFFFFFFFFFF_C530A81F6ACD67E9_8550A81F6ACD67E8 +000FFFFFFFFFFFFF_3FDFFFFFFFFFFFFF_0007FFFFFFFFFFFF +C99FFEFFFFEFFFFF_3ECFFFFFFFDFFFFA_C87FFEFFFFD000F9 +802000000000FEFF_3FDFFFFFFFFFFFFE_801000000000FEFE +000FFFFFFFFFFFFF_BFB96269E917CC32_800196269E917CC3 +000FFFFFFFFFFFFF_3FDFFFFFFFFFFFFE_0007FFFFFFFFFFFF +3C0FFDFFFFFFF7FE_3E1FFFFFE000001E_3A3FFDFFE001F81C +41EFFFFFFBFFFFBF_3FE0000000000000_41DFFFFFFBFFFFBF +000FFFFFFFFFFFFF_1E5F9B45EC578B94_0000000000000000 +000FFFFFFFFFFFFF_3FE0000000000000_0008000000000000 +441466E50DDBA08C_C33FFFDFFFFFFFF7_C76466D0A6F692AB +7FFFFFFFFC003FFF_3FE0000000000001_7FFFFFFFFC003FFF +000FFFFFFFFFFFFF_B81FFFFFFFFFFE00_8000000000000000 +000FFFFFFFFFFFFF_3FE0000000000001_0008000000000000 +4340000000000F00_001FFFC010000000_036FFFC010001E00 +43C00000013FFFFE_3FEFFFFFFFFFFFFF_43C00000013FFFFD +000FFFFFFFFFFFFF_3FD003FFDFFFFFFE_000400FFF7FFFFFF +000FFFFFFFFFFFFF_3FEFFFFFFFFFFFFF_000FFFFFFFFFFFFF +FFEFFFDFFFFFFFFE_4150200000000002_FFF0000000000000 +3FFFFFFFFFFF77FE_3FEFFFFFFFFFFFFE_3FFFFFFFFFFF77FC +000FFFFFFFFFFFFF_D7D3C6DCCC150718_97F3C6DCCC150717 +000FFFFFFFFFFFFF_3FEFFFFFFFFFFFFE_000FFFFFFFFFFFFE +C3CFFFDF00000000_C0C0000000003FFC_449FFFDF00007FF7 +3BBFFFC000000000_3FF0000000000000_3BBFFFC000000000 +000FFFFFFFFFFFFF_C3FFFE000007FFFF_841FFE000007FFFD +000FFFFFFFFFFFFF_3FF0000000000000_000FFFFFFFFFFFFF +400FFFFFFEFFFC00_40214C497A0B6C45_40414C49798107D0 +C7FC20BC60276748_3FF0000000000001_C7FC20BC6027674A +000FFFFFFFFFFFFF_3E9FFFFFF7FFFFFE_000000007FFFFFE0 +000FFFFFFFFFFFFF_3FF0000000000001_0010000000000000 +B7FC7621ED01FEBC_1BD3FFFFFFFFFBFF_93E1C9D534213BA6 +3F1FFFFFFFF00000_3FFFFFFFFFFFFFFF_3F2FFFFFFFEFFFFF +000FFFFFFFFFFFFF_C0D0003FFFFFFEFF_80F0003FFFFFFEFE +000FFFFFFFFFFFFF_3FFFFFFFFFFFFFFF_001FFFFFFFFFFFFD +434FFFFC04000000_C1C00000000000EF_C51FFFFC040001DE +BFA00000027FFFFF_3FFFFFFFFFFFFFFE_BFB00000027FFFFE +000FFFFFFFFFFFFF_4001FFFFFFFFFFFF_0021FFFFFFFFFFFE +000FFFFFFFFFFFFF_3FFFFFFFFFFFFFFE_001FFFFFFFFFFFFC +3109F8D54E236259_C6004007FFFFFFFF_B71A60C59FC696F2 +480F01FFFFFFFFFE_4000000000000000_481F01FFFFFFFFFE +000FFFFFFFFFFFFF_C179EDA020E53E29_8199EDA020E53E27 +000FFFFFFFFFFFFF_4000000000000000_001FFFFFFFFFFFFE +8ACE23742D722F8B_277FFBFFBFFFFFFF_8000000000000000 +3F6FFFFF00000001_4000000000000001_3F7FFFFF00000003 +000FFFFFFFFFFFFF_1F7FFFFFC001FFFF_0000000000000000 +000FFFFFFFFFFFFF_4000000000000001_0020000000000000 +BFDB5F82EC7B36F4_4170000002001FFE_C15B5F82EFE75E0D +C1E07FFFFFFFF7FF_400FFFFFFFFFFFFF_C2007FFFFFFFF7FE +000FFFFFFFFFFFFF_400FFFFDF7FFFFFF_002FFFFDF7FFFFFD +000FFFFFFFFFFFFF_400FFFFFFFFFFFFF_002FFFFFFFFFFFFD +3FAFFE00000000FE_F1B077FFFFFFFFFE_F17076F880000081 +B68F800000003FFF_400FFFFFFFFFFFFE_B6AF800000003FFD +000FFFFFFFFFFFFF_37E03F0000000000_0000000000000000 +000FFFFFFFFFFFFF_400FFFFFFFFFFFFE_002FFFFFFFFFFFFC +C000000400100000_4ADF442B8D81DFF3_CAEF44335EAC077F +C7E000001FDFFFFF_4010000000000000_C80000001FDFFFFF +000FFFFFFFFFFFFF_BFCFFFFFFFE03FFF_8003FFFFFFFC0800 +000FFFFFFFFFFFFF_4010000000000000_002FFFFFFFFFFFFE +801FF00000000FFE_41C00001C0000000_81EFF0037E400FFE +BFB7FF7FFFFFFFFE_4010000000000001_BFD7FF7FFFFFFFFF +000FFFFFFFFFFFFF_FFEF7FFFFFFFFFFA_C00F7FFFFFFFFFF8 +000FFFFFFFFFFFFF_4010000000000001_0030000000000000 +EFFFFFFFFFFF3FFF_43EFFFFFFFFFFFFF_F3FFFFFFFFFF3FFE +BFC0800000004000_401FFFFFFFFFFFFF_BFF0800000003FFF +000FFFFFFFFFFFFF_47FFFFFFFF7FFFBF_081FFFFFFF7FFFBD +000FFFFFFFFFFFFF_401FFFFFFFFFFFFF_003FFFFFFFFFFFFD +44DFFF1FFFFFFFFF_3F1000000007FE00_43FFFF20000FFB8F +BFE0001FFFFFEFFE_401FFFFFFFFFFFFE_C010001FFFFFEFFD +000FFFFFFFFFFFFF_7FFA52594B6AAC96_7FFA52594B6AAC96 +000FFFFFFFFFFFFF_401FFFFFFFFFFFFE_003FFFFFFFFFFFFC +8020000000000017_8013FEFFFFFFFFFF_0000000000000000 +C11FFFDFFBFFFFFE_4340000000000000_C46FFFDFFBFFFFFE +000FFFFFFFFFFFFF_81BD3C5BA33E326B_8000000000000000 +000FFFFFFFFFFFFF_4340000000000000_035FFFFFFFFFFFFE +C02FFFFFFE000800_E93FFFFFFFFFFFFF_697FFFFFFE0007FF +3FEFFFFFFF80001E_4340000000000001_433FFFFFFF800020 +000FFFFFFFFFFFFF_434002000000000E_036002000000000D +000FFFFFFFFFFFFF_4340000000000001_0360000000000000 +00225101173CD34F_3FFFFFFC0000007F_003250FECD1CB0B0 +001100003FFFFFFE_434FFFFFFFFFFFFF_037100003FFFFFFD +000FFFFFFFFFFFFF_400FFFFC00000001_002FFFFBFFFFFFFF +000FFFFFFFFFFFFF_434FFFFFFFFFFFFF_036FFFFFFFFFFFFD +43CFFFFFFFDF0000_C03F7FFFFE000000_C41F7FFFFDDF8400 +B066FD1CF779FFEB_434FFFFFFFFFFFFE_B3C6FD1CF779FFEA +000FFFFFFFFFFFFF_C7FF7FFFBFFFFFFE_881F7FFFBFFFFFFC +000FFFFFFFFFFFFF_434FFFFFFFFFFFFE_036FFFFFFFFFFFFC +23A0080000000002_BFE0000004007FFF_A390080004028041 +BF800000005FFFFF_7FE0000000000000_FF700000005FFFFF +000FFFFFFFFFFFFF_BE5E000002000000_8000000007800000 +000FFFFFFFFFFFFF_7FE0000000000000_3FFFFFFFFFFFFFFE +C0081124E7C2C6A2_43FBFFFFFBFFFFFF_C4150F0047C84930 +40E01F7FFFFFFFFF_7FE0000000000001_7FF0000000000000 +000FFFFFFFFFFFFF_3CB0FFBFFFFFFFFE_0000000000000001 +000FFFFFFFFFFFFF_7FE0000000000001_4000000000000000 +3F01C31E6C016497_BECFFFFFFFFE0000_BDE1C31E6C004865 +43EB42DBFC66A178_7FEFFFFFFFFFFFFF_7FF0000000000000 +000FFFFFFFFFFFFF_B51FFFFFC001FFFF_8000000000000000 +000FFFFFFFFFFFFF_7FEFFFFFFFFFFFFF_400FFFFFFFFFFFFD +3B5DFFFFFF7FFFFF_B8034E069BE3222B_B372192631D7B7ED +411D96BD48E7E8A5_7FEFFFFFFFFFFFFE_7FF0000000000000 +000FFFFFFFFFFFFF_BF1000000003FFDF_8000004000000010 +000FFFFFFFFFFFFF_7FEFFFFFFFFFFFFE_400FFFFFFFFFFFFC +42CFFFFFFE0007FF_3D9F87FFFFFFFFFF_407F87FFFE0787E0 +407FFBEFFFFFFFFE_7FF0000000000000_7FF0000000000000 +000FFFFFFFFFFFFF_4066D5C15EBD53EA_0086D5C15EBD53E9 +000FFFFFFFFFFFFF_7FF0000000000000_7FF0000000000000 +5290FFFFC0000000_C3DFFFFFF7800000_D680FFFFBB7C0011 +002000010000003F_7FF0000000000001_7FF8000000000001 +000FFFFFFFFFFFFF_BFC7FFFFFFF7FFFE_8002FFFFFFFF0000 +000FFFFFFFFFFFFF_7FF0000000000001_7FF8000000000001 +BFEFFFFC7FFFFFFF_C0607FFFFFFFFDFE_40607FFE31FFFDFD +DF0FFC1FFFFFFFFE_7FFFFFFFFFFFFFFF_7FFFFFFFFFFFFFFF +000FFFFFFFFFFFFF_FFF000000040003E_FFF800000040003E +000FFFFFFFFFFFFF_7FFFFFFFFFFFFFFF_7FFFFFFFFFFFFFFF +C3EFFFFFDE000000_001000400FFFFFFF_8410003FFEFFBBEE +B83FFBFFFFFFFFF7_7FFFFFFFFFFFFFFE_7FFFFFFFFFFFFFFE +000FFFFFFFFFFFFF_48067CE76AF6218D_08267CE76AF6218C +000FFFFFFFFFFFFF_7FFFFFFFFFFFFFFE_7FFFFFFFFFFFFFFE +BFC000000400003F_3F9AC3B6F25DF7F1_BF6AC3B6F90EE617 +BE4D01D37764FF1D_8000000000000000_0000000000000000 +000FFFFFFFFFFFFF_C3D0404000000000_83F0403FFFFFFFFF +000FFFFFFFFFFFFF_8000000000000000_0000000000000000 +8027FFBFFFFFFFFF_C62FFFFFFF000FFE_0667FFBFFF400DFD +7FD0003F80000000_8000000000000001_BCB0003F80000000 +000FFFFFFFFFFFFF_C1EFFFFFFFFFF7F7_820FFFFFFFFFF7F5 +000FFFFFFFFFFFFF_8000000000000001_8000000000000000 +C0100040007FFFFF_FFFFFEFFFF7FFFFF_FFFFFEFFFF7FFFFF +C01F7FFFFFFFFFDF_800FFFFFFFFFFFFF_003F7FFFFFFFFFDD +000FFFFFFFFFFFFF_C0B51C5B18B23A95_80D51C5B18B23A94 +000FFFFFFFFFFFFF_800FFFFFFFFFFFFF_8000000000000000 +E32FF0007FFFFFFF_43F09BE8A5FF905D_E730939AF41C332C +47D0000000800003_800FFFFFFFFFFFFE_87F0000000800001 +000FFFFFFFFFFFFF_3EDF807FFFFFFFFF_00000007E0200000 +000FFFFFFFFFFFFF_800FFFFFFFFFFFFE_8000000000000000 +47FFFFFFFFFCFFFF_C56FFFDF7FFFFFFE_CD7FFFDF7FFD0000 +4046BF34980845A3_8010000000000000_8066BF34980845A3 +000FFFFFFFFFFFFF_43E000000000081E_040000000000081D +000FFFFFFFFFFFFF_8010000000000000_8000000000000000 +6F5FFEFFFFC00000_4170000101FFFFFF_70DFFF0203AFDFFA +43C020000003FFFE_8010000000000001_83E020000003FFFF +000FFFFFFFFFFFFF_BC300020000001FF_8000000000000000 +000FFFFFFFFFFFFF_8010000000000001_8000000000000000 +C3EFFFFFFFFFF7F7_BCA0000013FFFFFE_40A0000013FFFBF9 +41FFEFFFFFFFFDFE_801FFFFFFFFFFFFF_822FEFFFFFFFFDFD +000FFFFFFFFFFFFF_43DFFFFFBE000000_03FFFFFFBDFFFFFE +000FFFFFFFFFFFFF_801FFFFFFFFFFFFF_8000000000000000 +7FF00000000047FF_B93FDFFFFFFEFFFE_7FF80000000047FF +32B000000007FE00_801FFFFFFFFFFFFE_8000000000000000 +000FFFFFFFFFFFFF_BD6FFFF000400000_8000000000001000 +000FFFFFFFFFFFFF_801FFFFFFFFFFFFE_8000000000000000 +B7EFFFFBFFFEFFFE_C1C7FAC55E957FA4_39C7FAC25F3C13FA +401F1C8FAE67A13D_BCA0000000000000_BCCF1C8FAE67A13D +000FFFFFFFFFFFFF_3FFFFFFF807FFFFF_001FFFFF807FFFFD +000FFFFFFFFFFFFF_BCA0000000000000_8000000000000000 +BEDB552C12514299_3C54B12B3B74A137_BB41AC8F9473FB6A +41900003FFF80000_BCA0000000000001_BE400003FFF80001 +000FFFFFFFFFFFFF_7FDFFFF800FFFFFF_3FFFFFF800FFFFFD +000FFFFFFFFFFFFF_BCA0000000000001_8000000000000000 +001B7306E4E785ED_BCAFFFFFFFFFFC07_8000000000000002 +BFBF7FFFFFFFFF7F_BCAFFFFFFFFFFFFF_3C7F7FFFFFFFFF7E +000FFFFFFFFFFFFF_B80000200000FFFF_8000000000000000 +000FFFFFFFFFFFFF_BCAFFFFFFFFFFFFF_8000000000000001 +C03CB6FEC9D40E15_40CFBFFF7FFFFFFE_C11C7D9059646AD0 +56500000001FEFFF_BCAFFFFFFFFFFFFE_D3100000001FEFFE +000FFFFFFFFFFFFF_402FFFFFC0000FFE_004FFFFFC0000FFC +000FFFFFFFFFFFFF_BCAFFFFFFFFFFFFE_8000000000000001 +801FFE000000001F_400FEE825F091FF6_803FEC8376E32F83 +801FFC00000FFFFF_BFD0000000000000_0007FF0000040000 +000FFFFFFFFFFFFF_41C0007FFFFFFFFE_01E0007FFFFFFFFD +000FFFFFFFFFFFFF_BFD0000000000000_8004000000000000 +43CFFFFFFFFE0002_1F6FFFFFFFFFEFFC_234FFFFFFFFDEFFE +BD1A3D3698F0F279_BFD0000000000001_3CFA3D3698F0F27B +000FFFFFFFFFFFFF_BFEFEFFFEFFFFFFF_800FF7FFF7FFFFFF +000FFFFFFFFFFFFF_BFD0000000000001_8004000000000000 +C53DAA2326A10327_C00FFFCFFFFFFFFF_455DA9F6A76C4935 +40041A66DDC91329_BFDFFFFFFFFFFFFF_BFF41A66DDC91328 +000FFFFFFFFFFFFF_BDBCAB0FD11DC435_800000000001CAB1 +000FFFFFFFFFFFFF_BFDFFFFFFFFFFFFF_8007FFFFFFFFFFFF +C34FFF80000007FE_D9B0FFFFFFFFFFDF_5D10FFBC0000041E +C03C3915287E2637_BFDFFFFFFFFFFFFE_402C3915287E2635 +000FFFFFFFFFFFFF_4620000000201FFF_0640000000201FFE +000FFFFFFFFFFFFF_BFDFFFFFFFFFFFFE_8007FFFFFFFFFFFF +C1F0000004001FFF_403FFFFDEFFFFFFF_C23FFFFDF8003F79 +0E08000000000800_BFE0000000000000_8DF8000000000800 +000FFFFFFFFFFFFF_400FFFFFDFFFC000_002FFFFFDFFFBFFE +000FFFFFFFFFFFFF_BFE0000000000000_8008000000000000 +37E0000000004000_B7CDFFFFFFF7FFFE_AFBDFFFFFFF877FE +406FFFFFFE0001FF_BFE0000000000001_C05FFFFFFE000201 +000FFFFFFFFFFFFF_4012E22B0796D97A_0032E22B0796D979 +000FFFFFFFFFFFFF_BFE0000000000001_8008000000000000 +480F800000007FFF_B99000007FFFFFFF_C1AF8000FC007FFD +FAC0003FFFFFFC00_BFEFFFFFFFFFFFFF_7AC0003FFFFFFBFF +000FFFFFFFFFFFFF_43460FDD484EBBF2_03660FDD484EBBF1 +000FFFFFFFFFFFFF_BFEFFFFFFFFFFFFF_800FFFFFFFFFFFFF +00250255336A1FD8_37EDFFFFFFFFF7FF_0000000000000000 +40DFFFFF80000FFE_BFEFFFFFFFFFFFFE_C0DFFFFF80000FFC +000FFFFFFFFFFFFF_BC6DE83267D8F306_8000000000000000 +000FFFFFFFFFFFFF_BFEFFFFFFFFFFFFE_800FFFFFFFFFFFFE +43DFE00400000000_47FFFFFEF7FFFFFF_4BEFE002F907DEFF +00100000200FFFFF_BFF0000000000000_80100000200FFFFF +000FFFFFFFFFFFFF_FFD0003FFEFFFFFE_BFF0003FFEFFFFFD +000FFFFFFFFFFFFF_BFF0000000000000_800FFFFFFFFFFFFF +3F8C000007FFFFFE_8B5FFFFFF0000004_8AFBFFFFF9FFFFFE +3F04E8DBDE385ED5_BFF0000000000001_BF04E8DBDE385ED6 +000FFFFFFFFFFFFF_C80AE23008288F2B_882AE23008288F29 +000FFFFFFFFFFFFF_BFF0000000000001_8010000000000000 +4B2FFBFF00000000_3CA000000007FFE0_47DFFBFF000FFDC0 +BFF0080001FFFFFF_BFFFFFFFFFFFFFFF_4000080001FFFFFE +000FFFFFFFFFFFFF_C010000000002400_80300000000023FF +000FFFFFFFFFFFFF_BFFFFFFFFFFFFFFF_801FFFFFFFFFFFFD +BFF164D0CE0F4D7C_41E7D7D5DDD93C63_C1E9EB8F5D4F5143 +C1D8000000000000_BFFFFFFFFFFFFFFE_41E7FFFFFFFFFFFE +000FFFFFFFFFFFFF_3F2FFEFFFFFFFFFF_000000FFF8000000 +000FFFFFFFFFFFFF_BFFFFFFFFFFFFFFE_801FFFFFFFFFFFFC +C1D6D2C0D910DCD3_3CAFFFFFFFD7FFFF_BE96D2C0D8F45561 +FFFFFFFBFFFFF7FE_C000000000000000_FFFFFFFBFFFFF7FE +000FFFFFFFFFFFFF_FFFABF7501A0A4D4_FFFABF7501A0A4D4 +000FFFFFFFFFFFFF_C000000000000000_801FFFFFFFFFFFFE +4370007FFFFFFFFF_3FE000000FBFFFFF_436000800FC07DFE +402008000FFFFFFE_C000000000000001_C03008000FFFFFFF +000FFFFFFFFFFFFF_C1FD5FA1A934528E_821D5FA1A934528C +000FFFFFFFFFFFFF_C000000000000001_8020000000000000 +C03FFFFFF801FFFF_BFE0000000100001_402FFFFFF8220001 +001FFFDFFEFFFFFE_C00FFFFFFFFFFFFF_803FFFDFFEFFFFFD +000FFFFFFFFFFFFF_871000000003FBFF_8000000000000000 +000FFFFFFFFFFFFF_C00FFFFFFFFFFFFF_802FFFFFFFFFFFFD +CF66989323B8CA6C_7FF0001FFFFFFFFF_7FF8001FFFFFFFFF +BF4000001FFFFFFE_C00FFFFFFFFFFFFE_3F6000001FFFFFFD +000FFFFFFFFFFFFF_4030000020000003_0050000020000002 +000FFFFFFFFFFFFF_C00FFFFFFFFFFFFE_802FFFFFFFFFFFFC +43CFFFFFC0000007_CCF3EAA6A1B6FA2E_D0D3EAA679E1ACEF +BF27000000000000_C010000000000000_3F47000000000000 +000FFFFFFFFFFFFF_C010000000001FFE_8030000000001FFD +000FFFFFFFFFFFFF_C010000000000000_802FFFFFFFFFFFFE +C27D3655B9D22134_3FB0200000002000_C23D70C26545FFE3 +3FE01FFFFFFFFFFE_C010000000000001_C0001FFFFFFFFFFF diff --git a/wally-pipelined/src/fpu/FMA/tbgen/test_gen.sh b/wally-pipelined/src/fpu/FMA/tbgen/test_gen.sh new file mode 100755 index 000000000..0a4918470 --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tbgen/test_gen.sh @@ -0,0 +1 @@ +testfloat_gen f64_mulAdd -n 6133248 -rnear_even -seed 113355 -level 1 >> testFloat \ No newline at end of file diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tstFlMult.awk b/wally-pipelined/src/fpu/FMA/tbgen/tstFlMult.awk new file mode 100755 index 000000000..3675cab5a --- /dev/null +++ b/wally-pipelined/src/fpu/FMA/tbgen/tstFlMult.awk @@ -0,0 +1 @@ +awk 'BEGIN {FS = " "; OFS = "_"} {if ($3 == "0000000000000000") print $1, $2, $4;}' testFloat | head -n 1000 > testMini \ No newline at end of file