source: XOpenSparcT1/trunk/T1-FPU/fpu_in2_gt_in1_frac.v @ 6

Revision 6, 11.5 KB checked in by pntsvt00, 14 years ago (diff)

versione iniziale opensparc

Line 
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T1 Processor File: fpu_in2_gt_in1_frac.v
4// Copyright (c) 2006 Sun Microsystems, Inc.  All Rights Reserved.
5// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
6//
7// The above named program is free software; you can redistribute it and/or
8// modify it under the terms of the GNU General Public
9// License version 2 as published by the Free Software Foundation.
10//
11// The above named program is distributed in the hope that it will be
12// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14// General Public License for more details.
15//
16// You should have received a copy of the GNU General Public
17// License along with this work; if not, write to the Free Software
18// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
19//
20// ========== Copyright Header End ============================================
21///////////////////////////////////////////////////////////////////////////////
22//
23//      Fraction comparison of two inputs that can have any value.
24//
25///////////////////////////////////////////////////////////////////////////////
26
27module fpu_in2_gt_in1_frac (
28        din1,
29        din2,
30        sngop,
31        expadd11,
32        expeq,
33
34        din2_neq_din1,
35        din2_gt_din1,
36        din2_gt1_din1
37);
38
39
40input [54:0]    din1;                   // input 1- fraction
41input [54:0]    din2;                   // input 2- fraction
42input           sngop;                  // single precision inputs
43input           expadd11;               // exponent sign bit
44input           expeq;                  // exponent are equal
45
46output          din2_neq_din1;          // input 2 != input 1- fraction
47output          din2_gt_din1;           // input 2 > input 1- fraction
48output          din2_gt1_din1;          // input 2 > input 1
49
50
51wire            din2_neq_din1_54_52;
52wire            din2_gt_din1_54_52;
53wire            din2_neq_din1_51_50;
54wire            din2_gt_din1_51_50;
55wire            din2_neq_din1_49_48;
56wire            din2_gt_din1_49_48;
57wire            din2_neq_din1_47_45;
58wire            din2_gt_din1_47_45;
59wire            din2_neq_din1_44_42;
60wire            din2_gt_din1_44_42;
61wire            din2_neq_din1_41_39;
62wire            din2_gt_din1_41_39;
63wire            din2_neq_din1_38_36;
64wire            din2_gt_din1_38_36;
65wire            din2_neq_din1_35_33;
66wire            din2_gt_din1_35_33;
67wire            din2_neq_din1_32_30;
68wire            din2_gt_din1_32_30;
69wire            din2_neq_din1_29_27;
70wire            din2_gt_din1_29_27;
71wire            din2_neq_din1_26_24;
72wire            din2_gt_din1_26_24;
73wire            din2_neq_din1_23_21;
74wire            din2_gt_din1_23_21;
75wire            din2_neq_din1_20_18;
76wire            din2_gt_din1_20_18;
77wire            din2_neq_din1_17_15;
78wire            din2_gt_din1_17_15;
79wire            din2_neq_din1_14_12;
80wire            din2_gt_din1_14_12;
81wire            din2_neq_din1_11_9;
82wire            din2_gt_din1_11_9;
83wire            din2_neq_din1_8_6;
84wire            din2_gt_din1_8_6;
85wire            din2_neq_din1_5_3;
86wire            din2_gt_din1_5_3;
87wire            din2_neq_din1_2_0;
88wire            din2_gt_din1_2_0;
89wire            din2_neq_din1_51_45;
90wire            din2_gt_din1_51_45;
91wire            din2_neq_din1_44_36;
92wire            din2_gt_din1_44_36;
93wire            din2_neq_din1_35_27;
94wire            din2_gt_din1_35_27;
95wire            din2_neq_din1_26_18;
96wire            din2_gt_din1_26_18;
97wire            din2_neq_din1_17_9;
98wire            din2_gt_din1_17_9;
99wire            din2_neq_din1_8_0;
100wire            din2_gt_din1_8_0;
101wire            din2_neq_din1_51_27;
102wire            din2_gt_din1_51_27;
103wire            din2_neq_din1_26_0;
104wire            din2_gt_din1_26_0;
105wire            din2_neq_din1;
106wire            din2_gt_din1;
107wire            din2_gt1_din1;
108
109
110fpu_in2_gt_in1_3b fpu_in2_gt_in1_54_52 (
111        .din1                   (din1[54:52]),
112        .din2                   (din2[54:52]),
113
114        .din2_neq_din1          (din2_neq_din1_54_52),
115        .din2_gt_din1           (din2_gt_din1_54_52)
116);
117
118fpu_in2_gt_in1_2b fpu_in2_gt_in1_51_50 (
119        .din1                   (din1[51:50]),
120        .din2                   (din2[51:50]),
121
122        .din2_neq_din1          (din2_neq_din1_51_50),
123        .din2_gt_din1           (din2_gt_din1_51_50)
124);
125
126fpu_in2_gt_in1_2b fpu_in2_gt_in1_49_48 (
127        .din1                   (din1[49:48]),
128        .din2                   (din2[49:48]),
129
130        .din2_neq_din1          (din2_neq_din1_49_48),
131        .din2_gt_din1           (din2_gt_din1_49_48)
132);
133
134fpu_in2_gt_in1_3b fpu_in2_gt_in1_47_45 (
135        .din1                   (din1[47:45]),
136        .din2                   (din2[47:45]),
137
138        .din2_neq_din1          (din2_neq_din1_47_45),
139        .din2_gt_din1           (din2_gt_din1_47_45)
140);
141
142fpu_in2_gt_in1_3b fpu_in2_gt_in1_44_42 (
143        .din1                   (din1[44:42]),
144        .din2                   (din2[44:42]),
145
146        .din2_neq_din1          (din2_neq_din1_44_42),
147        .din2_gt_din1           (din2_gt_din1_44_42)
148);
149
150fpu_in2_gt_in1_3b fpu_in2_gt_in1_41_39 (
151        .din1                   (din1[41:39]),
152        .din2                   (din2[41:39]),
153
154        .din2_neq_din1          (din2_neq_din1_41_39),
155        .din2_gt_din1           (din2_gt_din1_41_39)
156);
157
158fpu_in2_gt_in1_3b fpu_in2_gt_in1_38_36 (
159        .din1                   (din1[38:36]),
160        .din2                   (din2[38:36]),
161
162        .din2_neq_din1          (din2_neq_din1_38_36),
163        .din2_gt_din1           (din2_gt_din1_38_36)
164);
165
166fpu_in2_gt_in1_3b fpu_in2_gt_in1_35_33 (
167        .din1                   (din1[35:33]),
168        .din2                   (din2[35:33]),
169
170        .din2_neq_din1          (din2_neq_din1_35_33),
171        .din2_gt_din1           (din2_gt_din1_35_33)
172);
173
174fpu_in2_gt_in1_3b fpu_in2_gt_in1_32_30 (
175        .din1                   (din1[32:30]),
176        .din2                   (din2[32:30]),
177
178        .din2_neq_din1          (din2_neq_din1_32_30),
179        .din2_gt_din1           (din2_gt_din1_32_30)
180);
181
182fpu_in2_gt_in1_3b fpu_in2_gt_in1_29_27 (
183        .din1                   (din1[29:27]),
184        .din2                   (din2[29:27]),
185
186        .din2_neq_din1          (din2_neq_din1_29_27),
187        .din2_gt_din1           (din2_gt_din1_29_27)
188);
189
190fpu_in2_gt_in1_3b fpu_in2_gt_in1_26_24 (
191        .din1                   (din1[26:24]),
192        .din2                   (din2[26:24]),
193
194        .din2_neq_din1          (din2_neq_din1_26_24),
195        .din2_gt_din1           (din2_gt_din1_26_24)
196);
197
198fpu_in2_gt_in1_3b fpu_in2_gt_in1_23_21 (
199        .din1                   (din1[23:21]),
200        .din2                   (din2[23:21]),
201
202        .din2_neq_din1          (din2_neq_din1_23_21),
203        .din2_gt_din1           (din2_gt_din1_23_21)
204);
205
206fpu_in2_gt_in1_3b fpu_in2_gt_in1_20_18 (
207        .din1                   (din1[20:18]),
208        .din2                   (din2[20:18]),
209
210        .din2_neq_din1          (din2_neq_din1_20_18),
211        .din2_gt_din1           (din2_gt_din1_20_18)
212);
213
214fpu_in2_gt_in1_3b fpu_in2_gt_in1_17_15 (
215        .din1                   (din1[17:15]),
216        .din2                   (din2[17:15]),
217
218        .din2_neq_din1          (din2_neq_din1_17_15),
219        .din2_gt_din1           (din2_gt_din1_17_15)
220);
221
222fpu_in2_gt_in1_3b fpu_in2_gt_in1_14_12 (
223        .din1                   (din1[14:12]),
224        .din2                   (din2[14:12]),
225
226        .din2_neq_din1          (din2_neq_din1_14_12),
227        .din2_gt_din1           (din2_gt_din1_14_12)
228);
229
230fpu_in2_gt_in1_3b fpu_in2_gt_in1_11_9 (
231        .din1                   (din1[11:9]),
232        .din2                   (din2[11:9]),
233
234        .din2_neq_din1          (din2_neq_din1_11_9),
235        .din2_gt_din1           (din2_gt_din1_11_9)
236);
237
238fpu_in2_gt_in1_3b fpu_in2_gt_in1_8_6 (
239        .din1                   (din1[8:6]),
240        .din2                   (din2[8:6]),
241
242        .din2_neq_din1          (din2_neq_din1_8_6),
243        .din2_gt_din1           (din2_gt_din1_8_6)
244);
245
246fpu_in2_gt_in1_3b fpu_in2_gt_in1_5_3 (
247        .din1                   (din1[5:3]),
248        .din2                   (din2[5:3]),
249
250        .din2_neq_din1          (din2_neq_din1_5_3),
251        .din2_gt_din1           (din2_gt_din1_5_3)
252);
253
254fpu_in2_gt_in1_3b fpu_in2_gt_in1_2_0 (
255        .din1                   (din1[2:0]),
256        .din2                   (din2[2:0]),
257
258        .din2_neq_din1          (din2_neq_din1_2_0),
259        .din2_gt_din1           (din2_gt_din1_2_0)
260);
261
262
263fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_51_45 (
264        .din2_neq_din1_hi       (din2_neq_din1_51_50),
265        .din2_gt_din1_hi        (din2_gt_din1_51_50),
266        .din2_neq_din1_mid      (din2_neq_din1_49_48),
267        .din2_gt_din1_mid       (din2_gt_din1_49_48),
268        .din2_neq_din1_lo       (din2_neq_din1_47_45),
269        .din2_gt_din1_lo        (din2_gt_din1_47_45),
270
271        .din2_neq_din1          (din2_neq_din1_51_45),
272        .din2_gt_din1           (din2_gt_din1_51_45)
273);
274
275fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_44_36 (
276        .din2_neq_din1_hi       (din2_neq_din1_44_42),
277        .din2_gt_din1_hi        (din2_gt_din1_44_42),
278        .din2_neq_din1_mid      (din2_neq_din1_41_39),
279        .din2_gt_din1_mid       (din2_gt_din1_41_39),
280        .din2_neq_din1_lo       (din2_neq_din1_38_36),
281        .din2_gt_din1_lo        (din2_gt_din1_38_36),
282
283        .din2_neq_din1          (din2_neq_din1_44_36),
284        .din2_gt_din1           (din2_gt_din1_44_36)
285);
286
287fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_35_27 (
288        .din2_neq_din1_hi       (din2_neq_din1_35_33),
289        .din2_gt_din1_hi        (din2_gt_din1_35_33),
290        .din2_neq_din1_mid      (din2_neq_din1_32_30),
291        .din2_gt_din1_mid       (din2_gt_din1_32_30),
292        .din2_neq_din1_lo       (din2_neq_din1_29_27),
293        .din2_gt_din1_lo        (din2_gt_din1_29_27),
294
295        .din2_neq_din1          (din2_neq_din1_35_27),
296        .din2_gt_din1           (din2_gt_din1_35_27)
297);
298
299fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_26_18 (
300        .din2_neq_din1_hi       (din2_neq_din1_26_24),
301        .din2_gt_din1_hi        (din2_gt_din1_26_24),
302        .din2_neq_din1_mid      (din2_neq_din1_23_21),
303        .din2_gt_din1_mid       (din2_gt_din1_23_21),
304        .din2_neq_din1_lo       (din2_neq_din1_20_18),
305        .din2_gt_din1_lo        (din2_gt_din1_20_18),
306
307        .din2_neq_din1          (din2_neq_din1_26_18),
308        .din2_gt_din1           (din2_gt_din1_26_18)
309);
310
311fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_17_9 (
312        .din2_neq_din1_hi       (din2_neq_din1_17_15),
313        .din2_gt_din1_hi        (din2_gt_din1_17_15),
314        .din2_neq_din1_mid      (din2_neq_din1_14_12),
315        .din2_gt_din1_mid       (din2_gt_din1_14_12),
316        .din2_neq_din1_lo       (din2_neq_din1_11_9),
317        .din2_gt_din1_lo        (din2_gt_din1_11_9),
318
319        .din2_neq_din1          (din2_neq_din1_17_9),
320        .din2_gt_din1           (din2_gt_din1_17_9)
321);
322
323fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_8_0 (
324        .din2_neq_din1_hi       (din2_neq_din1_8_6),
325        .din2_gt_din1_hi        (din2_gt_din1_8_6),
326        .din2_neq_din1_mid      (din2_neq_din1_5_3),
327        .din2_gt_din1_mid       (din2_gt_din1_5_3),
328        .din2_neq_din1_lo       (din2_neq_din1_2_0),
329        .din2_gt_din1_lo        (din2_gt_din1_2_0),
330
331        .din2_neq_din1          (din2_neq_din1_8_0),
332        .din2_gt_din1           (din2_gt_din1_8_0)
333);
334
335
336fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_51_27 (
337        .din2_neq_din1_hi       (din2_neq_din1_51_45),
338        .din2_gt_din1_hi        (din2_gt_din1_51_45),
339        .din2_neq_din1_mid      (din2_neq_din1_44_36),
340        .din2_gt_din1_mid       (din2_gt_din1_44_36),
341        .din2_neq_din1_lo       (din2_neq_din1_35_27),
342        .din2_gt_din1_lo        (din2_gt_din1_35_27),
343
344        .din2_neq_din1          (din2_neq_din1_51_27),
345        .din2_gt_din1           (din2_gt_din1_51_27)
346);
347
348fpu_in2_gt_in1_3to1 fpu_in2_gt_in1_26_0 (
349        .din2_neq_din1_hi       (din2_neq_din1_26_18),
350        .din2_gt_din1_hi        (din2_gt_din1_26_18),
351        .din2_neq_din1_mid      (din2_neq_din1_17_9),
352        .din2_gt_din1_mid       (din2_gt_din1_17_9),
353        .din2_neq_din1_lo       (din2_neq_din1_8_0),
354        .din2_gt_din1_lo        (din2_gt_din1_8_0),
355
356        .din2_neq_din1          (din2_neq_din1_26_0),
357        .din2_gt_din1           (din2_gt_din1_26_0)
358);
359
360
361assign din2_neq_din1= din2_neq_din1_51_27
362                || din2_neq_din1_26_0
363                || (din2_neq_din1_54_52 && sngop);
364
365assign din2_gt_din1= (din2_neq_din1_54_52 && din2_gt_din1_54_52
366                        && sngop)
367                || ((!(din2_neq_din1_54_52 && sngop))
368                        && din2_neq_din1_51_27 && din2_gt_din1_51_27)
369                || ((!(din2_neq_din1_54_52 && sngop))
370                        && (!din2_neq_din1_51_27)
371                        && din2_gt_din1_26_0);
372
373assign din2_gt1_din1= expadd11
374                || (din2_gt_din1 && expeq);
375
376
377endmodule
378
379
Note: See TracBrowser for help on using the repository browser.