[Bug target/125636] QI extends to HImode causes partial-register write stalls
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Jun 8 07:11:45 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125636
--- Comment #11 from Uroš Bizjak <ubizjak at gmail dot com> ---
Comment on attachment 64650
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=64650
gcc/testsuite/gcc.target/i386/pr125636.c
>short
>test_sign_extend (unsigned char *p)
You want "signed char" here.
The patch can then be as simple as:
--cut here--
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 223fdb538cf..8db5d3b0152 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -5303,11 +5303,11 @@ (define_insn "extendqihi2"
case 0:
return "{cbtw|cbw}";
default:
- return "movs{bw|x}\t{%1, %0|%0, %1}";
+ return "movs{bl|x}\t{%1, %k0|%k0, %1}";
}
}
[(set_attr "type" "imovx")
- (set_attr "mode" "HI")
+ (set_attr "mode" "HI,SI")
(set (attr "prefix_0f")
;; movsx is short decodable while cwtl is vector decoded.
(if_then_else (and (eq_attr "cpu" "!k6")
--cut here--
More information about the Gcc-bugs
mailing list