aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorgjl <>2012-02-28 09:00:15 +0000
committergjl <>2012-02-28 09:00:15 +0000
commitd924d0199a1714fef6e5b53b91c69203e4856270 (patch)
tree352495d1ab24c6aa3be628651c9eccfc5930891b /gcc
parent9b25ee2419ffa0af9f9f9ad832c57508a08331ba (diff)
* gcc.target/avr/torture/builtins-1.c: New test.
* gcc.target/avr/torture/builtins-error.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/builtins-1.c38
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/builtins-error.c11
3 files changed, 54 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fab88d9e33d..d1365a0e19d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-28 Georg-Johann Lay <avr@gjlay.de>
+
+ * gcc.target/avr/torture/builtins-1.c: New test.
+ * gcc.target/avr/torture/builtins-error.c: New test.
+
2012-02-28 Kai Tietz <ktietz@redhat.com>
* gcc.target/i386/pr46939.c (long): Fix LP64 vs LLP64
diff --git a/gcc/testsuite/gcc.target/avr/torture/builtins-1.c b/gcc/testsuite/gcc.target/avr/torture/builtins-1.c
new file mode 100644
index 00000000000..1fa3aaaaeb3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/avr/torture/builtins-1.c
@@ -0,0 +1,38 @@
+/* { dg-do compile } */
+
+void nop (void) { __builtin_avr_nop (); }
+void sei (void) { __builtin_avr_sei (); }
+void cli (void) { __builtin_avr_cli (); }
+void wdr (void) { __builtin_avr_wdr (); }
+void sleep (void) { __builtin_avr_sleep (); }
+
+char fmul (char a, char b) { return __builtin_avr_fmul (a, b); }
+char fmuls (char a, char b) { return __builtin_avr_fmuls (a, b); }
+char fmulsu (char a, char b) { return __builtin_avr_fmulsu (a, b); }
+
+char swap1 (char a)
+{
+ return __builtin_avr_swap (a+1);
+}
+
+char swap2 (char a)
+{
+ return __builtin_avr_swap (__builtin_avr_swap (a+1));
+}
+
+char swap15 (void)
+{
+ return __builtin_avr_swap (15);
+}
+
+void delay0 (void) { __builtin_avr_delay_cycles (0); }
+void delay1 (void) { __builtin_avr_delay_cycles (1); }
+void delay2 (void) { __builtin_avr_delay_cycles (2); }
+void delay3 (void) { __builtin_avr_delay_cycles (3); }
+
+void delay_1 (void) { __builtin_avr_delay_cycles (44); }
+void delay_2 (void) { __builtin_avr_delay_cycles (0x1234); }
+void delay_3 (void) { __builtin_avr_delay_cycles (0x123456); }
+void delay_4 (void) { __builtin_avr_delay_cycles (-1ul); }
+
+/* { dg-final { scan-assembler-not "__builtin_avr_" } } */
diff --git a/gcc/testsuite/gcc.target/avr/torture/builtins-error.c b/gcc/testsuite/gcc.target/avr/torture/builtins-error.c
new file mode 100644
index 00000000000..692b8afd859
--- /dev/null
+++ b/gcc/testsuite/gcc.target/avr/torture/builtins-error.c
@@ -0,0 +1,11 @@
+/* { dg-do assemble } */
+
+char insert (long a)
+{
+ return __builtin_avr_insert_bits (15.3f+a, 0, 0); /* { dg-error "expects a compile time" } */
+}
+
+void delay (long a)
+{
+ __builtin_avr_delay_cycles (a); /* { dg-error "expects a compile time" } */
+}