In PR32594, inline assembly using the 'A' constraint on x86_64 causes
llvm to crash with a "Cannot select" stack trace. This is because
X86TargetLowering::getRegForInlineAsmConstraint hardcodes that 'A'
means the EAX and EDX registers.
However, on x86_64 it means the RAX and RDX registers, and on 16-bit x86
(ia16?) it means the old AX and DX registers.
Add new register classes in X86RegisterInfo.td to support these cases,
and amend the logic in getRegForInlineAsmConstraint to cope with
different subtargets. Also add a test case, derived from PR32594.
'-march=x86_64' -> '-mtriple=x86_64--' ? Helps avoid sensitivity to the host (not that it matters in this file) and lets you get rid of the IR triple.
Also, '-no-integrated-as' doesn't have an effect here, right?