| author | |
| committer | |
| log | 485e20884cfe7b6597e6d7c615195bb263d38abb |
| tree | 307ccc180e4c3d6c4a791fc4622116843f8beb9b |
| parent | 0be7c23f111eeda5ed65c065ad65a6febd12f20c |
2 files changed, 18 insertions(+), 1 deletions(-)
src/arch/x86_64/CodeGen.zig+18| ... | @@ -13046,6 +13046,24 @@ fn moveStrategy(self: *Self, ty: Type, class: Register.Class, aligned: bool) !Mo | ... | @@ -13046,6 +13046,24 @@ fn moveStrategy(self: *Self, ty: Type, class: Register.Class, aligned: bool) !Mo |
| 13046 | }, | 13046 | }, |
| 13047 | else => {}, | 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 | .Float => switch (ty.childType(mod).floatBits(self.target.*)) { | 13067 | .Float => switch (ty.childType(mod).floatBits(self.target.*)) { |
| 13050 | 16 => switch (ty.vectorLen(mod)) { | 13068 | 16 => switch (ty.vectorLen(mod)) { |
| 13051 | 1 => return if (self.hasFeature(.avx)) .{ .vex_insert_extract = .{ | 13069 | 1 => return if (self.hasFeature(.avx)) .{ .vex_insert_extract = .{ |
test/behavior/cast.zig-1| ... | @@ -2355,7 +2355,6 @@ test "@ptrFromInt on vector" { | ... | @@ -2355,7 +2355,6 @@ test "@ptrFromInt on vector" { |
| 2355 | 2355 | ||
| 2356 | test "@intFromPtr on vector" { | 2356 | test "@intFromPtr on vector" { |
| 2357 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 2357 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 2358 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 2359 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 2358 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2360 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 2359 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2361 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 2360 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |