]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make use of the _byteswap_ushort() and _byteswap_ulong() compiler intrinsics for...
authormistachkin <mistachkin@noemail.net>
Tue, 30 Jun 2015 17:28:40 +0000 (17:28 +0000)
committermistachkin <mistachkin@noemail.net>
Tue, 30 Jun 2015 17:28:40 +0000 (17:28 +0000)
FossilOrigin-Name: fe144dd73f7097a17c24c7812c2a1cc40466e6da

manifest
manifest.uuid
src/btreeInt.h
src/sqliteInt.h
src/util.c

index 52ea7d278e61e2e0606e55e2856f3afd21a00c4f..79354ecfc48ccd8bda6fac4f4b19dc37077f3d3b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Make\suse\sof\sbuilt-in\sbswap32()\sand\sbswap16()\sfunctions\sin\sGCC/Clang\sfor\sa\nsignificant\sperformance\simprovement\sthere.
-D 2015-06-30T15:10:29.855
+C Make\suse\sof\sthe\s_byteswap_ushort()\sand\s_byteswap_ulong()\scompiler\sintrinsics\sfor\sMSVC,\swhen\savailable.
+D 2015-06-30T17:28:40.942
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 285a0a234ed7610d431d91671c136098c2bd86a9
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -271,7 +271,7 @@ F src/bitvec.c d1f21d7d91690747881f03940584f4cc548c9d3d
 F src/btmutex.c 45a968cc85afed9b5e6cf55bf1f42f8d18107f79
 F src/btree.c 3a535c0118872c3ee4e198b80a62d09315381dab
 F src/btree.h 969adc948e89e449220ff0ff724c94bb2a52e9f1
-F src/btreeInt.h 64b5723d8410a1f02c94d99c46b1b74cd547e6ef
+F src/btreeInt.h c54d380cb262549c4176e0d665518cc1a3861bdf
 F src/build.c b3f15255d5b16e42dafeaa638fd4f8a47c94ed70
 F src/callback.c 7b44ce59674338ad48b0e84e7b72f935ea4f68b0
 F src/complete.c addcd8160b081131005d5bc2d34adf20c1c5c92f
@@ -332,7 +332,7 @@ F src/shell.c 8af3cced094aebb5f57a8ad739b9dafc7867eed7
 F src/sqlite.h.in 76d2f5637eb795b6300d9dd3c3ec3632ffafd721
 F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
 F src/sqlite3ext.h be1a718b7d2ce40ceba725ae92c8eb5f18003066
-F src/sqliteInt.h cf643b5a34633de5d4703eba1e2b1a205af53c8a
+F src/sqliteInt.h bc2cb1755150fc0b490d1af23ac2911b03f2f92d
 F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46
 F src/status.c f266ad8a2892d659b74f0f50cb6a88b6e7c12179
 F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e
@@ -388,7 +388,7 @@ F src/treeview.c c84b1a8ebc7f1d00cd76ce4958eeb3ae1021beed
 F src/trigger.c 322f23aad694e8f31d384dcfa386d52a48d3c52f
 F src/update.c 487747b328b7216bb7f6af0695d6937d5c9e605f
 F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
-F src/util.c 89bfe78b4610d456ba431a0865309a20acc115f3
+F src/util.c 075c2878fb698bd387164047ecdf76f6cbacf402
 F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701
 F src/vdbe.c 5ee4a2bf871418f61d06dc256b9b3a0084b5ec46
 F src/vdbe.h 7a75045d879118b9d3af7e8b3c108f2f27c51473
@@ -1364,8 +1364,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P b406b20ecdf0bff63c5c222fab11cb9acee86765 ce8177e3e64d2ac4cd5d9e7757cdd5fcecd7d0ea
-R e9f634c6724f1e6a3b5c72453520bbb0
-T +closed ce8177e3e64d2ac4cd5d9e7757cdd5fcecd7d0ea
-U drh
-Z 3fa235f76195131887feff91c1f8744e
+P 8bfcda3d10aec864d71d12a1248c37e4db6f8899
+R 0b0302cb101be05314d04a740bd2104f
+U mistachkin
+Z 5b6957d403881561ab6dda74eaf3a043
index c16cd14878273dd72b7776454db630067aa6adfc..7e80d7fa9565114be1a18c8c9023e68006a12667 100644 (file)
@@ -1 +1 @@
-8bfcda3d10aec864d71d12a1248c37e4db6f8899
\ No newline at end of file
+fe144dd73f7097a17c24c7812c2a1cc40466e6da
\ No newline at end of file
index 74117848ac407043ffb966f6e90fcfffaddf3a77..d74ea5557f719e26a7cc4307db4733ffcf46f63e 100644 (file)
@@ -701,6 +701,8 @@ struct IntegrityCk {
 # define get2byteAligned(x)  (*(u16*)(x))
 #elif SQLITE_BYTEORDER==1234 && GCC_VERSION>=4008000
 # define get2byteAligned(x)  __builtin_bswap16(*(u16*)(x))
+#elif SQLITE_BYTEORDER==1234 && defined(_MSC_VER) && _MSC_VER>=1300
+# define get2byteAligned(x)  _byteswap_ushort(*(u16*)(x))
 #else
 # define get2byteAligned(x)  ((x)[0]<<8 | (x)[1])
 #endif
index 907434889d98ca25696f6a9f39f8d215f288b349..eaf433b7a18bfe4e1c0e53ed41f196fc0ea9d17e 100644 (file)
 #  define SQLITE_NOINLINE
 #endif
 
+/*
+** Make sure that the compiler intrinsics we desire are enabled when
+** compiling with an appropriate version of MSVC.
+*/
+#if defined(_MSC_VER) && _MSC_VER>=1300
+#  include <intrin.h>
+#  pragma intrinsic(_byteswap_ushort)
+#  pragma intrinsic(_byteswap_ulong)
+#endif
+
 /*
 ** The SQLITE_THREADSAFE macro must be defined as 0, 1, or 2.
 ** 0 means mutexes are permanently disable and the library is never
index 4e029b0e014827488d7706decfc6cd8a1031a6c0..bafa3cefa9b250221f3457f808c8d0a2f20f9a3a 100644 (file)
@@ -1086,6 +1086,10 @@ u32 sqlite3Get4byte(const u8 *p){
   u32 x;
   memcpy(&x,p,4);
   return __builtin_bswap32(x);
+#elif SQLITE_BYTEORDER==1234 && defined(_MSC_VER) && _MSC_VER>=1300
+  u32 x;
+  memcpy(&x,p,4);
+  return _byteswap_ulong(x);
 #else
   testcase( p[0]&0x80 );
   return ((unsigned)p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3];
@@ -1097,6 +1101,9 @@ void sqlite3Put4byte(unsigned char *p, u32 v){
 #elif SQLITE_BYTEORDER==1234 && defined(__GNUC__)
   u32 x = __builtin_bswap32(v);
   memcpy(p,&x,4);
+#elif SQLITE_BYTEORDER==1234 && defined(_MSC_VER) && _MSC_VER>=1300
+  u32 x = _byteswap_ulong(v);
+  memcpy(p,&x,4);
 #else
   p[0] = (u8)(v>>24);
   p[1] = (u8)(v>>16);