Skip to content

Commit ceaae3c

Browse files
committed
Address code review comments
- Group permvarsi256/permvarsf256 with other AVX2 constexpr builtins - Remove unnecessary SrcIdx variable and use zero directly in pair construction
1 parent af66012 commit ceaae3c

File tree

3 files changed

+13
-25
lines changed

3 files changed

+13
-25
lines changed

clang/include/clang/Basic/BuiltinsX86.td

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -603,11 +603,6 @@ let Features = "avx", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWid
603603
def vec_set_v8si : X86Builtin<"_Vector<8, int>(_Vector<8, int>, int, _Constant int)">;
604604
}
605605

606-
let Features = "avx2", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
607-
def permvarsi256 : X86Builtin<"_Vector<8, int>(_Vector<8, int>, _Vector<8, int>)">;
608-
def permvarsf256 : X86Builtin<"_Vector<8, float>(_Vector<8, float>, _Vector<8, int>)">;
609-
}
610-
611606
let Features = "avx2", Attributes = [NoThrow, Const, RequiredVectorWidth<256>] in {
612607
def mpsadbw256 : X86Builtin<"_Vector<32, char>(_Vector<32, char>, _Vector<32, char>, _Constant char)">;
613608

@@ -695,6 +690,9 @@ let Features = "avx2", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWi
695690
def pshuflw256 : X86Builtin<"_Vector<16, short>(_Vector<16, short>, _Constant int)">;
696691
def pshufhw256 : X86Builtin<"_Vector<16, short>(_Vector<16, short>, _Constant int)">;
697692
def pshufd256 : X86Builtin<"_Vector<8, int>(_Vector<8, int>, _Constant int)">;
693+
694+
def permvarsi256 : X86Builtin<"_Vector<8, int>(_Vector<8, int>, _Vector<8, int>)">;
695+
def permvarsf256 : X86Builtin<"_Vector<8, float>(_Vector<8, float>, _Vector<8, int>)">;
698696
}
699697

700698
let Features = "avx2", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {

clang/lib/AST/ByteCode/InterpBuiltin.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4422,8 +4422,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
44224422
return interp__builtin_ia32_shuffle_generic(
44234423
S, OpPC, Call, [](unsigned DstIdx, unsigned ShuffleMask) {
44244424
int Offset = ShuffleMask & 0x7;
4425-
unsigned SrcIdx = 0;
4426-
return std::pair<unsigned, int>{SrcIdx, Offset};
4425+
return std::pair<unsigned, int>{0, Offset};
44274426
});
44284427
case X86::BI__builtin_ia32_permvarqi128:
44294428
case X86::BI__builtin_ia32_permvarhi256:
@@ -4432,31 +4431,27 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
44324431
return interp__builtin_ia32_shuffle_generic(
44334432
S, OpPC, Call, [](unsigned DstIdx, unsigned ShuffleMask) {
44344433
int Offset = ShuffleMask & 0xF;
4435-
unsigned SrcIdx = 0;
4436-
return std::pair<unsigned, int>{SrcIdx, Offset};
4434+
return std::pair<unsigned, int>{0, Offset};
44374435
});
44384436
case X86::BI__builtin_ia32_permvardi256:
44394437
case X86::BI__builtin_ia32_permvardf256:
44404438
return interp__builtin_ia32_shuffle_generic(
44414439
S, OpPC, Call, [](unsigned DstIdx, unsigned ShuffleMask) {
44424440
int Offset = ShuffleMask & 0x3;
4443-
unsigned SrcIdx = 0;
4444-
return std::pair<unsigned, int>{SrcIdx, Offset};
4441+
return std::pair<unsigned, int>{0, Offset};
44454442
});
44464443
case X86::BI__builtin_ia32_permvarqi256:
44474444
case X86::BI__builtin_ia32_permvarhi512:
44484445
return interp__builtin_ia32_shuffle_generic(
44494446
S, OpPC, Call, [](unsigned DstIdx, unsigned ShuffleMask) {
44504447
int Offset = ShuffleMask & 0x1F;
4451-
unsigned SrcIdx = 0;
4452-
return std::pair<unsigned, int>{SrcIdx, Offset};
4448+
return std::pair<unsigned, int>{0, Offset};
44534449
});
44544450
case X86::BI__builtin_ia32_permvarqi512:
44554451
return interp__builtin_ia32_shuffle_generic(
44564452
S, OpPC, Call, [](unsigned DstIdx, unsigned ShuffleMask) {
44574453
int Offset = ShuffleMask & 0x3F;
4458-
unsigned SrcIdx = 0;
4459-
return std::pair<unsigned, int>{SrcIdx, Offset};
4454+
return std::pair<unsigned, int>{0, Offset};
44604455
});
44614456
case X86::BI__builtin_ia32_vpermi2varq128:
44624457
case X86::BI__builtin_ia32_vpermi2varpd128:

clang/lib/AST/ExprConstant.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13560,8 +13560,7 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
1356013560
if (!evalShuffleGeneric(Info, E, R,
1356113561
[](unsigned DstIdx, unsigned ShuffleMask) {
1356213562
int Offset = ShuffleMask & 0x7;
13563-
unsigned SrcIdx = 0;
13564-
return std::pair<unsigned, int>{SrcIdx, Offset};
13563+
return std::pair<unsigned, int>{0, Offset};
1356513564
}))
1356613565
return false;
1356713566
return Success(R, E);
@@ -13574,8 +13573,7 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
1357413573
if (!evalShuffleGeneric(Info, E, R,
1357513574
[](unsigned DstIdx, unsigned ShuffleMask) {
1357613575
int Offset = ShuffleMask & 0xF;
13577-
unsigned SrcIdx = 0;
13578-
return std::pair<unsigned, int>{SrcIdx, Offset};
13576+
return std::pair<unsigned, int>{0, Offset};
1357913577
}))
1358013578
return false;
1358113579
return Success(R, E);
@@ -13586,8 +13584,7 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
1358613584
if (!evalShuffleGeneric(Info, E, R,
1358713585
[](unsigned DstIdx, unsigned ShuffleMask) {
1358813586
int Offset = ShuffleMask & 0x3;
13589-
unsigned SrcIdx = 0;
13590-
return std::pair<unsigned, int>{SrcIdx, Offset};
13587+
return std::pair<unsigned, int>{0, Offset};
1359113588
}))
1359213589
return false;
1359313590
return Success(R, E);
@@ -13598,8 +13595,7 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
1359813595
if (!evalShuffleGeneric(Info, E, R,
1359913596
[](unsigned DstIdx, unsigned ShuffleMask) {
1360013597
int Offset = ShuffleMask & 0x1F;
13601-
unsigned SrcIdx = 0;
13602-
return std::pair<unsigned, int>{SrcIdx, Offset};
13598+
return std::pair<unsigned, int>{0, Offset};
1360313599
}))
1360413600
return false;
1360513601
return Success(R, E);
@@ -13609,8 +13605,7 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
1360913605
if (!evalShuffleGeneric(Info, E, R,
1361013606
[](unsigned DstIdx, unsigned ShuffleMask) {
1361113607
int Offset = ShuffleMask & 0x3F;
13612-
unsigned SrcIdx = 0;
13613-
return std::pair<unsigned, int>{SrcIdx, Offset};
13608+
return std::pair<unsigned, int>{0, Offset};
1361413609
}))
1361513610
return false;
1361613611
return Success(R, E);

0 commit comments

Comments
 (0)