[PATCH] D108249: [flang] Fix the vector version of EOSHIFT with a BOUNDARY argument
Pete Steinfeld via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 17 15:01:54 PDT 2021
PeteSteinfeld created this revision.
PeteSteinfeld requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
When the vector version of EOSHIFT was called, the BOUNDARY argument was being
ignored. I fixed that and added a test that would not pass without this fix.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D108249
Files:
flang/runtime/transformational.cpp
flang/unittests/Runtime/Transformational.cpp
Index: flang/unittests/Runtime/Transformational.cpp
===================================================================
--- flang/unittests/Runtime/Transformational.cpp
+++ flang/unittests/Runtime/Transformational.cpp
@@ -110,6 +110,26 @@
*result.ZeroBasedIndexedElement<std::int32_t>(j), eoshiftExpect1[j]);
}
result.Destroy();
+
+ // VECTOR EOSHIFT
+ StaticDescriptor<0> boundaryDescriptor;
+ Descriptor vectorBoundary{boundaryDescriptor.descriptor()};
+ std::int32_t boundaryValue{343};
+ vectorBoundary.Establish(TypeCategory::Integer, 4,
+ const_cast<void *>(reinterpret_cast<const void *>(&boundaryValue)), 0);
+ RTNAME(EoshiftVector)
+ (vectorResult, *vector, 2, &vectorBoundary, __FILE__, __LINE__);
+ EXPECT_EQ(vectorResult.type(), array->type());
+ EXPECT_EQ(vectorResult.rank(), 1);
+ EXPECT_EQ(vectorResult.GetDimension(0).LowerBound(), 1);
+ EXPECT_EQ(vectorResult.GetDimension(0).Extent(), 6);
+ EXPECT_EQ(vectorResult.type(), (TypeCode{TypeCategory::Integer, 4}));
+ static std::int32_t eoshiftVectorExpect[6]{3, 4, 5, 6, 343, 343};
+ for (int j{0}; j < 6; ++j) {
+ EXPECT_EQ(*vectorResult.ZeroBasedIndexedElement<std::int32_t>(j),
+ eoshiftVectorExpect[j]);
+ }
+ vectorResult.Destroy();
}
TEST(Transformational, Pack) {
Index: flang/runtime/transformational.cpp
===================================================================
--- flang/runtime/transformational.cpp
+++ flang/runtime/transformational.cpp
@@ -284,6 +284,8 @@
SubscriptValue sourceAt{lb + j - 1 + shift};
if (sourceAt >= lb && sourceAt < lb + extent) {
CopyElement(result, &j, source, &sourceAt, terminator);
+ } else if (boundary) {
+ CopyElement(result, &j, *boundary, 0, terminator);
}
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D108249.367028.patch
Type: text/x-patch
Size: 1762 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210817/0245462b/attachment.bin>
More information about the llvm-commits
mailing list