diff options
author | Cesar Philippidis <cesar@codesourcery.com> | 2018-09-17 12:59:19 -0700 |
---|---|---|
committer | Cesar Philippidis <cesar@gcc.gnu.org> | 2018-09-17 12:59:19 -0700 |
commit | 69d7aabfd8fec442047cefb136b1fd2680310fa9 (patch) | |
tree | 5ff611e01425f26733751c7a92913a171d0ee51d /gcc | |
parent | fa540cecf5553ab3af9d127a3c7ed3ac901ef0fb (diff) | |
download | gcc-69d7aabfd8fec442047cefb136b1fd2680310fa9.zip gcc-69d7aabfd8fec442047cefb136b1fd2680310fa9.tar.gz gcc-69d7aabfd8fec442047cefb136b1fd2680310fa9.tar.bz2 |
[nvptx] Add atomic_fetch* support for SImode arguments.
gcc/
* config/nvptx/nvptx.md (atomic_fetch_<logic><mode>): Enable with
SImode args.
gcc/testsuite/
* gcc.target/nvptx/atomic-fetch-2.c: Rename to ...
* gcc.target/nvptx/atomic_fetch-2.c: ... this.
* gcc.target/nvptx/atomic_fetch-3.c: New test.
Co-Authored-By: Bernd Schmidt <bernds_cb1@t-online.de>
From-SVN: r264371
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/nvptx/nvptx.md | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/atomic_fetch-2.c (renamed from gcc/testsuite/gcc.target/nvptx/atomic-fetch-2.c) | 0 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/atomic_fetch-3.c | 24 |
5 files changed, 38 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a9e0589..017aa64 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-09-17 Cesar Philippidis <cesar@codesourcery.com> + Bernd Schmidt <bernds_cb1@t-online.de> + + * config/nvptx/nvptx.md (atomic_fetch_<logic><mode>): Enable with + SImode args. + 2018-09-17 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (truncxf<mode>2_i387_noop_unspec): Change diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md index dd6032d..ca00b1d 100644 --- a/gcc/config/nvptx/nvptx.md +++ b/gcc/config/nvptx/nvptx.md @@ -1449,7 +1449,7 @@ UNSPECV_LOCK)) (set (match_operand:SDIM 0 "nvptx_register_operand" "=R") (match_dup 1))] - "TARGET_SM35" + "<MODE>mode == SImode || TARGET_SM35" "%.\\tatom%A1.b%T0.<logic>\\t%0, %1, %2;" [(set_attr "atomic" "true")]) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5cce863..ddf5f73 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2018-09-17 Cesar Philippidis <cesar@codesourcery.com> + Bernd Schmidt <bernds_cb1@t-online.de> + + * gcc.target/nvptx/atomic-fetch-2.c: Rename to ... + * gcc.target/nvptx/atomic_fetch-2.c: ... this. + * gcc.target/nvptx/atomic_fetch-3.c: New test. + 2018-09-17 Richard Biener <rguenther@suse.de> PR tree-optimization/87328 diff --git a/gcc/testsuite/gcc.target/nvptx/atomic-fetch-2.c b/gcc/testsuite/gcc.target/nvptx/atomic_fetch-2.c index 1d35a17..1d35a17 100644 --- a/gcc/testsuite/gcc.target/nvptx/atomic-fetch-2.c +++ b/gcc/testsuite/gcc.target/nvptx/atomic_fetch-2.c diff --git a/gcc/testsuite/gcc.target/nvptx/atomic_fetch-3.c b/gcc/testsuite/gcc.target/nvptx/atomic_fetch-3.c new file mode 100644 index 0000000..36a83eb --- /dev/null +++ b/gcc/testsuite/gcc.target/nvptx/atomic_fetch-3.c @@ -0,0 +1,24 @@ +/* Test the nvptx atomic instructions for __atomic_fetch_OP for + SImode arguments. */ + +/* { dg-do compile } */ +/* { dg-options "-O2 -m32" } */ + +int +main() +{ + unsigned long a = ~0; + unsigned b = 0xa; + + __atomic_fetch_add (&a, b, 0); + __atomic_fetch_and (&a, b, 0); + __atomic_fetch_or (&a, b, 0); + __atomic_fetch_xor (&a, b, 0); + + return a; +} + +/* { dg-final { scan-assembler "atom.add.u32" } } */ +/* { dg-final { scan-assembler "atom.b32.and" } } */ +/* { dg-final { scan-assembler "atom.b32.or" } } */ +/* { dg-final { scan-assembler "atom.b32.xor" } } */ |