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#assert that operations with array of f64 works fine
15#f64[] array = [0, 1, 2, 3, 4, 5, 6];
16#for(i=6; i>=0; i--) assert_eq(i, array[i]);
17
18.array array_f64 f64 7 {0 1 2 3 4 5 6}
19
20.function i32 main(){
21    lda.const v0, array_f64
22    movi v1, 6
23    ldai 6
24loop:
25    jltz loop_exit
26    lda v1
27    i32tof64
28    sta.64 v2
29    lda v1
30    fldarr.64 v0
31    fsub2.64 v2
32    sta.64 v2
33    call.short abs, v2, v2
34    sta.64 v2
35    fldai.64 1e-13
36    fcmpl.64 v2
37    jlez exit_failure
38    inci v1, -1
39    lda v1
40    jmp loop
41loop_exit:
42    ldai 0
43    return
44exit_failure:
45    ldai 1
46    return
47}
48
49.function f64 abs(f64 a0){
50    fldai.64 0.0
51    fcmpl.64 a0
52    jlez label
53    lda.64 a0
54    fneg.64
55    return.64
56label:
57    lda.64 a0
58    return.64
59}