~mmach/netext73/mesa-ryzen

« back to all changes in this revision

Viewing changes to src/gallium/drivers/lima/ir/pp/disasm.c

  • Committer: mmach
  • Date: 2023-11-02 21:31:35 UTC
  • Revision ID: netbit73@gmail.com-20231102213135-18d4tzh7tj0uz752
2023-11-02 22:11:57

Show diffs side-by-side

added added

removed removed

Lines of Context:
765
765
};
766
766
 
767
767
static void
768
 
bitcopy(char *src, char *dst, unsigned bits, unsigned src_offset)
 
768
bitcopy(unsigned char *src, unsigned char *dst, unsigned bits, unsigned src_offset)
769
769
{
770
770
   src += src_offset / 8;
771
771
   src_offset %= 8;
772
772
 
773
 
   for (int b = bits; b > 0; b -= 8, src++, dst++) {
774
 
      unsigned char out = ((unsigned char) *src) >> src_offset;
 
773
   for (unsigned b = bits; b > 0; b -= MIN2(b, 8), src++, dst++) {
 
774
      unsigned char out = *src >> src_offset;
775
775
      if (src_offset > 0 && src_offset + b > 8)
776
 
         out |= ((unsigned char) *(src + 1)) << (8 - src_offset);
777
 
      *dst = (char) out;
 
776
         out |= *(src + 1) << (8 - src_offset);
 
777
      *dst = out;
778
778
   }
779
779
}
780
780
 
783
783
{
784
784
   ppir_codegen_ctrl *ctrl = (ppir_codegen_ctrl *) instr;
785
785
 
786
 
   char *instr_code = (char *) (instr + 1);
 
786
   unsigned char *instr_code = (unsigned char *) (instr + 1);
787
787
   unsigned bit_offset = 0;
788
788
   bool first = true;
789
789
   for (unsigned i = 0; i < ppir_codegen_field_shift_count; i++) {
790
 
      char code[12];
 
790
      unsigned char code[12];
791
791
 
792
792
      if (!((ctrl->fields >> i) & 1))
793
793
         continue;