Annotation of OpenXM_contrib2/asir2018/asm/gf2m_mul_w.c, Revision 1.1
1.1 ! noro 1: /*
! 2: * Copyright (c) 1994-2000 FUJITSU LABORATORIES LIMITED
! 3: * All rights reserved.
! 4: *
! 5: * FUJITSU LABORATORIES LIMITED ("FLL") hereby grants you a limited,
! 6: * non-exclusive and royalty-free license to use, copy, modify and
! 7: * redistribute, solely for non-commercial and non-profit purposes, the
! 8: * computer program, "Risa/Asir" ("SOFTWARE"), subject to the terms and
! 9: * conditions of this Agreement. For the avoidance of doubt, you acquire
! 10: * only a limited right to use the SOFTWARE hereunder, and FLL or any
! 11: * third party developer retains all rights, including but not limited to
! 12: * copyrights, in and to the SOFTWARE.
! 13: *
! 14: * (1) FLL does not grant you a license in any way for commercial
! 15: * purposes. You may use the SOFTWARE only for non-commercial and
! 16: * non-profit purposes only, such as academic, research and internal
! 17: * business use.
! 18: * (2) The SOFTWARE is protected by the Copyright Law of Japan and
! 19: * international copyright treaties. If you make copies of the SOFTWARE,
! 20: * with or without modification, as permitted hereunder, you shall affix
! 21: * to all such copies of the SOFTWARE the above copyright notice.
! 22: * (3) An explicit reference to this SOFTWARE and its copyright owner
! 23: * shall be made on your publication or presentation in any form of the
! 24: * results obtained by use of the SOFTWARE.
! 25: * (4) In the event that you modify the SOFTWARE, you shall notify FLL by
! 26: * e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification
! 27: * for such modification or the source code of the modified part of the
! 28: * SOFTWARE.
! 29: *
! 30: * THE SOFTWARE IS PROVIDED AS IS WITHOUT ANY WARRANTY OF ANY KIND. FLL
! 31: * MAKES ABSOLUTELY NO WARRANTIES, EXPRESSED, IMPLIED OR STATUTORY, AND
! 32: * EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS
! 33: * FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT OF THIRD PARTIES'
! 34: * RIGHTS. NO FLL DEALER, AGENT, EMPLOYEES IS AUTHORIZED TO MAKE ANY
! 35: * MODIFICATIONS, EXTENSIONS, OR ADDITIONS TO THIS WARRANTY.
! 36: * UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT,
! 37: * OR OTHERWISE, SHALL FLL BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY
! 38: * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
! 39: * DAMAGES OF ANY CHARACTER, INCLUDING, WITHOUT LIMITATION, DAMAGES
! 40: * ARISING OUT OF OR RELATING TO THE SOFTWARE OR THIS AGREEMENT, DAMAGES
! 41: * FOR LOSS OF GOODWILL, WORK STOPPAGE, OR LOSS OF DATA, OR FOR ANY
! 42: * DAMAGES, EVEN IF FLL SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF
! 43: * SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. EVEN IF A PART
! 44: * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
! 45: * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
! 46: * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
! 47: *
! 48: * $OpenXM$
! 49: */
! 50: unsigned int NNgf2m_mul_11(unsigned int *h, unsigned int a, unsigned int b)
! 51: {
! 52: __asm
! 53: {
! 54: push ebx
! 55: mov ecx,a
! 56: mov edx,b
! 57: xor ebx,ebx
! 58: xor eax,eax
! 59: add edx,edx
! 60: jnc GF2ML1
! 61: xor eax,ecx
! 62: GF2ML1:
! 63: add eax,eax
! 64: adc ebx,ebx
! 65: add edx,edx
! 66: jnc GF2ML2
! 67: xor eax,ecx
! 68: GF2ML2:
! 69: add eax,eax
! 70: adc ebx,ebx
! 71: add edx,edx
! 72: jnc GF2ML3
! 73: xor eax,ecx
! 74: GF2ML3:
! 75: add eax,eax
! 76: adc ebx,ebx
! 77: add edx,edx
! 78: jnc GF2ML4
! 79: xor eax,ecx
! 80: GF2ML4:
! 81: add eax,eax
! 82: adc ebx,ebx
! 83: add edx,edx
! 84: jnc GF2ML5
! 85: xor eax,ecx
! 86: GF2ML5:
! 87: add eax,eax
! 88: adc ebx,ebx
! 89: add edx,edx
! 90: jnc GF2ML6
! 91: xor eax,ecx
! 92: GF2ML6:
! 93: add eax,eax
! 94: adc ebx,ebx
! 95: add edx,edx
! 96: jnc GF2ML7
! 97: xor eax,ecx
! 98: GF2ML7:
! 99: add eax,eax
! 100: adc ebx,ebx
! 101: add edx,edx
! 102: jnc GF2ML8
! 103: xor eax,ecx
! 104: GF2ML8:
! 105: add eax,eax
! 106: adc ebx,ebx
! 107: add edx,edx
! 108: jnc GF2ML9
! 109: xor eax,ecx
! 110: GF2ML9:
! 111: add eax,eax
! 112: adc ebx,ebx
! 113: add edx,edx
! 114: jnc GF2ML10
! 115: xor eax,ecx
! 116: GF2ML10:
! 117: add eax,eax
! 118: adc ebx,ebx
! 119: add edx,edx
! 120: jnc GF2ML11
! 121: xor eax,ecx
! 122: GF2ML11:
! 123: add eax,eax
! 124: adc ebx,ebx
! 125: add edx,edx
! 126: jnc GF2ML12
! 127: xor eax,ecx
! 128: GF2ML12:
! 129: add eax,eax
! 130: adc ebx,ebx
! 131: add edx,edx
! 132: jnc GF2ML13
! 133: xor eax,ecx
! 134: GF2ML13:
! 135: add eax,eax
! 136: adc ebx,ebx
! 137: add edx,edx
! 138: jnc GF2ML14
! 139: xor eax,ecx
! 140: GF2ML14:
! 141: add eax,eax
! 142: adc ebx,ebx
! 143: add edx,edx
! 144: jnc GF2ML15
! 145: xor eax,ecx
! 146: GF2ML15:
! 147: add eax,eax
! 148: adc ebx,ebx
! 149: add edx,edx
! 150: jnc GF2ML16
! 151: xor eax,ecx
! 152: GF2ML16:
! 153: add eax,eax
! 154: adc ebx,ebx
! 155: add edx,edx
! 156: jnc GF2ML17
! 157: xor eax,ecx
! 158: GF2ML17:
! 159: add eax,eax
! 160: adc ebx,ebx
! 161: add edx,edx
! 162: jnc GF2ML18
! 163: xor eax,ecx
! 164: GF2ML18:
! 165: add eax,eax
! 166: adc ebx,ebx
! 167: add edx,edx
! 168: jnc GF2ML19
! 169: xor eax,ecx
! 170: GF2ML19:
! 171: add eax,eax
! 172: adc ebx,ebx
! 173: add edx,edx
! 174: jnc GF2ML20
! 175: xor eax,ecx
! 176: GF2ML20:
! 177: add eax,eax
! 178: adc ebx,ebx
! 179: add edx,edx
! 180: jnc GF2ML21
! 181: xor eax,ecx
! 182: GF2ML21:
! 183: add eax,eax
! 184: adc ebx,ebx
! 185: add edx,edx
! 186: jnc GF2ML22
! 187: xor eax,ecx
! 188: GF2ML22:
! 189: add eax,eax
! 190: adc ebx,ebx
! 191: add edx,edx
! 192: jnc GF2ML23
! 193: xor eax,ecx
! 194: GF2ML23:
! 195: add eax,eax
! 196: adc ebx,ebx
! 197: add edx,edx
! 198: jnc GF2ML24
! 199: xor eax,ecx
! 200: GF2ML24:
! 201: add eax,eax
! 202: adc ebx,ebx
! 203: add edx,edx
! 204: jnc GF2ML25
! 205: xor eax,ecx
! 206: GF2ML25:
! 207: add eax,eax
! 208: adc ebx,ebx
! 209: add edx,edx
! 210: jnc GF2ML26
! 211: xor eax,ecx
! 212: GF2ML26:
! 213: add eax,eax
! 214: adc ebx,ebx
! 215: add edx,edx
! 216: jnc GF2ML27
! 217: xor eax,ecx
! 218: GF2ML27:
! 219: add eax,eax
! 220: adc ebx,ebx
! 221: add edx,edx
! 222: jnc GF2ML28
! 223: xor eax,ecx
! 224: GF2ML28:
! 225: add eax,eax
! 226: adc ebx,ebx
! 227: add edx,edx
! 228: jnc GF2ML29
! 229: xor eax,ecx
! 230: GF2ML29:
! 231: add eax,eax
! 232: adc ebx,ebx
! 233: add edx,edx
! 234: jnc GF2ML30
! 235: xor eax,ecx
! 236: GF2ML30:
! 237: add eax,eax
! 238: adc ebx,ebx
! 239: add edx,edx
! 240: jnc GF2ML31
! 241: xor eax,ecx
! 242: GF2ML31:
! 243: add eax,eax
! 244: adc ebx,ebx
! 245: add edx,edx
! 246: jnc GF2ML32
! 247: xor eax,ecx
! 248: GF2ML32:
! 249: mov ecx,h
! 250: mov DWORD PTR [ecx], ebx
! 251: pop ebx
! 252: }
! 253: }
! 254:
! 255: unsigned int NNgf2m_mul_1h(unsigned int *h, unsigned int a, unsigned int b)
! 256: {
! 257: __asm
! 258: {
! 259: push ebx
! 260: mov ecx,a
! 261: mov edx,b
! 262: shl edx,0x10
! 263: xor ebx,ebx
! 264: xor eax,eax
! 265: add edx,edx
! 266: jnc GF2MLL1
! 267: xor eax,ecx
! 268: GF2MLL1:
! 269: add eax,eax
! 270: adc ebx,ebx
! 271: add edx,edx
! 272: jnc GF2MLL2
! 273: xor eax,ecx
! 274: GF2MLL2:
! 275: add eax,eax
! 276: adc ebx,ebx
! 277: add edx,edx
! 278: jnc GF2MLL3
! 279: xor eax,ecx
! 280: GF2MLL3:
! 281: add eax,eax
! 282: adc ebx,ebx
! 283: add edx,edx
! 284: jnc GF2MLL4
! 285: xor eax,ecx
! 286: GF2MLL4:
! 287: add eax,eax
! 288: adc ebx,ebx
! 289: add edx,edx
! 290: jnc GF2MLL5
! 291: xor eax,ecx
! 292: GF2MLL5:
! 293: add eax,eax
! 294: adc ebx,ebx
! 295: add edx,edx
! 296: jnc GF2MLL6
! 297: xor eax,ecx
! 298: GF2MLL6:
! 299: add eax,eax
! 300: adc ebx,ebx
! 301: add edx,edx
! 302: jnc GF2MLL7
! 303: xor eax,ecx
! 304: GF2MLL7:
! 305: add eax,eax
! 306: adc ebx,ebx
! 307: add edx,edx
! 308: jnc GF2MLL8
! 309: xor eax,ecx
! 310: GF2MLL8:
! 311: add eax,eax
! 312: adc ebx,ebx
! 313: add edx,edx
! 314: jnc GF2MLL9
! 315: xor eax,ecx
! 316: GF2MLL9:
! 317: add eax,eax
! 318: adc ebx,ebx
! 319: add edx,edx
! 320: jnc GF2MLL10
! 321: xor eax,ecx
! 322: GF2MLL10:
! 323: add eax,eax
! 324: adc ebx,ebx
! 325: add edx,edx
! 326: jnc GF2MLL11
! 327: xor eax,ecx
! 328: GF2MLL11:
! 329: add eax,eax
! 330: adc ebx,ebx
! 331: add edx,edx
! 332: jnc GF2MLL12
! 333: xor eax,ecx
! 334: GF2MLL12:
! 335: add eax,eax
! 336: adc ebx,ebx
! 337: add edx,edx
! 338: jnc GF2MLL13
! 339: xor eax,ecx
! 340: GF2MLL13:
! 341: add eax,eax
! 342: adc ebx,ebx
! 343: add edx,edx
! 344: jnc GF2MLL14
! 345: xor eax,ecx
! 346: GF2MLL14:
! 347: add eax,eax
! 348: adc ebx,ebx
! 349: add edx,edx
! 350: jnc GF2MLL15
! 351: xor eax,ecx
! 352: GF2MLL15:
! 353: add eax,eax
! 354: adc ebx,ebx
! 355: add edx,edx
! 356: jnc GF2MLL16
! 357: xor eax,ecx
! 358: GF2MLL16:
! 359: mov ecx,h
! 360: mov DWORD PTR [ecx],ebx;
! 361: pop ebx
! 362: }
! 363: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>