What does the IRBuilder::CreateFMulReduce() operation accomplish?

What does the IRBuilder::CreateFMulReduce() operation accomplish?

I suspect that it is some SIMD operation similar to vmulpd on x86_64.

Is there somewhere some example demonstrating how to use it?
What other SIMD operations are available?

While we are on this subject:

Is there a direct match for the AVX512 gather instruction?

Your general best resource for learning about LLVM IR operations is to read the LangRef: LLVM Language Reference Manual — LLVM 17.0.0git documentation (linking specifically to the intrinsic created by CreateFMulReduce method).

I searched under this link for “CreateFMulReduce” and it came up empty!
Searching in the web only returns the function definition.

If you look at the IRBuilder’s documentation for CreateFMulReduce (LLVM: llvm::IRBuilderBase Class Reference), you’ll notice that it says

Create a sequential vector fmul reduction intrinsic of the source vector.

Knowing that it creates an intrinsic, you can look up the list of intrinsics from the LangRef and figure out the name of the intrinsic that it most likely corresponds to.

Searching for the IRBuilder name directly is unlikely to be helpful, unless you go straight to the doxygen documentation. The understanding of how LLVM IR works is embodied in the language reference, which uses different naming conventions from the C++ libraries (so a GetElementPtrInst in C++ corresponds to a getelementptr (or GEP for short) in LLVM IR). If you want to understand LLVM IR in detail, you really should start with the language reference, and then look at which method in IRBuilder can generate the instruction or intrinsic directly (and, if not, just use CreateIntrinsic method yourself).