[WebAssembly] Add typed select (select t*, 0x1c) (#195953)
Add MC-layer support for the typed select instruction from the
reference-types proposal:
- New OPERAND_VALTYPE_LIST operand kind (ULEB count followed by N
single-byte valtypes), stored in the MCInst as count + N immediates.
- SELECT_T at 0x1c in WebAssemblyInstrRef.td, gated on
HasReferenceTypes.
- Plumbing through the disassembler, printer, encoder, asm parser, and
type checker.
- Encoding, disassembly, and type-checker error tests, covering
zero-length and multi-value vecs.
ISel continues to select the numeric SELECT_<type> variants at 0x1b. My
motivation is unblocking LLDB, which uses LLVM's disassembler. We got a
report that these instructions show up as <unknown> in LLDB.
rdar://170659547