[llvm] [AMDGPU] Convert more 64-bit lshr to 32-bit if shift amt>=32 (PR #138204)

Shilei Tian via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 9 18:12:21 PDT 2025


================
@@ -5209,21 +5264,19 @@ SDValue AMDGPUTargetLowering::PerformDAGCombine(SDNode *N,
 
     break;
   }
-  case ISD::SHL: {
+  case ISD::SHL:
+  case ISD::SRL: {
     // Range metadata can be invalidated when loads are converted to legal types
     // (e.g. v2i64 -> v4i32).
-    // Try to convert vector shl before type legalization so that range metadata
-    // can be utilized.
+    // Try to convert vector shl/srl before type legalization so that range
+    // metadata can be utilized.
     if (!(N->getValueType(0).isVector() &&
           DCI.getDAGCombineLevel() == BeforeLegalizeTypes) &&
         DCI.getDAGCombineLevel() < AfterLegalizeDAG)
       break;
-    return performShlCombine(N, DCI);
-  }
-  case ISD::SRL: {
-    if (DCI.getDAGCombineLevel() < AfterLegalizeDAG)
-      break;
-
+    if (N->getOpcode() == ISD::SHL) {
+      return performShlCombine(N, DCI);
+    }
----------------
shiltian wrote:

```suggestion
    if (N->getOpcode() == ISD::SHL)
      return performShlCombine(N, DCI);
```

https://github.com/llvm/llvm-project/pull/138204


More information about the llvm-commits mailing list