call_function is e.g. your myadd, but the FX symbolic tracer will trace through such user-defined functions unless you FX wrap 1 them.

call_module is e.g. your Adder module, but the FX symbolic tracer will trace through such modules unless you tell the symbolic tracer not to via is_leaf_module 1. See the default logic here 1 for is_leaf_module.

call_method is when you have some method called on a Tensor, e.g. your example x.add(y). The IR here is just representative of how the original python/pytorch program represented the add; you could likely simply replace all call_method add to call_function torch.add with no difference in output from execution of your module.