aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarat Dukhan <maratek@gmail.com>2017-02-22 09:21:10 -0500
committerMarat Dukhan <maratek@gmail.com>2017-02-22 09:21:10 -0500
commit691384841fd2f3858207dc3afa260a206b0c3d9a (patch)
tree66ea6fa3d411b74e31f54a54d59e0129d939928f
parentc81e1a8f4dd39abc2c6689e3d26ce5b7d3c95615 (diff)
downloadpsimd-691384841fd2f3858207dc3afa260a206b0c3d9a.tar.gz
Swap intrinsic
-rw-r--r--include/psimd.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/include/psimd.h b/include/psimd.h
index 1c94b82..f257801 100644
--- a/include/psimd.h
+++ b/include/psimd.h
@@ -122,6 +122,56 @@
return (psimd_u32x2) { .lo = (psimd_u32) v.lo, .hi = (psimd_u32) v.hi };
}
+ /* Swap */
+ PSIMD_INTRINSIC void psimd_swap_s8(psimd_s8 a[1], psimd_s8 b[1]) {
+ const psimd_s8 new_a = *b;
+ const psimd_s8 new_b = *a;
+ *a = new_a;
+ *b = new_b;
+ }
+
+ PSIMD_INTRINSIC void psimd_swap_u8(psimd_u8 a[1], psimd_u8 b[1]) {
+ const psimd_u8 new_a = *b;
+ const psimd_u8 new_b = *a;
+ *a = new_a;
+ *b = new_b;
+ }
+
+ PSIMD_INTRINSIC void psimd_swap_s16(psimd_s16 a[1], psimd_s16 b[1]) {
+ const psimd_s16 new_a = *b;
+ const psimd_s16 new_b = *a;
+ *a = new_a;
+ *b = new_b;
+ }
+
+ PSIMD_INTRINSIC void psimd_swap_u16(psimd_u16 a[1], psimd_u16 b[1]) {
+ const psimd_u16 new_a = *b;
+ const psimd_u16 new_b = *a;
+ *a = new_a;
+ *b = new_b;
+ }
+
+ PSIMD_INTRINSIC void psimd_swap_s32(psimd_s32 a[1], psimd_s32 b[1]) {
+ const psimd_s32 new_a = *b;
+ const psimd_s32 new_b = *a;
+ *a = new_a;
+ *b = new_b;
+ }
+
+ PSIMD_INTRINSIC void psimd_swap_u32(psimd_u32 a[1], psimd_u32 b[1]) {
+ const psimd_u32 new_a = *b;
+ const psimd_u32 new_b = *a;
+ *a = new_a;
+ *b = new_b;
+ }
+
+ PSIMD_INTRINSIC void psimd_swap_f32(psimd_f32 a[1], psimd_f32 b[1]) {
+ const psimd_f32 new_a = *b;
+ const psimd_f32 new_b = *a;
+ *a = new_a;
+ *b = new_b;
+ }
+
/* Zero-initialization */
PSIMD_INTRINSIC psimd_s8 psimd_zero_s8(void) {
return (psimd_s8) { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };