[AArch64] Generate LD1 for anyext i8 or i16 vector load
The existing LD1 patterns do not cover cases where result type does not match the memory type. This happens when illegal vector types are extended and scalarized, for example: load <2 x i16>* %v2i16 is lowered into: // first element (v4i32 (insert_subvector (v2i32 (scalar_to_vector (load anyext from i16))))) // other elements (v4i32 (insert_vector_elt (i32 (load anyext from i16)) idx)) Before this patch these patterns were compiled into LDR + INS. Now they are compiled into LD1. The problem was reported in PR24820: LLVM Generates abysmal code in simple situation. Differential Revision: https://reviews.llvm.org/D102938
Loading
Please register or sign in to comment