summaryrefslogtreecommitdiff
path: root/vere/ext/gmp/gen/aarch64-macos/mpn/sublsh1_n.s
blob: e3e924f3792d73b789345906c41d9bb974ee166c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161











































































  
  
  
  
  



	.text
	.align	3
	.globl	___gmpn_sublsh1_n 
	
___gmpn_sublsh1_n:
	lsr	x6, x3, #2
	tbz	x3, #0, Lbx0

Lbx1:	ldr	x5, [x1]
	tbnz	x3, #1, Lb11

Lb01:	ldr	x11, [x2]
	cbz	x6, L1
	ldp	x8, x9, [x2,#8]
	lsl	x13, x11, #1
	subs	x15, x5, x13
	str	x15, [x0],#8
	sub	x1, x1, #24
	sub	x2, x2, #8
	b	Lmid

L1:	lsl	x13, x11, #1
	subs	x15, x5, x13
	str	x15, [x0]
	lsr	x0, x11, 63
	cinc	x0, x0, cc
	ret

Lb11:	ldr	x9, [x2]
	ldp	x10, x11, [x2,#8]!
	lsl	x13, x9, #1
	subs	x17, x5, x13
	str	x17, [x0],#8
	sub	x1, x1, #8
	cbz	x6, Lend
	b	Ltop

Lbx0:	tbnz	x3, #1, Lb10

Lb00:	subs	x11, xzr, xzr
	ldp	x8, x9, [x2],#-16
	sub	x1, x1, #32
	b	Lmid

Lb10:	subs	x9, xzr, xzr
	ldp	x10, x11, [x2]
	sub	x1, x1, #16
	cbz	x6, Lend

	.align	4
Ltop:	ldp	x4, x5, [x1,#16]
	extr	x12, x10, x9, #63
	ldp	x8, x9, [x2,#16]
	extr	x13, x11, x10, #63
	sbcs	x14, x4, x12
	sbcs	x15, x5, x13
	stp	x14, x15, [x0],#16
Lmid:	ldp	x4, x5, [x1,#32]!
	extr	x12, x8, x11, #63
	ldp	x10, x11, [x2,#32]!
	extr	x13, x9, x8, #63
	sbcs	x16, x4, x12
	sbcs	x17, x5, x13
	stp	x16, x17, [x0],#16
	sub	x6, x6, #1
	cbnz	x6, Ltop

Lend:	ldp	x4, x5, [x1,#16]
	extr	x12, x10, x9, #63
	extr	x13, x11, x10, #63
	sbcs	x14, x4, x12
	sbcs	x15, x5, x13
	stp	x14, x15, [x0]
	lsr	x0, x11, 63
	cinc	x0, x0, cc
	ret