Académique Documents
Professionnel Documents
Culture Documents
Modelo de Ejecucion
A. Furfaro
16 de Agosto de 2013
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
1 / 115
Agenda
1
Procesamiento de Senales
digitales
de la senal
Digitalizacion
Arquitecturas de Procesamiento de una
digital
senal
SIMD
Modelo de ejecucion
Un modelo de paralelizacion
Extensiones AVX
Instrucciones
Transferencias (las mas comunes)
Aritmetica
en algoritmos DSP
Instrucciones de punto flotante
Instrucciones para manejo de enteros
para SSEn
Instrucciones para manejo de
cacheaabilidad
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
1 / 115
Procesamiento de Senales
digitales
de la senal
Digitalizacion
digitalizada
Senal
de una senal
responde al siguiente
El proceso de digitalizacion
modelo.
s(t)
s(t)
Muestreo
s(t)
Cuantificacin
011101
011110
110000
111000
111101
111110
111100
Codificacin
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
2 / 115
Procesamiento de Senales
digitales
de la senal
Digitalizacion
Muestreo y retencion
s(t)
Vo(t)
s(t)
CH
vSample(t)
vSample(t)
A. Furfaro ()
Hold
Se toma un valor
instantaneo
de la senal
y se retiene el valor
en una
de tension
capacidad, con un
circuito resistivo de
descarga de muy alta
resistencia.
Observar que el error
aumenta en los
cambios abruptos de
intel-symantec.
senal.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
3 / 115
Procesamiento de Senales
digitales
de la senal
Digitalizacion
y Codificacion
Cuantificacion
A. Furfaro ()
Se puede aproximar
por redondeo o
truncamiento
Independientemente
del metodo
el error
aumenta en las zonas
donde la derivada de la
es ma alta intel-symantec.
senal
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
4 / 115
Procesamiento de Senales
digitales
digital
Arquitecturas de Procesamiento de una senal
Procesador de Senales
Digitales
calculos
y procesamiento de un unico
tipo de datos: secuencias
de las muestras de
de valores correspondientes a la codificacion
de entrada.
una senal
Su arquitectura esta pensada para optimizar el procesamiento de
(8, 16, 24, o a lo sumo 32 bis).
datos que no son de gran tamano
audio, o de senales
medicas
o de mapas termicos,
etc.
La caracterstica distintiva de este tipo de datos reside en sus
algoritmos de calculo:
Normalmente se requiere procesar no solo
del valor actual con n valores
el valor actual sino la combinacion
anteriores en el tiempo, o vecinos (en el caso de una imagen lo
que llamaremos N8)
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
5 / 115
Procesamiento de Senales
digitales
digital
Arquitecturas de Procesamiento de una senal
Procesador de Senales
Digitales
muy frecuente son los filtros de
En general una operacion
dados por una expresion
del tipo:
convolucion,
N
X
y [n] =
an x[n i] =
i=0
Las tecnicas
de paralelismo que se desarrollaron en estos
Data Level
procesadores se denominaron por tal razon
Paralelism.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
6 / 115
Procesamiento de Senales
digitales
digital
Arquitecturas de Procesamiento de una senal
de un Procesador de Senales
En general el diseno
Digitales
concentra sus esfuerzos en resolver en paralelo:
El acceso a los operandos Para este fin se implementan buses
paralelos con una cantidad de lneas de datos
superior al ancho de palabra de la CPU
El almacenamiento de resultados Se resuelve mediante buses
dedicados para manejar la salida de la ALU hacia
memoria o registros (con las consideraciones que la
concurrencia de accesos debe tener en cuenta en el
hardware)
El procesamiento de la mayor cantidad de datos posible Los
primeros pasos se conocen como VLIW (Very Large
Instruction Word), que derivo en el modelo de
SIMD (Single Instruction Multiple Data)
ejecucion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
7 / 115
SIMD
Modelo de ejecucion
Un modelo de paralelizacion
Memoria
a1
a2
a3
a4
capaz de
Se trata de un modelo de ejecucion
sobre un conjunto de
computar una sola operacion
multiples
datos.
muestras tomados.
b1
b2
b3
b4
r1
r2
r3
r4
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
8 / 115
SIMD
Modelo de ejecucion
Un modelo de paralelizacion
Memoria
a1
a2
logica
sobre las cadenas de datos an y bn ,
almacenando el resultado en rn
a3
a4
b1
b2
b3
b4
r1
r2
r3
r4
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
9 / 115
SIMD
Modelo de ejecucion
Un modelo de paralelizacion
a1
R1
a2
R2
Operacin
SImple
a3
a4
R3
b1
b2
b3
b4
r1
r2
r3
r4
A. Furfaro ()
intel-symantec.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
10 / 115
SIMD
Modelo de ejecucion
Un modelo de paralelizacion
a1
a2
R1
a3
R2
Operacin
SImple
a4
R3
b1
b2
b3
b4
r1
r2
r3
r4
A. Furfaro ()
intel-symantec.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
11 / 115
SIMD
Modelo de ejecucion
Un modelo de paralelizacion
a1
a2
a3
a4
R1
Operacin
SImple
R2
b1
R3
b2
b3
b4
r1
r2
r3
r4
A. Furfaro ()
intel-symantec.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
12 / 115
SIMD
Modelo de ejecucion
Un modelo de paralelizacion
a1
a2
a3
a4
R1
Operacin
SImple
R2
b1
R3
b2
b3
b4
r1
r2
r3
r4
A. Furfaro ()
intel-symantec.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
13 / 115
SIMD
Modelo de ejecucion
Un modelo de paralelizacion
La operacion
en la segunda instruccion
Memoria
a1
Registro SIMD
a2
a3
a4
Operacin
SIMD
b1
b2
b3
Registro SIMD
b4
r1
Registro SIMD
r2
r3
intel-symantec.
r4
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
14 / 115
SIMD
Modelo de ejecucion
Un modelo de paralelizacion
SISD
SIMD
Instrucciones
A. Furfaro ()
Datos
Resultados
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
15 / 115
Registros
63
Tipos de datos
0
MMO
MM1
MM2
MM3
MM4
MM5
MM6
MM7
1 quad word
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
16 / 115
Tipos de datos
0
XMMO
XMM1
XMM2
XMM3
XMM4
XMM5
XMM6
XMM7
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
17 / 115
Tipos de datos
0
XMMO
XMM1
XMM2
XMM3
XMM4
XMM5
XMM6
XMM7
XMM8
XMM9
XMM10
XMM11
XMM12
XMM13
XMM14
intel-symantec.
XMM15
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
18 / 115
Arquitectura completa
ISA en 32 bits
15
31
1615
EAX AH
EBX BH
ECX CH
EDXDH
ESI
EDI
EBP
ESP
79
R0
R1
R2
R3
R4
R5
R6
R7
63
Registros de la FPU
CX
DX
SS
BL
DS
2^32 -1
FS
GS
DI
16 15
31
EIP
EFlags
BP
SP
IP
Flags
Registros XMM
127
XMM0
XMM1
XMM2
XMM3
XMM4
XMM5
XMM6
XMM7
Control Register
Status Register
Espacio de
direccionamiento
ES
CL
DL
SI
47
CS
AL
Mantisa
Exponente
15
AX
BX
31
XMCSR
0
Opcode Register
Tag Register
63
Registros MMX
MM0
MM1
MM2
MM3
MM4
MM5
MM6
MM7
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
19 / 115
Arquitectura completa
ISA en 64 bits
Registros de Propsito General
0
63
RAX
RBX
RCX
RDX
RSI
RDI
RBP
RSP
R8
R9
R10
R11
R12
R13
R14
R15
EAX
EBX
ECX
EDX
ESI
EDI
EBP
ESP
RIP
RFlags
EIP
EFlags
15
CS
Espacio de
direccionamiento
SS
DS
ES
2^64 -1
FS
GS
79
R0
R1
R2
R3
R4
R5
R6
R7
63
Registros de la FPU
47
15
Control Register
Status Register
11
Opcode Register
Tag Register
63
Registros MMX
MM0
MM1
MM2
MM3
MM4
MM5
MM6
MM7
A. Furfaro ()
Registros XMM
127
Mantisa
Exponente
XMM0
XMM1
XMM2
XMM3
XMM4
XMM5
XMM6
XMM7
XMM8
XMM9
XMM10
XMM11
XMM12
XMM13
XMM14
XMM15
31
XMCSR
intel-symantec.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
20 / 115
Numeros
Reales
Numeros
Reales
resolucion.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
21 / 115
Numeros
Reales
binaria de Numeros
Representacion
Reales
Formatos
de un numero
En general podemos formalizar la representacion
real
Punto Fijo
Punto Flotante
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
22 / 115
Numeros
Reales
Cientfica
Notacion
cientfica.
n = f 10e
725,832 = 7,25832 102 = 725,832 100
3,14 = 0,314 101 = 3,14 100
0,000001 = 0,1 105 = 1,0 106
1941 = 0,1941 104 = 1,941 103
se recurre a la notacion
cientfica
Para unificar la representacion
normalizada , en donde:
0,1 f < 1 ,y e es un entero con signo.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
23 / 115
Numeros
Reales
Cientfica
Notacion
cientfica.
n = f 10e
725,832 = 7,25832 102 = 725,832 100
3,14 = 0,314 101 = 3,14 100
0,000001 = 0,1 105 = 1,0 106
1941 = 0,1941 104 = 1,941 103
se recurre a la notacion
cientfica
Para unificar la representacion
normalizada , en donde:
0,1 f < 1 ,y e es un entero con signo.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
23 / 115
Numeros
Reales
Cientfica
Notacion
cientfica.
n = f 10e
725,832 = 7,25832 102 = 725,832 100
3,14 = 0,314 101 = 3,14 100
0,000001 = 0,1 105 = 1,0 106
1941 = 0,1941 104 = 1,941 103
se recurre a la notacion
cientfica
Para unificar la representacion
normalizada , en donde:
0,1 f < 1 ,y e es un entero con signo.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
23 / 115
Numeros
Reales
Cientfica
Notacion
cientfica.
n = f 10e
725,832 = 7,25832 102 = 725,832 100
3,14 = 0,314 101 = 3,14 100
0,000001 = 0,1 105 = 1,0 106
1941 = 0,1941 104 = 1,941 103
se recurre a la notacion
cientfica
Para unificar la representacion
normalizada , en donde:
0,1 f < 1 ,y e es un entero con signo.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
23 / 115
Numeros
Reales
Cientfica
Notacion
cientfica.
n = f 10e
725,832 = 7,25832 102 = 725,832 100
3,14 = 0,314 101 = 3,14 100
0,000001 = 0,1 105 = 1,0 106
1941 = 0,1941 104 = 1,941 103
se recurre a la notacion
cientfica
Para unificar la representacion
normalizada , en donde:
0,1 f < 1 ,y e es un entero con signo.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
23 / 115
Numeros
Reales
Cientfica
Notacion
cientfica.
n = f 10e
725,832 = 7,25832 102 = 725,832 100
3,14 = 0,314 101 = 3,14 100
0,000001 = 0,1 105 = 1,0 106
1941 = 0,1941 104 = 1,941 103
se recurre a la notacion
cientfica
Para unificar la representacion
normalizada , en donde:
0,1 f < 1 ,y e es un entero con signo.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
23 / 115
Numeros
Reales
de un numero
En donde:
0,5 f < 1 , y e es un entero con signo.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
24 / 115
del tipo:
Se representan mediante una expresion
(an an1 . . . a0 .a1 a2 . . . am )2 =
(1)s (an 2n + +a0 20 +a1 21 +a2 22 + +am 2m )
Donde:
s es el signo: 0 si el numero
es positivo y 1 si es negativo
un rango discreto.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
25 / 115
en Punto Flotante
Representacion
En donde:
1
2
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
26 / 115
en Punto Flotante
Representacion
con signo.
sin signo.
complemento.
con notacion
exceso m.
con notacion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
27 / 115
en Punto Flotante
Representacion
con signo.
sin signo.
complemento.
con notacion
exceso m.
con notacion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
27 / 115
en Punto Flotante
Representacion
con signo.
sin signo.
complemento.
con notacion
exceso m.
con notacion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
27 / 115
en Punto Flotante
Representacion
con signo.
sin signo.
complemento.
con notacion
exceso m.
con notacion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
27 / 115
en Punto Flotante
Representacion
con signo.
sin signo.
complemento.
con notacion
exceso m.
con notacion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
27 / 115
en Punto Flotante
Representacion
con signo.
sin signo.
complemento.
con notacion
exceso m.
con notacion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
27 / 115
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
28 / 115
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
29 / 115
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
30 / 115
de Numeros
Codificacion
Reales
de los numeros
Codificacion
normalizados... y los
demas
Ceros signados
Numeros
finitos de-normalizados
Numeros
finitos normalizados
Infinitos signados
NaNs (Not a Number)
Numeros
Indefinidos
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
31 / 115
de Numeros
Codificacion
Reales
Codigos
para cada caso
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
32 / 115
de Numeros
Codificacion
Reales
Ceros Signados
intervalo aritmetico
en el que se ubicara el
aritmetica
resultado si la precision
fuese mayor.
desde la cual ocurrio el
Indica la direccion
redondeo a cero, o el signo de un infinito que fue
intel-symantec.
invertido.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
33 / 115
de Numeros
Codificacion
Reales
Numeros
Finitos Normalizados
El rango de estos
numeros
se compone de todos los valores
reales entre 0 y .
estos
En el formato de punto flotante simple precision
numeros
se componen de todos aquellos cuyos exponentes
seguir expresandose
en este formato, ya que el rango del
exponente no puede compensar el desplazamiento a
izquierda del punto decimal.
Cuando se llega a un exponente cero en un numero
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
34 / 115
de Numeros
Codificacion
Reales
Numeros
Finitos Normalizados
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
35 / 115
de Numeros
Codificacion
Reales
cosas raras
Sobre infinitos y demas
Infinitos signados
NaNs
NaN = Not a Number.
No son parte del rango de numeros
reales.
excepcion.
SNaN: Signaled NaN. Tiene en cero el bit fraccional mas
invalida
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
36 / 115
de Numeros
Codificacion
Reales
de control y estado
Informacion
Cuando se introducen las extensiones SSE, con el Pentium III,
Intel incluye el registro MXCSR.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
37 / 115
de Numeros
Codificacion
Reales
Registro MXCSR
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
38 / 115
de Numeros
Codificacion
Reales
Registro MXCSR
de underflow, se ignora el bit
Si no se enmascara la excepcion
flush-to-zero. El modo flush-to-zerono es compatible con el
Standard IEEE 754.
La respuesta indicada por el IEEE a un underflow es entregar el
resultado denormalizado.
El modo flush-to-zerose provee en principio por razones de
performance.
de
ejecucion
para aplicaciones en donde la condicion
underflow es comun
y es tolerable el redondeo a cero cuando se
produce el underflow.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
39 / 115
Extensiones AVX
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
40 / 115
Extensiones AVX
Registros YMM
Las extensiones AVX
introducen una
en el tamano
extension
de los registros SIMD
desde 128 bits a 256
bits. Los registros XMM
de 128 bits, pasan a
ser la parte baja del
registro YMM
correspondiente.
soporta
Por lo demas
las mismas
instrucciones solo que
se extiende a tres y
hasta cuatro
operandos.
A. Furfaro ()
255
Registros
127
YMM0
XMM0
YMM1
XMM1
YMM2
XMM2
YMM3
XMM3
YMM4
XMM4
YMM5
XMM5
YMM6
XMM6
YMM7
XMM7
YMM8
XMM8
YMM9
XMM9
YMM10
XMM10
YMM11
XMM11
YMM12
XMM12
YMM13
XMM13
YMM14
XMM14
YMM15
XMM15
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
41 / 115
Instrucciones
Instrucciones de movimiento
MOVD Mover un valor de 32 bits a la parte baja de un operando
de 64 o 128 bits
MOVDQ Mover un valor de 64 bits a la parte baja de un operando
de 128 bits.
MOVDQ2Q Mover un valor de 64 bits a un registro MMX desde la
parte baja de un registro XMM.
MOVDQA Mover un valor de 64 bits alineado.
MOVDQU Mover un valor de 64 bits desalineado.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
42 / 115
Instrucciones
10
11
12
13
14
; //////////////////////////////////////////////////////
movd
mm4, ebx ;mm4[31 0] < ebx
movd
xmm1, dword [ e s i ]
;xmm1[31 0] < [ e s i ]
movq
xmm8, r 9 ;xmm8[63 0] < r 9
movq
qword [ ebp + 1 2 ] , xmm0; [ ebp +12] < xmm0 [63 0]
movdq2q mm5, xmm12 ;mm5 < xmm12 [63 0]
movdqa [ e s i ] , xmm5 ; S i e s i no c o n t i e n e un v a l o r
;mu l t i p l o de 16 , entonces l a
; v a r i a b l e no e s t a a l i n e a d a .
#GP
; Se genera una e x c e p c i on
movdqu xmm9, dqword [ r b x ]
S i r b x c o n t i e n e un v a l o r
;mu l t i p l o de 16 , entonces l a
; v a r i a b l e e s t a a l i n e a d a .
#GP
; Se genera una e x c e p c i on
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
43 / 115
Instrucciones
Aritmetica
en algoritmos DSP
La aplicacion
este flag y de
es tiempo de ejecucion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
44 / 115
Instrucciones
Aritmetica
en algoritmos DSP
La aplicacion
este flag y de
es tiempo de ejecucion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
44 / 115
Instrucciones
Aritmetica
en algoritmos DSP
La aplicacion
este flag y de
es tiempo de ejecucion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
44 / 115
Instrucciones
Aritmetica
en algoritmos DSP
La aplicacion
este flag y de
es tiempo de ejecucion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
44 / 115
Instrucciones
Aritmetica
en algoritmos DSP
La aplicacion
este flag y de
es tiempo de ejecucion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
44 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Aritmetica
de Desborde Del comportamiento planteado en el slide
anterior, proviene el nombre que se le ha asignado a la
forma de aritmetica
empleada por los procesadores
convencionales: Al llegar al extremo superior del rango
de que se denomina wraparound
realizan una operacion
y consiste en resetear el contador al valor inicial y setear
el flag de overflow). Si por el contrario se sustrae un
fuera de rango el
Aritmetica
Saturada Al producirse una condicion
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
45 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Aritmetica
Saturada
Lmite Inferior
Hexadecimal Decimal
0x80
-128
0x8000
-32768
Tipo de Dato
byte signado
word signada
Lmite Superior
Hexadecimal Decimal
0x7F
127
0x7FFF
32767
Cuadro: Aritmetica
Saturada Signada
Tipo de Dato
byte no signado
word no signada
Lmite Inferior
Hexadecimal Decimal
0x00
0
0x0000
0
Lmite Superior
Hexadecimal Decimal
0xFF
255
0xFFFF
65535
Cuadro: Aritmetica
Saturada No Signada
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
46 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Aritmetica
Saturada vs. Aritmetica
de Desborde
Consideremos la siguiente suma empaquetada de 8 bytes.
En el byte 6 puede observarse la diferencia entre ambas
operaciones
Byte
oper 1
oper 2
desb.
sat.
7
0x4D
0x32
0x7F
0x7F
6
0x23
0xFF
0x22
0xFF
5
0x9F
0x1A
0xB9
0xB9
4
0xC0
0x0D
0xCD
0xCD
3
0x11
0x3F
0x50
0x50
2
0x4A
0xAF
0xF9
0xF9
1
0x29
0xB0
0xD9
0xD9
0
0x0B
0x36
0x41
0x41
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
47 / 115
Instrucciones
Aritmetica
en algoritmos DSP
mas
de desborde.
Al procesar video, cuando un nivel de negro satura, no tiene
sentido seguir procesando la variable ya que no produce mas
efecto sobre la salida.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
48 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Instrucciones de Aritmetica
entera
Aritmetica
Operacion
Suma
Resta
Desborde
Saturada Signada
Saturada No signada
byte
PADDB
word
PADDW
word
PADDSW
byte
PADDUSB
word
PADDUSW
PSUBB
PSUBW
PSUBD
PSUBSW
PSUBUSB
PSUBUSW
PSUBQ
PSUBSB
PMULLW
PMULHW
PMULLUW
PMULHUW
PMULDQ
PMULUDQ
PMADDUBSW PMADDWD
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
49 / 115
Aritmetica
en algoritmos DSP
Instrucciones
D8
D7
D6
D5
D4
D3
D2
D1
D0
xmmi
B9
B8
B7
B6
B5
B4
B3
B2
B1
B0
xmmj m128
R8
R7
R6
R5
R4
R3
R2
R1
R0
xmmi
Rk = Dk + Bk
D7
D6
D5
D4
D3
D2
D1
D0 mmi
B7
B6
B5
B4
B3
B2
B1
B0 mmj /m64
R7
R6
R5
R4
R3
R2
R1
R0 mmi
intel-symantec.
Rk = Dk + Bk
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
50 / 115
Instrucciones
Aritmetica
en algoritmos DSP
D6
D5
D4
D3
D2
D1
D0
xmmi
B7
B6
B5
B4
B3
B2
B1
B0
xmmj m128
R7
R6
R5
R4
R3
R2
R1
R0
xmmi
Rk = Dk + Bk
D3
D2
D1
D0
mmi
B3
B2
B1
B0
mmj /m64
R3
R2
R1
R0
mmi
intel-symantec.
Rk = Dk + Bk
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
51 / 115
Aritmetica
en algoritmos DSP
Instrucciones
D2
D1
D0
xmmi
B3
B2
B1
B0
xmmj m128
R3
R2
R1
R0
xmmi
Rk = Dk + Bk
D1
D0
mmi
B1
B0
mmj /m64
R1
R0
mmi
Rk = Dk + Bk
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
52 / 115
Instrucciones
Aritmetica
en algoritmos DSP
D0
xmmi
B1
B0
xmmj m128
R1
R0
xmmi
Rk = Dk + Bk
D0
mmi
B0
mmj /m64
R0
mmi
Rk = Dk + Bk
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
53 / 115
Aritmetica
en algoritmos DSP
Instrucciones
D8
D7
D6
D5
D4
D3
D2
D1
D0
xmmi
B9
B8
B7
B6
B5
B4
B3
B2
B1
B0
xmmj m128
R8
R7
R6
R5
R4
R3
R2
R1
R0
xmmi
Rk = Dk - Bk
D7
D6
D5
D4
D3
D2
D1
D0 mmi
B7
B6
B5
B4
B3
B2
B1
B0 mmj /m64
R7
R6
R5
R4
R3
R2
R1
R0 mmi
intel-symantec.
Rk = Dk - Bk
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
54 / 115
Instrucciones
Aritmetica
en algoritmos DSP
D6
D5
D4
D3
D2
D1
D0
xmmi
B7
B6
B5
B4
B3
B2
B1
B0
xmmj m128
R7
R6
R5
R4
R3
R2
R1
R0
xmmi
D3
D2
D1
D0
mmi
B3
B2
B1
B0
mmj /m64
R3
R2
R1
R0
mmi
Rk = Dk - Bk
intel-symantec.
Rk = Dk - Bk
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
55 / 115
Aritmetica
en algoritmos DSP
Instrucciones
D2
D1
D0
xmmi
B3
B2
B1
B0
xmmj m128
R3
R2
R1
R0
xmmi
Rk = Dk - Bk
D1
D0
mmi
B1
B0
mmj /m64
R1
R0
mmi
Rk = Dk - Bk
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
56 / 115
Instrucciones
Aritmetica
en algoritmos DSP
D0
xmmi
B1
B0
xmmj m128
R1
R0
xmmi
Rk = Dk - Bk
D0
mmi
B0
mmj /m64
R0
mmi
Rk = Dk - Bk
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
57 / 115
Aritmetica
en algoritmos DSP
Instrucciones
de words empaquetada
Multiplicacion
D7
D6
D5
D4
D3
D2
D1
D0
xmmi
B7
B6
B5
B4
B3
B2
B1
B0
xmmj m128
R7[31-16] R6[31-16]
R6=D6*B6
R5[31-16] R4[31-16]
R5=D5*B5
R0=D0*B0
D3
D2
D1
D0
mmi
B3
B2
B1
B0
mmj /m64
R0[31-16] xmmi
R2=D2*B2
R3[31-16]
A. Furfaro ()
R1=D1*B1
R2[31-16] R1[31-16]
SIMD en IA-32
Modelo de Ejecucion
R0=D0*B0
R0[31-16] mmi
intel-symantec.
16 de Agosto de 2013
58 / 115
Aritmetica
en algoritmos DSP
Instrucciones
de words empaquetada
Multiplicacion
D7
D6
D5
D4
D3
D2
D1
D0
xmmi
B7
B6
B5
B4
B3
B2
B1
B0
xmmj m128
R7[15-0]
R6[15-0]
R6=D6*B6
R5[15-0]
R4[15-0]
R5=D5*B5
R3[15-0]
R0=D0*B0
R2[15-0]
D3
D2
D1
D0
mmi
B3
B2
B1
B0
mmj /m64
R1[15-0]
R0[15-0]
xmmi
R2=D2*B2
R3[15-0]
A. Furfaro ()
R2[15-0]
R1=D1*B1
R1[15-0]
SIMD en IA-32
Modelo de Ejecucion
R0=D0*B0
R0[15-0]
mmi
intel-symantec.
16 de Agosto de 2013
59 / 115
Aritmetica
en algoritmos DSP
Instrucciones
D1
D0
xmmi
B1
B0
xmmj m128
R0=D0*B0
D0
mmi
B0
mmj /m64
xmmi
mmi
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
60 / 115
Aritmetica
en algoritmos DSP
Instrucciones
D8
D7
D6
D5
D4
D3
D2
D1
D0
xmmi
B8
B7
B6
B5
B4
B3
B2
B1
B0
xmmj m128
B9
R6
R5
R7=D15*B15+D14*B14
R3=D7*B7+D6*B6
R4
R3
R6=D13*B13+D12*B12
R2=D5*B5+D4*B4
R2
R1
R5=D11*B11+D10*B10
R1=D3*B3+D2*B2
D7
D6
D5
D4
D3
D2
D1
D0 mmi
B7
B6
B5
B4
B3
B2
B1
B0 mmj /m64
R0
xmmi
R4=D9*B9+D8*B8
R0=D1*B1+D0*B0
A. Furfaro ()
mmi
R1
R0
R2=D5*B5+D4*B4
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
R1=D3*B3+D2*B2
R0=D1*B1+D0*B0
16 de Agosto de 2013
61 / 115
Instrucciones
Aritmetica
en algoritmos DSP
D6
D5
D4
D3
D2
D1
D0
xmmi
B7
B6
B5
B4
B3
B2
B1
B0
xmmj m128
D3
D2
D1
D0
mmi
B3
B2
B1
B0
mmj /m64
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
62 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Diseno
de un filtro FIR
Aplicacion:
Un filtro FIR (por Finite Impulse Response) son uno de los
principales algoritmos de filtrado utilizados en DSP.
La salida de un filtro de orden m viene dado por la siguiente
expresion:
P
y [j] = m
i=0 ci x[j i]
for (
int
for
s
5
6
7
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
63 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Diseno
de un filtro FIR
Aplicacion:
10
11
12
13
14
15
16
17
Lazo1 :
pxor xmm0, xmm0 ; i n i c i a l i z a en 0 4 acumuladores ( c / u de 32 b i t s )
sub ebp , ebp
; i n i c i a l i z a I n d i c e a l b u f f e r de c o e f i c i e n t e s en 0
Lazo2 :
movups xmm1, qword p t r [ e s i +ebp ] ; carga v e c t o r de 8 elementos en r e g i
pmaddwd xmm1, qword p t r [ e d i +ebp ] ; . . m u l t i p l i c a de a paresnmuestras y
paddd xmm0, xmm1
; acumula r e s u l t a d o s en xmm0 ( 4 x 32
add ebp , 2 * 8
; 2 b y t e s = t a m a o d e l dato , 8 = c a n t i d a d de datos
cmp ebp , 2 * 64 ; r e p i t e para l o s 64 c o e f i c i e n t e s ( tomados de a 8 )
j n z Lazo2
phaddd xmm0, xmm0
phaddd xmm0, xmm0 ; acumula c u a t r o v a l o r e s p a r c i a l e s en un r e s u l t a d o
psrad xmm0, 15
; Lo e s c a l a a 16 B i t s ( t a m a o o r i g i n a l d e l dato
movd qword p t r [ eax ] , xmm0 ; l o almacena ( s o l o q u e d a r n l o s 16 b i t s men
add e s i , 2
; incrementa e l p u n t e r o a l b u f f e r de muestras
add eax , 2
; incrementa p u n t e r o a l b u f f e r de s a l i d a ( Va a p i s a r l o
sub ecx , 1
; r e p e a t f o r a l l i n p u t samples
de aceleracion
de este algoritmo respecto del Cintel-symantec.
La relacion
visto
anteriormente es aproximadamente 7x.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
64 / 115
Aritmetica
en algoritmos DSP
Instrucciones
D2
D1
D0
xmmi
B3
B2
B1
B0
xmmj m128
B3+B2
B1+B0
D3+D2
D1+D0
xmmi
D1
D0
mmi
B1
B0
mmj /m64
B1+B0
D1+D0
mmi
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
65 / 115
Aritmetica
en algoritmos DSP
Instrucciones
D2
D1
D0
xmmi
D3
D2
D1
D0
xmmj m128
D3+D2
D1+D0
D3+D2
D1+D0
xmmi
D3+D2
D1+D0
D3+D2
D1+D0
xmmi
D3+D2
D1+D0
D3+D2
D1+D0
xmmi
intel-symantec.
D3+D2+D1+D0
A. Furfaro ()
D3+D2+D1+D0
D3+D2+D1+D0
SIMD en IA-32
Modelo de Ejecucion
D3+D2+D1+D0
xmmi
16 de Agosto de 2013
66 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Consideraciones de implementacion
operaciones de aritmetica
entera pero tratamos los datos como
fraccionarios de punto fijo.
calculo.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
67 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Instrucciones Logicas
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
68 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Instrucciones de Desplazamiento
aritmetico
(conservan el signo de cada operando empaquetado).
Solo se dispone de instrucciones de Word y doble words
empaquetadas.
PSSLDQ y PSRLDQ trabajan solo con operandos de 128 bits
como es logico.
El resto puede trabajar con operandos (registro o memoria)intel-symantec.
de 64
o 128 bits.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
69 / 115
Instrucciones
Aritmetica
en algoritmos DSP
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
70 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Desplazamiento logico
a derecha empaquetado en 64
bits
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
71 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Desplazamiento aritmetico
a derecha empaquetado
en 64 bits
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
72 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Instrucciones de Comparacion
convencionales,
A diferencia de las instrucciones de comparacion
estas instrucciones no afectan el contenido del registro EFLAGS.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
73 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Instrucciones de Comparacion
sea EQ (Equal) cada dato
En el caso de que la condicion
se
empaquetado del operando destino que cumpla la condicion
pone en 0xFF, 0xFFFF, o 0xFFFFFFFF, segun
el tipo de dato
empaquetado que se evalue.
no se cumple se pone a 0.
Si la condicion
Son instrucciones utiles
para operaciones tan simples como
generacion
de modo de procesar bits de manera
mas eficiente.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
74 / 115
Instrucciones
Aritmetica
en algoritmos DSP
empaquetada
Ejemplo de uso de comparacion
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
75 / 115
Instrucciones
Aritmetica
en algoritmos DSP
empaquetada
Ejemplo de uso de comparacion
El resultado se procesa con la
de los 8 pixels del
informacion
fondo de la imagen (pre
almacenado en el registro mm1)
de un operador AND. Al
a traves
resultado le queden solo los
cuatro pixels del fondo que se
deben mostrar.
Nos queda imprimir la lnea del
sprite sobre este fondo, del cual
hemos eliminado los cuatro
sobre impresos
pixels que seran
por la lnea del sprite.
Tratando a este resultado
OR con
mediante una operacion
los 8 pixels originales del sprite
se compone el dibujo buscado
sobre el fondo existente.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
76 / 115
Instrucciones
Aritmetica
en algoritmos DSP
menor tamano.
PACKSSWB, se utiliza para convertir words signadas
empaquetadas en bytes signados empaquetados.
PACKSSDW, se utiliza para convertir doble words signadas
empaquetadas en words signadas empaquetadas.
PACKUSWB, se utiliza para convertir words no signadas en bytes
no signados
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
77 / 115
Instrucciones
Aritmetica
en algoritmos DSP
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
78 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Un ejemplo
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
79 / 115
Instrucciones
Aritmetica
en algoritmos DSP
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
80 / 115
Instrucciones
Aritmetica
en algoritmos DSP
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
81 / 115
Instrucciones
Aritmetica
en algoritmos DSP
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
82 / 115
Instrucciones
Aritmetica
en algoritmos DSP
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
83 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Resultados
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
84 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Un metodo
practico
es por cada pixel
tomar los ocho vecinos (N8), y evaluar su
diferencia con el mnimo del N8
Si la diferencia es muy grande el valor
muy pequena,
al
nivel de negro.
Reemplazando cada pixel con la
diferencia entre su valor y el MIN(N8), se
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
85 / 115
Instrucciones
Aritmetica
en algoritmos DSP
Ejemplo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
lazo1 :
movdqu xmm0 , [ e s i + ( 2 * ebx ) + 2 ] ; Metodo c a l c u l o por N8
movdqu xmm1 , [ e s i + ( 2 * ebx ) + 1 ]
movdqu xmm2 , [ e s i + ( 2 * ebx ) ]
movdqu xmm3 , [ e s i +ebx +2]
movdqu xmm4 , [ e s i +ebx ]
movdqu xmm5 , [ e s i +2]
movdqu xmm6 , [ e s i +1]
movdqu xmm7 , [ e s i +0]
; C a l c u l a e l mnimo de l o s b y t e s empaquetados en cada r e g i s t r o
pminub xmm0,xmm1
pminub xmm0,xmm2
pminub xmm0,xmm3
pminub xmm0,xmm4
pminub xmm0,xmm5
pminub xmm0,xmm6
pminub xmm0,xmm7;Manimo de l o s N8 en xmm0.
movdqu xmm1 , [ e s i +ebx +1] ; Leo P i x e l c e n t r a l
pminub xmm0,xmm1 ; Lo computo
psubusw xmm1,xmm0 ; Restamos para h a l l a r l o s bordes
movdqu [ e d i ] ,xmm1
add e s i , 1 6 ; S i g u i e n t e t i r a de 16 N8 s
add edi , 1 6
loop lazo1
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
86 / 115
Instrucciones
Aritmetica
en algoritmos DSP
de Bordes
Resultados con Imagenes:
Deteccion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
87 / 115
Instrucciones
Aritmetica
en algoritmos DSP
de performance
Medicion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
88 / 115
Instrucciones
Formatos
SIMD en IA-32
Modelo de Ejecucion
intel-symantec.
16 de Agosto de 2013
89 / 115
Instrucciones
Grupos de Instrucciones
Transferencia de Datos.
Aritmetica
Empaquetada.
Comparacion.
Logicas.
Shuffle y Desempaquetado.
Conversion.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
90 / 115
Instrucciones
generara una
este
debe estar alineado a 16 bytes, o la instruccion
#GP.
excepcion
MOVUPS Mueve cuatro valores no alineados empaquetados de
punto flotante single-precision entre dos registros XMM o entre un
registro XMM y memoria. En el caso del operando en memoria no
alguna.
se requiere alineacion
MOVSS Mueve un valor escalar de punto flotante single-precision
entre registros XMM o entre un registro XMM y memoria.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
91 / 115
Instrucciones
generara una
este
debe estar alineado a 16 bytes, o la instruccion
#GP.
excepcion
MOVUPS Mueve cuatro valores no alineados empaquetados de
punto flotante single-precision entre dos registros XMM o entre un
registro XMM y memoria. En el caso del operando en memoria no
alguna.
se requiere alineacion
MOVSS Mueve un valor escalar de punto flotante single-precision
entre registros XMM o entre un registro XMM y memoria.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
91 / 115
Instrucciones
generara una
este
debe estar alineado a 16 bytes, o la instruccion
#GP.
excepcion
MOVUPS Mueve cuatro valores no alineados empaquetados de
punto flotante single-precision entre dos registros XMM o entre un
registro XMM y memoria. En el caso del operando en memoria no
alguna.
se requiere alineacion
MOVSS Mueve un valor escalar de punto flotante single-precision
entre registros XMM o entre un registro XMM y memoria.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
91 / 115
Instrucciones
generara una
este
debe estar alineado a 16 bytes, o la instruccion
#GP.
excepcion
MOVUPS Mueve cuatro valores no alineados empaquetados de
punto flotante single-precision entre dos registros XMM o entre un
registro XMM y memoria. En el caso del operando en memoria no
alguna.
se requiere alineacion
MOVSS Mueve un valor escalar de punto flotante single-precision
entre registros XMM o entre un registro XMM y memoria.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
91 / 115
Instrucciones
generara una
este
debe estar alineado a 16 bytes, o la instruccion
#GP.
excepcion
MOVUPD Mueve dos valores no alineados empaquetados de
entre dos registros XMM o entre un
punto flotante doble precision
registro XMM y memoria. En el caso del operando en memoria no
alguna.
se requiere alineacion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
92 / 115
Instrucciones
generara una
este
debe estar alineado a 16 bytes, o la instruccion
#GP.
excepcion
MOVUPD Mueve dos valores no alineados empaquetados de
entre dos registros XMM o entre un
punto flotante doble precision
registro XMM y memoria. En el caso del operando en memoria no
alguna.
se requiere alineacion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
92 / 115
Instrucciones
generara una
este
debe estar alineado a 16 bytes, o la instruccion
#GP.
excepcion
MOVUPD Mueve dos valores no alineados empaquetados de
entre dos registros XMM o entre un
punto flotante doble precision
registro XMM y memoria. En el caso del operando en memoria no
alguna.
se requiere alineacion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
92 / 115
Instrucciones
generara una
este
debe estar alineado a 16 bytes, o la instruccion
#GP.
excepcion
MOVUPD Mueve dos valores no alineados empaquetados de
entre dos registros XMM o entre un
punto flotante doble precision
registro XMM y memoria. En el caso del operando en memoria no
alguna.
se requiere alineacion
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
92 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
93 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
93 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
93 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
93 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
94 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
94 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
94 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
94 / 115
Instrucciones
XMM1
XMM0
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
95 / 115
Instrucciones
XMM2
XMM6
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
96 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
ADDPS Suma valores de punto flotante empaquetados
single-precision.
ADDSS Suma valores escalares de punto flotante
single-precision.
SUBPS Resta valores de punto flotante empaquetados
single-precision.
SUBSS Resta valores escalares de punto flotante
single-precision.
MULPS Multiplica valores de punto flotante empaquetados
single-precision.
MULSS Multiplica valores escalares de punto flotante
single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
97 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
ADDPS Suma valores de punto flotante empaquetados
single-precision.
ADDSS Suma valores escalares de punto flotante
single-precision.
SUBPS Resta valores de punto flotante empaquetados
single-precision.
SUBSS Resta valores escalares de punto flotante
single-precision.
MULPS Multiplica valores de punto flotante empaquetados
single-precision.
MULSS Multiplica valores escalares de punto flotante
single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
97 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
ADDPS Suma valores de punto flotante empaquetados
single-precision.
ADDSS Suma valores escalares de punto flotante
single-precision.
SUBPS Resta valores de punto flotante empaquetados
single-precision.
SUBSS Resta valores escalares de punto flotante
single-precision.
MULPS Multiplica valores de punto flotante empaquetados
single-precision.
MULSS Multiplica valores escalares de punto flotante
single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
97 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
ADDPS Suma valores de punto flotante empaquetados
single-precision.
ADDSS Suma valores escalares de punto flotante
single-precision.
SUBPS Resta valores de punto flotante empaquetados
single-precision.
SUBSS Resta valores escalares de punto flotante
single-precision.
MULPS Multiplica valores de punto flotante empaquetados
single-precision.
MULSS Multiplica valores escalares de punto flotante
single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
97 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
ADDPS Suma valores de punto flotante empaquetados
single-precision.
ADDSS Suma valores escalares de punto flotante
single-precision.
SUBPS Resta valores de punto flotante empaquetados
single-precision.
SUBSS Resta valores escalares de punto flotante
single-precision.
MULPS Multiplica valores de punto flotante empaquetados
single-precision.
MULSS Multiplica valores escalares de punto flotante
single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
97 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
ADDPS Suma valores de punto flotante empaquetados
single-precision.
ADDSS Suma valores escalares de punto flotante
single-precision.
SUBPS Resta valores de punto flotante empaquetados
single-precision.
SUBSS Resta valores escalares de punto flotante
single-precision.
MULPS Multiplica valores de punto flotante empaquetados
single-precision.
MULSS Multiplica valores escalares de punto flotante
single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
97 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
ADDPS Suma valores de punto flotante empaquetados
single-precision.
ADDSS Suma valores escalares de punto flotante
single-precision.
SUBPS Resta valores de punto flotante empaquetados
single-precision.
SUBSS Resta valores escalares de punto flotante
single-precision.
MULPS Multiplica valores de punto flotante empaquetados
single-precision.
MULSS Multiplica valores escalares de punto flotante
single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
97 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
98 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
98 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
98 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
98 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
98 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
98 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
98 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPS Computa la inversa de la raz cuadrada de valores
empaquetados de punto flotante single-precision.
RSQRTSS Computa la inversa de la raz cuadrada de valores
escalares de punto flotante single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
99 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPS Computa la inversa de la raz cuadrada de valores
empaquetados de punto flotante single-precision.
RSQRTSS Computa la inversa de la raz cuadrada de valores
escalares de punto flotante single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
99 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPS Computa la inversa de la raz cuadrada de valores
empaquetados de punto flotante single-precision.
RSQRTSS Computa la inversa de la raz cuadrada de valores
escalares de punto flotante single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
99 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPS Computa la inversa de la raz cuadrada de valores
empaquetados de punto flotante single-precision.
RSQRTSS Computa la inversa de la raz cuadrada de valores
escalares de punto flotante single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
99 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPS Computa la inversa de la raz cuadrada de valores
empaquetados de punto flotante single-precision.
RSQRTSS Computa la inversa de la raz cuadrada de valores
escalares de punto flotante single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
99 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPS Computa la inversa de la raz cuadrada de valores
empaquetados de punto flotante single-precision.
RSQRTSS Computa la inversa de la raz cuadrada de valores
escalares de punto flotante single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
99 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPS Computa la inversa de la raz cuadrada de valores
empaquetados de punto flotante single-precision.
RSQRTSS Computa la inversa de la raz cuadrada de valores
escalares de punto flotante single-precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
99 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
ADDSD Suma valores escalares de punto flotante doble
precision.
SUBPD Resta valores de punto flotante empaquetados doble
precision.
precision.
MULSD Multiplica valores escalares de punto flotante doble
precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
100 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
ADDSD Suma valores escalares de punto flotante doble
precision.
SUBPD Resta valores de punto flotante empaquetados doble
precision.
precision.
MULSD Multiplica valores escalares de punto flotante doble
precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
100 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
ADDSD Suma valores escalares de punto flotante doble
precision.
SUBPD Resta valores de punto flotante empaquetados doble
precision.
precision.
MULSD Multiplica valores escalares de punto flotante doble
precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
100 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
ADDSD Suma valores escalares de punto flotante doble
precision.
SUBPD Resta valores de punto flotante empaquetados doble
precision.
precision.
MULSD Multiplica valores escalares de punto flotante doble
precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
100 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
ADDSD Suma valores escalares de punto flotante doble
precision.
SUBPD Resta valores de punto flotante empaquetados doble
precision.
precision.
MULSD Multiplica valores escalares de punto flotante doble
precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
100 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
ADDSD Suma valores escalares de punto flotante doble
precision.
SUBPD Resta valores de punto flotante empaquetados doble
precision.
precision.
MULSD Multiplica valores escalares de punto flotante doble
precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
100 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
ADDSD Suma valores escalares de punto flotante doble
precision.
SUBPD Resta valores de punto flotante empaquetados doble
precision.
precision.
MULSD Multiplica valores escalares de punto flotante doble
precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
100 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
doble precision.
SQRTPD Computa la raz cuadrada de valores de punto flotante
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
101 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
doble precision.
SQRTPD Computa la raz cuadrada de valores de punto flotante
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
101 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
doble precision.
SQRTPD Computa la raz cuadrada de valores de punto flotante
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
101 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
doble precision.
SQRTPD Computa la raz cuadrada de valores de punto flotante
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
101 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
doble precision.
SQRTPD Computa la raz cuadrada de valores de punto flotante
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
101 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
doble precision.
SQRTPD Computa la raz cuadrada de valores de punto flotante
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
101 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
precision.
doble precision.
SQRTPD Computa la raz cuadrada de valores de punto flotante
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
101 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPD Computa la inversa de la raz cuadrada de valores
doble precision.
MINPD Retorna el mnimo de valores empaquetados de punto
doble precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
102 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPD Computa la inversa de la raz cuadrada de valores
doble precision.
MINPD Retorna el mnimo de valores empaquetados de punto
doble precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
102 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPD Computa la inversa de la raz cuadrada de valores
doble precision.
MINPD Retorna el mnimo de valores empaquetados de punto
doble precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
102 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPD Computa la inversa de la raz cuadrada de valores
doble precision.
MINPD Retorna el mnimo de valores empaquetados de punto
doble precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
102 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPD Computa la inversa de la raz cuadrada de valores
doble precision.
MINPD Retorna el mnimo de valores empaquetados de punto
doble precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
102 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPD Computa la inversa de la raz cuadrada de valores
doble precision.
MINPD Retorna el mnimo de valores empaquetados de punto
doble precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
102 / 115
Instrucciones
Instrucciones de Aritmetica
Empaquetada
RSQRTPD Computa la inversa de la raz cuadrada de valores
doble precision.
MINPD Retorna el mnimo de valores empaquetados de punto
doble precision.
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
102 / 115
Instrucciones
Instrucciones Logicas
Todas consideran a los operandos como un vector de bits, de modo
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
103 / 115
Instrucciones
Instrucciones Logicas
Todas consideran a los operandos como un vector de bits, de modo
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
103 / 115
Instrucciones
Instrucciones Logicas
Todas consideran a los operandos como un vector de bits, de modo
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
103 / 115
Instrucciones
Instrucciones Logicas
Todas consideran a los operandos como un vector de bits, de modo
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
103 / 115
Instrucciones
Instrucciones Logicas
Todas consideran a los operandos como un vector de bits, de modo
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
103 / 115
Instrucciones
Instrucciones Logicas
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
104 / 115
Instrucciones
Instrucciones Logicas
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
104 / 115
Instrucciones
Instrucciones Logicas
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
104 / 115
Instrucciones
Instrucciones Logicas
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
104 / 115
Instrucciones
Instrucciones Logicas
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
104 / 115
Instrucciones
Instrucciones de Comparacion
Realizan comparaciones entre operandos y afectan al operando
destino o al registro EFLAGS.
simple precision.
CMPPD Compara valores empaquetados de punto flotante doble
precision.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
105 / 115
Instrucciones
Instrucciones de Comparacion
Realizan comparaciones entre operandos y afectan al operando
destino o al registro EFLAGS.
simple precision.
CMPPD Compara valores empaquetados de punto flotante doble
precision.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
105 / 115
Instrucciones
Instrucciones de Comparacion
Realizan comparaciones entre operandos y afectan al operando
destino o al registro EFLAGS.
simple precision.
CMPPD Compara valores empaquetados de punto flotante doble
precision.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
105 / 115
Instrucciones
Instrucciones de Comparacion
Realizan comparaciones entre operandos y afectan al operando
destino o al registro EFLAGS.
simple precision.
CMPPD Compara valores empaquetados de punto flotante doble
precision.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
105 / 115
Instrucciones
Instrucciones de Comparacion
Realizan comparaciones entre operandos y afectan al operando
destino o al registro EFLAGS.
simple precision.
CMPPD Compara valores empaquetados de punto flotante doble
precision.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
105 / 115
Instrucciones
Instrucciones de Comparacion
Realizan comparaciones entre operandos y afectan al operando
destino o al registro EFLAGS.
simple precision.
CMPPD Compara valores empaquetados de punto flotante doble
precision.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
105 / 115
Instrucciones
Instrucciones de Comparacion
Realizan comparaciones entre operandos y afectan al operando
destino o al registro EFLAGS.
simple precision.
CMPPD Compara valores empaquetados de punto flotante doble
precision.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
105 / 115
Instrucciones
Instrucciones de Comparacion
Realizan comparaciones entre operandos y afectan al operando
destino o al registro EFLAGS.
simple precision.
CMPPD Compara valores empaquetados de punto flotante doble
precision.
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
105 / 115
Instrucciones
Instrucciones de Comparacion
en detalle lleva tres operandos: Dos registros XMM o
La comparacion
de memoria, y un tercer operando
un registro XMM y una direccion
que es un byte, cuyo valor define hasta 8 alternativas.
Cada dword del operando destino sera 0xFFFFFFFF si el resultado de
es TRUE y 0x00000000 si es FALSE.
la comparacion
CMPEQPS
CMPLTPS
CMPLEPS
CMPNLTPS
CMPNLEPS
CMPORDPS
!= NaN);
intel-symantec.
xmm1, xmm2; compara si esta ordenado (cada operando
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
106 / 115
Instrucciones
Instrucciones de Comparacion
CMPLTSS
CMPLESS
CMPNLTSS
CMPNLESS
CMPORDSS
NaN);
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
107 / 115
Instrucciones
Instrucciones de Comparacion
CMPLTPD
CMPLEPD
CMPNLTPD
CMPNLEPD
CMPORDPD
!= NaN);
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
108 / 115
Instrucciones
Instrucciones de Comparacion
CMPLTSD
CMPLESD
CMPNLTSD
CMPNLESD
CMPORDSD
NaN)
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
109 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2. 00110001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
110 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2. 00110001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
110 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2. 00110001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
110 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2. 00110001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
110 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2. 00110001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
110 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2. 00110001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
110 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2. 00110001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
110 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2. 00110001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
110 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2. 00110001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
110 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2. 00110001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
110 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2, 00000001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
111 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2, 00000001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
111 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2, 00000001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
111 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2, 00000001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
111 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2, 00000001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
111 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2, 00000001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
111 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2, 00000001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
111 / 115
Instrucciones
Sintaxis:
SHUFPS xmm1, xmm2, 00000001b;
Utiliza un tercer operando que establece cual de los dword de cada
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
intel-symantec.
111 / 115
Instrucciones
UNPCKLPS
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
112 / 115
Instrucciones
UNPCKLPD
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
113 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
PMAXUB Maximo
de bytes enteros sin signo empaquetados.
PMAXSW Maximo
de words enteras signadas empaquetadas.
PMINUB Mnimo de bytes enteros sin signo empaquetados
PMINSW Mnimo de words enteras signadas empaquetadas
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
114 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
115 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
115 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
115 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
115 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
115 / 115
Instrucciones
intel-symantec.
A. Furfaro ()
SIMD en IA-32
Modelo de Ejecucion
16 de Agosto de 2013
115 / 115