Revision 4dc064e6 target-arm/translate.c

b/target-arm/translate.c
5137 5137
                        neon_store_reg64(cpu_V0, rd + pass);
5138 5138
                    } else if (op == 5 || (op >= 8 && op <= 11)) {
5139 5139
                        /* Accumulate.  */
5140
                        if (op == 10 || op == 11) {
5141
                            gen_neon_negl(cpu_V0, size);
5142
                        }
5143 5140
                        neon_load_reg64(cpu_V1, rd + pass);
5144 5141
                        switch (op) {
5145
                        case 5: case 8: case 10: /* VABAL, VMLAL, VMLSL */
5142
                        case 10: /* VMLSL */
5143
                            gen_neon_negl(cpu_V0, size);
5144
                            /* Fall through */
5145
                        case 5: case 8: /* VABAL, VMLAL */
5146 5146
                            gen_neon_addl(size);
5147 5147
                            break;
5148 5148
                        case 9: case 11: /* VQDMLAL, VQDMLSL */
5149 5149
                            gen_neon_addl_saturate(cpu_V0, cpu_V0, size);
5150
                            if (op == 11) {
5151
                                gen_neon_negl(cpu_V0, size);
5152
                            }
5150 5153
                            gen_neon_addl_saturate(cpu_V0, cpu_V1, size);
5151 5154
                            break;
5152 5155
                        default:
......
5284 5287
                            tmp2 = tmp4;
5285 5288
                        }
5286 5289
                        gen_neon_mull(cpu_V0, tmp, tmp2, size, u);
5287
                        if (op == 6 || op == 7) {
5288
                            gen_neon_negl(cpu_V0, size);
5289
                        }
5290 5290
                        if (op != 11) {
5291 5291
                            neon_load_reg64(cpu_V1, rd + pass);
5292 5292
                        }
5293 5293
                        switch (op) {
5294
                        case 2: case 6:
5294
                        case 6:
5295
                            gen_neon_negl(cpu_V0, size);
5296
                            /* Fall through */
5297
                        case 2:
5295 5298
                            gen_neon_addl(size);
5296 5299
                            break;
5297 5300
                        case 3: case 7:
5298 5301
                            gen_neon_addl_saturate(cpu_V0, cpu_V0, size);
5302
                            if (op == 7) {
5303
                                gen_neon_negl(cpu_V0, size);
5304
                            }
5299 5305
                            gen_neon_addl_saturate(cpu_V0, cpu_V1, size);
5300 5306
                            break;
5301 5307
                        case 10:

Also available in: Unified diff