================
@@ -468,6 +468,55 @@ def BrOp : CIR_Op<"br",
   }];
 }
 
+//===----------------------------------------------------------------------===//
+// UnaryOp
+//===----------------------------------------------------------------------===//
+
+def UnaryOpKind_Inc   : I32EnumAttrCase<"Inc",   1, "inc">;
+def UnaryOpKind_Dec   : I32EnumAttrCase<"Dec",   2, "dec">;
+def UnaryOpKind_Plus  : I32EnumAttrCase<"Plus",  3, "plus">;
+def UnaryOpKind_Minus : I32EnumAttrCase<"Minus", 4, "minus">;
+def UnaryOpKind_Not   : I32EnumAttrCase<"Not",   5, "not">;
----------------
andykaylor wrote:

Right. Address of is represented in various ways, usually with either 
`cir.get_global` or just using the `cir.alloca` address.

Logical not is handled by converting to bool and then passing that to the unary 
not. That is, cir.unary(not) is essentially always a bitwise not, but for bool 
types that is effectively a logical not.

co_await is handled in the incubator, but that might be something we want to 
revisit. It looks like it's just using the LLVM coro intrinsics. I'm not sure 
if there's been discussion of expressing coroutine abstractions in CIR or if 
this was just a "get it done" implementation.

https://github.com/llvm/llvm-project/pull/131369
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to