ARM vs Thumb GCC comparison ARMv7 codegen impact of ARM/Thumb mode in GCC 4.9, 7.1, 8.0 GCC 7.1 thumb #1: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 7.0.1 20170422 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 7.1 arm #1: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 7.0.1 20170422 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 8.0 thumb #1: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 8.0.0 20170501 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 8.0 arm #1: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 8.0.0 20170501 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 4.9 thumb #1: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 4.9.4 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 4.9 arm #1: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 4.9.4 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 4.9 thumb #2: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 4.9.4 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 4.9 arm #2: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 4.9.4 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 7.1 thumb #2: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 7.0.1 20170422 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 7.1 arm #2: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 7.0.1 20170422 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 8.0 thumb #2: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 8.0.0 20170501 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 GCC 8.0 arm #2: Processor: ARMv7 rev 1 @ 1.73GHz (4 Cores), Motherboard: ODROIDC, Memory: 915MB, Disk: 64GB 00000, Graphics: ARM Mali OS: Ubuntu 14.04, Kernel: 3.10.80-20-odrobian (armv7l), Display Server: X Server 1.15.1, Compiler: GCC 8.0.0 20170501 + Clang 3.6.0-2ubuntu1~trusty1 + LLVM 3.6.0, File-System: ext4, Screen Resolution: 1280x1024 TTSIOD 3D Renderer 2.3a Phong Rendering With Soft-Shadow Mapping FPS > Higher Is Better GCC 4.9 thumb #1 . 15.56 |================================================== GCC 4.9 arm #1 ... 15.79 |=================================================== GCC 7.1 thumb #1 . 15.62 |================================================== GCC 7.1 arm #1 ... 15.86 |=================================================== GCC 8.0 thumb #1 . 16.52 |===================================================== GCC 8.0 arm #1 ... 15.83 |=================================================== Himeno Benchmark 3.0 Poisson Pressure Solver MFLOPS > Higher Is Better GCC 4.9 thumb #1 . 91.27 |===================================================== GCC 4.9 arm #1 ... 81.69 |=============================================== GCC 7.1 thumb #1 . 88.14 |=================================================== GCC 7.1 arm #1 ... 79.09 |============================================== GCC 8.0 thumb #1 . 84.18 |================================================= GCC 8.0 arm #1 ... 62.49 |==================================== C-Ray 1.1 Total Time Seconds < Lower Is Better GCC 4.9 thumb #1 . 265.69 |==================================================== GCC 4.9 arm #1 ... 266.74 |==================================================== GCC 7.1 thumb #1 . 244.36 |================================================ GCC 7.1 arm #1 ... 245.33 |================================================ GCC 8.0 thumb #1 . 243.38 |=============================================== GCC 8.0 arm #1 ... 243.76 |================================================ Primesieve 5.4.2 1e12 Prime Number Generation Seconds < Lower Is Better GCC 4.9 thumb #1 . 877.15 |=========================================== GCC 4.9 arm #1 ... 1029.43 |=================================================== GCC 7.1 thumb #1 . 1025.35 |=================================================== GCC 7.1 arm #1 ... 1027.16 |=================================================== GCC 8.0 thumb #1 . 1028.37 |=================================================== GCC 8.0 arm #1 ... 1028.02 |=================================================== Stockfish 2014-11-26 Total Time ms < Lower Is Better GCC 4.9 thumb #1 . 41922 |========================================= GCC 4.9 arm #1 ... 53864 |===================================================== GCC 7.1 thumb #1 . 43893 |=========================================== GCC 7.1 arm #1 ... 51235 |================================================== GCC 8.0 thumb #1 . 43547 |=========================================== GCC 8.0 arm #1 ... 52205 |=================================================== Tachyon 0.98.9 Total Time Seconds < Lower Is Better GCC 4.9 thumb #1 . 110.57 |==================================================== GCC 4.9 arm #1 ... 108.87 |=================================================== GCC 7.1 thumb #1 . 109.82 |==================================================== GCC 7.1 arm #1 ... 108.99 |=================================================== GCC 8.0 thumb #1 . 109.73 |==================================================== GCC 8.0 arm #1 ... 109.52 |==================================================== SciMark 2.0 Computational Test: Composite Mflops > Higher Is Better GCC 4.9 thumb #1 . 100.30 |================================================== GCC 4.9 arm #1 ... 99.97 |================================================== GCC 7.1 thumb #1 . 102.67 |=================================================== GCC 7.1 arm #1 ... 104.64 |==================================================== GCC 8.0 thumb #1 . 104.05 |==================================================== GCC 8.0 arm #1 ... 103.46 |=================================================== SciMark 2.0 Computational Test: Monte Carlo Mflops > Higher Is Better GCC 4.9 thumb #1 . 56.95 |============================================= GCC 4.9 arm #1 ... 64.56 |=================================================== GCC 7.1 thumb #1 . 58.11 |============================================= GCC 7.1 arm #1 ... 67.70 |===================================================== GCC 8.0 thumb #1 . 58.14 |============================================== GCC 8.0 arm #1 ... 67.19 |===================================================== SciMark 2.0 Computational Test: Fast Fourier Transform Mflops > Higher Is Better GCC 4.9 thumb #1 . 21.32 |================================================= GCC 4.9 arm #1 ... 22.64 |==================================================== GCC 7.1 thumb #1 . 22.88 |===================================================== GCC 7.1 arm #1 ... 22.29 |==================================================== GCC 8.0 thumb #1 . 21.07 |================================================= GCC 8.0 arm #1 ... 22.45 |==================================================== SciMark 2.0 Computational Test: Sparse Matrix Multiply Mflops > Higher Is Better GCC 4.9 thumb #1 . 98.24 |===================================================== GCC 4.9 arm #1 ... 97.15 |==================================================== GCC 7.1 thumb #1 . 98.19 |===================================================== GCC 7.1 arm #1 ... 98.18 |===================================================== GCC 8.0 thumb #1 . 99.02 |===================================================== GCC 8.0 arm #1 ... 97.00 |==================================================== SciMark 2.0 Computational Test: Dense LU Matrix Factorization Mflops > Higher Is Better GCC 4.9 thumb #1 . 124.60 |==================================================== GCC 4.9 arm #1 ... 122.69 |=================================================== GCC 7.1 thumb #1 . 115.42 |================================================ GCC 7.1 arm #1 ... 115.53 |================================================ GCC 8.0 thumb #1 . 116.86 |================================================= GCC 8.0 arm #1 ... 114.10 |================================================ SciMark 2.0 Computational Test: Jacobi Successive Over-Relaxation Mflops > Higher Is Better GCC 4.9 thumb #1 . 200.40 |============================================== GCC 4.9 arm #1 ... 192.80 |============================================= GCC 7.1 thumb #1 . 218.72 |=================================================== GCC 7.1 arm #1 ... 219.48 |=================================================== GCC 8.0 thumb #1 . 225.17 |==================================================== GCC 8.0 arm #1 ... 216.56 |================================================== TSCP 1.81 AI Chess Performance Nodes Per Second > Higher Is Better GCC 4.9 thumb #1 . 179364 |================================================= GCC 4.9 arm #1 ... 187058 |=================================================== GCC 7.1 thumb #1 . 186603 |=================================================== GCC 7.1 arm #1 ... 189365 |==================================================== GCC 8.0 thumb #1 . 185241 |================================================== GCC 8.0 arm #1 ... 190842 |==================================================== Smallpt 1.0 Global Illumination Renderer; 100 Samples Seconds < Lower Is Better GCC 4.9 thumb #1 . 284 |======================================================= GCC 4.9 arm #1 ... 284 |======================================================= GCC 7.1 thumb #1 . 285 |======================================================= GCC 7.1 arm #1 ... 284 |======================================================= GCC 8.0 thumb #1 . 285 |======================================================= GCC 8.0 arm #1 ... 285 |======================================================= N-Queens 1.0 Elapsed Time Seconds < Lower Is Better GCC 4.9 thumb #1 . 185.41 |========================================== GCC 4.9 arm #1 ... 227.37 |==================================================== GCC 7.1 thumb #1 . 195.85 |============================================= GCC 7.1 arm #1 ... 201.24 |============================================== GCC 8.0 thumb #1 . 195.83 |============================================= GCC 8.0 arm #1 ... 201.30 |==============================================