ReactOS 0.4.16-dev-295-g4aee028
simd.h File Reference
#include <emmintrin.h>
Include dependency graph for simd.h:

Go to the source code of this file.

Classes

union  LFLOAT
 
union  LDOUBLE
 
union  ML128
 
union  MMX80
 
struct  FPMMX
 
struct  _FXMM_SAVE_AREA
 
struct  SIMD_OP
 
struct  _SIMD_EXCEPTION_FLAGS
 
struct  _SIMD_RECORD
 
struct  _OPERAND_RECORD
 

Macros

#define DO_PRINT   0
 
#define USE_3DNOW_SDK   1
 
#define SUPPORTS_FTZ   1
 
#define SDIMCW_RC   0x6000
 
#define SDIRC_NEAR   0x0000
 
#define SDIRC_DOWN   0x2000
 
#define SDIRC_UP   0x4000
 
#define SDIRC_CHOP   0x6000
 
#define SDDAZ   0x0040
 
#define SDFTZ   0x8000
 
#define opADD   0x58
 
#define opAND   0x54
 
#define opANDN   0x55
 
#define opCMP   0xC2
 
#define opCOMISS   0x2F
 
#define opCVTPI2PS   0x2A
 
#define opCVTTPS2PI   0x2C
 
#define opCVTPS2PI   0x2D
 
#define opCVTPS2PD   0x5A
 
#define opCVTDQ2PS   0x5B
 
#define opCVTTPD2DQ   0xE6
 
#define opDIV   0x5E
 
#define opMAX   0x5F
 
#define opMIN   0x5D
 
#define opMUL   0x59
 
#define opSQRT   0x51
 
#define opSUB   0x5C
 
#define opUCOMISS   0x2E
 
#define ZF   (1 << 6)
 
#define PF   (1 << 2)
 
#define CF   (1 << 0)
 
#define REX_PREFIX   0x40
 
#define REX_W   0x8
 
#define REX_R   0x4
 
#define REX_X   0x2
 
#define REX_B   0x1
 
#define IEM_INEXACT   0x20
 
#define IEM_UNDERFLOW   0x10
 
#define IEM_OVERFLOW   0x08
 
#define IEM_ZERODIVIDE   0x04
 
#define IEM_DENORMAL   0x02
 
#define IEM_INVALID   0x01
 
#define IEM_MASK   0x3F
 
#define IMM_INEXACT   0x1000
 
#define IMM_UNDERFLOW   0x0800
 
#define IMM_OVERFLOW   0x0400
 
#define IMM_ZERODIVIDE   0x0200
 
#define IMM_DENORMAL   0x0100
 
#define IMM_INVALID   0x0080
 
#define IMM_MASK   0x1F80
 

Typedefs

typedef UINT_PTR AWORD
 
typedef unsigned _int64 QWORD
 
typedef struct _FXMM_SAVE_AREA FXMM_SAVE_AREA
 
typedef FXMM_SAVE_AREAPFXMM_SAVE_AREA
 
typedef struct SIMD_OPPSIMD_OP
 
typedef struct _SIMD_RECORD_PSIMD_RECORD
 

Enumerations

enum  InstType {
  fGdWsd , fGdWss , fQqWpd , fQqWps ,
  fVpdQq , fVpdWpd , fVpdWpdIb , fVpdWpdi ,
  fVpdWps , fVpdiWpd , fVpdiWps , fVpsQq ,
  fVpsWpd , fVpsWpdi , fVpsWps , fVpsWpsIb ,
  fVsdEd , fVsdWsd , fVsdWsdIb , fVsdWss ,
  fVssEd , fVssWsd , fVssWss , fVssWssIb
}
 
enum  OpType {
  oEd , oGd , oQq , oVpd ,
  oVpdi , oVps , oVsd , oVss ,
  oWpd , oWpdi , oWps , oWsd ,
  oWss
}
 
enum  OpClass {
  oXMMreg , oXMMmrm , oMMXreg , oMMXmrm ,
  oGENreg , oGENmrm
}
 
