Skip to content

Commit c0369d7

Browse files
authored
Merge pull request #388 from dzenanz/loopUnrolling
Review suggestion by @RubioJr9 in PR #384
2 parents d4f6c94 + 8da2d68 commit c0369d7

File tree

1 file changed

+10
-138
lines changed

1 file changed

+10
-138
lines changed

src/Core/DataBlock/DataBlock.cc

Lines changed: 10 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -513,20 +513,7 @@ static bool ConvertDataTypeInternal( DATA* src, DataBlockHandle& dst_data_block
513513
case DataType::CHAR_E:
514514
{
515515
signed char* dst = reinterpret_cast<signed char*>( dst_data_block->get_data() );
516-
size_t size8 = size & ~(0x7);
517-
size_t j = 0;
518-
for ( ; j < size8; j+=8 )
519-
{
520-
dst[ j ] = static_cast<signed char>( src[ j ] );
521-
dst[ j + 1 ] = static_cast<signed char>( src[ j + 1 ] );
522-
dst[ j + 2 ] = static_cast<signed char>( src[ j + 2 ] );
523-
dst[ j + 3 ] = static_cast<signed char>( src[ j + 3 ] );
524-
dst[ j + 4 ] = static_cast<signed char>( src[ j + 4 ] );
525-
dst[ j + 5 ] = static_cast<signed char>( src[ j + 5 ] );
526-
dst[ j + 6 ] = static_cast<signed char>( src[ j + 6 ] );
527-
dst[ j + 7 ] = static_cast<signed char>( src[ j + 7 ] );
528-
}
529-
for ( ; j < size; j++ )
516+
for ( size_t j = 0; j < size; j++ )
530517
{
531518
dst[ j ] = static_cast<signed char>( src[ j ] );
532519
}
@@ -535,20 +522,7 @@ static bool ConvertDataTypeInternal( DATA* src, DataBlockHandle& dst_data_block
535522
case DataType::UCHAR_E:
536523
{
537524
unsigned char* dst = reinterpret_cast<unsigned char*>( dst_data_block->get_data() );
538-
size_t size8 = size & ~(0x7);
539-
size_t j = 0;
540-
for ( ; j < size8; j+=8 )
541-
{
542-
dst[ j ] = static_cast<unsigned char>( src[ j ] );
543-
dst[ j + 1 ] = static_cast<unsigned char>( src[ j + 1 ] );
544-
dst[ j + 2 ] = static_cast<unsigned char>( src[ j + 2 ] );
545-
dst[ j + 3 ] = static_cast<unsigned char>( src[ j + 3 ] );
546-
dst[ j + 4 ] = static_cast<unsigned char>( src[ j + 4 ] );
547-
dst[ j + 5 ] = static_cast<unsigned char>( src[ j + 5 ] );
548-
dst[ j + 6 ] = static_cast<unsigned char>( src[ j + 6 ] );
549-
dst[ j + 7 ] = static_cast<unsigned char>( src[ j + 7 ] );
550-
}
551-
for ( ; j < size; j++ )
525+
for ( size_t j = 0; j < size; j++ )
552526
{
553527
dst[ j ] = static_cast<unsigned char>( src[ j ] );
554528
}
@@ -559,18 +533,7 @@ static bool ConvertDataTypeInternal( DATA* src, DataBlockHandle& dst_data_block
559533
short* dst = reinterpret_cast<short*>( dst_data_block->get_data() );
560534
size_t size8 = size & ~(0x7);
561535
size_t j = 0;
562-
for ( ; j < size8; j+=8 )
563-
{
564-
dst[ j ] = static_cast<short>( src[ j ] );
565-
dst[ j + 1 ] = static_cast<short>( src[ j + 1 ] );
566-
dst[ j + 2 ] = static_cast<short>( src[ j + 2 ] );
567-
dst[ j + 3 ] = static_cast<short>( src[ j + 3 ] );
568-
dst[ j + 4 ] = static_cast<short>( src[ j + 4 ] );
569-
dst[ j + 5 ] = static_cast<short>( src[ j + 5 ] );
570-
dst[ j + 6 ] = static_cast<short>( src[ j + 6 ] );
571-
dst[ j + 7 ] = static_cast<short>( src[ j + 7 ] );
572-
}
573-
for ( ; j < size; j++ )
536+
for ( size_t j = 0; j < size; j++ )
574537
{
575538
dst[ j ] = static_cast<short>( src[ j ] );
576539
}
@@ -579,20 +542,7 @@ static bool ConvertDataTypeInternal( DATA* src, DataBlockHandle& dst_data_block
579542
case DataType::USHORT_E:
580543
{
581544
unsigned short* dst = reinterpret_cast<unsigned short*>( dst_data_block->get_data() );
582-
size_t size8 = size & ~(0x7);
583-
size_t j = 0;
584-
for ( ; j < size8; j+=8 )
585-
{
586-
dst[ j ] = static_cast<unsigned short>( src[ j ] );
587-
dst[ j + 1 ] = static_cast<unsigned short>( src[ j + 1 ] );
588-
dst[ j + 2 ] = static_cast<unsigned short>( src[ j + 2 ] );
589-
dst[ j + 3 ] = static_cast<unsigned short>( src[ j + 3 ] );
590-
dst[ j + 4 ] = static_cast<unsigned short>( src[ j + 4 ] );
591-
dst[ j + 5 ] = static_cast<unsigned short>( src[ j + 5 ] );
592-
dst[ j + 6 ] = static_cast<unsigned short>( src[ j + 6 ] );
593-
dst[ j + 7 ] = static_cast<unsigned short>( src[ j + 7 ] );
594-
}
595-
for ( ; j < size; j++ )
545+
for ( size_t j = 0; j < size; j++ )
596546
{
597547
dst[ j ] = static_cast<unsigned short>( src[ j ] );
598548
}
@@ -601,20 +551,7 @@ static bool ConvertDataTypeInternal( DATA* src, DataBlockHandle& dst_data_block
601551
case DataType::INT_E:
602552
{
603553
int* dst = reinterpret_cast<int*>( dst_data_block->get_data() );
604-
size_t size8 = size & ~(0x7);
605-
size_t j = 0;
606-
for ( ; j < size8; j+=8 )
607-
{
608-
dst[ j ] = static_cast<int>( src[ j ] );
609-
dst[ j + 1 ] = static_cast<int>( src[ j + 1 ] );
610-
dst[ j + 2 ] = static_cast<int>( src[ j + 2 ] );
611-
dst[ j + 3 ] = static_cast<int>( src[ j + 3 ] );
612-
dst[ j + 4 ] = static_cast<int>( src[ j + 4 ] );
613-
dst[ j + 5 ] = static_cast<int>( src[ j + 5 ] );
614-
dst[ j + 6 ] = static_cast<int>( src[ j + 6 ] );
615-
dst[ j + 7 ] = static_cast<int>( src[ j + 7 ] );
616-
}
617-
for ( ; j < size; j++ )
554+
for ( size_t j = 0; j < size; j++ )
618555
{
619556
dst[ j ] = static_cast<int>( src[ j ] );
620557
}
@@ -623,20 +560,7 @@ static bool ConvertDataTypeInternal( DATA* src, DataBlockHandle& dst_data_block
623560
case DataType::UINT_E:
624561
{
625562
unsigned int* dst = reinterpret_cast<unsigned int*>( dst_data_block->get_data() );
626-
size_t size8 = size & ~(0x7);
627-
size_t j = 0;
628-
for ( ; j < size8; j+=8 )
629-
{
630-
dst[ j ] = static_cast<unsigned int>( src[ j ] );
631-
dst[ j + 1 ] = static_cast<unsigned int>( src[ j + 1 ] );
632-
dst[ j + 2 ] = static_cast<unsigned int>( src[ j + 2 ] );
633-
dst[ j + 3 ] = static_cast<unsigned int>( src[ j + 3 ] );
634-
dst[ j + 4 ] = static_cast<unsigned int>( src[ j + 4 ] );
635-
dst[ j + 5 ] = static_cast<unsigned int>( src[ j + 5 ] );
636-
dst[ j + 6 ] = static_cast<unsigned int>( src[ j + 6 ] );
637-
dst[ j + 7 ] = static_cast<unsigned int>( src[ j + 7 ] );
638-
}
639-
for ( ; j < size; j++ )
563+
for ( size_t j = 0; j < size; j++ )
640564
{
641565
dst[ j ] = static_cast<unsigned int>( src[ j ] );
642566
}
@@ -645,20 +569,7 @@ static bool ConvertDataTypeInternal( DATA* src, DataBlockHandle& dst_data_block
645569
case DataType::LONGLONG_E:
646570
{
647571
long long* dst = reinterpret_cast<long long*>( dst_data_block->get_data() );
648-
size_t size8 = size & ~(0x7);
649-
size_t j = 0;
650-
for ( ; j < size8; j+=8 )
651-
{
652-
dst[ j ] = static_cast<long long>( src[ j ] );
653-
dst[ j + 1 ] = static_cast<long long>( src[ j + 1 ] );
654-
dst[ j + 2 ] = static_cast<long long>( src[ j + 2 ] );
655-
dst[ j + 3 ] = static_cast<long long>( src[ j + 3 ] );
656-
dst[ j + 4 ] = static_cast<long long>( src[ j + 4 ] );
657-
dst[ j + 5 ] = static_cast<long long>( src[ j + 5 ] );
658-
dst[ j + 6 ] = static_cast<long long>( src[ j + 6 ] );
659-
dst[ j + 7 ] = static_cast<long long>( src[ j + 7 ] );
660-
}
661-
for ( ; j < size; j++ )
572+
for ( size_t j = 0; j < size; j++ )
662573
{
663574
dst[ j ] = static_cast<long long>( src[ j ] );
664575
}
@@ -667,20 +578,7 @@ static bool ConvertDataTypeInternal( DATA* src, DataBlockHandle& dst_data_block
667578
case DataType::ULONGLONG_E:
668579
{
669580
unsigned long long* dst = reinterpret_cast<unsigned long long*>( dst_data_block->get_data() );
670-
size_t size8 = size & ~(0x7);
671-
size_t j = 0;
672-
for ( ; j < size8; j+=8 )
673-
{
674-
dst[ j ] = static_cast<unsigned long long>( src[ j ] );
675-
dst[ j + 1 ] = static_cast<unsigned long long>( src[ j + 1 ] );
676-
dst[ j + 2 ] = static_cast<unsigned long long>( src[ j + 2 ] );
677-
dst[ j + 3 ] = static_cast<unsigned long long>( src[ j + 3 ] );
678-
dst[ j + 4 ] = static_cast<unsigned long long>( src[ j + 4 ] );
679-
dst[ j + 5 ] = static_cast<unsigned long long>( src[ j + 5 ] );
680-
dst[ j + 6 ] = static_cast<unsigned long long>( src[ j + 6 ] );
681-
dst[ j + 7 ] = static_cast<unsigned long long>( src[ j + 7 ] );
682-
}
683-
for ( ; j < size; j++ )
581+
for ( size_t j = 0; j < size; j++ )
684582
{
685583
dst[ j ] = static_cast<unsigned long long>( src[ j ] );
686584
}
@@ -689,20 +587,7 @@ static bool ConvertDataTypeInternal( DATA* src, DataBlockHandle& dst_data_block
689587
case DataType::FLOAT_E:
690588
{
691589
float* dst = reinterpret_cast<float*>( dst_data_block->get_data() );
692-
size_t size8 = size & ~(0x7);
693-
size_t j = 0;
694-
for ( ; j < size8; j+=8 )
695-
{
696-
dst[ j ] = static_cast<float>( src[ j ] );
697-
dst[ j + 1 ] = static_cast<float>( src[ j + 1 ] );
698-
dst[ j + 2 ] = static_cast<float>( src[ j + 2 ] );
699-
dst[ j + 3 ] = static_cast<float>( src[ j + 3 ] );
700-
dst[ j + 4 ] = static_cast<float>( src[ j + 4 ] );
701-
dst[ j + 5 ] = static_cast<float>( src[ j + 5 ] );
702-
dst[ j + 6 ] = static_cast<float>( src[ j + 6 ] );
703-
dst[ j + 7 ] = static_cast<float>( src[ j + 7 ] );
704-
}
705-
for ( ; j < size; j++ )
590+
for ( size_t j = 0; j < size; j++ )
706591
{
707592
dst[ j ] = static_cast<float>( src[ j ] );
708593
}
@@ -711,20 +596,7 @@ static bool ConvertDataTypeInternal( DATA* src, DataBlockHandle& dst_data_block
711596
case DataType::DOUBLE_E:
712597
{
713598
double* dst = reinterpret_cast<double*>( dst_data_block->get_data() );
714-
size_t size8 = size & ~(0x7);
715-
size_t j = 0;
716-
for ( ; j < size8; j+=8 )
717-
{
718-
dst[ j ] = static_cast<double>( src[ j ] );
719-
dst[ j + 1 ] = static_cast<double>( src[ j + 1 ] );
720-
dst[ j + 2 ] = static_cast<double>( src[ j + 2 ] );
721-
dst[ j + 3 ] = static_cast<double>( src[ j + 3 ] );
722-
dst[ j + 4 ] = static_cast<double>( src[ j + 4 ] );
723-
dst[ j + 5 ] = static_cast<double>( src[ j + 5 ] );
724-
dst[ j + 6 ] = static_cast<double>( src[ j + 6 ] );
725-
dst[ j + 7 ] = static_cast<double>( src[ j + 7 ] );
726-
}
727-
for ( ; j < size; j++ )
599+
for ( size_t j = 0; j < size; j++ )
728600
{
729601
dst[ j ] = static_cast<double>( src[ j ] );
730602
}

0 commit comments

Comments
 (0)