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