public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "olegendo at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug target/54089] [SH] Refactor shift patterns Date: Thu, 09 Aug 2012 21:55:00 -0000 [thread overview] Message-ID: <bug-54089-4-ErHi2LA8Lu@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-54089-4@http.gcc.gnu.org/bugzilla/> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54089 Oleg Endo <olegendo at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kkojima at gcc dot gnu.org --- Comment #4 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-08-09 21:54:42 UTC --- I'm currently playing around with the macro SHIFT_COUNT_TRUNCATED (sh.h) and the target hook TARGET_SHIFT_TRUNCATION_MASK (which is not implemented yet). Doing the following on rev 190259 (which is actually wrong): sh.h: -#define SHIFT_COUNT_TRUNCATED (! TARGET_SH3 && ! TARGET_SH2A) +#define SHIFT_COUNT_TRUNCATED (1) sh.c: +/* Implement the TARGET_SHIFT_TRUNCATION_MASK target hook. */ + +#undef TARGET_SHIFT_TRUNCATION_MASK +#define TARGET_SHIFT_TRUNCATION_MASK sh_shift_truncation_mask + +static unsigned HOST_WIDE_INT +sh_shift_truncation_mask (enum machine_mode mode) +{ + int bitsize = GET_MODE_BIT_SIZE (mode); + + if (TARGET_SHMEDIA) + return bitsize - 1; + + return MAX (32, bitsize) - 1; +} ... and looking at some CSiBE size results, I see the a couple of weird cases similar to what happens to the set_bh_page function in linux-2.4.23-pre3-testplatform/fs/buffer.c. Without the changes: ... .L592: mov.l .L598,r1 !! mov r9,r3 mov.l @r1,r2 !! r2 = zone_table[0] add #124,r2 mov.l @(36,r2),r1 mov.l @(32,r2),r2 add r10,r1 mov.l r9,@(56,r8) sub r2,r3 mov r3,r2 mov.l .L599,r3 shar r2 shar r2 mul.l r3,r2 mov #12,r3 sts macl,r2 shld r3,r2 add r2,r1 mov.l r1,@(52,r8) With the changes: ... .L592: mov.l @(24,r8),r0 !! mov r8,r3 mov.l .L598,r1 shlr16 r0 !! shlr8 r0 !! shll2 r0 !! mov.l @(r0,r1),r2 !! r2 = zone_table[page->flags >> ZONE_SHIFT] add #124,r2 mov.l @(36,r2),r1 mov.l @(32,r2),r2 add r10,r1 mov.l r8,@(56,r9) sub r2,r3 mov r3,r2 mov.l .L599,r3 shar r2 shar r2 mul.l r3,r2 mov #12,r3 sts macl,r2 shld r3,r2 add r2,r1 mov.l r1,@(52,r9) It seems that without the (wrong) patch, the index in the inline function 'page_zone' is reduced from 'page->flags >> ZONE_SHIFT' to '0', and thus the resulting code is wrong?! I've tried to reproduce this in an isolated test case but couldn't get it to do the same - the generated code seems always correct, with and without the changes. I'm confused... Kaz, do you have any idea what could be going on there?
next prev parent reply other threads:[~2012-08-09 21:55 UTC|newest] Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-07-24 23:42 [Bug target/54089] New: " olegendo at gcc dot gnu.org 2012-07-24 23:46 ` [Bug target/54089] " olegendo at gcc dot gnu.org 2012-07-25 23:03 ` olegendo at gcc dot gnu.org 2012-07-27 17:36 ` olegendo at gcc dot gnu.org 2012-07-30 6:43 ` olegendo at gcc dot gnu.org 2012-08-09 21:55 ` olegendo at gcc dot gnu.org [this message] 2012-08-09 23:18 ` olegendo at gcc dot gnu.org 2012-08-09 23:28 ` olegendo at gcc dot gnu.org 2012-08-09 23:36 ` olegendo at gcc dot gnu.org 2012-08-09 23:43 ` olegendo at gcc dot gnu.org 2012-08-10 0:40 ` kkojima at gcc dot gnu.org 2012-08-10 14:25 ` rmansfield at qnx dot com 2012-08-10 15:40 ` olegendo at gcc dot gnu.org 2012-08-11 20:26 ` olegendo at gcc dot gnu.org 2012-08-16 23:13 ` olegendo at gcc dot gnu.org 2012-08-20 21:29 ` olegendo at gcc dot gnu.org 2012-08-22 22:52 ` olegendo at gcc dot gnu.org 2012-09-10 20:35 ` olegendo at gcc dot gnu.org 2012-09-10 21:27 ` olegendo at gcc dot gnu.org 2012-09-17 23:30 ` olegendo at gcc dot gnu.org 2012-09-19 17:49 ` olegendo at gcc dot gnu.org 2012-09-25 19:07 ` olegendo at gcc dot gnu.org 2012-09-30 18:46 ` olegendo at gcc dot gnu.org 2012-10-16 10:53 ` amylaar at gcc dot gnu.org 2012-10-16 11:49 ` olegendo at gcc dot gnu.org 2012-11-06 11:56 ` olegendo at gcc dot gnu.org 2012-11-07 23:32 ` olegendo at gcc dot gnu.org 2012-11-09 10:48 ` olegendo at gcc dot gnu.org 2012-11-09 13:29 ` amylaar at gcc dot gnu.org 2012-11-13 1:14 ` olegendo at gcc dot gnu.org 2013-02-16 11:36 ` olegendo at gcc dot gnu.org 2013-12-17 11:11 ` olegendo at gcc dot gnu.org 2014-05-16 23:12 ` olegendo at gcc dot gnu.org 2014-12-16 21:38 ` olegendo at gcc dot gnu.org 2015-05-30 13:51 ` bugdal at aerifal dot cx 2015-05-30 14:11 ` olegendo at gcc dot gnu.org 2015-05-30 14:35 ` bugdal at aerifal dot cx 2015-05-30 14:42 ` olegendo at gcc dot gnu.org 2015-05-30 14:46 ` bugdal at aerifal dot cx 2015-05-30 14:57 ` olegendo at gcc dot gnu.org 2015-08-11 3:56 ` bugdal at aerifal dot cx 2015-08-11 14:17 ` olegendo at gcc dot gnu.org 2015-08-11 21:05 ` segher at gcc dot gnu.org 2015-08-12 1:30 ` segher at gcc dot gnu.org 2023-06-01 7:32 ` klepikov.alex+bugs at gmail dot com 2023-06-01 8:21 ` olegendo at gcc dot gnu.org 2023-06-01 11:18 ` klepikov.alex+bugs at gmail dot com 2023-06-01 12:08 ` olegendo at gcc dot gnu.org 2023-06-01 17:45 ` segher at gcc dot gnu.org 2023-06-01 20:46 ` olegendo at gcc dot gnu.org 2023-06-03 7:24 ` klepikov.alex+bugs at gmail dot com 2023-06-03 8:50 ` olegendo at gcc dot gnu.org 2023-06-03 15:43 ` klepikov.alex+bugs at gmail dot com 2023-06-03 16:09 ` olegendo at gcc dot gnu.org 2023-06-04 18:35 ` klepikov.alex+bugs at gmail dot com 2023-06-05 0:03 ` olegendo at gcc dot gnu.org 2023-06-06 10:30 ` klepikov.alex+bugs at gmail dot com 2023-06-06 10:51 ` olegendo at gcc dot gnu.org 2023-06-06 12:17 ` klepikov.alex+bugs at gmail dot com 2023-06-06 12:39 ` olegendo at gcc dot gnu.org 2023-06-06 12:55 ` klepikov.alex+bugs at gmail dot com 2023-06-06 16:10 ` klepikov.alex+bugs at gmail dot com 2023-06-06 19:07 ` klepikov.alex+bugs at gmail dot com 2023-06-06 23:11 ` olegendo at gcc dot gnu.org 2023-06-08 12:07 ` klepikov.alex+bugs at gmail dot com 2023-06-08 12:09 ` klepikov.alex+bugs at gmail dot com 2023-06-08 13:22 ` olegendo at gcc dot gnu.org 2023-06-08 15:22 ` klepikov.alex+bugs at gmail dot com 2023-06-08 20:17 ` olegendo at gcc dot gnu.org 2023-06-14 9:30 ` klepikov.alex+bugs at gmail dot com 2023-06-14 9:31 ` klepikov.alex+bugs at gmail dot com 2023-06-16 13:57 ` klepikov.alex+bugs at gmail dot com 2023-06-16 21:58 ` olegendo at gcc dot gnu.org 2023-06-17 6:08 ` klepikov.alex+bugs at gmail dot com 2023-06-17 7:06 ` olegendo at gcc dot gnu.org 2023-06-17 8:24 ` klepikov.alex+bugs at gmail dot com 2023-06-17 9:46 ` olegendo at gcc dot gnu.org 2023-06-17 11:00 ` klepikov.alex+bugs at gmail dot com 2023-06-17 17:57 ` klepikov.alex+bugs at gmail dot com 2023-06-20 11:28 ` klepikov.alex+bugs at gmail dot com 2023-06-20 17:03 ` klepikov.alex+bugs at gmail dot com 2023-06-20 23:46 ` olegendo at gcc dot gnu.org 2023-06-21 11:51 ` klepikov.alex+bugs at gmail dot com 2023-06-21 20:13 ` segher at gcc dot gnu.org 2023-06-21 20:32 ` segher at gcc dot gnu.org 2023-06-22 11:09 ` klepikov.alex+bugs at gmail dot com 2023-06-22 11:44 ` olegendo at gcc dot gnu.org 2023-06-22 12:34 ` klepikov.alex+bugs at gmail dot com 2023-06-23 6:02 ` klepikov.alex+bugs at gmail dot com 2023-06-23 6:06 ` olegendo at gcc dot gnu.org 2023-06-23 14:11 ` segher at gcc dot gnu.org 2023-07-06 14:16 ` olegendo at gcc dot gnu.org 2023-07-07 11:10 ` klepikov.alex+bugs at gmail dot com 2023-07-07 11:45 ` olegendo at gcc dot gnu.org 2023-07-08 7:56 ` klepikov.alex+bugs at gmail dot com 2023-07-09 13:55 ` olegendo at gcc dot gnu.org 2023-07-10 14:02 ` klepikov.alex+bugs at gmail dot com 2023-07-13 23:40 ` olegendo at gcc dot gnu.org 2023-07-14 14:31 ` klepikov.alex+bugs at gmail dot com 2023-10-13 5:02 ` olegendo at gcc dot gnu.org 2023-10-14 15:20 ` klepikov.alex+bugs at gmail dot com 2023-10-15 1:06 ` olegendo at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-54089-4-ErHi2LA8Lu@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).