[all-commits] [llvm/llvm-project] 4f8fdf: [ISEL] Canonicalise constant splats to RHS.
sdesmalen-arm via All-commits
all-commits at lists.llvm.org
Mon Jan 24 01:39:05 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 4f8fdf78279f0cb298dc0dc215ee56b0342235ee
https://github.com/llvm/llvm-project/commit/4f8fdf78279f0cb298dc0dc215ee56b0342235ee
Author: Sander de Smalen <sander.desmalen at arm.com>
Date: 2022-01-24 (Mon, 24 Jan 2022)
Changed paths:
M llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
M llvm/test/CodeGen/AArch64/unfold-masked-merge-vector-variablemask-const.ll
M llvm/test/CodeGen/PowerPC/combine-fneg.ll
M llvm/test/CodeGen/PowerPC/repeated-fp-divisors.ll
M llvm/test/CodeGen/X86/dpbusd_const.ll
M llvm/test/CodeGen/X86/extractelement-fp.ll
M llvm/test/CodeGen/X86/fp-round.ll
M llvm/test/CodeGen/X86/fp128-cast.ll
M llvm/test/CodeGen/X86/hoist-and-by-const-from-shl-in-eqcmp-zero.ll
M llvm/test/CodeGen/X86/pr43509.ll
M llvm/test/CodeGen/X86/unfold-masked-merge-vector-variablemask-const.ll
Log Message:
-----------
[ISEL] Canonicalise constant splats to RHS.
SelectionDAG::getNode() canonicalises constants to the RHS if the
operation is commutative, but it doesn't do so for constant splat
vectors. Doing this early helps making certain folds on vector types,
simplifying the code required for target DAGCombines that are enabled
before Type legalization.
Somewhat to my surprise, DAGCombine doesn't seem to traverse the
DAG in a post-order DFS, so at the time of doing some custom fold where
the input is a MUL, DAGCombiner::visitMUL hasn't yet reordered the
constant splat to the RHS.
This patch leads to a few improvements, but also a few minor regressions,
which I traced down to D46492. When I tried reverting this change to see
if the changes were still necessary, I ran into some segfaults. Not sure
if there is some latent bug there.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D117794
More information about the All-commits
mailing list