[PATCH] D88785: Support {S,U}REMEqFold before legalization

Simonas Kazlauskas via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 3 13:09:09 PDT 2020


nagisa added inline comments.


================
Comment at: llvm/test/CodeGen/AArch64/urem-seteq-vec-tautological.ll:77
 
 define <8 x i1> @t2_narrow(<8 x i16> %X) nounwind {
 ; CHECK-LABEL: t2_narrow:
----------------
This is a regression.

Originally urem-seteq fold did not fire because `isOperationLegalOrCustom(ISD::XOR, SETCCVT)` was returning false and thus we never actually executed the lowering this is supposed to be testing in the first place.

Instead DAG would move on to lower UREM via `BuildDIV` (i.e. mul-shift strength reduction) – which, turns out, produces significantly better code in this particular instance.

I suspect that most of the regressions seen here will be due to a similar cause as this one.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D88785/new/

https://reviews.llvm.org/D88785



More information about the llvm-commits mailing list