along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: globals.cc 935 2006-09-29 21:39:39Z paul $
*/
#include <cstdio> // Needed so that libraptor (included in lrdf) won't complain
{
bool generic_mix_functions = true;
+
if (try_optimization) {
#if defined (ARCH_X86) && defined (BUILD_SSE_OPTIMIZATIONS)
- unsigned int use_sse = 0;
+ unsigned long use_sse = 0;
#ifndef USE_X86_64_ASM
- asm volatile (
+ asm (
"mov $1, %%eax\n"
"pushl %%ebx\n"
"cpuid\n"
- "popl %%ebx\n"
- "andl $33554432, %%edx\n"
"movl %%edx, %0\n"
- : "=m" (use_sse)
+ "popl %%ebx\n"
+ : "=r" (use_sse)
:
: "%eax", "%ecx", "%edx", "memory");
+
#else
- asm volatile (
- "movq $1, %%rax\n"
+ asm (
"pushq %%rbx\n"
+ "movq $1, %%rax\n"
"cpuid\n"
- "popq %%rbx\n"
- "andq $33554432, %%rdx\n"
"movq %%rdx, %0\n"
- : "=m" (use_sse)
+ "popq %%rbx\n"
+ : "=r" (use_sse)
:
- : "%rax", "%rbx", "%rcx", "%rdx", "memory");
+ : "%rax", "%rcx", "%rdx", "memory");
#endif /* USE_X86_64_ASM */
+ use_sse &= (1 << 25); // bit 25 = SSE support
if (use_sse) {
info << "Using SSE optimized routines" << endmsg;
// SSE SET
- Session::compute_peak = x86_sse_compute_peak;
+ Session::compute_peak = x86_sse_compute_peak;
Session::apply_gain_to_buffer = x86_sse_apply_gain_to_buffer;
Session::mix_buffers_with_gain = x86_sse_mix_buffers_with_gain;
Session::mix_buffers_no_gain = x86_sse_mix_buffers_no_gain;
(void) bindtextdomain(PACKAGE, LOCALEDIR);
- PBD::ID::init ();
-
setup_enum_writer ();
lrdf_init();
std::istream& operator>>(std::istream& o, SampleFormat& var) { return int_to_type<SampleFormat> (o, var); }
std::istream& operator>>(std::istream& o, AutoConnectOption& var) { return int_to_type<AutoConnectOption> (o, var); }
std::istream& operator>>(std::istream& o, MonitorModel& var) { return int_to_type<MonitorModel> (o, var); }
+std::istream& operator>>(std::istream& o, RemoteModel& var) { return int_to_type<RemoteModel> (o, var); }
std::istream& operator>>(std::istream& o, EditMode& var) { return int_to_type<EditMode> (o, var); }
std::istream& operator>>(std::istream& o, SoloModel& var) { return int_to_type<SoloModel> (o, var); }
std::istream& operator>>(std::istream& o, LayerModel& var) { return int_to_type<LayerModel> (o, var); }