- Dec 23, 2009
-
-
Chris Lattner authored
interesting part of this is the divrem changes, which are already tested by CodeGen/X86/divrem.ll. llvm-svn: 91975
-
Chris Lattner authored
instead use the appropriate subreggy thing. This generates identical code on some large apps (thanks to Evan's cross class coalescing stuff he did back in july). This means that MOV16r0 can go away completely in the future soon. llvm-svn: 91972
-
- Dec 22, 2009
-
-
Evan Cheng authored
Remove target attribute break-sse-dep. Instead, do not fold load into sse partial update instructions unless optimizing for size. llvm-svn: 91910
-
- Dec 18, 2009
-
-
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
-
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
-
- Dec 16, 2009
-
-
Evan Cheng authored
llvm-svn: 91489
-
- Dec 15, 2009
-
-
Evan Cheng authored
llvm-svn: 91381
-
- Dec 12, 2009
-
-
Evan Cheng authored
llvm-svn: 91219
-
- Dec 01, 2009
-
-
Dan Gohman authored
llvm-svn: 90166
-
- Nov 24, 2009
-
-
Dan Gohman authored
Note that "hasDotLocAndDotFile"-style debug info was already broken; people wanting this functionality should implement it in the AsmPrinter/DwarfWriter code. llvm-svn: 89711
-
- Nov 11, 2009
-
-
Dan Gohman authored
llvm-svn: 86850
-
- Nov 02, 2009
-
-
Anton Korobeynikov authored
Do not infer the target type for COPY_TO_REGCLASS from dest regclass, this won't work if it can contain several types. Require explicit result type for the node for now. This fixes PR5364. PS: It seems that blackfin usage of copy_to_regclass is completely bogus! llvm-svn: 85766
-
- Oct 30, 2009
-
-
Dan Gohman authored
llvm-svn: 85557
-
- Oct 29, 2009
-
-
Dan Gohman authored
bunch of associated comments, because it doesn't have anything to do with DAGs or scheduling. This is another step in decoupling MachineInstr emitting from scheduling. llvm-svn: 85517
-
- Oct 20, 2009
-
-
Dan Gohman authored
llvm-svn: 84652
-
- Oct 19, 2009
-
-
Chris Lattner authored
All of these "subreg32" modifier instructions are handled explicitly by the MCInst lowering phase. If they got to the asmprinter, they would explode. They should eventually be replace with correct use of subregs. llvm-svn: 84526
-
- Sep 20, 2009
-
-
Chris Lattner authored
llvm-svn: 82390
-
Chris Lattner authored
the MachineInstr ->MCInst lowering process, not in the asmprinter. llvm-svn: 82388
-
Chris Lattner authored
transcode from AT&T to intel syntax with "llvm-mc foo.s -output-asm-variant=1" llvm-svn: 82385
-
- Sep 18, 2009
-
-
Dan Gohman authored
on x86, to avoid explicit test instructions. A few existing tests changed due to arbitrary register allocation differences. llvm-svn: 82263
-
Sean Callanan authored
carry bit) instructions to the Intel instruction tables. llvm-svn: 82260
-
- Sep 17, 2009
-
-
Sean Callanan authored
as part string parsing) instructions to the Intel instruction tables. llvm-svn: 82089
-
- Sep 16, 2009
-
-
Sean Callanan authored
instructions to the Intel instruction tables. llvm-svn: 82084
-
Sean Callanan authored
instruction tables. llvm-svn: 82083
-
Sean Callanan authored
to the Intel instruction tables. llvm-svn: 82081
-
Sean Callanan authored
frame, to the Intel instruction tables. llvm-svn: 81995
-
Sean Callanan authored
the Intel instruction tables. The patterns will stay blank because ADD reg, reg is faster, but having the encoding available is useful for the disassembler. llvm-svn: 81994
-
Sean Callanan authored
code in other segments) to the Intel instruction tables. llvm-svn: 81953
-
- Sep 15, 2009
-
-
Sean Callanan authored
llvm-svn: 81923
-
Sean Callanan authored
Intel tables, where the source operand is specified by the R/M field and the destination operand by the Reg field. llvm-svn: 81914
-
Sean Callanan authored
to the Intel register table. Added 16- and 64-bit MOVs to and from the segment registers to the Intel instruction tables. llvm-svn: 81895
-
Sean Callanan authored
versions of CALL and JMP with segmented addresses provided in-line, as pairs of immediates. llvm-svn: 81818
-
- Sep 12, 2009
-
-
Sean Callanan authored
for the purposes of the disassembler. llvm-svn: 81603
-
Sean Callanan authored
operand widths to the Intel instruction tables, for the purposes of the disassembler. llvm-svn: 81601
-
Sean Callanan authored
64-bit variants for the disassembler. llvm-svn: 81591
-
- Sep 11, 2009
-
-
Sean Callanan authored
on rAX and an immediate. llvm-svn: 81551
-
- Sep 10, 2009
-
-
Sean Callanan authored
various widths. llvm-svn: 81458
-
Sean Callanan authored
including segment offsets and (for 8-bit operands) absolute offsets. llvm-svn: 81457
-
Sean Callanan authored
ones capable of accessing R/M operands instead of just registers. llvm-svn: 81456
-
- Sep 03, 2009
-
-
Dan Gohman authored
disabling the use of 16-bit operations on x86. This doesn't yet work for inline asms with 16-bit constraints, vectors with 16-bit elements, trampoline code, and perhaps other obscurities, but it's enough to try some experiments. llvm-svn: 80930
-