1; RUN: llc < %s -asm-verbose=false -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s 2; Test that UMULO works correctly on 64-bit operands. 3target triple = "wasm32-unknown-unknown" 4 5; CHECK-LABEL: _ZN4core3num21_$LT$impl$u20$u64$GT$15overflowing_mul17h07be88b4cbac028fE: 6; CHECK: __multi3 7; Function Attrs: inlinehint 8define void @"_ZN4core3num21_$LT$impl$u20$u64$GT$15overflowing_mul17h07be88b4cbac028fE"(i64, i64) unnamed_addr #0 { 9start: 10 %2 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %0, i64 %1) 11 %3 = extractvalue { i64, i1 } %2, 0 12 store i64 %3, i64* undef 13 unreachable 14} 15 16; Function Attrs: nounwind readnone speculatable 17declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #1 18 19attributes #0 = { inlinehint } 20attributes #1 = { nounwind readnone speculatable } 21 22; CHECK-LABEL: wut: 23; CHECK: call __multi3, $2, $0, $pop0, $1, $pop7 24; CHECK: i64.load $1=, 8($2) 25define i1 @wut(i64, i64) { 26start: 27 %2 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %0, i64 %1) 28 %3 = extractvalue { i64, i1 } %2, 1 29 ret i1 %3 30} 31