Skip to content

Commit 2d7cad3

Browse files
authored
Merge pull request #122 from sx-aurora-dev/feature/merge-upstream-20211215
Feature/merge upstream 20211215
2 parents 1ea8967 + 270430b commit 2d7cad3

File tree

981 files changed

+49054
-20371
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

981 files changed

+49054
-20371
lines changed

clang-tools-extra/clangd/index/dex/Trigram.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ namespace dex {
2828
// Produce trigrams (including duplicates) and pass them to Out().
2929
template <typename Func>
3030
static void identifierTrigrams(llvm::StringRef Identifier, Func Out) {
31+
assert(!Identifier.empty());
3132
// Apply fuzzy matching text segmentation.
3233
llvm::SmallVector<CharRole> Roles(Identifier.size());
3334
calculateRoles(Identifier,
@@ -104,6 +105,9 @@ void generateIdentifierTrigrams(llvm::StringRef Identifier,
104105
// The magic number was tuned by running IndexBenchmark.DexBuild.
105106
constexpr unsigned ManyTrigramsIdentifierThreshold = 14;
106107
Result.clear();
108+
if (Identifier.empty())
109+
return;
110+
107111
if (Identifier.size() < ManyTrigramsIdentifierThreshold) {
108112
identifierTrigrams(Identifier, [&](Trigram T) {
109113
if (!llvm::is_contained(Result, T))

clang-tools-extra/clangd/unittests/DexTests.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,7 @@ TEST(DexTrigrams, IdentifierTrigrams) {
415415
"cdg", "def", "deg", "dgh", "dgk", "efg", "egh",
416416
"egk", "fgh", "fgk", "ghi", "ghk", "gkl", "hij",
417417
"hik", "hkl", "ijk", "ikl", "jkl", "klm"}));
418+
EXPECT_THAT(identifierTrigramTokens(""), IsEmpty());
418419
}
419420

420421
TEST(DexTrigrams, QueryTrigrams) {
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#ifdef GET_SVE_BUILTINS
2+
BUILTIN(__builtin_sve_svget_neonq_s8, "V16Scq16Sc", "n")
3+
BUILTIN(__builtin_sve_svget_neonq_s16, "V8sq8s", "n")
4+
BUILTIN(__builtin_sve_svget_neonq_s32, "V4iq4i", "n")
5+
BUILTIN(__builtin_sve_svget_neonq_s64, "V2Wiq2Wi", "n")
6+
BUILTIN(__builtin_sve_svget_neonq_u8, "V16Ucq16Uc", "n")
7+
BUILTIN(__builtin_sve_svget_neonq_u16, "V16Usq16Us", "n")
8+
BUILTIN(__builtin_sve_svget_neonq_u32, "V4Uiq4Ui", "n")
9+
BUILTIN(__builtin_sve_svget_neonq_u64, "V2UWiq2UWi", "n")
10+
BUILTIN(__builtin_sve_svget_neonq_f16, "V8hq8h", "n")
11+
BUILTIN(__builtin_sve_svget_neonq_f32, "V4fq4f", "n")
12+
BUILTIN(__builtin_sve_svget_neonq_f64, "V2dq2d", "n")
13+
BUILTIN(__builtin_sve_svget_neonq_bf16, "V8yq8y", "n")
14+
BUILTIN(__builtin_sve_svset_neonq_s8, "q16Scq16ScV16Sc", "n")
15+
BUILTIN(__builtin_sve_svset_neonq_s16, "q8sq8sV8s", "n")
16+
BUILTIN(__builtin_sve_svset_neonq_s32, "q4iq4iV4i", "n")
17+
BUILTIN(__builtin_sve_svset_neonq_s64, "q2Wiq2WiV2Wi", "n")
18+
BUILTIN(__builtin_sve_svset_neonq_u8, "q16Ucq16UcV16Uc", "n")
19+
BUILTIN(__builtin_sve_svset_neonq_u16, "q8Usq8UsV8s", "n")
20+
BUILTIN(__builtin_sve_svset_neonq_u32, "q4Uiq4UiV4Ui", "n")
21+
BUILTIN(__builtin_sve_svset_neonq_u64, "q2UWiq2UWiV2UWi", "n")
22+
BUILTIN(__builtin_sve_svset_neonq_f16, "q8hq8hV8h", "n")
23+
BUILTIN(__builtin_sve_svset_neonq_f32, "q4fq4fV4f", "n")
24+
BUILTIN(__builtin_sve_svset_neonq_f64, "q2dq2dV2d", "n")
25+
BUILTIN(__builtin_sve_svset_neonq_bf16, "q8yq8yV8y", "n")
26+
BUILTIN(__builtin_sve_svdup_neonq_s8, "q16ScV16Sc", "n")
27+
BUILTIN(__builtin_sve_svdup_neonq_s16, "q8sV8s", "n")
28+
BUILTIN(__builtin_sve_svdup_neonq_s32, "q4iV4i", "n")
29+
BUILTIN(__builtin_sve_svdup_neonq_s64, "q4iV4i", "n")
30+
BUILTIN(__builtin_sve_svdup_neonq_u8, "q16UcV16Uc", "n")
31+
BUILTIN(__builtin_sve_svdup_neonq_u16, "q8UsV8Us", "n")
32+
BUILTIN(__builtin_sve_svdup_neonq_u32, "q4UiV4Ui", "n")
33+
BUILTIN(__builtin_sve_svdup_neonq_u64, "q2UWiV2UWi", "n")
34+
BUILTIN(__builtin_sve_svdup_neonq_f16, "q8hV8h", "n")
35+
BUILTIN(__builtin_sve_svdup_neonq_f32, "q4fV4f", "n")
36+
BUILTIN(__builtin_sve_svdup_neonq_f64, "q2dV2d", "n")
37+
BUILTIN(__builtin_sve_svdup_neonq_bf16, "q8yV8y", "n")
38+
#endif
39+
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#ifdef GET_SVE_LLVM_INTRINSIC_MAP
2+
SVEMAP2(svget_neonq_s8, SVETypeFlags::EltTyInt8),
3+
SVEMAP2(svget_neonq_s16, SVETypeFlags::EltTyInt16),
4+
SVEMAP2(svget_neonq_s32, SVETypeFlags::EltTyInt32),
5+
SVEMAP2(svget_neonq_s64, SVETypeFlags::EltTyInt64),
6+
SVEMAP2(svget_neonq_u8, SVETypeFlags::EltTyInt8),
7+
SVEMAP2(svget_neonq_u16, SVETypeFlags::EltTyInt16),
8+
SVEMAP2(svget_neonq_u32, SVETypeFlags::EltTyInt32),
9+
SVEMAP2(svget_neonq_u64, SVETypeFlags::EltTyInt64),
10+
SVEMAP2(svget_neonq_f16, SVETypeFlags::EltTyFloat16),
11+
SVEMAP2(svget_neonq_f32, SVETypeFlags::EltTyFloat32),
12+
SVEMAP2(svget_neonq_f64, SVETypeFlags::EltTyFloat64),
13+
SVEMAP2(svget_neonq_bf16, SVETypeFlags::EltTyBFloat16),
14+
SVEMAP2(svset_neonq_s8, SVETypeFlags::EltTyInt8),
15+
SVEMAP2(svset_neonq_s16, SVETypeFlags::EltTyInt16),
16+
SVEMAP2(svset_neonq_s32, SVETypeFlags::EltTyInt32),
17+
SVEMAP2(svset_neonq_s64, SVETypeFlags::EltTyInt64),
18+
SVEMAP2(svset_neonq_u8, SVETypeFlags::EltTyInt8),
19+
SVEMAP2(svset_neonq_u16, SVETypeFlags::EltTyInt16),
20+
SVEMAP2(svset_neonq_u32, SVETypeFlags::EltTyInt32),
21+
SVEMAP2(svset_neonq_u64, SVETypeFlags::EltTyInt64),
22+
SVEMAP2(svset_neonq_f16, SVETypeFlags::EltTyFloat16),
23+
SVEMAP2(svset_neonq_f32, SVETypeFlags::EltTyFloat32),
24+
SVEMAP2(svset_neonq_f64, SVETypeFlags::EltTyFloat64),
25+
SVEMAP2(svset_neonq_bf16, SVETypeFlags::EltTyBFloat16),
26+
SVEMAP2(svdup_neonq_s8, SVETypeFlags::EltTyInt8),
27+
SVEMAP2(svdup_neonq_s16, SVETypeFlags::EltTyInt16),
28+
SVEMAP2(svdup_neonq_s32, SVETypeFlags::EltTyInt32),
29+
SVEMAP2(svdup_neonq_s64, SVETypeFlags::EltTyInt64),
30+
SVEMAP2(svdup_neonq_u8, SVETypeFlags::EltTyInt8),
31+
SVEMAP2(svdup_neonq_u16, SVETypeFlags::EltTyInt16),
32+
SVEMAP2(svdup_neonq_u32, SVETypeFlags::EltTyInt32),
33+
SVEMAP2(svdup_neonq_u64, SVETypeFlags::EltTyInt64),
34+
SVEMAP2(svdup_neonq_f16, SVETypeFlags::EltTyFloat16),
35+
SVEMAP2(svdup_neonq_f32, SVETypeFlags::EltTyFloat32),
36+
SVEMAP2(svdup_neonq_f64, SVETypeFlags::EltTyFloat64),
37+
SVEMAP2(svdup_neonq_bf16, SVETypeFlags::EltTyBFloat16),
38+
#endif
39+

clang/include/clang/Basic/BuiltinsSVE.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
#define GET_SVE_BUILTINS
1717
#include "clang/Basic/arm_sve_builtins.inc"
18+
#include "clang/Basic/BuiltinsAArch64NeonSVEBridge.def"
1819
#undef GET_SVE_BUILTINS
1920

2021
#undef BUILTIN

clang/include/clang/module.modulemap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ module Clang_Basic {
3434
textual header "Basic/AArch64SVEACLETypes.def"
3535
textual header "Basic/BuiltinsAArch64.def"
3636
textual header "Basic/BuiltinsAMDGPU.def"
37+
textual header "Basic/BuiltinsAArch64NeonSVEBridge.def"
38+
textual header "Basic/BuiltinsAArch64NeonSVEBridge_cg.def"
3739
textual header "Basic/BuiltinsARM.def"
3840
textual header "Basic/BuiltinsBPF.def"
3941
textual header "Basic/Builtins.def"

clang/lib/Basic/Targets/AArch64.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,9 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
307307
if (FPU & SveMode)
308308
Builder.defineMacro("__ARM_FEATURE_SVE", "1");
309309

310+
if ((FPU & NeonMode) && (FPU & SveMode))
311+
Builder.defineMacro("__ARM_NEON_SVE_BRIDGE", "1");
312+
310313
if (HasSVE2)
311314
Builder.defineMacro("__ARM_FEATURE_SVE2", "1");
312315

clang/lib/CodeGen/Address.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,18 @@ namespace CodeGen {
2424
class Address {
2525
llvm::Value *Pointer;
2626
CharUnits Alignment;
27+
28+
protected:
29+
Address(std::nullptr_t) : Pointer(nullptr) {}
30+
2731
public:
2832
Address(llvm::Value *pointer, CharUnits alignment)
2933
: Pointer(pointer), Alignment(alignment) {
30-
assert((!alignment.isZero() || pointer == nullptr) &&
31-
"creating valid address with invalid alignment");
34+
assert(pointer != nullptr && "Pointer cannot be null");
35+
assert(!alignment.isZero() && "Alignment cannot be zero");
3236
}
3337

34-
static Address invalid() { return Address(nullptr, CharUnits()); }
38+
static Address invalid() { return Address(nullptr); }
3539
bool isValid() const { return Pointer != nullptr; }
3640

3741
llvm::Value *getPointer() const {
@@ -72,12 +76,14 @@ class Address {
7276
/// A specialization of Address that requires the address to be an
7377
/// LLVM Constant.
7478
class ConstantAddress : public Address {
79+
ConstantAddress(std::nullptr_t) : Address(nullptr) {}
80+
7581
public:
7682
ConstantAddress(llvm::Constant *pointer, CharUnits alignment)
7783
: Address(pointer, alignment) {}
7884

7985
static ConstantAddress invalid() {
80-
return ConstantAddress(nullptr, CharUnits());
86+
return ConstantAddress(nullptr);
8187
}
8288

8389
llvm::Constant *getPointer() const {

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6412,6 +6412,7 @@ static const ARMVectorIntrinsicInfo AArch64SISDIntrinsicMap[] = {
64126412
static const ARMVectorIntrinsicInfo AArch64SVEIntrinsicMap[] = {
64136413
#define GET_SVE_LLVM_INTRINSIC_MAP
64146414
#include "clang/Basic/arm_sve_builtin_cg.inc"
6415+
#include "clang/Basic/BuiltinsAArch64NeonSVEBridge_cg.def"
64156416
#undef GET_SVE_LLVM_INTRINSIC_MAP
64166417
};
64176418

@@ -9335,6 +9336,54 @@ Value *CodeGenFunction::EmitAArch64SVEBuiltinExpr(unsigned BuiltinID,
93359336
Function *F = CGM.getIntrinsic(Intrinsic::aarch64_sve_tbl2, VTy);
93369337
return Builder.CreateCall(F, {V0, V1, Ops[1]});
93379338
}
9339+
9340+
case SVE::BI__builtin_sve_svset_neonq_s8:
9341+
case SVE::BI__builtin_sve_svset_neonq_s16:
9342+
case SVE::BI__builtin_sve_svset_neonq_s32:
9343+
case SVE::BI__builtin_sve_svset_neonq_s64:
9344+
case SVE::BI__builtin_sve_svset_neonq_u8:
9345+
case SVE::BI__builtin_sve_svset_neonq_u16:
9346+
case SVE::BI__builtin_sve_svset_neonq_u32:
9347+
case SVE::BI__builtin_sve_svset_neonq_u64:
9348+
case SVE::BI__builtin_sve_svset_neonq_f16:
9349+
case SVE::BI__builtin_sve_svset_neonq_f32:
9350+
case SVE::BI__builtin_sve_svset_neonq_f64:
9351+
case SVE::BI__builtin_sve_svset_neonq_bf16: {
9352+
return Builder.CreateInsertVector(Ty, Ops[0], Ops[1], Builder.getInt64(0));
9353+
}
9354+
9355+
case SVE::BI__builtin_sve_svget_neonq_s8:
9356+
case SVE::BI__builtin_sve_svget_neonq_s16:
9357+
case SVE::BI__builtin_sve_svget_neonq_s32:
9358+
case SVE::BI__builtin_sve_svget_neonq_s64:
9359+
case SVE::BI__builtin_sve_svget_neonq_u8:
9360+
case SVE::BI__builtin_sve_svget_neonq_u16:
9361+
case SVE::BI__builtin_sve_svget_neonq_u32:
9362+
case SVE::BI__builtin_sve_svget_neonq_u64:
9363+
case SVE::BI__builtin_sve_svget_neonq_f16:
9364+
case SVE::BI__builtin_sve_svget_neonq_f32:
9365+
case SVE::BI__builtin_sve_svget_neonq_f64:
9366+
case SVE::BI__builtin_sve_svget_neonq_bf16: {
9367+
return Builder.CreateExtractVector(Ty, Ops[0], Builder.getInt64(0));
9368+
}
9369+
9370+
case SVE::BI__builtin_sve_svdup_neonq_s8:
9371+
case SVE::BI__builtin_sve_svdup_neonq_s16:
9372+
case SVE::BI__builtin_sve_svdup_neonq_s32:
9373+
case SVE::BI__builtin_sve_svdup_neonq_s64:
9374+
case SVE::BI__builtin_sve_svdup_neonq_u8:
9375+
case SVE::BI__builtin_sve_svdup_neonq_u16:
9376+
case SVE::BI__builtin_sve_svdup_neonq_u32:
9377+
case SVE::BI__builtin_sve_svdup_neonq_u64:
9378+
case SVE::BI__builtin_sve_svdup_neonq_f16:
9379+
case SVE::BI__builtin_sve_svdup_neonq_f32:
9380+
case SVE::BI__builtin_sve_svdup_neonq_f64:
9381+
case SVE::BI__builtin_sve_svdup_neonq_bf16: {
9382+
Value *Insert = Builder.CreateInsertVector(Ty, UndefValue::get(Ty), Ops[0],
9383+
Builder.getInt64(0));
9384+
return Builder.CreateIntrinsic(Intrinsic::aarch64_sve_dupq_lane, {Ty},
9385+
{Insert, Builder.getInt64(0)});
9386+
}
93389387
}
93399388

93409389
/// Should not happen

clang/lib/CodeGen/CGCall.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4308,11 +4308,8 @@ void CodeGenFunction::EmitCallArg(CallArgList &args, const Expr *E,
43084308
type->castAs<RecordType>()->getDecl()->isParamDestroyedInCallee()) {
43094309
// If we're using inalloca, use the argument memory. Otherwise, use a
43104310
// temporary.
4311-
AggValueSlot Slot;
4312-
if (args.isUsingInAlloca())
4313-
Slot = createPlaceholderSlot(*this, type);
4314-
else
4315-
Slot = CreateAggTemp(type, "agg.tmp");
4311+
AggValueSlot Slot = args.isUsingInAlloca()
4312+
? createPlaceholderSlot(*this, type) : CreateAggTemp(type, "agg.tmp");
43164313

43174314
bool DestroyedInCallee = true, NeedsEHCleanup = true;
43184315
if (const auto *RD = type->getAsCXXRecordDecl())

0 commit comments

Comments
 (0)