enum  DataType {
  dDW , dPD , dPDI , dPS ,
  dQ , dSD , dSS
}
 

Functions

typedef __declspec (align(16)) struct
 

Variables

 SSESINGLE
 
 SSEDOUBLE
 

Macro Definition Documentation

◆ CF

#define CF   (1 << 0)

Definition at line 157 of file simd.h.

◆ DO_PRINT

#define DO_PRINT   0

MIT License


Copyright (c) 2002-2019 Advanced Micro Devices, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this Software and associated documentaon files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Definition at line 51 of file simd.h.

◆ IEM_DENORMAL

#define IEM_DENORMAL   0x02

Definition at line 174 of file simd.h.

◆ IEM_INEXACT

#define IEM_INEXACT   0x20

Definition at line 170 of file simd.h.

◆ IEM_INVALID

#define IEM_INVALID   0x01

Definition at line 175 of file simd.h.

◆ IEM_MASK

#define IEM_MASK   0x3F

Definition at line 176 of file simd.h.

◆ IEM_OVERFLOW

#define IEM_OVERFLOW   0x08

Definition at line 172 of file simd.h.

◆ IEM_UNDERFLOW

#define IEM_UNDERFLOW   0x10

Definition at line 171 of file simd.h.

◆ IEM_ZERODIVIDE

#define IEM_ZERODIVIDE   0x04

Definition at line 173 of file simd.h.

◆ IMM_DENORMAL

#define IMM_DENORMAL   0x0100

Definition at line 182 of file simd.h.

◆ IMM_INEXACT

#define IMM_INEXACT   0x1000

Definition at line 178 of file simd.h.

◆ IMM_INVALID

#define IMM_INVALID   0x0080

Definition at line 183 of file simd.h.

◆ IMM_MASK

#define IMM_MASK   0x1F80

Definition at line 184 of file simd.h.

◆ IMM_OVERFLOW

#define IMM_OVERFLOW   0x0400

Definition at line 180 of file simd.h.

◆ IMM_UNDERFLOW

#define IMM_UNDERFLOW   0x0800

Definition at line 179 of file simd.h.

◆ IMM_ZERODIVIDE

#define IMM_ZERODIVIDE   0x0200

Definition at line 181 of file simd.h.

◆ opADD

#define opADD   0x58

Definition at line 135 of file simd.h.

◆ opAND

#define opAND   0x54

Definition at line 136 of file simd.h.

◆ opANDN

#define opANDN   0x55

Definition at line 137 of file simd.h.

◆ opCMP

#define opCMP   0xC2

Definition at line 138 of file simd.h.

◆ opCOMISS

#define opCOMISS   0x2F

Definition at line 139 of file simd.h.

◆ opCVTDQ2PS

#define opCVTDQ2PS   0x5B

Definition at line 144 of file simd.h.

◆ opCVTPI2PS

#define opCVTPI2PS   0x2A

Definition at line 140 of file simd.h.

◆ opCVTPS2PD

#define opCVTPS2PD   0x5A

Definition at line 143 of file simd.h.

◆ opCVTPS2PI

#define opCVTPS2PI   0x2D

Definition at line 142 of file simd.h.

◆ opCVTTPD2DQ

#define opCVTTPD2DQ   0xE6

Definition at line 145 of file simd.h.

◆ opCVTTPS2PI

#define opCVTTPS2PI   0x2C

Definition at line 141 of file simd.h.

◆ opDIV

#define opDIV   0x5E

Definition at line 146 of file simd.h.

◆ opMAX

#define opMAX   0x5F

Definition at line 147 of file simd.h.

◆ opMIN

#define opMIN   0x5D

Definition at line 148 of file simd.h.

◆ opMUL

#define opMUL   0x59

Definition at line 149 of file simd.h.

◆ opSQRT

#define opSQRT   0x51

Definition at line 150 of file simd.h.

◆ opSUB

#define opSUB   0x5C

Definition at line 151 of file simd.h.

◆ opUCOMISS

#define opUCOMISS   0x2E

Definition at line 152 of file simd.h.

◆ PF

