[llvm] [SelectionDAG][RISCV] Fix break of vnsrl pattern in issue #94265 (PR #95563)
    Luke Lau via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Sun Jun 30 19:25:22 PDT 2024
    
    
  
================
@@ -1884,6 +1884,16 @@ bool RISCVTargetLowering::isTruncateFree(EVT SrcVT, EVT DstVT) const {
   return (SrcBits == 64 && DestBits == 32);
 }
 
+bool RISCVTargetLowering::isTruncateFree(SDValue Val, EVT VT2) const {
+  // free truncate from vnsrl and vnsra
+  if (Subtarget.hasStdExtV() &&
+      (Val.getOpcode() == ISD::SRL || Val.getOpcode() == ISD::SRA) &&
+      Val.getValueType().isVector() && VT2.isVector()) {
----------------
lukel97 wrote:
Do we need to check that VT2 is exactly half the size of Val.getValueType()?
https://github.com/llvm/llvm-project/pull/95563
    
    
More information about the llvm-commits
mailing list