authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-05-02 21:01:59-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-05-03 04:25:14-04:00
log36a39267b89583ad1dded42a54de90a7f9b5eacf
treec0da0297c06330dc489a923f5d5fe3c870360eb5
parent9ccdbca635a3b5a26b65ab8e52533d3acc8f2f5e

x86_64: fix feature confusion


15 files changed, 6 insertions(+), 66 deletions(-)

src/arch/x86_64/CodeGen.zig+6-1
......@@ -5879,7 +5879,12 @@ fn genBinOpMir(self: *Self, mir_tag: Mir.Inst.Tag, ty: Type, dst_mcv: MCValue, s
58795879 .load_got,
58805880 .load_tlv,
58815881 => {
5882 const addr_reg = try self.copyToTmpRegister(ty, src_mcv.address());
5882 var ptr_pl = Type.Payload.ElemType{
5883 .base = .{ .tag = .single_const_pointer },
5884 .data = ty,
5885 };
5886 const ptr_ty = Type.initPayload(&ptr_pl.base);
5887 const addr_reg = try self.copyToTmpRegister(ptr_ty, src_mcv.address());
58835888 return self.genBinOpMir(mir_tag, ty, dst_mcv, .{
58845889 .indirect = .{ .reg = addr_reg },
58855890 });
test/behavior/basic.zig-8
......@@ -363,8 +363,6 @@ fn hereIsAnOpaqueType(ptr: *OpaqueA) *OpaqueA {
363363}
364364
365365test "take address of parameter" {
366 if (builtin.zig_backend == .stage2_x86_64 and
367 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
368366 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
369367 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
370368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -392,8 +390,6 @@ test "array 2D const double ptr" {
392390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
393391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
394392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
395 if (builtin.zig_backend == .stage2_x86_64 and
396 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
397393 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
398394
399395 const rect_2d_vertexes = [_][1]f32{
......@@ -407,8 +403,6 @@ test "array 2D const double ptr with offset" {
407403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
408404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
409405 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
410 if (builtin.zig_backend == .stage2_x86_64 and
411 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
412406 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
413407
414408 const rect_2d_vertexes = [_][2]f32{
......@@ -422,8 +416,6 @@ test "array 3D const double ptr with offset" {
422416 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
423417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
424418 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
425 if (builtin.zig_backend == .stage2_x86_64 and
426 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
427419 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
428420
429421 const rect_3d_vertexes = [_][2][2]f32{
test/behavior/bugs/13069.zig-2
......@@ -6,8 +6,6 @@ test {
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64 and
10 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
119
1210 var opt_x: ?[3]f32 = [_]f32{0.0} ** 3;
1311
test/behavior/cast.zig-5
......@@ -95,9 +95,6 @@ test "comptime_int @intToFloat" {
9595
9696test "@intToFloat" {
9797 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_x86_64 and
99 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
100
10198 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10299 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103100
......@@ -636,8 +633,6 @@ test "vector casts" {
636633}
637634
638635test "@floatCast cast down" {
639 if (builtin.zig_backend == .stage2_x86_64 and
640 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
641636 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
642637 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
643638 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/enum.zig-2
......@@ -940,8 +940,6 @@ test "constant enum initialization with differing sizes" {
940940 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
941941 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
942942 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
943 if (builtin.zig_backend == .stage2_x86_64 and
944 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
945943
946944 try test3_1(test3_foo);
947945 try test3_2(test3_bar);
test/behavior/eval.zig-2
......@@ -535,8 +535,6 @@ test "static eval list init" {
535535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
536536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
537537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_x86_64 and
539 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
540538
541539 try expect(static_vec3.data[2] == 1.0);
542540 try expect(vec3(0.0, 0.0, 3.0).data[2] == 3.0);
test/behavior/floatop.zig-10
......@@ -96,8 +96,6 @@ test "negative f128 floatToInt at compile-time" {
9696}
9797
9898test "@sqrt" {
99 if (builtin.zig_backend == .stage2_x86_64 and
100 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
10199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
102100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
103101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -905,8 +903,6 @@ test "negation f16" {
905903}
906904
907905test "negation f32" {
908 if (builtin.zig_backend == .stage2_x86_64 and
909 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
910906 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
911907 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
912908 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -926,8 +922,6 @@ test "negation f32" {
926922}
927923
928924test "negation f64" {
929 if (builtin.zig_backend == .stage2_x86_64 and
930 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
931925 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
932926 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
933927 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -1062,8 +1056,6 @@ test "nan negation f16" {
10621056}
10631057
10641058test "nan negation f32" {
1065 if (builtin.zig_backend == .stage2_x86_64 and
1066 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
10671059 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10681060 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10691061 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -1083,8 +1075,6 @@ test "nan negation f32" {
10831075
10841076test "nan negation f64" {
10851077 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1086 if (builtin.zig_backend == .stage2_x86_64 and
1087 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
10881078 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10891079 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10901080 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/fn.zig-4
......@@ -338,8 +338,6 @@ test "function call with anon list literal" {
338338 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
339339 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
340340 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
341 if (builtin.zig_backend == .stage2_x86_64 and
342 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
343341
344342 const S = struct {
345343 fn doTheTest() !void {
......@@ -360,8 +358,6 @@ test "function call with anon list literal - 2D" {
360358 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
361359 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
362360 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
363 if (builtin.zig_backend == .stage2_x86_64 and
364 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
365361
366362 const S = struct {
367363 fn doTheTest() !void {
test/behavior/generics.zig-4
......@@ -59,8 +59,6 @@ test "fn with comptime args" {
5959 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6060 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
62 if (builtin.zig_backend == .stage2_x86_64 and
63 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
6462
6563 try expect(gimmeTheBigOne(1234, 5678) == 5678);
6664 try expect(shouldCallSameInstance(34, 12) == 34);
......@@ -71,8 +69,6 @@ test "anytype params" {
7169 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7270 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7371 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_x86_64 and
75 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
7672
7773 try expect(max_i32(12, 34) == 34);
7874 try expect(max_f64(1.2, 3.4) == 3.4);
test/behavior/math.zig-2
......@@ -203,8 +203,6 @@ test "float equality" {
203203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
204204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
205205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_x86_64 and
207 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
208206
209207 const x: f64 = 0.012;
210208 const y: f64 = x + 1.0;
test/behavior/maximum_minimum.zig-4
......@@ -8,8 +8,6 @@ test "@max" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_x86_64 and
12 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
1311
1412 const S = struct {
1513 fn doTheTest() !void {
......@@ -56,8 +54,6 @@ test "@min" {
5654 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5755 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5856 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
59 if (builtin.zig_backend == .stage2_x86_64 and
60 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
6157
6258 const S = struct {
6359 fn doTheTest() !void {
test/behavior/pointers.zig-4
......@@ -206,8 +206,6 @@ test "allowzero pointer and slice" {
206206}
207207
208208test "assign null directly to C pointer and test null equality" {
209 if (builtin.zig_backend == .stage2_x86_64 and
210 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
211209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
212210 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
213211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -346,8 +344,6 @@ test "pointer sentinel with +inf" {
346344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
347345 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
348346 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
349 if (builtin.zig_backend == .stage2_x86_64 and
350 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
351347
352348 const S = struct {
353349 fn doTheTest() !void {
test/behavior/struct.zig-2
......@@ -744,8 +744,6 @@ var g_foo: S0 = S0.init();
744744
745745test "packed struct with fp fields" {
746746 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
747 if (builtin.zig_backend == .stage2_x86_64 and
748 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
749747 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
750748 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
751749 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/switch.zig-2
......@@ -230,8 +230,6 @@ test "switch prong with variable" {
230230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
231231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
232232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
233 if (builtin.zig_backend == .stage2_x86_64 and
234 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
235233
236234 try switchProngWithVarFn(SwitchProngWithVarEnum{ .One = 13 });
237235 try switchProngWithVarFn(SwitchProngWithVarEnum{ .Two = 13.0 });
test/behavior/union.zig-14
......@@ -14,8 +14,6 @@ test "basic unions with floats" {
1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_x86_64 and
18 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
1917
2018 var foo = FooWithFloats{ .int = 1 };
2119 try expect(foo.int == 1);
......@@ -31,8 +29,6 @@ test "init union with runtime value - floats" {
3129 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3230 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3331 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
34 if (builtin.zig_backend == .stage2_x86_64 and
35 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
3632
3733 var foo: FooWithFloats = undefined;
3834
......@@ -220,8 +216,6 @@ test "union with specified enum tag" {
220216 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
221217 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
222218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
223 if (builtin.zig_backend == .stage2_x86_64 and
224 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
225219
226220 try doTest();
227221 comptime try doTest();
......@@ -231,8 +225,6 @@ test "packed union generates correctly aligned type" {
231225 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
232226 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
233227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_x86_64 and
235 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
236228
237229 const U = packed union {
238230 f1: *const fn () error{TestUnexpectedResult}!void,
......@@ -910,8 +902,6 @@ test "anonymous union literal syntax" {
910902 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
911903 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
912904 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
913 if (builtin.zig_backend == .stage2_x86_64 and
914 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
915905
916906 const S = struct {
917907 const Number = union {
......@@ -1064,8 +1054,6 @@ test "containers with single-field enums" {
10641054 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10651055 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10661056 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1067 if (builtin.zig_backend == .stage2_x86_64 and
1068 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
10691057
10701058 const S = struct {
10711059 const A = union(enum) { f1 };
......@@ -1524,8 +1512,6 @@ test "reinterpreting enum value inside packed union" {
15241512 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15251513 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15261514 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1527 if (builtin.zig_backend == .stage2_x86_64 and
1528 comptime !std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sse, .sse2, .sse4_1 })) return error.SkipZigTest; // TODO
15291515
15301516 const U = packed union {
15311517 tag: enum { a, b },