# RUN: llvm-mc -triple=wasm32-unknown-unknown < %s | FileCheck %s # RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj < %s | obj2yaml | FileCheck -check-prefix=BIN %s # Tests creating an accessing actual wasm globals .globl read_global .globl write_global .globaltype foo_global, i32 .globaltype global2, i64, immutable .globaltype global3, f32 .globaltype global4, f64 read_global: .functype read_global () -> (i32) global.get foo_global end_function write_global: .functype write_global (i32, i64, f32, f64) -> () local.get 0 global.set foo_global local.get 1 global.set global2 local.get 2 global.set global3 local.get 3 global.set global4 end_function foo_global: global2: global3: global4: # CHECK: .globl read_global # CNEXT: .globl write_global # CHECK: .globaltype foo_global, i32 # CHECK: foo_global: # BIN: - Type: GLOBAL # BIN-NEXT: Globals: # BIN-NEXT: - Index: 0 # BIN-NEXT: Type: I32 # BIN-NEXT: Mutable: true # BIN-NEXT: InitExpr: # BIN-NEXT: Opcode: I32_CONST # BIN-NEXT: Value: 0 # BIN-NEXT: - Index: 1 # BIN-NEXT: Type: I64 # BIN-NEXT: Mutable: false # BIN-NEXT: InitExpr: # BIN-NEXT: Opcode: I64_CONST # BIN-NEXT: Value: 0 # BIN: - Type: CUSTOM # BIN-NEXT: Name: linking # BIN-NEXT: Version: 2 # BIN-NEXT: SymbolTable: # BIN-NEXT: - Index: 0 # BIN-NEXT: Kind: FUNCTION # BIN-NEXT: Name: read_global # BIN-NEXT: Flags: [ ] # BIN-NEXT: Function: 0 # BIN-NEXT: - Index: 1 # BIN-NEXT: Kind: FUNCTION # BIN-NEXT: Name: write_global # BIN-NEXT: Flags: [ ] # BIN-NEXT: Function: 1 # BIN-NEXT: - Index: 2 # BIN-NEXT: Kind: GLOBAL # BIN-NEXT: Name: foo_global # BIN-NEXT: Flags: [ BINDING_LOCAL ] # BIN-NEXT: Global: 0 # BIN-NEXT: - Index: 3 # BIN-NEXT: Kind: GLOBAL # BIN-NEXT: Name: global2 # BIN-NEXT: Flags: [ BINDING_LOCAL ] # BIN-NEXT: Global: 1 # BIN-NEXT: - Index: 4 # BIN-NEXT: Kind: GLOBAL # BIN-NEXT: Name: global3 # BIN-NEXT: Flags: [ BINDING_LOCAL ] # BIN-NEXT: Global: 2 # BIN-NEXT: - Index: 5 # BIN-NEXT: Kind: GLOBAL # BIN-NEXT: Name: global4 # BIN-NEXT: Flags: [ BINDING_LOCAL ] # BIN-NEXT: Global: 3