authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-10 16:58:15-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-10 16:58:15-07:00
log54a8b6a110fa779a2fc12b901b96b6e072bca7cf
treed880e19e871ca61055e6e75eeefbe6297f3b64ab
parentb64260469105f786c7144c2ac4bbb4c777cc6fa8

cleanup target data organization


5 files changed, 170 insertions(+), 164 deletions(-)

src/main.cpp+10-15
...@@ -54,34 +54,29 @@ static int print_target_list(FILE *f) {...@@ -54,34 +54,29 @@ static int print_target_list(FILE *f) {
5454
55 fprintf(f, "Architectures:\n");55 fprintf(f, "Architectures:\n");
56 int arch_count = target_arch_count();56 int arch_count = target_arch_count();
57 int sub_arch_count = target_sub_arch_count();
58 for (int arch_i = 0; arch_i < arch_count; arch_i += 1) {57 for (int arch_i = 0; arch_i < arch_count; arch_i += 1) {
59 const ArchType *arch = get_target_arch(arch_i);58 const ArchType *arch = get_target_arch(arch_i);
60 const char *native_str = (native_arch_type == arch->llvm_arch) ? " (native)" : "";59 const char *sub_arch_str = (arch->sub_arch == ZigLLVM_NoSubArch) ?
61 fprintf(f, " %s%s\n", ZigLLVMGetArchTypeName(arch->llvm_arch), native_str);60 "" : ZigLLVMGetSubArchTypeName(arch->sub_arch);
62 for (int sub_arch_i = 0; sub_arch_i < sub_arch_count; sub_arch_i += 1) {61 const char *native_str = (native_arch_type == arch->arch && native_sub_arch_type == arch->sub_arch) ?
63 const SubArchType *sub_arch = get_target_sub_arch(sub_arch_i);62 " (native)" : "";
64 if (sub_arch->arch == arch->llvm_arch) {63 fprintf(f, " %s%s%s\n", ZigLLVMGetArchTypeName(arch->arch), sub_arch_str, native_str);
65 const char *native_str = (native_sub_arch_type == sub_arch->sub_arch) ? " (native)" : "";
66 fprintf(f, " %s%s\n", sub_arch->name, native_str);
67 }
68 }
69 }64 }
7065
71 fprintf(f, "\nOperating Systems:\n");66 fprintf(f, "\nOperating Systems:\n");
72 int os_count = target_os_count();67 int os_count = target_os_count();
73 for (int i = 0; i < os_count; i += 1) {68 for (int i = 0; i < os_count; i += 1) {
74 const OsType *os_type = get_target_os(i);69 ZigLLVM_OSType os_type = get_target_os(i);
75 const char *native_str = (native_os_type == os_type->llvm_os) ? " (native)" : "";70 const char *native_str = (native_os_type == os_type) ? " (native)" : "";
76 fprintf(f, " %s%s\n", get_target_os_name(os_type), native_str);71 fprintf(f, " %s%s\n", get_target_os_name(os_type), native_str);
77 }72 }
7873
79 fprintf(f, "\nABIs:\n");74 fprintf(f, "\nABIs:\n");
80 int environ_count = target_environ_count();75 int environ_count = target_environ_count();
81 for (int i = 0; i < environ_count; i += 1) {76 for (int i = 0; i < environ_count; i += 1) {
82 const EnvironmentType *environ_type = get_target_environ(i);77 ZigLLVM_EnvironmentType environ_type = get_target_environ(i);
83 const char *native_str = (native_environ_type == environ_type->llvm_environment) ? " (native)" : "";78 const char *native_str = (native_environ_type == environ_type) ? " (native)" : "";
84 fprintf(f, " %s%s\n", ZigLLVMGetEnvironmentTypeName(environ_type->llvm_environment), native_str);79 fprintf(f, " %s%s\n", ZigLLVMGetEnvironmentTypeName(environ_type), native_str);
85 }80 }
8681
87 return EXIT_SUCCESS;82 return EXIT_SUCCESS;
src/target.cpp+115-124
...@@ -9,123 +9,120 @@...@@ -9,123 +9,120 @@
9#include "util.hpp"9#include "util.hpp"
1010
11static const ArchType arch_list[] = {11static const ArchType arch_list[] = {
12 {ZigLLVM_arm},12 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a},
13 {ZigLLVM_armeb},13 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8},
14 {ZigLLVM_aarch64},14 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7},
15 {ZigLLVM_aarch64_be},15 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7em},
16 {ZigLLVM_bpfel},16 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7m},
17 {ZigLLVM_bpfeb},17 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7s},
18 {ZigLLVM_hexagon},18 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6},
19 {ZigLLVM_mips},19 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6m},
20 {ZigLLVM_mipsel},20 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6k},
21 {ZigLLVM_mips64},21 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6t2},
22 {ZigLLVM_mips64el},22 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v5},
23 {ZigLLVM_msp430},23 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v5te},
24 {ZigLLVM_ppc},24 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v4t},
25 {ZigLLVM_ppc64},25
26 {ZigLLVM_ppc64le},26 {ZigLLVM_armeb, ZigLLVM_NoSubArch},
27 {ZigLLVM_r600},27 {ZigLLVM_aarch64, ZigLLVM_NoSubArch},
28 {ZigLLVM_amdgcn},28 {ZigLLVM_aarch64_be, ZigLLVM_NoSubArch},
29 {ZigLLVM_sparc},29 {ZigLLVM_bpfel, ZigLLVM_NoSubArch},
30 {ZigLLVM_sparcv9},30 {ZigLLVM_bpfeb, ZigLLVM_NoSubArch},
31 {ZigLLVM_sparcel},31 {ZigLLVM_hexagon, ZigLLVM_NoSubArch},
32 {ZigLLVM_systemz},32 {ZigLLVM_mips, ZigLLVM_NoSubArch},
33 {ZigLLVM_tce},33 {ZigLLVM_mipsel, ZigLLVM_NoSubArch},
34 {ZigLLVM_thumb},34 {ZigLLVM_mips64, ZigLLVM_NoSubArch},
35 {ZigLLVM_thumbeb},35 {ZigLLVM_mips64el, ZigLLVM_NoSubArch},
36 {ZigLLVM_x86},36 {ZigLLVM_msp430, ZigLLVM_NoSubArch},
37 {ZigLLVM_x86_64},37 {ZigLLVM_ppc, ZigLLVM_NoSubArch},
38 {ZigLLVM_xcore},38 {ZigLLVM_ppc64, ZigLLVM_NoSubArch},
39 {ZigLLVM_nvptx},39 {ZigLLVM_ppc64le, ZigLLVM_NoSubArch},
40 {ZigLLVM_nvptx64},40 {ZigLLVM_r600, ZigLLVM_NoSubArch},
41 {ZigLLVM_le32},41 {ZigLLVM_amdgcn, ZigLLVM_NoSubArch},
42 {ZigLLVM_le64},42 {ZigLLVM_sparc, ZigLLVM_NoSubArch},
43 {ZigLLVM_amdil},43 {ZigLLVM_sparcv9, ZigLLVM_NoSubArch},
44 {ZigLLVM_amdil64},44 {ZigLLVM_sparcel, ZigLLVM_NoSubArch},
45 {ZigLLVM_hsail},45 {ZigLLVM_systemz, ZigLLVM_NoSubArch},
46 {ZigLLVM_hsail64},46 {ZigLLVM_tce, ZigLLVM_NoSubArch},
47 {ZigLLVM_spir},47 {ZigLLVM_thumb, ZigLLVM_NoSubArch},
48 {ZigLLVM_spir64},48 {ZigLLVM_thumbeb, ZigLLVM_NoSubArch},
49 {ZigLLVM_kalimba},49 {ZigLLVM_x86, ZigLLVM_NoSubArch},
50 {ZigLLVM_shave},50 {ZigLLVM_x86_64, ZigLLVM_NoSubArch},
51 {ZigLLVM_wasm32},51 {ZigLLVM_xcore, ZigLLVM_NoSubArch},
52 {ZigLLVM_wasm64},52 {ZigLLVM_nvptx, ZigLLVM_NoSubArch},
53};53 {ZigLLVM_nvptx64, ZigLLVM_NoSubArch},
54 {ZigLLVM_le32, ZigLLVM_NoSubArch},
55 {ZigLLVM_le64, ZigLLVM_NoSubArch},
56 {ZigLLVM_amdil, ZigLLVM_NoSubArch},
57 {ZigLLVM_amdil64, ZigLLVM_NoSubArch},
58 {ZigLLVM_hsail, ZigLLVM_NoSubArch},
59 {ZigLLVM_hsail64, ZigLLVM_NoSubArch},
60 {ZigLLVM_spir, ZigLLVM_NoSubArch},
61 {ZigLLVM_spir64, ZigLLVM_NoSubArch},
5462
55static const SubArchType sub_arch_list[] = {63 {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v3},
56 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a, "v8_1a"},64 {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v4},
57 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8, "v8"},65 {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v5},
58 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7, "v7"},
59 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7em, "v7em"},
60 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7m, "v7m"},
61 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7s, "v7s"},
62 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6, "v6"},
63 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6m, "v6m"},
64 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6k, "v6k"},
65 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6t2, "v6t2"},
66 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v5, "v5"},
67 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v5te, "v5te"},
68 {ZigLLVM_arm, ZigLLVM_ARMSubArch_v4t, "v4t"},
6966
70 {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v3, "v3"},67 {ZigLLVM_shave, ZigLLVM_NoSubArch},
71 {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v4, "v4"},68 {ZigLLVM_wasm32, ZigLLVM_NoSubArch},
72 {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v5, "v5"},69 {ZigLLVM_wasm64, ZigLLVM_NoSubArch},
73};70};
7471
75static const VendorType vendor_list[] = {72static const ZigLLVM_VendorType vendor_list[] = {
76 {ZigLLVM_Apple},73 ZigLLVM_Apple,
77 {ZigLLVM_PC},74 ZigLLVM_PC,
78 {ZigLLVM_SCEI},75 ZigLLVM_SCEI,
79 {ZigLLVM_BGP},76 ZigLLVM_BGP,
80 {ZigLLVM_BGQ},77 ZigLLVM_BGQ,
81 {ZigLLVM_Freescale},78 ZigLLVM_Freescale,
82 {ZigLLVM_IBM},79 ZigLLVM_IBM,
83 {ZigLLVM_ImaginationTechnologies},80 ZigLLVM_ImaginationTechnologies,
84 {ZigLLVM_MipsTechnologies},81 ZigLLVM_MipsTechnologies,
85 {ZigLLVM_NVIDIA},82 ZigLLVM_NVIDIA,
86 {ZigLLVM_CSR},83 ZigLLVM_CSR,
87};84};
8885
89static const OsType os_list[] = {86static const ZigLLVM_OSType os_list[] = {
90 {ZigLLVM_UnknownOS},87 ZigLLVM_UnknownOS,
91 {ZigLLVM_CloudABI},88 ZigLLVM_CloudABI,
92 {ZigLLVM_Darwin},89 ZigLLVM_Darwin,
93 {ZigLLVM_DragonFly},90 ZigLLVM_DragonFly,
94 {ZigLLVM_FreeBSD},91 ZigLLVM_FreeBSD,
95 {ZigLLVM_IOS},92 ZigLLVM_IOS,
96 {ZigLLVM_KFreeBSD},93 ZigLLVM_KFreeBSD,
97 {ZigLLVM_Linux},94 ZigLLVM_Linux,
98 {ZigLLVM_Lv2},95 ZigLLVM_Lv2,
99 {ZigLLVM_MacOSX},96 ZigLLVM_MacOSX,
100 {ZigLLVM_NetBSD},97 ZigLLVM_NetBSD,
101 {ZigLLVM_OpenBSD},98 ZigLLVM_OpenBSD,
102 {ZigLLVM_Solaris},99 ZigLLVM_Solaris,
103 {ZigLLVM_Win32},100 ZigLLVM_Win32,
104 {ZigLLVM_Haiku},101 ZigLLVM_Haiku,
105 {ZigLLVM_Minix},102 ZigLLVM_Minix,
106 {ZigLLVM_RTEMS},103 ZigLLVM_RTEMS,
107 {ZigLLVM_NaCl},104 ZigLLVM_NaCl,
108 {ZigLLVM_CNK},105 ZigLLVM_CNK,
109 {ZigLLVM_Bitrig},106 ZigLLVM_Bitrig,
110 {ZigLLVM_AIX},107 ZigLLVM_AIX,
111 {ZigLLVM_CUDA},108 ZigLLVM_CUDA,
112 {ZigLLVM_NVCL},109 ZigLLVM_NVCL,
113 {ZigLLVM_AMDHSA},110 ZigLLVM_AMDHSA,
114 {ZigLLVM_PS4},111 ZigLLVM_PS4,
115};112};
116113
117static const EnvironmentType environ_list[] = {114static const ZigLLVM_EnvironmentType environ_list[] = {
118 {ZigLLVM_GNU},115 ZigLLVM_GNU,
119 {ZigLLVM_GNUEABI},116 ZigLLVM_GNUEABI,
120 {ZigLLVM_GNUEABIHF},117 ZigLLVM_GNUEABIHF,
121 {ZigLLVM_GNUX32},118 ZigLLVM_GNUX32,
122 {ZigLLVM_CODE16},119 ZigLLVM_CODE16,
123 {ZigLLVM_EABI},120 ZigLLVM_EABI,
124 {ZigLLVM_EABIHF},121 ZigLLVM_EABIHF,
125 {ZigLLVM_Android},122 ZigLLVM_Android,
126 {ZigLLVM_MSVC},123 ZigLLVM_MSVC,
127 {ZigLLVM_Itanium},124 ZigLLVM_Itanium,
128 {ZigLLVM_Cygnus},125 ZigLLVM_Cygnus,
129};126};
130127
131int target_arch_count(void) {128int target_arch_count(void) {
...@@ -136,34 +133,28 @@ const ArchType *get_target_arch(int index) {...@@ -136,34 +133,28 @@ const ArchType *get_target_arch(int index) {
136 return &arch_list[index];133 return &arch_list[index];
137}134}
138135
139int target_sub_arch_count(void) {
140 return array_length(sub_arch_list);
141}
142const SubArchType *get_target_sub_arch(int index) {
143 return &sub_arch_list[index];
144}
145
146int target_vendor_count(void) {136int target_vendor_count(void) {
147 return array_length(vendor_list);137 return array_length(vendor_list);
148}138}
149139
150const VendorType *get_target_vendor(int index) {140ZigLLVM_VendorType get_target_vendor(int index) {
151 return &vendor_list[index];141 return vendor_list[index];
152}142}
153143
154int target_os_count(void) {144int target_os_count(void) {
155 return array_length(os_list);145 return array_length(os_list);
156}146}
157const OsType *get_target_os(int index) {147ZigLLVM_OSType get_target_os(int index) {
158 return &os_list[index];148 return os_list[index];
159}149}
160const char *get_target_os_name(const OsType *os_type) {150
161 return (os_type->llvm_os == ZigLLVM_UnknownOS) ? "freestanding" : ZigLLVMGetOSTypeName(os_type->llvm_os);151const char *get_target_os_name(ZigLLVM_OSType os_type) {
152 return (os_type == ZigLLVM_UnknownOS) ? "freestanding" : ZigLLVMGetOSTypeName(os_type);
162}153}
163154
164int target_environ_count(void) {155int target_environ_count(void) {
165 return array_length(environ_list);156 return array_length(environ_list);
166}157}
167const EnvironmentType *get_target_environ(int index) {158ZigLLVM_EnvironmentType get_target_environ(int index) {
168 return &environ_list[index];159 return environ_list[index];
169}160}
src/target.hpp+5-25
...@@ -11,41 +11,21 @@...@@ -11,41 +11,21 @@
11#include <zig_llvm.hpp>11#include <zig_llvm.hpp>
1212
13struct ArchType {13struct ArchType {
14 ZigLLVM_ArchType llvm_arch;14 ZigLLVM_ArchType arch;
15};
16
17struct SubArchType {
18 ZigLLVM_ArchType arch; // which arch it applies to
19 ZigLLVM_SubArchType sub_arch;15 ZigLLVM_SubArchType sub_arch;
20 const char *name;
21};
22
23struct VendorType {
24 ZigLLVM_VendorType llvm_vendor;
25};
26
27struct OsType {
28 ZigLLVM_OSType llvm_os;
29};
30
31struct EnvironmentType {
32 ZigLLVM_EnvironmentType llvm_environment;
33};16};
3417
35int target_arch_count(void);18int target_arch_count(void);
36const ArchType *get_target_arch(int index);19const ArchType *get_target_arch(int index);
3720
38int target_sub_arch_count(void);
39const SubArchType *get_target_sub_arch(int index);
40
41int target_vendor_count(void);21int target_vendor_count(void);
42const VendorType *get_target_vendor(int index);22ZigLLVM_VendorType get_target_vendor(int index);
4323
44int target_os_count(void);24int target_os_count(void);
45const OsType *get_target_os(int index);25ZigLLVM_OSType get_target_os(int index);
46const char *get_target_os_name(const OsType *os_type);26const char *get_target_os_name(ZigLLVM_OSType os_type);
4727
48int target_environ_count(void);28int target_environ_count(void);
49const EnvironmentType *get_target_environ(int index);29ZigLLVM_EnvironmentType get_target_environ(int index);
5030
51#endif31#endif
src/zig_llvm.cpp+39
...@@ -551,6 +551,45 @@ void ZigLLVMGetNativeTarget(ZigLLVM_ArchType *arch_type, ZigLLVM_SubArchType *su...@@ -551,6 +551,45 @@ void ZigLLVMGetNativeTarget(ZigLLVM_ArchType *arch_type, ZigLLVM_SubArchType *su
551 free(native_triple);551 free(native_triple);
552}552}
553553
554const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
555 switch (sub_arch) {
556 case ZigLLVM_NoSubArch:
557 return "(none)";
558 case ZigLLVM_ARMSubArch_v8_1a:
559 return "v8_1a";
560 case ZigLLVM_ARMSubArch_v8:
561 return "v8";
562 case ZigLLVM_ARMSubArch_v7:
563 return "v7";
564 case ZigLLVM_ARMSubArch_v7em:
565 return "v7em";
566 case ZigLLVM_ARMSubArch_v7m:
567 return "v7m";
568 case ZigLLVM_ARMSubArch_v7s:
569 return "v7s";
570 case ZigLLVM_ARMSubArch_v6:
571 return "v6";
572 case ZigLLVM_ARMSubArch_v6m:
573 return "v6m";
574 case ZigLLVM_ARMSubArch_v6k:
575 return "v6k";
576 case ZigLLVM_ARMSubArch_v6t2:
577 return "v6t2";
578 case ZigLLVM_ARMSubArch_v5:
579 return "v5";
580 case ZigLLVM_ARMSubArch_v5te:
581 return "v5te";
582 case ZigLLVM_ARMSubArch_v4t:
583 return "v4t";
584 case ZigLLVM_KalimbaSubArch_v3:
585 return "v3";
586 case ZigLLVM_KalimbaSubArch_v4:
587 return "v4";
588 case ZigLLVM_KalimbaSubArch_v5:
589 return "v5";
590 }
591}
592
554//------------------------------------593//------------------------------------
555594
556#include "buffer.hpp"595#include "buffer.hpp"
src/zig_llvm.hpp+1
...@@ -284,6 +284,7 @@ enum ZigLLVM_ObjectFormatType {...@@ -284,6 +284,7 @@ enum ZigLLVM_ObjectFormatType {
284};284};
285285
286const char *ZigLLVMGetArchTypeName(ZigLLVM_ArchType arch);286const char *ZigLLVMGetArchTypeName(ZigLLVM_ArchType arch);
287const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch);
287const char *ZigLLVMGetVendorTypeName(ZigLLVM_VendorType vendor);288const char *ZigLLVMGetVendorTypeName(ZigLLVM_VendorType vendor);
288const char *ZigLLVMGetOSTypeName(ZigLLVM_OSType os);289const char *ZigLLVMGetOSTypeName(ZigLLVM_OSType os);
289const char *ZigLLVMGetEnvironmentTypeName(ZigLLVM_EnvironmentType environ);290const char *ZigLLVMGetEnvironmentTypeName(ZigLLVM_EnvironmentType environ);