Merge topic 'safer_vectorizations_for_serial_backend'

73b90a2e Don't provide vectorization hints for operations that can be done inplace.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !360
This commit is contained in:
Robert Maynard 2016-03-16 15:27:02 -04:00 committed by Kitware Robot
commit 57471721f7

@ -225,14 +225,10 @@ public:
//The ICC compiler has been found to improperly optimize the copy_backwards //The ICC compiler has been found to improperly optimize the copy_backwards
//into a standard copy, causing the above issue. //into a standard copy, causing the above issue.
T lastValue = inputPortal.Get(numberOfValues - 1); T lastValue = inputPortal.Get(numberOfValues - 1);
VTKM_VECTORIZATION_PRE_LOOP
for(vtkm::Id i=(numberOfValues-1); i >= 1; --i) 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(i, inputPortal.Get(i-1));
} }
outputPortal.Set(0, initialValue); outputPortal.Set(0, initialValue);
std::partial_sum(vtkm::cont::ArrayPortalToIteratorBegin(outputPortal), std::partial_sum(vtkm::cont::ArrayPortalToIteratorBegin(outputPortal),
@ -358,11 +354,9 @@ private:
PortalI indexPortal = index.PrepareForInput(Device()); PortalI indexPortal = index.PrepareForInput(Device());
PortalVout valuesOutPortal = values_out.PrepareForOutput(n, Device()); PortalVout valuesOutPortal = values_out.PrepareForOutput(n, Device());
VTKM_VECTORIZATION_PRE_LOOP
for (vtkm::Id i=0; i<n; i++) 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)) );
} }
} }