Annotation of OpenXM_contrib2/asir2000/asm/gf2m_mul_w.c, Revision 1.1.1.1
1.1 noro 1: /* $OpenXM: OpenXM/src/asir99/asm/gf2m_mul_w.c,v 1.1.1.1 1999/11/10 08:12:25 noro Exp $ */
2: unsigned int NNgf2m_mul_11(unsigned int *h, unsigned int a, unsigned int b)
3: {
4: __asm
5: {
6: push ebx
7: mov ecx,a
8: mov edx,b
9: GF2ML0:
10: xor ebx,ebx
11: xor eax,eax
12: add edx,edx
13: jnc GF2ML1
14: xor eax,ecx
15: GF2ML1:
16: add eax,eax
17: adc ebx,ebx
18: add edx,edx
19: jnc GF2ML2
20: xor eax,ecx
21: GF2ML2:
22: add eax,eax
23: adc ebx,ebx
24: add edx,edx
25: jnc GF2ML3
26: xor eax,ecx
27: GF2ML3:
28: add eax,eax
29: adc ebx,ebx
30: add edx,edx
31: jnc GF2ML4
32: xor eax,ecx
33: GF2ML4:
34: add eax,eax
35: adc ebx,ebx
36: add edx,edx
37: jnc GF2ML5
38: xor eax,ecx
39: GF2ML5:
40: add eax,eax
41: adc ebx,ebx
42: add edx,edx
43: jnc GF2ML6
44: xor eax,ecx
45: GF2ML6:
46: add eax,eax
47: adc ebx,ebx
48: add edx,edx
49: jnc GF2ML7
50: xor eax,ecx
51: GF2ML7:
52: add eax,eax
53: adc ebx,ebx
54: add edx,edx
55: jnc GF2ML8
56: xor eax,ecx
57: GF2ML8:
58: add eax,eax
59: adc ebx,ebx
60: add edx,edx
61: jnc GF2ML9
62: xor eax,ecx
63: GF2ML9:
64: add eax,eax
65: adc ebx,ebx
66: add edx,edx
67: jnc GF2ML10
68: xor eax,ecx
69: GF2ML10:
70: add eax,eax
71: adc ebx,ebx
72: add edx,edx
73: jnc GF2ML11
74: xor eax,ecx
75: GF2ML11:
76: add eax,eax
77: adc ebx,ebx
78: add edx,edx
79: jnc GF2ML12
80: xor eax,ecx
81: GF2ML12:
82: add eax,eax
83: adc ebx,ebx
84: add edx,edx
85: jnc GF2ML13
86: xor eax,ecx
87: GF2ML13:
88: add eax,eax
89: adc ebx,ebx
90: add edx,edx
91: jnc GF2ML14
92: xor eax,ecx
93: GF2ML14:
94: add eax,eax
95: adc ebx,ebx
96: add edx,edx
97: jnc GF2ML15
98: xor eax,ecx
99: GF2ML15:
100: add eax,eax
101: adc ebx,ebx
102: add edx,edx
103: jnc GF2ML16
104: xor eax,ecx
105: GF2ML16:
106: add eax,eax
107: adc ebx,ebx
108: add edx,edx
109: jnc GF2ML17
110: xor eax,ecx
111: GF2ML17:
112: add eax,eax
113: adc ebx,ebx
114: add edx,edx
115: jnc GF2ML18
116: xor eax,ecx
117: GF2ML18:
118: add eax,eax
119: adc ebx,ebx
120: add edx,edx
121: jnc GF2ML19
122: xor eax,ecx
123: GF2ML19:
124: add eax,eax
125: adc ebx,ebx
126: add edx,edx
127: jnc GF2ML20
128: xor eax,ecx
129: GF2ML20:
130: add eax,eax
131: adc ebx,ebx
132: add edx,edx
133: jnc GF2ML21
134: xor eax,ecx
135: GF2ML21:
136: add eax,eax
137: adc ebx,ebx
138: add edx,edx
139: jnc GF2ML22
140: xor eax,ecx
141: GF2ML22:
142: add eax,eax
143: adc ebx,ebx
144: add edx,edx
145: jnc GF2ML23
146: xor eax,ecx
147: GF2ML23:
148: add eax,eax
149: adc ebx,ebx
150: add edx,edx
151: jnc GF2ML24
152: xor eax,ecx
153: GF2ML24:
154: add eax,eax
155: adc ebx,ebx
156: add edx,edx
157: jnc GF2ML25
158: xor eax,ecx
159: GF2ML25:
160: add eax,eax
161: adc ebx,ebx
162: add edx,edx
163: jnc GF2ML26
164: xor eax,ecx
165: GF2ML26:
166: add eax,eax
167: adc ebx,ebx
168: add edx,edx
169: jnc GF2ML27
170: xor eax,ecx
171: GF2ML27:
172: add eax,eax
173: adc ebx,ebx
174: add edx,edx
175: jnc GF2ML28
176: xor eax,ecx
177: GF2ML28:
178: add eax,eax
179: adc ebx,ebx
180: add edx,edx
181: jnc GF2ML29
182: xor eax,ecx
183: GF2ML29:
184: add eax,eax
185: adc ebx,ebx
186: add edx,edx
187: jnc GF2ML30
188: xor eax,ecx
189: GF2ML30:
190: add eax,eax
191: adc ebx,ebx
192: add edx,edx
193: jnc GF2ML31
194: xor eax,ecx
195: GF2ML31:
196: add eax,eax
197: adc ebx,ebx
198: add edx,edx
199: jnc GF2ML32
200: xor eax,ecx
201: GF2ML32:
202: mov ecx,h
203: mov DWORD PTR [ecx], ebx
204: pop ebx
205: }
206: }
207:
208: unsigned int NNgf2m_mul_1h(unsigned int *h, unsigned int a, unsigned int b)
209: {
210: __asm
211: {
212: push ebx
213: mov ecx,a
214: mov edx,b
215: shl edx,0x10
216: GF2MLL0:
217: xor ebx,ebx
218: xor eax,eax
219: add edx,edx
220: jnc GF2MLL1
221: xor eax,ecx
222: GF2MLL1:
223: add eax,eax
224: adc ebx,ebx
225: add edx,edx
226: jnc GF2MLL2
227: xor eax,ecx
228: GF2MLL2:
229: add eax,eax
230: adc ebx,ebx
231: add edx,edx
232: jnc GF2MLL3
233: xor eax,ecx
234: GF2MLL3:
235: add eax,eax
236: adc ebx,ebx
237: add edx,edx
238: jnc GF2MLL4
239: xor eax,ecx
240: GF2MLL4:
241: add eax,eax
242: adc ebx,ebx
243: add edx,edx
244: jnc GF2MLL5
245: xor eax,ecx
246: GF2MLL5:
247: add eax,eax
248: adc ebx,ebx
249: add edx,edx
250: jnc GF2MLL6
251: xor eax,ecx
252: GF2MLL6:
253: add eax,eax
254: adc ebx,ebx
255: add edx,edx
256: jnc GF2MLL7
257: xor eax,ecx
258: GF2MLL7:
259: add eax,eax
260: adc ebx,ebx
261: add edx,edx
262: jnc GF2MLL8
263: xor eax,ecx
264: GF2MLL8:
265: add eax,eax
266: adc ebx,ebx
267: add edx,edx
268: jnc GF2MLL9
269: xor eax,ecx
270: GF2MLL9:
271: add eax,eax
272: adc ebx,ebx
273: add edx,edx
274: jnc GF2MLL10
275: xor eax,ecx
276: GF2MLL10:
277: add eax,eax
278: adc ebx,ebx
279: add edx,edx
280: jnc GF2MLL11
281: xor eax,ecx
282: GF2MLL11:
283: add eax,eax
284: adc ebx,ebx
285: add edx,edx
286: jnc GF2MLL12
287: xor eax,ecx
288: GF2MLL12:
289: add eax,eax
290: adc ebx,ebx
291: add edx,edx
292: jnc GF2MLL13
293: xor eax,ecx
294: GF2MLL13:
295: add eax,eax
296: adc ebx,ebx
297: add edx,edx
298: jnc GF2MLL14
299: xor eax,ecx
300: GF2MLL14:
301: add eax,eax
302: adc ebx,ebx
303: add edx,edx
304: jnc GF2MLL15
305: xor eax,ecx
306: GF2MLL15:
307: add eax,eax
308: adc ebx,ebx
309: add edx,edx
310: jnc GF2MLL16
311: xor eax,ecx
312: GF2MLL16:
313: mov ecx,h
314: mov DWORD PTR [ecx],ebx;
315: pop ebx
316: }
317: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>