spirv: sqrt instruction
This commit is contained in:
parent
487beaabde
commit
7991053b37
1 changed files with 11 additions and 1 deletions
|
|
@ -847,12 +847,21 @@ fn getStride(spv: *SpirV, inst: InstIndex, direct: bool) u8 {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn getSize(spv: *SpirV, inst: InstIndex) u8 {
|
fn getSize(spv: *SpirV, inst: InstIndex) u16 {
|
||||||
return switch (spv.air.getInst(inst)) {
|
return switch (spv.air.getInst(inst)) {
|
||||||
inline .int, .float => |num| num.type.sizeBits() / 8,
|
inline .int, .float => |num| num.type.sizeBits() / 8,
|
||||||
.array => |arr| return @intCast(spv.air.resolveInt(arr.len).? * spv.getSize(arr.elem_type)),
|
.array => |arr| return @intCast(spv.air.resolveInt(arr.len).? * spv.getSize(arr.elem_type)),
|
||||||
.vector => |vec| return spv.getSize(vec.elem_type) * @intFromEnum(vec.size),
|
.vector => |vec| return spv.getSize(vec.elem_type) * @intFromEnum(vec.size),
|
||||||
.matrix => |mat| return @as(u8, @intCast(@intFromEnum(mat.cols))) * @intFromEnum(mat.rows) * spv.getSize(mat.elem_type),
|
.matrix => |mat| return @as(u8, @intCast(@intFromEnum(mat.cols))) * @intFromEnum(mat.rows) * spv.getSize(mat.elem_type),
|
||||||
|
.@"struct" => |strct| {
|
||||||
|
var size: u16 = 0;
|
||||||
|
const members = spv.air.refToList(strct.members);
|
||||||
|
for (members) |member| {
|
||||||
|
const member_ty = spv.air.getInst(member).struct_member.type;
|
||||||
|
size += spv.getSize(member_ty);
|
||||||
|
}
|
||||||
|
return size;
|
||||||
|
},
|
||||||
else => unreachable, // TODO
|
else => unreachable, // TODO
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -1840,6 +1849,7 @@ fn emitUnaryIntrinsic(spv: *SpirV, section: *Section, unary: Inst.UnaryIntrinsic
|
||||||
.sin => 13,
|
.sin => 13,
|
||||||
.cos => 14,
|
.cos => 14,
|
||||||
.tan => 15,
|
.tan => 15,
|
||||||
|
.sqrt => 31,
|
||||||
.normalize => 69,
|
.normalize => 69,
|
||||||
.length => 66,
|
.length => 66,
|
||||||
.floor => 8,
|
.floor => 8,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue