Revision ebcd88ce target-arm/translate.c
b/target-arm/translate.c | ||
---|---|---|
5131 | 5131 |
default: /* 15 is RESERVED. */ |
5132 | 5132 |
return 1; |
5133 | 5133 |
} |
5134 |
if (op == 5 || op == 13 || (op >= 8 && op <= 11)) { |
|
5134 |
if (op == 13) { |
|
5135 |
/* VQDMULL */ |
|
5136 |
gen_neon_addl_saturate(cpu_V0, cpu_V0, size); |
|
5137 |
neon_store_reg64(cpu_V0, rd + pass); |
|
5138 |
} else if (op == 5 || (op >= 8 && op <= 11)) { |
|
5135 | 5139 |
/* Accumulate. */ |
5136 | 5140 |
if (op == 10 || op == 11) { |
5137 | 5141 |
gen_neon_negl(cpu_V0, size); |
5138 | 5142 |
} |
5139 |
|
|
5140 |
if (op != 13) { |
|
5141 |
neon_load_reg64(cpu_V1, rd + pass); |
|
5142 |
} |
|
5143 |
|
|
5143 |
neon_load_reg64(cpu_V1, rd + pass); |
|
5144 | 5144 |
switch (op) { |
5145 | 5145 |
case 5: case 8: case 10: /* VABAL, VMLAL, VMLSL */ |
5146 | 5146 |
gen_neon_addl(size); |
... | ... | |
5149 | 5149 |
gen_neon_addl_saturate(cpu_V0, cpu_V0, size); |
5150 | 5150 |
gen_neon_addl_saturate(cpu_V0, cpu_V1, size); |
5151 | 5151 |
break; |
5152 |
/* Fall through. */ |
|
5153 |
case 13: /* VQDMULL */ |
|
5154 |
gen_neon_addl_saturate(cpu_V0, cpu_V0, size); |
|
5155 |
break; |
|
5156 | 5152 |
default: |
5157 | 5153 |
abort(); |
5158 | 5154 |
} |
Also available in: Unified diff