[RISCV] Add RISCV-specific TargetTransformInfo
authorSam Elliott <selliott@lowrisc.org>
Fri, 21 Jun 2019 13:36:09 +0000 (13:36 +0000)
committerSam Elliott <selliott@lowrisc.org>
Fri, 21 Jun 2019 13:36:09 +0000 (13:36 +0000)
commit96c8bc7956d95c7b39fac37382e6b2a99d9fc2f1
tree83a37c25fc777a1f95a681606f565ec0d034c035
parentaa9b6468bdc9a14f82f513e302dbd1fef1a2e90b
[RISCV] Add RISCV-specific TargetTransformInfo

Summary:
LLVM Allows Targets to provide information that guides optimisations
made to LLVM IR. This is done with callbacks on a TargetTransformInfo object.

This patch adds a TargetTransformInfo class for RISC-V. This will allow us to
implement RISC-V specific callbacks as they become necessary.

This commit also adds the getIntImmCost callbacks, and tests them with a simple
constant hoisting test. Our immediate costs are on the conservative side, for
the moment, but we prevent hoisting in most circumstances anyway.

Previous review was on D63007

Reviewers: asb, luismarques

Reviewed By: asb

Subscribers: ributzka, MaskRay, llvm-commits, Jim, benna, psnobl, jocewei, PkmX, rkruppe, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, kito-cheng, niosHD, sabuasal, apazos, simoncook, johnrusso, rbar, hiraditya, mgorny

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D63433

llvm-svn: 364046
llvm/lib/Target/RISCV/CMakeLists.txt
llvm/lib/Target/RISCV/LLVMBuild.txt
llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
llvm/lib/Target/RISCV/RISCVTargetMachine.h
llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp [new file with mode: 0644]
llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h [new file with mode: 0644]
llvm/test/CodeGen/RISCV/imm-cse.ll
llvm/test/Transforms/ConstantHoisting/RISCV/immediates.ll [new file with mode: 0644]
llvm/test/Transforms/ConstantHoisting/RISCV/lit.local.cfg [new file with mode: 0644]