1/* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include <gtest/gtest.h> 17 18#include "libpandabase/utils/arch.h" 19#include "libpandabase/utils/regmask.h" 20 21namespace panda::test { 22 23HWTEST(ArchTest, GetCallerRegsMaskTest, testing::ext::TestSize.Level0) 24{ 25 ASSERT_EQ(GetCallerRegsMask(Arch::AARCH32, false), ArchTraits<Arch::AARCH32>::CALLER_REG_MASK); 26 ASSERT_EQ(GetCallerRegsMask(Arch::AARCH64, false), ArchTraits<Arch::AARCH64>::CALLER_REG_MASK); 27 ASSERT_EQ(GetCallerRegsMask(Arch::X86, false), ArchTraits<Arch::X86>::CALLER_REG_MASK); 28 ASSERT_EQ(GetCallerRegsMask(Arch::X86_64, false), ArchTraits<Arch::X86_64>::CALLER_REG_MASK); 29} 30 31HWTEST(ArchTest, GetCalleeRegsMaskTest, testing::ext::TestSize.Level0) 32{ 33 ASSERT_EQ(GetCalleeRegsMask(Arch::AARCH32, false), ArchTraits<Arch::AARCH32>::CALLEE_REG_MASK); 34 ASSERT_EQ(GetCalleeRegsMask(Arch::AARCH64, false), ArchTraits<Arch::AARCH64>::CALLEE_REG_MASK); 35 ASSERT_EQ(GetCalleeRegsMask(Arch::X86, false), ArchTraits<Arch::X86>::CALLEE_REG_MASK); 36 ASSERT_EQ(GetCalleeRegsMask(Arch::X86_64, false), ArchTraits<Arch::X86_64>::CALLEE_REG_MASK); 37} 38 39HWTEST(ArchTest, GetCalleeRegTest, testing::ext::TestSize.Level0) 40{ 41 ASSERT_EQ(GetFirstCalleeReg(Arch::X86_64, true), 1U); 42 ASSERT_EQ(GetLastCalleeReg(Arch::X86_64, true), 0U); 43} 44 45} // namespace panda::test 46