Lines Matching full:op

45 template <typename Op>
48 OwningOpRef<Op> op = b.create<Op>(loc, TypeRange{}, ValueRange{});
49 EXPECT_FALSE(op->hasAsyncOnly());
51 EXPECT_FALSE(op->hasAsyncOnly(d));
54 op->setAsyncOnlyAttr(b.getArrayAttr({dtypeNone}));
55 EXPECT_TRUE(op->hasAsyncOnly());
56 EXPECT_TRUE(op->hasAsyncOnly(DeviceType::None));
57 op->removeAsyncOnlyAttr();
60 op->setAsyncOnlyAttr(b.getArrayAttr({dtypeHost}));
61 EXPECT_TRUE(op->hasAsyncOnly(DeviceType::Host));
62 EXPECT_FALSE(op->hasAsyncOnly());
63 op->removeAsyncOnlyAttr();
66 op->setAsyncOnlyAttr(b.getArrayAttr({dtypeHost, dtypeStar}));
67 EXPECT_TRUE(op->hasAsyncOnly(DeviceType::Star));
68 EXPECT_TRUE(op->hasAsyncOnly(DeviceType::Host));
69 EXPECT_FALSE(op->hasAsyncOnly());
71 op->removeAsyncOnlyAttr();
80 template <typename Op>
89 OwningOpRef<Op> op = b.create<Op>(loc, varPtr,
92 EXPECT_FALSE(op->hasAsyncOnly());
94 EXPECT_FALSE(op->hasAsyncOnly(d));
97 op->setAsyncOnlyAttr(b.getArrayAttr({dtypeNone}));
98 EXPECT_TRUE(op->hasAsyncOnly());
99 EXPECT_TRUE(op->hasAsyncOnly(DeviceType::None));
100 op->removeAsyncOnlyAttr();
103 op->setAsyncOnlyAttr(b.getArrayAttr({dtypeHost}));
104 EXPECT_TRUE(op->hasAsyncOnly(DeviceType::Host));
105 EXPECT_FALSE(op->hasAsyncOnly());
106 op->removeAsyncOnlyAttr();
109 op->setAsyncOnlyAttr(b.getArrayAttr({dtypeHost, dtypeStar}));
110 EXPECT_TRUE(op->hasAsyncOnly(DeviceType::Star));
111 EXPECT_TRUE(op->hasAsyncOnly(DeviceType::Host));
112 EXPECT_FALSE(op->hasAsyncOnly());
114 op->removeAsyncOnlyAttr();
128 template <typename Op>
131 OwningOpRef<Op> op = b.create<Op>(loc, TypeRange{}, ValueRange{});
134 EXPECT_EQ(op->getAsyncValue(), empty);
136 EXPECT_EQ(op->getAsyncValue(d), empty);
141 op->setAsyncOperandsDeviceTypeAttr(b.getArrayAttr({dtypeNvidia}));
142 op->getAsyncOperandsMutable().assign(val->getResult());
143 EXPECT_EQ(op->getAsyncValue(), empty);
144 EXPECT_EQ(op->getAsyncValue(DeviceType::Nvidia), val->getResult());
146 op->getAsyncOperandsMutable().clear();
147 op->removeAsyncOperandsDeviceTypeAttr();
156 template <typename Op>
165 OwningOpRef<Op> op = b.create<Op>(loc, varPtr,
169 EXPECT_EQ(op->getAsyncValue(), empty);
171 EXPECT_EQ(op->getAsyncValue(d), empty);
176 op->setAsyncOperandsDeviceTypeAttr(b.getArrayAttr({dtypeNvidia}));
177 op->getAsyncOperandsMutable().assign(val->getResult());
178 EXPECT_EQ(op->getAsyncValue(), empty);
179 EXPECT_EQ(op->getAsyncValue(DeviceType::Nvidia), val->getResult());
181 op->getAsyncOperandsMutable().clear();
182 op->removeAsyncOperandsDeviceTypeAttr();
196 template <typename Op>
200 OwningOpRef<Op> op = b.create<Op>(loc, TypeRange{}, ValueRange{});
201 EXPECT_EQ(op->getNumGangsValues().begin(), op->getNumGangsValues().end());
208 op->getNumGangsMutable().assign(val1->getResult());
209 op->setNumGangsDeviceTypeAttr(b.getArrayAttr({dtypeNone}));
210 op->setNumGangsSegments(b.getDenseI32ArrayAttr({1}));
211 EXPECT_EQ(op->getNumGangsValues().front(), val1->getResult());
213 EXPECT_EQ(op->getNumGangsValues(d).begin(), op->getNumGangsValues(d).end());
215 op->getNumGangsMutable().clear();
216 op->removeNumGangsDeviceTypeAttr();
217 op->removeNumGangsSegmentsAttr();
219 EXPECT_EQ(op->getNumGangsValues(d).begin(), op->getNumGangsValues(d).end());
221 op->getNumGangsMutable().append(val1->getResult());
222 op->getNumGangsMutable().append(val2->getResult());
223 op->setNumGangsDeviceTypeAttr(
226 op->setNumGangsSegments(b.getDenseI32ArrayAttr({1, 1}));
227 EXPECT_EQ(op->getNumGangsValues(DeviceType::None).begin(),
228 op->getNumGangsValues(DeviceType::None).end());
229 EXPECT_EQ(op->getNumGangsValues(DeviceType::Host).front(), val1->getResult());
230 EXPECT_EQ(op->getNumGangsValues(DeviceType::Star).front(), val2->getResult());
232 op->getNumGangsMutable().clear();
233 op->removeNumGangsDeviceTypeAttr();
234 op->removeNumGangsSegmentsAttr();
236 EXPECT_EQ(op->getNumGangsValues(d).begin(), op->getNumGangsValues(d).end());
238 op->getNumGangsMutable().append(val1->getResult());
239 op->getNumGangsMutable().append(val2->getResult());
240 op->getNumGangsMutable().append(val1->getResult());
241 op->setNumGangsDeviceTypeAttr(
244 op->setNumGangsSegments(b.getDenseI32ArrayAttr({2, 1}));
245 EXPECT_EQ(op->getNumGangsValues(DeviceType::None).begin(),
246 op->getNumGangsValues(DeviceType::None).end());
247 EXPECT_EQ(op->getNumGangsValues(DeviceType::Default).front(),
249 EXPECT_EQ(op->getNumGangsValues(DeviceType::Default).drop_front().front(),
251 EXPECT_EQ(op->getNumGangsValues(DeviceType::Multicore).front(),
254 op->getNumGangsMutable().clear();
255 op->removeNumGangsDeviceTypeAttr();
256 op->removeNumGangsSegmentsAttr();
264 template <typename Op>
267 OwningOpRef<Op> op = b.create<Op>(loc, TypeRange{}, ValueRange{});
270 EXPECT_EQ(op->getVectorLengthValue(), empty);
272 EXPECT_EQ(op->getVectorLengthValue(d), empty);
277 op->setVectorLengthDeviceTypeAttr(b.getArrayAttr({dtypeNvidia}));
278 op->getVectorLengthMutable().assign(val->getResult());
279 EXPECT_EQ(op->getVectorLengthValue(), empty);
280 EXPECT_EQ(op->getVectorLengthValue(DeviceType::Nvidia), val->getResult());
282 op->getVectorLengthMutable().clear();
283 op->removeVectorLengthDeviceTypeAttr();
291 template <typename Op>
295 OwningOpRef<Op> op = b.create<Op>(loc, TypeRange{}, ValueRange{});
296 EXPECT_FALSE(op->hasWaitOnly());
298 EXPECT_FALSE(op->hasWaitOnly(d));
301 op->setWaitOnlyAttr(b.getArrayAttr({dtypeNone}));
302 EXPECT_TRUE(op->hasWaitOnly());
303 EXPECT_TRUE(op->hasWaitOnly(DeviceType::None));
305 EXPECT_FALSE(op->hasWaitOnly(d));
306 op->removeWaitOnlyAttr();
309 op->setWaitOnlyAttr(b.getArrayAttr({dtypeHost}));
310 EXPECT_TRUE(op->hasWaitOnly(DeviceType::Host));
311 EXPECT_FALSE(op->hasWaitOnly());
312 op->removeWaitOnlyAttr();
315 op->setWaitOnlyAttr(b.getArrayAttr({dtypeHost, dtypeStar}));
316 EXPECT_TRUE(op->hasWaitOnly(DeviceType::Star));
317 EXPECT_TRUE(op->hasWaitOnly(DeviceType::Host));
318 EXPECT_FALSE(op->hasWaitOnly());
320 op->removeWaitOnlyAttr();
331 template <typename Op>
335 OwningOpRef<Op> op = b.create<Op>(loc, TypeRange{}, ValueRange{});
336 EXPECT_EQ(op->getWaitValues().begin(), op->getWaitValues().end());
345 op->getWaitOperandsMutable().assign(val1->getResult());
346 op->setWaitOperandsDeviceTypeAttr(b.getArrayAttr({dtypeNone}));
347 op->setWaitOperandsSegments(b.getDenseI32ArrayAttr({1}));
348 op->setHasWaitDevnumAttr(b.getBoolArrayAttr({false}));
349 EXPECT_EQ(op->getWaitValues().front(), val1->getResult());
351 EXPECT_TRUE(op->getWaitValues(d).empty());
353 op->getWaitOperandsMutable().clear();
354 op->removeWaitOperandsDeviceTypeAttr();
355 op->removeWaitOperandsSegmentsAttr();
356 op->removeHasWaitDevnumAttr();
358 EXPECT_TRUE(op->getWaitValues(d).empty());
360 op->getWaitOperandsMutable().append(val1->getResult());
361 op->getWaitOperandsMutable().append(val2->getResult());
362 op->setWaitOperandsDeviceTypeAttr(
365 op->setWaitOperandsSegments(b.getDenseI32ArrayAttr({1, 1}));
366 op->setHasWaitDevnumAttr(b.getBoolArrayAttr({false, false}));
367 EXPECT_EQ(op->getWaitValues(DeviceType::None).begin(),
368 op->getWaitValues(DeviceType::None).end());
369 EXPECT_EQ(op->getWaitValues(DeviceType::Host).front(), val1->getResult());
370 EXPECT_EQ(op->getWaitValues(DeviceType::Star).front(), val2->getResult());
372 op->getWaitOperandsMutable().clear();
373 op->removeWaitOperandsDeviceTypeAttr();
374 op->removeWaitOperandsSegmentsAttr();
375 op->removeHasWaitDevnumAttr();
377 EXPECT_TRUE(op->getWaitValues(d).empty());
379 op->getWaitOperandsMutable().append(val1->getResult());
380 op->getWaitOperandsMutable().append(val2->getResult());
381 op->getWaitOperandsMutable().append(val1->getResult());
382 op->setWaitOperandsDeviceTypeAttr(
385 op->setWaitOperandsSegments(b.getDenseI32ArrayAttr({2, 1}));
386 op->setHasWaitDevnumAttr(b.getBoolArrayAttr({false, false}));
387 EXPECT_EQ(op->getWaitValues(DeviceType::None).begin(),
388 op->getWaitValues(DeviceType::None).end());
389 EXPECT_EQ(op->getWaitValues(DeviceType::Default).front(), val1->getResult());
390 EXPECT_EQ(op->getWaitValues(DeviceType::Default).drop_front().front(),
392 EXPECT_EQ(op->getWaitValues(DeviceType::Multicore).front(),
395 op->getWaitOperandsMutable().clear();
396 op->removeWaitOperandsDeviceTypeAttr();
397 op->removeWaitOperandsSegmentsAttr();
399 op->getWaitOperandsMutable().append(val3->getResult());
400 op->getWaitOperandsMutable().append(val2->getResult());
401 op->getWaitOperandsMutable().append(val1->getResult());
402 op->setWaitOperandsDeviceTypeAttr(
404 op->setHasWaitDevnumAttr(b.getBoolArrayAttr({true}));
405 op->setWaitOperandsSegments(b.getDenseI32ArrayAttr({3}));
406 EXPECT_EQ(op->getWaitValues(DeviceType::None).begin(),
407 op->getWaitValues(DeviceType::None).end());
408 EXPECT_FALSE(op->getWaitDevnum());
410 EXPECT_EQ(op->getWaitDevnum(DeviceType::Multicore), val3->getResult());
411 EXPECT_EQ(op->getWaitValues(DeviceType::Multicore).front(),
413 EXPECT_EQ(op->getWaitValues(DeviceType::Multicore).drop_front().front(),
416 op->getWaitOperandsMutable().clear();
417 op->removeWaitOperandsDeviceTypeAttr();
418 op->removeWaitOperandsSegmentsAttr();
419 op->removeHasWaitDevnumAttr();
429 OwningOpRef<LoopOp> op = b.create<LoopOp>(loc, TypeRange{}, ValueRange{});
430 EXPECT_FALSE(op->hasGang());
431 EXPECT_FALSE(op->hasVector());
432 EXPECT_FALSE(op->hasWorker());
434 EXPECT_FALSE(op->hasGang(d));
435 EXPECT_FALSE(op->hasVector(d));
436 EXPECT_FALSE(op->hasWorker(d));
440 op->setGangAttr(b.getArrayAttr({dtypeNone}));
441 EXPECT_TRUE(op->hasGang());
442 EXPECT_TRUE(op->hasGang(DeviceType::None));
444 EXPECT_FALSE(op->hasGang(d));
446 EXPECT_FALSE(op->hasVector(d));
447 EXPECT_FALSE(op->hasWorker(d));
449 op->removeGangAttr();
451 op->setWorkerAttr(b.getArrayAttr({dtypeNone}));
452 EXPECT_TRUE(op->hasWorker());
453 EXPECT_TRUE(op->hasWorker(DeviceType::None));
455 EXPECT_FALSE(op->hasWorker(d));
457 EXPECT_FALSE(op->hasGang(d));
458 EXPECT_FALSE(op->hasVector(d));
460 op->removeWorkerAttr();
462 op->setVectorAttr(b.getArrayAttr({dtypeNone}));
463 EXPECT_TRUE(op->hasVector());
464 EXPECT_TRUE(op->hasVector(DeviceType::None));
466 EXPECT_FALSE(op->hasVector(d));
468 EXPECT_FALSE(op->hasGang(d));
469 EXPECT_FALSE(op->hasWorker(d));
471 op->removeVectorAttr();
475 OwningOpRef<RoutineOp> op =
478 EXPECT_FALSE(op->hasSeq());
479 EXPECT_FALSE(op->hasVector());
480 EXPECT_FALSE(op->hasWorker());
483 EXPECT_FALSE(op->hasSeq(d));
484 EXPECT_FALSE(op->hasVector(d));
485 EXPECT_FALSE(op->hasWorker(d));
489 op->setSeqAttr(b.getArrayAttr({dtypeNone}));
490 EXPECT_TRUE(op->hasSeq());
492 EXPECT_FALSE(op->hasSeq(d));
493 op->removeSeqAttr();
495 op->setVectorAttr(b.getArrayAttr({dtypeNone}));
496 EXPECT_TRUE(op->hasVector());
498 EXPECT_FALSE(op->hasVector(d));
499 op->removeVectorAttr();
501 op->setWorkerAttr(b.getArrayAttr({dtypeNone}));
502 EXPECT_TRUE(op->hasWorker());
504 EXPECT_FALSE(op->hasWorker(d));
505 op->removeWorkerAttr();
507 op->setGangAttr(b.getArrayAttr({dtypeNone}));
508 EXPECT_TRUE(op->hasGang());
510 EXPECT_FALSE(op->hasGang(d));
511 op->removeGangAttr();
513 op->setGangDimDeviceTypeAttr(b.getArrayAttr({dtypeNone}));
514 op->setGangDimAttr(b.getArrayAttr({b.getIntegerAttr(b.getI64Type(), 8)}));
515 EXPECT_TRUE(op->getGangDimValue().has_value());
516 EXPECT_EQ(op->getGangDimValue().value(), 8);
518 EXPECT_FALSE(op->getGangDimValue(d).has_value());
519 op->removeGangDimDeviceTypeAttr();
520 op->removeGangDimAttr();
522 op->setBindNameDeviceTypeAttr(b.getArrayAttr({dtypeNone}));
523 op->setBindNameAttr(b.getArrayAttr({b.getStringAttr("fname")}));
524 EXPECT_TRUE(op->getBindNameValue().has_value());
525 EXPECT_EQ(op->getBindNameValue().value(), "fname");
527 EXPECT_FALSE(op->getBindNameValue(d).has_value());
528 op->removeBindNameDeviceTypeAttr();
529 op->removeBindNameAttr();
532 template <typename Op>
541 OwningOpRef<Op> op = b.create<Op>(loc, varPtr,
544 EXPECT_EQ(op->getVarPtr(), varPtr);
545 EXPECT_EQ(op->getType(), memrefTy);
546 EXPECT_EQ(op->getDataClause(), dataClause);
547 EXPECT_TRUE(op->getImplicit());
548 EXPECT_TRUE(op->getStructured());
549 EXPECT_TRUE(op->getBounds().empty());
550 EXPECT_FALSE(op->getVarPtrPtr());
552 OwningOpRef<Op> op2 = b.create<Op>(loc, varPtr,
561 OwningOpRef<Op> opWithBounds =
562 b.create<Op>(loc, varPtr,
567 OwningOpRef<Op> opWithName =
568 b.create<Op>(loc, varPtr,
605 template <typename Op>
619 OwningOpRef<Op> op = b.create<Op>(loc, accPtr, varPtr,
622 EXPECT_EQ(op->getVarPtr(), varPtr);
623 EXPECT_EQ(op->getAccPtr(), accPtr);
624 EXPECT_EQ(op->getDataClause(), dataClause);
625 EXPECT_TRUE(op->getImplicit());
626 EXPECT_TRUE(op->getStructured());
627 EXPECT_TRUE(op->getBounds().empty());
629 OwningOpRef<Op> op2 = b.create<Op>(loc, accPtr, varPtr,
638 OwningOpRef<Op> opWithBounds =
639 b.create<Op>(loc, accPtr, varPtr,
644 OwningOpRef<Op> opWithName =
645 b.create<Op>(loc, accPtr, varPtr,
657 template <typename Op>
671 OwningOpRef<Op> op = b.create<Op>(loc, accPtr,
674 EXPECT_EQ(op->getAccPtr(), accPtr);
675 EXPECT_EQ(op->getDataClause(), dataClause);
676 EXPECT_TRUE(op->getImplicit());
677 EXPECT_TRUE(op->getStructured());
678 EXPECT_TRUE(op->getBounds().empty());
680 OwningOpRef<Op> op2 = b.create<Op>(loc, accPtr,
689 OwningOpRef<Op> opWithBounds =
690 b.create<Op>(loc, accPtr,
695 OwningOpRef<Op> opWithName =
696 b.create<Op>(loc, accPtr,
708 template <typename Op>
723 OwningOpRef<Op> op = b.create<Op>(loc, var,
726 EXPECT_EQ(op->getVar(), var);
727 EXPECT_EQ(op->getVarPtr(), nullptr);
728 EXPECT_EQ(op->getType(), int64Ty);
729 EXPECT_EQ(op->getVarType(), int64Ty);
730 EXPECT_EQ(op->getDataClause(), dataClause);
731 EXPECT_TRUE(op->getImplicit());
732 EXPECT_TRUE(op->getStructured());
733 EXPECT_TRUE(op->getBounds().empty());
734 EXPECT_FALSE(op->getVarPtrPtr());