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#! CHECKER Check method parameters 15b1994897Sopenharmony_ci#! RUN force_jit: true, options: "--compiler-inlining=false", entry: "_GLOBAL::main" 16b1994897Sopenharmony_ci#! EVENT /Compilation,.*main.*/ 17b1994897Sopenharmony_ci#! EVENT /Compilation,.*foo_f32.*/ 18b1994897Sopenharmony_ci#! EVENT /Compilation,.*foo_f64.*/ 19b1994897Sopenharmony_ci#! EVENT /Compilation,.*foo_u1.*/ 20b1994897Sopenharmony_ci#! EVENT /Compilation,.*foo_u8.*/ 21b1994897Sopenharmony_ci#! EVENT /Compilation,.*foo_u16.*/ 22b1994897Sopenharmony_ci#! EVENT /Compilation,.*foo_u32.*/ 23b1994897Sopenharmony_ci#! EVENT /Compilation,.*foo_u64.*/ 24b1994897Sopenharmony_ci 25b1994897Sopenharmony_ci.function f32 foo_f32(f32 a0) { 26b1994897Sopenharmony_ci fmovi v0, 1.0 27b1994897Sopenharmony_ci lda a0 28b1994897Sopenharmony_ci fcmpg v0 29b1994897Sopenharmony_ci jnez exit_failure 30b1994897Sopenharmony_ci fldai 1.0 31b1994897Sopenharmony_ci return 32b1994897Sopenharmony_ciexit_failure: 33b1994897Sopenharmony_ci fldai 99.0 34b1994897Sopenharmony_ci return 35b1994897Sopenharmony_ci} 36b1994897Sopenharmony_ci 37b1994897Sopenharmony_ci.function f64 foo_f64(f64 a0) { 38b1994897Sopenharmony_ci fmovi.64 v0, 2.0 39b1994897Sopenharmony_ci lda.64 a0 40b1994897Sopenharmony_ci fcmpg.64 v0 41b1994897Sopenharmony_ci jnez exit_failure 42b1994897Sopenharmony_ci fldai.64 2.0 43b1994897Sopenharmony_ci return.64 44b1994897Sopenharmony_ciexit_failure: 45b1994897Sopenharmony_ci fldai.64 98.0 46b1994897Sopenharmony_ci return.64 47b1994897Sopenharmony_ci} 48b1994897Sopenharmony_ci 49b1994897Sopenharmony_ci.function u1 foo_u1(u1 a0) { 50b1994897Sopenharmony_ci ldai 0 51b1994897Sopenharmony_ci jne a0, exit_failure 52b1994897Sopenharmony_ci ldai 0 53b1994897Sopenharmony_ci return 54b1994897Sopenharmony_ciexit_failure: 55b1994897Sopenharmony_ci ldai 1 56b1994897Sopenharmony_ci return 57b1994897Sopenharmony_ci} 58b1994897Sopenharmony_ci 59b1994897Sopenharmony_ci.function u8 foo_u8(u8 a0) { 60b1994897Sopenharmony_ci ldai 0xff 61b1994897Sopenharmony_ci jne a0, exit_failure 62b1994897Sopenharmony_ci ldai 0xff 63b1994897Sopenharmony_ci return 64b1994897Sopenharmony_ciexit_failure: 65b1994897Sopenharmony_ci ldai 0xf 66b1994897Sopenharmony_ci return 67b1994897Sopenharmony_ci} 68b1994897Sopenharmony_ci 69b1994897Sopenharmony_ci.function u16 foo_u16(u16 a0) { 70b1994897Sopenharmony_ci ldai 0xffff 71b1994897Sopenharmony_ci jne a0, exit_failure 72b1994897Sopenharmony_ci ldai 0xffff 73b1994897Sopenharmony_ci return 74b1994897Sopenharmony_ciexit_failure: 75b1994897Sopenharmony_ci ldai 0xff 76b1994897Sopenharmony_ci return 77b1994897Sopenharmony_ci} 78b1994897Sopenharmony_ci 79b1994897Sopenharmony_ci.function u32 foo_u32(u32 a0) { 80b1994897Sopenharmony_ci ldai 0xffffff 81b1994897Sopenharmony_ci jne a0, exit_failure 82b1994897Sopenharmony_ci ldai 0xffffff 83b1994897Sopenharmony_ci return 84b1994897Sopenharmony_ciexit_failure: 85b1994897Sopenharmony_ci ldai 0xffffff 86b1994897Sopenharmony_ci return 87b1994897Sopenharmony_ci} 88b1994897Sopenharmony_ci 89b1994897Sopenharmony_ci.function u64 foo_u64(u64 a0) { 90b1994897Sopenharmony_ci ldai.64 0xffffffffff 91b1994897Sopenharmony_ci ucmp.64 a0 92b1994897Sopenharmony_ci jnez exit_failure 93b1994897Sopenharmony_ci ldai 0xffffffffff 94b1994897Sopenharmony_ci return.64 95b1994897Sopenharmony_ciexit_failure: 96b1994897Sopenharmony_ci ldai 0xffffffff 97b1994897Sopenharmony_ci return.64 98b1994897Sopenharmony_ci} 99b1994897Sopenharmony_ci 100b1994897Sopenharmony_ci.function u1 main() { 101b1994897Sopenharmony_ci fmovi v1, 1.0 102b1994897Sopenharmony_ci call.short foo_f32, v1, v1 103b1994897Sopenharmony_ci fcmpg v1 104b1994897Sopenharmony_ci jnez exit_failure_1 105b1994897Sopenharmony_ci fmovi.64 v1, 2.0 106b1994897Sopenharmony_ci call.short foo_f64, v1, v1 107b1994897Sopenharmony_ci fcmpg.64 v1 108b1994897Sopenharmony_ci jnez exit_failure_2 109b1994897Sopenharmony_ci movi v1, 0 110b1994897Sopenharmony_ci call.short foo_u1, v1, v1 111b1994897Sopenharmony_ci jne v1, exit_failure_3 112b1994897Sopenharmony_ci movi v1, 0xff 113b1994897Sopenharmony_ci call.short foo_u8, v1, v1 114b1994897Sopenharmony_ci jne v1, exit_failure_4 115b1994897Sopenharmony_ci movi v1, 0xffff 116b1994897Sopenharmony_ci call.short foo_u16, v1, v1 117b1994897Sopenharmony_ci jne v1, exit_failure_5 118b1994897Sopenharmony_ci movi v1, 0xffffff 119b1994897Sopenharmony_ci call.short foo_u32, v1, v1 120b1994897Sopenharmony_ci jne v1, exit_failure_6 121b1994897Sopenharmony_ci movi.64 v1, 0xffffffffff 122b1994897Sopenharmony_ci call.short foo_u64, v1, v1 123b1994897Sopenharmony_ci jne v1, exit_failure_7 124b1994897Sopenharmony_ci ldai 0 125b1994897Sopenharmony_ci return 126b1994897Sopenharmony_ciexit_failure_1: 127b1994897Sopenharmony_ci ldai 1 128b1994897Sopenharmony_ci return 129b1994897Sopenharmony_ciexit_failure_2: 130b1994897Sopenharmony_ci ldai 2 131b1994897Sopenharmony_ci return 132b1994897Sopenharmony_ciexit_failure_3: 133b1994897Sopenharmony_ci ldai 3 134b1994897Sopenharmony_ci return 135b1994897Sopenharmony_ciexit_failure_4: 136b1994897Sopenharmony_ci ldai 4 137b1994897Sopenharmony_ci return 138b1994897Sopenharmony_ciexit_failure_5: 139b1994897Sopenharmony_ci ldai 5 140b1994897Sopenharmony_ci return 141b1994897Sopenharmony_ciexit_failure_6: 142b1994897Sopenharmony_ci ldai 6 143b1994897Sopenharmony_ci return 144b1994897Sopenharmony_ciexit_failure_7: 145b1994897Sopenharmony_ci ldai 7 146b1994897Sopenharmony_ci return 147b1994897Sopenharmony_ci}