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.function i32 factorial (i32 a0) <> { #Calculation of factorial from a value in register a0 15b1994897Sopenharmony_ci ldai.64 1 16b1994897Sopenharmony_ci sta.64 v8 17b1994897Sopenharmony_ciwhile_1: 18b1994897Sopenharmony_ci lda.64 a0 19b1994897Sopenharmony_ci movi.64 v0, 1 20b1994897Sopenharmony_ci jle v0, endwhile_3 21b1994897Sopenharmony_cibody_2: 22b1994897Sopenharmony_ci mul v8, a0 23b1994897Sopenharmony_ci sta.64 v8 24b1994897Sopenharmony_ci lda.64 a0 25b1994897Sopenharmony_ci subi 1 26b1994897Sopenharmony_ci sta.64 a0 27b1994897Sopenharmony_ci jmp while_1 28b1994897Sopenharmony_ciendwhile_3: 29b1994897Sopenharmony_ci lda.64 v8 30b1994897Sopenharmony_ci return 31b1994897Sopenharmony_ci} 32b1994897Sopenharmony_ci 33b1994897Sopenharmony_ci.function i32 entry () <> { 34b1994897Sopenharmony_ci movi.64 v0, 7 35b1994897Sopenharmony_ci call.short factorial, v0 36b1994897Sopenharmony_ci return 37b1994897Sopenharmony_ci} 38