for (i = 0; i < size; i += 4) {
int curidx;
int *in_int = (int *)&in[i];
+ int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
"slt %[qc2], $zero, %[qc2] \n\t"
"slt %[qc3], $zero, %[qc3] \n\t"
"slt %[qc4], $zero, %[qc4] \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "srl $t0, $t0, 31 \n\t"
- "srl $t1, $t1, 31 \n\t"
- "srl $t2, $t2, 31 \n\t"
- "srl $t3, $t3, 31 \n\t"
- "subu $t4, $zero, %[qc1] \n\t"
- "subu $t5, $zero, %[qc2] \n\t"
- "subu $t6, $zero, %[qc3] \n\t"
- "subu $t7, $zero, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t5, $t1 \n\t"
- "movn %[qc3], $t6, $t2 \n\t"
- "movn %[qc4], $t7, $t3 \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "srl %[t0], %[t0], 31 \n\t"
+ "srl %[t1], %[t1], 31 \n\t"
+ "srl %[t2], %[t2], 31 \n\t"
+ "srl %[t3], %[t3], 31 \n\t"
+ "subu %[t4], $zero, %[qc1] \n\t"
+ "subu %[t5], $zero, %[qc2] \n\t"
+ "subu %[t6], $zero, %[qc3] \n\t"
+ "subu %[t7], $zero, %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t5], %[t1] \n\t"
+ "movn %[qc3], %[t6], %[t2] \n\t"
+ "movn %[qc4], %[t7], %[t3] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
- [qc3]"+r"(qc3), [qc4]"+r"(qc4)
+ [qc3]"+r"(qc3), [qc4]"+r"(qc4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4), [t5]"=&r"(t5), [t6]"=&r"(t6), [t7]"=&r"(t7)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3",
- "t4", "t5", "t6", "t7",
- "memory"
+ : "memory"
);
curidx = qc1;
int *in_int = (int *)&in[i];
uint8_t v_bits;
unsigned int v_codes;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 2 \n\t"
+ "ori %[t4], $zero, 2 \n\t"
"ori %[sign], $zero, 0 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "slt $t0, $t0, $zero \n\t"
- "movn %[sign], $t0, %[qc1] \n\t"
- "slt $t1, $t1, $zero \n\t"
- "slt $t2, $t2, $zero \n\t"
- "slt $t3, $t3, $zero \n\t"
- "sll $t0, %[sign], 1 \n\t"
- "or $t0, $t0, $t1 \n\t"
- "movn %[sign], $t0, %[qc2] \n\t"
- "slt $t4, $zero, %[qc1] \n\t"
- "slt $t1, $zero, %[qc2] \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "slt %[t0], %[t0], $zero \n\t"
+ "movn %[sign], %[t0], %[qc1] \n\t"
+ "slt %[t1], %[t1], $zero \n\t"
+ "slt %[t2], %[t2], $zero \n\t"
+ "slt %[t3], %[t3], $zero \n\t"
+ "sll %[t0], %[sign], 1 \n\t"
+ "or %[t0], %[t0], %[t1] \n\t"
+ "movn %[sign], %[t0], %[qc2] \n\t"
+ "slt %[t4], $zero, %[qc1] \n\t"
+ "slt %[t1], $zero, %[qc2] \n\t"
"slt %[count], $zero, %[qc3] \n\t"
- "sll $t0, %[sign], 1 \n\t"
- "or $t0, $t0, $t2 \n\t"
- "movn %[sign], $t0, %[qc3] \n\t"
- "slt $t2, $zero, %[qc4] \n\t"
- "addu %[count], %[count], $t4 \n\t"
- "addu %[count], %[count], $t1 \n\t"
- "sll $t0, %[sign], 1 \n\t"
- "or $t0, $t0, $t3 \n\t"
- "movn %[sign], $t0, %[qc4] \n\t"
- "addu %[count], %[count], $t2 \n\t"
+ "sll %[t0], %[sign], 1 \n\t"
+ "or %[t0], %[t0], %[t2] \n\t"
+ "movn %[sign], %[t0], %[qc3] \n\t"
+ "slt %[t2], $zero, %[qc4] \n\t"
+ "addu %[count], %[count], %[t4] \n\t"
+ "addu %[count], %[count], %[t1] \n\t"
+ "sll %[t0], %[sign], 1 \n\t"
+ "or %[t0], %[t0], %[t3] \n\t"
+ "movn %[sign], %[t0], %[qc4] \n\t"
+ "addu %[count], %[count], %[t2] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
[qc3]"+r"(qc3), [qc4]"+r"(qc4),
- [sign]"=&r"(sign), [count]"=&r"(count)
+ [sign]"=&r"(sign), [count]"=&r"(count),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3", "t4",
- "memory"
+ : "memory"
);
curidx = qc1;
int *in_int = (int *)&in[i];
uint8_t v_bits;
unsigned int v_codes;
+ int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 4 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "srl $t0, $t0, 31 \n\t"
- "srl $t1, $t1, 31 \n\t"
- "srl $t2, $t2, 31 \n\t"
- "srl $t3, $t3, 31 \n\t"
- "subu $t4, $zero, %[qc1] \n\t"
- "subu $t5, $zero, %[qc2] \n\t"
- "subu $t6, $zero, %[qc3] \n\t"
- "subu $t7, $zero, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t5, $t1 \n\t"
- "movn %[qc3], $t6, $t2 \n\t"
- "movn %[qc4], $t7, $t3 \n\t"
+ "ori %[t4], $zero, 4 \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "srl %[t0], %[t0], 31 \n\t"
+ "srl %[t1], %[t1], 31 \n\t"
+ "srl %[t2], %[t2], 31 \n\t"
+ "srl %[t3], %[t3], 31 \n\t"
+ "subu %[t4], $zero, %[qc1] \n\t"
+ "subu %[t5], $zero, %[qc2] \n\t"
+ "subu %[t6], $zero, %[qc3] \n\t"
+ "subu %[t7], $zero, %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t5], %[t1] \n\t"
+ "movn %[qc3], %[t6], %[t2] \n\t"
+ "movn %[qc4], %[t7], %[t3] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
- [qc3]"+r"(qc3), [qc4]"+r"(qc4)
+ [qc3]"+r"(qc3), [qc4]"+r"(qc4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4), [t5]"=&r"(t5), [t6]"=&r"(t6), [t7]"=&r"(t7)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3",
- "t4", "t5", "t6", "t7",
- "memory"
+ : "memory"
);
curidx = 9 * qc1;
int *in_int = (int *)&in[i];
uint8_t v_bits;
unsigned int v_codes;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 7 \n\t"
+ "ori %[t4], $zero, 7 \n\t"
"ori %[sign1], $zero, 0 \n\t"
"ori %[sign2], $zero, 0 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "slt $t0, $t0, $zero \n\t"
- "movn %[sign1], $t0, %[qc1] \n\t"
- "slt $t2, $t2, $zero \n\t"
- "movn %[sign2], $t2, %[qc3] \n\t"
- "slt $t1, $t1, $zero \n\t"
- "sll $t0, %[sign1], 1 \n\t"
- "or $t0, $t0, $t1 \n\t"
- "movn %[sign1], $t0, %[qc2] \n\t"
- "slt $t3, $t3, $zero \n\t"
- "sll $t0, %[sign2], 1 \n\t"
- "or $t0, $t0, $t3 \n\t"
- "movn %[sign2], $t0, %[qc4] \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "slt %[t0], %[t0], $zero \n\t"
+ "movn %[sign1], %[t0], %[qc1] \n\t"
+ "slt %[t2], %[t2], $zero \n\t"
+ "movn %[sign2], %[t2], %[qc3] \n\t"
+ "slt %[t1], %[t1], $zero \n\t"
+ "sll %[t0], %[sign1], 1 \n\t"
+ "or %[t0], %[t0], %[t1] \n\t"
+ "movn %[sign1], %[t0], %[qc2] \n\t"
+ "slt %[t3], %[t3], $zero \n\t"
+ "sll %[t0], %[sign2], 1 \n\t"
+ "or %[t0], %[t0], %[t3] \n\t"
+ "movn %[sign2], %[t0], %[qc4] \n\t"
"slt %[count1], $zero, %[qc1] \n\t"
- "slt $t1, $zero, %[qc2] \n\t"
+ "slt %[t1], $zero, %[qc2] \n\t"
"slt %[count2], $zero, %[qc3] \n\t"
- "slt $t2, $zero, %[qc4] \n\t"
- "addu %[count1], %[count1], $t1 \n\t"
- "addu %[count2], %[count2], $t2 \n\t"
+ "slt %[t2], $zero, %[qc4] \n\t"
+ "addu %[count1], %[count1], %[t1] \n\t"
+ "addu %[count2], %[count2], %[t2] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
[qc3]"+r"(qc3), [qc4]"+r"(qc4),
[sign1]"=&r"(sign1), [count1]"=&r"(count1),
- [sign2]"=&r"(sign2), [count2]"=&r"(count2)
+ [sign2]"=&r"(sign2), [count2]"=&r"(count2),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
: [in_int]"r"(in_int)
: "t0", "t1", "t2", "t3", "t4",
"memory"
int *in_int = (int *)&in[i];
uint8_t v_bits;
unsigned int v_codes;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 12 \n\t"
+ "ori %[t4], $zero, 12 \n\t"
"ori %[sign1], $zero, 0 \n\t"
"ori %[sign2], $zero, 0 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "slt $t0, $t0, $zero \n\t"
- "movn %[sign1], $t0, %[qc1] \n\t"
- "slt $t2, $t2, $zero \n\t"
- "movn %[sign2], $t2, %[qc3] \n\t"
- "slt $t1, $t1, $zero \n\t"
- "sll $t0, %[sign1], 1 \n\t"
- "or $t0, $t0, $t1 \n\t"
- "movn %[sign1], $t0, %[qc2] \n\t"
- "slt $t3, $t3, $zero \n\t"
- "sll $t0, %[sign2], 1 \n\t"
- "or $t0, $t0, $t3 \n\t"
- "movn %[sign2], $t0, %[qc4] \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "slt %[t0], %[t0], $zero \n\t"
+ "movn %[sign1], %[t0], %[qc1] \n\t"
+ "slt %[t2], %[t2], $zero \n\t"
+ "movn %[sign2], %[t2], %[qc3] \n\t"
+ "slt %[t1], %[t1], $zero \n\t"
+ "sll %[t0], %[sign1], 1 \n\t"
+ "or %[t0], %[t0], %[t1] \n\t"
+ "movn %[sign1], %[t0], %[qc2] \n\t"
+ "slt %[t3], %[t3], $zero \n\t"
+ "sll %[t0], %[sign2], 1 \n\t"
+ "or %[t0], %[t0], %[t3] \n\t"
+ "movn %[sign2], %[t0], %[qc4] \n\t"
"slt %[count1], $zero, %[qc1] \n\t"
- "slt $t1, $zero, %[qc2] \n\t"
+ "slt %[t1], $zero, %[qc2] \n\t"
"slt %[count2], $zero, %[qc3] \n\t"
- "slt $t2, $zero, %[qc4] \n\t"
- "addu %[count1], %[count1], $t1 \n\t"
- "addu %[count2], %[count2], $t2 \n\t"
+ "slt %[t2], $zero, %[qc4] \n\t"
+ "addu %[count1], %[count1], %[t1] \n\t"
+ "addu %[count2], %[count2], %[t2] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
[qc3]"+r"(qc3), [qc4]"+r"(qc4),
[sign1]"=&r"(sign1), [count1]"=&r"(count1),
- [sign2]"=&r"(sign2), [count2]"=&r"(count2)
+ [sign2]"=&r"(sign2), [count2]"=&r"(count2),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3", "t4",
- "memory"
+ : "memory"
);
curidx = 13 * qc1;
int *in_int = (int *)&in[i];
uint8_t v_bits;
unsigned int v_codes;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 16 \n\t"
+ "ori %[t4], $zero, 16 \n\t"
"ori %[sign1], $zero, 0 \n\t"
"ori %[sign2], $zero, 0 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "slt $t0, $t0, $zero \n\t"
- "movn %[sign1], $t0, %[qc1] \n\t"
- "slt $t2, $t2, $zero \n\t"
- "movn %[sign2], $t2, %[qc3] \n\t"
- "slt $t1, $t1, $zero \n\t"
- "sll $t0, %[sign1], 1 \n\t"
- "or $t0, $t0, $t1 \n\t"
- "movn %[sign1], $t0, %[qc2] \n\t"
- "slt $t3, $t3, $zero \n\t"
- "sll $t0, %[sign2], 1 \n\t"
- "or $t0, $t0, $t3 \n\t"
- "movn %[sign2], $t0, %[qc4] \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "slt %[t0], %[t0], $zero \n\t"
+ "movn %[sign1], %[t0], %[qc1] \n\t"
+ "slt %[t2], %[t2], $zero \n\t"
+ "movn %[sign2], %[t2], %[qc3] \n\t"
+ "slt %[t1], %[t1], $zero \n\t"
+ "sll %[t0], %[sign1], 1 \n\t"
+ "or %[t0], %[t0], %[t1] \n\t"
+ "movn %[sign1], %[t0], %[qc2] \n\t"
+ "slt %[t3], %[t3], $zero \n\t"
+ "sll %[t0], %[sign2], 1 \n\t"
+ "or %[t0], %[t0], %[t3] \n\t"
+ "movn %[sign2], %[t0], %[qc4] \n\t"
"slt %[count1], $zero, %[qc1] \n\t"
- "slt $t1, $zero, %[qc2] \n\t"
+ "slt %[t1], $zero, %[qc2] \n\t"
"slt %[count2], $zero, %[qc3] \n\t"
- "slt $t2, $zero, %[qc4] \n\t"
- "addu %[count1], %[count1], $t1 \n\t"
- "addu %[count2], %[count2], $t2 \n\t"
+ "slt %[t2], $zero, %[qc4] \n\t"
+ "addu %[count1], %[count1], %[t1] \n\t"
+ "addu %[count2], %[count2], %[t2] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
[qc3]"+r"(qc3), [qc4]"+r"(qc4),
[sign1]"=&r"(sign1), [count1]"=&r"(count1),
- [sign2]"=&r"(sign2), [count2]"=&r"(count2)
+ [sign2]"=&r"(sign2), [count2]"=&r"(count2),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3", "t4",
- "memory"
+ : "memory"
);
curidx = 17 * qc1;
uint8_t v_bits;
unsigned int v_codes;
int c1, c2, c3, c4;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 16 \n\t"
+ "ori %[t4], $zero, 16 \n\t"
"ori %[sign1], $zero, 0 \n\t"
"ori %[sign2], $zero, 0 \n\t"
"shll_s.w %[c1], %[qc1], 18 \n\t"
"srl %[c2], %[c2], 18 \n\t"
"srl %[c3], %[c3], 18 \n\t"
"srl %[c4], %[c4], 18 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "slt $t0, $t0, $zero \n\t"
- "movn %[sign1], $t0, %[qc1] \n\t"
- "slt $t2, $t2, $zero \n\t"
- "movn %[sign2], $t2, %[qc3] \n\t"
- "slt $t1, $t1, $zero \n\t"
- "sll $t0, %[sign1], 1 \n\t"
- "or $t0, $t0, $t1 \n\t"
- "movn %[sign1], $t0, %[qc2] \n\t"
- "slt $t3, $t3, $zero \n\t"
- "sll $t0, %[sign2], 1 \n\t"
- "or $t0, $t0, $t3 \n\t"
- "movn %[sign2], $t0, %[qc4] \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "slt %[t0], %[t0], $zero \n\t"
+ "movn %[sign1], %[t0], %[qc1] \n\t"
+ "slt %[t2], %[t2], $zero \n\t"
+ "movn %[sign2], %[t2], %[qc3] \n\t"
+ "slt %[t1], %[t1], $zero \n\t"
+ "sll %[t0], %[sign1], 1 \n\t"
+ "or %[t0], %[t0], %[t1] \n\t"
+ "movn %[sign1], %[t0], %[qc2] \n\t"
+ "slt %[t3], %[t3], $zero \n\t"
+ "sll %[t0], %[sign2], 1 \n\t"
+ "or %[t0], %[t0], %[t3] \n\t"
+ "movn %[sign2], %[t0], %[qc4] \n\t"
"slt %[count1], $zero, %[qc1] \n\t"
- "slt $t1, $zero, %[qc2] \n\t"
+ "slt %[t1], $zero, %[qc2] \n\t"
"slt %[count2], $zero, %[qc3] \n\t"
- "slt $t2, $zero, %[qc4] \n\t"
- "addu %[count1], %[count1], $t1 \n\t"
- "addu %[count2], %[count2], $t2 \n\t"
+ "slt %[t2], $zero, %[qc4] \n\t"
+ "addu %[count1], %[count1], %[t1] \n\t"
+ "addu %[count2], %[count2], %[t2] \n\t"
".set pop \n\t"
[sign1]"=&r"(sign1), [count1]"=&r"(count1),
[sign2]"=&r"(sign2), [count2]"=&r"(count2),
[c1]"=&r"(c1), [c2]"=&r"(c2),
- [c3]"=&r"(c3), [c4]"=&r"(c4)
+ [c3]"=&r"(c3), [c4]"=&r"(c4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3", "t4",
- "memory"
+ : "memory"
);
curidx = 17 * qc1;
for (i = 0; i < size; i += 4) {
int curidx;
int *in_int = (int *)&in[i];
+ int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
"slt %[qc2], $zero, %[qc2] \n\t"
"slt %[qc3], $zero, %[qc3] \n\t"
"slt %[qc4], $zero, %[qc4] \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "srl $t0, $t0, 31 \n\t"
- "srl $t1, $t1, 31 \n\t"
- "srl $t2, $t2, 31 \n\t"
- "srl $t3, $t3, 31 \n\t"
- "subu $t4, $zero, %[qc1] \n\t"
- "subu $t5, $zero, %[qc2] \n\t"
- "subu $t6, $zero, %[qc3] \n\t"
- "subu $t7, $zero, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t5, $t1 \n\t"
- "movn %[qc3], $t6, $t2 \n\t"
- "movn %[qc4], $t7, $t3 \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "srl %[t0], %[t0], 31 \n\t"
+ "srl %[t1], %[t1], 31 \n\t"
+ "srl %[t2], %[t2], 31 \n\t"
+ "srl %[t3], %[t3], 31 \n\t"
+ "subu %[t4], $zero, %[qc1] \n\t"
+ "subu %[t5], $zero, %[qc2] \n\t"
+ "subu %[t6], $zero, %[qc3] \n\t"
+ "subu %[t7], $zero, %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t5], %[t1] \n\t"
+ "movn %[qc3], %[t6], %[t2] \n\t"
+ "movn %[qc4], %[t7], %[t3] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
- [qc3]"+r"(qc3), [qc4]"+r"(qc4)
+ [qc3]"+r"(qc3), [qc4]"+r"(qc4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4), [t5]"=&r"(t5), [t6]"=&r"(t6), [t7]"=&r"(t7)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3",
- "t4", "t5", "t6", "t7",
- "memory"
+ : "memory"
);
curidx = qc1;
for (i = 0; i < size; i += 4) {
int curidx;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 2 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
+ "ori %[t4], $zero, 2 \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
- [qc3]"+r"(qc3), [qc4]"+r"(qc4)
- :
- : "t0", "t1", "t2", "t3", "t4"
+ [qc3]"+r"(qc3), [qc4]"+r"(qc4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
);
curidx = qc1;
for (i = 0; i < size; i += 4) {
int curidx, curidx2;
int *in_int = (int *)&in[i];
+ int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 4 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "srl $t0, $t0, 31 \n\t"
- "srl $t1, $t1, 31 \n\t"
- "srl $t2, $t2, 31 \n\t"
- "srl $t3, $t3, 31 \n\t"
- "subu $t4, $zero, %[qc1] \n\t"
- "subu $t5, $zero, %[qc2] \n\t"
- "subu $t6, $zero, %[qc3] \n\t"
- "subu $t7, $zero, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t5, $t1 \n\t"
- "movn %[qc3], $t6, $t2 \n\t"
- "movn %[qc4], $t7, $t3 \n\t"
+ "ori %[t4], $zero, 4 \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "srl %[t0], %[t0], 31 \n\t"
+ "srl %[t1], %[t1], 31 \n\t"
+ "srl %[t2], %[t2], 31 \n\t"
+ "srl %[t3], %[t3], 31 \n\t"
+ "subu %[t4], $zero, %[qc1] \n\t"
+ "subu %[t5], $zero, %[qc2] \n\t"
+ "subu %[t6], $zero, %[qc3] \n\t"
+ "subu %[t7], $zero, %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t5], %[t1] \n\t"
+ "movn %[qc3], %[t6], %[t2] \n\t"
+ "movn %[qc4], %[t7], %[t3] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
- [qc3]"+r"(qc3), [qc4]"+r"(qc4)
+ [qc3]"+r"(qc3), [qc4]"+r"(qc4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4), [t5]"=&r"(t5), [t6]"=&r"(t6), [t7]"=&r"(t7)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3",
- "t4", "t5", "t6", "t7",
- "memory"
+ : "memory"
);
curidx = 9 * qc1;
for (i = 0; i < size; i += 4) {
int curidx, curidx2;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 7 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
+ "ori %[t4], $zero, 7 \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
- [qc3]"+r"(qc3), [qc4]"+r"(qc4)
- :
- : "t0", "t1", "t2", "t3", "t4"
+ [qc3]"+r"(qc3), [qc4]"+r"(qc4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
);
curidx = 8 * qc1;
for (i = 0; i < size; i += 4) {
int curidx, curidx2;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 12 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
+ "ori %[t4], $zero, 12 \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
- [qc3]"+r"(qc3), [qc4]"+r"(qc4)
- :
- : "t0", "t1", "t2", "t3", "t4"
+ [qc3]"+r"(qc3), [qc4]"+r"(qc4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
);
curidx = 13 * qc1;
int curidx, curidx2;
int cond0, cond1, cond2, cond3;
int c1, c2, c3, c4;
+ int t4, t5;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 15 \n\t"
- "ori $t5, $zero, 16 \n\t"
+ "ori %[t4], $zero, 15 \n\t"
+ "ori %[t5], $zero, 16 \n\t"
"shll_s.w %[c1], %[qc1], 18 \n\t"
"shll_s.w %[c2], %[qc2], 18 \n\t"
"shll_s.w %[c3], %[qc3], 18 \n\t"
"srl %[c2], %[c2], 18 \n\t"
"srl %[c3], %[c3], 18 \n\t"
"srl %[c4], %[c4], 18 \n\t"
- "slt %[cond0], $t4, %[qc1] \n\t"
- "slt %[cond1], $t4, %[qc2] \n\t"
- "slt %[cond2], $t4, %[qc3] \n\t"
- "slt %[cond3], $t4, %[qc4] \n\t"
- "movn %[qc1], $t5, %[cond0] \n\t"
- "movn %[qc2], $t5, %[cond1] \n\t"
- "movn %[qc3], $t5, %[cond2] \n\t"
- "movn %[qc4], $t5, %[cond3] \n\t"
- "ori $t5, $zero, 31 \n\t"
+ "slt %[cond0], %[t4], %[qc1] \n\t"
+ "slt %[cond1], %[t4], %[qc2] \n\t"
+ "slt %[cond2], %[t4], %[qc3] \n\t"
+ "slt %[cond3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t5], %[cond0] \n\t"
+ "movn %[qc2], %[t5], %[cond1] \n\t"
+ "movn %[qc3], %[t5], %[cond2] \n\t"
+ "movn %[qc4], %[t5], %[cond3] \n\t"
+ "ori %[t5], $zero, 31 \n\t"
"clz %[c1], %[c1] \n\t"
"clz %[c2], %[c2] \n\t"
"clz %[c3], %[c3] \n\t"
"clz %[c4], %[c4] \n\t"
- "subu %[c1], $t5, %[c1] \n\t"
- "subu %[c2], $t5, %[c2] \n\t"
- "subu %[c3], $t5, %[c3] \n\t"
- "subu %[c4], $t5, %[c4] \n\t"
+ "subu %[c1], %[t5], %[c1] \n\t"
+ "subu %[c2], %[t5], %[c2] \n\t"
+ "subu %[c3], %[t5], %[c3] \n\t"
+ "subu %[c4], %[t5], %[c4] \n\t"
"sll %[c1], %[c1], 1 \n\t"
"sll %[c2], %[c2], 1 \n\t"
"sll %[c3], %[c3], 1 \n\t"
[cond0]"=&r"(cond0), [cond1]"=&r"(cond1),
[cond2]"=&r"(cond2), [cond3]"=&r"(cond3),
[c1]"=&r"(c1), [c2]"=&r"(c2),
- [c3]"=&r"(c3), [c4]"=&r"(c4)
- :
- : "t4", "t5"
+ [c3]"=&r"(c3), [c4]"=&r"(c4),
+ [t4]"=&r"(t4), [t5]"=&r"(t5)
);
curidx = 17 * qc1;
int *in_int = (int *)&in[i];
float *in_pos = (float *)&in[i];
float di0, di1, di2, di3;
+ int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
"slt %[qc2], $zero, %[qc2] \n\t"
"slt %[qc3], $zero, %[qc3] \n\t"
"slt %[qc4], $zero, %[qc4] \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "srl $t0, $t0, 31 \n\t"
- "srl $t1, $t1, 31 \n\t"
- "srl $t2, $t2, 31 \n\t"
- "srl $t3, $t3, 31 \n\t"
- "subu $t4, $zero, %[qc1] \n\t"
- "subu $t5, $zero, %[qc2] \n\t"
- "subu $t6, $zero, %[qc3] \n\t"
- "subu $t7, $zero, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t5, $t1 \n\t"
- "movn %[qc3], $t6, $t2 \n\t"
- "movn %[qc4], $t7, $t3 \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "srl %[t0], %[t0], 31 \n\t"
+ "srl %[t1], %[t1], 31 \n\t"
+ "srl %[t2], %[t2], 31 \n\t"
+ "srl %[t3], %[t3], 31 \n\t"
+ "subu %[t4], $zero, %[qc1] \n\t"
+ "subu %[t5], $zero, %[qc2] \n\t"
+ "subu %[t6], $zero, %[qc3] \n\t"
+ "subu %[t7], $zero, %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t5], %[t1] \n\t"
+ "movn %[qc3], %[t6], %[t2] \n\t"
+ "movn %[qc4], %[t7], %[t3] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
- [qc3]"+r"(qc3), [qc4]"+r"(qc4)
+ [qc3]"+r"(qc3), [qc4]"+r"(qc4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4), [t5]"=&r"(t5), [t6]"=&r"(t6), [t7]"=&r"(t7)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3",
- "t4", "t5", "t6", "t7",
- "memory"
+ : "memory"
);
curidx = qc1;
int curidx;
float *in_pos = (float *)&in[i];
float di0, di1, di2, di3;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 2 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
+ "ori %[t4], $zero, 2 \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
- [qc3]"+r"(qc3), [qc4]"+r"(qc4)
- :
- : "t0", "t1", "t2", "t3", "t4"
+ [qc3]"+r"(qc3), [qc4]"+r"(qc4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
);
curidx = qc1;
int *in_int = (int *)&in[i];
float *in_pos = (float *)&in[i];
float di0, di1, di2, di3;
+ int t0, t1, t2, t3, t4, t5, t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 4 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "srl $t0, $t0, 31 \n\t"
- "srl $t1, $t1, 31 \n\t"
- "srl $t2, $t2, 31 \n\t"
- "srl $t3, $t3, 31 \n\t"
- "subu $t4, $zero, %[qc1] \n\t"
- "subu $t5, $zero, %[qc2] \n\t"
- "subu $t6, $zero, %[qc3] \n\t"
- "subu $t7, $zero, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t5, $t1 \n\t"
- "movn %[qc3], $t6, $t2 \n\t"
- "movn %[qc4], $t7, $t3 \n\t"
+ "ori %[t4], $zero, 4 \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "srl %[t0], %[t0], 31 \n\t"
+ "srl %[t1], %[t1], 31 \n\t"
+ "srl %[t2], %[t2], 31 \n\t"
+ "srl %[t3], %[t3], 31 \n\t"
+ "subu %[t4], $zero, %[qc1] \n\t"
+ "subu %[t5], $zero, %[qc2] \n\t"
+ "subu %[t6], $zero, %[qc3] \n\t"
+ "subu %[t7], $zero, %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t5], %[t1] \n\t"
+ "movn %[qc3], %[t6], %[t2] \n\t"
+ "movn %[qc4], %[t7], %[t3] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
- [qc3]"+r"(qc3), [qc4]"+r"(qc4)
+ [qc3]"+r"(qc3), [qc4]"+r"(qc4),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4), [t5]"=&r"(t5), [t6]"=&r"(t6), [t7]"=&r"(t7)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3",
- "t4", "t5", "t6", "t7",
- "memory"
+ : "memory"
);
curidx = 9 * qc1;
int *in_int = (int *)&in[i];
float *in_pos = (float *)&in[i];
float di0, di1, di2, di3;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 7 \n\t"
+ "ori %[t4], $zero, 7 \n\t"
"ori %[sign1], $zero, 0 \n\t"
"ori %[sign2], $zero, 0 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "slt $t0, $t0, $zero \n\t"
- "movn %[sign1], $t0, %[qc1] \n\t"
- "slt $t2, $t2, $zero \n\t"
- "movn %[sign2], $t2, %[qc3] \n\t"
- "slt $t1, $t1, $zero \n\t"
- "sll $t0, %[sign1], 1 \n\t"
- "or $t0, $t0, $t1 \n\t"
- "movn %[sign1], $t0, %[qc2] \n\t"
- "slt $t3, $t3, $zero \n\t"
- "sll $t0, %[sign2], 1 \n\t"
- "or $t0, $t0, $t3 \n\t"
- "movn %[sign2], $t0, %[qc4] \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "slt %[t0], %[t0], $zero \n\t"
+ "movn %[sign1], %[t0], %[qc1] \n\t"
+ "slt %[t2], %[t2], $zero \n\t"
+ "movn %[sign2], %[t2], %[qc3] \n\t"
+ "slt %[t1], %[t1], $zero \n\t"
+ "sll %[t0], %[sign1], 1 \n\t"
+ "or %[t0], %[t0], %[t1] \n\t"
+ "movn %[sign1], %[t0], %[qc2] \n\t"
+ "slt %[t3], %[t3], $zero \n\t"
+ "sll %[t0], %[sign2], 1 \n\t"
+ "or %[t0], %[t0], %[t3] \n\t"
+ "movn %[sign2], %[t0], %[qc4] \n\t"
"slt %[count1], $zero, %[qc1] \n\t"
- "slt $t1, $zero, %[qc2] \n\t"
+ "slt %[t1], $zero, %[qc2] \n\t"
"slt %[count2], $zero, %[qc3] \n\t"
- "slt $t2, $zero, %[qc4] \n\t"
- "addu %[count1], %[count1], $t1 \n\t"
- "addu %[count2], %[count2], $t2 \n\t"
+ "slt %[t2], $zero, %[qc4] \n\t"
+ "addu %[count1], %[count1], %[t1] \n\t"
+ "addu %[count2], %[count2], %[t2] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
[qc3]"+r"(qc3), [qc4]"+r"(qc4),
[sign1]"=&r"(sign1), [count1]"=&r"(count1),
- [sign2]"=&r"(sign2), [count2]"=&r"(count2)
+ [sign2]"=&r"(sign2), [count2]"=&r"(count2),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3", "t4",
- "memory"
+ : "memory"
);
curidx = 8 * qc1;
int *in_int = (int *)&in[i];
float *in_pos = (float *)&in[i];
float di0, di1, di2, di3;
+ int t0, t1, t2, t3, t4;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 12 \n\t"
+ "ori %[t4], $zero, 12 \n\t"
"ori %[sign1], $zero, 0 \n\t"
"ori %[sign2], $zero, 0 \n\t"
- "slt $t0, $t4, %[qc1] \n\t"
- "slt $t1, $t4, %[qc2] \n\t"
- "slt $t2, $t4, %[qc3] \n\t"
- "slt $t3, $t4, %[qc4] \n\t"
- "movn %[qc1], $t4, $t0 \n\t"
- "movn %[qc2], $t4, $t1 \n\t"
- "movn %[qc3], $t4, $t2 \n\t"
- "movn %[qc4], $t4, $t3 \n\t"
- "lw $t0, 0(%[in_int]) \n\t"
- "lw $t1, 4(%[in_int]) \n\t"
- "lw $t2, 8(%[in_int]) \n\t"
- "lw $t3, 12(%[in_int]) \n\t"
- "slt $t0, $t0, $zero \n\t"
- "movn %[sign1], $t0, %[qc1] \n\t"
- "slt $t2, $t2, $zero \n\t"
- "movn %[sign2], $t2, %[qc3] \n\t"
- "slt $t1, $t1, $zero \n\t"
- "sll $t0, %[sign1], 1 \n\t"
- "or $t0, $t0, $t1 \n\t"
- "movn %[sign1], $t0, %[qc2] \n\t"
- "slt $t3, $t3, $zero \n\t"
- "sll $t0, %[sign2], 1 \n\t"
- "or $t0, $t0, $t3 \n\t"
- "movn %[sign2], $t0, %[qc4] \n\t"
+ "slt %[t0], %[t4], %[qc1] \n\t"
+ "slt %[t1], %[t4], %[qc2] \n\t"
+ "slt %[t2], %[t4], %[qc3] \n\t"
+ "slt %[t3], %[t4], %[qc4] \n\t"
+ "movn %[qc1], %[t4], %[t0] \n\t"
+ "movn %[qc2], %[t4], %[t1] \n\t"
+ "movn %[qc3], %[t4], %[t2] \n\t"
+ "movn %[qc4], %[t4], %[t3] \n\t"
+ "lw %[t0], 0(%[in_int]) \n\t"
+ "lw %[t1], 4(%[in_int]) \n\t"
+ "lw %[t2], 8(%[in_int]) \n\t"
+ "lw %[t3], 12(%[in_int]) \n\t"
+ "slt %[t0], %[t0], $zero \n\t"
+ "movn %[sign1], %[t0], %[qc1] \n\t"
+ "slt %[t2], %[t2], $zero \n\t"
+ "movn %[sign2], %[t2], %[qc3] \n\t"
+ "slt %[t1], %[t1], $zero \n\t"
+ "sll %[t0], %[sign1], 1 \n\t"
+ "or %[t0], %[t0], %[t1] \n\t"
+ "movn %[sign1], %[t0], %[qc2] \n\t"
+ "slt %[t3], %[t3], $zero \n\t"
+ "sll %[t0], %[sign2], 1 \n\t"
+ "or %[t0], %[t0], %[t3] \n\t"
+ "movn %[sign2], %[t0], %[qc4] \n\t"
"slt %[count1], $zero, %[qc1] \n\t"
- "slt $t1, $zero, %[qc2] \n\t"
+ "slt %[t1], $zero, %[qc2] \n\t"
"slt %[count2], $zero, %[qc3] \n\t"
- "slt $t2, $zero, %[qc4] \n\t"
- "addu %[count1], %[count1], $t1 \n\t"
- "addu %[count2], %[count2], $t2 \n\t"
+ "slt %[t2], $zero, %[qc4] \n\t"
+ "addu %[count1], %[count1], %[t1] \n\t"
+ "addu %[count2], %[count2], %[t2] \n\t"
".set pop \n\t"
: [qc1]"+r"(qc1), [qc2]"+r"(qc2),
[qc3]"+r"(qc3), [qc4]"+r"(qc4),
[sign1]"=&r"(sign1), [count1]"=&r"(count1),
- [sign2]"=&r"(sign2), [count2]"=&r"(count2)
+ [sign2]"=&r"(sign2), [count2]"=&r"(count2),
+ [t0]"=&r"(t0), [t1]"=&r"(t1), [t2]"=&r"(t2), [t3]"=&r"(t3),
+ [t4]"=&r"(t4)
: [in_int]"r"(in_int)
- : "t0", "t1", "t2", "t3", "t4",
- "memory"
+ : "memory"
);
curidx = 13 * qc1;
float di1, di2, di3, di4;
int cond0, cond1, cond2, cond3;
int c1, c2, c3, c4;
+ int t6, t7;
qc1 = scaled[i ] * Q34 + 0.4054f;
qc2 = scaled[i+1] * Q34 + 0.4054f;
".set push \n\t"
".set noreorder \n\t"
- "ori $t4, $zero, 15 \n\t"
- "ori $t5, $zero, 16 \n\t"
+ "ori %[t6], $zero, 15 \n\t"
+ "ori %[t7], $zero, 16 \n\t"
"shll_s.w %[c1], %[qc1], 18 \n\t"
"shll_s.w %[c2], %[qc2], 18 \n\t"
"shll_s.w %[c3], %[qc3], 18 \n\t"
"srl %[c2], %[c2], 18 \n\t"
"srl %[c3], %[c3], 18 \n\t"
"srl %[c4], %[c4], 18 \n\t"
- "slt %[cond0], $t4, %[qc1] \n\t"
- "slt %[cond1], $t4, %[qc2] \n\t"
- "slt %[cond2], $t4, %[qc3] \n\t"
- "slt %[cond3], $t4, %[qc4] \n\t"
- "movn %[qc1], $t5, %[cond0] \n\t"
- "movn %[qc2], $t5, %[cond1] \n\t"
- "movn %[qc3], $t5, %[cond2] \n\t"
- "movn %[qc4], $t5, %[cond3] \n\t"
+ "slt %[cond0], %[t6], %[qc1] \n\t"
+ "slt %[cond1], %[t6], %[qc2] \n\t"
+ "slt %[cond2], %[t6], %[qc3] \n\t"
+ "slt %[cond3], %[t6], %[qc4] \n\t"
+ "movn %[qc1], %[t7], %[cond0] \n\t"
+ "movn %[qc2], %[t7], %[cond1] \n\t"
+ "movn %[qc3], %[t7], %[cond2] \n\t"
+ "movn %[qc4], %[t7], %[cond3] \n\t"
".set pop \n\t"
[cond0]"=&r"(cond0), [cond1]"=&r"(cond1),
[cond2]"=&r"(cond2), [cond3]"=&r"(cond3),
[c1]"=&r"(c1), [c2]"=&r"(c2),
- [c3]"=&r"(c3), [c4]"=&r"(c4)
- :
- : "t4", "t5"
+ [c3]"=&r"(c3), [c4]"=&r"(c4),
+ [t6]"=&r"(t6), [t7]"=&r"(t7)
);
curidx = 17 * qc1;