This patch adds support for the RISC-V hard float ABIs, building on top of rL355771, which added basic target-abi parsing and MC layer support. It also builds on some re-organisations and expansion of the upstream ABI and calling convention tests which were recently committed directly upstream.
A number of aspects of the RISC-V float hard float ABIs require frontend support (e.g. flattening of structs and passing int+fp for fp+fp structs in a pair of registers), and will be addressed in a Clang patch.
As can be seen from the tests, it would be worthwhile extending RISCVMergeBaseOffsets to handle constant pool as well as global accesses.
Using IsFixed here adds a new path that we may want to have covered as well.
I think this can be achieved by adding a call to a varargs function passing several double arguments in test files calling-conv-ilp32-ilp32f-ilp32d-common.ll and calling-conv-lp64-lp64f-lp64d-common.ll.
What do you think?