#define PF   (1 << 2)

Definition at line 156 of file simd.h.

◆ REX_B

#define REX_B   0x1

Definition at line 164 of file simd.h.

◆ REX_PREFIX

#define REX_PREFIX   0x40

Definition at line 160 of file simd.h.

◆ REX_R

#define REX_R   0x4

Definition at line 162 of file simd.h.

◆ REX_W

#define REX_W   0x8

Definition at line 161 of file simd.h.

◆ REX_X

#define REX_X   0x2

Definition at line 163 of file simd.h.

◆ SDDAZ

#define SDDAZ   0x0040

Definition at line 132 of file simd.h.

◆ SDFTZ

#define SDFTZ   0x8000

Definition at line 133 of file simd.h.

◆ SDIMCW_RC

#define SDIMCW_RC   0x6000

Definition at line 125 of file simd.h.

◆ SDIRC_CHOP

#define SDIRC_CHOP   0x6000

Definition at line 129 of file simd.h.

◆ SDIRC_DOWN

#define SDIRC_DOWN   0x2000

Definition at line 127 of file simd.h.

◆ SDIRC_NEAR

#define SDIRC_NEAR   0x0000

Definition at line 126 of file simd.h.

◆ SDIRC_UP

#define SDIRC_UP   0x4000

Definition at line 128 of file simd.h.

◆ SUPPORTS_FTZ

#define SUPPORTS_FTZ   1

Definition at line 56 of file simd.h.

◆ USE_3DNOW_SDK

#define USE_3DNOW_SDK   1

Definition at line 55 of file simd.h.

◆ ZF

#define ZF   (1 << 6)

Definition at line 155 of file simd.h.

Typedef Documentation

◆ _PSIMD_RECORD

◆ AWORD

typedef UINT_PTR AWORD

Definition at line 64 of file simd.h.

◆ FXMM_SAVE_AREA

◆ PFXMM_SAVE_AREA

Definition at line 309 of file simd.h.

◆ PSIMD_OP

typedef struct SIMD_OP * PSIMD_OP

◆ QWORD

typedef unsigned _int64 QWORD

Definition at line 76 of file simd.h.

Enumeration Type Documentation

◆ DataType

Enumerator
dDW 
dPD 
dPDI 
dPS 
dQ 
dSD 
dSS 

Definition at line 251 of file simd.h.

252{
253 dDW, // integer DWORD
254 dPD, // packed double precision
255 dPDI, // packed integer DWORD
256 dPS, // packed single precision
257 dQ, // integer quadword
258 dSD, // scalar double precision
259 dSS // scalar single precision
260} DataType;
DataType
Definition: simd.h:252
@ dSD
Definition: simd.h:258
@ dQ
Definition: simd.h:257
@ dPD
Definition: simd.h:254
@ dSS
Definition: simd.h:259
@ dDW
Definition: simd.h:253
@ dPDI
Definition: simd.h:255
@ dPS
Definition: simd.h:256

◆ InstType

Enumerator
fGdWsd 
fGdWss 
fQqWpd 
fQqWps 
fVpdQq 
fVpdWpd 
fVpdWpdIb 
fVpdWpdi 
fVpdWps 
fVpdiWpd 
fVpdiWps 
fVpsQq 
fVpsWpd 
fVpsWpdi 
fVpsWps 
fVpsWpsIb 
fVsdEd 
fVsdWsd 
fVsdWsdIb 
fVsdWss 
fVssEd 
fVssWsd 
fVssWss 
fVssWssIb 

Definition at line 193 of file simd.h.

