diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2015-05-12 15:49:21 +0200 |
---|---|---|
committer | Segher Boessenkool <segher@gcc.gnu.org> | 2015-05-12 15:49:21 +0200 |
commit | 1a93ca861c1a08072d089f62ce979bd80da574b0 (patch) | |
tree | 4f29e36e383cc1e8fa7db851dd57bccabf64c8c7 | |
parent | 52a680ceaa233dff461f1577cba129308b2a3c20 (diff) | |
download | gcc-1a93ca861c1a08072d089f62ce979bd80da574b0.zip gcc-1a93ca861c1a08072d089f62ce979bd80da574b0.tar.gz gcc-1a93ca861c1a08072d089f62ce979bd80da574b0.tar.bz2 |
rs6000.md (rs6000_adjust_atomic_subword): Use gen_ashlsi3 and gen_andsi3 instead of gen_rlwinm.
* config/rs6000/rs6000.md (rs6000_adjust_atomic_subword): Use
gen_ashlsi3 and gen_andsi3 instead of gen_rlwinm.
From-SVN: r223071
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e605c56..7a07d50 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2015-05-12 Segher Boessenkool <segher@kernel.crashing.org> + * config/rs6000/rs6000.md (rs6000_adjust_atomic_subword): Use + gen_ashlsi3 and gen_andsi3 instead of gen_rlwinm. + +2015-05-12 Segher Boessenkool <segher@kernel.crashing.org> + * config/rs6000/rs6000.md (extzv): FAIL for SImode. (extzvsi_internal, *extzvsi_internal1, *extzvsi_internal2, *rotlsi3_internal7le, *rotlsi3_internal7be, *rotlsi3_internal8le, diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 7971cba..3e6f2e3 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -20580,7 +20580,9 @@ rs6000_adjust_atomic_subword (rtx orig_mem, rtx *pshift, rtx *pmask) /* Shift amount for subword relative to aligned word. */ shift = gen_reg_rtx (SImode); addr = gen_lowpart (SImode, addr); - emit_insn (gen_rlwinm (shift, addr, GEN_INT (3), GEN_INT (shift_mask))); + rtx tmp = gen_reg_rtx (SImode); + emit_insn (gen_ashlsi3 (tmp, addr, GEN_INT (3))); + emit_insn (gen_andsi3 (shift, tmp, GEN_INT (shift_mask))); if (BYTES_BIG_ENDIAN) shift = expand_simple_binop (SImode, XOR, shift, GEN_INT (shift_mask), shift, 1, OPTAB_LIB_WIDEN); |