authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-21 11:47:34-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-21 11:47:34-05:00
log61c67a9833c312678289272e5e0547a78cbd299c
tree57d4c05946cd350cc137a73f8445f1233aa5b26d
parentab56d3e18ca7dbc430fdc2ca51fce08804cc3599
signaturelock-open Commit is signed but in an unrecognized format.

remove sub-arch from stage1


9 files changed, 17 insertions(+), 440 deletions(-)

src-self-hosted/stage2.zig+2-5
...@@ -909,12 +909,11 @@ export fn stage2_libc_render(stage1_libc: *Stage2LibCInstallation, output_file:...@@ -909,12 +909,11 @@ export fn stage2_libc_render(stage1_libc: *Stage2LibCInstallation, output_file:
909// ABI warning909// ABI warning
910const Stage2Target = extern struct {910const Stage2Target = extern struct {
911 arch: c_int,911 arch: c_int,
912 sub_arch: c_int,
913
914 vendor: c_int,912 vendor: c_int,
915 abi: c_int,
916913
914 abi: c_int,
917 os: c_int,915 os: c_int,
916
918 is_native: bool,917 is_native: bool,
919918
920 glibc_version: ?*Stage2GLibCVersion, // null means default919 glibc_version: ?*Stage2GLibCVersion, // null means default
...@@ -928,7 +927,6 @@ const Stage2Target = extern struct {...@@ -928,7 +927,6 @@ const Stage2Target = extern struct {
928 if (in_target.is_native) return .Native;927 if (in_target.is_native) return .Native;
929928
930 const in_arch = in_target.arch - 1; // skip over ZigLLVM_UnknownArch929 const in_arch = in_target.arch - 1; // skip over ZigLLVM_UnknownArch
931 const in_sub_arch = in_target.sub_arch - 1; // skip over ZigLLVM_NoSubArch
932 const in_os = in_target.os;930 const in_os = in_target.os;
933 const in_abi = in_target.abi;931 const in_abi = in_target.abi;
934932
...@@ -954,7 +952,6 @@ const Stage2Target = extern struct {...@@ -954,7 +952,6 @@ const Stage2Target = extern struct {
954 };952 };
955 self.* = .{953 self.* = .{
956 .arch = @enumToInt(target.getArch()) + 1, // skip over ZigLLVM_UnknownArch954 .arch = @enumToInt(target.getArch()) + 1, // skip over ZigLLVM_UnknownArch
957 .sub_arch = 0,
958 .vendor = 0,955 .vendor = 0,
959 .os = @enumToInt(target.getOs()),956 .os = @enumToInt(target.getOs()),
960 .abi = @enumToInt(target.getAbi()),957 .abi = @enumToInt(target.getAbi()),
src/codegen.cpp-3
...@@ -8711,7 +8711,6 @@ static Error define_builtin_compile_vars(CodeGen *g) {...@@ -8711,7 +8711,6 @@ static Error define_builtin_compile_vars(CodeGen *g) {
8711 cache_int(&cache_hash, g->code_model);8711 cache_int(&cache_hash, g->code_model);
8712 cache_int(&cache_hash, g->zig_target->is_native);8712 cache_int(&cache_hash, g->zig_target->is_native);
8713 cache_int(&cache_hash, g->zig_target->arch);8713 cache_int(&cache_hash, g->zig_target->arch);
8714 cache_int(&cache_hash, g->zig_target->sub_arch);
8715 cache_int(&cache_hash, g->zig_target->vendor);8714 cache_int(&cache_hash, g->zig_target->vendor);
8716 cache_int(&cache_hash, g->zig_target->os);8715 cache_int(&cache_hash, g->zig_target->os);
8717 cache_int(&cache_hash, g->zig_target->abi);8716 cache_int(&cache_hash, g->zig_target->abi);
...@@ -9616,7 +9615,6 @@ Error create_c_object_cache(CodeGen *g, CacheHash **out_cache_hash, bool verbose...@@ -9616,7 +9615,6 @@ Error create_c_object_cache(CodeGen *g, CacheHash **out_cache_hash, bool verbose
9616 cache_list_of_str(cache_hash, g->libc_include_dir_list, g->libc_include_dir_len);9615 cache_list_of_str(cache_hash, g->libc_include_dir_list, g->libc_include_dir_len);
9617 cache_int(cache_hash, g->zig_target->is_native);9616 cache_int(cache_hash, g->zig_target->is_native);
9618 cache_int(cache_hash, g->zig_target->arch);9617 cache_int(cache_hash, g->zig_target->arch);
9619 cache_int(cache_hash, g->zig_target->sub_arch);
9620 cache_int(cache_hash, g->zig_target->vendor);9618 cache_int(cache_hash, g->zig_target->vendor);
9621 cache_int(cache_hash, g->zig_target->os);9619 cache_int(cache_hash, g->zig_target->os);
9622 cache_int(cache_hash, g->zig_target->abi);9620 cache_int(cache_hash, g->zig_target->abi);
...@@ -10380,7 +10378,6 @@ static Error check_cache(CodeGen *g, Buf *manifest_dir, Buf *digest) {...@@ -10380,7 +10378,6 @@ static Error check_cache(CodeGen *g, Buf *manifest_dir, Buf *digest) {
10380 cache_int(ch, g->out_type);10378 cache_int(ch, g->out_type);
10381 cache_bool(ch, g->zig_target->is_native);10379 cache_bool(ch, g->zig_target->is_native);
10382 cache_int(ch, g->zig_target->arch);10380 cache_int(ch, g->zig_target->arch);
10383 cache_int(ch, g->zig_target->sub_arch);
10384 cache_int(ch, g->zig_target->vendor);10381 cache_int(ch, g->zig_target->vendor);
10385 cache_int(ch, g->zig_target->os);10382 cache_int(ch, g->zig_target->os);
10386 cache_int(ch, g->zig_target->abi);10383 cache_int(ch, g->zig_target->abi);
src/glibc.cpp+2-4
...@@ -116,10 +116,8 @@ Error glibc_load_metadata(ZigGLibCAbi **out_result, Buf *zig_lib_dir, bool verbo...@@ -116,10 +116,8 @@ Error glibc_load_metadata(ZigGLibCAbi **out_result, Buf *zig_lib_dir, bool verbo
116 assert(opt_abi.is_some);116 assert(opt_abi.is_some);
117117
118118
119 err = target_parse_archsub(&target->arch, &target->sub_arch,119 err = target_parse_arch(&target->arch, (char*)opt_arch.value.ptr, opt_arch.value.len);
120 (char*)opt_arch.value.ptr, opt_arch.value.len);120 assert(err == ErrorNone);
121 // there's no sub arch so we might get an error, but the arch is still populated
122 assert(err == ErrorNone || err == ErrorUnknownArchitecture);
123121
124 target->os = OsLinux;122 target->os = OsLinux;
125123
src/stage2.cpp+1-3
...@@ -125,9 +125,7 @@ Error stage2_target_parse(struct ZigTarget *target, const char *zig_triple, cons...@@ -125,9 +125,7 @@ Error stage2_target_parse(struct ZigTarget *target, const char *zig_triple, cons
125 if (!opt_archsub.is_some)125 if (!opt_archsub.is_some)
126 return ErrorMissingArchitecture;126 return ErrorMissingArchitecture;
127127
128 if ((err = target_parse_archsub(&target->arch, &target->sub_arch,128 if ((err = target_parse_arch(&target->arch, (char*)opt_archsub.value.ptr, opt_archsub.value.len))) {
129 (char*)opt_archsub.value.ptr, opt_archsub.value.len)))
130 {
131 return err;129 return err;
132 }130 }
133131
src/stage2.h+2-3
...@@ -279,12 +279,11 @@ struct Stage2TargetData;...@@ -279,12 +279,11 @@ struct Stage2TargetData;
279// ABI warning279// ABI warning
280struct ZigTarget {280struct ZigTarget {
281 enum ZigLLVM_ArchType arch;281 enum ZigLLVM_ArchType arch;
282 enum ZigLLVM_SubArchType sub_arch;
283
284 enum ZigLLVM_VendorType vendor;282 enum ZigLLVM_VendorType vendor;
285 enum ZigLLVM_EnvironmentType abi;
286283
284 enum ZigLLVM_EnvironmentType abi;
287 Os os;285 Os os;
286
288 bool is_native;287 bool is_native;
289288
290 struct ZigGLibCVersion *glibc_version; // null means default289 struct ZigGLibCVersion *glibc_version; // null means default
src/target.cpp+7-272
...@@ -15,60 +15,6 @@...@@ -15,60 +15,6 @@
1515
16#include <stdio.h>16#include <stdio.h>
1717
18static const SubArchList subarch_list_list[] = {
19 SubArchListNone,
20 SubArchListArm32,
21 SubArchListArm64,
22 SubArchListKalimba,
23 SubArchListMips,
24};
25
26static const ZigLLVM_SubArchType subarch_list_arm32[] = {
27 ZigLLVM_ARMSubArch_v8_5a,
28 ZigLLVM_ARMSubArch_v8_4a,
29 ZigLLVM_ARMSubArch_v8_3a,
30 ZigLLVM_ARMSubArch_v8_2a,
31 ZigLLVM_ARMSubArch_v8_1a,
32 ZigLLVM_ARMSubArch_v8,
33 ZigLLVM_ARMSubArch_v8r,
34 ZigLLVM_ARMSubArch_v8m_baseline,
35 ZigLLVM_ARMSubArch_v8m_mainline,
36 ZigLLVM_ARMSubArch_v8_1m_mainline,
37 ZigLLVM_ARMSubArch_v7,
38 ZigLLVM_ARMSubArch_v7em,
39 ZigLLVM_ARMSubArch_v7m,
40 ZigLLVM_ARMSubArch_v7s,
41 ZigLLVM_ARMSubArch_v7k,
42 ZigLLVM_ARMSubArch_v7ve,
43 ZigLLVM_ARMSubArch_v6,
44 ZigLLVM_ARMSubArch_v6m,
45 ZigLLVM_ARMSubArch_v6k,
46 ZigLLVM_ARMSubArch_v6t2,
47 ZigLLVM_ARMSubArch_v5,
48 ZigLLVM_ARMSubArch_v5te,
49 ZigLLVM_ARMSubArch_v4t,
50
51};
52
53static const ZigLLVM_SubArchType subarch_list_arm64[] = {
54 ZigLLVM_ARMSubArch_v8_5a,
55 ZigLLVM_ARMSubArch_v8_4a,
56 ZigLLVM_ARMSubArch_v8_3a,
57 ZigLLVM_ARMSubArch_v8_2a,
58 ZigLLVM_ARMSubArch_v8_1a,
59 ZigLLVM_ARMSubArch_v8,
60};
61
62static const ZigLLVM_SubArchType subarch_list_kalimba[] = {
63 ZigLLVM_KalimbaSubArch_v5,
64 ZigLLVM_KalimbaSubArch_v4,
65 ZigLLVM_KalimbaSubArch_v3,
66};
67
68static const ZigLLVM_SubArchType subarch_list_mips[] = {
69 ZigLLVM_MipsSubArch_r6,
70};
71
72static const ZigLLVM_ArchType arch_list[] = {18static const ZigLLVM_ArchType arch_list[] = {
73 ZigLLVM_arm, // ARM (little endian): arm, armv.*, xscale19 ZigLLVM_arm, // ARM (little endian): arm, armv.*, xscale
74 ZigLLVM_armeb, // ARM (big endian): armeb20 ZigLLVM_armeb, // ARM (big endian): armeb
...@@ -509,7 +455,6 @@ void get_native_target(ZigTarget *target) {...@@ -509,7 +455,6 @@ void get_native_target(ZigTarget *target) {
509 ZigLLVM_ObjectFormatType oformat; // ignored; based on arch/os455 ZigLLVM_ObjectFormatType oformat; // ignored; based on arch/os
510 ZigLLVMGetNativeTarget(456 ZigLLVMGetNativeTarget(
511 &target->arch,457 &target->arch,
512 &target->sub_arch,
513 &target->vendor,458 &target->vendor,
514 &os_type,459 &os_type,
515 &target->abi,460 &target->abi,
...@@ -535,223 +480,18 @@ void target_init_default_glibc_version(ZigTarget *target) {...@@ -535,223 +480,18 @@ void target_init_default_glibc_version(ZigTarget *target) {
535 *target->glibc_version = {2, 17, 0};480 *target->glibc_version = {2, 17, 0};
536}481}
537482
538Error target_parse_archsub(ZigLLVM_ArchType *out_arch, ZigLLVM_SubArchType *out_sub,483Error target_parse_arch(ZigLLVM_ArchType *out_arch, const char *arch_ptr, size_t arch_len) {
539 const char *archsub_ptr, size_t archsub_len)
540{
541 *out_arch = ZigLLVM_UnknownArch;484 *out_arch = ZigLLVM_UnknownArch;
542 *out_sub = ZigLLVM_NoSubArch;
543 for (size_t arch_i = 0; arch_i < array_length(arch_list); arch_i += 1) {485 for (size_t arch_i = 0; arch_i < array_length(arch_list); arch_i += 1) {
544 ZigLLVM_ArchType arch = arch_list[arch_i];486 ZigLLVM_ArchType arch = arch_list[arch_i];
545 SubArchList sub_arch_list = target_subarch_list(arch);487 if (mem_eql_str(arch_ptr, arch_len, target_arch_name(arch))) {
546 size_t subarch_count = target_subarch_count(sub_arch_list);
547 if (mem_eql_str(archsub_ptr, archsub_len, target_arch_name(arch))) {
548 *out_arch = arch;488 *out_arch = arch;
549 if (subarch_count == 0) {489 return ErrorNone;
550 return ErrorNone;
551 }
552 }
553 for (size_t sub_i = 0; sub_i < subarch_count; sub_i += 1) {
554 ZigLLVM_SubArchType sub = target_subarch_enum(sub_arch_list, sub_i);
555 char arch_name[64];
556 int n = sprintf(arch_name, "%s%s", target_arch_name(arch), target_subarch_name(sub));
557 if (mem_eql_mem(arch_name, n, archsub_ptr, archsub_len)) {
558 *out_arch = arch;
559 *out_sub = sub;
560 return ErrorNone;
561 }
562 }490 }
563 }491 }
564 return ErrorUnknownArchitecture;492 return ErrorUnknownArchitecture;
565}493}
566494
567SubArchList target_subarch_list(ZigLLVM_ArchType arch) {
568 switch (arch) {
569 case ZigLLVM_UnknownArch:
570 zig_unreachable();
571 case ZigLLVM_arm:
572 case ZigLLVM_armeb:
573 case ZigLLVM_thumb:
574 case ZigLLVM_thumbeb:
575 return SubArchListArm32;
576
577 case ZigLLVM_aarch64:
578 case ZigLLVM_aarch64_be:
579 case ZigLLVM_aarch64_32:
580 return SubArchListArm64;
581
582 case ZigLLVM_kalimba:
583 return SubArchListKalimba;
584
585 case ZigLLVM_arc:
586 case ZigLLVM_avr:
587 case ZigLLVM_bpfel:
588 case ZigLLVM_bpfeb:
589 case ZigLLVM_hexagon:
590 case ZigLLVM_mips:
591 case ZigLLVM_mipsel:
592 case ZigLLVM_mips64:
593 case ZigLLVM_mips64el:
594 case ZigLLVM_msp430:
595 case ZigLLVM_ppc:
596 case ZigLLVM_ppc64:
597 case ZigLLVM_ppc64le:
598 case ZigLLVM_r600:
599 case ZigLLVM_amdgcn:
600 case ZigLLVM_riscv32:
601 case ZigLLVM_riscv64:
602 case ZigLLVM_sparc:
603 case ZigLLVM_sparcv9:
604 case ZigLLVM_sparcel:
605 case ZigLLVM_systemz:
606 case ZigLLVM_tce:
607 case ZigLLVM_tcele:
608 case ZigLLVM_x86:
609 case ZigLLVM_x86_64:
610 case ZigLLVM_xcore:
611 case ZigLLVM_nvptx:
612 case ZigLLVM_nvptx64:
613 case ZigLLVM_le32:
614 case ZigLLVM_le64:
615 case ZigLLVM_amdil:
616 case ZigLLVM_amdil64:
617 case ZigLLVM_hsail:
618 case ZigLLVM_hsail64:
619 case ZigLLVM_spir:
620 case ZigLLVM_spir64:
621 case ZigLLVM_shave:
622 case ZigLLVM_lanai:
623 case ZigLLVM_wasm32:
624 case ZigLLVM_wasm64:
625 case ZigLLVM_renderscript32:
626 case ZigLLVM_renderscript64:
627 return SubArchListNone;
628 }
629 zig_unreachable();
630}
631
632size_t target_subarch_count(SubArchList sub_arch_list) {
633 switch (sub_arch_list) {
634 case SubArchListNone:
635 return 0;
636 case SubArchListArm32:
637 return array_length(subarch_list_arm32);
638 case SubArchListArm64:
639 return array_length(subarch_list_arm64);
640 case SubArchListKalimba:
641 return array_length(subarch_list_kalimba);
642 case SubArchListMips:
643 return array_length(subarch_list_mips);
644 }
645 zig_unreachable();
646}
647
648ZigLLVM_SubArchType target_subarch_enum(SubArchList sub_arch_list, size_t i) {
649 switch (sub_arch_list) {
650 case SubArchListNone:
651 zig_unreachable();
652 case SubArchListArm32:
653 assert(i < array_length(subarch_list_arm32));
654 return subarch_list_arm32[i];
655 case SubArchListArm64:
656 assert(i < array_length(subarch_list_arm64));
657 return subarch_list_arm64[i];
658 case SubArchListKalimba:
659 assert(i < array_length(subarch_list_kalimba));
660 return subarch_list_kalimba[i];
661 case SubArchListMips:
662 assert(i < array_length(subarch_list_mips));
663 return subarch_list_mips[i];
664 }
665 zig_unreachable();
666}
667
668const char *target_subarch_name(ZigLLVM_SubArchType subarch) {
669 switch (subarch) {
670 case ZigLLVM_NoSubArch:
671 return "";
672 case ZigLLVM_ARMSubArch_v8_5a:
673 return "v8_5a";
674 case ZigLLVM_ARMSubArch_v8_4a:
675 return "v8_4a";
676 case ZigLLVM_ARMSubArch_v8_3a:
677 return "v8_3a";
678 case ZigLLVM_ARMSubArch_v8_2a:
679 return "v8_2a";
680 case ZigLLVM_ARMSubArch_v8_1a:
681 return "v8_1a";
682 case ZigLLVM_ARMSubArch_v8:
683 return "v8a";
684 case ZigLLVM_ARMSubArch_v8r:
685 return "v8r";
686 case ZigLLVM_ARMSubArch_v8m_baseline:
687 return "v8m_baseline";
688 case ZigLLVM_ARMSubArch_v8m_mainline:
689 return "v8m_mainline";
690 case ZigLLVM_ARMSubArch_v8_1m_mainline:
691 return "v8_1m_mainline";
692 case ZigLLVM_ARMSubArch_v7:
693 return "v7a";
694 case ZigLLVM_ARMSubArch_v7em:
695 return "v7em";
696 case ZigLLVM_ARMSubArch_v7m:
697 return "v7m";
698 case ZigLLVM_ARMSubArch_v7s:
699 return "v7s";
700 case ZigLLVM_ARMSubArch_v7k:
701 return "v7k";
702 case ZigLLVM_ARMSubArch_v7ve:
703 return "v7ve";
704 case ZigLLVM_ARMSubArch_v6:
705 return "v6";
706 case ZigLLVM_ARMSubArch_v6m:
707 return "v6m";
708 case ZigLLVM_ARMSubArch_v6k:
709 return "v6k";
710 case ZigLLVM_ARMSubArch_v6t2:
711 return "v6t2";
712 case ZigLLVM_ARMSubArch_v5:
713 return "v5";
714 case ZigLLVM_ARMSubArch_v5te:
715 return "v5te";
716 case ZigLLVM_ARMSubArch_v4t:
717 return "v4t";
718 case ZigLLVM_KalimbaSubArch_v3:
719 return "v3";
720 case ZigLLVM_KalimbaSubArch_v4:
721 return "v4";
722 case ZigLLVM_KalimbaSubArch_v5:
723 return "v5";
724 case ZigLLVM_MipsSubArch_r6:
725 return "r6";
726 }
727 zig_unreachable();
728}
729
730size_t target_subarch_list_count(void) {
731 return array_length(subarch_list_list);
732}
733
734SubArchList target_subarch_list_enum(size_t index) {
735 assert(index < array_length(subarch_list_list));
736 return subarch_list_list[index];
737}
738
739const char *target_subarch_list_name(SubArchList sub_arch_list) {
740 switch (sub_arch_list) {
741 case SubArchListNone:
742 return "None";
743 case SubArchListArm32:
744 return "Arm32";
745 case SubArchListArm64:
746 return "Arm64";
747 case SubArchListKalimba:
748 return "Kalimba";
749 case SubArchListMips:
750 return "Mips";
751 }
752 zig_unreachable();
753}
754
755Error target_parse_os(Os *out_os, const char *os_ptr, size_t os_len) {495Error target_parse_os(Os *out_os, const char *os_ptr, size_t os_len) {
756 for (size_t i = 0; i < array_length(os_list); i += 1) {496 for (size_t i = 0; i < array_length(os_list); i += 1) {
757 Os os = os_list[i];497 Os os = os_list[i];
...@@ -794,18 +534,16 @@ void init_all_targets(void) {...@@ -794,18 +534,16 @@ void init_all_targets(void) {
794534
795void target_triple_zig(Buf *triple, const ZigTarget *target) {535void target_triple_zig(Buf *triple, const ZigTarget *target) {
796 buf_resize(triple, 0);536 buf_resize(triple, 0);
797 buf_appendf(triple, "%s%s-%s-%s",537 buf_appendf(triple, "%s-%s-%s",
798 target_arch_name(target->arch),538 target_arch_name(target->arch),
799 target_subarch_name(target->sub_arch),
800 target_os_name(target->os),539 target_os_name(target->os),
801 target_abi_name(target->abi));540 target_abi_name(target->abi));
802}541}
803542
804void target_triple_llvm(Buf *triple, const ZigTarget *target) {543void target_triple_llvm(Buf *triple, const ZigTarget *target) {
805 buf_resize(triple, 0);544 buf_resize(triple, 0);
806 buf_appendf(triple, "%s%s-%s-%s-%s",545 buf_appendf(triple, "%s-%s-%s-%s",
807 ZigLLVMGetArchTypeName(target->arch),546 ZigLLVMGetArchTypeName(target->arch),
808 ZigLLVMGetSubArchTypeName(target->sub_arch),
809 ZigLLVMGetVendorTypeName(target->vendor),547 ZigLLVMGetVendorTypeName(target->vendor),
810 ZigLLVMGetOSTypeName(get_llvm_os_type(target->os)),548 ZigLLVMGetOSTypeName(get_llvm_os_type(target->os)),
811 ZigLLVMGetEnvironmentTypeName(target->abi));549 ZigLLVMGetEnvironmentTypeName(target->abi));
...@@ -1182,10 +920,8 @@ bool target_can_exec(const ZigTarget *host_target, const ZigTarget *guest_target...@@ -1182,10 +920,8 @@ bool target_can_exec(const ZigTarget *host_target, const ZigTarget *guest_target
1182 return true;920 return true;
1183 }921 }
1184922
1185 if (guest_target->os == host_target->os && guest_target->arch == host_target->arch &&923 if (guest_target->os == host_target->os && guest_target->arch == host_target->arch) {
1186 guest_target->sub_arch == host_target->sub_arch)924 // OS and arch match
1187 {
1188 // OS, arch, and sub-arch match
1189 return true;925 return true;
1190 }926 }
1191927
...@@ -1607,7 +1343,6 @@ void target_libc_enum(size_t index, ZigTarget *out_target) {...@@ -1607,7 +1343,6 @@ void target_libc_enum(size_t index, ZigTarget *out_target) {
1607 out_target->arch = libcs_available[index].arch;1343 out_target->arch = libcs_available[index].arch;
1608 out_target->os = libcs_available[index].os;1344 out_target->os = libcs_available[index].os;
1609 out_target->abi = libcs_available[index].abi;1345 out_target->abi = libcs_available[index].abi;
1610 out_target->sub_arch = ZigLLVM_NoSubArch;
1611 out_target->vendor = ZigLLVM_UnknownVendor;1346 out_target->vendor = ZigLLVM_UnknownVendor;
1612 out_target->is_native = false;1347 out_target->is_native = false;
1613}1348}
src/target.hpp+1-20
...@@ -12,15 +12,6 @@...@@ -12,15 +12,6 @@
1212
13struct Buf;13struct Buf;
1414
15// Synchronize with target.cpp::subarch_list_list
16enum SubArchList {
17 SubArchListNone,
18 SubArchListArm32,
19 SubArchListArm64,
20 SubArchListKalimba,
21 SubArchListMips,
22};
23
24enum TargetSubsystem {15enum TargetSubsystem {
25 TargetSubsystemConsole,16 TargetSubsystemConsole,
26 TargetSubsystemWindows,17 TargetSubsystemWindows,
...@@ -51,8 +42,7 @@ enum CIntType {...@@ -51,8 +42,7 @@ enum CIntType {
51};42};
5243
53Error target_parse_triple(ZigTarget *target, const char *triple, const char *mcpu);44Error target_parse_triple(ZigTarget *target, const char *triple, const char *mcpu);
54Error target_parse_archsub(ZigLLVM_ArchType *arch, ZigLLVM_SubArchType *sub,45Error target_parse_arch(ZigLLVM_ArchType *arch, const char *arch_ptr, size_t arch_len);
55 const char *archsub_ptr, size_t archsub_len);
56Error target_parse_os(Os *os, const char *os_ptr, size_t os_len);46Error target_parse_os(Os *os, const char *os_ptr, size_t os_len);
57Error target_parse_abi(ZigLLVM_EnvironmentType *abi, const char *abi_ptr, size_t abi_len);47Error target_parse_abi(ZigLLVM_EnvironmentType *abi, const char *abi_ptr, size_t abi_len);
5848
...@@ -63,15 +53,6 @@ size_t target_arch_count(void);...@@ -63,15 +53,6 @@ size_t target_arch_count(void);
63ZigLLVM_ArchType target_arch_enum(size_t index);53ZigLLVM_ArchType target_arch_enum(size_t index);
64const char *target_arch_name(ZigLLVM_ArchType arch);54const char *target_arch_name(ZigLLVM_ArchType arch);
6555
66SubArchList target_subarch_list(ZigLLVM_ArchType arch);
67size_t target_subarch_count(SubArchList sub_arch_list);
68ZigLLVM_SubArchType target_subarch_enum(SubArchList subarch_list, size_t index);
69const char *target_subarch_name(ZigLLVM_SubArchType subarch);
70
71size_t target_subarch_list_count(void);
72SubArchList target_subarch_list_enum(size_t index);
73const char *target_subarch_list_name(SubArchList sub_arch_list);
74
75const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch);56const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch);
7657
77size_t target_vendor_count(void);58size_t target_vendor_count(void);
src/zig_llvm.cpp+1-93
...@@ -806,7 +806,7 @@ const char *ZigLLVMGetEnvironmentTypeName(ZigLLVM_EnvironmentType env_type) {...@@ -806,7 +806,7 @@ const char *ZigLLVMGetEnvironmentTypeName(ZigLLVM_EnvironmentType env_type) {
806 return (const char*)Triple::getEnvironmentTypeName((Triple::EnvironmentType)env_type).bytes_begin();806 return (const char*)Triple::getEnvironmentTypeName((Triple::EnvironmentType)env_type).bytes_begin();
807}807}
808808
809void ZigLLVMGetNativeTarget(ZigLLVM_ArchType *arch_type, ZigLLVM_SubArchType *sub_arch_type,809void ZigLLVMGetNativeTarget(ZigLLVM_ArchType *arch_type,
810 ZigLLVM_VendorType *vendor_type, ZigLLVM_OSType *os_type, ZigLLVM_EnvironmentType *environ_type,810 ZigLLVM_VendorType *vendor_type, ZigLLVM_OSType *os_type, ZigLLVM_EnvironmentType *environ_type,
811 ZigLLVM_ObjectFormatType *oformat)811 ZigLLVM_ObjectFormatType *oformat)
812{812{
...@@ -814,7 +814,6 @@ void ZigLLVMGetNativeTarget(ZigLLVM_ArchType *arch_type, ZigLLVM_SubArchType *su...@@ -814,7 +814,6 @@ void ZigLLVMGetNativeTarget(ZigLLVM_ArchType *arch_type, ZigLLVM_SubArchType *su
814 Triple triple(Triple::normalize(native_triple));814 Triple triple(Triple::normalize(native_triple));
815815
816 *arch_type = (ZigLLVM_ArchType)triple.getArch();816 *arch_type = (ZigLLVM_ArchType)triple.getArch();
817 *sub_arch_type = (ZigLLVM_SubArchType)triple.getSubArch();
818 *vendor_type = (ZigLLVM_VendorType)triple.getVendor();817 *vendor_type = (ZigLLVM_VendorType)triple.getVendor();
819 *os_type = (ZigLLVM_OSType)triple.getOS();818 *os_type = (ZigLLVM_OSType)triple.getOS();
820 *environ_type = (ZigLLVM_EnvironmentType)triple.getEnvironment();819 *environ_type = (ZigLLVM_EnvironmentType)triple.getEnvironment();
...@@ -823,68 +822,6 @@ void ZigLLVMGetNativeTarget(ZigLLVM_ArchType *arch_type, ZigLLVM_SubArchType *su...@@ -823,68 +822,6 @@ void ZigLLVMGetNativeTarget(ZigLLVM_ArchType *arch_type, ZigLLVM_SubArchType *su
823 free(native_triple);822 free(native_triple);
824}823}
825824
826const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
827 switch (sub_arch) {
828 case ZigLLVM_NoSubArch:
829 return "";
830 case ZigLLVM_ARMSubArch_v8_5a:
831 return "v8.5a";
832 case ZigLLVM_ARMSubArch_v8_4a:
833 return "v8.4a";
834 case ZigLLVM_ARMSubArch_v8_3a:
835 return "v8.3a";
836 case ZigLLVM_ARMSubArch_v8_2a:
837 return "v8.2a";
838 case ZigLLVM_ARMSubArch_v8_1a:
839 return "v8.1a";
840 case ZigLLVM_ARMSubArch_v8:
841 return "v8a";
842 case ZigLLVM_ARMSubArch_v8r:
843 return "v8r";
844 case ZigLLVM_ARMSubArch_v8m_baseline:
845 return "v8m.base";
846 case ZigLLVM_ARMSubArch_v8m_mainline:
847 return "v8m.main";
848 case ZigLLVM_ARMSubArch_v8_1m_mainline:
849 return "v8.1m.main";
850 case ZigLLVM_ARMSubArch_v7:
851 return "v7a";
852 case ZigLLVM_ARMSubArch_v7em:
853 return "v7em";
854 case ZigLLVM_ARMSubArch_v7m:
855 return "v7m";
856 case ZigLLVM_ARMSubArch_v7s:
857 return "v7s";
858 case ZigLLVM_ARMSubArch_v7k:
859 return "v7k";
860 case ZigLLVM_ARMSubArch_v7ve:
861 return "v7ve";
862 case ZigLLVM_ARMSubArch_v6:
863 return "v6";
864 case ZigLLVM_ARMSubArch_v6m:
865 return "v6m";
866 case ZigLLVM_ARMSubArch_v6k:
867 return "v6k";
868 case ZigLLVM_ARMSubArch_v6t2:
869 return "v6t2";
870 case ZigLLVM_ARMSubArch_v5:
871 return "v5";
872 case ZigLLVM_ARMSubArch_v5te:
873 return "v5te";
874 case ZigLLVM_ARMSubArch_v4t:
875 return "v4t";
876 case ZigLLVM_KalimbaSubArch_v3:
877 return "v3";
878 case ZigLLVM_KalimbaSubArch_v4:
879 return "v4";
880 case ZigLLVM_KalimbaSubArch_v5:
881 return "v5";
882 case ZigLLVM_MipsSubArch_r6:
883 return "r6";
884 }
885 abort();
886}
887
888void ZigLLVMAddModuleDebugInfoFlag(LLVMModuleRef module) {825void ZigLLVMAddModuleDebugInfoFlag(LLVMModuleRef module) {
889 unwrap(module)->addModuleFlag(Module::Warning, "Debug Info Version", DEBUG_METADATA_VERSION);826 unwrap(module)->addModuleFlag(Module::Warning, "Debug Info Version", DEBUG_METADATA_VERSION);
890 unwrap(module)->addModuleFlag(Module::Warning, "Dwarf Version", 4);827 unwrap(module)->addModuleFlag(Module::Warning, "Dwarf Version", 4);
...@@ -1218,35 +1155,6 @@ static_assert((Triple::ArchType)ZigLLVM_renderscript32 == Triple::renderscript32...@@ -1218,35 +1155,6 @@ static_assert((Triple::ArchType)ZigLLVM_renderscript32 == Triple::renderscript32
1218static_assert((Triple::ArchType)ZigLLVM_renderscript64 == Triple::renderscript64, "");1155static_assert((Triple::ArchType)ZigLLVM_renderscript64 == Triple::renderscript64, "");
1219static_assert((Triple::ArchType)ZigLLVM_LastArchType == Triple::LastArchType, "");1156static_assert((Triple::ArchType)ZigLLVM_LastArchType == Triple::LastArchType, "");
12201157
1221static_assert((Triple::SubArchType)ZigLLVM_NoSubArch == Triple::NoSubArch, "");
1222static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8_4a == Triple::ARMSubArch_v8_4a, "");
1223static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8_3a == Triple::ARMSubArch_v8_3a, "");
1224static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8_2a == Triple::ARMSubArch_v8_2a, "");
1225static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8_1a == Triple::ARMSubArch_v8_1a, "");
1226static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8 == Triple::ARMSubArch_v8, "");
1227static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8r == Triple::ARMSubArch_v8r, "");
1228static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8m_baseline == Triple::ARMSubArch_v8m_baseline, "");
1229static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8m_mainline == Triple::ARMSubArch_v8m_mainline, "");
1230static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8_1m_mainline == Triple::ARMSubArch_v8_1m_mainline, "");
1231static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7 == Triple::ARMSubArch_v7, "");
1232static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7em == Triple::ARMSubArch_v7em, "");
1233static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7m == Triple::ARMSubArch_v7m, "");
1234static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7s == Triple::ARMSubArch_v7s, "");
1235static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7k == Triple::ARMSubArch_v7k, "");
1236static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7ve == Triple::ARMSubArch_v7ve, "");
1237static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v6 == Triple::ARMSubArch_v6, "");
1238static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v6m == Triple::ARMSubArch_v6m, "");
1239static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v6k == Triple::ARMSubArch_v6k, "");
1240static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v6t2 == Triple::ARMSubArch_v6t2, "");
1241static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v5 == Triple::ARMSubArch_v5, "");
1242static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v5te == Triple::ARMSubArch_v5te, "");
1243static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v4t == Triple::ARMSubArch_v4t, "");
1244static_assert((Triple::SubArchType)ZigLLVM_KalimbaSubArch_v3 == Triple::KalimbaSubArch_v3, "");
1245static_assert((Triple::SubArchType)ZigLLVM_KalimbaSubArch_v4 == Triple::KalimbaSubArch_v4, "");
1246static_assert((Triple::SubArchType)ZigLLVM_KalimbaSubArch_v5 == Triple::KalimbaSubArch_v5, "");
1247static_assert((Triple::SubArchType)ZigLLVM_KalimbaSubArch_v5 == Triple::KalimbaSubArch_v5, "");
1248static_assert((Triple::SubArchType)ZigLLVM_MipsSubArch_r6 == Triple::MipsSubArch_r6, "");
1249
1250static_assert((Triple::VendorType)ZigLLVM_UnknownVendor == Triple::UnknownVendor, "");1158static_assert((Triple::VendorType)ZigLLVM_UnknownVendor == Triple::UnknownVendor, "");
1251static_assert((Triple::VendorType)ZigLLVM_Apple == Triple::Apple, "");1159static_assert((Triple::VendorType)ZigLLVM_Apple == Triple::Apple, "");
1252static_assert((Triple::VendorType)ZigLLVM_PC == Triple::PC, "");1160static_assert((Triple::VendorType)ZigLLVM_PC == Triple::PC, "");
src/zig_llvm.h+1-37
...@@ -324,41 +324,6 @@ enum ZigLLVM_ArchType {...@@ -324,41 +324,6 @@ enum ZigLLVM_ArchType {
324 ZigLLVM_LastArchType = ZigLLVM_renderscript64324 ZigLLVM_LastArchType = ZigLLVM_renderscript64
325};325};
326326
327// synchronize with lists in target.cpp
328enum ZigLLVM_SubArchType {
329 ZigLLVM_NoSubArch,
330
331 ZigLLVM_ARMSubArch_v8_5a,
332 ZigLLVM_ARMSubArch_v8_4a,
333 ZigLLVM_ARMSubArch_v8_3a,
334 ZigLLVM_ARMSubArch_v8_2a,
335 ZigLLVM_ARMSubArch_v8_1a,
336 ZigLLVM_ARMSubArch_v8,
337 ZigLLVM_ARMSubArch_v8r,
338 ZigLLVM_ARMSubArch_v8m_baseline,
339 ZigLLVM_ARMSubArch_v8m_mainline,
340 ZigLLVM_ARMSubArch_v8_1m_mainline,
341 ZigLLVM_ARMSubArch_v7,
342 ZigLLVM_ARMSubArch_v7em,
343 ZigLLVM_ARMSubArch_v7m,
344 ZigLLVM_ARMSubArch_v7s,
345 ZigLLVM_ARMSubArch_v7k,
346 ZigLLVM_ARMSubArch_v7ve,
347 ZigLLVM_ARMSubArch_v6,
348 ZigLLVM_ARMSubArch_v6m,
349 ZigLLVM_ARMSubArch_v6k,
350 ZigLLVM_ARMSubArch_v6t2,
351 ZigLLVM_ARMSubArch_v5,
352 ZigLLVM_ARMSubArch_v5te,
353 ZigLLVM_ARMSubArch_v4t,
354
355 ZigLLVM_KalimbaSubArch_v3,
356 ZigLLVM_KalimbaSubArch_v4,
357 ZigLLVM_KalimbaSubArch_v5,
358
359 ZigLLVM_MipsSubArch_r6,
360};
361
362enum ZigLLVM_VendorType {327enum ZigLLVM_VendorType {
363 ZigLLVM_UnknownVendor,328 ZigLLVM_UnknownVendor,
364329
...@@ -518,7 +483,6 @@ LLVMValueRef ZigLLVMBuildAtomicRMW(LLVMBuilderRef B, enum ZigLLVM_AtomicRMWBinOp...@@ -518,7 +483,6 @@ LLVMValueRef ZigLLVMBuildAtomicRMW(LLVMBuilderRef B, enum ZigLLVM_AtomicRMWBinOp
518#define ZigLLVM_DIFlags_AllCallsDescribed (1U << 29)483#define ZigLLVM_DIFlags_AllCallsDescribed (1U << 29)
519484
520ZIG_EXTERN_C const char *ZigLLVMGetArchTypeName(enum ZigLLVM_ArchType arch);485ZIG_EXTERN_C const char *ZigLLVMGetArchTypeName(enum ZigLLVM_ArchType arch);
521ZIG_EXTERN_C const char *ZigLLVMGetSubArchTypeName(enum ZigLLVM_SubArchType sub_arch);
522ZIG_EXTERN_C const char *ZigLLVMGetVendorTypeName(enum ZigLLVM_VendorType vendor);486ZIG_EXTERN_C const char *ZigLLVMGetVendorTypeName(enum ZigLLVM_VendorType vendor);
523ZIG_EXTERN_C const char *ZigLLVMGetOSTypeName(enum ZigLLVM_OSType os);487ZIG_EXTERN_C const char *ZigLLVMGetOSTypeName(enum ZigLLVM_OSType os);
524ZIG_EXTERN_C const char *ZigLLVMGetEnvironmentTypeName(enum ZigLLVM_EnvironmentType abi);488ZIG_EXTERN_C const char *ZigLLVMGetEnvironmentTypeName(enum ZigLLVM_EnvironmentType abi);
...@@ -532,7 +496,7 @@ ZIG_EXTERN_C bool ZigLLVMWriteArchive(const char *archive_name, const char **fil...@@ -532,7 +496,7 @@ ZIG_EXTERN_C bool ZigLLVMWriteArchive(const char *archive_name, const char **fil
532bool ZigLLVMWriteImportLibrary(const char *def_path, const enum ZigLLVM_ArchType arch,496bool ZigLLVMWriteImportLibrary(const char *def_path, const enum ZigLLVM_ArchType arch,
533 const char *output_lib_path, const bool kill_at);497 const char *output_lib_path, const bool kill_at);
534498
535ZIG_EXTERN_C void ZigLLVMGetNativeTarget(enum ZigLLVM_ArchType *arch_type, enum ZigLLVM_SubArchType *sub_arch_type,499ZIG_EXTERN_C void ZigLLVMGetNativeTarget(enum ZigLLVM_ArchType *arch_type,
536 enum ZigLLVM_VendorType *vendor_type, enum ZigLLVM_OSType *os_type, enum ZigLLVM_EnvironmentType *environ_type,500 enum ZigLLVM_VendorType *vendor_type, enum ZigLLVM_OSType *os_type, enum ZigLLVM_EnvironmentType *environ_type,
537 enum ZigLLVM_ObjectFormatType *oformat);501 enum ZigLLVM_ObjectFormatType *oformat);
538502