Commit 9403d0ea authored by Julian Kranz's avatar Julian Kranz

X86 Specification

- Bug fixes
- Cleanup
parent 87bb27e9
...@@ -1077,6 +1077,7 @@ val show/instruction insn = ...@@ -1077,6 +1077,7 @@ val show/instruction insn =
| VUNPCKHPS x: "VUNPCKHPS" -++ show/varity x | VUNPCKHPS x: "VUNPCKHPS" -++ show/varity x
| VUNPCKLPD x: "VUNPCKLPD" -++ show/varity x | VUNPCKLPD x: "VUNPCKLPD" -++ show/varity x
| VUNPCKLPS x: "VUNPCKLPS" -++ show/varity x | VUNPCKLPS x: "VUNPCKLPS" -++ show/varity x
| VXORPD x: "VXORPD" -++ show/varity x
| VXORPS x: "VXORPS" -++ show/varity x | VXORPS x: "VXORPS" -++ show/varity x
| VZEROALL x: "VZEROALL" -++ show/varity x | VZEROALL x: "VZEROALL" -++ show/varity x
| VZEROUPPER x: "VZEROUPPER" -++ show/varity x | VZEROUPPER x: "VZEROUPPER" -++ show/varity x
...@@ -1088,7 +1089,6 @@ val show/instruction insn = ...@@ -1088,7 +1089,6 @@ val show/instruction insn =
| XADD x: "XADD" -++ show/arity2 x | XADD x: "XADD" -++ show/arity2 x
| XCHG x: "XCHG" -++ show/arity2 x | XCHG x: "XCHG" -++ show/arity2 x
| XGETBV x: "XGETBV" | XGETBV x: "XGETBV"
| XLAT x: "XLAT"
| XLATB x: "XLATB" | XLATB x: "XLATB"
| XOR x: "XOR" -++ show/arity2 x | XOR x: "XOR" -++ show/arity2 x
| XORPD x: "XORPD" -++ show/arity2 x | XORPD x: "XORPD" -++ show/arity2 x
......
...@@ -2146,6 +2146,7 @@ val semantics insn = ...@@ -2146,6 +2146,7 @@ val semantics insn =
| VUNPCKHPS x: sem-undef-varity x | VUNPCKHPS x: sem-undef-varity x
| VUNPCKLPD x: sem-undef-varity x | VUNPCKLPD x: sem-undef-varity x
| VUNPCKLPS x: sem-undef-varity x | VUNPCKLPS x: sem-undef-varity x
| VXORPD x: sem-undef-varity x
| VXORPS x: sem-undef-varity x | VXORPS x: sem-undef-varity x
| VZEROALL v: sem-vzeroall | VZEROALL v: sem-vzeroall
| VZEROUPPER v: sem-vzeroupper | VZEROUPPER v: sem-vzeroupper
...@@ -2157,7 +2158,6 @@ val semantics insn = ...@@ -2157,7 +2158,6 @@ val semantics insn =
| XADD x: sem-xadd x | XADD x: sem-xadd x
| XCHG x: sem-xchg x | XCHG x: sem-xchg x
| XGETBV x: sem-undef-arity0 x | XGETBV x: sem-undef-arity0 x
| XLAT x: sem-undef-arity0 x
| XLATB x: sem-undef-arity0 x | XLATB x: sem-undef-arity0 x
| XOR x: sem-xor x | XOR x: sem-xor x
| XORPD x: sem-undef-arity2 x | XORPD x: sem-undef-arity2 x
......
...@@ -1507,6 +1507,7 @@ type insn = ...@@ -1507,6 +1507,7 @@ type insn =
| VUNPCKHPS of varity | VUNPCKHPS of varity
| VUNPCKLPD of varity | VUNPCKLPD of varity
| VUNPCKLPS of varity | VUNPCKLPS of varity
| VXORPD of varity
| VXORPS of varity | VXORPS of varity
| VZEROALL of varity | VZEROALL of varity
| VZEROUPPER of varity | VZEROUPPER of varity
...@@ -1518,7 +1519,6 @@ type insn = ...@@ -1518,7 +1519,6 @@ type insn =
| XADD of arity2 | XADD of arity2
| XCHG of arity2 | XCHG of arity2
| XGETBV of arity0 | XGETBV of arity0
| XLAT of arity0
| XLATB of arity0 | XLATB of arity0
| XOR of arity2 | XOR of arity2
| XORPD of arity2 | XORPD of arity2
...@@ -5654,8 +5654,6 @@ val / [0x85 /r] ...@@ -5654,8 +5654,6 @@ val / [0x85 /r]
| rexw? = binop TEST r/m64 r64 | rexw? = binop TEST r/m64 r64
| otherwise = binop TEST r/m32 r32 | otherwise = binop TEST r/m32 r32
### =><=
### UCOMISD ### UCOMISD
### - Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS ### - Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS
val /66 [0x0f 0x2e /r] = binop UCOMISD xmm128 xmm/m64 val /66 [0x0f 0x2e /r] = binop UCOMISD xmm128 xmm/m64
...@@ -5701,7 +5699,7 @@ val /vex/0f/vexv [0x14 /r] ...@@ -5701,7 +5699,7 @@ val /vex/0f/vexv [0x14 /r]
### VBROADCAST ### VBROADCAST
### - Load with Broadcast ### - Load with Broadcast
val /vex/66/0f/38 [0x18 /r-mem] val /vex/66/0f/38 [0x18 /r-mem]
| vex128? & vexw0? = varity2 VBROADCASTSS xmm128 m32 | vex128? & vexw0? & mode32? = varity2 VBROADCASTSS xmm128 m32
| vex256? & vexw0? = varity2 VBROADCASTSS ymm256 m32 | vex256? & vexw0? = varity2 VBROADCASTSS ymm256 m32
val /vex/66/0f/38 [0x19 /r-mem] | vex256? & vexw0? = varity2 VBROADCASTSD ymm256 m64 val /vex/66/0f/38 [0x19 /r-mem] | vex256? & vexw0? = varity2 VBROADCASTSD ymm256 m64
val /vex/66/0f/38 [0x1a /r-mem] | vex256? & vexw0? = varity2 VBROADCASTF128 ymm256 m128 val /vex/66/0f/38 [0x1a /r-mem] | vex256? & vexw0? = varity2 VBROADCASTF128 ymm256 m128
...@@ -5713,6 +5711,7 @@ val /vex/66/0f/38 [0x13 /r] ...@@ -5713,6 +5711,7 @@ val /vex/66/0f/38 [0x13 /r]
| vex128? & vexw0? = varity2 VCVTPH2PS xmm128 xmm/m64 | vex128? & vexw0? = varity2 VCVTPH2PS xmm128 xmm/m64
### VCVTPS2PH ### VCVTPS2PH
### - Convert Single-Precision FP value to 16-bit FP value
val /vex/66/0f/3a [0x1d /r] val /vex/66/0f/3a [0x1d /r]
| vex256? & vexw0? = varity3 VCVTPS2PH xmm/m128 ymm256 imm8 | vex256? & vexw0? = varity3 VCVTPS2PH xmm/m128 ymm256 imm8
| vex128? & vexw0? = varity3 VCVTPS2PH xmm/m64 xmm128 imm8 | vex128? & vexw0? = varity3 VCVTPS2PH xmm/m64 xmm128 imm8
...@@ -5827,7 +5826,7 @@ val / ['10010 r:3'] ...@@ -5827,7 +5826,7 @@ val / ['10010 r:3']
update@{reg/opcode=r}; update@{reg/opcode=r};
binop XCHG eax r32/rexb binop XCHG eax r32/rexb
end end
val / [0x86 /r] = binop XCHG r8 r/m8 val / [0x86 /r] = binop-lock XCHG r/m8 r8
val / [0x87 /r] val / [0x87 /r]
| opndsz? = binop-lock XCHG r/m16 r16 | opndsz? = binop-lock XCHG r/m16 r16
| rexw? = binop-lock XCHG r/m64 r64 | rexw? = binop-lock XCHG r/m64 r64
...@@ -5840,7 +5839,7 @@ val / [0x0f 0x01 0xd0] = arity0 XGETBV ...@@ -5840,7 +5839,7 @@ val / [0x0f 0x01 0xd0] = arity0 XGETBV
### XLAT/XLATB ### XLAT/XLATB
### - Table Look-up Translation ### - Table Look-up Translation
val / [0xd7] val / [0xd7]
| opndsz? = arity0 XLAT | opndsz? = arity0 XLATB
| rexw? = arity0 XLATB | rexw? = arity0 XLATB
| otherwise = arity0 XLATB | otherwise = arity0 XLATB
...@@ -5874,13 +5873,16 @@ val / [0x33 /r] ...@@ -5874,13 +5873,16 @@ val / [0x33 /r]
### XORPD ### XORPD
### - Bitwise Logical XOR for Double-Precision Floating-Point Values ### - Bitwise Logical XOR for Double-Precision Floating-Point Values
val /66 [0x0f 0x57 /r] = binop XORPD xmm128 xmm/m128 val /66 [0x0f 0x57 /r] = binop XORPD xmm128 xmm/m128
val /vex/66/0f/vexv [0x57 /r]
| vex128? = varity3 VXORPD xmm128 v/xmm xmm/m128
| vex256? = varity3 VXORPD ymm256 v/ymm ymm/m256
### XORPS ### XORPS
### - Bitwise Logical XOR for Single-Precision Floating-Point Values ### - Bitwise Logical XOR for Single-Precision Floating-Point Values
val / [0x0f 0x57 /r] = binop XORPS xmm128 xmm/m128 val / [0x0f 0x57 /r] = binop XORPS xmm128 xmm/m128
val /vex/66/0f/vexv [0x57 /r] val /vex/0f/vexv [0x57 /r]
| vex128? = varity3 VXORPS xmm128 v/xmm xmm/m128 | vex128? = varity3 VXORPS xmm128 v/xmm xmm/m128
| otherwise = varity3 VXORPS ymm256 v/ymm ymm/m256 | vex256? = varity3 VXORPS ymm256 v/ymm ymm/m256
### XRSTOR ### XRSTOR
### - Restore Processor Extended States ### - Restore Processor Extended States
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment