Line
Link Here
|
0 |
-- a/cc/raster/texture_compressor.cc |
0 |
++ b/cc/raster/texture_compressor.cc |
Lines 8-14
Link Here
|
8 |
#include "base/memory/ptr_util.h" |
8 |
#include "base/memory/ptr_util.h" |
9 |
#include "cc/raster/texture_compressor_etc1.h" |
9 |
#include "cc/raster/texture_compressor_etc1.h" |
10 |
|
10 |
|
11 |
#if defined(ARCH_CPU_X86_FAMILY) |
11 |
#if defined(ARCH_CPU_X86_64) |
12 |
#include "base/cpu.h" |
12 |
#include "base/cpu.h" |
13 |
#include "cc/raster/texture_compressor_etc1_sse.h" |
13 |
#include "cc/raster/texture_compressor_etc1_sse.h" |
14 |
#endif |
14 |
#endif |
Lines 18-24
namespace cc {
Link Here
|
18 |
std::unique_ptr<TextureCompressor> TextureCompressor::Create(Format format) { |
18 |
std::unique_ptr<TextureCompressor> TextureCompressor::Create(Format format) { |
19 |
switch (format) { |
19 |
switch (format) { |
20 |
case kFormatETC1: { |
20 |
case kFormatETC1: { |
21 |
#if defined(ARCH_CPU_X86_FAMILY) |
21 |
#if defined(ARCH_CPU_X86_64) |
22 |
base::CPU cpu; |
22 |
base::CPU cpu; |
23 |
if (cpu.has_sse2()) { |
23 |
if (cpu.has_sse2()) { |
24 |
return base::WrapUnique(new TextureCompressorETC1SSE()); |
24 |
return base::WrapUnique(new TextureCompressorETC1SSE()); |
25 |
-- a/media/base/sinc_resampler.cc |
25 |
++ b/media/base/sinc_resampler.cc |
Lines 81-87
Link Here
|
81 |
#include "base/numerics/math_constants.h" |
81 |
#include "base/numerics/math_constants.h" |
82 |
#include "build/build_config.h" |
82 |
#include "build/build_config.h" |
83 |
|
83 |
|
84 |
#if defined(ARCH_CPU_X86_FAMILY) |
84 |
#if defined(__x86_64__) |
85 |
#include <xmmintrin.h> |
85 |
#include <xmmintrin.h> |
86 |
#define CONVOLVE_FUNC Convolve_SSE |
86 |
#define CONVOLVE_FUNC Convolve_SSE |
87 |
#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) |
87 |
#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) |
Lines 326-332
float SincResampler::Convolve_C(const fl
Link Here
|
326 |
kernel_interpolation_factor * sum2); |
326 |
kernel_interpolation_factor * sum2); |
327 |
} |
327 |
} |
328 |
|
328 |
|
329 |
#if defined(ARCH_CPU_X86_FAMILY) |
329 |
#if defined(__x86_64__) |
330 |
float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1, |
330 |
float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1, |
331 |
const float* k2, |
331 |
const float* k2, |
332 |
double kernel_interpolation_factor) { |
332 |
double kernel_interpolation_factor) { |
333 |
-- a/media/base/sinc_resampler.h |
333 |
++ b/media/base/sinc_resampler.h |
Lines 98-104
class MEDIA_EXPORT SincResampler {
Link Here
|
98 |
// ARM, NEON support is chosen at compile time based on compilation flags. |
98 |
// ARM, NEON support is chosen at compile time based on compilation flags. |
99 |
static float Convolve_C(const float* input_ptr, const float* k1, |
99 |
static float Convolve_C(const float* input_ptr, const float* k1, |
100 |
const float* k2, double kernel_interpolation_factor); |
100 |
const float* k2, double kernel_interpolation_factor); |
101 |
#if defined(ARCH_CPU_X86_FAMILY) |
101 |
#if defined(__x86_64__) |
102 |
static float Convolve_SSE(const float* input_ptr, const float* k1, |
102 |
static float Convolve_SSE(const float* input_ptr, const float* k1, |
103 |
const float* k2, |
103 |
const float* k2, |
104 |
double kernel_interpolation_factor); |
104 |
double kernel_interpolation_factor); |
105 |
-- a/media/base/sinc_resampler_perftest.cc |
105 |
++ b/media/base/sinc_resampler_perftest.cc |
Lines 22-28
static const double kKernelInterpolation
Link Here
|
22 |
static void DoNothing(int frames, float* destination) {} |
22 |
static void DoNothing(int frames, float* destination) {} |
23 |
|
23 |
|
24 |
// Define platform independent function name for Convolve* tests. |
24 |
// Define platform independent function name for Convolve* tests. |
25 |
#if defined(ARCH_CPU_X86_FAMILY) |
25 |
#if defined(__x86_64__) |
26 |
#define CONVOLVE_FUNC Convolve_SSE |
26 |
#define CONVOLVE_FUNC Convolve_SSE |
27 |
#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) |
27 |
#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) |
28 |
#define CONVOLVE_FUNC Convolve_NEON |
28 |
#define CONVOLVE_FUNC Convolve_NEON |
29 |
-- a/media/base/sinc_resampler_unittest.cc |
29 |
++ b/media/base/sinc_resampler_unittest.cc |
Lines 150-156
TEST(SincResamplerTest, DISABLED_SetRati
Link Here
|
150 |
|
150 |
|
151 |
|
151 |
|
152 |
// Define platform independent function name for Convolve* tests. |
152 |
// Define platform independent function name for Convolve* tests. |
153 |
#if defined(ARCH_CPU_X86_FAMILY) |
153 |
#if defined(__x86_64__) |
154 |
#define CONVOLVE_FUNC Convolve_SSE |
154 |
#define CONVOLVE_FUNC Convolve_SSE |
155 |
#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) |
155 |
#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) |
156 |
#define CONVOLVE_FUNC Convolve_NEON |
156 |
#define CONVOLVE_FUNC Convolve_NEON |
157 |
-- a/media/base/vector_math.cc |
157 |
++ b/media/base/vector_math.cc |
Lines 11-17
Link Here
|
11 |
#include "build/build_config.h" |
11 |
#include "build/build_config.h" |
12 |
|
12 |
|
13 |
// NaCl does not allow intrinsics. |
13 |
// NaCl does not allow intrinsics. |
14 |
#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL) |
14 |
#if defined(__x86_64__) && !defined(OS_NACL) |
15 |
#include <xmmintrin.h> |
15 |
#include <xmmintrin.h> |
16 |
// Don't use custom SSE versions where the auto-vectorized C version performs |
16 |
// Don't use custom SSE versions where the auto-vectorized C version performs |
17 |
// better, which is anywhere clang is used. |
17 |
// better, which is anywhere clang is used. |
Lines 91-97
std::pair<float, float> EWMAAndMaxPower_
Link Here
|
91 |
return result; |
91 |
return result; |
92 |
} |
92 |
} |
93 |
|
93 |
|
94 |
#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL) |
94 |
#if defined(__x86_64__) && !defined(OS_NACL) |
95 |
void FMUL_SSE(const float src[], float scale, int len, float dest[]) { |
95 |
void FMUL_SSE(const float src[], float scale, int len, float dest[]) { |
96 |
const int rem = len % 4; |
96 |
const int rem = len % 4; |
97 |
const int last_index = len - rem; |
97 |
const int last_index = len - rem; |
98 |
-- a/media/base/vector_math_perftest.cc |
98 |
++ b/media/base/vector_math_perftest.cc |
Lines 83-89
class VectorMathPerfTest : public testin
Link Here
|
83 |
}; |
83 |
}; |
84 |
|
84 |
|
85 |
// Define platform dependent function names for SIMD optimized methods. |
85 |
// Define platform dependent function names for SIMD optimized methods. |
86 |
#if defined(ARCH_CPU_X86_FAMILY) |
86 |
#if defined(__x86_64__) |
87 |
#define FMAC_FUNC FMAC_SSE |
87 |
#define FMAC_FUNC FMAC_SSE |
88 |
#define FMUL_FUNC FMUL_SSE |
88 |
#define FMUL_FUNC FMUL_SSE |
89 |
#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE |
89 |
#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE |
90 |
-- a/media/base/vector_math_testing.h |
90 |
++ b/media/base/vector_math_testing.h |
Lines 28-34
MEDIA_SHMEM_EXPORT std::pair<float, floa
Link Here
|
28 |
int len, |
28 |
int len, |
29 |
float smoothing_factor); |
29 |
float smoothing_factor); |
30 |
|
30 |
|
31 |
#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL) |
31 |
#if defined(__x86_64__) && !defined(OS_NACL) |
32 |
MEDIA_SHMEM_EXPORT void FMAC_SSE(const float src[], |
32 |
MEDIA_SHMEM_EXPORT void FMAC_SSE(const float src[], |
33 |
float scale, |
33 |
float scale, |
34 |
int len, |
34 |
int len, |
35 |
-- a/media/base/vector_math_unittest.cc |
35 |
++ b/media/base/vector_math_unittest.cc |
Lines 73-79
TEST_F(VectorMathTest, FMAC) {
Link Here
|
73 |
VerifyOutput(kResult); |
73 |
VerifyOutput(kResult); |
74 |
} |
74 |
} |
75 |
|
75 |
|
76 |
#if defined(ARCH_CPU_X86_FAMILY) |
76 |
#if defined(__x86_64__) |
77 |
{ |
77 |
{ |
78 |
SCOPED_TRACE("FMAC_SSE"); |
78 |
SCOPED_TRACE("FMAC_SSE"); |
79 |
FillTestVectors(kInputFillValue, kOutputFillValue); |
79 |
FillTestVectors(kInputFillValue, kOutputFillValue); |
Lines 114-120
TEST_F(VectorMathTest, FMUL) {
Link Here
|
114 |
VerifyOutput(kResult); |
114 |
VerifyOutput(kResult); |
115 |
} |
115 |
} |
116 |
|
116 |
|
117 |
#if defined(ARCH_CPU_X86_FAMILY) |
117 |
#if defined(__x86_64__) |
118 |
{ |
118 |
{ |
119 |
SCOPED_TRACE("FMUL_SSE"); |
119 |
SCOPED_TRACE("FMUL_SSE"); |
120 |
FillTestVectors(kInputFillValue, kOutputFillValue); |
120 |
FillTestVectors(kInputFillValue, kOutputFillValue); |
Lines 222-228
class EWMATestScenario {
Link Here
|
222 |
EXPECT_NEAR(expected_max_, result.second, 0.0000001f); |
222 |
EXPECT_NEAR(expected_max_, result.second, 0.0000001f); |
223 |
} |
223 |
} |
224 |
|
224 |
|
225 |
#if defined(ARCH_CPU_X86_FAMILY) |
225 |
#if defined(__x86_64__) |
226 |
{ |
226 |
{ |
227 |
SCOPED_TRACE("EWMAAndMaxPower_SSE"); |
227 |
SCOPED_TRACE("EWMAAndMaxPower_SSE"); |
228 |
const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_SSE( |
228 |
const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_SSE( |
229 |
-- a/skia/ext/convolver.h |
229 |
++ b/skia/ext/convolver.h |
Lines 17-23
Link Here
|
17 |
// We can build SSE2 optimized versions for all x86 CPUs |
17 |
// We can build SSE2 optimized versions for all x86 CPUs |
18 |
// except when building for the IOS emulator. |
18 |
// except when building for the IOS emulator. |
19 |
#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_IOS) |
19 |
#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_IOS) |
20 |
#define SIMD_SSE2 1 |
|
|
21 |
#define SIMD_PADDING 8 // 8 * int16_t |
20 |
#define SIMD_PADDING 8 // 8 * int16_t |
22 |
#endif |
21 |
#endif |
23 |
|
22 |
|
24 |
-- a/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp |
23 |
++ b/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp |
Lines 35-41
Link Here
|
35 |
#include <Accelerate/Accelerate.h> |
35 |
#include <Accelerate/Accelerate.h> |
36 |
#endif |
36 |
#endif |
37 |
|
37 |
|
38 |
#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_MACOSX) |
38 |
#if defined(ARCH_CPU_X86_64) && !defined(OS_MACOSX) |
39 |
#include <emmintrin.h> |
39 |
#include <emmintrin.h> |
40 |
#endif |
40 |
#endif |
41 |
|
41 |
|
Lines 83-89
void DirectConvolver::Process(AudioFloat
Link Here
|
83 |
#endif // ARCH_CPU_X86 |
83 |
#endif // ARCH_CPU_X86 |
84 |
#else |
84 |
#else |
85 |
size_t i = 0; |
85 |
size_t i = 0; |
86 |
#if defined(ARCH_CPU_X86_FAMILY) |
86 |
#if defined(ARCH_CPU_X86_64) |
87 |
// Convolution using SSE2. Currently only do this if both |kernelSize| and |
87 |
// Convolution using SSE2. Currently only do this if both |kernelSize| and |
88 |
// |framesToProcess| are multiples of 4. If not, use the straightforward loop |
88 |
// |framesToProcess| are multiples of 4. If not, use the straightforward loop |
89 |
// below. |
89 |
// below. |
Lines 397-403
void DirectConvolver::Process(AudioFloat
Link Here
|
397 |
} |
397 |
} |
398 |
dest_p[i++] = sum; |
398 |
dest_p[i++] = sum; |
399 |
} |
399 |
} |
400 |
#if defined(ARCH_CPU_X86_FAMILY) |
400 |
#if defined(ARCH_CPU_X86_64) |
401 |
} |
401 |
} |
402 |
#endif |
402 |
#endif |
403 |
#endif // OS_MACOSX |
403 |
#endif // OS_MACOSX |
404 |
-- a/third_party/WebKit/Source/platform/audio/SincResampler.cpp |
404 |
++ b/third_party/WebKit/Source/platform/audio/SincResampler.cpp |
Lines 32-38
Link Here
|
32 |
#include "platform/audio/AudioBus.h" |
32 |
#include "platform/audio/AudioBus.h" |
33 |
#include "platform/wtf/MathExtras.h" |
33 |
#include "platform/wtf/MathExtras.h" |
34 |
|
34 |
|
35 |
#if defined(ARCH_CPU_X86_FAMILY) |
35 |
#if defined(ARCH_CPU_X86_64) |
36 |
#include <emmintrin.h> |
36 |
#include <emmintrin.h> |
37 |
#endif |
37 |
#endif |
38 |
|
38 |
|
Lines 277-283
void SincResampler::Process(AudioSourceP
Link Here
|
277 |
{ |
277 |
{ |
278 |
float input; |
278 |
float input; |
279 |
|
279 |
|
280 |
#if defined(ARCH_CPU_X86_FAMILY) |
280 |
#if defined(ARCH_CPU_X86_64) |
281 |
// If the sourceP address is not 16-byte aligned, the first several |
281 |
// If the sourceP address is not 16-byte aligned, the first several |
282 |
// frames (at most three) should be processed seperately. |
282 |
// frames (at most three) should be processed seperately. |
283 |
while ((reinterpret_cast<uintptr_t>(input_p) & 0x0F) && n) { |
283 |
while ((reinterpret_cast<uintptr_t>(input_p) & 0x0F) && n) { |
284 |
-- a/third_party/WebKit/Source/platform/audio/VectorMath.cpp |
284 |
++ b/third_party/WebKit/Source/platform/audio/VectorMath.cpp |
Lines 37-43
Link Here
|
37 |
#include "platform/audio/cpu/arm/VectorMathNEON.h" |
37 |
#include "platform/audio/cpu/arm/VectorMathNEON.h" |
38 |
#elif HAVE_MIPS_MSA_INTRINSICS |
38 |
#elif HAVE_MIPS_MSA_INTRINSICS |
39 |
#include "platform/audio/cpu/mips/VectorMathMSA.h" |
39 |
#include "platform/audio/cpu/mips/VectorMathMSA.h" |
40 |
#elif defined(ARCH_CPU_X86_FAMILY) |
40 |
#elif defined(ARCH_CPU_X86_64) |
41 |
#include "platform/audio/cpu/x86/VectorMathX86.h" |
41 |
#include "platform/audio/cpu/x86/VectorMathX86.h" |
42 |
#else |
42 |
#else |
43 |
#include "platform/audio/VectorMathScalar.h" |
43 |
#include "platform/audio/VectorMathScalar.h" |
Lines 54-60
namespace Impl = Mac;
Link Here
|
54 |
namespace Impl = NEON; |
54 |
namespace Impl = NEON; |
55 |
#elif HAVE_MIPS_MSA_INTRINSICS |
55 |
#elif HAVE_MIPS_MSA_INTRINSICS |
56 |
namespace Impl = MSA; |
56 |
namespace Impl = MSA; |
57 |
#elif defined(ARCH_CPU_X86_FAMILY) |
57 |
#elif defined(ARCH_CPU_X86_64) |
58 |
namespace Impl = X86; |
58 |
namespace Impl = X86; |
59 |
#else |
59 |
#else |
60 |
namespace Impl = Scalar; |
60 |
namespace Impl = Scalar; |
61 |
-- a/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h |
61 |
++ b/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h |
Lines 7-13
Link Here
|
7 |
|
7 |
|
8 |
#include "build/build_config.h" |
8 |
#include "build/build_config.h" |
9 |
|
9 |
|
10 |
#if defined(ARCH_CPU_X86_FAMILY) |
10 |
#if defined(ARCH_CPU_X86_64) |
11 |
#include <emmintrin.h> |
11 |
#include <emmintrin.h> |
12 |
|
12 |
|
13 |
namespace blink { |
13 |
namespace blink { |
Lines 195-200
ALWAYS_INLINE void PackOneRowOfRGBA8Litt
Link Here
|
195 |
} // namespace SIMD |
195 |
} // namespace SIMD |
196 |
} // namespace blink |
196 |
} // namespace blink |
197 |
|
197 |
|
198 |
#endif // ARCH_CPU_X86_FAMILY |
198 |
#endif // ARCH_CPU_X86_64 |
199 |
|
199 |
|
200 |
#endif // WebGLImageConversionSSE_h |
200 |
#endif // WebGLImageConversionSSE_h |
201 |
-- a/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp |
201 |
++ b/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp |
Lines 444-450
void Unpack<WebGLImageConversion::kDataF
Link Here
|
444 |
const uint32_t* source32 = reinterpret_cast_ptr<const uint32_t*>(source); |
444 |
const uint32_t* source32 = reinterpret_cast_ptr<const uint32_t*>(source); |
445 |
uint32_t* destination32 = reinterpret_cast_ptr<uint32_t*>(destination); |
445 |
uint32_t* destination32 = reinterpret_cast_ptr<uint32_t*>(destination); |
446 |
|
446 |
|
447 |
#if defined(ARCH_CPU_X86_FAMILY) |
447 |
#if defined(ARCH_CPU_X86_64) |
448 |
SIMD::UnpackOneRowOfBGRA8LittleToRGBA8(source32, destination32, |
448 |
SIMD::UnpackOneRowOfBGRA8LittleToRGBA8(source32, destination32, |
449 |
pixels_per_row); |
449 |
pixels_per_row); |
450 |
#endif |
450 |
#endif |
Lines 472-478
void Unpack<WebGLImageConversion::kDataF
Link Here
|
472 |
const uint16_t* source, |
472 |
const uint16_t* source, |
473 |
uint8_t* destination, |
473 |
uint8_t* destination, |
474 |
unsigned pixels_per_row) { |
474 |
unsigned pixels_per_row) { |
475 |
#if defined(ARCH_CPU_X86_FAMILY) |
475 |
#if defined(ARCH_CPU_X86_64) |
476 |
SIMD::UnpackOneRowOfRGBA5551LittleToRGBA8(source, destination, |
476 |
SIMD::UnpackOneRowOfRGBA5551LittleToRGBA8(source, destination, |
477 |
pixels_per_row); |
477 |
pixels_per_row); |
478 |
#endif |
478 |
#endif |
Lines 502-508
void Unpack<WebGLImageConversion::kDataF
Link Here
|
502 |
const uint16_t* source, |
502 |
const uint16_t* source, |
503 |
uint8_t* destination, |
503 |
uint8_t* destination, |
504 |
unsigned pixels_per_row) { |
504 |
unsigned pixels_per_row) { |
505 |
#if defined(ARCH_CPU_X86_FAMILY) |
505 |
#if defined(ARCH_CPU_X86_64) |
506 |
SIMD::UnpackOneRowOfRGBA4444LittleToRGBA8(source, destination, |
506 |
SIMD::UnpackOneRowOfRGBA4444LittleToRGBA8(source, destination, |
507 |
pixels_per_row); |
507 |
pixels_per_row); |
508 |
#endif |
508 |
#endif |
Lines 718-724
void Pack<WebGLImageConversion::kDataFor
Link Here
|
718 |
uint8_t>(const uint8_t* source, |
718 |
uint8_t>(const uint8_t* source, |
719 |
uint8_t* destination, |
719 |
uint8_t* destination, |
720 |
unsigned pixels_per_row) { |
720 |
unsigned pixels_per_row) { |
721 |
#if defined(ARCH_CPU_X86_FAMILY) |
721 |
#if defined(ARCH_CPU_X86_64) |
722 |
SIMD::PackOneRowOfRGBA8LittleToR8(source, destination, pixels_per_row); |
722 |
SIMD::PackOneRowOfRGBA8LittleToR8(source, destination, pixels_per_row); |
723 |
#endif |
723 |
#endif |
724 |
#if HAVE_MIPS_MSA_INTRINSICS |
724 |
#if HAVE_MIPS_MSA_INTRINSICS |
Lines 775-781
void Pack<WebGLImageConversion::kDataFor
Link Here
|
775 |
uint8_t>(const uint8_t* source, |
775 |
uint8_t>(const uint8_t* source, |
776 |
uint8_t* destination, |
776 |
uint8_t* destination, |
777 |
unsigned pixels_per_row) { |
777 |
unsigned pixels_per_row) { |
778 |
#if defined(ARCH_CPU_X86_FAMILY) |
778 |
#if defined(ARCH_CPU_X86_64) |
779 |
SIMD::PackOneRowOfRGBA8LittleToRA8(source, destination, pixels_per_row); |
779 |
SIMD::PackOneRowOfRGBA8LittleToRA8(source, destination, pixels_per_row); |
780 |
#endif |
780 |
#endif |
781 |
#if HAVE_MIPS_MSA_INTRINSICS |
781 |
#if HAVE_MIPS_MSA_INTRINSICS |
Lines 887-893
void Pack<WebGLImageConversion::kDataFor
Link Here
|
887 |
uint8_t>(const uint8_t* source, |
887 |
uint8_t>(const uint8_t* source, |
888 |
uint8_t* destination, |
888 |
uint8_t* destination, |
889 |
unsigned pixels_per_row) { |
889 |
unsigned pixels_per_row) { |
890 |
#if defined(ARCH_CPU_X86_FAMILY) |
890 |
#if defined(ARCH_CPU_X86_64) |
891 |
SIMD::PackOneRowOfRGBA8LittleToRGBA8(source, destination, pixels_per_row); |
891 |
SIMD::PackOneRowOfRGBA8LittleToRGBA8(source, destination, pixels_per_row); |
892 |
#endif |
892 |
#endif |
893 |
#if HAVE_MIPS_MSA_INTRINSICS |
893 |
#if HAVE_MIPS_MSA_INTRINSICS |
894 |
-- a/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp |
894 |
++ b/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp |
Lines 39-45
Link Here
|
39 |
#include "platform/wtf/CPU.h" |
39 |
#include "platform/wtf/CPU.h" |
40 |
#include "platform/wtf/MathExtras.h" |
40 |
#include "platform/wtf/MathExtras.h" |
41 |
|
41 |
|
42 |
#if defined(ARCH_CPU_X86_FAMILY) |
42 |
#if defined(ARCH_CPU_X86_64) |
43 |
#include <emmintrin.h> |
43 |
#include <emmintrin.h> |
44 |
#endif |
44 |
#endif |
45 |
|
45 |
|
Lines 1333-1339
std::tuple<size_t, float, unsigned> Audi
Link Here
|
1333 |
size_t current_frame, |
1333 |
size_t current_frame, |
1334 |
float value, |
1334 |
float value, |
1335 |
unsigned write_index) { |
1335 |
unsigned write_index) { |
1336 |
#if defined(ARCH_CPU_X86_FAMILY) |
1336 |
#if defined(ARCH_CPU_X86_64) |
1337 |
auto number_of_values = current_state.number_of_values; |
1337 |
auto number_of_values = current_state.number_of_values; |
1338 |
#endif |
1338 |
#endif |
1339 |
auto fill_to_frame = current_state.fill_to_frame; |
1339 |
auto fill_to_frame = current_state.fill_to_frame; |
Lines 1346-1352
std::tuple<size_t, float, unsigned> Audi
Link Here
|
1346 |
double delta_time = time2 - time1; |
1346 |
double delta_time = time2 - time1; |
1347 |
float k = delta_time > 0 ? 1 / delta_time : 0; |
1347 |
float k = delta_time > 0 ? 1 / delta_time : 0; |
1348 |
const float value_delta = value2 - value1; |
1348 |
const float value_delta = value2 - value1; |
1349 |
#if defined(ARCH_CPU_X86_FAMILY) |
1349 |
#if defined(ARCH_CPU_X86_64) |
1350 |
if (fill_to_frame > write_index) { |
1350 |
if (fill_to_frame > write_index) { |
1351 |
// Minimize in-loop operations. Calculate starting value and increment. |
1351 |
// Minimize in-loop operations. Calculate starting value and increment. |
1352 |
// Next step: value += inc. |
1352 |
// Next step: value += inc. |
Lines 1474-1480
std::tuple<size_t, float, unsigned> Audi
Link Here
|
1474 |
size_t current_frame, |
1474 |
size_t current_frame, |
1475 |
float value, |
1475 |
float value, |
1476 |
unsigned write_index) { |
1476 |
unsigned write_index) { |
1477 |
#if defined(ARCH_CPU_X86_FAMILY) |
1477 |
#if defined(ARCH_CPU_X86_64) |
1478 |
auto number_of_values = current_state.number_of_values; |
1478 |
auto number_of_values = current_state.number_of_values; |
1479 |
#endif |
1479 |
#endif |
1480 |
auto fill_to_frame = current_state.fill_to_frame; |
1480 |
auto fill_to_frame = current_state.fill_to_frame; |
Lines 1524-1530
std::tuple<size_t, float, unsigned> Audi
Link Here
|
1524 |
for (; write_index < fill_to_frame; ++write_index) |
1524 |
for (; write_index < fill_to_frame; ++write_index) |
1525 |
values[write_index] = target; |
1525 |
values[write_index] = target; |
1526 |
} else { |
1526 |
} else { |
1527 |
#if defined(ARCH_CPU_X86_FAMILY) |
1527 |
#if defined(ARCH_CPU_X86_64) |
1528 |
if (fill_to_frame > write_index) { |
1528 |
if (fill_to_frame > write_index) { |
1529 |
// Resolve recursion by expanding constants to achieve a 4-step |
1529 |
// Resolve recursion by expanding constants to achieve a 4-step |
1530 |
// loop unrolling. |
1530 |
// loop unrolling. |
Lines 1658-1664
std::tuple<size_t, float, unsigned> Audi
Link Here
|
1658 |
// Oversampled curve data can be provided if sharp discontinuities are |
1658 |
// Oversampled curve data can be provided if sharp discontinuities are |
1659 |
// desired. |
1659 |
// desired. |
1660 |
unsigned k = 0; |
1660 |
unsigned k = 0; |
1661 |
#if defined(ARCH_CPU_X86_FAMILY) |
1661 |
#if defined(ARCH_CPU_X86_64) |
1662 |
if (fill_to_frame > write_index) { |
1662 |
if (fill_to_frame > write_index) { |
1663 |
const __m128 v_curve_virtual_index = _mm_set_ps1(curve_virtual_index); |
1663 |
const __m128 v_curve_virtual_index = _mm_set_ps1(curve_virtual_index); |
1664 |
const __m128 v_curve_points_per_frame = _mm_set_ps1(curve_points_per_frame); |
1664 |
const __m128 v_curve_points_per_frame = _mm_set_ps1(curve_points_per_frame); |