From 06282b33ce67d6918f6344c6536aa946cb06c344 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Wed, 23 Jan 2019 16:43:07 +0100 Subject: [PATCH] loadcpu: Added SNB-optimized spinloop. --- loadcpu.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/loadcpu.c b/loadcpu.c index ca39f7f..68e0429 100644 --- a/loadcpu.c +++ b/loadcpu.c @@ -4,6 +4,31 @@ #include #include +static void *spin_snb(void *uu) +{ + char __attribute__((aligned(32))) m[2][32]; + + asm("vpxor %%xmm1, %%xmm1, %%xmm1;\n" + "vpxor %%xmm2, %%xmm2, %%xmm2;\n" + "0:\n" + "vmovaps (%0), %%ymm0;\n" + "vmovaps %%ymm1, (%1);\n" + "vaddps %%ymm1, %%ymm1, %%ymm2\n" + "vmulps %%ymm3, %%ymm3, %%ymm4\n" + "vmovaps (%0), %%ymm0;\n" + "vmovaps %%xmm1, (%1);\n" + "vaddps %%ymm1, %%ymm1, %%ymm2\n" + "vmulps %%ymm3, %%ymm3, %%ymm4\n" + "vmovaps (%0), %%ymm0;\n" + "vaddps %%ymm1, %%ymm1, %%ymm2\n" + "vmulps %%ymm3, %%ymm3, %%ymm4\n" + "jmp 0b;\n" + : + : "r" (&m[0]), "r" (&m[1]) + : "rax", "rcx"); + abort(); +} + static void *spin(void *uu) { while(1) { -- 2.11.0