Skip to content

Commit

Permalink
[WebAssembly] Covert llvm/test/MC/WebAssembly/reloc-code.ll to asm. NFC
Browse files Browse the repository at this point in the history
Also increase coverage of call_indirect via explict function table
(enabled when reference types is enabled) in
llvm/test/CodeGen/WebAssembly/call-indirect.ll (I believe this
was an oversight that it was not added in https://reviews.llvm.org/D90948)

Differential Revision: https://reviews.llvm.org/D120521
  • Loading branch information
sbc100 committed Feb 25, 2022
1 parent 4d4cb17 commit db7b1af
Show file tree
Hide file tree
Showing 3 changed files with 133 additions and 112 deletions.
6 changes: 4 additions & 2 deletions llvm/test/CodeGen/WebAssembly/call-indirect.ll
@@ -1,4 +1,5 @@
; RUN: llc < %s -asm-verbose=false -O2 | FileCheck --check-prefix=CHECK %s
; RUN: llc < %s -asm-verbose=false -O2 | FileCheck --check-prefixes=CHECK,NOREF %s
; RUN: llc < %s -asm-verbose=false -mattr=+reference-types -O2 | FileCheck --check-prefixes=CHECK,REF %s
; RUN: llc < %s -asm-verbose=false -O2 --filetype=obj | obj2yaml | FileCheck --check-prefix=OBJ %s

; Test that compilation units with call_indirect but without any
Expand All @@ -9,7 +10,8 @@ target triple = "wasm32-unknown-unknown"
; CHECK-LABEL: call_indirect_void:
; CHECK-NEXT: .functype call_indirect_void (i32) -> ()
; CHECK-NEXT: local.get 0
; CHECK-NEXT: call_indirect () -> ()
; REF: call_indirect __indirect_function_table, () -> ()
; NOREF: call_indirect () -> ()
; CHECK-NEXT: end_function
define void @call_indirect_void(void ()* %callee) {
call void %callee()
Expand Down
110 changes: 0 additions & 110 deletions llvm/test/MC/WebAssembly/reloc-code.ll

This file was deleted.

129 changes: 129 additions & 0 deletions llvm/test/MC/WebAssembly/reloc-code.s
@@ -0,0 +1,129 @@
# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj %s -o - | llvm-readobj -r --expand-relocs - | FileCheck %s
# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+reference-types -filetype=obj %s -o - | llvm-readobj -r --expand-relocs - | FileCheck --check-prefix=REF %s

# External functions
.functype c () -> (i32)
.functype d () -> (i32)

.globl f1
.globl a
.globl b

f1:
.functype f1 () -> (i32)

# Call functions at `a` and `b` indirectly.
i32.const 0
i32.load a
call_indirect () -> (i64)
drop

i32.const 0
i32.load b
call_indirect () -> (i32)
drop

# Call functions `c` and `d` directly
call c
drop
call d
end_function

# Pointers to functions of two different types
.section .data.a,"",@
.p2align 3
a:
.int32 5
.size a, 4

.section .data.b,"",@
.p2align 3
b:
.int32 7
.size b, 4

# CHECK: Format: WASM
# CHECK: Relocations [
# CHECK-NEXT: Section (5) CODE {
# CHECK-NEXT: Relocation {
# CHECK-NEXT: Type: R_WASM_MEMORY_ADDR_LEB (3)
# CHECK-NEXT: Offset: 0x7
# CHECK-NEXT: Symbol: a
# CHECK-NEXT: Addend: 0
# CHECK-NEXT: }
# CHECK-NEXT: Relocation {
# CHECK-NEXT: Type: R_WASM_TYPE_INDEX_LEB (6)
# CHECK-NEXT: Offset: 0xD
# CHECK-NEXT: Index: 0x1
# CHECK-NEXT: }
# CHECK-NEXT: Relocation {
# CHECK-NEXT: Type: R_WASM_MEMORY_ADDR_LEB (3)
# CHECK-NEXT: Offset: 0x18
# CHECK-NEXT: Symbol: b
# CHECK-NEXT: Addend: 0
# CHECK-NEXT: }
# CHECK-NEXT: Relocation {
# CHECK-NEXT: Type: R_WASM_TYPE_INDEX_LEB (6)
# CHECK-NEXT: Offset: 0x1E
# CHECK-NEXT: Index: 0x0
# CHECK-NEXT: }
# CHECK-NEXT: Relocation {
# CHECK-NEXT: Type: R_WASM_FUNCTION_INDEX_LEB (0)
# CHECK-NEXT: Offset: 0x26
# CHECK-NEXT: Symbol: c
# CHECK-NEXT: }
# CHECK-NEXT: Relocation {
# CHECK-NEXT: Type: R_WASM_FUNCTION_INDEX_LEB (0)
# CHECK-NEXT: Offset: 0x2D
# CHECK-NEXT: Symbol: d
# CHECK-NEXT: }
# CHECK-NEXT: }
# CHECK-NEXT: ]

# REF: Format: WASM
# REF: Relocations [
# REF-NEXT: Section (5) CODE {
# REF-NEXT: Relocation {
# REF-NEXT: Type: R_WASM_MEMORY_ADDR_LEB (3)
# REF-NEXT: Offset: 0x7
# REF-NEXT: Symbol: a
# REF-NEXT: Addend: 0
# REF-NEXT: }
# REF-NEXT: Relocation {
# REF-NEXT: Type: R_WASM_TYPE_INDEX_LEB (6)
# REF-NEXT: Offset: 0xD
# REF-NEXT: Index: 0x1
# REF-NEXT: }
# REF-NEXT: Relocation {
# REF-NEXT: Type: R_WASM_TABLE_NUMBER_LEB (20)
# REF-NEXT: Offset: 0x12
# REF-NEXT: Symbol: __indirect_function_table
# REF-NEXT: }
# REF-NEXT: Relocation {
# REF-NEXT: Type: R_WASM_MEMORY_ADDR_LEB (3)
# REF-NEXT: Offset: 0x1C
# REF-NEXT: Symbol: b
# REF-NEXT: Addend: 0
# REF-NEXT: }
# REF-NEXT: Relocation {
# REF-NEXT: Type: R_WASM_TYPE_INDEX_LEB (6)
# REF-NEXT: Offset: 0x22
# REF-NEXT: Index: 0x0
# REF-NEXT: }
# REF-NEXT: Relocation {
# REF-NEXT: Type: R_WASM_TABLE_NUMBER_LEB (20)
# REF-NEXT: Offset: 0x27
# REF-NEXT: Symbol: __indirect_function_table
# REF-NEXT: }
# REF-NEXT: Relocation {
# REF-NEXT: Type: R_WASM_FUNCTION_INDEX_LEB (0)
# REF-NEXT: Offset: 0x2E
# REF-NEXT: Symbol: c
# REF-NEXT: }
# REF-NEXT: Relocation {
# REF-NEXT: Type: R_WASM_FUNCTION_INDEX_LEB (0)
# REF-NEXT: Offset: 0x35
# REF-NEXT: Symbol: d
# REF-NEXT: }
# REF-NEXT: }
# REF-NEXT: ]

0 comments on commit db7b1af

Please sign in to comment.