; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc < %s --mtriple=wasm32-unknown-unknown -mattr=+reference-types | FileCheck %s

; The zero value of a WebAssembly reference type is the null reference, so a
; zeroinitializer (or null) reference constant must lower to ref.null rather
; than crash instruction selection.

%externref = type target("wasm.externref")
%funcref = type target("wasm.funcref")

declare void @take_externref(%externref)
declare i32 @llvm.wasm.ref.is_null.extern(%externref)

define %externref @ret_zero_externref() {
; CHECK-LABEL: ret_zero_externref:
; CHECK:         .functype ret_zero_externref () -> (externref)
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    ref.null_extern
; CHECK-NEXT:    # fallthrough-return
  ret %externref zeroinitializer
}

define %funcref @ret_zero_funcref() {
; CHECK-LABEL: ret_zero_funcref:
; CHECK:         .functype ret_zero_funcref () -> (funcref)
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    ref.null_func
; CHECK-NEXT:    # fallthrough-return
  ret %funcref zeroinitializer
}

define void @pass_zero_externref() {
; CHECK-LABEL: pass_zero_externref:
; CHECK:         .functype pass_zero_externref () -> ()
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    ref.null_extern
; CHECK-NEXT:    call take_externref
; CHECK-NEXT:    # fallthrough-return
  call void @take_externref(%externref zeroinitializer)
  ret void
}

define %externref @select_zero_externref(i1 %c, %externref %x) {
; CHECK-LABEL: select_zero_externref:
; CHECK:         .functype select_zero_externref (i32, externref) -> (externref)
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    ref.null_extern
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    i32.const 1
; CHECK-NEXT:    i32.and
; CHECK-NEXT:    externref.select
; CHECK-NEXT:    # fallthrough-return
  %r = select i1 %c, %externref %x, %externref zeroinitializer
  ret %externref %r
}

define i32 @is_null_zero_externref() {
; CHECK-LABEL: is_null_zero_externref:
; CHECK:         .functype is_null_zero_externref () -> (i32)
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    ref.null_extern
; CHECK-NEXT:    ref.is_null
; CHECK-NEXT:    # fallthrough-return
  %r = call i32 @llvm.wasm.ref.is_null.extern(%externref zeroinitializer)
  ret i32 %r
}
