mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-20 01:22:16 +00:00
(libretro-common) Add float_minmax.h
This commit is contained in:
parent
99a0f82351
commit
6c6daeca5b
@ -25,6 +25,7 @@
|
||||
#include <retro_inline.h>
|
||||
#include <retro_miscellaneous.h>
|
||||
#include <memalign.h>
|
||||
#include <math/float_minmax.h>
|
||||
|
||||
#include "../audio_resampler_driver.h"
|
||||
|
||||
@ -271,7 +272,7 @@ static void resampler_CC_upsample(void *re_, struct resampler_data *data)
|
||||
audio_frame_float_t *inp = (audio_frame_float_t*)data->data_in;
|
||||
audio_frame_float_t *inp_max = (audio_frame_float_t*)(inp + data->input_frames);
|
||||
audio_frame_float_t *outp = (audio_frame_float_t*)data->data_out;
|
||||
float b = MIN(data->ratio, 1.00); /* cutoff frequency. */
|
||||
float b = float_min(data->ratio, 1.00); /* cutoff frequency. */
|
||||
float ratio = 1.0 / data->ratio;
|
||||
__m128 vec_previous = _mm_loadu_ps((float*)&re->buffer[0]);
|
||||
__m128 vec_current = _mm_loadu_ps((float*)&re->buffer[2]);
|
||||
@ -446,7 +447,7 @@ static void resampler_CC_upsample(void *re_, struct resampler_data *data)
|
||||
audio_frame_float_t *inp_max = (audio_frame_float_t*)
|
||||
(inp + data->input_frames);
|
||||
audio_frame_float_t *outp = (audio_frame_float_t*)data->data_out;
|
||||
float b = MIN(data->ratio, 1.00); /* cutoff frequency. */
|
||||
float b = float_min(data->ratio, 1.00); /* cutoff frequency. */
|
||||
float ratio = 1.0 / data->ratio;
|
||||
|
||||
while (inp != inp_max)
|
||||
|
61
libretro-common/include/math/float_minmax.h
Normal file
61
libretro-common/include/math/float_minmax.h
Normal file
@ -0,0 +1,61 @@
|
||||
/* Copyright (C) 2010-2016 The RetroArch team
|
||||
*
|
||||
* ---------------------------------------------------------------------------------------
|
||||
* The following license statement only applies to this file (float_minmax.h).
|
||||
* ---------------------------------------------------------------------------------------
|
||||
*
|
||||
* Permission is hereby granted, free of charge,
|
||||
* to any person obtaining a copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
* and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
#ifndef __LIBRETRO_SDK_MATH_FLOAT_MINMAX_H__
|
||||
#define __LIBRETRO_SDK_MATH_FLOAT_MINMAX_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <retro_inline.h>
|
||||
#include <retro_miscellaneous.h>
|
||||
#include <retro_environment.h>
|
||||
|
||||
#ifdef __SSE2__
|
||||
#include <emmintrin.h>
|
||||
#include <mmintrin.h>
|
||||
#endif
|
||||
|
||||
static INLINE float float_min(float a, float b)
|
||||
{
|
||||
#ifdef __SSE2__
|
||||
_mm_store_ss( &a, _mm_min_ss(_mm_set_ss(a),_mm_set_ss(b)) );
|
||||
return a;
|
||||
#elif defined(__STDC_C99__) || defined(__STDC_C11__)
|
||||
return fminf(a, b);
|
||||
#else
|
||||
return MIN(a, b);
|
||||
#endif
|
||||
}
|
||||
|
||||
static INLINE float float_max(float a, float b)
|
||||
{
|
||||
#ifdef __SSE2__
|
||||
_mm_store_ss( &a, _mm_max_ss(_mm_set_ss(a),_mm_set_ss(b)) );
|
||||
return a;
|
||||
#elif defined(__STDC_C99__) || defined(__STDC_C11__)
|
||||
return fmaxf(a, b);
|
||||
#else
|
||||
return MAX(a, b);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user