diff options
author | Marat Dukhan <maratek@google.com> | 2019-08-29 22:29:32 -0700 |
---|---|---|
committer | Marat Dukhan <maratek@google.com> | 2019-08-29 22:29:32 -0700 |
commit | daa4ba3a740a861092d99897c51b70092c3a43ec (patch) | |
tree | b49e1de5eda182a505716e5e1cc337ff077701bd /include | |
parent | 363d461cc22d7ee2590470a7203594f86ac3600a (diff) | |
download | psimd-daa4ba3a740a861092d99897c51b70092c3a43ec.tar.gz |
psimd_loadN_s32 and psimd_loadN_u32 functions
Diffstat (limited to 'include')
-rw-r--r-- | include/psimd.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/include/psimd.h b/include/psimd.h index b08a2b6..6d67d83 100644 --- a/include/psimd.h +++ b/include/psimd.h @@ -323,20 +323,56 @@ return psimd_splat_f32(*((const float*) address)); } + PSIMD_INTRINSIC psimd_s32 psimd_load1_s32(const void* address) { + return (psimd_s32) { *((const int32_t*) address), 0, 0, 0 }; + } + + PSIMD_INTRINSIC psimd_u32 psimd_load1_u32(const void* address) { + return (psimd_u32) { *((const uint32_t*) address), 0, 0, 0 }; + } + PSIMD_INTRINSIC psimd_f32 psimd_load1_f32(const void* address) { return (psimd_f32) { *((const float*) address), 0.0f, 0.0f, 0.0f }; } + PSIMD_INTRINSIC psimd_s32 psimd_load2_s32(const void* address) { + const int32_t* address_s32 = (const int32_t*) address; + return (psimd_s32) { address_s32[0], address_s32[1], 0, 0 }; + } + + PSIMD_INTRINSIC psimd_u32 psimd_load2_u32(const void* address) { + const uint32_t* address_u32 = (const uint32_t*) address; + return (psimd_u32) { address_u32[0], address_u32[1], 0, 0 }; + } + PSIMD_INTRINSIC psimd_f32 psimd_load2_f32(const void* address) { const float* address_f32 = (const float*) address; return (psimd_f32) { address_f32[0], address_f32[1], 0.0f, 0.0f }; } + PSIMD_INTRINSIC psimd_s32 psimd_load3_s32(const void* address) { + const int32_t* address_s32 = (const int32_t*) address; + return (psimd_s32) { address_s32[0], address_s32[1], address_s32[2], 0 }; + } + + PSIMD_INTRINSIC psimd_u32 psimd_load3_u32(const void* address) { + const uint32_t* address_u32 = (const uint32_t*) address; + return (psimd_u32) { address_u32[0], address_u32[1], address_u32[2], 0 }; + } + PSIMD_INTRINSIC psimd_f32 psimd_load3_f32(const void* address) { const float* address_f32 = (const float*) address; return (psimd_f32) { address_f32[0], address_f32[1], address_f32[2], 0.0f }; } + PSIMD_INTRINSIC psimd_s32 psimd_load4_s32(const void* address) { + return psimd_load_s32(address); + } + + PSIMD_INTRINSIC psimd_u32 psimd_load4_u32(const void* address) { + return psimd_load_u32(address); + } + PSIMD_INTRINSIC psimd_f32 psimd_load4_f32(const void* address) { return psimd_load_f32(address); } |