.text ; foo: addr16 fstcw %es:(%si)
 fstsw; fstsw %ax;
 addr16 fstsw %ax ;addr16 rep cmpsw %es:(%di),%ss:(%si)

 es fwait

	fwait
	movl $0,%gs:fpu_owner_task

	.byte 0x66
	.byte 0xf2
	.byte 0x0f
	.byte 0x38
	.byte 0x17

	.byte 0xf2
	.byte 0x66
	.byte 0x0f
	.byte 0x54

	.byte 0xf2
	.byte 0x0f
	.byte 0x54

# data16 movsd %xmm4,(%edx)
	.byte 0xf2
	.byte 0x66
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# data16 movsd %xmm4,(%bp,%si)
	.byte 0xf2
	.byte 0x67
	.byte 0x66
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# lock data16 movsd %xmm4,(%bp,%si)
	.byte 0xf2
	.byte 0x67
	.byte 0xf0
	.byte 0x66
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# data16 movss %xmm4,(%edx)
	.byte 0xf3
	.byte 0x66
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# lock data16 movss %xmm4,(%bp,%si)
	.byte 0xf3
	.byte 0x67
	.byte 0xf0
	.byte 0x66
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# repz data16 movsd %xmm4,(%bp,%si)
	.byte 0xf3
	.byte 0x67
	.byte 0xf2
	.byte 0x66
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# data16 movss %xmm4,%ds:(%edx)
	.byte 0xf3
	.byte 0x66
	.byte 0x3e
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# data16 movsd %xmm4,%ss:(%edx)
	.byte 0xf2
	.byte 0x66
	.byte 0x36
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# repz lock data16 movsd %xmm4,%ss:(%edx)
	.byte 0xf3
	.byte 0xf0
	.byte 0xf2
	.byte 0x66
	.byte 0x36
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# data16 ds movsd %xmm4,%ss:(%edx)
	.byte 0xf2
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# data16 ds movsd %xmm4,%ss:(%bp,%si)
	.byte 0xf2
	.byte 0x67
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# lock data16 ds movsd %xmm4,%ss:(%bp,%si)
	.byte 0xf2
	.byte 0x67
	.byte 0xf0
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# data16 ds movss %xmm4,%ss:(%edx)
	.byte 0xf3
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# lock data16 ds movss %xmm4,%ss:(%edx)
	.byte 0xf3
	.byte 0xf0
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# repz data16 ds movsd %xmm4,%ss:(%bp,%si)
	.byte 0xf3
	.byte 0x67
	.byte 0xf2
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x0f
	.byte 0x11
	.byte 0x22

# repnz; xchg %ax,%ax
	.byte 0xf2
	.byte 0x66
	.byte 0x90

# repnz; addr16 xchg %ax,%ax
	.byte 0xf2
	.byte 0x67
	.byte 0x66
	.byte 0x90

# repnz; addr16 lock xchg %ax,%ax
	.byte 0xf2
	.byte 0x67
	.byte 0xf0
	.byte 0x66
	.byte 0x90

# data16 pause
	.byte 0xf3
	.byte 0x66
	.byte 0x90

# addr16 lock data16 pause
	.byte 0xf3
	.byte 0x67
	.byte 0xf0
	.byte 0x66
	.byte 0x90

# repz; addr16; repnz; xchg %ax,%ax
	.byte 0xf3
	.byte 0x67
	.byte 0xf2
	.byte 0x66
	.byte 0x90

# repnz; ds nop
	.byte 0xf2
	.byte 0x3e
	.byte 0x90

# repnz; lock addr16 ds nop
	.byte 0xf2
	.byte 0xf0
	.byte 0x67
	.byte 0x3e
	.byte 0x90

# ds pause
	.byte 0xf3
	.byte 0x3e
	.byte 0x90

# data16 ds pause
	.byte 0xf3
	.byte 0x66
	.byte 0x3e
	.byte 0x90

# lock ds pause
	.byte 0xf3
	.byte 0xf0
	.byte 0x3e
	.byte 0x90

# lock addr16 ds pause
	.byte 0xf3
	.byte 0xf0
	.byte 0x67
	.byte 0x3e
	.byte 0x90

# repz; repnz; addr16 ds nop
	.byte 0xf3
	.byte 0xf2
	.byte 0x67
	.byte 0x3e
	.byte 0x90

# lock ss xchg %ax,%ax
	.byte 0x66
	.byte 0xf0
	.byte 0x36
	.byte 0x90

# repnz; ss nop
	.byte 0xf2
	.byte 0x36
	.byte 0x90

# repnz; ss xchg %ax,%ax
	.byte 0xf2
	.byte 0x66
	.byte 0x36
	.byte 0x90

# repnz; lock ss nop
	.byte 0xf2
	.byte 0xf0
	.byte 0x36
	.byte 0x90

# repnz; lock addr16 ss nop
	.byte 0xf2
	.byte 0xf0
	.byte 0x67
	.byte 0x36
	.byte 0x90

# ss pause
	.byte 0xf3
	.byte 0x36
	.byte 0x90

# addr16 ss pause
	.byte 0xf3
	.byte 0x67
	.byte 0x36
	.byte 0x90

# lock addr16 ss pause
	.byte 0xf3
	.byte 0xf0
	.byte 0x67
	.byte 0x36
	.byte 0x90

# repz; repnz; ss nop
	.byte 0xf3
	.byte 0xf2
	.byte 0x36
	.byte 0x90

# repz; repnz; addr16 ss nop
	.byte 0xf3
	.byte 0xf2
	.byte 0x67
	.byte 0x36
	.byte 0x90

# repz; lock; repnz; ss xchg %ax,%ax
	.byte 0xf3
	.byte 0xf0
	.byte 0xf2
	.byte 0x66
	.byte 0x36
	.byte 0x90

# ds ss xchg %ax,%ax
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x90

# addr16 ds ss xchg %ax,%ax
	.byte 0x67
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x90

# addr16 lock ds ss xchg %ax,%ax
	.byte 0x67
	.byte 0xf0
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x90

# data16 ds ss pause
	.byte 0xf3
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x90

# lock data16 ds ss pause
	.byte 0xf3
	.byte 0xf0
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x90

# repz; repnz; addr16 ds ss nop
	.byte 0xf3
	.byte 0xf2
	.byte 0x67
	.byte 0x3e
	.byte 0x36
	.byte 0x90

# repz; addr16; repnz; ds ss xchg %ax,%ax
	.byte 0xf3
	.byte 0x67
	.byte 0xf2
	.byte 0x66
	.byte 0x3e
	.byte 0x36
	.byte 0x90

# repz; rdseed %eax
	.byte 0xf3
	.byte 0x0f
	.byte 0xc7
	.byte 0xf8

	nop

# repz; rdrand %eax
	.byte 0xf3
	.byte 0x0f
	.byte 0xc7
	.byte 0xf0

	nop

# repnz; rdseed %eax
	.byte 0xf2
	.byte 0x0f
	.byte 0xc7
	.byte 0xf8

	nop

# repnz; rdrand %eax
	.byte 0xf2
	.byte 0x0f
	.byte 0xc7
	.byte 0xf0

	nop

	vcvtpd2dqx 0x20(%eax),%xmm0
	vcvtpd2dq 0x20(%eax){1to2},%xmm0
	vcvtpd2dqx 0x20(%eax),%xmm0

# Get a good alignment.
 .p2align	4,0
