[llvm-commits] [llvm] r73622 - in /llvm/trunk: lib/Target/ARM/ARMISelDAGToDAG.cpp lib/Target/ARM/ARMInstrInfo.td lib/Target/ARM/ARMInstrThumb2.td lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp test/CodeGen/ARM/thumb2-add.ll test/CodeGen/ARM/thumb2-m

Anton Korobeynikov anton at korobeynikov.info
Mon Jun 22 23:36:11 PDT 2009


Hi Evan

>> +def : Pat<(and (or GPR:$src, imm16high:$imm1), imm16high0xffff:
>> $imm2),
>> +          (tMOVTi16 GPR:$src, (HI16 imm16high:$imm1))>,
>> +         Requires<[HasThumb2]>;
>
> I don't get this pattern. Can you explain?
Dag combiner replaces the original operation sequence (or (and reg,
0xFFFF), (shl imm, 16)) with (and (or reg, (shl imm, 16)), (or 0xFFFF,
(shl imm16, 16))). We're catching this case here. There are movt tests
there. Try to disable the pattern and see, what will happen.

-- 
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University




More information about the llvm-commits mailing list