i386: Use code_for_ instead of gen_ for parameterized names more.

Some builtins are better expanded to patterns with
parametrized names via code_for_ than gen_ helpers.

No functional changes.

2020-08-19  Uroš Bizjak  <ubizjak@gmail.com>

gcc/ChangeLog:

	* config/i386/i386-expand.c (ix86_expand_builtin)
	[case IX86_BUILTIN_ENQCMD, case IX86_BUILTIN_ENQCMDS]:
	Rewrite expansion to use code_for_enqcmd.
	[case IX86_BUILTIN_WRSSD, case IX86_BUILTIN_WRSSQ]:
	Rewrite expansion to use code_for_wrss.
	[case IX86_BUILTIN_WRUSSD, case IX86_BUILTIN_WRUSSD]:
	Rewrite expansion to use code_for_wrss.
This commit is contained in:
Uros Bizjak 2020-08-19 17:14:13 +02:00
parent 459f6f68a7
commit 4432066509

View File

@ -11433,24 +11433,24 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
}
else
{
rtx pat;
if (target == 0
|| !register_operand (target, SImode))
target = gen_reg_rtx (SImode);
target = gen_reg_rtx (SImode);
emit_move_insn (target, const0_rtx);
target = gen_rtx_SUBREG (QImode, target, 0);
if (fcode == IX86_BUILTIN_ENQCMD)
pat = gen_enqcmd (UNSPECV_ENQCMD, Pmode, op0, op1);
else
pat = gen_enqcmd (UNSPECV_ENQCMDS, Pmode, op0, op1);
emit_insn (pat);
emit_insn (gen_rtx_SET (gen_rtx_STRICT_LOW_PART (VOIDmode, target),
gen_rtx_fmt_ee (EQ, QImode,
SET_DEST (pat),
const0_rtx)));
int unspecv = (fcode == IX86_BUILTIN_ENQCMD
? UNSPECV_ENQCMD
: UNSPECV_ENQCMDS);
icode = code_for_enqcmd (unspecv, Pmode);
emit_insn (GEN_FCN (icode) (op0, op1));
emit_insn
(gen_rtx_SET (gen_rtx_STRICT_LOW_PART (VOIDmode, target),
gen_rtx_fmt_ee (EQ, QImode,
gen_rtx_REG (CCZmode, FLAGS_REG),
const0_rtx)));
return SUBREG_REG (target);
}
@ -12839,10 +12839,12 @@ rdseed_step:
}
op1 = gen_rtx_MEM (mode, op1);
emit_insn ((fcode == IX86_BUILTIN_WRSSD
|| fcode == IX86_BUILTIN_WRSSQ)
? gen_wrss (mode, op0, op1)
: gen_wruss (mode, op0, op1));
icode = ((fcode == IX86_BUILTIN_WRSSD
|| fcode == IX86_BUILTIN_WRSSQ)
? code_for_wrss (mode)
: code_for_wruss (mode));
emit_insn (GEN_FCN (icode) (op0, op1));
return 0;
default: