How can I know the primitives/actions supported by bmv2?

Are there documents that describe all the primitives supported by bmv2? For example, I found a project that used “clone_egress_pkt_to_egress” primitive but I don’t know the definition (i.e., argument meaning) of the primitive.
I can not find the documents for bmv2’s primitives and the tutorials do not propose advanced primitives. Thanks for help.

I do not know if it is everything, but at least most of the primitives should be documented in one of these two files, assuming you are using the v1model P4 architecture in bmv2, which is the only one with full support in bmv2 at the moment (the PSA architecture only has a partial implementation in bmv2, and I wouldn’t recommend using it yet unless you are working to enhance it).

The v1model.p4 include file, defining all extern objects and methods, standard metadata, etc, with many comments for documentation: p4c/v1model.p4 at main · p4lang/p4c · GitHub

Additional documentation and restrictions on P4 program support in BMv2’s v1model architecture: behavioral-model/simple_switch.md at main · p4lang/behavioral-model · GitHub

Thanks for your help! v1model.p4 is exactly what I look for.