https://github.com/xlauko created 
https://github.com/llvm/llvm-project/pull/187862

None

>From 1a9de9376352551cf2950727fc6f4f110d419324 Mon Sep 17 00:00:00 2001
From: xlauko <[email protected]>
Date: Sat, 21 Mar 2026 13:33:28 +0100
Subject: [PATCH] [CIR] Add Involution trait to BitReverseOp and ByteSwapOp

---
 clang/include/clang/CIR/Dialect/IR/CIROps.td |  4 ++++
 clang/test/CIR/Transforms/bit.cir            | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td 
b/clang/include/clang/CIR/Dialect/IR/CIROps.td
index 41858a61480a8..b15dc30ffb87d 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIROps.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td
@@ -5696,6 +5696,8 @@ def CIR_BitReverseOp : CIR_BitOpBase<"bitreverse",
     %1 = cir.bitreverse %0: !u32i
     ```
   }];
+  
+  let append traits = [Involution];
 }
 
 def CIR_ByteSwapOp : CIR_BitOpBase<"byte_swap",
@@ -5719,6 +5721,8 @@ def CIR_ByteSwapOp : CIR_BitOpBase<"byte_swap",
     %1 = cir.byte_swap %0 : !u32i
     ```
   }];
+  
+  let append traits = [Involution];
 }
 
 
//===----------------------------------------------------------------------===//
diff --git a/clang/test/CIR/Transforms/bit.cir 
b/clang/test/CIR/Transforms/bit.cir
index 11f47aa39e67c..c20448e74a026 100644
--- a/clang/test/CIR/Transforms/bit.cir
+++ b/clang/test/CIR/Transforms/bit.cir
@@ -229,4 +229,24 @@ module {
   // CHECK-NEXT:    %[[P:.+]] = cir.const #cir.poison : !u32i
   // CHECK-NEXT:    cir.return %[[P]] : !u32i
   // CHECK-NEXT:  }
+
+  cir.func @involution_bitreverse(%arg0 : !u32i) -> !u32i {
+    %0 = cir.bitreverse %arg0 : !u32i
+    %1 = cir.bitreverse %0 : !u32i
+    cir.return %1 : !u32i
+  }
+  // CHECK-LABEL: @involution_bitreverse
+  // CHECK-SAME:  (%[[X:.+]]: !u32i)
+  // CHECK-NEXT:    cir.return %[[X]] : !u32i
+  // CHECK-NEXT:  }
+
+  cir.func @involution_byte_swap(%arg0 : !u32i) -> !u32i {
+    %0 = cir.byte_swap %arg0 : !u32i
+    %1 = cir.byte_swap %0 : !u32i
+    cir.return %1 : !u32i
+  }
+  // CHECK-LABEL: @involution_byte_swap
+  // CHECK-SAME:  (%[[X:.+]]: !u32i)
+  // CHECK-NEXT:    cir.return %[[X]] : !u32i
+  // CHECK-NEXT:  }
 }

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to