aboutsummaryrefslogtreecommitdiffstats
path: root/cfrontend/C2C.ml
diff options
context:
space:
mode:
authorBernhard Schommer <bschommer@users.noreply.github.com>2019-08-12 16:16:10 +0200
committerXavier Leroy <xavierleroy@users.noreply.github.com>2019-08-12 16:16:10 +0200
commit040d9c67942c73d875eec9a2ab131fbae6e8f984 (patch)
tree13a98dd663fb8b7a7824d3fc629a9ab2e9301e98 /cfrontend/C2C.ml
parent2ce5e496b8d4c838c87c9f00a84ed23d1abc26fc (diff)
downloadcompcert-kvx-040d9c67942c73d875eec9a2ab131fbae6e8f984.tar.gz
compcert-kvx-040d9c67942c73d875eec9a2ab131fbae6e8f984.zip
bswap builtins: give semantics to them, support bswap64 on all targets
* Added semantic for byte swap builtins The `__builtin_bswap`, `__builtin_bswap16`, `__builtin_bswap32`, `__builtin_bswap64` builtin function are now standard builtin functions with a defined semantics. The semantics is given in terms of the decode/encode functions used for the memory model. * Added bswap64 expansion to PowerPC 32 bits. * Added bswap64 expansion for ARM.
Diffstat (limited to 'cfrontend/C2C.ml')
-rw-r--r--cfrontend/C2C.ml4
1 files changed, 3 insertions, 1 deletions
diff --git a/cfrontend/C2C.ml b/cfrontend/C2C.ml
index 2e6bbe67..c1dfa9f4 100644
--- a/cfrontend/C2C.ml
+++ b/cfrontend/C2C.ml
@@ -161,7 +161,9 @@ let builtins_generic = {
@
[
(* Integer arithmetic *)
- "__builtin_bswap",
+ "__builtin_bswap64",
+ (TInt(IULongLong, []), [TInt(IULongLong, [])], false);
+ "__builtin_bswap",
(TInt(IUInt, []), [TInt(IUInt, [])], false);
"__builtin_bswap32",
(TInt(IUInt, []), [TInt(IUInt, [])], false);