From: Claudiu Zissulescu Date: Tue, 29 Aug 2023 06:00:09 +0000 (+0300) Subject: arc: Honor SWAP option for lsl16 instruction X-Git-Tag: basepoints/gcc-15~6553 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ed0732273a65caa747f1cbf5f0443ee536116db;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/config/arc/arc.cc b/gcc/config/arc/arc.cc index 266ba8b00bb7..8ee7387286e3 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 1f122d9507f2..a4e77a207bf7 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")