test
[mesa.git] / src / mesa / x86 / assyntax.h
index 0a8c1bda97886d55fe569f86da45b5b02683ee8d..dfd1c4fe3a5286ad0bb369fd730a3e7f5cd59a1a 100644 (file)
 #define        DR6     %db6
 #define        DR7     %db7
 /* Floating-point Stack */
-#define        ST      %st
+#define _STX0  %st(0)
+#define _STX1  %st(1)
+#define _STX2  %st(2)
+#define _STX3  %st(3)
+#define _STX4  %st(4)
+#define _STX5  %st(5)
+#define _STX6  %st(6)
+#define _STX7  %st(7)
+#define ST(x)  CONCAT(_STX,x)
 /* MMX Registers */
 #define MM0    %mm0
 #define MM1    %mm1
 #endif /* ACK_ASSEMBLER */
 
 
-#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) \
- || (defined(linux) || defined(__OS2ELF__)) && defined(__ELF__) \
- || defined(__FreeBSD__) && __FreeBSD__ >= 3
+#if defined(__QNX__) || defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || defined(__ELF__) || defined(__GNU__)
 #define GLNAME(a)       a
 #else
 #define GLNAME(a)       CONCAT(_,a)
 #define P_XMM6         xmm6
 #define P_XMM7         xmm7
 
+#define        CONCAT(x, y)    x ## y
+
 #if defined(NASM_ASSEMBLER)
 
 #define ST(n) st ## n
 #define D_BYTE db
 /* #define SPACE */
 /* #define COMM */
+#if defined(__WATCOMC__)
+SECTION _TEXT public align=16 class=CODE use32 flat
+SECTION _DATA public align=16 class=DATA use32 flat
+#define SEG_TEXT SECTION _TEXT
+#define SEG_DATA SECTION _DATA
+#define SEG_BSS SECTION .bss
+#else
 #define SEG_DATA SECTION .data
 #define SEG_TEXT SECTION .text
 #define SEG_BSS SECTION .bss
+#endif
 
 #define D_SPACE(n) db n REP 0
 
 #define B_REGIND(a)    BYTE_PTR [a]
 
 /* Register b indirect plus displacement a */
-#define P_REGOFF(a, b)         [a + b]
-#define X_REGOFF(a, b)         TBYTE_PTR [a + b]
-#define D_REGOFF(a, b)         QWORD_PTR [a + b]
-#define L_REGOFF(a, b)         DWORD_PTR [a + b]
-#define W_REGOFF(a, b)         WORD_PTR [a + b]
-#define B_REGOFF(a, b)         BYTE_PTR [a + b]
+#define P_REGOFF(a, b)         [b + a]
+#define X_REGOFF(a, b)         TBYTE_PTR [b + a]
+#define D_REGOFF(a, b)         QWORD_PTR [b + a]
+#define L_REGOFF(a, b)         DWORD_PTR [b + a]
+#define W_REGOFF(a, b)         WORD_PTR [b + a]
+#define B_REGOFF(a, b)         BYTE_PTR [b + a]
 
 /* Reg indirect Base + Index + Displacement  - this is mainly for 16-bit mode
  * which has no scaling
 #define B_REGDB(d, b)  BYTE_PTR [b + d]
 
 /* Variable indirect: */
-#define VARINDIRECT(var)       [var]
+#define VARINDIRECT(var)       var
 
 /* Use register contents as jump/call target: */
-#define CODEPTR(reg)   [reg]
+#define CODEPTR(reg)   reg
 
 /*
  *     Redefine assembler commands
 #else
 #define P_ARG1(a)      a
 #define P_ARG2(a, b)   a, b
-#define P_ARG3(a, b)   a, b, c
+#define P_ARG3(a, b, c)        a, b, c
 #endif
 
 /* MMX */
 
 #define FEMMS  femms
 #define PREFETCH(a)    prefetch P_ARG1(a)
+#define PREFETCHW(a)    prefetchw P_ARG1(a)
 
 /* Intel SSE */
 #define ADDPS(a, b)    addps P_ARG2(a, b)
        #define CMPPS(a, b, c)  cmpps P_ARG3(a, b, c)
        #define CMPSS(a, b, c)  cmpss P_ARG3(a, b, c)
 */
-#define CMPEQPS(a, b)  cmpeqps P_ARG3(a, b)
-#define CMPLTPS(a, b)  cmpltps P_ARG3(a, b)
-#define CMPLEPS(a, b)  cmpleps P_ARG3(a, b)
-#define CMPUNORDPS(a, b)       cmpunordps P_ARG3(a, b)
-#define CMPNEQPS(a, b) cmpneqps P_ARG3(a, b)
-#define CMPNLTPS(a, b) cmpnltps P_ARG3(a, b)
-#define CMPNLEPS(a, b) cmpnleps P_ARG3(a, b)
-#define CMPORDPS(a, b) cmpordps P_ARG3(a, b)
-#define CMPEQSS(a, b)  cmpeqss P_ARG3(a, b)
-#define CMPLTSS(a, b)  cmpltss P_ARG3(a, b)
-#define CMPLESS(a, b)  cmpless P_ARG3(a, b)
-#define CMPUNORDSS(a, b)       cmpunordss P_ARG3(a, b)
-#define CMPNEQSS(a, b) cmpneqss P_ARG3(a, b)
-#define CMPNLTSS(a, b) cmpnltss P_ARG3(a, b)
-#define CMPNLESS(a, b) cmpnless P_ARG3(a, b)
-#define CMPORDSS(a, b) cmpordss P_ARG3(a, b)
+#define CMPEQPS(a, b)  cmpeqps P_ARG2(a, b)
+#define CMPLTPS(a, b)  cmpltps P_ARG2(a, b)
+#define CMPLEPS(a, b)  cmpleps P_ARG2(a, b)
+#define CMPUNORDPS(a, b)       cmpunordps P_ARG2(a, b)
+#define CMPNEQPS(a, b) cmpneqps P_ARG2(a, b)
+#define CMPNLTPS(a, b) cmpnltps P_ARG2(a, b)
+#define CMPNLEPS(a, b) cmpnleps P_ARG2(a, b)
+#define CMPORDPS(a, b) cmpordps P_ARG2(a, b)
+#define CMPEQSS(a, b)  cmpeqss P_ARG2(a, b)
+#define CMPLTSS(a, b)  cmpltss P_ARG2(a, b)
+#define CMPLESS(a, b)  cmpless P_ARG2(a, b)
+#define CMPUNORDSS(a, b)       cmpunordss P_ARG2(a, b)
+#define CMPNEQSS(a, b) cmpneqss P_ARG2(a, b)
+#define CMPNLTSS(a, b) cmpnltss P_ARG2(a, b)
+#define CMPNLESS(a, b) cmpnless P_ARG2(a, b)
+#define CMPORDSS(a, b) cmpordss P_ARG2(a, b)
 #define COMISS(a, b)   comiss P_ARG2(a, b)
 #define CVTPI2PS(a, b) cvtpi2ps P_ARG2(a, b)
 #define CVTPS2PI(a, b) cvtps2pi P_ARG2(a, b)
 #define XORPS(a, b)    xorps P_ARG2(a, b)
 
 
+/* Added by BrianP for FreeBSD (per David Dawes) */
+#if !defined(NASM_ASSEMBLER) && !defined(MASM_ASSEMBLER)
+#define LLBL(a) CONCAT(.L,a)
+#else
+#define LLBL(a) a
+#endif
+
+
 #endif /* __ASSYNTAX_H__ */