diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64InstrNEON.td | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64InstrNEON.td b/llvm/lib/Target/AArch64/AArch64InstrNEON.td index 3c446d5860d..badd9e0f402 100644 --- a/llvm/lib/Target/AArch64/AArch64InstrNEON.td +++ b/llvm/lib/Target/AArch64/AArch64InstrNEON.td @@ -7074,10 +7074,18 @@ defm : Concat_Vector_Pattern<v2i64, v1i64>; defm : Concat_Vector_Pattern<v4f32, v2f32>; defm : Concat_Vector_Pattern<v2f64, v1f64>; +def : Pat<(v2i32 (concat_vectors (v1i32 FPR32:$Rn), undef)), + (v2i32 (SUBREG_TO_REG(i64 0), $Rn, sub_32))>; +def : Pat<(v2i32 (concat_vectors (v1i32 FPR32:$Rn), (v1i32 FPR32:$Rm))), + (EXTRACT_SUBREG + (v4i32 (INSELs + (v4i32 (SUBREG_TO_REG (i64 0), FPR32:$Rn, sub_32)), + (v4i32 (SUBREG_TO_REG (i64 0), FPR32:$Rm, sub_32)), + (i64 1), + (i64 0))), + sub_64)>; def : Pat<(v2i32 (concat_vectors (v1i32 FPR32:$Rn), (v1i32 FPR32:$Rn))), (DUPELT2s (v4i32 (SUBREG_TO_REG(i64 0), $Rn, sub_32)), 0)>; -def : Pat<(v2i32 (concat_vectors undef, (v1i32 FPR32:$Rn))), - (DUPELT2s (v4i32 (SUBREG_TO_REG(i64 0), $Rn, sub_32)), 0)>; //patterns for EXTRACT_SUBVECTOR def : Pat<(v8i8 (extract_subvector (v16i8 VPR128:$Rn), (i64 0))), |

