| ... | ... | @@ -186,7 +186,8 @@ extern fn c_cmultd(a: ComplexDouble, b: ComplexDouble) ComplexDouble; |
| 186 | 186 | |
| 187 | 187 | const complex_abi_compatible = builtin.cpu.arch != .x86 and !builtin.cpu.arch.isMIPS() and |
| 188 | 188 | !builtin.cpu.arch.isArm() and !builtin.cpu.arch.isPowerPC32() and !builtin.cpu.arch.isRISCV() and |
| 189 | | builtin.cpu.arch != .hexagon; |
| 189 | builtin.cpu.arch != .hexagon and |
| 190 | builtin.cpu.arch != .s390x; |
| 190 | 191 | |
| 191 | 192 | test "C ABI complex float" { |
| 192 | 193 | if (!complex_abi_compatible) return error.SkipZigTest; |
| ... | ... | @@ -330,6 +331,7 @@ test "C ABI struct u64 u64" { |
| 330 | 331 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 331 | 332 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 332 | 333 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 334 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 333 | 335 | |
| 334 | 336 | const s = c_ret_struct_u64_u64(); |
| 335 | 337 | try expect(s.a == 21); |
| ... | ... | @@ -364,6 +366,7 @@ extern fn c_struct_f32(Struct_f32) void; |
| 364 | 366 | test "C ABI struct f32" { |
| 365 | 367 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 366 | 368 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 369 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 367 | 370 | |
| 368 | 371 | const s = c_ret_struct_f32(); |
| 369 | 372 | try expect(s.a == 2.5); |
| ... | ... | @@ -391,6 +394,7 @@ test "C ABI struct f64" { |
| 391 | 394 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 392 | 395 | if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest; |
| 393 | 396 | if (builtin.cpu.arch == .riscv32) return error.SkipZigTest; |
| 397 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 394 | 398 | |
| 395 | 399 | const s = c_ret_struct_f64(); |
| 396 | 400 | try expect(s.a == 2.5); |
| ... | ... | @@ -422,6 +426,7 @@ test "C ABI struct {f32,f32} f32" { |
| 422 | 426 | if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest; |
| 423 | 427 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 424 | 428 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 429 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 425 | 430 | |
| 426 | 431 | const s = c_ret_struct_f32f32_f32(); |
| 427 | 432 | try expect(s.a.b == 1.0); |
| ... | ... | @@ -455,6 +460,7 @@ test "C ABI struct f32 {f32,f32}" { |
| 455 | 460 | if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest; |
| 456 | 461 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 457 | 462 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 463 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 458 | 464 | |
| 459 | 465 | const s = c_ret_struct_f32_f32f32(); |
| 460 | 466 | try expect(s.a == 1.0); |
| ... | ... | @@ -492,6 +498,7 @@ test "C ABI struct{u32,union{u32,struct{u32,u32}}}" { |
| 492 | 498 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 493 | 499 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 494 | 500 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 501 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 495 | 502 | |
| 496 | 503 | const s = c_ret_struct_u32_union_u32_u32u32(); |
| 497 | 504 | try expect(s.a == 1); |
| ... | ... | @@ -512,6 +519,7 @@ test "C ABI struct i32 i32" { |
| 512 | 519 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 513 | 520 | if (builtin.cpu.arch == .riscv32) return error.SkipZigTest; |
| 514 | 521 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 522 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 515 | 523 | |
| 516 | 524 | const s: Struct_i32_i32 = .{ |
| 517 | 525 | .a = 1, |
| ... | ... | @@ -544,6 +552,7 @@ test "C ABI big struct" { |
| 544 | 552 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 545 | 553 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 546 | 554 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 555 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 547 | 556 | |
| 548 | 557 | const s = BigStruct{ |
| 549 | 558 | .a = 1, |
| ... | ... | @@ -572,6 +581,7 @@ test "C ABI big union" { |
| 572 | 581 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 573 | 582 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 574 | 583 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 584 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 575 | 585 | |
| 576 | 586 | const x = BigUnion{ |
| 577 | 587 | .a = BigStruct{ |
| ... | ... | @@ -607,6 +617,7 @@ test "C ABI medium struct of ints and floats" { |
| 607 | 617 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 608 | 618 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 609 | 619 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 620 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 610 | 621 | |
| 611 | 622 | const s = MedStructMixed{ |
| 612 | 623 | .a = 1234, |
| ... | ... | @@ -642,6 +653,7 @@ test "C ABI small struct of ints" { |
| 642 | 653 | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; |
| 643 | 654 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 644 | 655 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 656 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 645 | 657 | |
| 646 | 658 | const s = SmallStructInts{ |
| 647 | 659 | .a = 1, |
| ... | ... | @@ -677,6 +689,7 @@ test "C ABI medium struct of ints" { |
| 677 | 689 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 678 | 690 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 679 | 691 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 692 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 680 | 693 | |
| 681 | 694 | const s = MedStructInts{ |
| 682 | 695 | .x = 1, |
| ... | ... | @@ -757,6 +770,7 @@ test "C ABI split struct of ints" { |
| 757 | 770 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 758 | 771 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 759 | 772 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 773 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 760 | 774 | |
| 761 | 775 | const s = SplitStructInt{ |
| 762 | 776 | .a = 1234, |
| ... | ... | @@ -786,6 +800,7 @@ test "C ABI split struct of ints and floats" { |
| 786 | 800 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 787 | 801 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 788 | 802 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 803 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 789 | 804 | |
| 790 | 805 | const s = SplitStructMixed{ |
| 791 | 806 | .a = 1234, |
| ... | ... | @@ -815,6 +830,7 @@ test "C ABI sret and byval together" { |
| 815 | 830 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 816 | 831 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 817 | 832 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 833 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 818 | 834 | |
| 819 | 835 | const s = BigStruct{ |
| 820 | 836 | .a = 1, |
| ... | ... | @@ -869,6 +885,7 @@ test "C ABI structs of floats as parameter" { |
| 869 | 885 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 870 | 886 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 871 | 887 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 888 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 872 | 889 | |
| 873 | 890 | const v3 = Vector3{ |
| 874 | 891 | .x = 3.0, |
| ... | ... | @@ -911,6 +928,7 @@ test "C ABI structs of ints as multiple parameters" { |
| 911 | 928 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 912 | 929 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 913 | 930 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 931 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 914 | 932 | |
| 915 | 933 | const r1 = Rect{ |
| 916 | 934 | .left = 1, |
| ... | ... | @@ -950,6 +968,7 @@ test "C ABI structs of floats as multiple parameters" { |
| 950 | 968 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 951 | 969 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 952 | 970 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 971 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 953 | 972 | |
| 954 | 973 | const r1 = FloatRect{ |
| 955 | 974 | .left = 1, |
| ... | ... | @@ -1065,6 +1084,7 @@ test "Struct with array as padding." { |
| 1065 | 1084 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 1066 | 1085 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 1067 | 1086 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 1087 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 1068 | 1088 | |
| 1069 | 1089 | c_struct_with_array(.{ .a = 1, .padding = undefined, .b = 2 }); |
| 1070 | 1090 | |
| ... | ... | @@ -1092,6 +1112,7 @@ test "Float array like struct" { |
| 1092 | 1112 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 1093 | 1113 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 1094 | 1114 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 1115 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 1095 | 1116 | |
| 1096 | 1117 | c_float_array_struct(.{ |
| 1097 | 1118 | .origin = .{ |
| ... | ... | @@ -1120,6 +1141,7 @@ test "small simd vector" { |
| 1120 | 1141 | if (builtin.cpu.arch == .x86) return error.SkipZigTest; |
| 1121 | 1142 | if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest; |
| 1122 | 1143 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 1144 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 1123 | 1145 | |
| 1124 | 1146 | c_small_vec(.{ 1, 2 }); |
| 1125 | 1147 | |
| ... | ... | @@ -1137,6 +1159,7 @@ test "medium simd vector" { |
| 1137 | 1159 | if (builtin.zig_backend == .stage2_x86_64 and !comptime builtin.cpu.has(.x86, .avx)) return error.SkipZigTest; |
| 1138 | 1160 | if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest; |
| 1139 | 1161 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 1162 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 1140 | 1163 | |
| 1141 | 1164 | c_medium_vec(.{ 1, 2, 3, 4 }); |
| 1142 | 1165 | |
| ... | ... | @@ -1185,6 +1208,7 @@ extern fn c_ret_vector_4_float() Vector4Float; |
| 1185 | 1208 | test "float simd vectors" { |
| 1186 | 1209 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 1187 | 1210 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 1211 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 1188 | 1212 | |
| 1189 | 1213 | { |
| 1190 | 1214 | c_vector_2_float(.{ 1.0, 2.0 }); |
| ... | ... | @@ -5470,6 +5494,7 @@ test "C ABI pointer sized float struct" { |
| 5470 | 5494 | if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest; |
| 5471 | 5495 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5472 | 5496 | if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest; |
| 5497 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5473 | 5498 | |
| 5474 | 5499 | c_ptr_size_float_struct(.{ .x = 1, .y = 2 }); |
| 5475 | 5500 | |
| ... | ... | @@ -5494,6 +5519,7 @@ test "DC: Zig passes to C" { |
| 5494 | 5519 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5495 | 5520 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5496 | 5521 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 5522 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5497 | 5523 | try expectOk(c_assert_DC(.{ .v1 = -0.25, .v2 = 15 })); |
| 5498 | 5524 | } |
| 5499 | 5525 | test "DC: Zig returns to C" { |
| ... | ... | @@ -5501,6 +5527,7 @@ test "DC: Zig returns to C" { |
| 5501 | 5527 | if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest; |
| 5502 | 5528 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5503 | 5529 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5530 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5504 | 5531 | try expectOk(c_assert_ret_DC()); |
| 5505 | 5532 | } |
| 5506 | 5533 | test "DC: C passes to Zig" { |
| ... | ... | @@ -5509,6 +5536,7 @@ test "DC: C passes to Zig" { |
| 5509 | 5536 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5510 | 5537 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5511 | 5538 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 5539 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5512 | 5540 | try expectOk(c_send_DC()); |
| 5513 | 5541 | } |
| 5514 | 5542 | test "DC: C returns to Zig" { |
| ... | ... | @@ -5516,6 +5544,7 @@ test "DC: C returns to Zig" { |
| 5516 | 5544 | if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest; |
| 5517 | 5545 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5518 | 5546 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5547 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5519 | 5548 | try expectEqual(DC{ .v1 = -0.25, .v2 = 15 }, c_ret_DC()); |
| 5520 | 5549 | } |
| 5521 | 5550 | |
| ... | ... | @@ -5543,12 +5572,14 @@ test "CFF: Zig passes to C" { |
| 5543 | 5572 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5544 | 5573 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5545 | 5574 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 5575 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5546 | 5576 | try expectOk(c_assert_CFF(.{ .v1 = 39, .v2 = 0.875, .v3 = 1.0 })); |
| 5547 | 5577 | } |
| 5548 | 5578 | test "CFF: Zig returns to C" { |
| 5549 | 5579 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5550 | 5580 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5551 | 5581 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5582 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5552 | 5583 | try expectOk(c_assert_ret_CFF()); |
| 5553 | 5584 | } |
| 5554 | 5585 | test "CFF: C passes to Zig" { |
| ... | ... | @@ -5559,6 +5590,7 @@ test "CFF: C passes to Zig" { |
| 5559 | 5590 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5560 | 5591 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5561 | 5592 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 5593 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5562 | 5594 | |
| 5563 | 5595 | try expectOk(c_send_CFF()); |
| 5564 | 5596 | } |
| ... | ... | @@ -5568,6 +5600,7 @@ test "CFF: C returns to Zig" { |
| 5568 | 5600 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5569 | 5601 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5570 | 5602 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5603 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5571 | 5604 | try expectEqual(CFF{ .v1 = 39, .v2 = 0.875, .v3 = 1.0 }, c_ret_CFF()); |
| 5572 | 5605 | } |
| 5573 | 5606 | pub extern fn c_assert_CFF(lv: CFF) c_int; |
| ... | ... | @@ -5594,12 +5627,14 @@ test "PD: Zig passes to C" { |
| 5594 | 5627 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5595 | 5628 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5596 | 5629 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 5630 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5597 | 5631 | try expectOk(c_assert_PD(.{ .v1 = null, .v2 = 0.5 })); |
| 5598 | 5632 | } |
| 5599 | 5633 | test "PD: Zig returns to C" { |
| 5600 | 5634 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5601 | 5635 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5602 | 5636 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5637 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5603 | 5638 | try expectOk(c_assert_ret_PD()); |
| 5604 | 5639 | } |
| 5605 | 5640 | test "PD: C passes to Zig" { |
| ... | ... | @@ -5607,12 +5642,14 @@ test "PD: C passes to Zig" { |
| 5607 | 5642 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5608 | 5643 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5609 | 5644 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 5645 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5610 | 5646 | try expectOk(c_send_PD()); |
| 5611 | 5647 | } |
| 5612 | 5648 | test "PD: C returns to Zig" { |
| 5613 | 5649 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5614 | 5650 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5615 | 5651 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5652 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5616 | 5653 | try expectEqual(PD{ .v1 = null, .v2 = 0.5 }, c_ret_PD()); |
| 5617 | 5654 | } |
| 5618 | 5655 | pub extern fn c_assert_PD(lv: PD) c_int; |
| ... | ... | @@ -5646,6 +5683,7 @@ extern fn c_modify_by_ref_param(ByRef) ByRef; |
| 5646 | 5683 | test "C function modifies by ref param" { |
| 5647 | 5684 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5648 | 5685 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5686 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5649 | 5687 | |
| 5650 | 5688 | const res = c_modify_by_ref_param(.{ .val = 1, .arr = undefined }); |
| 5651 | 5689 | try expect(res.val == 42); |
| ... | ... | @@ -5670,6 +5708,7 @@ test "C function that takes byval struct called via function pointer" { |
| 5670 | 5708 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5671 | 5709 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5672 | 5710 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 5711 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5673 | 5712 | |
| 5674 | 5713 | var fn_ptr = &c_func_ptr_byval; |
| 5675 | 5714 | _ = &fn_ptr; |
| ... | ... | @@ -5702,6 +5741,7 @@ test "f16 struct" { |
| 5702 | 5741 | if (builtin.target.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5703 | 5742 | if (builtin.target.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5704 | 5743 | if (builtin.cpu.arch.isArm() and builtin.mode != .Debug) return error.SkipZigTest; |
| 5744 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5705 | 5745 | |
| 5706 | 5746 | const a = c_f16_struct(.{ .a = 12 }); |
| 5707 | 5747 | try expect(a.a == 34); |
| ... | ... | @@ -5811,6 +5851,7 @@ test "Stdcall ABI structs" { |
| 5811 | 5851 | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; |
| 5812 | 5852 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5813 | 5853 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 5854 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5814 | 5855 | |
| 5815 | 5856 | const res = stdcall_coord2( |
| 5816 | 5857 | .{ .x = 0x1111, .y = 0x2222 }, |
| ... | ... | @@ -5826,6 +5867,7 @@ test "Stdcall ABI big union" { |
| 5826 | 5867 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5827 | 5868 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5828 | 5869 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 5870 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5829 | 5871 | |
| 5830 | 5872 | const x = BigUnion{ |
| 5831 | 5873 | .a = BigStruct{ |
| ... | ... | @@ -5900,6 +5942,7 @@ test "byval tail callsite attribute" { |
| 5900 | 5942 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5901 | 5943 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5902 | 5944 | if (builtin.cpu.arch == .hexagon) return error.SkipZigTest; |
| 5945 | if (builtin.cpu.arch == .s390x) return error.SkipZigTest; |
| 5903 | 5946 | |
| 5904 | 5947 | // Originally reported at https://github.com/ziglang/zig/issues/16290 |
| 5905 | 5948 | // the bug was that the extern function had the byval attribute, but |