mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
e8be0ee828
Reland of 31859f896. This change implements new DAG notes GLOBAL_GET/GLOBAL_SET, and lowering methods for load and stores of reference types from IR globals. Once the lowering creates the new nodes, tablegen pattern matches those and converts them to Wasm global.get/set. Reviewed By: tlively Differential Revision: https://reviews.llvm.org/D104797
20 lines
689 B
LLVM
20 lines
689 B
LLVM
; RUN: llc < %s --mtriple=wasm32-unknown-unknown -asm-verbose=false -mattr=+reference-types | FileCheck %s
|
|
|
|
%extern = type opaque
|
|
%externref = type %extern addrspace(10)* ;; addrspace 10 is nonintegral
|
|
|
|
@externref_global = local_unnamed_addr addrspace(1) global %externref undef
|
|
|
|
define %externref @return_externref_global() {
|
|
;; this generates a global.get of @externref_global
|
|
%ref = load %externref, %externref addrspace(1)* @externref_global
|
|
ret %externref %ref
|
|
}
|
|
|
|
; CHECK-LABEL: return_externref_global:
|
|
; CHECK-NEXT: functype return_externref_global () -> (externref)
|
|
; CHECK-NEXT: global.get externref_global
|
|
; CHECK-NEXT: end_function
|
|
|
|
; CHECK: .globl externref_global
|