2516
|
1 /*
|
|
2 This file contains most common definitions to make MMX stuff
|
|
3 easy portable between different kinds of mmx clones
|
|
4 Written By Nick Kurshev <nickols_k@mail.ru>
|
|
5 */
|
|
6
|
|
7 #ifndef MMXDEFS_INCLUDED
|
|
8 #define MMXDEFS_INCLUDED
|
|
9
|
|
10 #include "config.h"
|
|
11
|
|
12 #undef HAVE_MMX1
|
|
13 #if defined(HAVE_MMX) && !defined(HAVE_MMX2) && !defined(HAVE_3DNOW) && !defined(HAVE_SSE)
|
|
14 #define HAVE_MMX1
|
|
15 #endif
|
|
16
|
|
17 #undef HAVE_K6_2PLUS
|
|
18 #if !defined( HAVE_MMX2 ) && defined( HAVE_3DNOW )
|
|
19 #define HAVE_K6_2PLUS
|
|
20 #endif
|
|
21
|
|
22 #ifdef HAVE_SSE2
|
|
23 #define MMREG_SIZE 16
|
|
24 #else
|
|
25 #define MMREG_SIZE 8
|
|
26 #endif
|
|
27
|
|
28 #ifdef HAVE_3DNOW
|
|
29 #define PREFETCH "prefetch"
|
|
30 #define PREFETCHW "prefetchw"
|
2551
|
31 #define PAVGB "pavgusb"
|
2516
|
32 #elif defined ( HAVE_MMX2 )
|
|
33 #define PREFETCH "prefetchnta"
|
|
34 #define PREFETCHW "prefetcht0"
|
2551
|
35 #define PAVGB "pavgb"
|
2516
|
36 #else
|
|
37 #define PREFETCH "/nop"
|
|
38 #define PREFETCHW "/nop"
|
|
39 #endif
|
|
40
|
2551
|
41 #ifdef HAVE_3DNOW
|
2516
|
42 /* On K6 femms is faster of emms. On K7 femms is directly mapped on emms. */
|
|
43 #define EMMS "femms"
|
|
44 #else
|
|
45 #define EMMS "emms"
|
|
46 #endif
|
|
47
|
|
48 #ifdef HAVE_MMX2
|
|
49 #define MOVNTQ "movntq"
|
|
50 #define SFENCE "sfence"
|
|
51 #else
|
|
52 #define MOVNTQ "movq"
|
|
53 #define SFENCE "/nop"
|
|
54 #endif
|
|
55
|
|
56
|
|
57 #endif |