[llvm] b9a0276 - [ARM] Add VECTOR_REG_CAST identity fold.

David Green via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 24 13:21:32 PDT 2024


Author: David Green
Date: 2024-08-24T21:21:27+01:00
New Revision: b9a02765504f8b83701ffffc097531638c4fc22e

URL: https://github.com/llvm/llvm-project/commit/b9a02765504f8b83701ffffc097531638c4fc22e
DIFF: https://github.com/llvm/llvm-project/commit/b9a02765504f8b83701ffffc097531638c4fc22e.diff

LOG: [ARM] Add VECTOR_REG_CAST identity fold.

v16i8 VECTOR_REG_CAST (v16i8 Op) can use v16i8 Op directly, as the
VECTOR_REG_CAST is a noop.

Added: 
    

Modified: 
    llvm/lib/Target/ARM/ARMISelLowering.cpp
    llvm/test/CodeGen/Thumb2/mve-be.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 1e8bb8a495e68b..4ab0433069ae66 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -15444,6 +15444,9 @@ static SDValue PerformVECTOR_REG_CASTCombine(SDNode *N, SelectionDAG &DAG,
   if (ST->isLittle())
     return DAG.getNode(ISD::BITCAST, dl, VT, Op);
 
+  // VT VECTOR_REG_CAST (VT Op) -> Op
+  if (Op.getValueType() == VT)
+    return Op;
   // VECTOR_REG_CAST undef -> undef
   if (Op.isUndef())
     return DAG.getUNDEF(VT);

diff  --git a/llvm/test/CodeGen/Thumb2/mve-be.ll b/llvm/test/CodeGen/Thumb2/mve-be.ll
index 522d6f8704b6af..2f2ecc76472374 100644
--- a/llvm/test/CodeGen/Thumb2/mve-be.ll
+++ b/llvm/test/CodeGen/Thumb2/mve-be.ll
@@ -278,10 +278,9 @@ define arm_aapcs_vfpcc <4 x i32> @test(ptr %data) {
 ;
 ; CHECK-BE-LABEL: test:
 ; CHECK-BE:       @ %bb.0: @ %entry
-; CHECK-BE-NEXT:    movs r1, #1
-; CHECK-BE-NEXT:    vldrw.u32 q1, [r0, #32]
-; CHECK-BE-NEXT:    vdup.32 q0, r1
-; CHECK-BE-NEXT:    vadd.i32 q0, q1, q0
+; CHECK-BE-NEXT:    vldrw.u32 q0, [r0, #32]
+; CHECK-BE-NEXT:    movs r0, #1
+; CHECK-BE-NEXT:    vadd.i32 q0, q0, r0
 ; CHECK-BE-NEXT:    vrev32.8 q0, q0
 ; CHECK-BE-NEXT:    @APP
 ; CHECK-BE-NEXT:    vmullb.s32 q1, q0, q0


        


More information about the llvm-commits mailing list