Does llvm have an interface to determine a parameter type may be passed in register?

Hi, all!

I want to implement C language variable argument support with LLVM-3.3 on x86_64.
But LLVM does not support va_arg with long double type and aggregate type on x86_64.
So I need to look for another way.

I saw the "Coding Examples" in AMD64-ABI manual, in which the algorithm for the generic va_arg implementation needs to determine whether a parameter type may be passed in registers. I want to know does LLVM have already implemented some interfaces to check it? Or I need to write one myself? It's a pity that I'm not very familiar with it. Can anyone give me some suggestions? Thanks in advance!