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






















































































	.text
	.align	6, 0x90
	.globl	___gmpn_gcd_22
	
	
___gmpn_gcd_22:

	

	.align	4, 0x90
Ltop:	mov	%rcx, %r10
	sub	%rsi, %r10
	jz	Llowz		
	mov	%rdx, %r11
	sbb	%rdi, %r11

	rep;bsf	%r10, %rax		

	mov	%rsi, %r8
	sub	%rcx, %rsi
	mov	%rdi, %r9
	sbb	%rdx, %rdi

Lbck:	cmovc	%r10, %rsi		
	cmovc	%r11, %rdi		
	cmovc	%r8, %rcx		
	cmovc	%r9, %rdx		

	xor	%r10d, %r10d
	sub	%rax, %r10
	.byte	0xc4,98,169,0xf7,207
	.byte	0xc4,226,251,0xf7,246
	.byte	0xc4,226,251,0xf7,255
	or	%r9, %rsi

	test	%rdx, %rdx
	jnz	Ltop
	test	%rdi, %rdi
	jnz	Ltop

Lgcd_11:
	mov	%rcx, %rdi

	jmp	___gmpn_gcd_11

Llowz:
	
	
	mov	%rdx, %r10
	sub	%rdi, %r10
	je	Lend

	xor	%r11, %r11
	mov	%rsi, %r8
	mov	%rdi, %r9
	rep;bsf	%r10, %rax		
	mov	%rdi, %rsi
	xor	%rdi, %rdi
	sub	%rdx, %rsi
	jmp	Lbck

Lend:	mov	%rcx, %rax
	
Lret:	
	ret