--- - branch: MAIN date: Tue Jul 31 06:34:11 UTC 2018 files: - new: '1.4' old: '1.3' path: pkgsrc/math/djbsort/Makefile pathrev: pkgsrc/math/djbsort/Makefile@1.4 type: modified - new: '1.3' old: '1.2' path: pkgsrc/math/djbsort/distinfo pathrev: pkgsrc/math/djbsort/distinfo@1.3 type: modified - new: '1.2' old: '1.1' path: pkgsrc/math/djbsort/pseudo-PLIST pathrev: pkgsrc/math/djbsort/pseudo-PLIST@1.2 type: modified id: 20180731T063411Z.10097fe01ff685c36c50295f9f1f0bbab1418bb9 log: "Update to 20180729. From the changelog:\n\nAlgorithm\n\nRewrite of the core int32/avx2 implementation for (1) higher speed and\n(2) reduced memory consumption. Stack allocation is now at most a few\nkilobytes, even for gigantic arrays.\n\nInternally, the sorting algorithm is now mostly bitonic to simplify\nindexing, although odd-even speedups are still applied when\nconvenient. Lanes are complemented to take the down-up decision out of\nthe inner loops.\n\nAs in previous djbsort versions, data is sorted first in vector lanes\nand then transposed for final merges, reducing the overall number of\nvector permutations. Unlike previous versions, transposition is done\nin-place. The transposition in this version is bit-reversal on the outer\n6 bits (bottom 3 bits and the top 3 bits), but leaves intermediate bits\nalone. Non-power-of-2 array sizes are handled by an extra, more\ntraditional, merge step.\n\nSizes 2, 3, 4, 5, 6, 7, 8, 16, 32 are now special-cased. Non-power-of-2\nsizes below 256 are padded to the next power of 2.\n\nPortable implementations: The out-of-place int32/portable1 and\nint32/portable2 implementations are now gone; the in-place\nint32/portable3 and int32/portable4 implementations remain.\n\nC API\n\nfloat32_sort is now supported. The arithmetic in the reduction from\nfloat32 to int32 is int32 31-bit right shift, uint32 1-bit right shift,\nxor; this is slightly more efficient than the reduction from float32 to\nuint32 from 2001 Herf.\n\nCompiling\n\nTests now have more variation (without much slowdown): the uint32 test\ncases now deviate from int32 in more than the sign; float32 uses\nfloating-point numbers that aren't integers; int32 does more loops for\nsmall cases, and some larger cases.\n\nInternals\n\nAPI for 2-input sorting is now MINMAX macro operating on two\ninputs in place.\n\nBetter inline assembly from Jason Donenfeld for 2-input sorting: more\nflexibility in compiler's register allocation.\n\nThe package version number is now automatically copied to version.c as\nthe implementation version number for implementations that don't provide\nversion.c.\n\nVerification\n\nminmax now supports more peephole optimizations for complemented bitonic\nsorting and for padding: xor(s,xor(s,t)) â\x87\x92 t; xor(-1,s) â\x87\x92 invert(s);\nReverse(Reverse(s)) â\x87\x92 s; signedmin(invert(s),invert(t)) â\x87\x92\ninvert(signedmax(s,t)); signedmax(invert(s),invert(t)) â\x87\x92\ninvert(signedmin(s,t)); invert(s)[high:low] â\x87\x92 invert(s[high:low]);\ns[bits-1:0] â\x87\x92 s; s[high:low][high2:low2] â\x87\x92 s[high2+low:low2+low];\nConcat(...)[high:low] â\x87\x92 ...[high-pos:low-pos] when possible;\nReverse(s)[high:low] â\x87\x92 Reverse(s[...]) when possible; eliminate\nsignedmin/signedmax when one input is the minimum or maximum constant.\n\nverifymany now includes the implementation version number on\nverified lines.\n" module: pkgsrc subject: 'CVS commit: pkgsrc/math/djbsort' unixtime: '1533018851' user: schmonz