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:
parent
459f6f68a7
commit
4432066509
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user