1; RUN: llc -filetype=asm -asm-verbose=false %s -o %t.s 2; RUN: FileCheck -check-prefix=ASM -input-file %t.s %s 3; RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=asm %t.s -o - | FileCheck -check-prefix=ASM %s 4; RUN: llc -filetype=obj %s -o - | obj2yaml | FileCheck %s 5; RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj %t.s -o - | obj2yaml | FileCheck %s 6 7; This specifically tests that we can generate a binary from the assembler 8; that produces the same binary as the backend would. 9 10target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" 11target triple = "wasm32-unknown-unknown" 12 13declare void @bar() 14 15define void @foo(i32 %n) { 16entry: 17 call void @bar() 18 ret void 19} 20 21; Checking assembly is not the point of this test, but if something breaks 22; it is easier to spot it here than in the yaml output. 23 24; ASM: .text 25; ASM: .file "assembler-binary.ll" 26; ASM: .globl foo 27; ASM: foo: 28; ASM-NEXT: .functype foo (i32) -> () 29; ASM-NEXT: call bar 30; ASM-NEXT: end_function 31; ASM: .functype bar () -> () 32 33 34; CHECK: --- !WASM 35; CHECK-NEXT: FileHeader: 36; CHECK-NEXT: Version: 0x1 37; CHECK-NEXT: Sections: 38; CHECK-NEXT: - Type: TYPE 39; CHECK-NEXT: Signatures: 40; CHECK-NEXT: - Index: 0 41; CHECK-NEXT: ParamTypes: 42; CHECK-NEXT: - I32 43; CHECK-NEXT: ReturnTypes: [] 44; CHECK-NEXT: - Index: 1 45; CHECK-NEXT: ParamTypes: [] 46; CHECK-NEXT: ReturnTypes: [] 47; CHECK-NEXT: - Type: IMPORT 48; CHECK-NEXT: Imports: 49; CHECK-NEXT: - Module: env 50; CHECK-NEXT: Field: __linear_memory 51; CHECK-NEXT: Kind: MEMORY 52; CHECK-NEXT: Memory: 53; CHECK-NEXT: Initial: 0x0 54; CHECK-NEXT: - Module: env 55; CHECK-NEXT: Field: bar 56; CHECK-NEXT: Kind: FUNCTION 57; CHECK-NEXT: SigIndex: 1 58; CHECK-NEXT: - Type: FUNCTION 59; CHECK-NEXT: FunctionTypes: [ 0 ] 60; CHECK-NEXT: - Type: CODE 61; CHECK-NEXT: Relocations: 62; CHECK-NEXT: - Type: R_WASM_FUNCTION_INDEX_LEB 63; CHECK-NEXT: Index: 1 64; CHECK-NEXT: Offset: 0x4 65; CHECK-NEXT: Functions: 66; CHECK-NEXT: - Index: 1 67; CHECK-NEXT: Locals: [] 68; CHECK-NEXT: Body: 1080808080000B 69; CHECK-NEXT: - Type: CUSTOM 70; CHECK-NEXT: Name: linking 71; CHECK-NEXT: Version: 2 72; CHECK-NEXT: SymbolTable: 73; CHECK-NEXT: - Index: 0 74; CHECK-NEXT: Kind: FUNCTION 75; CHECK-NEXT: Name: foo 76; CHECK-NEXT: Flags: [ ] 77; CHECK-NEXT: Function: 1 78; CHECK-NEXT: - Index: 1 79; CHECK-NEXT: Kind: FUNCTION 80; CHECK-NEXT: Name: bar 81; CHECK-NEXT: Flags: [ UNDEFINED ] 82; CHECK-NEXT: Function: 0 83; CHECK-NEXT: ... 84