HomePhabricator

[X86] Remove isel patterns for (X86VBroadcast (i16 (trunc (i32 (load))))).

Authored by craig.topper on Tue, Mar 10, 12:00 AM.

Description

[X86] Remove isel patterns for (X86VBroadcast (i16 (trunc (i32 (load))))). Replace with a DAG combine to form VBROADCAST_LOAD.

isTypeDesirableForOp prevents loads from being shrunk to i16 by DAG
combine. Because of this we can't just match the broadcast and a
scalar load. So look for broadcast+truncate+load and form a
vbroadcast_load during DAG combine. This replaces what was
previously done as an isel pattern and I think fixes it so we
won't change the size of a volatile load. But my main motivation
is just to clean up our isel patterns.

Details

Committed
craig.topperTue, Mar 10, 12:07 AM
Parents
rG4b8af31f6346: [llvm][MIRVRegNamer] Avoid collisions across constant pool indices.
Branches
Unknown
Tags
Unknown