aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2020-05-14 13:47:33 +0200
committerUros Bizjak <ubizjak@gmail.com>2020-05-14 13:47:33 +0200
commit365e3cde4978c6a7dbfa50865720226254c016be (patch)
tree14752db76d0680b55bbda53a957b13b353e558f8 /gcc/testsuite/gcc.target
parent2c814af65ef9f146519cba657890a4fd93c5be38 (diff)
downloadgcc-365e3cde4978c6a7dbfa50865720226254c016be.zip
gcc-365e3cde4978c6a7dbfa50865720226254c016be.tar.gz
gcc-365e3cde4978c6a7dbfa50865720226254c016be.tar.bz2
i386: Add V2DFmode conversion functions [PR95046]
gcc/ChangeLog: PR target/95046 * config/i386/sse.md (sse2_cvtpi2pd): Add memory to alternative 1. (floatv2siv2df2): New expander. (floatunsv2siv2df2): New insn pattern. (fix_truncv2dfv2si2): New expander. (fixuns_truncv2dfv2si2): New insn pattern. testsuite/ChangeLog: PR target/95046 * gcc.target/i386/pr95046-6.c: New test.
Diffstat (limited to 'gcc/testsuite/gcc.target')
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95046-6.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/pr95046-6.c b/gcc/testsuite/gcc.target/i386/pr95046-6.c
new file mode 100644
index 0000000..dcc8999
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95046-6.c
@@ -0,0 +1,44 @@
+/* PR target/95046 */
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O3 -mavx512vl" } */
+
+
+double r[2];
+int s[2];
+unsigned int u[2];
+
+void
+test_float (void)
+{
+ for (int i = 0; i < 2; i++)
+ r[i] = s[i];
+}
+
+/* { dg-final { scan-assembler "\tvcvtdq2pd" } } */
+
+void
+test_ufloat (void)
+{
+ for (int i = 0; i < 2; i++)
+ r[i] = u[i];
+}
+
+/* { dg-final { scan-assembler "\tvcvtudq2pd" } } */
+
+void
+test_fix (void)
+{
+ for (int i = 0; i < 2; i++)
+ s[i] = r[i];
+}
+
+/* { dg-final { scan-assembler "\tvcvttpd2dqx" } } */
+
+void
+test_ufix (void)
+{
+ for (int i = 0; i < 2; i++)
+ u[i] = r[i];
+}
+
+/* { dg-final { scan-assembler "\tvcvttpd2udqx" } } */