addmul_1.s
上传用户:qaz666999
上传日期:2022-08-06
资源大小:2570k
文件大小:3k
源码类别:

数学计算

开发平台:

Unix_Linux

  1. ; 29000 __gmpn_addmul_1 -- Multiply a limb vector with a single limb and
  2. ; add the product to a second limb vector.
  3. ; Copyright 1992, 1994, 2000 Free Software Foundation, Inc.
  4. ; This file is part of the GNU MP Library.
  5. ; The GNU MP Library is free software; you can redistribute it and/or modify
  6. ; it under the terms of the GNU Lesser General Public License as published by
  7. ; the Free Software Foundation; either version 3 of the License, or (at your
  8. ; option) any later version.
  9. ; The GNU MP Library is distributed in the hope that it will be useful, but
  10. ; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  11. ; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
  12. ; License for more details.
  13. ; You should have received a copy of the GNU Lesser General Public License
  14. ; along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
  15. ; INPUT PARAMETERS
  16. ; res_ptr lr2
  17. ; s1_ptr lr3
  18. ; size lr4
  19. ; s2_limb lr5
  20. .cputype 29050
  21. .sect .lit,lit
  22. .text
  23. .align 4
  24. .global ___gmpn_addmul_1
  25. .word 0x60000
  26. ___gmpn_addmul_1:
  27. sub lr4,lr4,8
  28. jmpt lr4,Ltail
  29.  const gr120,0 ; init cylimb reg
  30. srl gr117,lr4,3 ; divide by 8
  31. sub gr117,gr117,1 ; count for jmpfdec
  32. Loop: mtsrim cr,(8-1)
  33. loadm 0,0,gr96,lr3
  34. add lr3,lr3,32
  35. multiplu gr104,gr96,lr5
  36. multmu  gr96,gr96,lr5
  37. multiplu gr105,gr97,lr5
  38. multmu  gr97,gr97,lr5
  39. multiplu gr106,gr98,lr5
  40. multmu  gr98,gr98,lr5
  41. multiplu gr107,gr99,lr5
  42. multmu  gr99,gr99,lr5
  43. multiplu gr108,gr100,lr5
  44. multmu  gr100,gr100,lr5
  45. multiplu gr109,gr101,lr5
  46. multmu  gr101,gr101,lr5
  47. multiplu gr110,gr102,lr5
  48. multmu  gr102,gr102,lr5
  49. multiplu gr111,gr103,lr5
  50. multmu  gr103,gr103,lr5
  51. add gr104,gr104,gr120
  52. addc gr105,gr105,gr96
  53. addc gr106,gr106,gr97
  54. addc gr107,gr107,gr98
  55. addc gr108,gr108,gr99
  56. addc gr109,gr109,gr100
  57. addc gr110,gr110,gr101
  58. addc gr111,gr111,gr102
  59. addc gr120,gr103,0
  60. mtsrim cr,(8-1)
  61. loadm 0,0,gr96,lr2
  62. add gr104,gr96,gr104
  63. addc gr105,gr97,gr105
  64. addc gr106,gr98,gr106
  65. addc gr107,gr99,gr107
  66. addc gr108,gr100,gr108
  67. addc gr109,gr101,gr109
  68. addc gr110,gr102,gr110
  69. addc gr111,gr103,gr111
  70. addc gr120,gr120,0
  71. mtsrim cr,(8-1)
  72. storem 0,0,gr104,lr2
  73. jmpfdec gr117,Loop
  74.  add lr2,lr2,32
  75. Ltail: and lr4,lr4,(8-1)
  76. sub gr118,lr4,1 ; count for CR
  77. jmpt gr118,Lend
  78.  sub lr4,lr4,2
  79. sub lr2,lr2,4 ; offset res_ptr by one limb
  80. Loop2: load 0,0,gr116,lr3
  81. add lr3,lr3,4
  82. multiplu gr117,gr116,lr5
  83. multmu gr118,gr116,lr5
  84. add lr2,lr2,4
  85. load 0,0,gr119,lr2
  86. add gr117,gr117,gr120
  87. addc gr118,gr118,0
  88. add gr117,gr117,gr119
  89. store 0,0,gr117,lr2
  90. jmpfdec lr4,Loop2
  91.  addc gr120,gr118,0
  92. Lend: jmpi lr0
  93.  or gr96,gr120,0 ; copy