Skip to content
Snippets Groups Projects
Commit 52a6b06c authored by Uros Bizjak's avatar Uros Bizjak
Browse files

i386: Robustify some expanders w.r.t. paradoxical SUBREGs

lowpart_subreg might fail in some cases when trying to create paradoxical
SUBREGs.  Use force_reg on input operand, use new temporary output operand
and emit move into the destination afterwards.

Also, replace simplify_gen_subreg (Mx, op, My, 0)
with equivalent lowpart_subreg (Mx, op, My).

2021-12-29  Uroš Bizjak  <ubizjak@gmail.com>

gcc/ChangeLog:

	* config/i386/sse.md (vec_pack<floatprefix>_float_<mode>):
	Perform gen_avx512dq_float<floatunssuffix>v2div2sf2 into a
	pseudo and emit move insn into operands[0].
	(fix<fixunssuffix>_truncv2sfv2di2): Use lowpart_subreg
	instead of simplify_gen_subreg.
	(trunc<mode><pmov_dst_3_lower>2): Perform
	gen_avx512vl_truncate<mode>v<ssescalarnum>qi2 into a
	pseudo and emit move insn into operands[0].
	(trunc<mode><pmov_dst_4_lower>2): Perform
	gen_avx512vl_truncate<mode>v<ssescalarnum>hi2 into a
	pseudo and emit move insn into operands[0].
	(truncv2div2si2): Perform gen_avx512vl_truncatev2div2si2 into a
	pseudo and emit move insn into operands[0].
	(truncv8div8qi2): Perform gen_avx512f_truncatev8div16qi2 into a
	pseudo and emit move insn into operands[0].
	(<any_extend:insn>v8qiv8hi2): Use lowpart_subreg
	instead of simplify_gen_subreg.
	(<any_extend:insn>v8qiv8si2): Ditto.
	(<any_extend:insn>v4qiv4si2): Ditto.
	(<any_extend:insn>v4hiv4si2): Ditto.
	(<any_extend:insn>v8qiv8di2): Ditto.
	(<any_extend:insn>v4qiv4di2): Ditto.
	(<any_extend:insn>v2qiv2di2): Ditto.
	(<any_extend:insn>v4hiv4di2): Ditto.
	(<any_extend:insn>v2hiv2di2): Ditto.
	(<any_extend:insn>v2siv2di2): Ditto.
parent 44372676
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment