From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id 0C4043858C33; Fri, 25 Aug 2023 13:52:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0C4043858C33 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1692971565; bh=U+oGumAQFjyWKZw99x4zpzRbtFynPxPxae5LYzACsVY=; h=From:To:Subject:Date:From; b=JVeIIXCnAOmYK5ALCukdu3ndvuovuzuk50/tkqM4GvvhDF0ADJnFJoyYlxcDqtRw2 y5W7No1nAxUoF+pcKmh5rEE7rIXfQ28qBoYDNP/9Fq05t2fI/nzK/ywhL2+7siwsCj 7G6iRhv8MEdFv3KQFZTnG5bl6KGgQHrjkHtTlFuw= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc] m68k: Use M68K_SCALE_AVAILABLE on __mpn_lshift and __mpn_rshift X-Act-Checkin: glibc X-Git-Author: Adhemerval Zanella X-Git-Refname: refs/heads/master X-Git-Oldrev: b85880633f69b737050c22eede858f8c13bb2248 X-Git-Newrev: 87ced255bdf2681f5bf6c89d7121e59f6f342161 Message-Id: <20230825135245.0C4043858C33@sourceware.org> Date: Fri, 25 Aug 2023 13:52:45 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=87ced255bdf2681f5bf6c89d7121e59f6f342161 commit 87ced255bdf2681f5bf6c89d7121e59f6f342161 Author: Adhemerval Zanella Date: Fri Aug 18 14:49:31 2023 -0300 m68k: Use M68K_SCALE_AVAILABLE on __mpn_lshift and __mpn_rshift This patch adds a new macro, M68K_SCALE_AVAILABLE, similar to gmp scale_available_p (mpn/m68k/m68k-defs.m4) that expand to 1 if a scale factor can be used in addressing modes. This is used instead of __mc68020__ for some optimization decisions. Checked on a build for m68k-linux-gnu target mc68020 and mc68040. Diff: --- sysdeps/m68k/m680x0/lshift.S | 6 +++--- sysdeps/m68k/m680x0/rshift.S | 8 ++++---- sysdeps/m68k/m680x0/sysdep.h | 7 +++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/sysdeps/m68k/m680x0/lshift.S b/sysdeps/m68k/m680x0/lshift.S index 4240738959..74de90380b 100644 --- a/sysdeps/m68k/m680x0/lshift.S +++ b/sysdeps/m68k/m680x0/lshift.S @@ -57,9 +57,9 @@ ENTRY(__mpn_lshift) bne L(Lnormal) cmpl R(s_ptr),R(res_ptr) bls L(Lspecial) /* jump if s_ptr >= res_ptr */ -#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) +#if M68K_SCALE_AVAILABLE lea MEM_INDX1(s_ptr,s_size,l,4),R(a2) -#else /* not mc68020 */ +#else movel R(s_size),R(d0) asll #2,R(d0) lea MEM_INDX(s_ptr,d0,l),R(a2) @@ -71,7 +71,7 @@ L(Lnormal:) moveql #32,R(d5) subl R(cnt),R(d5) -#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) +#if M68K_SCALE_AVAILABLE lea MEM_INDX1(s_ptr,s_size,l,4),R(s_ptr) lea MEM_INDX1(res_ptr,s_size,l,4),R(res_ptr) #else /* not mc68000 */ diff --git a/sysdeps/m68k/m680x0/rshift.S b/sysdeps/m68k/m680x0/rshift.S index d56a2b4a44..d398d0287e 100644 --- a/sysdeps/m68k/m680x0/rshift.S +++ b/sysdeps/m68k/m680x0/rshift.S @@ -56,9 +56,9 @@ ENTRY(__mpn_rshift) bne L(Lnormal) cmpl R(res_ptr),R(s_ptr) bls L(Lspecial) /* jump if res_ptr >= s_ptr */ -#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) +#if M68K_SCALE_AVAILABLE lea MEM_INDX1(res_ptr,s_size,l,4),R(a2) -#else /* not mc68020 */ +#else movel R(s_size),R(d0) asll #2,R(d0) lea MEM_INDX(res_ptr,d0,l),R(a2) @@ -121,10 +121,10 @@ L(Lend:) cfi_restore_state L(Lspecial:) -#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) +#if M68K_SCALE_AVAILABLE lea MEM_INDX1(s_ptr,s_size,l,4),R(s_ptr) lea MEM_INDX1(res_ptr,s_size,l,4),R(res_ptr) -#else /* not mc68000 */ +#else movel R(s_size),R(d0) asll #2,R(d0) addl R(d0),R(s_ptr) diff --git a/sysdeps/m68k/m680x0/sysdep.h b/sysdeps/m68k/m680x0/sysdep.h index b31e101273..bee5b3391c 100644 --- a/sysdeps/m68k/m680x0/sysdep.h +++ b/sysdeps/m68k/m680x0/sysdep.h @@ -37,3 +37,10 @@ OP " " SRC "(" PC "), " DST #endif /* __ASSEMBLER__ */ + +# if defined __mc68020__ || defined __mc68030__ || defined __mc68040__ \ + || defined __mc68060__ +# define M68K_SCALE_AVAILABLE 1 +# else +# define M68K_SCALE_AVAILABLE 0 +# endif