wip
This commit is contained in:
parent
9bee8064f2
commit
c9b1c22957
@ -449,7 +449,7 @@ pub const Type = struct {
|
|||||||
pub fn is_signed(ty: *const Type) bool {
|
pub fn is_signed(ty: *const Type) bool {
|
||||||
return switch (ty.bb) {
|
return switch (ty.bb) {
|
||||||
.integer => |integer| integer.signed,
|
.integer => |integer| integer.signed,
|
||||||
// .bits => |bits| bits.backing_type.is_signed(),
|
.bits => |bits| bits.backing_type.is_signed(),
|
||||||
else => @trap(),
|
else => @trap(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -477,7 +477,7 @@ pub const Type = struct {
|
|||||||
pub fn is_promotable_integer_type_for_abi(ty: *Type) bool {
|
pub fn is_promotable_integer_type_for_abi(ty: *Type) bool {
|
||||||
return switch (ty.bb) {
|
return switch (ty.bb) {
|
||||||
.integer => |integer| integer.bit_count < 32,
|
.integer => |integer| integer.bit_count < 32,
|
||||||
// .bits => |bits| bits.backing_type.is_promotable_integer_type_for_abi(),
|
.bits => |bits| bits.backing_type.is_promotable_integer_type_for_abi(),
|
||||||
else => @trap(),
|
else => @trap(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -504,6 +504,7 @@ pub const Type = struct {
|
|||||||
.pointer => 64,
|
.pointer => 64,
|
||||||
.bits => |bits| bits.backing_type.get_bit_alignment(),
|
.bits => |bits| bits.backing_type.get_bit_alignment(),
|
||||||
.array => |array| array.element_type.get_bit_alignment(),
|
.array => |array| array.element_type.get_bit_alignment(),
|
||||||
|
.structure => |structure| structure.bit_alignment,
|
||||||
else => @trap(),
|
else => @trap(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -514,6 +515,7 @@ pub const Type = struct {
|
|||||||
.structure => |structure| structure.byte_size,
|
.structure => |structure| structure.byte_size,
|
||||||
.pointer => 8,
|
.pointer => 8,
|
||||||
.array => |array| array.element_type.get_byte_size() * array.element_count,
|
.array => |array| array.element_type.get_byte_size() * array.element_count,
|
||||||
|
.bits => |bits| bits.backing_type.get_byte_size(),
|
||||||
else => @trap(),
|
else => @trap(),
|
||||||
};
|
};
|
||||||
return byte_size;
|
return byte_size;
|
||||||
@ -525,6 +527,7 @@ pub const Type = struct {
|
|||||||
.pointer => 64,
|
.pointer => 64,
|
||||||
.bits => |bits| bits.backing_type.get_bit_size(),
|
.bits => |bits| bits.backing_type.get_bit_size(),
|
||||||
.array => |array| array.element_type.get_bit_size() * array.element_count,
|
.array => |array| array.element_type.get_bit_size() * array.element_count,
|
||||||
|
.structure => |structure| structure.bit_size,
|
||||||
else => @trap(),
|
else => @trap(),
|
||||||
};
|
};
|
||||||
return bit_size;
|
return bit_size;
|
||||||
@ -7353,7 +7356,7 @@ pub const Abi = struct {
|
|||||||
|
|
||||||
switch (ty.bb) {
|
switch (ty.bb) {
|
||||||
.void, .noreturn => result[current_index] = .none,
|
.void, .noreturn => result[current_index] = .none,
|
||||||
// .bits => result[current_index] = .integer,
|
.bits => result[current_index] = .integer,
|
||||||
.pointer => result[current_index] = .integer,
|
.pointer => result[current_index] = .integer,
|
||||||
.integer => |integer| {
|
.integer => |integer| {
|
||||||
if (integer.bit_count <= 64) {
|
if (integer.bit_count <= 64) {
|
||||||
@ -7488,9 +7491,9 @@ pub const Abi = struct {
|
|||||||
|
|
||||||
fn get_int_type_at_offset(module: *Module, ty: *Type, offset: u32, source_type: *Type, source_offset: u32) *Type {
|
fn get_int_type_at_offset(module: *Module, ty: *Type, offset: u32, source_type: *Type, source_offset: u32) *Type {
|
||||||
switch (ty.bb) {
|
switch (ty.bb) {
|
||||||
// .bits => |bits| {
|
.bits => |bits| {
|
||||||
// return get_int_type_at_offset(module, bits.backing_type, offset, if (source_type == ty) bits.backing_type else source_type, source_offset);
|
return get_int_type_at_offset(module, bits.backing_type, offset, if (source_type == ty) bits.backing_type else source_type, source_offset);
|
||||||
// },
|
},
|
||||||
.integer => |integer_type| {
|
.integer => |integer_type| {
|
||||||
switch (integer_type.bit_count) {
|
switch (integer_type.bit_count) {
|
||||||
64 => return ty,
|
64 => return ty,
|
||||||
|
@ -330,7 +330,7 @@ require = fn (ok: u1) void
|
|||||||
|
|
||||||
[export] bb_ptr = fn [cc(c)] (x: &u8) void
|
[export] bb_ptr = fn [cc(c)] (x: &u8) void
|
||||||
{
|
{
|
||||||
require(#cast_to(u64, x) == 0xdeadbeef);
|
require(#int_from_pointer(x) == 0xdeadbeef);
|
||||||
}
|
}
|
||||||
|
|
||||||
[export] bb_five_integers = fn [cc(c)] (a: s32, b: s32, c: s32, d: s32, e: s32) void
|
[export] bb_five_integers = fn [cc(c)] (a: s32, b: s32, c: s32, d: s32, e: s32) void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user