13TEST(StdLibIntrinsicOperationsTests, memcpyOperationEqualityTest)
28 EXPECT_EQ(operation1, operation1);
29 EXPECT_NE(operation1, operation2);
30 EXPECT_NE(operation1, operation3);
33TEST(StdLibIntrinsicOperationsTests, memcpyAccessorsTest)
38 auto pointerType = PointerType::Create();
46 auto & constant100 = IntegerConstantOperation::Create(graph.
GetRootRegion(), 32, 100);
49 { &address1, &address2, constant100.output(0), &memState },
54 EXPECT_EQ(MemCpyOperation::destinationInput(memCpy).origin(), &address1);
55 EXPECT_EQ(MemCpyOperation::sourceInput(memCpy).origin(), &address2);
56 EXPECT_EQ(MemCpyOperation::countInput(memCpy).origin(), constant100.output(0));
59TEST(StdLibIntrinsicOperationsTests, memcpyMapMemoryStateInputToOutput)
64 auto pointerType = PointerType::Create();
66 auto ioStateType = IOStateType::Create();
67 auto memStateType = MemoryStateType::Create();
76 auto & constant100 = IntegerConstantOperation::Create(graph.
GetRootRegion(), 32, 100);
78 auto & memCpyNonVolatile = MemCpyNonVolatileOperation::createNode(
81 *constant100.output(0),
82 { &memState1, &memState2 });
84 auto & memCpyVolatile = MemCpyVolatileOperation::CreateNode(
87 *constant100.output(0),
89 { &memState1, &memState2 });
93 &MemCpyOperation::mapMemoryStateInputToOutput(*memCpyNonVolatile.input(3)),
94 memCpyNonVolatile.output(0));
96 &MemCpyOperation::mapMemoryStateInputToOutput(*memCpyNonVolatile.input(4)),
97 memCpyNonVolatile.output(1));
100 &MemCpyOperation::mapMemoryStateInputToOutput(*memCpyVolatile.input(4)),
101 memCpyVolatile.output(1));
103 &MemCpyOperation::mapMemoryStateInputToOutput(*memCpyVolatile.input(5)),
104 memCpyVolatile.output(2));
107TEST(StdLibIntrinsicOperationsTests, memcpyMapMemoryStateOutputToInput)
112 auto pointerType = PointerType::Create();
114 auto ioStateType = IOStateType::Create();
115 auto memStateType = MemoryStateType::Create();
124 auto & constant100 = IntegerConstantOperation::Create(graph.
GetRootRegion(), 32, 100);
126 auto & memCpyNonVolatile = MemCpyNonVolatileOperation::createNode(
129 *constant100.output(0),
130 { &memState1, &memState2 });
132 auto & memCpyVolatile = MemCpyVolatileOperation::CreateNode(
135 *constant100.output(0),
137 { &memState1, &memState2 });
141 MemCpyOperation::mapMemoryStateOutputToInput(*memCpyNonVolatile.output(0)).origin(),
144 MemCpyOperation::mapMemoryStateOutputToInput(*memCpyNonVolatile.output(1)).origin(),
148 MemCpyOperation::mapMemoryStateOutputToInput(*memCpyVolatile.output(1)).origin(),
151 MemCpyOperation::mapMemoryStateOutputToInput(*memCpyVolatile.output(2)).origin(),
155TEST(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);
175TEST(StdLibIntrinsicOperationsTests, memsetAccessorsTest)
180 auto pointerType = PointerType::Create();
183 auto memStateType = MemoryStateType::Create();
189 auto & constant100 = IntegerConstantOperation::Create(graph.
GetRootRegion(), 32, 100);
192 { &address, &value, constant100.output(0), &memState },
197 EXPECT_EQ(MemSetOperation::destinationInput(memsetNode).origin(), &address);
198 EXPECT_EQ(MemSetOperation::valueInput(memsetNode).origin(), &value);
199 EXPECT_EQ(MemSetOperation::lengthInput(memsetNode).origin(), constant100.output(0));
202TEST(StdLibIntrinsicOperationsTests, memsetMapMemoryStateInputToOutput)
207 auto pointerType = PointerType::Create();
210 auto memStateType = MemoryStateType::Create();
218 auto & constant100 = IntegerConstantOperation::Create(graph.
GetRootRegion(), 32, 100);
220 auto & memsetNode = MemSetNonVolatileOperation::createNode(
223 *constant100.output(0),
224 { &memState1, &memState2 });
228 &MemSetOperation::mapMemoryStateInputToOutput(*memsetNode.input(3)),
229 memsetNode.output(0));
231 &MemSetOperation::mapMemoryStateInputToOutput(*memsetNode.input(4)),
232 memsetNode.output(1));
235TEST(StdLibIntrinsicOperationsTests, memsetMapMemoryStateOutputToInput)
240 auto pointerType = PointerType::Create();
243 auto memStateType = MemoryStateType::Create();
251 auto & constant100 = IntegerConstantOperation::Create(graph.
GetRootRegion(), 32, 100);
253 auto & memsetNode = MemSetNonVolatileOperation::createNode(
256 *constant100.output(0),
257 { &memState1, &memState2 });
261 MemSetOperation::mapMemoryStateOutputToInput(*memsetNode.output(0)).origin(),
264 MemSetOperation::mapMemoryStateOutputToInput(*memsetNode.output(1)).origin(),