aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarat Dukhan <maratek@google.com>2019-08-29 22:29:32 -0700
committerMarat Dukhan <maratek@google.com>2019-08-29 22:29:32 -0700
commitdaa4ba3a740a861092d99897c51b70092c3a43ec (patch)
treeb49e1de5eda182a505716e5e1cc337ff077701bd
parent363d461cc22d7ee2590470a7203594f86ac3600a (diff)
downloadpsimd-daa4ba3a740a861092d99897c51b70092c3a43ec.tar.gz
psimd_loadN_s32 and psimd_loadN_u32 functions
-rw-r--r--include/psimd.h36
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);
}