1.text ; foo: addr16 fstcw %es:(%si) 2 fstsw; fstsw %ax; 3 addr16 fstsw %ax ;addr16 rep cmpsw %es:(%di),%ss:(%si) 4 5 es fwait 6 7 fwait 8 movl $0,%gs:fpu_owner_task 9 10 .byte 0x66 11 .byte 0xf2 12 .byte 0x0f 13 .byte 0x38 14 .byte 0x17 15 16 .byte 0xf2 17 .byte 0x66 18 .byte 0x0f 19 .byte 0x54 20 21 .byte 0xf2 22 .byte 0x0f 23 .byte 0x54 24 25# data16 movsd %xmm4,(%edx) 26 .byte 0xf2 27 .byte 0x66 28 .byte 0x0f 29 .byte 0x11 30 .byte 0x22 31 32# data16 movsd %xmm4,(%bp,%si) 33 .byte 0xf2 34 .byte 0x67 35 .byte 0x66 36 .byte 0x0f 37 .byte 0x11 38 .byte 0x22 39 40# lock data16 movsd %xmm4,(%bp,%si) 41 .byte 0xf2 42 .byte 0x67 43 .byte 0xf0 44 .byte 0x66 45 .byte 0x0f 46 .byte 0x11 47 .byte 0x22 48 49# data16 movss %xmm4,(%edx) 50 .byte 0xf3 51 .byte 0x66 52 .byte 0x0f 53 .byte 0x11 54 .byte 0x22 55 56# lock data16 movss %xmm4,(%bp,%si) 57 .byte 0xf3 58 .byte 0x67 59 .byte 0xf0 60 .byte 0x66 61 .byte 0x0f 62 .byte 0x11 63 .byte 0x22 64 65# repz data16 movsd %xmm4,(%bp,%si) 66 .byte 0xf3 67 .byte 0x67 68 .byte 0xf2 69 .byte 0x66 70 .byte 0x0f 71 .byte 0x11 72 .byte 0x22 73 74# data16 movss %xmm4,%ds:(%edx) 75 .byte 0xf3 76 .byte 0x66 77 .byte 0x3e 78 .byte 0x0f 79 .byte 0x11 80 .byte 0x22 81 82# data16 movsd %xmm4,%ss:(%edx) 83 .byte 0xf2 84 .byte 0x66 85 .byte 0x36 86 .byte 0x0f 87 .byte 0x11 88 .byte 0x22 89 90# repz lock data16 movsd %xmm4,%ss:(%edx) 91 .byte 0xf3 92 .byte 0xf0 93 .byte 0xf2 94 .byte 0x66 95 .byte 0x36 96 .byte 0x0f 97 .byte 0x11 98 .byte 0x22 99 100# data16 ds movsd %xmm4,%ss:(%edx) 101 .byte 0xf2 102 .byte 0x66 103 .byte 0x3e 104 .byte 0x36 105 .byte 0x0f 106 .byte 0x11 107 .byte 0x22 108 109# data16 ds movsd %xmm4,%ss:(%bp,%si) 110 .byte 0xf2 111 .byte 0x67 112 .byte 0x66 113 .byte 0x3e 114 .byte 0x36 115 .byte 0x0f 116 .byte 0x11 117 .byte 0x22 118 119# lock data16 ds movsd %xmm4,%ss:(%bp,%si) 120 .byte 0xf2 121 .byte 0x67 122 .byte 0xf0 123 .byte 0x66 124 .byte 0x3e 125 .byte 0x36 126 .byte 0x0f 127 .byte 0x11 128 .byte 0x22 129 130# data16 ds movss %xmm4,%ss:(%edx) 131 .byte 0xf3 132 .byte 0x66 133 .byte 0x3e 134 .byte 0x36 135 .byte 0x0f 136 .byte 0x11 137 .byte 0x22 138 139# lock data16 ds movss %xmm4,%ss:(%edx) 140 .byte 0xf3 141 .byte 0xf0 142 .byte 0x66 143 .byte 0x3e 144 .byte 0x36 145 .byte 0x0f 146 .byte 0x11 147 .byte 0x22 148 149# repz data16 ds movsd %xmm4,%ss:(%bp,%si) 150 .byte 0xf3 151 .byte 0x67 152 .byte 0xf2 153 .byte 0x66 154 .byte 0x3e 155 .byte 0x36 156 .byte 0x0f 157 .byte 0x11 158 .byte 0x22 159 160# repnz; xchg %ax,%ax 161 .byte 0xf2 162 .byte 0x66 163 .byte 0x90 164 165# repnz; addr16 xchg %ax,%ax 166 .byte 0xf2 167 .byte 0x67 168 .byte 0x66 169 .byte 0x90 170 171# repnz; addr16 lock xchg %ax,%ax 172 .byte 0xf2 173 .byte 0x67 174 .byte 0xf0 175 .byte 0x66 176 .byte 0x90 177 178# data16 pause 179 .byte 0xf3 180 .byte 0x66 181 .byte 0x90 182 183# addr16 lock data16 pause 184 .byte 0xf3 185 .byte 0x67 186 .byte 0xf0 187 .byte 0x66 188 .byte 0x90 189 190# repz; addr16; repnz; xchg %ax,%ax 191 .byte 0xf3 192 .byte 0x67 193 .byte 0xf2 194 .byte 0x66 195 .byte 0x90 196 197# repnz; ds nop 198 .byte 0xf2 199 .byte 0x3e 200 .byte 0x90 201 202# repnz; lock addr16 ds nop 203 .byte 0xf2 204 .byte 0xf0 205 .byte 0x67 206 .byte 0x3e 207 .byte 0x90 208 209# ds pause 210 .byte 0xf3 211 .byte 0x3e 212 .byte 0x90 213 214# data16 ds pause 215 .byte 0xf3 216 .byte 0x66 217 .byte 0x3e 218 .byte 0x90 219 220# lock ds pause 221 .byte 0xf3 222 .byte 0xf0 223 .byte 0x3e 224 .byte 0x90 225 226# lock addr16 ds pause 227 .byte 0xf3 228 .byte 0xf0 229 .byte 0x67 230 .byte 0x3e 231 .byte 0x90 232 233# repz; repnz; addr16 ds nop 234 .byte 0xf3 235 .byte 0xf2 236 .byte 0x67 237 .byte 0x3e 238 .byte 0x90 239 240# lock ss xchg %ax,%ax 241 .byte 0x66 242 .byte 0xf0 243 .byte 0x36 244 .byte 0x90 245 246# repnz; ss nop 247 .byte 0xf2 248 .byte 0x36 249 .byte 0x90 250 251# repnz; ss xchg %ax,%ax 252 .byte 0xf2 253 .byte 0x66 254 .byte 0x36 255 .byte 0x90 256 257# repnz; lock ss nop 258 .byte 0xf2 259 .byte 0xf0 260 .byte 0x36 261 .byte 0x90 262 263# repnz; lock addr16 ss nop 264 .byte 0xf2 265 .byte 0xf0 266 .byte 0x67 267 .byte 0x36 268 .byte 0x90 269 270# ss pause 271 .byte 0xf3 272 .byte 0x36 273 .byte 0x90 274 275# addr16 ss pause 276 .byte 0xf3 277 .byte 0x67 278 .byte 0x36 279 .byte 0x90 280 281# lock addr16 ss pause 282 .byte 0xf3 283 .byte 0xf0 284 .byte 0x67 285 .byte 0x36 286 .byte 0x90 287 288# repz; repnz; ss nop 289 .byte 0xf3 290 .byte 0xf2 291 .byte 0x36 292 .byte 0x90 293 294# repz; repnz; addr16 ss nop 295 .byte 0xf3 296 .byte 0xf2 297 .byte 0x67 298 .byte 0x36 299 .byte 0x90 300 301# repz; lock; repnz; ss xchg %ax,%ax 302 .byte 0xf3 303 .byte 0xf0 304 .byte 0xf2 305 .byte 0x66 306 .byte 0x36 307 .byte 0x90 308 309# ds ss xchg %ax,%ax 310 .byte 0x66 311 .byte 0x3e 312 .byte 0x36 313 .byte 0x90 314 315# addr16 ds ss xchg %ax,%ax 316 .byte 0x67 317 .byte 0x66 318 .byte 0x3e 319 .byte 0x36 320 .byte 0x90 321 322# addr16 lock ds ss xchg %ax,%ax 323 .byte 0x67 324 .byte 0xf0 325 .byte 0x66 326 .byte 0x3e 327 .byte 0x36 328 .byte 0x90 329 330# data16 ds ss pause 331 .byte 0xf3 332 .byte 0x66 333 .byte 0x3e 334 .byte 0x36 335 .byte 0x90 336 337# lock data16 ds ss pause 338 .byte 0xf3 339 .byte 0xf0 340 .byte 0x66 341 .byte 0x3e 342 .byte 0x36 343 .byte 0x90 344 345# repz; repnz; addr16 ds ss nop 346 .byte 0xf3 347 .byte 0xf2 348 .byte 0x67 349 .byte 0x3e 350 .byte 0x36 351 .byte 0x90 352 353# repz; addr16; repnz; ds ss xchg %ax,%ax 354 .byte 0xf3 355 .byte 0x67 356 .byte 0xf2 357 .byte 0x66 358 .byte 0x3e 359 .byte 0x36 360 .byte 0x90 361 362# repz; rdseed %eax 363 .byte 0xf3 364 .byte 0x0f 365 .byte 0xc7 366 .byte 0xf8 367 368 nop 369 370# repz; rdrand %eax 371 .byte 0xf3 372 .byte 0x0f 373 .byte 0xc7 374 .byte 0xf0 375 376 nop 377 378# repnz; rdseed %eax 379 .byte 0xf2 380 .byte 0x0f 381 .byte 0xc7 382 .byte 0xf8 383 384 nop 385 386# repnz; rdrand %eax 387 .byte 0xf2 388 .byte 0x0f 389 .byte 0xc7 390 .byte 0xf0 391 392 nop 393 394 repz; movaps %xmm7, %xmm7 395 int $3 396 397# "repz" vmovaps %xmm7, %xmm7 398 .byte 0xc5 399 .byte 0xfa 400 .byte 0x28 401 .byte 0xff 402 403 int $3 404 405# "repnz" {vex3} vmovaps %xmm7, %xmm7 406 .byte 0xc4 407 .byte 0xe1 408 .byte 0x7b 409 .byte 0x28 410 .byte 0xff 411 412 int $3 413 414# "EVEX.W1" vmovaps %xmm7, %xmm7 415 .byte 0x62 416 .byte 0xf1 417 .byte 0xfc 418 .byte 0x08 419 .byte 0x28 420 .byte 0xff 421 422 int $3 423 424# "repz" vmovaps %xmm7, %xmm7 425 .byte 0x62 426 .byte 0xf1 427 .byte 0x7e 428 .byte 0x08 429 .byte 0x28 430 .byte 0xff 431 432 int $3 433 434# "EVEX.W0" vmovapd %xmm7, %xmm7 435 .byte 0x62 436 .byte 0xf1 437 .byte 0x7d 438 .byte 0x08 439 .byte 0x28 440 .byte 0xff 441 442 int $3 443 444# "repnz" vmovapd %xmm7, %xmm7 445 .byte 0x62 446 .byte 0xf1 447 .byte 0xff 448 .byte 0x08 449 .byte 0x28 450 .byte 0xff 451 452 int $3 453 454 .byte 0x66; vmovaps %xmm0, %xmm0 455 repz; {vex3} vmovaps %xmm0, %xmm0 456 repnz; vmovaps %xmm0, %xmm0 457 lock; {evex} vmovaps %xmm0, %xmm0 458 459 vcvtpd2dqx 0x20(%eax),%xmm0 460 vcvtpd2dq 0x20(%eax){1to2},%xmm0 461 vcvtpd2dqx 0x20(%eax),%xmm0 462 463# Get a good alignment. 464 .p2align 4,0 465