Code fixes for test-matrix.
[sb-simd.git] / patch_against_sbcl_0_9_3-1.2.txt
blob9a047422a83959fb46a506bcd5904abebe2eb644
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
4 @@ -192,6 +192,8 @@
5      (:byte 8)
6      (:word 16)
7      (:dword 32)
8 +    (:qword 64)
9 +    (:dqword 128)
10      (:float 32)
11      (:double 64)))
13 @@ -671,7 +673,7 @@
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)
21              (ash offset -1))))
22 @@ -718,6 +720,8 @@
23       (ecase (sb-name (sc-sb (tn-sc thing)))
24         (registers
25          (emit-mod-reg-r/m-byte segment #b11 reg (reg-tn-encoding thing)))
26 +       (sse-registers
27 +        (emit-mod-reg-r/m-byte segment #b11 reg (reg-tn-encoding thing)))
28         (stack
29          ;; Convert stack tns into an index off of EBP.
30          (let ((disp (- (* (1+ (tn-offset thing)) n-word-bytes))))
31 @@ -830,6 +834,10 @@
32    (and (tn-p thing)
33         (eq (sb-name (sc-sb (tn-sc thing))) 'registers)))
35 +(defun sse-register-p (thing)
36 +  (and (tn-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 @@
43    (:emitter
44     (emit-header-data segment return-pc-header-widetag)))
45  \f
47 +;;;; SSE instructions
48 +;;;; 
49 +;;;; Automatically generated
52 +(DEFINE-INSTRUCTION ADDPS
53 +                    (SEGMENT DST SRC)
54 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
55 +                              (EMIT-BYTE SEGMENT 88)
56 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
58 +(DEFINE-INSTRUCTION ADDSUBPS
59 +                    (SEGMENT DST SRC)
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
66 +                    (SEGMENT DST SRC)
67 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
68 +                              (EMIT-BYTE SEGMENT 85)
69 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
71 +(DEFINE-INSTRUCTION ANDPS
72 +                    (SEGMENT DST SRC)
73 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
74 +                              (EMIT-BYTE SEGMENT 84)
75 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
77 +(DEFINE-INSTRUCTION DIVPS
78 +                    (SEGMENT DST SRC)
79 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
80 +                              (EMIT-BYTE SEGMENT 94)
81 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
83 +(DEFINE-INSTRUCTION HADDPS
84 +                    (SEGMENT DST SRC)
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
91 +                    (SEGMENT DST SRC)
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
98 +                    (SEGMENT DST SRC)
99 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
100 +                              (EMIT-BYTE SEGMENT 95)
101 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
103 +(DEFINE-INSTRUCTION MINPS
104 +                    (SEGMENT DST SRC)
105 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
106 +                              (EMIT-BYTE SEGMENT 93)
107 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
109 +(DEFINE-INSTRUCTION MULPS
110 +                    (SEGMENT DST SRC)
111 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
112 +                              (EMIT-BYTE SEGMENT 89)
113 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
115 +(DEFINE-INSTRUCTION ORPS
116 +                    (SEGMENT DST SRC)
117 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
118 +                              (EMIT-BYTE SEGMENT 86)
119 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
121 +(DEFINE-INSTRUCTION RCPPS
122 +                    (SEGMENT DST SRC)
123 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
124 +                              (EMIT-BYTE SEGMENT 83)
125 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
127 +(DEFINE-INSTRUCTION RSQRTPS
128 +                    (SEGMENT DST SRC)
129 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
130 +                              (EMIT-BYTE SEGMENT 82)
131 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
133 +(DEFINE-INSTRUCTION SQRTPS
134 +                    (SEGMENT DST SRC)
135 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
136 +                              (EMIT-BYTE SEGMENT 81)
137 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
139 +(DEFINE-INSTRUCTION SUBPS
140 +                    (SEGMENT DST SRC)
141 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
142 +                              (EMIT-BYTE SEGMENT 92)
143 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
145 +(DEFINE-INSTRUCTION UNPCKHPS
146 +                    (SEGMENT DST SRC)
147 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
148 +                              (EMIT-BYTE SEGMENT 21)
149 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
151 +(DEFINE-INSTRUCTION UNPCKLPS
152 +                    (SEGMENT DST SRC)
153 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
154 +                              (EMIT-BYTE SEGMENT 20)
155 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
157 +(DEFINE-INSTRUCTION XORPS
158 +                    (SEGMENT DST SRC)
159 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
160 +                              (EMIT-BYTE SEGMENT 87)
161 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
163 +(DEFINE-INSTRUCTION ADDPD
164 +                    (SEGMENT DST SRC)
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
171 +                    (SEGMENT DST SRC)
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
178 +                    (SEGMENT DST SRC)
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
185 +                    (SEGMENT DST SRC)
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
192 +                    (SEGMENT DST SRC)
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
199 +                    (SEGMENT DST SRC)
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
206 +                    (SEGMENT DST SRC)
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
213 +                    (SEGMENT DST SRC)
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
220 +                    (SEGMENT DST SRC)
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
227 +                    (SEGMENT DST SRC)
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
234 +                    (SEGMENT DST SRC)
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
241 +                    (SEGMENT DST SRC)
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
248 +                    (SEGMENT DST SRC)
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
255 +                    (SEGMENT DST SRC)
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
262 +                    (SEGMENT DST SRC)
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
269 +                    (SEGMENT DST SRC)
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
276 +                    (SEGMENT DST SRC)
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
283 +                    (SEGMENT DST SRC)
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
290 +                    (SEGMENT DST SRC)
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
297 +                    (SEGMENT DST SRC)
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
304 +                    (SEGMENT DST SRC)
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
311 +                    (SEGMENT DST SRC)
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
318 +                    (SEGMENT DST SRC)
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
325 +                    (SEGMENT DST SRC)
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
332 +                    (SEGMENT DST SRC)
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
339 +                    (SEGMENT DST SRC)
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
346 +                    (SEGMENT DST SRC)
347 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
348 +                              (EMIT-BYTE SEGMENT 47)
349 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
351 +(DEFINE-INSTRUCTION DIVSS
352 +                    (SEGMENT DST SRC)
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
359 +                    (SEGMENT DST SRC)
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
366 +                    (SEGMENT DST SRC)
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
373 +                    (SEGMENT DST SRC)
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
380 +                    (SEGMENT DST SRC)
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
387 +                    (SEGMENT DST SRC)
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
394 +                    (SEGMENT DST SRC)
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
401 +                    (SEGMENT DST SRC)
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
408 +                    (SEGMENT DST SRC)
409 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
410 +                              (EMIT-BYTE SEGMENT 46)
411 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
413 +(DEFINE-INSTRUCTION PACKSSDW
414 +                    (SEGMENT DST SRC)
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
421 +                    (SEGMENT DST SRC)
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
428 +                    (SEGMENT DST SRC)
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
435 +                    (SEGMENT DST SRC)
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
442 +                    (SEGMENT DST SRC)
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
449 +                    (SEGMENT DST SRC)
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
456 +                    (SEGMENT DST SRC)
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
463 +                    (SEGMENT DST SRC)
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
470 +                    (SEGMENT DST SRC)
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
477 +                    (SEGMENT DST SRC)
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
484 +                    (SEGMENT DST SRC)
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
491 +                    (SEGMENT DST SRC)
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
498 +                    (SEGMENT DST SRC)
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
505 +                    (SEGMENT DST SRC)
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
512 +                    (SEGMENT DST SRC)
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
519 +                    (SEGMENT DST SRC)
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
526 +                    (SEGMENT DST SRC)
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
533 +                    (SEGMENT DST SRC)
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
540 +                    (SEGMENT DST SRC)
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
547 +                    (SEGMENT DST SRC)
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
554 +                    (SEGMENT DST SRC)
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
561 +                    (SEGMENT DST SRC)
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
568 +                    (SEGMENT DST SRC)
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
575 +                    (SEGMENT DST SRC)
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
582 +                    (SEGMENT DST SRC)
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
589 +                    (SEGMENT DST SRC)
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
596 +                    (SEGMENT DST SRC)
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
603 +                    (SEGMENT DST SRC)
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
610 +                    (SEGMENT DST SRC)
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
617 +                    (SEGMENT DST SRC)
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
624 +                    (SEGMENT DST SRC)
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
631 +                    (SEGMENT DST SRC)
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
638 +                    (SEGMENT DST SRC)
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
645 +                    (SEGMENT DST SRC)
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
652 +                    (SEGMENT DST SRC)
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
659 +                    (SEGMENT DST SRC)
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
666 +                    (SEGMENT DST SRC)
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
673 +                    (SEGMENT DST SRC)
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
680 +                    (SEGMENT DST SRC)
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
687 +                    (SEGMENT DST SRC)
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
694 +                    (SEGMENT DST SRC)
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
701 +                    (SEGMENT DST SRC)
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
708 +                    (SEGMENT DST SRC)
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
715 +                    (SEGMENT DST SRC)
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
722 +                    (SEGMENT DST SRC)
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
729 +                    (SEGMENT DST SRC)
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
736 +                    (SEGMENT DST SRC)
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
743 +                    (SEGMENT DST SRC)
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
750 +                    (SEGMENT DST SRC)
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
757 +                    (SEGMENT DST SRC)
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
764 +                    (SEGMENT DST SRC)
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
771 +                    (SEGMENT DST SRC)
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
778 +                    (SEGMENT DST SRC)
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
785 +                    (SEGMENT DST SRC)
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
792 +                    (SEGMENT DST SRC)
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
799 +                    (SEGMENT DST SRC)
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
806 +                    (SEGMENT DST SRC)
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
813 +                    (SEGMENT DST SRC)
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
820 +                    (SEGMENT DST SRC)
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
827 +                    (SEGMENT DST SRC)
828 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
829 +                              (EMIT-BYTE SEGMENT 91)
830 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
832 +(DEFINE-INSTRUCTION CVTPD2DQ
833 +                    (SEGMENT DST SRC)
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
840 +                    (SEGMENT DST SRC)
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
847 +                    (SEGMENT DST SRC)
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
854 +                    (SEGMENT DST SRC)
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
861 +                    (SEGMENT DST SRC)
862 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
863 +                              (EMIT-BYTE SEGMENT 42)
864 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
866 +(DEFINE-INSTRUCTION CVTPS2DQ
867 +                    (SEGMENT DST SRC)
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
874 +                    (SEGMENT DST SRC)
875 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
876 +                              (EMIT-BYTE SEGMENT 90)
877 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
879 +(DEFINE-INSTRUCTION CVTPS2PI
880 +                    (SEGMENT DST SRC)
881 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
882 +                              (EMIT-BYTE SEGMENT 45)
883 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
885 +(DEFINE-INSTRUCTION CVTSD2SI
886 +                    (SEGMENT DST SRC)
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
893 +                    (SEGMENT DST SRC)
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
900 +                    (SEGMENT DST SRC)
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
907 +                    (SEGMENT DST SRC)
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
914 +                    (SEGMENT DST SRC)
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
921 +                    (SEGMENT DST SRC)
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
928 +                    (SEGMENT DST SRC)
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
935 +                    (SEGMENT DST SRC)
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
942 +                    (SEGMENT DST SRC)
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
949 +                    (SEGMENT DST SRC)
950 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
951 +                              (EMIT-BYTE SEGMENT 44)
952 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
954 +(DEFINE-INSTRUCTION CVTTSD2SI
955 +                    (SEGMENT DST SRC)
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
962 +                    (SEGMENT DST SRC)
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
969 +                    (SEGMENT DST SRC)
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
976 +                    (SEGMENT DST SRC)
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
983 +                    (SEGMENT DST SRC)
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
990 +                    (SEGMENT DST SRC)
991 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
992 +                              (EMIT-BYTE SEGMENT 18)
993 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
995 +(DEFINE-INSTRUCTION MOVLHPS
996 +                    (SEGMENT DST SRC)
997 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
998 +                              (EMIT-BYTE SEGMENT 22)
999 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1001 +(DEFINE-INSTRUCTION MOVMSKPD
1002 +                    (SEGMENT DST SRC)
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
1009 +                    (SEGMENT DST SRC)
1010 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
1011 +                              (EMIT-BYTE SEGMENT 80)
1012 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1014 +(DEFINE-INSTRUCTION MOVNTDQ
1015 +                    (SEGMENT DST SRC)
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
1022 +                    (SEGMENT DST SRC)
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
1029 +                    (SEGMENT DST SRC)
1030 +                    (:EMITTER (EMIT-BYTE SEGMENT 15)
1031 +                              (EMIT-BYTE SEGMENT 43)
1032 +                              (EMIT-EA SEGMENT SRC (REG-TN-ENCODING DST))))
1034 +(DEFINE-INSTRUCTION MOVSHDUP
1035 +                    (SEGMENT DST SRC)
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
1042 +                    (SEGMENT DST SRC)
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
1110 +                                                    :BYTE
1111 +                                                    (CDR
1112 +                                                     (ASSOC COND
1113 +                                                            '((:EQ . 0)
1114 +                                                              (:E . 0) (:Z . 0)
1115 +                                                              (:L . 1)
1116 +                                                              (:NGE . 1)
1117 +                                                              (:LE . 2)
1118 +                                                              (:NG . 2)
1119 +                                                              (:UNORD . 3)
1120 +                                                              (:NE . 4)
1121 +                                                              (:NZ . 4)
1122 +                                                              (:NL . 5)
1123 +                                                              (:GE . 5)
1124 +                                                              (:NLE . 6)
1125 +                                                              (:G . 6)
1126 +                                                              (:ORD . 7)))))))
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
1134 +                                                    :BYTE
1135 +                                                    (CDR
1136 +                                                     (ASSOC COND
1137 +                                                            '((:EQ . 0)
1138 +                                                              (:E . 0) (:Z . 0)
1139 +                                                              (:L . 1)
1140 +                                                              (:NGE . 1)
1141 +                                                              (:LE . 2)
1142 +                                                              (:NG . 2)
1143 +                                                              (:UNORD . 3)
1144 +                                                              (:NE . 4)
1145 +                                                              (:NZ . 4)
1146 +                                                              (:NL . 5)
1147 +                                                              (:GE . 5)
1148 +                                                              (:NLE . 6)
1149 +                                                              (:G . 6)
1150 +                                                              (:ORD . 7)))))))
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
1159 +                                                    :BYTE
1160 +                                                    (CDR
1161 +                                                     (ASSOC COND
1162 +                                                            '((:EQ . 0)
1163 +                                                              (:E . 0) (:Z . 0)
1164 +                                                              (:L . 1)
1165 +                                                              (:NGE . 1)
1166 +                                                              (:LE . 2)
1167 +                                                              (:NG . 2)
1168 +                                                              (:UNORD . 3)
1169 +                                                              (:NE . 4)
1170 +                                                              (:NZ . 4)
1171 +                                                              (:NL . 5)
1172 +                                                              (:GE . 5)
1173 +                                                              (:NLE . 6)
1174 +                                                              (:G . 6)
1175 +                                                              (:ORD . 7)))))))
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
1184 +                                                    :BYTE
1185 +                                                    (CDR
1186 +                                                     (ASSOC COND
1187 +                                                            '((:EQ . 0)
1188 +                                                              (:E . 0) (:Z . 0)
1189 +                                                              (:L . 1)
1190 +                                                              (:NGE . 1)
1191 +                                                              (:LE . 2)
1192 +                                                              (:NG . 2)
1193 +                                                              (:UNORD . 3)
1194 +                                                              (:NE . 4)
1195 +                                                              (:NZ . 4)
1196 +                                                              (:NL . 5)
1197 +                                                              (:GE . 5)
1198 +                                                              (:NLE . 6)
1199 +                                                              (:G . 6)
1200 +                                                              (:ORD . 7)))))))
1202 +(DEFINE-INSTRUCTION MOVAPD
1203 +                    (SEGMENT DST SRC)
1204 +                    (:EMITTER
1205 +                     (COND
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
1215 +                    (SEGMENT DST SRC)
1216 +                    (:EMITTER
1217 +                     (COND
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
1226 +                    (SEGMENT DST SRC)
1227 +                    (:EMITTER
1228 +                     (COND
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
1238 +                    (SEGMENT DST SRC)
1239 +                    (:EMITTER
1240 +                     (COND
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
1250 +                    (SEGMENT DST SRC)
1251 +                    (:EMITTER
1252 +                     (COND
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
1262 +                    (SEGMENT DST SRC)
1263 +                    (:EMITTER
1264 +                     (COND
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
1274 +                    (SEGMENT DST SRC)
1275 +                    (:EMITTER
1276 +                     (COND
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
1285 +                    (SEGMENT DST SRC)
1286 +                    (:EMITTER
1287 +                     (COND
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
1297 +                    (SEGMENT DST SRC)
1298 +                    (:EMITTER
1299 +                     (COND
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
1308 +                    (SEGMENT DST SRC)
1309 +                    (:EMITTER
1310 +                     (COND
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
1320 +                    (SEGMENT DST SRC)
1321 +                    (:EMITTER
1322 +                     (COND
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
1332 +                    (SEGMENT DST SRC)
1333 +                    (:EMITTER
1334 +                     (COND
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
1344 +                    (SEGMENT DST SRC)
1345 +                    (:EMITTER
1346 +                     (COND
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
1356 +                    (SEGMENT DST SRC)
1357 +                    (:EMITTER
1358 +                     (COND
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))))))
1368 +;;; CPUID
1371 +(define-instruction cpuid (segment)
1372 +  (:emitter
1373 +   (emit-byte segment #x0F)
1374 +   (emit-byte segment #xA2)))
1379  ;;;; fp instructions
1380  ;;;;
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
1385 @@ -21,7 +21,8 @@
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"))
1395 @@ -91,6 +92,17 @@
1396    (defreg fr7 7 :float)
1397    (defregset *float-regs* fr0 fr1 fr2 fr3 fr4 fr5 fr6 fr7)
1399 +  ;; sse registers
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)
1409 +  
1410    ;; registers used to pass arguments
1411    ;;
1412    ;; the number of arguments/return values passed in registers
1413 @@ -118,6 +130,8 @@
1414  ;;; the new way:
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)
1422 @@ -320,6 +334,8 @@
1423                      :save-p t
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))
1431 @@ -337,6 +353,7 @@
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))
1436  ) ; EVAL-WHEN
1437  \f
1438  ;;;; miscellaneous TNs for the various registers
1439 @@ -444,6 +461,7 @@
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")