Skip to content
  1. Oct 04, 2010
  2. Oct 03, 2010
  3. Oct 02, 2010
  4. Oct 01, 2010
    • Dale Johannesen's avatar
      Massive rewrite of MMX: · dd224d23
      Dale Johannesen authored
      The x86_mmx type is used for MMX intrinsics, parameters and
      return values where these use MMX registers, and is also
      supported in load, store, and bitcast.
      
      Only the above operations generate MMX instructions, and optimizations
      do not operate on or produce MMX intrinsics. 
      
      MMX-sized vectors <2 x i32> etc. are lowered to XMM or split into
      smaller pieces.  Optimizations may occur on these forms and the
      result casted back to x86_mmx, provided the result feeds into a
      previous existing x86_mmx operation.
      
      The point of all this is prevent optimizations from introducing
      MMX operations, which is unsafe due to the EMMS problem.
      
      llvm-svn: 115243
      dd224d23
  5. Sep 09, 2010
  6. Sep 08, 2010
  7. Sep 07, 2010
  8. Jul 15, 2010
  9. Jul 05, 2010
  10. May 24, 2010
  11. May 20, 2010
  12. May 03, 2010
  13. Apr 23, 2010
  14. Mar 28, 2010
  15. Mar 15, 2010
  16. Mar 08, 2010
  17. Feb 28, 2010
  18. Feb 23, 2010
  19. Feb 10, 2010
    • David Greene's avatar
      · 509be1fe
      David Greene authored
      TableGen fragment refactoring.
      
      Move some utility TableGen defs, classes, etc. into a common file so
      they may be used my multiple pattern files.  We will use this for
      the AVX specification to help with the transition from the current
      SSE specification.
      
      llvm-svn: 95727
      509be1fe
  20. Feb 05, 2010
  21. Jan 24, 2010
  22. Dec 18, 2009
    • 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
  23. Oct 29, 2009
  24. Aug 12, 2009
    • Daniel Dunbar's avatar
      Add 'isCodeGenOnly' bit to Instruction .td records. · c4f8ea4c
      Daniel Dunbar authored
       - Used to mark fake instructions which don't correspond to an actual machine
         instruction (or are duplicates of a real instruction). This is to be used for
         "special cases" in the .td files, which should be ignored by things like the
         assembler and disassembler. We still need a good solution to handle pervasive
         duplication, like with the Int_ instructions.
      
       - Set the bit on fake "mov 0" style instructions, which allows turning an
         assembler matcher warning into a hard error.
      
       - -2 FIXMEs.
      
      llvm-svn: 78731
      c4f8ea4c
  25. Aug 11, 2009
  26. Aug 03, 2009
  27. Jul 22, 2009
  28. Jul 09, 2009
  29. Jun 23, 2009
    • Bill Wendling's avatar
      "The MMX_MASKMOVQ and MMX_MASKMOVQ64 instructions are labeled as MRMDestMem · f6e8f6b0
      Bill Wendling authored
      instructions, which implies that there is an explicit memory operand.  There is
      (however) no explicit memory operand; although this is a store, the only memory
      operand is implicit, indicated by DS:EDI.  This causes the table-generation code
      for the disassembler to report an error."
      
      Patch by Sean Callanan!
      
      llvm-svn: 73989
      f6e8f6b0
  30. Jun 06, 2009
Loading