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