diff options
author | Max Filippov <jcmvbkbc@gmail.com> | 2020-12-20 02:23:12 -0800 |
---|---|---|
committer | Max Filippov <jcmvbkbc@gmail.com> | 2020-12-20 14:02:26 -0800 |
commit | 18e86fae2a14f78e70aae06afce6bb9853068bb1 (patch) | |
tree | 2d06b0068acea1f9ec4a2164a6b2a3b358eb045b /libgcc | |
parent | 3621a7bb5795ad4e47b30e1a8a06f1abe2b3b036 (diff) | |
download | gcc-18e86fae2a14f78e70aae06afce6bb9853068bb1.zip gcc-18e86fae2a14f78e70aae06afce6bb9853068bb1.tar.gz gcc-18e86fae2a14f78e70aae06afce6bb9853068bb1.tar.bz2 |
gcc: xtensa: implement bswapsi2, bswapdi2 and helpers
2020-12-20 Max Filippov <jcmvbkbc@gmail.com>
gcc/
* config/xtensa/xtensa.md (bswapsi2, bswapdi2): New patterns.
gcc/testsuite/
* gcc.target/xtensa/bswap.c: New test.
libgcc/
* config/xtensa/lib1funcs.S (__bswapsi2, __bswapdi2): New
functions.
* config/xtensa/t-xtensa (LIB1ASMFUNCS): Add _bswapsi2 and
_bswapdi2.
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/config/xtensa/lib1funcs.S | 39 | ||||
-rw-r--r-- | libgcc/config/xtensa/t-xtensa | 1 |
2 files changed, 40 insertions, 0 deletions
diff --git a/libgcc/config/xtensa/lib1funcs.S b/libgcc/config/xtensa/lib1funcs.S index 77e7888..b19deae 100644 --- a/libgcc/config/xtensa/lib1funcs.S +++ b/libgcc/config/xtensa/lib1funcs.S @@ -840,5 +840,44 @@ __lshrdi3: #endif /* L_lshrdi3 */ +#ifdef L_bswapsi2 + .align 4 + .global __bswapsi2 + .type __bswapsi2, @function +__bswapsi2: + leaf_entry sp, 16 + ssai 8 + srli a3, a2, 16 + src a3, a3, a2 + src a3, a3, a3 + src a2, a2, a3 + leaf_return + .size __bswapsi2, . - __bswapsi2 + +#endif /* L_bswapsi2 */ + + +#ifdef L_bswapdi2 + .align 4 + .global __bswapdi2 + .type __bswapdi2, @function +__bswapdi2: + leaf_entry sp, 16 + ssai 8 + srli a4, a2, 16 + src a4, a4, a2 + src a4, a4, a4 + src a4, a2, a4 + srli a2, a3, 16 + src a2, a2, a3 + src a2, a2, a2 + src a2, a3, a2 + mov a3, a4 + leaf_return + .size __bswapdi2, . - __bswapdi2 + +#endif /* L_bswapdi2 */ + + #include "ieee754-df.S" #include "ieee754-sf.S" diff --git a/libgcc/config/xtensa/t-xtensa b/libgcc/config/xtensa/t-xtensa index 90df5f1..9836c96 100644 --- a/libgcc/config/xtensa/t-xtensa +++ b/libgcc/config/xtensa/t-xtensa @@ -2,6 +2,7 @@ LIB1ASMSRC = xtensa/lib1funcs.S LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 _udivsi3 _umodsi3 \ _umulsidi3 _clz _clzsi2 _ctzsi2 _ffssi2 \ _ashldi3 _ashrdi3 _lshrdi3 \ + _bswapsi2 _bswapdi2 \ _negsf2 _addsubsf3 _mulsf3 _divsf3 _cmpsf2 _fixsfsi _fixsfdi \ _fixunssfsi _fixunssfdi _floatsisf _floatunsisf \ _sqrtf _recipsf2 _rsqrtsf2 \ |