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

index d634f45..e3254cf 100644 (file)
@@ -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)