[PATCH] D157786: Add isArch32Bit into TripleUtils
Pivnoy created this revision. Herald added subscribers: luke, pmatos, asb, frasercrmck, luismarques, apazos, sameer.abuasal, pengfei, s.egerton, Jim, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, niosHD, sabuasal, simoncook, johnrusso, rbar, fedor.sergeev, kbarton, hiraditya, jgravelle-google, arichardson, sbc100, nemanjai, dschuff, emaste. Herald added a project: All. Pivnoy requested review of this revision. Herald added subscribers: llvm-commits, cfe-commits, wangpc, MaskRay, aheejin. Herald added projects: clang, LLVM. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D157786 Files: clang/lib/AST/MicrosoftCXXABI.cpp clang/lib/AST/RecordLayoutBuilder.cpp clang/lib/Basic/TargetInfo.cpp clang/lib/Basic/Targets/AArch64.cpp clang/lib/Basic/Targets/OSTargets.h clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/FreeBSD.cpp clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Gnu.h clang/lib/Driver/ToolChains/Hurd.cpp clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/WebAssembly.cpp clang/lib/Frontend/CompilerInvocation.cpp llvm/include/llvm/TargetParser/Triple.h llvm/include/llvm/TargetParser/TripleUtils.h llvm/lib/BinaryFormat/MachO.cpp llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp llvm/lib/ProfileData/InstrProfCorrelator.cpp llvm/lib/Target/AArch64/AArch64Subtarget.h llvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp llvm/lib/Target/LoongArch/LoongArchTargetMachine.cpp llvm/lib/Target/PowerPC/PPCTargetMachine.cpp llvm/lib/Target/RISCV/RISCVTargetMachine.cpp llvm/lib/Target/X86/X86AsmPrinter.cpp llvm/lib/TargetParser/Host.cpp llvm/lib/TargetParser/Triple.cpp llvm/lib/TargetParser/TripleUtils.cpp llvm/lib/XRay/InstrumentationMap.cpp llvm/tools/llvm-ml/llvm-ml.cpp llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp llvm/unittests/DebugInfo/DWARF/DwarfUtils.cpp llvm/unittests/TargetParser/TripleTest.cpp llvm/unittests/TargetParser/TripleUtilsTest.cpp Index: llvm/unittests/TargetParser/TripleUtilsTest.cpp === --- llvm/unittests/TargetParser/TripleUtilsTest.cpp +++ llvm/unittests/TargetParser/TripleUtilsTest.cpp @@ -17,100 +17,161 @@ TEST(TripleUtilsTest, CheckArchBitWidth) { Triple T; EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); T.setArch(Triple::arm); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::hexagon); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::mips); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::mips64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::msp430); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_TRUE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::ppc); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::ppc64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::x86); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::x86_64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::amdil); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::amdil64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::hsail); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::hsail64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::spir); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::spir64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::spirv32); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::spirv64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::sparc); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); T.setArch(Triple::sparcel); + EXPECT_TRUE(llvm::TripleUtils::isArch32B
[PATCH] D157497: feat: Migrate isArch16Bit
Pivnoy updated this revision to Diff 549620. Pivnoy added a comment. Add deprecated attribute Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D157497/new/ https://reviews.llvm.org/D157497 Files: clang/lib/Frontend/CompilerInvocation.cpp llvm/include/llvm/TargetParser/Triple.h llvm/include/llvm/TargetParser/TripleUtils.h llvm/lib/Analysis/TargetLibraryInfo.cpp llvm/lib/TargetParser/CMakeLists.txt llvm/lib/TargetParser/TripleUtils.cpp llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp llvm/unittests/TargetParser/CMakeLists.txt llvm/unittests/TargetParser/TripleTest.cpp llvm/unittests/TargetParser/TripleUtilsTest.cpp Index: llvm/unittests/TargetParser/TripleUtilsTest.cpp === --- /dev/null +++ llvm/unittests/TargetParser/TripleUtilsTest.cpp @@ -0,0 +1,116 @@ +//===--- TripleUtils.cpp - TripleUtils unit tests +//---===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// + +#include "llvm/TargetParser/TripleUtils.h" +#include "gtest/gtest.h" + +using namespace llvm; + +namespace { + +TEST(TripleUtilsTest, CheckArchBitWidth) { + Triple T; + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::arm); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hexagon); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::mips); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::mips64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::msp430); + EXPECT_TRUE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::ppc); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::ppc64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::x86); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::x86_64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::amdil); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::amdil64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hsail); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hsail64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spir); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spir64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spirv32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spirv64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::sparc); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::sparcel); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + ; + + T.setArch(Triple::sparcv9); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::wasm32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::wasm64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::avr); + EXPECT_TRUE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::lanai); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::riscv32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::riscv64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::csky); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::loongarch32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::loongarch64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::dxil); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::xtensa); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); +} + +} // namespace \ No newline at end of file Index: llvm/unittests/TargetParser/TripleTest.cpp === --- llvm/unittests/TargetParser/TripleTest.cpp +++ llvm/unittests/TargetParser/TripleTest.cpp @@ -1094,172 +1094,140 @@ TEST(TripleTest, BitWidthPredicates) { Triple T; - EXPECT_FALSE(T.isArch16Bit()); EXPECT_FALSE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple::arm); - EXPECT_FALSE(T.isArch16Bit()); EXPECT_TRUE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple::hexagon); - EXPECT_FALSE(T.isArch16Bit()); EXPECT_TRUE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple::mips); - EXPECT_FALSE(T.isArch16Bit()); EXPECT_TRUE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple::mips64); - EXPECT_FALSE(T.isArch16Bi
[PATCH] D157497: feat: Migrate isArch16Bit
Pivnoy updated this revision to Diff 549621. Pivnoy added a comment. Fix some format mistake Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D157497/new/ https://reviews.llvm.org/D157497 Files: clang/lib/Frontend/CompilerInvocation.cpp llvm/include/llvm/TargetParser/Triple.h llvm/include/llvm/TargetParser/TripleUtils.h llvm/lib/Analysis/TargetLibraryInfo.cpp llvm/lib/TargetParser/CMakeLists.txt llvm/lib/TargetParser/TripleUtils.cpp llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp llvm/unittests/TargetParser/CMakeLists.txt llvm/unittests/TargetParser/TripleTest.cpp llvm/unittests/TargetParser/TripleUtilsTest.cpp Index: llvm/unittests/TargetParser/TripleUtilsTest.cpp === --- /dev/null +++ llvm/unittests/TargetParser/TripleUtilsTest.cpp @@ -0,0 +1,116 @@ +//===--- TripleUtils.cpp - TripleUtils unit tests +//---===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// + +#include "llvm/TargetParser/TripleUtils.h" +#include "gtest/gtest.h" + +using namespace llvm; + +namespace { + +TEST(TripleUtilsTest, CheckArchBitWidth) { + Triple T; + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::arm); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hexagon); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::mips); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::mips64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::msp430); + EXPECT_TRUE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::ppc); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::ppc64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::x86); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::x86_64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::amdil); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::amdil64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hsail); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hsail64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spir); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spir64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spirv32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spirv64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::sparc); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::sparcel); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + ; + + T.setArch(Triple::sparcv9); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::wasm32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::wasm64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::avr); + EXPECT_TRUE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::lanai); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::riscv32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::riscv64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::csky); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::loongarch32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::loongarch64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::dxil); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::xtensa); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); +} + +} // namespace \ No newline at end of file Index: llvm/unittests/TargetParser/TripleTest.cpp === --- llvm/unittests/TargetParser/TripleTest.cpp +++ llvm/unittests/TargetParser/TripleTest.cpp @@ -1094,172 +1094,140 @@ TEST(TripleTest, BitWidthPredicates) { Triple T; - EXPECT_FALSE(T.isArch16Bit()); EXPECT_FALSE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple::arm); - EXPECT_FALSE(T.isArch16Bit()); EXPECT_TRUE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple::hexagon); - EXPECT_FALSE(T.isArch16Bit()); EXPECT_TRUE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple::mips); - EXPECT_FALSE(T.isArch16Bit()); EXPECT_TRUE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple::mips64); - EXPECT_FALSE(T.isArch16Bit
[PATCH] D157497: feat: Migrate isArch16Bit
Pivnoy updated this revision to Diff 549688. Pivnoy added a comment. Herald added subscribers: luke, pmatos, frasercrmck, luismarques, apazos, sameer.abuasal, pengfei, Jim, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, MaskRay, jrtc27, niosHD, sabuasal, johnrusso, rbar, kbarton, jgravelle-google, arichardson, sbc100, nemanjai, dschuff, emaste. Add test for isArch32Bit to TripleUtilsTest Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D157497/new/ https://reviews.llvm.org/D157497 Files: clang/lib/AST/MicrosoftCXXABI.cpp clang/lib/AST/RecordLayoutBuilder.cpp clang/lib/Basic/TargetInfo.cpp clang/lib/Basic/Targets/AArch64.cpp clang/lib/Basic/Targets/OSTargets.h clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/FreeBSD.cpp clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Gnu.h clang/lib/Driver/ToolChains/Hurd.cpp clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/WebAssembly.cpp clang/lib/Frontend/CompilerInvocation.cpp llvm/include/llvm/TargetParser/Triple.h llvm/include/llvm/TargetParser/TripleUtils.h llvm/lib/Analysis/TargetLibraryInfo.cpp llvm/lib/BinaryFormat/MachO.cpp llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp llvm/lib/ProfileData/InstrProfCorrelator.cpp llvm/lib/Target/AArch64/AArch64Subtarget.h llvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp llvm/lib/Target/LoongArch/LoongArchTargetMachine.cpp llvm/lib/Target/PowerPC/PPCTargetMachine.cpp llvm/lib/Target/RISCV/RISCVTargetMachine.cpp llvm/lib/Target/X86/X86AsmPrinter.cpp llvm/lib/TargetParser/CMakeLists.txt llvm/lib/TargetParser/Host.cpp llvm/lib/TargetParser/TripleUtils.cpp llvm/lib/XRay/InstrumentationMap.cpp llvm/tools/llvm-ml/llvm-ml.cpp llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp llvm/unittests/DebugInfo/DWARF/DwarfUtils.cpp llvm/unittests/TargetParser/CMakeLists.txt llvm/unittests/TargetParser/TripleTest.cpp llvm/unittests/TargetParser/TripleUtilsTest.cpp Index: llvm/unittests/TargetParser/TripleUtilsTest.cpp === --- /dev/null +++ llvm/unittests/TargetParser/TripleUtilsTest.cpp @@ -0,0 +1,179 @@ +//===--- TripleUtils.cpp - TripleUtils unit tests +//---===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// + +#include "llvm/TargetParser/TripleUtils.h" +#include "gtest/gtest.h" + +using namespace llvm; + +namespace { + +TEST(TripleUtilsTest, CheckArchBitWidth) { + Triple T; + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::arm); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hexagon); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::mips); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::mips64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::msp430); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_TRUE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::ppc); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::ppc64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::x86); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::x86_64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::amdil); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::amdil64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hsail); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hsail64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spir); + EXPECT_TRUE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spir64); + EXPECT_FALSE(llvm::TripleUtils::isArch32Bit(T)); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.set
[PATCH] D157497: feat: Migrate isArch16Bit
Pivnoy added a comment. This discussion was the main motivation for this change. https://discourse.llvm.org/t/rfc-refactor-triple-related-classes/70410/11 As a result, Triple should become a data class, and its dependencies such as Architecture, Operating System etc. represent in the form of interfaces that can be implemented for the necessary instances. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D157497/new/ https://reviews.llvm.org/D157497 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D157497: feat: Migrate isArch16Bit
Pivnoy added a comment. At the moment, the TargetParser architecture is extensible. This complicates the addition of new architectures, operating systems, and so on. In the main discussion, it was proposed to redesign the architecture of this module in order to increase the possibility of adding new architectures, etc. The main idea of the rework was to separate the Triple entity into a data-class, and create a number of interfaces from components that would include Triple, through the implementation of which it would be possible to represent various data bindings of the components. At the moment, Triple is overflowing with various methods that do not fully meet the ideas of OOP. Since the TargetParser module is quite large and has many dependencies throughout the llvm-project, it was first of all supposed to remove these methods from Triple, since they would not correspond to OOP ideas. This would help to gradually rid Triple of unnecessary dependencies, and gradually change the architecture inside Triple, without breaking code of another LLVM developers. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D157497/new/ https://reviews.llvm.org/D157497 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D157497: feat: Migrate isArch16Bit
Pivnoy added a comment. Herald added a subscriber: sunshaoce. @bulbazord @MaskRay Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D157497/new/ https://reviews.llvm.org/D157497 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D157486: Triple Patch
Pivnoy created this revision. Herald added a reviewer: JDevlieghere. Herald added a reviewer: aaron.ballman. Herald added a project: All. Pivnoy requested review of this revision. Herald added projects: clang, LLDB, LLVM. Herald added subscribers: llvm-commits, lldb-commits, cfe-commits. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D157486 Files: clang/lib/Sema/SemaDecl.cpp clang/lib/Sema/SemaDeclAttr.cpp clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp lldb/source/Utility/ArchSpec.cpp llvm/tools/dsymutil/DwarfLinkerForBinary.cpp Index: llvm/tools/dsymutil/DwarfLinkerForBinary.cpp === --- llvm/tools/dsymutil/DwarfLinkerForBinary.cpp +++ llvm/tools/dsymutil/DwarfLinkerForBinary.cpp @@ -801,7 +801,8 @@ return error(toString(std::move(E))); } - if (llvm::TripleUtils::isOSDarwin(Map.getTriple()) && !Map.getBinaryPath().empty() && + if (llvm::TripleUtils::isOSDarwin(Map.getTriple()) && + !Map.getBinaryPath().empty() && ObjectType == Linker::OutputFileType::Object) return MachOUtils::generateDsymCompanion( Options.VFS, Map, Options.Translator, Index: lldb/source/Utility/ArchSpec.cpp === --- lldb/source/Utility/ArchSpec.cpp +++ lldb/source/Utility/ArchSpec.cpp @@ -1416,7 +1416,8 @@ const unsigned unspecified = 0; const llvm::Triple &triple = GetTriple(); - if (llvm::TripleUtils::isOSDarwin(triple) && triple.getOSMajorVersion() == unspecified) + if (llvm::TripleUtils::isOSDarwin(triple) && + triple.getOSMajorVersion() == unspecified) return false; return true; Index: clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp === --- clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp +++ clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp @@ -111,8 +111,9 @@ GTEST_SKIP(); // FIXME: libunwind on darwin is broken, see PR49692. - if (llvm::TripleUtils::isOSDarwin(Triple) && (Triple.getArch() == llvm::Triple::aarch64 || - Triple.getArch() == llvm::Triple::aarch64_32)) + if (llvm::TripleUtils::isOSDarwin(Triple) && + (Triple.getArch() == llvm::Triple::aarch64 || + Triple.getArch() == llvm::Triple::aarch64_32)) GTEST_SKIP(); llvm::cantFail(Interp->ParseAndExecute(ExceptionCode)); Index: clang/lib/Sema/SemaDeclAttr.cpp === --- clang/lib/Sema/SemaDeclAttr.cpp +++ clang/lib/Sema/SemaDeclAttr.cpp @@ -45,7 +45,7 @@ #include "llvm/MC/MCSectionMachO.h" #include "llvm/Support/Error.h" #include "llvm/Support/MathExtras.h" -#include "llvm/Support/raw_ostream.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/TargetParser/TripleUtils.h" #include @@ -3195,7 +3195,8 @@ S.Diag(AL.getLoc(), diag::warn_attribute_invalid_on_definition) << "weak_import"; else if (isa(D) || isa(D) || - (llvm::TripleUtils::isOSDarwin(S.Context.getTargetInfo().getTriple()) && + (llvm::TripleUtils::isOSDarwin( + S.Context.getTargetInfo().getTriple()) && (isa(D) || isa(D { // Nothing to warn about here. } else Index: clang/lib/Sema/SemaDecl.cpp === --- clang/lib/Sema/SemaDecl.cpp +++ clang/lib/Sema/SemaDecl.cpp @@ -12165,7 +12165,8 @@ // Darwin passes an undocumented fourth argument of type char**. If // other platforms start sprouting these, the logic below will start // getting shifty. - if (nparams == 4 && llvm::TripleUtils::isOSDarwin(Context.getTargetInfo().getTriple())) + if (nparams == 4 && + llvm::TripleUtils::isOSDarwin(Context.getTargetInfo().getTriple())) HasExtraParameters = false; if (HasExtraParameters) { Index: llvm/tools/dsymutil/DwarfLinkerForBinary.cpp === --- llvm/tools/dsymutil/DwarfLinkerForBinary.cpp +++ llvm/tools/dsymutil/DwarfLinkerForBinary.cpp @@ -801,7 +801,8 @@ return error(toString(std::move(E))); } - if (llvm::TripleUtils::isOSDarwin(Map.getTriple()) && !Map.getBinaryPath().empty() && + if (llvm::TripleUtils::isOSDarwin(Map.getTriple()) && + !Map.getBinaryPath().empty() && ObjectType == Linker::OutputFileType::Object) return MachOUtils::generateDsymCompanion( Options.VFS, Map, Options.Translator, Index: lldb/source/Utility/ArchSpec.cpp === --- lldb/source/Utility/ArchSpec.cpp +++ lldb/source/Utility/ArchSpec.cpp @@ -1416,7 +1416,8 @@ const unsigned unspecified = 0; const llvm::Triple &triple = GetTriple(); - if (llvm::TripleUtils::isOSDarwin(triple) && triple.getOSMajorV
[PATCH] D157497: feat: Migrate isArch16Bit
Pivnoy created this revision. Herald added subscribers: s.egerton, simoncook, asb, fedor.sergeev, hiraditya, rampitec. Herald added a project: All. Pivnoy requested review of this revision. Herald added subscribers: llvm-commits, cfe-commits, wangpc, aheejin. Herald added projects: clang, LLVM. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D157497 Files: clang/lib/Frontend/CompilerInvocation.cpp llvm/include/llvm/TargetParser/Triple.h llvm/include/llvm/TargetParser/TripleUtils.h llvm/lib/Analysis/TargetLibraryInfo.cpp llvm/lib/TargetParser/CMakeLists.txt llvm/lib/TargetParser/Triple.cpp llvm/lib/TargetParser/TripleUtils.cpp llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp llvm/unittests/TargetParser/CMakeLists.txt llvm/unittests/TargetParser/TripleTest.cpp llvm/unittests/TargetParser/TripleUtilsTest.cpp Index: llvm/unittests/TargetParser/TripleUtilsTest.cpp === --- /dev/null +++ llvm/unittests/TargetParser/TripleUtilsTest.cpp @@ -0,0 +1,116 @@ +//===--- TripleUtils.cpp - TripleUtils unit tests +//---===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// + +#include "llvm/TargetParser/TripleUtils.h" +#include "gtest/gtest.h" + +using namespace llvm; + +namespace { + +TEST(TripleUtilsTest, CheckArchBitWidth) { + Triple T; + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::arm); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hexagon); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::mips); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::mips64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::msp430); + EXPECT_TRUE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::ppc); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::ppc64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::x86); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::x86_64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::amdil); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::amdil64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hsail); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::hsail64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spir); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spir64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spirv32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::spirv64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::sparc); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::sparcel); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + ; + + T.setArch(Triple::sparcv9); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::wasm32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::wasm64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::avr); + EXPECT_TRUE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::lanai); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::riscv32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::riscv64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::csky); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::loongarch32); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::loongarch64); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::dxil); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); + + T.setArch(Triple::xtensa); + EXPECT_FALSE(llvm::TripleUtils::isArch16Bit(T)); +} + +} // namespace \ No newline at end of file Index: llvm/unittests/TargetParser/TripleTest.cpp === --- llvm/unittests/TargetParser/TripleTest.cpp +++ llvm/unittests/TargetParser/TripleTest.cpp @@ -1094,172 +1094,140 @@ TEST(TripleTest, BitWidthPredicates) { Triple T; - EXPECT_FALSE(T.isArch16Bit()); EXPECT_FALSE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple::arm); - EXPECT_FALSE(T.isArch16Bit()); EXPECT_TRUE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple::hexagon); - EXPECT_FALSE(T.isArch16Bit()); EXPECT_TRUE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); T.setArch(Triple: