[all-commits] [llvm/llvm-project] 18af85: [AArch64] Remove 64bit->128bit vector insert lowering
David Green via All-commits
all-commits at lists.llvm.org
Wed Mar 1 01:40:04 PST 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 18af85302200580ca4fc54bfee2a8a0ec2c8d7b9
https://github.com/llvm/llvm-project/commit/18af85302200580ca4fc54bfee2a8a0ec2c8d7b9
Author: David Green <david.green at arm.com>
Date: 2023-03-01 (Wed, 01 Mar 2023)
Changed paths:
M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
M llvm/lib/Target/AArch64/AArch64InstrInfo.td
M llvm/test/CodeGen/AArch64/fixed-vector-deinterleave.ll
M llvm/test/CodeGen/AArch64/neon-bitwise-instructions.ll
Log Message:
-----------
[AArch64] Remove 64bit->128bit vector insert lowering
The AArch64 backend, during lowering, will convert an 64bit vector insert to a
128bit vector:
vector_insert %dreg, %v, %idx
=>
%qreg = insert_subvector undef, %dreg, 0
%ins = vector_insert %qreg, %v, %idx
EXTRACT_SUBREG %ins, dsub
This creates a bit of mess in the DAG, and the EXTRACT_SUBREG being a machine
nodes makes it difficult to simplify. This patch removes that, treating the
64bit vector insert as legal and handling them with extra tablegen patterns.
The end result is a simpler DAG that is easier to write tablegen patterns for.
Differential Revision: https://reviews.llvm.org/D144550
More information about the All-commits
mailing list