From 7ed0732273a65caa747f1cbf5f0443ee536116db Mon Sep 17 00:00:00 2001 From: Claudiu Zissulescu Date: Tue, 29 Aug 2023 09:00:09 +0300 Subject: 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 --- gcc/config/arc/arc.cc | 2 +- gcc/config/arc/arc.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'gcc') 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") -- cgit v1.1