]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/config/i386/constraints.md
i386-protos.h (standard_sse_constant_p): Add machine_mode argument.
authorUros Bizjak <ubizjak@gmail.com>
Sun, 24 Apr 2016 20:58:02 +0000 (22:58 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Sun, 24 Apr 2016 20:58:02 +0000 (22:58 +0200)
commit55284a77e6cb0064c69e28b3121e7ae2a9f6d871
treef2b87899a19898a4774cab674e5417030b44ffc2
parenta635cdb2cc8079c72ffece4f5614244cf78b10a2
i386-protos.h (standard_sse_constant_p): Add machine_mode argument.

* config/i386/i386-protos.h (standard_sse_constant_p): Add
machine_mode argument.
* config/i386/i386.c (standard_sse_constant_p): Return 2 for
constm1_rtx operands.  For VOIDmode constants, get mode from
pred_mode.  Check mode size if the mode is supported by ABI.
(standard_sse_constant_opcode): Do not use standard_constant_p.
Strictly check ABI support for all-ones operands.
(ix86_legitimate_constant_p): Handle TImode, OImode and XImode
immediates. Update calls to standard_sse_constant_p.
(ix86_expand_vector_move): Update calls to standard_sse_constant_p.
(ix86_rtx_costs): Ditto.
* config/i386/i386.md (*movxi_internal_avx512f): Use
nonimmediate_or_sse_const_operand instead of vector_move_operand.
Use (v,BC) alternative instead of (v,C). Use register_operand
checks instead of MEM_P.
(*movoi_internal_avx): Use nonimmediate_or_sse_const_operand instead
of vector_move_operand.  Add (v,BC) alternative and corresponding avx2
isa attribute.  Use register_operand checks instead of MEM_P.
(*movti_internal): Use nonimmediate_or_sse_const_operand for
TARGET_SSE.  Improve TARGET_SSE insn constraint.  Add (v,BC)
alternative and corresponding sse2 isa attribute.
(*movtf_internal, *movdf_internal, *movsf_interal): Update calls
to standard_sse_constant_p.
(FP constant splitters): Ditto.
* config/i386/constraints.md (BC): Do not use standard_sse_constant_p.
(C): Ditto.
* config/i386/predicates.md (constm1_operand): Remove.
(nonimmediate_or_sse_const_operand): Rewrite using RTX.
* config/i386/sse.md (*<avx512>_cvtmask2<ssemodesuffix><mode>): Use
vector_all_ones_operand instead of constm1_operand.

Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
From-SVN: r235396
gcc/ChangeLog
gcc/config/i386/constraints.md
gcc/config/i386/i386-protos.h
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/config/i386/predicates.md
gcc/config/i386/sse.md