@@ -759,20 +759,15 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
759
759
760
760
if (_pipeline->_maxcycleused <= 32 ) {
761
761
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 " );
763
763
fprintf (fp_hpp, " public:\n " );
764
764
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 " );
771
766
fprintf (fp_hpp, " bool overlaps(const Pipeline_Use_Cycle_Mask &in2) const {\n " );
772
767
fprintf (fp_hpp, " return ((_mask & in2._mask) != 0);\n " );
773
768
fprintf (fp_hpp, " }\n\n " );
774
769
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 " );
776
771
fprintf (fp_hpp, " return *this;\n " );
777
772
fprintf (fp_hpp, " }\n\n " );
778
773
fprintf (fp_hpp, " void Or(const Pipeline_Use_Cycle_Mask &in2) {\n " );
@@ -785,7 +780,7 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
785
780
fprintf (fp_hpp, " protected:\n " );
786
781
uint masklen = (_pipeline->_maxcycleused + 31 ) >> 5 ;
787
782
uint l;
788
- fprintf (fp_hpp, " uint " );
783
+ fprintf (fp_hpp, " uint32_t " );
789
784
for (l = 1 ; l <= masklen; l++)
790
785
fprintf (fp_hpp, " _mask%d%s" , l, l < masklen ? " , " : " ;\n\n " );
791
786
fprintf (fp_hpp, " public:\n " );
@@ -794,7 +789,7 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
794
789
fprintf (fp_hpp, " _mask%d(0)%s" , l, l < masklen ? " , " : " {}\n\n " );
795
790
fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask(" );
796
791
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 ? " , " : " ) : " );
798
793
for (l = 1 ; l <= masklen; l++)
799
794
fprintf (fp_hpp, " _mask%d(mask%d)%s" , l, l, l < masklen ? " , " : " {}\n\n " );
800
795
@@ -805,10 +800,10 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
805
800
fprintf (fp_hpp, " return out;\n " );
806
801
fprintf (fp_hpp, " }\n\n " );
807
802
fprintf (fp_hpp, " bool overlaps(const Pipeline_Use_Cycle_Mask &in2) const {\n " );
808
- fprintf (fp_hpp, " return ( " );
803
+ fprintf (fp_hpp, " return " );
809
804
for (l = 1 ; l <= masklen; l++)
810
805
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 " );
812
807
fprintf (fp_hpp, " }\n\n " );
813
808
fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask& operator<<=(int n) {\n " );
814
809
fprintf (fp_hpp, " if (n >= 32)\n " );
@@ -819,10 +814,10 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
819
814
fprintf (fp_hpp, " } while ((n -= 32) >= 32);\n\n " );
820
815
fprintf (fp_hpp, " if (n > 0) {\n " );
821
816
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 );
824
819
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);
826
821
}
827
822
fprintf (fp_hpp, " _mask%d <<= n; _mask%d |= temp%d;\n " , masklen, masklen, masklen);
828
823
fprintf (fp_hpp, " }\n " );
@@ -872,8 +867,7 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
872
867
fprintf (fp_hpp, " }\n\n " );
873
868
fprintf (fp_hpp, " void step(uint cycles) {\n " );
874
869
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 " );
877
871
fprintf (fp_hpp, " }\n\n " );
878
872
fprintf (fp_hpp, " friend class Pipeline_Use;\n " );
879
873
fprintf (fp_hpp, " };\n\n " );
0 commit comments