@@ -2919,40 +2919,38 @@ static bool interp__builtin_x86_insert_subvector(InterpState &S, CodePtr OpPC,
29192919 unsigned ID) {
29202920 assert (Call->getNumArgs () == 3 );
29212921
2922- PrimType ImmPT = *S.getContext ().classify (Call->getArg (2 ));
2923- APSInt ImmAPS = popToAPSInt (S.Stk , ImmPT);
2922+ APSInt ImmAPS = popToAPSInt (S, Call->getArg (2 ));
29242923 uint64_t Index = ImmAPS.getZExtValue ();
29252924
29262925 const Pointer &SubVec = S.Stk .pop <Pointer>();
29272926 if (!SubVec.getFieldDesc ()->isPrimitiveArray ())
29282927 return false ;
29292928
2930- const Pointer &DstVec = S.Stk .pop <Pointer>();
2931- if (!DstVec .getFieldDesc ()->isPrimitiveArray ())
2929+ const Pointer &BaseVec = S.Stk .pop <Pointer>();
2930+ if (!BaseVec .getFieldDesc ()->isPrimitiveArray ())
29322931 return false ;
29332932
2934- const Pointer &Result = S.Stk .peek <Pointer>();
2933+ const Pointer &Dst = S.Stk .peek <Pointer>();
29352934
2936- unsigned DstElements = DstVec .getNumElems ();
2935+ unsigned BaseElements = BaseVec .getNumElems ();
29372936 unsigned SubElements = SubVec.getNumElems ();
29382937
2939- assert (SubElements != 0 && DstElements != 0 && (DstElements % SubElements) == 0 );
2938+ assert (SubElements != 0 && BaseElements != 0 && (BaseElements % SubElements) == 0 );
29402939
2941- unsigned NumLanes = DstElements / SubElements;
2940+ unsigned NumLanes = BaseElements / SubElements;
29422941 unsigned Lane = static_cast <unsigned >(Index % NumLanes);
29432942 unsigned InsertPos = Lane * SubElements;
29442943
2945- PrimType ElemPT = DstVec .getFieldDesc ()->getPrimType ();
2944+ PrimType ElemPT = BaseVec .getFieldDesc ()->getPrimType ();
29462945
29472946 TYPE_SWITCH (ElemPT, {
2948- for (unsigned I = 0 ; I != DstElements; ++I)
2949- Result.elem <T>(I) = DstVec.elem <T>(I);
2950-
2947+ for (unsigned I = 0 ; I != BaseElements; ++I)
2948+ Dst.elem <T>(I) = BaseVec.elem <T>(I);
29512949 for (unsigned I = 0 ; I != SubElements; ++I)
2952- Result .elem <T>(InsertPos + I) = SubVec.elem <T>(I);
2950+ Dst .elem <T>(InsertPos + I) = SubVec.elem <T>(I);
29532951 });
29542952
2955- Result .initializeAllElements ();
2953+ Dst .initializeAllElements ();
29562954
29572955 return true ;
29582956}
0 commit comments