blob: 2b5fcb8cd8774176a158eb6a80fc4c074b665875 [file] [log] [blame]
// ========== Copyright Header Begin ==========================================
//
// OpenSPARC T1 Processor File: fpu_in2_gt_in1_frac.v
// Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
//
// The above named program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public
// License version 2 as published by the Free Software Foundation.
//
// The above named program is distributed in the hope that it will be
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this work; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
// ========== Copyright Header End ============================================
///////////////////////////////////////////////////////////////////////////////
//
// Fraction comparison of two inputs that can have any value.
//
///////////////////////////////////////////////////////////////////////////////
module fpu_in2_gt_in1_frac (
din1,
din2,
sngop,
expadd11,
expeq,
din2_neq_din1,
din2_gt_din1,
din2_gt1_din1
);
input [54:0] din1; // input 1- fraction
input [54:0] din2; // input 2- fraction
input sngop; // single precision inputs
input expadd11; // exponent sign bit
input expeq; // exponent are equal
output din2_neq_din1; // input 2 != input 1- fraction
output din2_gt_din1; // input 2 > input 1- fraction
output din2_gt1_din1; // input 2 > input 1
wire din2_neq_din1_54_52;
wire din2_gt_din1_54_52;
wire din2_neq_din1_51_50;
wire din2_gt_din1_51_50;
wire din2_neq_din1_49_48;
wire din2_gt_din1_49_48;
wire din2_neq_din1_47_45;
wire din2_gt_din1_47_45;
wire din2_neq_din1_44_42;
wire din2_gt_din1_44_42;
wire din2_neq_din1_41_39;
wire din2_gt_din1_41_39;
wire din2_neq_din1_38_36;
wire din2_gt_din1_38_36;
wire din2_neq_din1_35_33;
wire din2_gt_din1_35_33;
wire din2_neq_din1_32_30;
wire din2_gt_din1_32_30;
wire din2_neq_din1_29_27;
wire din2_gt_din1_29_27;
wire din2_neq_din1_26_24;
wire din2_gt_din1_26_24;
wire din2_neq_din1_23_21;
wire din2_gt_din1_23_21;
wire din2_neq_din1_20_18;
wire din2_gt_din1_20_18;
wire din2_neq_din1_17_15;
wire din2_gt_din1_17_15;
wire din2_neq_din1_14_12;
wire din2_gt_din1_14_12;
wire din2_neq_din1_11_9;
wire din2_gt_din1_11_9;
wire din2_neq_din1_8_6;
wire din2_gt_din1_8_6;
wire din2_neq_din1_5_3;
wire din2_gt_din1_5_3;
wire din2_neq_din1_2_0;
wire din2_gt_din1_2_0;
wire din2_neq_din1_51_45;
wire din2_gt_din1_51_45;
wire din2_neq_din1_44_36;
wire din2_gt_din1_44_36;
wire din2_neq_din1_35_27;
wire din2_gt_din1_35_27;
wire din2_neq_din1_26_18;
wire din2_gt_din1_26_18;
wire din2_neq_din1_17_9;
wire din2_gt_din1_17_9;
wire din2_neq_din1_8_0;
wire din2_gt_din1_8_0;
wire din2_neq_din1_51_27;
wire din2_gt_din1_51_27;
wire din2_neq_din1_26_0;
wire din2_gt_din1_26_0;
wire din2_neq_din1;
wire din2_gt_din1;
wire din2_gt1_din1;
fpu_in2_gt_in1_3b fpu_in2_gt_in1_54_52 (
.din1 (din1[54:52]),
.din2 (din2[54:52]),
.din2_neq_din1 (din2_neq_din1_54_52),
.din2_gt_din1 (din2_gt_din1_54_52)
);
fpu_in2_gt_in1_2b fpu_in2_gt_in1_51_50 (
.din1 (din1[51:50]),
.din2 (din2[51:50]),
.din2_neq_din1 (din2_neq_din1_51_50),
.din2_gt_din1 (din2_gt_din1_51_50)
);
fpu_in2_gt_in1_2b fpu_in2_gt_in1_49_48 (
.din1 (din1[49:48]),
.din2 (din2[49:48]),
.din2_neq_din1 (din2_neq_din1_49_48),
.din2_gt_din1 (din2_gt_din1_49_48)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_47_45 (
.din1 (din1[47:45]),
.din2 (din2[47:45]),
.din2_neq_din1 (din2_neq_din1_47_45),
.din2_gt_din1 (din2_gt_din1_47_45)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_44_42 (
.din1 (din1[44:42]),
.din2 (din2[44:42]),
.din2_neq_din1 (din2_neq_din1_44_42),
.din2_gt_din1 (din2_gt_din1_44_42)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_41_39 (
.din1 (din1[41:39]),
.din2 (din2[41:39]),
.din2_neq_din1 (din2_neq_din1_41_39),
.din2_gt_din1 (din2_gt_din1_41_39)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_38_36 (
.din1 (din1[38:36]),
.din2 (din2[38:36]),
.din2_neq_din1 (din2_neq_din1_38_36),
.din2_gt_din1 (din2_gt_din1_38_36)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_35_33 (
.din1 (din1[35:33]),
.din2 (din2[35:33]),
.din2_neq_din1 (din2_neq_din1_35_33),
.din2_gt_din1 (din2_gt_din1_35_33)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_32_30 (
.din1 (din1[32:30]),
.din2 (din2[32:30]),
.din2_neq_din1 (din2_neq_din1_32_30),
.din2_gt_din1 (din2_gt_din1_32_30)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_29_27 (
.din1 (din1[29:27]),
.din2 (din2[29:27]),
.din2_neq_din1 (din2_neq_din1_29_27),
.din2_gt_din1 (din2_gt_din1_29_27)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_26_24 (
.din1 (din1[26:24]),
.din2 (din2[26:24]),
.din2_neq_din1 (din2_neq_din1_26_24),
.din2_gt_din1 (din2_gt_din1_26_24)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_23_21 (
.din1 (din1[23:21]),
.din2 (din2[23:21]),
.din2_neq_din1 (din2_neq_din1_23_21),
.din2_gt_din1 (din2_gt_din1_23_21)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_20_18 (
.din1 (din1[20:18]),
.din2 (din2[20:18]),
.din2_neq_din1 (din2_neq_din1_20_18),
.din2_gt_din1 (din2_gt_din1_20_18)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_17_15 (
.din1 (din1[17:15]),
.din2 (din2[17:15]),
.din2_neq_din1 (din2_neq_din1_17_15),
.din2_gt_din1 (din2_gt_din1_17_15)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_14_12 (
.din1 (din1[14:12]),
.din2 (din2[14:12]),
.din2_neq_din1 (din2_neq_din1_14_12),
.din2_gt_din1 (din2_gt_din1_14_12)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_11_9 (
.din1 (din1[11:9]),
.din2 (din2[11:9]),
.din2_neq_din1 (din2_neq_din1_11_9),
.din2_gt_din1 (din2_gt_din1_11_9)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_8_6 (
.din1 (din1[8:6]),
.din2 (din2[8:6]),
.din2_neq_din1 (din2_neq_din1_8_6),
.din2_gt_din1 (din2_gt_din1_8_6)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_5_3 (
.din1 (din1[5:3]),
.din2 (din2[5:3]),
.din2_neq_din1 (din2_neq_din1_5_3),
.din2_gt_din1 (din2_gt_din1_5_3)
);
fpu_in2_gt_in1_3b fpu_in2_gt_in1_2_0 (
.din1 (din1[2:0]),
.din2 (din2[2:0]),
.din2_neq_din1 (din2_neq_din1_2_0),
.din2_gt_din1 (din2_gt_din1_2_0)
);
fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_51_45 (
.din2_neq_din1_hi (din2_neq_din1_51_50),
.din2_gt_din1_hi (din2_gt_din1_51_50),
.din2_neq_din1_mid (din2_neq_din1_49_48),
.din2_gt_din1_mid (din2_gt_din1_49_48),
.din2_neq_din1_lo (din2_neq_din1_47_45),
.din2_gt_din1_lo (din2_gt_din1_47_45),
.din2_neq_din1 (din2_neq_din1_51_45),
.din2_gt_din1 (din2_gt_din1_51_45)
);
fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_44_36 (
.din2_neq_din1_hi (din2_neq_din1_44_42),
.din2_gt_din1_hi (din2_gt_din1_44_42),
.din2_neq_din1_mid (din2_neq_din1_41_39),
.din2_gt_din1_mid (din2_gt_din1_41_39),
.din2_neq_din1_lo (din2_neq_din1_38_36),
.din2_gt_din1_lo (din2_gt_din1_38_36),
.din2_neq_din1 (din2_neq_din1_44_36),
.din2_gt_din1 (din2_gt_din1_44_36)
);
fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_35_27 (
.din2_neq_din1_hi (din2_neq_din1_35_33),
.din2_gt_din1_hi (din2_gt_din1_35_33),
.din2_neq_din1_mid (din2_neq_din1_32_30),
.din2_gt_din1_mid (din2_gt_din1_32_30),
.din2_neq_din1_lo (din2_neq_din1_29_27),
.din2_gt_din1_lo (din2_gt_din1_29_27),
.din2_neq_din1 (din2_neq_din1_35_27),
.din2_gt_din1 (din2_gt_din1_35_27)
);
fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_26_18 (
.din2_neq_din1_hi (din2_neq_din1_26_24),
.din2_gt_din1_hi (din2_gt_din1_26_24),
.din2_neq_din1_mid (din2_neq_din1_23_21),
.din2_gt_din1_mid (din2_gt_din1_23_21),
.din2_neq_din1_lo (din2_neq_din1_20_18),
.din2_gt_din1_lo (din2_gt_din1_20_18),
.din2_neq_din1 (din2_neq_din1_26_18),
.din2_gt_din1 (din2_gt_din1_26_18)
);
fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_17_9 (
.din2_neq_din1_hi (din2_neq_din1_17_15),
.din2_gt_din1_hi (din2_gt_din1_17_15),
.din2_neq_din1_mid (din2_neq_din1_14_12),
.din2_gt_din1_mid (din2_gt_din1_14_12),
.din2_neq_din1_lo (din2_neq_din1_11_9),
.din2_gt_din1_lo (din2_gt_din1_11_9),
.din2_neq_din1 (din2_neq_din1_17_9),
.din2_gt_din1 (din2_gt_din1_17_9)
);
fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_8_0 (
.din2_neq_din1_hi (din2_neq_din1_8_6),
.din2_gt_din1_hi (din2_gt_din1_8_6),
.din2_neq_din1_mid (din2_neq_din1_5_3),
.din2_gt_din1_mid (din2_gt_din1_5_3),
.din2_neq_din1_lo (din2_neq_din1_2_0),
.din2_gt_din1_lo (din2_gt_din1_2_0),
.din2_neq_din1 (din2_neq_din1_8_0),
.din2_gt_din1 (din2_gt_din1_8_0)
);
fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_51_27 (
.din2_neq_din1_hi (din2_neq_din1_51_45),
.din2_gt_din1_hi (din2_gt_din1_51_45),
.din2_neq_din1_mid (din2_neq_din1_44_36),
.din2_gt_din1_mid (din2_gt_din1_44_36),
.din2_neq_din1_lo (din2_neq_din1_35_27),
.din2_gt_din1_lo (din2_gt_din1_35_27),
.din2_neq_din1 (din2_neq_din1_51_27),
.din2_gt_din1 (din2_gt_din1_51_27)
);
fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_26_0 (
.din2_neq_din1_hi (din2_neq_din1_26_18),
.din2_gt_din1_hi (din2_gt_din1_26_18),
.din2_neq_din1_mid (din2_neq_din1_17_9),
.din2_gt_din1_mid (din2_gt_din1_17_9),
.din2_neq_din1_lo (din2_neq_din1_8_0),
.din2_gt_din1_lo (din2_gt_din1_8_0),
.din2_neq_din1 (din2_neq_din1_26_0),
.din2_gt_din1 (din2_gt_din1_26_0)
);
assign din2_neq_din1= din2_neq_din1_51_27
|| din2_neq_din1_26_0
|| (din2_neq_din1_54_52 && sngop);
assign din2_gt_din1= (din2_neq_din1_54_52 && din2_gt_din1_54_52
&& sngop)
|| ((!(din2_neq_din1_54_52 && sngop))
&& din2_neq_din1_51_27 && din2_gt_din1_51_27)
|| ((!(din2_neq_din1_54_52 && sngop))
&& (!din2_neq_din1_51_27)
&& din2_gt_din1_26_0);
assign din2_gt1_din1= expadd11
|| (din2_gt_din1 && expeq);
endmodule