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 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, r4
- dt r7
- bf.s Loop
- add #4,r4
-
- rts
- mov r3,r0 ! return carry-out from most sign. limb
_______________________________________________
gmp-bugs mailing list
gmp-bugs swox.com
http://swox
.com/mailman/listinfo/gmp-bugs
|