1
1
/*
2
- * Copyright (C) 2018-2024 Intel Corporation
2
+ * Copyright (C) 2018-2025 Intel Corporation
3
3
*
4
4
* SPDX-License-Identifier: MIT
5
5
*
@@ -221,8 +221,7 @@ TYPED_TEST(KernelArgImmediateTest, givenTooLargePatchSizeWhenSettingArgThenDontR
221
221
222
222
const auto memoryBeyondLimitBefore = *reinterpret_cast <TypeParam *>(memoryBeyondLimitAddress);
223
223
224
- this ->pKernelInfo ->argAsVal (0 ).elements [0 ].size = sizeof (TypeParam) + 1 ;
225
- auto retVal = pKernel->setArg (0 , sizeof (TypeParam), &memory[0 ]);
224
+ auto retVal = pKernel->setArg (0 , sizeof (memory), memory);
226
225
227
226
const auto memoryBeyondLimitAfter = *reinterpret_cast <TypeParam *>(memoryBeyondLimitAddress);
228
227
EXPECT_EQ (memoryBeyondLimitBefore, memoryBeyondLimitAfter);
@@ -257,43 +256,6 @@ TYPED_TEST(KernelArgImmediateTest, givenNotTooLargePatchSizeWhenSettingArgThenDo
257
256
}
258
257
}
259
258
260
- TYPED_TEST (KernelArgImmediateTest, givenMulitplePatchesAndFirstPatchSizeTooLargeWhenSettingArgThenDontReadMemoryBeyondLimit) {
261
- if (sizeof (TypeParam) == 1 )
262
- return ; // multiple patch chars don't make sense
263
-
264
- for (auto &rootDeviceIndex : this ->context ->getRootDeviceIndices ()) {
265
- auto pKernel = this ->pMultiDeviceKernel ->getKernel (rootDeviceIndex);
266
- TypeParam memory[2 ];
267
- std::memset (&memory[0 ], 0xaa , sizeof (TypeParam));
268
- std::memset (&memory[1 ], 0xbb , sizeof (TypeParam));
269
-
270
- auto &elements = this ->pKernelInfo ->argAsVal (3 ).elements ;
271
- const auto destinationMemoryAddress1 = pKernel->getCrossThreadData () +
272
- elements[2 ].offset ;
273
- const auto destinationMemoryAddress2 = pKernel->getCrossThreadData () +
274
- elements[1 ].offset ;
275
- const auto memoryBeyondLimitAddress1 = destinationMemoryAddress1 + sizeof (TypeParam);
276
- const auto memoryBeyondLimitAddress2 = destinationMemoryAddress2 + sizeof (TypeParam) / 2 ;
277
-
278
- const std::vector<unsigned char > memoryBeyondLimitBefore1 (memoryBeyondLimitAddress1, memoryBeyondLimitAddress1 + sizeof (TypeParam));
279
- const std::vector<unsigned char > memoryBeyondLimitBefore2 (memoryBeyondLimitAddress2, memoryBeyondLimitAddress2 + sizeof (TypeParam) / 2 );
280
-
281
- elements[2 ].sourceOffset = 0 ;
282
- elements[1 ].sourceOffset = sizeof (TypeParam) / 2 ;
283
- elements[2 ].size = sizeof (TypeParam);
284
- elements[1 ].size = sizeof (TypeParam) / 2 ;
285
- auto retVal = pKernel->setArg (3 , sizeof (TypeParam), &memory[0 ]);
286
-
287
- EXPECT_EQ (0 , std::memcmp (memoryBeyondLimitBefore1.data (), memoryBeyondLimitAddress1, sizeof (TypeParam)));
288
- EXPECT_EQ (0 , std::memcmp (memoryBeyondLimitBefore2.data (), memoryBeyondLimitAddress2, sizeof (TypeParam) / 2 ));
289
-
290
- EXPECT_EQ (0 , std::memcmp (&memory[0 ], destinationMemoryAddress1, sizeof (TypeParam)));
291
- EXPECT_EQ (0 , std::memcmp (&memory[0 ], destinationMemoryAddress2, sizeof (TypeParam) / 2 ));
292
-
293
- EXPECT_EQ (CL_SUCCESS, retVal);
294
- }
295
- }
296
-
297
259
TYPED_TEST (KernelArgImmediateTest, givenMulitplePatchesAndSecondPatchSizeTooLargeWhenSettingArgThenDontReadMemoryBeyondLimit) {
298
260
if (sizeof (TypeParam) == 1 )
299
261
return ; // multiple patch chars don't make sense
@@ -310,17 +272,17 @@ TYPED_TEST(KernelArgImmediateTest, givenMulitplePatchesAndSecondPatchSizeTooLarg
310
272
const auto destinationMemoryAddress2 = pKernel->getCrossThreadData () +
311
273
elements[1 ].offset ;
312
274
const auto memoryBeyondLimitAddress1 = destinationMemoryAddress1 + sizeof (TypeParam) / 2 ;
313
- const auto memoryBeyondLimitAddress2 = destinationMemoryAddress2 + sizeof (TypeParam) / 2 ;
275
+ const auto memoryBeyondLimitAddress2 = destinationMemoryAddress2 + sizeof (TypeParam);
314
276
315
277
const std::vector<unsigned char > memoryBeyondLimitBefore1 (memoryBeyondLimitAddress1, memoryBeyondLimitAddress1 + sizeof (TypeParam) / 2 );
316
- const std::vector<unsigned char > memoryBeyondLimitBefore2 (memoryBeyondLimitAddress2, memoryBeyondLimitAddress2 + sizeof (TypeParam) / 2 );
278
+ const std::vector<unsigned char > memoryBeyondLimitBefore2 (memoryBeyondLimitAddress2, memoryBeyondLimitAddress2 + sizeof (TypeParam));
317
279
318
280
elements[0 ].size = 0 ;
319
281
elements[2 ].sourceOffset = 0 ;
320
282
elements[1 ].sourceOffset = sizeof (TypeParam) / 2 ;
321
283
elements[2 ].size = sizeof (TypeParam) / 2 ;
322
284
elements[1 ].size = sizeof (TypeParam);
323
- auto retVal = pKernel->setArg (3 , sizeof (TypeParam ), & memory[ 0 ] );
285
+ auto retVal = pKernel->setArg (3 , sizeof (memory ), memory);
324
286
325
287
EXPECT_EQ (0 , std::memcmp (memoryBeyondLimitBefore1.data (), memoryBeyondLimitAddress1, sizeof (TypeParam) / 2 ));
326
288
EXPECT_EQ (0 , std::memcmp (memoryBeyondLimitBefore2.data (), memoryBeyondLimitAddress2, sizeof (TypeParam) / 2 ));
@@ -333,6 +295,9 @@ TYPED_TEST(KernelArgImmediateTest, givenMulitplePatchesAndSecondPatchSizeTooLarg
333
295
}
334
296
335
297
TYPED_TEST (KernelArgImmediateTest, givenMultiplePatchesAndOneSourceOffsetBeyondArgumentWhenSettingArgThenDontCopyThisPatch) {
298
+ if (sizeof (TypeParam) == 1u ) {
299
+ GTEST_SKIP ();
300
+ }
336
301
for (auto &rootDeviceIndex : this ->context ->getRootDeviceIndices ()) {
337
302
auto pKernel = this ->pMultiDeviceKernel ->getKernel (rootDeviceIndex);
338
303
TypeParam memory[2 ];
@@ -345,22 +310,23 @@ TYPED_TEST(KernelArgImmediateTest, givenMultiplePatchesAndOneSourceOffsetBeyondA
345
310
const auto destinationMemoryAddress2 = pKernel->getCrossThreadData () +
346
311
elements[2 ].offset ;
347
312
const auto memoryBeyondLimitAddress1 = destinationMemoryAddress1 + sizeof (TypeParam);
348
- const auto memoryBeyondLimitAddress2 = destinationMemoryAddress2;
313
+ const auto memoryBeyondLimitAddress2 = destinationMemoryAddress2 + 1 ;
349
314
350
315
const std::vector<unsigned char > memoryBeyondLimitBefore1 (memoryBeyondLimitAddress1, memoryBeyondLimitAddress1 + sizeof (TypeParam));
351
- const std::vector<unsigned char > memoryBeyondLimitBefore2 (memoryBeyondLimitAddress2, memoryBeyondLimitAddress2 + sizeof (TypeParam));
316
+ const std::vector<unsigned char > memoryBeyondLimitBefore2 (memoryBeyondLimitAddress2, memoryBeyondLimitAddress2 + sizeof (TypeParam) - 1 );
352
317
353
318
elements[0 ].size = 0 ;
354
319
elements[1 ].sourceOffset = 0 ;
355
320
elements[1 ].size = sizeof (TypeParam);
356
321
elements[2 ].sourceOffset = sizeof (TypeParam);
357
322
elements[2 ].size = 1 ;
358
- auto retVal = pKernel->setArg (3 , sizeof (TypeParam ), & memory[ 0 ] );
323
+ auto retVal = pKernel->setArg (3 , sizeof (memory ), memory);
359
324
360
325
EXPECT_EQ (0 , std::memcmp (memoryBeyondLimitBefore1.data (), memoryBeyondLimitAddress1, memoryBeyondLimitBefore1.size ()));
361
326
EXPECT_EQ (0 , std::memcmp (memoryBeyondLimitBefore2.data (), memoryBeyondLimitAddress2, memoryBeyondLimitBefore2.size ()));
362
327
363
328
EXPECT_EQ (0 , std::memcmp (&memory[0 ], destinationMemoryAddress1, sizeof (TypeParam)));
329
+ EXPECT_EQ (0 , std::memcmp (&memory[1 ], destinationMemoryAddress2, 1 ));
364
330
365
331
EXPECT_EQ (CL_SUCCESS, retVal);
366
332
}
0 commit comments