i386: Remove TARGET_SHIFT1 Tuning Feature
The `TARGET_SHIFT1` tuning feature for i386 is removed, simplifying shift instruction encoding.
The TARGET_SHIFT1 tuning feature for i386 is now removed. GNU as now automatically encodes “sal $1, reg” using the shorter implicit-count-1 form. The compiler-side TARGET_SHIFT1 / X86_TUNE_SHIFT1 logic is redundant. Affected shift instruction patterns will emit the explicit-immediate form, and rely on the assembler to produce the optimal encoding.
In Details
This commit removes TARGET_SHIFT1 and X86_TUNE_SHIFT1 from config/i386/. All shift patterns now unconditionally emit the explicit-immediate form, relying on the assembler for optimal encoding. This change simplifies the instruction selection patterns and length_immediate attributes. Architecture maintainers should be aware of this simplification when examining shift instruction encodings.
For Context
Compilers often have architecture-specific tuning options to optimize code generation for particular processor families. This commit removes a tuning feature related to shift instructions on i386 architecture. Modern assemblers automatically choose the most efficient encoding for shift instructions, so the compiler no longer needs to handle this optimization. Simplifying the compiler's code in this way makes it easier to maintain and reduces the potential for bugs.