diff options
author | Claudiu Zissulescu <claziss@gmail.com> | 2023-08-29 09:00:09 +0300 |
---|---|---|
committer | Claudiu Zissulescu <claziss@gmail.com> | 2023-08-31 07:55:19 +0300 |
commit | 7ed0732273a65caa747f1cbf5f0443ee536116db (patch) | |
tree | 5ea9dc1e9f207011582f8b12aeda08a83398e999 | |
parent | 68ec7d752d07ecdc7475b0021da28d9645cd8516 (diff) | |
download | gcc-7ed0732273a65caa747f1cbf5f0443ee536116db.zip gcc-7ed0732273a65caa747f1cbf5f0443ee536116db.tar.gz gcc-7ed0732273a65caa747f1cbf5f0443ee536116db.tar.bz2 |
arc: Honor SWAP option for lsl16 instruction
The LSL16 instruction is only available if SWAP (-mswap) option is
turned on.
gcc/ChangeLog:
* config/arc/arc.cc (arc_split_mov_const): Use LSL16 only when
SWAP option is enabled.
* config/arc/arc.md (ashlsi2_cnt16): Likewise.
Signed-off-by: Claudiu Zissulescu <claziss@gmail.com>
-rw-r--r-- | gcc/config/arc/arc.cc | 2 | ||||
-rw-r--r-- | gcc/config/arc/arc.md | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/gcc/config/arc/arc.cc b/gcc/config/arc/arc.cc index 266ba8b..8ee7387 100644 --- a/gcc/config/arc/arc.cc +++ b/gcc/config/arc/arc.cc @@ -11647,7 +11647,7 @@ arc_split_mov_const (rtx *operands) } /* 3. Check if we can just shift by 16 to fit into the u6 of LSL16. */ - if (TARGET_BARREL_SHIFTER && TARGET_V2 + if (TARGET_SWAP && TARGET_V2 && ((ival & ~0x3f0000) == 0)) { shimm = (ival >> 16) & 0x3f; diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md index 1f122d9..a4e77a2 100644 --- a/gcc/config/arc/arc.md +++ b/gcc/config/arc/arc.md @@ -5991,7 +5991,7 @@ archs4x, archs4xd" [(set (match_operand:SI 0 "register_operand" "=r") (ashift:SI (match_operand:SI 1 "nonmemory_operand" "rL") (const_int 16)))] - "TARGET_BARREL_SHIFTER && TARGET_V2" + "TARGET_SWAP && TARGET_V2" "lsl16\\t%0,%1" [(set_attr "type" "shift") (set_attr "iscompact" "false") |