From 6b704a35788e2352ffae578ddd5e85458a962809 Mon Sep 17 00:00:00 2001 From: rlaakso Date: Mon, 8 Aug 2005 10:35:37 +0000 Subject: [PATCH] .. --- .cvsignore | 2 + generate-sse-instructions.lisp | 193 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 191 insertions(+), 4 deletions(-) diff --git a/.cvsignore b/.cvsignore index c07c3b9..a15c332 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1,3 @@ .emacs.desktop +*.fasl +sse-insts.lisp diff --git a/generate-sse-instructions.lisp b/generate-sse-instructions.lisp index 6717ebc..d634f45 100644 --- a/generate-sse-instructions.lisp +++ b/generate-sse-instructions.lisp @@ -4,6 +4,98 @@ instruction reference: http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/26568.pdf + +TODO: + +CMPPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 +CMPPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 +CMPSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 +CMPSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 +COMISD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 +COMISS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 +CVTDQ2PD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 +CVTDQ2PS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 +CVTPD2DQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 +CVTPD2PI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 +CVTPD2PS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 +CVTPI2PD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 +CVTPI2PS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 +CVTPS2DQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 +CVTPS2PD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 +CVTPS2PI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 +CVTSD2SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 +CVTSD2SS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 +CVTSI2SD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 +CVTSI2SS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 +CVTSS2SD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 +CVTSS2SI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 +CVTTPD2DQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 +CVTTPD2PI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 +CVTTPS2DQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 +CVTTPS2PI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 +CVTTSD2SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 +CVTTSS2SI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 +FXRSTOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 +FXSAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 +HADDPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 +HADDPS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 +HSUBPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 +HSUBPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 +LDDQU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 +LDMXCSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 +MASKMOVDQU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 +MOVAPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 +MOVAPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 +MOVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 +MOVDDUP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 +MOVDQ2Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 +MOVDQA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 +MOVDQU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 +MOVHLPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 +MOVHPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 +MOVHPS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 +MOVLHPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 +MOVLPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 +MOVLPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 +MOVMSKPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 +MOVMSKPS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 +MOVNTDQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 +MOVNTPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 +MOVNTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 +MOVQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 +MOVQ2DQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 +MOVSD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 +MOVSHDUP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 +MOVSLDUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 +MOVSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 + +PEXTRW. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 +PINSRW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 + +PSHUFD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 +PSHUFHW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 +PSHUFLW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 +PSLLD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 +PSLLDQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 +PSLLQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 +PSLLW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 +PSRAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 +PSRAW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 +PSRLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 +PSRLDQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 +PSRLQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 +PSRLW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 + +SHUFPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 +SHUFPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 +STMXCSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 +UCOMISD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 +UCOMISS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 +UNPCKHPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 +UNPCKHPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 +UNPCKLPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 +UNPCKLPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 + |# (declaim (optimize (debug 3))) @@ -16,8 +108,7 @@ http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/26568.pd (defun gen-ops (&optional (stream t)) - ;; single prec packed sse - ;;; like : + ;;; instructions like: ;;; ADDPS xmm1, xmm2/mem128 0F 58 /r (loop for (inst . ops) in '( @@ -36,6 +127,7 @@ http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/26568.pd (sqrtps #x0F #x51) (subps #x0F #x5C) (xorps #x0F #x57) + ;; double precision float (addpd #x66 #x0F #x58) (addsubpd #x66 #x0F #xD0) @@ -46,11 +138,104 @@ http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/26568.pd (minpd #x66 #x0F #x5D) (mulpd #x66 #x0F #x59) (orps #x66 #x0F #x56) - (rcppd #x66 #x0F #x53) - (rsqrtpd #x66 #x0F #x52) (sqrtpd #x66 #x0F #x51) (subpd #x66 #x0F #x5C) (xorpd #x66 #x0F #x57) + + ;; scalar double precision float + (addsd #xF2 #x0F #x58) + (divsd #xF2 #x0F #x5E) + (maxsd #xF2 #x0F #x5F) + (minsd #xF2 #x0F #x5D) + (mulsd #xF2 #x0F #x59) + (sqrtsd #xF2 #x0F #x51) + (subsd #xF2 #x0F #x5C) + + ;; scalar single precision float + (addss #xF3 #x0F #x58) + (divss #xF3 #x0F #x5E) + (maxss #xF3 #x0F #x5F) + (minss #xF3 #x0F #x5D) + (mulss #xF3 #x0F #x59) + (rcpss #xF3 #x0F #x53) + (rsqrtss #xF3 #x0F #x52) + (sqrtss #xF3 #x0F #x51) + (subss #xF3 #x0F #x5C) + + ;; packed integer + (packssdw #x66 #x0F #x6B) + (packsswb #x66 #x0F #x63) + (packuswb #x66 #x0F #x67) + + (paddb #x66 #x0F #xFC) + (paddd #x66 #x0F #xFE) + (paddq #x66 #x0F #xD4) + (paddsb #x66 #x0F #xEC) + (paddsw #x66 #x0F #xED) + (paddusb #x66 #x0F #xDC) + (paddusw #x66 #x0F #xDD) + (paddw #x66 #x0F #xFD) + + (pand #x66 #x0F #xDB) + (pandn #x66 #x0F #xDF) + + (pavgb #x66 #x0F #xE0) + (pavgw #x66 #x0F #xE3) + + (pcmpeqb #x66 #x0F #x74) + (pcmpeqd #x66 #x0F #x76) + (pcmpeqw #x66 #x0F #x75) + (pcmpgtb #x66 #x0F #x64) + (pcmpgtd #x66 #x0F #x66) + (pcmpgtw #x66 #x0F #x65) + + (pmaddwd #x66 #x0F #xF5) + + (pmaxsw #x66 #x0F #xEE) + (pmaxub #x66 #x0F #xDE) + + (pminsw #x66 #x0F #xEA) + (pminub #x66 #x0F #xDA) + + (pmovmskb #x66 #x0F #xD7) + + (pmulhuw #x66 #x0F #xE4) + (pmulhw #x66 #x0F #xE5) + (pmullw #x66 #x0F #xD5) + (pmuludq #x66 #x0F #xF4) + + (por #x66 #x0F #xEB) + + (psadbw #x66 #x0F #xF6) + (pssld #x66 #x0F #xF2) + (psllq #x66 #x0F #xF3) + (psllw #x66 #x0F #xF1) + (psrad #x66 #x0F #xE2) + (psraw #x66 #x0F #xE2) + (psrld #x66 #x0F #xD2) + (psrlq #x66 #x0F #xD3) + (psrlw #x66 #x0F #xD1) + + (psubb #x66 #x0F #xF8) + (psubd #x66 #x0F #xFA) + (psubq #x66 #x0F #xFB) + (psubsb #x66 #x0F #xE8) + (psubsw #x66 #x0F #xE9) + (psubusb #x66 #x0F #xD8) + (psubusw #x66 #x0F #xD9) + (psubw #x66 #x0F #xF9) + + (punpckhbw #x66 #x0F #x68) + (punpckhdq #x66 #x0F #x6A) + (punpckhqdq #x66 #x0F #x6D) + (punpckhwd #x66 #x0F #x69) + (punpcklbw #x66 #x0F #x60) + (punpckldq #x66 #x0F #x62) + (punpcklqdq #x66 #x0F #x6C) + (punpcklwd #x66 #x0F #x61) + + (pxor #x66 #x0F #xEF) + ) do (format stream "~S~%~%" -- 2.11.4.GIT