aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2020-05-12 18:36:27 +0200
committerUros Bizjak <ubizjak@gmail.com>2020-05-12 18:37:40 +0200
commit955b1f929906cabc5b17c40cbc7d767eebd64cc7 (patch)
tree15788167bde291349df9870a3079da26dd266a05 /gcc/testsuite
parentfa31a3cdbf1571286671d8d3a83e31676862583e (diff)
downloadgcc-955b1f929906cabc5b17c40cbc7d767eebd64cc7.zip
gcc-955b1f929906cabc5b17c40cbc7d767eebd64cc7.tar.gz
gcc-955b1f929906cabc5b17c40cbc7d767eebd64cc7.tar.bz2
i386: Add V2SFmode FMA insn patterns [PR95046]
gcc/ChangeLog: PR target/95046 * config/i386/mmx.md (fmav2sf4): New insn pattern. (fmsv2sf4): Ditto. (fnmav2sf4): Ditto. (fnmsv2sf4): Ditto. testsuite/ChangeLog: PR target/95046 * gcc.target/i386/pr95046-3.c: New test.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95046-3.c42
2 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ac5bead..99ebf82 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -6,6 +6,11 @@
2020-05-12 Uroš Bizjak <ubizjak@gmail.com>
PR target/95046
+ * gcc.target/i386/pr95046-3.c: New test.
+
+2020-05-12 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95046
* gcc.target/i386/pr95046-2.c: New test.
2020-05-12 Jozef Lawrynowicz <jozef.l@mittosystems.com>
diff --git a/gcc/testsuite/gcc.target/i386/pr95046-3.c b/gcc/testsuite/gcc.target/i386/pr95046-3.c
new file mode 100644
index 0000000..7d15b39
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95046-3.c
@@ -0,0 +1,42 @@
+/* PR target/95046 */
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O3 -mfma" } */
+
+
+float r[2], a[2], b[2], c[2];
+
+void
+test_fma (void)
+{
+ for (int i = 0; i < 2; i++)
+ r[i] = a[i] * b[i] + c[i];
+}
+
+/* { dg-final { scan-assembler "\tvfmadd\[123\]+ps" } } */
+
+void
+test_fms (void)
+{
+ for (int i = 0; i < 2; i++)
+ r[i] = a[i] * b[i] - c[i];
+}
+
+/* { dg-final { scan-assembler "\tvfmsub\[123\]+ps" } } */
+
+void
+test_fnma (void)
+{
+ for (int i = 0; i < 2; i++)
+ r[i] = -(a[i] * b[i]) + c[i];
+}
+
+/* { dg-final { scan-assembler "\tvfnmadd\[123\]+ps" } } */
+
+void
+test_fnms (void)
+{
+ for (int i = 0; i < 2; i++)
+ r[i] = -(a[i] * b[i]) - c[i];
+}
+
+/* { dg-final { scan-assembler "\tvfnmsub\[123\]+ps" } } */