@@ -770,7 +770,8 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
770
770
fprintf (fp_hpp, " return ((_mask & in2._mask) != 0);\n " );
771
771
fprintf (fp_hpp, " }\n\n " );
772
772
fprintf (fp_hpp, " Pipeline_Use_Cycle_Mask& operator<<=(int n) {\n " );
773
- fprintf (fp_hpp, " _mask <<= n;\n " );
773
+ fprintf (fp_hpp, " int max_shift = 8 * sizeof(n) - 1;\n " );
774
+ fprintf (fp_hpp, " _mask <<= (n < max_shift) ? n : max_shift;\n " );
774
775
fprintf (fp_hpp, " return *this;\n " );
775
776
fprintf (fp_hpp, " }\n\n " );
776
777
fprintf (fp_hpp, " void Or(const Pipeline_Use_Cycle_Mask &in2) {\n " );
@@ -870,8 +871,7 @@ void ArchDesc::declare_pipe_classes(FILE *fp_hpp) {
870
871
fprintf (fp_hpp, " }\n\n " );
871
872
fprintf (fp_hpp, " void step(uint cycles) {\n " );
872
873
fprintf (fp_hpp, " _used = 0;\n " );
873
- fprintf (fp_hpp, " uint max_shift = 8 * sizeof(_mask) - 1;\n " );
874
- fprintf (fp_hpp, " _mask <<= (cycles < max_shift) ? cycles : max_shift;\n " );
874
+ fprintf (fp_hpp, " _mask <<= cycles;\n " );
875
875
fprintf (fp_hpp, " }\n\n " );
876
876
fprintf (fp_hpp, " friend class Pipeline_Use;\n " );
877
877
fprintf (fp_hpp, " };\n\n " );
0 commit comments