|
1 | 1 | //================================================================================ |
2 | 2 | // this file has been auto-generated, do not modify its contents! |
3 | | -// date: 2023-03-31 15:49:21.313654 |
4 | | -// git hash: 15a7d65de3867323ab1b14f1d624c45ed733d904 |
| 3 | +// date: 2023-03-31 16:04:17.777000 |
| 4 | +// git hash: 5a6b682ac483b61ec8a1697bf6adf4e929021574 |
5 | 5 | //================================================================================ |
6 | 6 |
|
7 | 7 |
|
@@ -487,35 +487,39 @@ enum struct Alignment { |
487 | 487 | }; |
488 | 488 |
|
489 | 489 | constexpr size_t calculate_alignment(Alignment required, size_t min_alignment, size_t total_size) { |
490 | | - if (required == Alignment::Packed) { |
| 490 | + size_t alignment = 1; |
| 491 | + |
| 492 | + if (required == Alignment::Maximum) { |
491 | 493 | if (total_size <= 1) { |
492 | | - return 1; |
| 494 | + alignment = 1; |
493 | 495 | } else if (total_size <= 2) { |
494 | | - return 2; |
| 496 | + alignment = 2; |
495 | 497 | } else if (total_size <= 4) { |
496 | | - return 4; |
| 498 | + alignment = 4; |
497 | 499 | } else if (total_size <= 8) { |
498 | | - return 8; |
| 500 | + alignment = 8; |
499 | 501 | } else { |
500 | | - return 16; |
| 502 | + alignment = 16; |
501 | 503 | } |
502 | | - } else if (required == Alignment::Maximum) { |
| 504 | + } else if (required == Alignment::Packed) { |
503 | 505 | if (total_size % 16 == 0) { |
504 | | - return 16; |
| 506 | + alignment = 16; |
505 | 507 | } else if (total_size % 8 == 0) { |
506 | | - return 8; |
| 508 | + alignment = 8; |
507 | 509 | } else if (total_size % 4 == 0) { |
508 | | - return 4; |
| 510 | + alignment = 4; |
509 | 511 | } else if (total_size % 2 == 0) { |
510 | | - return 2; |
| 512 | + alignment = 2; |
511 | 513 | } else { |
512 | | - return 1; |
| 514 | + alignment = 1; |
513 | 515 | } |
514 | 516 | } |
515 | 517 |
|
516 | | - else { |
517 | | - return min_alignment; |
| 518 | + if (min_alignment > alignment) { |
| 519 | + alignment = min_alignment; |
518 | 520 | } |
| 521 | + |
| 522 | + return alignment; |
519 | 523 | } |
520 | 524 |
|
521 | 525 | template<typename T, size_t N, Alignment A, typename = void> |
@@ -725,7 +729,7 @@ KERNEL_FLOAT_DEFINE_VECTOR_TYPE(double, double1, double2, double3, double4) |
725 | 729 | template<typename V, size_t N> |
726 | 730 | struct nested_array { |
727 | 731 | static constexpr size_t num_packets = (N + vector_size<V> - 1) / vector_size<V>; |
728 | | - static_assert(num_packets * vector_size<V> <= N, "internal error"); |
| 732 | + static_assert(num_packets * vector_size<V> >= N, "internal error"); |
729 | 733 |
|
730 | 734 | V packets[num_packets]; |
731 | 735 |
|
|
0 commit comments