diff options
author | Ben Cheng <bccheng@google.com> | 2014-03-25 22:37:19 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@google.com> | 2014-03-25 22:37:19 -0700 |
commit | 1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch) | |
tree | c607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/gcc/testsuite/gcc.target/bfin | |
parent | 283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff) | |
download | toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2 toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip |
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.target/bfin')
212 files changed, 4958 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090411-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090411-1.c new file mode 100644 index 000000000..e301518a5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090411-1.c @@ -0,0 +1,29 @@ +/* { dg-do compile { target bfin-*-* } } */ +/* { dg-options "-O2" } */ + +typedef short __v2hi __attribute__ ((vector_size (4))); +typedef __v2hi raw2x16; +typedef raw2x16 fract2x16; +typedef short fract16; +typedef struct complex_fract16 +{ + fract16 re; + fract16 im; +} __attribute__ ((aligned (4))) complex_fract16; + + +__inline__ __attribute__ ((always_inline)) + static complex_fract16 csqu_fr16 (complex_fract16 _a) +{ + complex_fract16 _x; + fract2x16 i = + __builtin_bfin_csqu_fr16 (__builtin_bfin_compose_2x16 ((_a).im, (_a).re)); + (_x).re = __builtin_bfin_extract_lo (i); + (_x).im = __builtin_bfin_extract_hi (i); + return _x; +} + +complex_fract16 f (complex_fract16 _a) +{ + return csqu_fr16 (_a); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090914-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090914-1.c new file mode 100644 index 000000000..104454057 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090914-1.c @@ -0,0 +1,39 @@ +/* { dg-do compile { target bfin-*-* } } */ + +typedef short __v2hi __attribute__ ((vector_size (4))); +typedef __v2hi raw2x16; +typedef raw2x16 fract2x16; + +typedef short fract16; +typedef struct complex_fract16 +{ + fract16 re; + fract16 im; +} __attribute__ ((aligned (4))) complex_fract16; + +typedef union composite_complex_fract16 +{ + struct complex_fract16 x; + long raw; +} composite_complex_fract16; + +__inline__ __attribute__ ((always_inline)) +static complex_fract16 cmsu_fr16 (complex_fract16 _sum, + complex_fract16 _a, complex_fract16 _b) +{ + complex_fract16 r; + fract2x16 i = + __builtin_bfin_cmplx_msu (__builtin_bfin_compose_2x16 + ((_sum).im, (_sum).re), + __builtin_bfin_compose_2x16 ((_a).im, (_a).re), + __builtin_bfin_compose_2x16 ((_b).im, (_b).re)); + (r).re = __builtin_bfin_extract_lo (i); + (r).im = __builtin_bfin_extract_hi (i); + return r; +} + +composite_complex_fract16 +f (complex_fract16 _sum, complex_fract16 _a, complex_fract16 _b) +{ + return (composite_complex_fract16) cmsu_fr16 (_sum, _a, _b); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090914-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090914-2.c new file mode 100644 index 000000000..55255d7a8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090914-2.c @@ -0,0 +1,31 @@ +/* { dg-do compile { target bfin-*-* } } */ + +typedef short fract16; +typedef short __v2hi __attribute__ ((vector_size (4))); +typedef __v2hi raw2x16; +typedef raw2x16 fract2x16; +typedef struct complex_fract16 { + fract16 re; + fract16 im; +} __attribute__((aligned(4))) complex_fract16; + + +__inline__ +__attribute__ ((always_inline)) +static complex_fract16 cmlt_fr16 (complex_fract16 _a, + complex_fract16 _b) +{ + complex_fract16 r; + fract2x16 i; + + i = __builtin_bfin_cmplx_mul(__builtin_bfin_compose_2x16((_a).im, (_a).re), + __builtin_bfin_compose_2x16((_b).im, (_b).re)); + (r).re = __builtin_bfin_extract_lo(i); + (r).im = __builtin_bfin_extract_hi(i); + return r; +} + + +complex_fract16 f(complex_fract16 a, complex_fract16 b) { + return cmlt_fr16(a, b); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090914-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090914-3.c new file mode 100644 index 000000000..fb0a9e16c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/20090914-3.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target bfin-*-* } } */ +typedef long fract32; +main() { + fract32 val_tmp; + fract32 val1 = 0x7FFFFFFF; + fract32 val2 = 0x40000000; + val_tmp = __builtin_bfin_mult_fr1x32x32 (0x06666667, val1); + val2 = __builtin_bfin_mult_fr1x32x32 (0x79999999, val2); + val2 = __builtin_bfin_add_fr1x32 (val_tmp, val2); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/arith.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/arith.c new file mode 100644 index 000000000..35029ed32 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/arith.c @@ -0,0 +1,48 @@ +extern void abort (void); +extern void exit (int); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, c, d; + fract16 t1, t2; + a = __builtin_bfin_compose_2x16 (0x3000, 0x2000); + b = __builtin_bfin_compose_2x16 (0x7000, 0x5000); + c = __builtin_bfin_compose_2x16 (0x7000, 0xc000); + + d = __builtin_bfin_add_fr2x16 (a, b); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if (t1 != 0x7000 || t2 != 0x7fff) + abort (); + + d = __builtin_bfin_sub_fr2x16 (a, b); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if (t1 != -0x3000 || t2 != -0x4000) + abort (); + + d = __builtin_bfin_negate_fr2x16 (c); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if (t1 != 0x4000 || t2 != -0x7000) + abort (); + + if (__builtin_bfin_add_fr1x32 (0x7fffffff, 1) != 0x7fffffff) + abort (); + + if (__builtin_bfin_add_fr1x32 (0x80000000, -1) != 0x80000000) + abort (); + + if (__builtin_bfin_add_fr1x32 (0x80000001, -1) != 0x80000000) + abort (); + + if (__builtin_bfin_add_fr1x32 (0xFEDCBA98, 0x11111111) != 0x0FEDCBA9) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/bfin.exp b/gcc-4.9/gcc/testsuite/gcc.target/bfin/bfin.exp new file mode 100644 index 000000000..a1b6707e2 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/bfin.exp @@ -0,0 +1,87 @@ +# Copyright (C) 2007-2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# GCC testsuite that uses the `dg.exp' driver. + +# Exit immediately if this isn't an BFIN target. +if ![istarget bfin-*-*] then { + return +} + +# Load support procs. +load_lib gcc-dg.exp + +# Like dg-options, but treats certain Blackfin-specific options specially: +# +# -mcpu=* +# Select the target cpu. Skip the test if the multilib flags force +# a different cpu. +proc dg-bfin-options {args} { + upvar dg-extra-tool-flags extra_tool_flags + upvar dg-do-what do_what + + set multilib_cpu "" + set cpu "" + + foreach flag [target_info multilib_flags] { + regexp "^-mcpu=(.*)" $flag dummy multilib_cpu + } + + set flags [lindex $args 1] + + foreach flag $flags { + regexp "^-mcpu=(.*)" $flag dummy cpu + } + + if {$multilib_cpu == "" || $multilib_cpu == $cpu} { + set extra_tool_flags $flags + } else { + set do_what [list [lindex $do_what 0] "N" "P"] + } +} + +# dg-bfin-processors can be used to specify the processors which can +# run the test case. +proc dg-bfin-processors {args} { + upvar dg-extra-tool-flags extra_tool_flags + upvar dg-do-what do_what + + set multilib_cpu "" + set cpu "" + + foreach flag [target_info multilib_flags] { + regexp "^-mcpu=([^-]*)" $flag dummy multilib_cpu + } + + set cpus [lindex $args 1] + + foreach cpu $cpus { + if {$multilib_cpu == $cpu} { + return + } + } + + set do_what [list [lindex $do_what 0] "N" "P"] +} + +# Initialize `dg'. +dg-init + +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] "" "" + +# All done. +dg-finish diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c new file mode 100644 index 000000000..9ca524d29 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_abs_fr1x16 (0x7777); + if (t1 != 0x7777) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c new file mode 100644 index 000000000..00ef1dc16 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_abs_fr1x16 (0x8000); + if (t1 != 0x7fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c new file mode 100644 index 000000000..a464c02d5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_abs_fr1x32 (0x77777777); + if (t != 0x77777777) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-2.c new file mode 100644 index 000000000..9d642b123 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_abs_fr1x32 (0x80000000); + if (t != 0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-1.c new file mode 100644 index 000000000..86badedce --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-1.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff); + + t = __builtin_bfin_abs_fr2x16 (a); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x5fff || t2 != 0x1) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-2.c new file mode 100644 index 000000000..80844bdaf --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-2.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = __builtin_bfin_abs_fr2x16 (a); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x1001 || t2 != 0x0001) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-1.c new file mode 100644 index 000000000..bd8f46d83 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-1.c @@ -0,0 +1,14 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_add_fr1x16 (0x3000, 0x2000); + if (t1 != 0x5000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-2.c new file mode 100644 index 000000000..1054e95aa --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-2.c @@ -0,0 +1,14 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_add_fr1x16 (0x3000, 0xd000); + if (t1 != 0x0) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-1.c new file mode 100644 index 000000000..a14ad688d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_add_fr1x32 (0x40003000, 0x50002000); + if (t != 0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c new file mode 100644 index 000000000..2345cb09e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_add_fr1x32 (0x40003000, 0xc000d000); + if (t != 0x00010000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c new file mode 100644 index 000000000..69736978b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x4000, 0x2000); + b = __builtin_bfin_compose_2x16 (0x8000, 0x5000); + + t = __builtin_bfin_add_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffffc000 || t2 != 0x7000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c new file mode 100644 index 000000000..f7a309b8c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x7000, 0xc000); + b = __builtin_bfin_compose_2x16 (0x8000, 0xc000); + + t = __builtin_bfin_add_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xfffff000 || t2 != 0xffff8000) + abort (); + + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp new file mode 100644 index 000000000..6ab9929e4 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp @@ -0,0 +1,39 @@ +# Copyright (C) 2009-2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# GCC testsuite that uses the `c-torture.exp' driver, looping over +# optimization options. + +load_lib c-torture.exp +load_lib target-supports.exp +load_lib torture-options.exp + +if { ![istarget bfin-*-*] } then { + return +} + + +torture-init +set-torture-options [list {} -Os -O0 -O1 -O2 -O3 {-ffast-math -mfast-fp -O2} {-mfast-fp -O2} {-ffast-math -O2}] +set additional_flags "-W -Wall" + +foreach src [lsort [find $srcdir/$subdir *.c]] { + if {[runtest_file_p $runtests $src]} { + c-torture-execute [list $src] $additional_flags + } +} + +torture-finish diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/circptr.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/circptr.c new file mode 100644 index 000000000..8419aa680 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/circptr.c @@ -0,0 +1,29 @@ +#include <stdlib.h> + +int t[] = { 1, 2, 3, 4, 5, 6, 7 }; +int expect[] = { 1, 3, 6, 10, 15, 21, 28, 29, 31, 34, 38, 43, 49, 56 }; + +int foo (int n) +{ + int *p = t; + int sum = 0; + int i; + for (i = 0; i < n; i++) { + sum += *p; + p = __builtin_bfin_circptr (p, sizeof *p, t, sizeof t); + } + return sum; +} + +int main () +{ + int i; + int *p = expect; + for (i = 0; i < 14; i++) { + int sum = foo (i + 1); + if (sum != *p) + abort (); + p = __builtin_bfin_circptr (p, sizeof *p, expect, sizeof expect); + } + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c new file mode 100644 index 000000000..17344bf06 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, c, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x2000, 0x1000); + b = __builtin_bfin_compose_2x16 (0x2000, 0x1000); + c = __builtin_bfin_compose_2x16 (0x2000, 0x1000); + + t = __builtin_bfin_cmplx_mac (a, b, c); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x2800 || t2 != 0x0a00) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c new file mode 100644 index 000000000..994711651 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, c, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x2000, 0x1000); + b = __builtin_bfin_compose_2x16 (0xb000, 0xe000); + c = __builtin_bfin_compose_2x16 (0xa000, 0x8000); + + t = __builtin_bfin_cmplx_mac (a, b, c); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x7fff || t2 != 0xfffff400) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-1.c new file mode 100644 index 000000000..10fcd4ca4 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-1.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, c, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x0000, 0x0000); + b = __builtin_bfin_compose_2x16 (0x2000, 0x1000); + c = __builtin_bfin_compose_2x16 (0x2000, 0x1000); + + t = __builtin_bfin_cmplx_msu (a, b, c); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xfffff800 || t2 != 0x600) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-2.c new file mode 100644 index 000000000..b2a7c5db3 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-2.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, c, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x2000, 0x1000); + b = __builtin_bfin_compose_2x16 (0xb000, 0xe000); + c = __builtin_bfin_compose_2x16 (0xa000, 0x8000); + + t = __builtin_bfin_cmplx_msu (a, b, c); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffffb800 || t2 != 0x2c00) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-1.c new file mode 100644 index 000000000..c6b12257e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-1.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x2000, 0x1000); + b = __builtin_bfin_compose_2x16 (0x2000, 0x1000); + + t = __builtin_bfin_cmplx_mul (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x800 || t2 != 0xfffffa00) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-2.c new file mode 100644 index 000000000..d31fc1567 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-2.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xa000, 0x8000); + b = __builtin_bfin_compose_2x16 (0xb000, 0xe000); + + t = __builtin_bfin_cmplx_mul (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x6800 || t2 != 0xffffe400) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-1.c new file mode 100644 index 000000000..1d1c0f701 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-1.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a; + fract16 t; + + a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff); + + t = __builtin_bfin_diff_hl_fr2x16 (a); + if (t != 0x6000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-2.c new file mode 100644 index 000000000..329ff2eb8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-2.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a; + fract16 t; + + a = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = __builtin_bfin_diff_hl_fr2x16 (a); + if (t != 0x1000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-1.c new file mode 100644 index 000000000..02d93e758 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-1.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a; + fract16 t; + + a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff); + + t = __builtin_bfin_diff_lh_fr2x16 (a); + if (t != 0xffffa000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-2.c new file mode 100644 index 000000000..1e5dc699f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-2.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a; + fract16 t; + + a = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = __builtin_bfin_diff_lh_fr2x16 (a); + if (t != -0x1000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-1.c new file mode 100644 index 000000000..cb66ecfb3 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-1.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5000, 0x3000); + b = __builtin_bfin_compose_2x16 (0x4000, 0x2000); + + t = __builtin_bfin_dspaddsubsat (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x7fff || t2 != 0x1000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-2.c new file mode 100644 index 000000000..8d6cab691 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-2.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xd000, 0x8000); + b = __builtin_bfin_compose_2x16 (0x1000, 0x5000); + + t = __builtin_bfin_dspaddsubsat (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffffe000 || t2 != 0xffff8000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-1.c new file mode 100644 index 000000000..0a16a4894 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-1.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5000, 0x3000); + b = __builtin_bfin_compose_2x16 (0x6000, 0x6000); + + t = __builtin_bfin_dspsubaddsat (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != -0x1000 || t2 != 0x7fff) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-2.c new file mode 100644 index 000000000..a69451eba --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-2.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xd000, 0xa000); + b = __builtin_bfin_compose_2x16 (0x1000, 0xc000); + + t = __builtin_bfin_dspsubaddsat (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffffc000 || t2 != 0xffff8000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/hisilh.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/hisilh.c new file mode 100644 index 000000000..4efbfd449 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/hisilh.c @@ -0,0 +1,46 @@ +/* { dg-do run { target bfin*-*-* } } */ +/* { dg-options "-O2" } */ +#include <stdlib.h> +typedef short raw2x16 __attribute__ ((vector_size(4))); + +int x; + +int ll(raw2x16 a, raw2x16 b) +{ + x = __builtin_bfin_mulhisill(a, b); + return x; +} + +int lh(raw2x16 a, raw2x16 b) +{ + x = __builtin_bfin_mulhisilh(a, b); + return x; +} + +int hl(raw2x16 a, raw2x16 b) +{ + x = __builtin_bfin_mulhisihl(a, b); + return x; +} + +int hh(raw2x16 a, raw2x16 b) +{ + x = __builtin_bfin_mulhisihh(a, b); + return x; +} + +int main () +{ + raw2x16 a = __builtin_bfin_compose_2x16 (0x1234, 0x5678); + raw2x16 b = __builtin_bfin_compose_2x16 (0xFEDC, 0xBA98); + if (ll (a, b) != 0xe88e8740) + abort (); + if (lh (a, b) != 0xff9d5f20) + abort (); + if (hl (a, b) != 0xfb1096e0) + abort (); + if (hh (a, b) != 0xffeb3cb0) + abort (); + + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-1.c new file mode 100644 index 000000000..c27d56a96 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_lshl_fr1x16 (0x1101, 4); + if (t1 != 0x1010) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-2.c new file mode 100644 index 000000000..9be2abf88 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_lshl_fr1x16 (0x4004, -4); + if (t1 != 0x0400) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-1.c new file mode 100644 index 000000000..b9cf84f18 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-1.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = __builtin_bfin_lshl_fr2x16 (a, 4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xfffffff0 || t2 != 0xfffffff0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-2.c new file mode 100644 index 000000000..c2f13d57e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-2.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = __builtin_bfin_lshl_fr2x16 (a, -4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x0cff || t2 != 0x0fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-1.c new file mode 100644 index 000000000..1d364b28a --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_max_fr1x16 (0x7777, 0x7000); + if (t1 != 0x7777) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-2.c new file mode 100644 index 000000000..eadf2fb05 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_max_fr1x16 (0x8000, 0xc000); + if (t1 != -0x4000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-1.c new file mode 100644 index 000000000..90adcef06 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_max_fr1x32 (0x77777777, 0x70007000); + if (t != 0x77777777) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-2.c new file mode 100644 index 000000000..b2ed2afa8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_max_fr1x32 (0x80000000, 0xc0000000); + if (t != 0xc0000000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-1.c new file mode 100644 index 000000000..2d968fd33 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-1.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff); + b = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = __builtin_bfin_max_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x5fff || t2 != 0x0001) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-2.c new file mode 100644 index 000000000..369c20851 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-2.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5000, 0xd000); + b = __builtin_bfin_compose_2x16 (0xc000, 0x2000); + + t = __builtin_bfin_max_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x5000 || t2 != 0x2000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-1.c new file mode 100644 index 000000000..686dcdcef --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_min_fr1x16 (0x7777, 0x7000); + if (t1 != 0x7000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-2.c new file mode 100644 index 000000000..655804034 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_min_fr1x16 (0x7000, 0xc001); + if (t1 != -0x3fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-1.c new file mode 100644 index 000000000..a824e76ef --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_min_fr1x32 (0x77777777, 0x70007000); + if (t != 0x70007000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-2.c new file mode 100644 index 000000000..72151016e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_min_fr1x32 (0x70007000, 0xc000c000); + if (t != 0xc000c000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-1.c new file mode 100644 index 000000000..2f2b401e5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-1.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff); + b = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = __builtin_bfin_min_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x1001 || t2 != 0xffffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-2.c new file mode 100644 index 000000000..af564f431 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-2.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5000, 0xd000); + b = __builtin_bfin_compose_2x16 (0xc000, 0x2000); + + t = __builtin_bfin_min_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffffc000 || t2 != 0xffffd000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-1.c new file mode 100644 index 000000000..06790c94a --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-1.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b; + int t; + + a = __builtin_bfin_compose_2x16 (0x5000, 0x7000); + b = __builtin_bfin_compose_2x16 (0x4000, 0x2000); + + t = __builtin_bfin_mulhisihh (a, b); + if (t != 0x14000000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-2.c new file mode 100644 index 000000000..ef070584e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-2.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b; + int t; + + a = __builtin_bfin_compose_2x16 (0xc000, 0xa000); + b = __builtin_bfin_compose_2x16 (0x7000, 0x2000); + + t = __builtin_bfin_mulhisihh (a, b); + if (t != 0xe4000000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-1.c new file mode 100644 index 000000000..e2768e399 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-1.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b; + int t; + + a = __builtin_bfin_compose_2x16 (0x5000, 0x7000); + b = __builtin_bfin_compose_2x16 (0x4000, 0x2000); + + t = __builtin_bfin_mulhisihl (a, b); + if (t != 0xa000000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-2.c new file mode 100644 index 000000000..b64eabe6b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-2.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b; + int t; + + a = __builtin_bfin_compose_2x16 (0xa000, 0x7000); + b = __builtin_bfin_compose_2x16 (0xe000, 0x5000); + + t = __builtin_bfin_mulhisihl (a, b); + if (t != 0xe2000000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-1.c new file mode 100644 index 000000000..99faef51a --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-1.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b; + int t; + + a = __builtin_bfin_compose_2x16 (0x5000, 0x7000); + b = __builtin_bfin_compose_2x16 (0x4000, 0x2000); + + t = __builtin_bfin_mulhisilh (a, b); + if (t != 0x1c000000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-2.c new file mode 100644 index 000000000..3aef80cf8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-2.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b; + int t; + + a = __builtin_bfin_compose_2x16 (0x5000, 0x7000); + b = __builtin_bfin_compose_2x16 (0xa000, 0x5000); + + t = __builtin_bfin_mulhisilh (a, b); + if (t != 0xd6000000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-1.c new file mode 100644 index 000000000..acf1e9e1b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-1.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b; + int t; + + a = __builtin_bfin_compose_2x16 (0x5000, 0x7000); + b = __builtin_bfin_compose_2x16 (0x4000, 0x2000); + + t = __builtin_bfin_mulhisill (a, b); + if (t != 0xe000000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-2.c new file mode 100644 index 000000000..147d8e14b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-2.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b; + int t; + + a = __builtin_bfin_compose_2x16 (0x5000, 0xa000); + b = __builtin_bfin_compose_2x16 (0x4000, 0x2000); + + t = __builtin_bfin_mulhisill (a, b); + if (t != 0xf4000000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-1.c new file mode 100644 index 000000000..614b44441 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_mult_fr1x16 (0x7777, 0x0007); + if (t1 != 0x0006) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-2.c new file mode 100644 index 000000000..aec3b7ccf --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_mult_fr1x16 (0x0002, 0x0001); + if (t1 != 0x0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-1.c new file mode 100644 index 000000000..8c8ad87bd --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_mult_fr1x32 (0x7777, 0x0001); + if (t != 0x0000eeee) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-2.c new file mode 100644 index 000000000..95d4f9d12 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_mult_fr1x32 (0x0002, 0x0001); + if (t != 0x0004) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-1.c new file mode 100644 index 000000000..ff41bf5cf --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_mult_fr1x32x32 (0x80000000, 0x80000000); + if (t != 0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-2.c new file mode 100644 index 000000000..6f5d5cbdb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_mult_fr1x32x32 (0x7fff0000, 0x00000007); + if (t != 0x6) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-1.c new file mode 100644 index 000000000..9bdfae632 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_mult_fr1x32x32NS (0x80000000, 0x80000000); + if (t != 0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-2.c new file mode 100644 index 000000000..cb3f18c50 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_mult_fr1x32x32NS (0x7fff0000, 0x00000007); + if (t != 0x6) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-1.c new file mode 100644 index 000000000..d15dd4516 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-1.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff); + b = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = __builtin_bfin_mult_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x0c00 || t2 != 0xffffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-2.c new file mode 100644 index 000000000..6592eaf86 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-2.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5000, 0xd000); + b = __builtin_bfin_compose_2x16 (0xc000, 0x2000); + + t = __builtin_bfin_mult_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffffd800 || t2 != 0xfffff400) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-1.c new file mode 100644 index 000000000..3612d9320 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_multr_fr1x16 (0x7777, 0x0007); + if (t1 != 0x0007) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-2.c new file mode 100644 index 000000000..e5fb2173e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_multr_fr1x16 (0x0002, 0x0001); + if (t1 != 0x0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-1.c new file mode 100644 index 000000000..33d5b4a42 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-1.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff); + b = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = __builtin_bfin_multr_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xc01 || t2 != 0x0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-2.c new file mode 100644 index 000000000..a2feed2f1 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-2.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5000, 0xd000); + b = __builtin_bfin_compose_2x16 (0xc000, 0x2000); + + t = __builtin_bfin_multr_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffffd800 || t2 != 0xfffff400) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-1.c new file mode 100644 index 000000000..10b2626c7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_negate_fr1x16 (0x7fff); + if (t1 != -0x7fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-2.c new file mode 100644 index 000000000..c839dce32 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_negate_fr1x16 (0x8000); + if (t1 != 0x7fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-3.c new file mode 100644 index 000000000..0462de20a --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-3.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_negate_fr1x16 (0xc000); + if (t1 != 0x4000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-1.c new file mode 100644 index 000000000..c7ba22c71 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_negate_fr1x32 (0x7fffffff); + if (t != -0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-2.c new file mode 100644 index 000000000..70532f4ab --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_negate_fr1x32 (0x80000000); + if (t != 0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-1.c new file mode 100644 index 000000000..449d8b8ac --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-1.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff); + + t = __builtin_bfin_negate_fr2x16 (a); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != -0x5fff || t2 != 0x1) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-2.c new file mode 100644 index 000000000..db750648c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-2.c @@ -0,0 +1,21 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + t = __builtin_bfin_negate_fr2x16 (a); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != -0x1001 || t2 != -0x1) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-1.c new file mode 100644 index 000000000..b8a53dd0e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-1.c @@ -0,0 +1,14 @@ +extern void abort (void); +extern void exit (int); + +int main () +{ + int a; + + a = __builtin_bfin_norm_fr1x16 (0x1234); + if (a != 2) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-2.c new file mode 100644 index 000000000..2534e9ff9 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-2.c @@ -0,0 +1,18 @@ +extern void abort (void); +extern void exit (int); + +typedef short fract16; + +int main () +{ + fract16 f = 0x1234, g; + int a; + + a = __builtin_bfin_norm_fr1x16 (f); + g = f << a; + if (g != (fract16) 0x48d0) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-3.c new file mode 100644 index 000000000..24b6fcbee --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-3.c @@ -0,0 +1,14 @@ +extern void abort (void); +extern void exit (int); + +int main () +{ + int a; + + a = __builtin_bfin_norm_fr1x16 (0xfedc); + if (a != 6) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-4.c new file mode 100644 index 000000000..986af6c55 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-4.c @@ -0,0 +1,18 @@ +extern void abort (void); +extern void exit (int); + +typedef short fract16; + +int main () +{ + fract16 f = 0xfedc, g; + int a; + + a = __builtin_bfin_norm_fr1x16 (f); + g = f << a; + if (g != (fract16) 0xb700) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-5.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-5.c new file mode 100644 index 000000000..f85ce96ab --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-5.c @@ -0,0 +1,14 @@ +extern void abort (void); +extern void exit (int); + +int main () +{ + int a; + + a = __builtin_bfin_norm_fr1x16 (0); + if (a != 15) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-6.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-6.c new file mode 100644 index 000000000..bc30f23da --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-6.c @@ -0,0 +1,18 @@ +extern void abort (void); +extern void exit (int); + +typedef short fract16; + +int main () +{ + fract16 f = 0, g; + int a; + + a = __builtin_bfin_norm_fr1x16 (f); + g = f << a; + if (g != (fract16) 0) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-7.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-7.c new file mode 100644 index 000000000..4edb00f34 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-7.c @@ -0,0 +1,14 @@ +extern void abort (void); +extern void exit (int); + +int main () +{ + int a; + + a = __builtin_bfin_norm_fr1x16 (0xffff); + if (a != 15) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-8.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-8.c new file mode 100644 index 000000000..c04219f4d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm16-8.c @@ -0,0 +1,18 @@ +extern void abort (void); +extern void exit (int); + +typedef short fract16; + +int main () +{ + fract16 f = 0xffff, g; + int a; + + a = __builtin_bfin_norm_fr1x16 (f); + g = f << a; + if (g != (fract16) 0x8000) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-1.c new file mode 100644 index 000000000..f8c6b93ca --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-1.c @@ -0,0 +1,14 @@ +extern void abort (void); +extern void exit (int); + +int main () +{ + int a; + + a = __builtin_bfin_norm_fr1x32 (0x12345678); + if (a != 2) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-10.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-10.c new file mode 100644 index 000000000..ba4ad920c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-10.c @@ -0,0 +1,18 @@ +extern void abort (void); +extern void exit (int); + +typedef int fract32; + +int main () +{ + fract32 f = 0x1234, g; + int a; + + a = __builtin_bfin_norm_fr1x32 (f); + g = f << a; + if (g != 0x48d00000) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-11.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-11.c new file mode 100644 index 000000000..ae675b0d2 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-11.c @@ -0,0 +1,14 @@ +extern void abort (void); +extern void exit (int); + +int main () +{ + int a; + + a = __builtin_bfin_norm_fr1x32 (0xfffffedc); + if (a != 22) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-12.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-12.c new file mode 100644 index 000000000..b7fbea7ac --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-12.c @@ -0,0 +1,18 @@ +extern void abort (void); +extern void exit (int); + +typedef int fract32; + +int main () +{ + fract32 f = 0xfffffedc, g; + int a; + + a = __builtin_bfin_norm_fr1x32 (f); + g = f << a; + if (g != 0xb7000000) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-2.c new file mode 100644 index 000000000..4972ed43d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-2.c @@ -0,0 +1,18 @@ +extern void abort (void); +extern void exit (int); + +typedef int fract32; + +int main () +{ + fract32 f = 0x12345678, g; + int a; + + a = __builtin_bfin_norm_fr1x32 (f); + g = f << a; + if (g != 0x48d159e0) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-3.c new file mode 100644 index 000000000..cc565b729 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-3.c @@ -0,0 +1,14 @@ +extern void abort (void); +extern void exit (int); + +int main () +{ + int a; + + a = __builtin_bfin_norm_fr1x32 (0xfedcba98); + if (a != 6) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-4.c new file mode 100644 index 000000000..1b3ae8dde --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-4.c @@ -0,0 +1,18 @@ +extern void abort (void); +extern void exit (int); + +typedef int fract32; + +int main () +{ + fract32 f = 0xfedcba98, g; + int a; + + a = __builtin_bfin_norm_fr1x32 (f); + g = f << a; + if (g != 0xb72ea600) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-5.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-5.c new file mode 100644 index 000000000..33c927917 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-5.c @@ -0,0 +1,14 @@ +extern void abort (void); +extern void exit (int); + +int main () +{ + int a; + + a = __builtin_bfin_norm_fr1x32 (0); + if (a != 31) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-6.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-6.c new file mode 100644 index 000000000..2150c5a98 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-6.c @@ -0,0 +1,18 @@ +extern void abort (void); +extern void exit (int); + +typedef int fract32; + +int main () +{ + fract32 f = 0, g; + int a; + + a = __builtin_bfin_norm_fr1x32 (f); + g = f << a; + if (g != 0) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-7.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-7.c new file mode 100644 index 000000000..87f4579f1 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-7.c @@ -0,0 +1,14 @@ +extern void abort (void); +extern void exit (int); + +int main () +{ + int a; + + a = __builtin_bfin_norm_fr1x32 (0xffffffff); + if (a != 31) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-8.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-8.c new file mode 100644 index 000000000..4918a06a0 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-8.c @@ -0,0 +1,18 @@ +extern void abort (void); +extern void exit (int); + +typedef int fract32; + +int main () +{ + fract32 f = 0xffffffff, g; + int a; + + a = __builtin_bfin_norm_fr1x32 (f); + g = f << a; + if (g != 0x80000000) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-9.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-9.c new file mode 100644 index 000000000..08468ac3d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm32-9.c @@ -0,0 +1,14 @@ +extern void abort (void); +extern void exit (int); + +int main () +{ + int a; + + a = __builtin_bfin_norm_fr1x32 (0x1234); + if (a != 18) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-1.c new file mode 100644 index 000000000..ad80cd4c1 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + int m; + + m = __builtin_bfin_norm_fr1x16 (0x1000); + if (m != 2) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-2.c new file mode 100644 index 000000000..59e868daa --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + int m; + + m = __builtin_bfin_norm_fr1x16 (0x4000); + if (m != 0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-3.c new file mode 100644 index 000000000..c769240b0 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-3.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + int m; + + m = __builtin_bfin_norm_fr1x16 (0xe000); + if (m != 2) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-1.c new file mode 100644 index 000000000..fe476f58f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-1.c @@ -0,0 +1,13 @@ +extern void abort (void); + +int main () +{ + int m; + + m = __builtin_bfin_norm_fr1x32 (0xefffeff1); + if (m != 2) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-2.c new file mode 100644 index 000000000..7cf1ebeca --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-2.c @@ -0,0 +1,13 @@ +extern void abort (void); + +int main () +{ + int m; + + m = __builtin_bfin_norm_fr1x32 (0x0000eff1); + if (m != 15) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-1.c new file mode 100644 index 000000000..f234bc9bf --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_shl_fr1x16 (0x1101, 4); + if (t1 != 0x7fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-2.c new file mode 100644 index 000000000..95e3bfb0c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_shl_fr1x16 (0x4004, -4); + if (t1 != 0x0400) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-3.c new file mode 100644 index 000000000..1c77a7c01 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-3.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_shl_fr1x16 (0xc101, 4); + if (t1 != 0xffff8000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-4.c new file mode 100644 index 000000000..7cb9e8c68 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-4.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_shl_fr1x16 (0xd004, -4); + if (t1 != 0xfffffd00) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-5.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-5.c new file mode 100644 index 000000000..251ff1e18 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-5.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short fract16; + +fract16 foo (fract16 f, short n) +{ + return __builtin_bfin_shl_fr1x16 (f, n); +} + +int main () +{ + fract16 t1; + + t1 = foo (0x1101, 4); + if (t1 != 0x7fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-6.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-6.c new file mode 100644 index 000000000..8d50f2091 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-6.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short fract16; + +fract16 foo (fract16 f, short n) +{ + return __builtin_bfin_shl_fr1x16 (f, n); +} + +int main () +{ + fract16 t1; + + t1 = foo (0x4004, -4); + if (t1 != 0x0400) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-7.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-7.c new file mode 100644 index 000000000..f78303a18 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-7.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short fract16; + +fract16 foo (fract16 f, short n) +{ + return __builtin_bfin_shl_fr1x16 (f, n); +} + +int main () +{ + fract16 t1; + + t1 = foo (0xc101, 4); + if (t1 != 0xffff8000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-8.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-8.c new file mode 100644 index 000000000..cea723f33 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-8.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short fract16; + +fract16 foo (fract16 f, short n) +{ + return __builtin_bfin_shl_fr1x16 (f, n); +} + +int main () +{ + fract16 t1; + + t1 = foo (0xd004, -4); + if (t1 != 0xfffffd00) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-1.c new file mode 100644 index 000000000..c85adfe56 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_shl_fr1x32 (0x7feff4ff, 4); + if (t != 0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-2.c new file mode 100644 index 000000000..0a42ddc76 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_shl_fr1x32 (0x7feff4ff, -4); + if (t != 0x7feff4f) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-3.c new file mode 100644 index 000000000..a98bc0c98 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-3.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_shl_fr1x32 (0xc000e4ff, 4); + if (t != 0x80000000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-4.c new file mode 100644 index 000000000..f2d18b370 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-4.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_shl_fr1x32 (0xc000e4ff, -4); + if (t != 0xfc000e4f) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-5.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-5.c new file mode 100644 index 000000000..2883c1875 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-5.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef long fract32; + +fract32 foo (fract32 f, short n) +{ + return __builtin_bfin_shl_fr1x32 (f, n); +} + +int main () +{ + fract32 t; + + t = foo (0x7feff4ff, 4); + if (t != 0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-6.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-6.c new file mode 100644 index 000000000..94a4cde1d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-6.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef long fract32; + +fract32 foo (fract32 f, short n) +{ + return __builtin_bfin_shl_fr1x32 (f, n); +} + +int main () +{ + fract32 t; + + t = foo (0x7feff4ff, -4); + if (t != 0x7feff4f) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-7.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-7.c new file mode 100644 index 000000000..f32423500 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-7.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef long fract32; + +fract32 foo (fract32 f, short n) +{ + return __builtin_bfin_shl_fr1x32 (f, n); +} + +int main () +{ + fract32 t; + + t = foo (0xc000e4ff, 4); + if (t != 0x80000000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-8.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-8.c new file mode 100644 index 000000000..930065085 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-8.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef long fract32; + +fract32 foo (fract32 f, short n) +{ + return __builtin_bfin_shl_fr1x32 (f, n); +} + +int main () +{ + fract32 t; + + t = foo (0xc000e4ff, -4); + if (t != 0xfc000e4f) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-9.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-9.c new file mode 100644 index 000000000..f24a266cc --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-9.c @@ -0,0 +1,19 @@ +extern void abort (void); + +typedef long fract32; + +fract32 foo (fract32 f, short n) +{ + return __builtin_bfin_shl_fr1x32 (f, n); +} + +int main () +{ + fract32 f; + + f = foo (0x12345678, 4); + if (f != 0x7fffffff) + abort (); + + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32.c new file mode 100644 index 000000000..029378ad8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32.c @@ -0,0 +1,16 @@ +/* { dg-do run } */ + +typedef int fract32; + +extern void abort (void); + +int main () +{ + fract32 f; + + f = __builtin_bfin_shl_fr1x32 (0x12345678, 4); + if (f != 0x7fffffff) + abort (); + + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-1.c new file mode 100644 index 000000000..53ca96047 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-1.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = __builtin_bfin_shl_fr2x16 (a, 4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffff8000 || t2 != 0xfffffff0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-2.c new file mode 100644 index 000000000..9e24db38b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-2.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = __builtin_bfin_shl_fr2x16 (a, -4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xfffffcff || t2 != 0xffffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-3.c new file mode 100644 index 000000000..6d91625d8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-3.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = __builtin_bfin_shl_fr2x16 (a, 4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x7fff || t2 != 0x10) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-4.c new file mode 100644 index 000000000..9b12e847a --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-4.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = __builtin_bfin_shl_fr2x16 (a, -4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x100 || t2 != 0x0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-5.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-5.c new file mode 100644 index 000000000..af9ac3f15 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-5.c @@ -0,0 +1,27 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +fract2x16 foo (fract2x16 f, short n) +{ + return __builtin_bfin_shl_fr2x16 (f, n); +} + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = foo (a, 4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffff8000 || t2 != 0xfffffff0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-6.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-6.c new file mode 100644 index 000000000..cc0808678 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-6.c @@ -0,0 +1,27 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +fract2x16 foo (fract2x16 f, short n) +{ + return __builtin_bfin_shl_fr2x16 (f, n); +} + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = foo (a, -4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xfffffcff || t2 != 0xffffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-7.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-7.c new file mode 100644 index 000000000..dd235c891 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-7.c @@ -0,0 +1,27 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +fract2x16 foo (fract2x16 f, short n) +{ + return __builtin_bfin_shl_fr2x16 (f, n); +} + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = foo (a, 4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x7fff || t2 != 0x10) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-8.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-8.c new file mode 100644 index 000000000..ed90541a4 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-8.c @@ -0,0 +1,27 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +fract2x16 foo (fract2x16 f, short n) +{ + return __builtin_bfin_shl_fr2x16 (f, n); +} + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = foo (a, -4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x100 || t2 != 0x0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-1.c new file mode 100644 index 000000000..5a9df3de2 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_shr_fr1x16 (0x1101, -4); + if (t1 != 0x7fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-2.c new file mode 100644 index 000000000..39dd3a999 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_shr_fr1x16 (0x4004, 4); + if (t1 != 0x0400) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-3.c new file mode 100644 index 000000000..fff331f6e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-3.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short fract16; + +fract16 foo (fract16 f, short n) +{ + return __builtin_bfin_shr_fr1x16 (f, n); +} + +int main () +{ + fract16 t1; + + t1 = foo (0x1101, -4); + if (t1 != 0x7fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-4.c new file mode 100644 index 000000000..8425b7a83 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-4.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short fract16; + +fract16 foo (fract16 f, short n) +{ + return __builtin_bfin_shr_fr1x16 (f, n); +} + +int main () +{ + fract16 t1; + + t1 = foo (0x4004, 4); + if (t1 != 0x0400) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-1.c new file mode 100644 index 000000000..3a5e12fd6 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_shr_fr1x32 (0x7feff4ff, -4); + if (t != 0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-2.c new file mode 100644 index 000000000..6f73462cf --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_shr_fr1x32 (0x7feff4ff, 4); + if (t != 0x7feff4f) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-3.c new file mode 100644 index 000000000..664516365 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-3.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_shr_fr1x32 (0xc000e4ff, -4); + if (t != 0x80000000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-4.c new file mode 100644 index 000000000..56ffe17c5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-4.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_shr_fr1x32 (0xc000e4ff, 4); + if (t != 0xfc000e4f) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-5.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-5.c new file mode 100644 index 000000000..6dbb7f2e2 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-5.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef long fract32; + +fract32 foo (fract32 f, short n) +{ + return __builtin_bfin_shr_fr1x32 (f, n); +} + +int main () +{ + fract32 t; + + t = foo (0x7feff4ff, -4); + if (t != 0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-6.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-6.c new file mode 100644 index 000000000..ef8915474 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-6.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef long fract32; + +fract32 foo (fract32 f, short n) +{ + return __builtin_bfin_shr_fr1x32 (f, n); +} + +int main () +{ + fract32 t; + + t = foo (0x7feff4ff, 4); + if (t != 0x7feff4f) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-7.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-7.c new file mode 100644 index 000000000..720546a71 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-7.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef long fract32; + +fract32 foo (fract32 f, short n) +{ + return __builtin_bfin_shr_fr1x32 (f, n); +} + +int main () +{ + fract32 t; + + t = foo (0xc000e4ff, -4); + if (t != 0x80000000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-8.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-8.c new file mode 100644 index 000000000..9422f790b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-8.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef long fract32; + +fract32 foo (fract32 f, short n) +{ + return __builtin_bfin_shr_fr1x32 (f, n); +} + +int main () +{ + fract32 t; + + t = foo (0xc000e4ff, 4); + if (t != 0xfc000e4f) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-9.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-9.c new file mode 100644 index 000000000..caf17203d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-9.c @@ -0,0 +1,19 @@ +extern void abort (void); + +typedef long fract32; + +fract32 foo (fract32 f, short n) +{ + return __builtin_bfin_shr_fr1x32 (f, n); +} + +int main () +{ + fract32 f; + + f = foo (0x87654321, 4); + if (f != 0xf8765432) + abort (); + + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32.c new file mode 100644 index 000000000..8be9ecfd1 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32.c @@ -0,0 +1,16 @@ +/* { dg-do run } */ + +typedef int fract32; + +extern void abort (void); + +int main () +{ + fract32 f; + + f = __builtin_bfin_shr_fr1x32 (0x87654321, 4); + if (f != 0xf8765432) + abort (); + + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-1.c new file mode 100644 index 000000000..6e9369547 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-1.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = __builtin_bfin_shr_fr2x16 (a, -4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffff8000 || t2 != 0xfffffff0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-2.c new file mode 100644 index 000000000..1c83d2914 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-2.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = __builtin_bfin_shr_fr2x16 (a, 4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xfffffcff || t2 != 0xffffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-3.c new file mode 100644 index 000000000..5b6af8b4b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-3.c @@ -0,0 +1,27 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +fract2x16 foo (fract2x16 f, short n) +{ + return __builtin_bfin_shr_fr2x16 (f, n); +} + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = foo (a, -4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xffff8000 || t2 != 0xfffffff0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-4.c new file mode 100644 index 000000000..63bbb8bc7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-4.c @@ -0,0 +1,27 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +fract2x16 foo (fract2x16 f, short n) +{ + return __builtin_bfin_shr_fr2x16 (f, n); +} + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = foo (a, 4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xfffffcff || t2 != 0xffffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-1.c new file mode 100644 index 000000000..0de251ee2 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_shrl_fr1x16 (0x8101, 4); + if (t1 != 0x0810) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-2.c new file mode 100644 index 000000000..c6b88b6d3 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_shrl_fr1x16 (0x4004, -4); + if (t1 != 0x0040) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-3.c new file mode 100644 index 000000000..0f8e168f6 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-3.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short fract16; + +fract16 foo (fract16 f, short n) +{ + return __builtin_bfin_shrl_fr1x16 (f, n); +} + +int main () +{ + fract16 t1; + + t1 = foo (0x8101, 4); + if (t1 != 0x0810) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-4.c new file mode 100644 index 000000000..d266ce095 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-4.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short fract16; + +fract16 foo (fract16 f, short n) +{ + return __builtin_bfin_shrl_fr1x16 (f, n); +} + +int main () +{ + fract16 t1; + + t1 = foo (0x4004, -4); + if (t1 != 0x0040) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-1.c new file mode 100644 index 000000000..1252b4d75 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-1.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = __builtin_bfin_shrl_fr2x16 (a, -4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xfffffff0 || t2 != 0xfffffff0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-2.c new file mode 100644 index 000000000..b4bec6e6d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-2.c @@ -0,0 +1,22 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = __builtin_bfin_shrl_fr2x16 (a, 4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x0cff || t2 != 0x0fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-3.c new file mode 100644 index 000000000..4036dbf53 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-3.c @@ -0,0 +1,27 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +fract2x16 foo (fract2x16 f, short n) +{ + return __builtin_bfin_shrl_fr2x16 (f, n); +} + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = foo (a, -4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0xfffffff0 || t2 != 0xfffffff0) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-4.c new file mode 100644 index 000000000..b6473fa4d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-4.c @@ -0,0 +1,27 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +fract2x16 foo (fract2x16 f, short n) +{ + return __builtin_bfin_shrl_fr2x16 (f, n); +} + +int main () +{ + fract2x16 a, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff); + + t = foo (a, 4); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x0cff || t2 != 0x0fff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-1.c new file mode 100644 index 000000000..b97bf8d63 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-1.c @@ -0,0 +1,14 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_sub_fr1x16 (0x3000, 0x2000); + if (t1 != 0x1000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-2.c new file mode 100644 index 000000000..5e4568034 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-2.c @@ -0,0 +1,14 @@ +extern void abort (void); + +typedef short fract16; + +int main () +{ + fract16 t1; + + t1 = __builtin_bfin_sub_fr1x16 (0x3000, 0x4000); + if (t1 != -0x1000) + abort (); + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-1.c new file mode 100644 index 000000000..5aedd9199 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-1.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t1; + + t1 = __builtin_bfin_sub_fr1x32 (0x40003000, 0xc0003000); + if (t1 != 0x7fffffff) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-2.c new file mode 100644 index 000000000..8ac4a5aad --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-2.c @@ -0,0 +1,15 @@ +extern void abort (void); + +typedef long fract32; + +int main () +{ + fract32 t; + + t = __builtin_bfin_sub_fr1x32 (0x40003000, 0x70002000); + if (t != 0xd0001000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-1.c new file mode 100644 index 000000000..34b8ac87d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-1.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x4000, 0x2000); + b = __builtin_bfin_compose_2x16 (0x8000, 0x5000); + + t = __builtin_bfin_sub_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x7fff || t2 != -0x3000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-2.c new file mode 100644 index 000000000..52f7d8052 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-2.c @@ -0,0 +1,23 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, t; + fract16 t1, t2; + + a = __builtin_bfin_compose_2x16 (0x7000, 0xc000); + b = __builtin_bfin_compose_2x16 (0xc000, 0xd000); + + t = __builtin_bfin_sub_fr2x16 (a, b); + t1 = __builtin_bfin_extract_hi (t); + t2 = __builtin_bfin_extract_lo (t); + if (t1 != 0x7fff || t2 != -0x1000) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-1.c new file mode 100644 index 000000000..56c4f191e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-1.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a; + fract16 t; + + a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff); + + t = __builtin_bfin_sum_fr2x16 (a); + if (t != 0x5ffe) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-2.c new file mode 100644 index 000000000..2f75bfdfc --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-2.c @@ -0,0 +1,20 @@ +extern void abort (void); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a; + fract16 t; + + a = __builtin_bfin_compose_2x16 (0x1001, 0x0001); + + t = __builtin_bfin_sum_fr2x16 (a); + if (t != 0x1002) + abort (); + + return 0; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/frmul.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/frmul.c new file mode 100644 index 000000000..61930bae5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/frmul.c @@ -0,0 +1,149 @@ +extern void abort (void); +extern void exit (int); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +#define GETVECT(HILO1,HILO2,IN1,IN2) \ + __builtin_bfin_compose_2x16 ((HILO2) ? __builtin_bfin_extract_hi (IN1) : __builtin_bfin_extract_lo (IN1), \ + (HILO1) ? __builtin_bfin_extract_hi (IN2) : __builtin_bfin_extract_lo (IN2)) +#define DOTEST(IN1, IN2, HL1, HL2, HL3, HL4) \ + __builtin_bfin_multr_fr2x16 (GETVECT (HL1, HL2, IN1, IN1), \ + GETVECT (HL3, HL4, IN2, IN2)) + +#define FUNC(HL1, HL2, HL3, HL4) \ + fract2x16 foo ## HL1 ## HL2 ## HL3 ## HL4 (fract2x16 a, fract2x16 b)\ + { \ + return DOTEST(a, b, HL1, HL2, HL3, HL4);\ + } + +FUNC (0, 0, 0, 0) +FUNC (1, 0, 0, 0) +FUNC (0, 1, 0, 0) +FUNC (1, 1, 0, 0) +FUNC (0, 0, 1, 0) +FUNC (1, 0, 1, 0) +FUNC (0, 1, 1, 0) +FUNC (1, 1, 1, 0) +FUNC (0, 0, 0, 1) +FUNC (1, 0, 0, 1) +FUNC (0, 1, 0, 1) +FUNC (1, 1, 0, 1) +FUNC (0, 0, 1, 1) +FUNC (1, 0, 1, 1) +FUNC (0, 1, 1, 1) +FUNC (1, 1, 1, 1) + +#define RES1 0x1400 +#define RES2 0x1e00 +#define RES3 0x1c00 +#define RES4 0x2a00 + + +int main () +{ + fract2x16 a, b, c; + fract16 t1, t2; + a = __builtin_bfin_compose_2x16 (0x3000, 0x2000); + b = __builtin_bfin_compose_2x16 (0x7000, 0x5000); + + c = foo0000 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES1 || t2 != RES1) + abort (); + + c = foo1000 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES2 || t2 != RES1) + abort (); + + c = foo0100 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES1 || t2 != RES2) + abort (); + + c = foo1100 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES2 || t2 != RES2) + abort (); + + c = foo0010 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES3 || t2 != RES1) + abort (); + + c = foo1010 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES4 || t2 != RES1) + abort (); + + c = foo0110 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES3 || t2 != RES2) + abort (); + + c = foo1110 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES4 || t2 != RES2) + abort (); + + c = foo0001 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES1 || t2 != RES3) + abort (); + + c = foo1001 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES2 || t2 != RES3) + abort (); + + c = foo0101 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES1 || t2 != RES4) + abort (); + + c = foo1101 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES2 || t2 != RES4) + abort (); + + c = foo0011 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES3 || t2 != RES3) + abort (); + + c = foo1011 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES4 || t2 != RES3) + abort (); + + c = foo0111 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES3 || t2 != RES4) + abort (); + + c = foo1111 (a, b); + t1 = __builtin_bfin_extract_lo (c); + t2 = __builtin_bfin_extract_hi (c); + if (t1 != RES4 || t2 != RES4) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/l2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/l2.c new file mode 100644 index 000000000..56f64cc82 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/l2.c @@ -0,0 +1,38 @@ +/* { dg-do run { target bfin-*-linux-uclibc } } */ +/* { dg-bfin-processors bf544 bf547 bf548 bf549 bf561} */ + +#if defined(__ADSPBF544__) +#define L2_START 0xFEB00000 +#define L2_LENGTH 0x10000 +#else +#define L2_START 0xFEB00000 +#define L2_LENGTH 0x20000 +#endif + +int n __attribute__ ((l2)); + +int foo (int i) __attribute__ ((l2)); + +int foo (int a) +{ + return a + 1; +} + +int main () +{ + int r; + unsigned long *p; + + p = (unsigned long *) foo; + if (*p < L2_START || *p >= L2_START + L2_LENGTH) + return 1; + + p = (unsigned long *) &n; + if ((unsigned long) p < L2_START || (unsigned long) p >= L2_START + L2_LENGTH) + return 2; + + if (foo (0) != 1) + return 3; + + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/longcall-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/longcall-1.c new file mode 100644 index 000000000..138707e9e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/longcall-1.c @@ -0,0 +1,33 @@ +/* { dg-do compile { target bfin-*-* } } */ +/* { dg-options "-O2" } */ +/* { dg-final { scan-assembler-not "call\[^\\n\]*foo" } } */ +/* { dg-final { scan-assembler-not "jump\[^\\n\]*foo" } } */ +/* { dg-final { scan-assembler "call\[^\\n\]*baz" } } */ +/* { dg-final { scan-assembler "jump\[^\\n\]*baz" } } */ +/* { dg-final { scan-assembler "call\[^\\n\]*bar" } } */ +/* { dg-final { scan-assembler "jump\[^\\n\]*bar" } } */ + +extern void foo () __attribute__((longcall)); +extern void bar () __attribute__((shortcall)); +extern void baz (); + +int t1 () +{ + foo (); + bar (); + baz (); + return 4; +} + +void t2 () +{ + foo (); +} +void t3 () +{ + bar (); +} +void t4 () +{ + baz (); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/longcall-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/longcall-2.c new file mode 100644 index 000000000..33189b01f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/longcall-2.c @@ -0,0 +1,33 @@ +/* { dg-do compile { target bfin-*-* } } */ +/* { dg-options "-O2 -mlong-calls" } */ +/* { dg-final { scan-assembler-not "call\[^\\n\]*foo" } } */ +/* { dg-final { scan-assembler-not "jump\[^\\n\]*foo" } } */ +/* { dg-final { scan-assembler-not "call\[^\\n\]*baz" } } */ +/* { dg-final { scan-assembler-not "jump\[^\\n\]*baz" } } */ +/* { dg-final { scan-assembler "call\[^\\n\]*bar" } } */ +/* { dg-final { scan-assembler "jump\[^\\n\]*bar" } } */ + +extern void foo () __attribute__((longcall)); +extern void bar () __attribute__((shortcall)); +extern void baz (); + +int t1 () +{ + foo (); + bar (); + baz (); + return 4; +} + +void t2 () +{ + foo (); +} +void t3 () +{ + bar (); +} +void t4 () +{ + baz (); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/loop-autoinc.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/loop-autoinc.c new file mode 100644 index 000000000..3dc718298 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/loop-autoinc.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-final { scan-assembler " = \\\[\[PI\].\\+\\+\\\];" } } */ +extern int x[]; +extern void bar(); +int foo () +{ + int i; + int sum = 0; + for (i = 0; i < 100; i++) { + sum += x[i]; + if (sum & 1) + sum *= sum; + } + return sum; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf512.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf512.c new file mode 100644 index 000000000..fa2d56d1a --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf512.c @@ -0,0 +1,31 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf512" } */ + +#ifndef __ADSPBF512__ +#error "__ADSPBF512__ is not defined" +#endif + +#ifndef __ADSPBF51x__ +#error "__ADSPBF51x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0002 +#error "__SILICON_REVISION__ is not 0x0002" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf514.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf514.c new file mode 100644 index 000000000..f6c082911 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf514.c @@ -0,0 +1,31 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf514" } */ + +#ifndef __ADSPBF514__ +#error "__ADSPBF514__ is not defined" +#endif + +#ifndef __ADSPBF51x__ +#error "__ADSPBF51x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0002 +#error "__SILICON_REVISION__ is not 0x0002" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf516.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf516.c new file mode 100644 index 000000000..439b3f40e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf516.c @@ -0,0 +1,31 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf516" } */ + +#ifndef __ADSPBF516__ +#error "__ADSPBF516__ is not defined" +#endif + +#ifndef __ADSPBF51x__ +#error "__ADSPBF51x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0002 +#error "__SILICON_REVISION__ is not 0x0002" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf518.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf518.c new file mode 100644 index 000000000..aff7f6989 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf518.c @@ -0,0 +1,31 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf518" } */ + +#ifndef __ADSPBF518__ +#error "__ADSPBF518__ is not defined" +#endif + +#ifndef __ADSPBF51x__ +#error "__ADSPBF51x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0002 +#error "__SILICON_REVISION__ is not 0x0002" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf522.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf522.c new file mode 100644 index 000000000..58c325e0c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf522.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf522" } */ + +#ifndef __ADSPBF522__ +#error "__ADSPBF522__ is not defined" +#endif + +#ifndef __ADSPBF52x__ +#error "__ADSPBF52x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0002 +#error "__SILICON_REVISION__ is not 0x0002" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf523.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf523.c new file mode 100644 index 000000000..10f71eddb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf523.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf523" } */ + +#ifndef __ADSPBF523__ +#error "__ADSPBF523__ is not defined" +#endif + +#ifndef __ADSPBF52x__ +#error "__ADSPBF52x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0002 +#error "__SILICON_REVISION__ is not 0x0002" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf524.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf524.c new file mode 100644 index 000000000..d8e30c4f5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf524.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf524" } */ + +#ifndef __ADSPBF524__ +#error "__ADSPBF524__ is not defined" +#endif + +#ifndef __ADSPBF52x__ +#error "__ADSPBF52x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0002 +#error "__SILICON_REVISION__ is not 0x0002" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf525.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf525.c new file mode 100644 index 000000000..0e021e46f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf525.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf525" } */ + +#ifndef __ADSPBF525__ +#error "__ADSPBF525__ is not defined" +#endif + +#ifndef __ADSPBF52x__ +#error "__ADSPBF52x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0002 +#error "__SILICON_REVISION__ is not 0x0002" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf526.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf526.c new file mode 100644 index 000000000..e3e248a9b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf526.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf526" } */ + +#ifndef __ADSPBF526__ +#error "__ADSPBF526__ is not defined" +#endif + +#ifndef __ADSPBF52x__ +#error "__ADSPBF52x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0002 +#error "__SILICON_REVISION__ is not 0x0002" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf527.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf527.c new file mode 100644 index 000000000..41f493114 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf527.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf527" } */ + +#ifndef __ADSPBF527__ +#error "__ADSPBF527__ is not defined" +#endif + +#ifndef __ADSPBF52x__ +#error "__ADSPBF52x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0002 +#error "__SILICON_REVISION__ is not 0x0002" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf531.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf531.c new file mode 100644 index 000000000..ebcf39822 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf531.c @@ -0,0 +1,33 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf531" } */ + +#ifndef __ADSPBF531__ +#error "__ADSPBF531__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0006 +#error "__SILICON_REVISION__ is not 0x0006" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0005 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf532.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf532.c new file mode 100644 index 000000000..18ff74a4c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf532.c @@ -0,0 +1,33 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf532" } */ + +#ifndef __ADSPBF532__ +#error "__ADSPBF532__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0006 +#error "__SILICON_REVISION__ is not 0x0006" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0005 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf533.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf533.c new file mode 100644 index 000000000..d961d7a72 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf533.c @@ -0,0 +1,33 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf533" } */ + +#ifndef __ADSPBF533__ +#error "__ADSPBF533__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0006 +#error "__SILICON_REVISION__ is not 0x0006" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0005 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf534.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf534.c new file mode 100644 index 000000000..cd354596d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf534.c @@ -0,0 +1,27 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf534" } */ + +#ifndef __ADSPBF534__ +#error "__ADSPBF534__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0003 +#error "__SILICON_REVISION__ is not 0x0003" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf536.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf536.c new file mode 100644 index 000000000..0ac9ebf9a --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf536.c @@ -0,0 +1,27 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf536" } */ + +#ifndef __ADSPBF536__ +#error "__ADSPBF536__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0003 +#error "__SILICON_REVISION__ is not 0x0003" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf537.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf537.c new file mode 100644 index 000000000..66a87c045 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf537.c @@ -0,0 +1,27 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf537" } */ + +#ifndef __ADSPBF537__ +#error "__ADSPBF537__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0003 +#error "__SILICON_REVISION__ is not 0x0003" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf538.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf538.c new file mode 100644 index 000000000..188f8708c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf538.c @@ -0,0 +1,33 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf538" } */ + +#ifndef __ADSPBF538__ +#error "__ADSPBF538__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0005 +#error "__SILICON_REVISION__ is not 0x0005" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0004 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf539.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf539.c new file mode 100644 index 000000000..acb0d8936 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf539.c @@ -0,0 +1,33 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf539" } */ + +#ifndef __ADSPBF539__ +#error "__ADSPBF539__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0005 +#error "__SILICON_REVISION__ is not 0x0005" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0004 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf542.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf542.c new file mode 100644 index 000000000..c8999713d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf542.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf542" } */ + +#ifndef __ADSPBF542__ +#error "__ADSPBF542__ is not defined" +#endif + +#ifndef __ADSPBF54x__ +#error "__ADSPBF54x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0004 +#error "__SILICON_REVISION__ is not 0x0004" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf542m.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf542m.c new file mode 100644 index 000000000..74d377045 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf542m.c @@ -0,0 +1,41 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf542m" } */ + +#ifndef __ADSPBF542__ +#error "__ADSPBF542__ is not defined" +#endif + +#ifndef __ADSPBF542M__ +#error "__ADSPBF542M__ is not defined" +#endif + +#ifndef __ADSPBF54x__ +#error "__ADSPBF54x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0003 +#error "__SILICON_REVISION__ is not 0x0003" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf544.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf544.c new file mode 100644 index 000000000..926978505 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf544.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf544" } */ + +#ifndef __ADSPBF544__ +#error "__ADSPBF544__ is not defined" +#endif + +#ifndef __ADSPBF54x__ +#error "__ADSPBF54x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0004 +#error "__SILICON_REVISION__ is not 0x0004" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf544m.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf544m.c new file mode 100644 index 000000000..a0289378c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf544m.c @@ -0,0 +1,41 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf544m" } */ + +#ifndef __ADSPBF544__ +#error "__ADSPBF544__ is not defined" +#endif + +#ifndef __ADSPBF544M__ +#error "__ADSPBF544M__ is not defined" +#endif + +#ifndef __ADSPBF54x__ +#error "__ADSPBF54x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0003 +#error "__SILICON_REVISION__ is not 0x0003" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf547.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf547.c new file mode 100644 index 000000000..8f724335c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf547.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf547" } */ + +#ifndef __ADSPBF547__ +#error "__ADSPBF547__ is not defined" +#endif + +#ifndef __ADSPBF54x__ +#error "__ADSPBF54x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0004 +#error "__SILICON_REVISION__ is not 0x0004" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf547m.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf547m.c new file mode 100644 index 000000000..e5e1f9b30 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf547m.c @@ -0,0 +1,41 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf547m" } */ + +#ifndef __ADSPBF547__ +#error "__ADSPBF547__ is not defined" +#endif + +#ifndef __ADSPBF547M__ +#error "__ADSPBF547M__ is not defined" +#endif + +#ifndef __ADSPBF54x__ +#error "__ADSPBF54x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0003 +#error "__SILICON_REVISION__ is not 0x0003" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf548.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf548.c new file mode 100644 index 000000000..7b1d2ff2d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf548.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf548" } */ + +#ifndef __ADSPBF548__ +#error "__ADSPBF548__ is not defined" +#endif + +#ifndef __ADSPBF54x__ +#error "__ADSPBF54x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0004 +#error "__SILICON_REVISION__ is not 0x0004" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf548m.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf548m.c new file mode 100644 index 000000000..47afafffe --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf548m.c @@ -0,0 +1,41 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf548m" } */ + +#ifndef __ADSPBF548__ +#error "__ADSPBF548__ is not defined" +#endif + +#ifndef __ADSPBF548M__ +#error "__ADSPBF548M__ is not defined" +#endif + +#ifndef __ADSPBF54x__ +#error "__ADSPBF54x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0003 +#error "__SILICON_REVISION__ is not 0x0003" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf549.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf549.c new file mode 100644 index 000000000..83c79de3f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf549.c @@ -0,0 +1,37 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf549" } */ + +#ifndef __ADSPBF549__ +#error "__ADSPBF549__ is not defined" +#endif + +#ifndef __ADSPBF54x__ +#error "__ADSPBF54x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0004 +#error "__SILICON_REVISION__ is not 0x0004" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf549m.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf549m.c new file mode 100644 index 000000000..8aa7ad560 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf549m.c @@ -0,0 +1,41 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf549m" } */ + +#ifndef __ADSPBF549__ +#error "__ADSPBF549__ is not defined" +#endif + +#ifndef __ADSPBF549M__ +#error "__ADSPBF549M__ is not defined" +#endif + +#ifndef __ADSPBF54x__ +#error "__ADSPBF54x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0003 +#error "__SILICON_REVISION__ is not 0x0003" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#if __SILICON_REVISION__ <= 0x0001 +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif +#else +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf561.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf561.c new file mode 100644 index 000000000..e2eab3ba3 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf561.c @@ -0,0 +1,27 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf561" } */ + +#ifndef __ADSPBF561__ +#error "__ADSPBF561__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0005 +#error "__SILICON_REVISION__ is not 0x0005" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf592.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf592.c new file mode 100644 index 000000000..27e865e55 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-bf592.c @@ -0,0 +1,31 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf592" } */ + +#ifndef __ADSPBF592__ +#error "__ADSPBF592__ is not defined" +#endif + +#ifndef __ADSPBF59x__ +#error "__ADSPBF59x__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0001 +#error "__SILICON_REVISION__ is not 0x0001" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-default.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-default.c new file mode 100644 index 000000000..9109701cb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mcpu-default.c @@ -0,0 +1,93 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "" } */ + +#ifdef __ADSPBF522__ +#error "__ADSPBF522__ is defined" +#endif +#ifdef __ADSPBF523__ +#error "__ADSPBF523__ is defined" +#endif +#ifdef __ADSPBF524__ +#error "__ADSPBF524__ is defined" +#endif +#ifdef __ADSPBF525__ +#error "__ADSPBF525__ is defined" +#endif +#ifdef __ADSPBF526__ +#error "__ADSPBF526__ is defined" +#endif +#ifdef __ADSPBF527__ +#error "__ADSPBF527__ is defined" +#endif + + +#ifdef __ADSPBF531__ +#error "__ADSPBF531__ is defined" +#endif +#ifdef __ADSPBF532__ +#error "__ADSPBF532__ is defined" +#endif +#ifdef __ADSPBF533__ +#error "__ADSPBF533__ is defined" +#endif +#ifdef __ADSPBF534__ +#error "__ADSPBF534__ is defined" +#endif +#ifdef __ADSPBF536__ +#error "__ADSPBF536__ is defined" +#endif +#ifdef __ADSPBF537__ +#error "__ADSPBF537__ is defined" +#endif +#ifdef __ADSPBF538__ +#error "__ADSPBF538__ is defined" +#endif +#ifdef __ADSPBF539__ +#error "__ADSPBF539__ is defined" +#endif + +#ifdef __ADSPBF542__ +#error "__ADSPBF542__ is defined" +#endif +#ifdef __ADSPBF544__ +#error "__ADSPBF544__ is defined" +#endif +#ifdef __ADSPBF547__ +#error "__ADSPBF547__ is defined" +#endif +#ifdef __ADSPBF548__ +#error "__ADSPBF548__ is defined" +#endif +#ifdef __ADSPBF549__ +#error "__ADSPBF548__ is defined" +#endif + +#ifdef __ADSPBF561__ +#error "__ADSPBF561__ is defined" +#endif + + +#ifndef __SILICON_REVISION__ +#error "__SILICON_REVISION__ is not defined" +#else +#if __SILICON_REVISION__ != 0xffff +#error "__SILICON_REVISION__ is not 0xFFFF" +#endif +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is not defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/mul-combine.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mul-combine.c new file mode 100644 index 000000000..2a811b332 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/mul-combine.c @@ -0,0 +1,45 @@ +/* Make sure combine eliminates all unnecessary instructions for the + sixteen cases of hi/lo multiplications. */ + +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +/* { dg-final { scan-assembler-not "<<" } } */ +/* { dg-final { scan-assembler-not "PACK" } } */ + +extern void abort (void); +extern void exit (int); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +#define GETVECT(HILO1,HILO2,IN1,IN2) \ + __builtin_bfin_compose_2x16 ((HILO2) ? __builtin_bfin_extract_hi (IN1) : __builtin_bfin_extract_lo (IN1), \ + (HILO1) ? __builtin_bfin_extract_hi (IN2) : __builtin_bfin_extract_lo (IN2)) +#define DOTEST(IN1, IN2, HL1, HL2, HL3, HL4) \ + __builtin_bfin_multr_fr2x16 (GETVECT (HL1, HL2, IN1, IN1), \ + GETVECT (HL3, HL4, IN2, IN2)) + +#define FUNC(HL1, HL2, HL3, HL4) \ + fract2x16 foo ## HL1 ## HL2 ## HL3 ## HL4 (fract2x16 a, fract2x16 b)\ + { \ + return DOTEST(a, b, HL1, HL2, HL3, HL4);\ + } + +FUNC (0, 0, 0, 0) +FUNC (1, 0, 0, 0) +FUNC (0, 1, 0, 0) +FUNC (1, 1, 0, 0) +FUNC (0, 0, 1, 0) +FUNC (1, 0, 1, 0) +FUNC (0, 1, 1, 0) +FUNC (1, 1, 1, 0) +FUNC (0, 0, 0, 1) +FUNC (1, 0, 0, 1) +FUNC (0, 1, 0, 1) +FUNC (1, 1, 0, 1) +FUNC (0, 0, 1, 1) +FUNC (1, 0, 1, 1) +FUNC (0, 1, 1, 1) +FUNC (1, 1, 1, 1) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/saveall.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/saveall.c new file mode 100644 index 000000000..19f9decd7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/saveall.c @@ -0,0 +1,14 @@ +/* { dg-do run { target bfin*-*-* } } */ +/* { dg-options "-fomit-frame-pointer" } */ + +void foo (void) __attribute__ ((saveall)); +void foo () +{ + asm ("R0 = 0; RETS = R0;"); +} + +int main () +{ + foo (); + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/shift.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/shift.c new file mode 100644 index 000000000..4a0e9175c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/shift.c @@ -0,0 +1,73 @@ +extern void abort (void); +extern void exit (int); + +typedef short __v2hi __attribute ((vector_size(4))); +typedef __v2hi fract2x16; +typedef short fract16; + +int main () +{ + fract2x16 a, b, c, d; + fract16 t1, t2; + a = __builtin_bfin_compose_2x16 (0xe005, 0x1000); + b = __builtin_bfin_compose_2x16 (0x7000, 0x5000); + c = __builtin_bfin_compose_2x16 (0x7000, 0xc000); + + d = __builtin_bfin_shl_fr2x16 (c, 2); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if ((unsigned short)t1 != 0x8000 || t2 != 0x7fff) + abort (); + + d = __builtin_bfin_shl_fr2x16 (c, -2); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if ((unsigned short)t1 != 0xf000 || t2 != 0x1c00) + abort (); + + d = __builtin_bfin_shl_fr2x16 (a, 2); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if (t1 != 0x4000 || (unsigned short)t2 != 0x8014) + abort (); + + d = __builtin_bfin_shl_fr2x16 (c, -4); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if ((unsigned short)t1 != 0xfc00 || t2 != 0x0700) + abort (); + + d = __builtin_bfin_shl_fr2x16 (c, 2); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if ((unsigned short)t1 != 0x8000 || t2 != 0x7fff) + abort (); + + d = __builtin_bfin_shl_fr2x16 (a, -2); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if (t1 != 0x0400 || (unsigned short)t2 != 0xf801) + abort (); + + /* lsh */ + d = __builtin_bfin_lshl_fr2x16 (c, -4); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if (t1 != 0x0c00 || t2 != 0x0700) + abort (); + + d = __builtin_bfin_lshl_fr2x16 (c, 2); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if (t1 != 0x0000 || t2 != -0x4000) + abort (); + + d = __builtin_bfin_lshl_fr2x16 (a, -2); + t1 = __builtin_bfin_extract_lo (d); + t2 = __builtin_bfin_extract_hi (d); + if (t1 != 0x0400 || (unsigned short)t2 != 0x3801) + abort (); + + exit (0); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/wmul-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/wmul-1.c new file mode 100644 index 000000000..f17fc199e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/wmul-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +int mac(const short *a, const short *b, int sqr, int *sum) +{ + int i; + int dotp = *sum; + + for (i = 0; i < 150; i++) { + dotp += b[i] * a[i]; + sqr += b[i] * b[i]; + } + + *sum = dotp; + return sqr; +} + +/* { dg-final { scan-assembler-times "\\(IS\\)" 2 } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/wmul-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/wmul-2.c new file mode 100644 index 000000000..2f2d2527e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/wmul-2.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +void vec_mpy(int y[], const short x[], short scaler) +{ + int i; + + for (i = 0; i < 150; i++) + y[i] += ((scaler * x[i]) >> 31); +} + +/* { dg-final { scan-assembler-times "\\(IS\\)" 1 } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-1.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-1.c new file mode 100644 index 000000000..53ca1d7b7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-1.c @@ -0,0 +1,27 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcsync-anomaly -mcpu=bf537" } */ + +#ifndef __ADSPBF537__ +#error "__ADSPBF537__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0003 +#error "__SILICON_REVISION__ is not 0x0003" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-2.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-2.c new file mode 100644 index 000000000..c639a204e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-2.c @@ -0,0 +1,27 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mno-specld-anomaly -mcpu=bf537" } */ + +#ifndef __ADSPBF537__ +#error "__ADSPBF537__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0x0003 +#error "__SILICON_REVISION__ is not 0x0003" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-3.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-3.c new file mode 100644 index 000000000..3209f2348 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-3.c @@ -0,0 +1,27 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf537-none" } */ + +#ifndef __ADSPBF537__ +#error "__ADSPBF537__ is not defined" +#endif + +#ifdef __SILICON_REVISION__ +#error "__SILICON_REVISION__ is defined" +#endif + +#ifdef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is defined" +#endif + +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-4.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-4.c new file mode 100644 index 000000000..62bd382b7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-4.c @@ -0,0 +1,27 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf537-any" } */ + +#ifndef __ADSPBF537__ +#error "__ADSPBF537__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0xffff +#error "__SILICON_REVISION__ is not 0xffff" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-any.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-any.c new file mode 100644 index 000000000..62bd382b7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-any.c @@ -0,0 +1,27 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf537-any" } */ + +#ifndef __ADSPBF537__ +#error "__ADSPBF537__ is not defined" +#endif + +#if __SILICON_REVISION__ != 0xffff +#error "__SILICON_REVISION__ is not 0xffff" +#endif + +#ifndef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is not defined" +#endif + +#ifndef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is not defined" +#endif + +#ifndef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif diff --git a/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-none.c b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-none.c new file mode 100644 index 000000000..3209f2348 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/bfin/workarounds-none.c @@ -0,0 +1,27 @@ +/* Test for -mcpu=. */ +/* { dg-do preprocess } */ +/* { dg-bfin-options "-mcpu=bf537-none" } */ + +#ifndef __ADSPBF537__ +#error "__ADSPBF537__ is not defined" +#endif + +#ifdef __SILICON_REVISION__ +#error "__SILICON_REVISION__ is defined" +#endif + +#ifdef __WORKAROUNDS_ENABLED +#error "__WORKAROUNDS_ENABLED is defined" +#endif + +#ifdef __WORKAROUND_RETS +#error "__WORKAROUND_RETS is defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_LOADS +#error "__WORKAROUND_SPECULATIVE_LOADS is defined" +#endif + +#ifdef __WORKAROUND_SPECULATIVE_SYNCS +#error "__WORKAROUND_SPECULATIVE_SYNCS is defined" +#endif |