diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2020-05-12 18:36:27 +0200 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2020-05-12 18:37:40 +0200 |
commit | 955b1f929906cabc5b17c40cbc7d767eebd64cc7 (patch) | |
tree | 15788167bde291349df9870a3079da26dd266a05 /gcc/testsuite | |
parent | fa31a3cdbf1571286671d8d3a83e31676862583e (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr95046-3.c | 42 |
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" } } */ |