Landing: 83880beea997

Project / Subsystem

gcc / i386

Date

2026-07-01

Author

Roger Sayle

Commit

83880beea997e435f56de9cab08929e213732025

Source

github

Perf win

Yes

Breaking

No

All attributes

project
gcc
subsystem
i386
patch_id
commit_hash
83880beea997e435f56de9cab08929e213732025
source_type
github
headline
i386: Improve x86 Scalar-To-Vector conversion for zero-extended memory loads
tldr
Optimizes Scalar-To-Vector (STV) conversion by recognizing that loading a 32-bit value into an SSE register naturally zero-extends it to 64 bits.
author
Roger Sayle
outcome
committed
performance_win
true
breaking_change
false
series_id
series_parts
[]
tags
  • i386
  • sse2
  • optimization
  • vectorization
discussion_id_link
bugzilla_pr
date
2026-07-01T00:00:00.000Z

This patch enhances the i386 backend’s Scalar-To-Vector (STV) conversion by allowing it to recognize and optimize patterns where a 32-bit memory value is zero-extended to a 64-bit value using SSE registers. Loading a 32-bit value into an SSE register automatically clears the upper bits, effectively performing a zero-extension. This transformation replaces multiple instructions with a single SSE load and manipulation, improving code density and potentially performance.