[llvm-commits] Instruction fixes
Sean Callanan
scallanan at apple.com
Fri Nov 20 15:53:19 PST 2009
I went through and fixed up the Clang tests too. Here's the patch for
those.
Sean
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Instructions patch for Clang 11-20-2009.diff
Type: application/octet-stream
Size: 13408 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20091120/5165b2eb/attachment.obj>
-------------- next part --------------
On Nov 19, 2009, at 5:00 PM, Sean Callanan wrote:
> During the testing of the disassembler, I encountered many
> instructions that were missing, malformed, had missing forms, or had
> missing qualifiers. I went through and added these to the
> instruction tables, and fixed the test cases as needed.
>
> This patch affects no patterns. It only addresses assembly, operand
> width (in certain cases) and cosmetic/style issues.
>
> Please find the patch attached. It has received a preliminary
> vetting from Eric Christopher <echristo at apple.com>, and I am now
> submitting it for inclusion into LLVM proper.
>
> The change log is below.
>
> Sean
>
> <Instructions patch 11-19-2009.diff>
> –
> 2009-11-19 Sean Callanan <scallanan at apple.com>
> * X86Instr64bit.td
> (IRET, POPCNT, BT_, LSL, SWPGS, PUSH_S, POP_S, L_S, SMSW)
> Added
> (CALL, CMOV) Added qualifiers
> (JMP) Added PC-relative jump instruction
> (POPFQ/PUSHFQ) Added qualifiers; renamed PUSHFQ to indicate
> that it is 64-bit only (ambiguous since it has no
> REX prefix)
> (MOV) Added rr form going the other way, which is encoded
> differently
> (MOV) Changed immediates to offsets, which is more correct;
> also fixed MOV64o64a to have to a 64-bit offset
> (MOV) Fixed qualifiers
> (MOV) Added debug-register and condition-register moves
> (MOVZX) Added more forms
> (ADC, SUB, SBB, AND, OR, XOR) Added reverse forms, which
> (as with MOV) are encoded differently
> (ROL) Made REX.W required
> (BT) Uncommented mr form for disassembly only
> (CVT__2__) Added several missing non-intrinsic forms
> (LXADD, XCHG) Reordered operands to make more sense for
> MRMSrcMem
> (XCHG) Added register-to-register forms
> (XADD, CMPXCHG, XCHG) Added non-locked forms
> * X86InstrSSE.td
> (CVTSS2SI, COMISS, CVTTPS2DQ, CVTPS2PD, CVTPD2PS, MOVQ)
> Added
> * X86InstrFPStack.td
> (COM_FST0, COMP_FST0, COM_FI, COM_FIP, FFREE, FNCLEX, FNOP,
> FXAM, FLDL2T, FLDL2E, FLDPI, FLDLG2, FLDLN2, F2XM1,
> FYL2X,
> FPTAN, FPATAN, FXTRACT, FPREM1, FDECSTP, FINCSTP,
> FPREM,
> FYL2XP1, FSINCOS, FRNDINT, FSCALE, FCOMPP, FXSAVE,
> FXRSTOR)
> Added
> (FCOM, FCOMP) Added qualifiers
> (FSTENV, FSAVE, FSTSW) Fixed opcode names
> (FNSTSW) Added implicit register operand
> * X86InstrInfo.td
> (opaque512mem) Added for FXSAVE/FXRSTOR
> (offset8, offset16, offset32, offset64) Added for MOV
> (NOOPW, IRET, POPCNT, IN, BTC, BTR, BTS, LSL, INVLPG, STR,
> LTR, PUSHFS, PUSHGS, POPFS, POPGS, LDS, LSS, LES, LFS,
> LGS, VERR, VERW, SGDT, SIDT, SLDT, LGDT, LIDT, LLDT,
> LODSD, OUTSB, OUTSW, OUTSD, HLT, RSM, FNINIT, CLC, STC,
> CLI, STI, CLD, STD, CMC, CLTS, XLAT, WRMSR, RDMSR, RDPMC,
> SMSW, LMSW, CPUID, INVD, WBINVD, INVEPT, INVVPID, VMCALL,
> VMCLEAR, VMLAUNCH, VMRESUME, VMPTRLD, VMPTRST, VMREAD,
> VMWRITE, VMXOFF, VMXON) Added
> (NOOPL, POPF, POPFD, PUSHF, PUSHFD) Added qualifier
> (JO, JNO, JB, JAE, JE, JNE, JBE, JA, JS, JNS, JP, JNP, JL,
> JGE, JLE, JG, JCXZ) Added qualifier; added 32-bit forms
> (MOV) Changed some immediate forms to offset forms
> (MOV) Added reversed reg-reg forms, which are encoded
> differently
> (MOV) Added debug-register and condition-register moves
> (CMOV) Added qualifiers
> (AND, OR, XOR, ADC, SUB, SBB) Added reverse forms, like MOV
> (BT) Uncommented memory-register forms for disassembler
> (MOVSX, MOVZX) Added forms
> (XCHG, LXADD) Made operand order make sense for MRMSrcMem
> (XCHG) Added register-register forms
> (XADD, CMPXCHG) Added unlocked forms
> * X86InstrMMX.td
> (MMX_MOVD, MMV_MOVQ) Added forms
> * X86InstrInfo.cpp: Changed PUSHFQ to PUSHFQ64 to reflect table
> change
>
> * X86RegisterInfo.td: Added debug and condition register sets
> * if-tail-dup.ll: Fixed testcase to reflect jump qualifier
> * x86-64-pic-3.ll: Fixed testcase to reflect call qualifier
> * peep-test-3.ll: Fixed testcase to reflect test qualifier
> * cmov.ll: Fixed testcase to reflect cmov and jump qualifiers
> * loop-blocks.ll: Fixed testcase to reflect call qualifier
> * x86-64-pic-11.ll: Fixed testcase to reflect call qualifier
> * 2009-11-04-SubregCoalescingBug.ll: Fixed testcase to reflect call
> qualifier
> * x86-64-pic-2.ll: Fixed testcase to reflect call qualifier
> * live-out-reg-info.ll: Fixed testcase to reflect test qualifier
> * tail-opts.ll: Fixed testcase to reflect jump and call qualifiers
> * x86-64-pic-10.ll: Fixed testcase to reflect call qualifier
> * bss-pagealigned.ll: Fixed testcase to reflect call qualifier
> * x86-64-pic-1.ll: Fixed testcase to reflect call qualifier
> * widen_load-1.ll: Fixed testcase to reflect call
> qualifier_______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list