gitea

Development moved to Codeberg

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
  101. 101
  102. 102
  103. 103
  104. 104
  105. 105
  106. 106
  107. 107
  108. 108
  109. 109
  110. 110
  111. 111
  112. 112
  113. 113
  114. 114
  115. 115
  116. 116
  117. 117
  118. 118
  119. 119
  120. 120
  121. 121
  122. 122
  123. 123
  124. 124
  125. 125
  126. 126
  127. 127
  128. 128
  129. 129
  130. 130
  131. 131
  132. 132
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This code was translated into a form compatible with 6a from the public
// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html

// +build amd64,!gccgo,!appengine

#include "const_amd64.h"

// func square(out, in *[5]uint64)
TEXT ยทsquare(SB),7,$0-16
	MOVQ out+0(FP), DI
	MOVQ in+8(FP), SI

	MOVQ 0(SI),AX
	MULQ 0(SI)
	MOVQ AX,CX
	MOVQ DX,R8
	MOVQ 0(SI),AX
	SHLQ $1,AX
	MULQ 8(SI)
	MOVQ AX,R9
	MOVQ DX,R10
	MOVQ 0(SI),AX
	SHLQ $1,AX
	MULQ 16(SI)
	MOVQ AX,R11
	MOVQ DX,R12
	MOVQ 0(SI),AX
	SHLQ $1,AX
	MULQ 24(SI)
	MOVQ AX,R13
	MOVQ DX,R14
	MOVQ 0(SI),AX
	SHLQ $1,AX
	MULQ 32(SI)
	MOVQ AX,R15
	MOVQ DX,BX
	MOVQ 8(SI),AX
	MULQ 8(SI)
	ADDQ AX,R11
	ADCQ DX,R12
	MOVQ 8(SI),AX
	SHLQ $1,AX
	MULQ 16(SI)
	ADDQ AX,R13
	ADCQ DX,R14
	MOVQ 8(SI),AX
	SHLQ $1,AX
	MULQ 24(SI)
	ADDQ AX,R15
	ADCQ DX,BX
	MOVQ 8(SI),DX
	IMUL3Q $38,DX,AX
	MULQ 32(SI)
	ADDQ AX,CX
	ADCQ DX,R8
	MOVQ 16(SI),AX
	MULQ 16(SI)
	ADDQ AX,R15
	ADCQ DX,BX
	MOVQ 16(SI),DX
	IMUL3Q $38,DX,AX
	MULQ 24(SI)
	ADDQ AX,CX
	ADCQ DX,R8
	MOVQ 16(SI),DX
	IMUL3Q $38,DX,AX
	MULQ 32(SI)
	ADDQ AX,R9
	ADCQ DX,R10
	MOVQ 24(SI),DX
	IMUL3Q $19,DX,AX
	MULQ 24(SI)
	ADDQ AX,R9
	ADCQ DX,R10
	MOVQ 24(SI),DX
	IMUL3Q $38,DX,AX
	MULQ 32(SI)
	ADDQ AX,R11
	ADCQ DX,R12
	MOVQ 32(SI),DX
	IMUL3Q $19,DX,AX
	MULQ 32(SI)
	ADDQ AX,R13
	ADCQ DX,R14
	MOVQ $REDMASK51,SI
	SHLQ $13,R8:CX
	ANDQ SI,CX
	SHLQ $13,R10:R9
	ANDQ SI,R9
	ADDQ R8,R9
	SHLQ $13,R12:R11
	ANDQ SI,R11
	ADDQ R10,R11
	SHLQ $13,R14:R13
	ANDQ SI,R13
	ADDQ R12,R13
	SHLQ $13,BX:R15
	ANDQ SI,R15
	ADDQ R14,R15
	IMUL3Q $19,BX,DX
	ADDQ DX,CX
	MOVQ CX,DX
	SHRQ $51,DX
	ADDQ R9,DX
	ANDQ SI,CX
	MOVQ DX,R8
	SHRQ $51,DX
	ADDQ R11,DX
	ANDQ SI,R8
	MOVQ DX,R9
	SHRQ $51,DX
	ADDQ R13,DX
	ANDQ SI,R9
	MOVQ DX,AX
	SHRQ $51,DX
	ADDQ R15,DX
	ANDQ SI,AX
	MOVQ DX,R10
	SHRQ $51,DX
	IMUL3Q $19,DX,DX
	ADDQ DX,CX
	ANDQ SI,R10
	MOVQ CX,0(DI)
	MOVQ R8,8(DI)
	MOVQ R9,16(DI)
	MOVQ AX,24(DI)
	MOVQ R10,32(DI)
	RET