diff options
author | Ian Bolton <ian.bolton@arm.com> | 2012-11-22 15:50:30 +0000 |
---|---|---|
committer | Ian Bolton <ibolton@gcc.gnu.org> | 2012-11-22 15:50:30 +0000 |
commit | c16c63bb99a820721467df46ad97a948c1e520c6 (patch) | |
tree | bc80a7758e96cb8edecf3c19a25c6f7da688ab0b /gcc | |
parent | 10dbfb3eb052e620e307acc774b07bc92e9bbc9b (diff) | |
download | gcc-c16c63bb99a820721467df46ad97a948c1e520c6.zip gcc-c16c63bb99a820721467df46ad97a948c1e520c6.tar.gz gcc-c16c63bb99a820721467df46ad97a948c1e520c6.tar.bz2 |
Implement bswaphi2 with rev16 (AArch64)
From-SVN: r193729
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.md | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/builtin-bswap-1.c | 18 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/builtin-bswap-2.c | 18 |
5 files changed, 54 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 63cb4f5..d0ede90 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2012-11-22 Ian Bolton <ian.bolton@arm.com> + + * config/aarch64/aarch64.md (bswaphi2): New pattern. + 2012-11-22 H.J. Lu <hongjiu.lu@intel.com> PR sanitizer/55379 diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 5c96c89..17f024f 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -2312,6 +2312,15 @@ (set_attr "mode" "<MODE>")] ) +(define_insn "bswaphi2" + [(set (match_operand:HI 0 "register_operand" "=r") + (bswap:HI (match_operand:HI 1 "register_operand" "r")))] + "" + "rev16\\t%w0, %w1" + [(set_attr "v8type" "rev") + (set_attr "mode" "HI")] +) + ;; ------------------------------------------------------------------- ;; Floating-point intrinsics ;; ------------------------------------------------------------------- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 382affd..788266f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-11-22 Ian Bolton <ian.bolton@arm.com> + + * gcc.target/aarch64/builtin-bswap-1.c: New test. + * gcc.target/aarch64/builtin-bswap-2.c: New test. + 2012-11-22 Paolo Carlini <paolo.carlini@oracle.com> PR c++/55432 diff --git a/gcc/testsuite/gcc.target/aarch64/builtin-bswap-1.c b/gcc/testsuite/gcc.target/aarch64/builtin-bswap-1.c new file mode 100644 index 0000000..a6706e6 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/builtin-bswap-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +/* { dg-final { scan-assembler-times "rev16\\t" 2 } } */ + +/* rev16 */ +short +swaps16 (short x) +{ + return __builtin_bswap16 (x); +} + +/* rev16 */ +unsigned short +swapu16 (unsigned short x) +{ + return __builtin_bswap16 (x); +} diff --git a/gcc/testsuite/gcc.target/aarch64/builtin-bswap-2.c b/gcc/testsuite/gcc.target/aarch64/builtin-bswap-2.c new file mode 100644 index 0000000..6018b48 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/builtin-bswap-2.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +/* { dg-final { scan-assembler-times "rev16\\t" 2 } } */ + +/* rev16 */ +unsigned short +swapu16_1 (unsigned short x) +{ + return (x << 8) | (x >> 8); +} + +/* rev16 */ +unsigned short +swapu16_2 (unsigned short x) +{ + return (x >> 8) | (x << 8); +} |