1; RUN: llc < %s -asm-verbose=false -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+multivalue | FileCheck %s 2 3; Test that the multivalue returns, function types, and block types 4; work as expected. 5 6target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" 7target triple = "wasm32-unknown-unknown" 8 9%pair = type { i32, i32 } 10%packed_pair = type <{ i32, i32 }> 11 12; CHECK-LABEL: pair_ident: 13; CHECK-NEXT: .functype pair_ident (i32, i32) -> (i32, i32) 14; CHECK-NEXT: return $0, $1{{$}} 15define %pair @pair_ident(%pair %p) { 16 ret %pair %p 17} 18 19; CHECK-LABEL: packed_pair_ident: 20; CHECK-NEXT: .functype packed_pair_ident (i32, i32) -> (i32, i32) 21; CHECK-NEXT: return $0, $1{{$}} 22define %packed_pair @packed_pair_ident(%packed_pair %p) { 23 ret %packed_pair %p 24} 25 26; CHECK-LABEL: minimal_loop: 27; CHECK-NEXT: .functype minimal_loop (i32) -> (i32, i64) 28; CHECK-NEXT: .LBB{{[0-9]+}}_1: 29; CHECK-NEXT: loop () -> (i32, i64) 30; CHECK-NEXT: br 0{{$}} 31; CHECK-NEXT: .LBB{{[0-9]+}}_2: 32; CHECK-NEXT: end_loop{{$}} 33define {i32, i64} @minimal_loop(i32* %p) { 34entry: 35 br label %loop 36loop: 37 br label %loop 38} 39 40; CHECK-LABEL: .section .custom_section.target_features 41; CHECK-NEXT: .int8 1 42; CHECK-NEXT: .int8 43 43; CHECK-NEXT: .int8 10 44; CHECK-NEXT: .ascii "multivalue" 45