- Oct 03, 2010
-
-
Chris Lattner authored
else in X86), and add support for pavgusb. This is apparently the only instruction (other than movsx) that is preventing ffmpeg from building with clang. If someone else is interested in banging out the rest of the 3DNow! instructions, it should be quite easy now. llvm-svn: 115466
-
- Sep 17, 2010
-
-
- Aug 26, 2010
-
-
Bob Wilson authored
llvm-svn: 112202
-
- Aug 19, 2010
-
-
Chris Lattner authored
call and jumps. llvm-svn: 111496
-
Chris Lattner authored
llvm-svn: 111494
-
- Jul 23, 2010
-
-
Bruno Cardoso Lopes authored
llvm-svn: 109248
-
Bruno Cardoso Lopes authored
Add complete assembler support for FMA3 instructions, with descriptions and encodings taken from the AVX manual llvm-svn: 109204
-
- Jul 20, 2010
-
-
Bruno Cardoso Lopes authored
llvm-svn: 108892
-
Bruno Cardoso Lopes authored
llvm-svn: 108788
-
- Jul 13, 2010
-
-
Bruno Cardoso Lopes authored
Add the x86 VEX_L form to handle special cases where VEX_L must be set. llvm-svn: 108274
-
Bruno Cardoso Lopes authored
llvm-svn: 108222
-
- Jul 08, 2010
-
-
Chris Lattner authored
in the integrated assembler. Still some discussion to be done. llvm-svn: 107825
-
- Jul 07, 2010
-
-
Bruno Cardoso Lopes authored
Update VEX encoding to support those new instructions llvm-svn: 107715
-
- Jul 01, 2010
-
-
Bruno Cardoso Lopes authored
- Add AVX SSE2 Move doubleword and quadword instructions. - Add encode bits for VEX_W - All 128-bit SSE 1 & SSE2 instructions that are described in the .td file now have a AVX encoded form already working. llvm-svn: 107365
-
- Jun 26, 2010
-
-
Bruno Cardoso Lopes authored
Add several AVX MOV flavors Support VEX encoding for MRMDestReg llvm-svn: 106912
-
- Jun 24, 2010
-
-
Bruno Cardoso Lopes authored
llvm-svn: 106705
-
- Jun 23, 2010
-
-
Bruno Cardoso Lopes authored
llvm-svn: 106600
-
Bruno Cardoso Lopes authored
llvm-svn: 106588
-
- Jun 19, 2010
-
-
Bruno Cardoso Lopes authored
llvm-svn: 106357
-
Bruno Cardoso Lopes authored
llvm-svn: 106349
-
- Jun 18, 2010
-
-
Bruno Cardoso Lopes authored
be done incrementally and intermixed with the adding of more AVX instructions. This is a first step in that direction llvm-svn: 106251
-
- Jun 12, 2010
-
-
Bruno Cardoso Lopes authored
Handle OpSize TSFlag for AVX llvm-svn: 105869
-
- Jun 09, 2010
-
-
Bruno Cardoso Lopes authored
immediates to avoid breaking the build. llvm-svn: 105652
-
- Jun 05, 2010
-
-
Chris Lattner authored
In file included from X86InstrInfo.cpp:16: X86GenInstrInfo.inc:2789: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2790: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2792: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2793: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2808: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2809: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2816: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2817: error: integer constant is too large for 'long' type llvm-svn: 105524
-
Bruno Cardoso Lopes authored
yet, only assembly encoding support. llvm-svn: 105521
-
- Apr 05, 2010
-
-
Eric Christopher authored
llvm-svn: 100466
-
Jakob Stoklund Olesen authored
When a target instruction wants to set target-specific flags, it should simply set bits in the TSFlags bit vector defined in the Instruction TableGen class. This works well because TableGen resolves member references late: class I : Instruction { AddrMode AM = AddrModeNone; let TSFlags{3-0} = AM.Value; } let AM = AddrMode4 in def ADD : I; TSFlags gets the expected bits from AddrMode4 in this example. llvm-svn: 100384
-
- Apr 02, 2010
-
-
Eric Christopher authored
a new subtarget option for AES and check for the support. Add "westmere" line of processors and add AES-NI support to the core i7. Add a couple of TODOs for information I couldn't verify. llvm-svn: 100231
-
- Mar 31, 2010
-
-
Jakob Stoklund Olesen authored
SSEDomainFix will collapse to the domain with the lower number when it has a choice. The SSEPackedSingle domain often has smaller instructions, so prefer that. llvm-svn: 99952
-
- Mar 25, 2010
-
-
Jakob Stoklund Olesen authored
Remove much horribleness from X86InstrFormats as a result. Similar simplifications are probably possible for other targets. llvm-svn: 99539
-
Jakob Stoklund Olesen authored
On Nehalem and newer CPUs there is a 2 cycle latency penalty on using a register in a different domain than where it was defined. Some instructions have equvivalents for different domains, like por/orps/orpd. The SSEDomainFix pass tries to minimize the number of domain crossings by changing between equvivalent opcodes where possible. This is a work in progress, in particular the pass doesn't do anything yet. SSE instructions are tagged with their execution domain in TableGen using the last two bits of TSFlags. Note that not all instructions are tagged correctly. Life just isn't that simple. The SSE execution domain issue is very similar to the ARM NEON/VFP pipeline issue handled by NEONMoveFixPass. This pass may become target independent to handle both. llvm-svn: 99524
-
- Mar 24, 2010
-
-
Kevin Enderby authored
not get an "Unknown immediate size" assert failure when used. All instructions of this form have an 8-bit immediate. Also added a test case of an example instruction that is of this form. llvm-svn: 99435
-
- Feb 13, 2010
-
-
Sean Callanan authored
tables. llvm-svn: 96073
-
Chris Lattner authored
fix swapgs to be spelled right. llvm-svn: 96058
-
- Feb 12, 2010
-
-
Chris Lattner authored
is pc relative or not, mark call and branches as pcrel. llvm-svn: 96026
-
Chris Lattner authored
This will work better for the disassembler for modeling things like lfence/monitor/vmcall etc. llvm-svn: 95960
-
- Dec 18, 2009
-
-
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
-
- Oct 19, 2009
-
-
Nate Begeman authored
llvm-svn: 84506
-
- Sep 15, 2009
-
-
Sean Callanan authored
versions of CALL and JMP with segmented addresses provided in-line, as pairs of immediates. llvm-svn: 81818
-
- Aug 19, 2009
-
-
Eric Christopher authored
Add patterns and instruction encoding information. Add custom lowering to deal with hardwired return register of uncertain type (xmm0). llvm-svn: 79377
-