194{
195 fGdWsd,
196 fGdWss,
197 fQqWpd,
198 fQqWps,
199 fVpdQq,
200 fVpdWpd,
201 fVpdWpdIb,
202 fVpdWpdi,
203 fVpdWps,
204 fVpdiWpd,
205 fVpdiWps,
206 fVpsQq,
207 fVpsWpd,
208 fVpsWpdi,
209 fVpsWps,
210 fVpsWpsIb,
211 fVsdEd,
212 fVsdWsd,
213 fVsdWsdIb,
214 fVsdWss,
215 fVssEd,
216 fVssWsd,
217 fVssWss,
219} InstType;
InstType
Definition: simd.h:194
@ fVpdWpd
Definition: simd.h:200
@ fVpsQq
Definition: simd.h:206
@ fVssWss
Definition: simd.h:217
@ fVpdWpdi
Definition: simd.h:202
@ fGdWsd
Definition: simd.h:195
@ fVpdiWps
Definition: simd.h:205
@ fQqWpd
Definition: simd.h:197
@ fVpdQq
Definition: simd.h:199
@ fVsdWsd
Definition: simd.h:212
@ fVssEd
Definition: simd.h:215
@ fVpsWps
Definition: simd.h:209
@ fVssWsd
Definition: simd.h:216
@ fVsdEd
Definition: simd.h:211
@ fVsdWss
Definition: simd.h:214
@ fVpdiWpd
Definition: simd.h:204
@ fGdWss
Definition: simd.h:196
@ fVpdWps
Definition: simd.h:203
@ fVpsWpd
Definition: simd.h:207
@ fVpdWpdIb
Definition: simd.h:201
@ fVpsWpdi
Definition: simd.h:208
@ fVssWssIb
Definition: simd.h:218
@ fVsdWsdIb
Definition: simd.h:213
@ fQqWps
Definition: simd.h:198
@ fVpsWpsIb
Definition: simd.h:210

◆ OpClass

Enumerator
oXMMreg 
oXMMmrm 
oMMXreg 
oMMXmrm 
oGENreg 
oGENmrm 

Definition at line 240 of file simd.h.

241{
242 oXMMreg,
243 oXMMmrm,
244 oMMXreg,
245 oMMXmrm,
246 oGENreg,
247 oGENmrm,
248} OpClass;
OpClass
Definition: simd.h:241
@ oMMXreg
Definition: simd.h:244
@ oXMMreg
Definition: simd.h:242
@ oXMMmrm
Definition: simd.h:243
@ oMMXmrm
Definition: simd.h:245
@ oGENreg
Definition: simd.h:246
@ oGENmrm
Definition: simd.h:247

◆ OpType

Enumerator
oEd 
oGd 
oQq 
oVpd 
oVpdi 
oVps 
oVsd 
oVss 
oWpd 
oWpdi 
oWps 
oWsd 
oWss 

Definition at line 222 of file simd.h.

223{
224 oEd, //General register dword mod R/M
225 oGd, //General register dword
226 oQq, // MMX quadword mod R/M
227 oVpd, // XMM register
228 oVpdi,
229 oVps,
230 oVsd,
231 oVss,
232 oWpd, // XMM mod R/M
233 oWpdi,
234 oWps,
235 oWsd,
236 oWss
237} OpType;
OpType
Definition: simd.h:223
@ oVss
Definition: simd.h:231
@ oWpd
Definition: simd.h:232
@ oVpd
Definition: simd.h:227
@ oQq
Definition: simd.h:226
@ oWss
Definition: simd.h:236
@ oVsd
Definition: simd.h:230
@ oWpdi
Definition: simd.h:233
@ oGd
Definition: simd.h:225
@ oEd
Definition: simd.h:224
@ oWsd
Definition: simd.h:235
@ oWps
Definition: simd.h:234
@ oVps
Definition: simd.h:229
@ oVpdi
Definition: simd.h:228

Function Documentation

◆ __declspec()

typedef __declspec ( align(16)  )

Definition at line 84 of file simd.h.

85{
86 LFLOAT f0,f1,f2,f3;
87} SSESINGLE;
#define f2(x, y, z)
Definition: sha1.c:31
#define f1(x, y, z)
Definition: sha1.c:30
#define f3(x, y, z)
Definition: sha1.c:32
SSESINGLE
Definition: simd.h:87
Definition: simd.h:67

Variable Documentation

◆ SSEDOUBLE

SSEDOUBLE

Definition at line 92 of file simd.h.

◆ SSESINGLE

SSESINGLE

Definition at line 87 of file simd.h.