- May 11, 2012
-
-
Manman Ren authored
This patch will optimize the following cases: sub r1, r3 | sub r1, imm cmp r3, r1 or cmp r1, r3 | cmp r1, imm bge L1 TO subs r1, r3 bge L1 or ble L1 If the branch instruction can use flag from "sub", then we can replace "sub" with "subs" and eliminate the "cmp" instruction. rdar: 10734411 llvm-svn: 156599
-
Dan Gohman authored
but it generates int3 on x86 instead of ud2. llvm-svn: 156593
-
Eric Christopher authored
to user only read/write. Part of rdar://11325849 llvm-svn: 156591
-
Chad Rosier authored
llvm-svn: 156589
-
Jakob Stoklund Olesen authored
The sub-registers explicitly listed in SubRegs in the .td files form a tree. In a complicated register bank, it is possible to have sub-register relationships across sub-trees. For example, the ARM NEON double vector Q0_Q1 is a tree: Q0_Q1 = [Q0, Q1], Q0 = [D0, D1], Q1 = [D2, D3] But we also define the DPair register D1_D2 = [D1, D2] which is fully contained in Q0_Q1. This patch teaches TableGen to find such sub-register relationships, and assign sub-register indices to them. In the example, TableGen will create a dsub_1_dsub_2 sub-register index, and add D1_D2 as a sub-register of Q0_Q1. This will eventually enable the coalescer to handle copies of skewed sub-registers. llvm-svn: 156587
-
Nuno Lopes authored
add an additional parameter to InstCombiner::EmitGEPOffset() to force it to *not* emit operations with NUW flag llvm-svn: 156585
-
- May 10, 2012
-
-
Preston Gurd authored
llvm-svn: 156579
-
Eric Christopher authored
Patch by Jack Carter. llvm-svn: 156577
-
Andrew Trick authored
llvm-svn: 156576
-
Andrew Trick authored
llvm-svn: 156575
-
Andrew Trick authored
Prioritize the instruction that comes closest to keeping pressure under the target's limit. Then prioritize instructions that avoid increasing the max pressure in the scheduled region. The max pressure heuristic is a tad aggressive. Later I'll fix it to consider the unscheduled pressure as well. WIP: This is mostly functional but untested and not likely to do much good yet. llvm-svn: 156574
-
Andrew Trick authored
llvm-svn: 156573
-
Andrew Trick authored
llvm-svn: 156572
-
Andrew Trick authored
llvm-svn: 156571
-
Sirish Pande authored
llvm-svn: 156569
-
Sirish Pande authored
llvm-svn: 156568
-
Andrew Trick authored
Added getMaxExcessUpward/DownwardPressure. They somewhat abuse the tracker by speculatively handling an instruction out of order. But it is convenient for now. In the future, we will cache each instruction's pressure contribution to make this efficient. llvm-svn: 156561
-
Andrew Trick authored
llvm-svn: 156560
-
Dan Gohman authored
llvm-svn: 156558
-
Manman Ren authored
This commit broke an external linux bot and gave a compile-time warning. llvm-svn: 156556
-
Jakob Stoklund Olesen authored
The .td files specify a tree of sub-registers. Store that tree as ExplicitSubRegs lists in CodeGenRegister instead of extracting it from the Record when needed. llvm-svn: 156555
-
Dan Gohman authored
of recursion, to avoid excessive stack usage on deep expressions. llvm-svn: 156554
-
Nuno Lopes authored
llvm-svn: 156553
-
Joel Jones authored
llvm-svn: 156551
-
Manman Ren authored
This patch will optimize the following cases: sub r1, r3 | sub r1, imm cmp r3, r1 or cmp r1, r3 | cmp r1, imm bge L1 TO subs r1, r3 bge L1 or ble L1 If the branch instruction can use flag from "sub", then we can replace "sub" with "subs" and eliminate the "cmp" instruction. rdar: 10734411 llvm-svn: 156550
-
Joel Jones authored
Instruction::IsIdenticalToWhenDefined. This manifested itself when inlining two calls to the same function. The inlined function had a switch statement that returned one of a set of global variables. Without this modification, the two phi instructions that chose values from the branches of the switch instruction inlined from the callee were considered equivalent and jump-threading replaced a load for the first switch value with a phi selecting from the second switch, thereby producing incorrect code. This patch has been tested with "make check-all", "lnt runteste nt", and llvm self-hosted, and on the original program that had this problem, wireshark. <rdar://problem/11025519> llvm-svn: 156548
-
Nadav Rotem authored
llvm-svn: 156541
-
Nadav Rotem authored
llvm-svn: 156540
-
Nadav Rotem authored
Starting r155461 we are able to select patterns for vbroadcast even when the load op is used by other users. Fix PR11900. llvm-svn: 156539
-
Andrew Trick authored
I initially assumed that the subreg graph was a tree. That may not be true. llvm-svn: 156524
-
Jim Grosbach authored
Patch by Yury Mikhaylov <yury.mikhaylov@gmail.com>. llvm-svn: 156523
-
Jakob Stoklund Olesen authored
llvm-svn: 156521
-
Dan Gohman authored
end of a basic block if there's no store. llvm-svn: 156520
-
Jakob Stoklund Olesen authored
This mapping is for internal use by TableGen. It will not be exposed in the generated files. Unfortunately, the mapping is not completely well-defined. The X86 xmm registers appear with multiple sub-register indices in the ymm registers. This is because of the odd idempotent sub_sd and sub_ss sub-register indices. I hope to be able to eliminate them entirely, so we can require the sub-registers to form a tree. For now, just place the canonical sub_xmm index in the mapping, and ignore the idempotents. llvm-svn: 156519
-
Jakob Stoklund Olesen authored
That's what it does. llvm-svn: 156518
-
- May 09, 2012
-
-
Nuno Lopes authored
refactor code a bit to enable future changes to support run-time information add support to compute allocation sizes at run-time if penalty > 1 (e.g., malloc(x), calloc(x, y), and VLAs) llvm-svn: 156515
-
Chad Rosier authored
llvm-svn: 156507
-
Danil Malyshev authored
This bug was fixed by Jim Grosbach in #138879, thanks Jim! llvm-svn: 156505
-
Roman Divacky authored
llvm-svn: 156494
-
Chad Rosier authored
llvm-svn: 156492
-