summaryrefslogtreecommitdiff
path: root/vere/ext/gmp/gen/aarch64-macos/mpn/gcd_22.s
blob: ff4997056ec95a3c14d2ac95fb5ddd0e09f9ef75 (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

































































	.text
	.align	3
	.globl	___gmpn_gcd_22 
	
___gmpn_gcd_22:

	.align	4
Ltop:	subs	x5, x1, x3		
	cbz	x5, Llowz
	sbcs	x6, x0, x2		

	rbit	x7, x5			

	cneg	x5, x5, cc		
	cinv	x6, x6, cc		
Lbck:	csel	x3, x3, x1, cs		
	csel	x2, x2, x0, cs		

	clz	x7, x7		
	sub	x8, xzr, x7		

	lsr	x1, x5, x7		
	lsl	x14, x6, x8		
	lsr	x0, x6, x7		
	orr	x1, x1, x14		

	orr	x11, x0, x2
	cbnz	x11, Ltop


	subs	x4, x1, x3		
	b.eq	Lend1			

	.align	4
Ltop1:rbit	x12, x4			
	clz	x12, x12		
	csneg	x4, x4, x4, cs		
	csel	x1, x3, x1, cs		
	lsr	x3, x4, x12		
	subs	x4, x1, x3		
	b.ne	Ltop1			
Lend1:mov	x0, x1
	mov	x1, #0
	ret

Llowz:
	
	
	subs	x5, x0, x2
	b.eq	Lend
	mov	x6, #0
	rbit	x7, x5			
	cneg	x5, x5, cc		
	b	Lbck			

Lend:	mov	x0, x3
	mov	x1, x2
	ret