[AArch64][InstCombine] Simplify repeated complex patterns in dupqlane
Repeated floating-point complex patterns in dupqlane such as (f32 a, f32 b, f32 a, f32 b) can be simplified to shufflevector(f64(a, b), undef, 0)
Differential D138203
[AArch64][InstCombine] Simplify repeated complex patterns in dupqlane MattDevereau on Nov 17 2022, 5:35 AM. Authored by
Details [AArch64][InstCombine] Simplify repeated complex patterns in dupqlane Repeated floating-point complex patterns in dupqlane such as (f32 a, f32 b, f32 a, f32 b) can be simplified to shufflevector(f64(a, b), undef, 0)
Diff Detail
Event TimelineComment Actions This is essentially an InstCombine version of the work done in https://reviews.llvm.org/D133116.
Comment Actions LGTM, but please address the comment about poison and allow time for other reviewers to chime in. Comment Actions Could you maybe update the commit message, it seems to have the title twice :)
Comment Actions Added a condition if (!isa<PoisonValue>(CurrentInsertElt) || !isa<PoisonValue>(Default) || to check all lanes of the subvector being inserted are defined, and the first inserted element is inserted into poison Comment Actions I've left a bunch more comments, but overall this patch is moving in the right direction @MattDevereau!
Comment Actions LGTM (please address my nit on the test before you land it)
|
Please use std::optional. The LLVM variant is going away.