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

































































	.text
	.align	3
	.globl	___gmpn_sec_tabselect 
	
___gmpn_sec_tabselect:
	dup	v7.2d, x4			

	mov	x10, #1
	dup	v6.2d, x10			

	subs	x6, x2, #4
	b.mi	Louter_end

Louter_top:
	mov	x5, x3
	mov	x12, x1				
	movi	v5.16b, #0			
	movi	v2.16b, #0
	movi	v3.16b, #0
	.align	4
Ltp4:	cmeq	v4.2d, v5.2d, v7.2d		
	ld1	{v0.2d,v1.2d}, [x1]
	add	v5.2d, v5.2d, v6.2d
	bit	v2.16b, v0.16b, v4.16b
	bit	v3.16b, v1.16b, v4.16b
	add	x1, x1, x2, lsl #3
	sub	x5, x5, #1
	cbnz	x5, Ltp4
	st1	{v2.2d,v3.2d}, [x0], #32
	add	x1, x12, #32			
	subs	x6, x6, #4
	b.pl	Louter_top
Louter_end:

	tbz	x2, #1, Lb0x
	mov	x5, x3
	mov	x12, x1
	movi	v5.16b, #0			
	movi	v2.16b, #0
	.align	4
Ltp2:	cmeq	v4.2d, v5.2d, v7.2d
	ld1	{v0.2d}, [x1]
	add	v5.2d, v5.2d, v6.2d
	bit	v2.16b, v0.16b, v4.16b
	add	x1, x1, x2, lsl #3
	sub	x5, x5, #1
	cbnz	x5, Ltp2
	st1	{v2.2d}, [x0], #16
	add	x1, x12, #16

Lb0x:	tbz	x2, #0, Lb00
	mov	x5, x3
	mov	x12, x1
	movi	v5.16b, #0			
	movi	v2.16b, #0
	.align	4
Ltp1:	cmeq	v4.2d, v5.2d, v7.2d
	ld1	{v0.1d}, [x1]
	add	v5.2d, v5.2d, v6.2d		
	bit	v2.8b, v0.8b, v4.8b
	add	x1, x1, x2, lsl #3
	sub	x5, x5, #1
	cbnz	x5, Ltp1
	st1	{v2.1d}, [x0], #8
	add	x1, x12, #8

Lb00:	ret