@@ -759,20 +759,15 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
759759
760760 if (_pipeline->_maxcycleused <= 32 ) {
761761 fprintf (fp_hpp, " protected:\n " );
762- fprintf (fp_hpp, " %s _mask;\n\n " , _pipeline-> _maxcycleused <= 32 ? " uint " : " uint64_t " );
762+ fprintf (fp_hpp, " uint32_t _mask;\n\n " );
763763 fprintf (fp_hpp, " public:\n " );
764764 fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask() : _mask(0) {}\n\n " );
765- if (_pipeline->_maxcycleused <= 32 )
766- fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask(uint mask) : _mask(mask) {}\n\n " );
767- else {
768- fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask(uint mask1, uint mask2) : _mask((((uint64_t)mask1) << 32) | mask2) {}\n\n " );
769- fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask(uint64_t mask) : _mask(mask) {}\n\n " );
770- }
765+ fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask(uint32_t mask) : _mask(mask) {}\n\n " );
771766 fprintf (fp_hpp, " bool overlaps(const Pipeline_Use_Cycle_Mask &in2) const {\n " );
772767 fprintf (fp_hpp, " return ((_mask & in2._mask) != 0);\n " );
773768 fprintf (fp_hpp, " }\n\n " );
774769 fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask& operator<<=(int n) {\n " );
775- fprintf (fp_hpp, " _mask <<= n ;\n " );
770+ fprintf (fp_hpp, " _mask <<= (n < 32) ? n : 31 ;\n " );
776771 fprintf (fp_hpp, " return *this;\n " );
777772 fprintf (fp_hpp, " }\n\n " );
778773 fprintf (fp_hpp, " void Or(const Pipeline_Use_Cycle_Mask &in2) {\n " );
@@ -785,7 +780,7 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
785780 fprintf (fp_hpp, " protected:\n " );
786781 uint masklen = (_pipeline->_maxcycleused + 31 ) >> 5 ;
787782 uint l;
788- fprintf (fp_hpp, " uint " );
783+ fprintf (fp_hpp, " uint32_t " );
789784 for (l = 1 ; l <= masklen; l++)
790785 fprintf (fp_hpp, " _mask%d%s" , l, l < masklen ? " , " : " ;\n\n " );
791786 fprintf (fp_hpp, " public:\n " );
@@ -794,7 +789,7 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
794789 fprintf (fp_hpp, " _mask%d(0)%s" , l, l < masklen ? " , " : " {}\n\n " );
795790 fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask(" );
796791 for (l = 1 ; l <= masklen; l++)
797- fprintf (fp_hpp, " uint mask%d%s" , l, l < masklen ? " , " : " ) : " );
792+ fprintf (fp_hpp, " uint32_t mask%d%s" , l, l < masklen ? " , " : " ) : " );
798793 for (l = 1 ; l <= masklen; l++)
799794 fprintf (fp_hpp, " _mask%d(mask%d)%s" , l, l, l < masklen ? " , " : " {}\n\n " );
800795
@@ -805,10 +800,10 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
805800 fprintf (fp_hpp, " return out;\n " );
806801 fprintf (fp_hpp, " }\n\n " );
807802 fprintf (fp_hpp, " bool overlaps(const Pipeline_Use_Cycle_Mask &in2) const {\n " );
808- fprintf (fp_hpp, " return ( " );
803+ fprintf (fp_hpp, " return " );
809804 for (l = 1 ; l <= masklen; l++)
810805 fprintf (fp_hpp, " ((_mask%d & in2._mask%d) != 0)%s" , l, l, l < masklen ? " || " : " " );
811- fprintf (fp_hpp, " ) ? true : false ;\n " );
806+ fprintf (fp_hpp, " ;\n " );
812807 fprintf (fp_hpp, " }\n\n " );
813808 fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask& operator<<=(int n) {\n " );
814809 fprintf (fp_hpp, " if (n >= 32)\n " );
@@ -819,10 +814,10 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
819814 fprintf (fp_hpp, " } while ((n -= 32) >= 32);\n\n " );
820815 fprintf (fp_hpp, " if (n > 0) {\n " );
821816 fprintf (fp_hpp, " uint m = 32 - n;\n " );
822- fprintf (fp_hpp, " uint mask = (1 << n) - 1;\n " );
823- fprintf (fp_hpp, " uint temp%d = mask & (_mask%d >> m); _mask%d <<= n;\n " , 2 , 1 , 1 );
817+ fprintf (fp_hpp, " uint32_t mask = (1 << n) - 1;\n " );
818+ fprintf (fp_hpp, " uint32_t temp%d = mask & (_mask%d >> m); _mask%d <<= n;\n " , 2 , 1 , 1 );
824819 for (l = 2 ; l < masklen; l++) {
825- fprintf (fp_hpp, " uint temp%d = mask & (_mask%d >> m); _mask%d <<= n; _mask%d |= temp%d;\n " , l+1 , l, l, l, l);
820+ fprintf (fp_hpp, " uint32_t temp%d = mask & (_mask%d >> m); _mask%d <<= n; _mask%d |= temp%d;\n " , l+1 , l, l, l, l);
826821 }
827822 fprintf (fp_hpp, " _mask%d <<= n; _mask%d |= temp%d;\n " , masklen, masklen, masklen);
828823 fprintf (fp_hpp, " }\n " );
@@ -872,8 +867,7 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
872867 fprintf (fp_hpp, " }\n\n " );
873868 fprintf (fp_hpp, " void step(uint cycles) {\n " );
874869 fprintf (fp_hpp, " _used = 0;\n " );
875- fprintf (fp_hpp, " uint max_shift = 8 * sizeof(_mask) - 1;\n " );
876- fprintf (fp_hpp, " _mask <<= (cycles < max_shift) ? cycles : max_shift;\n " );
870+ fprintf (fp_hpp, " _mask <<= cycles;\n " );
877871 fprintf (fp_hpp, " }\n\n " );
878872 fprintf (fp_hpp, " friend class Pipeline_Use;\n " );
879873 fprintf (fp_hpp, " };\n\n " );
0 commit comments