/*Some common macros for potential platform-specific optimization.*/ #include"opus_types.h" #include <math.h> #include <limits.h> #include"arch.h" #if !defined(_ecintrin_H) # define _ecintrin_H (1)
/*Some specific platforms may have optimized intrinsic or OPUS_INLINE assembly versionsofthesefunctionswhichcansubstantiallyimproveperformance. Wedefinemacrosforthemtoalloweasyincorporationofthesenon-ANSI
features.*/
/*Modern gcc (4.x) can compile the naive versions of min and max with cmov if givenanappropriatearchitecture,butthebranchlessbit-twiddlingversions arejustasfast,anddonotrequireanyspecialtargetarchitecture. Earliergccversions(3.x)compiledbothcodetothesameassembly
instructions, because of the way they represented ((_b)>(_a)) internally.*/ # define EC_MINI(_a,_b) ((_a)+(((_b)-(_a))&-((_b)<(_a))))
/*Count leading zeros. Thismacroshouldonlybeusedforimplementingec_ilog(),ifitisdefined.
All other code should use EC_ILOG() instead.*/ #ifdefined(_MSC_VER) && (_MSC_VER >= 1400) #ifdefined(_MSC_VER) && (_MSC_VER >= 1910) # include <intrin0.h> /* Improve compiler throughput. */ #else # include <intrin.h> #endif /*In _DEBUG mode this is not an intrinsic by default.*/ # pragma intrinsic(_BitScanReverse)
#ifdefined(EC_CLZ) /*Note that __builtin_clz is not defined when _x==0, according to the gcc documentation(andthatoftheBSRinstructionthatimplementsitonx86). Themajorityofthetimewecanneverpassitzero.
When we need to, it can be special cased.*/ # define EC_ILOG(_x) (EC_CLZ0-EC_CLZ(_x)) #else int ec_ilog(opus_uint32 _v); # define EC_ILOG(_x) (ec_ilog(_x)) #endif #endif
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-09-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.