[llvm] [DAG] Add basic folds for CLMUL nodes (PR #176961)

Vishruth Thimmaiah via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 21 10:46:28 PST 2026


================
@@ -0,0 +1,66 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
+; RUN: llc -mtriple=riscv64 -mattr=+zbc -verify-machineinstrs < %s | FileCheck %s
+
+define i64 @combine_i64_cmul_constant() nounwind {
+; CHECK-LABEL: combine_i64_cmul_constant:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    li a0, 60
+; CHECK-NEXT:    ret
+  %res = call i64 @llvm.clmul.i64(i64 6, i64 10)
+  ret i64 %res
+}
+
+define i64 @combine_i64_cmul_larger() nounwind {
+; CHECK-LABEL: combine_i64_cmul_larger:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    lui a0, 5
+; CHECK-NEXT:    addi a0, a0, 1365
+; CHECK-NEXT:    ret
+  %res = call i64 @llvm.clmul.i64(i64 255, i64 255)
+  ret i64 %res
+}
+
+define i64 @combine_i64_cmul_zero(i64 %x) nounwind {
+; CHECK-LABEL: combine_i64_cmul_zero:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    li a0, 0
+; CHECK-NEXT:    ret
+  %res = call i64 @llvm.clmul.i64(i64 %x, i64 0)
----------------
vishruth-thimmaiah wrote:

> but not sure this will show a codegen diff?

I tried it out and there is no diff between the two commutations, should I still add a test?

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


More information about the llvm-commits mailing list