#include <stdio.h>
void assembly(
Instruções de operação aritmética do SSE.
#include <stdio.h>
void assembly(
bits 64
default rel
section .rodata align=16
sum_array: dd 1.5
dd 2.5
dd 3.5
dd 4.5
section .text
global assembly
assembly:
movaps xmm0, [rdi]
addps xmm0, [sum_array]
movaps [rdi], xmm0
ADDPS xmm(n), xmm(n)
ADDPS xmm(n), float(4)
ADDPD xmm(n), xmm(n)
ADDPD xmm(n), double(2)SUBPS xmm(n), xmm(n)
SUBPS xmm(n), float(4)
SUBPD xmm(n), xmm(n)
SUBPD xmm(n), double(2)ADDSS xmm(n), xmm(n)
ADDSS xmm(n), float(1)
ADDSD xmm(n), xmm(n)
ADDSD xmm(n), double(1)#include <stdio.h>
float sum(float x, float y);
int main(void)
{
printf("Resultado: %f\n", sum(5.0f, 1.5f));
return 0;
}bits 64
section .text
global sum
sum:
addss xmm0, xmm1
retSUBSS xmm(n), xmm(n)
SUBSS xmm(n), float(1)
SUBSD xmm(n), xmm(n)
SUBSD xmm(n), double(1)MULPS xmm(n), xmm(n)
MULPS xmm(n), float(4)
MULPD xmm(n), xmm(n)
MULPD xmm(n), double(2)MULSS xmm(n), xmm(n)
MULSS xmm(n), float(1)
MULSD xmm(n), xmm(n)
MULSD xmm(n), double(1)DIVPS xmm(n), xmm(n)
DIVPS xmm(n), float(4)
DIVPD xmm(n), xmm(n)
DIVPD xmm(n), double(2)DIVSS xmm(n), xmm(n)
DIVSS xmm(n), float(1)
DIVSD xmm(n), xmm(n)
DIVSD xmm(n), double(1)RCPPS xmm(n), xmm(n)
RCPPS xmm(n), float(4)RCPSS xmm(n), xmm(n)
RCPSS xmm(n), float(1)SQRTPS xmm(n), xmm(n)
SQRTPS xmm(n), float(4)
SQRTPD xmm(n), xmm(n)
SQRTPD xmm(n), double(2)SQRTSS xmm(n), xmm(n)
SQRTSS xmm(n), float(1)
SQRTSD xmm(n), xmm(n)
SQRTSD xmm(n), double(1)#include <stdio.h>
double my_sqrt(double x);
int main(void)
{
printf("Resultado: %f\n", my_sqrt(81.0));
return 0;
}bits 64
section .text
global my_sqrt
my_sqrt:
sqrtsd xmm0, xmm0
retRSQRTPS xmm(n), xmm(n)
RSQRTPS xmm(n), float(4)RSQRTSS xmm(n), xmm(n)
RSQRTSS xmm(n), float(1)MAXPS xmm(n), xmm(n)
MAXPS xmm(n), float(4)
MAXPD xmm(n), xmm(n)
MAXPD xmm(n), double(2)MAXSS xmm(n), xmm(n)
MAXSS xmm(n), float(1)
MAXSD xmm(n), xmm(n)
MAXSD xmm(n), double(1)MINPS xmm(n), xmm(n)
MINPS xmm(n), float(4)
MINPD xmm(n), xmm(n)
MINPD xmm(n), double(2)MINSS xmm(n), xmm(n)
MINSS xmm(n), float(1)
MINSD xmm(n), xmm(n)
MINSD xmm(n), double(1)