FFmpeg
Data Structures | Macros | Typedefs
asm.h File Reference
#include <stdint.h>
#include "config.h"

Go to the source code of this file.

Data Structures

struct  xmm_reg
 
struct  ymm_reg
 

Macros

#define HAVE_7REGS   (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE))
 
#define HAVE_6REGS   (ARCH_X86_64 || (HAVE_EBX_AVAILABLE || HAVE_EBP_AVAILABLE))
 
#define XMM_CLOBBERS(...)
 
#define XMM_CLOBBERS_ONLY(...)
 
#define LABEL_MANGLE(a)   EXTERN_PREFIX #a
 
#define LOCAL_MANGLE(a)   #a
 
#define MANGLE(a)   "%["#a"]"
 
#define FE_0(P, X)   P(X)
 
#define FE_1(P, X, X1)   P(X), FE_0(P,X1)
 
#define FE_2(P, X, X1, X2)   P(X), FE_1(P,X1,X2)
 
#define FE_3(P, X, X1, X2, X3)   P(X), FE_2(P,X1,X2,X3)
 
#define FE_4(P, X, X1, X2, X3, X4)   P(X), FE_3(P,X1,X2,X3,X4)
 
#define FE_5(P, X, X1, X2, X3, X4, X5)   P(X), FE_4(P,X1,X2,X3,X4,X5)
 
#define FE_6(P, X, X1, X2, X3, X4, X5, X6)   P(X), FE_5(P,X1,X2,X3,X4,X5,X6)
 
#define FE_7(P, X, X1, X2, X3, X4, X5, X6, X7)   P(X), FE_6(P,X1,X2,X3,X4,X5,X6,X7)
 
#define FE_8(P, X, X1, X2, X3, X4, X5, X6, X7, X8)   P(X), FE_7(P,X1,X2,X3,X4,X5,X6,X7,X8)
 
#define FE_9(P, X, X1, X2, X3, X4, X5, X6, X7, X8, X9)   P(X), FE_8(P,X1,X2,X3,X4,X5,X6,X7,X8,X9)
 
#define GET_FE_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, NAME, ...)   NAME
 
#define GET_FE(A)   GET_FE_IMPL A
 
#define GET_FE_GLUE(x, y)   x y
 
#define FOR_EACH_VA(P, ...)   GET_FE_GLUE(GET_FE((__VA_ARGS__,FE_9,FE_8,FE_7,FE_6,FE_5,FE_4,FE_3,FE_2,FE_1,FE_0)), (P,__VA_ARGS__))
 
#define NAME_CONSTRAINT(x)   [x] "m"(x)
 
#define NAMED_CONSTRAINTS_ADD(...)   , FOR_EACH_VA(NAME_CONSTRAINT,__VA_ARGS__)
 
#define NAMED_CONSTRAINTS(...)   FOR_EACH_VA(NAME_CONSTRAINT,__VA_ARGS__)
 
#define NAME_CONSTRAINT_ARRAY(x)   [x] "m"(*x)
 
#define NAMED_CONSTRAINTS_ARRAY_ADD(...)   , FOR_EACH_VA(NAME_CONSTRAINT_ARRAY,__VA_ARGS__)
 
#define NAMED_CONSTRAINTS_ARRAY(...)   FOR_EACH_VA(NAME_CONSTRAINT_ARRAY,__VA_ARGS__)
 

Typedefs

typedef int x86_reg
 

Macro Definition Documentation

◆ HAVE_7REGS

#define HAVE_7REGS   (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE))

Definition at line 75 of file asm.h.

◆ HAVE_6REGS

#define HAVE_6REGS   (ARCH_X86_64 || (HAVE_EBX_AVAILABLE || HAVE_EBP_AVAILABLE))

Definition at line 76 of file asm.h.

◆ XMM_CLOBBERS

#define XMM_CLOBBERS (   ...)

Definition at line 98 of file asm.h.

◆ XMM_CLOBBERS_ONLY

#define XMM_CLOBBERS_ONLY (   ...)

Definition at line 99 of file asm.h.

◆ LABEL_MANGLE

#define LABEL_MANGLE (   a)    EXTERN_PREFIX #a

Definition at line 103 of file asm.h.

◆ LOCAL_MANGLE

#define LOCAL_MANGLE (   a)    #a

Definition at line 109 of file asm.h.

◆ MANGLE

#define MANGLE (   a)    "%["#a"]"

Definition at line 127 of file asm.h.

◆ FE_0

