| // ========== 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 |
| |
| |