xref: /netbsd-src/external/lgpl3/gmp/dist/mpn/s390_64/invert_limb.asm (revision 501cd18a74d52bfcca7d9e7e3b0d472bbc870558)
1dnl  S/390-64 mpn_invert_limb
2
3dnl  Contributed to the GNU project by Torbjorn Granlund.
4
5dnl  Copyright 2011 Free Software Foundation, Inc.
6
7dnl  This file is part of the GNU MP Library.
8
9dnl  The GNU MP Library is free software; you can redistribute it and/or modify
10dnl  it under the terms of the GNU Lesser General Public License as published
11dnl  by the Free Software Foundation; either version 3 of the License, or (at
12dnl  your option) any later version.
13
14dnl  The GNU MP Library is distributed in the hope that it will be useful, but
15dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
17dnl  License for more details.
18
19dnl  You should have received a copy of the GNU Lesser General Public License
20dnl  along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
21
22include(`../config.m4')
23
24C            cycles/limb
25C z900	       142
26C z990          86
27C z9		 ?
28C z10		 ?
29C z196		 ?
30
31ASM_START()
32	TEXT
33	ALIGN(16)
34PROLOGUE(mpn_invert_limb)
35	stg	%r9, 72(%r15)
36	srlg	%r9, %r2, 55
37	agr	%r9, %r9
38	larl	%r4, approx_tab-512
39	srlg	%r3, %r2, 24
40	aghi	%r3, 1
41	lghi	%r5, 1
42	llgh	%r4, 0(%r9, %r4)
43	sllg	%r9, %r4, 11
44	msgr	%r4, %r4
45	msgr	%r4, %r3
46	srlg	%r4, %r4, 40
47	aghi	%r9, -1
48	sgr	%r9, %r4
49	sllg	%r0, %r9, 60
50	sllg	%r1, %r9, 13
51	msgr	%r9, %r9
52	msgr	%r9, %r3
53	sgr	%r0, %r9
54	ngr	%r5, %r2
55	srlg	%r4, %r2, 1
56	srlg	%r3, %r0, 47
57	agr	%r3, %r1
58	agr	%r4, %r5
59	msgr	%r4, %r3
60	srlg	%r1, %r3, 1
61	lcgr	%r5, %r5
62	ngr	%r1, %r5
63	sgr	%r1, %r4
64	mlgr	%r0, %r3
65	srlg	%r9, %r0, 1
66	sllg	%r4, %r3, 31
67	agr	%r4, %r9
68	lgr	%r1, %r4
69	mlgr	%r0, %r2
70	algr	%r1, %r2
71	alcgr	%r0, %r2
72	lgr	%r2, %r4
73	sgr	%r2, %r0
74	lg	%r9, 72(%r15)
75	br	%r14
76EPILOGUE()
77	RODATA
78	ALIGN(2)
79approx_tab:
80	.word	0x7fd,0x7f5,0x7ed,0x7e5,0x7dd,0x7d5,0x7ce,0x7c6
81	.word	0x7bf,0x7b7,0x7b0,0x7a8,0x7a1,0x79a,0x792,0x78b
82	.word	0x784,0x77d,0x776,0x76f,0x768,0x761,0x75b,0x754
83	.word	0x74d,0x747,0x740,0x739,0x733,0x72c,0x726,0x720
84	.word	0x719,0x713,0x70d,0x707,0x700,0x6fa,0x6f4,0x6ee
85	.word	0x6e8,0x6e2,0x6dc,0x6d6,0x6d1,0x6cb,0x6c5,0x6bf
86	.word	0x6ba,0x6b4,0x6ae,0x6a9,0x6a3,0x69e,0x698,0x693
87	.word	0x68d,0x688,0x683,0x67d,0x678,0x673,0x66e,0x669
88	.word	0x664,0x65e,0x659,0x654,0x64f,0x64a,0x645,0x640
89	.word	0x63c,0x637,0x632,0x62d,0x628,0x624,0x61f,0x61a
90	.word	0x616,0x611,0x60c,0x608,0x603,0x5ff,0x5fa,0x5f6
91	.word	0x5f1,0x5ed,0x5e9,0x5e4,0x5e0,0x5dc,0x5d7,0x5d3
92	.word	0x5cf,0x5cb,0x5c6,0x5c2,0x5be,0x5ba,0x5b6,0x5b2
93	.word	0x5ae,0x5aa,0x5a6,0x5a2,0x59e,0x59a,0x596,0x592
94	.word	0x58e,0x58a,0x586,0x583,0x57f,0x57b,0x577,0x574
95	.word	0x570,0x56c,0x568,0x565,0x561,0x55e,0x55a,0x556
96	.word	0x553,0x54f,0x54c,0x548,0x545,0x541,0x53e,0x53a
97	.word	0x537,0x534,0x530,0x52d,0x52a,0x526,0x523,0x520
98	.word	0x51c,0x519,0x516,0x513,0x50f,0x50c,0x509,0x506
99	.word	0x503,0x500,0x4fc,0x4f9,0x4f6,0x4f3,0x4f0,0x4ed
100	.word	0x4ea,0x4e7,0x4e4,0x4e1,0x4de,0x4db,0x4d8,0x4d5
101	.word	0x4d2,0x4cf,0x4cc,0x4ca,0x4c7,0x4c4,0x4c1,0x4be
102	.word	0x4bb,0x4b9,0x4b6,0x4b3,0x4b0,0x4ad,0x4ab,0x4a8
103	.word	0x4a5,0x4a3,0x4a0,0x49d,0x49b,0x498,0x495,0x493
104	.word	0x490,0x48d,0x48b,0x488,0x486,0x483,0x481,0x47e
105	.word	0x47c,0x479,0x477,0x474,0x472,0x46f,0x46d,0x46a
106	.word	0x468,0x465,0x463,0x461,0x45e,0x45c,0x459,0x457
107	.word	0x455,0x452,0x450,0x44e,0x44b,0x449,0x447,0x444
108	.word	0x442,0x440,0x43e,0x43b,0x439,0x437,0x435,0x432
109	.word	0x430,0x42e,0x42c,0x42a,0x428,0x425,0x423,0x421
110	.word	0x41f,0x41d,0x41b,0x419,0x417,0x414,0x412,0x410
111	.word	0x40e,0x40c,0x40a,0x408,0x406,0x404,0x402,0x400
112ASM_END()
113