# Linux Kernel Module Cheat

### 28.3. SIMD assembly

Much like ADD for non-SIMD, start learning SIMD instructions by looking at the integer and floating point SIMD ADD instructions of each ISA:

- x86

  - ADDPD

  - x86 PADDQ instruction

- arm

  - ARM VADD instruction

- aarch64

  - ARMv8 aarch64 add vector instruction

  - ARMv8 aarch64 FADD instruction

Then it is just a huge copy paste of infinite boring details:

- x86 SIMD

- ARM SIMD

To debug these instructions, you can see the register values in GDB with:

    info registers float

or alternatively with register names (here the ARMv8 V0 register):

    print $v0

as mentioned at:

- https://stackoverflow.com/questions/5429137/how-to-print-register-values-in-gdb/38036152#38036152

- https://reverseengineering.stackexchange.com/questions/8992/floating-point-registers-on-arm/20623#20623

Bibliography: https://stackoverflow.com/questions/1389712/getting-started-with-intel-x86-sse-simd-instructions/56409539#56409539

- FMA instruction