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