[Committed] Correct zeroextendqihi2 insn length regression on xstormy16.

Message ID 00c101d97766$95a30a40$c0e91ec0$@nextmovesoftware.com
State Accepted
Headers
Series [Committed] Correct zeroextendqihi2 insn length regression on xstormy16. |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Roger Sayle April 25, 2023, 11:10 a.m. UTC
  My recent tweak to the zeroextendqihi2 pattern on xstormy16 incorrectly
handled the case where the operand was a MEM.  MEM operands use a longer
encoding than REG operands, and the incorrect instruction length resulted
in assembler errors (as reported by Jeff Law).  This patch restores the
original length resolving this regression.  Sorry for the inconvenience.
Committed as obvious, after testing that a cross-compiler to xstormy16-elf
builds from x86_64-pc-linux-gnu, and that gcc.c-torture/execute/memset-2.c
no longer causes "operand out of range" issues in gas.  Sorry again.


2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>

gcc/ChangeLog
	* config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
	length attribute for the first (memory operand) alternative.


Roger
--
  

Comments

Jeff Law April 25, 2023, 1:56 p.m. UTC | #1
On 4/25/23 05:10, Roger Sayle wrote:
> 
> My recent tweak to the zeroextendqihi2 pattern on xstormy16 incorrectly
> handled the case where the operand was a MEM.  MEM operands use a longer
> encoding than REG operands, and the incorrect instruction length resulted
> in assembler errors (as reported by Jeff Law).  This patch restores the
> original length resolving this regression.  Sorry for the inconvenience.
> Committed as obvious, after testing that a cross-compiler to xstormy16-elf
> builds from x86_64-pc-linux-gnu, and that gcc.c-torture/execute/memset-2.c
> no longer causes "operand out of range" issues in gas.  Sorry again.
> 
> 
> 2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>
> 
> gcc/ChangeLog
> 	* config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
> 	length attribute for the first (memory operand) alternative.
Thanks.  xstormy is passing again.
jeff
  

Patch

diff --git a/gcc/config/stormy16/stormy16.md b/gcc/config/stormy16/stormy16.md
index fd52588..9d92492 100644
--- a/gcc/config/stormy16/stormy16.md
+++ b/gcc/config/stormy16/stormy16.md
@@ -286,7 +286,7 @@ 
    shl %0,#8 | shr %0,#8"
   [(set_attr "psw_operand" "nop,nop,0")
    (set_attr_alternative "length"
-	     [(const_int 2)
+	     [(const_int 4)
 	      (const_int 2)
 	      (const_int 4)])])