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}