forked from OSchip/llvm-project
b078350872
1. Simplify xor/and/or (bitcast(A), bitcast(B)) -> bitcast(op (A,B)) (and also scalar_to_vector). 2. Xor/and/or are indifferent to the swizzle operation (shuffle of one src). Simplify xor/and/or (shuff(A), shuff(B)) -> shuff(op (A, B)) 3. Optimize swizzles of shuffles: shuff(shuff(x, y), undef) -> shuff(x, y). 4. Fix an X86ISelLowering optimization which was very bitcast-sensitive. Code which was previously compiled to this: movd (%rsi), %xmm0 movdqa .LCPI0_0(%rip), %xmm2 pshufb %xmm2, %xmm0 movd (%rdi), %xmm1 pshufb %xmm2, %xmm1 pxor %xmm0, %xmm1 pshufb .LCPI0_1(%rip), %xmm1 movd %xmm1, (%rdi) ret Now compiles to this: movl (%rsi), %eax xorl %eax, (%rdi) ret llvm-svn: 153848 |
||
---|---|---|
.. | ||
useful-harnesses | ||
2009-01-01-BrCond.ll | ||
2010-04-07-DbgValueOtherTargets.ll | ||
and_ops.ll | ||
arg_ret.ll | ||
bigstack.ll | ||
bss.ll | ||
call.ll | ||
crash.ll | ||
ctpop.ll | ||
div_ops.ll | ||
dp_farith.ll | ||
eqv.ll | ||
extract_elt.ll | ||
fcmp32.ll | ||
fcmp64.ll | ||
fdiv.ll | ||
fneg-fabs.ll | ||
i8ops.ll | ||
i64ops.ll | ||
icmp8.ll | ||
icmp16.ll | ||
icmp32.ll | ||
icmp64.ll | ||
immed16.ll | ||
immed32.ll | ||
immed64.ll | ||
int2fp.ll | ||
intrinsics_branch.ll | ||
intrinsics_float.ll | ||
intrinsics_logical.ll | ||
jumptable.ll | ||
lit.local.cfg | ||
loads.ll | ||
mul-with-overflow.ll | ||
mul_ops.ll | ||
nand.ll | ||
or_ops.ll | ||
private.ll | ||
rotate_ops.ll | ||
select_bits.ll | ||
sext128.ll | ||
shift_ops.ll | ||
shuffles.ll | ||
sp_farith.ll | ||
stores.ll | ||
storestruct.ll | ||
struct_1.ll | ||
sub_ops.ll | ||
trunc.ll | ||
v2f32.ll | ||
v2i32.ll | ||
vec_const.ll | ||
vecinsert.ll |