..
authorrlaakso <rlaakso>
Mon, 8 Aug 2005 10:35:37 +0000 (8 10:35 +0000)
committerrlaakso <rlaakso>
Mon, 8 Aug 2005 10:35:37 +0000 (8 10:35 +0000)
.cvsignore
generate-sse-instructions.lisp

index c07c3b9..a15c332 100644 (file)
@@ -1 +1,3 @@
 .emacs.desktop
+*.fasl
+sse-insts.lisp
index 6717ebc..d634f45 100644 (file)
@@ -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~%~%"