diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2020-08-13 20:54:16 +0200 |
---|---|---|
committer | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-17 15:08:11 -0300 |
commit | e85ed167cdec4b14b11b107ea35628031a70cf51 (patch) | |
tree | 024e2faa4e8d4383509cd903e130f9480d6f07b0 /gcc/fortran/cpp.h | |
parent | 8e6c081b89e0595e73fd42f3c27bdb37a14ed5f9 (diff) | |
download | gcc-e85ed167cdec4b14b11b107ea35628031a70cf51.zip gcc-e85ed167cdec4b14b11b107ea35628031a70cf51.tar.gz gcc-e85ed167cdec4b14b11b107ea35628031a70cf51.tar.bz2 |
i386: Improve CET builtin expanders.
Several fixes to CET builtin expanders:
a) Split out explicit zeroing of RDSSP output operand.
b) Use DImode memory operand for RSTORSSP and CLRSSBSY instructions.
c) Use parameterized pattern names to simplify calling of named patterns.
2020-08-13 Uroš Bizjak <ubizjak@gmail.com>
gcc/ChangeLog:
* config/i386/i386-builtin.def (CET_NORMAL): Merge to CET BDESC array.
(__builtin_ia32_rddspd, __builtin_ia32_rddspq, __builtin_ia32_incsspd)
(__builtin_ia32_incsspq, __builtin_ia32_wrssd, __builtin_ia32_wrssq)
(__builtin_ia32_wrussd, __builtin_ia32_wrussq): Use CODE_FOR_nothing.
* config/i386/i386-builtins.c: Remove handling of CET_NORMAL builtins.
* config/i386/i386.md (@rdssp<mode>): Implement as parametrized
name pattern. Use SWI48 mode iterator. Introduce input operand
and remove explicit XOR zeroing from insn template.
(@incssp<mode>): Implement as parametrized name pattern.
Use SWI48 mode iterator.
(@wrss<mode>): Ditto.
(@wruss<mode>): Ditto.
(rstorssp): Remove expander. Rename insn pattern from *rstorssp<mode>.
Use DImode memory operand.
(clrssbsy): Remove expander. Rename insn pattern from *clrssbsy<mode>.
Use DImode memory operand.
(save_stack_nonlocal): Update for parametrized name patterns.
Use cleared register as an argument to gen_rddsp.
(restore_stack_nonlocal): Update for parametrized name patterns.
* config/i386/i386-expand.c (ix86_expand_builtin):
[case IX86_BUILTIN_RDSSPD, case IX86_BUILTIN_RDSSPQ]: Expand here.
[case IX86_BUILTIN_INCSSPD, case IX86_BUILTIN_INCSSPQ]: Ditto.
[case IX86_BUILTIN_RSTORSSP, case IX86_BUILTIN_CLRSSBSY]:
Generate DImode memory operand.
[case IX86_BUILTIN_WRSSD, case IX86_BUILTIN_WRSSQ]
[case IX86_BUILTIN_WRUSSD, case IX86_BUILTIN_WRUSSD]:
Update for parameterized name patterns.
Diffstat (limited to 'gcc/fortran/cpp.h')
0 files changed, 0 insertions, 0 deletions