Skip to content

Commit ce4577a

Browse files
committed
Refactor review comments and remove unrelated files
1 parent 93b6fb3 commit ce4577a

File tree

2 files changed

+39
-45
lines changed

2 files changed

+39
-45
lines changed

clang/lib/AST/ByteCode/InterpBuiltin.cpp

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2855,16 +2855,13 @@ static bool interp__builtin_x86_extract_vector(InterpState &S, CodePtr OpPC,
28552855
unsigned ID) {
28562856
assert(Call->getNumArgs() == 2);
28572857

2858-
// srcimm
28592858
APSInt ImmAPS = popToAPSInt(S, Call->getArg(1));
28602859
uint64_t Index = ImmAPS.getZExtValue();
28612860

2862-
// srcvec
28632861
const Pointer &Src = S.Stk.pop<Pointer>();
28642862
if (!Src.getFieldDesc()->isPrimitiveArray())
28652863
return false;
28662864

2867-
// destination (return value)
28682865
const Pointer &Dst = S.Stk.peek<Pointer>();
28692866
if (!Dst.getFieldDesc()->isPrimitiveArray())
28702867
return false;
@@ -2879,12 +2876,11 @@ static bool interp__builtin_x86_extract_vector(InterpState &S, CodePtr OpPC,
28792876
unsigned Lane = static_cast<unsigned>(Index % NumLanes);
28802877
unsigned ExtractPos = Lane * DstElems;
28812878

2882-
// element type
2883-
PrimType ElemPT = Src.getFieldDesc()->getPrimType();
2884-
if (ElemPT != Dst.getFieldDesc()->getPrimType())
2879+
PrimType ElemT = Src.getFieldDesc()->getPrimType();
2880+
if (ElemT != Dst.getFieldDesc()->getPrimType())
28852881
return false;
28862882

2887-
TYPE_SWITCH(ElemPT, {
2883+
TYPE_SWITCH(ElemT, {
28882884
for (unsigned I = 0; I != DstElems; ++I) {
28892885
Dst.elem<T>(I) = Src.elem<T>(ExtractPos + I);
28902886
}
@@ -2899,41 +2895,40 @@ static bool interp__builtin_x86_extract_vector_masked(InterpState &S, CodePtr Op
28992895
unsigned ID) {
29002896
assert(Call->getNumArgs() == 4);
29012897

2902-
APSInt UAPS = popToAPSInt(S, Call->getArg(3));
2903-
const Pointer &W = S.Stk.pop<Pointer>();
2898+
APSInt MaskAPS = popToAPSInt(S, Call->getArg(3));
2899+
const Pointer &Merge = S.Stk.pop<Pointer>();
29042900
APSInt ImmAPS = popToAPSInt(S, Call->getArg(1));
2905-
const Pointer &A = S.Stk.pop<Pointer>();
2901+
const Pointer &Src = S.Stk.pop<Pointer>();
29062902

2907-
if (!A.getFieldDesc()->isPrimitiveArray() || !W.getFieldDesc()->isPrimitiveArray())
2903+
if (!Src.getFieldDesc()->isPrimitiveArray() || !Merge.getFieldDesc()->isPrimitiveArray())
29082904
return false;
29092905

29102906
const Pointer &Dst = S.Stk.peek<Pointer>();
29112907
if (!Dst.getFieldDesc()->isPrimitiveArray())
29122908
return false;
29132909

2914-
unsigned SrcElems = A.getNumElems();
2910+
unsigned SrcElems = Src.getNumElems();
29152911
unsigned DstElems = Dst.getNumElems();
29162912
if (!SrcElems || !DstElems || (SrcElems % DstElems) != 0)
29172913
return false;
29182914

2919-
// 타입 일치 체크
2920-
PrimType PT = A.getFieldDesc()->getPrimType();
2921-
if (PT != Dst.getFieldDesc()->getPrimType() ||
2922-
PT != W.getFieldDesc()->getPrimType())
2915+
PrimType ElemT = Src.getFieldDesc()->getPrimType();
2916+
if (ElemT != Dst.getFieldDesc()->getPrimType() ||
2917+
ElemT != Merge.getFieldDesc()->getPrimType())
29232918
return false;
29242919

2925-
unsigned numLanes = SrcElems / DstElems;
2926-
unsigned lane = static_cast<unsigned>(ImmAPS.getZExtValue() % numLanes);
2927-
unsigned base = lane * DstElems;
2920+
unsigned NumLanes = SrcElems / DstElems;
2921+
unsigned Lane = static_cast<unsigned>(ImmAPS.getZExtValue() % NumLanes);
2922+
unsigned Base = Lane * DstElems;
29282923

2929-
uint64_t U = UAPS.getZExtValue();
2924+
uint64_t Mask = MaskAPS.getZExtValue();
29302925

2931-
TYPE_SWITCH(PT, {
2932-
for (unsigned i = 0; i < DstElems; ++i) {
2933-
if ((U >> i) & 1)
2934-
Dst.elem<T>(i) = A.elem<T>(base + i);
2926+
TYPE_SWITCH(ElemT, {
2927+
for (unsigned I = 0; I < DstElems; ++I) {
2928+
if ((Mask >> I) & 1)
2929+
Dst.elem<T>(I) = Src.elem<T>(Base + I);
29352930
else
2936-
Dst.elem<T>(i) = W.elem<T>(i);
2931+
Dst.elem<T>(I) = Merge.elem<T>(I);
29372932
}
29382933
});
29392934

clang/lib/AST/ExprConstant.cpp

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12049,13 +12049,13 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
1204912049
if (SrcLen != RetLen * 2)
1205012050
return false;
1205112051

12052-
unsigned idx = SourceImm.getInt().getZExtValue() & 1;
12052+
unsigned Idx = SourceImm.getInt().getZExtValue() & 1;
1205312053

1205412054
SmallVector<APValue, 32> ResultElements;
1205512055
ResultElements.reserve(RetLen);
1205612056

12057-
for (unsigned i = 0; i < RetLen; i++)
12058-
ResultElements.push_back(SourceVec.getVectorElt(idx * RetLen + i));
12057+
for (unsigned I = 0; I < RetLen; I++)
12058+
ResultElements.push_back(SourceVec.getVectorElt(Idx * RetLen + I));
1205912059

1206012060
return Success(APValue(ResultElements.data(), RetLen), E);
1206112061
}
@@ -12072,35 +12072,34 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
1207212072
case X86::BI__builtin_ia32_extractf64x2_512_mask:
1207312073
case X86::BI__builtin_ia32_extracti64x4_mask:
1207412074
case X86::BI__builtin_ia32_extractf64x4_mask:{
12075-
APValue A, W;
12076-
APSInt Imm, U;
12075+
APValue SourceVec, MergeVec;
12076+
APSInt Imm, MaskImm;
1207712077

12078-
if (!EvaluateAsRValue(Info, E->getArg(0), A) || // A
12079-
!EvaluateInteger(E->getArg(1), Imm, Info) || // imm
12080-
!EvaluateAsRValue(Info, E->getArg(2), W) || // W (merge)
12081-
!EvaluateInteger(E->getArg(3), U, Info)) // U (mask)
12078+
if (!EvaluateAsRValue(Info, E->getArg(0), SourceVec) ||
12079+
!EvaluateInteger(E->getArg(1), Imm, Info) ||
12080+
!EvaluateAsRValue(Info, E->getArg(2), MergeVec) ||
12081+
!EvaluateInteger(E->getArg(3), MaskImm, Info))
1208212082
return false;
1208312083

1208412084
const auto *RetVT = E->getType()->castAs<VectorType>();
12085-
// QualType EltTy = RetVT->getElementType();
1208612085
unsigned RetLen = RetVT->getNumElements();
1208712086

12088-
if (!A.isVector() || !W.isVector()) return false;
12089-
unsigned SrcLen = A.getVectorLength();
12087+
if (!SourceVec.isVector() || !MergeVec.isVector()) return false;
12088+
unsigned SrcLen = SourceVec.getVectorLength();
1209012089
if (!SrcLen || !RetLen || (SrcLen % RetLen) != 0) return false;
1209112090

12092-
unsigned lanes = SrcLen / RetLen;
12093-
unsigned lane = static_cast<unsigned>(Imm.getZExtValue() % lanes);
12094-
unsigned base = lane * RetLen;
12095-
uint64_t K = U.getZExtValue();
12091+
unsigned Lanes = SrcLen / RetLen;
12092+
unsigned Lane = static_cast<unsigned>(Imm.getZExtValue() % Lanes);
12093+
unsigned Base = Lane * RetLen;
12094+
uint64_t Mask = MaskImm.getZExtValue();
1209612095

1209712096
SmallVector<APValue, 32> ResultElements;
1209812097
ResultElements.reserve(RetLen);
12099-
for (unsigned i = 0; i < RetLen; ++i) {
12100-
if ((K >> i) & 1)
12101-
ResultElements.push_back(A.getVectorElt(base + i));
12098+
for (unsigned I = 0; I < RetLen; ++I) {
12099+
if ((Mask >> I) & 1)
12100+
ResultElements.push_back(SourceVec.getVectorElt(Base + I));
1210212101
else
12103-
ResultElements.push_back(W.getVectorElt(i));
12102+
ResultElements.push_back(MergeVec.getVectorElt(I));
1210412103
}
1210512104
return Success(APValue(ResultElements.data(), ResultElements.size()), E);
1210612105
}

0 commit comments

Comments
 (0)