
This patch introduces `SemaAMDGPU`, `SemaARM`, `SemaBPF`, `SemaHexagon`, `SemaLoongArch`, `SemaMIPS`, `SemaNVPTX`, `SemaPPC`, `SemaSystemZ`, `SemaWasm`. This continues previous efforts to split Sema up. Additional context can be found in #84184 and #92682. I decided to bundle target-specific components together because of their low impact on `Sema`. That said, their impact on `SemaChecking.cpp` is far from low, and I consider it a success. Somewhat accidentally, I also moved Wasm- and AMDGPU-specific function from `SemaDeclAttr.cpp`, because they were exposed in `Sema`. That went well, and I consider it a success, too. I'd like to move the rest of static target-specific functions out of `SemaDeclAttr.cpp` like we're doing with built-ins in `SemaChecking.cpp` .
36 lines
1.2 KiB
C++
36 lines
1.2 KiB
C++
//===------ SemaNVPTX.cpp ------- NVPTX target-specific routines ----------===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file implements semantic analysis functions specific to NVPTX.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "clang/Sema/SemaNVPTX.h"
|
|
#include "clang/Basic/TargetBuiltins.h"
|
|
#include "clang/Sema/Sema.h"
|
|
|
|
namespace clang {
|
|
|
|
SemaNVPTX::SemaNVPTX(Sema &S) : SemaBase(S) {}
|
|
|
|
bool SemaNVPTX::CheckNVPTXBuiltinFunctionCall(const TargetInfo &TI,
|
|
unsigned BuiltinID,
|
|
CallExpr *TheCall) {
|
|
switch (BuiltinID) {
|
|
case NVPTX::BI__nvvm_cp_async_ca_shared_global_4:
|
|
case NVPTX::BI__nvvm_cp_async_ca_shared_global_8:
|
|
case NVPTX::BI__nvvm_cp_async_ca_shared_global_16:
|
|
case NVPTX::BI__nvvm_cp_async_cg_shared_global_16:
|
|
return SemaRef.checkArgCountAtMost(TheCall, 3);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
} // namespace clang
|