HomePhabricator

[ARM] Convert floating point splats to integer

Authored by dmgreen on Wed, May 13, 6:35 AM.

Description

[ARM] Convert floating point splats to integer

Under MVE a vdup will always take a gpr register, not a floating point
value. During DAG combine we convert the types to a bitcast to an
integer in an attempt to fold the bitcast into other instructions. This
is OK, but only works inside the same basic block. To do the same trick
across a basic block boundary we need to convert the type in
codegenprepare, before the splat is sunk into the loop.

This adds a convertSplatType function to codegenprepare to do that,
putting bitcasts around the splat to force the type to an integer. There
is then some adjustment to the code in shouldSinkOperands to handle the
extra bitcasts.

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

Details

Committed
dmgreenWed, May 13, 7:24 AM
Differential Revision
D78728: [ARM] Convert floating point splats to integer
Parents
rGa5d80818fa70: [mlir] [VectorOps] Add missing EDSC intrinsics.
Branches
Unknown
Tags
Unknown