Skip to content

Commit 430660f

Browse files
Merge branch 'llvm:main' into 3-acc-common
2 parents 827f8f0 + fe76f72 commit 430660f

File tree

166 files changed

+13278
-13403
lines changed

Some content is hidden

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

166 files changed

+13278
-13403
lines changed

clang-tools-extra/clangd/ClangdLSPServer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ CodeAction toCodeAction(const ClangdServer::CodeActionResult::Rename &R,
8181
const URIForFile &File) {
8282
CodeAction CA;
8383
CA.title = R.FixMessage;
84-
CA.kind = std::string(CodeAction::REFACTOR_KIND);
84+
CA.kind = std::string(CodeAction::QUICKFIX_KIND);
8585
CA.command.emplace();
8686
CA.command->title = R.FixMessage;
8787
CA.command->command = std::string(ApplyRenameCommand);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,8 @@ TEST_F(LSPTest, ClangTidyRename) {
235235
.takeValue()
236236
.getAsArray())[0];
237237

238-
ASSERT_EQ((*RenameCommand.getAsObject())["title"], "change 'foo' to 'Foo'");
238+
ASSERT_EQ((*RenameCommand.getAsObject())["title"],
239+
"Apply fix: change 'foo' to 'Foo'");
239240

240241
Client.expectServerCall("workspace/applyEdit");
241242
Client.call("workspace/executeCommand", RenameCommand);

clang/include/clang/Basic/BuiltinsX86.td

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -323,14 +323,22 @@ let Features = "sse4.1", Attributes = [NoThrow, Const, RequiredVectorWidth<128>]
323323
def roundsd : X86Builtin<"_Vector<2, double>(_Vector<2, double>, _Vector<2, double>, _Constant int)">;
324324
def roundpd : X86Builtin<"_Vector<2, double>(_Vector<2, double>, _Constant int)">;
325325
def dpps : X86Builtin<"_Vector<4, float>(_Vector<4, float>, _Vector<4, float>, _Constant char)">;
326-
def dppd : X86Builtin<"_Vector<2, double>(_Vector<2, double>, _Vector<2, double>, _Constant char)">;
327-
def ptestz128 : X86Builtin<"int(_Vector<2, long long int>, _Vector<2, long long int>)">;
328-
def ptestc128 : X86Builtin<"int(_Vector<2, long long int>, _Vector<2, long long int>)">;
329-
def ptestnzc128 : X86Builtin<"int(_Vector<2, long long int>, _Vector<2, long long int>)">;
326+
def dppd : X86Builtin<"_Vector<2, double>(_Vector<2, double>, "
327+
"_Vector<2,double>, _Constant char)">;
330328
def mpsadbw128 : X86Builtin<"_Vector<16, char>(_Vector<16, char>, _Vector<16, char>, _Constant char)">;
331329
def phminposuw128 : X86Builtin<"_Vector<8, short>(_Vector<8, short>)">;
332330
}
333331

332+
let Features = "sse4.1",
333+
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
334+
def ptestz128
335+
: X86Builtin<"int(_Vector<2, long long int>, _Vector<2, long long int>)">;
336+
def ptestc128
337+
: X86Builtin<"int(_Vector<2, long long int>, _Vector<2, long long int>)">;
338+
def ptestnzc128
339+
: X86Builtin<"int(_Vector<2, long long int>, _Vector<2, long long int>)">;
340+
}
341+
334342
let Features = "sse4.1", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
335343
def pblendw128 : X86Builtin<"_Vector<8, short>(_Vector<8, short>, _Vector<8, short>, _Constant int)">;
336344
def blendpd : X86Builtin<"_Vector<2, double>(_Vector<2, double>, _Vector<2, double>, _Constant int)">;
@@ -520,8 +528,8 @@ let Features = "avx", Attributes = [NoThrow, Const, RequiredVectorWidth<256>] in
520528
def roundps256 : X86Builtin<"_Vector<8, float>(_Vector<8, float>, _Constant int)">;
521529
}
522530

