[llvm] [WebAssembly] Optimize away mask of 63 for sra and srl( zext (and i32 63))) (PR #170128)

Luke Lau via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 1 06:48:25 PST 2025


================
@@ -59,6 +74,22 @@ define i32 @srl_i32(i32 %v, i32 %x) {
   ret i32 %a
 }
 
+define i64 @srl_i64_zext(i64 %v, i32 %x) {
+; CHECK-LABEL: srl_i64_zext:
+; CHECK:         .functype srl_i64_zext (i64, i32) -> (i64)
+; CHECK-NEXT:  # %bb.0:
+; CHECK-NEXT:    local.get 0
+; CHECK-NEXT:    local.get 1
+; CHECK-NEXT:    i64.extend_i32_u
+; CHECK-NEXT:    i64.shr_u
+; CHECK-NEXT:    # fallthrough-return
+  %m = and i32 %x, 63
+  %z = zext i32 %m to i64
+  %a = lshr i64 %v, %z
+  ret i64 %a
+}
+
+
----------------
lukel97 wrote:

Nit, extra newline

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


More information about the llvm-commits mailing list