1 diff -x 'CVS*' -Naur src-093/compiler/x86/float.lisp src/compiler/x86/float.lisp
2 --- src-093/compiler/x86/float.lisp 2005-08-17 16:56:53.996387102 +0300
3 +++ src/compiler/x86/float.lisp 2005-08-17 15:04:50.040162831 +0300
4 @@ -4308,3 +4308,122 @@
5 (:note "inline dummy FP register bias")
13 +(defun ea-for-xmm-desc (tn)
14 + (make-ea :xmmword :base tn
15 + :disp (- (* xmm-value-slot n-word-bytes) other-pointer-lowtag)))
17 +(defun ea-for-xmm-stack (tn)
18 + (make-ea :xmmword :base ebp-tn
19 + :disp (- (* (+ (tn-offset tn)
23 +(define-move-fun (load-xmm 2) (vop x y)
24 + ((xmm-stack) (xmm-reg))
25 + (inst movdqu y (ea-for-xmm-stack x)))
27 +(define-move-fun (store-xmm 2) (vop x y)
28 + ((xmm-reg) (xmm-stack))
29 + (inst movdqu (ea-for-xmm-stack y) x))
31 +(define-move-fun (load-xmm-single 2) (vop x y)
32 + ((single-stack) (xmm-reg))
33 + (inst movss y (ea-for-sf-stack x)))
35 +(define-move-fun (store-xmm-single 2) (vop x y)
36 + ((xmm-reg) (single-stack))
37 + (inst movss (ea-for-sf-stack y) x))
40 +(define-vop (%load-xmm-from-array/single-float)
41 + (:policy :fast-safe)
42 + (:args (src :scs (descriptor-reg))
43 + (index :scs (unsigned-reg)))
44 + (:ARG-TYPES SIMPLE-ARRAY-SINGLE-FLOAT fixnum)
45 + (:results (dest :scs (xmm-reg)))
49 + (inst movdqu dest (make-ea :xmmword :base src :index index
50 + :disp (- (* VECTOR-DATA-OFFSET N-WORD-BYTES) OTHER-POINTER-LOWTAG)))))
53 +(define-vop (%store-xmm-to-array/single-float)
54 + (:policy :fast-safe)
55 + (:args (dest :scs (descriptor-reg))
56 + (index :scs (unsigned-reg))
57 + (src :scs (xmm-reg)))
58 + (:ARG-TYPES SIMPLE-ARRAY-SINGLE-FLOAT fixnum XMM)
61 + (inst movdqu (make-ea :xmmword :base dest :index index
62 + :disp (- (* VECTOR-DATA-OFFSET N-WORD-BYTES) OTHER-POINTER-LOWTAG))
66 +(define-vop (xmm-move)
67 + (:args (x :scs (xmm-reg) :target y :load-if (not (location= x y))))
68 + (:results (y :scs (xmm-reg) :load-if (not (location= x y))))
71 + (unless (location= x y)
72 + (inst movdqa y x))))
74 +(define-move-vop xmm-move :move (xmm-reg) (xmm-reg))
76 +(define-vop (move-from-xmm)
77 + (:args (x :scs (xmm-reg) :to :save))
78 + (:results (y :scs (descriptor-reg)))
80 + (:note "xmm to pointer coercion")
82 + (with-fixed-allocation (y
85 + (inst movdqu (ea-for-xmm-desc y) x))))
87 +(define-move-vop move-from-xmm :move (xmm-reg) (descriptor-reg))
89 +(define-vop (move-to-xmm)
90 + (:args (x :scs (descriptor-reg)))
91 + (:results (y :scs (xmm-reg)))
92 + (:note "pointer to xmm coercion")
94 + (inst movdqu y (ea-for-xmm-desc x))))
96 +(define-move-vop move-to-xmm :move (descriptor-reg) (xmm-reg))
99 +(define-vop (move-xmm-arg)
100 + (:args (x :scs (xmm-reg) :target y)
102 + :load-if (not (sc-is y xmm-reg))))
104 + (:note "xmm argument move")
108 + (unless (location= x y)
109 + (inst movdqa y x)))
112 + (if (= (tn-offset fp) esp-offset)
113 + (let* ((offset (* (tn-offset y) n-word-bytes))
114 + (ea (make-ea :xmmword :base fp :disp offset)))
115 + (inst movdqu ea x))
117 + (let ((ea (make-ea :xmmword :base fp
118 + :disp (- (* (+ (tn-offset y) 4)
120 + (inst movdqu ea x)))))))
122 +(define-move-vop move-xmm-arg :move-arg (xmm-reg descriptor-reg) (xmm-reg))
124 +(define-move-vop move-arg :move-arg (xmm-reg) (descriptor-reg))
127 diff -x 'CVS*' -Naur src-093/compiler/x86/insts.lisp src/compiler/x86/insts.lisp
128 --- src-093/compiler/x86/insts.lisp 2005-08-05 16:13:29.000000000 +0300
129 +++ src/compiler/x86/insts.lisp 2005-08-16 10:39:07.027823783 +0300
131 #(ax cx dx bx sp bp si di))
132 (defparameter *dword-reg-names*
133 #(eax ecx edx ebx esp ebp esi edi))
134 +(defparameter *xmmword-reg-names*
135 + #(xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7))
137 (defun print-reg-with-width (value width stream dstate)
138 (declare (ignore dstate))
139 (princ (aref (ecase width
140 (:byte *byte-reg-names*)
141 (:word *word-reg-names*)
142 - (:dword *dword-reg-names*))
143 + (:dword *dword-reg-names*)
144 + (:xmmword *xmmword-reg-names*))
147 ;; XXX plus should do some source-var notes
157 @@ -671,14 +676,14 @@
159 (defun reg-tn-encoding (tn)
160 (declare (type tn tn))
161 - (aver (eq (sb-name (sc-sb (tn-sc tn))) 'registers))
162 +; (aver (eq (sb-name (sc-sb (tn-sc tn))) 'registers))
163 (let ((offset (tn-offset tn)))
164 (logior (ash (logand offset 1) 2)
167 (defstruct (ea (:constructor make-ea (size &key base index scale disp))
169 - (size nil :type (member :byte :word :dword))
170 + (size nil :type (member :byte :word :dword :xmmword))
171 (base nil :type (or tn null))
172 (index nil :type (or tn null))
173 (scale 1 :type (member 1 2 4 8))
175 (ecase (sb-name (sc-sb (tn-sc thing)))
177 (emit-mod-reg-r/m-byte segment #b11 reg (reg-tn-encoding thing)))
179 + (emit-mod-reg-r/m-byte segment #b11 reg (reg-tn-encoding thing)))
181 ;; Convert stack tns into an index off of EBP.
182 (let ((disp (- (* (1+ (tn-offset thing)) n-word-bytes))))
185 (eq (sb-name (sc-sb (tn-sc thing))) 'registers)))
187 +(defun xmm-register-p (thing)
189 + (eq (sb-name (sc-sb (tn-sc thing))) 'xmm-registers)
190 + (member (sc-name (tn-sc thing)) *xmmword-sc-names*)
193 +(defun xmm-ea-p (thing)
195 + (ea (eq (ea-size thing) :xmmword))
197 + (and (member (sc-name (tn-sc thing)) *xmmword-sc-names*) t))
200 (defun accumulator-p (thing)
201 (and (register-p thing)
202 (= (tn-offset thing) 0)))
207 + (#.*xmmword-sc-names*
210 (error "can't tell the size of ~S ~S" thing (sc-name (tn-sc thing))))))
212 @@ -2042,6 +2064,1419 @@
214 (emit-header-data segment return-pc-header-widetag)))
217 +;;;; SSE instructions
219 +;;;; Automatically generated
222 +(DEFINE-INSTRUCTION ADDPS
224 + (:EMITTER (EMIT-BYTE SEGMENT 15)
225 + (EMIT-BYTE SEGMENT 88)
226 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
228 +(DEFINE-INSTRUCTION ADDSUBPS
230 + (:EMITTER (EMIT-BYTE SEGMENT 242)
231 + (EMIT-BYTE SEGMENT 15)
232 + (EMIT-BYTE SEGMENT 208)
233 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
235 +(DEFINE-INSTRUCTION ANDNPS
237 + (:EMITTER (EMIT-BYTE SEGMENT 15)
238 + (EMIT-BYTE SEGMENT 85)
239 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
241 +(DEFINE-INSTRUCTION ANDPS
243 + (:EMITTER (EMIT-BYTE SEGMENT 15)
244 + (EMIT-BYTE SEGMENT 84)
245 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
247 +(DEFINE-INSTRUCTION DIVPS
249 + (:EMITTER (EMIT-BYTE SEGMENT 15)
250 + (EMIT-BYTE SEGMENT 94)
251 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
253 +(DEFINE-INSTRUCTION HADDPS
255 + (:EMITTER (EMIT-BYTE SEGMENT 242)
256 + (EMIT-BYTE SEGMENT 15)
257 + (EMIT-BYTE SEGMENT 124)
258 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
260 +(DEFINE-INSTRUCTION HSUBPS
262 + (:EMITTER (EMIT-BYTE SEGMENT 242)
263 + (EMIT-BYTE SEGMENT 15)
264 + (EMIT-BYTE SEGMENT 125)
265 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
267 +(DEFINE-INSTRUCTION MAXPS
269 + (:EMITTER (EMIT-BYTE SEGMENT 15)
270 + (EMIT-BYTE SEGMENT 95)
271 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
273 +(DEFINE-INSTRUCTION MINPS
275 + (:EMITTER (EMIT-BYTE SEGMENT 15)
276 + (EMIT-BYTE SEGMENT 93)
277 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
279 +(DEFINE-INSTRUCTION MULPS
281 + (:EMITTER (EMIT-BYTE SEGMENT 15)
282 + (EMIT-BYTE SEGMENT 89)
283 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
285 +(DEFINE-INSTRUCTION ORPS
287 + (:EMITTER (EMIT-BYTE SEGMENT 15)
288 + (EMIT-BYTE SEGMENT 86)
289 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
291 +(DEFINE-INSTRUCTION RCPPS
293 + (:EMITTER (EMIT-BYTE SEGMENT 15)
294 + (EMIT-BYTE SEGMENT 83)
295 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
297 +(DEFINE-INSTRUCTION RSQRTPS
299 + (:EMITTER (EMIT-BYTE SEGMENT 15)
300 + (EMIT-BYTE SEGMENT 82)
301 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
303 +(DEFINE-INSTRUCTION SQRTPS
305 + (:EMITTER (EMIT-BYTE SEGMENT 15)
306 + (EMIT-BYTE SEGMENT 81)
307 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
309 +(DEFINE-INSTRUCTION SUBPS
311 + (:EMITTER (EMIT-BYTE SEGMENT 15)
312 + (EMIT-BYTE SEGMENT 92)
313 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
315 +(DEFINE-INSTRUCTION UNPCKHPS
317 + (:EMITTER (EMIT-BYTE SEGMENT 15)
318 + (EMIT-BYTE SEGMENT 21)
319 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
321 +(DEFINE-INSTRUCTION UNPCKLPS
323 + (:EMITTER (EMIT-BYTE SEGMENT 15)
324 + (EMIT-BYTE SEGMENT 20)
325 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
327 +(DEFINE-INSTRUCTION XORPS
329 + (:EMITTER (EMIT-BYTE SEGMENT 15)
330 + (EMIT-BYTE SEGMENT 87)
331 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
333 +(DEFINE-INSTRUCTION ADDPD
335 + (:EMITTER (EMIT-BYTE SEGMENT 102)
336 + (EMIT-BYTE SEGMENT 15)
337 + (EMIT-BYTE SEGMENT 88)
338 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
340 +(DEFINE-INSTRUCTION ADDSUBPD
342 + (:EMITTER (EMIT-BYTE SEGMENT 102)
343 + (EMIT-BYTE SEGMENT 15)
344 + (EMIT-BYTE SEGMENT 208)
345 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
347 +(DEFINE-INSTRUCTION ANDNPD
349 + (:EMITTER (EMIT-BYTE SEGMENT 102)
350 + (EMIT-BYTE SEGMENT 15)
351 + (EMIT-BYTE SEGMENT 85)
352 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
354 +(DEFINE-INSTRUCTION ANDPD
356 + (:EMITTER (EMIT-BYTE SEGMENT 102)
357 + (EMIT-BYTE SEGMENT 15)
358 + (EMIT-BYTE SEGMENT 84)
359 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
361 +(DEFINE-INSTRUCTION DIVPD
363 + (:EMITTER (EMIT-BYTE SEGMENT 102)
364 + (EMIT-BYTE SEGMENT 15)
365 + (EMIT-BYTE SEGMENT 94)
366 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
368 +(DEFINE-INSTRUCTION HADDPD
370 + (:EMITTER (EMIT-BYTE SEGMENT 102)
371 + (EMIT-BYTE SEGMENT 15)
372 + (EMIT-BYTE SEGMENT 124)
373 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
375 +(DEFINE-INSTRUCTION HSUBPD
377 + (:EMITTER (EMIT-BYTE SEGMENT 102)
378 + (EMIT-BYTE SEGMENT 15)
379 + (EMIT-BYTE SEGMENT 125)
380 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
382 +(DEFINE-INSTRUCTION MAXPD
384 + (:EMITTER (EMIT-BYTE SEGMENT 102)
385 + (EMIT-BYTE SEGMENT 15)
386 + (EMIT-BYTE SEGMENT 95)
387 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
389 +(DEFINE-INSTRUCTION MINPD
391 + (:EMITTER (EMIT-BYTE SEGMENT 102)
392 + (EMIT-BYTE SEGMENT 15)
393 + (EMIT-BYTE SEGMENT 93)
394 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
396 +(DEFINE-INSTRUCTION MULPD
398 + (:EMITTER (EMIT-BYTE SEGMENT 102)
399 + (EMIT-BYTE SEGMENT 15)
400 + (EMIT-BYTE SEGMENT 89)
401 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
403 +(DEFINE-INSTRUCTION ORPD
405 + (:EMITTER (EMIT-BYTE SEGMENT 102)
406 + (EMIT-BYTE SEGMENT 15)
407 + (EMIT-BYTE SEGMENT 86)
408 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
410 +(DEFINE-INSTRUCTION SQRTPD
412 + (:EMITTER (EMIT-BYTE SEGMENT 102)
413 + (EMIT-BYTE SEGMENT 15)
414 + (EMIT-BYTE SEGMENT 81)
415 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
417 +(DEFINE-INSTRUCTION SUBPD
419 + (:EMITTER (EMIT-BYTE SEGMENT 102)
420 + (EMIT-BYTE SEGMENT 15)
421 + (EMIT-BYTE SEGMENT 92)
422 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
424 +(DEFINE-INSTRUCTION UNPCKHPD
426 + (:EMITTER (EMIT-BYTE SEGMENT 102)
427 + (EMIT-BYTE SEGMENT 15)
428 + (EMIT-BYTE SEGMENT 21)
429 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
431 +(DEFINE-INSTRUCTION UNPCKLPD
433 + (:EMITTER (EMIT-BYTE SEGMENT 102)
434 + (EMIT-BYTE SEGMENT 15)
435 + (EMIT-BYTE SEGMENT 20)
436 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
438 +(DEFINE-INSTRUCTION XORPD
440 + (:EMITTER (EMIT-BYTE SEGMENT 102)
441 + (EMIT-BYTE SEGMENT 15)
442 + (EMIT-BYTE SEGMENT 87)
443 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
445 +(DEFINE-INSTRUCTION ADDSD
447 + (:EMITTER (EMIT-BYTE SEGMENT 242)
448 + (EMIT-BYTE SEGMENT 15)
449 + (EMIT-BYTE SEGMENT 88)
450 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
452 +(DEFINE-INSTRUCTION COMISD
454 + (:EMITTER (EMIT-BYTE SEGMENT 102)
455 + (EMIT-BYTE SEGMENT 15)
456 + (EMIT-BYTE SEGMENT 47)
457 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
459 +(DEFINE-INSTRUCTION DIVSD
461 + (:EMITTER (EMIT-BYTE SEGMENT 242)
462 + (EMIT-BYTE SEGMENT 15)
463 + (EMIT-BYTE SEGMENT 94)
464 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
466 +(DEFINE-INSTRUCTION MAXSD
468 + (:EMITTER (EMIT-BYTE SEGMENT 242)
469 + (EMIT-BYTE SEGMENT 15)
470 + (EMIT-BYTE SEGMENT 95)
471 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
473 +(DEFINE-INSTRUCTION MINSD
475 + (:EMITTER (EMIT-BYTE SEGMENT 242)
476 + (EMIT-BYTE SEGMENT 15)
477 + (EMIT-BYTE SEGMENT 93)
478 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
480 +(DEFINE-INSTRUCTION MULSD
482 + (:EMITTER (EMIT-BYTE SEGMENT 242)
483 + (EMIT-BYTE SEGMENT 15)
484 + (EMIT-BYTE SEGMENT 89)
485 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
487 +(DEFINE-INSTRUCTION SQRTSD
489 + (:EMITTER (EMIT-BYTE SEGMENT 242)
490 + (EMIT-BYTE SEGMENT 15)
491 + (EMIT-BYTE SEGMENT 81)
492 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
494 +(DEFINE-INSTRUCTION SUBSD
496 + (:EMITTER (EMIT-BYTE SEGMENT 242)
497 + (EMIT-BYTE SEGMENT 15)
498 + (EMIT-BYTE SEGMENT 92)
499 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
501 +(DEFINE-INSTRUCTION UCOMISD
503 + (:EMITTER (EMIT-BYTE SEGMENT 102)
504 + (EMIT-BYTE SEGMENT 15)
505 + (EMIT-BYTE SEGMENT 46)
506 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
508 +(DEFINE-INSTRUCTION ADDSS
510 + (:EMITTER (EMIT-BYTE SEGMENT 243)
511 + (EMIT-BYTE SEGMENT 15)
512 + (EMIT-BYTE SEGMENT 88)
513 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
515 +(DEFINE-INSTRUCTION COMISS
517 + (:EMITTER (EMIT-BYTE SEGMENT 15)
518 + (EMIT-BYTE SEGMENT 47)
519 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
521 +(DEFINE-INSTRUCTION DIVSS
523 + (:EMITTER (EMIT-BYTE SEGMENT 243)
524 + (EMIT-BYTE SEGMENT 15)
525 + (EMIT-BYTE SEGMENT 94)
526 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
528 +(DEFINE-INSTRUCTION MAXSS
530 + (:EMITTER (EMIT-BYTE SEGMENT 243)
531 + (EMIT-BYTE SEGMENT 15)
532 + (EMIT-BYTE SEGMENT 95)
533 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
535 +(DEFINE-INSTRUCTION MINSS
537 + (:EMITTER (EMIT-BYTE SEGMENT 243)
538 + (EMIT-BYTE SEGMENT 15)
539 + (EMIT-BYTE SEGMENT 93)
540 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
542 +(DEFINE-INSTRUCTION MULSS
544 + (:EMITTER (EMIT-BYTE SEGMENT 243)
545 + (EMIT-BYTE SEGMENT 15)
546 + (EMIT-BYTE SEGMENT 89)
547 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
549 +(DEFINE-INSTRUCTION RCPSS
551 + (:EMITTER (EMIT-BYTE SEGMENT 243)
552 + (EMIT-BYTE SEGMENT 15)
553 + (EMIT-BYTE SEGMENT 83)
554 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
556 +(DEFINE-INSTRUCTION RSQRTSS
558 + (:EMITTER (EMIT-BYTE SEGMENT 243)
559 + (EMIT-BYTE SEGMENT 15)
560 + (EMIT-BYTE SEGMENT 82)
561 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
563 +(DEFINE-INSTRUCTION SQRTSS
565 + (:EMITTER (EMIT-BYTE SEGMENT 243)
566 + (EMIT-BYTE SEGMENT 15)
567 + (EMIT-BYTE SEGMENT 81)
568 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
570 +(DEFINE-INSTRUCTION SUBSS
572 + (:EMITTER (EMIT-BYTE SEGMENT 243)
573 + (EMIT-BYTE SEGMENT 15)
574 + (EMIT-BYTE SEGMENT 92)
575 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
577 +(DEFINE-INSTRUCTION UCOMISS
579 + (:EMITTER (EMIT-BYTE SEGMENT 15)
580 + (EMIT-BYTE SEGMENT 46)
581 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
583 +(DEFINE-INSTRUCTION PACKSSDW
585 + (:EMITTER (EMIT-BYTE SEGMENT 102)
586 + (EMIT-BYTE SEGMENT 15)
587 + (EMIT-BYTE SEGMENT 107)
588 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
590 +(DEFINE-INSTRUCTION PACKSSWB
592 + (:EMITTER (EMIT-BYTE SEGMENT 102)
593 + (EMIT-BYTE SEGMENT 15)
594 + (EMIT-BYTE SEGMENT 99)
595 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
597 +(DEFINE-INSTRUCTION PACKUSWB
599 + (:EMITTER (EMIT-BYTE SEGMENT 102)
600 + (EMIT-BYTE SEGMENT 15)
601 + (EMIT-BYTE SEGMENT 103)
602 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
604 +(DEFINE-INSTRUCTION PADDB
606 + (:EMITTER (EMIT-BYTE SEGMENT 102)
607 + (EMIT-BYTE SEGMENT 15)
608 + (EMIT-BYTE SEGMENT 252)
609 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
611 +(DEFINE-INSTRUCTION PADDD
613 + (:EMITTER (EMIT-BYTE SEGMENT 102)
614 + (EMIT-BYTE SEGMENT 15)
615 + (EMIT-BYTE SEGMENT 254)
616 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
618 +(DEFINE-INSTRUCTION PADDQ
620 + (:EMITTER (EMIT-BYTE SEGMENT 102)
621 + (EMIT-BYTE SEGMENT 15)
622 + (EMIT-BYTE SEGMENT 212)
623 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
625 +(DEFINE-INSTRUCTION PADDSB
627 + (:EMITTER (EMIT-BYTE SEGMENT 102)
628 + (EMIT-BYTE SEGMENT 15)
629 + (EMIT-BYTE SEGMENT 236)
630 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
632 +(DEFINE-INSTRUCTION PADDSW
634 + (:EMITTER (EMIT-BYTE SEGMENT 102)
635 + (EMIT-BYTE SEGMENT 15)
636 + (EMIT-BYTE SEGMENT 237)
637 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
639 +(DEFINE-INSTRUCTION PADDUSB
641 + (:EMITTER (EMIT-BYTE SEGMENT 102)
642 + (EMIT-BYTE SEGMENT 15)
643 + (EMIT-BYTE SEGMENT 220)
644 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
646 +(DEFINE-INSTRUCTION PADDUSW
648 + (:EMITTER (EMIT-BYTE SEGMENT 102)
649 + (EMIT-BYTE SEGMENT 15)
650 + (EMIT-BYTE SEGMENT 221)
651 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
653 +(DEFINE-INSTRUCTION PADDW
655 + (:EMITTER (EMIT-BYTE SEGMENT 102)
656 + (EMIT-BYTE SEGMENT 15)
657 + (EMIT-BYTE SEGMENT 253)
658 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
660 +(DEFINE-INSTRUCTION PAND
662 + (:EMITTER (EMIT-BYTE SEGMENT 102)
663 + (EMIT-BYTE SEGMENT 15)
664 + (EMIT-BYTE SEGMENT 219)
665 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
667 +(DEFINE-INSTRUCTION PANDN
669 + (:EMITTER (EMIT-BYTE SEGMENT 102)
670 + (EMIT-BYTE SEGMENT 15)
671 + (EMIT-BYTE SEGMENT 223)
672 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
674 +(DEFINE-INSTRUCTION PAVGB
676 + (:EMITTER (EMIT-BYTE SEGMENT 102)
677 + (EMIT-BYTE SEGMENT 15)
678 + (EMIT-BYTE SEGMENT 224)
679 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
681 +(DEFINE-INSTRUCTION PAVGW
683 + (:EMITTER (EMIT-BYTE SEGMENT 102)
684 + (EMIT-BYTE SEGMENT 15)
685 + (EMIT-BYTE SEGMENT 227)
686 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
688 +(DEFINE-INSTRUCTION PCMPEQB
690 + (:EMITTER (EMIT-BYTE SEGMENT 102)
691 + (EMIT-BYTE SEGMENT 15)
692 + (EMIT-BYTE SEGMENT 116)
693 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
695 +(DEFINE-INSTRUCTION PCMPEQD
697 + (:EMITTER (EMIT-BYTE SEGMENT 102)
698 + (EMIT-BYTE SEGMENT 15)
699 + (EMIT-BYTE SEGMENT 118)
700 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
702 +(DEFINE-INSTRUCTION PCMPEQW
704 + (:EMITTER (EMIT-BYTE SEGMENT 102)
705 + (EMIT-BYTE SEGMENT 15)
706 + (EMIT-BYTE SEGMENT 117)
707 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
709 +(DEFINE-INSTRUCTION PCMPGTB
711 + (:EMITTER (EMIT-BYTE SEGMENT 102)
712 + (EMIT-BYTE SEGMENT 15)
713 + (EMIT-BYTE SEGMENT 100)
714 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
716 +(DEFINE-INSTRUCTION PCMPGTD
718 + (:EMITTER (EMIT-BYTE SEGMENT 102)
719 + (EMIT-BYTE SEGMENT 15)
720 + (EMIT-BYTE SEGMENT 102)
721 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
723 +(DEFINE-INSTRUCTION PCMPGTW
725 + (:EMITTER (EMIT-BYTE SEGMENT 102)
726 + (EMIT-BYTE SEGMENT 15)
727 + (EMIT-BYTE SEGMENT 101)
728 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
730 +(DEFINE-INSTRUCTION PMADDWD
732 + (:EMITTER (EMIT-BYTE SEGMENT 102)
733 + (EMIT-BYTE SEGMENT 15)
734 + (EMIT-BYTE SEGMENT 245)
735 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
737 +(DEFINE-INSTRUCTION PMAXSW
739 + (:EMITTER (EMIT-BYTE SEGMENT 102)
740 + (EMIT-BYTE SEGMENT 15)
741 + (EMIT-BYTE SEGMENT 238)
742 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
744 +(DEFINE-INSTRUCTION PMAXUB
746 + (:EMITTER (EMIT-BYTE SEGMENT 102)
747 + (EMIT-BYTE SEGMENT 15)
748 + (EMIT-BYTE SEGMENT 222)
749 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
751 +(DEFINE-INSTRUCTION PMINSW
753 + (:EMITTER (EMIT-BYTE SEGMENT 102)
754 + (EMIT-BYTE SEGMENT 15)
755 + (EMIT-BYTE SEGMENT 234)
756 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
758 +(DEFINE-INSTRUCTION PMINUB
760 + (:EMITTER (EMIT-BYTE SEGMENT 102)
761 + (EMIT-BYTE SEGMENT 15)
762 + (EMIT-BYTE SEGMENT 218)
763 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
765 +(DEFINE-INSTRUCTION PMOVMSKB
767 + (:EMITTER (EMIT-BYTE SEGMENT 102)
768 + (EMIT-BYTE SEGMENT 15)
769 + (EMIT-BYTE SEGMENT 215)
770 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
772 +(DEFINE-INSTRUCTION PMULHUW
774 + (:EMITTER (EMIT-BYTE SEGMENT 102)
775 + (EMIT-BYTE SEGMENT 15)
776 + (EMIT-BYTE SEGMENT 228)
777 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
779 +(DEFINE-INSTRUCTION PMULHW
781 + (:EMITTER (EMIT-BYTE SEGMENT 102)
782 + (EMIT-BYTE SEGMENT 15)
783 + (EMIT-BYTE SEGMENT 229)
784 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
786 +(DEFINE-INSTRUCTION PMULLW
788 + (:EMITTER (EMIT-BYTE SEGMENT 102)
789 + (EMIT-BYTE SEGMENT 15)
790 + (EMIT-BYTE SEGMENT 213)
791 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
793 +(DEFINE-INSTRUCTION PMULUDQ
795 + (:EMITTER (EMIT-BYTE SEGMENT 102)
796 + (EMIT-BYTE SEGMENT 15)
797 + (EMIT-BYTE SEGMENT 244)
798 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
800 +(DEFINE-INSTRUCTION POR
802 + (:EMITTER (EMIT-BYTE SEGMENT 102)
803 + (EMIT-BYTE SEGMENT 15)
804 + (EMIT-BYTE SEGMENT 235)
805 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
807 +(DEFINE-INSTRUCTION PSADBW
809 + (:EMITTER (EMIT-BYTE SEGMENT 102)
810 + (EMIT-BYTE SEGMENT 15)
811 + (EMIT-BYTE SEGMENT 246)
812 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
814 +(DEFINE-INSTRUCTION PSSLD
816 + (:EMITTER (EMIT-BYTE SEGMENT 102)
817 + (EMIT-BYTE SEGMENT 15)
818 + (EMIT-BYTE SEGMENT 242)
819 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
821 +(DEFINE-INSTRUCTION PSLLQ
823 + (:EMITTER (EMIT-BYTE SEGMENT 102)
824 + (EMIT-BYTE SEGMENT 15)
825 + (EMIT-BYTE SEGMENT 243)
826 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
828 +(DEFINE-INSTRUCTION PSLLW
830 + (:EMITTER (EMIT-BYTE SEGMENT 102)
831 + (EMIT-BYTE SEGMENT 15)
832 + (EMIT-BYTE SEGMENT 241)
833 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
835 +(DEFINE-INSTRUCTION PSRAD
837 + (:EMITTER (EMIT-BYTE SEGMENT 102)
838 + (EMIT-BYTE SEGMENT 15)
839 + (EMIT-BYTE SEGMENT 226)
840 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
842 +(DEFINE-INSTRUCTION PSRAW
844 + (:EMITTER (EMIT-BYTE SEGMENT 102)
845 + (EMIT-BYTE SEGMENT 15)
846 + (EMIT-BYTE SEGMENT 226)
847 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
849 +(DEFINE-INSTRUCTION PSRLD
851 + (:EMITTER (EMIT-BYTE SEGMENT 102)
852 + (EMIT-BYTE SEGMENT 15)
853 + (EMIT-BYTE SEGMENT 210)
854 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
856 +(DEFINE-INSTRUCTION PSRLQ
858 + (:EMITTER (EMIT-BYTE SEGMENT 102)
859 + (EMIT-BYTE SEGMENT 15)
860 + (EMIT-BYTE SEGMENT 211)
861 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
863 +(DEFINE-INSTRUCTION PSRLW
865 + (:EMITTER (EMIT-BYTE SEGMENT 102)
866 + (EMIT-BYTE SEGMENT 15)
867 + (EMIT-BYTE SEGMENT 209)
868 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
870 +(DEFINE-INSTRUCTION PSUBB
872 + (:EMITTER (EMIT-BYTE SEGMENT 102)
873 + (EMIT-BYTE SEGMENT 15)
874 + (EMIT-BYTE SEGMENT 248)
875 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
877 +(DEFINE-INSTRUCTION PSUBD
879 + (:EMITTER (EMIT-BYTE SEGMENT 102)
880 + (EMIT-BYTE SEGMENT 15)
881 + (EMIT-BYTE SEGMENT 250)
882 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
884 +(DEFINE-INSTRUCTION PSUBQ
886 + (:EMITTER (EMIT-BYTE SEGMENT 102)
887 + (EMIT-BYTE SEGMENT 15)
888 + (EMIT-BYTE SEGMENT 251)
889 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
891 +(DEFINE-INSTRUCTION PSUBSB
893 + (:EMITTER (EMIT-BYTE SEGMENT 102)
894 + (EMIT-BYTE SEGMENT 15)
895 + (EMIT-BYTE SEGMENT 232)
896 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
898 +(DEFINE-INSTRUCTION PSUBSW
900 + (:EMITTER (EMIT-BYTE SEGMENT 102)
901 + (EMIT-BYTE SEGMENT 15)
902 + (EMIT-BYTE SEGMENT 233)
903 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
905 +(DEFINE-INSTRUCTION PSUBUSB
907 + (:EMITTER (EMIT-BYTE SEGMENT 102)
908 + (EMIT-BYTE SEGMENT 15)
909 + (EMIT-BYTE SEGMENT 216)
910 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
912 +(DEFINE-INSTRUCTION PSUBUSW
914 + (:EMITTER (EMIT-BYTE SEGMENT 102)
915 + (EMIT-BYTE SEGMENT 15)
916 + (EMIT-BYTE SEGMENT 217)
917 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
919 +(DEFINE-INSTRUCTION PSUBW
921 + (:EMITTER (EMIT-BYTE SEGMENT 102)
922 + (EMIT-BYTE SEGMENT 15)
923 + (EMIT-BYTE SEGMENT 249)
924 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
926 +(DEFINE-INSTRUCTION PUNPCKHBW
928 + (:EMITTER (EMIT-BYTE SEGMENT 102)
929 + (EMIT-BYTE SEGMENT 15)
930 + (EMIT-BYTE SEGMENT 104)
931 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
933 +(DEFINE-INSTRUCTION PUNPCKHDQ
935 + (:EMITTER (EMIT-BYTE SEGMENT 102)
936 + (EMIT-BYTE SEGMENT 15)
937 + (EMIT-BYTE SEGMENT 106)
938 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
940 +(DEFINE-INSTRUCTION PUNPCKHQDQ
942 + (:EMITTER (EMIT-BYTE SEGMENT 102)
943 + (EMIT-BYTE SEGMENT 15)
944 + (EMIT-BYTE SEGMENT 109)
945 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
947 +(DEFINE-INSTRUCTION PUNPCKHWD
949 + (:EMITTER (EMIT-BYTE SEGMENT 102)
950 + (EMIT-BYTE SEGMENT 15)
951 + (EMIT-BYTE SEGMENT 105)
952 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
954 +(DEFINE-INSTRUCTION PUNPCKLBW
956 + (:EMITTER (EMIT-BYTE SEGMENT 102)
957 + (EMIT-BYTE SEGMENT 15)
958 + (EMIT-BYTE SEGMENT 96)
959 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
961 +(DEFINE-INSTRUCTION PUNPCKLDQ
963 + (:EMITTER (EMIT-BYTE SEGMENT 102)
964 + (EMIT-BYTE SEGMENT 15)
965 + (EMIT-BYTE SEGMENT 98)
966 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
968 +(DEFINE-INSTRUCTION PUNPCKLQDQ
970 + (:EMITTER (EMIT-BYTE SEGMENT 102)
971 + (EMIT-BYTE SEGMENT 15)
972 + (EMIT-BYTE SEGMENT 108)
973 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
975 +(DEFINE-INSTRUCTION PUNPCKLWD
977 + (:EMITTER (EMIT-BYTE SEGMENT 102)
978 + (EMIT-BYTE SEGMENT 15)
979 + (EMIT-BYTE SEGMENT 97)
980 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
982 +(DEFINE-INSTRUCTION PXOR
984 + (:EMITTER (EMIT-BYTE SEGMENT 102)
985 + (EMIT-BYTE SEGMENT 15)
986 + (EMIT-BYTE SEGMENT 239)
987 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
989 +(DEFINE-INSTRUCTION CVTDQ2PD
991 + (:EMITTER (EMIT-BYTE SEGMENT 243)
992 + (EMIT-BYTE SEGMENT 15)
993 + (EMIT-BYTE SEGMENT 230)
994 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
996 +(DEFINE-INSTRUCTION CVTDQ2PS
998 + (:EMITTER (EMIT-BYTE SEGMENT 15)
999 + (EMIT-BYTE SEGMENT 91)
1000 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1002 +(DEFINE-INSTRUCTION CVTPD2DQ
1004 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1005 + (EMIT-BYTE SEGMENT 15)
1006 + (EMIT-BYTE SEGMENT 230)
1007 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1009 +(DEFINE-INSTRUCTION CVTPD2PI
1011 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1012 + (EMIT-BYTE SEGMENT 15)
1013 + (EMIT-BYTE SEGMENT 45)
1014 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1016 +(DEFINE-INSTRUCTION CVTPD2PS
1018 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1019 + (EMIT-BYTE SEGMENT 15)
1020 + (EMIT-BYTE SEGMENT 90)
1021 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1023 +(DEFINE-INSTRUCTION CVTPI2PD
1025 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1026 + (EMIT-BYTE SEGMENT 15)
1027 + (EMIT-BYTE SEGMENT 42)
1028 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1030 +(DEFINE-INSTRUCTION CVTPI2PS
1032 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1033 + (EMIT-BYTE SEGMENT 42)
1034 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1036 +(DEFINE-INSTRUCTION CVTPS2DQ
1038 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1039 + (EMIT-BYTE SEGMENT 15)
1040 + (EMIT-BYTE SEGMENT 91)
1041 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1043 +(DEFINE-INSTRUCTION CVTPS2PD
1045 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1046 + (EMIT-BYTE SEGMENT 90)
1047 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1049 +(DEFINE-INSTRUCTION CVTPS2PI
1051 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1052 + (EMIT-BYTE SEGMENT 45)
1053 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1055 +(DEFINE-INSTRUCTION CVTSD2SI
1057 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1058 + (EMIT-BYTE SEGMENT 15)
1059 + (EMIT-BYTE SEGMENT 45)
1060 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1062 +(DEFINE-INSTRUCTION CVTSD2SS
1064 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1065 + (EMIT-BYTE SEGMENT 15)
1066 + (EMIT-BYTE SEGMENT 90)
1067 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1069 +(DEFINE-INSTRUCTION CVTSI2SD
1071 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1072 + (EMIT-BYTE SEGMENT 15)
1073 + (EMIT-BYTE SEGMENT 42)
1074 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1076 +(DEFINE-INSTRUCTION CVTSI2SS
1078 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1079 + (EMIT-BYTE SEGMENT 15)
1080 + (EMIT-BYTE SEGMENT 42)
1081 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1083 +(DEFINE-INSTRUCTION CVTSS2SD
1085 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1086 + (EMIT-BYTE SEGMENT 15)
1087 + (EMIT-BYTE SEGMENT 90)
1088 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1090 +(DEFINE-INSTRUCTION CVTSS2SI
1092 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1093 + (EMIT-BYTE SEGMENT 15)
1094 + (EMIT-BYTE SEGMENT 45)
1095 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1097 +(DEFINE-INSTRUCTION CVTTPD2DQ
1099 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1100 + (EMIT-BYTE SEGMENT 15)
1101 + (EMIT-BYTE SEGMENT 230)
1102 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1104 +(DEFINE-INSTRUCTION CVTTPD2PI
1106 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1107 + (EMIT-BYTE SEGMENT 15)
1108 + (EMIT-BYTE SEGMENT 44)
1109 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1111 +(DEFINE-INSTRUCTION CVTTPS2DQ
1113 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1114 + (EMIT-BYTE SEGMENT 15)
1115 + (EMIT-BYTE SEGMENT 91)
1116 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1118 +(DEFINE-INSTRUCTION CVTTPS2PI
1120 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1121 + (EMIT-BYTE SEGMENT 44)
1122 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1124 +(DEFINE-INSTRUCTION CVTTSD2SI
1126 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1127 + (EMIT-BYTE SEGMENT 15)
1128 + (EMIT-BYTE SEGMENT 44)
1129 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1131 +(DEFINE-INSTRUCTION CVTTSS2SI
1133 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1134 + (EMIT-BYTE SEGMENT 15)
1135 + (EMIT-BYTE SEGMENT 44)
1136 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1138 +(DEFINE-INSTRUCTION LDDQU
1140 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1141 + (EMIT-BYTE SEGMENT 15)
1142 + (EMIT-BYTE SEGMENT 240)
1143 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1145 +(DEFINE-INSTRUCTION MASKMOVDQU
1147 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1148 + (EMIT-BYTE SEGMENT 15)
1149 + (EMIT-BYTE SEGMENT 247)
1150 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1152 +(DEFINE-INSTRUCTION MOVDDUP
1154 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1155 + (EMIT-BYTE SEGMENT 15)
1156 + (EMIT-BYTE SEGMENT 18)
1157 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1159 +(DEFINE-INSTRUCTION MOVHLPS
1161 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1162 + (EMIT-BYTE SEGMENT 18)
1163 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1165 +(DEFINE-INSTRUCTION MOVLHPS
1167 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1168 + (EMIT-BYTE SEGMENT 22)
1169 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1171 +(DEFINE-INSTRUCTION MOVMSKPD
1173 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1174 + (EMIT-BYTE SEGMENT 15)
1175 + (EMIT-BYTE SEGMENT 80)
1176 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1178 +(DEFINE-INSTRUCTION MOVMSKPS
1180 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1181 + (EMIT-BYTE SEGMENT 80)
1182 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1184 +(DEFINE-INSTRUCTION MOVNTDQ
1186 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1187 + (EMIT-BYTE SEGMENT 15)
1188 + (EMIT-BYTE SEGMENT 231)
1189 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1191 +(DEFINE-INSTRUCTION MOVNTPD
1193 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1194 + (EMIT-BYTE SEGMENT 15)
1195 + (EMIT-BYTE SEGMENT 43)
1196 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1198 +(DEFINE-INSTRUCTION MOVNTPS
1200 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1201 + (EMIT-BYTE SEGMENT 43)
1202 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1204 +(DEFINE-INSTRUCTION MOVSHDUP
1206 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1207 + (EMIT-BYTE SEGMENT 15)
1208 + (EMIT-BYTE SEGMENT 22)
1209 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1211 +(DEFINE-INSTRUCTION MOVSLDUP
1213 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1214 + (EMIT-BYTE SEGMENT 15)
1215 + (EMIT-BYTE SEGMENT 18)
1216 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1218 +(DEFINE-INSTRUCTION PEXTRW
1219 + (SEGMENT DST SRC BYTE)
1220 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1221 + (EMIT-BYTE SEGMENT 15)
1222 + (EMIT-BYTE SEGMENT 197)
1223 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1224 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1226 +(DEFINE-INSTRUCTION PINSRW
1227 + (SEGMENT DST SRC BYTE)
1228 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1229 + (EMIT-BYTE SEGMENT 15)
1230 + (EMIT-BYTE SEGMENT 196)
1231 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1232 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1234 +(DEFINE-INSTRUCTION PSHUFD
1235 + (SEGMENT DST SRC BYTE)
1236 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1237 + (EMIT-BYTE SEGMENT 15)
1238 + (EMIT-BYTE SEGMENT 112)
1239 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1240 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1242 +(DEFINE-INSTRUCTION PSHUFHW
1243 + (SEGMENT DST SRC BYTE)
1244 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1245 + (EMIT-BYTE SEGMENT 15)
1246 + (EMIT-BYTE SEGMENT 112)
1247 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1248 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1250 +(DEFINE-INSTRUCTION PSHUFLW
1251 + (SEGMENT DST SRC BYTE)
1252 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1253 + (EMIT-BYTE SEGMENT 15)
1254 + (EMIT-BYTE SEGMENT 112)
1255 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1256 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1258 +(DEFINE-INSTRUCTION SHUFPD
1259 + (SEGMENT DST SRC BYTE)
1260 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1261 + (EMIT-BYTE SEGMENT 15)
1262 + (EMIT-BYTE SEGMENT 198)
1263 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1264 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1266 +(DEFINE-INSTRUCTION SHUFPS
1267 + (SEGMENT DST SRC BYTE)
1268 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1269 + (EMIT-BYTE SEGMENT 198)
1270 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1271 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1273 +(DEFINE-INSTRUCTION CMPPD
1274 + (SEGMENT DST SRC COND)
1275 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1276 + (EMIT-BYTE SEGMENT 15)
1277 + (EMIT-BYTE SEGMENT 194)
1278 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1279 + (EMIT-SIZED-IMMEDIATE SEGMENT
1298 +(DEFINE-INSTRUCTION CMPPS
1299 + (SEGMENT DST SRC COND)
1300 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1301 + (EMIT-BYTE SEGMENT 194)
1302 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1303 + (EMIT-SIZED-IMMEDIATE SEGMENT
1322 +(DEFINE-INSTRUCTION CMPSD
1323 + (SEGMENT DST SRC COND)
1324 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1325 + (EMIT-BYTE SEGMENT 15)
1326 + (EMIT-BYTE SEGMENT 194)
1327 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1328 + (EMIT-SIZED-IMMEDIATE SEGMENT
1347 +(DEFINE-INSTRUCTION CMPSS
1348 + (SEGMENT DST SRC COND)
1349 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1350 + (EMIT-BYTE SEGMENT 15)
1351 + (EMIT-BYTE SEGMENT 194)
1352 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1353 + (EMIT-SIZED-IMMEDIATE SEGMENT
1372 +(DEFINE-INSTRUCTION MOVAPD
1376 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1377 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 40)
1378 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1379 + (T (EMIT-BYTE SEGMENT 102)
1380 + (EMIT-BYTE SEGMENT 15)
1381 + (EMIT-BYTE SEGMENT 41)
1382 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1384 +(DEFINE-INSTRUCTION MOVAPS
1388 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 15)
1389 + (EMIT-BYTE SEGMENT 40)
1390 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1391 + (T (EMIT-BYTE SEGMENT 15)
1392 + (EMIT-BYTE SEGMENT 41)
1393 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1395 +(DEFINE-INSTRUCTION MOVD
1399 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1400 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 110)
1401 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1402 + (T (EMIT-BYTE SEGMENT 102)
1403 + (EMIT-BYTE SEGMENT 15)
1404 + (EMIT-BYTE SEGMENT 126)
1405 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1407 +(DEFINE-INSTRUCTION MOVDQA
1411 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1412 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 111)
1413 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1414 + (T (EMIT-BYTE SEGMENT 102)
1415 + (EMIT-BYTE SEGMENT 15)
1416 + (EMIT-BYTE SEGMENT 127)
1417 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1419 +(DEFINE-INSTRUCTION MOVDQU
1423 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 243)
1424 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 111)
1425 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1426 + (T (EMIT-BYTE SEGMENT 243)
1427 + (EMIT-BYTE SEGMENT 15)
1428 + (EMIT-BYTE SEGMENT 127)
1429 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1431 +(DEFINE-INSTRUCTION MOVHPD
1435 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1436 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 22)
1437 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1438 + (T (EMIT-BYTE SEGMENT 102)
1439 + (EMIT-BYTE SEGMENT 15)
1440 + (EMIT-BYTE SEGMENT 23)
1441 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1443 +(DEFINE-INSTRUCTION MOVHPS
1447 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 15)
1448 + (EMIT-BYTE SEGMENT 22)
1449 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1450 + (T (EMIT-BYTE SEGMENT 15)
1451 + (EMIT-BYTE SEGMENT 23)
1452 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1454 +(DEFINE-INSTRUCTION MOVLPD
1458 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1459 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 18)
1460 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1461 + (T (EMIT-BYTE SEGMENT 102)
1462 + (EMIT-BYTE SEGMENT 15)
1463 + (EMIT-BYTE SEGMENT 19)
1464 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1466 +(DEFINE-INSTRUCTION MOVLPS
1470 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 15)
1471 + (EMIT-BYTE SEGMENT 18)
1472 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1473 + (T (EMIT-BYTE SEGMENT 15)
1474 + (EMIT-BYTE SEGMENT 19)
1475 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1477 +(DEFINE-INSTRUCTION MOVQ
1481 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 243)
1482 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 126)
1483 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1484 + (T (EMIT-BYTE SEGMENT 102)
1485 + (EMIT-BYTE SEGMENT 15)
1486 + (EMIT-BYTE SEGMENT 214)
1487 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1489 +(DEFINE-INSTRUCTION MOVSD
1493 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 242)
1494 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 16)
1495 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1496 + (T (EMIT-BYTE SEGMENT 242)
1497 + (EMIT-BYTE SEGMENT 15)
1498 + (EMIT-BYTE SEGMENT 17)
1499 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1501 +(DEFINE-INSTRUCTION MOVSS
1505 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 243)
1506 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 16)
1507 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1508 + (T (EMIT-BYTE SEGMENT 243)
1509 + (EMIT-BYTE SEGMENT 15)
1510 + (EMIT-BYTE SEGMENT 17)
1511 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1513 +(DEFINE-INSTRUCTION MOVUPD
1517 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1518 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 16)
1519 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1520 + (T (EMIT-BYTE SEGMENT 102)
1521 + (EMIT-BYTE SEGMENT 15)
1522 + (EMIT-BYTE SEGMENT 17)
1523 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1525 +(DEFINE-INSTRUCTION MOVUPS
1529 + ((XMM-REGISTER-P DST) (EMIT-BYTE SEGMENT 15)
1530 + (EMIT-BYTE SEGMENT 16)
1531 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1532 + (T (EMIT-BYTE SEGMENT 15)
1533 + (EMIT-BYTE SEGMENT 17)
1534 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1536 +(DEFINE-INSTRUCTION PSLLD-IB
1537 + (SEGMENT DST AMOUNT)
1538 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1539 + (EMIT-BYTE SEGMENT 15)
1540 + (EMIT-BYTE SEGMENT 114)
1541 + (EMIT-EA SEGMENT DST 6)
1542 + (EMIT-BYTE SEGMENT AMOUNT)))
1544 +(DEFINE-INSTRUCTION PSLLDQ-IB
1545 + (SEGMENT DST AMOUNT)
1546 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1547 + (EMIT-BYTE SEGMENT 15)
1548 + (EMIT-BYTE SEGMENT 115)
1549 + (EMIT-EA SEGMENT DST 7)
1550 + (EMIT-BYTE SEGMENT AMOUNT)))
1552 +(DEFINE-INSTRUCTION PSLLQ-IB
1553 + (SEGMENT DST AMOUNT)
1554 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1555 + (EMIT-BYTE SEGMENT 15)
1556 + (EMIT-BYTE SEGMENT 115)
1557 + (EMIT-EA SEGMENT DST 6)
1558 + (EMIT-BYTE SEGMENT AMOUNT)))
1560 +(DEFINE-INSTRUCTION PSLLW-IB
1561 + (SEGMENT DST AMOUNT)
1562 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1563 + (EMIT-BYTE SEGMENT 15)
1564 + (EMIT-BYTE SEGMENT 113)
1565 + (EMIT-EA SEGMENT DST 6)
1566 + (EMIT-BYTE SEGMENT AMOUNT)))
1568 +(DEFINE-INSTRUCTION PSRAD-IB
1569 + (SEGMENT DST AMOUNT)
1570 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1571 + (EMIT-BYTE SEGMENT 15)
1572 + (EMIT-BYTE SEGMENT 114)
1573 + (EMIT-EA SEGMENT DST 4)
1574 + (EMIT-BYTE SEGMENT AMOUNT)))
1576 +(DEFINE-INSTRUCTION PSRAW-IB
1577 + (SEGMENT DST AMOUNT)
1578 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1579 + (EMIT-BYTE SEGMENT 15)
1580 + (EMIT-BYTE SEGMENT 113)
1581 + (EMIT-EA SEGMENT DST 4)
1582 + (EMIT-BYTE SEGMENT AMOUNT)))
1584 +(DEFINE-INSTRUCTION PSRLD-IB
1585 + (SEGMENT DST AMOUNT)
1586 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1587 + (EMIT-BYTE SEGMENT 15)
1588 + (EMIT-BYTE SEGMENT 114)
1589 + (EMIT-EA SEGMENT DST 2)
1590 + (EMIT-BYTE SEGMENT AMOUNT)))
1592 +(DEFINE-INSTRUCTION PSRLDQ-IB
1593 + (SEGMENT DST AMOUNT)
1594 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1595 + (EMIT-BYTE SEGMENT 15)
1596 + (EMIT-BYTE SEGMENT 115)
1597 + (EMIT-EA SEGMENT DST 3)
1598 + (EMIT-BYTE SEGMENT AMOUNT)))
1600 +(DEFINE-INSTRUCTION PSRLQ-IB
1601 + (SEGMENT DST AMOUNT)
1602 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1603 + (EMIT-BYTE SEGMENT 15)
1604 + (EMIT-BYTE SEGMENT 115)
1605 + (EMIT-EA SEGMENT DST 2)
1606 + (EMIT-BYTE SEGMENT AMOUNT)))
1608 +(DEFINE-INSTRUCTION PSRLW-IB
1609 + (SEGMENT DST AMOUNT)
1610 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1611 + (EMIT-BYTE SEGMENT 15)
1612 + (EMIT-BYTE SEGMENT 113)
1613 + (EMIT-EA SEGMENT DST 2)
1614 + (EMIT-BYTE SEGMENT AMOUNT)))
1621 +(define-instruction cpuid (segment)
1623 + (emit-byte segment #x0F)
1624 + (emit-byte segment #xA2)))
1629 ;;;; fp instructions
1631 ;;;; FIXME: This section said "added by jrd", which should end up in CREDITS.
1632 diff -x 'CVS*' -Naur src-093/compiler/x86/vm.lisp src/compiler/x86/vm.lisp
1633 --- src-093/compiler/x86/vm.lisp 2005-08-05 16:13:29.000000000 +0300
1634 +++ src/compiler/x86/vm.lisp 2005-08-17 13:06:11.717026836 +0300
1636 (defvar *byte-register-names* (make-array 8 :initial-element nil))
1637 (defvar *word-register-names* (make-array 16 :initial-element nil))
1638 (defvar *dword-register-names* (make-array 16 :initial-element nil))
1639 - (defvar *float-register-names* (make-array 8 :initial-element nil)))
1640 + (defvar *float-register-names* (make-array 8 :initial-element nil))
1641 + (defvar *xmmword-register-names* (make-array 8 :initial-element nil)))
1643 (macrolet ((defreg (name offset size)
1644 (let ((offset-sym (symbolicate name "-OFFSET"))
1646 (defreg fr7 7 :float)
1647 (defregset *float-regs* fr0 fr1 fr2 fr3 fr4 fr5 fr6 fr7)
1650 + (defreg xmm0 0 :xmmword)
1651 + (defreg xmm1 1 :xmmword)
1652 + (defreg xmm2 2 :xmmword)
1653 + (defreg xmm3 3 :xmmword)
1654 + (defreg xmm4 4 :xmmword)
1655 + (defreg xmm5 5 :xmmword)
1656 + (defreg xmm6 6 :xmmword)
1657 + (defreg xmm7 7 :xmmword)
1658 + (defregset *xmm-regs* xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7)
1660 ;; registers used to pass arguments
1662 ;; the number of arguments/return values passed in registers
1665 (define-storage-base float-registers :finite :size 8)
1667 +(define-storage-base xmm-registers :finite :size 8)
1669 (define-storage-base stack :unbounded :size 8)
1670 (define-storage-base constant :non-packed)
1671 (define-storage-base immediate-constant :non-packed)
1673 (sap-stack stack) ; System area pointers.
1674 (single-stack stack) ; single-floats
1675 (double-stack stack :element-size 2) ; double-floats.
1676 + (xmm-stack stack :element-size 4) ; xmm
1678 (long-stack stack :element-size 3) ; long-floats.
1679 (complex-single-stack stack :element-size 2) ; complex-single-floats
1680 @@ -290,6 +305,12 @@
1682 :alternate-scs (double-stack))
1684 + ;; non-descriptor XMMs
1685 + (xmm-reg xmm-registers
1686 + :locations #.*xmm-regs*
1688 + :alternate-scs (xmm-stack))
1690 ;; non-descriptor LONG-FLOATs
1692 (long-reg float-registers
1694 ;;; These are used to (at least) determine operand size.
1695 (defparameter *float-sc-names* '(single-reg))
1696 (defparameter *double-sc-names* '(double-reg double-stack))
1697 +(defparameter *xmmword-sc-names* '(xmm-reg))
1700 ;;;; miscellaneous TNs for the various registers
1702 (def-misc-reg-tns unsigned-reg eax ebx ecx edx ebp esp edi esi)
1703 (def-misc-reg-tns word-reg ax bx cx dx bp sp di si)
1704 (def-misc-reg-tns byte-reg al ah bl bh cl ch dl dh)
1705 - (def-misc-reg-tns single-reg fr0 fr1 fr2 fr3 fr4 fr5 fr6 fr7))
1706 + (def-misc-reg-tns single-reg fr0 fr1 fr2 fr3 fr4 fr5 fr6 fr7)
1707 + (def-misc-reg-tns xmm-reg xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7))
1709 ;;; TNs for registers used to pass arguments
1710 (defparameter *register-arg-tns*
1712 ;; FIXME: Shouldn't this be an ERROR?
1713 (format nil "<unknown reg: off=~W, sc=~A>" offset sc-name))))
1714 (float-registers (format nil "FR~D" offset))
1715 + (xmm-registers (format nil "XMM~D" offset))
1716 (stack (format nil "S~D" offset))
1717 (constant (format nil "Const~D" offset))
1718 (immediate-constant "Immed")