From: rlaakso Date: Mon, 8 Aug 2005 10:59:52 +0000 (+0000) Subject: .. X-Git-Url: https://repo.or.cz/w/sb-simd.git/commitdiff_plain/785e38dbe3d4e0cb9e99eecbcc2bb962122b5597 .. --- diff --git a/generate-sse-instructions.lisp b/generate-sse-instructions.lisp index d634f45..e3254cf 100644 --- a/generate-sse-instructions.lisp +++ b/generate-sse-instructions.lisp @@ -11,63 +11,38 @@ CMPPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 @@ -89,12 +64,7 @@ PSRLW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SHUFPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 SHUFPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 STMXCSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 -UCOMISD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 -UCOMISS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 -UNPCKHPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 -UNPCKHPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 -UNPCKLPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 -UNPCKLPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 + |# @@ -126,6 +96,8 @@ UNPCKLPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (rsqrtps #x0F #x52) (sqrtps #x0F #x51) (subps #x0F #x5C) + (unpckhps #x0F #x15) + (unpcklps #x0F #x14) (xorps #x0F #x57) ;; double precision float @@ -140,19 +112,24 @@ UNPCKLPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (orps #x66 #x0F #x56) (sqrtpd #x66 #x0F #x51) (subpd #x66 #x0F #x5C) + (unpckhpd #x66 #x0F #x15) + (unpcklpd #x66 #x0F #x14) (xorpd #x66 #x0F #x57) ;; scalar double precision float (addsd #xF2 #x0F #x58) + (comisd #x66 #x0F #x2F) (divsd #xF2 #x0F #x5E) (maxsd #xF2 #x0F #x5F) (minsd #xF2 #x0F #x5D) (mulsd #xF2 #x0F #x59) (sqrtsd #xF2 #x0F #x51) (subsd #xF2 #x0F #x5C) + (ucomisd #x66 #x0F #x2E) ;; scalar single precision float (addss #xF3 #x0F #x58) + (comiss #x0F #x2F) (divss #xF3 #x0F #x5E) (maxss #xF3 #x0F #x5F) (minss #xF3 #x0F #x5D) @@ -161,6 +138,8 @@ UNPCKLPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (rsqrtss #xF3 #x0F #x52) (sqrtss #xF3 #x0F #x51) (subss #xF3 #x0F #x5C) + (ucomiss #x0F #x2E) + ;; packed integer (packssdw #x66 #x0F #x6B) @@ -235,6 +214,30 @@ UNPCKLPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (punpcklwd #x66 #x0F #x61) (pxor #x66 #x0F #xEF) + + ;; convert + (cvtdq2pd #xF3 #x0F #xE6) + (cvtdq2ps #x0F #x5B) + (cvtpd2dq #xF2 #x0F #xE6) + (cvtpd2pi #x66 #x0F #x2D) + (cvtpd2ps #x66 #x0F #x5A) + (cvtpi2pd #x66 #x0F #x2A) + (cvtpi2ps #x0F #x2A) + (cvtps2dq #x66 #x0F #x5B) + (cvtps2pd #x0F #x5A) + (cvtps2pi #x0F #x2D) + (cvtsd2si #xF2 #x0F #x2D) + (cvtsd2ss #xF2 #x0F #x5A) + (cvtsi2sd #xF2 #x0F #x2A) + (cvtsi2ss #xF3 #x0F #x2A) + (cvtss2sd #xF3 #x0F #x5A) + (cvtss2si #xF3 #x0F #x2D) + (cvttpd2dq #x66 #x0F #xE6) + (cvttpd2pi #x66 #x0F #x2C) + (cvttps2dq #xF3 #x0F #x5B) + (cvttps2pi #x0F #x2C) + (cvttsd2si #xF2 #x0F #x2C) + (cvttss2si #xF3 #x0F #x2C) ) do @@ -244,11 +247,30 @@ UNPCKLPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,@(emit-ops ops) (emit-ea segment src (reg-tn-encoding dst)))))) - ;; MOVUPS + ;; MOVES (loop for (inst ops-m2r ops-r2m) in '( + (movapd (#x66 #x0F #x28) (#x66 #x0F #x29)) + (movaps (#x0F #x28) (#x0F #x29)) + + (movdqa (#x66 #x0F #x6F) (#x66 #x0F #x7F)) + (movdqu (#xF3 #x0F #x6F) (#xF3 #x0F #x7F)) + + (movhpd (#x66 #x0F #x16) (#x66 #x0F #x17)) + (movhps (#x0F #x16) (#x0F #x17)) + + (movlpd (#x66 #x0F #x12) (#x66 #x0F #x13)) + (movlps (#x0F #x12) (#x0F #x13)) + + (movq (#xF3 #x0F #x7E) (#x66 #x0F #xD6)) + + (movsd (#xF2 #x0F #x10) (#xF2 #x0F #x11)) + + (movss (#xF3 #x0F #x10) (#xF3 #x0F #x11)) + + (movupd (#x66 #x0F #x10) (#x66 #x0F #x11)) (movups (#x0F #x10) (#x0F #x11)) - (movupd (#x66 #x0F #x10) (#x66 #x0F #x11))) + ) do (format stream "~S~%~%" `(define-instruction ,(intern (symbol-name inst)) (segment dst src)