aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@gcc.gnu.org>2019-06-28 08:49:23 +0000
committerJan Beulich <jbeulich@gcc.gnu.org>2019-06-28 08:49:23 +0000
commit8662802d4924603981b20b3340cb31a098a48b51 (patch)
treeb9fe9d567dd07d7b5a8acc3a4a4a4d26a9acf50e
parentc1a106c222804416897c53f3c5dc8f028137151e (diff)
downloadgcc-8662802d4924603981b20b3340cb31a098a48b51.zip
gcc-8662802d4924603981b20b3340cb31a098a48b51.tar.gz
gcc-8662802d4924603981b20b3340cb31a098a48b51.tar.bz2
add file missing from earlier commit
From-SVN: r272781
-rw-r--r--gcc/testsuite/gcc.target/i386/cvtpd2pi.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/cvtpd2pi.c b/gcc/testsuite/gcc.target/i386/cvtpd2pi.c
new file mode 100644
index 0000000..cb043b8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/cvtpd2pi.c
@@ -0,0 +1,36 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2" } */
+
+typedef int __attribute__((vector_size(8))) v2si_t;
+typedef int __attribute__((vector_size(16))) v4si_t;
+typedef double __attribute__((vector_size(16))) v2df_t;
+
+struct __attribute__((packed)) s {
+ int i;
+ v2si_t m;
+ v4si_t v;
+};
+
+int test (struct s*ps)
+{
+ v4si_t r = ps->v;
+ v2si_t m;
+
+ if (ps->i > 0)
+ {
+ asm volatile ("" : "+m" (*ps));
+ m = __builtin_ia32_cvtpd2pi ((v2df_t)ps->v);
+ r[0] = __builtin_ia32_paddd (m, m)[0];
+ }
+ else
+ {
+ asm volatile ("" : "+m" (*ps));
+ m = __builtin_ia32_cvttpd2pi ((v2df_t)ps->v);
+ r[0] = __builtin_ia32_paddd (m, m)[0];
+ }
+
+ return r[0];
+}
+
+/* { dg-final { scan-assembler-not "cvtpd2pi\[ \t]\[^\n\r]*\\(" } } */
+/* { dg-final { scan-assembler-not "cvttpd2pi\[ \t]\[^\n\r]*\\(" } } */