27 #define decode_significance decode_significance_loongarch 
   29     uint8_t *significant_coeff_ctx_base, 
int *
index, int64_t last_off)
 
   31     void *end = significant_coeff_ctx_base + max_coeff - 1;
 
   32     int64_t minusstart = -(int64_t)significant_coeff_ctx_base;
 
   33     int64_t minusindex = 4 - (int64_t)
index;
 
   34     int64_t 
bit, tmp0, tmp1, tmp2, one = 1;
 
   35     uint8_t *
state = significant_coeff_ctx_base;
 
   39 #if UNCHECKED_BITSTREAM_READER 
   44     "blt     %[bit],          %[one],            4f               \n\t" 
   45     "add.d   %[state],        %[state],          %[last_off]      \n\t" 
   46 #if UNCHECKED_BITSTREAM_READER 
   51     "sub.d   %[state],        %[state],          %[last_off]      \n\t" 
   52     "add.d   %[tmp0],         %[state],          %[minusstart]    \n\t" 
   53     "st.w    %[tmp0],         %[index],          0                \n\t" 
   54     "bge     %[bit],          %[one],            5f               \n\t" 
   55     "addi.d  %[index],        %[index],          4                \n\t" 
   57     "addi.d  %[state],        %[state],          1                \n\t" 
   58     "blt     %[state],        %[end],            3b               \n\t" 
   59     "add.d   %[tmp0],         %[state],          %[minusstart]    \n\t" 
   60     "st.w    %[tmp0],         %[index],          0                \n\t" 
   62     "add.d   %[tmp0],         %[index],          %[minusindex]    \n\t" 
   63     "srli.d  %[tmp0],         %[tmp0],           2                \n\t" 
   64     : [
bit]
"=&r"(
bit), [tmp0]
"=&r"(tmp0), [tmp1]
"=&r"(tmp1), [tmp2]
"=&r"(tmp2),
 
   65       [c_range]
"+&r"(
c->range), [c_low]
"+&r"(
c->low), [
state]
"+&r"(
state),
 
   66       [c_bytestream]
"+&r"(
c->bytestream), [
index]
"+&r"(
index)
 
   68       [minusstart]
"r"(minusstart), [minusindex]
"r"(minusindex),
 
   69       [last_off]
"r"(last_off),
 
   71       [c_bytestream_end]
"r"(
c->bytestream_end),
 
   83 #define decode_significance_8x8 decode_significance_8x8_loongarch 
   86     int *
index, uint8_t *last_coeff_ctx_base, 
const uint8_t *sig_off)
 
   88     int64_t minusindex = 4 - (int64_t)
index;
 
   89     int64_t 
bit, tmp0, tmp1, tmp2, one = 1, end =  63, last = 0;
 
   95     "ldx.bu   %[tmp0],     %[sig_off],       %[last]                 \n\t" 
   96     "add.d    %[state],    %[tmp0], %[significant_coeff_ctx_base]    \n\t" 
   97 #if UNCHECKED_BITSTREAM_READER 
  102     "blt      %[bit],      %[one],           4f                      \n\t" 
  103     "add.d    %[tmp0],     %[tables],        %[flag_offset]          \n\t" 
  104     "ldx.bu   %[tmp1],     %[tmp0],          %[last]                 \n\t" 
  105     "add.d    %[state],    %[tmp1],    %[last_coeff_ctx_base]        \n\t" 
  106 #if UNCHECKED_BITSTREAM_READER 
  111     "st.w    %[last],      %[index],         0                       \n\t" 
  112     "bge     %[bit],       %[one],           5f                      \n\t" 
  113     "addi.d  %[index],     %[index],         4                       \n\t" 
  115     "addi.d  %[last],      %[last],          1                       \n\t" 
  116     "blt     %[last],      %[end],           3b                      \n\t" 
  117     "st.w    %[last],      %[index],         0                       \n\t" 
  119     "add.d   %[tmp0],      %[index],         %[minusindex]           \n\t" 
  120     "srli.d  %[tmp0],      %[tmp0],          2                       \n\t" 
  121     : [
bit]
"=&r"(
bit), [tmp0]
"=&r"(tmp0), [tmp1]
"=&r"(tmp1),
 
  122       [tmp2]
"=&r"(tmp2), [c_range]
"+&r"(
c->range),
 
  123       [c_low]
"+&r"(
c->low), [
state]
"+&r"(
state), [last]
"+&r"(last),
 
  124       [c_bytestream]
"+&r"(
c->bytestream), [
index]
"+&r"(
index)
 
  126       [one]
"r"(one), [minusindex]
"r"(minusindex),
 
  127       [last_coeff_ctx_base]
"r"(last_coeff_ctx_base),
 
  128       [flag_offset]
"r"(flag_offset),
 
  129 #if !UNCHECKED_BITSTREAM_READER 
  130       [c_bytestream_end]
"r"(
c->bytestream_end),
 
  136       [significant_coeff_ctx_base]
"r"(significant_coeff_ctx_base)