- Feb 02, 2012
-
-
Andrew Trick authored
Adds an instruction itinerary to all x86 instructions, giving each a default latency of 1, using the InstrItinClass IIC_DEFAULT. Sets specific latencies for Atom for the instructions in files X86InstrCMovSetCC.td, X86InstrArithmetic.td, X86InstrControl.td, and X86InstrShiftRotate.td. The Atom latencies for the remainder of the x86 instructions will be set in subsequent patches. Adds a test to verify that the scheduler is working. Also changes the scheduling preference to "Hybrid" for i386 Atom, while leaving x86_64 as ILP. Patch by Preston Gurd! llvm-svn: 149558
-
Jakob Stoklund Olesen authored
llvm-svn: 149557
-
- Feb 01, 2012
-
-
Mon P Wang authored
llvm-svn: 149548
-
Andrew Trick authored
This new scheduler plugs into the existing selection DAG scheduling framework. It is a top-down critical path scheduler that tracks register pressure and uses a DFA for pipeline modeling. Patch by Sergei Larin! llvm-svn: 149547
-
Chad Rosier authored
llvm-svn: 149521
-
Elena Demikhovsky authored
Fixed Win64 calling conventions. llvm-svn: 149494
-
Elena Demikhovsky authored
llvm-svn: 149493
-
Elena Demikhovsky authored
Truncating v4i64 -> v4i32 and v8i32 -> v8i16 may be done with set of shuffles. llvm-svn: 149485
-
Stepan Dyatkovskiy authored
The purpose of refactoring is to hide operand roles from SwitchInst user (programmer). If you want to play with operands directly, probably you will need lower level methods than SwitchInst ones (TerminatorInst or may be User). After this patch we can reorganize SwitchInst operands and successors as we want. What was done: 1. Changed semantics of index inside the getCaseValue method: getCaseValue(0) means "get first case", not a condition. Use getCondition() if you want to resolve the condition. I propose don't mix SwitchInst case indexing with low level indexing (TI successors indexing, User's operands indexing), since it may be dangerous. 2. By the same reason findCaseValue(ConstantInt*) returns actual number of case value. 0 means first case, not default. If there is no case with given value, ErrorIndex will returned. 3. Added getCaseSuccessor method. I propose to avoid usage of TerminatorInst::getSuccessor if you want to resolve case successor BB. Use getCaseSuccessor instead, since internal SwitchInst organization of operands/successors is hidden and may be changed in any moment. 4. Added resolveSuccessorIndex and resolveCaseIndex. The main purpose of these methods is to see how case successors are really mapped in TerminatorInst. 4.1 "resolveSuccessorIndex" was created if you need to level down from SwitchInst to TerminatorInst. It returns TerminatorInst's successor index for given case successor. 4.2 "resolveCaseIndex" converts low level successors index to case index that curresponds to the given successor. Note: There are also related compatability fix patches for dragonegg, klee, llvm-gcc-4.0, llvm-gcc-4.2, safecode, clang. llvm-svn: 149481
-
Craig Topper authored
llvm-svn: 149478
-
Argyrios Kyrtzidis authored
These are: r149348 r149351 r149352 r149354 r149356 r149357 r149361 r149362 r149364 r149365 llvm-svn: 149470
-
Jim Grosbach authored
llvm-svn: 149452
-
- Jan 31, 2012
-
-
Jim Grosbach authored
Excellent suggestion from Ben Kramer. llvm-svn: 149417
-
Jim Grosbach authored
llvm-svn: 149416
-
Devang Patel authored
Add assembler dialect attribute in asm parser which lets target specific asm parser change dialect on the fly. llvm-svn: 149396
-
Craig Topper authored
llvm-svn: 149367
-
Chris Lattner authored
with recent changes, ConstantArray is never a "string". Remove the associated methods and constant fold the clients to false. llvm-svn: 149362
-
Chris Lattner authored
llvm-svn: 149342
-
Evan Cheng authored
llvm-svn: 149294
-
- Jan 30, 2012
-
-
Devang Patel authored
Intel syntax. Adjust special code, used to recognize cmp<comparison code>{ss,sd,ps,pd}, for intel syntax. llvm-svn: 149291
-
Devang Patel authored
llvm-svn: 149270
-
Benjamin Kramer authored
llvm-svn: 149269
-
Douglas Gregor authored
llvm-svn: 149254
-
Benjamin Kramer authored
llvm-svn: 149248
-
Craig Topper authored
Fix pattern for memory form of PSHUFD for use with FP vectors to remove bitcast to an integer vector that normal code wouldn't have. Also remove bitcasts from code that turns splat vector loads into a shuffle as it was making the broken pattern necessary. llvm-svn: 149232
-
Craig Topper authored
Move some XOP patterns into instruction definition. Replae VPCMOV intrinsic patterns with custom lowering to a target specific nodes. llvm-svn: 149216
-
- Jan 29, 2012
-
-
Anton Korobeynikov authored
llvm-svn: 149195
-
Anton Korobeynikov authored
llvm-svn: 149194
-
- Jan 28, 2012
-
-
Bob Wilson authored
(and other targets). llvm-svn: 149182
-
James Molloy authored
Fixes PR11877 llvm-svn: 149180
-
- Jan 27, 2012
-
-
Devang Patel authored
llvm-svn: 149142
-
Craig Topper authored
Move some patterns back near their instructions and use AddedComplexity to fix priority. Merge some patterns into their instruction definition. llvm-svn: 149122
-
Jim Grosbach authored
llvm-svn: 149106
-
Jim Grosbach authored
llvm-svn: 149102
-
Jim Grosbach authored
Provide source line number information. llvm-svn: 149101
-
Jim Grosbach authored
Adjust an example MachObjectWriter diagnostic to use the information to issue a better message. Before: LLVM ERROR: unknown ARM fixup kind! After: x.s:6:5: error: unsupported relocation on symbol beq bar ^ rdar://9800182 llvm-svn: 149093
-
- Jan 26, 2012
-
-
Jakob Stoklund Olesen authored
The Win64 calling convention has xmm6-15 as callee-saved while still clobbering all ymm registers. Add a YMM_HI_6_15 pseudo-register that aliases the clobbered part of the ymm registers, and mark that as call-clobbered. This allows live xmm registers across calls. This hack wouldn't be necessary with RegisterMask operands representing the call clobbers, but they are not quite operational yet. llvm-svn: 149088
-
Jim Grosbach authored
llvm-svn: 149062
-
James Molloy authored
Add support for the R_ARM_TARGET1 relocation, which should be given to relocations applied to all C++ constructors and destructors. This enables the linker to match concrete relocation types (absolute or relative) with whatever library or C++ support code is being linked against. llvm-svn: 149057
-
Victor Umansky authored
. "fptosi" and "fptoui" IR instructions are defined with round-to-zero rounding mode. . Currently for AVX mode for <4xdouble> and <8xdouble> the "VCVTPD2DQ.128" and "VCVTPD2DQ.256" instructions are selected (for .fp_to_sint. DAG node operation ) by AVX codegen. However they use round-to-nearest-even rounding mode. . Consequently, the conversion produces incorrect numbers. The fix is to replace selection of VCVTPD2DQ instructions with VCVTTPD2DQ instructions. The latter use truncate (i.e. round-to-zero) rounding mode. As .fp_to_sint. DAG node operation is used only for lowering of "fptosi" and "fptoui" IR instructions, the fix in X86InstrSSE.td definition file doesn.t have an impact on other LLVM flows. The patch includes changes in the .td file, LIT test for the changes and a fix in a legacy LIT test (which produced asm code conflicting with LLVN IR spec). llvm-svn: 149056
-