While working on #122992, @inbelic mentioned that the semantics checks in clang/lib/Sema/SemaSPIRV.cpp could be simplified by using helper functions that are currently only present in clang/lib/Sema/SemaHLSL.cpp, such as CheckArgTypeIsCorrect and CheckAllArgTypesAreCorrect.
It would be useful to migrate the helper functions out of SemaHLSL into a common location accessible to both SemaHLSL and SemaSPIRV to make the code in SemaSPIRV less verbose and more readable.