Skip to content

Commit a3744f0

Browse files
committed
[clang][AArch64] Remove references to vector size in SVE immediate range checking. NFC
1 parent 45e874e commit a3744f0

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

clang/include/clang/Basic/arm_immcheck_incl.td

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,20 @@ class ImmCheckType<int val> {
22
int Value = val;
33
}
44

5-
// These must be kept in sync with the flags in include/clang/Basic/TargetBuiltins.h
5+
6+
// For SVE, container_size refers to the width of a vector segment (128b).
7+
// For NEON, container_size refers to the vector width (64b or 128b).
68
def ImmCheck0_31 : ImmCheckType<0>; // 0..31 (used for e.g. predicate patterns)
79
def ImmCheck1_16 : ImmCheckType<1>; // 1..16
810
def ImmCheckExtract : ImmCheckType<2>; // 0..(2048/sizeinbits(elt) - 1)
911
def ImmCheckShiftRight : ImmCheckType<3>; // 1..sizeinbits(elt)
1012
def ImmCheckShiftRightNarrow : ImmCheckType<4>; // 1..sizeinbits(elt)/2
1113
def ImmCheckShiftLeft : ImmCheckType<5>; // 0..(sizeinbits(elt) - 1)
1214
def ImmCheck0_7 : ImmCheckType<6>; // 0..7
13-
def ImmCheckLaneIndex : ImmCheckType<7>; // 0..(sizeinbits(vec)/(sizeinbits(elt)) - 1)
15+
def ImmCheckLaneIndex : ImmCheckType<7>; // 0..(container_size/(sizeinbits(elt)) - 1)
1416
def ImmCheckCvt : ImmCheckType<8>; // 1..sizeinbits(elt) (same as ShiftRight)
15-
def ImmCheckLaneIndexCompRotate : ImmCheckType<9>; // 0..(sizeinbits(vec)/(2*sizeinbits(elt)) - 1)
16-
def ImmCheckLaneIndexDot : ImmCheckType<10>; // 0..(sizeinbits(vec)/(4*sizeinbits(elt)) - 1)
17+
def ImmCheckLaneIndexCompRotate : ImmCheckType<9>; // 0..(container_size/(2*sizeinbits(elt)) - 1)
18+
def ImmCheckLaneIndexDot : ImmCheckType<10>; // 0..(container_size/(4*sizeinbits(elt)) - 1)
1719
def ImmCheckComplexRot90_270 : ImmCheckType<11>; // [90,270]
1820
def ImmCheckComplexRotAll90 : ImmCheckType<12>; // [0, 90, 180,270]
1921
def ImmCheck0_13 : ImmCheckType<13>; // 0..13

clang/lib/Sema/SemaARM.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ enum ArmSMEState : unsigned {
372372

373373
bool SemaARM::CheckImmediateArg(CallExpr *TheCall, unsigned CheckTy,
374374
unsigned ArgIdx, unsigned EltBitWidth,
375-
unsigned VecBitWidth) {
375+
unsigned ContainerBitWidth) {
376376
// Function that checks whether the operand (ArgIdx) is an immediate
377377
// that is one of a given set of values.
378378
auto CheckImmediateInSet = [&](std::initializer_list<int64_t> Set,
@@ -445,17 +445,17 @@ bool SemaARM::CheckImmediateArg(CallExpr *TheCall, unsigned CheckTy,
445445
break;
446446
case ImmCheckType::ImmCheckLaneIndex:
447447
if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0,
448-
(VecBitWidth / EltBitWidth) - 1))
448+
(ContainerBitWidth / EltBitWidth) - 1))
449449
return true;
450450
break;
451451
case ImmCheckType::ImmCheckLaneIndexCompRotate:
452-
if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0,
453-
(VecBitWidth / (2 * EltBitWidth)) - 1))
452+
if (SemaRef.BuiltinConstantArgRange(
453+
TheCall, ArgIdx, 0, (ContainerBitWidth / (2 * EltBitWidth)) - 1))
454454
return true;
455455
break;
456456
case ImmCheckType::ImmCheckLaneIndexDot:
457-
if (SemaRef.BuiltinConstantArgRange(TheCall, ArgIdx, 0,
458-
(VecBitWidth / (4 * EltBitWidth)) - 1))
457+
if (SemaRef.BuiltinConstantArgRange(
458+
TheCall, ArgIdx, 0, (ContainerBitWidth / (4 * EltBitWidth)) - 1))
459459
return true;
460460
break;
461461
case ImmCheckType::ImmCheckComplexRot90_270:
@@ -515,13 +515,13 @@ bool SemaARM::PerformNeonImmChecks(
515515
bool HasError = false;
516516

517517
for (const auto &I : ImmChecks) {
518-
auto [ArgIdx, CheckTy, ElementSizeInBits, VecSizeInBits] = I;
518+
auto [ArgIdx, CheckTy, ElementBitWidth, VecBitWidth] = I;
519519

520520
if (OverloadType >= 0)
521-
ElementSizeInBits = NeonTypeFlags(OverloadType).getEltSizeInBits();
521+
ElementBitWidth = NeonTypeFlags(OverloadType).getEltSizeInBits();
522522

523-
HasError |= CheckImmediateArg(TheCall, CheckTy, ArgIdx, ElementSizeInBits,
524-
VecSizeInBits);
523+
HasError |= CheckImmediateArg(TheCall, CheckTy, ArgIdx, ElementBitWidth,
524+
VecBitWidth);
525525
}
526526

527527
return HasError;
@@ -532,9 +532,9 @@ bool SemaARM::PerformSVEImmChecks(
532532
bool HasError = false;
533533

534534
for (const auto &I : ImmChecks) {
535-
auto [ArgIdx, CheckTy, ElementSizeInBits] = I;
535+
auto [ArgIdx, CheckTy, ElementBitWidth] = I;
536536
HasError |=
537-
CheckImmediateArg(TheCall, CheckTy, ArgIdx, ElementSizeInBits, 128);
537+
CheckImmediateArg(TheCall, CheckTy, ArgIdx, ElementBitWidth, 128);
538538
}
539539

540540
return HasError;

0 commit comments

Comments
 (0)