mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-18 18:15:44 +00:00
Don't provide vectorization hints for operations that can be done inplace.
Previously we hinted to the compiler that it should vectorized operations where the input and output are the same array. This obviously caused problems, and these hints had to be removed. In the future we need to first check for aliased arrays, and go from there.
This commit is contained in:
parent
177b31f330
commit
73b90a2e44
@ -225,14 +225,10 @@ public:
|
||||
//The ICC compiler has been found to improperly optimize the copy_backwards
|
||||
//into a standard copy, causing the above issue.
|
||||
T lastValue = inputPortal.Get(numberOfValues - 1);
|
||||
|
||||
VTKM_VECTORIZATION_PRE_LOOP
|
||||
for(vtkm::Id i=(numberOfValues-1); i >= 1; --i)
|
||||
{
|
||||
//nothing for gcc as input & output could be the same
|
||||
VTKM_VECTORIZATION_IN_LOOP
|
||||
{
|
||||
outputPortal.Set(i, inputPortal.Get(i-1));
|
||||
}
|
||||
}
|
||||
outputPortal.Set(0, initialValue);
|
||||
|
||||
std::partial_sum(vtkm::cont::ArrayPortalToIteratorBegin(outputPortal),
|
||||
@ -358,11 +354,9 @@ private:
|
||||
PortalI indexPortal = index.PrepareForInput(Device());
|
||||
PortalVout valuesOutPortal = values_out.PrepareForOutput(n, Device());
|
||||
|
||||
VTKM_VECTORIZATION_PRE_LOOP
|
||||
for (vtkm::Id i=0; i<n; i++)
|
||||
{
|
||||
VTKM_VECTORIZATION_IN_LOOP
|
||||
valuesOutPortal.Set( i, valuesPortal.Get(indexPortal.Get(i)) );
|
||||
valuesOutPortal.Set( i, valuesPortal.Get(indexPortal.Get(i)) );
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user