[llvm] [WebAssembly][GlobalISel] Add legalization & selection of most integer ops (PR #190234)
Demetrius Kanios via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 3 11:03:27 PDT 2026
================
@@ -83,14 +84,65 @@ WebAssemblyInstructionSelector::WebAssemblyInstructionSelector(
{
}
+static const TargetRegisterClass &getRegClassForBank(const RegisterBank &RB) {
+ switch (RB.getID()) {
+ case WebAssembly::I32RegBankID:
+ return WebAssembly::I32RegClass;
+ case WebAssembly::I64RegBankID:
+ return WebAssembly::I64RegClass;
+ case WebAssembly::F32RegBankID:
+ return WebAssembly::F32RegClass;
+ case WebAssembly::F64RegBankID:
+ return WebAssembly::F64RegClass;
+ case WebAssembly::EXNREFRegBankID:
+ return WebAssembly::EXNREFRegClass;
+ case WebAssembly::EXTERNREFRegBankID:
+ return WebAssembly::EXTERNREFRegClass;
+ case WebAssembly::FUNCREFRegBankID:
+ return WebAssembly::FUNCREFRegClass;
+ case WebAssembly::V128RegBankID:
+ return WebAssembly::V128RegClass;
+ default:
+ reportFatalInternalError(
+ "Found unexpected RegisterBank in `getRegClassForBank`");
+ }
+}
+
bool WebAssemblyInstructionSelector::select(MachineInstr &I) {
+ MachineBasicBlock &MBB = *I.getParent();
+ MachineFunction &MF = *MBB.getParent();
+ MachineRegisterInfo &MRI = MF.getRegInfo();
+
if (!I.isPreISelOpcode()) {
return true;
}
if (selectImpl(I, *CoverageInfo))
return true;
+ using namespace TargetOpcode;
+
+ switch (I.getOpcode()) {
+ case G_IMPLICIT_DEF: {
----------------
QuantumSegfault wrote:
How do you mean "generically"?
https://github.com/llvm/llvm-project/pull/190234
More information about the llvm-commits
mailing list