| ... | @@ -6531,6 +6531,9 @@ fn genBinOp( | ... | @@ -6531,6 +6531,9 @@ fn genBinOp( |
| 6531 | .sub, | 6531 | .sub, |
| 6532 | .subwrap, | 6532 | .subwrap, |
| 6533 | => if (self.hasFeature(.avx)) .{ .vp_b, .sub } else .{ .p_b, .sub }, | 6533 | => if (self.hasFeature(.avx)) .{ .vp_b, .sub } else .{ .p_b, .sub }, |
| | 6534 | .bit_and => if (self.hasFeature(.avx)) .{ .vp_, .@"and" } else .{ .p_, .@"and" }, |
| | 6535 | .bit_or => if (self.hasFeature(.avx)) .{ .vp_, .@"or" } else .{ .p_, .@"or" }, |
| | 6536 | .xor => if (self.hasFeature(.avx)) .{ .vp_, .xor } else .{ .p_, .xor }, |
| 6534 | else => null, | 6537 | else => null, |
| 6535 | }, | 6538 | }, |
| 6536 | 17...32 => switch (air_tag) { | 6539 | 17...32 => switch (air_tag) { |
| ... | @@ -6540,6 +6543,9 @@ fn genBinOp( | ... | @@ -6540,6 +6543,9 @@ fn genBinOp( |
| 6540 | .sub, | 6543 | .sub, |
| 6541 | .subwrap, | 6544 | .subwrap, |
| 6542 | => if (self.hasFeature(.avx2)) .{ .vp_b, .sub } else null, | 6545 | => if (self.hasFeature(.avx2)) .{ .vp_b, .sub } else null, |
| | 6546 | .bit_and => if (self.hasFeature(.avx2)) .{ .vp_, .@"and" } else null, |
| | 6547 | .bit_or => if (self.hasFeature(.avx2)) .{ .vp_, .@"or" } else null, |
| | 6548 | .xor => if (self.hasFeature(.avx2)) .{ .vp_, .xor } else null, |
| 6543 | else => null, | 6549 | else => null, |
| 6544 | }, | 6550 | }, |
| 6545 | else => null, | 6551 | else => null, |
| ... | @@ -6555,6 +6561,9 @@ fn genBinOp( | ... | @@ -6555,6 +6561,9 @@ fn genBinOp( |
| 6555 | .mul, | 6561 | .mul, |
| 6556 | .mulwrap, | 6562 | .mulwrap, |
| 6557 | => if (self.hasFeature(.avx)) .{ .vp_w, .mull } else .{ .p_d, .mull }, | 6563 | => if (self.hasFeature(.avx)) .{ .vp_w, .mull } else .{ .p_d, .mull }, |
| | 6564 | .bit_and => if (self.hasFeature(.avx)) .{ .vp_, .@"and" } else .{ .p_, .@"and" }, |
| | 6565 | .bit_or => if (self.hasFeature(.avx)) .{ .vp_, .@"or" } else .{ .p_, .@"or" }, |
| | 6566 | .xor => if (self.hasFeature(.avx)) .{ .vp_, .xor } else .{ .p_, .xor }, |
| 6558 | else => null, | 6567 | else => null, |
| 6559 | }, | 6568 | }, |
| 6560 | 9...16 => switch (air_tag) { | 6569 | 9...16 => switch (air_tag) { |
| ... | @@ -6567,6 +6576,9 @@ fn genBinOp( | ... | @@ -6567,6 +6576,9 @@ fn genBinOp( |
| 6567 | .mul, | 6576 | .mul, |
| 6568 | .mulwrap, | 6577 | .mulwrap, |
| 6569 | => if (self.hasFeature(.avx2)) .{ .vp_w, .mull } else null, | 6578 | => if (self.hasFeature(.avx2)) .{ .vp_w, .mull } else null, |
| | 6579 | .bit_and => if (self.hasFeature(.avx2)) .{ .vp_, .@"and" } else null, |
| | 6580 | .bit_or => if (self.hasFeature(.avx2)) .{ .vp_, .@"or" } else null, |
| | 6581 | .xor => if (self.hasFeature(.avx2)) .{ .vp_, .xor } else null, |
| 6570 | else => null, | 6582 | else => null, |
| 6571 | }, | 6583 | }, |
| 6572 | else => null, | 6584 | else => null, |
| ... | @@ -6587,6 +6599,9 @@ fn genBinOp( | ... | @@ -6587,6 +6599,9 @@ fn genBinOp( |
| 6587 | .{ .p_d, .mull } | 6599 | .{ .p_d, .mull } |
| 6588 | else | 6600 | else |
| 6589 | null, | 6601 | null, |
| | 6602 | .bit_and => if (self.hasFeature(.avx)) .{ .vp_, .@"and" } else .{ .p_, .@"and" }, |
| | 6603 | .bit_or => if (self.hasFeature(.avx)) .{ .vp_, .@"or" } else .{ .p_, .@"or" }, |
| | 6604 | .xor => if (self.hasFeature(.avx)) .{ .vp_, .xor } else .{ .p_, .xor }, |
| 6590 | else => null, | 6605 | else => null, |
| 6591 | }, | 6606 | }, |
| 6592 | 5...8 => switch (air_tag) { | 6607 | 5...8 => switch (air_tag) { |
| ... | @@ -6599,6 +6614,9 @@ fn genBinOp( | ... | @@ -6599,6 +6614,9 @@ fn genBinOp( |
| 6599 | .mul, | 6614 | .mul, |
| 6600 | .mulwrap, | 6615 | .mulwrap, |
| 6601 | => if (self.hasFeature(.avx2)) .{ .vp_d, .mull } else null, | 6616 | => if (self.hasFeature(.avx2)) .{ .vp_d, .mull } else null, |
| | 6617 | .bit_and => if (self.hasFeature(.avx2)) .{ .vp_, .@"and" } else null, |
| | 6618 | .bit_or => if (self.hasFeature(.avx2)) .{ .vp_, .@"or" } else null, |
| | 6619 | .xor => if (self.hasFeature(.avx2)) .{ .vp_, .xor } else null, |
| 6602 | else => null, | 6620 | else => null, |
| 6603 | }, | 6621 | }, |
| 6604 | else => null, | 6622 | else => null, |
| ... | @@ -6611,6 +6629,9 @@ fn genBinOp( | ... | @@ -6611,6 +6629,9 @@ fn genBinOp( |
| 6611 | .sub, | 6629 | .sub, |
| 6612 | .subwrap, | 6630 | .subwrap, |
| 6613 | => if (self.hasFeature(.avx)) .{ .vp_q, .sub } else .{ .p_q, .sub }, | 6631 | => if (self.hasFeature(.avx)) .{ .vp_q, .sub } else .{ .p_q, .sub }, |
| | 6632 | .bit_and => if (self.hasFeature(.avx)) .{ .vp_, .@"and" } else .{ .p_, .@"and" }, |
| | 6633 | .bit_or => if (self.hasFeature(.avx)) .{ .vp_, .@"or" } else .{ .p_, .@"or" }, |
| | 6634 | .xor => if (self.hasFeature(.avx)) .{ .vp_, .xor } else .{ .p_, .xor }, |
| 6614 | else => null, | 6635 | else => null, |
| 6615 | }, | 6636 | }, |
| 6616 | 3...4 => switch (air_tag) { | 6637 | 3...4 => switch (air_tag) { |
| ... | @@ -6620,6 +6641,9 @@ fn genBinOp( | ... | @@ -6620,6 +6641,9 @@ fn genBinOp( |
| 6620 | .sub, | 6641 | .sub, |
| 6621 | .subwrap, | 6642 | .subwrap, |
| 6622 | => if (self.hasFeature(.avx2)) .{ .vp_q, .sub } else null, | 6643 | => if (self.hasFeature(.avx2)) .{ .vp_q, .sub } else null, |
| | 6644 | .bit_and => if (self.hasFeature(.avx2)) .{ .vp_, .@"and" } else null, |
| | 6645 | .bit_or => if (self.hasFeature(.avx2)) .{ .vp_, .@"or" } else null, |
| | 6646 | .xor => if (self.hasFeature(.avx2)) .{ .vp_, .xor } else null, |
| 6623 | else => null, | 6647 | else => null, |
| 6624 | }, | 6648 | }, |
| 6625 | else => null, | 6649 | else => null, |
| ... | @@ -6929,6 +6953,7 @@ fn genBinOp( | ... | @@ -6929,6 +6953,7 @@ fn genBinOp( |
| 6929 | else => unreachable, | 6953 | else => unreachable, |
| 6930 | }, | 6954 | }, |
| 6931 | ), | 6955 | ), |
| | 6956 | .bit_and, .bit_or, .xor => {}, |
| 6932 | .max, .min => {}, // TODO: unordered select | 6957 | .max, .min => {}, // TODO: unordered select |
| 6933 | else => unreachable, | 6958 | else => unreachable, |
| 6934 | } | 6959 | } |