The RISC-V implementations of the __mulsi3, __muldi3 builtins were conditionally compiling the actual function definitions depending on whether the M extension was present or not. This caused Compiler-RT testing failures for RISC-V targets with the M extension, as when these sources were included the librt_has_mul*i3 features were still being defined. These librt_has_* definitions are used to conditionally run the respective tests. Since the actual functions were not being compiled-in, the generic test for __muldi3 would fail. This patch makes these implementations follow the normal Compiler-RT convention of always including the definition, and conditionally running the respective tests by using the lit conditional REQUIRES: librt_has_*.
Since the mulsi3_test.c wasn't actually RISC-V-specific, this patch also moves it out of the riscv directory. It now only depends on librt_has_mulsi3 to run.
I wonder if this file should have a stanza at the top something like the following (which should make it clearer how this file is used):