523-
524-
let Features = "avx", Attributes = [NoThrow, Const, RequiredVectorWidth<128>] in {
531+
let Features = "avx",
532+
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
525533
def vtestzpd : X86Builtin<"int(_Vector<2, double>, _Vector<2, double>)">;
526534
def vtestcpd : X86Builtin<"int(_Vector<2, double>, _Vector<2, double>)">;
527535
def vtestnzcpd : X86Builtin<"int(_Vector<2, double>, _Vector<2, double>)">;
@@ -530,7 +538,8 @@ let Features = "avx", Attributes = [NoThrow, Const, RequiredVectorWidth<128>] in
530538
def vtestnzcps : X86Builtin<"int(_Vector<4, float>, _Vector<4, float>)">;
531539
}
532540

533-
let Features = "avx", Attributes = [NoThrow, Const, RequiredVectorWidth<256>] in {
541+
let Features = "avx",
542+
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
534543
def vtestzpd256 : X86Builtin<"int(_Vector<4, double>, _Vector<4, double>)">;
535544
def vtestcpd256 : X86Builtin<"int(_Vector<4, double>, _Vector<4, double>)">;
536545
def vtestnzcpd256 : X86Builtin<"int(_Vector<4, double>, _Vector<4, double>)">;
@@ -540,6 +549,10 @@ let Features = "avx", Attributes = [NoThrow, Const, RequiredVectorWidth<256>] in
540549
def ptestz256 : X86Builtin<"int(_Vector<4, long long int>, _Vector<4, long long int>)">;
541550
def ptestc256 : X86Builtin<"int(_Vector<4, long long int>, _Vector<4, long long int>)">;
542551
def ptestnzc256 : X86Builtin<"int(_Vector<4, long long int>, _Vector<4, long long int>)">;
552+
}
553+
554+
let Features = "avx",
555+
Attributes = [NoThrow, Const, RequiredVectorWidth<256>] in {
543556
def movmskpd256 : X86Builtin<"int(_Vector<4, double>)">;
544557
def movmskps256 : X86Builtin<"int(_Vector<8, float>)">;
545558
}

clang/include/clang/Basic/OpenACCKinds.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ inline StreamTy &printOpenACCClauseKind(StreamTy &Out, OpenACCClauseKind K) {
494494

495495
case OpenACCClauseKind::Shortloop:
496496
llvm_unreachable("Shortloop shouldn't be generated in clang");
497-
LLVM_FALLTHROUGH;
497+
[[fallthrough]];
498498
case OpenACCClauseKind::Invalid:
499499
return Out << "<invalid>";
500500
}

