The framework should allow us to easily add execution test coverage to
LLVM without having to necessarily be able to convince a particular
frontend to generate a particular IR pattern. Instead, the tests can be
written directly in LLVM IR and converted to bitcode to avoid churn when
the textual IR format changes in uninteresting ways.
This also adds the first test which does basic large integer math to
exercise the legalization logic in LLVM. Right now we have massive
FileCheck tests in LLVM that provide low value and are impossible to
review updates for because they are checking each individual
instruction. Instead, we can use execution tests to both ensure that
LLVM can successfully code generate these IR patterns, and that the
resulting instructions behave as expected.
For example, this test uses a specific pattern of inputs designed to
stress test the carry handling in an large integer multiplication.