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.record panda.String <external>
15b1994897Sopenharmony_ci.record IO <external>
16b1994897Sopenharmony_ci.function void IO.printString(panda.String a0) <external>
17b1994897Sopenharmony_ci.function void IO.printI64(i64 a0) <external>
18b1994897Sopenharmony_ci
19b1994897Sopenharmony_ci# a0 - index in parameter list
20b1994897Sopenharmony_ci.function i64 get(i64 a0, i64 a1, i64 a2, i64 a3, i64 a4, i64 a5, i64 a6, i64 a7, i64 a8) {
21b1994897Sopenharmony_ci    lda.str "\n"
22b1994897Sopenharmony_ci    sta.obj v0
23b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
24b1994897Sopenharmony_ci    call.short IO.printI64, a0, a0
25b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
26b1994897Sopenharmony_ci    call.short IO.printI64, a1, a1
27b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
28b1994897Sopenharmony_ci    call.short IO.printI64, a2, a2
29b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
30b1994897Sopenharmony_ci    call.short IO.printI64, a3, a3
31b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
32b1994897Sopenharmony_ci    call.short IO.printI64, a4, a4
33b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
34b1994897Sopenharmony_ci    call.short IO.printI64, a5, a5
35b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
36b1994897Sopenharmony_ci    call.short IO.printI64, a6, a6
37b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
38b1994897Sopenharmony_ci    call.short IO.printI64, a7, a7
39b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
40b1994897Sopenharmony_ci    call.short IO.printI64, a8, a8
41b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
42b1994897Sopenharmony_ci
43b1994897Sopenharmony_ci    lda.64 a0
44b1994897Sopenharmony_ci    jeqz zeroth
45b1994897Sopenharmony_ci
46b1994897Sopenharmony_ci    subi 1
47b1994897Sopenharmony_ci    jeqz first
48b1994897Sopenharmony_ci
49b1994897Sopenharmony_ci    subi 1
50b1994897Sopenharmony_ci    jeqz second
51b1994897Sopenharmony_ci
52b1994897Sopenharmony_ci    subi 1
53b1994897Sopenharmony_ci    jeqz third
54b1994897Sopenharmony_ci
55b1994897Sopenharmony_ci    subi 1
56b1994897Sopenharmony_ci    jeqz fourth
57b1994897Sopenharmony_ci
58b1994897Sopenharmony_ci    subi 1
59b1994897Sopenharmony_ci    jeqz fifth
60b1994897Sopenharmony_ci
61b1994897Sopenharmony_ci    subi 1
62b1994897Sopenharmony_ci    jeqz sixth
63b1994897Sopenharmony_ci
64b1994897Sopenharmony_ci    #subi 1
65b1994897Sopenharmony_ci    #jeqz seventh
66b1994897Sopenharmony_ci    lda.64 a8
67b1994897Sopenharmony_ci    return.64
68b1994897Sopenharmony_ci
69b1994897Sopenharmony_cisixth:
70b1994897Sopenharmony_ci    lda.64 a7
71b1994897Sopenharmony_ci    return.64
72b1994897Sopenharmony_ci
73b1994897Sopenharmony_cififth:
74b1994897Sopenharmony_ci    lda.64 a6
75b1994897Sopenharmony_ci    return.64
76b1994897Sopenharmony_ci
77b1994897Sopenharmony_cifourth:
78b1994897Sopenharmony_ci    lda.64 a5
79b1994897Sopenharmony_ci    return.64
80b1994897Sopenharmony_ci
81b1994897Sopenharmony_cithird:
82b1994897Sopenharmony_ci    lda.64 a4
83b1994897Sopenharmony_ci    return.64
84b1994897Sopenharmony_ci
85b1994897Sopenharmony_cisecond:
86b1994897Sopenharmony_ci    lda.64 a3
87b1994897Sopenharmony_ci    return.64
88b1994897Sopenharmony_ci
89b1994897Sopenharmony_cifirst:
90b1994897Sopenharmony_ci    lda.64 a2
91b1994897Sopenharmony_ci    return.64
92b1994897Sopenharmony_ci
93b1994897Sopenharmony_cizeroth:
94b1994897Sopenharmony_ci    lda.64 a1
95b1994897Sopenharmony_ci    return.64
96b1994897Sopenharmony_ci}
97b1994897Sopenharmony_ci
98b1994897Sopenharmony_ci
99b1994897Sopenharmony_ci.function i64 main() {
100b1994897Sopenharmony_ci    movi.64 v0, 0
101b1994897Sopenharmony_ci
102b1994897Sopenharmony_ci    movi.64 v1, 1000001
103b1994897Sopenharmony_ci    movi.64 v2, 2000002
104b1994897Sopenharmony_ci    movi.64 v3, 3000003
105b1994897Sopenharmony_ci    movi.64 v4, 4000004
106b1994897Sopenharmony_ci
107b1994897Sopenharmony_ci
108b1994897Sopenharmony_ci    # 0x 3aaa aaaa aaaa aaa3
109b1994897Sopenharmony_ci    movi.64 v5, 4227378850225105571
110b1994897Sopenharmony_ci    # 0x 7333 3333 3333 3337
111b1994897Sopenharmony_ci    movi.64 v6, 8301034833169298231
112b1994897Sopenharmony_ci    # 0x 1fff ffff ffff fff1
113b1994897Sopenharmony_ci    movi.64 v7, 2305843009213693937
114b1994897Sopenharmony_ci
115b1994897Sopenharmony_ci    # 0x 1234 5678 9abc def0
116b1994897Sopenharmony_ci    movi.64 v8, 1311768467463790320
117b1994897Sopenharmony_ci
118b1994897Sopenharmony_ci    call.range get, v0
119b1994897Sopenharmony_ci    sub2.64 v1
120b1994897Sopenharmony_ci    jnez print_fail_1
121b1994897Sopenharmony_ci
122b1994897Sopenharmony_ci    movi.64 v0, 1
123b1994897Sopenharmony_ci    call.range get, v0
124b1994897Sopenharmony_ci    sub2.64 v2
125b1994897Sopenharmony_ci    jnez print_fail_2
126b1994897Sopenharmony_ci
127b1994897Sopenharmony_ci    movi.64 v0, 2
128b1994897Sopenharmony_ci    call.range get, v0
129b1994897Sopenharmony_ci    sub2.64 v3
130b1994897Sopenharmony_ci    jnez print_fail_3
131b1994897Sopenharmony_ci
132b1994897Sopenharmony_ci    movi.64 v0, 3
133b1994897Sopenharmony_ci    call.range get, v0
134b1994897Sopenharmony_ci    sub2.64 v4
135b1994897Sopenharmony_ci    jnez print_fail_4
136b1994897Sopenharmony_ci
137b1994897Sopenharmony_ci    movi.64 v0, 4
138b1994897Sopenharmony_ci    call.range get, v0
139b1994897Sopenharmony_ci    sub2.64 v5
140b1994897Sopenharmony_ci    jnez print_fail_5
141b1994897Sopenharmony_ci
142b1994897Sopenharmony_ci    movi.64 v0, 5
143b1994897Sopenharmony_ci    call.range get, v0
144b1994897Sopenharmony_ci    sub2.64 v6
145b1994897Sopenharmony_ci    jnez print_fail_6
146b1994897Sopenharmony_ci
147b1994897Sopenharmony_ci    movi.64 v0, 6
148b1994897Sopenharmony_ci    call.range get, v0
149b1994897Sopenharmony_ci    sub2.64 v7
150b1994897Sopenharmony_ci    jnez print_fail_7
151b1994897Sopenharmony_ci
152b1994897Sopenharmony_ci    return.64
153b1994897Sopenharmony_ci
154b1994897Sopenharmony_ciprint_fail_1:
155b1994897Sopenharmony_ci    sta.64 v1
156b1994897Sopenharmony_ci    lda.str "1-st paramer fail!"
157b1994897Sopenharmony_ci    sta.obj v0
158b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
159b1994897Sopenharmony_ci    lda.64 v1
160b1994897Sopenharmony_ci    return.64
161b1994897Sopenharmony_ci
162b1994897Sopenharmony_ciprint_fail_2:
163b1994897Sopenharmony_ci    sta.64 v1
164b1994897Sopenharmony_ci    lda.str "2-d paramer fail!"
165b1994897Sopenharmony_ci    sta.obj v0
166b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
167b1994897Sopenharmony_ci    lda.64 v1
168b1994897Sopenharmony_ci    return.64
169b1994897Sopenharmony_ci
170b1994897Sopenharmony_ciprint_fail_3:
171b1994897Sopenharmony_ci    sta.64 v1
172b1994897Sopenharmony_ci    lda.str "3-d paramer fail!"
173b1994897Sopenharmony_ci    sta.obj v0
174b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
175b1994897Sopenharmony_ci    lda.64 v1
176b1994897Sopenharmony_ci    return.64
177b1994897Sopenharmony_ci
178b1994897Sopenharmony_ciprint_fail_4:
179b1994897Sopenharmony_ci    sta.64 v1
180b1994897Sopenharmony_ci    lda.str "4-d paramer fail!"
181b1994897Sopenharmony_ci    sta.obj v0
182b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
183b1994897Sopenharmony_ci    lda.64 v1
184b1994897Sopenharmony_ci    return.64
185b1994897Sopenharmony_ci
186b1994897Sopenharmony_ciprint_fail_5:
187b1994897Sopenharmony_ci    sta.64 v1
188b1994897Sopenharmony_ci    lda.str "5-d paramer fail!"
189b1994897Sopenharmony_ci    sta.obj v0
190b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
191b1994897Sopenharmony_ci    lda.64 v1
192b1994897Sopenharmony_ci    return.64
193b1994897Sopenharmony_ci
194b1994897Sopenharmony_ciprint_fail_6:
195b1994897Sopenharmony_ci    sta.64 v1
196b1994897Sopenharmony_ci    lda.str "6-d paramer fail!"
197b1994897Sopenharmony_ci    sta.obj v0
198b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
199b1994897Sopenharmony_ci    lda.64 v1
200b1994897Sopenharmony_ci    return.64
201b1994897Sopenharmony_ci
202b1994897Sopenharmony_ciprint_fail_7:
203b1994897Sopenharmony_ci    sta.64 v1
204b1994897Sopenharmony_ci    lda.str "7-d paramer fail!"
205b1994897Sopenharmony_ci    sta.obj v0
206b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
207b1994897Sopenharmony_ci    lda.64 v1
208b1994897Sopenharmony_ci    return.64
209b1994897Sopenharmony_ci
210b1994897Sopenharmony_ciprint_fail_8:
211b1994897Sopenharmony_ci    sta.64 v1
212b1994897Sopenharmony_ci    lda.str "8-d paramer fail!"
213b1994897Sopenharmony_ci    sta.obj v0
214b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
215b1994897Sopenharmony_ci    lda.64 v1
216b1994897Sopenharmony_ci    return.64
217b1994897Sopenharmony_ci
218b1994897Sopenharmony_ciprint_fail_9:
219b1994897Sopenharmony_ci    sta.64 v1
220b1994897Sopenharmony_ci    lda.str "9-d paramer fail!"
221b1994897Sopenharmony_ci    sta.obj v0
222b1994897Sopenharmony_ci    call.short IO.printString, v0, v0
223b1994897Sopenharmony_ci    lda.64 v1
224b1994897Sopenharmony_ci    return.64
225b1994897Sopenharmony_ci}
226