x86 asm: expand macros in the most basic SIMD examples

Make it easier on the newbs I guess.
This commit is contained in:
Ciro Santilli 六四事件 法轮功
2019-06-02 00:00:02 +00:00
parent 819ef42ea4
commit 402d1343df
2 changed files with 34 additions and 24 deletions

View File

@@ -18,16 +18,17 @@ LKMC_PROLOGUE
.align 16
output: .skip 16
.text
#define TEST(size) \
movups addp ## size ## _input0, %xmm0; \
movups addp ## size ## _input1, %xmm1; \
addp ## size %xmm1, %xmm0; \
movups %xmm0, output; \
LKMC_ASSERT_MEMCMP(output, addp ## size ## _expect, $0x10)
/* 4x 32-bit */
TEST(s)
movaps addps_input0, %xmm0
movaps addps_input1, %xmm1
addps %xmm1, %xmm0
movaps %xmm0, output
LKMC_ASSERT_MEMCMP(output, addps_expect, $0x10)
/* 2x 64-bit */
TEST(d)
#undef TEST
movaps addpd_input0, %xmm0
movaps addpd_input1, %xmm1
addpd %xmm1, %xmm0
movaps %xmm0, output
LKMC_ASSERT_MEMCMP(output, addpd_expect, $0x10)
LKMC_EPILOGUE

View File

@@ -22,19 +22,28 @@ LKMC_PROLOGUE
output: .skip 16
.text
movaps input1, %xmm1
#define TEST(size) \
movaps input0, %xmm0; \
padd ## size %xmm1, %xmm0; \
movaps %xmm0, output; \
LKMC_ASSERT_MEMCMP(output, padd ## size ## _expect, $0x10)
/* 16x 8-bit */
TEST(b)
/* 8x 4-bit */
TEST(w)
/* 4x 8-bit */
TEST(d)
/* 2x 16-bit */
TEST(q)
#undef TEST
/* 16x 8bit */
movaps input0, %xmm0
paddb %xmm1, %xmm0
movaps %xmm0, output
LKMC_ASSERT_MEMCMP(output, paddb_expect, $0x10)
/* 8x 16-bit */
movaps input0, %xmm0
paddw %xmm1, %xmm0
movaps %xmm0, output
LKMC_ASSERT_MEMCMP(output, paddw_expect, $0x10)
/* 4x 32-bit */
movaps input0, %xmm0
paddd %xmm1, %xmm0
movaps %xmm0, output
LKMC_ASSERT_MEMCMP(output, paddd_expect, $0x10)
/* 2x 64-bit */
movaps input0, %xmm0
paddq %xmm1, %xmm0
movaps %xmm0, output
LKMC_ASSERT_MEMCMP(output, paddq_expect, $0x10)
LKMC_EPILOGUE