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# - (a * b) 15b1994897Sopenharmony_ci.function i32 mneg_i32_0(i32 a0, i32 a1) { 16b1994897Sopenharmony_ci mul a0, a1 17b1994897Sopenharmony_ci neg 18b1994897Sopenharmony_ci return 19b1994897Sopenharmony_ci} 20b1994897Sopenharmony_ci 21b1994897Sopenharmony_ci# (-a) * b 22b1994897Sopenharmony_ci.function i32 mneg_i32_1(i32 a0, i32 a1) { 23b1994897Sopenharmony_ci lda a0 24b1994897Sopenharmony_ci neg 25b1994897Sopenharmony_ci mul2 a1 26b1994897Sopenharmony_ci return 27b1994897Sopenharmony_ci} 28b1994897Sopenharmony_ci 29b1994897Sopenharmony_ci# - (a * b) 30b1994897Sopenharmony_ci.function i64 mneg_i64_0(i64 a0, i64 a1) { 31b1994897Sopenharmony_ci lda.64 a0 32b1994897Sopenharmony_ci mul2.64 a1 33b1994897Sopenharmony_ci neg.64 34b1994897Sopenharmony_ci return.64 35b1994897Sopenharmony_ci} 36b1994897Sopenharmony_ci 37b1994897Sopenharmony_ci# (-a) * b 38b1994897Sopenharmony_ci.function i64 mneg_i64_1(i64 a0, i64 a1) { 39b1994897Sopenharmony_ci lda.64 a0 40b1994897Sopenharmony_ci neg.64 41b1994897Sopenharmony_ci mul2.64 a1 42b1994897Sopenharmony_ci return.64 43b1994897Sopenharmony_ci} 44b1994897Sopenharmony_ci 45b1994897Sopenharmony_ci# (a * b) 46b1994897Sopenharmony_ci.function f64 mneg_f64_0(f64 a0, f64 a1) { 47b1994897Sopenharmony_ci lda.64 a0 48b1994897Sopenharmony_ci fmul2.64 a1 49b1994897Sopenharmony_ci fneg.64 50b1994897Sopenharmony_ci return.64 51b1994897Sopenharmony_ci} 52b1994897Sopenharmony_ci 53b1994897Sopenharmony_ci# (-a) * b 54b1994897Sopenharmony_ci.function f64 mneg_f64_1(f64 a0, f64 a1) { 55b1994897Sopenharmony_ci lda.64 a0 56b1994897Sopenharmony_ci fneg.64 57b1994897Sopenharmony_ci fmul2.64 a1 58b1994897Sopenharmony_ci return.64 59b1994897Sopenharmony_ci} 60b1994897Sopenharmony_ci 61b1994897Sopenharmony_ci.function i32 main() { 62b1994897Sopenharmony_ci movi v0, 10 63b1994897Sopenharmony_ci movi v1, 12 64b1994897Sopenharmony_ci call.short mneg_i32_0, v0, v1 65b1994897Sopenharmony_ci sta v0 66b1994897Sopenharmony_ci ldai -120 67b1994897Sopenharmony_ci jne v0, exit_error_0 68b1994897Sopenharmony_ci movi v0, 10 69b1994897Sopenharmony_ci movi v1, 12 70b1994897Sopenharmony_ci call.short mneg_i32_1, v0, v1 71b1994897Sopenharmony_ci sta v0 72b1994897Sopenharmony_ci ldai -120 73b1994897Sopenharmony_ci jne v0, exit_error_1 74b1994897Sopenharmony_ci movi.64 v0, 1 75b1994897Sopenharmony_ci movi.64 v1, 2 76b1994897Sopenharmony_ci call.short mneg_i64_0, v0, v1 77b1994897Sopenharmony_ci sta.64 v0 78b1994897Sopenharmony_ci ldai.64 -2 79b1994897Sopenharmony_ci cmp.64 v0 80b1994897Sopenharmony_ci jnez exit_error_2 81b1994897Sopenharmony_ci movi.64 v0, 1 82b1994897Sopenharmony_ci movi.64 v1, 2 83b1994897Sopenharmony_ci call.short mneg_i64_1, v0, v1 84b1994897Sopenharmony_ci sta.64 v0 85b1994897Sopenharmony_ci ldai.64 -2 86b1994897Sopenharmony_ci cmp.64 v0 87b1994897Sopenharmony_ci jnez exit_error_3 88b1994897Sopenharmony_ci fmovi.64 v0, 0.5 89b1994897Sopenharmony_ci fmovi.64 v1, 1.0 90b1994897Sopenharmony_ci call.short mneg_f64_0, v0, v1 91b1994897Sopenharmony_ci fmovi.64 v0, -0.5 92b1994897Sopenharmony_ci fcmpl.64 v0 93b1994897Sopenharmony_ci jnez exit_error_4 94b1994897Sopenharmony_ci fmovi.64 v0, 0.5 95b1994897Sopenharmony_ci fmovi.64 v1, 1.0 96b1994897Sopenharmony_ci call.short mneg_f64_1, v0, v1 97b1994897Sopenharmony_ci fmovi.64 v0, -0.5 98b1994897Sopenharmony_ci fcmpl.64 v0 99b1994897Sopenharmony_ci jnez exit_error_5 100b1994897Sopenharmony_ci ldai 0 101b1994897Sopenharmony_ci return 102b1994897Sopenharmony_ciexit_error_0: 103b1994897Sopenharmony_ci ldai 1 104b1994897Sopenharmony_ci return 105b1994897Sopenharmony_ciexit_error_1: 106b1994897Sopenharmony_ci ldai 2 107b1994897Sopenharmony_ci return 108b1994897Sopenharmony_ciexit_error_2: 109b1994897Sopenharmony_ci ldai 3 110b1994897Sopenharmony_ci return 111b1994897Sopenharmony_ciexit_error_3: 112b1994897Sopenharmony_ci ldai 4 113b1994897Sopenharmony_ci return 114b1994897Sopenharmony_ciexit_error_4: 115b1994897Sopenharmony_ci ldai 5 116b1994897Sopenharmony_ci return 117b1994897Sopenharmony_ciexit_error_5: 118b1994897Sopenharmony_ci ldai 6 119b1994897Sopenharmony_ci return 120b1994897Sopenharmony_ci} 121