From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- docs/doxygen/nel/a02515.html | 264 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 264 insertions(+) create mode 100644 docs/doxygen/nel/a02515.html (limited to 'docs/doxygen/nel/a02515.html') diff --git a/docs/doxygen/nel/a02515.html b/docs/doxygen/nel/a02515.html new file mode 100644 index 00000000..aef8a969 --- /dev/null +++ b/docs/doxygen/nel/a02515.html @@ -0,0 +1,264 @@ + + +NeL: NLMISC::CFastMem class Reference + + + +
+

NLMISC::CFastMem Class Reference

#include <fast_mem.h> +

+


Detailed Description

+Functions for Fast Memory manipulation with Pentium-class processors. From http://www.sgi.com/developers/technology/irix/resources/asc_cpu.html
Author:
Lionel Berenguier

+Nevrax France

+
Date:
2002
+ +

+ +

+Definition at line 44 of file fast_mem.h. + + + + + + + + + + + + + +

Static Public Member Functions

void * memcpySSE (void *dst, const void *src, size_t nbytes)
void precache (const void *src, uint nbytes)
void precacheMMX (const void *src, uint nbytes)
void precacheSSE (const void *src, uint nbytes)

Static Public Attributes

void *(* memcpy )(void *dts, const void *src, size_t nbytes)
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
void * NLMISC::CFastMem::memcpySSE void *  dst,
const void *  src,
size_t  nbytes
[static]
+
+ + + + + +
+   + + +

+Fast memcpy using SSE instructions: prefetchnta and movntq. Can be called only if SSE and MMX is supported NB: Copy per block of 4K through L1 cache Result is typically 420 Mo/s instead of 150 Mo/s. +

+Definition at line 205 of file fast_mem.cpp. +

+References memcpy, and src. +

+

00206 {
+00207         // Use std memcpy.
+00208         return memcpy(dst, src, nbytes);
+00209 }
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + +
void NLMISC::CFastMem::precache const void *  src,
uint  nbytes
[static]
+
+ + + + + +
+   + + +

+Fast precaching of memory in L1 cache using SSE or MMX where available (NB: others methods don't do the test) nbytes should not override 4K +

+Definition at line 218 of file fast_mem.cpp. +

+References src, and uint. +

+

00219 {
+00220         // no-op.
+00221 }
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + +
void NLMISC::CFastMem::precacheMMX const void *  src,
uint  nbytes
[static]
+
+ + + + + +
+   + + +

+Fast precaching of memory in L1 cache using MMX instructions only: movq Result is typically 720 Mo/s (surely slower because of overhead). Hence prefer precacheSSE() when available. nbytes should not override 4K +

+Definition at line 214 of file fast_mem.cpp. +

+References src, and uint. +

+

00215 {
+00216         // no-op.
+00217 }
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + +
void NLMISC::CFastMem::precacheSSE const void *  src,
uint  nbytes
[static]
+
+ + + + + +
+   + + +

+Fast precaching of memory in L1 cache using MMX/SSE instructions: movq and prefetchnta Result is typically 880 Mo/s (surely slower because of overhead). nbytes should not override 4K +

+Definition at line 210 of file fast_mem.cpp. +

+References src, and uint. +

+

00211 {
+00212         // no-op.
+00213 }
+
+


Field Documentation

+

+ + + + +
+ + +
void *(* NLMISC::CFastMem::memcpy)(void *dts, const void *src, size_t nbytes)=findBestmemcpy() [static] +
+
+ + + + + +
+   + + +

+This is a function pointer that points on the best memcpy function available depending of the OS and proc. In the best case, it will use memcpySSE(), and in worst case, it'll use the libc memcpy() Simply use it this way: CFastMem::memcpy(dst, src, size); +

+Definition at line 239 of file fast_mem.cpp. +

+Referenced by NLSOUND::CContextSoundContainer< NbJoker, UseRandom, Shift >::init(), and memcpySSE().

+


The documentation for this class was generated from the following files: +
Generated on Tue Mar 16 13:12:28 2004 for NeL by + +doxygen +1.3.6
+ + -- cgit v1.2.1