clang/include/clang/ExtractAPI/API.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -618,17 +618,17 @@ struct TagRecord : APIRecord, RecordContext {
618618
static bool classofKind(RecordKind K) {
619619
switch (K) {
620620
case RK_Enum:
621-
LLVM_FALLTHROUGH;
621+
[[fallthrough]];
622622
case RK_Struct:
623-
LLVM_FALLTHROUGH;
623+
[[fallthrough]];
624624
case RK_Union:
625-
LLVM_FALLTHROUGH;
625+
[[fallthrough]];
626626
case RK_CXXClass:
627-
LLVM_FALLTHROUGH;
627+
[[fallthrough]];
628628
case RK_ClassTemplate:
629-
LLVM_FALLTHROUGH;
629+
[[fallthrough]];
630630
case RK_ClassTemplateSpecialization:
631-
LLVM_FALLTHROUGH;
631+
[[fallthrough]];
632632
case RK_ClassTemplatePartialSpecialization:
633633
return true;
634634
default:
@@ -704,15 +704,15 @@ struct RecordRecord : TagRecord {
704704
static bool classofKind(RecordKind K) {
705705
switch (K) {
706706
case RK_Struct:
707-
LLVM_FALLTHROUGH;
707+
[[fallthrough]];
708708
case RK_Union:
709-
LLVM_FALLTHROUGH;
709+
[[fallthrough]];
710710
case RK_CXXClass:
711-
LLVM_FALLTHROUGH;
711+
[[fallthrough]];
712712
case RK_ClassTemplate:
713-
LLVM_FALLTHROUGH;
713+
[[fallthrough]];
714714
case RK_ClassTemplateSpecialization:
715-
LLVM_FALLTHROUGH;
715+
[[fallthrough]];
716716
case RK_ClassTemplatePartialSpecialization:
717717
return true;
718718
default:

clang/lib/AST/ByteCode/InterpBuiltin.cpp

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2756,6 +2756,45 @@ static bool interp__builtin_ia32_pshuf(InterpState &S, CodePtr OpPC,
27562756
return true;
27572757
}
27582758

2759+
static bool interp__builtin_ia32_test_op(
2760+
InterpState &S, CodePtr OpPC, const CallExpr *Call,
2761+
llvm::function_ref<bool(const APInt &A, const APInt &B)> Fn) {
2762+
const Pointer &RHS = S.Stk.pop<Pointer>();
2763+
const Pointer &LHS = S.Stk.pop<Pointer>();
2764+
2765+
assert(LHS.getNumElems() == RHS.getNumElems());
2766+
2767+
unsigned SourceLen = LHS.getNumElems();
2768+
QualType ElemQT = getElemType(LHS);
2769+
OptPrimType ElemPT = S.getContext().classify(ElemQT);
2770+
unsigned LaneWidth = S.getASTContext().getTypeSize(ElemQT);
2771+
2772+
APInt AWide(LaneWidth * SourceLen, 0);
2773+
APInt BWide(LaneWidth * SourceLen, 0);
2774+
2775+
for (unsigned I = 0; I != SourceLen; ++I) {
2776+
APInt ALane;
2777+
APInt BLane;
2778+
2779+
if (ElemQT->isIntegerType()) { // Get value.
2780+
INT_TYPE_SWITCH_NO_BOOL(*ElemPT, {
2781+
ALane = LHS.elem<T>(I).toAPSInt();
2782+
BLane = RHS.elem<T>(I).toAPSInt();
2783+
});
2784+
} else if (ElemQT->isFloatingType()) { // Get only sign bit.
2785+
using T = PrimConv<PT_Float>::T;
2786+
ALane = LHS.elem<T>(I).getAPFloat().bitcastToAPInt().isNegative();
2787+
BLane = RHS.elem<T>(I).getAPFloat().bitcastToAPInt().isNegative();
2788+
} else { // Must be integer or floating type.
2789+
return false;
2790+
}
2791+
AWide.insertBits(ALane, I * LaneWidth);
2792+
BWide.insertBits(BLane, I * LaneWidth);
2793+
}
2794+
pushInteger(S, Fn(AWide, BWide), Call->getType());
2795+
return true;
2796+
}
2797+
27592798
static bool interp__builtin_elementwise_triop(
27602799
InterpState &S, CodePtr OpPC, const CallExpr *Call,
27612800
llvm::function_ref<APInt(const APSInt &, const APSInt &, const APSInt &)>
@@ -3712,7 +3751,34 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
37123751
S, OpPC, Call, [](const APSInt &F, const APSInt &T, const APSInt &C) {
37133752
return ((APInt)C).isNegative() ? T : F;
37143753
});
3715-
3754+
case X86::BI__builtin_ia32_ptestz128:
3755+
case X86::BI__builtin_ia32_ptestz256:
3756+
case X86::BI__builtin_ia32_vtestzps:
3757+
case X86::BI__builtin_ia32_vtestzps256:
3758+
case X86::BI__builtin_ia32_vtestzpd:
3759+
case X86::BI__builtin_ia32_vtestzpd256:
3760+
return interp__builtin_ia32_test_op(
3761+
S, OpPC, Call,
3762+
[](const APInt &A, const APInt &B) { return (A & B) == 0; });
3763+
case X86::BI__builtin_ia32_ptestc128:
3764+
case X86::BI__builtin_ia32_ptestc256:
3765+
case X86::BI__builtin_ia32_vtestcps:
3766+
case X86::BI__builtin_ia32_vtestcps256:
3767+
case X86::BI__builtin_ia32_vtestcpd:
3768+
case X86::BI__builtin_ia32_vtestcpd256:
3769+
return interp__builtin_ia32_test_op(
3770+
S, OpPC, Call,
3771+
[](const APInt &A, const APInt &B) { return (~A & B) == 0; });
3772+
case X86::BI__builtin_ia32_ptestnzc128:
3773+
case X86::BI__builtin_ia32_ptestnzc256:
3774+
case X86::BI__builtin_ia32_vtestnzcps:
3775+
case X86::BI__builtin_ia32_vtestnzcps256:
3776+
case X86::BI__builtin_ia32_vtestnzcpd:
3777+
case X86::BI__builtin_ia32_vtestnzcpd256:
3778+
return interp__builtin_ia32_test_op(
3779+
S, OpPC, Call, [](const APInt &A, const APInt &B) {
3780+
return ((A & B) != 0) && ((~A & B) != 0);
3781+
});
37163782
case X86::BI__builtin_ia32_selectb_128:
37173783
case X86::BI__builtin_ia32_selectb_256:
37183784
case X86::BI__builtin_ia32_selectb_512:

clang/lib/AST/ExprConstant.cpp

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13905,6 +13905,40 @@ static bool getBuiltinAlignArguments(const CallExpr *E, EvalInfo &Info,
1390513905

1390613906
bool IntExprEvaluator::VisitBuiltinCallExpr(const CallExpr *E,
1390713907
unsigned BuiltinOp) {
13908+
auto EvalTestOp = [&](llvm::function_ref<bool(const APInt &, const APInt &)>
13909+
Fn) {
13910+
APValue SourceLHS, SourceRHS;
13911+
if (!EvaluateAsRValue(Info, E->getArg(0), SourceLHS) ||
13912+
!EvaluateAsRValue(Info, E->getArg(1), SourceRHS))
13913+
return false;
13914+
13915+
unsigned SourceLen = SourceLHS.getVectorLength();
13916+
const VectorType *VT = E->getArg(0)->getType()->castAs<VectorType>();
13917+
QualType ElemQT = VT->getElementType();
13918+
unsigned LaneWidth = Info.Ctx.getTypeSize(ElemQT);
13919+
13920+
APInt AWide(LaneWidth * SourceLen, 0);
13921+
APInt BWide(LaneWidth * SourceLen, 0);
13922+
13923+
for (unsigned I = 0; I != SourceLen; ++I) {
13924+
APInt ALane;
13925+
APInt BLane;
13926+
if (ElemQT->isIntegerType()) { // Get value.
13927+
ALane = SourceLHS.getVectorElt(I).getInt();
13928+
BLane = SourceRHS.getVectorElt(I).getInt();
13929+
} else if (ElemQT->isFloatingType()) { // Get only sign bit.
13930+
ALane =
13931+
SourceLHS.getVectorElt(I).getFloat().bitcastToAPInt().isNegative();
13932+
BLane =
13933+
SourceRHS.getVectorElt(I).getFloat().bitcastToAPInt().isNegative();
13934+
} else { // Must be integer or floating type.
13935+
return false;
13936+
}
13937+
AWide.insertBits(ALane, I * LaneWidth);
13938+
BWide.insertBits(BLane, I * LaneWidth);
13939+
}
13940+
return Success(Fn(AWide, BWide), E);
13941+
};
1390813942

1390913943
auto HandleMaskBinOp =
1391013944
[&](llvm::function_ref<APSInt(const APSInt &, const APSInt &)> Fn)
@@ -15018,7 +15052,34 @@ bool IntExprEvaluator::VisitBuiltinCallExpr(const CallExpr *E,
1501815052
Result.setBitVal(P++, Val[I]);
1501915053
return Success(Result, E);
1502015054
}
15021-
15055+
case X86::BI__builtin_ia32_ptestz128:
15056+
case X86::BI__builtin_ia32_ptestz256:
15057+
case X86::BI__builtin_ia32_vtestzps:
15058+
case X86::BI__builtin_ia32_vtestzps256:
15059+
case X86::BI__builtin_ia32_vtestzpd:
15060+
case X86::BI__builtin_ia32_vtestzpd256: {
15061+
return EvalTestOp(
15062+
[](const APInt &A, const APInt &B) { return (A & B) == 0; });
15063+
}
15064+
case X86::BI__builtin_ia32_ptestc128:
15065+
case X86::BI__builtin_ia32_ptestc256:
15066+
case X86::BI__builtin_ia32_vtestcps:
15067+
case X86::BI__builtin_ia32_vtestcps256:
15068+
case X86::BI__builtin_ia32_vtestcpd:
15069+
case X86::BI__builtin_ia32_vtestcpd256: {
15070+
return EvalTestOp(
15071+
[](const APInt &A, const APInt &B) { return (~A & B) == 0; });
15072+
}
15073+
case X86::BI__builtin_ia32_ptestnzc128:
15074+
case X86::BI__builtin_ia32_ptestnzc256:
15075+
case X86::BI__builtin_ia32_vtestnzcps:
15076+
case X86::BI__builtin_ia32_vtestnzcps256:
15077+
case X86::BI__builtin_ia32_vtestnzcpd:
15078+
case X86::BI__builtin_ia32_vtestnzcpd256: {
15079+
return EvalTestOp([](const APInt &A, const APInt &B) {
15080+
return ((A & B) != 0) && ((~A & B) != 0);
15081+
});
15082+
}
1502215083
case X86::BI__builtin_ia32_kandqi:
1502315084
case X86::BI__builtin_ia32_kandhi:
1502415085
case X86::BI__builtin_ia32_kandsi:

clang/lib/Basic/Targets/AMDGPU.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ namespace targets {
2727
// getPointerWidthV().
2828

2929
static const char *const DataLayoutStringR600 =
30-
"e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128"
30+
"e-m:e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128"
3131
"-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1";
3232

3333
static const char *const DataLayoutStringAMDGCN =
34-
"e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32"
34+
"e-m:e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32"
3535
"-p7:160:256:256:32-p8:128:128:128:48-p9:192:256:256:32-i64:64-"
3636
"v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-"
3737
"v2048:2048-n32:64-S32-A5-G1-ni:7:8:9";

clang/lib/Basic/Targets/Mips.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ unsigned MipsTargetInfo::getISARev() const {
7272
.Cases("mips32r2", "mips64r2", "octeon", "octeon+", 2)
7373
.Cases("mips32r3", "mips64r3", 3)
7474
.Cases("mips32r5", "mips64r5", "p5600", 5)
75-
.Cases("mips32r6", "mips64r6", 6)
75+
.Cases("mips32r6", "mips64r6", "i6400", "i6500", 6)
7676
.Default(0);
7777
}
7878

@@ -270,8 +270,9 @@ bool MipsTargetInfo::validateTarget(DiagnosticsEngine &Diags) const {
270270
return false;
271271
}
272272
// Mips revision 6 and -mfp32 are incompatible
273-
if (FPMode != FP64 && FPMode != FPXX && (CPU == "mips32r6" ||
274-
CPU == "mips64r6")) {
273+
if (FPMode != FP64 && FPMode != FPXX &&
274+
(CPU == "mips32r6" || CPU == "mips64r6" || CPU == "i6400" ||
275+
CPU == "i6500")) {
275276
Diags.Report(diag::err_opt_not_valid_with_opt) << "-mfp32" << CPU;
276277
return false;
277278
}

clang/lib/Basic/Targets/Mips.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ class LLVM_LIBRARY_VISIBILITY MipsTargetInfo : public TargetInfo {
8383
}
8484

8585
bool isIEEE754_2008Default() const {
86-
return CPU == "mips32r6" || CPU == "mips64r6";
86+
return CPU == "mips32r6" || CPU == "mips64r6" || CPU == "i6400" ||
87+
CPU == "i6500";
8788
}
8889

8990
enum FPModeEnum getDefaultFPMode() const {

0 commit comments

Comments
 (0)