llvm-project/llvm/test/Analysis/CostModel
David Green be7a107070 [ARM] Teach the Arm cost model that a Shift can be folded into other instructions
This attempts to teach the cost model in Arm that code such as:
  %s = shl i32 %a, 3
  %a = and i32 %s, %b
Can under Arm or Thumb2 become:
  and r0, r1, r2, lsl #3

So the cost of the shift can essentially be free. To do this without
trying to artificially adjust the cost of the "and" instruction, it
needs to get the users of the shl and check if they are a type of
instruction that the shift can be folded into. And so it needs to have
access to the actual instruction in getArithmeticInstrCost, which if
available is added as an extra parameter much like getCastInstrCost.

We otherwise limit it to shifts with a single user, which should
hopefully handle most of the cases. The list of instruction that the
shift can be folded into include ADC, ADD, AND, BIC, CMP, EOR, MVN, ORR,
ORN, RSB, SBC and SUB. This translates to Add, Sub, And, Or, Xor and
ICmp.

Differential Revision: https://reviews.llvm.org/D70966
2019-12-09 10:24:33 +00:00
..
AArch64 [CostModel] Model all `extractvalue`s as free. 2019-08-29 11:50:30 +00:00
AMDGPU AMDGPU: Split test functions to avoid dependency on subtarget 2019-11-19 11:12:13 +05:30
ARM [ARM] Teach the Arm cost model that a Shift can be folded into other instructions 2019-12-09 10:24:33 +00:00
PowerPC [PowerPC] Separate Features that are known to be Power9 specific from Future CPU 2019-11-27 15:40:13 -06:00
RISCV [lit] Delete empty lines at the end of lit.local.cfg NFC 2019-06-17 09:51:07 +00:00
SystemZ [SystemZ] Support z15 processor name 2019-09-20 23:04:45 +00:00
X86 [x86] add cost model special-case for insert/extract from element 0 2019-12-06 13:50:25 -05:00
no_info.ll