[all-commits] [llvm/llvm-project] da7415: [RISCV] Add support for predicating AND/OR/XOR/ADD...

Craig Topper via All-commits all-commits at lists.llvm.org
Fri Dec 16 22:59:06 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: da7415acdafb280d052da084edc4ce8747d6574c
      https://github.com/llvm/llvm-project/commit/da7415acdafb280d052da084edc4ce8747d6574c
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2022-12-16 (Fri, 16 Dec 2022)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVExpandPseudoInsts.cpp
    M llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
    M llvm/lib/Target/RISCV/RISCVInstrInfo.h
    M llvm/lib/Target/RISCV/RISCVInstrInfo.td
    M llvm/test/CodeGen/RISCV/select-binop-identity.ll
    M llvm/test/CodeGen/RISCV/short-foward-branch-opt.ll

  Log Message:
  -----------
  [RISCV] Add support for predicating AND/OR/XOR/ADD/SUB with short-forward-branch-opt.

sifive-7-series can predicate ALU instructions in the shadow of a
branch not just move instructions.

This patch implements analyzeSelect/optimizeSelect to predicate
these operations. This is based on ARM's implementation which can
predicate using flags and condition codes.

I've restricted it to just the instructions we have test cases for,
but it can be extended in the future.

Reviewed By: reames

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




More information about the All-commits mailing list