static GMQCC_INLINE vec3_t vec3_sub(vec3_t a, vec3_t b) {
vec3_t out;
- out.x = a.x + b.x;
- out.y = a.y + b.y;
- out.z = a.z + b.z;
+ out.x = a.x - b.x;
+ out.y = a.y - b.y;
+ out.z = a.z - b.z;
return out;
}
break;
- case INSTR_ADD_F:
case INSTR_SUB_F:
+ if (swapped)
+ return NULL;
+ case INSTR_ADD_F:
if (fold_immvalue_float(load) == 0.0f) {
++opts_optimizationcount[OPTIM_PEEPHOLE];
ast_unref(right);
}
break;
- case INSTR_ADD_V:
case INSTR_SUB_V:
+ if (swapped)
+ return NULL;
+ case INSTR_ADD_V:
if (vec3_cmp(fold_immvalue_vector(load), vec3_create(0, 0, 0))) {
++opts_optimizationcount[OPTIM_PEEPHOLE];
ast_unref(right);