diff options
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp index 78c6a41..b2ea784 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp @@ -992,7 +992,10 @@ bool WebAssemblyFastISel::selectTrunc(const Instruction *I) { if (Reg == 0) return false; - if (Trunc->getOperand(0)->getType()->isIntegerTy(64)) { + unsigned FromBitWidth = Trunc->getOperand(0)->getType()->getIntegerBitWidth(); + unsigned ToBitWidth = Trunc->getType()->getIntegerBitWidth(); + + if (ToBitWidth <= 32 && (32 < FromBitWidth && FromBitWidth <= 64)) { Register Result = createResultReg(&WebAssembly::I32RegClass); BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, MIMD, TII.get(WebAssembly::I32_WRAP_I64), Result) |