From 7131ea0124f753e93d2d991e83b881b449f82f0e Mon Sep 17 00:00:00 2001 From: BobDu Date: Tue, 25 Aug 2026 18:31:58 +0800 Subject: [PATCH] x86: regenerate x86.v0.2.csv The file was generated once, on the day x86spec landed, and never again, so three later improvements to the generator never reached it. This applies the one that changes the output: CL 104495 stopped excluding instructions that use VSIB, which adds the sixteen AVX gather forms. The remaining twelve lines move without their content changing, since Go 1.19 changed the sort. Reproducing this requires the revision the file records, 325383-057US of December 2015, which Intel no longer serves at any address. A copy is at the Internet Archive, and is the one used here: https://web.archive.org/web/20160105100525id_/http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf 6595836 bytes sha256:47aff4233ec550cb071ac0832817c2a0f065f9e06d7125e7ea9d4786f13362ca Passing that file to x86spec -f reproduces every line of the committed file, so nothing here comes from a change of input. Signed-off-by: BobDu --- x86/x86.v0.2.csv | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/x86/x86.v0.2.csv b/x86/x86.v0.2.csv index b8048697..b6ff460f 100644 --- a/x86/x86.v0.2.csv +++ b/x86/x86.v0.2.csv @@ -163,8 +163,8 @@ "CALL r/m32","CALLL* r/m32","calll* r/m32","FF /2","V","N.E.","","operand32","r","Y","32" "CALL r/m64","CALLQ* r/m64","callq* r/m64","FF /2","N.E.","V","","","r","Y","64" "CALL rel16","CALL rel16","call rel16","E8 cw","V","N.S.","","operand16","r","Y","" -"CALL rel32","CALL rel32","call rel32","E8 cd","V","V","","operand32","r","Y","" "CALL rel32","CALL rel32","call rel32","E8 cd","N.S.","V","","operand16,operand64","r","Y","" +"CALL rel32","CALL rel32","call rel32","E8 cd","V","V","","operand32","r","Y","" "CALL_FAR m16:16","LCALLW* m16:16","lcallw* m16:16","FF /3","V","V","","operand16","r","Y","" "CALL_FAR m16:32","LCALLL* m16:32","lcalll* m16:32","FF /3","V","V","","operand32","r","Y","" "CALL_FAR m16:64","LCALLQ* m16:64","lcallq* m16:64","REX.W FF /3","N.E.","V","","","r","Y","" @@ -587,8 +587,8 @@ "JAE rel32","JAE rel32","jae rel32","0F 83 cd","N.S.","V","","operand16,operand64","r","Y","" "JAE rel8","JAE rel8","jae rel8","73 cb","V","V","","","r","Y","" "JB rel16","JB rel16","jb rel16","0F 82 cw","V","N.S.","","operand16","r","Y","" -"JB rel32","JB rel32","jb rel32","0F 82 cd","N.S.","V","","operand16,operand64","r","Y","" "JB rel32","JB rel32","jb rel32","0F 82 cd","V","V","","operand32","r","Y","" +"JB rel32","JB rel32","jb rel32","0F 82 cd","N.S.","V","","operand16,operand64","r","Y","" "JB rel8","JB rel8","jb rel8","72 cb","V","V","","","r","Y","" "JBE rel16","JBE rel16","jbe rel16","0F 86 cw","V","N.S.","","operand16","r","Y","" "JBE rel32","JBE rel32","jbe rel32","0F 86 cd","V","V","","operand32","r","Y","" @@ -616,8 +616,8 @@ "JL rel32","JL rel32","jl rel32","0F 8C cd","N.S.","V","","operand16,operand64","r","Y","" "JL rel8","JL rel8","jl rel8","7C cb","V","V","","","r","Y","" "JLE rel16","JLE rel16","jle rel16","0F 8E cw","V","N.S.","","operand16","r","Y","" -"JLE rel32","JLE rel32","jle rel32","0F 8E cd","V","V","","operand32","r","Y","" "JLE rel32","JLE rel32","jle rel32","0F 8E cd","N.S.","V","","operand16,operand64","r","Y","" +"JLE rel32","JLE rel32","jle rel32","0F 8E cd","V","V","","operand32","r","Y","" "JLE rel8","JLE rel8","jle rel8","7E cb","V","V","","","r","Y","" "JMP r/m16","JMPW* r/m16","jmpw* r/m16","FF /4","V","N.S.","","operand16","r","Y","16" "JMP r/m32","JMPL* r/m32","jmpl* r/m32","FF /4","V","N.S.","","operand32","r","Y","32" @@ -647,8 +647,8 @@ "JNC rel32","JNC rel32","jnc rel32","0F 83 cd","V","V","","pseudo","r","","" "JNC rel8","JNC rel8","jnc rel8","73 cb","V","V","","pseudo","r","","" "JNE rel16","JNE rel16","jne rel16","0F 85 cw","V","N.S.","","operand16","r","Y","" -"JNE rel32","JNE rel32","jne rel32","0F 85 cd","N.S.","V","","operand16,operand64","r","Y","" "JNE rel32","JNE rel32","jne rel32","0F 85 cd","V","V","","operand32","r","Y","" +"JNE rel32","JNE rel32","jne rel32","0F 85 cd","N.S.","V","","operand16,operand64","r","Y","" "JNE rel8","JNE rel8","jne rel8","75 cb","V","V","","","r","Y","" "JNG rel16","JNG rel16","jng rel16","0F 8E cw","V","N.S.","","pseudo","r","","" "JNG rel32","JNG rel32","jng rel32","0F 8E cd","V","V","","pseudo","r","","" @@ -663,23 +663,23 @@ "JNLE rel32","JNLE rel32","jnle rel32","0F 8F cd","V","V","","pseudo","r","","" "JNLE rel8","JNLE rel8","jnle rel8","7F cb","V","V","","pseudo","r","","" "JNO rel16","JNO rel16","jno rel16","0F 81 cw","V","N.S.","","operand16","r","Y","" -"JNO rel32","JNO rel32","jno rel32","0F 81 cd","N.S.","V","","operand16,operand64","r","Y","" "JNO rel32","JNO rel32","jno rel32","0F 81 cd","V","V","","operand32","r","Y","" +"JNO rel32","JNO rel32","jno rel32","0F 81 cd","N.S.","V","","operand16,operand64","r","Y","" "JNO rel8","JNO rel8","jno rel8","71 cb","V","V","","","r","Y","" "JNP rel16","JNP rel16","jnp rel16","0F 8B cw","V","N.S.","","operand16","r","Y","" -"JNP rel32","JNP rel32","jnp rel32","0F 8B cd","N.S.","V","","operand16,operand64","r","Y","" "JNP rel32","JNP rel32","jnp rel32","0F 8B cd","V","V","","operand32","r","Y","" +"JNP rel32","JNP rel32","jnp rel32","0F 8B cd","N.S.","V","","operand16,operand64","r","Y","" "JNP rel8","JNP rel8","jnp rel8","7B cb","V","V","","","r","Y","" "JNS rel16","JNS rel16","jns rel16","0F 89 cw","V","N.S.","","operand16","r","Y","" -"JNS rel32","JNS rel32","jns rel32","0F 89 cd","V","V","","operand32","r","Y","" "JNS rel32","JNS rel32","jns rel32","0F 89 cd","N.S.","V","","operand16,operand64","r","Y","" +"JNS rel32","JNS rel32","jns rel32","0F 89 cd","V","V","","operand32","r","Y","" "JNS rel8","JNS rel8","jns rel8","79 cb","V","V","","","r","Y","" "JNZ rel16","JNZ rel16","jnz rel16","0F 85 cw","V","N.S.","","pseudo","r","","" "JNZ rel32","JNZ rel32","jnz rel32","0F 85 cd","V","V","","pseudo","r","","" "JNZ rel8","JNZ rel8","jnz rel8","75 cb","V","V","","pseudo","r","","" "JO rel16","JO rel16","jo rel16","0F 80 cw","V","N.S.","","operand16","r","Y","" -"JO rel32","JO rel32","jo rel32","0F 80 cd","V","V","","operand32","r","Y","" "JO rel32","JO rel32","jo rel32","0F 80 cd","N.S.","V","","operand16,operand64","r","Y","" +"JO rel32","JO rel32","jo rel32","0F 80 cd","V","V","","operand32","r","Y","" "JO rel8","JO rel8","jo rel8","70 cb","V","V","","","r","Y","" "JP rel16","JP rel16","jp rel16","0F 8A cw","V","N.S.","","operand16","r","Y","" "JP rel32","JP rel32","jp rel32","0F 8A cd","N.S.","V","","operand16,operand64","r","Y","" @@ -710,9 +710,9 @@ "LEA r16, m","LEAW m, r16","leaw m, r16","8D /r","V","V","","operand16","w,r","Y","16" "LEA r32, m","LEAL m, r32","leal m, r32","8D /r","V","V","","operand32","w,r","Y","32" "LEA r64, m","LEAQ m, r64","leaq m, r64","REX.W 8D /r","N.E.","V","","","w,r","Y","64" -"LEAVE","LEAVEW/LEAVEL/LEAVEQ","leavew/leavel/leaveq","C9","V","V","","operand16","","Y","" "LEAVE","LEAVEW/LEAVEL/LEAVEQ","leavew/leavel/leaveq","C9","V","N.E.","","operand32","","Y","" "LEAVE","LEAVEW/LEAVEL/LEAVEQ","leavew/leavel/leaveq","C9","N.E.","V","","operand32,operand64","","Y","" +"LEAVE","LEAVEW/LEAVEL/LEAVEQ","leavew/leavel/leaveq","C9","V","V","","operand16","","Y","" "LES r16, m16:16","LESW m16:16, r16","lesw m16:16, r16","C4 /r","V","I","","operand16","w,r","Y","16" "LES r32, m16:32","LESL m16:32, r32","lesl m16:32, r32","C4 /r","V","I","","operand32","w,r","Y","32" "LFENCE","LFENCE","lfence","0F AE E8","V","V","","","","","" @@ -1079,12 +1079,12 @@ "PMULUDQ xmm1, xmm2/m128","PMULULQ xmm2/m128, xmm1","pmuludq xmm2/m128, xmm1","66 0F F4 /r","V","V","SSE2","","rw,r","","" "POP DS","POPW/POPL/POPQ DS","popw/popl/popq DS","1F","V","I","","","w","Y","" "POP ES","POPW/POPL/POPQ ES","popw/popl/popq ES","07","V","I","","","w","Y","" -"POP FS","POPW/POPL/POPQ FS","popw/popl/popq FS","0F A1","V","N.E.","","operand32","w","Y","" "POP FS","POPW/POPL/POPQ FS","popw/popl/popq FS","0F A1","V","V","","operand16","w","Y","" "POP FS","POPW/POPL/POPQ FS","popw/popl/popq FS","0F A1","N.E.","V","","operand32,operand64","w","Y","" -"POP GS","POPW/POPL/POPQ GS","popw/popl/popq GS","0F A9","V","N.E.","","operand32","w","Y","" -"POP GS","POPW/POPL/POPQ GS","popw/popl/popq GS","0F A9","V","V","","operand16","w","Y","" +"POP FS","POPW/POPL/POPQ FS","popw/popl/popq FS","0F A1","V","N.E.","","operand32","w","Y","" "POP GS","POPW/POPL/POPQ GS","popw/popl/popq GS","0F A9","N.E.","V","","operand32,operand64","w","Y","" +"POP GS","POPW/POPL/POPQ GS","popw/popl/popq GS","0F A9","V","V","","operand16","w","Y","" +"POP GS","POPW/POPL/POPQ GS","popw/popl/popq GS","0F A9","V","N.E.","","operand32","w","Y","" "POP SS","POPW/POPL/POPQ SS","popw/popl/popq SS","17","V","I","","","w","Y","" "POP r/m16","POPW r/m16","popw r/m16","8F /0","V","V","","operand16","w","Y","16" "POP r/m32","POPL r/m32","popl r/m32","8F /0","V","N.E.","","operand32","w","Y","32" @@ -1741,6 +1741,14 @@ "VFNMSUB231PS ymm1, ymmV, ymm2/m256","VFNMSUB231PS ymm2/m256, ymmV, ymm1","vfnmsub231ps ymm2/m256, ymmV, ymm1","VEX.DDS.256.66.0F38.W0 BE /r","V","V","FMA","","rw,r,r","","" "VFNMSUB231SD xmm1, xmmV, xmm2/m64","VFNMSUB231SD xmm2/m64, xmmV, xmm1","vfnmsub231sd xmm2/m64, xmmV, xmm1","VEX.DDS.LIG.66.0F38.W1 BF /r","V","V","FMA","","rw,r,r","","" "VFNMSUB231SS xmm1, xmmV, xmm2/m32","VFNMSUB231SS xmm2/m32, xmmV, xmm1","vfnmsub231ss xmm2/m32, xmmV, xmm1","VEX.DDS.LIG.66.0F38.W0 BF /r","V","V","FMA","","rw,r,r","","" +"VGATHERDPD xmm1, vm32x, xmmV","VGATHERDPD xmmV, vm32x, xmm1","vgatherdpd xmmV, vm32x, xmm1","VEX.DDS.128.66.0F38.W1 92 /r","V","V","AVX2","","rw,r,rw","","" +"VGATHERDPD ymm1, vm32x, ymmV","VGATHERDPD ymmV, vm32x, ymm1","vgatherdpd ymmV, vm32x, ymm1","VEX.DDS.256.66.0F38.W1 92 /r","V","V","AVX2","","rw,r,rw","","" +"VGATHERDPS xmm1, vm32x, xmmV","VGATHERDPS xmmV, vm32x, xmm1","vgatherdps xmmV, vm32x, xmm1","VEX.DDS.128.66.0F38.W0 92 /r","V","V","AVX2","","rw,r,rw","","" +"VGATHERDPS ymm1, vm32y, ymmV","VGATHERDPS ymmV, vm32y, ymm1","vgatherdps ymmV, vm32y, ymm1","VEX.DDS.256.66.0F38.W0 92 /r","V","V","AVX2","","rw,r,rw","","" +"VGATHERQPD xmm1, vm64x, xmmV","VGATHERQPD xmmV, vm64x, xmm1","vgatherqpd xmmV, vm64x, xmm1","VEX.DDS.128.66.0F38.W1 93 /r","V","V","AVX2","","rw,r,rw","","" +"VGATHERQPD ymm1, vm64y, ymmV","VGATHERQPD ymmV, vm64y, ymm1","vgatherqpd ymmV, vm64y, ymm1","VEX.DDS.256.66.0F38.W1 93 /r","V","V","AVX2","","rw,r,rw","","" +"VGATHERQPS xmm1, vm64x, xmmV","VGATHERQPS xmmV, vm64x, xmm1","vgatherqps xmmV, vm64x, xmm1","VEX.DDS.128.66.0F38.W0 93 /r","V","V","AVX2","","rw,r,rw","","" +"VGATHERQPS xmm1, vm64y, xmmV","VGATHERQPS xmmV, vm64y, xmm1","vgatherqps xmmV, vm64y, xmm1","VEX.DDS.256.66.0F38.W0 93 /r","V","V","AVX2","","rw,r,rw","","" "VHADDPD xmm1, xmmV, xmm2/m128","VHADDPD xmm2/m128, xmmV, xmm1","vhaddpd xmm2/m128, xmmV, xmm1","VEX.NDS.128.66.0F.WIG 7C /r","V","V","AVX","","w,r,r","","" "VHADDPD ymm1, ymmV, ymm2/m256","VHADDPD ymm2/m256, ymmV, ymm1","vhaddpd ymm2/m256, ymmV, ymm1","VEX.NDS.256.66.0F.WIG 7C /r","V","V","AVX","","w,r,r","","" "VHADDPS xmm1, xmmV, xmm2/m128","VHADDPS xmm2/m128, xmmV, xmm1","vhaddps xmm2/m128, xmmV, xmm1","VEX.NDS.128.F2.0F.WIG 7C /r","V","V","AVX","","w,r,r","","" @@ -1949,6 +1957,14 @@ "VPEXTRQ r/m64, xmm1, imm8","VPEXTRQ imm8, xmm1, r/m64","vpextrq imm8, xmm1, r/m64","VEX.128.66.0F3A.W1 16 /r ib","I","V","AVX","","w,r,r","","" "VPEXTRW r32, xmm2, imm8","VPEXTRW imm8, xmm2, r32","vpextrw imm8, xmm2, r32","VEX.128.66.0F.W0 C5 /r ib","V","V","AVX","modrm_regonly","w,r,r","","" "VPEXTRW r32/m16, xmm1, imm8","VPEXTRW imm8, xmm1, r32/m16","vpextrw imm8, xmm1, r32/m16","VEX.128.66.0F3A.W0 15 /r ib","V","V","AVX","","w,r,r","","" +"VPGATHERDD xmm1, vm32x, xmmV","VPGATHERDD xmmV, vm32x, xmm1","vpgatherdd xmmV, vm32x, xmm1","VEX.DDS.128.66.0F38.W0 90 /r","V","V","AVX2","","rw,r,rw","","" +"VPGATHERDD ymm1, vm32y, ymmV","VPGATHERDD ymmV, vm32y, ymm1","vpgatherdd ymmV, vm32y, ymm1","VEX.DDS.256.66.0F38.W0 90 /r","V","V","AVX2","","rw,r,rw","","" +"VPGATHERDQ xmm1, vm32x, xmmV","VPGATHERDQ xmmV, vm32x, xmm1","vpgatherdq xmmV, vm32x, xmm1","VEX.DDS.128.66.0F38.W1 90 /r","V","V","AVX2","","rw,r,rw","","" +"VPGATHERDQ ymm1, vm32x, ymmV","VPGATHERDQ ymmV, vm32x, ymm1","vpgatherdq ymmV, vm32x, ymm1","VEX.DDS.256.66.0F38.W1 90 /r","V","V","AVX2","","rw,r,rw","","" +"VPGATHERQD xmm1, vm64x, xmmV","VPGATHERQD xmmV, vm64x, xmm1","vpgatherqd xmmV, vm64x, xmm1","VEX.DDS.128.66.0F38.W0 91 /r","V","V","AVX2","","rw,r,rw","","" +"VPGATHERQD xmm1, vm64y, xmmV","VPGATHERQD xmmV, vm64y, xmm1","vpgatherqd xmmV, vm64y, xmm1","VEX.DDS.256.66.0F38.W0 91 /r","V","V","AVX2","","rw,r,rw","","" +"VPGATHERQQ xmm1, vm64x, xmmV","VPGATHERQQ xmmV, vm64x, xmm1","vpgatherqq xmmV, vm64x, xmm1","VEX.DDS.128.66.0F38.W1 91 /r","V","V","AVX2","","rw,r,rw","","" +"VPGATHERQQ ymm1, vm64y, ymmV","VPGATHERQQ ymmV, vm64y, ymm1","vpgatherqq ymmV, vm64y, ymm1","VEX.DDS.256.66.0F38.W1 91 /r","V","V","AVX2","","rw,r,rw","","" "VPHADDD xmm1, xmmV, xmm2/m128","VPHADDD xmm2/m128, xmmV, xmm1","vphaddd xmm2/m128, xmmV, xmm1","VEX.NDS.128.66.0F38.WIG 02 /r","V","V","AVX","","w,r,r","","" "VPHADDD ymm1, ymmV, ymm2/m256","VPHADDD ymm2/m256, ymmV, ymm1","vphaddd ymm2/m256, ymmV, ymm1","VEX.NDS.256.66.0F38.WIG 02 /r","V","V","AVX2","","w,r,r","","" "VPHADDSW xmm1, xmmV, xmm2/m128","VPHADDSW xmm2/m128, xmmV, xmm1","vphaddsw xmm2/m128, xmmV, xmm1","VEX.NDS.128.66.0F38.WIG 03 /r","V","V","AVX","","w,r,r","",""