aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M/x86/convert_sse_3.h
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2017-03-20 12:08:42 +0100
committerTom Tsou <tom@tsou.cc>2017-05-19 17:21:45 +0000
commite8ae9fcf387540f1b210f5ece372d0fd070b6249 (patch)
treea2cea15903fda9795776f35d1cee575b558d0ebc /Transceiver52M/x86/convert_sse_3.h
parentf5bf33b287d5c4ce13c0ecac91c8d7f128a24eb5 (diff)
buildenv: Split up SSE3 and SSE4.1 code
Currently we find SSE3 and SSE4.1 code mixed togehter along with generic code in one file. This introduces the risk that the compiler exidantly mixes SSE4.1 instructions into an SSE3, or even worse into a generic code path. This commit splits the SSE3 and SSE4.1 code into separate files and compiles them with the matching target options. Change-Id: I846e190e92f1258cd412d1b2d79b539e204e04b3
Diffstat (limited to 'Transceiver52M/x86/convert_sse_3.h')
-rw-r--r--Transceiver52M/x86/convert_sse_3.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/Transceiver52M/x86/convert_sse_3.h b/Transceiver52M/x86/convert_sse_3.h
new file mode 100644
index 0000000..c2f87d7
--- /dev/null
+++ b/Transceiver52M/x86/convert_sse_3.h
@@ -0,0 +1,34 @@
+/*
+ * SSE type conversions
+ * Copyright (C) 2013 Thomas Tsou <tom@tsou.cc>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#pragma once
+
+/* 8*N single precision floats scaled and converted to 16-bit signed integer */
+void _sse_convert_scale_ps_si16_8n(short *restrict out,
+ const float *restrict in,
+ float scale, int len);
+
+/* 8*N single precision floats scaled and converted with remainder */
+void _sse_convert_scale_ps_si16(short *restrict out,
+ const float *restrict in, float scale, int len);
+
+/* 16*N single precision floats scaled and converted to 16-bit signed integer */
+void _sse_convert_scale_ps_si16_16n(short *restrict out,
+ const float *restrict in,
+ float scale, int len);