6 #include <gtest/gtest.h>
13 TEST(StdLibIntrinsicOperationsTests, memcpyOperationEqualityTest)
28 EXPECT_EQ(operation1, operation1);
29 EXPECT_NE(operation1, operation2);
30 EXPECT_NE(operation1, operation3);
33 TEST(StdLibIntrinsicOperationsTests, memcpyAccessorsTest)
48 auto & memCpy = jlm::rvsdg::CreateOpNode<MemCpyNonVolatileOperation>(
49 { &address1, &address2, constant100.output(0), &memState },
59 TEST(StdLibIntrinsicOperationsTests, memcpyMapMemoryStateInputToOutput)
81 *constant100.output(0),
82 { &memState1, &memState2 });
87 *constant100.output(0),
89 { &memState1, &memState2 });
94 memCpyNonVolatile.output(0));
97 memCpyNonVolatile.output(1));
101 memCpyVolatile.output(1));
104 memCpyVolatile.output(2));
107 TEST(StdLibIntrinsicOperationsTests, memcpyMapMemoryStateOutputToInput)
129 *constant100.output(0),
130 { &memState1, &memState2 });
135 *constant100.output(0),
137 { &memState1, &memState2 });
155 TEST(StdLibIntrinsicOperationsTests, memsetOperationEquality)
161 auto valueType = TestType::createValueType();
162 auto bit32Type = BitType::Create(32);
163 auto bit64Type = BitType::Create(64);
170 EXPECT_EQ(operation1, operation1);
171 EXPECT_NE(operation1, operation2);
172 EXPECT_NE(operation1, operation3);
175 TEST(StdLibIntrinsicOperationsTests, memsetAccessorsTest)
191 auto & memsetNode = jlm::rvsdg::CreateOpNode<MemSetNonVolatileOperation>(
192 { &address, &value, constant100.output(0), &memState },
202 TEST(StdLibIntrinsicOperationsTests, memsetMapMemoryStateInputToOutput)
223 *constant100.output(0),
224 { &memState1, &memState2 });
229 memsetNode.output(0));
232 memsetNode.output(1));
235 TEST(StdLibIntrinsicOperationsTests, memsetMapMemoryStateOutputToInput)
256 *constant100.output(0),
257 { &memState1, &memState2 });
TEST(StdLibIntrinsicOperationsTests, memcpyOperationEqualityTest)
static std::shared_ptr< const IOStateType > Create()
static rvsdg::Node & Create(rvsdg::Region ®ion, IntegerValueRepresentation representation)
static rvsdg::SimpleNode & createNode(rvsdg::Output &destination, rvsdg::Output &source, rvsdg::Output &length, const std::vector< rvsdg::Output * > &memoryStates)
static rvsdg::Input & mapMemoryStateOutputToInput(const rvsdg::Output &output)
static rvsdg::Input & destinationInput(const rvsdg::Node &node) noexcept
static rvsdg::Input & countInput(const rvsdg::Node &node) noexcept
static rvsdg::Input & sourceInput(const rvsdg::Node &node) noexcept
static rvsdg::Output & mapMemoryStateInputToOutput(const rvsdg::Input &input)
static rvsdg::SimpleNode & CreateNode(rvsdg::Output &destination, rvsdg::Output &source, rvsdg::Output &length, rvsdg::Output &ioState, const std::vector< rvsdg::Output * > &memoryStates)
static rvsdg::SimpleNode & createNode(rvsdg::Output &destination, rvsdg::Output &value, rvsdg::Output &length, const std::vector< rvsdg::Output * > &memoryStates)
static rvsdg::Input & mapMemoryStateOutputToInput(const rvsdg::Output &output)
static rvsdg::Input & destinationInput(const rvsdg::Node &node) noexcept
static rvsdg::Input & lengthInput(const rvsdg::Node &node) noexcept
static rvsdg::Output & mapMemoryStateInputToOutput(const rvsdg::Input &input)
static rvsdg::Input & valueInput(const rvsdg::Node &node) noexcept
static std::shared_ptr< const MemoryStateType > Create()
static std::shared_ptr< const PointerType > Create()
static std::shared_ptr< const BitType > Create(std::size_t nbits)
Creates bit type of specified width.
static GraphImport & Create(Graph &graph, std::shared_ptr< const rvsdg::Type > type, std::string name)
Region & GetRootRegion() const noexcept
static std::shared_ptr< const TestType > createValueType()
Global memory state passed between functions.