Skip to content

Commit

Permalink
Upgrade to clang-14 (#2)
Browse files Browse the repository at this point in the history
* Upgrade to clang-14

* update benchmarks
  • Loading branch information
kelindar committed Jun 5, 2022
1 parent c9b6286 commit 722a855
Show file tree
Hide file tree
Showing 3 changed files with 3,506 additions and 2,545 deletions.
365 changes: 182 additions & 183 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,207 +30,206 @@ pkg: github.com/kelindar/simd
cpu: Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz

TYPE OP SIZE RATE SPEEDUP
float32 sum 256 8.86 ns/op 20.54x
float32 min 256 27.57 ns/op 4.15x
float32 max 256 27.65 ns/op 4.07x
float32 add 256 15.35 ns/op 7.43x
float32 sub 256 15.31 ns/op 7.44x
float32 mul 256 15.39 ns/op 7.39x
float32 div 256 27.60 ns/op 5.90x
float32 sum 4096 107.74 ns/op 31.65x
float32 min 4096 133.08 ns/op 12.89x
float32 max 4096 140.77 ns/op 12.26x
float32 add 4096 373.34 ns/op 4.71x
float32 sub 4096 389.79 ns/op 4.40x
float32 mul 4096 369.63 ns/op 4.69x
float32 div 4096 457.12 ns/op 5.65x
float32 sum 16384 466.87 ns/op 29.47x
float32 min 16384 504.66 ns/op 13.64x
float32 max 16384 515.63 ns/op 13.33x
float32 add 16384 1422.20 ns/op 4.88x
float32 sub 16384 1414.59 ns/op 4.86x
float32 mul 16384 1426.91 ns/op 4.84x
float32 div 16384 1847.74 ns/op 5.54x
float32 sum 256 8.96 ns/op 20.51x
float32 min 256 27.78 ns/op 4.15x
float32 max 256 25.94 ns/op 4.43x
float32 add 256 15.31 ns/op 7.46x
float32 sub 256 15.48 ns/op 7.34x
float32 mul 256 15.36 ns/op 7.54x
float32 div 256 27.88 ns/op 5.79x
float32 sum 4096 107.92 ns/op 31.60x
float32 min 4096 134.06 ns/op 13.01x
float32 max 4096 133.90 ns/op 12.94x
float32 add 4096 353.01 ns/op 4.90x
float32 sub 4096 353.62 ns/op 4.92x
float32 mul 4096 353.64 ns/op 4.87x
float32 div 4096 455.60 ns/op 5.68x
float32 sum 16384 469.18 ns/op 29.44x
float32 min 16384 497.91 ns/op 13.94x
float32 max 16384 500.43 ns/op 13.84x
float32 add 16384 1442.28 ns/op 4.82x
float32 sub 16384 1366.98 ns/op 5.07x
float32 mul 16384 1382.20 ns/op 4.97x
float32 div 16384 1821.82 ns/op 5.71x

TYPE OP SIZE RATE SPEEDUP
float64 sum 256 14.28 ns/op 13.01x
float64 min 256 24.58 ns/op 4.73x
float64 max 256 24.28 ns/op 3.77x
float64 add 256 25.44 ns/op 4.50x
float64 sub 256 25.40 ns/op 4.44x
float64 mul 256 25.66 ns/op 4.47x
float64 div 256 107.58 ns/op 2.01x
float64 sum 4096 217.11 ns/op 15.64x
float64 min 4096 237.68 ns/op 7.21x
float64 max 4096 238.10 ns/op 5.68x
float64 add 4096 779.90 ns/op 2.33x
float64 sub 4096 752.78 ns/op 2.31x
float64 mul 4096 737.30 ns/op 2.43x
float64 div 4096 1735.34 ns/op 1.98x
float64 sum 16384 922.49 ns/op 15.07x
float64 min 16384 989.75 ns/op 6.98x
float64 max 16384 1017.51 ns/op 5.42x
float64 add 16384 5987.32 ns/op 1.42x
float64 sub 16384 5383.73 ns/op 1.50x
float64 mul 16384 5674.55 ns/op 1.44x
float64 div 16384 7063.43 ns/op 2.00x
float64 sum 256 14.56 ns/op 12.61x
float64 min 256 24.51 ns/op 4.73x
float64 max 256 24.61 ns/op 3.71x
float64 add 256 25.81 ns/op 4.42x
float64 sub 256 25.84 ns/op 4.41x
float64 mul 256 25.66 ns/op 4.45x
float64 div 256 109.60 ns/op 1.97x
float64 sum 4096 220.98 ns/op 15.51x
float64 min 4096 229.76 ns/op 7.62x
float64 max 4096 227.68 ns/op 5.86x
float64 add 4096 707.07 ns/op 2.44x
float64 sub 4096 716.65 ns/op 2.45x
float64 mul 4096 699.45 ns/op 2.50x
float64 div 4096 1726.40 ns/op 2.01x
float64 sum 16384 930.43 ns/op 14.77x
float64 min 16384 930.08 ns/op 7.45x
float64 max 16384 938.31 ns/op 5.81x
float64 add 16384 5522.65 ns/op 1.45x
float64 sub 16384 5433.96 ns/op 1.55x
float64 mul 16384 5564.75 ns/op 1.51x
float64 div 16384 6913.10 ns/op 2.01x

TYPE OP SIZE RATE SPEEDUP
uint8 sum 100 35.63 ns/op 1.02x
uint8 min 100 23.77 ns/op 2.17x
uint8 max 100 29.69 ns/op 1.59x
uint8 add 100 37.46 ns/op 1.41x
uint8 sub 100 36.63 ns/op 1.45x
uint8 mul 100 9.42 ns/op 8.03x
uint8 div 100 193.95 ns/op 1.14x
uint8 sum 100 5.94 ns/op 6.34x
uint8 min 100 7.09 ns/op 7.31x
uint8 max 100 7.82 ns/op 6.25x
uint8 add 100 9.13 ns/op 5.76x
uint8 sub 100 9.11 ns/op 5.73x
uint8 mul 100 11.15 ns/op 6.37x
uint8 div 100 186.89 ns/op 1.17x

TYPE OP SIZE RATE SPEEDUP
uint16 sum 256 6.24 ns/op 13.95x
uint16 min 256 29.83 ns/op 5.49x
uint16 max 256 43.57 ns/op 2.54x
uint16 add 256 10.30 ns/op 17.19x
uint16 sub 256 10.29 ns/op 16.14x
uint16 mul 256 10.36 ns/op 16.57x
uint16 div 256 440.84 ns/op 1.27x
uint16 sum 4096 42.39 ns/op 30.41x
uint16 min 4096 79.48 ns/op 32.70x
uint16 max 4096 95.83 ns/op 18.66x
uint16 add 4096 90.78 ns/op 29.94x
uint16 sub 4096 87.41 ns/op 29.95x
uint16 mul 4096 86.62 ns/op 29.73x
uint16 div 4096 6867.75 ns/op 1.28x
uint16 sum 16384 155.46 ns/op 32.00x
uint16 min 16384 246.67 ns/op 42.19x
uint16 max 16384 262.69 ns/op 26.06x
uint16 add 16384 739.30 ns/op 14.01x
uint16 sub 16384 721.78 ns/op 14.33x
uint16 mul 16384 787.84 ns/op 12.89x
uint16 div 16384 26838.80 ns/op 1.28x
uint16 sum 256 6.13 ns/op 13.19x
uint16 min 256 10.00 ns/op 15.94x
uint16 max 256 11.11 ns/op 9.58x
uint16 add 256 10.04 ns/op 16.83x
uint16 sub 256 10.07 ns/op 16.77x
uint16 mul 256 10.45 ns/op 16.26x
uint16 div 256 438.34 ns/op 1.26x
uint16 sum 4096 38.15 ns/op 32.42x
uint16 min 4096 57.84 ns/op 44.50x
uint16 max 4096 58.61 ns/op 29.17x
uint16 add 4096 86.01 ns/op 30.29x
uint16 sub 4096 91.34 ns/op 30.54x
uint16 mul 4096 89.25 ns/op 29.65x
uint16 div 4096 7203.14 ns/op 1.26x
uint16 sum 16384 148.55 ns/op 34.66x
uint16 min 16384 231.87 ns/op 44.76x
uint16 max 16384 227.01 ns/op 31.32x
uint16 add 16384 722.47 ns/op 14.60x
uint16 sub 16384 737.93 ns/op 14.21x
uint16 mul 16384 711.59 ns/op 14.84x
uint16 div 16384 28084.66 ns/op 1.24x

TYPE OP SIZE RATE SPEEDUP
uint32 sum 256 7.94 ns/op 10.47x
uint32 min 256 22.62 ns/op 6.96x
uint32 max 256 25.75 ns/op 4.20x
uint32 add 256 14.72 ns/op 8.31x
uint32 sub 256 14.80 ns/op 8.32x
uint32 mul 256 15.93 ns/op 7.52x
uint32 div 256 419.09 ns/op 1.30x
uint32 sum 4096 74.25 ns/op 16.59x
uint32 min 4096 119.60 ns/op 21.61x
uint32 max 4096 125.50 ns/op 13.67x
uint32 add 4096 382.51 ns/op 5.09x
uint32 sub 4096 369.66 ns/op 5.27x
uint32 mul 4096 376.69 ns/op 4.82x
uint32 div 4096 6611.42 ns/op 1.30x
uint32 sum 16384 470.78 ns/op 10.45x
uint32 min 16384 509.34 ns/op 20.05x
uint32 max 16384 509.63 ns/op 14.20x
uint32 add 16384 1430.07 ns/op 5.62x
uint32 sub 16384 1470.22 ns/op 5.37x
uint32 mul 16384 1469.16 ns/op 5.45x
uint32 div 16384 26749.18 ns/op 1.31x
uint32 sum 256 8.06 ns/op 10.39x
uint32 min 256 22.96 ns/op 6.96x
uint32 max 256 26.21 ns/op 4.12x
uint32 add 256 15.91 ns/op 8.18x
uint32 sub 256 15.49 ns/op 7.98x
uint32 mul 256 16.81 ns/op 7.40x
uint32 div 256 436.08 ns/op 1.29x
uint32 sum 4096 75.90 ns/op 16.47x
uint32 min 4096 120.89 ns/op 21.54x
uint32 max 4096 125.33 ns/op 13.76x
uint32 add 4096 380.00 ns/op 5.16x
uint32 sub 4096 345.19 ns/op 5.69x
uint32 mul 4096 367.35 ns/op 4.91x
uint32 div 4096 6695.04 ns/op 1.29x
uint32 sum 16384 462.89 ns/op 10.85x
uint32 min 16384 475.29 ns/op 21.98x
uint32 max 16384 481.76 ns/op 14.43x
uint32 add 16384 1437.51 ns/op 5.49x
uint32 sub 16384 1427.22 ns/op 5.57x
uint32 mul 16384 1367.51 ns/op 5.71x
uint32 div 16384 26786.72 ns/op 1.30x

TYPE OP SIZE RATE SPEEDUP
uint64 sum 256 12.16 ns/op 9.29x
uint64 min 256 41.61 ns/op 3.80x
uint64 max 256 44.33 ns/op 2.59x
uint64 add 256 24.87 ns/op 4.95x
uint64 sub 256 24.85 ns/op 4.95x
uint64 mul 256 50.84 ns/op 2.35x
uint64 div 256 1241.17 ns/op 1.21x
uint64 sum 4096 142.52 ns/op 11.94x
uint64 min 4096 502.09 ns/op 5.15x
uint64 max 4096 501.85 ns/op 3.43x
uint64 add 4096 736.55 ns/op 2.66x
uint64 sub 4096 768.94 ns/op 2.59x
uint64 mul 4096 899.77 ns/op 2.24x
uint64 div 4096 19940.91 ns/op 1.21x
uint64 sum 16384 976.09 ns/op 7.30x
uint64 min 16384 2107.63 ns/op 5.02x
uint64 max 16384 2123.41 ns/op 3.33x
uint64 add 16384 5605.09 ns/op 1.53x
uint64 sub 16384 5382.83 ns/op 1.57x
uint64 mul 16384 5934.57 ns/op 1.43x
uint64 div 16384 79974.54 ns/op 1.18x
uint64 sum 256 12.35 ns/op 9.18x
uint64 min 256 41.42 ns/op 3.84x
uint64 max 256 44.52 ns/op 2.55x
uint64 add 256 24.86 ns/op 4.92x
uint64 sub 256 25.35 ns/op 4.82x
uint64 mul 256 50.52 ns/op 2.37x
uint64 div 256 1250.57 ns/op 1.18x
uint64 sum 4096 145.98 ns/op 11.78x
uint64 min 4096 507.57 ns/op 5.11x
uint64 max 4096 508.87 ns/op 3.42x
uint64 add 4096 701.61 ns/op 2.79x
uint64 sub 4096 719.04 ns/op 2.74x
uint64 mul 4096 881.98 ns/op 2.18x
uint64 div 4096 20114.02 ns/op 1.18x
uint64 sum 16384 930.65 ns/op 7.44x
uint64 min 16384 2059.33 ns/op 5.08x
uint64 max 16384 2071.32 ns/op 3.34x
uint64 add 16384 6001.34 ns/op 1.45x
uint64 sub 16384 5713.91 ns/op 1.52x
uint64 mul 16384 6147.43 ns/op 1.44x
uint64 div 16384 80476.33 ns/op 1.17x

TYPE OP SIZE RATE SPEEDUP
int8 sum 100 35.60 ns/op 1.01x
int8 min 100 24.12 ns/op 2.10x
int8 max 100 24.06 ns/op 1.96x
int8 add 100 35.74 ns/op 1.45x
int8 sub 100 36.45 ns/op 1.43x
int8 mul 100 9.42 ns/op 7.55x
int8 div 100 203.37 ns/op 1.46x
int8 sum 100 5.89 ns/op 6.18x
int8 min 100 7.51 ns/op 6.81x
int8 max 100 7.46 ns/op 6.33x
int8 add 100 9.10 ns/op 5.74x
int8 sub 100 9.13 ns/op 5.75x
int8 mul 100 10.97 ns/op 6.46x
int8 div 100 480.25 ns/op 0.63x

TYPE OP SIZE RATE SPEEDUP
int16 sum 256 6.11 ns/op 13.56x
int16 min 256 30.70 ns/op 3.43x
int16 max 256 29.39 ns/op 3.66x
int16 add 256 9.81 ns/op 17.06x
int16 sub 256 9.84 ns/op 17.05x
int16 mul 256 10.21 ns/op 16.58x
int16 div 256 489.38 ns/op 1.55x
int16 sum 4096 37.85 ns/op 32.80x
int16 min 4096 79.82 ns/op 21.40x
int16 max 4096 78.70 ns/op 21.86x
int16 add 4096 85.27 ns/op 30.57x
int16 sub 4096 84.76 ns/op 30.43x
int16 mul 4096 88.35 ns/op 29.32x
int16 div 4096 7896.65 ns/op 1.51x
int16 sum 16384 152.95 ns/op 32.75x
int16 min 16384 243.98 ns/op 28.40x
int16 max 16384 245.85 ns/op 27.93x
int16 add 16384 783.82 ns/op 13.01x
int16 sub 16384 740.70 ns/op 14.02x
int16 mul 16384 736.79 ns/op 14.00x
int16 div 16384 31574.74 ns/op 1.53x
int16 sum 256 6.20 ns/op 13.04x
int16 min 256 10.80 ns/op 9.77x
int16 max 256 10.13 ns/op 10.53x
int16 add 256 9.99 ns/op 16.97x
int16 sub 256 10.00 ns/op 17.03x
int16 mul 256 10.47 ns/op 16.24x
int16 div 256 499.02 ns/op 1.53x
int16 sum 4096 37.97 ns/op 32.87x
int16 min 4096 59.55 ns/op 29.15x
int16 max 4096 58.42 ns/op 29.54x
int16 add 4096 85.73 ns/op 30.27x
int16 sub 4096 86.22 ns/op 30.07x
int16 mul 4096 86.61 ns/op 30.00x
int16 div 4096 7936.80 ns/op 1.52x
int16 sum 16384 144.40 ns/op 34.61x
int16 min 16384 226.17 ns/op 30.59x
int16 max 16384 222.39 ns/op 30.90x
int16 add 16384 708.78 ns/op 14.55x
int16 sub 16384 722.46 ns/op 14.33x
int16 mul 16384 715.68 ns/op 14.49x
int16 div 16384 31537.05 ns/op 1.52x

TYPE OP SIZE RATE SPEEDUP
int32 sum 256 7.92 ns/op 10.50x
int32 min 256 21.82 ns/op 4.82x
int32 max 256 22.71 ns/op 4.65x
int32 add 256 14.98 ns/op 8.25x
int32 sub 256 14.91 ns/op 8.22x
int32 mul 256 15.95 ns/op 7.54x
int32 div 256 488.63 ns/op 1.38x
int32 sum 4096 74.84 ns/op 16.85x
int32 min 4096 119.84 ns/op 14.27x
int32 max 4096 119.55 ns/op 14.33x
int32 add 4096 383.44 ns/op 5.07x
int32 sub 4096 373.52 ns/op 5.20x
int32 mul 4096 373.64 ns/op 4.76x
int32 div 4096 7791.16 ns/op 1.37x
int32 sum 16384 468.25 ns/op 10.68x
int32 min 16384 483.94 ns/op 14.19x
int32 max 16384 485.43 ns/op 14.13x
int32 add 16384 1411.90 ns/op 5.57x
int32 sub 16384 1401.61 ns/op 5.55x
int32 mul 16384 1422.65 ns/op 5.40x
int32 div 16384 31080.74 ns/op 1.37x
int32 sum 256 8.04 ns/op 10.35x
int32 min 256 22.58 ns/op 4.72x
int32 max 256 22.80 ns/op 4.67x
int32 add 256 14.89 ns/op 8.29x
int32 sub 256 15.08 ns/op 8.20x
int32 mul 256 15.86 ns/op 7.61x
int32 div 256 490.90 ns/op 1.37x
int32 sum 4096 76.31 ns/op 16.23x
int32 min 4096 121.09 ns/op 14.37x
int32 max 4096 120.26 ns/op 14.35x
int32 add 4096 347.35 ns/op 5.64x
int32 sub 4096 351.04 ns/op 5.58x
int32 mul 4096 341.38 ns/op 5.34x
int32 div 4096 7849.51 ns/op 1.37x
int32 sum 16384 467.90 ns/op 10.59x
int32 min 16384 486.13 ns/op 14.18x
int32 max 16384 480.85 ns/op 14.48x
int32 add 16384 1426.40 ns/op 5.53x
int32 sub 16384 1421.44 ns/op 5.53x
int32 mul 16384 1448.81 ns/op 5.41x
int32 div 16384 31078.60 ns/op 1.38x

TYPE OP SIZE RATE SPEEDUP
int64 sum 256 12.01 ns/op 6.79x
int64 min 256 29.99 ns/op 3.47x
int64 max 256 29.96 ns/op 3.53x
int64 add 256 24.87 ns/op 4.96x
int64 sub 256 24.83 ns/op 4.94x
int64 mul 256 50.67 ns/op 2.34x
int64 div 256 1546.44 ns/op 1.15x
int64 sum 4096 148.93 ns/op 8.48x
int64 min 4096 323.19 ns/op 5.27x
int64 max 4096 322.25 ns/op 5.35x
int64 add 4096 721.78 ns/op 2.72x
int64 sub 4096 725.84 ns/op 2.71x
int64 mul 4096 901.09 ns/op 2.10x
int64 div 4096 24406.86 ns/op 1.17x
int64 sum 16384 930.98 ns/op 5.64x
int64 min 16384 1427.03 ns/op 4.78x
int64 max 16384 1429.45 ns/op 4.78x
int64 add 16384 5703.49 ns/op 1.48x
int64 sub 16384 5103.69 ns/op 1.64x
int64 mul 16384 6019.09 ns/op 1.42x
int64 div 16384 98294.20 ns/op 1.15x

int64 sum 256 12.13 ns/op 6.71x
int64 min 256 30.63 ns/op 3.47x
int64 max 256 31.69 ns/op 3.84x
int64 add 256 25.72 ns/op 5.17x
int64 sub 256 25.66 ns/op 5.45x
int64 mul 256 51.14 ns/op 2.38x
int64 div 256 1524.32 ns/op 1.18x
int64 sum 4096 145.87 ns/op 8.59x
int64 min 4096 327.28 ns/op 5.26x
int64 max 4096 331.75 ns/op 5.24x
int64 add 4096 696.99 ns/op 2.83x
int64 sub 4096 711.28 ns/op 2.76x
int64 mul 4096 890.62 ns/op 2.13x
int64 div 4096 24268.84 ns/op 1.18x
int64 sum 16384 933.71 ns/op 5.59x
int64 min 16384 1415.62 ns/op 4.90x
int64 max 16384 1419.97 ns/op 4.88x
int64 add 16384 5541.14 ns/op 1.53x
int64 sub 16384 5183.70 ns/op 1.62x
int64 mul 16384 6164.29 ns/op 1.36x
int64 div 16384 96899.48 ns/op 1.18x
```

# Acknowledgements
Expand Down
Loading

0 comments on commit 722a855

Please sign in to comment.