[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