| ... | ... | @@ -13046,6 +13046,24 @@ fn moveStrategy(self: *Self, ty: Type, class: Register.Class, aligned: bool) !Mo |
| 13046 | 13046 | }, |
| 13047 | 13047 | else => {}, |
| 13048 | 13048 | }, |
| 13049 | .Pointer, .Optional => if (ty.childType(mod).isPtrAtRuntime(mod)) |
| 13050 | switch (ty.vectorLen(mod)) { |
| 13051 | 1 => return .{ .move = if (self.hasFeature(.avx)) |
| 13052 | .{ .v_q, .mov } |
| 13053 | else |
| 13054 | .{ ._q, .mov } }, |
| 13055 | 2 => return .{ .move = if (self.hasFeature(.avx)) |
| 13056 | if (aligned) .{ .v_, .movdqa } else .{ .v_, .movdqu } |
| 13057 | else if (aligned) .{ ._, .movdqa } else .{ ._, .movdqu } }, |
| 13058 | 3...4 => if (self.hasFeature(.avx)) |
| 13059 | return .{ .move = if (aligned) |
| 13060 | .{ .v_, .movdqa } |
| 13061 | else |
| 13062 | .{ .v_, .movdqu } }, |
| 13063 | else => {}, |
| 13064 | } |
| 13065 | else |
| 13066 | unreachable, |
| 13049 | 13067 | .Float => switch (ty.childType(mod).floatBits(self.target.*)) { |
| 13050 | 13068 | 16 => switch (ty.vectorLen(mod)) { |
| 13051 | 13069 | 1 => return if (self.hasFeature(.avx)) .{ .vex_insert_extract = .{ |