authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2020-12-16 18:25:25+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2020-12-16 18:25:25+01:00
log4b62f1bd93abfa2ae5aec2240bfac9327035901b
tree7f5770a4b83716f3afa097ca481fd6be64e7b15a
parent1c40a4df094132db952157bf28253ed80646ea00

Update changes due to different CPU feature sets

llvm commit b2851aea80e5a8f0cfd6c3c5a56a6b00fb28c6b6

3 files changed, 9 insertions(+), 8 deletions(-)

lib/std/target.zig+5-5
......@@ -551,7 +551,7 @@ pub const Target = struct {
551551 pub const Set = struct {
552552 ints: [usize_count]usize,
553553
554 pub const needed_bit_count = 168;
554 pub const needed_bit_count = 192;
555555 pub const byte_count = (needed_bit_count + 7) / 8;
556556 pub const usize_count = (byte_count + (@sizeOf(usize) - 1)) / @sizeOf(usize);
557557 pub const Index = std.math.Log2Int(std.meta.Int(.unsigned, usize_count * @bitSizeOf(usize)));
......@@ -828,7 +828,7 @@ pub const Target = struct {
828828 .amdgcn => ._NONE,
829829 .bpfel => ._BPF,
830830 .bpfeb => ._BPF,
831 .csky => ._CSKY,
831 .csky => ._NONE,
832832 .sparcv9 => ._SPARCV9,
833833 .s390x => ._S390,
834834 .ve => ._NONE,
......@@ -1149,9 +1149,9 @@ pub const Target = struct {
11491149
11501150 pub fn baseline(arch: Arch) *const Model {
11511151 return switch (arch) {
1152 .arm, .armeb, .thumb, .thumbeb => &arm.cpu.baseline,
1153 .riscv32 => &riscv.cpu.baseline_rv32,
1154 .riscv64 => &riscv.cpu.baseline_rv64,
1152 // .arm, .armeb, .thumb, .thumbeb => &arm.cpu.baseline, // TODO removed in LLVM 12
1153 // .riscv32 => &riscv.cpu.baseline_rv32, // TODO removed in LLVM 12
1154 // .riscv64 => &riscv.cpu.baseline_rv64, // TODO removed in LLVM 12
11551155 .i386 => &x86.cpu.pentium4,
11561156 .nvptx, .nvptx64 => &nvptx.cpu.sm_20,
11571157
src/codegen.zig+3-3
......@@ -1689,7 +1689,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
16891689
16901690 // TODO: add Instruction.supportedOn
16911691 // function for ARM
1692 if (Target.arm.featureSetHas(self.target.cpu.features, .has_v5t)) {
1692 if (Target.arm.featureSetHas(self.target.cpu.features, .armv5t)) {
16931693 writeInt(u32, try self.code.addManyAsArray(4), Instruction.blx(.al, .lr).toU32());
16941694 } else {
16951695 writeInt(u32, try self.code.addManyAsArray(4), Instruction.mov(.al, .lr, Instruction.Operand.reg(.pc, Instruction.Operand.Shift.none)).toU32());
......@@ -2625,7 +2625,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
26252625 } else if (Instruction.Operand.fromU32(~@intCast(u32, x))) |op| {
26262626 writeInt(u32, try self.code.addManyAsArray(4), Instruction.mvn(.al, reg, op).toU32());
26272627 } else if (x <= math.maxInt(u16)) {
2628 if (Target.arm.featureSetHas(self.target.cpu.features, .has_v7)) {
2628 if (Target.arm.featureSetHas(self.target.cpu.features, .armv7_a)) {
26292629 writeInt(u32, try self.code.addManyAsArray(4), Instruction.movw(.al, reg, @intCast(u16, x)).toU32());
26302630 } else {
26312631 writeInt(u32, try self.code.addManyAsArray(4), Instruction.mov(.al, reg, Instruction.Operand.imm(@truncate(u8, x), 0)).toU32());
......@@ -2634,7 +2634,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
26342634 } else {
26352635 // TODO write constant to code and load
26362636 // relative to pc
2637 if (Target.arm.featureSetHas(self.target.cpu.features, .has_v7)) {
2637 if (Target.arm.featureSetHas(self.target.cpu.features, .armv7_a)) {
26382638 // immediate: 0xaaaabbbb
26392639 // movw reg, #0xbbbb
26402640 // movt reg, #0xaaaa
src/target.zig+1
......@@ -240,6 +240,7 @@ pub fn archToLLVM(arch_tag: std.Target.Cpu.Arch) llvm.ArchType {
240240 .avr => .avr,
241241 .bpfel => .bpfel,
242242 .bpfeb => .bpfeb,
243 .csky => .csky,
243244 .hexagon => .hexagon,
244245 .mips => .mips,
245246 .mipsel => .mipsel,