Commit f9fe548e41
Changed files (1)
lib
std
crypto
lib/std/crypto/sha2.zig
@@ -71,6 +71,12 @@ const Sha256Params = Sha2Params32{
const v4u32 = @Vector(4, u32);
+// TODO: Remove once https://github.com/ziglang/zig/issues/868 is resolved.
+fn isComptime() bool {
+ var a: u8 = 0;
+ return @typeInfo(@TypeOf(.{a})).Struct.fields[0].is_comptime;
+}
+
/// SHA-224
pub const Sha224 = Sha2x32(Sha224Params);
@@ -187,7 +193,7 @@ fn Sha2x32(comptime params: Sha2Params32) type {
}
switch (builtin.cpu.arch) {
- .aarch64 => if (comptime builtin.cpu.features.isEnabled(@enumToInt(std.Target.aarch64.Feature.sha2))) {
+ .aarch64 => if (!isComptime() and comptime builtin.cpu.features.isEnabled(@enumToInt(std.Target.aarch64.Feature.sha2))) {
var x: v4u32 = d.s[0..4].*;
var y: v4u32 = d.s[4..8].*;
const s_v = @ptrCast(*[16]v4u32, &s);
@@ -224,7 +230,7 @@ fn Sha2x32(comptime params: Sha2Params32) type {
d.s[4..8].* = y +% @as(v4u32, d.s[4..8].*);
return;
},
- .x86_64 => if (comptime builtin.cpu.features.isEnabled(@enumToInt(std.Target.x86.Feature.sha))) {
+ .x86_64 => if (!isComptime() and comptime builtin.cpu.features.isEnabled(@enumToInt(std.Target.x86.Feature.sha))) {
var x: v4u32 = [_]u32{ d.s[5], d.s[4], d.s[1], d.s[0] };
var y: v4u32 = [_]u32{ d.s[7], d.s[6], d.s[3], d.s[2] };
const s_v = @ptrCast(*[16]v4u32, &s);