Unified · Split
| @@ -1493,15 +1493,12 @@ gopcode64(int o, Node *f1, Node *f2, Node *t) · 1492 unmodified lines | ||
| 1493 | 1493 | f2 = t; |
| 1494 | 1494 | regalloc(&nod, ®node, Z); |
| 1495 | 1495 | gins3(AMULLW, f1->right, f2->right, &nod); /* lo(f2.low*f1.low) */ |
| 1496 | − a1 = AMULHW; | |
| 1497 | − if(o == OLMUL || o == OASLMUL) | |
| 1498 | − a1 = AMULHWU; | |
| 1499 | 1496 | regalloc(&nod1, ®node, Z); |
| 1500 | − gins3(a1, f1->right, f2->right, &nod1); /* hi(f2.low*f1.low) */ | |
| 1497 | + gins3(AMULHWU, f1->right, f2->right, &nod1); /* hi(f2.low*f1.low) */ | |
| 1501 | 1498 | regalloc(&nod2, ®node, Z); |
| 1502 | 1499 | gins3(AMULLW, f2->right, f1->left, &nod2); /* lo(f2.low*f1.high) */ |
| 1503 | 1500 | gins(AADD, &nod2, &nod1); |
| 1504 | − gins3(AMULLW, f1->right, f2->left, &nod2); /* hi(f2.high*f1.low) */ | |
| 1501 | + gins3(AMULLW, f1->right, f2->left, &nod2); /* lo(f2.high*f1.low) */ | |
| 1505 | 1502 | gins(AADD, &nod2, &nod1); |
| 1506 | 1503 | regfree(&nod2); |
| 1507 | 1504 | gmove(&nod, t->right); |