#define FE_0 (   P,
 
)    P(X)

Definition at line 129 of file asm.h.

◆ FE_1

#define FE_1 (   P,
  X,
  X1 
)    P(X), FE_0(P,X1)

Definition at line 130 of file asm.h.

◆ FE_2

#define FE_2 (   P,
  X,
  X1,
  X2 
)    P(X), FE_1(P,X1,X2)

Definition at line 131 of file asm.h.

◆ FE_3

#define FE_3 (   P,
  X,
  X1,
  X2,
  X3 
)    P(X), FE_2(P,X1,X2,X3)

Definition at line 132 of file asm.h.

◆ FE_4

#define FE_4 (   P,
  X,
  X1,
  X2,
  X3,
  X4 
)    P(X), FE_3(P,X1,X2,X3,X4)

Definition at line 133 of file asm.h.

◆ FE_5

#define FE_5 (   P,
  X,
  X1,
  X2,
  X3,
  X4,
  X5 
)    P(X), FE_4(P,X1,X2,X3,X4,X5)

Definition at line 134 of file asm.h.

◆ FE_6

#define FE_6 (   P,
  X,
  X1,
  X2,
  X3,
  X4,
  X5,
  X6 
)    P(X), FE_5(P,X1,X2,X3,X4,X5,X6)

Definition at line 135 of file asm.h.

◆ FE_7

#define FE_7 (   P,
  X,
  X1,
  X2,
  X3,
  X4,
  X5,
  X6,
  X7 
)    P(X), FE_6(P,X1,X2,X3,X4,X5,X6,X7)

Definition at line 136 of file asm.h.

◆ FE_8

#define FE_8 (   P,
  X,
  X1,
  X2,
  X3,
  X4,
  X5,
  X6,
  X7,
  X8 
)    P(X), FE_7(P,X1,X2,X3,X4,X5,X6,X7,X8)

Definition at line 137 of file asm.h.

◆ FE_9

#define FE_9 (   P,
  X,
  X1,
  X2,
  X3,
  X4,
  X5,
  X6,
  X7,
  X8,
  X9 
)    P(X), FE_8(P,X1,X2,X3,X4,X5,X6,X7,X8,X9)

Definition at line 138 of file asm.h.

◆ GET_FE_IMPL

#define GET_FE_IMPL (   _0,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  NAME,
  ... 
)    NAME

Definition at line 139 of file asm.h.

◆ GET_FE

#define GET_FE (   A)    GET_FE_IMPL A

Definition at line 140 of file asm.h.

◆ GET_FE_GLUE

#define GET_FE_GLUE (   x,
 
)    x y

Definition at line 141 of file asm.h.

◆ FOR_EACH_VA

#define FOR_EACH_VA (   P,
  ... 
)    GET_FE_GLUE(GET_FE((__VA_ARGS__,FE_9,FE_8,FE_7,FE_6,FE_5,FE_4,FE_3,FE_2,FE_1,FE_0)), (P,__VA_ARGS__))

Definition at line 142 of file asm.h.

◆ NAME_CONSTRAINT

#define NAME_CONSTRAINT (   x)    [x] "m"(x)

Definition at line 143 of file asm.h.

◆ NAMED_CONSTRAINTS_ADD

#define NAMED_CONSTRAINTS_ADD (   ...)    , FOR_EACH_VA(NAME_CONSTRAINT,__VA_ARGS__)

Definition at line 145 of file asm.h.

◆ NAMED_CONSTRAINTS

#define NAMED_CONSTRAINTS (   ...)    FOR_EACH_VA(NAME_CONSTRAINT,__VA_ARGS__)

Definition at line 147 of file asm.h.

◆ NAME_CONSTRAINT_ARRAY

#define NAME_CONSTRAINT_ARRAY (   x)    [x] "m"(*x)

Definition at line 149 of file asm.h.

◆ NAMED_CONSTRAINTS_ARRAY_ADD

#define NAMED_CONSTRAINTS_ARRAY_ADD (   ...)    , FOR_EACH_VA(NAME_CONSTRAINT_ARRAY,__VA_ARGS__)

Definition at line 150 of file asm.h.

◆ NAMED_CONSTRAINTS_ARRAY

#define NAMED_CONSTRAINTS_ARRAY (   ...)    FOR_EACH_VA(NAME_CONSTRAINT_ARRAY,__VA_ARGS__)

Definition at line 151 of file asm.h.

Typedef Documentation

◆ x86_reg

typedef int x86_reg

Definition at line 72 of file asm.h.