[all-commits] [llvm/llvm-project] 21babe: [X86] Combine reduce(add (mul x, y)) to VNNI instr...

Luo, Yuanke via All-commits all-commits at lists.llvm.org
Fri Jan 7 05:14:36 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 21babe4db326a4bbac2e317ad50e4f62643e4a1d
      https://github.com/llvm/llvm-project/commit/21babe4db326a4bbac2e317ad50e4f62643e4a1d
  Author: Luo, Yuanke <yuanke.luo at intel.com>
  Date:   2022-01-07 (Fri, 07 Jan 2022)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/lib/Target/X86/X86PartialReduction.cpp
    A llvm/test/CodeGen/X86/dpbusd.ll
    A llvm/test/CodeGen/X86/dpbusd_i4.ll

  Log Message:
  -----------
  [X86] Combine reduce(add (mul x, y)) to VNNI instruction.

For below C code, we can use VNNI to combine the mul and add operation.
int usdot_prod_qi(unsigned char *restrict a, char *restrict b, int c,
                  int n) {
  int i;
  for (i = 0; i < 32; i++) {
    c += ((int)a[i] * (int)b[i]);
  }
  return c;
}
We didn't support the combine acoss basic block in this patch.

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




More information about the All-commits mailing list