| ... | ... | @@ -2,10 +2,19 @@ const std = @import("../std.zig"); |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | 3 | const testing = std.testing; |
| 4 | 4 | |
| 5 | fn isComptime() bool { |
| 6 | var a: u8 = 0; |
| 7 | return @typeInfo(@TypeOf(.{a})).Struct.fields[0].is_comptime; |
| 8 | } |
| 9 | |
| 5 | 10 | const has_aesni = std.Target.x86.featureSetHas(builtin.cpu.features, .aes); |
| 6 | 11 | const has_avx = std.Target.x86.featureSetHas(builtin.cpu.features, .avx); |
| 7 | 12 | const has_armaes = std.Target.aarch64.featureSetHas(builtin.cpu.features, .aes); |
| 8 | | const impl = if (builtin.cpu.arch == .x86_64 and has_aesni and has_avx) impl: { |
| 13 | const impl = if (isComptime()) |
| 14 | impl: { |
| 15 | break :impl @import("aes/soft.zig"); |
| 16 | } else if (builtin.cpu.arch == .x86_64 and has_aesni and has_avx) |
| 17 | impl: { |
| 9 | 18 | break :impl @import("aes/aesni.zig"); |
| 10 | 19 | } else if (builtin.cpu.arch == .aarch64 and has_armaes) |
| 11 | 20 | impl: { |