brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · c4eb425 Raw
46 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s --mtriple=wasm32-unknown-unknown -mattr=+reference-types | FileCheck %s3 4%funcref = type ptr addrspace(20) ;; addrspace 20 is nonintegral5 6; CHECK: .tabletype __funcref_call_table, funcref, 17 8define void @call_funcref(%funcref %ref) {9; CHECK-LABEL: call_funcref:10; CHECK:         .functype call_funcref (funcref) -> ()11; CHECK-NEXT:  # %bb.0:12; CHECK-NEXT:    i32.const 013; CHECK-NEXT:    local.get 014; CHECK-NEXT:    table.set __funcref_call_table15; CHECK-NEXT:    i32.const 016; CHECK-NEXT:    call_indirect __funcref_call_table, () -> ()17; CHECK-NEXT:    i32.const 018; CHECK-NEXT:    ref.null_func19; CHECK-NEXT:    table.set __funcref_call_table20; CHECK-NEXT:    # fallthrough-return21  call addrspace(20) void %ref()22  ret void23}24 25define float @call_funcref_with_args(%funcref %ref) {26; CHECK-LABEL: call_funcref_with_args:27; CHECK:         .functype call_funcref_with_args (funcref) -> (f32)28; CHECK-NEXT:    .local f3229; CHECK-NEXT:  # %bb.0:30; CHECK-NEXT:    i32.const 031; CHECK-NEXT:    local.get 032; CHECK-NEXT:    table.set __funcref_call_table33; CHECK-NEXT:    f64.const 0x1p034; CHECK-NEXT:    i32.const 235; CHECK-NEXT:    i32.const 036; CHECK-NEXT:    call_indirect __funcref_call_table, (f64, i32) -> (f32)37; CHECK-NEXT:    local.set 138; CHECK-NEXT:    i32.const 039; CHECK-NEXT:    ref.null_func40; CHECK-NEXT:    table.set __funcref_call_table41; CHECK-NEXT:    local.get 142; CHECK-NEXT:    # fallthrough-return43  %ret = call addrspace(20) float %ref(double 1.0, i32 2)44  ret float %ret45}46