Skip to content
  1. Feb 05, 2010
  2. Feb 03, 2010
    • Kevin Enderby's avatar
      Added support for X86 instruction prefixes so llvm-mc can assemble them. The · 00f1e6c0
      Kevin Enderby authored
      Lock prefix, Repeat string operation prefixes and the Segment override prefixes.
      Also added versions of the move string and store string instructions without the
      repeat prefixes to X86InstrInfo.td. And finally marked the rep versions of
      move/store string records in X86InstrInfo.td as isCodeGenOnly = 1 so tblgen is
      happy building the disassembler files.
      
      llvm-svn: 95252
      00f1e6c0
  3. Jan 31, 2010
  4. Jan 30, 2010
  5. Jan 12, 2010
  6. Jan 11, 2010
  7. Jan 08, 2010
  8. Jan 05, 2010
  9. Jan 04, 2010
  10. Dec 26, 2009
  11. Dec 23, 2009
  12. Dec 22, 2009
  13. Dec 18, 2009
    • Evan Cheng's avatar
      On recent Intel u-arch's, folding loads into some unary SSE instructions can · 4cf30b72
      Evan Cheng authored
      be non-optimal. To be precise, we should avoid folding loads if the instructions
      only update part of the destination register, and the non-updated part is not
      needed. e.g. cvtss2sd, sqrtss. Unfolding the load from these instructions breaks
      the partial register dependency and it can improve performance. e.g.
      
      movss (%rdi), %xmm0
      cvtss2sd %xmm0, %xmm0
      
      instead of
      cvtss2sd (%rdi), %xmm0
      
      An alternative method to break dependency is to clear the register first. e.g.
      xorps %xmm0, %xmm0
      cvtss2sd (%rdi), %xmm0
      
      llvm-svn: 91672
      4cf30b72
    • Sean Callanan's avatar
      Instruction fixes, added instructions, and AsmString changes in the · 04d8cb74
      Sean Callanan authored
      X86 instruction tables.
      
      Also (while I was at it) cleaned up the X86 tables, removing tabs and
      80-line violations.
      
      This patch was reviewed by Chris Lattner, but please let me know if
      there are any problems.
      
      * X86*.td
      	Removed tabs and fixed 80-line violations
      
      * 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 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
      * 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 qualifier
      * 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 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-svn: 91638
      04d8cb74
  14. Dec 16, 2009
  15. Dec 15, 2009
  16. Dec 12, 2009
  17. Dec 01, 2009
  18. Nov 24, 2009
  19. Nov 11, 2009
  20. Nov 02, 2009
  21. Oct 30, 2009
  22. Oct 29, 2009
  23. Oct 20, 2009
  24. Oct 19, 2009
  25. Sep 20, 2009
  26. Sep 18, 2009
Loading