[clang] [CIR] Add bit reverse and byte reverse operations (PR #147200)

Sirui Mu via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 9 06:55:55 PDT 2025


================
@@ -2661,6 +2661,55 @@ def BitPopcountOp : CIR_BitOpBase<"bit.popcnt",
   }];
 }
 
+def BitReverseOp : CIR_BitOpBase<"bit.reverse", CIR_UIntOfWidths<[8, 16, 32, 64]>> {
+  let summary = "Reverse the bit pattern of the operand integer";
+  let description = [{
+    The `cir.bit.reverse` operation reverses the bits of the operand integer.
+    Its only argument must be of unsigned integer types of width 8, 16, 32, or
+    64.
+
+    This operation covers the C/C++ builtin function `__builtin_bitreverse`.
+
+    Example:
+
+    ```mlir
+    %1 = cir.bit.reverse %0 : !u32i
+    ```
+  }];
+}
+
+//===----------------------------------------------------------------------===//
+// ByteswapOp
+//===----------------------------------------------------------------------===//
+
+def ByteSwapOp : CIR_Op<"bswap", [Pure, SameOperandsAndResultType]> {
----------------
Lancern wrote:

Updated. Also the mnemonic is updated to `cir.bit.bswap` to match the naming convention for `CIR_BitOpBase`.

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


More information about the cfe-commits mailing list