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