[PATCH] mpn/sh/*.s: Transform to m4-ccas format.
takasi-y at ops.dti.ne.jp
takasi-y at ops.dti.ne.jp
Sun Jun 10 15:41:27 CEST 2007
Hello,
In version 4.2.1,
cofigure script which seeks PROLOGUE() or so failes to detect that sh(SuperH)
has native code, because files under mpn/sh/ are plain assembler file.
I changed some files to make them processed via m4-ccas.
All "make check" tests passed at least on sh3(=a variant of sh)linux platform.
Copyright notice has left untouched, because this is only formatting change.
The new file, mpn/sh/sh-defs.m4, carries FSF's copyright notice as other m4
files which are used as a reference do.
Plese notify me if my copyright notice or explicit assignment is needed.
I don't think there is my own property, though.
Best regards,
/yoshii
2007-06-10 Takashi YOSHII <takasi-y at ops.dti.ne.jp>
* configure.in (sh-*-*): Unify sh,2,3 and 4. And add include_mpn.
* mpn/sh/sh-defs.m4: New file.
* mpn/sh/add_n.s: Transform to m4-ccas format, and rename to *.asm.
* mpn/sh/add_n.s,mpn/sh/sub_n.s: Ditto.
* mpn/sh/sh2/addmul_1.s,mpn/sh/sh2/mul_1.s, mpn/sh/sh2/submul_1.s: Ditto.
diff --git a/configure.in b/configure.in
index 450cc92..37382a8 100644
--- a/configure.in
+++ b/configure.in
@@ -1058,8 +1058,15 @@ case $host in
;;
- sh-*-*) path="sh" ;;
- sh2-*-*) path="sh/sh2 sh" ;;
+ sh-*-* | sh[234]*-*-*)
+echo "include_mpn(\`sh/sh-defs.m4')" >> $gmp_tmpconfigm4i
+ case $host in
+ sh2*)
+ path="sh/sh2 sh" ;;
+ *)
+ path="sh" ;;
+ esac
+ ;;
*sparc*-*-*)
diff --git a/mpn/sh/add_n.asm b/mpn/sh/add_n.asm
new file mode 100644
index 0000000..44eef7d
--- /dev/null
+++ b/mpn/sh/add_n.asm
@@ -0,0 +1,47 @@
+dnl SH mpn_add_n -- Add two limb vectors of the same length > 0 and store
+dnl sum in a third limb vector.
+
+dnl Copyright 1995, 1997, 2000 Free Software Foundation, Inc.
+
+dnl This file is part of the GNU MP Library.
+
+dnl The GNU MP Library is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU Lesser General Public License as published by
+dnl the Free Software Foundation; either version 2.1 of the License, or (at
+dnl your option) any later version.
+
+dnl The GNU MP Library is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+dnl License for more details.
+
+dnl You should have received a copy of the GNU Lesser General Public License
+dnl along with the GNU MP Library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+include(`../config.m4')
+
+C INPUT PARAMETERS
+C res_ptr r4
+C s1_ptr r5
+C s2_ptr r6
+C size r7
+
+ASM_START()
+PROLOGUE(mpn_add_n)
+ mov #0,r3 ! clear cy save reg
+
+Loop: mov.l @r5+,r1
+ mov.l @r6+,r2
+ shlr r3 ! restore cy
+ addc r2,r1
+ movt r3 ! save cy
+ mov.l r1, at r4
+ dt r7
+ bf.s Loop
+ add #4,r4
+
+ rts
+ mov r3,r0 ! return carry-out from most sign. limb
+EPILOGUE(mpn_add_n)
diff --git a/mpn/sh/add_n.s b/mpn/sh/add_n.s
deleted file mode 100644
index b37905c..0000000
--- a/mpn/sh/add_n.s
+++ /dev/null
@@ -1,47 +0,0 @@
-! SH __gmpn_add_n -- Add two limb vectors of the same length > 0 and store
-! sum in a third limb vector.
-
-! Copyright 1995, 1997, 2000 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP Library is free software; you can redistribute it and/or modify
-! it under the terms of the GNU Lesser General Public License as published by
-! the Free Software Foundation; either version 2.1 of the License, or (at your
-! option) any later version.
-
-! The GNU MP Library is distributed in the hope that it will be useful, but
-! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-! License for more details.
-
-! You should have received a copy of the GNU Lesser General Public License
-! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-! MA 02110-1301, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr r4
-! s1_ptr r5
-! s2_ptr r6
-! size r7
-
- .text
- .align 2
- .global ___gmpn_add_n
-___gmpn_add_n:
- mov #0,r3 ! clear cy save reg
-
-Loop: mov.l @r5+,r1
- mov.l @r6+,r2
- shlr r3 ! restore cy
- addc r2,r1
- movt r3 ! save cy
- mov.l r1, at r4
- dt r7
- bf.s Loop
- add #4,r4
-
- rts
- mov r3,r0 ! return carry-out from most sign. limb
diff --git a/mpn/sh/sh-defs.m4 b/mpn/sh/sh-defs.m4
new file mode 100644
index 0000000..9623d07
--- /dev/null
+++ b/mpn/sh/sh-defs.m4
@@ -0,0 +1,38 @@
+divert(-1)
+
+dnl m4 macros for SH assembler.
+dnl
+dnl Copyright 2007 Free Software Foundation, Inc.
+dnl
+dnl This file is part of the GNU MP Library.
+dnl
+dnl The GNU MP Library is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU Lesser General Public License as published by
+dnl the Free Software Foundation; either version 2.1 of the License, or (at
+dnl your option) any later version.
+dnl
+dnl The GNU MP Library is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+dnl License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public License
+dnl along with the GNU MP Library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+changecom(!)
+
+define(`PROLOGUE_cpu',
+m4_assert_numargs(1)
+` TEXT
+ ALIGN(2)
+ GLOBL `$1' GLOBL_ATTR
+ TYPE(`$1',`function')
+`$1'LABEL_SUFFIX')
+
+define(`EPILOGUE_cpu',
+m4_assert_numargs(1)
+`')
+
+divert
diff --git a/mpn/sh/sh2/addmul_1.asm b/mpn/sh/sh2/addmul_1.asm
new file mode 100644
index 0000000..56de6ec
--- /dev/null
+++ b/mpn/sh/sh2/addmul_1.asm
@@ -0,0 +1,53 @@
+dnl SH2 mpn_addmul_1 -- Multiply a limb vector with a limb and add
+dnl the result to a second limb vector.
+
+dnl Copyright 1995, 2000 Free Software Foundation, Inc.
+
+dnl This file is part of the GNU MP Library.
+
+dnl The GNU MP Library is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU Lesser General Public License as published by
+dnl the Free Software Foundation; either version 2.1 of the License, or (at
+dnl your option) any later version.
+
+dnl The GNU MP Library is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+dnl License for more details.
+
+dnl You should have received a copy of the GNU Lesser General Public License
+dnl along with the GNU MP Library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+include(`../config.m4')
+
+C INPUT PARAMETERS
+C res_ptr r4
+C s1_ptr r5
+C size r6
+C s2_limb r7
+
+ASM_START()
+PROLOGUE(mpn_addmul_1)
+ mov #0,r2 ! cy_limb = 0
+ mov #0,r0 ! Keep r0 = 0 for entire loop
+ clrt
+
+Loop: mov.l @r5+,r3
+ dmulu.l r3,r7
+ sts macl,r1
+ addc r2,r1 ! lo_prod += old cy_limb
+ sts mach,r2 ! new cy_limb = hi_prod
+ mov.l @r4,r3
+ addc r0,r2 ! cy_limb += T, T = 0
+ addc r3,r1
+ addc r0,r2 ! cy_limb += T, T = 0
+ dt r6
+ mov.l r1, at r4
+ bf.s Loop
+ add #4,r4
+
+ rts
+ mov r2,r0
+EPILOGUE(mpn_addmul_1)
diff --git a/mpn/sh/sh2/addmul_1.s b/mpn/sh/sh2/addmul_1.s
deleted file mode 100644
index b013520..0000000
--- a/mpn/sh/sh2/addmul_1.s
+++ /dev/null
@@ -1,53 +0,0 @@
-! SH2 __gmpn_addmul_1 -- Multiply a limb vector with a limb and add
-! the result to a second limb vector.
-
-! Copyright 1995, 2000 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP Library is free software; you can redistribute it and/or modify
-! it under the terms of the GNU Lesser General Public License as published by
-! the Free Software Foundation; either version 2.1 of the License, or (at your
-! option) any later version.
-
-! The GNU MP Library is distributed in the hope that it will be useful, but
-! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-! License for more details.
-
-! You should have received a copy of the GNU Lesser General Public License
-! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-! MA 02110-1301, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr r4
-! s1_ptr r5
-! size r6
-! s2_limb r7
-
- .text
- .align 1
- .global ___gmpn_addmul_1
-___gmpn_addmul_1:
- mov #0,r2 ! cy_limb = 0
- mov #0,r0 ! Keep r0 = 0 for entire loop
- clrt
-
-Loop: mov.l @r5+,r3
- dmulu.l r3,r7
- sts macl,r1
- addc r2,r1 ! lo_prod += old cy_limb
- sts mach,r2 ! new cy_limb = hi_prod
- mov.l @r4,r3
- addc r0,r2 ! cy_limb += T, T = 0
- addc r3,r1
- addc r0,r2 ! cy_limb += T, T = 0
- dt r6
- mov.l r1, at r4
- bf.s Loop
- add #4,r4
-
- rts
- mov r2,r0
diff --git a/mpn/sh/sh2/mul_1.asm b/mpn/sh/sh2/mul_1.asm
new file mode 100644
index 0000000..ae24f82
--- /dev/null
+++ b/mpn/sh/sh2/mul_1.asm
@@ -0,0 +1,50 @@
+dnl SH2 mpn_mul_1 -- Multiply a limb vector with a limb and store
+dnl the result in a second limb vector.
+
+dnl Copyright 1995, 2000 Free Software Foundation, Inc.
+
+dnl This file is part of the GNU MP Library.
+
+dnl The GNU MP Library is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU Lesser General Public License as published by
+dnl the Free Software Foundation; either version 2.1 of the License, or (at
+dnl your option) any later version.
+
+dnl The GNU MP Library is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+dnl License for more details.
+
+dnl You should have received a copy of the GNU Lesser General Public License
+dnl along with the GNU MP Library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+include(`../config.m4')
+
+C INPUT PARAMETERS
+C res_ptr r4
+C s1_ptr r5
+C size r6
+C s2_limb r7
+
+ASM_START()
+PROLOGUE(mpn_mul_1)
+ mov #0,r2 ! cy_limb = 0
+ mov #0,r0 ! Keep r0 = 0 for entire loop
+ clrt
+
+Loop: mov.l @r5+,r3
+ dmulu.l r3,r7
+ sts macl,r1
+ addc r2,r1
+ sts mach,r2
+ addc r0,r2 ! propagate carry to cy_limb (dt clobbers T)
+ dt r6
+ mov.l r1, at r4
+ bf.s Loop
+ add #4,r4
+
+ rts
+ mov r2,r0
+EPILOGUE(mpn_mul_1)
diff --git a/mpn/sh/sh2/mul_1.s b/mpn/sh/sh2/mul_1.s
deleted file mode 100644
index 9d27e06..0000000
--- a/mpn/sh/sh2/mul_1.s
+++ /dev/null
@@ -1,50 +0,0 @@
-! SH2 __gmpn_mul_1 -- Multiply a limb vector with a limb and store
-! the result in a second limb vector.
-
-! Copyright 1995, 2000 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP Library is free software; you can redistribute it and/or modify
-! it under the terms of the GNU Lesser General Public License as published by
-! the Free Software Foundation; either version 2.1 of the License, or (at your
-! option) any later version.
-
-! The GNU MP Library is distributed in the hope that it will be useful, but
-! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-! License for more details.
-
-! You should have received a copy of the GNU Lesser General Public License
-! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-! MA 02110-1301, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr r4
-! s1_ptr r5
-! size r6
-! s2_limb r7
-
- .text
- .align 1
- .global ___gmpn_mul_1
-___gmpn_mul_1:
- mov #0,r2 ! cy_limb = 0
- mov #0,r0 ! Keep r0 = 0 for entire loop
- clrt
-
-Loop: mov.l @r5+,r3
- dmulu.l r3,r7
- sts macl,r1
- addc r2,r1
- sts mach,r2
- addc r0,r2 ! propagate carry to cy_limb (dt clobbers T)
- dt r6
- mov.l r1, at r4
- bf.s Loop
- add #4,r4
-
- rts
- mov r2,r0
diff --git a/mpn/sh/sh2/submul_1.asm b/mpn/sh/sh2/submul_1.asm
new file mode 100644
index 0000000..7205f2d
--- /dev/null
+++ b/mpn/sh/sh2/submul_1.asm
@@ -0,0 +1,53 @@
+dnl SH2 mpn_submul_1 -- Multiply a limb vector with a limb and subtract
+dnl the result from a second limb vector.
+
+dnl Copyright 1995, 2000 Free Software Foundation, Inc.
+
+dnl This file is part of the GNU MP Library.
+
+dnl The GNU MP Library is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU Lesser General Public License as published by
+dnl the Free Software Foundation; either version 2.1 of the License, or (at
+dnl your option) any later version.
+
+dnl The GNU MP Library is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+dnl License for more details.
+
+dnl You should have received a copy of the GNU Lesser General Public License
+dnl along with the GNU MP Library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+include(`../config.m4')
+
+C INPUT PARAMETERS
+C res_ptr r4
+C s1_ptr r5
+C size r6
+C s2_limb r7
+
+ASM_START()
+PROLOGUE(mpn_submul_1)
+ mov #0,r2 ! cy_limb = 0
+ mov #0,r0 ! Keep r0 = 0 for entire loop
+ clrt
+
+Loop: mov.l @r5+,r3
+ dmulu.l r3,r7
+ sts macl,r1
+ addc r2,r1 ! lo_prod += old cy_limb
+ sts mach,r2 ! new cy_limb = hi_prod
+ mov.l @r4,r3
+ addc r0,r2 ! cy_limb += T, T = 0
+ subc r3,r1
+ addc r0,r2 ! cy_limb += T, T = 0
+ dt r6
+ mov.l r1, at r4
+ bf.s Loop
+ add #4,r4
+
+ rts
+ mov r2,r0
+EPILOGUE(mpn_submul_1)
diff --git a/mpn/sh/sh2/submul_1.s b/mpn/sh/sh2/submul_1.s
deleted file mode 100644
index 50faf63..0000000
--- a/mpn/sh/sh2/submul_1.s
+++ /dev/null
@@ -1,53 +0,0 @@
-! SH2 __gmpn_submul_1 -- Multiply a limb vector with a limb and subtract
-! the result from a second limb vector.
-
-! Copyright 1995, 2000 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP Library is free software; you can redistribute it and/or modify
-! it under the terms of the GNU Lesser General Public License as published by
-! the Free Software Foundation; either version 2.1 of the License, or (at your
-! option) any later version.
-
-! The GNU MP Library is distributed in the hope that it will be useful, but
-! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-! License for more details.
-
-! You should have received a copy of the GNU Lesser General Public License
-! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-! MA 02110-1301, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr r4
-! s1_ptr r5
-! size r6
-! s2_limb r7
-
- .text
- .align 1
- .global ___gmpn_submul_1
-___gmpn_submul_1:
- mov #0,r2 ! cy_limb = 0
- mov #0,r0 ! Keep r0 = 0 for entire loop
- clrt
-
-Loop: mov.l @r5+,r3
- dmulu.l r3,r7
- sts macl,r1
- addc r2,r1 ! lo_prod += old cy_limb
- sts mach,r2 ! new cy_limb = hi_prod
- mov.l @r4,r3
- addc r0,r2 ! cy_limb += T, T = 0
- subc r3,r1
- addc r0,r2 ! cy_limb += T, T = 0
- dt r6
- mov.l r1, at r4
- bf.s Loop
- add #4,r4
-
- rts
- mov r2,r0
diff --git a/mpn/sh/sub_n.asm b/mpn/sh/sub_n.asm
new file mode 100644
index 0000000..c68e396
--- /dev/null
+++ b/mpn/sh/sub_n.asm
@@ -0,0 +1,47 @@
+dnl SH mpn_sub_n -- Subtract two limb vectors of the same length > 0 and store
+dnl difference in a third limb vector.
+
+dnl Copyright 1995, 1997, 2000 Free Software Foundation, Inc.
+
+dnl This file is part of the GNU MP Library.
+
+dnl The GNU MP Library is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU Lesser General Public License as published by
+dnl the Free Software Foundation; either version 2.1 of the License, or (at
+dnl your option) any later version.
+
+dnl The GNU MP Library is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+dnl License for more details.
+
+dnl You should have received a copy of the GNU Lesser General Public License
+dnl along with the GNU MP Library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+include(`../config.m4')
+
+C INPUT PARAMETERS
+C res_ptr r4
+C s1_ptr r5
+C s2_ptr r6
+C size r7
+
+ASM_START()
+PROLOGUE(mpn_sub_n)
+ mov #0,r3 ! clear cy save reg
+
+Loop: mov.l @r5+,r1
+ mov.l @r6+,r2
+ shlr r3 ! restore cy
+ subc r2,r1
+ movt r3 ! save cy
+ mov.l r1, at r4
+ dt r7
+ bf.s Loop
+ add #4,r4
+
+ rts
+ mov r3,r0 ! return carry-out from most sign. limb
+EPILOGUE(mpn_sub_n)
diff --git a/mpn/sh/sub_n.s b/mpn/sh/sub_n.s
deleted file mode 100644
index db27a31..0000000
--- a/mpn/sh/sub_n.s
+++ /dev/null
@@ -1,47 +0,0 @@
-! SH __gmpn_sub_n -- Subtract two limb vectors of the same length > 0 and store
-! difference in a third limb vector.
-
-! Copyright 1995, 1997, 2000 Free Software Foundation, Inc.
-
-! This file is part of the GNU MP Library.
-
-! The GNU MP Library is free software; you can redistribute it and/or modify
-! it under the terms of the GNU Lesser General Public License as published by
-! the Free Software Foundation; either version 2.1 of the License, or (at your
-! option) any later version.
-
-! The GNU MP Library is distributed in the hope that it will be useful, but
-! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-! License for more details.
-
-! You should have received a copy of the GNU Lesser General Public License
-! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-! the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-! MA 02110-1301, USA.
-
-
-! INPUT PARAMETERS
-! res_ptr r4
-! s1_ptr r5
-! s2_ptr r6
-! size r7
-
- .text
- .align 2
- .global ___gmpn_sub_n
-___gmpn_sub_n:
- mov #0,r3 ! clear cy save reg
-
-Loop: mov.l @r5+,r1
- mov.l @r6+,r2
- shlr r3 ! restore cy
- subc r2,r1
- movt r3 ! save cy
- mov.l r1, at r4
- dt r7
- bf.s Loop
- add #4,r4
-
- rts
- mov r3,r0 ! return carry-out from most sign. limb
More information about the gmp-bugs
mailing list