1# Copyright (c) 2021-2022 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14#! CHECKER      Check method parameters 
15#! RUN          force_jit: true, options: "--compiler-inlining=false", entry: "_GLOBAL::main"
16#! EVENT        /Compilation,.*main.*/
17#! EVENT        /Compilation,.*foo_f32.*/
18#! EVENT        /Compilation,.*foo_f64.*/
19#! EVENT        /Compilation,.*foo_u1.*/
20#! EVENT        /Compilation,.*foo_u8.*/
21#! EVENT        /Compilation,.*foo_u16.*/
22#! EVENT        /Compilation,.*foo_u32.*/
23#! EVENT        /Compilation,.*foo_u64.*/
24
25.function f32 foo_f32(f32 a0) {
26    fmovi v0, 1.0
27    lda a0
28    fcmpg v0
29    jnez exit_failure
30    fldai 1.0
31    return
32exit_failure:
33    fldai 99.0
34    return
35}
36
37.function f64 foo_f64(f64 a0) {
38    fmovi.64 v0, 2.0
39    lda.64 a0
40    fcmpg.64 v0
41    jnez exit_failure
42    fldai.64 2.0
43    return.64
44exit_failure:
45    fldai.64 98.0
46    return.64
47}
48
49.function u1 foo_u1(u1 a0) {
50    ldai 0
51    jne a0, exit_failure
52    ldai 0
53    return
54exit_failure:
55    ldai 1
56    return
57}
58
59.function u8 foo_u8(u8 a0) {
60    ldai 0xff
61    jne a0, exit_failure
62    ldai 0xff
63    return
64exit_failure:
65    ldai 0xf
66    return
67}
68
69.function u16 foo_u16(u16 a0) {
70    ldai 0xffff
71    jne a0, exit_failure
72    ldai 0xffff
73    return
74exit_failure:
75    ldai 0xff
76    return
77}
78
79.function u32 foo_u32(u32 a0) {
80    ldai 0xffffff
81    jne a0, exit_failure
82    ldai 0xffffff
83    return
84exit_failure:
85    ldai 0xffffff
86    return
87}
88
89.function u64 foo_u64(u64 a0) {
90    ldai.64 0xffffffffff
91    ucmp.64 a0
92    jnez exit_failure
93    ldai 0xffffffffff
94    return.64
95exit_failure:
96    ldai 0xffffffff
97    return.64
98}
99
100.function u1 main() {
101    fmovi v1, 1.0
102    call.short foo_f32, v1, v1
103    fcmpg v1
104    jnez exit_failure_1
105    fmovi.64 v1, 2.0
106    call.short foo_f64, v1, v1
107    fcmpg.64 v1
108    jnez exit_failure_2
109    movi v1, 0
110    call.short foo_u1, v1, v1
111    jne v1, exit_failure_3
112    movi v1, 0xff
113    call.short foo_u8, v1, v1
114    jne v1, exit_failure_4
115    movi v1, 0xffff
116    call.short foo_u16, v1, v1
117    jne v1, exit_failure_5
118    movi v1, 0xffffff
119    call.short foo_u32, v1, v1
120    jne v1, exit_failure_6
121    movi.64 v1, 0xffffffffff
122    call.short foo_u64, v1, v1
123    jne v1, exit_failure_7
124    ldai 0
125    return
126exit_failure_1:
127    ldai 1
128    return
129exit_failure_2:
130    ldai 2
131    return
132exit_failure_3:
133    ldai 3
134    return
135exit_failure_4:
136    ldai 4
137    return
138exit_failure_5:
139    ldai 5
140    return
141exit_failure_6:
142    ldai 6
143    return
144exit_failure_7:
145    ldai 7
146    return
147}