1b1994897Sopenharmony_ci# Copyright (c) 2021-2022 Huawei Device Co., Ltd. 2b1994897Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 3b1994897Sopenharmony_ci# you may not use this file except in compliance with the License. 4b1994897Sopenharmony_ci# You may obtain a copy of the License at 5b1994897Sopenharmony_ci# 6b1994897Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 7b1994897Sopenharmony_ci# 8b1994897Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 9b1994897Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 10b1994897Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11b1994897Sopenharmony_ci# See the License for the specific language governing permissions and 12b1994897Sopenharmony_ci# limitations under the License. 13b1994897Sopenharmony_ci 14b1994897Sopenharmony_ci# testing of call instructions with different arguments 15b1994897Sopenharmony_ci 16b1994897Sopenharmony_ci.record B {} 17b1994897Sopenharmony_ci 18b1994897Sopenharmony_ci.function u8 B.Bhandler_unspec(B a0) { 19b1994897Sopenharmony_ci return 20b1994897Sopenharmony_ci} 21b1994897Sopenharmony_ci 22b1994897Sopenharmony_ci.function u8 B.Bhandler_short(B a0, u1 a1) { 23b1994897Sopenharmony_ci return 24b1994897Sopenharmony_ci} 25b1994897Sopenharmony_ci 26b1994897Sopenharmony_ci.function u8 B.Bhandler_short2(B a0, u1[] a1, i64 a2) { 27b1994897Sopenharmony_ci return 28b1994897Sopenharmony_ci} 29b1994897Sopenharmony_ci 30b1994897Sopenharmony_ci.function u16 B.Bhandler_long(B a0, i8 a1, i16 a2, i32 a3) { 31b1994897Sopenharmony_ci return 32b1994897Sopenharmony_ci} 33b1994897Sopenharmony_ci 34b1994897Sopenharmony_ci.function u16 B.Bhandler_long2(B a0, i8 a1, i16 a2, i32 a3, i64 a4) { 35b1994897Sopenharmony_ci return 36b1994897Sopenharmony_ci} 37b1994897Sopenharmony_ci 38b1994897Sopenharmony_ci.function u16 B.Bhandler_range(B a0, i8 a1, i16 a2, i32 a3, i8 a4, i16 a5, i32 a6) { 39b1994897Sopenharmony_ci return 40b1994897Sopenharmony_ci} 41b1994897Sopenharmony_ci 42b1994897Sopenharmony_ci.function u16 long_function(i8 a0, i16 a1, i32 a2, i8 a3, i16 a4, i32 a5, i64 a6, f32 a7) { 43b1994897Sopenharmony_ci return 44b1994897Sopenharmony_ci} 45b1994897Sopenharmony_ci 46b1994897Sopenharmony_ci# ==================== 47b1994897Sopenharmony_ci 48b1994897Sopenharmony_ci.function u8 handler_unspec() { 49b1994897Sopenharmony_ci return 50b1994897Sopenharmony_ci} 51b1994897Sopenharmony_ci 52b1994897Sopenharmony_ci.function u8 handler_short(u1 a0) { 53b1994897Sopenharmony_ci return 54b1994897Sopenharmony_ci} 55b1994897Sopenharmony_ci 56b1994897Sopenharmony_ci.function u8 handler_short2(u1 a0, i64 a1) { 57b1994897Sopenharmony_ci return 58b1994897Sopenharmony_ci} 59b1994897Sopenharmony_ci 60b1994897Sopenharmony_ci.function u16 handler_long(i8 a0, i16 a1, i32 a2) { 61b1994897Sopenharmony_ci return 62b1994897Sopenharmony_ci} 63b1994897Sopenharmony_ci 64b1994897Sopenharmony_ci.function u16 handler_long2(i8 a0, i16 a1, i32 a2, f64 a3) { 65b1994897Sopenharmony_ci return 66b1994897Sopenharmony_ci} 67b1994897Sopenharmony_ci 68b1994897Sopenharmony_ci.function u16 handler_range(i8 a0, i16 a1, i32 a2, i8 a3, i16 a4, i32 a5) { 69b1994897Sopenharmony_ci return 70b1994897Sopenharmony_ci} 71b1994897Sopenharmony_ci 72b1994897Sopenharmony_ci# ==================== 73b1994897Sopenharmony_ci 74b1994897Sopenharmony_ci.function u8 handler_unspec_ext() <external> 75b1994897Sopenharmony_ci 76b1994897Sopenharmony_ci.function u8 handler_short_ext(u1 a0) <external> 77b1994897Sopenharmony_ci 78b1994897Sopenharmony_ci.function u8 handler_short2_ext(u1 a0, i64 a1) <external> 79b1994897Sopenharmony_ci 80b1994897Sopenharmony_ci.function u16 handler_long_ext(i8 a0, i16 a1, i32 a2) <external> 81b1994897Sopenharmony_ci 82b1994897Sopenharmony_ci.function u16 handler_long2_ext(i8 a0, i16 a1, i32 a2, f64 a3) <external> 83b1994897Sopenharmony_ci 84b1994897Sopenharmony_ci.function u16 handler_range_ext(i8 a0, i16 a1, i32 a2, i8 a3, i16 a4, i32 a5) <external> 85b1994897Sopenharmony_ci 86b1994897Sopenharmony_ci.function u1 g(u1 a0) { 87b1994897Sopenharmony_ci call.virt B.Bhandler_unspec, v4 88b1994897Sopenharmony_ci 89b1994897Sopenharmony_ci call.virt B.Bhandler_short, v4, v1 90b1994897Sopenharmony_ci 91b1994897Sopenharmony_ci call.virt B.Bhandler_short2, v4, v1, v2 92b1994897Sopenharmony_ci 93b1994897Sopenharmony_ci call.virt B.Bhandler_long, v4, v0, v1, v2 94b1994897Sopenharmony_ci 95b1994897Sopenharmony_ci call.virt.range B.Bhandler_range, v4 96b1994897Sopenharmony_ci 97b1994897Sopenharmony_ci # ==================== 98b1994897Sopenharmony_ci 99b1994897Sopenharmony_ci call handler_unspec 100b1994897Sopenharmony_ci 101b1994897Sopenharmony_ci call.short handler_short, v1 102b1994897Sopenharmony_ci 103b1994897Sopenharmony_ci call.short handler_short2, v1, v2 104b1994897Sopenharmony_ci 105b1994897Sopenharmony_ci call handler_long, v0, v1, v2 106b1994897Sopenharmony_ci 107b1994897Sopenharmony_ci call handler_long2, v0, v1, v2, v3 108b1994897Sopenharmony_ci 109b1994897Sopenharmony_ci call.range handler_range, v0 110b1994897Sopenharmony_ci 111b1994897Sopenharmony_ci # ==================== 112b1994897Sopenharmony_ci 113b1994897Sopenharmony_ci initobj B.Bhandler_unspec 114b1994897Sopenharmony_ci 115b1994897Sopenharmony_ci initobj.short B.Bhandler_short, v1 116b1994897Sopenharmony_ci 117b1994897Sopenharmony_ci initobj.short B.Bhandler_short2, v1, v2 118b1994897Sopenharmony_ci 119b1994897Sopenharmony_ci initobj B.Bhandler_long, v0, v1, v2 120b1994897Sopenharmony_ci 121b1994897Sopenharmony_ci initobj B.Bhandler_long2, v0, v1, v2, v3 122b1994897Sopenharmony_ci 123b1994897Sopenharmony_ci initobj.range B.Bhandler_range, v0 124b1994897Sopenharmony_ci 125b1994897Sopenharmony_ci # ==================== 126b1994897Sopenharmony_ci 127b1994897Sopenharmony_ci call handler_unspec_ext 128b1994897Sopenharmony_ci 129b1994897Sopenharmony_ci call.short handler_short_ext, v1 130b1994897Sopenharmony_ci 131b1994897Sopenharmony_ci call.short handler_short2_ext, v1, v2 132b1994897Sopenharmony_ci 133b1994897Sopenharmony_ci call handler_long_ext, v0, v1, v2 134b1994897Sopenharmony_ci 135b1994897Sopenharmony_ci call handler_long2_ext, v0, v1, v2, v3 136b1994897Sopenharmony_ci 137b1994897Sopenharmony_ci call.range handler_range_ext, v0 138b1994897Sopenharmony_ci 139b1994897Sopenharmony_ci calli.dyn.short 1, v0, v0, v0 140b1994897Sopenharmony_ci 141b1994897Sopenharmony_ci # ==================== 142b1994897Sopenharmony_ci 143b1994897Sopenharmony_ci call.acc.short handler_short, v0, 0 144b1994897Sopenharmony_ci 145b1994897Sopenharmony_ci call.acc.short handler_short2, a0, 1 146b1994897Sopenharmony_ci 147b1994897Sopenharmony_ci return 148b1994897Sopenharmony_ci} 149b1994897Sopenharmony_ci 150