aboutsummaryrefslogtreecommitdiff
path: root/sse.h
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2023-11-24 15:39:06 +0000
committerrodri <rgl@antares-labs.eu>2023-11-24 15:39:06 +0000
commitd850c3b7f47e58556c160f9d03ea20aa52452020 (patch)
tree20471edd63ca1c23349a1c8e340155fabedf5b27 /sse.h
parent9404d16a4263a87559af64bfb18c91ccebaa601d (diff)
downloadamd64-simd-d850c3b7f47e58556c160f9d03ea20aa52452020.tar.gz
amd64-simd-d850c3b7f47e58556c160f9d03ea20aa52452020.tar.bz2
amd64-simd-d850c3b7f47e58556c160f9d03ea20aa52452020.zip
add more avx instructions and a bench9 benchmark file.
Diffstat (limited to 'sse.h')
-rw-r--r--sse.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/sse.h b/sse.h
index ffad543..6a03c9e 100644
--- a/sse.h
+++ b/sse.h
@@ -41,6 +41,8 @@
BYTE $(((~r)<<7)|((~v)<<3)|((l)<<2)|(p))
#define VOP(o, m, ro, rm) BYTE $(o); \
BYTE $(((m)<<6)|((ro)<<3)|(rm))
+#define VOPi(o, m, ro, rm, i) VOP((o), (m), (ro), (rm)); \
+ BYTE $(i)
/* MOVLPD */
//opcode = 660F12
@@ -65,6 +67,15 @@
//imm8 = 0011 0001
#define DPPD(s, d) OP4i(0x413A, 0x3, (d), (s), 0x31)
+/* VMOVAPD */
+#define VMOVUPD_128mr(off, s, d) VEX3(0,0,0,VEX_m_0F,0,0,VEX_L_128,VEX_p_66); \
+ VOPi(0x10, 0x1, (d), (s), (off))
+#define VMOVAPD_128rr(s, d) VEX3(0,0,0,VEX_m_0F,0,0,VEX_L_128,VEX_p_66); \
+ VOP(0x28, 0x3, (d), (s))
+/* VDPPD */
+#define VDPPD(s0, s1, d) VEX3(0,0,0,VEX_m_0F3A,0,(s0),VEX_L_128,VEX_p_66); \
+ VOPi(0x41, 0x3, (d), (s1), 0x31)
+
/* VFMADD231SD (128 bit) */
#define VFMADD231SD(s0, s1, d) VEX3(0,0,0,VEX_m_0F38,1,(s0),VEX_L_128,VEX_p_66); \
VOP(0xB9, 0x3, (d), (s1))