mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-27 04:01:36 +01:00
asm: start intrinsics examples
Split userland/arch/<arch>/c/ into inline_asm and intrinsics, and move programs that don't match either up.
This commit is contained in:
1
userland/arch/x86_64/intrinsics/README.adoc
Normal file
1
userland/arch/x86_64/intrinsics/README.adoc
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/cirosantilli/linux-kernel-module-cheat#gcc-intrinsics
|
||||
18
userland/arch/x86_64/intrinsics/paddq.c
Normal file
18
userland/arch/x86_64/intrinsics/paddq.c
Normal file
@@ -0,0 +1,18 @@
|
||||
/* https://github.com/cirosantilli/linux-kernel-module-cheat#gcc-intrinsics */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <x86intrin.h>
|
||||
|
||||
int main(void) {
|
||||
__m128i input0 = _mm_set_epi32(1, 2, 3, 4);
|
||||
__m128i input1 = _mm_set_epi32(5, 6, 7, 8);
|
||||
__m128i output = _mm_add_epi32(input0, input1);
|
||||
printf("%d\n", (int)output[3]);
|
||||
assert(output[0] == 6);
|
||||
assert(output[1] == 8);
|
||||
assert(output[2] == 10);
|
||||
assert(output[3] == 12);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user