OSDN Git Service

Add sparc VIS 2.0 builtins, intrinsics, and option to control them.
authordavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Sep 2011 07:54:07 +0000 (07:54 +0000)
committerdavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Sep 2011 07:54:07 +0000 (07:54 +0000)
commit95c09f2cd60a531e72e043eb98fd1ca370f0d051
treeef2752591fdb528a5b9df11ad312ebf11a2712dd
parente606385a0b3be357e44ecbcbdfb756fdfa1e257d
Add sparc VIS 2.0 builtins, intrinsics, and option to control them.

gcc/

* config/sparc/sparc.opt (VIS2): New option.
* doc/invoke.texi: Document it.
* config/sparc/sparc.md (UNSPEC_EDGE8N, UNSPEC_EDGE8LN,
UNSPEC_EDGE16N, UNSPEC_EDGE16LN, UNSPEC_EDGE32N,
UNSPEC_EDGE32LN, UNSPEC_BSHUFFLE): New unspecs.
(define_attr type): New insn type 'edgen'.
(bmask<P:mode>_vis, bshuffle<V64I:mode>_vis, edge8n<P:mode>_vis,
edge8ln<P:mode>_vis, edge16n<P:mode>_vis, edge16ln<P:mode>_vis,
edge32n<P:mode>_vis, edge32ln<P:mode>_vis): New insn VIS 2.0
patterns.
* niagara.md: Handle edgen.
* niagara2.md: Likewise.
* ultra1_2.md: Likewise.
* ultra3.md: Likewise.
* config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
to 0x200 when TARGET_VIS2.
* config/sparc/sparc.c (sparc_option_override): Set MASK_VIS2 by
default when targetting capable cpus.  TARGET_VIS2 implies
TARGET_VIS, clear and it when TARGET_FPU is disabled.
(sparc_vis_init_builtins): Emit new VIS 2.0 builtins.
(sparc_expand_builtin): Fix predicate indexing when builtin returns
void.
(sparc_fold_builtin): Do not eliminate bmask when result is ignored.
* config/sparc/visintrin.h (__vis_bmask, __vis_bshuffledi,
__vis_bshufflev2si, __vis_bshufflev4hi, __vis_bshufflev8qi,
__vis_edge8n, __vis_edge8ln, __vis_edge16n, __vis_edge16ln,
__vis_edge32n, __vis_edge32ln): New VIS 2.0 interfaces.
* doc/extend.texi: Document new VIS 2.0 builtins.

gcc/testsuite/

* gcc.target/sparc/bmaskbshuf.c: New test.
* gcc.target/sparc/edgen.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179376 138bc75d-0d04-0410-961f-82ee72b054a4
15 files changed:
gcc/ChangeLog
gcc/config/sparc/niagara.md
gcc/config/sparc/niagara2.md
gcc/config/sparc/sparc-c.c
gcc/config/sparc/sparc.c
gcc/config/sparc/sparc.md
gcc/config/sparc/sparc.opt
gcc/config/sparc/ultra1_2.md
gcc/config/sparc/ultra3.md
gcc/config/sparc/visintrin.h
gcc/doc/extend.texi
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sparc/bmaskbshuf.c [new file with mode: 0644]
gcc/testsuite/gcc.target/sparc/edgen.c [new file with mode: 0644]