30 const int intra =
s->mb_intra;
31 int *sum =
s->dct_error_sum[intra];
32 uint16_t *
offset =
s->dct_offset[intra];
37 s->dct_count[intra]++;
40 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
42 MMI_LDC1(%[ftmp1], %[
block], 0x00)
43 "pxor %[ftmp2], %[ftmp2], %[ftmp2] \n\t"
44 MMI_LDC1(%[ftmp3], %[
block], 0x08)
45 "pxor %[ftmp4], %[ftmp4], %[ftmp4] \n\t"
46 "pcmpgth %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
47 "pcmpgth %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
48 "pxor %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
49 "pxor %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
50 "psubh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
51 "psubh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
52 MMI_LDC1(%[ftmp6], %[
offset], 0x00)
53 "mov.d %[ftmp5], %[ftmp1] \n\t"
54 "psubush %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
55 MMI_LDC1(%[ftmp6], %[
offset], 0x08)
56 "mov.d %[ftmp7], %[ftmp3] \n\t"
57 "psubush %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
58 "pxor %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
59 "pxor %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
60 "psubh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
61 "psubh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
62 MMI_SDC1(%[ftmp1], %[
block], 0x00)
63 MMI_SDC1(%[ftmp3], %[
block], 0x08)
64 "mov.d %[ftmp1], %[ftmp5] \n\t"
65 "mov.d %[ftmp3], %[ftmp7] \n\t"
66 "punpcklhw %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
67 "punpckhhw %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
68 "punpcklhw %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
69 "punpckhhw %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
70 MMI_LDC1(%[ftmp2], %[sum], 0x00)
71 "paddw %[ftmp5], %[ftmp5], %[ftmp2] \n\t"
72 MMI_LDC1(%[ftmp2], %[sum], 0x08)
73 "paddw %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
74 MMI_LDC1(%[ftmp2], %[sum], 0x10)
75 "paddw %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
76 MMI_LDC1(%[ftmp2], %[sum], 0x18)
77 "paddw %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
78 MMI_SDC1(%[ftmp5], %[sum], 0x00)
79 MMI_SDC1(%[ftmp1], %[sum], 0x08)
80 MMI_SDC1(%[ftmp7], %[sum], 0x10)
81 MMI_SDC1(%[ftmp3], %[sum], 0x18)
84 PTR_SUBU "%[addr0], %[block1], %[block] \n\t"
85 PTR_ADDIU "%[offset], %[offset], 0x10 \n\t"
86 "bgtz %[addr0], 1b \n\t"
87 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
88 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
89 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
90 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
92 [addr0]
"=&r"(addr[0]),