aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/sparc/sparc-c.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-09-30 07:54:07 +0000
committerDavid S. Miller <davem@gcc.gnu.org>2011-09-30 00:54:07 -0700
commitc4728c6b20436826e469927a76fa12b89f7cf11e (patch)
treeef2752591fdb528a5b9df11ad312ebf11a2712dd /gcc/config/sparc/sparc-c.c
parent3aaedee02143cb24a313a147f787d4211844a042 (diff)
downloadgcc-c4728c6b20436826e469927a76fa12b89f7cf11e.zip
gcc-c4728c6b20436826e469927a76fa12b89f7cf11e.tar.gz
gcc-c4728c6b20436826e469927a76fa12b89f7cf11e.tar.bz2
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. From-SVN: r179376
Diffstat (limited to 'gcc/config/sparc/sparc-c.c')
-rw-r--r--gcc/config/sparc/sparc-c.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/config/sparc/sparc-c.c b/gcc/config/sparc/sparc-c.c
index 6e30950..0f2bee1 100644
--- a/gcc/config/sparc/sparc-c.c
+++ b/gcc/config/sparc/sparc-c.c
@@ -45,7 +45,12 @@ sparc_target_macros (void)
cpp_assert (parse_in, "machine=sparc");
}
- if (TARGET_VIS)
+ if (TARGET_VIS2)
+ {
+ cpp_define (parse_in, "__VIS__=0x200");
+ cpp_define (parse_in, "__VIS=0x200");
+ }
+ else if (TARGET_VIS)
{
cpp_define (parse_in, "__VIS__=0x100");
cpp_define (parse_in, "__VIS=0x100");