2019-12-20 16:27:13 -08:00
|
|
|
const Feature = @import("std").target.Feature;
|
|
|
|
const Cpu = @import("std").target.Cpu;
|
|
|
|
|
|
|
|
pub const feature_duplex = Feature{
|
|
|
|
.name = "duplex",
|
2020-01-08 17:27:05 -08:00
|
|
|
.llvm_name = "duplex",
|
2019-12-20 16:27:13 -08:00
|
|
|
.description = "Enable generation of duplex instruction",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const feature_longCalls = Feature{
|
2020-01-08 18:35:26 -08:00
|
|
|
.name = "longCalls",
|
2020-01-08 17:27:05 -08:00
|
|
|
.llvm_name = "long-calls",
|
2019-12-20 16:27:13 -08:00
|
|
|
.description = "Use constant-extended calls",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const feature_mem_noshuf = Feature{
|
|
|
|
.name = "mem_noshuf",
|
2020-01-08 17:27:05 -08:00
|
|
|
.llvm_name = "mem_noshuf",
|
2019-12-20 16:27:13 -08:00
|
|
|
.description = "Supports mem_noshuf feature",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const feature_memops = Feature{
|
|
|
|
.name = "memops",
|
2020-01-08 17:27:05 -08:00
|
|
|
.llvm_name = "memops",
|
2019-12-20 16:27:13 -08:00
|
|
|
.description = "Use memop instructions",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const feature_nvj = Feature{
|
|
|
|
.name = "nvj",
|
2020-01-08 17:27:05 -08:00
|
|
|
.llvm_name = "nvj",
|
2019-12-20 16:27:13 -08:00
|
|
|
.description = "Support for new-value jumps",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
&feature_packets,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const feature_nvs = Feature{
|
|
|
|
.name = "nvs",
|
2020-01-08 17:27:05 -08:00
|
|
|
.llvm_name = "nvs",
|
2019-12-20 16:27:13 -08:00
|
|
|
.description = "Support for new-value stores",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
&feature_packets,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const feature_noreturnStackElim = Feature{
|
2020-01-08 18:35:26 -08:00
|
|
|
.name = "noreturnStackElim",
|
2020-01-08 17:27:05 -08:00
|
|
|
.llvm_name = "noreturn-stack-elim",
|
2019-12-20 16:27:13 -08:00
|
|
|
.description = "Eliminate stack allocation in a noreturn function when possible",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const feature_packets = Feature{
|
|
|
|
.name = "packets",
|
2020-01-08 17:27:05 -08:00
|
|
|
.llvm_name = "packets",
|
2019-12-20 16:27:13 -08:00
|
|
|
.description = "Support for instruction packets",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const feature_reservedR19 = Feature{
|
2020-01-08 18:35:26 -08:00
|
|
|
.name = "reservedR19",
|
2020-01-08 17:27:05 -08:00
|
|
|
.llvm_name = "reserved-r19",
|
2019-12-20 16:27:13 -08:00
|
|
|
.description = "Reserve register R19",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const feature_smallData = Feature{
|
2020-01-08 18:35:26 -08:00
|
|
|
.name = "smallData",
|
2020-01-08 17:27:05 -08:00
|
|
|
.llvm_name = "small-data",
|
2019-12-20 16:27:13 -08:00
|
|
|
.description = "Allow GP-relative addressing of global variables",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const features = &[_]*const Feature {
|
|
|
|
&feature_duplex,
|
|
|
|
&feature_longCalls,
|
|
|
|
&feature_mem_noshuf,
|
|
|
|
&feature_memops,
|
|
|
|
&feature_nvj,
|
|
|
|
&feature_nvs,
|
|
|
|
&feature_noreturnStackElim,
|
|
|
|
&feature_packets,
|
|
|
|
&feature_reservedR19,
|
|
|
|
&feature_smallData,
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const cpu_generic = Cpu{
|
|
|
|
.name = "generic",
|
|
|
|
.llvm_name = "generic",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
&feature_duplex,
|
|
|
|
&feature_memops,
|
|
|
|
&feature_packets,
|
|
|
|
&feature_nvj,
|
|
|
|
&feature_nvs,
|
|
|
|
&feature_smallData,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const cpu_hexagonv5 = Cpu{
|
|
|
|
.name = "hexagonv5",
|
|
|
|
.llvm_name = "hexagonv5",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
&feature_duplex,
|
|
|
|
&feature_memops,
|
|
|
|
&feature_packets,
|
|
|
|
&feature_nvj,
|
|
|
|
&feature_nvs,
|
|
|
|
&feature_smallData,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const cpu_hexagonv55 = Cpu{
|
|
|
|
.name = "hexagonv55",
|
|
|
|
.llvm_name = "hexagonv55",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
&feature_duplex,
|
|
|
|
&feature_memops,
|
|
|
|
&feature_packets,
|
|
|
|
&feature_nvj,
|
|
|
|
&feature_nvs,
|
|
|
|
&feature_smallData,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const cpu_hexagonv60 = Cpu{
|
|
|
|
.name = "hexagonv60",
|
|
|
|
.llvm_name = "hexagonv60",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
&feature_duplex,
|
|
|
|
&feature_memops,
|
|
|
|
&feature_packets,
|
|
|
|
&feature_nvj,
|
|
|
|
&feature_nvs,
|
|
|
|
&feature_smallData,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const cpu_hexagonv62 = Cpu{
|
|
|
|
.name = "hexagonv62",
|
|
|
|
.llvm_name = "hexagonv62",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
&feature_duplex,
|
|
|
|
&feature_memops,
|
|
|
|
&feature_packets,
|
|
|
|
&feature_nvj,
|
|
|
|
&feature_nvs,
|
|
|
|
&feature_smallData,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const cpu_hexagonv65 = Cpu{
|
|
|
|
.name = "hexagonv65",
|
|
|
|
.llvm_name = "hexagonv65",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
&feature_duplex,
|
|
|
|
&feature_mem_noshuf,
|
|
|
|
&feature_memops,
|
|
|
|
&feature_packets,
|
|
|
|
&feature_nvj,
|
|
|
|
&feature_nvs,
|
|
|
|
&feature_smallData,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const cpu_hexagonv66 = Cpu{
|
|
|
|
.name = "hexagonv66",
|
|
|
|
.llvm_name = "hexagonv66",
|
2020-01-07 07:36:06 -08:00
|
|
|
.dependencies = &[_]*const Feature {
|
2019-12-20 16:27:13 -08:00
|
|
|
&feature_duplex,
|
|
|
|
&feature_mem_noshuf,
|
|
|
|
&feature_memops,
|
|
|
|
&feature_packets,
|
|
|
|
&feature_nvj,
|
|
|
|
&feature_nvs,
|
|
|
|
&feature_smallData,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const cpus = &[_]*const Cpu {
|
|
|
|
&cpu_generic,
|
|
|
|
&cpu_hexagonv5,
|
|
|
|
&cpu_hexagonv55,
|
|
|
|
&cpu_hexagonv60,
|
|
|
|
&cpu_hexagonv62,
|
|
|
|
&cpu_hexagonv65,
|
|
|
|
&cpu_hexagonv66,
|
|
|
|
};
|