# Copyright (c) 2021-2022 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. .record panda.String .record IO .function void IO.printString(panda.String a0) .function void IO.printI64(i64 a0) # a0 - index in parameter list .function i64 get(i64 a0, i64 a1, i64 a2, i64 a3, i64 a4, i64 a5, i64 a6, i64 a7, i64 a8) { lda.str "\n" sta.obj v0 call.short IO.printString, v0, v0 call.short IO.printI64, a0, a0 call.short IO.printString, v0, v0 call.short IO.printI64, a1, a1 call.short IO.printString, v0, v0 call.short IO.printI64, a2, a2 call.short IO.printString, v0, v0 call.short IO.printI64, a3, a3 call.short IO.printString, v0, v0 call.short IO.printI64, a4, a4 call.short IO.printString, v0, v0 call.short IO.printI64, a5, a5 call.short IO.printString, v0, v0 call.short IO.printI64, a6, a6 call.short IO.printString, v0, v0 call.short IO.printI64, a7, a7 call.short IO.printString, v0, v0 call.short IO.printI64, a8, a8 call.short IO.printString, v0, v0 lda.64 a0 jeqz zeroth subi 1 jeqz first subi 1 jeqz second subi 1 jeqz third subi 1 jeqz fourth subi 1 jeqz fifth subi 1 jeqz sixth #subi 1 #jeqz seventh lda.64 a8 return.64 sixth: lda.64 a7 return.64 fifth: lda.64 a6 return.64 fourth: lda.64 a5 return.64 third: lda.64 a4 return.64 second: lda.64 a3 return.64 first: lda.64 a2 return.64 zeroth: lda.64 a1 return.64 } .function i64 main() { movi.64 v0, 0 movi.64 v1, 1000001 movi.64 v2, 2000002 movi.64 v3, 3000003 movi.64 v4, 4000004 # 0x 3aaa aaaa aaaa aaa3 movi.64 v5, 4227378850225105571 # 0x 7333 3333 3333 3337 movi.64 v6, 8301034833169298231 # 0x 1fff ffff ffff fff1 movi.64 v7, 2305843009213693937 # 0x 1234 5678 9abc def0 movi.64 v8, 1311768467463790320 call.range get, v0 sub2.64 v1 jnez print_fail_1 movi.64 v0, 1 call.range get, v0 sub2.64 v2 jnez print_fail_2 movi.64 v0, 2 call.range get, v0 sub2.64 v3 jnez print_fail_3 movi.64 v0, 3 call.range get, v0 sub2.64 v4 jnez print_fail_4 movi.64 v0, 4 call.range get, v0 sub2.64 v5 jnez print_fail_5 movi.64 v0, 5 call.range get, v0 sub2.64 v6 jnez print_fail_6 movi.64 v0, 6 call.range get, v0 sub2.64 v7 jnez print_fail_7 return.64 print_fail_1: sta.64 v1 lda.str "1-st paramer fail!" sta.obj v0 call.short IO.printString, v0, v0 lda.64 v1 return.64 print_fail_2: sta.64 v1 lda.str "2-d paramer fail!" sta.obj v0 call.short IO.printString, v0, v0 lda.64 v1 return.64 print_fail_3: sta.64 v1 lda.str "3-d paramer fail!" sta.obj v0 call.short IO.printString, v0, v0 lda.64 v1 return.64 print_fail_4: sta.64 v1 lda.str "4-d paramer fail!" sta.obj v0 call.short IO.printString, v0, v0 lda.64 v1 return.64 print_fail_5: sta.64 v1 lda.str "5-d paramer fail!" sta.obj v0 call.short IO.printString, v0, v0 lda.64 v1 return.64 print_fail_6: sta.64 v1 lda.str "6-d paramer fail!" sta.obj v0 call.short IO.printString, v0, v0 lda.64 v1 return.64 print_fail_7: sta.64 v1 lda.str "7-d paramer fail!" sta.obj v0 call.short IO.printString, v0, v0 lda.64 v1 return.64 print_fail_8: sta.64 v1 lda.str "8-d paramer fail!" sta.obj v0 call.short IO.printString, v0, v0 lda.64 v1 return.64 print_fail_9: sta.64 v1 lda.str "9-d paramer fail!" sta.obj v0 call.short IO.printString, v0, v0 lda.64 v1 return.64 }