1 diff -x 'CVS*' -Naur src-093/compiler/x86/insts.lisp src/compiler/x86/insts.lisp
2 --- src-093/compiler/x86/insts.lisp 2005-08-05 16:13:29.000000000 +0300
3 +++ src/compiler/x86/insts.lisp 2005-08-08 16:30:23.352842152 +0300
15 (defun reg-tn-encoding (tn)
16 (declare (type tn tn))
17 - (aver (eq (sb-name (sc-sb (tn-sc tn))) 'registers))
18 +; (aver (eq (sb-name (sc-sb (tn-sc tn))) 'registers))
19 (let ((offset (tn-offset tn)))
20 (logior (ash (logand offset 1) 2)
23 (ecase (sb-name (sc-sb (tn-sc thing)))
25 (emit-mod-reg-r/m-byte segment #b11 reg (reg-tn-encoding thing)))
27 + (emit-mod-reg-r/m-byte segment #b11 reg (reg-tn-encoding thing)))
29 ;; Convert stack tns into an index off of EBP.
30 (let ((disp (- (* (1+ (tn-offset thing)) n-word-bytes))))
33 (eq (sb-name (sc-sb (tn-sc thing))) 'registers)))
35 +(defun sse-register-p (thing)
37 + (eq (sb-name (sc-sb (tn-sc thing))) 'sse-registers)))
39 (defun accumulator-p (thing)
40 (and (register-p thing)
41 (= (tn-offset thing) 0)))
42 @@ -2042,6 +2050,1339 @@
44 (emit-header-data segment return-pc-header-widetag)))
47 +;;;; SSE instructions
49 +;;;; Automatically generated
52 +(DEFINE-INSTRUCTION ADDPS
54 + (:EMITTER (EMIT-BYTE SEGMENT 15)
55 + (EMIT-BYTE SEGMENT 88)
56 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
58 +(DEFINE-INSTRUCTION ADDSUBPS
60 + (:EMITTER (EMIT-BYTE SEGMENT 242)
61 + (EMIT-BYTE SEGMENT 15)
62 + (EMIT-BYTE SEGMENT 208)
63 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
65 +(DEFINE-INSTRUCTION ANDNPS
67 + (:EMITTER (EMIT-BYTE SEGMENT 15)
68 + (EMIT-BYTE SEGMENT 85)
69 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
71 +(DEFINE-INSTRUCTION ANDPS
73 + (:EMITTER (EMIT-BYTE SEGMENT 15)
74 + (EMIT-BYTE SEGMENT 84)
75 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
77 +(DEFINE-INSTRUCTION DIVPS
79 + (:EMITTER (EMIT-BYTE SEGMENT 15)
80 + (EMIT-BYTE SEGMENT 94)
81 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
83 +(DEFINE-INSTRUCTION HADDPS
85 + (:EMITTER (EMIT-BYTE SEGMENT 242)
86 + (EMIT-BYTE SEGMENT 15)
87 + (EMIT-BYTE SEGMENT 124)
88 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
90 +(DEFINE-INSTRUCTION HSUBPS
92 + (:EMITTER (EMIT-BYTE SEGMENT 242)
93 + (EMIT-BYTE SEGMENT 15)
94 + (EMIT-BYTE SEGMENT 125)
95 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
97 +(DEFINE-INSTRUCTION MAXPS
99 + (:EMITTER (EMIT-BYTE SEGMENT 15)
100 + (EMIT-BYTE SEGMENT 95)
101 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
103 +(DEFINE-INSTRUCTION MINPS
105 + (:EMITTER (EMIT-BYTE SEGMENT 15)
106 + (EMIT-BYTE SEGMENT 93)
107 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
109 +(DEFINE-INSTRUCTION MULPS
111 + (:EMITTER (EMIT-BYTE SEGMENT 15)
112 + (EMIT-BYTE SEGMENT 89)
113 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
115 +(DEFINE-INSTRUCTION ORPS
117 + (:EMITTER (EMIT-BYTE SEGMENT 15)
118 + (EMIT-BYTE SEGMENT 86)
119 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
121 +(DEFINE-INSTRUCTION RCPPS
123 + (:EMITTER (EMIT-BYTE SEGMENT 15)
124 + (EMIT-BYTE SEGMENT 83)
125 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
127 +(DEFINE-INSTRUCTION RSQRTPS
129 + (:EMITTER (EMIT-BYTE SEGMENT 15)
130 + (EMIT-BYTE SEGMENT 82)
131 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
133 +(DEFINE-INSTRUCTION SQRTPS
135 + (:EMITTER (EMIT-BYTE SEGMENT 15)
136 + (EMIT-BYTE SEGMENT 81)
137 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
139 +(DEFINE-INSTRUCTION SUBPS
141 + (:EMITTER (EMIT-BYTE SEGMENT 15)
142 + (EMIT-BYTE SEGMENT 92)
143 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
145 +(DEFINE-INSTRUCTION UNPCKHPS
147 + (:EMITTER (EMIT-BYTE SEGMENT 15)
148 + (EMIT-BYTE SEGMENT 21)
149 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
151 +(DEFINE-INSTRUCTION UNPCKLPS
153 + (:EMITTER (EMIT-BYTE SEGMENT 15)
154 + (EMIT-BYTE SEGMENT 20)
155 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
157 +(DEFINE-INSTRUCTION XORPS
159 + (:EMITTER (EMIT-BYTE SEGMENT 15)
160 + (EMIT-BYTE SEGMENT 87)
161 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
163 +(DEFINE-INSTRUCTION ADDPD
165 + (:EMITTER (EMIT-BYTE SEGMENT 102)
166 + (EMIT-BYTE SEGMENT 15)
167 + (EMIT-BYTE SEGMENT 88)
168 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
170 +(DEFINE-INSTRUCTION ADDSUBPD
172 + (:EMITTER (EMIT-BYTE SEGMENT 102)
173 + (EMIT-BYTE SEGMENT 15)
174 + (EMIT-BYTE SEGMENT 208)
175 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
177 +(DEFINE-INSTRUCTION ANDNPD
179 + (:EMITTER (EMIT-BYTE SEGMENT 102)
180 + (EMIT-BYTE SEGMENT 15)
181 + (EMIT-BYTE SEGMENT 85)
182 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
184 +(DEFINE-INSTRUCTION ANDPD
186 + (:EMITTER (EMIT-BYTE SEGMENT 102)
187 + (EMIT-BYTE SEGMENT 15)
188 + (EMIT-BYTE SEGMENT 84)
189 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
191 +(DEFINE-INSTRUCTION DIVPD
193 + (:EMITTER (EMIT-BYTE SEGMENT 102)
194 + (EMIT-BYTE SEGMENT 15)
195 + (EMIT-BYTE SEGMENT 94)
196 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
198 +(DEFINE-INSTRUCTION HADDPD
200 + (:EMITTER (EMIT-BYTE SEGMENT 102)
201 + (EMIT-BYTE SEGMENT 15)
202 + (EMIT-BYTE SEGMENT 124)
203 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
205 +(DEFINE-INSTRUCTION HSUBPD
207 + (:EMITTER (EMIT-BYTE SEGMENT 102)
208 + (EMIT-BYTE SEGMENT 15)
209 + (EMIT-BYTE SEGMENT 125)
210 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
212 +(DEFINE-INSTRUCTION MAXPD
214 + (:EMITTER (EMIT-BYTE SEGMENT 102)
215 + (EMIT-BYTE SEGMENT 15)
216 + (EMIT-BYTE SEGMENT 95)
217 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
219 +(DEFINE-INSTRUCTION MINPD
221 + (:EMITTER (EMIT-BYTE SEGMENT 102)
222 + (EMIT-BYTE SEGMENT 15)
223 + (EMIT-BYTE SEGMENT 93)
224 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
226 +(DEFINE-INSTRUCTION MULPD
228 + (:EMITTER (EMIT-BYTE SEGMENT 102)
229 + (EMIT-BYTE SEGMENT 15)
230 + (EMIT-BYTE SEGMENT 89)
231 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
233 +(DEFINE-INSTRUCTION ORPD
235 + (:EMITTER (EMIT-BYTE SEGMENT 102)
236 + (EMIT-BYTE SEGMENT 15)
237 + (EMIT-BYTE SEGMENT 86)
238 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
240 +(DEFINE-INSTRUCTION SQRTPD
242 + (:EMITTER (EMIT-BYTE SEGMENT 102)
243 + (EMIT-BYTE SEGMENT 15)
244 + (EMIT-BYTE SEGMENT 81)
245 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
247 +(DEFINE-INSTRUCTION SUBPD
249 + (:EMITTER (EMIT-BYTE SEGMENT 102)
250 + (EMIT-BYTE SEGMENT 15)
251 + (EMIT-BYTE SEGMENT 92)
252 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
254 +(DEFINE-INSTRUCTION UNPCKHPD
256 + (:EMITTER (EMIT-BYTE SEGMENT 102)
257 + (EMIT-BYTE SEGMENT 15)
258 + (EMIT-BYTE SEGMENT 21)
259 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
261 +(DEFINE-INSTRUCTION UNPCKLPD
263 + (:EMITTER (EMIT-BYTE SEGMENT 102)
264 + (EMIT-BYTE SEGMENT 15)
265 + (EMIT-BYTE SEGMENT 20)
266 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
268 +(DEFINE-INSTRUCTION XORPD
270 + (:EMITTER (EMIT-BYTE SEGMENT 102)
271 + (EMIT-BYTE SEGMENT 15)
272 + (EMIT-BYTE SEGMENT 87)
273 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
275 +(DEFINE-INSTRUCTION ADDSD
277 + (:EMITTER (EMIT-BYTE SEGMENT 242)
278 + (EMIT-BYTE SEGMENT 15)
279 + (EMIT-BYTE SEGMENT 88)
280 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
282 +(DEFINE-INSTRUCTION COMISD
284 + (:EMITTER (EMIT-BYTE SEGMENT 102)
285 + (EMIT-BYTE SEGMENT 15)
286 + (EMIT-BYTE SEGMENT 47)
287 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
289 +(DEFINE-INSTRUCTION DIVSD
291 + (:EMITTER (EMIT-BYTE SEGMENT 242)
292 + (EMIT-BYTE SEGMENT 15)
293 + (EMIT-BYTE SEGMENT 94)
294 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
296 +(DEFINE-INSTRUCTION MAXSD
298 + (:EMITTER (EMIT-BYTE SEGMENT 242)
299 + (EMIT-BYTE SEGMENT 15)
300 + (EMIT-BYTE SEGMENT 95)
301 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
303 +(DEFINE-INSTRUCTION MINSD
305 + (:EMITTER (EMIT-BYTE SEGMENT 242)
306 + (EMIT-BYTE SEGMENT 15)
307 + (EMIT-BYTE SEGMENT 93)
308 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
310 +(DEFINE-INSTRUCTION MULSD
312 + (:EMITTER (EMIT-BYTE SEGMENT 242)
313 + (EMIT-BYTE SEGMENT 15)
314 + (EMIT-BYTE SEGMENT 89)
315 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
317 +(DEFINE-INSTRUCTION SQRTSD
319 + (:EMITTER (EMIT-BYTE SEGMENT 242)
320 + (EMIT-BYTE SEGMENT 15)
321 + (EMIT-BYTE SEGMENT 81)
322 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
324 +(DEFINE-INSTRUCTION SUBSD
326 + (:EMITTER (EMIT-BYTE SEGMENT 242)
327 + (EMIT-BYTE SEGMENT 15)
328 + (EMIT-BYTE SEGMENT 92)
329 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
331 +(DEFINE-INSTRUCTION UCOMISD
333 + (:EMITTER (EMIT-BYTE SEGMENT 102)
334 + (EMIT-BYTE SEGMENT 15)
335 + (EMIT-BYTE SEGMENT 46)
336 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
338 +(DEFINE-INSTRUCTION ADDSS
340 + (:EMITTER (EMIT-BYTE SEGMENT 243)
341 + (EMIT-BYTE SEGMENT 15)
342 + (EMIT-BYTE SEGMENT 88)
343 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
345 +(DEFINE-INSTRUCTION COMISS
347 + (:EMITTER (EMIT-BYTE SEGMENT 15)
348 + (EMIT-BYTE SEGMENT 47)
349 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
351 +(DEFINE-INSTRUCTION DIVSS
353 + (:EMITTER (EMIT-BYTE SEGMENT 243)
354 + (EMIT-BYTE SEGMENT 15)
355 + (EMIT-BYTE SEGMENT 94)
356 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
358 +(DEFINE-INSTRUCTION MAXSS
360 + (:EMITTER (EMIT-BYTE SEGMENT 243)
361 + (EMIT-BYTE SEGMENT 15)
362 + (EMIT-BYTE SEGMENT 95)
363 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
365 +(DEFINE-INSTRUCTION MINSS
367 + (:EMITTER (EMIT-BYTE SEGMENT 243)
368 + (EMIT-BYTE SEGMENT 15)
369 + (EMIT-BYTE SEGMENT 93)
370 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
372 +(DEFINE-INSTRUCTION MULSS
374 + (:EMITTER (EMIT-BYTE SEGMENT 243)
375 + (EMIT-BYTE SEGMENT 15)
376 + (EMIT-BYTE SEGMENT 89)
377 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
379 +(DEFINE-INSTRUCTION RCPSS
381 + (:EMITTER (EMIT-BYTE SEGMENT 243)
382 + (EMIT-BYTE SEGMENT 15)
383 + (EMIT-BYTE SEGMENT 83)
384 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
386 +(DEFINE-INSTRUCTION RSQRTSS
388 + (:EMITTER (EMIT-BYTE SEGMENT 243)
389 + (EMIT-BYTE SEGMENT 15)
390 + (EMIT-BYTE SEGMENT 82)
391 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
393 +(DEFINE-INSTRUCTION SQRTSS
395 + (:EMITTER (EMIT-BYTE SEGMENT 243)
396 + (EMIT-BYTE SEGMENT 15)
397 + (EMIT-BYTE SEGMENT 81)
398 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
400 +(DEFINE-INSTRUCTION SUBSS
402 + (:EMITTER (EMIT-BYTE SEGMENT 243)
403 + (EMIT-BYTE SEGMENT 15)
404 + (EMIT-BYTE SEGMENT 92)
405 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
407 +(DEFINE-INSTRUCTION UCOMISS
409 + (:EMITTER (EMIT-BYTE SEGMENT 15)
410 + (EMIT-BYTE SEGMENT 46)
411 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
413 +(DEFINE-INSTRUCTION PACKSSDW
415 + (:EMITTER (EMIT-BYTE SEGMENT 102)
416 + (EMIT-BYTE SEGMENT 15)
417 + (EMIT-BYTE SEGMENT 107)
418 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
420 +(DEFINE-INSTRUCTION PACKSSWB
422 + (:EMITTER (EMIT-BYTE SEGMENT 102)
423 + (EMIT-BYTE SEGMENT 15)
424 + (EMIT-BYTE SEGMENT 99)
425 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
427 +(DEFINE-INSTRUCTION PACKUSWB
429 + (:EMITTER (EMIT-BYTE SEGMENT 102)
430 + (EMIT-BYTE SEGMENT 15)
431 + (EMIT-BYTE SEGMENT 103)
432 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
434 +(DEFINE-INSTRUCTION PADDB
436 + (:EMITTER (EMIT-BYTE SEGMENT 102)
437 + (EMIT-BYTE SEGMENT 15)
438 + (EMIT-BYTE SEGMENT 252)
439 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
441 +(DEFINE-INSTRUCTION PADDD
443 + (:EMITTER (EMIT-BYTE SEGMENT 102)
444 + (EMIT-BYTE SEGMENT 15)
445 + (EMIT-BYTE SEGMENT 254)
446 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
448 +(DEFINE-INSTRUCTION PADDQ
450 + (:EMITTER (EMIT-BYTE SEGMENT 102)
451 + (EMIT-BYTE SEGMENT 15)
452 + (EMIT-BYTE SEGMENT 212)
453 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
455 +(DEFINE-INSTRUCTION PADDSB
457 + (:EMITTER (EMIT-BYTE SEGMENT 102)
458 + (EMIT-BYTE SEGMENT 15)
459 + (EMIT-BYTE SEGMENT 236)
460 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
462 +(DEFINE-INSTRUCTION PADDSW
464 + (:EMITTER (EMIT-BYTE SEGMENT 102)
465 + (EMIT-BYTE SEGMENT 15)
466 + (EMIT-BYTE SEGMENT 237)
467 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
469 +(DEFINE-INSTRUCTION PADDUSB
471 + (:EMITTER (EMIT-BYTE SEGMENT 102)
472 + (EMIT-BYTE SEGMENT 15)
473 + (EMIT-BYTE SEGMENT 220)
474 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
476 +(DEFINE-INSTRUCTION PADDUSW
478 + (:EMITTER (EMIT-BYTE SEGMENT 102)
479 + (EMIT-BYTE SEGMENT 15)
480 + (EMIT-BYTE SEGMENT 221)
481 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
483 +(DEFINE-INSTRUCTION PADDW
485 + (:EMITTER (EMIT-BYTE SEGMENT 102)
486 + (EMIT-BYTE SEGMENT 15)
487 + (EMIT-BYTE SEGMENT 253)
488 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
490 +(DEFINE-INSTRUCTION PAND
492 + (:EMITTER (EMIT-BYTE SEGMENT 102)
493 + (EMIT-BYTE SEGMENT 15)
494 + (EMIT-BYTE SEGMENT 219)
495 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
497 +(DEFINE-INSTRUCTION PANDN
499 + (:EMITTER (EMIT-BYTE SEGMENT 102)
500 + (EMIT-BYTE SEGMENT 15)
501 + (EMIT-BYTE SEGMENT 223)
502 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
504 +(DEFINE-INSTRUCTION PAVGB
506 + (:EMITTER (EMIT-BYTE SEGMENT 102)
507 + (EMIT-BYTE SEGMENT 15)
508 + (EMIT-BYTE SEGMENT 224)
509 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
511 +(DEFINE-INSTRUCTION PAVGW
513 + (:EMITTER (EMIT-BYTE SEGMENT 102)
514 + (EMIT-BYTE SEGMENT 15)
515 + (EMIT-BYTE SEGMENT 227)
516 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
518 +(DEFINE-INSTRUCTION PCMPEQB
520 + (:EMITTER (EMIT-BYTE SEGMENT 102)
521 + (EMIT-BYTE SEGMENT 15)
522 + (EMIT-BYTE SEGMENT 116)
523 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
525 +(DEFINE-INSTRUCTION PCMPEQD
527 + (:EMITTER (EMIT-BYTE SEGMENT 102)
528 + (EMIT-BYTE SEGMENT 15)
529 + (EMIT-BYTE SEGMENT 118)
530 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
532 +(DEFINE-INSTRUCTION PCMPEQW
534 + (:EMITTER (EMIT-BYTE SEGMENT 102)
535 + (EMIT-BYTE SEGMENT 15)
536 + (EMIT-BYTE SEGMENT 117)
537 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
539 +(DEFINE-INSTRUCTION PCMPGTB
541 + (:EMITTER (EMIT-BYTE SEGMENT 102)
542 + (EMIT-BYTE SEGMENT 15)
543 + (EMIT-BYTE SEGMENT 100)
544 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
546 +(DEFINE-INSTRUCTION PCMPGTD
548 + (:EMITTER (EMIT-BYTE SEGMENT 102)
549 + (EMIT-BYTE SEGMENT 15)
550 + (EMIT-BYTE SEGMENT 102)
551 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
553 +(DEFINE-INSTRUCTION PCMPGTW
555 + (:EMITTER (EMIT-BYTE SEGMENT 102)
556 + (EMIT-BYTE SEGMENT 15)
557 + (EMIT-BYTE SEGMENT 101)
558 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
560 +(DEFINE-INSTRUCTION PMADDWD
562 + (:EMITTER (EMIT-BYTE SEGMENT 102)
563 + (EMIT-BYTE SEGMENT 15)
564 + (EMIT-BYTE SEGMENT 245)
565 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
567 +(DEFINE-INSTRUCTION PMAXSW
569 + (:EMITTER (EMIT-BYTE SEGMENT 102)
570 + (EMIT-BYTE SEGMENT 15)
571 + (EMIT-BYTE SEGMENT 238)
572 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
574 +(DEFINE-INSTRUCTION PMAXUB
576 + (:EMITTER (EMIT-BYTE SEGMENT 102)
577 + (EMIT-BYTE SEGMENT 15)
578 + (EMIT-BYTE SEGMENT 222)
579 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
581 +(DEFINE-INSTRUCTION PMINSW
583 + (:EMITTER (EMIT-BYTE SEGMENT 102)
584 + (EMIT-BYTE SEGMENT 15)
585 + (EMIT-BYTE SEGMENT 234)
586 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
588 +(DEFINE-INSTRUCTION PMINUB
590 + (:EMITTER (EMIT-BYTE SEGMENT 102)
591 + (EMIT-BYTE SEGMENT 15)
592 + (EMIT-BYTE SEGMENT 218)
593 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
595 +(DEFINE-INSTRUCTION PMOVMSKB
597 + (:EMITTER (EMIT-BYTE SEGMENT 102)
598 + (EMIT-BYTE SEGMENT 15)
599 + (EMIT-BYTE SEGMENT 215)
600 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
602 +(DEFINE-INSTRUCTION PMULHUW
604 + (:EMITTER (EMIT-BYTE SEGMENT 102)
605 + (EMIT-BYTE SEGMENT 15)
606 + (EMIT-BYTE SEGMENT 228)
607 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
609 +(DEFINE-INSTRUCTION PMULHW
611 + (:EMITTER (EMIT-BYTE SEGMENT 102)
612 + (EMIT-BYTE SEGMENT 15)
613 + (EMIT-BYTE SEGMENT 229)
614 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
616 +(DEFINE-INSTRUCTION PMULLW
618 + (:EMITTER (EMIT-BYTE SEGMENT 102)
619 + (EMIT-BYTE SEGMENT 15)
620 + (EMIT-BYTE SEGMENT 213)
621 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
623 +(DEFINE-INSTRUCTION PMULUDQ
625 + (:EMITTER (EMIT-BYTE SEGMENT 102)
626 + (EMIT-BYTE SEGMENT 15)
627 + (EMIT-BYTE SEGMENT 244)
628 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
630 +(DEFINE-INSTRUCTION POR
632 + (:EMITTER (EMIT-BYTE SEGMENT 102)
633 + (EMIT-BYTE SEGMENT 15)
634 + (EMIT-BYTE SEGMENT 235)
635 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
637 +(DEFINE-INSTRUCTION PSADBW
639 + (:EMITTER (EMIT-BYTE SEGMENT 102)
640 + (EMIT-BYTE SEGMENT 15)
641 + (EMIT-BYTE SEGMENT 246)
642 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
644 +(DEFINE-INSTRUCTION PSSLD
646 + (:EMITTER (EMIT-BYTE SEGMENT 102)
647 + (EMIT-BYTE SEGMENT 15)
648 + (EMIT-BYTE SEGMENT 242)
649 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
651 +(DEFINE-INSTRUCTION PSLLQ
653 + (:EMITTER (EMIT-BYTE SEGMENT 102)
654 + (EMIT-BYTE SEGMENT 15)
655 + (EMIT-BYTE SEGMENT 243)
656 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
658 +(DEFINE-INSTRUCTION PSLLW
660 + (:EMITTER (EMIT-BYTE SEGMENT 102)
661 + (EMIT-BYTE SEGMENT 15)
662 + (EMIT-BYTE SEGMENT 241)
663 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
665 +(DEFINE-INSTRUCTION PSRAD
667 + (:EMITTER (EMIT-BYTE SEGMENT 102)
668 + (EMIT-BYTE SEGMENT 15)
669 + (EMIT-BYTE SEGMENT 226)
670 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
672 +(DEFINE-INSTRUCTION PSRAW
674 + (:EMITTER (EMIT-BYTE SEGMENT 102)
675 + (EMIT-BYTE SEGMENT 15)
676 + (EMIT-BYTE SEGMENT 226)
677 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
679 +(DEFINE-INSTRUCTION PSRLD
681 + (:EMITTER (EMIT-BYTE SEGMENT 102)
682 + (EMIT-BYTE SEGMENT 15)
683 + (EMIT-BYTE SEGMENT 210)
684 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
686 +(DEFINE-INSTRUCTION PSRLQ
688 + (:EMITTER (EMIT-BYTE SEGMENT 102)
689 + (EMIT-BYTE SEGMENT 15)
690 + (EMIT-BYTE SEGMENT 211)
691 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
693 +(DEFINE-INSTRUCTION PSRLW
695 + (:EMITTER (EMIT-BYTE SEGMENT 102)
696 + (EMIT-BYTE SEGMENT 15)
697 + (EMIT-BYTE SEGMENT 209)
698 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
700 +(DEFINE-INSTRUCTION PSUBB
702 + (:EMITTER (EMIT-BYTE SEGMENT 102)
703 + (EMIT-BYTE SEGMENT 15)
704 + (EMIT-BYTE SEGMENT 248)
705 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
707 +(DEFINE-INSTRUCTION PSUBD
709 + (:EMITTER (EMIT-BYTE SEGMENT 102)
710 + (EMIT-BYTE SEGMENT 15)
711 + (EMIT-BYTE SEGMENT 250)
712 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
714 +(DEFINE-INSTRUCTION PSUBQ
716 + (:EMITTER (EMIT-BYTE SEGMENT 102)
717 + (EMIT-BYTE SEGMENT 15)
718 + (EMIT-BYTE SEGMENT 251)
719 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
721 +(DEFINE-INSTRUCTION PSUBSB
723 + (:EMITTER (EMIT-BYTE SEGMENT 102)
724 + (EMIT-BYTE SEGMENT 15)
725 + (EMIT-BYTE SEGMENT 232)
726 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
728 +(DEFINE-INSTRUCTION PSUBSW
730 + (:EMITTER (EMIT-BYTE SEGMENT 102)
731 + (EMIT-BYTE SEGMENT 15)
732 + (EMIT-BYTE SEGMENT 233)
733 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
735 +(DEFINE-INSTRUCTION PSUBUSB
737 + (:EMITTER (EMIT-BYTE SEGMENT 102)
738 + (EMIT-BYTE SEGMENT 15)
739 + (EMIT-BYTE SEGMENT 216)
740 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
742 +(DEFINE-INSTRUCTION PSUBUSW
744 + (:EMITTER (EMIT-BYTE SEGMENT 102)
745 + (EMIT-BYTE SEGMENT 15)
746 + (EMIT-BYTE SEGMENT 217)
747 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
749 +(DEFINE-INSTRUCTION PSUBW
751 + (:EMITTER (EMIT-BYTE SEGMENT 102)
752 + (EMIT-BYTE SEGMENT 15)
753 + (EMIT-BYTE SEGMENT 249)
754 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
756 +(DEFINE-INSTRUCTION PUNPCKHBW
758 + (:EMITTER (EMIT-BYTE SEGMENT 102)
759 + (EMIT-BYTE SEGMENT 15)
760 + (EMIT-BYTE SEGMENT 104)
761 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
763 +(DEFINE-INSTRUCTION PUNPCKHDQ
765 + (:EMITTER (EMIT-BYTE SEGMENT 102)
766 + (EMIT-BYTE SEGMENT 15)
767 + (EMIT-BYTE SEGMENT 106)
768 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
770 +(DEFINE-INSTRUCTION PUNPCKHQDQ
772 + (:EMITTER (EMIT-BYTE SEGMENT 102)
773 + (EMIT-BYTE SEGMENT 15)
774 + (EMIT-BYTE SEGMENT 109)
775 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
777 +(DEFINE-INSTRUCTION PUNPCKHWD
779 + (:EMITTER (EMIT-BYTE SEGMENT 102)
780 + (EMIT-BYTE SEGMENT 15)
781 + (EMIT-BYTE SEGMENT 105)
782 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
784 +(DEFINE-INSTRUCTION PUNPCKLBW
786 + (:EMITTER (EMIT-BYTE SEGMENT 102)
787 + (EMIT-BYTE SEGMENT 15)
788 + (EMIT-BYTE SEGMENT 96)
789 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
791 +(DEFINE-INSTRUCTION PUNPCKLDQ
793 + (:EMITTER (EMIT-BYTE SEGMENT 102)
794 + (EMIT-BYTE SEGMENT 15)
795 + (EMIT-BYTE SEGMENT 98)
796 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
798 +(DEFINE-INSTRUCTION PUNPCKLQDQ
800 + (:EMITTER (EMIT-BYTE SEGMENT 102)
801 + (EMIT-BYTE SEGMENT 15)
802 + (EMIT-BYTE SEGMENT 108)
803 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
805 +(DEFINE-INSTRUCTION PUNPCKLWD
807 + (:EMITTER (EMIT-BYTE SEGMENT 102)
808 + (EMIT-BYTE SEGMENT 15)
809 + (EMIT-BYTE SEGMENT 97)
810 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
812 +(DEFINE-INSTRUCTION PXOR
814 + (:EMITTER (EMIT-BYTE SEGMENT 102)
815 + (EMIT-BYTE SEGMENT 15)
816 + (EMIT-BYTE SEGMENT 239)
817 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
819 +(DEFINE-INSTRUCTION CVTDQ2PD
821 + (:EMITTER (EMIT-BYTE SEGMENT 243)
822 + (EMIT-BYTE SEGMENT 15)
823 + (EMIT-BYTE SEGMENT 230)
824 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
826 +(DEFINE-INSTRUCTION CVTDQ2PS
828 + (:EMITTER (EMIT-BYTE SEGMENT 15)
829 + (EMIT-BYTE SEGMENT 91)
830 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
832 +(DEFINE-INSTRUCTION CVTPD2DQ
834 + (:EMITTER (EMIT-BYTE SEGMENT 242)
835 + (EMIT-BYTE SEGMENT 15)
836 + (EMIT-BYTE SEGMENT 230)
837 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
839 +(DEFINE-INSTRUCTION CVTPD2PI
841 + (:EMITTER (EMIT-BYTE SEGMENT 102)
842 + (EMIT-BYTE SEGMENT 15)
843 + (EMIT-BYTE SEGMENT 45)
844 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
846 +(DEFINE-INSTRUCTION CVTPD2PS
848 + (:EMITTER (EMIT-BYTE SEGMENT 102)
849 + (EMIT-BYTE SEGMENT 15)
850 + (EMIT-BYTE SEGMENT 90)
851 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
853 +(DEFINE-INSTRUCTION CVTPI2PD
855 + (:EMITTER (EMIT-BYTE SEGMENT 102)
856 + (EMIT-BYTE SEGMENT 15)
857 + (EMIT-BYTE SEGMENT 42)
858 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
860 +(DEFINE-INSTRUCTION CVTPI2PS
862 + (:EMITTER (EMIT-BYTE SEGMENT 15)
863 + (EMIT-BYTE SEGMENT 42)
864 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
866 +(DEFINE-INSTRUCTION CVTPS2DQ
868 + (:EMITTER (EMIT-BYTE SEGMENT 102)
869 + (EMIT-BYTE SEGMENT 15)
870 + (EMIT-BYTE SEGMENT 91)
871 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
873 +(DEFINE-INSTRUCTION CVTPS2PD
875 + (:EMITTER (EMIT-BYTE SEGMENT 15)
876 + (EMIT-BYTE SEGMENT 90)
877 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
879 +(DEFINE-INSTRUCTION CVTPS2PI
881 + (:EMITTER (EMIT-BYTE SEGMENT 15)
882 + (EMIT-BYTE SEGMENT 45)
883 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
885 +(DEFINE-INSTRUCTION CVTSD2SI
887 + (:EMITTER (EMIT-BYTE SEGMENT 242)
888 + (EMIT-BYTE SEGMENT 15)
889 + (EMIT-BYTE SEGMENT 45)
890 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
892 +(DEFINE-INSTRUCTION CVTSD2SS
894 + (:EMITTER (EMIT-BYTE SEGMENT 242)
895 + (EMIT-BYTE SEGMENT 15)
896 + (EMIT-BYTE SEGMENT 90)
897 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
899 +(DEFINE-INSTRUCTION CVTSI2SD
901 + (:EMITTER (EMIT-BYTE SEGMENT 242)
902 + (EMIT-BYTE SEGMENT 15)
903 + (EMIT-BYTE SEGMENT 42)
904 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
906 +(DEFINE-INSTRUCTION CVTSI2SS
908 + (:EMITTER (EMIT-BYTE SEGMENT 243)
909 + (EMIT-BYTE SEGMENT 15)
910 + (EMIT-BYTE SEGMENT 42)
911 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
913 +(DEFINE-INSTRUCTION CVTSS2SD
915 + (:EMITTER (EMIT-BYTE SEGMENT 243)
916 + (EMIT-BYTE SEGMENT 15)
917 + (EMIT-BYTE SEGMENT 90)
918 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
920 +(DEFINE-INSTRUCTION CVTSS2SI
922 + (:EMITTER (EMIT-BYTE SEGMENT 243)
923 + (EMIT-BYTE SEGMENT 15)
924 + (EMIT-BYTE SEGMENT 45)
925 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
927 +(DEFINE-INSTRUCTION CVTTPD2DQ
929 + (:EMITTER (EMIT-BYTE SEGMENT 102)
930 + (EMIT-BYTE SEGMENT 15)
931 + (EMIT-BYTE SEGMENT 230)
932 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
934 +(DEFINE-INSTRUCTION CVTTPD2PI
936 + (:EMITTER (EMIT-BYTE SEGMENT 102)
937 + (EMIT-BYTE SEGMENT 15)
938 + (EMIT-BYTE SEGMENT 44)
939 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
941 +(DEFINE-INSTRUCTION CVTTPS2DQ
943 + (:EMITTER (EMIT-BYTE SEGMENT 243)
944 + (EMIT-BYTE SEGMENT 15)
945 + (EMIT-BYTE SEGMENT 91)
946 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
948 +(DEFINE-INSTRUCTION CVTTPS2PI
950 + (:EMITTER (EMIT-BYTE SEGMENT 15)
951 + (EMIT-BYTE SEGMENT 44)
952 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
954 +(DEFINE-INSTRUCTION CVTTSD2SI
956 + (:EMITTER (EMIT-BYTE SEGMENT 242)
957 + (EMIT-BYTE SEGMENT 15)
958 + (EMIT-BYTE SEGMENT 44)
959 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
961 +(DEFINE-INSTRUCTION CVTTSS2SI
963 + (:EMITTER (EMIT-BYTE SEGMENT 243)
964 + (EMIT-BYTE SEGMENT 15)
965 + (EMIT-BYTE SEGMENT 44)
966 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
968 +(DEFINE-INSTRUCTION LDDQU
970 + (:EMITTER (EMIT-BYTE SEGMENT 242)
971 + (EMIT-BYTE SEGMENT 15)
972 + (EMIT-BYTE SEGMENT 240)
973 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
975 +(DEFINE-INSTRUCTION MASKMOVDQU
977 + (:EMITTER (EMIT-BYTE SEGMENT 102)
978 + (EMIT-BYTE SEGMENT 15)
979 + (EMIT-BYTE SEGMENT 247)
980 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
982 +(DEFINE-INSTRUCTION MOVDDUP
984 + (:EMITTER (EMIT-BYTE SEGMENT 242)
985 + (EMIT-BYTE SEGMENT 15)
986 + (EMIT-BYTE SEGMENT 18)
987 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
989 +(DEFINE-INSTRUCTION MOVHLPS
991 + (:EMITTER (EMIT-BYTE SEGMENT 15)
992 + (EMIT-BYTE SEGMENT 18)
993 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
995 +(DEFINE-INSTRUCTION MOVLHPS
997 + (:EMITTER (EMIT-BYTE SEGMENT 15)
998 + (EMIT-BYTE SEGMENT 22)
999 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1001 +(DEFINE-INSTRUCTION MOVMSKPD
1003 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1004 + (EMIT-BYTE SEGMENT 15)
1005 + (EMIT-BYTE SEGMENT 80)
1006 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1008 +(DEFINE-INSTRUCTION MOVMSKPS
1010 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1011 + (EMIT-BYTE SEGMENT 80)
1012 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1014 +(DEFINE-INSTRUCTION MOVNTDQ
1016 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1017 + (EMIT-BYTE SEGMENT 15)
1018 + (EMIT-BYTE SEGMENT 231)
1019 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1021 +(DEFINE-INSTRUCTION MOVNTPD
1023 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1024 + (EMIT-BYTE SEGMENT 15)
1025 + (EMIT-BYTE SEGMENT 43)
1026 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1028 +(DEFINE-INSTRUCTION MOVNTPS
1030 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1031 + (EMIT-BYTE SEGMENT 43)
1032 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1034 +(DEFINE-INSTRUCTION MOVSHDUP
1036 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1037 + (EMIT-BYTE SEGMENT 15)
1038 + (EMIT-BYTE SEGMENT 22)
1039 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1041 +(DEFINE-INSTRUCTION MOVSLDUP
1043 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1044 + (EMIT-BYTE SEGMENT 15)
1045 + (EMIT-BYTE SEGMENT 18)
1046 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1048 +(DEFINE-INSTRUCTION PEXTRW
1049 + (SEGMENT DST SRC BYTE)
1050 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1051 + (EMIT-BYTE SEGMENT 15)
1052 + (EMIT-BYTE SEGMENT 197)
1053 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1054 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1056 +(DEFINE-INSTRUCTION PINSRW
1057 + (SEGMENT DST SRC BYTE)
1058 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1059 + (EMIT-BYTE SEGMENT 15)
1060 + (EMIT-BYTE SEGMENT 196)
1061 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1062 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1064 +(DEFINE-INSTRUCTION PSHUFD
1065 + (SEGMENT DST SRC BYTE)
1066 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1067 + (EMIT-BYTE SEGMENT 15)
1068 + (EMIT-BYTE SEGMENT 112)
1069 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1070 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1072 +(DEFINE-INSTRUCTION PSHUFHW
1073 + (SEGMENT DST SRC BYTE)
1074 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1075 + (EMIT-BYTE SEGMENT 15)
1076 + (EMIT-BYTE SEGMENT 112)
1077 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1078 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1080 +(DEFINE-INSTRUCTION PSHUFLW
1081 + (SEGMENT DST SRC BYTE)
1082 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1083 + (EMIT-BYTE SEGMENT 15)
1084 + (EMIT-BYTE SEGMENT 112)
1085 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1086 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1088 +(DEFINE-INSTRUCTION SHUFPD
1089 + (SEGMENT DST SRC BYTE)
1090 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1091 + (EMIT-BYTE SEGMENT 15)
1092 + (EMIT-BYTE SEGMENT 198)
1093 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1094 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1096 +(DEFINE-INSTRUCTION SHUFPS
1097 + (SEGMENT DST SRC BYTE)
1098 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1099 + (EMIT-BYTE SEGMENT 198)
1100 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1101 + (EMIT-SIZED-IMMEDIATE SEGMENT :BYTE BYTE)))
1103 +(DEFINE-INSTRUCTION CMPPD
1104 + (SEGMENT DST SRC COND)
1105 + (:EMITTER (EMIT-BYTE SEGMENT 102)
1106 + (EMIT-BYTE SEGMENT 15)
1107 + (EMIT-BYTE SEGMENT 194)
1108 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1109 + (EMIT-SIZED-IMMEDIATE SEGMENT
1128 +(DEFINE-INSTRUCTION CMPPS
1129 + (SEGMENT DST SRC COND)
1130 + (:EMITTER (EMIT-BYTE SEGMENT 15)
1131 + (EMIT-BYTE SEGMENT 194)
1132 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1133 + (EMIT-SIZED-IMMEDIATE SEGMENT
1152 +(DEFINE-INSTRUCTION CMPSD
1153 + (SEGMENT DST SRC COND)
1154 + (:EMITTER (EMIT-BYTE SEGMENT 242)
1155 + (EMIT-BYTE SEGMENT 15)
1156 + (EMIT-BYTE SEGMENT 194)
1157 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1158 + (EMIT-SIZED-IMMEDIATE SEGMENT
1177 +(DEFINE-INSTRUCTION CMPSS
1178 + (SEGMENT DST SRC COND)
1179 + (:EMITTER (EMIT-BYTE SEGMENT 243)
1180 + (EMIT-BYTE SEGMENT 15)
1181 + (EMIT-BYTE SEGMENT 194)
1182 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))
1183 + (EMIT-SIZED-IMMEDIATE SEGMENT
1202 +(DEFINE-INSTRUCTION MOVAPD
1206 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1207 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 40)
1208 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1209 + (T (EMIT-BYTE SEGMENT 102)
1210 + (EMIT-BYTE SEGMENT 15)
1211 + (EMIT-BYTE SEGMENT 41)
1212 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1214 +(DEFINE-INSTRUCTION MOVAPS
1218 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 15)
1219 + (EMIT-BYTE SEGMENT 40)
1220 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1221 + (T (EMIT-BYTE SEGMENT 15)
1222 + (EMIT-BYTE SEGMENT 41)
1223 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1225 +(DEFINE-INSTRUCTION MOVD
1229 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1230 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 110)
1231 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1232 + (T (EMIT-BYTE SEGMENT 102)
1233 + (EMIT-BYTE SEGMENT 15)
1234 + (EMIT-BYTE SEGMENT 126)
1235 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1237 +(DEFINE-INSTRUCTION MOVDQA
1241 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1242 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 111)
1243 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1244 + (T (EMIT-BYTE SEGMENT 102)
1245 + (EMIT-BYTE SEGMENT 15)
1246 + (EMIT-BYTE SEGMENT 127)
1247 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1249 +(DEFINE-INSTRUCTION MOVDQU
1253 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 243)
1254 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 111)
1255 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1256 + (T (EMIT-BYTE SEGMENT 243)
1257 + (EMIT-BYTE SEGMENT 15)
1258 + (EMIT-BYTE SEGMENT 127)
1259 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1261 +(DEFINE-INSTRUCTION MOVHPD
1265 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1266 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 22)
1267 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1268 + (T (EMIT-BYTE SEGMENT 102)
1269 + (EMIT-BYTE SEGMENT 15)
1270 + (EMIT-BYTE SEGMENT 23)
1271 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1273 +(DEFINE-INSTRUCTION MOVHPS
1277 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 15)
1278 + (EMIT-BYTE SEGMENT 22)
1279 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1280 + (T (EMIT-BYTE SEGMENT 15)
1281 + (EMIT-BYTE SEGMENT 23)
1282 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1284 +(DEFINE-INSTRUCTION MOVLPD
1288 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1289 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 18)
1290 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1291 + (T (EMIT-BYTE SEGMENT 102)
1292 + (EMIT-BYTE SEGMENT 15)
1293 + (EMIT-BYTE SEGMENT 19)
1294 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1296 +(DEFINE-INSTRUCTION MOVLPS
1300 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 15)
1301 + (EMIT-BYTE SEGMENT 18)
1302 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1303 + (T (EMIT-BYTE SEGMENT 15)
1304 + (EMIT-BYTE SEGMENT 19)
1305 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1307 +(DEFINE-INSTRUCTION MOVQ
1311 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 243)
1312 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 126)
1313 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1314 + (T (EMIT-BYTE SEGMENT 102)
1315 + (EMIT-BYTE SEGMENT 15)
1316 + (EMIT-BYTE SEGMENT 214)
1317 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1319 +(DEFINE-INSTRUCTION MOVSD
1323 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 242)
1324 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 16)
1325 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1326 + (T (EMIT-BYTE SEGMENT 242)
1327 + (EMIT-BYTE SEGMENT 15)
1328 + (EMIT-BYTE SEGMENT 17)
1329 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1331 +(DEFINE-INSTRUCTION MOVSS
1335 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 243)
1336 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 16)
1337 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1338 + (T (EMIT-BYTE SEGMENT 243)
1339 + (EMIT-BYTE SEGMENT 15)
1340 + (EMIT-BYTE SEGMENT 17)
1341 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1343 +(DEFINE-INSTRUCTION MOVUPD
1347 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 102)
1348 + (EMIT-BYTE SEGMENT 15) (EMIT-BYTE SEGMENT 16)
1349 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1350 + (T (EMIT-BYTE SEGMENT 102)
1351 + (EMIT-BYTE SEGMENT 15)
1352 + (EMIT-BYTE SEGMENT 17)
1353 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1355 +(DEFINE-INSTRUCTION MOVUPS
1359 + ((SSE-REGISTER-P DST) (EMIT-BYTE SEGMENT 15)
1360 + (EMIT-BYTE SEGMENT 16)
1361 + (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST)))
1362 + (T (EMIT-BYTE SEGMENT 15)
1363 + (EMIT-BYTE SEGMENT 17)
1364 + (EMIT-EA SEGMENT DST (REG-TN-ENCODING SRC))))))
1371 +(define-instruction cpuid (segment)
1373 + (emit-byte segment #x0F)
1374 + (emit-byte segment #xA2)))
1379 ;;;; fp instructions
1381 ;;;; FIXME: This section said "added by jrd", which should end up in CREDITS.
1382 diff -x 'CVS*' -Naur src-093/compiler/x86/vm.lisp src/compiler/x86/vm.lisp
1383 --- src-093/compiler/x86/vm.lisp 2005-08-05 16:13:29.000000000 +0300
1384 +++ src/compiler/x86/vm.lisp 2005-08-08 16:32:19.609588299 +0300
1386 (defvar *byte-register-names* (make-array 8 :initial-element nil))
1387 (defvar *word-register-names* (make-array 16 :initial-element nil))
1388 (defvar *dword-register-names* (make-array 16 :initial-element nil))
1389 - (defvar *float-register-names* (make-array 8 :initial-element nil)))
1390 + (defvar *float-register-names* (make-array 8 :initial-element nil))
1391 + (defvar *dqword-register-names* (make-array 8 :initial-element nil)))
1393 (macrolet ((defreg (name offset size)
1394 (let ((offset-sym (symbolicate name "-OFFSET"))
1396 (defreg fr7 7 :float)
1397 (defregset *float-regs* fr0 fr1 fr2 fr3 fr4 fr5 fr6 fr7)
1400 + (defreg xmm0 0 :dqword)
1401 + (defreg xmm1 1 :dqword)
1402 + (defreg xmm2 2 :dqword)
1403 + (defreg xmm3 3 :dqword)
1404 + (defreg xmm4 4 :dqword)
1405 + (defreg xmm5 5 :dqword)
1406 + (defreg xmm6 6 :dqword)
1407 + (defreg xmm7 7 :dqword)
1408 + (defregset *sse-regs* xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7)
1410 ;; registers used to pass arguments
1412 ;; the number of arguments/return values passed in registers
1415 (define-storage-base float-registers :finite :size 8)
1417 +(define-storage-base sse-registers :finite :size 8)
1419 (define-storage-base stack :unbounded :size 8)
1420 (define-storage-base constant :non-packed)
1421 (define-storage-base immediate-constant :non-packed)
1424 :alternate-scs (complex-long-stack))
1426 + (sse-reg sse-registers
1427 + :locations #.*sse-regs*)
1428 ;; a catch or unwind block
1429 (catch-block stack :element-size kludge-nondeterministic-catch-block-size))
1432 ;;; These are used to (at least) determine operand size.
1433 (defparameter *float-sc-names* '(single-reg))
1434 (defparameter *double-sc-names* '(double-reg double-stack))
1435 +(defparameter *dqword-sc-names* '(sse-reg))
1438 ;;;; miscellaneous TNs for the various registers
1440 ;; FIXME: Shouldn't this be an ERROR?
1441 (format nil "<unknown reg: off=~W, sc=~A>" offset sc-name))))
1442 (float-registers (format nil "FR~D" offset))
1443 + (sse-registers (format nil "XMM~D" offset))
1444 (stack (format nil "S~D" offset))
1445 (constant (format nil "Const~D" offset))
1446 (immediate-constant "Immed")