mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-25 11:11:35 +01:00
assembly SIMD add: make uniform for all ISAs, mark as entry point to learning SIMD
This commit is contained in:
19
README.adoc
19
README.adoc
@@ -11622,6 +11622,23 @@ Other infrastructure sanity checks that you might want to look into include:
|
||||
* `ASSERT_MEMCMP` tests
|
||||
** link:userland/arch/x86_64/lkmc_assert_memcmp_fail.S[]
|
||||
|
||||
=== Assembly SIMD
|
||||
|
||||
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
|
||||
** link:userland/arch/x86_64/addpd.S[]: `ADDPS`, `ADDPD`
|
||||
** link:userland/arch/x86_64/paddq.S[]: `PADDQ`, `PADDL`, `PADDW`, `PADDB`
|
||||
* arm
|
||||
** link:userland/arch/arm/vadd.S[]
|
||||
* aarch64
|
||||
** link:userland/arch/aarch64/add_vector.S[]
|
||||
** link:userland/arch/aarch64/fadd_vector.S[]
|
||||
|
||||
Then it is just a huge copy paste of infinite boring details:
|
||||
|
||||
* <<x86-simd>>
|
||||
|
||||
=== User vs system assembly
|
||||
|
||||
By "userland assembly", we mean "the parts of the ISA which can be freely used from userland".
|
||||
@@ -11854,8 +11871,6 @@ History:
|
||||
* link:https://en.wikipedia.org/wiki/MMX_(instruction_set)[MMX]: 1997
|
||||
* link:https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions[SSE]: Streaming SIMD Extensions. 1999. 128-bit XMM registers.
|
||||
* link:https://en.wikipedia.org/wiki/SSE2[SSE2]: 2004
|
||||
** link:userland/arch/x86_64/addpd.S[]: `ADDPS`, `ADDPD`
|
||||
** link:userland/arch/x86_64/paddq.S[]: `PADDQ`, `PADDL`, `PADDW`, `PADDB`
|
||||
* link:https://en.wikipedia.org/wiki/SSE3[SSE3]: 2006
|
||||
* link:https://en.wikipedia.org/wiki/SSE4[SSE4]: 2006
|
||||
* link:https://en.wikipedia.org/wiki/Advanced_Vector_Extensions[AVX]: Advanced Vector Extensions. 2011. 256-bit YMM registers. Extension of XMM.
|
||||
|
||||
Reference in New Issue
Block a user