Commit 50339f595a

Eric Joldasov <bratishkaerik@getgoogleoff.me>
2023-06-15 09:14:16
all: zig fmt and rename "@XToY" to "@YFromX"
Signed-off-by: Eric Joldasov <bratishkaerik@getgoogleoff.me>
1 parent a6c8ee5
Changed files (665)
doc
lib
compiler_rt
docs
std
atomic
Build
Step
c
compress
crypto
event
fmt
fs
hash
heap
http
io
json
math
mem
meta
os
rand
target
Thread
time
unicode
valgrind
zig
src
test
behavior
c_abi
cases
compile_errors
async
stage1
llvm
safety
x86_64-linux
link
common_symbols_alignment
standalone
tools
doc/langref.html.in
@@ -2763,14 +2763,14 @@ test "comptime pointers" {
     }
 }
       {#code_end#}
-      <p>To convert an integer address into a pointer, use {#syntax#}@intToPtr{#endsyntax#}.
-      To convert a pointer to an integer, use {#syntax#}@ptrToInt{#endsyntax#}:</p>
+      <p>To convert an integer address into a pointer, use {#syntax#}@ptrFromInt{#endsyntax#}.
+      To convert a pointer to an integer, use {#syntax#}@intFromPtr{#endsyntax#}:</p>
       {#code_begin|test|test_integer_pointer_conversion#}
 const expect = @import("std").testing.expect;
 
-test "@ptrToInt and @intToPtr" {
-    const ptr = @intToPtr(*i32, 0xdeadbee0);
-    const addr = @ptrToInt(ptr);
+test "@intFromPtr and @ptrFromInt" {
+    const ptr = @ptrFromInt(*i32, 0xdeadbee0);
+    const addr = @intFromPtr(ptr);
     try expect(@TypeOf(addr) == usize);
     try expect(addr == 0xdeadbee0);
 }
@@ -2780,18 +2780,18 @@ test "@ptrToInt and @intToPtr" {
       {#code_begin|test|test_comptime_pointer_conversion#}
 const expect = @import("std").testing.expect;
 
-test "comptime @intToPtr" {
+test "comptime @ptrFromInt" {
     comptime {
         // Zig is able to do this at compile-time, as long as
         // ptr is never dereferenced.
-        const ptr = @intToPtr(*i32, 0xdeadbee0);
-        const addr = @ptrToInt(ptr);
+        const ptr = @ptrFromInt(*i32, 0xdeadbee0);
+        const addr = @intFromPtr(ptr);
         try expect(@TypeOf(addr) == usize);
         try expect(addr == 0xdeadbee0);
     }
 }
       {#code_end#}
-      {#see_also|Optional Pointers|@intToPtr|@ptrToInt|C Pointers#}
+      {#see_also|Optional Pointers|@ptrFromInt|@intFromPtr|C Pointers#}
       {#header_open|volatile#}
       <p>Loads and stores are assumed to not have side effects. If a given load or store
       should have side effects, such as Memory Mapped Input/Output (MMIO), use {#syntax#}volatile{#endsyntax#}.
@@ -2801,7 +2801,7 @@ test "comptime @intToPtr" {
 const expect = @import("std").testing.expect;
 
 test "volatile" {
-    const mmio_ptr = @intToPtr(*volatile u8, 0x12345678);
+    const mmio_ptr = @ptrFromInt(*volatile u8, 0x12345678);
     try expect(@TypeOf(mmio_ptr) == *volatile u8);
 }
       {#code_end#}
@@ -2942,8 +2942,8 @@ const expect = std.testing.expect;
 
 test "allowzero" {
     var zero: usize = 0;
-    var ptr = @intToPtr(*allowzero i32, zero);
-    try expect(@ptrToInt(ptr) == 0);
+    var ptr = @ptrFromInt(*allowzero i32, zero);
+    try expect(@intFromPtr(ptr) == 0);
 }
       {#code_end#}
       {#header_close#}
@@ -3006,7 +3006,7 @@ test "basic slices" {
     // while using the `ptr` field gives a many-item pointer.
     try expect(@TypeOf(slice.ptr) == [*]i32);
     try expect(@TypeOf(&slice[0]) == *i32);
-    try expect(@ptrToInt(slice.ptr) == @ptrToInt(&slice[0]));
+    try expect(@intFromPtr(slice.ptr) == @intFromPtr(&slice[0]));
 
     // Slices have array bounds checking. If you try to access something out
     // of bounds, you'll get a safety check failure:
@@ -3448,8 +3448,8 @@ var bit_field = BitField{
 };
 
 test "pointers of sub-byte-aligned fields share addresses" {
-    try expect(@ptrToInt(&bit_field.a) == @ptrToInt(&bit_field.b));
-    try expect(@ptrToInt(&bit_field.a) == @ptrToInt(&bit_field.c));
+    try expect(@intFromPtr(&bit_field.a) == @intFromPtr(&bit_field.b));
+    try expect(@intFromPtr(&bit_field.a) == @intFromPtr(&bit_field.c));
 }
       {#code_end#}
       <p>
@@ -3664,9 +3664,9 @@ const Value = enum(u2) {
 // Now you can cast between u2 and Value.
 // The ordinal value starts from 0, counting up by 1 from the previous member.
 test "enum ordinal value" {
-    try expect(@enumToInt(Value.zero) == 0);
-    try expect(@enumToInt(Value.one) == 1);
-    try expect(@enumToInt(Value.two) == 2);
+    try expect(@intFromEnum(Value.zero) == 0);
+    try expect(@intFromEnum(Value.one) == 1);
+    try expect(@intFromEnum(Value.two) == 2);
 }
 
 // You can override the ordinal value for an enum.
@@ -3676,9 +3676,9 @@ const Value2 = enum(u32) {
     million = 1000000,
 };
 test "set enum ordinal value" {
-    try expect(@enumToInt(Value2.hundred) == 100);
-    try expect(@enumToInt(Value2.thousand) == 1000);
-    try expect(@enumToInt(Value2.million) == 1000000);
+    try expect(@intFromEnum(Value2.hundred) == 100);
+    try expect(@intFromEnum(Value2.thousand) == 1000);
+    try expect(@intFromEnum(Value2.million) == 1000000);
 }
 
 // You can also override only some values.
@@ -3690,11 +3690,11 @@ const Value3 = enum(u4) {
     e,
 };
 test "enum implicit ordinal values and overridden values" {
-    try expect(@enumToInt(Value3.a) == 0);
-    try expect(@enumToInt(Value3.b) == 8);
-    try expect(@enumToInt(Value3.c) == 9);
-    try expect(@enumToInt(Value3.d) == 4);
-    try expect(@enumToInt(Value3.e) == 5);
+    try expect(@intFromEnum(Value3.a) == 0);
+    try expect(@intFromEnum(Value3.b) == 8);
+    try expect(@intFromEnum(Value3.c) == 9);
+    try expect(@intFromEnum(Value3.d) == 4);
+    try expect(@intFromEnum(Value3.e) == 5);
 }
 
 // Enums can have methods, the same as structs and unions.
@@ -3811,7 +3811,7 @@ test "switch using enum literals" {
       It  must specify a tag type and cannot consume every enumeration value.
       </p>
       <p>
-      {#link|@intToEnum#} on a non-exhaustive enum involves the safety semantics
+      {#link|@enumFromInt#} on a non-exhaustive enum involves the safety semantics
       of {#link|@intCast#} to the integer tag type, but beyond that always results in
       a well-defined enum value.
       </p>
@@ -4385,7 +4385,7 @@ fn withFor(any: AnySlice) usize {
         // With `inline for` the function gets generated as
         // a series of `if` statements relying on the optimizer
         // to convert it to a switch.
-        if (field.value == @enumToInt(any)) {
+        if (field.value == @intFromEnum(any)) {
             return @field(any, field.name).len;
         }
     }
@@ -4428,7 +4428,7 @@ fn getNum(u: U) u32 {
         // `u.a` or `u.b` and `tag` is `u`'s comptime-known tag value.
         inline else => |num, tag| {
             if (tag == .b) {
-                return @floatToInt(u32, num);
+                return @intFromFloat(u32, num);
             }
             return num;
         }
@@ -6625,19 +6625,19 @@ test "coercion from homogenous tuple to array" {
       <ul>
           <li>{#link|@bitCast#} - change type but maintain bit representation</li>
           <li>{#link|@alignCast#} - make a pointer have more alignment</li>
-          <li>{#link|@boolToInt#} - convert true to 1 and false to 0</li>
-          <li>{#link|@enumToInt#} - obtain the integer tag value of an enum or tagged union</li>
+          <li>{#link|@intFromBool#} - convert true to 1 and false to 0</li>
+          <li>{#link|@intFromEnum#} - obtain the integer tag value of an enum or tagged union</li>
           <li>{#link|@errSetCast#} - convert to a smaller error set</li>
-          <li>{#link|@errorToInt#} - obtain the integer value of an error code</li>
+          <li>{#link|@intFromError#} - obtain the integer value of an error code</li>
           <li>{#link|@floatCast#} - convert a larger float to a smaller float</li>
-          <li>{#link|@floatToInt#} - obtain the integer part of a float value</li>
+          <li>{#link|@intFromFloat#} - obtain the integer part of a float value</li>
           <li>{#link|@intCast#} - convert between integer types</li>
-          <li>{#link|@intToEnum#} - obtain an enum value based on its integer tag value</li>
-          <li>{#link|@intToError#} - obtain an error code based on its integer value</li>
-          <li>{#link|@intToFloat#} - convert an integer to a float value</li>
-          <li>{#link|@intToPtr#} - convert an address to a pointer</li>
+          <li>{#link|@enumFromInt#} - obtain an enum value based on its integer tag value</li>
+          <li>{#link|@errorFromInt#} - obtain an error code based on its integer value</li>
+          <li>{#link|@floatFromInt#} - convert an integer to a float value</li>
+          <li>{#link|@ptrFromInt#} - convert an address to a pointer</li>
           <li>{#link|@ptrCast#} - convert between pointer types</li>
-          <li>{#link|@ptrToInt#} - obtain the address of a pointer</li>
+          <li>{#link|@intFromPtr#} - obtain the address of a pointer</li>
           <li>{#link|@truncate#} - convert between integer types, chopping off bits</li>
       </ul>
       {#header_close#}
@@ -6744,8 +6744,8 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {
 }
 
 test "peer type resolution: *const T and ?*T" {
-    const a = @intToPtr(*const usize, 0x123456780);
-    const b = @intToPtr(?*usize, 0x123456780);
+    const a = @ptrFromInt(*const usize, 0x123456780);
+    const b = @ptrFromInt(?*usize, 0x123456780);
     try expect(a == b);
     try expect(b == a);
 }
@@ -7542,7 +7542,7 @@ pub fn main() void {
       {#target_linux_x86_64#}
 pub fn main() noreturn {
     const msg = "hello world\n";
-    _ = syscall3(SYS_write, STDOUT_FILENO, @ptrToInt(msg), msg.len);
+    _ = syscall3(SYS_write, STDOUT_FILENO, @intFromPtr(msg), msg.len);
     _ = syscall1(SYS_exit, 0);
     unreachable;
 }
@@ -7857,7 +7857,7 @@ comptime {
       Asserts that {#syntax#}@sizeOf(@TypeOf(value)) == @sizeOf(DestType){#endsyntax#}.
       </p>
       <p>
-      Asserts that {#syntax#}@typeInfo(DestType) != .Pointer{#endsyntax#}. Use {#syntax#}@ptrCast{#endsyntax#} or {#syntax#}@intToPtr{#endsyntax#} if you need this.
+      Asserts that {#syntax#}@typeInfo(DestType) != .Pointer{#endsyntax#}. Use {#syntax#}@ptrCast{#endsyntax#} or {#syntax#}@ptrFromInt{#endsyntax#} if you need this.
       </p>
       <p>
       Can be used for these things for example:
@@ -7884,8 +7884,8 @@ comptime {
       {#see_also|@offsetOf#}
       {#header_close#}
 
-      {#header_open|@boolToInt#}
-      <pre>{#syntax#}@boolToInt(value: bool) u1{#endsyntax#}</pre>
+      {#header_open|@intFromBool#}
+      <pre>{#syntax#}@intFromBool(value: bool) u1{#endsyntax#}</pre>
       <p>
       Converts {#syntax#}true{#endsyntax#} to {#syntax#}@as(u1, 1){#endsyntax#} and {#syntax#}false{#endsyntax#} to
                   {#syntax#}@as(u1, 0){#endsyntax#}.
@@ -8348,8 +8348,8 @@ test "main" {
       {#see_also|@import#}
       {#header_close#}
 
-      {#header_open|@enumToInt#}
-      <pre>{#syntax#}@enumToInt(enum_or_tagged_union: anytype) anytype{#endsyntax#}</pre>
+      {#header_open|@intFromEnum#}
+      <pre>{#syntax#}@intFromEnum(enum_or_tagged_union: anytype) anytype{#endsyntax#}</pre>
       <p>
       Converts an enumeration value into its integer tag type. When a tagged union is passed,
       the tag value is used as the enumeration value.
@@ -8358,7 +8358,7 @@ test "main" {
       If there is only one possible enum value, the result is a {#syntax#}comptime_int{#endsyntax#}
       known at {#link|comptime#}.
       </p>
-      {#see_also|@intToEnum#}
+      {#see_also|@enumFromInt#}
       {#header_close#}
 
       {#header_open|@errorName#}
@@ -8383,8 +8383,8 @@ test "main" {
       </p>
       {#header_close#}
 
-      {#header_open|@errorToInt#}
-      <pre>{#syntax#}@errorToInt(err: anytype) std.meta.Int(.unsigned, @sizeOf(anyerror) * 8){#endsyntax#}</pre>
+      {#header_open|@intFromError#}
+      <pre>{#syntax#}@intFromError(err: anytype) std.meta.Int(.unsigned, @sizeOf(anyerror) * 8){#endsyntax#}</pre>
       <p>
       Supports the following types:
       </p>
@@ -8400,7 +8400,7 @@ test "main" {
       It is generally recommended to avoid this
       cast, as the integer representation of an error is not stable across source code changes.
       </p>
-      {#see_also|@intToError#}
+      {#see_also|@errorFromInt#}
       {#header_close#}
 
       {#header_open|@errSetCast#}
@@ -8526,8 +8526,8 @@ test "decl access by string" {
       </p>
       {#header_close#}
 
-      {#header_open|@floatToInt#}
-      <pre>{#syntax#}@floatToInt(comptime DestType: type, float: anytype) DestType{#endsyntax#}</pre>
+      {#header_open|@intFromFloat#}
+      <pre>{#syntax#}@intFromFloat(comptime DestType: type, float: anytype) DestType{#endsyntax#}</pre>
       <p>
       Converts the integer part of a floating point number to the destination type.
       </p>
@@ -8535,7 +8535,7 @@ test "decl access by string" {
       If the integer part of the floating point number cannot fit in the destination type,
       it invokes safety-checked {#link|Undefined Behavior#}.
       </p>
-      {#see_also|@intToFloat#}
+      {#see_also|@floatFromInt#}
       {#header_close#}
 
       {#header_open|@frameAddress#}
@@ -8666,8 +8666,8 @@ test "integer cast panic" {
       </p>
       {#header_close#}
 
-      {#header_open|@intToEnum#}
-      <pre>{#syntax#}@intToEnum(comptime DestType: type, integer: anytype) DestType{#endsyntax#}</pre>
+      {#header_open|@enumFromInt#}
+      <pre>{#syntax#}@enumFromInt(comptime DestType: type, integer: anytype) DestType{#endsyntax#}</pre>
       <p>
       Converts an integer into an {#link|enum#} value.
       </p>
@@ -8675,11 +8675,11 @@ test "integer cast panic" {
       Attempting to convert an integer which represents no value in the chosen enum type invokes
       safety-checked {#link|Undefined Behavior#}.
       </p>
-      {#see_also|@enumToInt#}
+      {#see_also|@intFromEnum#}
       {#header_close#}
 
-      {#header_open|@intToError#}
-      <pre>{#syntax#}@intToError(value: std.meta.Int(.unsigned, @sizeOf(anyerror) * 8)) anyerror{#endsyntax#}</pre>
+      {#header_open|@errorFromInt#}
+      <pre>{#syntax#}@errorFromInt(value: std.meta.Int(.unsigned, @sizeOf(anyerror) * 8)) anyerror{#endsyntax#}</pre>
       <p>
       Converts from the integer representation of an error into {#link|The Global Error Set#} type.
       </p>
@@ -8691,20 +8691,20 @@ test "integer cast panic" {
       Attempting to convert an integer that does not correspond to any error results in
       safety-protected {#link|Undefined Behavior#}.
       </p>
-      {#see_also|@errorToInt#}
+      {#see_also|@intFromError#}
       {#header_close#}
 
-      {#header_open|@intToFloat#}
-      <pre>{#syntax#}@intToFloat(comptime DestType: type, int: anytype) DestType{#endsyntax#}</pre>
+      {#header_open|@floatFromInt#}
+      <pre>{#syntax#}@floatFromInt(comptime DestType: type, int: anytype) DestType{#endsyntax#}</pre>
       <p>
-      Converts an integer to the closest floating point representation. To convert the other way, use {#link|@floatToInt#}. This cast is always safe.
+      Converts an integer to the closest floating point representation. To convert the other way, use {#link|@intFromFloat#}. This cast is always safe.
       </p>
       {#header_close#}
 
-      {#header_open|@intToPtr#}
-      <pre>{#syntax#}@intToPtr(comptime DestType: type, address: usize) DestType{#endsyntax#}</pre>
+      {#header_open|@ptrFromInt#}
+      <pre>{#syntax#}@ptrFromInt(comptime DestType: type, address: usize) DestType{#endsyntax#}</pre>
       <p>
-      Converts an integer to a {#link|pointer|Pointers#}. To convert the other way, use {#link|@ptrToInt#}. Casting an address of 0 to a destination type
+      Converts an integer to a {#link|pointer|Pointers#}. To convert the other way, use {#link|@intFromPtr#}. Casting an address of 0 to a destination type
       which in not {#link|optional|Optional Pointers#} and does not have the {#syntax#}allowzero{#endsyntax#} attribute will result in a
       {#link|Pointer Cast Invalid Null#} panic when runtime safety checks are enabled.
       </p>
@@ -8928,13 +8928,13 @@ pub const PrefetchOptions = struct {
       </ul>
       {#header_close#}
 
-      {#header_open|@ptrToInt#}
-      <pre>{#syntax#}@ptrToInt(value: anytype) usize{#endsyntax#}</pre>
+      {#header_open|@intFromPtr#}
+      <pre>{#syntax#}@intFromPtr(value: anytype) usize{#endsyntax#}</pre>
       <p>
       Converts {#syntax#}value{#endsyntax#} to a {#syntax#}usize{#endsyntax#} which is the address of the pointer.
       {#syntax#}value{#endsyntax#} can be {#syntax#}*T{#endsyntax#} or {#syntax#}?*T{#endsyntax#}.
       </p>
-      <p>To convert the other way, use {#link|@intToPtr#}</p>
+      <p>To convert the other way, use {#link|@ptrFromInt#}</p>
 
       {#header_close#}
 
@@ -10165,8 +10165,8 @@ fn getNumberOrFail() !i32 {
       {#code_begin|test_err|test_comptime_invalid_error_code|integer value '11' represents no error#}
 comptime {
     const err = error.AnError;
-    const number = @errorToInt(err) + 10;
-    const invalid_err = @intToError(number);
+    const number = @intFromError(err) + 10;
+    const invalid_err = @errorFromInt(number);
     _ = invalid_err;
 }
       {#code_end#}
@@ -10176,8 +10176,8 @@ const std = @import("std");
 
 pub fn main() void {
     var err = error.AnError;
-    var number = @errorToInt(err) + 500;
-    var invalid_err = @intToError(number);
+    var number = @intFromError(err) + 500;
+    var invalid_err = @errorFromInt(number);
     std.debug.print("value: {}\n", .{invalid_err});
 }
       {#code_end#}
@@ -10192,7 +10192,7 @@ const Foo = enum {
 };
 comptime {
     const a: u2 = 3;
-    const b = @intToEnum(Foo, a);
+    const b = @enumFromInt(Foo, a);
     _ = b;
 }
       {#code_end#}
@@ -10208,7 +10208,7 @@ const Foo = enum {
 
 pub fn main() void {
     var a: u2 = 3;
-    var b = @intToEnum(Foo, a);
+    var b = @enumFromInt(Foo, a);
     std.debug.print("value: {s}\n", .{@tagName(b)});
 }
       {#code_end#}
@@ -10255,7 +10255,7 @@ fn foo(set1: Set1) void {
       <p>At compile-time:</p>
       {#code_begin|test_err|test_comptime_incorrect_pointer_alignment|pointer address 0x1 is not aligned to 4 bytes#}
 comptime {
-    const ptr = @intToPtr(*align(1) i32, 0x1);
+    const ptr = @ptrFromInt(*align(1) i32, 0x1);
     const aligned = @alignCast(4, ptr);
     _ = aligned;
 }
lib/compiler_rt/aarch64_outline_atomics.zig
@@ -8,7 +8,7 @@ const always_has_lse = std.Target.aarch64.featureSetHas(builtin.cpu.features, .l
 /// It is intentionally not exported in order to make the machine code that
 /// uses it a statically predicted direct branch rather than using the PLT,
 /// which ARM is concerned would have too much overhead.
-var __aarch64_have_lse_atomics: u8 = @boolToInt(always_has_lse);
+var __aarch64_have_lse_atomics: u8 = @intFromBool(always_has_lse);
 
 fn __aarch64_cas1_relax() align(16) callconv(.Naked) void {
     @setRuntimeSafety(false);
lib/compiler_rt/atomics.zig
@@ -119,21 +119,21 @@ var spinlocks: SpinlockTable = SpinlockTable{};
 
 fn __atomic_load(size: u32, src: [*]u8, dest: [*]u8, model: i32) callconv(.C) void {
     _ = model;
-    var sl = spinlocks.get(@ptrToInt(src));
+    var sl = spinlocks.get(@intFromPtr(src));
     defer sl.release();
     @memcpy(dest[0..size], src);
 }
 
 fn __atomic_store(size: u32, dest: [*]u8, src: [*]u8, model: i32) callconv(.C) void {
     _ = model;
-    var sl = spinlocks.get(@ptrToInt(dest));
+    var sl = spinlocks.get(@intFromPtr(dest));
     defer sl.release();
     @memcpy(dest[0..size], src);
 }
 
 fn __atomic_exchange(size: u32, ptr: [*]u8, val: [*]u8, old: [*]u8, model: i32) callconv(.C) void {
     _ = model;
-    var sl = spinlocks.get(@ptrToInt(ptr));
+    var sl = spinlocks.get(@intFromPtr(ptr));
     defer sl.release();
     @memcpy(old[0..size], ptr);
     @memcpy(ptr[0..size], val);
@@ -149,7 +149,7 @@ fn __atomic_compare_exchange(
 ) callconv(.C) i32 {
     _ = success;
     _ = failure;
-    var sl = spinlocks.get(@ptrToInt(ptr));
+    var sl = spinlocks.get(@intFromPtr(ptr));
     defer sl.release();
     for (ptr[0..size], 0..) |b, i| {
         if (expected[i] != b) break;
@@ -168,7 +168,7 @@ fn __atomic_compare_exchange(
 inline fn atomic_load_N(comptime T: type, src: *T, model: i32) T {
     _ = model;
     if (@sizeOf(T) > largest_atomic_size) {
-        var sl = spinlocks.get(@ptrToInt(src));
+        var sl = spinlocks.get(@intFromPtr(src));
         defer sl.release();
         return src.*;
     } else {
@@ -199,7 +199,7 @@ fn __atomic_load_16(src: *u128, model: i32) callconv(.C) u128 {
 inline fn atomic_store_N(comptime T: type, dst: *T, value: T, model: i32) void {
     _ = model;
     if (@sizeOf(T) > largest_atomic_size) {
-        var sl = spinlocks.get(@ptrToInt(dst));
+        var sl = spinlocks.get(@intFromPtr(dst));
         defer sl.release();
         dst.* = value;
     } else {
@@ -230,9 +230,9 @@ fn __atomic_store_16(dst: *u128, value: u128, model: i32) callconv(.C) void {
 fn wideUpdate(comptime T: type, ptr: *T, val: T, update: anytype) T {
     const WideAtomic = std.meta.Int(.unsigned, smallest_atomic_fetch_exch_size * 8);
 
-    const addr = @ptrToInt(ptr);
+    const addr = @intFromPtr(ptr);
     const wide_addr = addr & ~(@as(T, smallest_atomic_fetch_exch_size) - 1);
-    const wide_ptr = @alignCast(smallest_atomic_fetch_exch_size, @intToPtr(*WideAtomic, wide_addr));
+    const wide_ptr = @alignCast(smallest_atomic_fetch_exch_size, @ptrFromInt(*WideAtomic, wide_addr));
 
     const inner_offset = addr & (@as(T, smallest_atomic_fetch_exch_size) - 1);
     const inner_shift = @intCast(std.math.Log2Int(T), inner_offset * 8);
@@ -255,7 +255,7 @@ fn wideUpdate(comptime T: type, ptr: *T, val: T, update: anytype) T {
 inline fn atomic_exchange_N(comptime T: type, ptr: *T, val: T, model: i32) T {
     _ = model;
     if (@sizeOf(T) > largest_atomic_size) {
-        var sl = spinlocks.get(@ptrToInt(ptr));
+        var sl = spinlocks.get(@intFromPtr(ptr));
         defer sl.release();
         const value = ptr.*;
         ptr.* = val;
@@ -305,7 +305,7 @@ inline fn atomic_compare_exchange_N(
     _ = success;
     _ = failure;
     if (@sizeOf(T) > largest_atomic_size) {
-        var sl = spinlocks.get(@ptrToInt(ptr));
+        var sl = spinlocks.get(@intFromPtr(ptr));
         defer sl.release();
         const value = ptr.*;
         if (value == expected.*) {
@@ -362,7 +362,7 @@ inline fn fetch_op_N(comptime T: type, comptime op: std.builtin.AtomicRmwOp, ptr
     };
 
     if (@sizeOf(T) > largest_atomic_size) {
-        var sl = spinlocks.get(@ptrToInt(ptr));
+        var sl = spinlocks.get(@intFromPtr(ptr));
         defer sl.release();
 
         const value = ptr.*;
lib/compiler_rt/clear_cache.zig
@@ -63,7 +63,7 @@ fn clear_cache(start: usize, end: usize) callconv(.C) void {
                     .addr = start,
                     .len = end - start,
                 };
-                const result = sysarch(ARM_SYNC_ICACHE, @ptrToInt(&arg));
+                const result = sysarch(ARM_SYNC_ICACHE, @intFromPtr(&arg));
                 std.debug.assert(result == 0);
                 exportIt();
             },
lib/compiler_rt/cmpdf2.zig
@@ -26,7 +26,7 @@ comptime {
 /// Note that this matches the definition of `__ledf2`, `__eqdf2`, `__nedf2`, `__cmpdf2`,
 /// and `__ltdf2`.
 fn __cmpdf2(a: f64, b: f64) callconv(.C) i32 {
-    return @enumToInt(comparef.cmpf2(f64, comparef.LE, a, b));
+    return @intFromEnum(comparef.cmpf2(f64, comparef.LE, a, b));
 }
 
 /// "These functions return a value less than or equal to zero if neither argument is NaN,
@@ -56,13 +56,13 @@ pub fn __ltdf2(a: f64, b: f64) callconv(.C) i32 {
 }
 
 fn __aeabi_dcmpeq(a: f64, b: f64) callconv(.AAPCS) i32 {
-    return @boolToInt(comparef.cmpf2(f64, comparef.LE, a, b) == .Equal);
+    return @intFromBool(comparef.cmpf2(f64, comparef.LE, a, b) == .Equal);
 }
 
 fn __aeabi_dcmplt(a: f64, b: f64) callconv(.AAPCS) i32 {
-    return @boolToInt(comparef.cmpf2(f64, comparef.LE, a, b) == .Less);
+    return @intFromBool(comparef.cmpf2(f64, comparef.LE, a, b) == .Less);
 }
 
 fn __aeabi_dcmple(a: f64, b: f64) callconv(.AAPCS) i32 {
-    return @boolToInt(comparef.cmpf2(f64, comparef.LE, a, b) != .Greater);
+    return @intFromBool(comparef.cmpf2(f64, comparef.LE, a, b) != .Greater);
 }
lib/compiler_rt/cmphf2.zig
@@ -20,7 +20,7 @@ comptime {
 /// Note that this matches the definition of `__lehf2`, `__eqhf2`, `__nehf2`, `__cmphf2`,
 /// and `__lthf2`.
 fn __cmphf2(a: f16, b: f16) callconv(.C) i32 {
-    return @enumToInt(comparef.cmpf2(f16, comparef.LE, a, b));
+    return @intFromEnum(comparef.cmpf2(f16, comparef.LE, a, b));
 }
 
 /// "These functions return a value less than or equal to zero if neither argument is NaN,
lib/compiler_rt/cmpsf2.zig
@@ -26,7 +26,7 @@ comptime {
 /// Note that this matches the definition of `__lesf2`, `__eqsf2`, `__nesf2`, `__cmpsf2`,
 /// and `__ltsf2`.
 fn __cmpsf2(a: f32, b: f32) callconv(.C) i32 {
-    return @enumToInt(comparef.cmpf2(f32, comparef.LE, a, b));
+    return @intFromEnum(comparef.cmpf2(f32, comparef.LE, a, b));
 }
 
 /// "These functions return a value less than or equal to zero if neither argument is NaN,
@@ -56,13 +56,13 @@ pub fn __ltsf2(a: f32, b: f32) callconv(.C) i32 {
 }
 
 fn __aeabi_fcmpeq(a: f32, b: f32) callconv(.AAPCS) i32 {
-    return @boolToInt(comparef.cmpf2(f32, comparef.LE, a, b) == .Equal);
+    return @intFromBool(comparef.cmpf2(f32, comparef.LE, a, b) == .Equal);
 }
 
 fn __aeabi_fcmplt(a: f32, b: f32) callconv(.AAPCS) i32 {
-    return @boolToInt(comparef.cmpf2(f32, comparef.LE, a, b) == .Less);
+    return @intFromBool(comparef.cmpf2(f32, comparef.LE, a, b) == .Less);
 }
 
 fn __aeabi_fcmple(a: f32, b: f32) callconv(.AAPCS) i32 {
-    return @boolToInt(comparef.cmpf2(f32, comparef.LE, a, b) != .Greater);
+    return @intFromBool(comparef.cmpf2(f32, comparef.LE, a, b) != .Greater);
 }
lib/compiler_rt/cmptf2.zig
@@ -34,7 +34,7 @@ comptime {
 /// Note that this matches the definition of `__letf2`, `__eqtf2`, `__netf2`, `__cmptf2`,
 /// and `__lttf2`.
 fn __cmptf2(a: f128, b: f128) callconv(.C) i32 {
-    return @enumToInt(comparef.cmpf2(f128, comparef.LE, a, b));
+    return @intFromEnum(comparef.cmpf2(f128, comparef.LE, a, b));
 }
 
 /// "These functions return a value less than or equal to zero if neither argument is NaN,
@@ -71,34 +71,34 @@ const SparcFCMP = enum(i32) {
 };
 
 fn _Qp_cmp(a: *const f128, b: *const f128) callconv(.C) i32 {
-    return @enumToInt(comparef.cmpf2(f128, SparcFCMP, a.*, b.*));
+    return @intFromEnum(comparef.cmpf2(f128, SparcFCMP, a.*, b.*));
 }
 
 fn _Qp_feq(a: *const f128, b: *const f128) callconv(.C) bool {
-    return @intToEnum(SparcFCMP, _Qp_cmp(a, b)) == .Equal;
+    return @enumFromInt(SparcFCMP, _Qp_cmp(a, b)) == .Equal;
 }
 
 fn _Qp_fne(a: *const f128, b: *const f128) callconv(.C) bool {
-    return @intToEnum(SparcFCMP, _Qp_cmp(a, b)) != .Equal;
+    return @enumFromInt(SparcFCMP, _Qp_cmp(a, b)) != .Equal;
 }
 
 fn _Qp_flt(a: *const f128, b: *const f128) callconv(.C) bool {
-    return @intToEnum(SparcFCMP, _Qp_cmp(a, b)) == .Less;
+    return @enumFromInt(SparcFCMP, _Qp_cmp(a, b)) == .Less;
 }
 
 fn _Qp_fgt(a: *const f128, b: *const f128) callconv(.C) bool {
-    return @intToEnum(SparcFCMP, _Qp_cmp(a, b)) == .Greater;
+    return @enumFromInt(SparcFCMP, _Qp_cmp(a, b)) == .Greater;
 }
 
 fn _Qp_fge(a: *const f128, b: *const f128) callconv(.C) bool {
-    return switch (@intToEnum(SparcFCMP, _Qp_cmp(a, b))) {
+    return switch (@enumFromInt(SparcFCMP, _Qp_cmp(a, b))) {
         .Equal, .Greater => true,
         .Less, .Unordered => false,
     };
 }
 
 fn _Qp_fle(a: *const f128, b: *const f128) callconv(.C) bool {
-    return switch (@intToEnum(SparcFCMP, _Qp_cmp(a, b))) {
+    return switch (@enumFromInt(SparcFCMP, _Qp_cmp(a, b))) {
         .Equal, .Less => true,
         .Greater, .Unordered => false,
     };
lib/compiler_rt/cmpxf2.zig
@@ -20,7 +20,7 @@ comptime {
 /// Note that this matches the definition of `__lexf2`, `__eqxf2`, `__nexf2`, `__cmpxf2`,
 /// and `__ltxf2`.
 fn __cmpxf2(a: f80, b: f80) callconv(.C) i32 {
-    return @enumToInt(comparef.cmp_f80(comparef.LE, a, b));
+    return @intFromEnum(comparef.cmp_f80(comparef.LE, a, b));
 }
 
 /// "These functions return a value less than or equal to zero if neither argument is NaN,
lib/compiler_rt/comparef.zig
@@ -77,7 +77,7 @@ pub inline fn cmp_f80(comptime RT: type, a: f80, b: f80) RT {
     if ((a_rep.fraction | b_rep.fraction) | ((a_rep.exp | b_rep.exp) & special_exp) == 0)
         return .Equal;
 
-    if (@boolToInt(a_rep.exp == b_rep.exp) & @boolToInt(a_rep.fraction == b_rep.fraction) != 0) {
+    if (@intFromBool(a_rep.exp == b_rep.exp) & @intFromBool(a_rep.fraction == b_rep.fraction) != 0) {
         return .Equal;
     } else if (a_rep.exp & sign_bit != b_rep.exp & sign_bit) {
         // signs are different
@@ -109,7 +109,7 @@ pub inline fn unordcmp(comptime T: type, a: T, b: T) i32 {
     const aAbs: rep_t = @bitCast(rep_t, a) & absMask;
     const bAbs: rep_t = @bitCast(rep_t, b) & absMask;
 
-    return @boolToInt(aAbs > infRep or bAbs > infRep);
+    return @intFromBool(aAbs > infRep or bAbs > infRep);
 }
 
 test {
lib/compiler_rt/divdf3.zig
@@ -199,7 +199,7 @@ inline fn div(a: f64, b: f64) f64 {
     } else if (writtenExponent < 1) {
         if (writtenExponent == 0) {
             // Check whether the rounded result is normal.
-            const round = @boolToInt((residual << 1) > bSignificand);
+            const round = @intFromBool((residual << 1) > bSignificand);
             // Clear the implicit bit.
             var absResult = quotient & significandMask;
             // Round.
@@ -213,7 +213,7 @@ inline fn div(a: f64, b: f64) f64 {
         // code to round them correctly.
         return @bitCast(f64, quotientSign);
     } else {
-        const round = @boolToInt((residual << 1) > bSignificand);
+        const round = @intFromBool((residual << 1) > bSignificand);
         // Clear the implicit bit
         var absResult = quotient & significandMask;
         // Insert the exponent
lib/compiler_rt/divsf3.zig
@@ -179,7 +179,7 @@ inline fn div(a: f32, b: f32) f32 {
     } else if (writtenExponent < 1) {
         if (writtenExponent == 0) {
             // Check whether the rounded result is normal.
-            const round = @boolToInt((residual << 1) > bSignificand);
+            const round = @intFromBool((residual << 1) > bSignificand);
             // Clear the implicit bit.
             var absResult = quotient & significandMask;
             // Round.
@@ -193,7 +193,7 @@ inline fn div(a: f32, b: f32) f32 {
         // code to round them correctly.
         return @bitCast(f32, quotientSign);
     } else {
-        const round = @boolToInt((residual << 1) > bSignificand);
+        const round = @intFromBool((residual << 1) > bSignificand);
         // Clear the implicit bit
         var absResult = quotient & significandMask;
         // Insert the exponent
lib/compiler_rt/divtf3.zig
@@ -214,7 +214,7 @@ inline fn div(a: f128, b: f128) f128 {
     } else if (writtenExponent < 1) {
         if (writtenExponent == 0) {
             // Check whether the rounded result is normal.
-            const round = @boolToInt((residual << 1) > bSignificand);
+            const round = @intFromBool((residual << 1) > bSignificand);
             // Clear the implicit bit.
             var absResult = quotient & significandMask;
             // Round.
@@ -228,7 +228,7 @@ inline fn div(a: f128, b: f128) f128 {
         // code to round them correctly.
         return @bitCast(f128, quotientSign);
     } else {
-        const round = @boolToInt((residual << 1) >= bSignificand);
+        const round = @intFromBool((residual << 1) >= bSignificand);
         // Clear the implicit bit
         var absResult = quotient & significandMask;
         // Insert the exponent
lib/compiler_rt/divxf3.zig
@@ -195,7 +195,7 @@ pub fn __divxf3(a: f80, b: f80) callconv(.C) f80 {
         // code to round them correctly.
         return @bitCast(T, quotientSign);
     } else {
-        const round = @boolToInt(residual > (bSignificand >> 1));
+        const round = @intFromBool(residual > (bSignificand >> 1));
         // Insert the exponent
         var absResult = quotient | (@intCast(Z, writtenExponent) << significandBits);
         // Round
lib/compiler_rt/exp.zig
@@ -74,12 +74,12 @@ pub fn expf(x_: f32) callconv(.C) f32 {
     if (hx > 0x3EB17218) {
         // |x| > 1.5 * ln2
         if (hx > 0x3F851592) {
-            k = @floatToInt(i32, invln2 * x + half[@intCast(usize, sign)]);
+            k = @intFromFloat(i32, invln2 * x + half[@intCast(usize, sign)]);
         } else {
             k = 1 - sign - sign;
         }
 
-        const fk = @intToFloat(f32, k);
+        const fk = @floatFromInt(f32, k);
         hi = x - fk * ln2hi;
         lo = fk * ln2lo;
         x = hi - lo;
@@ -157,12 +157,12 @@ pub fn exp(x_: f64) callconv(.C) f64 {
     if (hx > 0x3FD62E42) {
         // |x| >= 1.5 * ln2
         if (hx > 0x3FF0A2B2) {
-            k = @floatToInt(i32, invln2 * x + half[@intCast(usize, sign)]);
+            k = @intFromFloat(i32, invln2 * x + half[@intCast(usize, sign)]);
         } else {
             k = 1 - sign - sign;
         }
 
-        const dk = @intToFloat(f64, k);
+        const dk = @floatFromInt(f64, k);
         hi = x - dk * ln2hi;
         lo = dk * ln2lo;
         x = hi - lo;
lib/compiler_rt/exp2.zig
@@ -32,7 +32,7 @@ pub fn __exp2h(x: f16) callconv(.C) f16 {
 
 pub fn exp2f(x: f32) callconv(.C) f32 {
     const tblsiz = @intCast(u32, exp2ft.len);
-    const redux: f32 = 0x1.8p23 / @intToFloat(f32, tblsiz);
+    const redux: f32 = 0x1.8p23 / @floatFromInt(f32, tblsiz);
     const P1: f32 = 0x1.62e430p-1;
     const P2: f32 = 0x1.ebfbe0p-3;
     const P3: f32 = 0x1.c6b348p-5;
@@ -89,7 +89,7 @@ pub fn exp2f(x: f32) callconv(.C) f32 {
 
 pub fn exp2(x: f64) callconv(.C) f64 {
     const tblsiz: u32 = @intCast(u32, exp2dt.len / 2);
-    const redux: f64 = 0x1.8p52 / @intToFloat(f64, tblsiz);
+    const redux: f64 = 0x1.8p52 / @floatFromInt(f64, tblsiz);
     const P1: f64 = 0x1.62e42fefa39efp-1;
     const P2: f64 = 0x1.ebfbdff82c575p-3;
     const P3: f64 = 0x1.c6b08d704a0a6p-5;
lib/compiler_rt/fixdfdi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __fixdfdi(a: f64) callconv(.C) i64 {
-    return floatToInt(i64, a);
+    return intFromFloat(i64, a);
 }
 
 fn __aeabi_d2lz(a: f64) callconv(.AAPCS) i64 {
-    return floatToInt(i64, a);
+    return intFromFloat(i64, a);
 }
lib/compiler_rt/fixdfsi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __fixdfsi(a: f64) callconv(.C) i32 {
-    return floatToInt(i32, a);
+    return intFromFloat(i32, a);
 }
 
 fn __aeabi_d2iz(a: f64) callconv(.AAPCS) i32 {
-    return floatToInt(i32, a);
+    return intFromFloat(i32, a);
 }
lib/compiler_rt/fixdfti.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,11 +13,11 @@ comptime {
 }
 
 pub fn __fixdfti(a: f64) callconv(.C) i128 {
-    return floatToInt(i128, a);
+    return intFromFloat(i128, a);
 }
 
 const v2u64 = @Vector(2, u64);
 
 fn __fixdfti_windows_x86_64(a: f64) callconv(.C) v2u64 {
-    return @bitCast(v2u64, floatToInt(i128, a));
+    return @bitCast(v2u64, intFromFloat(i128, a));
 }
lib/compiler_rt/fixhfdi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __fixhfdi(a: f16) callconv(.C) i64 {
-    return floatToInt(i64, a);
+    return intFromFloat(i64, a);
 }
lib/compiler_rt/fixhfsi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __fixhfsi(a: f16) callconv(.C) i32 {
-    return floatToInt(i32, a);
+    return intFromFloat(i32, a);
 }
lib/compiler_rt/fixhfti.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,11 +13,11 @@ comptime {
 }
 
 pub fn __fixhfti(a: f16) callconv(.C) i128 {
-    return floatToInt(i128, a);
+    return intFromFloat(i128, a);
 }
 
 const v2u64 = @Vector(2, u64);
 
 fn __fixhfti_windows_x86_64(a: f16) callconv(.C) v2u64 {
-    return @bitCast(v2u64, floatToInt(i128, a));
+    return @bitCast(v2u64, intFromFloat(i128, a));
 }
lib/compiler_rt/fixsfdi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __fixsfdi(a: f32) callconv(.C) i64 {
-    return floatToInt(i64, a);
+    return intFromFloat(i64, a);
 }
 
 fn __aeabi_f2lz(a: f32) callconv(.AAPCS) i64 {
-    return floatToInt(i64, a);
+    return intFromFloat(i64, a);
 }
lib/compiler_rt/fixsfsi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __fixsfsi(a: f32) callconv(.C) i32 {
-    return floatToInt(i32, a);
+    return intFromFloat(i32, a);
 }
 
 fn __aeabi_f2iz(a: f32) callconv(.AAPCS) i32 {
-    return floatToInt(i32, a);
+    return intFromFloat(i32, a);
 }
lib/compiler_rt/fixsfti.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,11 +13,11 @@ comptime {
 }
 
 pub fn __fixsfti(a: f32) callconv(.C) i128 {
-    return floatToInt(i128, a);
+    return intFromFloat(i128, a);
 }
 
 const v2u64 = @Vector(2, u64);
 
 fn __fixsfti_windows_x86_64(a: f32) callconv(.C) v2u64 {
-    return @bitCast(v2u64, floatToInt(i128, a));
+    return @bitCast(v2u64, intFromFloat(i128, a));
 }
lib/compiler_rt/fixtfdi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __fixtfdi(a: f128) callconv(.C) i64 {
-    return floatToInt(i64, a);
+    return intFromFloat(i64, a);
 }
 
 fn _Qp_qtox(a: *const f128) callconv(.C) i64 {
-    return floatToInt(i64, a.*);
+    return intFromFloat(i64, a.*);
 }
lib/compiler_rt/fixtfsi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __fixtfsi(a: f128) callconv(.C) i32 {
-    return floatToInt(i32, a);
+    return intFromFloat(i32, a);
 }
 
 fn _Qp_qtoi(a: *const f128) callconv(.C) i32 {
-    return floatToInt(i32, a.*);
+    return intFromFloat(i32, a.*);
 }
lib/compiler_rt/fixtfti.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -15,11 +15,11 @@ comptime {
 }
 
 pub fn __fixtfti(a: f128) callconv(.C) i128 {
-    return floatToInt(i128, a);
+    return intFromFloat(i128, a);
 }
 
 const v2u64 = @Vector(2, u64);
 
 fn __fixtfti_windows_x86_64(a: f128) callconv(.C) v2u64 {
-    return @bitCast(v2u64, floatToInt(i128, a));
+    return @bitCast(v2u64, intFromFloat(i128, a));
 }
lib/compiler_rt/fixunsdfdi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __fixunsdfdi(a: f64) callconv(.C) u64 {
-    return floatToInt(u64, a);
+    return intFromFloat(u64, a);
 }
 
 fn __aeabi_d2ulz(a: f64) callconv(.AAPCS) u64 {
-    return floatToInt(u64, a);
+    return intFromFloat(u64, a);
 }
lib/compiler_rt/fixunsdfsi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __fixunsdfsi(a: f64) callconv(.C) u32 {
-    return floatToInt(u32, a);
+    return intFromFloat(u32, a);
 }
 
 fn __aeabi_d2uiz(a: f64) callconv(.AAPCS) u32 {
-    return floatToInt(u32, a);
+    return intFromFloat(u32, a);
 }
lib/compiler_rt/fixunsdfti.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,11 +13,11 @@ comptime {
 }
 
 pub fn __fixunsdfti(a: f64) callconv(.C) u128 {
-    return floatToInt(u128, a);
+    return intFromFloat(u128, a);
 }
 
 const v2u64 = @Vector(2, u64);
 
 fn __fixunsdfti_windows_x86_64(a: f64) callconv(.C) v2u64 {
-    return @bitCast(v2u64, floatToInt(u128, a));
+    return @bitCast(v2u64, intFromFloat(u128, a));
 }
lib/compiler_rt/fixunshfdi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __fixunshfdi(a: f16) callconv(.C) u64 {
-    return floatToInt(u64, a);
+    return intFromFloat(u64, a);
 }
lib/compiler_rt/fixunshfsi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __fixunshfsi(a: f16) callconv(.C) u32 {
-    return floatToInt(u32, a);
+    return intFromFloat(u32, a);
 }
lib/compiler_rt/fixunshfti.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,11 +13,11 @@ comptime {
 }
 
 pub fn __fixunshfti(a: f16) callconv(.C) u128 {
-    return floatToInt(u128, a);
+    return intFromFloat(u128, a);
 }
 
 const v2u64 = @Vector(2, u64);
 
 fn __fixunshfti_windows_x86_64(a: f16) callconv(.C) v2u64 {
-    return @bitCast(v2u64, floatToInt(u128, a));
+    return @bitCast(v2u64, intFromFloat(u128, a));
 }
lib/compiler_rt/fixunssfdi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __fixunssfdi(a: f32) callconv(.C) u64 {
-    return floatToInt(u64, a);
+    return intFromFloat(u64, a);
 }
 
 fn __aeabi_f2ulz(a: f32) callconv(.AAPCS) u64 {
-    return floatToInt(u64, a);
+    return intFromFloat(u64, a);
 }
lib/compiler_rt/fixunssfsi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __fixunssfsi(a: f32) callconv(.C) u32 {
-    return floatToInt(u32, a);
+    return intFromFloat(u32, a);
 }
 
 fn __aeabi_f2uiz(a: f32) callconv(.AAPCS) u32 {
-    return floatToInt(u32, a);
+    return intFromFloat(u32, a);
 }
lib/compiler_rt/fixunssfti.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,11 +13,11 @@ comptime {
 }
 
 pub fn __fixunssfti(a: f32) callconv(.C) u128 {
-    return floatToInt(u128, a);
+    return intFromFloat(u128, a);
 }
 
 const v2u64 = @Vector(2, u64);
 
 fn __fixunssfti_windows_x86_64(a: f32) callconv(.C) v2u64 {
-    return @bitCast(v2u64, floatToInt(u128, a));
+    return @bitCast(v2u64, intFromFloat(u128, a));
 }
lib/compiler_rt/fixunstfdi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __fixunstfdi(a: f128) callconv(.C) u64 {
-    return floatToInt(u64, a);
+    return intFromFloat(u64, a);
 }
 
 fn _Qp_qtoux(a: *const f128) callconv(.C) u64 {
-    return floatToInt(u64, a.*);
+    return intFromFloat(u64, a.*);
 }
lib/compiler_rt/fixunstfsi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __fixunstfsi(a: f128) callconv(.C) u32 {
-    return floatToInt(u32, a);
+    return intFromFloat(u32, a);
 }
 
 fn _Qp_qtoui(a: *const f128) callconv(.C) u32 {
-    return floatToInt(u32, a.*);
+    return intFromFloat(u32, a.*);
 }
lib/compiler_rt/fixunstfti.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -15,11 +15,11 @@ comptime {
 }
 
 pub fn __fixunstfti(a: f128) callconv(.C) u128 {
-    return floatToInt(u128, a);
+    return intFromFloat(u128, a);
 }
 
 const v2u64 = @Vector(2, u64);
 
 fn __fixunstfti_windows_x86_64(a: f128) callconv(.C) v2u64 {
-    return @bitCast(v2u64, floatToInt(u128, a));
+    return @bitCast(v2u64, intFromFloat(u128, a));
 }
lib/compiler_rt/fixunsxfdi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __fixunsxfdi(a: f80) callconv(.C) u64 {
-    return floatToInt(u64, a);
+    return intFromFloat(u64, a);
 }
lib/compiler_rt/fixunsxfsi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __fixunsxfsi(a: f80) callconv(.C) u32 {
-    return floatToInt(u32, a);
+    return intFromFloat(u32, a);
 }
lib/compiler_rt/fixunsxfti.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,11 +13,11 @@ comptime {
 }
 
 pub fn __fixunsxfti(a: f80) callconv(.C) u128 {
-    return floatToInt(u128, a);
+    return intFromFloat(u128, a);
 }
 
 const v2u64 = @Vector(2, u64);
 
 fn __fixunsxfti_windows_x86_64(a: f80) callconv(.C) v2u64 {
-    return @bitCast(v2u64, floatToInt(u128, a));
+    return @bitCast(v2u64, intFromFloat(u128, a));
 }
lib/compiler_rt/fixxfdi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __fixxfdi(a: f80) callconv(.C) i64 {
-    return floatToInt(i64, a);
+    return intFromFloat(i64, a);
 }
lib/compiler_rt/fixxfsi.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __fixxfsi(a: f80) callconv(.C) i32 {
-    return floatToInt(i32, a);
+    return intFromFloat(i32, a);
 }
lib/compiler_rt/fixxfti.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const floatToInt = @import("./float_to_int.zig").floatToInt;
+const intFromFloat = @import("./int_from_float.zig").intFromFloat;
 
 pub const panic = common.panic;
 
@@ -13,11 +13,11 @@ comptime {
 }
 
 pub fn __fixxfti(a: f80) callconv(.C) i128 {
-    return floatToInt(i128, a);
+    return intFromFloat(i128, a);
 }
 
 const v2u64 = @Vector(2, u64);
 
 fn __fixxfti_windows_x86_64(a: f80) callconv(.C) v2u64 {
-    return @bitCast(v2u64, floatToInt(i128, a));
+    return @bitCast(v2u64, intFromFloat(i128, a));
 }
lib/compiler_rt/int_to_float.zig โ†’ lib/compiler_rt/float_from_int.zig
@@ -1,7 +1,7 @@
 const Int = @import("std").meta.Int;
 const math = @import("std").math;
 
-pub fn intToFloat(comptime T: type, x: anytype) T {
+pub fn floatFromInt(comptime T: type, x: anytype) T {
     if (x == 0) return 0;
 
     // Various constants whose values follow from the type parameters.
@@ -38,7 +38,7 @@ pub fn intToFloat(comptime T: type, x: anytype) T {
         result = @intCast(uT, (abs_val >> (shift_amt - 1))) ^ (implicit_bit << 1);
 
         // Round result, including round-to-even for exact ties
-        result = ((result + 1) >> 1) & ~@as(uT, @boolToInt(exact_tie));
+        result = ((result + 1) >> 1) & ~@as(uT, @intFromBool(exact_tie));
     }
 
     // Compute exponent
@@ -54,5 +54,5 @@ pub fn intToFloat(comptime T: type, x: anytype) T {
 }
 
 test {
-    _ = @import("int_to_float_test.zig");
+    _ = @import("float_from_int_test.zig");
 }
lib/compiler_rt/int_to_float_test.zig โ†’ lib/compiler_rt/float_from_int_test.zig
@@ -812,25 +812,25 @@ test "conversion to f32" {
 test "conversion to f80" {
     if (std.debug.runtime_safety) return error.SkipZigTest;
 
-    const intToFloat = @import("./int_to_float.zig").intToFloat;
-
-    try testing.expect(intToFloat(f80, @as(i80, -12)) == -12);
-    try testing.expect(@floatToInt(u80, intToFloat(f80, @as(u64, math.maxInt(u64)) + 0)) == math.maxInt(u64) + 0);
-    try testing.expect(@floatToInt(u80, intToFloat(f80, @as(u80, math.maxInt(u64)) + 1)) == math.maxInt(u64) + 1);
-
-    try testing.expect(intToFloat(f80, @as(u32, 0)) == 0.0);
-    try testing.expect(intToFloat(f80, @as(u32, 1)) == 1.0);
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u32, math.maxInt(u24)) + 0)) == math.maxInt(u24));
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u64)) + 0)) == math.maxInt(u64));
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u64)) + 1)) == math.maxInt(u64) + 1); // Exact
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u64)) + 2)) == math.maxInt(u64) + 1); // Rounds down
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u64)) + 3)) == math.maxInt(u64) + 3); // Tie - Exact
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u64)) + 4)) == math.maxInt(u64) + 5); // Rounds up
-
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u65)) + 0)) == math.maxInt(u65) + 1); // Rounds up
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u65)) + 1)) == math.maxInt(u65) + 1); // Exact
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u65)) + 2)) == math.maxInt(u65) + 1); // Rounds down
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u65)) + 3)) == math.maxInt(u65) + 1); // Tie - Rounds down
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u65)) + 4)) == math.maxInt(u65) + 5); // Rounds up
-    try testing.expect(@floatToInt(u128, intToFloat(f80, @as(u80, math.maxInt(u65)) + 5)) == math.maxInt(u65) + 5); // Exact
+    const floatFromInt = @import("./float_from_int.zig").floatFromInt;
+
+    try testing.expect(floatFromInt(f80, @as(i80, -12)) == -12);
+    try testing.expect(@intFromFloat(u80, floatFromInt(f80, @as(u64, math.maxInt(u64)) + 0)) == math.maxInt(u64) + 0);
+    try testing.expect(@intFromFloat(u80, floatFromInt(f80, @as(u80, math.maxInt(u64)) + 1)) == math.maxInt(u64) + 1);
+
+    try testing.expect(floatFromInt(f80, @as(u32, 0)) == 0.0);
+    try testing.expect(floatFromInt(f80, @as(u32, 1)) == 1.0);
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u32, math.maxInt(u24)) + 0)) == math.maxInt(u24));
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u64)) + 0)) == math.maxInt(u64));
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u64)) + 1)) == math.maxInt(u64) + 1); // Exact
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u64)) + 2)) == math.maxInt(u64) + 1); // Rounds down
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u64)) + 3)) == math.maxInt(u64) + 3); // Tie - Exact
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u64)) + 4)) == math.maxInt(u64) + 5); // Rounds up
+
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u65)) + 0)) == math.maxInt(u65) + 1); // Rounds up
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u65)) + 1)) == math.maxInt(u65) + 1); // Exact
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u65)) + 2)) == math.maxInt(u65) + 1); // Rounds down
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u65)) + 3)) == math.maxInt(u65) + 1); // Tie - Rounds down
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u65)) + 4)) == math.maxInt(u65) + 5); // Rounds up
+    try testing.expect(@intFromFloat(u128, floatFromInt(f80, @as(u80, math.maxInt(u65)) + 5)) == math.maxInt(u65) + 5); // Exact
 }
lib/compiler_rt/floatdidf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __floatdidf(a: i64) callconv(.C) f64 {
-    return intToFloat(f64, a);
+    return floatFromInt(f64, a);
 }
 
 fn __aeabi_l2d(a: i64) callconv(.AAPCS) f64 {
-    return intToFloat(f64, a);
+    return floatFromInt(f64, a);
 }
lib/compiler_rt/floatdihf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __floatdihf(a: i64) callconv(.C) f16 {
-    return intToFloat(f16, a);
+    return floatFromInt(f16, a);
 }
lib/compiler_rt/floatdisf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __floatdisf(a: i64) callconv(.C) f32 {
-    return intToFloat(f32, a);
+    return floatFromInt(f32, a);
 }
 
 fn __aeabi_l2f(a: i64) callconv(.AAPCS) f32 {
-    return intToFloat(f32, a);
+    return floatFromInt(f32, a);
 }
lib/compiler_rt/floatditf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floatditf(a: i64) callconv(.C) f128 {
-    return intToFloat(f128, a);
+    return floatFromInt(f128, a);
 }
 
 fn _Qp_xtoq(c: *f128, a: i64) callconv(.C) void {
-    c.* = intToFloat(f128, a);
+    c.* = floatFromInt(f128, a);
 }
lib/compiler_rt/floatdixf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __floatdixf(a: i64) callconv(.C) f80 {
-    return intToFloat(f80, a);
+    return floatFromInt(f80, a);
 }
lib/compiler_rt/floatsidf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __floatsidf(a: i32) callconv(.C) f64 {
-    return intToFloat(f64, a);
+    return floatFromInt(f64, a);
 }
 
 fn __aeabi_i2d(a: i32) callconv(.AAPCS) f64 {
-    return intToFloat(f64, a);
+    return floatFromInt(f64, a);
 }
lib/compiler_rt/floatsihf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __floatsihf(a: i32) callconv(.C) f16 {
-    return intToFloat(f16, a);
+    return floatFromInt(f16, a);
 }
lib/compiler_rt/floatsisf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __floatsisf(a: i32) callconv(.C) f32 {
-    return intToFloat(f32, a);
+    return floatFromInt(f32, a);
 }
 
 fn __aeabi_i2f(a: i32) callconv(.AAPCS) f32 {
-    return intToFloat(f32, a);
+    return floatFromInt(f32, a);
 }
lib/compiler_rt/floatsitf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floatsitf(a: i32) callconv(.C) f128 {
-    return intToFloat(f128, a);
+    return floatFromInt(f128, a);
 }
 
 fn _Qp_itoq(c: *f128, a: i32) callconv(.C) void {
-    c.* = intToFloat(f128, a);
+    c.* = floatFromInt(f128, a);
 }
lib/compiler_rt/floatsixf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __floatsixf(a: i32) callconv(.C) f80 {
-    return intToFloat(f80, a);
+    return floatFromInt(f80, a);
 }
lib/compiler_rt/floattidf.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floattidf(a: i128) callconv(.C) f64 {
-    return intToFloat(f64, a);
+    return floatFromInt(f64, a);
 }
 
 fn __floattidf_windows_x86_64(a: @Vector(2, u64)) callconv(.C) f64 {
-    return intToFloat(f64, @bitCast(i128, a));
+    return floatFromInt(f64, @bitCast(i128, a));
 }
lib/compiler_rt/floattihf.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floattihf(a: i128) callconv(.C) f16 {
-    return intToFloat(f16, a);
+    return floatFromInt(f16, a);
 }
 
 fn __floattihf_windows_x86_64(a: @Vector(2, u64)) callconv(.C) f16 {
-    return intToFloat(f16, @bitCast(i128, a));
+    return floatFromInt(f16, @bitCast(i128, a));
 }
lib/compiler_rt/floattisf.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floattisf(a: i128) callconv(.C) f32 {
-    return intToFloat(f32, a);
+    return floatFromInt(f32, a);
 }
 
 fn __floattisf_windows_x86_64(a: @Vector(2, u64)) callconv(.C) f32 {
-    return intToFloat(f32, @bitCast(i128, a));
+    return floatFromInt(f32, @bitCast(i128, a));
 }
lib/compiler_rt/floattitf.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -15,9 +15,9 @@ comptime {
 }
 
 pub fn __floattitf(a: i128) callconv(.C) f128 {
-    return intToFloat(f128, a);
+    return floatFromInt(f128, a);
 }
 
 fn __floattitf_windows_x86_64(a: @Vector(2, u64)) callconv(.C) f128 {
-    return intToFloat(f128, @bitCast(i128, a));
+    return floatFromInt(f128, @bitCast(i128, a));
 }
lib/compiler_rt/floattixf.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floattixf(a: i128) callconv(.C) f80 {
-    return intToFloat(f80, a);
+    return floatFromInt(f80, a);
 }
 
 fn __floattixf_windows_x86_64(a: @Vector(2, u64)) callconv(.C) f80 {
-    return intToFloat(f80, @bitCast(i128, a));
+    return floatFromInt(f80, @bitCast(i128, a));
 }
lib/compiler_rt/floatundidf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __floatundidf(a: u64) callconv(.C) f64 {
-    return intToFloat(f64, a);
+    return floatFromInt(f64, a);
 }
 
 fn __aeabi_ul2d(a: u64) callconv(.AAPCS) f64 {
-    return intToFloat(f64, a);
+    return floatFromInt(f64, a);
 }
lib/compiler_rt/floatundihf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __floatundihf(a: u64) callconv(.C) f16 {
-    return intToFloat(f16, a);
+    return floatFromInt(f16, a);
 }
lib/compiler_rt/floatundisf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __floatundisf(a: u64) callconv(.C) f32 {
-    return intToFloat(f32, a);
+    return floatFromInt(f32, a);
 }
 
 fn __aeabi_ul2f(a: u64) callconv(.AAPCS) f32 {
-    return intToFloat(f32, a);
+    return floatFromInt(f32, a);
 }
lib/compiler_rt/floatunditf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floatunditf(a: u64) callconv(.C) f128 {
-    return intToFloat(f128, a);
+    return floatFromInt(f128, a);
 }
 
 fn _Qp_uxtoq(c: *f128, a: u64) callconv(.C) void {
-    c.* = intToFloat(f128, a);
+    c.* = floatFromInt(f128, a);
 }
lib/compiler_rt/floatundixf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __floatundixf(a: u64) callconv(.C) f80 {
-    return intToFloat(f80, a);
+    return floatFromInt(f80, a);
 }
lib/compiler_rt/floatunsidf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __floatunsidf(a: u32) callconv(.C) f64 {
-    return intToFloat(f64, a);
+    return floatFromInt(f64, a);
 }
 
 fn __aeabi_ui2d(a: u32) callconv(.AAPCS) f64 {
-    return intToFloat(f64, a);
+    return floatFromInt(f64, a);
 }
lib/compiler_rt/floatunsihf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 pub fn __floatunsihf(a: u32) callconv(.C) f16 {
-    return intToFloat(f16, a);
+    return floatFromInt(f16, a);
 }
lib/compiler_rt/floatunsisf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -12,9 +12,9 @@ comptime {
 }
 
 pub fn __floatunsisf(a: u32) callconv(.C) f32 {
-    return intToFloat(f32, a);
+    return floatFromInt(f32, a);
 }
 
 fn __aeabi_ui2f(a: u32) callconv(.AAPCS) f32 {
-    return intToFloat(f32, a);
+    return floatFromInt(f32, a);
 }
lib/compiler_rt/floatunsitf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floatunsitf(a: u32) callconv(.C) f128 {
-    return intToFloat(f128, a);
+    return floatFromInt(f128, a);
 }
 
 fn _Qp_uitoq(c: *f128, a: u32) callconv(.C) void {
-    c.* = intToFloat(f128, a);
+    c.* = floatFromInt(f128, a);
 }
lib/compiler_rt/floatunsixf.zig
@@ -1,5 +1,5 @@
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -8,5 +8,5 @@ comptime {
 }
 
 fn __floatunsixf(a: u32) callconv(.C) f80 {
-    return intToFloat(f80, a);
+    return floatFromInt(f80, a);
 }
lib/compiler_rt/floatuntidf.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floatuntidf(a: u128) callconv(.C) f64 {
-    return intToFloat(f64, a);
+    return floatFromInt(f64, a);
 }
 
 fn __floatuntidf_windows_x86_64(a: @Vector(2, u64)) callconv(.C) f64 {
-    return intToFloat(f64, @bitCast(u128, a));
+    return floatFromInt(f64, @bitCast(u128, a));
 }
lib/compiler_rt/floatuntihf.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floatuntihf(a: u128) callconv(.C) f16 {
-    return intToFloat(f16, a);
+    return floatFromInt(f16, a);
 }
 
 fn __floatuntihf_windows_x86_64(a: @Vector(2, u64)) callconv(.C) f16 {
-    return intToFloat(f16, @bitCast(u128, a));
+    return floatFromInt(f16, @bitCast(u128, a));
 }
lib/compiler_rt/floatuntisf.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floatuntisf(a: u128) callconv(.C) f32 {
-    return intToFloat(f32, a);
+    return floatFromInt(f32, a);
 }
 
 fn __floatuntisf_windows_x86_64(a: @Vector(2, u64)) callconv(.C) f32 {
-    return intToFloat(f32, @bitCast(u128, a));
+    return floatFromInt(f32, @bitCast(u128, a));
 }
lib/compiler_rt/floatuntitf.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -15,9 +15,9 @@ comptime {
 }
 
 pub fn __floatuntitf(a: u128) callconv(.C) f128 {
-    return intToFloat(f128, a);
+    return floatFromInt(f128, a);
 }
 
 fn __floatuntitf_windows_x86_64(a: @Vector(2, u64)) callconv(.C) f128 {
-    return intToFloat(f128, @bitCast(u128, a));
+    return floatFromInt(f128, @bitCast(u128, a));
 }
lib/compiler_rt/floatuntixf.zig
@@ -1,6 +1,6 @@
 const builtin = @import("builtin");
 const common = @import("./common.zig");
-const intToFloat = @import("./int_to_float.zig").intToFloat;
+const floatFromInt = @import("./float_from_int.zig").floatFromInt;
 
 pub const panic = common.panic;
 
@@ -13,9 +13,9 @@ comptime {
 }
 
 pub fn __floatuntixf(a: u128) callconv(.C) f80 {
-    return intToFloat(f80, a);
+    return floatFromInt(f80, a);
 }
 
 fn __floatuntixf_windows_x86_64(a: @Vector(2, u64)) callconv(.C) f80 {
-    return intToFloat(f80, @bitCast(u128, a));
+    return floatFromInt(f80, @bitCast(u128, a));
 }
lib/compiler_rt/gedf2.zig
@@ -18,7 +18,7 @@ comptime {
 /// "These functions return a value greater than or equal to zero if neither
 /// argument is NaN, and a is greater than or equal to b."
 pub fn __gedf2(a: f64, b: f64) callconv(.C) i32 {
-    return @enumToInt(comparef.cmpf2(f64, comparef.GE, a, b));
+    return @intFromEnum(comparef.cmpf2(f64, comparef.GE, a, b));
 }
 
 /// "These functions return a value greater than zero if neither argument is NaN,
@@ -28,9 +28,9 @@ pub fn __gtdf2(a: f64, b: f64) callconv(.C) i32 {
 }
 
 fn __aeabi_dcmpge(a: f64, b: f64) callconv(.AAPCS) i32 {
-    return @boolToInt(comparef.cmpf2(f64, comparef.GE, a, b) != .Less);
+    return @intFromBool(comparef.cmpf2(f64, comparef.GE, a, b) != .Less);
 }
 
 fn __aeabi_dcmpgt(a: f64, b: f64) callconv(.AAPCS) i32 {
-    return @boolToInt(comparef.cmpf2(f64, comparef.GE, a, b) == .Greater);
+    return @intFromBool(comparef.cmpf2(f64, comparef.GE, a, b) == .Greater);
 }
lib/compiler_rt/gehf2.zig
@@ -13,7 +13,7 @@ comptime {
 /// "These functions return a value greater than or equal to zero if neither
 /// argument is NaN, and a is greater than or equal to b."
 pub fn __gehf2(a: f16, b: f16) callconv(.C) i32 {
-    return @enumToInt(comparef.cmpf2(f16, comparef.GE, a, b));
+    return @intFromEnum(comparef.cmpf2(f16, comparef.GE, a, b));
 }
 
 /// "These functions return a value greater than zero if neither argument is NaN,
lib/compiler_rt/gesf2.zig
@@ -18,7 +18,7 @@ comptime {
 /// "These functions return a value greater than or equal to zero if neither
 /// argument is NaN, and a is greater than or equal to b."
 pub fn __gesf2(a: f32, b: f32) callconv(.C) i32 {
-    return @enumToInt(comparef.cmpf2(f32, comparef.GE, a, b));
+    return @intFromEnum(comparef.cmpf2(f32, comparef.GE, a, b));
 }
 
 /// "These functions return a value greater than zero if neither argument is NaN,
@@ -28,9 +28,9 @@ pub fn __gtsf2(a: f32, b: f32) callconv(.C) i32 {
 }
 
 fn __aeabi_fcmpge(a: f32, b: f32) callconv(.AAPCS) i32 {
-    return @boolToInt(comparef.cmpf2(f32, comparef.GE, a, b) != .Less);
+    return @intFromBool(comparef.cmpf2(f32, comparef.GE, a, b) != .Less);
 }
 
 fn __aeabi_fcmpgt(a: f32, b: f32) callconv(.AAPCS) i32 {
-    return @boolToInt(comparef.cmpf2(f32, comparef.LE, a, b) == .Greater);
+    return @intFromBool(comparef.cmpf2(f32, comparef.LE, a, b) == .Greater);
 }
lib/compiler_rt/getf2.zig
@@ -20,7 +20,7 @@ comptime {
 /// "These functions return a value greater than or equal to zero if neither
 /// argument is NaN, and a is greater than or equal to b."
 fn __getf2(a: f128, b: f128) callconv(.C) i32 {
-    return @enumToInt(comparef.cmpf2(f128, comparef.GE, a, b));
+    return @intFromEnum(comparef.cmpf2(f128, comparef.GE, a, b));
 }
 
 /// "These functions return a value greater than zero if neither argument is NaN,
lib/compiler_rt/gexf2.zig
@@ -9,7 +9,7 @@ comptime {
 }
 
 fn __gexf2(a: f80, b: f80) callconv(.C) i32 {
-    return @enumToInt(comparef.cmp_f80(comparef.GE, a, b));
+    return @intFromEnum(comparef.cmp_f80(comparef.GE, a, b));
 }
 
 fn __gtxf2(a: f80, b: f80) callconv(.C) i32 {
lib/compiler_rt/float_to_int.zig โ†’ lib/compiler_rt/int_from_float.zig
@@ -2,7 +2,7 @@ const Int = @import("std").meta.Int;
 const math = @import("std").math;
 const Log2Int = math.Log2Int;
 
-pub inline fn floatToInt(comptime I: type, a: anytype) I {
+pub inline fn intFromFloat(comptime I: type, a: anytype) I {
     const F = @TypeOf(a);
     const float_bits = @typeInfo(F).Float.bits;
     const int_bits = @typeInfo(I).Int.bits;
@@ -51,5 +51,5 @@ pub inline fn floatToInt(comptime I: type, a: anytype) I {
 }
 
 test {
-    _ = @import("float_to_int_test.zig");
+    _ = @import("int_from_float_test.zig");
 }
lib/compiler_rt/float_to_int_test.zig โ†’ lib/compiler_rt/int_from_float_test.zig
File renamed without changes
lib/compiler_rt/log.zig
@@ -77,7 +77,7 @@ pub fn logf(x_: f32) callconv(.C) f32 {
     const t2 = z * (Lg1 + w * Lg3);
     const R = t2 + t1;
     const hfsq = 0.5 * f * f;
-    const dk = @intToFloat(f32, k);
+    const dk = @floatFromInt(f32, k);
 
     return s * (hfsq + R) + dk * ln2_lo - hfsq + f + dk * ln2_hi;
 }
@@ -133,7 +133,7 @@ pub fn log(x_: f64) callconv(.C) f64 {
     const t1 = w * (Lg2 + w * (Lg4 + w * Lg6));
     const t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));
     const R = t2 + t1;
-    const dk = @intToFloat(f64, k);
+    const dk = @floatFromInt(f64, k);
 
     return s * (hfsq + R) + dk * ln2_lo - hfsq + f + dk * ln2_hi;
 }
lib/compiler_rt/log10.zig
@@ -86,7 +86,7 @@ pub fn log10f(x_: f32) callconv(.C) f32 {
     u &= 0xFFFFF000;
     hi = @bitCast(f32, u);
     const lo = f - hi - hfsq + s * (hfsq + R);
-    const dk = @intToFloat(f32, k);
+    const dk = @floatFromInt(f32, k);
 
     return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;
 }
@@ -154,7 +154,7 @@ pub fn log10(x_: f64) callconv(.C) f64 {
 
     // val_hi + val_lo ~ log10(1 + f) + k * log10(2)
     var val_hi = hi * ivln10hi;
-    const dk = @intToFloat(f64, k);
+    const dk = @floatFromInt(f64, k);
     const y = dk * log10_2hi;
     var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;
 
lib/compiler_rt/log2.zig
@@ -84,7 +84,7 @@ pub fn log2f(x_: f32) callconv(.C) f32 {
     u &= 0xFFFFF000;
     hi = @bitCast(f32, u);
     const lo = f - hi - hfsq + s * (hfsq + R);
-    return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + @intToFloat(f32, k);
+    return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + @floatFromInt(f32, k);
 }
 
 pub fn log2(x_: f64) callconv(.C) f64 {
@@ -150,7 +150,7 @@ pub fn log2(x_: f64) callconv(.C) f64 {
     var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;
 
     // spadd(val_hi, val_lo, y)
-    const y = @intToFloat(f64, k);
+    const y = @floatFromInt(f64, k);
     const ww = y + val_hi;
     val_lo += (y - ww) + val_hi;
     val_hi = ww;
lib/compiler_rt/memmove.zig
@@ -8,7 +8,7 @@ comptime {
 pub fn memmove(dest: ?[*]u8, src: ?[*]const u8, n: usize) callconv(.C) ?[*]u8 {
     @setRuntimeSafety(false);
 
-    if (@ptrToInt(dest) < @ptrToInt(src)) {
+    if (@intFromPtr(dest) < @intFromPtr(src)) {
         var index: usize = 0;
         while (index != n) : (index += 1) {
             dest.?[index] = src.?[index];
lib/compiler_rt/mulf3.zig
@@ -126,7 +126,7 @@ pub inline fn mulf3(comptime T: type, a: T, b: T) T {
         // Otherwise, shift the significand of the result so that the round
         // bit is the high bit of productLo.
         const sticky = wideShrWithTruncation(ZSignificand, &productHi, &productLo, shift);
-        productLo |= @boolToInt(sticky);
+        productLo |= @intFromBool(sticky);
         result = productHi;
 
         // We include the integer bit so that rounding will carry to the exponent,
lib/compiler_rt/os_version_check.zig
@@ -36,7 +36,7 @@ const __isPlatformVersionAtLeast = if (builtin.os.tag.isDarwin()) struct {
             .platform = platform,
             .version = constructVersion(major, minor, subminor),
         };
-        return @boolToInt(_availability_version_check(1, &[_]dyld_build_version_t{build_version}));
+        return @intFromBool(_availability_version_check(1, &[_]dyld_build_version_t{build_version}));
     }
 
     // _availability_version_check darwin API support.
lib/compiler_rt/paritydi2_test.zig
@@ -9,7 +9,7 @@ fn paritydi2Naive(a: i64) i32 {
         has_parity = !has_parity;
         x = x & (x - 1);
     }
-    return @intCast(i32, @boolToInt(has_parity));
+    return @intCast(i32, @intFromBool(has_parity));
 }
 
 fn test__paritydi2(a: i64) !void {
lib/compiler_rt/paritysi2_test.zig
@@ -9,7 +9,7 @@ fn paritysi2Naive(a: i32) i32 {
         has_parity = !has_parity;
         x = x & (x - 1);
     }
-    return @intCast(i32, @boolToInt(has_parity));
+    return @intCast(i32, @intFromBool(has_parity));
 }
 
 fn test__paritysi2(a: i32) !void {
lib/compiler_rt/parityti2_test.zig
@@ -9,7 +9,7 @@ fn parityti2Naive(a: i128) i32 {
         has_parity = !has_parity;
         x = x & (x - 1);
     }
-    return @intCast(i32, @boolToInt(has_parity));
+    return @intCast(i32, @intFromBool(has_parity));
 }
 
 fn test__parityti2(a: i128) !void {
lib/compiler_rt/rem_pio2.zig
@@ -41,7 +41,7 @@ fn medium(ix: u32, x: f64, y: *[2]f64) i32 {
 
     // rint(x/(pi/2))
     @"fn" = x * invpio2 + toint - toint;
-    n = @floatToInt(i32, @"fn");
+    n = @intFromFloat(i32, @"fn");
     r = x - @"fn" * pio2_1;
     w = @"fn" * pio2_1t; // 1st round, good to 85 bits
     // Matters with directed rounding.
@@ -178,7 +178,7 @@ pub fn rem_pio2(x: f64, y: *[2]f64) i32 {
 
     i = 0;
     while (i < 2) : (i += 1) {
-        tx[U(i)] = @intToFloat(f64, @floatToInt(i32, z));
+        tx[U(i)] = @floatFromInt(f64, @intFromFloat(i32, z));
         z = (z - tx[U(i)]) * 0x1p24;
     }
     tx[U(i)] = z;
lib/compiler_rt/rem_pio2_large.zig
@@ -295,7 +295,7 @@ pub fn rem_pio2_large(x: []f64, y: []f64, e0: i32, nx: i32, prec: usize) i32 {
         i += 1;
         j += 1;
     }) {
-        f[U(i)] = if (j < 0) 0.0 else @intToFloat(f64, ipio2[U(j)]);
+        f[U(i)] = if (j < 0) 0.0 else @floatFromInt(f64, ipio2[U(j)]);
     }
 
     // compute q[0],q[1],...q[jk]
@@ -322,16 +322,16 @@ pub fn rem_pio2_large(x: []f64, y: []f64, e0: i32, nx: i32, prec: usize) i32 {
             i += 1;
             j -= 1;
         }) {
-            fw = @intToFloat(f64, @floatToInt(i32, 0x1p-24 * z));
-            iq[U(i)] = @floatToInt(i32, z - 0x1p24 * fw);
+            fw = @floatFromInt(f64, @intFromFloat(i32, 0x1p-24 * z));
+            iq[U(i)] = @intFromFloat(i32, z - 0x1p24 * fw);
             z = q[U(j - 1)] + fw;
         }
 
         // compute n
         z = math.scalbn(z, q0); // actual value of z
         z -= 8.0 * @floor(z * 0.125); // trim off integer >= 8
-        n = @floatToInt(i32, z);
-        z -= @intToFloat(f64, n);
+        n = @intFromFloat(i32, z);
+        z -= @floatFromInt(f64, n);
         ih = 0;
         if (q0 > 0) { // need iq[jz-1] to determine n
             i = iq[U(jz - 1)] >> @intCast(u5, 24 - q0);
@@ -390,7 +390,7 @@ pub fn rem_pio2_large(x: []f64, y: []f64, e0: i32, nx: i32, prec: usize) i32 {
 
                 i = jz + 1;
                 while (i <= jz + k) : (i += 1) { // add q[jz+1] to q[jz+k]
-                    f[U(jx + i)] = @intToFloat(f64, ipio2[U(jv + i)]);
+                    f[U(jx + i)] = @floatFromInt(f64, ipio2[U(jv + i)]);
                     j = 0;
                     fw = 0;
                     while (j <= jx) : (j += 1) {
@@ -414,13 +414,13 @@ pub fn rem_pio2_large(x: []f64, y: []f64, e0: i32, nx: i32, prec: usize) i32 {
         } else { // break z into 24-bit if necessary
             z = math.scalbn(z, -q0);
             if (z >= 0x1p24) {
-                fw = @intToFloat(f64, @floatToInt(i32, 0x1p-24 * z));
-                iq[U(jz)] = @floatToInt(i32, z - 0x1p24 * fw);
+                fw = @floatFromInt(f64, @intFromFloat(i32, 0x1p-24 * z));
+                iq[U(jz)] = @intFromFloat(i32, z - 0x1p24 * fw);
                 jz += 1;
                 q0 += 24;
-                iq[U(jz)] = @floatToInt(i32, fw);
+                iq[U(jz)] = @intFromFloat(i32, fw);
             } else {
-                iq[U(jz)] = @floatToInt(i32, z);
+                iq[U(jz)] = @intFromFloat(i32, z);
             }
         }
 
@@ -428,7 +428,7 @@ pub fn rem_pio2_large(x: []f64, y: []f64, e0: i32, nx: i32, prec: usize) i32 {
         fw = math.scalbn(@as(f64, 1.0), q0);
         i = jz;
         while (i >= 0) : (i -= 1) {
-            q[U(i)] = fw * @intToFloat(f64, iq[U(i)]);
+            q[U(i)] = fw * @floatFromInt(f64, iq[U(i)]);
             fw *= 0x1p-24;
         }
 
lib/compiler_rt/rem_pio2f.zig
@@ -37,7 +37,7 @@ pub fn rem_pio2f(x: f32, y: *f64) i32 {
     if (ix < 0x4dc90fdb) { // |x| ~< 2^28*(pi/2), medium size
         // Use a specialized rint() to get fn.
         @"fn" = @floatCast(f64, x) * invpio2 + toint - toint;
-        n = @floatToInt(i32, @"fn");
+        n = @intFromFloat(i32, @"fn");
         y.* = x - @"fn" * pio2_1 - @"fn" * pio2_1t;
         // Matters with directed rounding.
         if (y.* < -pio4) {
lib/compiler_rt/trig.zig
@@ -222,7 +222,7 @@ pub fn __tan(x_: f64, y_: f64, odd: bool) f64 {
     r = y + z * (s * (r + v) + y) + s * T[0];
     w = x + r;
     if (big) {
-        s = 1 - 2 * @intToFloat(f64, @boolToInt(odd));
+        s = 1 - 2 * @floatFromInt(f64, @intFromBool(odd));
         v = s - 2.0 * (x + (r - w * w / (w + s)));
         return if (sign) -v else v;
     }
lib/compiler_rt/truncf.zig
@@ -81,7 +81,7 @@ pub inline fn truncf(comptime dst_t: type, comptime src_t: type, a: src_t) dst_t
         if (shift > srcSigBits) {
             absResult = 0;
         } else {
-            const sticky: src_rep_t = @boolToInt(significand << @intCast(SrcShift, srcBits - shift) != 0);
+            const sticky: src_rep_t = @intFromBool(significand << @intCast(SrcShift, srcBits - shift) != 0);
             const denormalizedSignificand: src_rep_t = significand >> @intCast(SrcShift, shift) | sticky;
             absResult = @intCast(dst_rep_t, denormalizedSignificand >> (srcSigBits - dstSigBits));
             const roundBits: src_rep_t = denormalizedSignificand & roundMask;
@@ -164,7 +164,7 @@ pub inline fn trunc_f80(comptime dst_t: type, a: f80) dst_t {
         if (shift > src_sig_bits) {
             abs_result = 0;
         } else {
-            const sticky = @boolToInt(a_rep.fraction << @intCast(u6, shift) != 0);
+            const sticky = @intFromBool(a_rep.fraction << @intCast(u6, shift) != 0);
             const denormalized_significand = a_rep.fraction >> @intCast(u6, shift) | sticky;
             abs_result = @intCast(dst_rep_t, denormalized_significand >> (src_sig_bits - dst_sig_bits));
             const round_bits = denormalized_significand & round_mask;
lib/docs/main.js
@@ -1234,9 +1234,9 @@ const NAV_MODES = {
         const name = getAstNode(field).name;
         return name;
       }
-      case "enumToInt": {
-        const enumToInt = zigAnalysis.exprs[expr.enumToInt];
-        return "@enumToInt(" + exprName(enumToInt, opts) + ")";
+      case "intFromEnum": {
+        const intFromEnum = zigAnalysis.exprs[expr.intFromEnum];
+        return "@intFromEnum(" + exprName(intFromEnum, opts) + ")";
       }
       case "bitSizeOf": {
         const bitSizeOf = zigAnalysis.exprs[expr.bitSizeOf];
@@ -1260,8 +1260,8 @@ const NAV_MODES = {
             payloadHtml += "alignOf";
             break;
           }
-          case "bool_to_int": {
-            payloadHtml += "boolToInt";
+          case "int_from_bool": {
+            payloadHtml += "intFromBool";
             break;
           }
           case "embed_file": {
@@ -1368,16 +1368,16 @@ const NAV_MODES = {
             payloadHtml += "workGroupId";
             break;
           }
-          case "ptr_to_int": {
-            payloadHtml += "ptrToInt";
+          case "int_from_ptr": {
+            payloadHtml += "intFromPtr";
             break;
           }
-          case "error_to_int": {
-            payloadHtml += "errorToInt";
+          case "int_from_error": {
+            payloadHtml += "intFromError";
             break;
           }
-          case "int_to_error": {
-            payloadHtml += "intToError";
+          case "error_to_int": {
+            payloadHtml += "errorFromInt";
             break;
           }
           case "max": {
@@ -1423,20 +1423,20 @@ const NAV_MODES = {
 
         let payloadHtml = "@";
         switch (expr.builtinBin.name) {
-          case "float_to_int": {
-            payloadHtml += "floatToInt";
+          case "int_from_float": {
+            payloadHtml += "intFromFloat";
             break;
           }
-          case "int_to_float": {
-            payloadHtml += "intToFloat";
+          case "float_from_int": {
+            payloadHtml += "floatFromInt";
             break;
           }
-          case "int_to_ptr": {
-            payloadHtml += "intToPtr";
+          case "ptr_from_int": {
+            payloadHtml += "ptrFromInt";
             break;
           }
-          case "int_to_enum": {
-            payloadHtml += "intToEnum";
+          case "enum_from_int": {
+            payloadHtml += "enumFromInt";
             break;
           }
           case "float_cast": {
lib/std/atomic/Atomic.zig
@@ -227,7 +227,7 @@ pub fn Atomic(comptime T: type) type {
                     .Toggle => self.fetchXor(mask, ordering),
                 };
 
-                return @boolToInt(value & mask != 0);
+                return @intFromBool(value & mask != 0);
             }
 
             inline fn x86BitRmw(self: *Self, comptime op: BitRmwOp, bit: Bit, comptime ordering: Ordering) u1 {
@@ -392,8 +392,8 @@ test "Atomic.swap" {
         try testing.expectEqual(a.load(.SeqCst), true);
 
         var b = Atomic(?*u8).init(null);
-        try testing.expectEqual(b.swap(@intToPtr(?*u8, @alignOf(u8)), ordering), null);
-        try testing.expectEqual(b.load(.SeqCst), @intToPtr(?*u8, @alignOf(u8)));
+        try testing.expectEqual(b.swap(@ptrFromInt(?*u8, @alignOf(u8)), ordering), null);
+        try testing.expectEqual(b.load(.SeqCst), @ptrFromInt(?*u8, @alignOf(u8)));
     }
 }
 
lib/std/atomic/queue.zig
@@ -135,7 +135,7 @@ pub fn Queue(comptime T: type) type {
                 ) !void {
                     try s.writeByteNTimes(' ', indent);
                     if (optional_node) |node| {
-                        try s.print("0x{x}={}\n", .{ @ptrToInt(node), node.data });
+                        try s.print("0x{x}={}\n", .{ @intFromPtr(node), node.data });
                         if (depth == 0) {
                             try s.print("(max depth)\n", .{});
                             return;
@@ -387,7 +387,7 @@ test "std.atomic.Queue dump" {
         \\tail: 0x{x}=1
         \\ (null)
         \\
-    , .{ @ptrToInt(queue.head), @ptrToInt(queue.tail) });
+    , .{ @intFromPtr(queue.head), @intFromPtr(queue.tail) });
     try expect(mem.eql(u8, buffer[0..fbs.pos], expected));
 
     // Test a stream with two elements
@@ -408,6 +408,6 @@ test "std.atomic.Queue dump" {
         \\tail: 0x{x}=2
         \\ (null)
         \\
-    , .{ @ptrToInt(queue.head), @ptrToInt(queue.head.?.next), @ptrToInt(queue.tail) });
+    , .{ @intFromPtr(queue.head), @intFromPtr(queue.head.?.next), @intFromPtr(queue.tail) });
     try expect(mem.eql(u8, buffer[0..fbs.pos], expected));
 }
lib/std/Build/Step/Run.zig
@@ -1035,9 +1035,9 @@ fn evalZigTest(
 
                 const TrHdr = std.zig.Server.Message.TestResults;
                 const tr_hdr = @ptrCast(*align(1) const TrHdr, body);
-                fail_count += @boolToInt(tr_hdr.flags.fail);
-                skip_count += @boolToInt(tr_hdr.flags.skip);
-                leak_count += @boolToInt(tr_hdr.flags.leak);
+                fail_count += @intFromBool(tr_hdr.flags.fail);
+                skip_count += @intFromBool(tr_hdr.flags.skip);
+                leak_count += @intFromBool(tr_hdr.flags.leak);
 
                 if (tr_hdr.flags.fail or tr_hdr.flags.leak) {
                     const name = std.mem.sliceTo(md.string_bytes[md.names[tr_hdr.index]..], 0);
lib/std/c/darwin.zig
@@ -51,19 +51,19 @@ pub const EXC = enum(exception_type_t) {
 
 pub const EXC_SOFT_SIGNAL = 0x10003;
 
-pub const EXC_MASK_BAD_ACCESS = 1 << @enumToInt(EXC.BAD_ACCESS);
-pub const EXC_MASK_BAD_INSTRUCTION = 1 << @enumToInt(EXC.BAD_INSTRUCTION);
-pub const EXC_MASK_ARITHMETIC = 1 << @enumToInt(EXC.ARITHMETIC);
-pub const EXC_MASK_EMULATION = 1 << @enumToInt(EXC.EMULATION);
-pub const EXC_MASK_SOFTWARE = 1 << @enumToInt(EXC.SOFTWARE);
-pub const EXC_MASK_BREAKPOINT = 1 << @enumToInt(EXC.BREAKPOINT);
-pub const EXC_MASK_SYSCALL = 1 << @enumToInt(EXC.SYSCALL);
-pub const EXC_MASK_MACH_SYSCALL = 1 << @enumToInt(EXC.MACH_SYSCALL);
-pub const EXC_MASK_RPC_ALERT = 1 << @enumToInt(EXC.RPC_ALERT);
-pub const EXC_MASK_CRASH = 1 << @enumToInt(EXC.CRASH);
-pub const EXC_MASK_RESOURCE = 1 << @enumToInt(EXC.RESOURCE);
-pub const EXC_MASK_GUARD = 1 << @enumToInt(EXC.GUARD);
-pub const EXC_MASK_CORPSE_NOTIFY = 1 << @enumToInt(EXC.CORPSE_NOTIFY);
+pub const EXC_MASK_BAD_ACCESS = 1 << @intFromEnum(EXC.BAD_ACCESS);
+pub const EXC_MASK_BAD_INSTRUCTION = 1 << @intFromEnum(EXC.BAD_INSTRUCTION);
+pub const EXC_MASK_ARITHMETIC = 1 << @intFromEnum(EXC.ARITHMETIC);
+pub const EXC_MASK_EMULATION = 1 << @intFromEnum(EXC.EMULATION);
+pub const EXC_MASK_SOFTWARE = 1 << @intFromEnum(EXC.SOFTWARE);
+pub const EXC_MASK_BREAKPOINT = 1 << @intFromEnum(EXC.BREAKPOINT);
+pub const EXC_MASK_SYSCALL = 1 << @intFromEnum(EXC.SYSCALL);
+pub const EXC_MASK_MACH_SYSCALL = 1 << @intFromEnum(EXC.MACH_SYSCALL);
+pub const EXC_MASK_RPC_ALERT = 1 << @intFromEnum(EXC.RPC_ALERT);
+pub const EXC_MASK_CRASH = 1 << @intFromEnum(EXC.CRASH);
+pub const EXC_MASK_RESOURCE = 1 << @intFromEnum(EXC.RESOURCE);
+pub const EXC_MASK_GUARD = 1 << @intFromEnum(EXC.GUARD);
+pub const EXC_MASK_CORPSE_NOTIFY = 1 << @intFromEnum(EXC.CORPSE_NOTIFY);
 pub const EXC_MASK_MACHINE = arch_bits.EXC_MASK_MACHINE;
 
 pub const EXC_MASK_ALL = EXC_MASK_BAD_ACCESS |
@@ -1177,10 +1177,10 @@ pub const sigset_t = u32;
 pub const empty_sigset: sigset_t = 0;
 
 pub const SIG = struct {
-    pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
-    pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
-    pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
-    pub const HOLD = @intToPtr(?Sigaction.handler_fn, 5);
+    pub const ERR = @ptrFromInt(?Sigaction.handler_fn, maxInt(usize));
+    pub const DFL = @ptrFromInt(?Sigaction.handler_fn, 0);
+    pub const IGN = @ptrFromInt(?Sigaction.handler_fn, 1);
+    pub const HOLD = @ptrFromInt(?Sigaction.handler_fn, 5);
 
     /// block specified signal set
     pub const _BLOCK = 1;
@@ -1411,7 +1411,7 @@ pub const MAP = struct {
     pub const NOCACHE = 0x0400;
     /// don't reserve needed swap area
     pub const NORESERVE = 0x0040;
-    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
+    pub const FAILED = @ptrFromInt(*anyopaque, maxInt(usize));
 };
 
 pub const MSF = struct {
@@ -2463,7 +2463,7 @@ pub const KernE = enum(u32) {
 pub const mach_msg_return_t = kern_return_t;
 
 pub fn getMachMsgError(err: mach_msg_return_t) MachMsgE {
-    return @intToEnum(MachMsgE, @truncate(u32, @intCast(usize, err)));
+    return @enumFromInt(MachMsgE, @truncate(u32, @intCast(usize, err)));
 }
 
 /// All special error code bits defined below.
@@ -2665,10 +2665,10 @@ pub const RTLD = struct {
     pub const NODELETE = 0x80;
     pub const FIRST = 0x100;
 
-    pub const NEXT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1)));
-    pub const DEFAULT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -2)));
-    pub const SELF = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -3)));
-    pub const MAIN_ONLY = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -5)));
+    pub const NEXT = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -1)));
+    pub const DEFAULT = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -2)));
+    pub const SELF = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -3)));
+    pub const MAIN_ONLY = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -5)));
 };
 
 pub const F = struct {
@@ -3418,12 +3418,12 @@ pub const PosixSpawn = struct {
 };
 
 pub fn getKernError(err: kern_return_t) KernE {
-    return @intToEnum(KernE, @truncate(u32, @intCast(usize, err)));
+    return @enumFromInt(KernE, @truncate(u32, @intCast(usize, err)));
 }
 
 pub fn unexpectedKernError(err: KernE) std.os.UnexpectedError {
     if (std.os.unexpected_error_tracing) {
-        std.debug.print("unexpected error: {d}\n", .{@enumToInt(err)});
+        std.debug.print("unexpected error: {d}\n", .{@intFromEnum(err)});
         std.debug.dumpCurrentStackTrace(null);
     }
     return error.Unexpected;
@@ -3455,7 +3455,7 @@ pub const MachTask = extern struct {
         var out_port: mach_port_name_t = undefined;
         switch (getKernError(mach_port_allocate(
             self.port,
-            @enumToInt(right),
+            @intFromEnum(right),
             &out_port,
         ))) {
             .SUCCESS => return .{ .port = out_port },
@@ -3473,7 +3473,7 @@ pub const MachTask = extern struct {
             self.port,
             port.port,
             port.port,
-            @enumToInt(msg),
+            @intFromEnum(msg),
         ))) {
             .SUCCESS => return,
             .FAILURE => return error.PermissionDenied,
@@ -3665,7 +3665,7 @@ pub const MachTask = extern struct {
     }
 
     fn setProtectionImpl(task: MachTask, address: u64, len: usize, set_max: bool, prot: vm_prot_t) MachError!void {
-        switch (getKernError(mach_vm_protect(task.port, address, len, @boolToInt(set_max), prot))) {
+        switch (getKernError(mach_vm_protect(task.port, address, len, @intFromBool(set_max), prot))) {
             .SUCCESS => return,
             .FAILURE => return error.PermissionDenied,
             else => |err| return unexpectedKernError(err),
@@ -3700,7 +3700,7 @@ pub const MachTask = extern struct {
             switch (getKernError(mach_vm_write(
                 task.port,
                 curr_addr,
-                @ptrToInt(out_buf.ptr),
+                @intFromPtr(out_buf.ptr),
                 @intCast(mach_msg_type_number_t, curr_size),
             ))) {
                 .SUCCESS => {},
@@ -3752,7 +3752,7 @@ pub const MachTask = extern struct {
                 else => |err| return unexpectedKernError(err),
             }
 
-            @memcpy(out_buf[0..curr_bytes_read], @intToPtr([*]const u8, vm_memory));
+            @memcpy(out_buf[0..curr_bytes_read], @ptrFromInt([*]const u8, vm_memory));
             _ = vm_deallocate(mach_task_self(), vm_memory, curr_bytes_read);
 
             out_buf = out_buf[curr_bytes_read..];
@@ -3831,7 +3831,7 @@ pub const MachTask = extern struct {
             const self_task = machTaskForSelf();
             _ = vm_deallocate(
                 self_task.port,
-                @ptrToInt(list.buf.ptr),
+                @intFromPtr(list.buf.ptr),
                 @intCast(vm_size_t, list.buf.len * @sizeOf(mach_port_t)),
             );
         }
lib/std/c/dragonfly.zig
@@ -172,7 +172,7 @@ pub const PROT = struct {
 
 pub const MAP = struct {
     pub const FILE = 0;
-    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
+    pub const FAILED = @ptrFromInt(*anyopaque, maxInt(usize));
     pub const ANONYMOUS = ANON;
     pub const COPY = PRIVATE;
     pub const SHARED = 1;
@@ -620,9 +620,9 @@ pub const S = struct {
 pub const BADSIG = SIG.ERR;
 
 pub const SIG = struct {
-    pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
-    pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
-    pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
+    pub const DFL = @ptrFromInt(?Sigaction.handler_fn, 0);
+    pub const IGN = @ptrFromInt(?Sigaction.handler_fn, 1);
+    pub const ERR = @ptrFromInt(?Sigaction.handler_fn, maxInt(usize));
 
     pub const BLOCK = 1;
     pub const UNBLOCK = 2;
@@ -871,10 +871,10 @@ pub const RTLD = struct {
     pub const NODELETE = 0x01000;
     pub const NOLOAD = 0x02000;
 
-    pub const NEXT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1)));
-    pub const DEFAULT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -2)));
-    pub const SELF = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -3)));
-    pub const ALL = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -4)));
+    pub const NEXT = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -1)));
+    pub const DEFAULT = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -2)));
+    pub const SELF = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -3)));
+    pub const ALL = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -4)));
 };
 
 pub const dl_phdr_info = extern struct {
lib/std/c/freebsd.zig
@@ -961,7 +961,7 @@ pub const CLOCK = struct {
 };
 
 pub const MAP = struct {
-    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
+    pub const FAILED = @ptrFromInt(*anyopaque, maxInt(usize));
     pub const SHARED = 0x0001;
     pub const PRIVATE = 0x0002;
     pub const FIXED = 0x0010;
@@ -1086,9 +1086,9 @@ pub const SIG = struct {
     pub const UNBLOCK = 2;
     pub const SETMASK = 3;
 
-    pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
-    pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
-    pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
+    pub const DFL = @ptrFromInt(?Sigaction.handler_fn, 0);
+    pub const IGN = @ptrFromInt(?Sigaction.handler_fn, 1);
+    pub const ERR = @ptrFromInt(?Sigaction.handler_fn, maxInt(usize));
 
     pub const WORDS = 4;
     pub const MAXSIG = 128;
@@ -2650,7 +2650,7 @@ const ioctl_cmd = enum(u32) {
 };
 
 fn ioImpl(cmd: ioctl_cmd, op: u8, nr: u8, comptime IT: type) u32 {
-    return @bitCast(u32, @enumToInt(cmd) | @intCast(u32, @truncate(u8, @sizeOf(IT))) << 16 | @intCast(u32, op) << 8 | nr);
+    return @bitCast(u32, @intFromEnum(cmd) | @intCast(u32, @truncate(u8, @sizeOf(IT))) << 16 | @intCast(u32, op) << 8 | nr);
 }
 
 pub fn IO(op: u8, nr: u8) u32 {
lib/std/c/haiku.zig
@@ -414,7 +414,7 @@ pub const CLOCK = struct {
 
 pub const MAP = struct {
     /// mmap() error return code
-    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
+    pub const FAILED = @ptrFromInt(*anyopaque, maxInt(usize));
     /// changes are seen by others
     pub const SHARED = 0x01;
     /// changes are only seen by caller
@@ -481,9 +481,9 @@ pub const SA = struct {
 };
 
 pub const SIG = struct {
-    pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
-    pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
-    pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
+    pub const ERR = @ptrFromInt(?Sigaction.handler_fn, maxInt(usize));
+    pub const DFL = @ptrFromInt(?Sigaction.handler_fn, 0);
+    pub const IGN = @ptrFromInt(?Sigaction.handler_fn, 1);
 
     pub const HUP = 1;
     pub const INT = 2;
lib/std/c/linux.zig
@@ -32,7 +32,7 @@ pub const MADV = linux.MADV;
 pub const MAP = struct {
     pub usingnamespace linux.MAP;
     /// Only used by libc to communicate failure.
-    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
+    pub const FAILED = @ptrFromInt(*anyopaque, maxInt(usize));
 };
 pub const MSF = linux.MSF;
 pub const MMAP2_UNIT = linux.MMAP2_UNIT;
lib/std/c/netbsd.zig
@@ -172,9 +172,9 @@ pub const RTLD = struct {
     pub const NODELETE = 0x01000;
     pub const NOLOAD = 0x02000;
 
-    pub const NEXT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1)));
-    pub const DEFAULT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -2)));
-    pub const SELF = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -3)));
+    pub const NEXT = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -1)));
+    pub const DEFAULT = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -2)));
+    pub const SELF = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -3)));
 };
 
 pub const dl_phdr_info = extern struct {
@@ -591,7 +591,7 @@ pub const CLOCK = struct {
 };
 
 pub const MAP = struct {
-    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
+    pub const FAILED = @ptrFromInt(*anyopaque, maxInt(usize));
     pub const SHARED = 0x0001;
     pub const PRIVATE = 0x0002;
     pub const REMAPDUP = 0x0004;
@@ -1090,9 +1090,9 @@ pub const winsize = extern struct {
 const NSIG = 32;
 
 pub const SIG = struct {
-    pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
-    pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
-    pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
+    pub const DFL = @ptrFromInt(?Sigaction.handler_fn, 0);
+    pub const IGN = @ptrFromInt(?Sigaction.handler_fn, 1);
+    pub const ERR = @ptrFromInt(?Sigaction.handler_fn, maxInt(usize));
 
     pub const WORDS = 4;
     pub const MAXSIG = 128;
lib/std/c/openbsd.zig
@@ -449,7 +449,7 @@ pub const CLOCK = struct {
 };
 
 pub const MAP = struct {
-    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
+    pub const FAILED = @ptrFromInt(*anyopaque, maxInt(usize));
     pub const SHARED = 0x0001;
     pub const PRIVATE = 0x0002;
     pub const FIXED = 0x0010;
@@ -990,11 +990,11 @@ pub const winsize = extern struct {
 const NSIG = 33;
 
 pub const SIG = struct {
-    pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
-    pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
-    pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
-    pub const CATCH = @intToPtr(?Sigaction.handler_fn, 2);
-    pub const HOLD = @intToPtr(?Sigaction.handler_fn, 3);
+    pub const DFL = @ptrFromInt(?Sigaction.handler_fn, 0);
+    pub const IGN = @ptrFromInt(?Sigaction.handler_fn, 1);
+    pub const ERR = @ptrFromInt(?Sigaction.handler_fn, maxInt(usize));
+    pub const CATCH = @ptrFromInt(?Sigaction.handler_fn, 2);
+    pub const HOLD = @ptrFromInt(?Sigaction.handler_fn, 3);
 
     pub const HUP = 1;
     pub const INT = 2;
lib/std/c/solaris.zig
@@ -111,10 +111,10 @@ pub const RTLD = struct {
     pub const FIRST = 0x02000;
     pub const CONFGEN = 0x10000;
 
-    pub const NEXT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1)));
-    pub const DEFAULT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -2)));
-    pub const SELF = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -3)));
-    pub const PROBE = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -4)));
+    pub const NEXT = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -1)));
+    pub const DEFAULT = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -2)));
+    pub const SELF = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -3)));
+    pub const PROBE = @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -4)));
 };
 
 pub const Flock = extern struct {
@@ -524,7 +524,7 @@ pub const CLOCK = struct {
 };
 
 pub const MAP = struct {
-    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
+    pub const FAILED = @ptrFromInt(*anyopaque, maxInt(usize));
     pub const SHARED = 0x0001;
     pub const PRIVATE = 0x0002;
     pub const TYPE = 0x000f;
@@ -886,10 +886,10 @@ pub const winsize = extern struct {
 const NSIG = 75;
 
 pub const SIG = struct {
-    pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
-    pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
-    pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
-    pub const HOLD = @intToPtr(?Sigaction.handler_fn, 2);
+    pub const DFL = @ptrFromInt(?Sigaction.handler_fn, 0);
+    pub const ERR = @ptrFromInt(?Sigaction.handler_fn, maxInt(usize));
+    pub const IGN = @ptrFromInt(?Sigaction.handler_fn, 1);
+    pub const HOLD = @ptrFromInt(?Sigaction.handler_fn, 2);
 
     pub const WORDS = 4;
     pub const MAXSIG = 75;
@@ -1909,7 +1909,7 @@ const IoCtlCommand = enum(u32) {
 fn ioImpl(cmd: IoCtlCommand, io_type: u8, nr: u8, comptime IOT: type) i32 {
     const size = @intCast(u32, @truncate(u8, @sizeOf(IOT))) << 16;
     const t = @intCast(u32, io_type) << 8;
-    return @bitCast(i32, @enumToInt(cmd) | size | t | nr);
+    return @bitCast(i32, @intFromEnum(cmd) | size | t | nr);
 }
 
 pub fn IO(io_type: u8, nr: u8) i32 {
lib/std/compress/deflate/huffman_bit_writer.zig
@@ -527,7 +527,7 @@ pub fn HuffmanBitWriter(comptime WriterType: type) type {
             }
 
             // Huffman.
-            if (@ptrToInt(literal_encoding) == @ptrToInt(&self.fixed_literal_encoding)) {
+            if (@intFromPtr(literal_encoding) == @intFromPtr(&self.fixed_literal_encoding)) {
                 try self.writeFixedHeader(eof);
             } else {
                 try self.writeDynamicHeader(num_literals, num_offsets, num_codegens, eof);
lib/std/compress/lzma/decode/rangecoder.zig
@@ -57,7 +57,7 @@ pub const RangeDecoder = struct {
         var result: u32 = 0;
         var i: usize = 0;
         while (i < count) : (i += 1)
-            result = (result << 1) ^ @boolToInt(try self.getBit(reader));
+            result = (result << 1) ^ @intFromBool(try self.getBit(reader));
         return result;
     }
 
@@ -93,7 +93,7 @@ pub const RangeDecoder = struct {
         var i: @TypeOf(num_bits) = 0;
         while (i < num_bits) : (i += 1) {
             const bit = try self.decodeBit(reader, &probs[tmp], update);
-            tmp = (tmp << 1) ^ @boolToInt(bit);
+            tmp = (tmp << 1) ^ @intFromBool(bit);
         }
         return tmp - (@as(u32, 1) << num_bits);
     }
@@ -110,7 +110,7 @@ pub const RangeDecoder = struct {
         var tmp: usize = 1;
         var i: @TypeOf(num_bits) = 0;
         while (i < num_bits) : (i += 1) {
-            const bit = @boolToInt(try self.decodeBit(reader, &probs[offset + tmp], update));
+            const bit = @intFromBool(try self.decodeBit(reader, &probs[offset + tmp], update));
             tmp = (tmp << 1) ^ bit;
             result ^= @as(u32, bit) << i;
         }
lib/std/compress/lzma/decode.zig
@@ -326,7 +326,7 @@ pub const DecoderState = struct {
             while (result < 0x100) {
                 const match_bit = (match_byte >> 7) & 1;
                 match_byte <<= 1;
-                const bit = @boolToInt(try decoder.decodeBit(
+                const bit = @intFromBool(try decoder.decodeBit(
                     reader,
                     &probs[((@as(usize, 1) + match_bit) << 8) + result],
                     update,
@@ -339,7 +339,7 @@ pub const DecoderState = struct {
         }
 
         while (result < 0x100) {
-            result = (result << 1) ^ @boolToInt(try decoder.decodeBit(reader, &probs[result], update));
+            result = (result << 1) ^ @intFromBool(try decoder.decodeBit(reader, &probs[result], update));
         }
 
         return @truncate(u8, result - 0x100);
lib/std/compress/xz/block.zig
@@ -124,12 +124,12 @@ pub fn Decoder(comptime ReaderType: type) type {
                     _,
                 };
 
-                const filter_id = @intToEnum(
+                const filter_id = @enumFromInt(
                     FilterId,
                     try std.leb.readULEB128(u64, header_reader),
                 );
 
-                if (@enumToInt(filter_id) >= 0x4000_0000_0000_0000)
+                if (@intFromEnum(filter_id) >= 0x4000_0000_0000_0000)
                     return error.CorruptInput;
 
                 if (filter_id != .lzma2)
lib/std/compress/zstandard/decode/block.zig
@@ -894,7 +894,7 @@ pub fn decodeBlockReader(
 /// Decode the header of a block.
 pub fn decodeBlockHeader(src: *const [3]u8) frame.Zstandard.Block.Header {
     const last_block = src[0] & 1 == 1;
-    const block_type = @intToEnum(frame.Zstandard.Block.Type, (src[0] & 0b110) >> 1);
+    const block_type = @enumFromInt(frame.Zstandard.Block.Type, (src[0] & 0b110) >> 1);
     const block_size = ((src[0] & 0b11111000) >> 3) + (@as(u21, src[1]) << 5) + (@as(u21, src[2]) << 13);
     return .{
         .last_block = last_block,
@@ -1058,7 +1058,7 @@ fn decodeStreams(size_format: u2, stream_data: []const u8) !LiteralsSection.Stre
 ///   - `error.EndOfStream` if there are not enough bytes in `source`
 pub fn decodeLiteralsHeader(source: anytype) !LiteralsSection.Header {
     const byte0 = try source.readByte();
-    const block_type = @intToEnum(LiteralsSection.BlockType, byte0 & 0b11);
+    const block_type = @enumFromInt(LiteralsSection.BlockType, byte0 & 0b11);
     const size_format = @intCast(u2, (byte0 & 0b1100) >> 2);
     var regenerated_size: u20 = undefined;
     var compressed_size: ?u18 = null;
@@ -1132,9 +1132,9 @@ pub fn decodeSequencesHeader(
 
     const compression_modes = try source.readByte();
 
-    const matches_mode = @intToEnum(SequencesSection.Header.Mode, (compression_modes & 0b00001100) >> 2);
-    const offsets_mode = @intToEnum(SequencesSection.Header.Mode, (compression_modes & 0b00110000) >> 4);
-    const literal_mode = @intToEnum(SequencesSection.Header.Mode, (compression_modes & 0b11000000) >> 6);
+    const matches_mode = @enumFromInt(SequencesSection.Header.Mode, (compression_modes & 0b00001100) >> 2);
+    const offsets_mode = @enumFromInt(SequencesSection.Header.Mode, (compression_modes & 0b00110000) >> 4);
+    const literal_mode = @enumFromInt(SequencesSection.Header.Mode, (compression_modes & 0b11000000) >> 6);
     if (compression_modes & 0b11 != 0) return error.ReservedBitSet;
 
     return SequencesSection.Header{
lib/std/compress/xz.zig
@@ -18,7 +18,7 @@ fn readStreamFlags(reader: anytype, check: *Check) !void {
     if (reserved1 != 0)
         return error.CorruptInput;
 
-    check.* = @intToEnum(Check, try bit_reader.readBitsNoEof(u4, 4));
+    check.* = @enumFromInt(Check, try bit_reader.readBitsNoEof(u4, 4));
 
     const reserved2 = try bit_reader.readBitsNoEof(u4, 4);
     if (reserved2 != 0)
lib/std/compress/zlib.zig
@@ -126,7 +126,7 @@ pub fn CompressStream(comptime WriterType: type) type {
             var header = ZLibHeader{
                 .compression_info = ZLibHeader.WINDOW_32K,
                 .compression_method = ZLibHeader.DEFLATE,
-                .compression_level = @enumToInt(options.level),
+                .compression_level = @intFromEnum(options.level),
                 .preset_dict = 0,
                 .checksum = 0,
             };
lib/std/crypto/25519/edwards25519.zig
@@ -38,11 +38,11 @@ pub const Edwards25519 = struct {
         const vxx = x.sq().mul(v);
         const has_m_root = vxx.sub(u).isZero();
         const has_p_root = vxx.add(u).isZero();
-        if ((@boolToInt(has_m_root) | @boolToInt(has_p_root)) == 0) { // best-effort to avoid two conditional branches
+        if ((@intFromBool(has_m_root) | @intFromBool(has_p_root)) == 0) { // best-effort to avoid two conditional branches
             return error.InvalidEncoding;
         }
-        x.cMov(x.mul(Fe.sqrtm1), 1 - @boolToInt(has_m_root));
-        x.cMov(x.neg(), @boolToInt(x.isNegative()) ^ (s[31] >> 7));
+        x.cMov(x.mul(Fe.sqrtm1), 1 - @intFromBool(has_m_root));
+        x.cMov(x.neg(), @intFromBool(x.isNegative()) ^ (s[31] >> 7));
         const t = x.mul(y);
         return Edwards25519{ .x = x, .y = y, .z = z, .t = t };
     }
@@ -51,7 +51,7 @@ pub const Edwards25519 = struct {
     pub fn toBytes(p: Edwards25519) [encoded_length]u8 {
         const zi = p.z.invert();
         var s = p.y.mul(zi).toBytes();
-        s[31] ^= @as(u8, @boolToInt(p.x.mul(zi).isNegative())) << 7;
+        s[31] ^= @as(u8, @intFromBool(p.x.mul(zi).isNegative())) << 7;
         return s;
     }
 
@@ -369,7 +369,7 @@ pub const Edwards25519 = struct {
 
         // yed = (x-1)/(x+1) or 1 if the denominator is 0
         var yed = x_plus_one_y_inv.mul(y).mul(x_minus_one);
-        yed.cMov(Fe.one, @boolToInt(x_plus_one_y_inv.isZero()));
+        yed.cMov(Fe.one, @intFromBool(x_plus_one_y_inv.isZero()));
 
         return Edwards25519{
             .x = xed,
@@ -390,9 +390,9 @@ pub const Edwards25519 = struct {
         const not_square = !gx1.isSquare();
 
         // gx1 not a square => x = -x1-A
-        x.cMov(x.neg(), @boolToInt(not_square));
+        x.cMov(x.neg(), @intFromBool(not_square));
         x2 = Fe.zero;
-        x2.cMov(Fe.edwards25519a, @boolToInt(not_square));
+        x2.cMov(Fe.edwards25519a, @intFromBool(not_square));
         x = x.sub(x2);
 
         // We have y = sqrt(gx1) or sqrt(gx2) with gx2 = gx1*(A+x1)/(-x1)
@@ -408,7 +408,7 @@ pub const Edwards25519 = struct {
 
         const y_sign = !elr.not_square;
         const y_neg = elr.y.neg();
-        elr.y.cMov(y_neg, @boolToInt(elr.y.isNegative()) ^ @boolToInt(y_sign));
+        elr.y.cMov(y_neg, @intFromBool(elr.y.isNegative()) ^ @intFromBool(y_sign));
         return montToEd(elr.x, elr.y).clearCofactor();
     }
 
@@ -486,7 +486,7 @@ pub const Edwards25519 = struct {
         const elr = elligator2(Fe.fromBytes(s));
         var p = montToEd(elr.x, elr.y);
         const p_neg = p.neg();
-        p.cMov(p_neg, @boolToInt(p.x.isNegative()) ^ x_sign);
+        p.cMov(p_neg, @intFromBool(p.x.isNegative()) ^ x_sign);
         return p.clearCofactor();
     }
 };
lib/std/crypto/25519/field.zig
@@ -387,7 +387,7 @@ pub const Fe = struct {
     /// Return the absolute value of a field element
     pub fn abs(a: Fe) Fe {
         var r = a;
-        r.cMov(a.neg(), @boolToInt(a.isNegative()));
+        r.cMov(a.neg(), @intFromBool(a.isNegative()));
         return r;
     }
 
@@ -412,7 +412,7 @@ pub const Fe = struct {
         const m_root2 = m_root.sq();
         e = x2.sub(m_root2);
         var x = p_root;
-        x.cMov(m_root, @boolToInt(e.isZero()));
+        x.cMov(m_root, @intFromBool(e.isZero()));
         return x;
     }
 
lib/std/crypto/25519/ristretto255.zig
@@ -30,8 +30,8 @@ pub const Ristretto255 = struct {
         const has_p_root = p_root_check.isZero();
         const has_f_root = f_root_check.isZero();
         const x_sqrtm1 = x.mul(Fe.sqrtm1); // x*sqrt(-1)
-        x.cMov(x_sqrtm1, @boolToInt(has_p_root) | @boolToInt(has_f_root));
-        return .{ .ratio_is_square = @boolToInt(has_m_root) | @boolToInt(has_p_root), .root = x.abs() };
+        x.cMov(x_sqrtm1, @intFromBool(has_p_root) | @intFromBool(has_f_root));
+        return .{ .ratio_is_square = @intFromBool(has_m_root) | @intFromBool(has_p_root), .root = x.abs() };
     }
 
     fn rejectNonCanonical(s: [encoded_length]u8) NonCanonicalError!void {
@@ -67,7 +67,7 @@ pub const Ristretto255 = struct {
         x = x.mul(s_);
         x = x.add(x).abs();
         const t = x.mul(y);
-        if ((1 - inv_sqrt.ratio_is_square) | @boolToInt(t.isNegative()) | @boolToInt(y.isZero()) != 0) {
+        if ((1 - inv_sqrt.ratio_is_square) | @intFromBool(t.isNegative()) | @intFromBool(y.isZero()) != 0) {
             return error.InvalidEncoding;
         }
         const p: Curve = .{
@@ -96,7 +96,7 @@ pub const Ristretto255 = struct {
         const eden = den1.mul(Fe.edwards25519sqrtamd); // den1/sqrt(a-d)
         const t_z_inv = p.t.mul(z_inv); // T*z_inv
 
-        const rotate = @boolToInt(t_z_inv.isNegative());
+        const rotate = @intFromBool(t_z_inv.isNegative());
         var x = p.x;
         var y = p.y;
         var den_inv = den2;
@@ -106,7 +106,7 @@ pub const Ristretto255 = struct {
 
         const x_z_inv = x.mul(z_inv);
         const yneg = y.neg();
-        y.cMov(yneg, @boolToInt(x_z_inv.isNegative()));
+        y.cMov(yneg, @intFromBool(x_z_inv.isNegative()));
 
         return p.z.sub(y).mul(den_inv).abs().toBytes();
     }
@@ -163,7 +163,7 @@ pub const Ristretto255 = struct {
         const q_ = &q.p;
         const a = p_.x.mul(q_.y).equivalent(p_.y.mul(q_.x));
         const b = p_.y.mul(q_.y).equivalent(p_.x.mul(q_.x));
-        return (@boolToInt(a) | @boolToInt(b)) != 0;
+        return (@intFromBool(a) | @intFromBool(b)) != 0;
     }
 };
 
lib/std/crypto/Certificate/Bundle/macos.zig
@@ -42,7 +42,7 @@ pub fn rescanMac(cb: *Bundle, gpa: Allocator) RescanMacError!void {
 
         const table_header = try reader.readStructBig(TableHeader);
 
-        if (@intToEnum(std.os.darwin.cssm.DB_RECORDTYPE, table_header.table_id) != .X509_CERTIFICATE) {
+        if (@enumFromInt(std.os.darwin.cssm.DB_RECORDTYPE, table_header.table_id) != .X509_CERTIFICATE) {
             continue;
         }
 
lib/std/crypto/pcurves/p256.zig
@@ -36,8 +36,8 @@ pub const P256 = struct {
 
     /// Reject the neutral element.
     pub fn rejectIdentity(p: P256) IdentityElementError!void {
-        const affine_0 = @boolToInt(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@boolToInt(p.y.isZero()) | @boolToInt(p.y.equivalent(AffineCoordinates.identityElement.y)));
-        const is_identity = @boolToInt(p.z.isZero()) | affine_0;
+        const affine_0 = @intFromBool(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@intFromBool(p.y.isZero()) | @intFromBool(p.y.equivalent(AffineCoordinates.identityElement.y)));
+        const is_identity = @intFromBool(p.z.isZero()) | affine_0;
         if (is_identity != 0) {
             return error.IdentityElement;
         }
@@ -49,8 +49,8 @@ pub const P256 = struct {
         const y = p.y;
         const x3AxB = x.sq().mul(x).sub(x).sub(x).sub(x).add(B);
         const yy = y.sq();
-        const on_curve = @boolToInt(x3AxB.equivalent(yy));
-        const is_identity = @boolToInt(x.equivalent(AffineCoordinates.identityElement.x)) & @boolToInt(y.equivalent(AffineCoordinates.identityElement.y));
+        const on_curve = @intFromBool(x3AxB.equivalent(yy));
+        const is_identity = @intFromBool(x.equivalent(AffineCoordinates.identityElement.x)) & @intFromBool(y.equivalent(AffineCoordinates.identityElement.y));
         if ((on_curve | is_identity) == 0) {
             return error.InvalidEncoding;
         }
@@ -71,7 +71,7 @@ pub const P256 = struct {
         const x3AxB = x.sq().mul(x).sub(x).sub(x).sub(x).add(B);
         var y = try x3AxB.sqrt();
         const yn = y.neg();
-        y.cMov(yn, @boolToInt(is_odd) ^ @boolToInt(y.isOdd()));
+        y.cMov(yn, @intFromBool(is_odd) ^ @intFromBool(y.isOdd()));
         return y;
     }
 
@@ -219,7 +219,7 @@ pub const P256 = struct {
             .y = Y3,
             .z = Z3,
         };
-        ret.cMov(p, @boolToInt(q.x.isZero()));
+        ret.cMov(p, @intFromBool(q.x.isZero()));
         return ret;
     }
 
@@ -288,8 +288,8 @@ pub const P256 = struct {
 
     /// Return affine coordinates.
     pub fn affineCoordinates(p: P256) AffineCoordinates {
-        const affine_0 = @boolToInt(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@boolToInt(p.y.isZero()) | @boolToInt(p.y.equivalent(AffineCoordinates.identityElement.y)));
-        const is_identity = @boolToInt(p.z.isZero()) | affine_0;
+        const affine_0 = @intFromBool(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@intFromBool(p.y.isZero()) | @intFromBool(p.y.equivalent(AffineCoordinates.identityElement.y)));
+        const is_identity = @intFromBool(p.z.isZero()) | affine_0;
         const zinv = p.z.invert();
         var ret = AffineCoordinates{
             .x = p.x.mul(zinv),
lib/std/crypto/pcurves/p384.zig
@@ -36,8 +36,8 @@ pub const P384 = struct {
 
     /// Reject the neutral element.
     pub fn rejectIdentity(p: P384) IdentityElementError!void {
-        const affine_0 = @boolToInt(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@boolToInt(p.y.isZero()) | @boolToInt(p.y.equivalent(AffineCoordinates.identityElement.y)));
-        const is_identity = @boolToInt(p.z.isZero()) | affine_0;
+        const affine_0 = @intFromBool(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@intFromBool(p.y.isZero()) | @intFromBool(p.y.equivalent(AffineCoordinates.identityElement.y)));
+        const is_identity = @intFromBool(p.z.isZero()) | affine_0;
         if (is_identity != 0) {
             return error.IdentityElement;
         }
@@ -49,8 +49,8 @@ pub const P384 = struct {
         const y = p.y;
         const x3AxB = x.sq().mul(x).sub(x).sub(x).sub(x).add(B);
         const yy = y.sq();
-        const on_curve = @boolToInt(x3AxB.equivalent(yy));
-        const is_identity = @boolToInt(x.equivalent(AffineCoordinates.identityElement.x)) & @boolToInt(y.equivalent(AffineCoordinates.identityElement.y));
+        const on_curve = @intFromBool(x3AxB.equivalent(yy));
+        const is_identity = @intFromBool(x.equivalent(AffineCoordinates.identityElement.x)) & @intFromBool(y.equivalent(AffineCoordinates.identityElement.y));
         if ((on_curve | is_identity) == 0) {
             return error.InvalidEncoding;
         }
@@ -71,7 +71,7 @@ pub const P384 = struct {
         const x3AxB = x.sq().mul(x).sub(x).sub(x).sub(x).add(B);
         var y = try x3AxB.sqrt();
         const yn = y.neg();
-        y.cMov(yn, @boolToInt(is_odd) ^ @boolToInt(y.isOdd()));
+        y.cMov(yn, @intFromBool(is_odd) ^ @intFromBool(y.isOdd()));
         return y;
     }
 
@@ -219,7 +219,7 @@ pub const P384 = struct {
             .y = Y3,
             .z = Z3,
         };
-        ret.cMov(p, @boolToInt(q.x.isZero()));
+        ret.cMov(p, @intFromBool(q.x.isZero()));
         return ret;
     }
 
@@ -288,8 +288,8 @@ pub const P384 = struct {
 
     /// Return affine coordinates.
     pub fn affineCoordinates(p: P384) AffineCoordinates {
-        const affine_0 = @boolToInt(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@boolToInt(p.y.isZero()) | @boolToInt(p.y.equivalent(AffineCoordinates.identityElement.y)));
-        const is_identity = @boolToInt(p.z.isZero()) | affine_0;
+        const affine_0 = @intFromBool(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@intFromBool(p.y.isZero()) | @intFromBool(p.y.equivalent(AffineCoordinates.identityElement.y)));
+        const is_identity = @intFromBool(p.z.isZero()) | affine_0;
         const zinv = p.z.invert();
         var ret = AffineCoordinates{
             .x = p.x.mul(zinv),
lib/std/crypto/pcurves/secp256k1.zig
@@ -89,8 +89,8 @@ pub const Secp256k1 = struct {
 
     /// Reject the neutral element.
     pub fn rejectIdentity(p: Secp256k1) IdentityElementError!void {
-        const affine_0 = @boolToInt(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@boolToInt(p.y.isZero()) | @boolToInt(p.y.equivalent(AffineCoordinates.identityElement.y)));
-        const is_identity = @boolToInt(p.z.isZero()) | affine_0;
+        const affine_0 = @intFromBool(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@intFromBool(p.y.isZero()) | @intFromBool(p.y.equivalent(AffineCoordinates.identityElement.y)));
+        const is_identity = @intFromBool(p.z.isZero()) | affine_0;
         if (is_identity != 0) {
             return error.IdentityElement;
         }
@@ -102,8 +102,8 @@ pub const Secp256k1 = struct {
         const y = p.y;
         const x3B = x.sq().mul(x).add(B);
         const yy = y.sq();
-        const on_curve = @boolToInt(x3B.equivalent(yy));
-        const is_identity = @boolToInt(x.equivalent(AffineCoordinates.identityElement.x)) & @boolToInt(y.equivalent(AffineCoordinates.identityElement.y));
+        const on_curve = @intFromBool(x3B.equivalent(yy));
+        const is_identity = @intFromBool(x.equivalent(AffineCoordinates.identityElement.x)) & @intFromBool(y.equivalent(AffineCoordinates.identityElement.y));
         if ((on_curve | is_identity) == 0) {
             return error.InvalidEncoding;
         }
@@ -124,7 +124,7 @@ pub const Secp256k1 = struct {
         const x3B = x.sq().mul(x).add(B);
         var y = try x3B.sqrt();
         const yn = y.neg();
-        y.cMov(yn, @boolToInt(is_odd) ^ @boolToInt(y.isOdd()));
+        y.cMov(yn, @intFromBool(is_odd) ^ @intFromBool(y.isOdd()));
         return y;
     }
 
@@ -253,7 +253,7 @@ pub const Secp256k1 = struct {
             .y = Y3,
             .z = Z3,
         };
-        ret.cMov(p, @boolToInt(q.x.isZero()));
+        ret.cMov(p, @intFromBool(q.x.isZero()));
         return ret;
     }
 
@@ -316,8 +316,8 @@ pub const Secp256k1 = struct {
 
     /// Return affine coordinates.
     pub fn affineCoordinates(p: Secp256k1) AffineCoordinates {
-        const affine_0 = @boolToInt(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@boolToInt(p.y.isZero()) | @boolToInt(p.y.equivalent(AffineCoordinates.identityElement.y)));
-        const is_identity = @boolToInt(p.z.isZero()) | affine_0;
+        const affine_0 = @intFromBool(p.x.equivalent(AffineCoordinates.identityElement.x)) & (@intFromBool(p.y.isZero()) | @intFromBool(p.y.equivalent(AffineCoordinates.identityElement.y)));
+        const is_identity = @intFromBool(p.z.isZero()) | affine_0;
         const zinv = p.z.invert();
         var ret = AffineCoordinates{
             .x = p.x.mul(zinv),
lib/std/crypto/tls/Client.zig
@@ -180,14 +180,14 @@ pub fn init(stream: anytype, ca_bundle: Certificate.Bundle, host: []const u8) In
         .x25519,
     })) ++ tls.extension(
         .key_share,
-        array(1, int2(@enumToInt(tls.NamedGroup.x25519)) ++
+        array(1, int2(@intFromEnum(tls.NamedGroup.x25519)) ++
             array(1, x25519_kp.public_key) ++
-            int2(@enumToInt(tls.NamedGroup.secp256r1)) ++
+            int2(@intFromEnum(tls.NamedGroup.secp256r1)) ++
             array(1, secp256r1_kp.public_key.toUncompressedSec1()) ++
-            int2(@enumToInt(tls.NamedGroup.x25519_kyber768d00)) ++
+            int2(@intFromEnum(tls.NamedGroup.x25519_kyber768d00)) ++
             array(1, x25519_kp.public_key ++ kyber768_kp.public_key.toBytes())),
     ) ++
-        int2(@enumToInt(tls.ExtensionType.server_name)) ++
+        int2(@intFromEnum(tls.ExtensionType.server_name)) ++
         int2(host_len + 5) ++ // byte length of this extension payload
         int2(host_len + 3) ++ // server_name_list byte count
         [1]u8{0x00} ++ // name_type
@@ -200,7 +200,7 @@ pub fn init(stream: anytype, ca_bundle: Certificate.Bundle, host: []const u8) In
     const legacy_compression_methods = 0x0100;
 
     const client_hello =
-        int2(@enumToInt(tls.ProtocolVersion.tls_1_2)) ++
+        int2(@intFromEnum(tls.ProtocolVersion.tls_1_2)) ++
         hello_rand ++
         [1]u8{32} ++ legacy_session_id ++
         cipher_suites ++
@@ -208,12 +208,12 @@ pub fn init(stream: anytype, ca_bundle: Certificate.Bundle, host: []const u8) In
         extensions_header;
 
     const out_handshake =
-        [_]u8{@enumToInt(tls.HandshakeType.client_hello)} ++
+        [_]u8{@intFromEnum(tls.HandshakeType.client_hello)} ++
         int3(@intCast(u24, client_hello.len + host_len)) ++
         client_hello;
 
     const plaintext_header = [_]u8{
-        @enumToInt(tls.ContentType.handshake),
+        @intFromEnum(tls.ContentType.handshake),
         0x03, 0x01, // legacy_record_version
     } ++ int2(@intCast(u16, out_handshake.len + host_len)) ++ out_handshake;
 
@@ -348,7 +348,7 @@ pub fn init(stream: anytype, ca_bundle: Certificate.Bundle, host: []const u8) In
                 if (!have_shared_key) return error.TlsIllegalParameter;
 
                 const tls_version = if (supported_version == 0) legacy_version else supported_version;
-                if (tls_version != @enumToInt(tls.ProtocolVersion.tls_1_3))
+                if (tls_version != @intFromEnum(tls.ProtocolVersion.tls_1_3))
                     return error.TlsIllegalParameter;
 
                 switch (cipher_suite_tag) {
@@ -466,7 +466,7 @@ pub fn init(stream: anytype, ca_bundle: Certificate.Bundle, host: []const u8) In
                     },
                 };
 
-                const inner_ct = @intToEnum(tls.ContentType, cleartext[cleartext.len - 1]);
+                const inner_ct = @enumFromInt(tls.ContentType, cleartext[cleartext.len - 1]);
                 if (inner_ct != .handshake) return error.TlsUnexpectedMessage;
 
                 var ctd = tls.Decoder.fromTheirSlice(cleartext[0 .. cleartext.len - 1]);
@@ -624,7 +624,7 @@ pub fn init(stream: anytype, ca_bundle: Certificate.Bundle, host: []const u8) In
                             if (handshake_state != .finished) return error.TlsUnexpectedMessage;
                             // This message is to trick buggy proxies into behaving correctly.
                             const client_change_cipher_spec_msg = [_]u8{
-                                @enumToInt(tls.ContentType.change_cipher_spec),
+                                @intFromEnum(tls.ContentType.change_cipher_spec),
                                 0x03, 0x03, // legacy protocol version
                                 0x00, 0x01, // length
                                 0x01,
@@ -640,14 +640,14 @@ pub fn init(stream: anytype, ca_bundle: Certificate.Bundle, host: []const u8) In
                                     const handshake_hash = p.transcript_hash.finalResult();
                                     const verify_data = tls.hmac(P.Hmac, &handshake_hash, p.client_finished_key);
                                     const out_cleartext = [_]u8{
-                                        @enumToInt(tls.HandshakeType.finished),
+                                        @intFromEnum(tls.HandshakeType.finished),
                                         0, 0, verify_data.len, // length
-                                    } ++ verify_data ++ [1]u8{@enumToInt(tls.ContentType.handshake)};
+                                    } ++ verify_data ++ [1]u8{@intFromEnum(tls.ContentType.handshake)};
 
                                     const wrapped_len = out_cleartext.len + P.AEAD.tag_length;
 
                                     var finished_msg = [_]u8{
-                                        @enumToInt(tls.ContentType.application_data),
+                                        @intFromEnum(tls.ContentType.application_data),
                                         0x03, 0x03, // legacy protocol version
                                         0, wrapped_len, // byte length of encrypted record
                                     } ++ @as([wrapped_len]u8, undefined);
@@ -809,7 +809,7 @@ fn prepareCiphertextRecord(
                 };
 
                 @memcpy(cleartext_buf[0..encrypted_content_len], bytes[bytes_i..][0..encrypted_content_len]);
-                cleartext_buf[encrypted_content_len] = @enumToInt(inner_content_type);
+                cleartext_buf[encrypted_content_len] = @intFromEnum(inner_content_type);
                 bytes_i += encrypted_content_len;
                 const ciphertext_len = encrypted_content_len + 1;
                 const cleartext = cleartext_buf[0..ciphertext_len];
@@ -817,8 +817,8 @@ fn prepareCiphertextRecord(
                 const record_start = ciphertext_end;
                 const ad = ciphertext_buf[ciphertext_end..][0..5];
                 ad.* =
-                    [_]u8{@enumToInt(tls.ContentType.application_data)} ++
-                    int2(@enumToInt(tls.ProtocolVersion.tls_1_2)) ++
+                    [_]u8{@intFromEnum(tls.ContentType.application_data)} ++
+                    int2(@intFromEnum(tls.ProtocolVersion.tls_1_2)) ++
                     int2(ciphertext_len + P.AEAD.tag_length);
                 ciphertext_end += ad.len;
                 const ciphertext = ciphertext_buf[ciphertext_end..][0..ciphertext_len];
@@ -1037,7 +1037,7 @@ pub fn readvAdvanced(c: *Client, stream: anytype, iovecs: []const std.os.iovec)
             in = 0;
             continue;
         }
-        const ct = @intToEnum(tls.ContentType, frag[in]);
+        const ct = @enumFromInt(tls.ContentType, frag[in]);
         in += 1;
         const legacy_version = mem.readIntBig(u16, frag[in..][0..2]);
         in += 2;
@@ -1070,8 +1070,8 @@ pub fn readvAdvanced(c: *Client, stream: anytype, iovecs: []const std.os.iovec)
         switch (ct) {
             .alert => {
                 if (in + 2 > frag.len) return error.TlsDecodeError;
-                const level = @intToEnum(tls.AlertLevel, frag[in]);
-                const desc = @intToEnum(tls.AlertDescription, frag[in + 1]);
+                const level = @enumFromInt(tls.AlertLevel, frag[in]);
+                const desc = @enumFromInt(tls.AlertDescription, frag[in + 1]);
                 _ = level;
 
                 try desc.toError();
@@ -1105,11 +1105,11 @@ pub fn readvAdvanced(c: *Client, stream: anytype, iovecs: []const std.os.iovec)
 
                 c.read_seq = try std.math.add(u64, c.read_seq, 1);
 
-                const inner_ct = @intToEnum(tls.ContentType, cleartext[cleartext.len - 1]);
+                const inner_ct = @enumFromInt(tls.ContentType, cleartext[cleartext.len - 1]);
                 switch (inner_ct) {
                     .alert => {
-                        const level = @intToEnum(tls.AlertLevel, cleartext[0]);
-                        const desc = @intToEnum(tls.AlertDescription, cleartext[1]);
+                        const level = @enumFromInt(tls.AlertLevel, cleartext[0]);
+                        const desc = @enumFromInt(tls.AlertDescription, cleartext[1]);
                         if (desc == .close_notify) {
                             c.received_close_notify = true;
                             c.partial_ciphertext_end = c.partial_ciphertext_idx;
@@ -1124,7 +1124,7 @@ pub fn readvAdvanced(c: *Client, stream: anytype, iovecs: []const std.os.iovec)
                     .handshake => {
                         var ct_i: usize = 0;
                         while (true) {
-                            const handshake_type = @intToEnum(tls.HandshakeType, cleartext[ct_i]);
+                            const handshake_type = @enumFromInt(tls.HandshakeType, cleartext[ct_i]);
                             ct_i += 1;
                             const handshake_len = mem.readIntBig(u24, cleartext[ct_i..][0..3]);
                             ct_i += 3;
@@ -1148,7 +1148,7 @@ pub fn readvAdvanced(c: *Client, stream: anytype, iovecs: []const std.os.iovec)
                                     }
                                     c.read_seq = 0;
 
-                                    switch (@intToEnum(tls.KeyUpdateRequest, handshake[0])) {
+                                    switch (@enumFromInt(tls.KeyUpdateRequest, handshake[0])) {
                                         .update_requested => {
                                             switch (c.application_cipher) {
                                                 inline else => |*p| {
lib/std/crypto/argon2.zig
@@ -115,7 +115,7 @@ fn initHash(
     mem.writeIntLittle(u32, parameters[8..12], params.m);
     mem.writeIntLittle(u32, parameters[12..16], params.t);
     mem.writeIntLittle(u32, parameters[16..20], version);
-    mem.writeIntLittle(u32, parameters[20..24], @enumToInt(mode));
+    mem.writeIntLittle(u32, parameters[20..24], @intFromEnum(mode));
     b2.update(&parameters);
     mem.writeIntLittle(u32, &tmp, @intCast(u32, password.len));
     b2.update(&tmp);
@@ -292,7 +292,7 @@ fn processSegment(
         in[2] = slice;
         in[3] = memory;
         in[4] = passes;
-        in[5] = @enumToInt(mode);
+        in[5] = @intFromEnum(mode);
     }
     var index: u32 = 0;
     if (n == 0 and slice == 0) {
lib/std/crypto/benchmark.zig
@@ -54,8 +54,8 @@ pub fn benchmarkHash(comptime Hash: anytype, comptime bytes: comptime_int) !u64
 
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, bytes / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, bytes / elapsed_s);
 
     return throughput;
 }
@@ -95,8 +95,8 @@ pub fn benchmarkMac(comptime Mac: anytype, comptime bytes: comptime_int) !u64 {
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, bytes / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, bytes / elapsed_s);
 
     return throughput;
 }
@@ -125,8 +125,8 @@ pub fn benchmarkKeyExchange(comptime DhKeyExchange: anytype, comptime exchange_c
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, exchange_count / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, exchange_count / elapsed_s);
 
     return throughput;
 }
@@ -148,8 +148,8 @@ pub fn benchmarkSignature(comptime Signature: anytype, comptime signatures_count
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, signatures_count / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, signatures_count / elapsed_s);
 
     return throughput;
 }
@@ -172,8 +172,8 @@ pub fn benchmarkSignatureVerification(comptime Signature: anytype, comptime sign
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, signatures_count / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, signatures_count / elapsed_s);
 
     return throughput;
 }
@@ -201,8 +201,8 @@ pub fn benchmarkBatchSignatureVerification(comptime Signature: anytype, comptime
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = batch.len * @floatToInt(u64, signatures_count / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = batch.len * @intFromFloat(u64, signatures_count / elapsed_s);
 
     return throughput;
 }
@@ -227,8 +227,8 @@ pub fn benchmarkKem(comptime Kem: anytype, comptime kems_count: comptime_int) !u
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, kems_count / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, kems_count / elapsed_s);
 
     return throughput;
 }
@@ -249,8 +249,8 @@ pub fn benchmarkKemDecaps(comptime Kem: anytype, comptime kems_count: comptime_i
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, kems_count / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, kems_count / elapsed_s);
 
     return throughput;
 }
@@ -267,8 +267,8 @@ pub fn benchmarkKemKeyGen(comptime Kem: anytype, comptime kems_count: comptime_i
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, kems_count / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, kems_count / elapsed_s);
 
     return throughput;
 }
@@ -309,8 +309,8 @@ pub fn benchmarkAead(comptime Aead: anytype, comptime bytes: comptime_int) !u64
     mem.doNotOptimizeAway(&in);
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, 2 * bytes / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, 2 * bytes / elapsed_s);
 
     return throughput;
 }
@@ -338,8 +338,8 @@ pub fn benchmarkAes(comptime Aes: anytype, comptime count: comptime_int) !u64 {
     mem.doNotOptimizeAway(&in);
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, count / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, count / elapsed_s);
 
     return throughput;
 }
@@ -367,8 +367,8 @@ pub fn benchmarkAes8(comptime Aes: anytype, comptime count: comptime_int) !u64 {
     mem.doNotOptimizeAway(&in);
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, 8 * count / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, 8 * count / elapsed_s);
 
     return throughput;
 }
@@ -422,7 +422,7 @@ fn benchmarkPwhash(
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
     const throughput = elapsed_s / count;
 
     return throughput;
lib/std/crypto/Certificate.zig
@@ -312,7 +312,7 @@ pub const Parsed = struct {
         while (name_i < general_names.slice.end) {
             const general_name = try der.Element.parse(subject_alt_name, name_i);
             name_i = general_name.slice.end;
-            switch (@intToEnum(GeneralNameTag, @enumToInt(general_name.identifier.tag))) {
+            switch (@enumFromInt(GeneralNameTag, @intFromEnum(general_name.identifier.tag))) {
                 .dNSName => {
                     const dns_name = subject_alt_name[general_name.slice.start..general_name.slice.end];
                     if (checkHostName(host_name, dns_name)) return;
@@ -597,8 +597,8 @@ const Date = struct {
             var month: u4 = 1;
             while (month < date.month) : (month += 1) {
                 const days: u64 = std.time.epoch.getDaysInMonth(
-                    @intToEnum(std.time.epoch.YearLeapKind, @boolToInt(is_leap)),
-                    @intToEnum(std.time.epoch.Month, month),
+                    @enumFromInt(std.time.epoch.YearLeapKind, @intFromBool(is_leap)),
+                    @enumFromInt(std.time.epoch.Month, month),
                 );
                 sec += days * std.time.epoch.secs_per_day;
             }
lib/std/crypto/ff.zig
@@ -637,7 +637,7 @@ pub fn Modulus(comptime max_bits: comptime_int) type {
             assert(x.limbs_count() == self.limbs_count());
             assert(y.limbs_count() == self.limbs_count());
             const overflow = self.montgomeryLoop(&d, x, y);
-            const underflow = 1 -% @boolToInt(ct.limbsCmpGeq(d.v, self.v));
+            const underflow = 1 -% @intFromBool(ct.limbsCmpGeq(d.v, self.v));
             const need_sub = ct.eql(overflow, underflow);
             _ = d.v.conditionalSubWithOverflow(need_sub, self.v);
             d.montgomery = x.montgomery == y.montgomery;
@@ -649,7 +649,7 @@ pub fn Modulus(comptime max_bits: comptime_int) type {
             var d = self.zero;
             assert(x.limbs_count() == self.limbs_count());
             const overflow = self.montgomeryLoop(&d, x, x);
-            const underflow = 1 -% @boolToInt(ct.limbsCmpGeq(d.v, self.v));
+            const underflow = 1 -% @intFromBool(ct.limbsCmpGeq(d.v, self.v));
             const need_sub = ct.eql(overflow, underflow);
             _ = d.v.conditionalSubWithOverflow(need_sub, self.v);
             d.montgomery = true;
@@ -763,7 +763,7 @@ const ct = if (std.options.side_channels_mitigations == .none) ct_unprotected el
 const ct_protected = struct {
     // Returns x if on is true, otherwise y.
     fn select(on: bool, x: Limb, y: Limb) Limb {
-        const mask = @as(Limb, 0) -% @boolToInt(on);
+        const mask = @as(Limb, 0) -% @intFromBool(on);
         return y ^ (mask & (y ^ x));
     }
 
@@ -789,7 +789,7 @@ const ct_protected = struct {
 
     // Compares two big integers in constant time, returning true if x >= y.
     fn limbsCmpGeq(x: anytype, y: @TypeOf(x)) bool {
-        return @bitCast(bool, 1 - @boolToInt(ct.limbsCmpLt(x, y)));
+        return @bitCast(bool, 1 - @intFromBool(ct.limbsCmpLt(x, y)));
     }
 
     // Multiplies two limbs and returns the result as a wide limb.
lib/std/crypto/kyber_d00.zig
@@ -1454,7 +1454,7 @@ fn Mat(comptime K: u8) type {
 
 // Returns `true` if a โ‰  b.
 fn ctneq(comptime len: usize, a: [len]u8, b: [len]u8) u1 {
-    return 1 - @boolToInt(crypto.utils.timingSafeEql([len]u8, a, b));
+    return 1 - @intFromBool(crypto.utils.timingSafeEql([len]u8, a, b));
 }
 
 // Copy src into dst given b = 1.
lib/std/crypto/tls.zig
@@ -48,8 +48,8 @@ pub const hello_retry_request_sequence = [32]u8{
 };
 
 pub const close_notify_alert = [_]u8{
-    @enumToInt(AlertLevel.warning),
-    @enumToInt(AlertDescription.close_notify),
+    @intFromEnum(AlertLevel.warning),
+    @intFromEnum(AlertDescription.close_notify),
 };
 
 pub const ProtocolVersion = enum(u16) {
@@ -399,7 +399,7 @@ pub fn hmac(comptime Hmac: type, message: []const u8, key: [Hmac.key_length]u8)
 }
 
 pub inline fn extension(comptime et: ExtensionType, bytes: anytype) [2 + 2 + bytes.len]u8 {
-    return int2(@enumToInt(et)) ++ array(1, bytes);
+    return int2(@intFromEnum(et)) ++ array(1, bytes);
 }
 
 pub inline fn array(comptime elem_size: comptime_int, bytes: anytype) [2 + bytes.len]u8 {
@@ -411,8 +411,8 @@ pub inline fn enum_array(comptime E: type, comptime tags: []const E) [2 + @sizeO
     assert(@sizeOf(E) == 2);
     var result: [tags.len * 2]u8 = undefined;
     for (tags, 0..) |elem, i| {
-        result[i * 2] = @truncate(u8, @enumToInt(elem) >> 8);
-        result[i * 2 + 1] = @truncate(u8, @enumToInt(elem));
+        result[i * 2] = @truncate(u8, @intFromEnum(elem) >> 8);
+        result[i * 2 + 1] = @truncate(u8, @intFromEnum(elem));
     }
     return array(2, result);
 }
@@ -513,7 +513,7 @@ pub const Decoder = struct {
             .Enum => |info| {
                 const int = d.decode(info.tag_type);
                 if (info.is_exhaustive) @compileError("exhaustive enum cannot be used");
-                return @intToEnum(T, int);
+                return @enumFromInt(T, int);
             },
             else => @compileError("unsupported type: " ++ @typeName(T)),
         }
lib/std/event/channel.zig
@@ -247,7 +247,7 @@ pub fn Channel(comptime T: type) type {
                     // All the "get or null" functions should resume now.
                     var remove_count: usize = 0;
                     while (self.or_null_queue.get()) |or_null_node| {
-                        remove_count += @boolToInt(self.getters.remove(or_null_node.data));
+                        remove_count += @intFromBool(self.getters.remove(or_null_node.data));
                         global_event_loop.onNextTick(or_null_node.data.data.tick_node);
                     }
                     if (remove_count != 0) {
lib/std/event/lock.zig
@@ -55,14 +55,14 @@ pub const Lock = struct {
         const head = switch (self.head) {
             UNLOCKED => unreachable,
             LOCKED => null,
-            else => @intToPtr(*Waiter, self.head),
+            else => @ptrFromInt(*Waiter, self.head),
         };
 
         if (head) |h| {
             h.tail.next = &waiter;
             h.tail = &waiter;
         } else {
-            self.head = @ptrToInt(&waiter);
+            self.head = @intFromPtr(&waiter);
         }
 
         suspend {
@@ -102,8 +102,8 @@ pub const Lock = struct {
                         break :blk null;
                     },
                     else => {
-                        const waiter = @intToPtr(*Waiter, self.lock.head);
-                        self.lock.head = if (waiter.next == null) LOCKED else @ptrToInt(waiter.next);
+                        const waiter = @ptrFromInt(*Waiter, self.lock.head);
+                        self.lock.head = if (waiter.next == null) LOCKED else @intFromPtr(waiter.next);
                         if (waiter.next) |next|
                             next.tail = waiter.tail;
                         break :blk waiter;
lib/std/event/loop.zig
@@ -244,7 +244,7 @@ pub const Loop = struct {
 
                 self.os_data.final_eventfd_event = os.linux.epoll_event{
                     .events = os.linux.EPOLL.IN,
-                    .data = os.linux.epoll_data{ .ptr = @ptrToInt(&self.final_resume_node) },
+                    .data = os.linux.epoll_data{ .ptr = @intFromPtr(&self.final_resume_node) },
                 };
                 try os.epoll_ctl(
                     self.os_data.epollfd,
@@ -293,7 +293,7 @@ pub const Loop = struct {
                                 .flags = os.system.EV_CLEAR | os.system.EV_ADD | os.system.EV_DISABLE,
                                 .fflags = 0,
                                 .data = 0,
-                                .udata = @ptrToInt(&eventfd_node.data.base),
+                                .udata = @intFromPtr(&eventfd_node.data.base),
                             },
                         },
                         .next = undefined,
@@ -313,7 +313,7 @@ pub const Loop = struct {
                     .flags = os.system.EV_ADD | os.system.EV_DISABLE,
                     .fflags = 0,
                     .data = 0,
-                    .udata = @ptrToInt(&self.final_resume_node),
+                    .udata = @intFromPtr(&self.final_resume_node),
                 };
                 const final_kev_arr = @as(*const [1]os.Kevent, &self.os_data.final_kevent);
                 _ = try os.kevent(self.os_data.kqfd, final_kev_arr, empty_kevs, null);
@@ -358,7 +358,7 @@ pub const Loop = struct {
                                 .flags = os.system.EV_CLEAR | os.system.EV_ADD | os.system.EV_DISABLE | os.system.EV_ONESHOT,
                                 .fflags = 0,
                                 .data = 0,
-                                .udata = @ptrToInt(&eventfd_node.data.base),
+                                .udata = @intFromPtr(&eventfd_node.data.base),
                             },
                         },
                         .next = undefined,
@@ -377,7 +377,7 @@ pub const Loop = struct {
                     .flags = os.system.EV_ADD | os.system.EV_ONESHOT | os.system.EV_DISABLE,
                     .fflags = 0,
                     .data = 0,
-                    .udata = @ptrToInt(&self.final_resume_node),
+                    .udata = @intFromPtr(&self.final_resume_node),
                 };
                 const final_kev_arr = @as(*const [1]os.Kevent, &self.os_data.final_kevent);
                 _ = try os.kevent(self.os_data.kqfd, final_kev_arr, empty_kevs, null);
@@ -418,7 +418,7 @@ pub const Loop = struct {
                                 .overlapped = ResumeNode.overlapped_init,
                             },
                             // this one is for sending events
-                            .completion_key = @ptrToInt(&eventfd_node.data.base),
+                            .completion_key = @intFromPtr(&eventfd_node.data.base),
                         },
                         .next = undefined,
                     };
@@ -488,7 +488,7 @@ pub const Loop = struct {
         assert(flags & os.linux.EPOLL.ET == os.linux.EPOLL.ET);
         var ev = os.linux.epoll_event{
             .events = flags,
-            .data = os.linux.epoll_data{ .ptr = @ptrToInt(resume_node) },
+            .data = os.linux.epoll_data{ .ptr = @intFromPtr(resume_node) },
         };
         try os.epoll_ctl(self.os_data.epollfd, op, fd, &ev);
     }
@@ -619,7 +619,7 @@ pub const Loop = struct {
             .flags = os.system.EV_ADD | os.system.EV_ENABLE | os.system.EV_CLEAR | flags,
             .fflags = 0,
             .data = 0,
-            .udata = @ptrToInt(&resume_node.base),
+            .udata = @intFromPtr(&resume_node.base),
         }};
         const empty_kevs = &[0]os.Kevent{};
         _ = try os.kevent(self.os_data.kqfd, &kev, empty_kevs, null);
@@ -1415,7 +1415,7 @@ pub const Loop = struct {
                     var events: [1]os.linux.epoll_event = undefined;
                     const count = os.epoll_wait(self.os_data.epollfd, events[0..], -1);
                     for (events[0..count]) |ev| {
-                        const resume_node = @intToPtr(*ResumeNode, ev.data.ptr);
+                        const resume_node = @ptrFromInt(*ResumeNode, ev.data.ptr);
                         const handle = resume_node.handle;
                         const resume_node_id = resume_node.id;
                         switch (resume_node_id) {
@@ -1439,7 +1439,7 @@ pub const Loop = struct {
                     const empty_kevs = &[0]os.Kevent{};
                     const count = os.kevent(self.os_data.kqfd, empty_kevs, eventlist[0..], null) catch unreachable;
                     for (eventlist[0..count]) |ev| {
-                        const resume_node = @intToPtr(*ResumeNode, ev.udata);
+                        const resume_node = @ptrFromInt(*ResumeNode, ev.udata);
                         const handle = resume_node.handle;
                         const resume_node_id = resume_node.id;
                         switch (resume_node_id) {
lib/std/fmt/parse_float/convert_eisel_lemire.zig
@@ -74,7 +74,7 @@ pub fn convertEiselLemire(comptime T: type, q: i64, w_: u64) ?BiasedFp(f64) {
         mantissa = math.shr(u64, mantissa, -power2 + 1);
         mantissa += mantissa & 1;
         mantissa >>= 1;
-        power2 = @boolToInt(mantissa >= (1 << float_info.mantissa_explicit_bits));
+        power2 = @intFromBool(mantissa >= (1 << float_info.mantissa_explicit_bits));
         return BiasedFp(f64){ .f = mantissa, .e = power2 };
     }
 
lib/std/fmt/parse_float/convert_fast.zig
@@ -108,7 +108,7 @@ pub fn convertFast(comptime T: type, n: Number(T)) ?T {
     var value: T = 0;
     if (n.exponent <= info.max_exponent_fast_path) {
         // normal fast path
-        value = @intToFloat(T, n.mantissa);
+        value = @floatFromInt(T, n.mantissa);
         value = if (n.exponent < 0)
             value / fastPow10(T, @intCast(usize, -n.exponent))
         else
@@ -120,7 +120,7 @@ pub fn convertFast(comptime T: type, n: Number(T)) ?T {
         if (mantissa > info.max_mantissa_fast_path) {
             return null;
         }
-        value = @intToFloat(T, mantissa) * fastPow10(T, info.max_exponent_fast_path);
+        value = @floatFromInt(T, mantissa) * fastPow10(T, info.max_exponent_fast_path);
     }
 
     if (n.negative) {
lib/std/fmt/errol.zig
@@ -59,7 +59,7 @@ pub fn roundToPrecision(float_decimal: *FloatDecimal, precision: usize, mode: Ro
                 float_decimal.exp += 1;
 
                 // Re-size the buffer to use the reserved leading byte.
-                const one_before = @intToPtr([*]u8, @ptrToInt(&float_decimal.digits[0]) - 1);
+                const one_before = @ptrFromInt([*]u8, @intFromPtr(&float_decimal.digits[0]) - 1);
                 float_decimal.digits = one_before[0 .. float_decimal.digits.len + 1];
                 float_decimal.digits[0] = '1';
                 return;
@@ -113,7 +113,7 @@ fn errolSlow(val: f64, buffer: []u8) FloatDecimal {
     // normalize the midpoint
 
     const e = math.frexp(val).exponent;
-    var exp = @floatToInt(i16, @floor(307 + @intToFloat(f64, e) * 0.30103));
+    var exp = @intFromFloat(i16, @floor(307 + @floatFromInt(f64, e) * 0.30103));
     if (exp < 20) {
         exp = 20;
     } else if (@intCast(usize, exp) >= lookup_table.len) {
@@ -171,25 +171,25 @@ fn errolSlow(val: f64, buffer: []u8) FloatDecimal {
     var buf_index: usize = 0;
     const bound = buffer.len - 1;
     while (buf_index < bound) {
-        var hdig = @floatToInt(u8, @floor(high.val));
-        if ((high.val == @intToFloat(f64, hdig)) and (high.off < 0)) hdig -= 1;
+        var hdig = @intFromFloat(u8, @floor(high.val));
+        if ((high.val == @floatFromInt(f64, hdig)) and (high.off < 0)) hdig -= 1;
 
-        var ldig = @floatToInt(u8, @floor(low.val));
-        if ((low.val == @intToFloat(f64, ldig)) and (low.off < 0)) ldig -= 1;
+        var ldig = @intFromFloat(u8, @floor(low.val));
+        if ((low.val == @floatFromInt(f64, ldig)) and (low.off < 0)) ldig -= 1;
 
         if (ldig != hdig) break;
 
         buffer[buf_index] = hdig + '0';
         buf_index += 1;
-        high.val -= @intToFloat(f64, hdig);
-        low.val -= @intToFloat(f64, ldig);
+        high.val -= @floatFromInt(f64, hdig);
+        low.val -= @floatFromInt(f64, ldig);
         hpMul10(&high);
         hpMul10(&low);
     }
 
     const tmp = (high.val + low.val) / 2.0;
-    var mdig = @floatToInt(u8, @floor(tmp + 0.5));
-    if ((@intToFloat(f64, mdig) - tmp) == 0.5 and (mdig & 0x1) != 0) mdig -= 1;
+    var mdig = @intFromFloat(u8, @floor(tmp + 0.5));
+    if ((@floatFromInt(f64, mdig) - tmp) == 0.5 and (mdig & 0x1) != 0) mdig -= 1;
 
     buffer[buf_index] = mdig + '0';
     buf_index += 1;
@@ -303,7 +303,7 @@ fn errolInt(val: f64, buffer: []u8) FloatDecimal {
 
     assert((val > 9.007199254740992e15) and val < (3.40282366920938e38));
 
-    var mid = @floatToInt(u128, val);
+    var mid = @intFromFloat(u128, val);
     var low: u128 = mid - fpeint((fpnext(val) - val) / 2.0);
     var high: u128 = mid + fpeint((val - fpprev(val)) / 2.0);
 
@@ -328,7 +328,7 @@ fn errolInt(val: f64, buffer: []u8) FloatDecimal {
     var mi: i32 = mismatch10(l64, h64);
     var x: u64 = 1;
     {
-        var i: i32 = @boolToInt(lf == hf);
+        var i: i32 = @intFromBool(lf == hf);
         while (i < mi) : (i += 1) {
             x *= 10;
         }
@@ -342,7 +342,7 @@ fn errolInt(val: f64, buffer: []u8) FloatDecimal {
     if (mi != 0) {
         const round_up = buffer[buf_index] >= '5';
         if (buf_index == 0 or (round_up and buffer[buf_index - 1] == '9')) return errolSlow(val, buffer);
-        buffer[buf_index - 1] += @boolToInt(round_up);
+        buffer[buf_index - 1] += @intFromBool(round_up);
     } else {
         buf_index += 1;
     }
@@ -360,8 +360,8 @@ fn errolInt(val: f64, buffer: []u8) FloatDecimal {
 fn errolFixed(val: f64, buffer: []u8) FloatDecimal {
     assert((val >= 16.0) and (val < 9.007199254740992e15));
 
-    const u = @floatToInt(u64, val);
-    const n = @intToFloat(f64, u);
+    const u = @intFromFloat(u64, val);
+    const n = @floatFromInt(f64, u);
 
     var mid = val - n;
     var lo = ((fpprev(val) - n) + mid) / 2.0;
@@ -375,16 +375,16 @@ fn errolFixed(val: f64, buffer: []u8) FloatDecimal {
     if (mid != 0.0) {
         while (mid != 0.0) {
             lo *= 10.0;
-            const ldig = @floatToInt(i32, lo);
-            lo -= @intToFloat(f64, ldig);
+            const ldig = @intFromFloat(i32, lo);
+            lo -= @floatFromInt(f64, ldig);
 
             mid *= 10.0;
-            const mdig = @floatToInt(i32, mid);
-            mid -= @intToFloat(f64, mdig);
+            const mdig = @intFromFloat(i32, mid);
+            mid -= @floatFromInt(f64, mdig);
 
             hi *= 10.0;
-            const hdig = @floatToInt(i32, hi);
-            hi -= @intToFloat(f64, hdig);
+            const hdig = @intFromFloat(i32, hi);
+            hi -= @floatFromInt(f64, hdig);
 
             buffer[j] = @intCast(u8, mdig + '0');
             j += 1;
lib/std/fs/file.zig
@@ -516,7 +516,7 @@ pub const File = struct {
         /// Returns `true` if the chosen class has the selected permission.
         /// This method is only available on Unix platforms.
         pub fn unixHas(self: Self, class: Class, permission: Permission) bool {
-            const mask = @as(Mode, @enumToInt(permission)) << @as(u3, @enumToInt(class)) * 3;
+            const mask = @as(Mode, @intFromEnum(permission)) << @as(u3, @intFromEnum(class)) * 3;
             return self.mode & mask != 0;
         }
 
@@ -527,7 +527,7 @@ pub const File = struct {
             write: ?bool = null,
             execute: ?bool = null,
         }) void {
-            const shift = @as(u3, @enumToInt(class)) * 3;
+            const shift = @as(u3, @intFromEnum(class)) * 3;
             if (permissions.read) |r| {
                 if (r) {
                     self.mode |= @as(Mode, 0o4) << shift;
@@ -973,7 +973,7 @@ pub const File = struct {
         // The file size returned by stat is used as hint to set the buffer
         // size. If the reported size is zero, as it happens on Linux for files
         // in /proc, a small buffer is allocated instead.
-        const initial_cap = (if (size > 0) size else 1024) + @boolToInt(optional_sentinel != null);
+        const initial_cap = (if (size > 0) size else 1024) + @intFromBool(optional_sentinel != null);
         var array_list = try std.ArrayListAligned(u8, alignment).initCapacity(allocator, initial_cap);
         defer array_list.deinit();
 
@@ -1488,7 +1488,7 @@ pub const File = struct {
                 &range_len,
                 null,
                 windows.FALSE, // non-blocking=false
-                @boolToInt(exclusive),
+                @intFromBool(exclusive),
             ) catch |err| switch (err) {
                 error.WouldBlock => unreachable, // non-blocking=false
                 else => |e| return e,
@@ -1555,7 +1555,7 @@ pub const File = struct {
                 &range_len,
                 null,
                 windows.TRUE, // non-blocking=true
-                @boolToInt(exclusive),
+                @intFromBool(exclusive),
             ) catch |err| switch (err) {
                 error.WouldBlock => return false,
                 else => |e| return e,
lib/std/fs/path.zig
@@ -67,7 +67,7 @@ fn joinSepMaybeZ(allocator: Allocator, separator: u8, comptime sepPredicate: fn
             if (this_path.len == 0) continue;
             const prev_sep = sepPredicate(prev_path[prev_path.len - 1]);
             const this_sep = sepPredicate(this_path[0]);
-            sum += @boolToInt(!prev_sep and !this_sep);
+            sum += @intFromBool(!prev_sep and !this_sep);
             sum += if (prev_sep and this_sep) this_path.len - 1 else this_path.len;
             prev_path = this_path;
         }
@@ -663,7 +663,7 @@ pub fn resolvePosix(allocator: Allocator, paths: []const []const u8) Allocator.E
                 continue;
             } else if (mem.eql(u8, component, "..")) {
                 if (result.items.len == 0) {
-                    negative_count += @boolToInt(!is_abs);
+                    negative_count += @intFromBool(!is_abs);
                     continue;
                 }
                 while (true) {
@@ -1092,7 +1092,7 @@ pub fn relativeWindows(allocator: Allocator, from: []const u8, to: []const u8) !
         while (from_it.next()) |_| {
             up_index_end += "\\..".len;
         }
-        const result = try allocator.alloc(u8, up_index_end + @boolToInt(to_rest.len > 0) + to_rest.len);
+        const result = try allocator.alloc(u8, up_index_end + @intFromBool(to_rest.len > 0) + to_rest.len);
         errdefer allocator.free(result);
 
         result[0..2].* = "..".*;
lib/std/fs/watch.zig
@@ -285,7 +285,7 @@ pub fn Watch(comptime V: type) type {
                         os.NOTE_WRITE | os.NOTE_DELETE | os.NOTE_REVOKE,
                     .fflags = 0,
                     .data = 0,
-                    .udata = @ptrToInt(&resume_node.base),
+                    .udata = @intFromPtr(&resume_node.base),
                 };
                 suspend {
                     global_event_loop.beginOneEvent();
@@ -486,7 +486,7 @@ pub fn Watch(comptime V: type) type {
                 } else {
                     var ptr: [*]u8 = &event_buf;
                     const end_ptr = ptr + bytes_transferred;
-                    while (@ptrToInt(ptr) < @ptrToInt(end_ptr)) {
+                    while (@intFromPtr(ptr) < @intFromPtr(end_ptr)) {
                         const ev = @ptrCast(*const windows.FILE_NOTIFY_INFORMATION, ptr);
                         const emit = switch (ev.Action) {
                             windows.FILE_ACTION_REMOVED => WatchEventId.Delete,
@@ -585,7 +585,7 @@ pub fn Watch(comptime V: type) type {
 
                 var ptr: [*]u8 = &event_buf;
                 const end_ptr = ptr + bytes_read;
-                while (@ptrToInt(ptr) < @ptrToInt(end_ptr)) {
+                while (@intFromPtr(ptr) < @intFromPtr(end_ptr)) {
                     const ev = @ptrCast(*const os.linux.inotify_event, ptr);
                     if (ev.mask & os.linux.IN_CLOSE_WRITE == os.linux.IN_CLOSE_WRITE) {
                         const basename_ptr = ptr + @sizeOf(os.linux.inotify_event);
lib/std/hash/auto_hash.zig
@@ -25,7 +25,7 @@ pub fn hashPointer(hasher: anytype, key: anytype, comptime strat: HashStrategy)
 
     switch (info.Pointer.size) {
         .One => switch (strat) {
-            .Shallow => hash(hasher, @ptrToInt(key), .Shallow),
+            .Shallow => hash(hasher, @intFromPtr(key), .Shallow),
             .Deep => hash(hasher, key.*, .Shallow),
             .DeepRecursive => hash(hasher, key.*, .DeepRecursive),
         },
@@ -44,7 +44,7 @@ pub fn hashPointer(hasher: anytype, key: anytype, comptime strat: HashStrategy)
         .Many,
         .C,
         => switch (strat) {
-            .Shallow => hash(hasher, @ptrToInt(key), .Shallow),
+            .Shallow => hash(hasher, @intFromPtr(key), .Shallow),
             else => @compileError(
                 \\ unknown-length pointers and C pointers cannot be hashed deeply.
                 \\ Consider providing your own hash function.
@@ -108,10 +108,10 @@ pub fn hash(hasher: anytype, key: anytype, comptime strat: HashStrategy) void {
             },
         },
 
-        .Bool => hash(hasher, @boolToInt(key), strat),
-        .Enum => hash(hasher, @enumToInt(key), strat),
-        .ErrorSet => hash(hasher, @errorToInt(key), strat),
-        .AnyFrame, .Fn => hash(hasher, @ptrToInt(key), strat),
+        .Bool => hash(hasher, @intFromBool(key), strat),
+        .Enum => hash(hasher, @intFromEnum(key), strat),
+        .ErrorSet => hash(hasher, @intFromError(key), strat),
+        .AnyFrame, .Fn => hash(hasher, @intFromPtr(key), strat),
 
         .Pointer => @call(.always_inline, hashPointer, .{ hasher, key, strat }),
 
lib/std/hash/benchmark.zig
@@ -127,8 +127,8 @@ pub fn benchmarkHash(comptime H: anytype, bytes: usize, allocator: std.mem.Alloc
 
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, @intToFloat(f64, bytes) / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, @floatFromInt(f64, bytes) / elapsed_s);
 
     return Result{
         .hash = final,
@@ -166,8 +166,8 @@ pub fn benchmarkHashSmallKeys(comptime H: anytype, key_size: usize, bytes: usize
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, @intToFloat(f64, bytes) / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, @floatFromInt(f64, bytes) / elapsed_s);
 
     std.mem.doNotOptimizeAway(sum);
 
lib/std/hash/crc.zig
@@ -129,7 +129,7 @@ pub fn Crc32WithPoly(comptime poly: Polynomial) type {
                 var j: usize = 0;
                 while (j < 8) : (j += 1) {
                     if (crc & 1 == 1) {
-                        crc = (crc >> 1) ^ @enumToInt(poly);
+                        crc = (crc >> 1) ^ @intFromEnum(poly);
                     } else {
                         crc = (crc >> 1);
                     }
@@ -222,7 +222,7 @@ pub fn Crc32SmallWithPoly(comptime poly: Polynomial) type {
                 var j: usize = 0;
                 while (j < 8) : (j += 1) {
                     if (crc & 1 == 1) {
-                        crc = (crc >> 1) ^ @enumToInt(poly);
+                        crc = (crc >> 1) ^ @intFromEnum(poly);
                     } else {
                         crc = (crc >> 1);
                     }
lib/std/heap/arena_allocator.zig
@@ -185,7 +185,7 @@ pub const ArenaAllocator = struct {
         while (true) {
             const cur_alloc_buf = @ptrCast([*]u8, cur_node)[0..cur_node.data];
             const cur_buf = cur_alloc_buf[@sizeOf(BufNode)..];
-            const addr = @ptrToInt(cur_buf.ptr) + self.state.end_index;
+            const addr = @intFromPtr(cur_buf.ptr) + self.state.end_index;
             const adjusted_addr = mem.alignForward(usize, addr, ptr_align);
             const adjusted_index = self.state.end_index + (adjusted_addr - addr);
             const new_end_index = adjusted_index + n;
@@ -214,7 +214,7 @@ pub const ArenaAllocator = struct {
 
         const cur_node = self.state.buffer_list.first orelse return false;
         const cur_buf = @ptrCast([*]u8, cur_node)[@sizeOf(BufNode)..cur_node.data];
-        if (@ptrToInt(cur_buf.ptr) + self.state.end_index != @ptrToInt(buf.ptr) + buf.len) {
+        if (@intFromPtr(cur_buf.ptr) + self.state.end_index != @intFromPtr(buf.ptr) + buf.len) {
             // It's not the most recent allocation, so it cannot be expanded,
             // but it's fine if they want to make it smaller.
             return new_len <= buf.len;
@@ -240,7 +240,7 @@ pub const ArenaAllocator = struct {
         const cur_node = self.state.buffer_list.first orelse return;
         const cur_buf = @ptrCast([*]u8, cur_node)[@sizeOf(BufNode)..cur_node.data];
 
-        if (@ptrToInt(cur_buf.ptr) + self.state.end_index == @ptrToInt(buf.ptr) + buf.len) {
+        if (@intFromPtr(cur_buf.ptr) + self.state.end_index == @intFromPtr(buf.ptr) + buf.len) {
             self.state.end_index -= buf.len;
         }
     }
@@ -262,7 +262,7 @@ test "ArenaAllocator (reset with preheating)" {
             const size = random.intRangeAtMost(usize, 16, 256);
             const alignment = 32;
             const slice = try arena_allocator.allocator().alignedAlloc(u8, alignment, size);
-            try std.testing.expect(std.mem.isAligned(@ptrToInt(slice.ptr), alignment));
+            try std.testing.expect(std.mem.isAligned(@intFromPtr(slice.ptr), alignment));
             try std.testing.expectEqual(size, slice.len);
             alloced_bytes += slice.len;
         }
lib/std/heap/general_purpose_allocator.zig
@@ -216,8 +216,8 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             }
 
             fn getStackTrace(self: *LargeAlloc, trace_kind: TraceKind) std.builtin.StackTrace {
-                assert(@enumToInt(trace_kind) < trace_n);
-                const stack_addresses = &self.stack_addresses[@enumToInt(trace_kind)];
+                assert(@intFromEnum(trace_kind) < trace_n);
+                const stack_addresses = &self.stack_addresses[@intFromEnum(trace_kind)];
                 var len: usize = 0;
                 while (len < stack_n and stack_addresses[len] != 0) {
                     len += 1;
@@ -229,8 +229,8 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             }
 
             fn captureStackTrace(self: *LargeAlloc, ret_addr: usize, trace_kind: TraceKind) void {
-                assert(@enumToInt(trace_kind) < trace_n);
-                const stack_addresses = &self.stack_addresses[@enumToInt(trace_kind)];
+                assert(@intFromEnum(trace_kind) < trace_n);
+                const stack_addresses = &self.stack_addresses[@intFromEnum(trace_kind)];
                 collectStackTrace(ret_addr, stack_addresses);
             }
         };
@@ -250,7 +250,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             used_count: SlotIndex,
 
             fn usedBits(bucket: *BucketHeader, index: usize) *u8 {
-                return @intToPtr(*u8, @ptrToInt(bucket) + @sizeOf(BucketHeader) + index);
+                return @ptrFromInt(*u8, @intFromPtr(bucket) + @sizeOf(BucketHeader) + index);
             }
 
             fn stackTracePtr(
@@ -261,7 +261,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             ) *[stack_n]usize {
                 const start_ptr = @ptrCast([*]u8, bucket) + bucketStackFramesStart(size_class);
                 const addr = start_ptr + one_trace_size * traces_per_slot * slot_index +
-                    @enumToInt(trace_kind) * @as(usize, one_trace_size);
+                    @intFromEnum(trace_kind) * @as(usize, one_trace_size);
                 return @ptrCast(*[stack_n]usize, @alignCast(@alignOf(usize), addr));
             }
 
@@ -344,7 +344,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                             const stack_trace = bucketStackTrace(bucket, size_class, slot_index, .alloc);
                             const addr = bucket.page + slot_index * size_class;
                             log.err("memory address 0x{x} leaked: {}", .{
-                                @ptrToInt(addr), stack_trace,
+                                @intFromPtr(addr), stack_trace,
                             });
                             leaks = true;
                         }
@@ -376,7 +376,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                 if (config.retain_metadata and large_alloc.freed) continue;
                 const stack_trace = large_alloc.getStackTrace(.alloc);
                 log.err("memory address 0x{x} leaked: {}", .{
-                    @ptrToInt(large_alloc.bytes.ptr), stack_trace,
+                    @intFromPtr(large_alloc.bytes.ptr), stack_trace,
                 });
                 leaks = true;
             }
@@ -427,7 +427,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                 var it = self.large_allocations.iterator();
                 while (it.next()) |large| {
                     if (large.value_ptr.freed) {
-                        _ = self.large_allocations.remove(@ptrToInt(large.value_ptr.bytes.ptr));
+                        _ = self.large_allocations.remove(@intFromPtr(large.value_ptr.bytes.ptr));
                     }
                 }
             }
@@ -444,7 +444,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                 self.small_allocations.deinit(self.backing_allocator);
             }
             self.* = undefined;
-            return @intToEnum(Check, @boolToInt(leaks));
+            return @enumFromInt(Check, @intFromBool(leaks));
         }
 
         fn collectStackTrace(first_trace_addr: usize, addresses: *[stack_n]usize) void {
@@ -510,8 +510,8 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             const first_bucket = bucket_list orelse return null;
             var bucket = first_bucket;
             while (true) {
-                const in_bucket_range = (addr >= @ptrToInt(bucket.page) and
-                    addr < @ptrToInt(bucket.page) + page_size);
+                const in_bucket_range = (addr >= @intFromPtr(bucket.page) and
+                    addr < @intFromPtr(bucket.page) + page_size);
                 if (in_bucket_range) return bucket;
                 bucket = bucket.prev;
                 if (bucket == first_bucket) {
@@ -529,7 +529,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             new_size: usize,
             ret_addr: usize,
         ) bool {
-            const entry = self.large_allocations.getEntry(@ptrToInt(old_mem.ptr)) orelse {
+            const entry = self.large_allocations.getEntry(@intFromPtr(old_mem.ptr)) orelse {
                 if (config.safety) {
                     @panic("Invalid free");
                 } else {
@@ -604,7 +604,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             log2_old_align: u8,
             ret_addr: usize,
         ) void {
-            const entry = self.large_allocations.getEntry(@ptrToInt(old_mem.ptr)) orelse {
+            const entry = self.large_allocations.getEntry(@intFromPtr(old_mem.ptr)) orelse {
                 if (config.safety) {
                     @panic("Invalid free");
                 } else {
@@ -649,7 +649,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             }
 
             if (!config.retain_metadata) {
-                assert(self.large_allocations.remove(@ptrToInt(old_mem.ptr)));
+                assert(self.large_allocations.remove(@intFromPtr(old_mem.ptr)));
             } else {
                 entry.value_ptr.freed = true;
                 entry.value_ptr.captureStackTrace(ret_addr, .free);
@@ -683,7 +683,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             var bucket_index = math.log2(size_class_hint);
             var size_class: usize = size_class_hint;
             const bucket = while (bucket_index < small_bucket_count) : (bucket_index += 1) {
-                if (searchBucket(self.buckets[bucket_index], @ptrToInt(old_mem.ptr))) |bucket| {
+                if (searchBucket(self.buckets[bucket_index], @intFromPtr(old_mem.ptr))) |bucket| {
                     // move bucket to head of list to optimize search for nearby allocations
                     self.buckets[bucket_index] = bucket;
                     break bucket;
@@ -691,9 +691,9 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                 size_class *= 2;
             } else blk: {
                 if (config.retain_metadata) {
-                    if (!self.large_allocations.contains(@ptrToInt(old_mem.ptr))) {
+                    if (!self.large_allocations.contains(@intFromPtr(old_mem.ptr))) {
                         // object not in active buckets or a large allocation, so search empty buckets
-                        if (searchBucket(self.empty_buckets, @ptrToInt(old_mem.ptr))) |bucket| {
+                        if (searchBucket(self.empty_buckets, @intFromPtr(old_mem.ptr))) |bucket| {
                             // bucket is empty so is_used below will always be false and we exit there
                             break :blk bucket;
                         } else {
@@ -703,7 +703,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                 }
                 return self.resizeLarge(old_mem, log2_old_align, new_size, ret_addr);
             };
-            const byte_offset = @ptrToInt(old_mem.ptr) - @ptrToInt(bucket.page);
+            const byte_offset = @intFromPtr(old_mem.ptr) - @intFromPtr(bucket.page);
             const slot_index = @intCast(SlotIndex, byte_offset / size_class);
             const used_byte_index = slot_index / 8;
             const used_bit_index = @intCast(u3, slot_index % 8);
@@ -720,7 +720,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
 
             // Definitely an in-use small alloc now.
             if (config.safety) {
-                const entry = self.small_allocations.getEntry(@ptrToInt(old_mem.ptr)) orelse
+                const entry = self.small_allocations.getEntry(@intFromPtr(old_mem.ptr)) orelse
                     @panic("Invalid free");
                 if (old_mem.len != entry.value_ptr.requested_size or log2_old_align != entry.value_ptr.log2_ptr_align) {
                     var addresses: [stack_n]usize = [1]usize{0} ** stack_n;
@@ -768,7 +768,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                     });
                 }
                 if (config.safety) {
-                    const entry = self.small_allocations.getEntry(@ptrToInt(old_mem.ptr)).?;
+                    const entry = self.small_allocations.getEntry(@intFromPtr(old_mem.ptr)).?;
                     entry.value_ptr.requested_size = new_size;
                 }
                 return true;
@@ -803,7 +803,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             var bucket_index = math.log2(size_class_hint);
             var size_class: usize = size_class_hint;
             const bucket = while (bucket_index < small_bucket_count) : (bucket_index += 1) {
-                if (searchBucket(self.buckets[bucket_index], @ptrToInt(old_mem.ptr))) |bucket| {
+                if (searchBucket(self.buckets[bucket_index], @intFromPtr(old_mem.ptr))) |bucket| {
                     // move bucket to head of list to optimize search for nearby allocations
                     self.buckets[bucket_index] = bucket;
                     break bucket;
@@ -811,9 +811,9 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                 size_class *= 2;
             } else blk: {
                 if (config.retain_metadata) {
-                    if (!self.large_allocations.contains(@ptrToInt(old_mem.ptr))) {
+                    if (!self.large_allocations.contains(@intFromPtr(old_mem.ptr))) {
                         // object not in active buckets or a large allocation, so search empty buckets
-                        if (searchBucket(self.empty_buckets, @ptrToInt(old_mem.ptr))) |bucket| {
+                        if (searchBucket(self.empty_buckets, @intFromPtr(old_mem.ptr))) |bucket| {
                             // bucket is empty so is_used below will always be false and we exit there
                             break :blk bucket;
                         } else {
@@ -824,7 +824,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                 self.freeLarge(old_mem, log2_old_align, ret_addr);
                 return;
             };
-            const byte_offset = @ptrToInt(old_mem.ptr) - @ptrToInt(bucket.page);
+            const byte_offset = @intFromPtr(old_mem.ptr) - @intFromPtr(bucket.page);
             const slot_index = @intCast(SlotIndex, byte_offset / size_class);
             const used_byte_index = slot_index / 8;
             const used_bit_index = @intCast(u3, slot_index % 8);
@@ -842,7 +842,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
 
             // Definitely an in-use small alloc now.
             if (config.safety) {
-                const entry = self.small_allocations.getEntry(@ptrToInt(old_mem.ptr)) orelse
+                const entry = self.small_allocations.getEntry(@intFromPtr(old_mem.ptr)) orelse
                     @panic("Invalid free");
                 if (old_mem.len != entry.value_ptr.requested_size or log2_old_align != entry.value_ptr.log2_ptr_align) {
                     var addresses: [stack_n]usize = [1]usize{0} ** stack_n;
@@ -915,7 +915,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                 @memset(old_mem, undefined);
             }
             if (config.safety) {
-                assert(self.small_allocations.remove(@ptrToInt(old_mem.ptr)));
+                assert(self.small_allocations.remove(@intFromPtr(old_mem.ptr)));
             }
             if (config.verbose_log) {
                 log.info("small free {d} bytes at {*}", .{ old_mem.len, old_mem.ptr });
@@ -956,7 +956,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
                     return error.OutOfMemory;
                 const slice = ptr[0..len];
 
-                const gop = self.large_allocations.getOrPutAssumeCapacity(@ptrToInt(slice.ptr));
+                const gop = self.large_allocations.getOrPutAssumeCapacity(@intFromPtr(slice.ptr));
                 if (config.retain_metadata and !config.never_unmap) {
                     // Backing allocator may be reusing memory that we're retaining metadata for
                     assert(!gop.found_existing or gop.value_ptr.freed);
@@ -986,7 +986,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
             const new_size_class = math.ceilPowerOfTwoAssert(usize, new_aligned_size);
             const ptr = try self.allocSlot(new_size_class, ret_addr);
             if (config.safety) {
-                const gop = self.small_allocations.getOrPutAssumeCapacity(@ptrToInt(ptr));
+                const gop = self.small_allocations.getOrPutAssumeCapacity(@intFromPtr(ptr));
                 gop.value_ptr.requested_size = len;
                 gop.value_ptr.log2_ptr_align = log2_ptr_align;
             }
@@ -1212,7 +1212,7 @@ test "shrink large object to large object with larger alignment" {
     // alignment. Then we shrink the allocation after the loop, but increase the
     // alignment to the higher one, that we know will force it to realloc.
     var stuff_to_free = std.ArrayList([]align(16) u8).init(debug_allocator);
-    while (mem.isAligned(@ptrToInt(slice.ptr), big_alignment)) {
+    while (mem.isAligned(@intFromPtr(slice.ptr), big_alignment)) {
         try stuff_to_free.append(slice);
         slice = try allocator.alignedAlloc(u8, 16, alloc_size);
     }
@@ -1281,7 +1281,7 @@ test "realloc large object to larger alignment" {
     };
     // This loop allocates until we find a page that is not aligned to the big alignment.
     var stuff_to_free = std.ArrayList([]align(16) u8).init(debug_allocator);
-    while (mem.isAligned(@ptrToInt(slice.ptr), big_alignment)) {
+    while (mem.isAligned(@intFromPtr(slice.ptr), big_alignment)) {
         try stuff_to_free.append(slice);
         slice = try allocator.alignedAlloc(u8, 16, page_size * 2 + 50);
     }
@@ -1375,18 +1375,18 @@ test "double frees" {
     const index: usize = 6;
     const size_class: usize = @as(usize, 1) << 6;
     const small = try allocator.alloc(u8, size_class);
-    try std.testing.expect(GPA.searchBucket(gpa.buckets[index], @ptrToInt(small.ptr)) != null);
+    try std.testing.expect(GPA.searchBucket(gpa.buckets[index], @intFromPtr(small.ptr)) != null);
     allocator.free(small);
-    try std.testing.expect(GPA.searchBucket(gpa.buckets[index], @ptrToInt(small.ptr)) == null);
-    try std.testing.expect(GPA.searchBucket(gpa.empty_buckets, @ptrToInt(small.ptr)) != null);
+    try std.testing.expect(GPA.searchBucket(gpa.buckets[index], @intFromPtr(small.ptr)) == null);
+    try std.testing.expect(GPA.searchBucket(gpa.empty_buckets, @intFromPtr(small.ptr)) != null);
 
     // detect a large allocation double free
     const large = try allocator.alloc(u8, 2 * page_size);
-    try std.testing.expect(gpa.large_allocations.contains(@ptrToInt(large.ptr)));
-    try std.testing.expectEqual(gpa.large_allocations.getEntry(@ptrToInt(large.ptr)).?.value_ptr.bytes, large);
+    try std.testing.expect(gpa.large_allocations.contains(@intFromPtr(large.ptr)));
+    try std.testing.expectEqual(gpa.large_allocations.getEntry(@intFromPtr(large.ptr)).?.value_ptr.bytes, large);
     allocator.free(large);
-    try std.testing.expect(gpa.large_allocations.contains(@ptrToInt(large.ptr)));
-    try std.testing.expect(gpa.large_allocations.getEntry(@ptrToInt(large.ptr)).?.value_ptr.freed);
+    try std.testing.expect(gpa.large_allocations.contains(@intFromPtr(large.ptr)));
+    try std.testing.expect(gpa.large_allocations.getEntry(@intFromPtr(large.ptr)).?.value_ptr.freed);
 
     const normal_small = try allocator.alloc(u8, size_class);
     defer allocator.free(normal_small);
@@ -1396,9 +1396,9 @@ test "double frees" {
     // check that flushing retained metadata doesn't disturb live allocations
     gpa.flushRetainedMetadata();
     try std.testing.expect(gpa.empty_buckets == null);
-    try std.testing.expect(GPA.searchBucket(gpa.buckets[index], @ptrToInt(normal_small.ptr)) != null);
-    try std.testing.expect(gpa.large_allocations.contains(@ptrToInt(normal_large.ptr)));
-    try std.testing.expect(!gpa.large_allocations.contains(@ptrToInt(large.ptr)));
+    try std.testing.expect(GPA.searchBucket(gpa.buckets[index], @intFromPtr(normal_small.ptr)) != null);
+    try std.testing.expect(gpa.large_allocations.contains(@intFromPtr(normal_large.ptr)));
+    try std.testing.expect(!gpa.large_allocations.contains(@intFromPtr(large.ptr)));
 }
 
 test "bug 9995 fix, large allocs count requested size not backing size" {
lib/std/heap/PageAllocator.zig
@@ -39,7 +39,7 @@ fn alloc(_: *anyopaque, n: usize, log2_align: u8, ra: usize) ?[*]u8 {
         -1,
         0,
     ) catch return null;
-    assert(mem.isAligned(@ptrToInt(slice.ptr), mem.page_size));
+    assert(mem.isAligned(@intFromPtr(slice.ptr), mem.page_size));
     const new_hint = @alignCast(mem.page_size, slice.ptr + aligned_len);
     _ = @cmpxchgStrong(@TypeOf(std.heap.next_mmap_addr_hint), &std.heap.next_mmap_addr_hint, hint, new_hint, .Monotonic, .Monotonic);
     return slice.ptr;
@@ -59,14 +59,14 @@ fn resize(
     if (builtin.os.tag == .windows) {
         const w = os.windows;
         if (new_size <= buf_unaligned.len) {
-            const base_addr = @ptrToInt(buf_unaligned.ptr);
+            const base_addr = @intFromPtr(buf_unaligned.ptr);
             const old_addr_end = base_addr + buf_unaligned.len;
             const new_addr_end = mem.alignForward(usize, base_addr + new_size, mem.page_size);
             if (old_addr_end > new_addr_end) {
                 // For shrinking that is not releasing, we will only
                 // decommit the pages not needed anymore.
                 w.VirtualFree(
-                    @intToPtr(*anyopaque, new_addr_end),
+                    @ptrFromInt(*anyopaque, new_addr_end),
                     old_addr_end - new_addr_end,
                     w.MEM_DECOMMIT,
                 );
lib/std/heap/WasmAllocator.zig
@@ -55,7 +55,7 @@ fn alloc(ctx: *anyopaque, len: usize, log2_align: u8, return_address: usize) ?[*
         const addr = a: {
             const top_free_ptr = frees[class];
             if (top_free_ptr != 0) {
-                const node = @intToPtr(*usize, top_free_ptr + (slot_size - @sizeOf(usize)));
+                const node = @ptrFromInt(*usize, top_free_ptr + (slot_size - @sizeOf(usize)));
                 frees[class] = node.*;
                 break :a top_free_ptr;
             }
@@ -74,11 +74,11 @@ fn alloc(ctx: *anyopaque, len: usize, log2_align: u8, return_address: usize) ?[*
                 break :a next_addr;
             }
         };
-        return @intToPtr([*]u8, addr);
+        return @ptrFromInt([*]u8, addr);
     }
     const bigpages_needed = bigPagesNeeded(actual_len);
     const addr = allocBigPages(bigpages_needed);
-    return @intToPtr([*]u8, addr);
+    return @ptrFromInt([*]u8, addr);
 }
 
 fn resize(
@@ -121,16 +121,16 @@ fn free(
     const actual_len = @max(buf.len + @sizeOf(usize), buf_align);
     const slot_size = math.ceilPowerOfTwoAssert(usize, actual_len);
     const class = math.log2(slot_size) - min_class;
-    const addr = @ptrToInt(buf.ptr);
+    const addr = @intFromPtr(buf.ptr);
     if (class < size_class_count) {
-        const node = @intToPtr(*usize, addr + (slot_size - @sizeOf(usize)));
+        const node = @ptrFromInt(*usize, addr + (slot_size - @sizeOf(usize)));
         node.* = frees[class];
         frees[class] = addr;
     } else {
         const bigpages_needed = bigPagesNeeded(actual_len);
         const pow2_pages = math.ceilPowerOfTwoAssert(usize, bigpages_needed);
         const big_slot_size_bytes = pow2_pages * bigpage_size;
-        const node = @intToPtr(*usize, addr + (big_slot_size_bytes - @sizeOf(usize)));
+        const node = @ptrFromInt(*usize, addr + (big_slot_size_bytes - @sizeOf(usize)));
         const big_class = math.log2(pow2_pages);
         node.* = big_frees[big_class];
         big_frees[big_class] = addr;
@@ -148,7 +148,7 @@ fn allocBigPages(n: usize) usize {
 
     const top_free_ptr = big_frees[class];
     if (top_free_ptr != 0) {
-        const node = @intToPtr(*usize, top_free_ptr + (slot_size_bytes - @sizeOf(usize)));
+        const node = @ptrFromInt(*usize, top_free_ptr + (slot_size_bytes - @sizeOf(usize)));
         big_frees[class] = node.*;
         return top_free_ptr;
     }
lib/std/heap/WasmPageAllocator.zig
@@ -40,14 +40,14 @@ const FreeBlock = struct {
 
     fn getBit(self: FreeBlock, idx: usize) PageStatus {
         const bit_offset = 0;
-        return @intToEnum(PageStatus, Io.get(mem.sliceAsBytes(self.data), idx, bit_offset));
+        return @enumFromInt(PageStatus, Io.get(mem.sliceAsBytes(self.data), idx, bit_offset));
     }
 
     fn setBits(self: FreeBlock, start_idx: usize, len: usize, val: PageStatus) void {
         const bit_offset = 0;
         var i: usize = 0;
         while (i < len) : (i += 1) {
-            Io.set(mem.sliceAsBytes(self.data), start_idx + i, bit_offset, @enumToInt(val));
+            Io.set(mem.sliceAsBytes(self.data), start_idx + i, bit_offset, @intFromEnum(val));
         }
     }
 
@@ -109,7 +109,7 @@ fn alloc(ctx: *anyopaque, len: usize, log2_align: u8, ra: usize) ?[*]u8 {
     if (len > maxInt(usize) - (mem.page_size - 1)) return null;
     const page_count = nPages(len);
     const page_idx = allocPages(page_count, log2_align) catch return null;
-    return @intToPtr([*]u8, page_idx * mem.page_size);
+    return @ptrFromInt([*]u8, page_idx * mem.page_size);
 }
 
 fn allocPages(page_count: usize, log2_align: u8) !usize {
@@ -151,7 +151,7 @@ fn freePages(start: usize, end: usize) void {
             // TODO: would it be better if we use the first page instead?
             new_end -= 1;
 
-            extended.data = @intToPtr([*]u128, new_end * mem.page_size)[0 .. mem.page_size / @sizeOf(u128)];
+            extended.data = @ptrFromInt([*]u128, new_end * mem.page_size)[0 .. mem.page_size / @sizeOf(u128)];
             // Since this is the first page being freed and we consume it, assume *nothing* is free.
             @memset(extended.data, PageStatus.none_free);
         }
@@ -175,7 +175,7 @@ fn resize(
     const current_n = nPages(aligned_len);
     const new_n = nPages(new_len);
     if (new_n != current_n) {
-        const base = nPages(@ptrToInt(buf.ptr));
+        const base = nPages(@intFromPtr(buf.ptr));
         freePages(base + new_n, base + current_n);
     }
     return true;
@@ -192,7 +192,7 @@ fn free(
     _ = return_address;
     const aligned_len = mem.alignForward(usize, buf.len, mem.page_size);
     const current_n = nPages(aligned_len);
-    const base = nPages(@ptrToInt(buf.ptr));
+    const base = nPages(@intFromPtr(buf.ptr));
     freePages(base, base + current_n);
 }
 
@@ -202,7 +202,7 @@ test "internals" {
 
     const conventional_memsize = WasmPageAllocator.conventional.totalPages() * mem.page_size;
     const initial = try page_allocator.alloc(u8, mem.page_size);
-    try testing.expect(@ptrToInt(initial.ptr) < conventional_memsize); // If this isn't conventional, the rest of these tests don't make sense. Also we have a serious memory leak in the test suite.
+    try testing.expect(@intFromPtr(initial.ptr) < conventional_memsize); // If this isn't conventional, the rest of these tests don't make sense. Also we have a serious memory leak in the test suite.
 
     var inplace = try page_allocator.realloc(initial, 1);
     try testing.expectEqual(initial.ptr, inplace.ptr);
@@ -219,7 +219,7 @@ test "internals" {
     page_allocator.free(padding);
 
     const ext = try page_allocator.alloc(u8, conventional_memsize);
-    try testing.expect(@ptrToInt(ext.ptr) >= conventional_memsize);
+    try testing.expect(@intFromPtr(ext.ptr) >= conventional_memsize);
 
     const use_small = try page_allocator.alloc(u8, 1);
     try testing.expectEqual(initial.ptr, use_small.ptr);
lib/std/http/Client.zig
@@ -343,7 +343,7 @@ pub const Response = struct {
             else => return error.HttpHeadersInvalid,
         };
         if (first_line[8] != ' ') return error.HttpHeadersInvalid;
-        const status = @intToEnum(http.Status, parseInt3(first_line[9..12].*));
+        const status = @enumFromInt(http.Status, parseInt3(first_line[9..12].*));
         const reason = mem.trimLeft(u8, first_line[12..], " ");
 
         res.version = version;
lib/std/http/Server.zig
@@ -402,7 +402,7 @@ pub const Response = struct {
 
         try w.writeAll(@tagName(res.version));
         try w.writeByte(' ');
-        try w.print("{d}", .{@enumToInt(res.status)});
+        try w.print("{d}", .{@intFromEnum(res.status)});
         try w.writeByte(' ');
         if (res.reason) |reason| {
             try w.writeAll(reason);
lib/std/io/bit_reader.zig
@@ -143,7 +143,7 @@ pub fn BitReader(comptime endian: std.builtin.Endian, comptime ReaderType: type)
                     b.* = try self.readBits(u8, u8_bit_count, &out_bits);
                     out_bits_total += out_bits;
                 }
-                const incomplete_byte = @boolToInt(out_bits_total % u8_bit_count > 0);
+                const incomplete_byte = @intFromBool(out_bits_total % u8_bit_count > 0);
                 return (out_bits_total / u8_bit_count) + incomplete_byte;
             }
 
lib/std/io/c_writer.zig
@@ -13,7 +13,7 @@ pub fn cWriter(c_file: *std.c.FILE) CWriter {
 fn cWriterWrite(c_file: *std.c.FILE, bytes: []const u8) std.fs.File.WriteError!usize {
     const amt_written = std.c.fwrite(bytes.ptr, 1, bytes.len, c_file);
     if (amt_written >= 0) return amt_written;
-    switch (@intToEnum(os.E, std.c._errno().*)) {
+    switch (@enumFromInt(os.E, std.c._errno().*)) {
         .SUCCESS => unreachable,
         .INVAL => unreachable,
         .FAULT => unreachable,
lib/std/json/static.zig
@@ -176,7 +176,7 @@ fn parseInternal(
             const float = try std.fmt.parseFloat(f128, slice);
             if (@round(float) != float) return error.InvalidNumber;
             if (float > std.math.maxInt(T) or float < std.math.minInt(T)) return error.Overflow;
-            return @floatToInt(T, float);
+            return @intFromFloat(T, float);
         },
         .Optional => |optionalInfo| {
             switch (try source.peekNextTokenType()) {
lib/std/math/big/int.zig
@@ -1127,7 +1127,7 @@ pub const Mutable = struct {
             return;
         }
 
-        const checkbit = bit_count - shift - @boolToInt(signedness == .signed);
+        const checkbit = bit_count - shift - @intFromBool(signedness == .signed);
         // If `checkbit` and more significant bits are zero, no overflow will take place.
 
         if (checkbit >= a.limbs.len * limb_bits) {
@@ -1274,10 +1274,10 @@ pub const Mutable = struct {
 
         if (a.limbs.len > b.limbs.len) {
             r.positive = llsignedxor(r.limbs, a.limbs, a.positive, b.limbs, b.positive);
-            r.normalize(a.limbs.len + @boolToInt(a.positive != b.positive));
+            r.normalize(a.limbs.len + @intFromBool(a.positive != b.positive));
         } else {
             r.positive = llsignedxor(r.limbs, b.limbs, b.positive, a.limbs, a.positive);
-            r.normalize(b.limbs.len + @boolToInt(a.positive != b.positive));
+            r.normalize(b.limbs.len + @intFromBool(a.positive != b.positive));
         }
     }
 
@@ -2128,7 +2128,7 @@ pub const Const = struct {
             return false;
         }
 
-        const req_bits = self.bitCountTwosComp() + @boolToInt(self.positive and signedness == .signed);
+        const req_bits = self.bitCountTwosComp() + @intFromBool(self.positive and signedness == .signed);
         return bit_count >= req_bits;
     }
 
@@ -2143,7 +2143,7 @@ pub const Const = struct {
     /// value. It is inexact and may exceed the given value by ~1-2 bytes.
     /// TODO See if we can make this exact.
     pub fn sizeInBaseUpperBound(self: Const, base: usize) usize {
-        const bit_count = @as(usize, @boolToInt(!self.positive)) + self.bitCountAbs();
+        const bit_count = @as(usize, @intFromBool(!self.positive)) + self.bitCountAbs();
         return (bit_count / math.log2(base)) + 2;
     }
 
@@ -3143,7 +3143,7 @@ pub const Managed = struct {
 
     /// r = a ^ b
     pub fn bitXor(r: *Managed, a: *const Managed, b: *const Managed) !void {
-        var cap = @max(a.len(), b.len()) + @boolToInt(a.isPositive() != b.isPositive());
+        var cap = @max(a.len(), b.len()) + @intFromBool(a.isPositive() != b.isPositive());
         try r.ensureCapacity(cap);
 
         var m = r.toMutable();
@@ -4048,9 +4048,9 @@ fn llsignedxor(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_
     // - if the result is supposed to be negative, add 1.
 
     var i: usize = 0;
-    var a_borrow = @boolToInt(!a_positive);
-    var b_borrow = @boolToInt(!b_positive);
-    var r_carry = @boolToInt(a_positive != b_positive);
+    var a_borrow = @intFromBool(!a_positive);
+    var b_borrow = @intFromBool(!b_positive);
+    var r_carry = @intFromBool(a_positive != b_positive);
 
     while (i < b.len) : (i += 1) {
         const ov1 = @subWithOverflow(a[i], a_borrow);
lib/std/math/big/rational.zig
@@ -276,7 +276,7 @@ pub const Rational = struct {
         }
         mantissa >>= 1;
 
-        const f = math.scalbn(@intToFloat(T, mantissa), @intCast(i32, exp - msize1));
+        const f = math.scalbn(@floatFromInt(T, mantissa), @intCast(i32, exp - msize1));
         if (math.isInf(f)) {
             exact = false;
         }
@@ -289,7 +289,7 @@ pub const Rational = struct {
         try self.p.set(p);
         try self.q.set(q);
 
-        self.p.setSign(@boolToInt(self.p.isPositive()) ^ @boolToInt(self.q.isPositive()) == 0);
+        self.p.setSign(@intFromBool(self.p.isPositive()) ^ @intFromBool(self.q.isPositive()) == 0);
         self.q.setSign(true);
 
         try self.reduce();
@@ -310,7 +310,7 @@ pub const Rational = struct {
         try self.p.copy(a.toConst());
         try self.q.copy(b.toConst());
 
-        self.p.setSign(@boolToInt(self.p.isPositive()) ^ @boolToInt(self.q.isPositive()) == 0);
+        self.p.setSign(@intFromBool(self.p.isPositive()) ^ @intFromBool(self.q.isPositive()) == 0);
         self.q.setSign(true);
 
         try self.reduce();
lib/std/math/complex/atan.zig
@@ -32,7 +32,7 @@ fn redupif32(x: f32) f32 {
         t -= 0.5;
     }
 
-    const u = @intToFloat(f32, @floatToInt(i32, t));
+    const u = @floatFromInt(f32, @intFromFloat(i32, t));
     return ((x - u * DP1) - u * DP2) - t * DP3;
 }
 
@@ -81,7 +81,7 @@ fn redupif64(x: f64) f64 {
         t -= 0.5;
     }
 
-    const u = @intToFloat(f64, @floatToInt(i64, t));
+    const u = @floatFromInt(f64, @intFromFloat(i64, t));
     return ((x - u * DP1) - u * DP2) - t * DP3;
 }
 
lib/std/math/expm1.zig
@@ -88,8 +88,8 @@ fn expm1_32(x_: f32) f32 {
                 kf += 0.5;
             }
 
-            k = @floatToInt(i32, kf);
-            const t = @intToFloat(f32, k);
+            k = @intFromFloat(i32, kf);
+            const t = @floatFromInt(f32, k);
             hi = x - t * ln2_hi;
             lo = t * ln2_lo;
         }
@@ -219,8 +219,8 @@ fn expm1_64(x_: f64) f64 {
                 kf += 0.5;
             }
 
-            k = @floatToInt(i32, kf);
-            const t = @intToFloat(f64, k);
+            k = @intFromFloat(i32, kf);
+            const t = @floatFromInt(f64, k);
             hi = x - t * ln2_hi;
             lo = t * ln2_lo;
         }
lib/std/math/ilogb.zig
@@ -48,7 +48,7 @@ fn ilogbX(comptime T: type, x: T) i32 {
         }
 
         // offset sign bit, exponent bits, and integer bit (if present) + bias
-        const offset = 1 + exponentBits + @as(comptime_int, @boolToInt(T == f80)) - exponentBias;
+        const offset = 1 + exponentBits + @as(comptime_int, @intFromBool(T == f80)) - exponentBias;
         return offset - @intCast(i32, @clz(u));
     }
 
lib/std/math/ldexp.zig
@@ -24,7 +24,7 @@ pub fn ldexp(x: anytype, n: i32) @TypeOf(x) {
 
     var exponent: i32 = @intCast(i32, (repr << 1) >> (mantissa_bits + 1));
     if (exponent == 0)
-        exponent += (@as(i32, exponent_bits) + @boolToInt(T == f80)) - @clz(repr << 1);
+        exponent += (@as(i32, exponent_bits) + @intFromBool(T == f80)) - @clz(repr << 1);
 
     if (n >= 0) {
         if (n > max_biased_exponent - exponent) {
@@ -53,11 +53,11 @@ pub fn ldexp(x: anytype, n: i32) @TypeOf(x) {
             var result = repr & mantissa_mask;
 
             if (T != f80) // Include integer bit
-                result |= @as(TBits, @boolToInt(exponent > 0)) << fractional_bits;
+                result |= @as(TBits, @intFromBool(exponent > 0)) << fractional_bits;
             result = @intCast(TBits, (result >> (shift - 1)));
 
             // Round result, including round-to-even for exact ties
-            result = ((result + 1) >> 1) & ~@as(TBits, @boolToInt(exact_tie));
+            result = ((result + 1) >> 1) & ~@as(TBits, @intFromBool(exact_tie));
             return @bitCast(T, result | sign_bit);
         }
 
lib/std/math/log.zig
@@ -30,7 +30,7 @@ pub fn log(comptime T: type, base: T, x: T) T {
         // TODO implement integer log without using float math
         .Int => |IntType| switch (IntType.signedness) {
             .signed => @compileError("log not implemented for signed integers"),
-            .unsigned => return @floatToInt(T, @floor(@log(@intToFloat(f64, x)) / @log(float_base))),
+            .unsigned => return @intFromFloat(T, @floor(@log(@floatFromInt(f64, x)) / @log(float_base))),
         },
 
         .Float => {
lib/std/math/log10.zig
@@ -134,7 +134,7 @@ inline fn less_than_5(x: u32) u32 {
 }
 
 fn oldlog10(x: anytype) u8 {
-    return @floatToInt(u8, @log10(@intToFloat(f64, x)));
+    return @intFromFloat(u8, @log10(@floatFromInt(f64, x)));
 }
 
 test "oldlog10 doesn't work" {
lib/std/math/log1p.zig
@@ -96,7 +96,7 @@ fn log1p_32(x: f32) f32 {
     const t2 = z * (Lg1 + w * Lg3);
     const R = t2 + t1;
     const hfsq = 0.5 * f * f;
-    const dk = @intToFloat(f32, k);
+    const dk = @floatFromInt(f32, k);
 
     return s * (hfsq + R) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;
 }
@@ -176,7 +176,7 @@ fn log1p_64(x: f64) f64 {
     const t1 = w * (Lg2 + w * (Lg4 + w * Lg6));
     const t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));
     const R = t2 + t1;
-    const dk = @intToFloat(f64, k);
+    const dk = @floatFromInt(f64, k);
 
     return s * (hfsq + R) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;
 }
lib/std/math/pow.zig
@@ -144,7 +144,7 @@ pub fn pow(comptime T: type, x: T, y: T) T {
     var xe = r2.exponent;
     var x1 = r2.significand;
 
-    var i = @floatToInt(std.meta.Int(.signed, @typeInfo(T).Float.bits), yi);
+    var i = @intFromFloat(std.meta.Int(.signed, @typeInfo(T).Float.bits), yi);
     while (i != 0) : (i >>= 1) {
         const overflow_shift = math.floatExponentBits(T) + 1;
         if (xe < -(1 << overflow_shift) or (1 << overflow_shift) < xe) {
@@ -179,7 +179,7 @@ pub fn pow(comptime T: type, x: T, y: T) T {
 
 fn isOddInteger(x: f64) bool {
     const r = math.modf(x);
-    return r.fpart == 0.0 and @floatToInt(i64, r.ipart) & 1 == 1;
+    return r.fpart == 0.0 and @intFromFloat(i64, r.ipart) & 1 == 1;
 }
 
 test "math.pow" {
lib/std/mem/Allocator.zig
@@ -101,7 +101,7 @@ pub inline fn rawFree(self: Allocator, buf: []u8, log2_buf_align: u8, ret_addr:
 /// Returns a pointer to undefined memory.
 /// Call `destroy` with the result to free the memory.
 pub fn create(self: Allocator, comptime T: type) Error!*T {
-    if (@sizeOf(T) == 0) return @intToPtr(*T, math.maxInt(usize));
+    if (@sizeOf(T) == 0) return @ptrFromInt(*T, math.maxInt(usize));
     const slice = try self.allocAdvancedWithRetAddr(T, null, 1, @returnAddress());
     return &slice[0];
 }
@@ -209,7 +209,7 @@ pub fn allocAdvancedWithRetAddr(
 
     if (n == 0) {
         const ptr = comptime std.mem.alignBackward(usize, math.maxInt(usize), a);
-        return @intToPtr([*]align(a) T, ptr)[0..0];
+        return @ptrFromInt([*]align(a) T, ptr)[0..0];
     }
 
     const byte_count = math.mul(usize, @sizeOf(T), n) catch return Error.OutOfMemory;
@@ -268,13 +268,13 @@ pub fn reallocAdvanced(
     if (new_n == 0) {
         self.free(old_mem);
         const ptr = comptime std.mem.alignBackward(usize, math.maxInt(usize), Slice.alignment);
-        return @intToPtr([*]align(Slice.alignment) T, ptr)[0..0];
+        return @ptrFromInt([*]align(Slice.alignment) T, ptr)[0..0];
     }
 
     const old_byte_slice = mem.sliceAsBytes(old_mem);
     const byte_count = math.mul(usize, @sizeOf(T), new_n) catch return Error.OutOfMemory;
     // Note: can't set shrunk memory to undefined as memory shouldn't be modified on realloc failure
-    if (mem.isAligned(@ptrToInt(old_byte_slice.ptr), Slice.alignment)) {
+    if (mem.isAligned(@intFromPtr(old_byte_slice.ptr), Slice.alignment)) {
         if (self.rawResize(old_byte_slice, log2a(Slice.alignment), byte_count, return_address)) {
             return mem.bytesAsSlice(T, @alignCast(Slice.alignment, old_byte_slice.ptr[0..byte_count]));
         }
lib/std/meta/trailer_flags.zig
@@ -43,7 +43,7 @@ pub fn TrailerFlags(comptime Fields: type) type {
         pub const Self = @This();
 
         pub fn has(self: Self, comptime field: FieldEnum) bool {
-            const field_index = @enumToInt(field);
+            const field_index = @intFromEnum(field);
             return (self.bits & (1 << field_index)) != 0;
         }
 
@@ -54,7 +54,7 @@ pub fn TrailerFlags(comptime Fields: type) type {
         }
 
         pub fn setFlag(self: *Self, comptime field: FieldEnum) void {
-            const field_index = @enumToInt(field);
+            const field_index = @intFromEnum(field);
             self.bits |= 1 << field_index;
         }
 
@@ -72,7 +72,7 @@ pub fn TrailerFlags(comptime Fields: type) type {
         pub fn setMany(self: Self, p: [*]align(@alignOf(Fields)) u8, fields: FieldValues) void {
             inline for (@typeInfo(Fields).Struct.fields, 0..) |field, i| {
                 if (@field(fields, field.name)) |value|
-                    self.set(p, @intToEnum(FieldEnum, i), value);
+                    self.set(p, @enumFromInt(FieldEnum, i), value);
             }
         }
 
@@ -103,7 +103,7 @@ pub fn TrailerFlags(comptime Fields: type) type {
             var off: usize = 0;
             inline for (@typeInfo(Fields).Struct.fields, 0..) |field_info, i| {
                 const active = (self.bits & (1 << i)) != 0;
-                if (i == @enumToInt(field)) {
+                if (i == @intFromEnum(field)) {
                     assert(active);
                     return mem.alignForward(usize, off, @alignOf(field_info.type));
                 } else if (active) {
@@ -114,7 +114,7 @@ pub fn TrailerFlags(comptime Fields: type) type {
         }
 
         pub fn Field(comptime field: FieldEnum) type {
-            return @typeInfo(Fields).Struct.fields[@enumToInt(field)].type;
+            return @typeInfo(Fields).Struct.fields[@intFromEnum(field)].type;
         }
 
         pub fn sizeInBytes(self: Self) usize {
lib/std/os/linux/bpf/helpers.zig
@@ -11,147 +11,147 @@ const SkFullSock = @compileError("TODO missing os bits: SkFullSock");
 //
 // Note, these function signatures were created from documentation found in
 // '/usr/include/linux/bpf.h'
-pub const map_lookup_elem = @intToPtr(*const fn (map: *const kern.MapDef, key: ?*const anyopaque) ?*anyopaque, 1);
-pub const map_update_elem = @intToPtr(*const fn (map: *const kern.MapDef, key: ?*const anyopaque, value: ?*const anyopaque, flags: u64) c_long, 2);
-pub const map_delete_elem = @intToPtr(*const fn (map: *const kern.MapDef, key: ?*const anyopaque) c_long, 3);
-pub const probe_read = @intToPtr(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 4);
-pub const ktime_get_ns = @intToPtr(*const fn () u64, 5);
-pub const trace_printk = @intToPtr(*const fn (fmt: [*:0]const u8, fmt_size: u32, arg1: u64, arg2: u64, arg3: u64) c_long, 6);
-pub const get_prandom_u32 = @intToPtr(*const fn () u32, 7);
-pub const get_smp_processor_id = @intToPtr(*const fn () u32, 8);
-pub const skb_store_bytes = @intToPtr(*const fn (skb: *kern.SkBuff, offset: u32, from: ?*const anyopaque, len: u32, flags: u64) c_long, 9);
-pub const l3_csum_replace = @intToPtr(*const fn (skb: *kern.SkBuff, offset: u32, from: u64, to: u64, size: u64) c_long, 10);
-pub const l4_csum_replace = @intToPtr(*const fn (skb: *kern.SkBuff, offset: u32, from: u64, to: u64, flags: u64) c_long, 11);
-pub const tail_call = @intToPtr(*const fn (ctx: ?*anyopaque, prog_array_map: *const kern.MapDef, index: u32) c_long, 12);
-pub const clone_redirect = @intToPtr(*const fn (skb: *kern.SkBuff, ifindex: u32, flags: u64) c_long, 13);
-pub const get_current_pid_tgid = @intToPtr(*const fn () u64, 14);
-pub const get_current_uid_gid = @intToPtr(*const fn () u64, 15);
-pub const get_current_comm = @intToPtr(*const fn (buf: ?*anyopaque, size_of_buf: u32) c_long, 16);
-pub const get_cgroup_classid = @intToPtr(*const fn (skb: *kern.SkBuff) u32, 17);
+pub const map_lookup_elem = @ptrFromInt(*const fn (map: *const kern.MapDef, key: ?*const anyopaque) ?*anyopaque, 1);
+pub const map_update_elem = @ptrFromInt(*const fn (map: *const kern.MapDef, key: ?*const anyopaque, value: ?*const anyopaque, flags: u64) c_long, 2);
+pub const map_delete_elem = @ptrFromInt(*const fn (map: *const kern.MapDef, key: ?*const anyopaque) c_long, 3);
+pub const probe_read = @ptrFromInt(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 4);
+pub const ktime_get_ns = @ptrFromInt(*const fn () u64, 5);
+pub const trace_printk = @ptrFromInt(*const fn (fmt: [*:0]const u8, fmt_size: u32, arg1: u64, arg2: u64, arg3: u64) c_long, 6);
+pub const get_prandom_u32 = @ptrFromInt(*const fn () u32, 7);
+pub const get_smp_processor_id = @ptrFromInt(*const fn () u32, 8);
+pub const skb_store_bytes = @ptrFromInt(*const fn (skb: *kern.SkBuff, offset: u32, from: ?*const anyopaque, len: u32, flags: u64) c_long, 9);
+pub const l3_csum_replace = @ptrFromInt(*const fn (skb: *kern.SkBuff, offset: u32, from: u64, to: u64, size: u64) c_long, 10);
+pub const l4_csum_replace = @ptrFromInt(*const fn (skb: *kern.SkBuff, offset: u32, from: u64, to: u64, flags: u64) c_long, 11);
+pub const tail_call = @ptrFromInt(*const fn (ctx: ?*anyopaque, prog_array_map: *const kern.MapDef, index: u32) c_long, 12);
+pub const clone_redirect = @ptrFromInt(*const fn (skb: *kern.SkBuff, ifindex: u32, flags: u64) c_long, 13);
+pub const get_current_pid_tgid = @ptrFromInt(*const fn () u64, 14);
+pub const get_current_uid_gid = @ptrFromInt(*const fn () u64, 15);
+pub const get_current_comm = @ptrFromInt(*const fn (buf: ?*anyopaque, size_of_buf: u32) c_long, 16);
+pub const get_cgroup_classid = @ptrFromInt(*const fn (skb: *kern.SkBuff) u32, 17);
 // Note vlan_proto is big endian
-pub const skb_vlan_push = @intToPtr(*const fn (skb: *kern.SkBuff, vlan_proto: u16, vlan_tci: u16) c_long, 18);
-pub const skb_vlan_pop = @intToPtr(*const fn (skb: *kern.SkBuff) c_long, 19);
-pub const skb_get_tunnel_key = @intToPtr(*const fn (skb: *kern.SkBuff, key: *kern.TunnelKey, size: u32, flags: u64) c_long, 20);
-pub const skb_set_tunnel_key = @intToPtr(*const fn (skb: *kern.SkBuff, key: *kern.TunnelKey, size: u32, flags: u64) c_long, 21);
-pub const perf_event_read = @intToPtr(*const fn (map: *const kern.MapDef, flags: u64) u64, 22);
-pub const redirect = @intToPtr(*const fn (ifindex: u32, flags: u64) c_long, 23);
-pub const get_route_realm = @intToPtr(*const fn (skb: *kern.SkBuff) u32, 24);
-pub const perf_event_output = @intToPtr(*const fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64, data: ?*anyopaque, size: u64) c_long, 25);
-pub const skb_load_bytes = @intToPtr(*const fn (skb: ?*anyopaque, offset: u32, to: ?*anyopaque, len: u32) c_long, 26);
-pub const get_stackid = @intToPtr(*const fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64) c_long, 27);
+pub const skb_vlan_push = @ptrFromInt(*const fn (skb: *kern.SkBuff, vlan_proto: u16, vlan_tci: u16) c_long, 18);
+pub const skb_vlan_pop = @ptrFromInt(*const fn (skb: *kern.SkBuff) c_long, 19);
+pub const skb_get_tunnel_key = @ptrFromInt(*const fn (skb: *kern.SkBuff, key: *kern.TunnelKey, size: u32, flags: u64) c_long, 20);
+pub const skb_set_tunnel_key = @ptrFromInt(*const fn (skb: *kern.SkBuff, key: *kern.TunnelKey, size: u32, flags: u64) c_long, 21);
+pub const perf_event_read = @ptrFromInt(*const fn (map: *const kern.MapDef, flags: u64) u64, 22);
+pub const redirect = @ptrFromInt(*const fn (ifindex: u32, flags: u64) c_long, 23);
+pub const get_route_realm = @ptrFromInt(*const fn (skb: *kern.SkBuff) u32, 24);
+pub const perf_event_output = @ptrFromInt(*const fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64, data: ?*anyopaque, size: u64) c_long, 25);
+pub const skb_load_bytes = @ptrFromInt(*const fn (skb: ?*anyopaque, offset: u32, to: ?*anyopaque, len: u32) c_long, 26);
+pub const get_stackid = @ptrFromInt(*const fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64) c_long, 27);
 // from and to point to __be32
-pub const csum_diff = @intToPtr(*const fn (from: *u32, from_size: u32, to: *u32, to_size: u32, seed: u32) i64, 28);
-pub const skb_get_tunnel_opt = @intToPtr(*const fn (skb: *kern.SkBuff, opt: ?*anyopaque, size: u32) c_long, 29);
-pub const skb_set_tunnel_opt = @intToPtr(*const fn (skb: *kern.SkBuff, opt: ?*anyopaque, size: u32) c_long, 30);
+pub const csum_diff = @ptrFromInt(*const fn (from: *u32, from_size: u32, to: *u32, to_size: u32, seed: u32) i64, 28);
+pub const skb_get_tunnel_opt = @ptrFromInt(*const fn (skb: *kern.SkBuff, opt: ?*anyopaque, size: u32) c_long, 29);
+pub const skb_set_tunnel_opt = @ptrFromInt(*const fn (skb: *kern.SkBuff, opt: ?*anyopaque, size: u32) c_long, 30);
 // proto is __be16
-pub const skb_change_proto = @intToPtr(*const fn (skb: *kern.SkBuff, proto: u16, flags: u64) c_long, 31);
-pub const skb_change_type = @intToPtr(*const fn (skb: *kern.SkBuff, skb_type: u32) c_long, 32);
-pub const skb_under_cgroup = @intToPtr(*const fn (skb: *kern.SkBuff, map: ?*const anyopaque, index: u32) c_long, 33);
-pub const get_hash_recalc = @intToPtr(*const fn (skb: *kern.SkBuff) u32, 34);
-pub const get_current_task = @intToPtr(*const fn () u64, 35);
-pub const probe_write_user = @intToPtr(*const fn (dst: ?*anyopaque, src: ?*const anyopaque, len: u32) c_long, 36);
-pub const current_task_under_cgroup = @intToPtr(*const fn (map: *const kern.MapDef, index: u32) c_long, 37);
-pub const skb_change_tail = @intToPtr(*const fn (skb: *kern.SkBuff, len: u32, flags: u64) c_long, 38);
-pub const skb_pull_data = @intToPtr(*const fn (skb: *kern.SkBuff, len: u32) c_long, 39);
-pub const csum_update = @intToPtr(*const fn (skb: *kern.SkBuff, csum: u32) i64, 40);
-pub const set_hash_invalid = @intToPtr(*const fn (skb: *kern.SkBuff) void, 41);
-pub const get_numa_node_id = @intToPtr(*const fn () c_long, 42);
-pub const skb_change_head = @intToPtr(*const fn (skb: *kern.SkBuff, len: u32, flags: u64) c_long, 43);
-pub const xdp_adjust_head = @intToPtr(*const fn (xdp_md: *kern.XdpMd, delta: c_int) c_long, 44);
-pub const probe_read_str = @intToPtr(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 45);
-pub const get_socket_cookie = @intToPtr(*const fn (ctx: ?*anyopaque) u64, 46);
-pub const get_socket_uid = @intToPtr(*const fn (skb: *kern.SkBuff) u32, 47);
-pub const set_hash = @intToPtr(*const fn (skb: *kern.SkBuff, hash: u32) c_long, 48);
-pub const setsockopt = @intToPtr(*const fn (bpf_socket: *kern.SockOps, level: c_int, optname: c_int, optval: ?*anyopaque, optlen: c_int) c_long, 49);
-pub const skb_adjust_room = @intToPtr(*const fn (skb: *kern.SkBuff, len_diff: i32, mode: u32, flags: u64) c_long, 50);
-pub const redirect_map = @intToPtr(*const fn (map: *const kern.MapDef, key: u32, flags: u64) c_long, 51);
-pub const sk_redirect_map = @intToPtr(*const fn (skb: *kern.SkBuff, map: *const kern.MapDef, key: u32, flags: u64) c_long, 52);
-pub const sock_map_update = @intToPtr(*const fn (skops: *kern.SockOps, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 53);
-pub const xdp_adjust_meta = @intToPtr(*const fn (xdp_md: *kern.XdpMd, delta: c_int) c_long, 54);
-pub const perf_event_read_value = @intToPtr(*const fn (map: *const kern.MapDef, flags: u64, buf: *kern.PerfEventValue, buf_size: u32) c_long, 55);
-pub const perf_prog_read_value = @intToPtr(*const fn (ctx: *kern.PerfEventData, buf: *kern.PerfEventValue, buf_size: u32) c_long, 56);
-pub const getsockopt = @intToPtr(*const fn (bpf_socket: ?*anyopaque, level: c_int, optname: c_int, optval: ?*anyopaque, optlen: c_int) c_long, 57);
-pub const override_return = @intToPtr(*const fn (regs: *PtRegs, rc: u64) c_long, 58);
-pub const sock_ops_cb_flags_set = @intToPtr(*const fn (bpf_sock: *kern.SockOps, argval: c_int) c_long, 59);
-pub const msg_redirect_map = @intToPtr(*const fn (msg: *kern.SkMsgMd, map: *const kern.MapDef, key: u32, flags: u64) c_long, 60);
-pub const msg_apply_bytes = @intToPtr(*const fn (msg: *kern.SkMsgMd, bytes: u32) c_long, 61);
-pub const msg_cork_bytes = @intToPtr(*const fn (msg: *kern.SkMsgMd, bytes: u32) c_long, 62);
-pub const msg_pull_data = @intToPtr(*const fn (msg: *kern.SkMsgMd, start: u32, end: u32, flags: u64) c_long, 63);
-pub const bind = @intToPtr(*const fn (ctx: *kern.BpfSockAddr, addr: *kern.SockAddr, addr_len: c_int) c_long, 64);
-pub const xdp_adjust_tail = @intToPtr(*const fn (xdp_md: *kern.XdpMd, delta: c_int) c_long, 65);
-pub const skb_get_xfrm_state = @intToPtr(*const fn (skb: *kern.SkBuff, index: u32, xfrm_state: *kern.XfrmState, size: u32, flags: u64) c_long, 66);
-pub const get_stack = @intToPtr(*const fn (ctx: ?*anyopaque, buf: ?*anyopaque, size: u32, flags: u64) c_long, 67);
-pub const skb_load_bytes_relative = @intToPtr(*const fn (skb: ?*const anyopaque, offset: u32, to: ?*anyopaque, len: u32, start_header: u32) c_long, 68);
-pub const fib_lookup = @intToPtr(*const fn (ctx: ?*anyopaque, params: *kern.FibLookup, plen: c_int, flags: u32) c_long, 69);
-pub const sock_hash_update = @intToPtr(*const fn (skops: *kern.SockOps, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 70);
-pub const msg_redirect_hash = @intToPtr(*const fn (msg: *kern.SkMsgMd, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 71);
-pub const sk_redirect_hash = @intToPtr(*const fn (skb: *kern.SkBuff, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 72);
-pub const lwt_push_encap = @intToPtr(*const fn (skb: *kern.SkBuff, typ: u32, hdr: ?*anyopaque, len: u32) c_long, 73);
-pub const lwt_seg6_store_bytes = @intToPtr(*const fn (skb: *kern.SkBuff, offset: u32, from: ?*const anyopaque, len: u32) c_long, 74);
-pub const lwt_seg6_adjust_srh = @intToPtr(*const fn (skb: *kern.SkBuff, offset: u32, delta: i32) c_long, 75);
-pub const lwt_seg6_action = @intToPtr(*const fn (skb: *kern.SkBuff, action: u32, param: ?*anyopaque, param_len: u32) c_long, 76);
-pub const rc_repeat = @intToPtr(*const fn (ctx: ?*anyopaque) c_long, 77);
-pub const rc_keydown = @intToPtr(*const fn (ctx: ?*anyopaque, protocol: u32, scancode: u64, toggle: u32) c_long, 78);
-pub const skb_cgroup_id = @intToPtr(*const fn (skb: *kern.SkBuff) u64, 79);
-pub const get_current_cgroup_id = @intToPtr(*const fn () u64, 80);
-pub const get_local_storage = @intToPtr(*const fn (map: ?*anyopaque, flags: u64) ?*anyopaque, 81);
-pub const sk_select_reuseport = @intToPtr(*const fn (reuse: *kern.SkReusePortMd, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 82);
-pub const skb_ancestor_cgroup_id = @intToPtr(*const fn (skb: *kern.SkBuff, ancestor_level: c_int) u64, 83);
-pub const sk_lookup_tcp = @intToPtr(*const fn (ctx: ?*anyopaque, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 84);
-pub const sk_lookup_udp = @intToPtr(*const fn (ctx: ?*anyopaque, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 85);
-pub const sk_release = @intToPtr(*const fn (sock: *kern.Sock) c_long, 86);
-pub const map_push_elem = @intToPtr(*const fn (map: *const kern.MapDef, value: ?*const anyopaque, flags: u64) c_long, 87);
-pub const map_pop_elem = @intToPtr(*const fn (map: *const kern.MapDef, value: ?*anyopaque) c_long, 88);
-pub const map_peek_elem = @intToPtr(*const fn (map: *const kern.MapDef, value: ?*anyopaque) c_long, 89);
-pub const msg_push_data = @intToPtr(*const fn (msg: *kern.SkMsgMd, start: u32, len: u32, flags: u64) c_long, 90);
-pub const msg_pop_data = @intToPtr(*const fn (msg: *kern.SkMsgMd, start: u32, len: u32, flags: u64) c_long, 91);
-pub const rc_pointer_rel = @intToPtr(*const fn (ctx: ?*anyopaque, rel_x: i32, rel_y: i32) c_long, 92);
-pub const spin_lock = @intToPtr(*const fn (lock: *kern.SpinLock) c_long, 93);
-pub const spin_unlock = @intToPtr(*const fn (lock: *kern.SpinLock) c_long, 94);
-pub const sk_fullsock = @intToPtr(*const fn (sk: *kern.Sock) ?*SkFullSock, 95);
-pub const tcp_sock = @intToPtr(*const fn (sk: *kern.Sock) ?*kern.TcpSock, 96);
-pub const skb_ecn_set_ce = @intToPtr(*const fn (skb: *kern.SkBuff) c_long, 97);
-pub const get_listener_sock = @intToPtr(*const fn (sk: *kern.Sock) ?*kern.Sock, 98);
-pub const skc_lookup_tcp = @intToPtr(*const fn (ctx: ?*anyopaque, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 99);
-pub const tcp_check_syncookie = @intToPtr(*const fn (sk: *kern.Sock, iph: ?*anyopaque, iph_len: u32, th: *TcpHdr, th_len: u32) c_long, 100);
-pub const sysctl_get_name = @intToPtr(*const fn (ctx: *kern.SysCtl, buf: ?*u8, buf_len: c_ulong, flags: u64) c_long, 101);
-pub const sysctl_get_current_value = @intToPtr(*const fn (ctx: *kern.SysCtl, buf: ?*u8, buf_len: c_ulong) c_long, 102);
-pub const sysctl_get_new_value = @intToPtr(*const fn (ctx: *kern.SysCtl, buf: ?*u8, buf_len: c_ulong) c_long, 103);
-pub const sysctl_set_new_value = @intToPtr(*const fn (ctx: *kern.SysCtl, buf: ?*const u8, buf_len: c_ulong) c_long, 104);
-pub const strtol = @intToPtr(*const fn (buf: *const u8, buf_len: c_ulong, flags: u64, res: *c_long) c_long, 105);
-pub const strtoul = @intToPtr(*const fn (buf: *const u8, buf_len: c_ulong, flags: u64, res: *c_ulong) c_long, 106);
-pub const sk_storage_get = @intToPtr(*const fn (map: *const kern.MapDef, sk: *kern.Sock, value: ?*anyopaque, flags: u64) ?*anyopaque, 107);
-pub const sk_storage_delete = @intToPtr(*const fn (map: *const kern.MapDef, sk: *kern.Sock) c_long, 108);
-pub const send_signal = @intToPtr(*const fn (sig: u32) c_long, 109);
-pub const tcp_gen_syncookie = @intToPtr(*const fn (sk: *kern.Sock, iph: ?*anyopaque, iph_len: u32, th: *TcpHdr, th_len: u32) i64, 110);
-pub const skb_output = @intToPtr(*const fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64, data: ?*anyopaque, size: u64) c_long, 111);
-pub const probe_read_user = @intToPtr(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 112);
-pub const probe_read_kernel = @intToPtr(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 113);
-pub const probe_read_user_str = @intToPtr(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 114);
-pub const probe_read_kernel_str = @intToPtr(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 115);
-pub const tcp_send_ack = @intToPtr(*const fn (tp: ?*anyopaque, rcv_nxt: u32) c_long, 116);
-pub const send_signal_thread = @intToPtr(*const fn (sig: u32) c_long, 117);
-pub const jiffies64 = @intToPtr(*const fn () u64, 118);
-pub const read_branch_records = @intToPtr(*const fn (ctx: *kern.PerfEventData, buf: ?*anyopaque, size: u32, flags: u64) c_long, 119);
-pub const get_ns_current_pid_tgid = @intToPtr(*const fn (dev: u64, ino: u64, nsdata: *kern.PidNsInfo, size: u32) c_long, 120);
-pub const xdp_output = @intToPtr(*const fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64, data: ?*anyopaque, size: u64) c_long, 121);
-pub const get_netns_cookie = @intToPtr(*const fn (ctx: ?*anyopaque) u64, 122);
-pub const get_current_ancestor_cgroup_id = @intToPtr(*const fn (ancestor_level: c_int) u64, 123);
-pub const sk_assign = @intToPtr(*const fn (skb: *kern.SkBuff, sk: *kern.Sock, flags: u64) c_long, 124);
-pub const ktime_get_boot_ns = @intToPtr(*const fn () u64, 125);
-pub const seq_printf = @intToPtr(*const fn (m: *kern.SeqFile, fmt: ?*const u8, fmt_size: u32, data: ?*const anyopaque, data_len: u32) c_long, 126);
-pub const seq_write = @intToPtr(*const fn (m: *kern.SeqFile, data: ?*const u8, len: u32) c_long, 127);
-pub const sk_cgroup_id = @intToPtr(*const fn (sk: *kern.BpfSock) u64, 128);
-pub const sk_ancestor_cgroup_id = @intToPtr(*const fn (sk: *kern.BpfSock, ancestor_level: c_long) u64, 129);
-pub const ringbuf_output = @intToPtr(*const fn (ringbuf: ?*anyopaque, data: ?*anyopaque, size: u64, flags: u64) c_long, 130);
-pub const ringbuf_reserve = @intToPtr(*const fn (ringbuf: ?*anyopaque, size: u64, flags: u64) ?*anyopaque, 131);
-pub const ringbuf_submit = @intToPtr(*const fn (data: ?*anyopaque, flags: u64) void, 132);
-pub const ringbuf_discard = @intToPtr(*const fn (data: ?*anyopaque, flags: u64) void, 133);
-pub const ringbuf_query = @intToPtr(*const fn (ringbuf: ?*anyopaque, flags: u64) u64, 134);
-pub const csum_level = @intToPtr(*const fn (skb: *kern.SkBuff, level: u64) c_long, 135);
-pub const skc_to_tcp6_sock = @intToPtr(*const fn (sk: ?*anyopaque) ?*kern.Tcp6Sock, 136);
-pub const skc_to_tcp_sock = @intToPtr(*const fn (sk: ?*anyopaque) ?*kern.TcpSock, 137);
-pub const skc_to_tcp_timewait_sock = @intToPtr(*const fn (sk: ?*anyopaque) ?*kern.TcpTimewaitSock, 138);
-pub const skc_to_tcp_request_sock = @intToPtr(*const fn (sk: ?*anyopaque) ?*kern.TcpRequestSock, 139);
-pub const skc_to_udp6_sock = @intToPtr(*const fn (sk: ?*anyopaque) ?*kern.Udp6Sock, 140);
-pub const get_task_stack = @intToPtr(*const fn (task: ?*anyopaque, buf: ?*anyopaque, size: u32, flags: u64) c_long, 141);
+pub const skb_change_proto = @ptrFromInt(*const fn (skb: *kern.SkBuff, proto: u16, flags: u64) c_long, 31);
+pub const skb_change_type = @ptrFromInt(*const fn (skb: *kern.SkBuff, skb_type: u32) c_long, 32);
+pub const skb_under_cgroup = @ptrFromInt(*const fn (skb: *kern.SkBuff, map: ?*const anyopaque, index: u32) c_long, 33);
+pub const get_hash_recalc = @ptrFromInt(*const fn (skb: *kern.SkBuff) u32, 34);
+pub const get_current_task = @ptrFromInt(*const fn () u64, 35);
+pub const probe_write_user = @ptrFromInt(*const fn (dst: ?*anyopaque, src: ?*const anyopaque, len: u32) c_long, 36);
+pub const current_task_under_cgroup = @ptrFromInt(*const fn (map: *const kern.MapDef, index: u32) c_long, 37);
+pub const skb_change_tail = @ptrFromInt(*const fn (skb: *kern.SkBuff, len: u32, flags: u64) c_long, 38);
+pub const skb_pull_data = @ptrFromInt(*const fn (skb: *kern.SkBuff, len: u32) c_long, 39);
+pub const csum_update = @ptrFromInt(*const fn (skb: *kern.SkBuff, csum: u32) i64, 40);
+pub const set_hash_invalid = @ptrFromInt(*const fn (skb: *kern.SkBuff) void, 41);
+pub const get_numa_node_id = @ptrFromInt(*const fn () c_long, 42);
+pub const skb_change_head = @ptrFromInt(*const fn (skb: *kern.SkBuff, len: u32, flags: u64) c_long, 43);
+pub const xdp_adjust_head = @ptrFromInt(*const fn (xdp_md: *kern.XdpMd, delta: c_int) c_long, 44);
+pub const probe_read_str = @ptrFromInt(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 45);
+pub const get_socket_cookie = @ptrFromInt(*const fn (ctx: ?*anyopaque) u64, 46);
+pub const get_socket_uid = @ptrFromInt(*const fn (skb: *kern.SkBuff) u32, 47);
+pub const set_hash = @ptrFromInt(*const fn (skb: *kern.SkBuff, hash: u32) c_long, 48);
+pub const setsockopt = @ptrFromInt(*const fn (bpf_socket: *kern.SockOps, level: c_int, optname: c_int, optval: ?*anyopaque, optlen: c_int) c_long, 49);
+pub const skb_adjust_room = @ptrFromInt(*const fn (skb: *kern.SkBuff, len_diff: i32, mode: u32, flags: u64) c_long, 50);
+pub const redirect_map = @ptrFromInt(*const fn (map: *const kern.MapDef, key: u32, flags: u64) c_long, 51);
+pub const sk_redirect_map = @ptrFromInt(*const fn (skb: *kern.SkBuff, map: *const kern.MapDef, key: u32, flags: u64) c_long, 52);
+pub const sock_map_update = @ptrFromInt(*const fn (skops: *kern.SockOps, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 53);
+pub const xdp_adjust_meta = @ptrFromInt(*const fn (xdp_md: *kern.XdpMd, delta: c_int) c_long, 54);
+pub const perf_event_read_value = @ptrFromInt(*const fn (map: *const kern.MapDef, flags: u64, buf: *kern.PerfEventValue, buf_size: u32) c_long, 55);
+pub const perf_prog_read_value = @ptrFromInt(*const fn (ctx: *kern.PerfEventData, buf: *kern.PerfEventValue, buf_size: u32) c_long, 56);
+pub const getsockopt = @ptrFromInt(*const fn (bpf_socket: ?*anyopaque, level: c_int, optname: c_int, optval: ?*anyopaque, optlen: c_int) c_long, 57);
+pub const override_return = @ptrFromInt(*const fn (regs: *PtRegs, rc: u64) c_long, 58);
+pub const sock_ops_cb_flags_set = @ptrFromInt(*const fn (bpf_sock: *kern.SockOps, argval: c_int) c_long, 59);
+pub const msg_redirect_map = @ptrFromInt(*const fn (msg: *kern.SkMsgMd, map: *const kern.MapDef, key: u32, flags: u64) c_long, 60);
+pub const msg_apply_bytes = @ptrFromInt(*const fn (msg: *kern.SkMsgMd, bytes: u32) c_long, 61);
+pub const msg_cork_bytes = @ptrFromInt(*const fn (msg: *kern.SkMsgMd, bytes: u32) c_long, 62);
+pub const msg_pull_data = @ptrFromInt(*const fn (msg: *kern.SkMsgMd, start: u32, end: u32, flags: u64) c_long, 63);
+pub const bind = @ptrFromInt(*const fn (ctx: *kern.BpfSockAddr, addr: *kern.SockAddr, addr_len: c_int) c_long, 64);
+pub const xdp_adjust_tail = @ptrFromInt(*const fn (xdp_md: *kern.XdpMd, delta: c_int) c_long, 65);
+pub const skb_get_xfrm_state = @ptrFromInt(*const fn (skb: *kern.SkBuff, index: u32, xfrm_state: *kern.XfrmState, size: u32, flags: u64) c_long, 66);
+pub const get_stack = @ptrFromInt(*const fn (ctx: ?*anyopaque, buf: ?*anyopaque, size: u32, flags: u64) c_long, 67);
+pub const skb_load_bytes_relative = @ptrFromInt(*const fn (skb: ?*const anyopaque, offset: u32, to: ?*anyopaque, len: u32, start_header: u32) c_long, 68);
+pub const fib_lookup = @ptrFromInt(*const fn (ctx: ?*anyopaque, params: *kern.FibLookup, plen: c_int, flags: u32) c_long, 69);
+pub const sock_hash_update = @ptrFromInt(*const fn (skops: *kern.SockOps, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 70);
+pub const msg_redirect_hash = @ptrFromInt(*const fn (msg: *kern.SkMsgMd, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 71);
+pub const sk_redirect_hash = @ptrFromInt(*const fn (skb: *kern.SkBuff, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 72);
+pub const lwt_push_encap = @ptrFromInt(*const fn (skb: *kern.SkBuff, typ: u32, hdr: ?*anyopaque, len: u32) c_long, 73);
+pub const lwt_seg6_store_bytes = @ptrFromInt(*const fn (skb: *kern.SkBuff, offset: u32, from: ?*const anyopaque, len: u32) c_long, 74);
+pub const lwt_seg6_adjust_srh = @ptrFromInt(*const fn (skb: *kern.SkBuff, offset: u32, delta: i32) c_long, 75);
+pub const lwt_seg6_action = @ptrFromInt(*const fn (skb: *kern.SkBuff, action: u32, param: ?*anyopaque, param_len: u32) c_long, 76);
+pub const rc_repeat = @ptrFromInt(*const fn (ctx: ?*anyopaque) c_long, 77);
+pub const rc_keydown = @ptrFromInt(*const fn (ctx: ?*anyopaque, protocol: u32, scancode: u64, toggle: u32) c_long, 78);
+pub const skb_cgroup_id = @ptrFromInt(*const fn (skb: *kern.SkBuff) u64, 79);
+pub const get_current_cgroup_id = @ptrFromInt(*const fn () u64, 80);
+pub const get_local_storage = @ptrFromInt(*const fn (map: ?*anyopaque, flags: u64) ?*anyopaque, 81);
+pub const sk_select_reuseport = @ptrFromInt(*const fn (reuse: *kern.SkReusePortMd, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 82);
+pub const skb_ancestor_cgroup_id = @ptrFromInt(*const fn (skb: *kern.SkBuff, ancestor_level: c_int) u64, 83);
+pub const sk_lookup_tcp = @ptrFromInt(*const fn (ctx: ?*anyopaque, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 84);
+pub const sk_lookup_udp = @ptrFromInt(*const fn (ctx: ?*anyopaque, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 85);
+pub const sk_release = @ptrFromInt(*const fn (sock: *kern.Sock) c_long, 86);
+pub const map_push_elem = @ptrFromInt(*const fn (map: *const kern.MapDef, value: ?*const anyopaque, flags: u64) c_long, 87);
+pub const map_pop_elem = @ptrFromInt(*const fn (map: *const kern.MapDef, value: ?*anyopaque) c_long, 88);
+pub const map_peek_elem = @ptrFromInt(*const fn (map: *const kern.MapDef, value: ?*anyopaque) c_long, 89);
+pub const msg_push_data = @ptrFromInt(*const fn (msg: *kern.SkMsgMd, start: u32, len: u32, flags: u64) c_long, 90);
+pub const msg_pop_data = @ptrFromInt(*const fn (msg: *kern.SkMsgMd, start: u32, len: u32, flags: u64) c_long, 91);
+pub const rc_pointer_rel = @ptrFromInt(*const fn (ctx: ?*anyopaque, rel_x: i32, rel_y: i32) c_long, 92);
+pub const spin_lock = @ptrFromInt(*const fn (lock: *kern.SpinLock) c_long, 93);
+pub const spin_unlock = @ptrFromInt(*const fn (lock: *kern.SpinLock) c_long, 94);
+pub const sk_fullsock = @ptrFromInt(*const fn (sk: *kern.Sock) ?*SkFullSock, 95);
+pub const tcp_sock = @ptrFromInt(*const fn (sk: *kern.Sock) ?*kern.TcpSock, 96);
+pub const skb_ecn_set_ce = @ptrFromInt(*const fn (skb: *kern.SkBuff) c_long, 97);
+pub const get_listener_sock = @ptrFromInt(*const fn (sk: *kern.Sock) ?*kern.Sock, 98);
+pub const skc_lookup_tcp = @ptrFromInt(*const fn (ctx: ?*anyopaque, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 99);
+pub const tcp_check_syncookie = @ptrFromInt(*const fn (sk: *kern.Sock, iph: ?*anyopaque, iph_len: u32, th: *TcpHdr, th_len: u32) c_long, 100);
+pub const sysctl_get_name = @ptrFromInt(*const fn (ctx: *kern.SysCtl, buf: ?*u8, buf_len: c_ulong, flags: u64) c_long, 101);
+pub const sysctl_get_current_value = @ptrFromInt(*const fn (ctx: *kern.SysCtl, buf: ?*u8, buf_len: c_ulong) c_long, 102);
+pub const sysctl_get_new_value = @ptrFromInt(*const fn (ctx: *kern.SysCtl, buf: ?*u8, buf_len: c_ulong) c_long, 103);
+pub const sysctl_set_new_value = @ptrFromInt(*const fn (ctx: *kern.SysCtl, buf: ?*const u8, buf_len: c_ulong) c_long, 104);
+pub const strtol = @ptrFromInt(*const fn (buf: *const u8, buf_len: c_ulong, flags: u64, res: *c_long) c_long, 105);
+pub const strtoul = @ptrFromInt(*const fn (buf: *const u8, buf_len: c_ulong, flags: u64, res: *c_ulong) c_long, 106);
+pub const sk_storage_get = @ptrFromInt(*const fn (map: *const kern.MapDef, sk: *kern.Sock, value: ?*anyopaque, flags: u64) ?*anyopaque, 107);
+pub const sk_storage_delete = @ptrFromInt(*const fn (map: *const kern.MapDef, sk: *kern.Sock) c_long, 108);
+pub const send_signal = @ptrFromInt(*const fn (sig: u32) c_long, 109);
+pub const tcp_gen_syncookie = @ptrFromInt(*const fn (sk: *kern.Sock, iph: ?*anyopaque, iph_len: u32, th: *TcpHdr, th_len: u32) i64, 110);
+pub const skb_output = @ptrFromInt(*const fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64, data: ?*anyopaque, size: u64) c_long, 111);
+pub const probe_read_user = @ptrFromInt(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 112);
+pub const probe_read_kernel = @ptrFromInt(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 113);
+pub const probe_read_user_str = @ptrFromInt(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 114);
+pub const probe_read_kernel_str = @ptrFromInt(*const fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 115);
+pub const tcp_send_ack = @ptrFromInt(*const fn (tp: ?*anyopaque, rcv_nxt: u32) c_long, 116);
+pub const send_signal_thread = @ptrFromInt(*const fn (sig: u32) c_long, 117);
+pub const jiffies64 = @ptrFromInt(*const fn () u64, 118);
+pub const read_branch_records = @ptrFromInt(*const fn (ctx: *kern.PerfEventData, buf: ?*anyopaque, size: u32, flags: u64) c_long, 119);
+pub const get_ns_current_pid_tgid = @ptrFromInt(*const fn (dev: u64, ino: u64, nsdata: *kern.PidNsInfo, size: u32) c_long, 120);
+pub const xdp_output = @ptrFromInt(*const fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64, data: ?*anyopaque, size: u64) c_long, 121);
+pub const get_netns_cookie = @ptrFromInt(*const fn (ctx: ?*anyopaque) u64, 122);
+pub const get_current_ancestor_cgroup_id = @ptrFromInt(*const fn (ancestor_level: c_int) u64, 123);
+pub const sk_assign = @ptrFromInt(*const fn (skb: *kern.SkBuff, sk: *kern.Sock, flags: u64) c_long, 124);
+pub const ktime_get_boot_ns = @ptrFromInt(*const fn () u64, 125);
+pub const seq_printf = @ptrFromInt(*const fn (m: *kern.SeqFile, fmt: ?*const u8, fmt_size: u32, data: ?*const anyopaque, data_len: u32) c_long, 126);
+pub const seq_write = @ptrFromInt(*const fn (m: *kern.SeqFile, data: ?*const u8, len: u32) c_long, 127);
+pub const sk_cgroup_id = @ptrFromInt(*const fn (sk: *kern.BpfSock) u64, 128);
+pub const sk_ancestor_cgroup_id = @ptrFromInt(*const fn (sk: *kern.BpfSock, ancestor_level: c_long) u64, 129);
+pub const ringbuf_output = @ptrFromInt(*const fn (ringbuf: ?*anyopaque, data: ?*anyopaque, size: u64, flags: u64) c_long, 130);
+pub const ringbuf_reserve = @ptrFromInt(*const fn (ringbuf: ?*anyopaque, size: u64, flags: u64) ?*anyopaque, 131);
+pub const ringbuf_submit = @ptrFromInt(*const fn (data: ?*anyopaque, flags: u64) void, 132);
+pub const ringbuf_discard = @ptrFromInt(*const fn (data: ?*anyopaque, flags: u64) void, 133);
+pub const ringbuf_query = @ptrFromInt(*const fn (ringbuf: ?*anyopaque, flags: u64) u64, 134);
+pub const csum_level = @ptrFromInt(*const fn (skb: *kern.SkBuff, level: u64) c_long, 135);
+pub const skc_to_tcp6_sock = @ptrFromInt(*const fn (sk: ?*anyopaque) ?*kern.Tcp6Sock, 136);
+pub const skc_to_tcp_sock = @ptrFromInt(*const fn (sk: ?*anyopaque) ?*kern.TcpSock, 137);
+pub const skc_to_tcp_timewait_sock = @ptrFromInt(*const fn (sk: ?*anyopaque) ?*kern.TcpTimewaitSock, 138);
+pub const skc_to_tcp_request_sock = @ptrFromInt(*const fn (sk: ?*anyopaque) ?*kern.TcpRequestSock, 139);
+pub const skc_to_udp6_sock = @ptrFromInt(*const fn (sk: ?*anyopaque) ?*kern.Udp6Sock, 140);
+pub const get_task_stack = @ptrFromInt(*const fn (task: ?*anyopaque, buf: ?*anyopaque, size: u32, flags: u64) c_long, 141);
lib/std/os/linux/arm-eabi.zig
@@ -16,7 +16,7 @@ const timespec = linux.timespec;
 pub fn syscall0(number: SYS) usize {
     return asm volatile ("svc #0"
         : [ret] "={r0}" (-> usize),
-        : [number] "{r7}" (@enumToInt(number)),
+        : [number] "{r7}" (@intFromEnum(number)),
         : "memory"
     );
 }
@@ -24,7 +24,7 @@ pub fn syscall0(number: SYS) usize {
 pub fn syscall1(number: SYS, arg1: usize) usize {
     return asm volatile ("svc #0"
         : [ret] "={r0}" (-> usize),
-        : [number] "{r7}" (@enumToInt(number)),
+        : [number] "{r7}" (@intFromEnum(number)),
           [arg1] "{r0}" (arg1),
         : "memory"
     );
@@ -33,7 +33,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
 pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
     return asm volatile ("svc #0"
         : [ret] "={r0}" (-> usize),
-        : [number] "{r7}" (@enumToInt(number)),
+        : [number] "{r7}" (@intFromEnum(number)),
           [arg1] "{r0}" (arg1),
           [arg2] "{r1}" (arg2),
         : "memory"
@@ -43,7 +43,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
 pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
     return asm volatile ("svc #0"
         : [ret] "={r0}" (-> usize),
-        : [number] "{r7}" (@enumToInt(number)),
+        : [number] "{r7}" (@intFromEnum(number)),
           [arg1] "{r0}" (arg1),
           [arg2] "{r1}" (arg2),
           [arg3] "{r2}" (arg3),
@@ -54,7 +54,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
 pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
     return asm volatile ("svc #0"
         : [ret] "={r0}" (-> usize),
-        : [number] "{r7}" (@enumToInt(number)),
+        : [number] "{r7}" (@intFromEnum(number)),
           [arg1] "{r0}" (arg1),
           [arg2] "{r1}" (arg2),
           [arg3] "{r2}" (arg3),
@@ -66,7 +66,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
 pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
     return asm volatile ("svc #0"
         : [ret] "={r0}" (-> usize),
-        : [number] "{r7}" (@enumToInt(number)),
+        : [number] "{r7}" (@intFromEnum(number)),
           [arg1] "{r0}" (arg1),
           [arg2] "{r1}" (arg2),
           [arg3] "{r2}" (arg3),
@@ -87,7 +87,7 @@ pub fn syscall6(
 ) usize {
     return asm volatile ("svc #0"
         : [ret] "={r0}" (-> usize),
-        : [number] "{r7}" (@enumToInt(number)),
+        : [number] "{r7}" (@intFromEnum(number)),
           [arg1] "{r0}" (arg1),
           [arg2] "{r1}" (arg2),
           [arg3] "{r2}" (arg3),
@@ -106,7 +106,7 @@ pub extern fn clone(func: CloneFn, stack: usize, flags: u32, arg: usize, ptid: *
 pub fn restore() callconv(.Naked) void {
     return asm volatile ("svc #0"
         :
-        : [number] "{r7}" (@enumToInt(SYS.sigreturn)),
+        : [number] "{r7}" (@intFromEnum(SYS.sigreturn)),
         : "memory"
     );
 }
@@ -114,7 +114,7 @@ pub fn restore() callconv(.Naked) void {
 pub fn restore_rt() callconv(.Naked) void {
     return asm volatile ("svc #0"
         :
-        : [number] "{r7}" (@enumToInt(SYS.rt_sigreturn)),
+        : [number] "{r7}" (@intFromEnum(SYS.rt_sigreturn)),
         : "memory"
     );
 }
lib/std/os/linux/arm64.zig
@@ -16,7 +16,7 @@ const timespec = std.os.linux.timespec;
 pub fn syscall0(number: SYS) usize {
     return asm volatile ("svc #0"
         : [ret] "={x0}" (-> usize),
-        : [number] "{x8}" (@enumToInt(number)),
+        : [number] "{x8}" (@intFromEnum(number)),
         : "memory", "cc"
     );
 }
@@ -24,7 +24,7 @@ pub fn syscall0(number: SYS) usize {
 pub fn syscall1(number: SYS, arg1: usize) usize {
     return asm volatile ("svc #0"
         : [ret] "={x0}" (-> usize),
-        : [number] "{x8}" (@enumToInt(number)),
+        : [number] "{x8}" (@intFromEnum(number)),
           [arg1] "{x0}" (arg1),
         : "memory", "cc"
     );
@@ -33,7 +33,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
 pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
     return asm volatile ("svc #0"
         : [ret] "={x0}" (-> usize),
-        : [number] "{x8}" (@enumToInt(number)),
+        : [number] "{x8}" (@intFromEnum(number)),
           [arg1] "{x0}" (arg1),
           [arg2] "{x1}" (arg2),
         : "memory", "cc"
@@ -43,7 +43,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
 pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
     return asm volatile ("svc #0"
         : [ret] "={x0}" (-> usize),
-        : [number] "{x8}" (@enumToInt(number)),
+        : [number] "{x8}" (@intFromEnum(number)),
           [arg1] "{x0}" (arg1),
           [arg2] "{x1}" (arg2),
           [arg3] "{x2}" (arg3),
@@ -54,7 +54,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
 pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
     return asm volatile ("svc #0"
         : [ret] "={x0}" (-> usize),
-        : [number] "{x8}" (@enumToInt(number)),
+        : [number] "{x8}" (@intFromEnum(number)),
           [arg1] "{x0}" (arg1),
           [arg2] "{x1}" (arg2),
           [arg3] "{x2}" (arg3),
@@ -66,7 +66,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
 pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
     return asm volatile ("svc #0"
         : [ret] "={x0}" (-> usize),
-        : [number] "{x8}" (@enumToInt(number)),
+        : [number] "{x8}" (@intFromEnum(number)),
           [arg1] "{x0}" (arg1),
           [arg2] "{x1}" (arg2),
           [arg3] "{x2}" (arg3),
@@ -87,7 +87,7 @@ pub fn syscall6(
 ) usize {
     return asm volatile ("svc #0"
         : [ret] "={x0}" (-> usize),
-        : [number] "{x8}" (@enumToInt(number)),
+        : [number] "{x8}" (@intFromEnum(number)),
           [arg1] "{x0}" (arg1),
           [arg2] "{x1}" (arg2),
           [arg3] "{x2}" (arg3),
@@ -111,12 +111,12 @@ pub fn restore_rt() callconv(.Naked) void {
             \\ mov x8, %[number]
             \\ svc #0
             :
-            : [number] "i" (@enumToInt(SYS.rt_sigreturn)),
+            : [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
             : "memory", "cc"
         ),
         else => return asm volatile ("svc #0"
             :
-            : [number] "{x8}" (@enumToInt(SYS.rt_sigreturn)),
+            : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)),
             : "memory", "cc"
         ),
     }
lib/std/os/linux/bpf.zig
@@ -472,10 +472,10 @@ pub const Insn = packed struct {
 
         return Insn{
             .code = code | src_type,
-            .dst = @enumToInt(dst),
+            .dst = @intFromEnum(dst),
             .src = switch (imm_or_reg) {
                 .imm => 0,
-                .reg => |r| @enumToInt(r),
+                .reg => |r| @intFromEnum(r),
             },
             .off = off,
             .imm = switch (imm_or_reg) {
@@ -492,7 +492,7 @@ pub const Insn = packed struct {
             else => @compileError("width must be 32 or 64"),
         };
 
-        return imm_reg(width_bitfield | @enumToInt(op), dst, src, 0);
+        return imm_reg(width_bitfield | @intFromEnum(op), dst, src, 0);
     }
 
     pub fn mov(dst: Reg, src: anytype) Insn {
@@ -548,7 +548,7 @@ pub const Insn = packed struct {
     }
 
     pub fn jmp(op: JmpOp, dst: Reg, src: anytype, off: i16) Insn {
-        return imm_reg(JMP | @enumToInt(op), dst, src, off);
+        return imm_reg(JMP | @intFromEnum(op), dst, src, off);
     }
 
     pub fn ja(off: i16) Insn {
@@ -602,8 +602,8 @@ pub const Insn = packed struct {
     pub fn xadd(dst: Reg, src: Reg) Insn {
         return Insn{
             .code = STX | XADD | DW,
-            .dst = @enumToInt(dst),
-            .src = @enumToInt(src),
+            .dst = @intFromEnum(dst),
+            .src = @intFromEnum(src),
             .off = 0,
             .imm = 0,
         };
@@ -611,9 +611,9 @@ pub const Insn = packed struct {
 
     fn ld(mode: Mode, size: Size, dst: Reg, src: Reg, imm: i32) Insn {
         return Insn{
-            .code = @enumToInt(mode) | @enumToInt(size) | LD,
-            .dst = @enumToInt(dst),
-            .src = @enumToInt(src),
+            .code = @intFromEnum(mode) | @intFromEnum(size) | LD,
+            .dst = @intFromEnum(dst),
+            .src = @intFromEnum(src),
             .off = 0,
             .imm = imm,
         };
@@ -629,9 +629,9 @@ pub const Insn = packed struct {
 
     pub fn ldx(size: Size, dst: Reg, src: Reg, off: i16) Insn {
         return Insn{
-            .code = MEM | @enumToInt(size) | LDX,
-            .dst = @enumToInt(dst),
-            .src = @enumToInt(src),
+            .code = MEM | @intFromEnum(size) | LDX,
+            .dst = @intFromEnum(dst),
+            .src = @intFromEnum(src),
             .off = off,
             .imm = 0,
         };
@@ -640,8 +640,8 @@ pub const Insn = packed struct {
     fn ld_imm_impl1(dst: Reg, src: Reg, imm: u64) Insn {
         return Insn{
             .code = LD | DW | IMM,
-            .dst = @enumToInt(dst),
-            .src = @enumToInt(src),
+            .dst = @intFromEnum(dst),
+            .src = @intFromEnum(src),
             .off = 0,
             .imm = @intCast(i32, @truncate(u32, imm)),
         };
@@ -666,7 +666,7 @@ pub const Insn = packed struct {
     }
 
     pub fn ld_map_fd1(dst: Reg, map_fd: fd_t) Insn {
-        return ld_imm_impl1(dst, @intToEnum(Reg, PSEUDO_MAP_FD), @intCast(u64, map_fd));
+        return ld_imm_impl1(dst, @enumFromInt(Reg, PSEUDO_MAP_FD), @intCast(u64, map_fd));
     }
 
     pub fn ld_map_fd2(map_fd: fd_t) Insn {
@@ -675,8 +675,8 @@ pub const Insn = packed struct {
 
     pub fn st(comptime size: Size, dst: Reg, off: i16, imm: i32) Insn {
         return Insn{
-            .code = MEM | @enumToInt(size) | ST,
-            .dst = @enumToInt(dst),
+            .code = MEM | @intFromEnum(size) | ST,
+            .dst = @intFromEnum(dst),
             .src = 0,
             .off = off,
             .imm = imm,
@@ -685,9 +685,9 @@ pub const Insn = packed struct {
 
     pub fn stx(size: Size, dst: Reg, off: i16, src: Reg) Insn {
         return Insn{
-            .code = MEM | @enumToInt(size) | STX,
-            .dst = @enumToInt(dst),
-            .src = @enumToInt(src),
+            .code = MEM | @intFromEnum(size) | STX,
+            .dst = @intFromEnum(dst),
+            .src = @intFromEnum(src),
             .off = off,
             .imm = 0,
         };
@@ -699,7 +699,7 @@ pub const Insn = packed struct {
                 .Big => 0xdc,
                 .Little => 0xd4,
             },
-            .dst = @enumToInt(dst),
+            .dst = @intFromEnum(dst),
             .src = 0,
             .off = 0,
             .imm = switch (size) {
@@ -725,7 +725,7 @@ pub const Insn = packed struct {
             .dst = 0,
             .src = 0,
             .off = 0,
-            .imm = @enumToInt(helper),
+            .imm = @intFromEnum(helper),
         };
     }
 
@@ -1511,7 +1511,7 @@ pub fn map_create(map_type: MapType, key_size: u32, value_size: u32, max_entries
         .map_create = std.mem.zeroes(MapCreateAttr),
     };
 
-    attr.map_create.map_type = @enumToInt(map_type);
+    attr.map_create.map_type = @intFromEnum(map_type);
     attr.map_create.key_size = key_size;
     attr.map_create.value_size = value_size;
     attr.map_create.max_entries = max_entries;
@@ -1537,8 +1537,8 @@ pub fn map_lookup_elem(fd: fd_t, key: []const u8, value: []u8) !void {
     };
 
     attr.map_elem.map_fd = fd;
-    attr.map_elem.key = @ptrToInt(key.ptr);
-    attr.map_elem.result.value = @ptrToInt(value.ptr);
+    attr.map_elem.key = @intFromPtr(key.ptr);
+    attr.map_elem.result.value = @intFromPtr(value.ptr);
 
     const rc = linux.bpf(.map_lookup_elem, &attr, @sizeOf(MapElemAttr));
     switch (errno(rc)) {
@@ -1558,8 +1558,8 @@ pub fn map_update_elem(fd: fd_t, key: []const u8, value: []const u8, flags: u64)
     };
 
     attr.map_elem.map_fd = fd;
-    attr.map_elem.key = @ptrToInt(key.ptr);
-    attr.map_elem.result = .{ .value = @ptrToInt(value.ptr) };
+    attr.map_elem.key = @intFromPtr(key.ptr);
+    attr.map_elem.result = .{ .value = @intFromPtr(value.ptr) };
     attr.map_elem.flags = flags;
 
     const rc = linux.bpf(.map_update_elem, &attr, @sizeOf(MapElemAttr));
@@ -1581,7 +1581,7 @@ pub fn map_delete_elem(fd: fd_t, key: []const u8) !void {
     };
 
     attr.map_elem.map_fd = fd;
-    attr.map_elem.key = @ptrToInt(key.ptr);
+    attr.map_elem.key = @intFromPtr(key.ptr);
 
     const rc = linux.bpf(.map_delete_elem, &attr, @sizeOf(MapElemAttr));
     switch (errno(rc)) {
@@ -1601,8 +1601,8 @@ pub fn map_get_next_key(fd: fd_t, key: []const u8, next_key: []u8) !bool {
     };
 
     attr.map_elem.map_fd = fd;
-    attr.map_elem.key = @ptrToInt(key.ptr);
-    attr.map_elem.result.next_key = @ptrToInt(next_key.ptr);
+    attr.map_elem.key = @intFromPtr(key.ptr);
+    attr.map_elem.result.next_key = @intFromPtr(next_key.ptr);
 
     const rc = linux.bpf(.map_get_next_key, &attr, @sizeOf(MapElemAttr));
     switch (errno(rc)) {
@@ -1666,15 +1666,15 @@ pub fn prog_load(
         .prog_load = std.mem.zeroes(ProgLoadAttr),
     };
 
-    attr.prog_load.prog_type = @enumToInt(prog_type);
-    attr.prog_load.insns = @ptrToInt(insns.ptr);
+    attr.prog_load.prog_type = @intFromEnum(prog_type);
+    attr.prog_load.insns = @intFromPtr(insns.ptr);
     attr.prog_load.insn_cnt = @intCast(u32, insns.len);
-    attr.prog_load.license = @ptrToInt(license.ptr);
+    attr.prog_load.license = @intFromPtr(license.ptr);
     attr.prog_load.kern_version = kern_version;
     attr.prog_load.prog_flags = flags;
 
     if (log) |l| {
-        attr.prog_load.log_buf = @ptrToInt(l.buf.ptr);
+        attr.prog_load.log_buf = @intFromPtr(l.buf.ptr);
         attr.prog_load.log_size = @intCast(u32, l.buf.len);
         attr.prog_load.log_level = l.level;
     }
lib/std/os/linux/io_uring.zig
@@ -962,7 +962,7 @@ pub const IO_Uring = struct {
         var update = FilesUpdate{
             .offset = offset,
             .resv = @as(u32, 0),
-            .fds = @as(u64, @ptrToInt(fds.ptr)),
+            .fds = @as(u64, @intFromPtr(fds.ptr)),
         };
 
         const res = linux.io_uring_register(
@@ -1244,11 +1244,11 @@ pub fn io_uring_prep_rw(
 }
 
 pub fn io_uring_prep_read(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: []u8, offset: u64) void {
-    io_uring_prep_rw(.READ, sqe, fd, @ptrToInt(buffer.ptr), buffer.len, offset);
+    io_uring_prep_rw(.READ, sqe, fd, @intFromPtr(buffer.ptr), buffer.len, offset);
 }
 
 pub fn io_uring_prep_write(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: []const u8, offset: u64) void {
-    io_uring_prep_rw(.WRITE, sqe, fd, @ptrToInt(buffer.ptr), buffer.len, offset);
+    io_uring_prep_rw(.WRITE, sqe, fd, @intFromPtr(buffer.ptr), buffer.len, offset);
 }
 
 pub fn io_uring_prep_readv(
@@ -1257,7 +1257,7 @@ pub fn io_uring_prep_readv(
     iovecs: []const os.iovec,
     offset: u64,
 ) void {
-    io_uring_prep_rw(.READV, sqe, fd, @ptrToInt(iovecs.ptr), iovecs.len, offset);
+    io_uring_prep_rw(.READV, sqe, fd, @intFromPtr(iovecs.ptr), iovecs.len, offset);
 }
 
 pub fn io_uring_prep_writev(
@@ -1266,16 +1266,16 @@ pub fn io_uring_prep_writev(
     iovecs: []const os.iovec_const,
     offset: u64,
 ) void {
-    io_uring_prep_rw(.WRITEV, sqe, fd, @ptrToInt(iovecs.ptr), iovecs.len, offset);
+    io_uring_prep_rw(.WRITEV, sqe, fd, @intFromPtr(iovecs.ptr), iovecs.len, offset);
 }
 
 pub fn io_uring_prep_read_fixed(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: *os.iovec, offset: u64, buffer_index: u16) void {
-    io_uring_prep_rw(.READ_FIXED, sqe, fd, @ptrToInt(buffer.iov_base), buffer.iov_len, offset);
+    io_uring_prep_rw(.READ_FIXED, sqe, fd, @intFromPtr(buffer.iov_base), buffer.iov_len, offset);
     sqe.buf_index = buffer_index;
 }
 
 pub fn io_uring_prep_write_fixed(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: *os.iovec, offset: u64, buffer_index: u16) void {
-    io_uring_prep_rw(.WRITE_FIXED, sqe, fd, @ptrToInt(buffer.iov_base), buffer.iov_len, offset);
+    io_uring_prep_rw(.WRITE_FIXED, sqe, fd, @intFromPtr(buffer.iov_base), buffer.iov_len, offset);
     sqe.buf_index = buffer_index;
 }
 
@@ -1298,7 +1298,7 @@ pub fn io_uring_prep_accept(
 ) void {
     // `addr` holds a pointer to `sockaddr`, and `addr2` holds a pointer to socklen_t`.
     // `addr2` maps to `sqe.off` (u64) instead of `sqe.len` (which is only a u32).
-    io_uring_prep_rw(.ACCEPT, sqe, fd, @ptrToInt(addr), 0, @ptrToInt(addrlen));
+    io_uring_prep_rw(.ACCEPT, sqe, fd, @intFromPtr(addr), 0, @intFromPtr(addrlen));
     sqe.rw_flags = flags;
 }
 
@@ -1309,7 +1309,7 @@ pub fn io_uring_prep_connect(
     addrlen: os.socklen_t,
 ) void {
     // `addrlen` maps to `sqe.off` (u64) instead of `sqe.len` (which is only a u32).
-    io_uring_prep_rw(.CONNECT, sqe, fd, @ptrToInt(addr), 0, addrlen);
+    io_uring_prep_rw(.CONNECT, sqe, fd, @intFromPtr(addr), 0, addrlen);
 }
 
 pub fn io_uring_prep_epoll_ctl(
@@ -1319,16 +1319,16 @@ pub fn io_uring_prep_epoll_ctl(
     op: u32,
     ev: ?*linux.epoll_event,
 ) void {
-    io_uring_prep_rw(.EPOLL_CTL, sqe, epfd, @ptrToInt(ev), op, @intCast(u64, fd));
+    io_uring_prep_rw(.EPOLL_CTL, sqe, epfd, @intFromPtr(ev), op, @intCast(u64, fd));
 }
 
 pub fn io_uring_prep_recv(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: []u8, flags: u32) void {
-    io_uring_prep_rw(.RECV, sqe, fd, @ptrToInt(buffer.ptr), buffer.len, 0);
+    io_uring_prep_rw(.RECV, sqe, fd, @intFromPtr(buffer.ptr), buffer.len, 0);
     sqe.rw_flags = flags;
 }
 
 pub fn io_uring_prep_send(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: []const u8, flags: u32) void {
-    io_uring_prep_rw(.SEND, sqe, fd, @ptrToInt(buffer.ptr), buffer.len, 0);
+    io_uring_prep_rw(.SEND, sqe, fd, @intFromPtr(buffer.ptr), buffer.len, 0);
     sqe.rw_flags = flags;
 }
 
@@ -1338,7 +1338,7 @@ pub fn io_uring_prep_recvmsg(
     msg: *os.msghdr,
     flags: u32,
 ) void {
-    linux.io_uring_prep_rw(.RECVMSG, sqe, fd, @ptrToInt(msg), 1, 0);
+    linux.io_uring_prep_rw(.RECVMSG, sqe, fd, @intFromPtr(msg), 1, 0);
     sqe.rw_flags = flags;
 }
 
@@ -1348,7 +1348,7 @@ pub fn io_uring_prep_sendmsg(
     msg: *const os.msghdr_const,
     flags: u32,
 ) void {
-    linux.io_uring_prep_rw(.SENDMSG, sqe, fd, @ptrToInt(msg), 1, 0);
+    linux.io_uring_prep_rw(.SENDMSG, sqe, fd, @intFromPtr(msg), 1, 0);
     sqe.rw_flags = flags;
 }
 
@@ -1359,7 +1359,7 @@ pub fn io_uring_prep_openat(
     flags: u32,
     mode: os.mode_t,
 ) void {
-    io_uring_prep_rw(.OPENAT, sqe, fd, @ptrToInt(path), mode, 0);
+    io_uring_prep_rw(.OPENAT, sqe, fd, @intFromPtr(path), mode, 0);
     sqe.rw_flags = flags;
 }
 
@@ -1387,7 +1387,7 @@ pub fn io_uring_prep_timeout(
     count: u32,
     flags: u32,
 ) void {
-    io_uring_prep_rw(.TIMEOUT, sqe, -1, @ptrToInt(ts), 1, count);
+    io_uring_prep_rw(.TIMEOUT, sqe, -1, @intFromPtr(ts), 1, count);
     sqe.rw_flags = flags;
 }
 
@@ -1414,7 +1414,7 @@ pub fn io_uring_prep_link_timeout(
     ts: *const os.linux.kernel_timespec,
     flags: u32,
 ) void {
-    linux.io_uring_prep_rw(.LINK_TIMEOUT, sqe, -1, @ptrToInt(ts), 1, 0);
+    linux.io_uring_prep_rw(.LINK_TIMEOUT, sqe, -1, @intFromPtr(ts), 1, 0);
     sqe.rw_flags = flags;
 }
 
@@ -1423,7 +1423,7 @@ pub fn io_uring_prep_poll_add(
     fd: os.fd_t,
     poll_mask: u32,
 ) void {
-    io_uring_prep_rw(.POLL_ADD, sqe, fd, @ptrToInt(@as(?*anyopaque, null)), 0, 0);
+    io_uring_prep_rw(.POLL_ADD, sqe, fd, @intFromPtr(@as(?*anyopaque, null)), 0, 0);
     sqe.rw_flags = __io_uring_prep_poll_mask(poll_mask);
 }
 
@@ -1477,7 +1477,7 @@ pub fn io_uring_prep_statx(
     mask: u32,
     buf: *linux.Statx,
 ) void {
-    io_uring_prep_rw(.STATX, sqe, fd, @ptrToInt(path), mask, @ptrToInt(buf));
+    io_uring_prep_rw(.STATX, sqe, fd, @intFromPtr(path), mask, @intFromPtr(buf));
     sqe.rw_flags = flags;
 }
 
@@ -1510,9 +1510,9 @@ pub fn io_uring_prep_renameat(
         .RENAMEAT,
         sqe,
         old_dir_fd,
-        @ptrToInt(old_path),
+        @intFromPtr(old_path),
         0,
-        @ptrToInt(new_path),
+        @intFromPtr(new_path),
     );
     sqe.len = @bitCast(u32, new_dir_fd);
     sqe.rw_flags = flags;
@@ -1524,7 +1524,7 @@ pub fn io_uring_prep_unlinkat(
     path: [*:0]const u8,
     flags: u32,
 ) void {
-    io_uring_prep_rw(.UNLINKAT, sqe, dir_fd, @ptrToInt(path), 0, 0);
+    io_uring_prep_rw(.UNLINKAT, sqe, dir_fd, @intFromPtr(path), 0, 0);
     sqe.rw_flags = flags;
 }
 
@@ -1534,7 +1534,7 @@ pub fn io_uring_prep_mkdirat(
     path: [*:0]const u8,
     mode: os.mode_t,
 ) void {
-    io_uring_prep_rw(.MKDIRAT, sqe, dir_fd, @ptrToInt(path), mode, 0);
+    io_uring_prep_rw(.MKDIRAT, sqe, dir_fd, @intFromPtr(path), mode, 0);
 }
 
 pub fn io_uring_prep_symlinkat(
@@ -1547,9 +1547,9 @@ pub fn io_uring_prep_symlinkat(
         .SYMLINKAT,
         sqe,
         new_dir_fd,
-        @ptrToInt(target),
+        @intFromPtr(target),
         0,
-        @ptrToInt(link_path),
+        @intFromPtr(link_path),
     );
 }
 
@@ -1565,9 +1565,9 @@ pub fn io_uring_prep_linkat(
         .LINKAT,
         sqe,
         old_dir_fd,
-        @ptrToInt(old_path),
+        @intFromPtr(old_path),
         0,
-        @ptrToInt(new_path),
+        @intFromPtr(new_path),
     );
     sqe.len = @bitCast(u32, new_dir_fd);
     sqe.rw_flags = flags;
@@ -1581,7 +1581,7 @@ pub fn io_uring_prep_provide_buffers(
     group_id: usize,
     buffer_id: usize,
 ) void {
-    const ptr = @ptrToInt(buffers);
+    const ptr = @intFromPtr(buffers);
     io_uring_prep_rw(.PROVIDE_BUFFERS, sqe, @intCast(i32, num), ptr, buffer_len, buffer_id);
     sqe.buf_index = @intCast(u16, group_id);
 }
@@ -1918,8 +1918,8 @@ test "openat" {
     // Workaround for LLVM bug: https://github.com/ziglang/zig/issues/12014
     const path_addr = if (builtin.zig_backend == .stage2_llvm) p: {
         var workaround = path;
-        break :p @ptrToInt(workaround);
-    } else @ptrToInt(path);
+        break :p @intFromPtr(workaround);
+    } else @intFromPtr(path);
 
     const flags: u32 = os.O.CLOEXEC | os.O.RDWR | os.O.CREAT;
     const mode: os.mode_t = 0o666;
@@ -2098,7 +2098,7 @@ test "sendmsg/recvmsg" {
     try testing.expectEqual(@as(u32, 2), ring.cq_ready());
 
     const cqe_sendmsg = try ring.copy_cqe();
-    if (cqe_sendmsg.res == -@as(i32, @enumToInt(linux.E.INVAL))) return error.SkipZigTest;
+    if (cqe_sendmsg.res == -@as(i32, @intFromEnum(linux.E.INVAL))) return error.SkipZigTest;
     try testing.expectEqual(linux.io_uring_cqe{
         .user_data = 0x11111111,
         .res = buffer_send.len,
@@ -2106,7 +2106,7 @@ test "sendmsg/recvmsg" {
     }, cqe_sendmsg);
 
     const cqe_recvmsg = try ring.copy_cqe();
-    if (cqe_recvmsg.res == -@as(i32, @enumToInt(linux.E.INVAL))) return error.SkipZigTest;
+    if (cqe_recvmsg.res == -@as(i32, @intFromEnum(linux.E.INVAL))) return error.SkipZigTest;
     try testing.expectEqual(linux.io_uring_cqe{
         .user_data = 0x22222222,
         .res = buffer_recv.len,
@@ -2140,12 +2140,12 @@ test "timeout (after a relative time)" {
 
     try testing.expectEqual(linux.io_uring_cqe{
         .user_data = 0x55555555,
-        .res = -@as(i32, @enumToInt(linux.E.TIME)),
+        .res = -@as(i32, @intFromEnum(linux.E.TIME)),
         .flags = 0,
     }, cqe);
 
     // Tests should not depend on timings: skip test if outside margin.
-    if (!std.math.approxEqAbs(f64, ms, @intToFloat(f64, stopped - started), margin)) return error.SkipZigTest;
+    if (!std.math.approxEqAbs(f64, ms, @floatFromInt(f64, stopped - started), margin)) return error.SkipZigTest;
 }
 
 test "timeout (after a number of completions)" {
@@ -2227,7 +2227,7 @@ test "timeout_remove" {
         if (cqe.user_data == 0x88888888) {
             try testing.expectEqual(linux.io_uring_cqe{
                 .user_data = 0x88888888,
-                .res = -@as(i32, @enumToInt(linux.E.CANCELED)),
+                .res = -@as(i32, @intFromEnum(linux.E.CANCELED)),
                 .flags = 0,
             }, cqe);
         } else if (cqe.user_data == 0x99999999) {
@@ -2274,16 +2274,16 @@ test "accept/connect/recv/link_timeout" {
         const cqe = try ring.copy_cqe();
         switch (cqe.user_data) {
             0xffffffff => {
-                if (cqe.res != -@as(i32, @enumToInt(linux.E.INTR)) and
-                    cqe.res != -@as(i32, @enumToInt(linux.E.CANCELED)))
+                if (cqe.res != -@as(i32, @intFromEnum(linux.E.INTR)) and
+                    cqe.res != -@as(i32, @intFromEnum(linux.E.CANCELED)))
                 {
                     std.debug.print("Req 0x{x} got {d}\n", .{ cqe.user_data, cqe.res });
                     try testing.expect(false);
                 }
             },
             0x22222222 => {
-                if (cqe.res != -@as(i32, @enumToInt(linux.E.ALREADY)) and
-                    cqe.res != -@as(i32, @enumToInt(linux.E.TIME)))
+                if (cqe.res != -@as(i32, @intFromEnum(linux.E.ALREADY)) and
+                    cqe.res != -@as(i32, @intFromEnum(linux.E.TIME)))
                 {
                     std.debug.print("Req 0x{x} got {d}\n", .{ cqe.user_data, cqe.res });
                     try testing.expect(false);
@@ -2439,7 +2439,7 @@ test "accept/connect/recv/cancel" {
 
     try testing.expectEqual(linux.io_uring_cqe{
         .user_data = 0xffffffff,
-        .res = -@as(i32, @enumToInt(linux.E.CANCELED)),
+        .res = -@as(i32, @intFromEnum(linux.E.CANCELED)),
         .flags = 0,
     }, cqe_recv);
 
lib/std/os/linux/mips.zig
@@ -18,7 +18,7 @@ pub fn syscall0(number: SYS) usize {
         \\ subu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
         : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
     );
 }
@@ -37,7 +37,7 @@ pub fn syscall_pipe(fd: *[2]i32) usize {
         \\ sw $3, 4($4)
         \\ 2:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(SYS.pipe)),
+        : [number] "{$2}" (@intFromEnum(SYS.pipe)),
           [fd] "{$4}" (fd),
         : "$1", "$3", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
     );
@@ -50,7 +50,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
         \\ subu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
         : "$1", "$3", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
     );
@@ -63,7 +63,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
         \\ subu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
         : "$1", "$3", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
@@ -77,7 +77,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
         \\ subu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
           [arg3] "{$6}" (arg3),
@@ -92,7 +92,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
         \\ subu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
           [arg3] "{$6}" (arg3),
@@ -112,7 +112,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,
         \\ subu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
           [arg3] "{$6}" (arg3),
@@ -145,7 +145,7 @@ pub fn syscall6(
         \\ subu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
           [arg3] "{$6}" (arg3),
@@ -178,7 +178,7 @@ pub fn syscall7(
         \\ subu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
           [arg3] "{$6}" (arg3),
@@ -198,7 +198,7 @@ pub extern fn clone(func: CloneFn, stack: usize, flags: u32, arg: usize, ptid: *
 pub fn restore() callconv(.Naked) void {
     return asm volatile ("syscall"
         :
-        : [number] "{$2}" (@enumToInt(SYS.sigreturn)),
+        : [number] "{$2}" (@intFromEnum(SYS.sigreturn)),
         : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
     );
 }
@@ -206,7 +206,7 @@ pub fn restore() callconv(.Naked) void {
 pub fn restore_rt() callconv(.Naked) void {
     return asm volatile ("syscall"
         :
-        : [number] "{$2}" (@enumToInt(SYS.rt_sigreturn)),
+        : [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)),
         : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
     );
 }
lib/std/os/linux/mips64.zig
@@ -18,7 +18,7 @@ pub fn syscall0(number: SYS) usize {
         \\ dsubu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
         : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
     );
 }
@@ -37,7 +37,7 @@ pub fn syscall_pipe(fd: *[2]i32) usize {
         \\ sw $3, 4($4)
         \\ 2:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(SYS.pipe)),
+        : [number] "{$2}" (@intFromEnum(SYS.pipe)),
           [fd] "{$4}" (fd),
         : "$1", "$3", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
     );
@@ -50,7 +50,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
         \\ dsubu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
         : "$1", "$3", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
     );
@@ -63,7 +63,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
         \\ dsubu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
         : "$1", "$3", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
@@ -77,7 +77,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
         \\ dsubu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
           [arg3] "{$6}" (arg3),
@@ -92,7 +92,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
         \\ dsubu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
           [arg3] "{$6}" (arg3),
@@ -108,7 +108,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,
         \\ dsubu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
           [arg3] "{$6}" (arg3),
@@ -136,7 +136,7 @@ pub fn syscall6(
         \\ dsubu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
           [arg3] "{$6}" (arg3),
@@ -163,7 +163,7 @@ pub fn syscall7(
         \\ dsubu $2, $0, $2
         \\ 1:
         : [ret] "={$2}" (-> usize),
-        : [number] "{$2}" (@enumToInt(number)),
+        : [number] "{$2}" (@intFromEnum(number)),
           [arg1] "{$4}" (arg1),
           [arg2] "{$5}" (arg2),
           [arg3] "{$6}" (arg3),
@@ -183,7 +183,7 @@ pub extern fn clone(func: CloneFn, stack: usize, flags: u32, arg: usize, ptid: *
 pub fn restore() callconv(.Naked) void {
     return asm volatile ("syscall"
         :
-        : [number] "{$2}" (@enumToInt(SYS.rt_sigreturn)),
+        : [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)),
         : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
     );
 }
@@ -191,7 +191,7 @@ pub fn restore() callconv(.Naked) void {
 pub fn restore_rt() callconv(.Naked) void {
     return asm volatile ("syscall"
         :
-        : [number] "{$2}" (@enumToInt(SYS.rt_sigreturn)),
+        : [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)),
         : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory"
     );
 }
lib/std/os/linux/powerpc.zig
@@ -20,7 +20,7 @@ pub fn syscall0(number: SYS) usize {
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
         : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
     );
 }
@@ -32,7 +32,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
         : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
     );
@@ -45,7 +45,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
           [arg2] "{r4}" (arg2),
         : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
@@ -59,7 +59,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
           [arg2] "{r4}" (arg2),
           [arg3] "{r5}" (arg3),
@@ -74,7 +74,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
           [arg2] "{r4}" (arg2),
           [arg3] "{r5}" (arg3),
@@ -90,7 +90,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
           [arg2] "{r4}" (arg2),
           [arg3] "{r5}" (arg3),
@@ -115,7 +115,7 @@ pub fn syscall6(
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
           [arg2] "{r4}" (arg2),
           [arg3] "{r5}" (arg3),
@@ -136,7 +136,7 @@ pub const restore = restore_rt;
 pub fn restore_rt() callconv(.Naked) void {
     return asm volatile ("sc"
         :
-        : [number] "{r0}" (@enumToInt(SYS.rt_sigreturn)),
+        : [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)),
         : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
     );
 }
lib/std/os/linux/powerpc64.zig
@@ -20,7 +20,7 @@ pub fn syscall0(number: SYS) usize {
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
         : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
     );
 }
@@ -32,7 +32,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
         : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
     );
@@ -45,7 +45,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
           [arg2] "{r4}" (arg2),
         : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
@@ -59,7 +59,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
           [arg2] "{r4}" (arg2),
           [arg3] "{r5}" (arg3),
@@ -74,7 +74,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
           [arg2] "{r4}" (arg2),
           [arg3] "{r5}" (arg3),
@@ -90,7 +90,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
           [arg2] "{r4}" (arg2),
           [arg3] "{r5}" (arg3),
@@ -115,7 +115,7 @@ pub fn syscall6(
         \\ neg 3, 3
         \\ 1:
         : [ret] "={r3}" (-> usize),
-        : [number] "{r0}" (@enumToInt(number)),
+        : [number] "{r0}" (@intFromEnum(number)),
           [arg1] "{r3}" (arg1),
           [arg2] "{r4}" (arg2),
           [arg3] "{r5}" (arg3),
@@ -136,7 +136,7 @@ pub const restore = restore_rt;
 pub fn restore_rt() callconv(.Naked) void {
     return asm volatile ("sc"
         :
-        : [number] "{r0}" (@enumToInt(SYS.rt_sigreturn)),
+        : [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)),
         : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
     );
 }
lib/std/os/linux/riscv64.zig
@@ -13,7 +13,7 @@ const timespec = std.os.linux.timespec;
 pub fn syscall0(number: SYS) usize {
     return asm volatile ("ecall"
         : [ret] "={x10}" (-> usize),
-        : [number] "{x17}" (@enumToInt(number)),
+        : [number] "{x17}" (@intFromEnum(number)),
         : "memory"
     );
 }
@@ -21,7 +21,7 @@ pub fn syscall0(number: SYS) usize {
 pub fn syscall1(number: SYS, arg1: usize) usize {
     return asm volatile ("ecall"
         : [ret] "={x10}" (-> usize),
-        : [number] "{x17}" (@enumToInt(number)),
+        : [number] "{x17}" (@intFromEnum(number)),
           [arg1] "{x10}" (arg1),
         : "memory"
     );
@@ -30,7 +30,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
 pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
     return asm volatile ("ecall"
         : [ret] "={x10}" (-> usize),
-        : [number] "{x17}" (@enumToInt(number)),
+        : [number] "{x17}" (@intFromEnum(number)),
           [arg1] "{x10}" (arg1),
           [arg2] "{x11}" (arg2),
         : "memory"
@@ -40,7 +40,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
 pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
     return asm volatile ("ecall"
         : [ret] "={x10}" (-> usize),
-        : [number] "{x17}" (@enumToInt(number)),
+        : [number] "{x17}" (@intFromEnum(number)),
           [arg1] "{x10}" (arg1),
           [arg2] "{x11}" (arg2),
           [arg3] "{x12}" (arg3),
@@ -51,7 +51,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
 pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
     return asm volatile ("ecall"
         : [ret] "={x10}" (-> usize),
-        : [number] "{x17}" (@enumToInt(number)),
+        : [number] "{x17}" (@intFromEnum(number)),
           [arg1] "{x10}" (arg1),
           [arg2] "{x11}" (arg2),
           [arg3] "{x12}" (arg3),
@@ -63,7 +63,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
 pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
     return asm volatile ("ecall"
         : [ret] "={x10}" (-> usize),
-        : [number] "{x17}" (@enumToInt(number)),
+        : [number] "{x17}" (@intFromEnum(number)),
           [arg1] "{x10}" (arg1),
           [arg2] "{x11}" (arg2),
           [arg3] "{x12}" (arg3),
@@ -84,7 +84,7 @@ pub fn syscall6(
 ) usize {
     return asm volatile ("ecall"
         : [ret] "={x10}" (-> usize),
-        : [number] "{x17}" (@enumToInt(number)),
+        : [number] "{x17}" (@intFromEnum(number)),
           [arg1] "{x10}" (arg1),
           [arg2] "{x11}" (arg2),
           [arg3] "{x12}" (arg3),
@@ -104,7 +104,7 @@ pub const restore = restore_rt;
 pub fn restore_rt() callconv(.Naked) void {
     return asm volatile ("ecall"
         :
-        : [number] "{x17}" (@enumToInt(SYS.rt_sigreturn)),
+        : [number] "{x17}" (@intFromEnum(SYS.rt_sigreturn)),
         : "memory"
     );
 }
lib/std/os/linux/sparc64.zig
@@ -29,7 +29,7 @@ pub fn syscall_pipe(fd: *[2]i32) usize {
         \\ clr %%o0
         \\2:
         : [ret] "={o0}" (-> usize),
-        : [number] "{g1}" (@enumToInt(SYS.pipe)),
+        : [number] "{g1}" (@intFromEnum(SYS.pipe)),
           [arg] "r" (fd),
         : "memory", "g3"
     );
@@ -53,7 +53,7 @@ pub fn syscall_fork() usize {
         \\ and %%o1, %%o0, %%o0
         \\ 2:
         : [ret] "={o0}" (-> usize),
-        : [number] "{g1}" (@enumToInt(SYS.fork)),
+        : [number] "{g1}" (@intFromEnum(SYS.fork)),
         : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7"
     );
 }
@@ -66,7 +66,7 @@ pub fn syscall0(number: SYS) usize {
         \\ neg %%o0
         \\ 1:
         : [ret] "={o0}" (-> usize),
-        : [number] "{g1}" (@enumToInt(number)),
+        : [number] "{g1}" (@intFromEnum(number)),
         : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7"
     );
 }
@@ -79,7 +79,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
         \\ neg %%o0
         \\ 1:
         : [ret] "={o0}" (-> usize),
-        : [number] "{g1}" (@enumToInt(number)),
+        : [number] "{g1}" (@intFromEnum(number)),
           [arg1] "{o0}" (arg1),
         : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7"
     );
@@ -93,7 +93,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
         \\ neg %%o0
         \\ 1:
         : [ret] "={o0}" (-> usize),
-        : [number] "{g1}" (@enumToInt(number)),
+        : [number] "{g1}" (@intFromEnum(number)),
           [arg1] "{o0}" (arg1),
           [arg2] "{o1}" (arg2),
         : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7"
@@ -108,7 +108,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
         \\ neg %%o0
         \\ 1:
         : [ret] "={o0}" (-> usize),
-        : [number] "{g1}" (@enumToInt(number)),
+        : [number] "{g1}" (@intFromEnum(number)),
           [arg1] "{o0}" (arg1),
           [arg2] "{o1}" (arg2),
           [arg3] "{o2}" (arg3),
@@ -124,7 +124,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
         \\ neg %%o0
         \\ 1:
         : [ret] "={o0}" (-> usize),
-        : [number] "{g1}" (@enumToInt(number)),
+        : [number] "{g1}" (@intFromEnum(number)),
           [arg1] "{o0}" (arg1),
           [arg2] "{o1}" (arg2),
           [arg3] "{o2}" (arg3),
@@ -141,7 +141,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,
         \\ neg %%o0
         \\ 1:
         : [ret] "={o0}" (-> usize),
-        : [number] "{g1}" (@enumToInt(number)),
+        : [number] "{g1}" (@intFromEnum(number)),
           [arg1] "{o0}" (arg1),
           [arg2] "{o1}" (arg2),
           [arg3] "{o2}" (arg3),
@@ -167,7 +167,7 @@ pub fn syscall6(
         \\ neg %%o0
         \\ 1:
         : [ret] "={o0}" (-> usize),
-        : [number] "{g1}" (@enumToInt(number)),
+        : [number] "{g1}" (@intFromEnum(number)),
           [arg1] "{o0}" (arg1),
           [arg2] "{o1}" (arg2),
           [arg3] "{o2}" (arg3),
@@ -190,7 +190,7 @@ pub const restore = restore_rt;
 pub fn restore_rt() callconv(.C) void {
     return asm volatile ("t 0x6d"
         :
-        : [number] "{g1}" (@enumToInt(SYS.rt_sigreturn)),
+        : [number] "{g1}" (@intFromEnum(SYS.rt_sigreturn)),
         : "memory", "xcc", "o0", "o1", "o2", "o3", "o4", "o5", "o7"
     );
 }
lib/std/os/linux/start_pie.zig
@@ -78,7 +78,7 @@ pub fn relocate(phdrs: []elf.Phdr) void {
     const base_addr = base: {
         for (phdrs) |*phdr| {
             if (phdr.p_type != elf.PT_DYNAMIC) continue;
-            break :base @ptrToInt(dynv) - phdr.p_vaddr;
+            break :base @intFromPtr(dynv) - phdr.p_vaddr;
         }
         // This is not supposed to happen for well-formed binaries.
         std.os.abort();
@@ -103,17 +103,17 @@ pub fn relocate(phdrs: []elf.Phdr) void {
 
     // Apply the relocations.
     if (rel_addr != 0) {
-        const rel = std.mem.bytesAsSlice(elf.Rel, @intToPtr([*]u8, rel_addr)[0..rel_size]);
+        const rel = std.mem.bytesAsSlice(elf.Rel, @ptrFromInt([*]u8, rel_addr)[0..rel_size]);
         for (rel) |r| {
             if (r.r_type() != R_RELATIVE) continue;
-            @intToPtr(*usize, base_addr + r.r_offset).* += base_addr;
+            @ptrFromInt(*usize, base_addr + r.r_offset).* += base_addr;
         }
     }
     if (rela_addr != 0) {
-        const rela = std.mem.bytesAsSlice(elf.Rela, @intToPtr([*]u8, rela_addr)[0..rela_size]);
+        const rela = std.mem.bytesAsSlice(elf.Rela, @ptrFromInt([*]u8, rela_addr)[0..rela_size]);
         for (rela) |r| {
             if (r.r_type() != R_RELATIVE) continue;
-            @intToPtr(*usize, base_addr + r.r_offset).* += base_addr + @bitCast(usize, r.r_addend);
+            @ptrFromInt(*usize, base_addr + r.r_offset).* += base_addr + @bitCast(usize, r.r_addend);
         }
     }
 }
lib/std/os/linux/thumb.zig
@@ -10,7 +10,7 @@ const SYS = linux.SYS;
 pub fn syscall0(number: SYS) usize {
     @setRuntimeSafety(false);
 
-    var buf: [2]usize = .{ @enumToInt(number), undefined };
+    var buf: [2]usize = .{ @intFromEnum(number), undefined };
     return asm volatile (
         \\ str r7, [%[tmp], #4]
         \\ ldr r7, [%[tmp]]
@@ -25,7 +25,7 @@ pub fn syscall0(number: SYS) usize {
 pub fn syscall1(number: SYS, arg1: usize) usize {
     @setRuntimeSafety(false);
 
-    var buf: [2]usize = .{ @enumToInt(number), undefined };
+    var buf: [2]usize = .{ @intFromEnum(number), undefined };
     return asm volatile (
         \\ str r7, [%[tmp], #4]
         \\ ldr r7, [%[tmp]]
@@ -41,7 +41,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
 pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
     @setRuntimeSafety(false);
 
-    var buf: [2]usize = .{ @enumToInt(number), undefined };
+    var buf: [2]usize = .{ @intFromEnum(number), undefined };
     return asm volatile (
         \\ str r7, [%[tmp], #4]
         \\ ldr r7, [%[tmp]]
@@ -58,7 +58,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
 pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
     @setRuntimeSafety(false);
 
-    var buf: [2]usize = .{ @enumToInt(number), undefined };
+    var buf: [2]usize = .{ @intFromEnum(number), undefined };
     return asm volatile (
         \\ str r7, [%[tmp], #4]
         \\ ldr r7, [%[tmp]]
@@ -76,7 +76,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
 pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
     @setRuntimeSafety(false);
 
-    var buf: [2]usize = .{ @enumToInt(number), undefined };
+    var buf: [2]usize = .{ @intFromEnum(number), undefined };
     return asm volatile (
         \\ str r7, [%[tmp], #4]
         \\ ldr r7, [%[tmp]]
@@ -95,7 +95,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
 pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
     @setRuntimeSafety(false);
 
-    var buf: [2]usize = .{ @enumToInt(number), undefined };
+    var buf: [2]usize = .{ @intFromEnum(number), undefined };
     return asm volatile (
         \\ str r7, [%[tmp], #4]
         \\ ldr r7, [%[tmp]]
@@ -123,7 +123,7 @@ pub fn syscall6(
 ) usize {
     @setRuntimeSafety(false);
 
-    var buf: [2]usize = .{ @enumToInt(number), undefined };
+    var buf: [2]usize = .{ @intFromEnum(number), undefined };
     return asm volatile (
         \\ str r7, [%[tmp], #4]
         \\ ldr r7, [%[tmp]]
@@ -146,7 +146,7 @@ pub fn restore() callconv(.Naked) void {
         \\ mov r7, %[number]
         \\ svc #0
         :
-        : [number] "I" (@enumToInt(SYS.sigreturn)),
+        : [number] "I" (@intFromEnum(SYS.sigreturn)),
     );
 }
 
@@ -155,7 +155,7 @@ pub fn restore_rt() callconv(.Naked) void {
         \\ mov r7, %[number]
         \\ svc #0
         :
-        : [number] "I" (@enumToInt(SYS.rt_sigreturn)),
+        : [number] "I" (@intFromEnum(SYS.rt_sigreturn)),
         : "memory"
     );
 }
lib/std/os/linux/tls.zig
@@ -122,7 +122,7 @@ pub fn setThreadPointer(addr: usize) void {
                 .seg_not_present = 0,
                 .useable = 1,
             };
-            const rc = std.os.linux.syscall1(.set_thread_area, @ptrToInt(&user_desc));
+            const rc = std.os.linux.syscall1(.set_thread_area, @intFromPtr(&user_desc));
             assert(rc == 0);
 
             const gdt_entry_number = user_desc.entry_number;
@@ -191,7 +191,7 @@ fn initTLS(phdrs: []elf.Phdr) void {
 
     for (phdrs) |*phdr| {
         switch (phdr.p_type) {
-            elf.PT_PHDR => img_base = @ptrToInt(phdrs.ptr) - phdr.p_vaddr,
+            elf.PT_PHDR => img_base = @intFromPtr(phdrs.ptr) - phdr.p_vaddr,
             elf.PT_TLS => tls_phdr = phdr,
             else => {},
         }
@@ -205,7 +205,7 @@ fn initTLS(phdrs: []elf.Phdr) void {
         // the data stored in the PT_TLS segment is p_filesz and may be less
         // than the former
         tls_align_factor = phdr.p_align;
-        tls_data = @intToPtr([*]u8, img_base + phdr.p_vaddr)[0..phdr.p_filesz];
+        tls_data = @ptrFromInt([*]u8, img_base + phdr.p_vaddr)[0..phdr.p_filesz];
         tls_data_alloc_size = phdr.p_memsz;
     } else {
         tls_align_factor = @alignOf(usize);
@@ -292,7 +292,7 @@ pub fn prepareTLS(area: []u8) usize {
     // Return the corrected value (if needed) for the tp register.
     // Overflow here is not a problem, the pointer arithmetic involving the tp
     // is done with wrapping semantics.
-    return @ptrToInt(area.ptr) +% tls_tp_offset +%
+    return @intFromPtr(area.ptr) +% tls_tp_offset +%
         if (tls_tp_points_past_tcb) tls_image.data_offset else tls_image.tcb_offset;
 }
 
@@ -328,7 +328,7 @@ pub fn initStaticTLS(phdrs: []elf.Phdr) void {
         ) catch os.abort();
 
         // Make sure the slice is correctly aligned.
-        const begin_addr = @ptrToInt(alloc_tls_area.ptr);
+        const begin_addr = @intFromPtr(alloc_tls_area.ptr);
         const begin_aligned_addr = mem.alignForward(usize, begin_addr, tls_image.alloc_align);
         const start = begin_aligned_addr - begin_addr;
         break :blk alloc_tls_area[start .. start + tls_image.alloc_size];
lib/std/os/linux/vdso.zig
@@ -8,7 +8,7 @@ pub fn lookup(vername: []const u8, name: []const u8) usize {
     const vdso_addr = std.os.system.getauxval(std.elf.AT_SYSINFO_EHDR);
     if (vdso_addr == 0) return 0;
 
-    const eh = @intToPtr(*elf.Ehdr, vdso_addr);
+    const eh = @ptrFromInt(*elf.Ehdr, vdso_addr);
     var ph_addr: usize = vdso_addr + eh.e_phoff;
 
     var maybe_dynv: ?[*]usize = null;
@@ -19,14 +19,14 @@ pub fn lookup(vername: []const u8, name: []const u8) usize {
             i += 1;
             ph_addr += eh.e_phentsize;
         }) {
-            const this_ph = @intToPtr(*elf.Phdr, ph_addr);
+            const this_ph = @ptrFromInt(*elf.Phdr, ph_addr);
             switch (this_ph.p_type) {
                 // On WSL1 as well as older kernels, the VDSO ELF image is pre-linked in the upper half
                 // of the memory space (e.g. p_vaddr = 0xffffffffff700000 on WSL1).
                 // Wrapping operations are used on this line as well as subsequent calculations relative to base
                 // (lines 47, 78) to ensure no overflow check is tripped.
                 elf.PT_LOAD => base = vdso_addr +% this_ph.p_offset -% this_ph.p_vaddr,
-                elf.PT_DYNAMIC => maybe_dynv = @intToPtr([*]usize, vdso_addr + this_ph.p_offset),
+                elf.PT_DYNAMIC => maybe_dynv = @ptrFromInt([*]usize, vdso_addr + this_ph.p_offset),
                 else => {},
             }
         }
@@ -45,11 +45,11 @@ pub fn lookup(vername: []const u8, name: []const u8) usize {
         while (dynv[i] != 0) : (i += 2) {
             const p = base +% dynv[i + 1];
             switch (dynv[i]) {
-                elf.DT_STRTAB => maybe_strings = @intToPtr([*]u8, p),
-                elf.DT_SYMTAB => maybe_syms = @intToPtr([*]elf.Sym, p),
-                elf.DT_HASH => maybe_hashtab = @intToPtr([*]linux.Elf_Symndx, p),
-                elf.DT_VERSYM => maybe_versym = @intToPtr([*]u16, p),
-                elf.DT_VERDEF => maybe_verdef = @intToPtr(*elf.Verdef, p),
+                elf.DT_STRTAB => maybe_strings = @ptrFromInt([*]u8, p),
+                elf.DT_SYMTAB => maybe_syms = @ptrFromInt([*]elf.Sym, p),
+                elf.DT_HASH => maybe_hashtab = @ptrFromInt([*]linux.Elf_Symndx, p),
+                elf.DT_VERSYM => maybe_versym = @ptrFromInt([*]u16, p),
+                elf.DT_VERDEF => maybe_verdef = @ptrFromInt(*elf.Verdef, p),
                 else => {},
             }
         }
@@ -88,9 +88,9 @@ fn checkver(def_arg: *elf.Verdef, vsym_arg: i32, vername: []const u8, strings: [
             break;
         if (def.vd_next == 0)
             return false;
-        def = @intToPtr(*elf.Verdef, @ptrToInt(def) + def.vd_next);
+        def = @ptrFromInt(*elf.Verdef, @intFromPtr(def) + def.vd_next);
     }
-    const aux = @intToPtr(*elf.Verdaux, @ptrToInt(def) + def.vd_aux);
+    const aux = @ptrFromInt(*elf.Verdaux, @intFromPtr(def) + def.vd_aux);
     const vda_name = @ptrCast([*:0]u8, strings + aux.vda_name);
     return mem.eql(u8, vername, mem.sliceTo(vda_name, 0));
 }
lib/std/os/linux/x86.zig
@@ -16,7 +16,7 @@ const timespec = linux.timespec;
 pub fn syscall0(number: SYS) usize {
     return asm volatile ("int $0x80"
         : [ret] "={eax}" (-> usize),
-        : [number] "{eax}" (@enumToInt(number)),
+        : [number] "{eax}" (@intFromEnum(number)),
         : "memory"
     );
 }
@@ -24,7 +24,7 @@ pub fn syscall0(number: SYS) usize {
 pub fn syscall1(number: SYS, arg1: usize) usize {
     return asm volatile ("int $0x80"
         : [ret] "={eax}" (-> usize),
-        : [number] "{eax}" (@enumToInt(number)),
+        : [number] "{eax}" (@intFromEnum(number)),
           [arg1] "{ebx}" (arg1),
         : "memory"
     );
@@ -33,7 +33,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
 pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
     return asm volatile ("int $0x80"
         : [ret] "={eax}" (-> usize),
-        : [number] "{eax}" (@enumToInt(number)),
+        : [number] "{eax}" (@intFromEnum(number)),
           [arg1] "{ebx}" (arg1),
           [arg2] "{ecx}" (arg2),
         : "memory"
@@ -43,7 +43,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
 pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
     return asm volatile ("int $0x80"
         : [ret] "={eax}" (-> usize),
-        : [number] "{eax}" (@enumToInt(number)),
+        : [number] "{eax}" (@intFromEnum(number)),
           [arg1] "{ebx}" (arg1),
           [arg2] "{ecx}" (arg2),
           [arg3] "{edx}" (arg3),
@@ -54,7 +54,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
 pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
     return asm volatile ("int $0x80"
         : [ret] "={eax}" (-> usize),
-        : [number] "{eax}" (@enumToInt(number)),
+        : [number] "{eax}" (@intFromEnum(number)),
           [arg1] "{ebx}" (arg1),
           [arg2] "{ecx}" (arg2),
           [arg3] "{edx}" (arg3),
@@ -66,7 +66,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
 pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
     return asm volatile ("int $0x80"
         : [ret] "={eax}" (-> usize),
-        : [number] "{eax}" (@enumToInt(number)),
+        : [number] "{eax}" (@intFromEnum(number)),
           [arg1] "{ebx}" (arg1),
           [arg2] "{ecx}" (arg2),
           [arg3] "{edx}" (arg3),
@@ -97,7 +97,7 @@ pub fn syscall6(
         \\ pop  %%ebp
         \\ add  $4, %%esp
         : [ret] "={eax}" (-> usize),
-        : [number] "{eax}" (@enumToInt(number)),
+        : [number] "{eax}" (@intFromEnum(number)),
           [arg1] "{ebx}" (arg1),
           [arg2] "{ecx}" (arg2),
           [arg3] "{edx}" (arg3),
@@ -111,9 +111,9 @@ pub fn syscall6(
 pub fn socketcall(call: usize, args: [*]const usize) usize {
     return asm volatile ("int $0x80"
         : [ret] "={eax}" (-> usize),
-        : [number] "{eax}" (@enumToInt(SYS.socketcall)),
+        : [number] "{eax}" (@intFromEnum(SYS.socketcall)),
           [arg1] "{ebx}" (call),
-          [arg2] "{ecx}" (@ptrToInt(args)),
+          [arg2] "{ecx}" (@intFromPtr(args)),
         : "memory"
     );
 }
@@ -130,14 +130,14 @@ pub fn restore() callconv(.Naked) void {
             \\ int $0x80
             \\ ret
             :
-            : [number] "i" (@enumToInt(SYS.sigreturn)),
+            : [number] "i" (@intFromEnum(SYS.sigreturn)),
             : "memory"
         ),
         else => asm volatile (
             \\ int $0x80
             \\ ret
             :
-            : [number] "{eax}" (@enumToInt(SYS.sigreturn)),
+            : [number] "{eax}" (@intFromEnum(SYS.sigreturn)),
             : "memory"
         ),
     }
@@ -151,14 +151,14 @@ pub fn restore_rt() callconv(.Naked) void {
             \\ int $0x80
             \\ ret
             :
-            : [number] "i" (@enumToInt(SYS.rt_sigreturn)),
+            : [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
             : "memory"
         ),
         else => asm volatile (
             \\ int $0x80
             \\ ret
             :
-            : [number] "{eax}" (@enumToInt(SYS.rt_sigreturn)),
+            : [number] "{eax}" (@intFromEnum(SYS.rt_sigreturn)),
             : "memory"
         ),
     }
lib/std/os/linux/x86_64.zig
@@ -18,7 +18,7 @@ const timespec = linux.timespec;
 pub fn syscall0(number: SYS) usize {
     return asm volatile ("syscall"
         : [ret] "={rax}" (-> usize),
-        : [number] "{rax}" (@enumToInt(number)),
+        : [number] "{rax}" (@intFromEnum(number)),
         : "rcx", "r11", "memory"
     );
 }
@@ -26,7 +26,7 @@ pub fn syscall0(number: SYS) usize {
 pub fn syscall1(number: SYS, arg1: usize) usize {
     return asm volatile ("syscall"
         : [ret] "={rax}" (-> usize),
-        : [number] "{rax}" (@enumToInt(number)),
+        : [number] "{rax}" (@intFromEnum(number)),
           [arg1] "{rdi}" (arg1),
         : "rcx", "r11", "memory"
     );
@@ -35,7 +35,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
 pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
     return asm volatile ("syscall"
         : [ret] "={rax}" (-> usize),
-        : [number] "{rax}" (@enumToInt(number)),
+        : [number] "{rax}" (@intFromEnum(number)),
           [arg1] "{rdi}" (arg1),
           [arg2] "{rsi}" (arg2),
         : "rcx", "r11", "memory"
@@ -45,7 +45,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
 pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
     return asm volatile ("syscall"
         : [ret] "={rax}" (-> usize),
-        : [number] "{rax}" (@enumToInt(number)),
+        : [number] "{rax}" (@intFromEnum(number)),
           [arg1] "{rdi}" (arg1),
           [arg2] "{rsi}" (arg2),
           [arg3] "{rdx}" (arg3),
@@ -56,7 +56,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
 pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
     return asm volatile ("syscall"
         : [ret] "={rax}" (-> usize),
-        : [number] "{rax}" (@enumToInt(number)),
+        : [number] "{rax}" (@intFromEnum(number)),
           [arg1] "{rdi}" (arg1),
           [arg2] "{rsi}" (arg2),
           [arg3] "{rdx}" (arg3),
@@ -68,7 +68,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
 pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
     return asm volatile ("syscall"
         : [ret] "={rax}" (-> usize),
-        : [number] "{rax}" (@enumToInt(number)),
+        : [number] "{rax}" (@intFromEnum(number)),
           [arg1] "{rdi}" (arg1),
           [arg2] "{rsi}" (arg2),
           [arg3] "{rdx}" (arg3),
@@ -89,7 +89,7 @@ pub fn syscall6(
 ) usize {
     return asm volatile ("syscall"
         : [ret] "={rax}" (-> usize),
-        : [number] "{rax}" (@enumToInt(number)),
+        : [number] "{rax}" (@intFromEnum(number)),
           [arg1] "{rdi}" (arg1),
           [arg2] "{rsi}" (arg2),
           [arg3] "{rdx}" (arg3),
@@ -114,14 +114,14 @@ pub fn restore_rt() callconv(.Naked) void {
             \\ syscall
             \\ retq
             :
-            : [number] "i" (@enumToInt(SYS.rt_sigreturn)),
+            : [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
             : "rcx", "r11", "memory"
         ),
         else => asm volatile (
             \\ syscall
             \\ retq
             :
-            : [number] "{rax}" (@enumToInt(SYS.rt_sigreturn)),
+            : [number] "{rax}" (@intFromEnum(SYS.rt_sigreturn)),
             : "rcx", "r11", "memory"
         ),
     }
lib/std/os/plan9/x86_64.zig
@@ -10,7 +10,7 @@ pub fn syscall1(sys: plan9.SYS, arg0: usize) usize {
         \\pop %%r11
         : [ret] "={rax}" (-> usize),
         : [arg0] "{r8}" (arg0),
-          [syscall_number] "{rbp}" (@enumToInt(sys)),
+          [syscall_number] "{rbp}" (@intFromEnum(sys)),
         : "rcx", "rax", "rbp", "r11", "memory"
     );
 }
@@ -26,7 +26,7 @@ pub fn syscall2(sys: plan9.SYS, arg0: usize, arg1: usize) usize {
         : [ret] "={rax}" (-> usize),
         : [arg0] "{r8}" (arg0),
           [arg1] "{r9}" (arg1),
-          [syscall_number] "{rbp}" (@enumToInt(sys)),
+          [syscall_number] "{rbp}" (@intFromEnum(sys)),
         : "rcx", "rax", "rbp", "r11", "memory"
     );
 }
@@ -45,7 +45,7 @@ pub fn syscall3(sys: plan9.SYS, arg0: usize, arg1: usize, arg2: usize) usize {
         : [arg0] "{r8}" (arg0),
           [arg1] "{r9}" (arg1),
           [arg2] "{r10}" (arg2),
-          [syscall_number] "{rbp}" (@enumToInt(sys)),
+          [syscall_number] "{rbp}" (@intFromEnum(sys)),
         : "rcx", "rax", "rbp", "r11", "memory"
     );
 }
@@ -67,7 +67,7 @@ pub fn syscall4(sys: plan9.SYS, arg0: usize, arg1: usize, arg2: usize, arg3: usi
           [arg1] "{r9}" (arg1),
           [arg2] "{r10}" (arg2),
           [arg3] "{r11}" (arg3),
-          [syscall_number] "{rbp}" (@enumToInt(sys)),
+          [syscall_number] "{rbp}" (@intFromEnum(sys)),
         : "rcx", "rax", "rbp", "r11", "memory"
     );
 }
lib/std/os/uefi/protocols/device_path_protocol.zig
@@ -23,7 +23,7 @@ pub const DevicePathProtocol = extern struct {
 
     /// Returns the next DevicePathProtocol node in the sequence, if any.
     pub fn next(self: *DevicePathProtocol) ?*DevicePathProtocol {
-        if (self.type == .End and @intToEnum(EndDevicePath.Subtype, self.subtype) == .EndEntire)
+        if (self.type == .End and @enumFromInt(EndDevicePath.Subtype, self.subtype) == .EndEntire)
             return null;
 
         return @ptrCast(*DevicePathProtocol, @ptrCast([*]u8, self) + self.length);
@@ -37,7 +37,7 @@ pub const DevicePathProtocol = extern struct {
             node = next_node;
         }
 
-        return (@ptrToInt(node) + node.length) - @ptrToInt(self);
+        return (@intFromPtr(node) + node.length) - @intFromPtr(self);
     }
 
     /// Creates a file device path from the existing device path and a file path.
@@ -99,7 +99,7 @@ pub const DevicePathProtocol = extern struct {
 
         inline for (type_info.fields) |subtype| {
             // The tag names match the union names, so just grab that off the enum
-            const tag_val: u8 = @enumToInt(@field(TTag, subtype.name));
+            const tag_val: u8 = @intFromEnum(@field(TTag, subtype.name));
 
             if (self.subtype == tag_val) {
                 // e.g. expr = .{ .Pci = @ptrCast(...) }
lib/std/os/uefi/pool_allocator.zig
@@ -9,7 +9,7 @@ const Allocator = mem.Allocator;
 
 const UefiPoolAllocator = struct {
     fn getHeader(ptr: [*]u8) *[*]align(8) u8 {
-        return @intToPtr(*[*]align(8) u8, @ptrToInt(ptr) - @sizeOf(usize));
+        return @ptrFromInt(*[*]align(8) u8, @intFromPtr(ptr) - @sizeOf(usize));
     }
 
     fn alloc(
@@ -31,7 +31,7 @@ const UefiPoolAllocator = struct {
         var unaligned_ptr: [*]align(8) u8 = undefined;
         if (uefi.system_table.boot_services.?.allocatePool(uefi.efi_pool_memory_type, full_len, &unaligned_ptr) != .Success) return null;
 
-        const unaligned_addr = @ptrToInt(unaligned_ptr);
+        const unaligned_addr = @intFromPtr(unaligned_ptr);
         const aligned_addr = mem.alignForward(usize, unaligned_addr + @sizeOf(usize), ptr_align);
 
         var aligned_ptr = unaligned_ptr + (aligned_addr - unaligned_addr);
lib/std/os/windows/user32.zig
@@ -1350,7 +1350,7 @@ pub extern "user32" fn AdjustWindowRectEx(lpRect: *RECT, dwStyle: DWORD, bMenu:
 pub fn adjustWindowRectEx(lpRect: *RECT, dwStyle: u32, bMenu: bool, dwExStyle: u32) !void {
     assert(dwStyle & WS_OVERLAPPED == 0);
 
-    if (AdjustWindowRectEx(lpRect, dwStyle, @boolToInt(bMenu), dwExStyle) == 0) {
+    if (AdjustWindowRectEx(lpRect, dwStyle, @intFromBool(bMenu), dwExStyle) == 0) {
         switch (GetLastError()) {
             .INVALID_PARAMETER => unreachable,
             else => |err| return windows.unexpectedError(err),
lib/std/os/windows/ws2_32.zig
@@ -21,7 +21,7 @@ const LPARAM = windows.LPARAM;
 const FARPROC = windows.FARPROC;
 
 pub const SOCKET = *opaque {};
-pub const INVALID_SOCKET = @intToPtr(SOCKET, ~@as(usize, 0));
+pub const INVALID_SOCKET = @ptrFromInt(SOCKET, ~@as(usize, 0));
 
 pub const GROUP = u32;
 pub const ADDRESS_FAMILY = u16;
lib/std/os/linux.zig
@@ -206,7 +206,7 @@ fn splitValue64(val: i64) [2]u32 {
 pub fn getErrno(r: usize) E {
     const signed_r = @bitCast(isize, r);
     const int = if (signed_r > -4096 and signed_r < 0) -signed_r else 0;
-    return @intToEnum(E, int);
+    return @enumFromInt(E, int);
 }
 
 pub fn dup(old: i32) usize {
@@ -234,7 +234,7 @@ pub fn dup3(old: i32, new: i32, flags: u32) usize {
 }
 
 pub fn chdir(path: [*:0]const u8) usize {
-    return syscall1(.chdir, @ptrToInt(path));
+    return syscall1(.chdir, @intFromPtr(path));
 }
 
 pub fn fchdir(fd: fd_t) usize {
@@ -242,11 +242,11 @@ pub fn fchdir(fd: fd_t) usize {
 }
 
 pub fn chroot(path: [*:0]const u8) usize {
-    return syscall1(.chroot, @ptrToInt(path));
+    return syscall1(.chroot, @intFromPtr(path));
 }
 
 pub fn execve(path: [*:0]const u8, argv: [*:null]const ?[*:0]const u8, envp: [*:null]const ?[*:0]const u8) usize {
-    return syscall3(.execve, @ptrToInt(path), @ptrToInt(argv), @ptrToInt(envp));
+    return syscall3(.execve, @intFromPtr(path), @intFromPtr(argv), @intFromPtr(envp));
 }
 
 pub fn fork() usize {
@@ -273,7 +273,7 @@ pub fn futimens(fd: i32, times: *const [2]timespec) usize {
 }
 
 pub fn utimensat(dirfd: i32, path: ?[*:0]const u8, times: *const [2]timespec, flags: u32) usize {
-    return syscall4(.utimensat, @bitCast(usize, @as(isize, dirfd)), @ptrToInt(path), @ptrToInt(times), flags);
+    return syscall4(.utimensat, @bitCast(usize, @as(isize, dirfd)), @intFromPtr(path), @intFromPtr(times), flags);
 }
 
 pub fn fallocate(fd: i32, mode: i32, offset: i64, length: i64) usize {
@@ -301,22 +301,22 @@ pub fn fallocate(fd: i32, mode: i32, offset: i64, length: i64) usize {
 }
 
 pub fn futex_wait(uaddr: *const i32, futex_op: u32, val: i32, timeout: ?*const timespec) usize {
-    return syscall4(.futex, @ptrToInt(uaddr), futex_op, @bitCast(u32, val), @ptrToInt(timeout));
+    return syscall4(.futex, @intFromPtr(uaddr), futex_op, @bitCast(u32, val), @intFromPtr(timeout));
 }
 
 pub fn futex_wake(uaddr: *const i32, futex_op: u32, val: i32) usize {
-    return syscall3(.futex, @ptrToInt(uaddr), futex_op, @bitCast(u32, val));
+    return syscall3(.futex, @intFromPtr(uaddr), futex_op, @bitCast(u32, val));
 }
 
 pub fn getcwd(buf: [*]u8, size: usize) usize {
-    return syscall2(.getcwd, @ptrToInt(buf), size);
+    return syscall2(.getcwd, @intFromPtr(buf), size);
 }
 
 pub fn getdents(fd: i32, dirp: [*]u8, len: usize) usize {
     return syscall3(
         .getdents,
         @bitCast(usize, @as(isize, fd)),
-        @ptrToInt(dirp),
+        @intFromPtr(dirp),
         @min(len, maxInt(c_int)),
     );
 }
@@ -325,7 +325,7 @@ pub fn getdents64(fd: i32, dirp: [*]u8, len: usize) usize {
     return syscall3(
         .getdents64,
         @bitCast(usize, @as(isize, fd)),
-        @ptrToInt(dirp),
+        @intFromPtr(dirp),
         @min(len, maxInt(c_int)),
     );
 }
@@ -335,7 +335,7 @@ pub fn inotify_init1(flags: u32) usize {
 }
 
 pub fn inotify_add_watch(fd: i32, pathname: [*:0]const u8, mask: u32) usize {
-    return syscall3(.inotify_add_watch, @bitCast(usize, @as(isize, fd)), @ptrToInt(pathname), mask);
+    return syscall3(.inotify_add_watch, @bitCast(usize, @as(isize, fd)), @intFromPtr(pathname), mask);
 }
 
 pub fn inotify_rm_watch(fd: i32, wd: i32) usize {
@@ -344,61 +344,61 @@ pub fn inotify_rm_watch(fd: i32, wd: i32) usize {
 
 pub fn readlink(noalias path: [*:0]const u8, noalias buf_ptr: [*]u8, buf_len: usize) usize {
     if (@hasField(SYS, "readlink")) {
-        return syscall3(.readlink, @ptrToInt(path), @ptrToInt(buf_ptr), buf_len);
+        return syscall3(.readlink, @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
     } else {
-        return syscall4(.readlinkat, @bitCast(usize, @as(isize, AT.FDCWD)), @ptrToInt(path), @ptrToInt(buf_ptr), buf_len);
+        return syscall4(.readlinkat, @bitCast(usize, @as(isize, AT.FDCWD)), @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
     }
 }
 
 pub fn readlinkat(dirfd: i32, noalias path: [*:0]const u8, noalias buf_ptr: [*]u8, buf_len: usize) usize {
-    return syscall4(.readlinkat, @bitCast(usize, @as(isize, dirfd)), @ptrToInt(path), @ptrToInt(buf_ptr), buf_len);
+    return syscall4(.readlinkat, @bitCast(usize, @as(isize, dirfd)), @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
 }
 
 pub fn mkdir(path: [*:0]const u8, mode: u32) usize {
     if (@hasField(SYS, "mkdir")) {
-        return syscall2(.mkdir, @ptrToInt(path), mode);
+        return syscall2(.mkdir, @intFromPtr(path), mode);
     } else {
-        return syscall3(.mkdirat, @bitCast(usize, @as(isize, AT.FDCWD)), @ptrToInt(path), mode);
+        return syscall3(.mkdirat, @bitCast(usize, @as(isize, AT.FDCWD)), @intFromPtr(path), mode);
     }
 }
 
 pub fn mkdirat(dirfd: i32, path: [*:0]const u8, mode: u32) usize {
-    return syscall3(.mkdirat, @bitCast(usize, @as(isize, dirfd)), @ptrToInt(path), mode);
+    return syscall3(.mkdirat, @bitCast(usize, @as(isize, dirfd)), @intFromPtr(path), mode);
 }
 
 pub fn mknod(path: [*:0]const u8, mode: u32, dev: u32) usize {
     if (@hasField(SYS, "mknod")) {
-        return syscall3(.mknod, @ptrToInt(path), mode, dev);
+        return syscall3(.mknod, @intFromPtr(path), mode, dev);
     } else {
         return mknodat(AT.FDCWD, path, mode, dev);
     }
 }
 
 pub fn mknodat(dirfd: i32, path: [*:0]const u8, mode: u32, dev: u32) usize {
-    return syscall4(.mknodat, @bitCast(usize, @as(isize, dirfd)), @ptrToInt(path), mode, dev);
+    return syscall4(.mknodat, @bitCast(usize, @as(isize, dirfd)), @intFromPtr(path), mode, dev);
 }
 
 pub fn mount(special: [*:0]const u8, dir: [*:0]const u8, fstype: ?[*:0]const u8, flags: u32, data: usize) usize {
-    return syscall5(.mount, @ptrToInt(special), @ptrToInt(dir), @ptrToInt(fstype), flags, data);
+    return syscall5(.mount, @intFromPtr(special), @intFromPtr(dir), @intFromPtr(fstype), flags, data);
 }
 
 pub fn umount(special: [*:0]const u8) usize {
-    return syscall2(.umount2, @ptrToInt(special), 0);
+    return syscall2(.umount2, @intFromPtr(special), 0);
 }
 
 pub fn umount2(special: [*:0]const u8, flags: u32) usize {
-    return syscall2(.umount2, @ptrToInt(special), flags);
+    return syscall2(.umount2, @intFromPtr(special), flags);
 }
 
 pub fn mmap(address: ?[*]u8, length: usize, prot: usize, flags: u32, fd: i32, offset: i64) usize {
     if (@hasField(SYS, "mmap2")) {
         // Make sure the offset is also specified in multiples of page size
         if ((offset & (MMAP2_UNIT - 1)) != 0)
-            return @bitCast(usize, -@as(isize, @enumToInt(E.INVAL)));
+            return @bitCast(usize, -@as(isize, @intFromEnum(E.INVAL)));
 
         return syscall6(
             .mmap2,
-            @ptrToInt(address),
+            @intFromPtr(address),
             length,
             prot,
             flags,
@@ -408,7 +408,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: usize, flags: u32, fd: i32, of
     } else {
         return syscall6(
             .mmap,
-            @ptrToInt(address),
+            @intFromPtr(address),
             length,
             prot,
             flags,
@@ -419,7 +419,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: usize, flags: u32, fd: i32, of
 }
 
 pub fn mprotect(address: [*]const u8, length: usize, protection: usize) usize {
-    return syscall3(.mprotect, @ptrToInt(address), length, protection);
+    return syscall3(.mprotect, @intFromPtr(address), length, protection);
 }
 
 pub const MSF = struct {
@@ -429,22 +429,22 @@ pub const MSF = struct {
 };
 
 pub fn msync(address: [*]const u8, length: usize, flags: i32) usize {
-    return syscall3(.msync, @ptrToInt(address), length, @bitCast(u32, flags));
+    return syscall3(.msync, @intFromPtr(address), length, @bitCast(u32, flags));
 }
 
 pub fn munmap(address: [*]const u8, length: usize) usize {
-    return syscall2(.munmap, @ptrToInt(address), length);
+    return syscall2(.munmap, @intFromPtr(address), length);
 }
 
 pub fn poll(fds: [*]pollfd, n: nfds_t, timeout: i32) usize {
     if (@hasField(SYS, "poll")) {
-        return syscall3(.poll, @ptrToInt(fds), n, @bitCast(u32, timeout));
+        return syscall3(.poll, @intFromPtr(fds), n, @bitCast(u32, timeout));
     } else {
         return syscall5(
             .ppoll,
-            @ptrToInt(fds),
+            @intFromPtr(fds),
             n,
-            @ptrToInt(if (timeout >= 0)
+            @intFromPtr(if (timeout >= 0)
                 &timespec{
                     .tv_sec = @divTrunc(timeout, 1000),
                     .tv_nsec = @rem(timeout, 1000) * 1000000,
@@ -458,11 +458,11 @@ pub fn poll(fds: [*]pollfd, n: nfds_t, timeout: i32) usize {
 }
 
 pub fn ppoll(fds: [*]pollfd, n: nfds_t, timeout: ?*timespec, sigmask: ?*const sigset_t) usize {
-    return syscall5(.ppoll, @ptrToInt(fds), n, @ptrToInt(timeout), @ptrToInt(sigmask), NSIG / 8);
+    return syscall5(.ppoll, @intFromPtr(fds), n, @intFromPtr(timeout), @intFromPtr(sigmask), NSIG / 8);
 }
 
 pub fn read(fd: i32, buf: [*]u8, count: usize) usize {
-    return syscall3(.read, @bitCast(usize, @as(isize, fd)), @ptrToInt(buf), count);
+    return syscall3(.read, @bitCast(usize, @as(isize, fd)), @intFromPtr(buf), count);
 }
 
 pub fn preadv(fd: i32, iov: [*]const iovec, count: usize, offset: i64) usize {
@@ -470,7 +470,7 @@ pub fn preadv(fd: i32, iov: [*]const iovec, count: usize, offset: i64) usize {
     return syscall5(
         .preadv,
         @bitCast(usize, @as(isize, fd)),
-        @ptrToInt(iov),
+        @intFromPtr(iov),
         count,
         // Kernel expects the offset is split into largest natural word-size.
         // See following link for detail:
@@ -485,7 +485,7 @@ pub fn preadv2(fd: i32, iov: [*]const iovec, count: usize, offset: i64, flags: k
     return syscall6(
         .preadv2,
         @bitCast(usize, @as(isize, fd)),
-        @ptrToInt(iov),
+        @intFromPtr(iov),
         count,
         // See comments in preadv
         @truncate(usize, offset_u),
@@ -495,11 +495,11 @@ pub fn preadv2(fd: i32, iov: [*]const iovec, count: usize, offset: i64, flags: k
 }
 
 pub fn readv(fd: i32, iov: [*]const iovec, count: usize) usize {
-    return syscall3(.readv, @bitCast(usize, @as(isize, fd)), @ptrToInt(iov), count);
+    return syscall3(.readv, @bitCast(usize, @as(isize, fd)), @intFromPtr(iov), count);
 }
 
 pub fn writev(fd: i32, iov: [*]const iovec_const, count: usize) usize {
-    return syscall3(.writev, @bitCast(usize, @as(isize, fd)), @ptrToInt(iov), count);
+    return syscall3(.writev, @bitCast(usize, @as(isize, fd)), @intFromPtr(iov), count);
 }
 
 pub fn pwritev(fd: i32, iov: [*]const iovec_const, count: usize, offset: i64) usize {
@@ -507,7 +507,7 @@ pub fn pwritev(fd: i32, iov: [*]const iovec_const, count: usize, offset: i64) us
     return syscall5(
         .pwritev,
         @bitCast(usize, @as(isize, fd)),
-        @ptrToInt(iov),
+        @intFromPtr(iov),
         count,
         // See comments in preadv
         @truncate(usize, offset_u),
@@ -520,7 +520,7 @@ pub fn pwritev2(fd: i32, iov: [*]const iovec_const, count: usize, offset: i64, f
     return syscall6(
         .pwritev2,
         @bitCast(usize, @as(isize, fd)),
-        @ptrToInt(iov),
+        @intFromPtr(iov),
         count,
         // See comments in preadv
         @truncate(usize, offset_u),
@@ -531,22 +531,22 @@ pub fn pwritev2(fd: i32, iov: [*]const iovec_const, count: usize, offset: i64, f
 
 pub fn rmdir(path: [*:0]const u8) usize {
     if (@hasField(SYS, "rmdir")) {
-        return syscall1(.rmdir, @ptrToInt(path));
+        return syscall1(.rmdir, @intFromPtr(path));
     } else {
-        return syscall3(.unlinkat, @bitCast(usize, @as(isize, AT.FDCWD)), @ptrToInt(path), AT.REMOVEDIR);
+        return syscall3(.unlinkat, @bitCast(usize, @as(isize, AT.FDCWD)), @intFromPtr(path), AT.REMOVEDIR);
     }
 }
 
 pub fn symlink(existing: [*:0]const u8, new: [*:0]const u8) usize {
     if (@hasField(SYS, "symlink")) {
-        return syscall2(.symlink, @ptrToInt(existing), @ptrToInt(new));
+        return syscall2(.symlink, @intFromPtr(existing), @intFromPtr(new));
     } else {
-        return syscall3(.symlinkat, @ptrToInt(existing), @bitCast(usize, @as(isize, AT.FDCWD)), @ptrToInt(new));
+        return syscall3(.symlinkat, @intFromPtr(existing), @bitCast(usize, @as(isize, AT.FDCWD)), @intFromPtr(new));
     }
 }
 
 pub fn symlinkat(existing: [*:0]const u8, newfd: i32, newpath: [*:0]const u8) usize {
-    return syscall3(.symlinkat, @ptrToInt(existing), @bitCast(usize, @as(isize, newfd)), @ptrToInt(newpath));
+    return syscall3(.symlinkat, @intFromPtr(existing), @bitCast(usize, @as(isize, newfd)), @intFromPtr(newpath));
 }
 
 pub fn pread(fd: i32, buf: [*]u8, count: usize, offset: i64) usize {
@@ -556,7 +556,7 @@ pub fn pread(fd: i32, buf: [*]u8, count: usize, offset: i64) usize {
             return syscall6(
                 .pread64,
                 @bitCast(usize, @as(isize, fd)),
-                @ptrToInt(buf),
+                @intFromPtr(buf),
                 count,
                 0,
                 offset_halves[0],
@@ -566,7 +566,7 @@ pub fn pread(fd: i32, buf: [*]u8, count: usize, offset: i64) usize {
             return syscall5(
                 .pread64,
                 @bitCast(usize, @as(isize, fd)),
-                @ptrToInt(buf),
+                @intFromPtr(buf),
                 count,
                 offset_halves[0],
                 offset_halves[1],
@@ -581,7 +581,7 @@ pub fn pread(fd: i32, buf: [*]u8, count: usize, offset: i64) usize {
         return syscall4(
             syscall_number,
             @bitCast(usize, @as(isize, fd)),
-            @ptrToInt(buf),
+            @intFromPtr(buf),
             count,
             @bitCast(u64, offset),
         );
@@ -590,32 +590,32 @@ pub fn pread(fd: i32, buf: [*]u8, count: usize, offset: i64) usize {
 
 pub fn access(path: [*:0]const u8, mode: u32) usize {
     if (@hasField(SYS, "access")) {
-        return syscall2(.access, @ptrToInt(path), mode);
+        return syscall2(.access, @intFromPtr(path), mode);
     } else {
-        return syscall4(.faccessat, @bitCast(usize, @as(isize, AT.FDCWD)), @ptrToInt(path), mode, 0);
+        return syscall4(.faccessat, @bitCast(usize, @as(isize, AT.FDCWD)), @intFromPtr(path), mode, 0);
     }
 }
 
 pub fn faccessat(dirfd: i32, path: [*:0]const u8, mode: u32, flags: u32) usize {
-    return syscall4(.faccessat, @bitCast(usize, @as(isize, dirfd)), @ptrToInt(path), mode, flags);
+    return syscall4(.faccessat, @bitCast(usize, @as(isize, dirfd)), @intFromPtr(path), mode, flags);
 }
 
 pub fn pipe(fd: *[2]i32) usize {
     if (comptime (native_arch.isMIPS() or native_arch.isSPARC())) {
         return syscall_pipe(fd);
     } else if (@hasField(SYS, "pipe")) {
-        return syscall1(.pipe, @ptrToInt(fd));
+        return syscall1(.pipe, @intFromPtr(fd));
     } else {
-        return syscall2(.pipe2, @ptrToInt(fd), 0);
+        return syscall2(.pipe2, @intFromPtr(fd), 0);
     }
 }
 
 pub fn pipe2(fd: *[2]i32, flags: u32) usize {
-    return syscall2(.pipe2, @ptrToInt(fd), flags);
+    return syscall2(.pipe2, @intFromPtr(fd), flags);
 }
 
 pub fn write(fd: i32, buf: [*]const u8, count: usize) usize {
-    return syscall3(.write, @bitCast(usize, @as(isize, fd)), @ptrToInt(buf), count);
+    return syscall3(.write, @bitCast(usize, @as(isize, fd)), @intFromPtr(buf), count);
 }
 
 pub fn ftruncate(fd: i32, length: i64) usize {
@@ -654,7 +654,7 @@ pub fn pwrite(fd: i32, buf: [*]const u8, count: usize, offset: i64) usize {
             return syscall6(
                 .pwrite64,
                 @bitCast(usize, @as(isize, fd)),
-                @ptrToInt(buf),
+                @intFromPtr(buf),
                 count,
                 0,
                 offset_halves[0],
@@ -664,7 +664,7 @@ pub fn pwrite(fd: i32, buf: [*]const u8, count: usize, offset: i64) usize {
             return syscall5(
                 .pwrite64,
                 @bitCast(usize, @as(isize, fd)),
-                @ptrToInt(buf),
+                @intFromPtr(buf),
                 count,
                 offset_halves[0],
                 offset_halves[1],
@@ -679,7 +679,7 @@ pub fn pwrite(fd: i32, buf: [*]const u8, count: usize, offset: i64) usize {
         return syscall4(
             syscall_number,
             @bitCast(usize, @as(isize, fd)),
-            @ptrToInt(buf),
+            @intFromPtr(buf),
             count,
             @bitCast(u64, offset),
         );
@@ -688,11 +688,11 @@ pub fn pwrite(fd: i32, buf: [*]const u8, count: usize, offset: i64) usize {
 
 pub fn rename(old: [*:0]const u8, new: [*:0]const u8) usize {
     if (@hasField(SYS, "rename")) {
-        return syscall2(.rename, @ptrToInt(old), @ptrToInt(new));
+        return syscall2(.rename, @intFromPtr(old), @intFromPtr(new));
     } else if (@hasField(SYS, "renameat")) {
-        return syscall4(.renameat, @bitCast(usize, @as(isize, AT.FDCWD)), @ptrToInt(old), @bitCast(usize, @as(isize, AT.FDCWD)), @ptrToInt(new));
+        return syscall4(.renameat, @bitCast(usize, @as(isize, AT.FDCWD)), @intFromPtr(old), @bitCast(usize, @as(isize, AT.FDCWD)), @intFromPtr(new));
     } else {
-        return syscall5(.renameat2, @bitCast(usize, @as(isize, AT.FDCWD)), @ptrToInt(old), @bitCast(usize, @as(isize, AT.FDCWD)), @ptrToInt(new), 0);
+        return syscall5(.renameat2, @bitCast(usize, @as(isize, AT.FDCWD)), @intFromPtr(old), @bitCast(usize, @as(isize, AT.FDCWD)), @intFromPtr(new), 0);
     }
 }
 
@@ -701,17 +701,17 @@ pub fn renameat(oldfd: i32, oldpath: [*]const u8, newfd: i32, newpath: [*]const
         return syscall4(
             .renameat,
             @bitCast(usize, @as(isize, oldfd)),
-            @ptrToInt(oldpath),
+            @intFromPtr(oldpath),
             @bitCast(usize, @as(isize, newfd)),
-            @ptrToInt(newpath),
+            @intFromPtr(newpath),
         );
     } else {
         return syscall5(
             .renameat2,
             @bitCast(usize, @as(isize, oldfd)),
-            @ptrToInt(oldpath),
+            @intFromPtr(oldpath),
             @bitCast(usize, @as(isize, newfd)),
-            @ptrToInt(newpath),
+            @intFromPtr(newpath),
             0,
         );
     }
@@ -721,21 +721,21 @@ pub fn renameat2(oldfd: i32, oldpath: [*:0]const u8, newfd: i32, newpath: [*:0]c
     return syscall5(
         .renameat2,
         @bitCast(usize, @as(isize, oldfd)),
-        @ptrToInt(oldpath),
+        @intFromPtr(oldpath),
         @bitCast(usize, @as(isize, newfd)),
-        @ptrToInt(newpath),
+        @intFromPtr(newpath),
         flags,
     );
 }
 
 pub fn open(path: [*:0]const u8, flags: u32, perm: mode_t) usize {
     if (@hasField(SYS, "open")) {
-        return syscall3(.open, @ptrToInt(path), flags, perm);
+        return syscall3(.open, @intFromPtr(path), flags, perm);
     } else {
         return syscall4(
             .openat,
             @bitCast(usize, @as(isize, AT.FDCWD)),
-            @ptrToInt(path),
+            @intFromPtr(path),
             flags,
             perm,
         );
@@ -743,17 +743,17 @@ pub fn open(path: [*:0]const u8, flags: u32, perm: mode_t) usize {
 }
 
 pub fn create(path: [*:0]const u8, perm: mode_t) usize {
-    return syscall2(.creat, @ptrToInt(path), perm);
+    return syscall2(.creat, @intFromPtr(path), perm);
 }
 
 pub fn openat(dirfd: i32, path: [*:0]const u8, flags: u32, mode: mode_t) usize {
     // dirfd could be negative, for example AT.FDCWD is -100
-    return syscall4(.openat, @bitCast(usize, @as(isize, dirfd)), @ptrToInt(path), flags, mode);
+    return syscall4(.openat, @bitCast(usize, @as(isize, dirfd)), @intFromPtr(path), flags, mode);
 }
 
 /// See also `clone` (from the arch-specific include)
 pub fn clone5(flags: usize, child_stack_ptr: usize, parent_tid: *i32, child_tid: *i32, newtls: usize) usize {
-    return syscall5(.clone, flags, child_stack_ptr, @ptrToInt(parent_tid), @ptrToInt(child_tid), newtls);
+    return syscall5(.clone, flags, child_stack_ptr, @intFromPtr(parent_tid), @intFromPtr(child_tid), newtls);
 }
 
 /// See also `clone` (from the arch-specific include)
@@ -771,12 +771,12 @@ pub fn fchmod(fd: i32, mode: mode_t) usize {
 
 pub fn chmod(path: [*:0]const u8, mode: mode_t) usize {
     if (@hasField(SYS, "chmod")) {
-        return syscall2(.chmod, @ptrToInt(path), mode);
+        return syscall2(.chmod, @intFromPtr(path), mode);
     } else {
         return syscall4(
             .fchmodat,
             @bitCast(usize, @as(isize, AT.FDCWD)),
-            @ptrToInt(path),
+            @intFromPtr(path),
             mode,
             0,
         );
@@ -792,7 +792,7 @@ pub fn fchown(fd: i32, owner: uid_t, group: gid_t) usize {
 }
 
 pub fn fchmodat(fd: i32, path: [*:0]const u8, mode: mode_t, flags: u32) usize {
-    return syscall4(.fchmodat, @bitCast(usize, @as(isize, fd)), @ptrToInt(path), mode, flags);
+    return syscall4(.fchmodat, @bitCast(usize, @as(isize, fd)), @intFromPtr(path), mode, flags);
 }
 
 /// Can only be called on 32 bit systems. For 64 bit see `lseek`.
@@ -804,7 +804,7 @@ pub fn llseek(fd: i32, offset: u64, result: ?*u64, whence: usize) usize {
         @bitCast(usize, @as(isize, fd)),
         @truncate(usize, offset >> 32),
         @truncate(usize, offset),
-        @ptrToInt(result),
+        @intFromPtr(result),
         whence,
     );
 }
@@ -874,15 +874,15 @@ pub const LINUX_REBOOT = struct {
 pub fn reboot(magic: LINUX_REBOOT.MAGIC1, magic2: LINUX_REBOOT.MAGIC2, cmd: LINUX_REBOOT.CMD, arg: ?*const anyopaque) usize {
     return std.os.linux.syscall4(
         .reboot,
-        @enumToInt(magic),
-        @enumToInt(magic2),
-        @enumToInt(cmd),
-        @ptrToInt(arg),
+        @intFromEnum(magic),
+        @intFromEnum(magic2),
+        @intFromEnum(cmd),
+        @intFromPtr(arg),
     );
 }
 
 pub fn getrandom(buf: [*]u8, count: usize, flags: u32) usize {
-    return syscall3(.getrandom, @ptrToInt(buf), count, flags);
+    return syscall3(.getrandom, @intFromPtr(buf), count, flags);
 }
 
 pub fn kill(pid: pid_t, sig: i32) usize {
@@ -901,17 +901,17 @@ pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8, flags: i32) usize {
     if (@hasField(SYS, "link")) {
         return syscall3(
             .link,
-            @ptrToInt(oldpath),
-            @ptrToInt(newpath),
+            @intFromPtr(oldpath),
+            @intFromPtr(newpath),
             @bitCast(usize, @as(isize, flags)),
         );
     } else {
         return syscall5(
             .linkat,
             @bitCast(usize, @as(isize, AT.FDCWD)),
-            @ptrToInt(oldpath),
+            @intFromPtr(oldpath),
             @bitCast(usize, @as(isize, AT.FDCWD)),
-            @ptrToInt(newpath),
+            @intFromPtr(newpath),
             @bitCast(usize, @as(isize, flags)),
         );
     }
@@ -921,41 +921,41 @@ pub fn linkat(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]co
     return syscall5(
         .linkat,
         @bitCast(usize, @as(isize, oldfd)),
-        @ptrToInt(oldpath),
+        @intFromPtr(oldpath),
         @bitCast(usize, @as(isize, newfd)),
-        @ptrToInt(newpath),
+        @intFromPtr(newpath),
         @bitCast(usize, @as(isize, flags)),
     );
 }
 
 pub fn unlink(path: [*:0]const u8) usize {
     if (@hasField(SYS, "unlink")) {
-        return syscall1(.unlink, @ptrToInt(path));
+        return syscall1(.unlink, @intFromPtr(path));
     } else {
-        return syscall3(.unlinkat, @bitCast(usize, @as(isize, AT.FDCWD)), @ptrToInt(path), 0);
+        return syscall3(.unlinkat, @bitCast(usize, @as(isize, AT.FDCWD)), @intFromPtr(path), 0);
     }
 }
 
 pub fn unlinkat(dirfd: i32, path: [*:0]const u8, flags: u32) usize {
-    return syscall3(.unlinkat, @bitCast(usize, @as(isize, dirfd)), @ptrToInt(path), flags);
+    return syscall3(.unlinkat, @bitCast(usize, @as(isize, dirfd)), @intFromPtr(path), flags);
 }
 
 pub fn waitpid(pid: pid_t, status: *u32, flags: u32) usize {
-    return syscall4(.wait4, @bitCast(usize, @as(isize, pid)), @ptrToInt(status), flags, 0);
+    return syscall4(.wait4, @bitCast(usize, @as(isize, pid)), @intFromPtr(status), flags, 0);
 }
 
 pub fn wait4(pid: pid_t, status: *u32, flags: u32, usage: ?*rusage) usize {
     return syscall4(
         .wait4,
         @bitCast(usize, @as(isize, pid)),
-        @ptrToInt(status),
+        @intFromPtr(status),
         flags,
-        @ptrToInt(usage),
+        @intFromPtr(usage),
     );
 }
 
 pub fn waitid(id_type: P, id: i32, infop: *siginfo_t, flags: u32) usize {
-    return syscall5(.waitid, @enumToInt(id_type), @bitCast(usize, @as(isize, id)), @ptrToInt(infop), flags, 0);
+    return syscall5(.waitid, @intFromEnum(id_type), @bitCast(usize, @as(isize, id)), @intFromPtr(infop), flags, 0);
 }
 
 pub fn fcntl(fd: fd_t, cmd: i32, arg: usize) usize {
@@ -978,16 +978,16 @@ pub fn clock_gettime(clk_id: i32, tp: *timespec) usize {
             const f = @ptrCast(vdso_clock_gettime_ty, fn_ptr);
             const rc = f(clk_id, tp);
             switch (rc) {
-                0, @bitCast(usize, -@as(isize, @enumToInt(E.INVAL))) => return rc,
+                0, @bitCast(usize, -@as(isize, @intFromEnum(E.INVAL))) => return rc,
                 else => {},
             }
         }
     }
-    return syscall2(.clock_gettime, @bitCast(usize, @as(isize, clk_id)), @ptrToInt(tp));
+    return syscall2(.clock_gettime, @bitCast(usize, @as(isize, clk_id)), @intFromPtr(tp));
 }
 
 fn init_vdso_clock_gettime(clk: i32, ts: *timespec) callconv(.C) usize {
-    const ptr = @intToPtr(?*const anyopaque, vdso.lookup(VDSO.CGT_VER, VDSO.CGT_SYM));
+    const ptr = @ptrFromInt(?*const anyopaque, vdso.lookup(VDSO.CGT_VER, VDSO.CGT_SYM));
     // Note that we may not have a VDSO at all, update the stub address anyway
     // so that clock_gettime will fall back on the good old (and slow) syscall
     @atomicStore(?*const anyopaque, &vdso_clock_gettime, ptr, .Monotonic);
@@ -996,27 +996,27 @@ fn init_vdso_clock_gettime(clk: i32, ts: *timespec) callconv(.C) usize {
         const f = @ptrCast(vdso_clock_gettime_ty, fn_ptr);
         return f(clk, ts);
     }
-    return @bitCast(usize, -@as(isize, @enumToInt(E.NOSYS)));
+    return @bitCast(usize, -@as(isize, @intFromEnum(E.NOSYS)));
 }
 
 pub fn clock_getres(clk_id: i32, tp: *timespec) usize {
-    return syscall2(.clock_getres, @bitCast(usize, @as(isize, clk_id)), @ptrToInt(tp));
+    return syscall2(.clock_getres, @bitCast(usize, @as(isize, clk_id)), @intFromPtr(tp));
 }
 
 pub fn clock_settime(clk_id: i32, tp: *const timespec) usize {
-    return syscall2(.clock_settime, @bitCast(usize, @as(isize, clk_id)), @ptrToInt(tp));
+    return syscall2(.clock_settime, @bitCast(usize, @as(isize, clk_id)), @intFromPtr(tp));
 }
 
 pub fn gettimeofday(tv: *timeval, tz: *timezone) usize {
-    return syscall2(.gettimeofday, @ptrToInt(tv), @ptrToInt(tz));
+    return syscall2(.gettimeofday, @intFromPtr(tv), @intFromPtr(tz));
 }
 
 pub fn settimeofday(tv: *const timeval, tz: *const timezone) usize {
-    return syscall2(.settimeofday, @ptrToInt(tv), @ptrToInt(tz));
+    return syscall2(.settimeofday, @intFromPtr(tv), @intFromPtr(tz));
 }
 
 pub fn nanosleep(req: *const timespec, rem: ?*timespec) usize {
-    return syscall2(.nanosleep, @ptrToInt(req), @ptrToInt(rem));
+    return syscall2(.nanosleep, @intFromPtr(req), @intFromPtr(rem));
 }
 
 pub fn setuid(uid: uid_t) usize {
@@ -1107,17 +1107,17 @@ pub fn setegid(egid: gid_t) usize {
 
 pub fn getresuid(ruid: *uid_t, euid: *uid_t, suid: *uid_t) usize {
     if (@hasField(SYS, "getresuid32")) {
-        return syscall3(.getresuid32, @ptrToInt(ruid), @ptrToInt(euid), @ptrToInt(suid));
+        return syscall3(.getresuid32, @intFromPtr(ruid), @intFromPtr(euid), @intFromPtr(suid));
     } else {
-        return syscall3(.getresuid, @ptrToInt(ruid), @ptrToInt(euid), @ptrToInt(suid));
+        return syscall3(.getresuid, @intFromPtr(ruid), @intFromPtr(euid), @intFromPtr(suid));
     }
 }
 
 pub fn getresgid(rgid: *gid_t, egid: *gid_t, sgid: *gid_t) usize {
     if (@hasField(SYS, "getresgid32")) {
-        return syscall3(.getresgid32, @ptrToInt(rgid), @ptrToInt(egid), @ptrToInt(sgid));
+        return syscall3(.getresgid32, @intFromPtr(rgid), @intFromPtr(egid), @intFromPtr(sgid));
     } else {
-        return syscall3(.getresgid, @ptrToInt(rgid), @ptrToInt(egid), @ptrToInt(sgid));
+        return syscall3(.getresgid, @intFromPtr(rgid), @intFromPtr(egid), @intFromPtr(sgid));
     }
 }
 
@@ -1139,17 +1139,17 @@ pub fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) usize {
 
 pub fn getgroups(size: usize, list: *gid_t) usize {
     if (@hasField(SYS, "getgroups32")) {
-        return syscall2(.getgroups32, size, @ptrToInt(list));
+        return syscall2(.getgroups32, size, @intFromPtr(list));
     } else {
-        return syscall2(.getgroups, size, @ptrToInt(list));
+        return syscall2(.getgroups, size, @intFromPtr(list));
     }
 }
 
 pub fn setgroups(size: usize, list: [*]const gid_t) usize {
     if (@hasField(SYS, "setgroups32")) {
-        return syscall2(.setgroups32, size, @ptrToInt(list));
+        return syscall2(.setgroups32, size, @intFromPtr(list));
     } else {
-        return syscall2(.setgroups, size, @ptrToInt(list));
+        return syscall2(.setgroups, size, @intFromPtr(list));
     }
 }
 
@@ -1162,7 +1162,7 @@ pub fn gettid() pid_t {
 }
 
 pub fn sigprocmask(flags: u32, noalias set: ?*const sigset_t, noalias oldset: ?*sigset_t) usize {
-    return syscall4(.rt_sigprocmask, flags, @ptrToInt(set), @ptrToInt(oldset), NSIG / 8);
+    return syscall4(.rt_sigprocmask, flags, @intFromPtr(set), @intFromPtr(oldset), NSIG / 8);
 }
 
 pub fn sigaction(sig: u6, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) usize {
@@ -1187,12 +1187,12 @@ pub fn sigaction(sig: u6, noalias act: ?*const Sigaction, noalias oact: ?*Sigact
         @memcpy(@ptrCast([*]u8, &ksa.mask)[0..mask_size], @ptrCast([*]const u8, &new.mask));
     }
 
-    const ksa_arg = if (act != null) @ptrToInt(&ksa) else 0;
-    const oldksa_arg = if (oact != null) @ptrToInt(&oldksa) else 0;
+    const ksa_arg = if (act != null) @intFromPtr(&ksa) else 0;
+    const oldksa_arg = if (oact != null) @intFromPtr(&oldksa) else 0;
 
     const result = switch (native_arch) {
         // The sparc version of rt_sigaction needs the restorer function to be passed as an argument too.
-        .sparc, .sparc64 => syscall5(.rt_sigaction, sig, ksa_arg, oldksa_arg, @ptrToInt(ksa.restorer), mask_size),
+        .sparc, .sparc64 => syscall5(.rt_sigaction, sig, ksa_arg, oldksa_arg, @intFromPtr(ksa.restorer), mask_size),
         else => syscall4(.rt_sigaction, sig, ksa_arg, oldksa_arg, mask_size),
     };
     if (getErrno(result) != .SUCCESS) return result;
@@ -1223,16 +1223,16 @@ pub fn sigismember(set: *const sigset_t, sig: u6) bool {
 
 pub fn getsockname(fd: i32, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
     if (native_arch == .x86) {
-        return socketcall(SC.getsockname, &[3]usize{ @bitCast(usize, @as(isize, fd)), @ptrToInt(addr), @ptrToInt(len) });
+        return socketcall(SC.getsockname, &[3]usize{ @bitCast(usize, @as(isize, fd)), @intFromPtr(addr), @intFromPtr(len) });
     }
-    return syscall3(.getsockname, @bitCast(usize, @as(isize, fd)), @ptrToInt(addr), @ptrToInt(len));
+    return syscall3(.getsockname, @bitCast(usize, @as(isize, fd)), @intFromPtr(addr), @intFromPtr(len));
 }
 
 pub fn getpeername(fd: i32, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
     if (native_arch == .x86) {
-        return socketcall(SC.getpeername, &[3]usize{ @bitCast(usize, @as(isize, fd)), @ptrToInt(addr), @ptrToInt(len) });
+        return socketcall(SC.getpeername, &[3]usize{ @bitCast(usize, @as(isize, fd)), @intFromPtr(addr), @intFromPtr(len) });
     }
-    return syscall3(.getpeername, @bitCast(usize, @as(isize, fd)), @ptrToInt(addr), @ptrToInt(len));
+    return syscall3(.getpeername, @bitCast(usize, @as(isize, fd)), @intFromPtr(addr), @intFromPtr(len));
 }
 
 pub fn socket(domain: u32, socket_type: u32, protocol: u32) usize {
@@ -1244,21 +1244,21 @@ pub fn socket(domain: u32, socket_type: u32, protocol: u32) usize {
 
 pub fn setsockopt(fd: i32, level: u32, optname: u32, optval: [*]const u8, optlen: socklen_t) usize {
     if (native_arch == .x86) {
-        return socketcall(SC.setsockopt, &[5]usize{ @bitCast(usize, @as(isize, fd)), level, optname, @ptrToInt(optval), @intCast(usize, optlen) });
+        return socketcall(SC.setsockopt, &[5]usize{ @bitCast(usize, @as(isize, fd)), level, optname, @intFromPtr(optval), @intCast(usize, optlen) });
     }
-    return syscall5(.setsockopt, @bitCast(usize, @as(isize, fd)), level, optname, @ptrToInt(optval), @intCast(usize, optlen));
+    return syscall5(.setsockopt, @bitCast(usize, @as(isize, fd)), level, optname, @intFromPtr(optval), @intCast(usize, optlen));
 }
 
 pub fn getsockopt(fd: i32, level: u32, optname: u32, noalias optval: [*]u8, noalias optlen: *socklen_t) usize {
     if (native_arch == .x86) {
-        return socketcall(SC.getsockopt, &[5]usize{ @bitCast(usize, @as(isize, fd)), level, optname, @ptrToInt(optval), @ptrToInt(optlen) });
+        return socketcall(SC.getsockopt, &[5]usize{ @bitCast(usize, @as(isize, fd)), level, optname, @intFromPtr(optval), @intFromPtr(optlen) });
     }
-    return syscall5(.getsockopt, @bitCast(usize, @as(isize, fd)), level, optname, @ptrToInt(optval), @ptrToInt(optlen));
+    return syscall5(.getsockopt, @bitCast(usize, @as(isize, fd)), level, optname, @intFromPtr(optval), @intFromPtr(optlen));
 }
 
 pub fn sendmsg(fd: i32, msg: *const msghdr_const, flags: u32) usize {
     const fd_usize = @bitCast(usize, @as(isize, fd));
-    const msg_usize = @ptrToInt(msg);
+    const msg_usize = @intFromPtr(msg);
     if (native_arch == .x86) {
         return socketcall(SC.sendmsg, &[3]usize{ fd_usize, msg_usize, flags });
     } else {
@@ -1281,7 +1281,7 @@ pub fn sendmmsg(fd: i32, msgvec: [*]mmsghdr_const, vlen: u32, flags: u32) usize
                     // batch-send all messages up to the current message
                     if (next_unsent < i) {
                         const batch_size = i - next_unsent;
-                        const r = syscall4(.sendmmsg, @bitCast(usize, @as(isize, fd)), @ptrToInt(&msgvec[next_unsent]), batch_size, flags);
+                        const r = syscall4(.sendmmsg, @bitCast(usize, @as(isize, fd)), @intFromPtr(&msgvec[next_unsent]), batch_size, flags);
                         if (getErrno(r) != 0) return next_unsent;
                         if (r < batch_size) return next_unsent + r;
                     }
@@ -1297,18 +1297,18 @@ pub fn sendmmsg(fd: i32, msgvec: [*]mmsghdr_const, vlen: u32, flags: u32) usize
         }
         if (next_unsent < kvlen or next_unsent == 0) { // want to make sure at least one syscall occurs (e.g. to trigger MSG.EOR)
             const batch_size = kvlen - next_unsent;
-            const r = syscall4(.sendmmsg, @bitCast(usize, @as(isize, fd)), @ptrToInt(&msgvec[next_unsent]), batch_size, flags);
+            const r = syscall4(.sendmmsg, @bitCast(usize, @as(isize, fd)), @intFromPtr(&msgvec[next_unsent]), batch_size, flags);
             if (getErrno(r) != 0) return r;
             return next_unsent + r;
         }
         return kvlen;
     }
-    return syscall4(.sendmmsg, @bitCast(usize, @as(isize, fd)), @ptrToInt(msgvec), vlen, flags);
+    return syscall4(.sendmmsg, @bitCast(usize, @as(isize, fd)), @intFromPtr(msgvec), vlen, flags);
 }
 
 pub fn connect(fd: i32, addr: *const anyopaque, len: socklen_t) usize {
     const fd_usize = @bitCast(usize, @as(isize, fd));
-    const addr_usize = @ptrToInt(addr);
+    const addr_usize = @intFromPtr(addr);
     if (native_arch == .x86) {
         return socketcall(SC.connect, &[3]usize{ fd_usize, addr_usize, len });
     } else {
@@ -1318,7 +1318,7 @@ pub fn connect(fd: i32, addr: *const anyopaque, len: socklen_t) usize {
 
 pub fn recvmsg(fd: i32, msg: *msghdr, flags: u32) usize {
     const fd_usize = @bitCast(usize, @as(isize, fd));
-    const msg_usize = @ptrToInt(msg);
+    const msg_usize = @intFromPtr(msg);
     if (native_arch == .x86) {
         return socketcall(SC.recvmsg, &[3]usize{ fd_usize, msg_usize, flags });
     } else {
@@ -1335,9 +1335,9 @@ pub fn recvfrom(
     noalias alen: ?*socklen_t,
 ) usize {
     const fd_usize = @bitCast(usize, @as(isize, fd));
-    const buf_usize = @ptrToInt(buf);
-    const addr_usize = @ptrToInt(addr);
-    const alen_usize = @ptrToInt(alen);
+    const buf_usize = @intFromPtr(buf);
+    const addr_usize = @intFromPtr(addr);
+    const alen_usize = @intFromPtr(alen);
     if (native_arch == .x86) {
         return socketcall(SC.recvfrom, &[6]usize{ fd_usize, buf_usize, len, flags, addr_usize, alen_usize });
     } else {
@@ -1354,9 +1354,9 @@ pub fn shutdown(fd: i32, how: i32) usize {
 
 pub fn bind(fd: i32, addr: *const sockaddr, len: socklen_t) usize {
     if (native_arch == .x86) {
-        return socketcall(SC.bind, &[3]usize{ @bitCast(usize, @as(isize, fd)), @ptrToInt(addr), @intCast(usize, len) });
+        return socketcall(SC.bind, &[3]usize{ @bitCast(usize, @as(isize, fd)), @intFromPtr(addr), @intCast(usize, len) });
     }
-    return syscall3(.bind, @bitCast(usize, @as(isize, fd)), @ptrToInt(addr), @intCast(usize, len));
+    return syscall3(.bind, @bitCast(usize, @as(isize, fd)), @intFromPtr(addr), @intCast(usize, len));
 }
 
 pub fn listen(fd: i32, backlog: u32) usize {
@@ -1368,9 +1368,9 @@ pub fn listen(fd: i32, backlog: u32) usize {
 
 pub fn sendto(fd: i32, buf: [*]const u8, len: usize, flags: u32, addr: ?*const sockaddr, alen: socklen_t) usize {
     if (native_arch == .x86) {
-        return socketcall(SC.sendto, &[6]usize{ @bitCast(usize, @as(isize, fd)), @ptrToInt(buf), len, flags, @ptrToInt(addr), @intCast(usize, alen) });
+        return socketcall(SC.sendto, &[6]usize{ @bitCast(usize, @as(isize, fd)), @intFromPtr(buf), len, flags, @intFromPtr(addr), @intCast(usize, alen) });
     }
-    return syscall6(.sendto, @bitCast(usize, @as(isize, fd)), @ptrToInt(buf), len, flags, @ptrToInt(addr), @intCast(usize, alen));
+    return syscall6(.sendto, @bitCast(usize, @as(isize, fd)), @intFromPtr(buf), len, flags, @intFromPtr(addr), @intCast(usize, alen));
 }
 
 pub fn sendfile(outfd: i32, infd: i32, offset: ?*i64, count: usize) usize {
@@ -1379,7 +1379,7 @@ pub fn sendfile(outfd: i32, infd: i32, offset: ?*i64, count: usize) usize {
             .sendfile64,
             @bitCast(usize, @as(isize, outfd)),
             @bitCast(usize, @as(isize, infd)),
-            @ptrToInt(offset),
+            @intFromPtr(offset),
             count,
         );
     } else {
@@ -1387,7 +1387,7 @@ pub fn sendfile(outfd: i32, infd: i32, offset: ?*i64, count: usize) usize {
             .sendfile,
             @bitCast(usize, @as(isize, outfd)),
             @bitCast(usize, @as(isize, infd)),
-            @ptrToInt(offset),
+            @intFromPtr(offset),
             count,
         );
     }
@@ -1395,9 +1395,9 @@ pub fn sendfile(outfd: i32, infd: i32, offset: ?*i64, count: usize) usize {
 
 pub fn socketpair(domain: i32, socket_type: i32, protocol: i32, fd: *[2]i32) usize {
     if (native_arch == .x86) {
-        return socketcall(SC.socketpair, &[4]usize{ @intCast(usize, domain), @intCast(usize, socket_type), @intCast(usize, protocol), @ptrToInt(fd) });
+        return socketcall(SC.socketpair, &[4]usize{ @intCast(usize, domain), @intCast(usize, socket_type), @intCast(usize, protocol), @intFromPtr(fd) });
     }
-    return syscall4(.socketpair, @intCast(usize, domain), @intCast(usize, socket_type), @intCast(usize, protocol), @ptrToInt(fd));
+    return syscall4(.socketpair, @intCast(usize, domain), @intCast(usize, socket_type), @intCast(usize, protocol), @intFromPtr(fd));
 }
 
 pub fn accept(fd: i32, noalias addr: ?*sockaddr, noalias len: ?*socklen_t) usize {
@@ -1409,40 +1409,40 @@ pub fn accept(fd: i32, noalias addr: ?*sockaddr, noalias len: ?*socklen_t) usize
 
 pub fn accept4(fd: i32, noalias addr: ?*sockaddr, noalias len: ?*socklen_t, flags: u32) usize {
     if (native_arch == .x86) {
-        return socketcall(SC.accept4, &[4]usize{ @bitCast(usize, @as(isize, fd)), @ptrToInt(addr), @ptrToInt(len), flags });
+        return socketcall(SC.accept4, &[4]usize{ @bitCast(usize, @as(isize, fd)), @intFromPtr(addr), @intFromPtr(len), flags });
     }
-    return syscall4(.accept4, @bitCast(usize, @as(isize, fd)), @ptrToInt(addr), @ptrToInt(len), flags);
+    return syscall4(.accept4, @bitCast(usize, @as(isize, fd)), @intFromPtr(addr), @intFromPtr(len), flags);
 }
 
 pub fn fstat(fd: i32, stat_buf: *Stat) usize {
     if (@hasField(SYS, "fstat64")) {
-        return syscall2(.fstat64, @bitCast(usize, @as(isize, fd)), @ptrToInt(stat_buf));
+        return syscall2(.fstat64, @bitCast(usize, @as(isize, fd)), @intFromPtr(stat_buf));
     } else {
-        return syscall2(.fstat, @bitCast(usize, @as(isize, fd)), @ptrToInt(stat_buf));
+        return syscall2(.fstat, @bitCast(usize, @as(isize, fd)), @intFromPtr(stat_buf));
     }
 }
 
 pub fn stat(pathname: [*:0]const u8, statbuf: *Stat) usize {
     if (@hasField(SYS, "stat64")) {
-        return syscall2(.stat64, @ptrToInt(pathname), @ptrToInt(statbuf));
+        return syscall2(.stat64, @intFromPtr(pathname), @intFromPtr(statbuf));
     } else {
-        return syscall2(.stat, @ptrToInt(pathname), @ptrToInt(statbuf));
+        return syscall2(.stat, @intFromPtr(pathname), @intFromPtr(statbuf));
     }
 }
 
 pub fn lstat(pathname: [*:0]const u8, statbuf: *Stat) usize {
     if (@hasField(SYS, "lstat64")) {
-        return syscall2(.lstat64, @ptrToInt(pathname), @ptrToInt(statbuf));
+        return syscall2(.lstat64, @intFromPtr(pathname), @intFromPtr(statbuf));
     } else {
-        return syscall2(.lstat, @ptrToInt(pathname), @ptrToInt(statbuf));
+        return syscall2(.lstat, @intFromPtr(pathname), @intFromPtr(statbuf));
     }
 }
 
 pub fn fstatat(dirfd: i32, path: [*:0]const u8, stat_buf: *Stat, flags: u32) usize {
     if (@hasField(SYS, "fstatat64")) {
-        return syscall4(.fstatat64, @bitCast(usize, @as(isize, dirfd)), @ptrToInt(path), @ptrToInt(stat_buf), flags);
+        return syscall4(.fstatat64, @bitCast(usize, @as(isize, dirfd)), @intFromPtr(path), @intFromPtr(stat_buf), flags);
     } else {
-        return syscall4(.fstatat, @bitCast(usize, @as(isize, dirfd)), @ptrToInt(path), @ptrToInt(stat_buf), flags);
+        return syscall4(.fstatat, @bitCast(usize, @as(isize, dirfd)), @intFromPtr(path), @intFromPtr(stat_buf), flags);
     }
 }
 
@@ -1451,61 +1451,61 @@ pub fn statx(dirfd: i32, path: [*]const u8, flags: u32, mask: u32, statx_buf: *S
         return syscall5(
             .statx,
             @bitCast(usize, @as(isize, dirfd)),
-            @ptrToInt(path),
+            @intFromPtr(path),
             flags,
             mask,
-            @ptrToInt(statx_buf),
+            @intFromPtr(statx_buf),
         );
     }
-    return @bitCast(usize, -@as(isize, @enumToInt(E.NOSYS)));
+    return @bitCast(usize, -@as(isize, @intFromEnum(E.NOSYS)));
 }
 
 pub fn listxattr(path: [*:0]const u8, list: [*]u8, size: usize) usize {
-    return syscall3(.listxattr, @ptrToInt(path), @ptrToInt(list), size);
+    return syscall3(.listxattr, @intFromPtr(path), @intFromPtr(list), size);
 }
 
 pub fn llistxattr(path: [*:0]const u8, list: [*]u8, size: usize) usize {
-    return syscall3(.llistxattr, @ptrToInt(path), @ptrToInt(list), size);
+    return syscall3(.llistxattr, @intFromPtr(path), @intFromPtr(list), size);
 }
 
 pub fn flistxattr(fd: usize, list: [*]u8, size: usize) usize {
-    return syscall3(.flistxattr, fd, @ptrToInt(list), size);
+    return syscall3(.flistxattr, fd, @intFromPtr(list), size);
 }
 
 pub fn getxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: usize) usize {
-    return syscall4(.getxattr, @ptrToInt(path), @ptrToInt(name), @ptrToInt(value), size);
+    return syscall4(.getxattr, @intFromPtr(path), @intFromPtr(name), @intFromPtr(value), size);
 }
 
 pub fn lgetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: usize) usize {
-    return syscall4(.lgetxattr, @ptrToInt(path), @ptrToInt(name), @ptrToInt(value), size);
+    return syscall4(.lgetxattr, @intFromPtr(path), @intFromPtr(name), @intFromPtr(value), size);
 }
 
 pub fn fgetxattr(fd: usize, name: [*:0]const u8, value: [*]u8, size: usize) usize {
-    return syscall4(.lgetxattr, fd, @ptrToInt(name), @ptrToInt(value), size);
+    return syscall4(.lgetxattr, fd, @intFromPtr(name), @intFromPtr(value), size);
 }
 
 pub fn setxattr(path: [*:0]const u8, name: [*:0]const u8, value: *const void, size: usize, flags: usize) usize {
-    return syscall5(.setxattr, @ptrToInt(path), @ptrToInt(name), @ptrToInt(value), size, flags);
+    return syscall5(.setxattr, @intFromPtr(path), @intFromPtr(name), @intFromPtr(value), size, flags);
 }
 
 pub fn lsetxattr(path: [*:0]const u8, name: [*:0]const u8, value: *const void, size: usize, flags: usize) usize {
-    return syscall5(.lsetxattr, @ptrToInt(path), @ptrToInt(name), @ptrToInt(value), size, flags);
+    return syscall5(.lsetxattr, @intFromPtr(path), @intFromPtr(name), @intFromPtr(value), size, flags);
 }
 
 pub fn fsetxattr(fd: usize, name: [*:0]const u8, value: *const void, size: usize, flags: usize) usize {
-    return syscall5(.fsetxattr, fd, @ptrToInt(name), @ptrToInt(value), size, flags);
+    return syscall5(.fsetxattr, fd, @intFromPtr(name), @intFromPtr(value), size, flags);
 }
 
 pub fn removexattr(path: [*:0]const u8, name: [*:0]const u8) usize {
-    return syscall2(.removexattr, @ptrToInt(path), @ptrToInt(name));
+    return syscall2(.removexattr, @intFromPtr(path), @intFromPtr(name));
 }
 
 pub fn lremovexattr(path: [*:0]const u8, name: [*:0]const u8) usize {
-    return syscall2(.lremovexattr, @ptrToInt(path), @ptrToInt(name));
+    return syscall2(.lremovexattr, @intFromPtr(path), @intFromPtr(name));
 }
 
 pub fn fremovexattr(fd: usize, name: [*:0]const u8) usize {
-    return syscall2(.fremovexattr, fd, @ptrToInt(name));
+    return syscall2(.fremovexattr, fd, @intFromPtr(name));
 }
 
 pub fn sched_yield() usize {
@@ -1513,30 +1513,30 @@ pub fn sched_yield() usize {
 }
 
 pub fn sched_getaffinity(pid: pid_t, size: usize, set: *cpu_set_t) usize {
-    const rc = syscall3(.sched_getaffinity, @bitCast(usize, @as(isize, pid)), size, @ptrToInt(set));
+    const rc = syscall3(.sched_getaffinity, @bitCast(usize, @as(isize, pid)), size, @intFromPtr(set));
     if (@bitCast(isize, rc) < 0) return rc;
     if (rc < size) @memset(@ptrCast([*]u8, set)[rc..size], 0);
     return 0;
 }
 
 pub fn getcpu(cpu: *u32, node: *u32) usize {
-    return syscall3(.getcpu, @ptrToInt(cpu), @ptrToInt(node), 0);
+    return syscall3(.getcpu, @intFromPtr(cpu), @intFromPtr(node), 0);
 }
 
 pub fn sched_getcpu() usize {
     var cpu: u32 = undefined;
-    const rc = syscall3(.getcpu, @ptrToInt(&cpu), 0, 0);
+    const rc = syscall3(.getcpu, @intFromPtr(&cpu), 0, 0);
     if (@bitCast(isize, rc) < 0) return rc;
     return @intCast(usize, cpu);
 }
 
 /// libc has no wrapper for this syscall
 pub fn mbind(addr: ?*anyopaque, len: u32, mode: i32, nodemask: *const u32, maxnode: u32, flags: u32) usize {
-    return syscall6(.mbind, @ptrToInt(addr), len, @bitCast(usize, @as(isize, mode)), @ptrToInt(nodemask), maxnode, flags);
+    return syscall6(.mbind, @intFromPtr(addr), len, @bitCast(usize, @as(isize, mode)), @intFromPtr(nodemask), maxnode, flags);
 }
 
 pub fn sched_setaffinity(pid: pid_t, size: usize, set: *const cpu_set_t) usize {
-    const rc = syscall3(.sched_setaffinity, @bitCast(usize, @as(isize, pid)), size, @ptrToInt(set));
+    const rc = syscall3(.sched_setaffinity, @bitCast(usize, @as(isize, pid)), size, @intFromPtr(set));
     if (@bitCast(isize, rc) < 0) return rc;
     return 0;
 }
@@ -1550,7 +1550,7 @@ pub fn epoll_create1(flags: usize) usize {
 }
 
 pub fn epoll_ctl(epoll_fd: i32, op: u32, fd: i32, ev: ?*epoll_event) usize {
-    return syscall4(.epoll_ctl, @bitCast(usize, @as(isize, epoll_fd)), @intCast(usize, op), @bitCast(usize, @as(isize, fd)), @ptrToInt(ev));
+    return syscall4(.epoll_ctl, @bitCast(usize, @as(isize, epoll_fd)), @intCast(usize, op), @bitCast(usize, @as(isize, fd)), @intFromPtr(ev));
 }
 
 pub fn epoll_wait(epoll_fd: i32, events: [*]epoll_event, maxevents: u32, timeout: i32) usize {
@@ -1561,10 +1561,10 @@ pub fn epoll_pwait(epoll_fd: i32, events: [*]epoll_event, maxevents: u32, timeou
     return syscall6(
         .epoll_pwait,
         @bitCast(usize, @as(isize, epoll_fd)),
-        @ptrToInt(events),
+        @intFromPtr(events),
         @intCast(usize, maxevents),
         @bitCast(usize, @as(isize, timeout)),
-        @ptrToInt(sigmask),
+        @intFromPtr(sigmask),
         @sizeOf(sigset_t),
     );
 }
@@ -1583,11 +1583,11 @@ pub const itimerspec = extern struct {
 };
 
 pub fn timerfd_gettime(fd: i32, curr_value: *itimerspec) usize {
-    return syscall2(.timerfd_gettime, @bitCast(usize, @as(isize, fd)), @ptrToInt(curr_value));
+    return syscall2(.timerfd_gettime, @bitCast(usize, @as(isize, fd)), @intFromPtr(curr_value));
 }
 
 pub fn timerfd_settime(fd: i32, flags: u32, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
-    return syscall4(.timerfd_settime, @bitCast(usize, @as(isize, fd)), flags, @ptrToInt(new_value), @ptrToInt(old_value));
+    return syscall4(.timerfd_settime, @bitCast(usize, @as(isize, fd)), flags, @intFromPtr(new_value), @intFromPtr(old_value));
 }
 
 pub const sigevent = extern struct {
@@ -1609,7 +1609,7 @@ pub const timer_t = ?*anyopaque;
 
 pub fn timer_create(clockid: i32, sevp: *sigevent, timerid: *timer_t) usize {
     var t: timer_t = undefined;
-    const rc = syscall3(.timer_create, @bitCast(usize, @as(isize, clockid)), @ptrToInt(sevp), @ptrToInt(&t));
+    const rc = syscall3(.timer_create, @bitCast(usize, @as(isize, clockid)), @intFromPtr(sevp), @intFromPtr(&t));
     if (@bitCast(isize, rc) < 0) return rc;
     timerid.* = t;
     return rc;
@@ -1620,11 +1620,11 @@ pub fn timer_delete(timerid: timer_t) usize {
 }
 
 pub fn timer_gettime(timerid: timer_t, curr_value: *itimerspec) usize {
-    return syscall2(.timer_gettime, @ptrToInt(timerid), @ptrToInt(curr_value));
+    return syscall2(.timer_gettime, @intFromPtr(timerid), @intFromPtr(curr_value));
 }
 
 pub fn timer_settime(timerid: timer_t, flags: i32, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
-    return syscall4(.timer_settime, @ptrToInt(timerid), @bitCast(usize, @as(isize, flags)), @ptrToInt(new_value), @ptrToInt(old_value));
+    return syscall4(.timer_settime, @intFromPtr(timerid), @bitCast(usize, @as(isize, flags)), @intFromPtr(new_value), @intFromPtr(old_value));
 }
 
 // Flags for the 'setitimer' system call
@@ -1635,11 +1635,11 @@ pub const ITIMER = enum(i32) {
 };
 
 pub fn getitimer(which: i32, curr_value: *itimerspec) usize {
-    return syscall2(.getitimer, @bitCast(usize, @as(isize, which)), @ptrToInt(curr_value));
+    return syscall2(.getitimer, @bitCast(usize, @as(isize, which)), @intFromPtr(curr_value));
 }
 
 pub fn setitimer(which: i32, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
-    return syscall3(.setitimer, @bitCast(usize, @as(isize, which)), @ptrToInt(new_value), @ptrToInt(old_value));
+    return syscall3(.setitimer, @bitCast(usize, @as(isize, which)), @intFromPtr(new_value), @intFromPtr(old_value));
 }
 
 pub fn unshare(flags: usize) usize {
@@ -1647,55 +1647,55 @@ pub fn unshare(flags: usize) usize {
 }
 
 pub fn capget(hdrp: *cap_user_header_t, datap: *cap_user_data_t) usize {
-    return syscall2(.capget, @ptrToInt(hdrp), @ptrToInt(datap));
+    return syscall2(.capget, @intFromPtr(hdrp), @intFromPtr(datap));
 }
 
 pub fn capset(hdrp: *cap_user_header_t, datap: *const cap_user_data_t) usize {
-    return syscall2(.capset, @ptrToInt(hdrp), @ptrToInt(datap));
+    return syscall2(.capset, @intFromPtr(hdrp), @intFromPtr(datap));
 }
 
 pub fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) usize {
-    return syscall2(.sigaltstack, @ptrToInt(ss), @ptrToInt(old_ss));
+    return syscall2(.sigaltstack, @intFromPtr(ss), @intFromPtr(old_ss));
 }
 
 pub fn uname(uts: *utsname) usize {
-    return syscall1(.uname, @ptrToInt(uts));
+    return syscall1(.uname, @intFromPtr(uts));
 }
 
 pub fn io_uring_setup(entries: u32, p: *io_uring_params) usize {
-    return syscall2(.io_uring_setup, entries, @ptrToInt(p));
+    return syscall2(.io_uring_setup, entries, @intFromPtr(p));
 }
 
 pub fn io_uring_enter(fd: i32, to_submit: u32, min_complete: u32, flags: u32, sig: ?*sigset_t) usize {
-    return syscall6(.io_uring_enter, @bitCast(usize, @as(isize, fd)), to_submit, min_complete, flags, @ptrToInt(sig), NSIG / 8);
+    return syscall6(.io_uring_enter, @bitCast(usize, @as(isize, fd)), to_submit, min_complete, flags, @intFromPtr(sig), NSIG / 8);
 }
 
 pub fn io_uring_register(fd: i32, opcode: IORING_REGISTER, arg: ?*const anyopaque, nr_args: u32) usize {
-    return syscall4(.io_uring_register, @bitCast(usize, @as(isize, fd)), @enumToInt(opcode), @ptrToInt(arg), nr_args);
+    return syscall4(.io_uring_register, @bitCast(usize, @as(isize, fd)), @intFromEnum(opcode), @intFromPtr(arg), nr_args);
 }
 
 pub fn memfd_create(name: [*:0]const u8, flags: u32) usize {
-    return syscall2(.memfd_create, @ptrToInt(name), flags);
+    return syscall2(.memfd_create, @intFromPtr(name), flags);
 }
 
 pub fn getrusage(who: i32, usage: *rusage) usize {
-    return syscall2(.getrusage, @bitCast(usize, @as(isize, who)), @ptrToInt(usage));
+    return syscall2(.getrusage, @bitCast(usize, @as(isize, who)), @intFromPtr(usage));
 }
 
 pub fn tcgetattr(fd: fd_t, termios_p: *termios) usize {
-    return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), T.CGETS, @ptrToInt(termios_p));
+    return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), T.CGETS, @intFromPtr(termios_p));
 }
 
 pub fn tcsetattr(fd: fd_t, optional_action: TCSA, termios_p: *const termios) usize {
-    return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), T.CSETS + @enumToInt(optional_action), @ptrToInt(termios_p));
+    return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), T.CSETS + @intFromEnum(optional_action), @intFromPtr(termios_p));
 }
 
 pub fn tcgetpgrp(fd: fd_t, pgrp: *pid_t) usize {
-    return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), T.IOCGPGRP, @ptrToInt(pgrp));
+    return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), T.IOCGPGRP, @intFromPtr(pgrp));
 }
 
 pub fn tcsetpgrp(fd: fd_t, pgrp: *const pid_t) usize {
-    return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), T.IOCSPGRP, @ptrToInt(pgrp));
+    return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), T.IOCSPGRP, @intFromPtr(pgrp));
 }
 
 pub fn tcdrain(fd: fd_t) usize {
@@ -1707,23 +1707,23 @@ pub fn ioctl(fd: fd_t, request: u32, arg: usize) usize {
 }
 
 pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) usize {
-    return syscall4(.signalfd4, @bitCast(usize, @as(isize, fd)), @ptrToInt(mask), NSIG / 8, flags);
+    return syscall4(.signalfd4, @bitCast(usize, @as(isize, fd)), @intFromPtr(mask), NSIG / 8, flags);
 }
 
 pub fn copy_file_range(fd_in: fd_t, off_in: ?*i64, fd_out: fd_t, off_out: ?*i64, len: usize, flags: u32) usize {
     return syscall6(
         .copy_file_range,
         @bitCast(usize, @as(isize, fd_in)),
-        @ptrToInt(off_in),
+        @intFromPtr(off_in),
         @bitCast(usize, @as(isize, fd_out)),
-        @ptrToInt(off_out),
+        @intFromPtr(off_out),
         len,
         flags,
     );
 }
 
 pub fn bpf(cmd: BPF.Cmd, attr: *BPF.Attr, size: u32) usize {
-    return syscall3(.bpf, @enumToInt(cmd), @ptrToInt(attr), size);
+    return syscall3(.bpf, @intFromEnum(cmd), @intFromPtr(attr), size);
 }
 
 pub fn sync() void {
@@ -1760,18 +1760,18 @@ pub fn prlimit(pid: pid_t, resource: rlimit_resource, new_limit: ?*const rlimit,
     return syscall4(
         .prlimit64,
         @bitCast(usize, @as(isize, pid)),
-        @bitCast(usize, @as(isize, @enumToInt(resource))),
-        @ptrToInt(new_limit),
-        @ptrToInt(old_limit),
+        @bitCast(usize, @as(isize, @intFromEnum(resource))),
+        @intFromPtr(new_limit),
+        @intFromPtr(old_limit),
     );
 }
 
 pub fn mincore(address: [*]u8, len: usize, vec: [*]u8) usize {
-    return syscall3(.mincore, @ptrToInt(address), len, @ptrToInt(vec));
+    return syscall3(.mincore, @intFromPtr(address), len, @intFromPtr(vec));
 }
 
 pub fn madvise(address: [*]u8, len: usize, advice: u32) usize {
-    return syscall3(.madvise, @ptrToInt(address), len, advice);
+    return syscall3(.madvise, @intFromPtr(address), len, advice);
 }
 
 pub fn pidfd_open(pid: pid_t, flags: u32) usize {
@@ -1792,7 +1792,7 @@ pub fn pidfd_send_signal(pidfd: fd_t, sig: i32, info: ?*siginfo_t, flags: u32) u
         .pidfd_send_signal,
         @bitCast(usize, @as(isize, pidfd)),
         @bitCast(usize, @as(isize, sig)),
-        @ptrToInt(info),
+        @intFromPtr(info),
         flags,
     );
 }
@@ -1801,9 +1801,9 @@ pub fn process_vm_readv(pid: pid_t, local: []iovec, remote: []const iovec_const,
     return syscall6(
         .process_vm_readv,
         @bitCast(usize, @as(isize, pid)),
-        @ptrToInt(local.ptr),
+        @intFromPtr(local.ptr),
         local.len,
-        @ptrToInt(remote.ptr),
+        @intFromPtr(remote.ptr),
         remote.len,
         flags,
     );
@@ -1813,9 +1813,9 @@ pub fn process_vm_writev(pid: pid_t, local: []const iovec_const, remote: []const
     return syscall6(
         .process_vm_writev,
         @bitCast(usize, @as(isize, pid)),
-        @ptrToInt(local.ptr),
+        @intFromPtr(local.ptr),
         local.len,
-        @ptrToInt(remote.ptr),
+        @intFromPtr(remote.ptr),
         remote.len,
         flags,
     );
@@ -1889,7 +1889,7 @@ pub fn perf_event_open(
 ) usize {
     return syscall5(
         .perf_event_open,
-        @ptrToInt(attr),
+        @intFromPtr(attr),
         @bitCast(usize, @as(isize, pid)),
         @bitCast(usize, @as(isize, cpu)),
         @bitCast(usize, @as(isize, group_fd)),
@@ -1898,7 +1898,7 @@ pub fn perf_event_open(
 }
 
 pub fn seccomp(operation: u32, flags: u32, args: ?*const anyopaque) usize {
-    return syscall3(.seccomp, operation, flags, @ptrToInt(args));
+    return syscall3(.seccomp, operation, flags, @intFromPtr(args));
 }
 
 pub fn ptrace(
@@ -2154,9 +2154,9 @@ pub const SIG = if (is_mips) struct {
     pub const SYS = 31;
     pub const UNUSED = SIG.SYS;
 
-    pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
-    pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
-    pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
+    pub const ERR = @ptrFromInt(?Sigaction.handler_fn, maxInt(usize));
+    pub const DFL = @ptrFromInt(?Sigaction.handler_fn, 0);
+    pub const IGN = @ptrFromInt(?Sigaction.handler_fn, 1);
 } else if (is_sparc) struct {
     pub const BLOCK = 1;
     pub const UNBLOCK = 2;
@@ -2198,9 +2198,9 @@ pub const SIG = if (is_mips) struct {
     pub const PWR = LOST;
     pub const IO = SIG.POLL;
 
-    pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
-    pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
-    pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
+    pub const ERR = @ptrFromInt(?Sigaction.handler_fn, maxInt(usize));
+    pub const DFL = @ptrFromInt(?Sigaction.handler_fn, 0);
+    pub const IGN = @ptrFromInt(?Sigaction.handler_fn, 1);
 } else struct {
     pub const BLOCK = 0;
     pub const UNBLOCK = 1;
@@ -2241,9 +2241,9 @@ pub const SIG = if (is_mips) struct {
     pub const SYS = 31;
     pub const UNUSED = SIG.SYS;
 
-    pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
-    pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
-    pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
+    pub const ERR = @ptrFromInt(?Sigaction.handler_fn, maxInt(usize));
+    pub const DFL = @ptrFromInt(?Sigaction.handler_fn, 0);
+    pub const IGN = @ptrFromInt(?Sigaction.handler_fn, 1);
 };
 
 pub const kernel_rwf = u32;
@@ -3876,26 +3876,26 @@ pub const IOSQE_BIT = enum(u8) {
 // io_uring_sqe.flags
 
 /// use fixed fileset
-pub const IOSQE_FIXED_FILE = 1 << @enumToInt(IOSQE_BIT.FIXED_FILE);
+pub const IOSQE_FIXED_FILE = 1 << @intFromEnum(IOSQE_BIT.FIXED_FILE);
 
 /// issue after inflight IO
-pub const IOSQE_IO_DRAIN = 1 << @enumToInt(IOSQE_BIT.IO_DRAIN);
+pub const IOSQE_IO_DRAIN = 1 << @intFromEnum(IOSQE_BIT.IO_DRAIN);
 
 /// links next sqe
-pub const IOSQE_IO_LINK = 1 << @enumToInt(IOSQE_BIT.IO_LINK);
+pub const IOSQE_IO_LINK = 1 << @intFromEnum(IOSQE_BIT.IO_LINK);
 
 /// like LINK, but stronger
-pub const IOSQE_IO_HARDLINK = 1 << @enumToInt(IOSQE_BIT.IO_HARDLINK);
+pub const IOSQE_IO_HARDLINK = 1 << @intFromEnum(IOSQE_BIT.IO_HARDLINK);
 
 /// always go async
-pub const IOSQE_ASYNC = 1 << @enumToInt(IOSQE_BIT.ASYNC);
+pub const IOSQE_ASYNC = 1 << @intFromEnum(IOSQE_BIT.ASYNC);
 
 /// select buffer from buf_group
-pub const IOSQE_BUFFER_SELECT = 1 << @enumToInt(IOSQE_BIT.BUFFER_SELECT);
+pub const IOSQE_BUFFER_SELECT = 1 << @intFromEnum(IOSQE_BIT.BUFFER_SELECT);
 
 /// don't post CQE if request succeeded
 /// Available since Linux 5.17
-pub const IOSQE_CQE_SKIP_SUCCESS = 1 << @enumToInt(IOSQE_BIT.CQE_SKIP_SUCCESS);
+pub const IOSQE_CQE_SKIP_SUCCESS = 1 << @intFromEnum(IOSQE_BIT.CQE_SKIP_SUCCESS);
 
 pub const IORING_OP = enum(u8) {
     NOP,
@@ -3999,7 +3999,7 @@ pub const io_uring_cqe = extern struct {
 
     pub fn err(self: io_uring_cqe) E {
         if (self.res > -4096 and self.res < 0) {
-            return @intToEnum(E, -self.res);
+            return @enumFromInt(E, -self.res);
         }
         return .SUCCESS;
     }
@@ -5827,7 +5827,7 @@ pub const AUDIT = struct {
         ARM = toAudit(.arm),
         ARMEB = toAudit(.armeb),
         CSKY = toAudit(.csky),
-        HEXAGON = @enumToInt(std.elf.EM.HEXAGON),
+        HEXAGON = @intFromEnum(std.elf.EM.HEXAGON),
         X86 = toAudit(.x86),
         M68K = toAudit(.m68k),
         MIPS = toAudit(.mips),
@@ -5845,7 +5845,7 @@ pub const AUDIT = struct {
         X86_64 = toAudit(.x86_64),
 
         fn toAudit(arch: std.Target.Cpu.Arch) u32 {
-            var res: u32 = @enumToInt(arch.toElfMachine());
+            var res: u32 = @intFromEnum(arch.toElfMachine());
             if (arch.endian() == .Little) res |= LE;
             switch (arch) {
                 .aarch64,
lib/std/os/plan9.zig
@@ -10,7 +10,7 @@ pub const E = @import("plan9/errno.zig").E;
 pub fn getErrno(r: usize) E {
     const signed_r = @bitCast(isize, r);
     const int = if (signed_r > -4096 and signed_r < 0) -signed_r else 0;
-    return @intToEnum(E, int);
+    return @enumFromInt(E, int);
 }
 pub const SIG = struct {
     /// hangup
@@ -133,19 +133,19 @@ pub const SYS = enum(usize) {
 };
 
 pub fn pwrite(fd: usize, buf: [*]const u8, count: usize, offset: usize) usize {
-    return syscall_bits.syscall4(.PWRITE, fd, @ptrToInt(buf), count, offset);
+    return syscall_bits.syscall4(.PWRITE, fd, @intFromPtr(buf), count, offset);
 }
 
 pub fn pread(fd: usize, buf: [*]const u8, count: usize, offset: usize) usize {
-    return syscall_bits.syscall4(.PREAD, fd, @ptrToInt(buf), count, offset);
+    return syscall_bits.syscall4(.PREAD, fd, @intFromPtr(buf), count, offset);
 }
 
 pub fn open(path: [*:0]const u8, omode: OpenMode) usize {
-    return syscall_bits.syscall2(.OPEN, @ptrToInt(path), @enumToInt(omode));
+    return syscall_bits.syscall2(.OPEN, @intFromPtr(path), @intFromEnum(omode));
 }
 
 pub fn create(path: [*:0]const u8, omode: OpenMode, perms: usize) usize {
-    return syscall_bits.syscall3(.CREATE, @ptrToInt(path), @enumToInt(omode), perms);
+    return syscall_bits.syscall3(.CREATE, @intFromPtr(path), @intFromEnum(omode), perms);
 }
 
 pub fn exit(status: u8) noreturn {
@@ -159,7 +159,7 @@ pub fn exit(status: u8) noreturn {
 }
 
 pub fn exits(status: ?[*:0]const u8) noreturn {
-    _ = syscall_bits.syscall1(.EXITS, if (status) |s| @ptrToInt(s) else 0);
+    _ = syscall_bits.syscall1(.EXITS, if (status) |s| @intFromPtr(s) else 0);
     unreachable;
 }
 
lib/std/os/test.zig
@@ -488,7 +488,7 @@ fn iter_fn(info: *dl_phdr_info, size: usize, counter: *usize) IterFnError!void {
 
         const reloc_addr = info.dlpi_addr + phdr.p_vaddr;
         // Find the ELF header
-        const elf_header = @intToPtr(*elf.Ehdr, reloc_addr - phdr.p_offset);
+        const elf_header = @ptrFromInt(*elf.Ehdr, reloc_addr - phdr.p_offset);
         // Validate the magic
         if (!mem.eql(u8, elf_header.e_ident[0..4], elf.MAGIC)) return error.BadElfMagic;
         // Consistency check
@@ -751,7 +751,7 @@ test "getrlimit and setrlimit" {
     }
 
     inline for (std.meta.fields(os.rlimit_resource)) |field| {
-        const resource = @intToEnum(os.rlimit_resource, field.value);
+        const resource = @enumFromInt(os.rlimit_resource, field.value);
         const limit = try os.getrlimit(resource);
 
         // On 32 bit MIPS musl includes a fix which changes limits greater than -1UL/2 to RLIM_INFINITY.
@@ -931,10 +931,10 @@ test "POSIX file locking with fcntl" {
 
     // Place an exclusive lock on the first byte, and a shared lock on the second byte:
     var struct_flock = std.mem.zeroInit(os.Flock, .{ .type = os.F.WRLCK });
-    _ = try os.fcntl(fd, os.F.SETLK, @ptrToInt(&struct_flock));
+    _ = try os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock));
     struct_flock.start = 1;
     struct_flock.type = os.F.RDLCK;
-    _ = try os.fcntl(fd, os.F.SETLK, @ptrToInt(&struct_flock));
+    _ = try os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock));
 
     // Check the locks in a child process:
     const pid = try os.fork();
@@ -942,15 +942,15 @@ test "POSIX file locking with fcntl" {
         // child expects be denied the exclusive lock:
         struct_flock.start = 0;
         struct_flock.type = os.F.WRLCK;
-        try expectError(error.Locked, os.fcntl(fd, os.F.SETLK, @ptrToInt(&struct_flock)));
+        try expectError(error.Locked, os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock)));
         // child expects to get the shared lock:
         struct_flock.start = 1;
         struct_flock.type = os.F.RDLCK;
-        _ = try os.fcntl(fd, os.F.SETLK, @ptrToInt(&struct_flock));
+        _ = try os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock));
         // child waits for the exclusive lock in order to test deadlock:
         struct_flock.start = 0;
         struct_flock.type = os.F.WRLCK;
-        _ = try os.fcntl(fd, os.F.SETLKW, @ptrToInt(&struct_flock));
+        _ = try os.fcntl(fd, os.F.SETLKW, @intFromPtr(&struct_flock));
         // child exits without continuing:
         os.exit(0);
     } else {
@@ -959,15 +959,15 @@ test "POSIX file locking with fcntl" {
         // parent expects deadlock when attempting to upgrade the shared lock to exclusive:
         struct_flock.start = 1;
         struct_flock.type = os.F.WRLCK;
-        try expectError(error.DeadLock, os.fcntl(fd, os.F.SETLKW, @ptrToInt(&struct_flock)));
+        try expectError(error.DeadLock, os.fcntl(fd, os.F.SETLKW, @intFromPtr(&struct_flock)));
         // parent releases exclusive lock:
         struct_flock.start = 0;
         struct_flock.type = os.F.UNLCK;
-        _ = try os.fcntl(fd, os.F.SETLK, @ptrToInt(&struct_flock));
+        _ = try os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock));
         // parent releases shared lock:
         struct_flock.start = 1;
         struct_flock.type = os.F.UNLCK;
-        _ = try os.fcntl(fd, os.F.SETLK, @ptrToInt(&struct_flock));
+        _ = try os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock));
         // parent waits for child:
         const result = os.waitpid(pid, 0);
         try expect(result.status == 0 * 256);
lib/std/os/windows.zig
@@ -30,7 +30,7 @@ pub const gdi32 = @import("windows/gdi32.zig");
 pub const winmm = @import("windows/winmm.zig");
 pub const crypt32 = @import("windows/crypt32.zig");
 
-pub const self_process_handle = @intToPtr(HANDLE, maxInt(usize));
+pub const self_process_handle = @ptrFromInt(HANDLE, maxInt(usize));
 
 const Self = @This();
 
@@ -242,7 +242,7 @@ pub fn DeviceIoControl(
 
 pub fn GetOverlappedResult(h: HANDLE, overlapped: *OVERLAPPED, wait: bool) !DWORD {
     var bytes: DWORD = undefined;
-    if (kernel32.GetOverlappedResult(h, overlapped, &bytes, @boolToInt(wait)) == 0) {
+    if (kernel32.GetOverlappedResult(h, overlapped, &bytes, @intFromBool(wait)) == 0) {
         switch (kernel32.GetLastError()) {
             .IO_INCOMPLETE => if (!wait) return error.WouldBlock else unreachable,
             else => |err| return unexpectedError(err),
@@ -294,7 +294,7 @@ pub fn WaitForSingleObject(handle: HANDLE, milliseconds: DWORD) WaitForSingleObj
 }
 
 pub fn WaitForSingleObjectEx(handle: HANDLE, milliseconds: DWORD, alertable: bool) WaitForSingleObjectError!void {
-    switch (kernel32.WaitForSingleObjectEx(handle, milliseconds, @boolToInt(alertable))) {
+    switch (kernel32.WaitForSingleObjectEx(handle, milliseconds, @intFromBool(alertable))) {
         WAIT_ABANDONED => return error.WaitAbandoned,
         WAIT_OBJECT_0 => return,
         WAIT_TIMEOUT => return error.WaitTimeOut,
@@ -311,9 +311,9 @@ pub fn WaitForMultipleObjectsEx(handles: []const HANDLE, waitAll: bool, millisec
     switch (kernel32.WaitForMultipleObjectsEx(
         nCount,
         handles.ptr,
-        @boolToInt(waitAll),
+        @intFromBool(waitAll),
         milliseconds,
-        @boolToInt(alertable),
+        @intFromBool(alertable),
     )) {
         WAIT_OBJECT_0...WAIT_OBJECT_0 + MAXIMUM_WAIT_OBJECTS => |n| {
             const handle_index = n - WAIT_OBJECT_0;
@@ -422,7 +422,7 @@ pub fn GetQueuedCompletionStatusEx(
         @intCast(ULONG, completion_port_entries.len),
         &num_entries_removed,
         timeout_ms orelse INFINITE,
-        @boolToInt(alertable),
+        @intFromBool(alertable),
     );
 
     if (success == FALSE) {
@@ -1106,7 +1106,7 @@ test "QueryObjectName" {
     var out_buffer: [PATH_MAX_WIDE]u16 = undefined;
 
     var result_path = try QueryObjectName(handle, &out_buffer);
-    const required_len_in_u16 = result_path.len + @divExact(@ptrToInt(result_path.ptr) - @ptrToInt(&out_buffer), 2) + 1;
+    const required_len_in_u16 = result_path.len + @divExact(@intFromPtr(result_path.ptr) - @intFromPtr(&out_buffer), 2) + 1;
     //insufficient size
     try std.testing.expectError(error.NameTooLong, QueryObjectName(handle, out_buffer[0 .. required_len_in_u16 - 1]));
     //exactly-sufficient size
@@ -1263,7 +1263,7 @@ test "GetFinalPathNameByHandle" {
     const nt_path = try GetFinalPathNameByHandle(handle, .{ .volume_name = .Nt }, &buffer);
     _ = try GetFinalPathNameByHandle(handle, .{ .volume_name = .Dos }, &buffer);
 
-    const required_len_in_u16 = nt_path.len + @divExact(@ptrToInt(nt_path.ptr) - @ptrToInt(&buffer), 2) + 1;
+    const required_len_in_u16 = nt_path.len + @divExact(@intFromPtr(nt_path.ptr) - @intFromPtr(&buffer), 2) + 1;
     //check with insufficient size
     try std.testing.expectError(error.NameTooLong, GetFinalPathNameByHandle(handle, .{ .volume_name = .Nt }, buffer[0 .. required_len_in_u16 - 1]));
     try std.testing.expectError(error.NameTooLong, GetFinalPathNameByHandle(handle, .{ .volume_name = .Dos }, buffer[0 .. required_len_in_u16 - 1]));
@@ -1313,7 +1313,7 @@ pub fn WSAStartup(majorVersion: u8, minorVersion: u8) !ws2_32.WSADATA {
     var wsadata: ws2_32.WSADATA = undefined;
     return switch (ws2_32.WSAStartup((@as(WORD, minorVersion) << 8) | majorVersion, &wsadata)) {
         0 => wsadata,
-        else => |err_int| switch (@intToEnum(ws2_32.WinsockError, @intCast(u16, err_int))) {
+        else => |err_int| switch (@enumFromInt(ws2_32.WinsockError, @intCast(u16, err_int))) {
             .WSASYSNOTREADY => return error.SystemNotAvailable,
             .WSAVERNOTSUPPORTED => return error.VersionNotSupported,
             .WSAEINPROGRESS => return error.BlockingOperationInProgress,
@@ -2286,7 +2286,7 @@ pub fn loadWinsockExtensionFunction(comptime T: type, sock: ws2_32.SOCKET, guid:
         ws2_32.SIO_GET_EXTENSION_FUNCTION_POINTER,
         @ptrCast(*const anyopaque, &guid),
         @sizeOf(GUID),
-        @intToPtr(?*anyopaque, @ptrToInt(&function)),
+        @ptrFromInt(?*anyopaque, @intFromPtr(&function)),
         @sizeOf(T),
         &num_bytes,
         null,
@@ -2325,21 +2325,21 @@ pub fn unexpectedError(err: Win32Error) std.os.UnexpectedError {
             null,
         );
         _ = std.unicode.utf16leToUtf8(&buf_utf8, buf_wstr[0..len]) catch unreachable;
-        std.debug.print("error.Unexpected: GetLastError({}): {s}\n", .{ @enumToInt(err), buf_utf8[0..len] });
+        std.debug.print("error.Unexpected: GetLastError({}): {s}\n", .{ @intFromEnum(err), buf_utf8[0..len] });
         std.debug.dumpCurrentStackTrace(@returnAddress());
     }
     return error.Unexpected;
 }
 
 pub fn unexpectedWSAError(err: ws2_32.WinsockError) std.os.UnexpectedError {
-    return unexpectedError(@intToEnum(Win32Error, @enumToInt(err)));
+    return unexpectedError(@enumFromInt(Win32Error, @intFromEnum(err)));
 }
 
 /// Call this when you made a windows NtDll call
 /// and you get an unexpected status.
 pub fn unexpectedStatus(status: NTSTATUS) std.os.UnexpectedError {
     if (std.os.unexpected_error_tracing) {
-        std.debug.print("error.Unexpected NTSTATUS=0x{x}\n", .{@enumToInt(status)});
+        std.debug.print("error.Unexpected NTSTATUS=0x{x}\n", .{@intFromEnum(status)});
         std.debug.dumpCurrentStackTrace(@returnAddress());
     }
     return error.Unexpected;
@@ -2527,10 +2527,10 @@ pub fn CTL_CODE(deviceType: u16, function: u12, method: TransferType, access: u2
     return (@as(DWORD, deviceType) << 16) |
         (@as(DWORD, access) << 14) |
         (@as(DWORD, function) << 2) |
-        @enumToInt(method);
+        @intFromEnum(method);
 }
 
-pub const INVALID_HANDLE_VALUE = @intToPtr(HANDLE, maxInt(usize));
+pub const INVALID_HANDLE_VALUE = @ptrFromInt(HANDLE, maxInt(usize));
 
 pub const INVALID_FILE_ATTRIBUTES = @as(DWORD, maxInt(DWORD));
 
@@ -3221,7 +3221,7 @@ pub const LSTATUS = LONG;
 
 pub const HKEY = *opaque {};
 
-pub const HKEY_LOCAL_MACHINE: HKEY = @intToPtr(HKEY, 0x80000002);
+pub const HKEY_LOCAL_MACHINE: HKEY = @ptrFromInt(HKEY, 0x80000002);
 
 /// Combines the STANDARD_RIGHTS_REQUIRED, KEY_QUERY_VALUE, KEY_SET_VALUE, KEY_CREATE_SUB_KEY,
 /// KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, and KEY_CREATE_LINK access rights.
@@ -4685,11 +4685,11 @@ pub const KUSER_SHARED_DATA = extern struct {
 /// Read-only user-mode address for the shared data.
 /// https://www.geoffchappell.com/studies/windows/km/ntoskrnl/inc/api/ntexapi_x/kuser_shared_data/index.htm
 /// https://msrc-blog.microsoft.com/2022/04/05/randomizing-the-kuser_shared_data-structure-on-windows/
-pub const SharedUserData: *const KUSER_SHARED_DATA = @intToPtr(*const KUSER_SHARED_DATA, 0x7FFE0000);
+pub const SharedUserData: *const KUSER_SHARED_DATA = @ptrFromInt(*const KUSER_SHARED_DATA, 0x7FFE0000);
 
 pub fn IsProcessorFeaturePresent(feature: PF) bool {
-    if (@enumToInt(feature) >= PROCESSOR_FEATURE_MAX) return false;
-    return SharedUserData.ProcessorFeatures[@enumToInt(feature)] == 1;
+    if (@intFromEnum(feature) >= PROCESSOR_FEATURE_MAX) return false;
+    return SharedUserData.ProcessorFeatures[@intFromEnum(feature)] == 1;
 }
 
 pub const TH32CS_SNAPHEAPLIST = 0x00000001;
lib/std/rand/benchmark.zig
@@ -91,8 +91,8 @@ pub fn benchmark(comptime H: anytype, bytes: usize, comptime block_size: usize)
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, @intToFloat(f64, bytes) / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, @floatFromInt(f64, bytes) / elapsed_s);
 
     std.debug.assert(rng.random().int(u64) != 0);
 
lib/std/rand/test.zig
@@ -332,13 +332,13 @@ test "Random float chi-square goodness of fit" {
     while (i < num_numbers) : (i += 1) {
         const rand_f32 = random.float(f32);
         const rand_f64 = random.float(f64);
-        var f32_put = try f32_hist.getOrPut(@floatToInt(u32, rand_f32 * @intToFloat(f32, num_buckets)));
+        var f32_put = try f32_hist.getOrPut(@intFromFloat(u32, rand_f32 * @floatFromInt(f32, num_buckets)));
         if (f32_put.found_existing) {
             f32_put.value_ptr.* += 1;
         } else {
             f32_put.value_ptr.* = 1;
         }
-        var f64_put = try f64_hist.getOrPut(@floatToInt(u32, rand_f64 * @intToFloat(f64, num_buckets)));
+        var f64_put = try f64_hist.getOrPut(@intFromFloat(u32, rand_f64 * @floatFromInt(f64, num_buckets)));
         if (f64_put.found_existing) {
             f64_put.value_ptr.* += 1;
         } else {
@@ -352,8 +352,8 @@ test "Random float chi-square goodness of fit" {
     {
         var j: u32 = 0;
         while (j < num_buckets) : (j += 1) {
-            const count = @intToFloat(f64, (if (f32_hist.get(j)) |v| v else 0));
-            const expected = @intToFloat(f64, num_numbers) / @intToFloat(f64, num_buckets);
+            const count = @floatFromInt(f64, (if (f32_hist.get(j)) |v| v else 0));
+            const expected = @floatFromInt(f64, num_numbers) / @floatFromInt(f64, num_buckets);
             const delta = count - expected;
             const variance = (delta * delta) / expected;
             f32_total_variance += variance;
@@ -363,8 +363,8 @@ test "Random float chi-square goodness of fit" {
     {
         var j: u64 = 0;
         while (j < num_buckets) : (j += 1) {
-            const count = @intToFloat(f64, (if (f64_hist.get(j)) |v| v else 0));
-            const expected = @intToFloat(f64, num_numbers) / @intToFloat(f64, num_buckets);
+            const count = @floatFromInt(f64, (if (f64_hist.get(j)) |v| v else 0));
+            const expected = @floatFromInt(f64, num_numbers) / @floatFromInt(f64, num_buckets);
             const delta = count - expected;
             const variance = (delta * delta) / expected;
             f64_total_variance += variance;
lib/std/target/aarch64.zig
@@ -215,7 +215,7 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.a510)] = .{
+    result[@intFromEnum(Feature.a510)] = .{
         .llvm_name = "a510",
         .description = "Cortex-A510 ARM processors",
         .dependencies = featureSet(&[_]Feature{
@@ -224,7 +224,7 @@ pub const all_features = blk: {
             .use_postra_scheduler,
         }),
     };
-    result[@enumToInt(Feature.a65)] = .{
+    result[@intFromEnum(Feature.a65)] = .{
         .llvm_name = "a65",
         .description = "Cortex-A65 ARM processors",
         .dependencies = featureSet(&[_]Feature{
@@ -235,7 +235,7 @@ pub const all_features = blk: {
             .fuse_literals,
         }),
     };
-    result[@enumToInt(Feature.a710)] = .{
+    result[@intFromEnum(Feature.a710)] = .{
         .llvm_name = "a710",
         .description = "Cortex-A710 ARM processors",
         .dependencies = featureSet(&[_]Feature{
@@ -247,7 +247,7 @@ pub const all_features = blk: {
             .use_postra_scheduler,
         }),
     };
-    result[@enumToInt(Feature.a76)] = .{
+    result[@intFromEnum(Feature.a76)] = .{
         .llvm_name = "a76",
         .description = "Cortex-A76 ARM processors",
         .dependencies = featureSet(&[_]Feature{
@@ -257,7 +257,7 @@ pub const all_features = blk: {
             .lsl_fast,
         }),
     };
-    result[@enumToInt(Feature.a78)] = .{
+    result[@intFromEnum(Feature.a78)] = .{
         .llvm_name = "a78",
         .description = "Cortex-A78 ARM processors",
         .dependencies = featureSet(&[_]Feature{
@@ -269,7 +269,7 @@ pub const all_features = blk: {
             .use_postra_scheduler,
         }),
     };
-    result[@enumToInt(Feature.a78c)] = .{
+    result[@intFromEnum(Feature.a78c)] = .{
         .llvm_name = "a78c",
         .description = "Cortex-A78C ARM processors",
         .dependencies = featureSet(&[_]Feature{
@@ -281,175 +281,175 @@ pub const all_features = blk: {
             .use_postra_scheduler,
         }),
     };
-    result[@enumToInt(Feature.aes)] = .{
+    result[@intFromEnum(Feature.aes)] = .{
         .llvm_name = "aes",
         .description = "Enable AES support (FEAT_AES, FEAT_PMULL)",
         .dependencies = featureSet(&[_]Feature{
             .neon,
         }),
     };
-    result[@enumToInt(Feature.aggressive_fma)] = .{
+    result[@intFromEnum(Feature.aggressive_fma)] = .{
         .llvm_name = "aggressive-fma",
         .description = "Enable Aggressive FMA for floating-point.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.alternate_sextload_cvt_f32_pattern)] = .{
+    result[@intFromEnum(Feature.alternate_sextload_cvt_f32_pattern)] = .{
         .llvm_name = "alternate-sextload-cvt-f32-pattern",
         .description = "Use alternative pattern for sextload convert to f32",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.altnzcv)] = .{
+    result[@intFromEnum(Feature.altnzcv)] = .{
         .llvm_name = "altnzcv",
         .description = "Enable alternative NZCV format for floating point comparisons (FEAT_FlagM2)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.am)] = .{
+    result[@intFromEnum(Feature.am)] = .{
         .llvm_name = "am",
         .description = "Enable v8.4-A Activity Monitors extension (FEAT_AMUv1)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.amvs)] = .{
+    result[@intFromEnum(Feature.amvs)] = .{
         .llvm_name = "amvs",
         .description = "Enable v8.6-A Activity Monitors Virtualization support (FEAT_AMUv1p1)",
         .dependencies = featureSet(&[_]Feature{
             .am,
         }),
     };
-    result[@enumToInt(Feature.arith_bcc_fusion)] = .{
+    result[@intFromEnum(Feature.arith_bcc_fusion)] = .{
         .llvm_name = "arith-bcc-fusion",
         .description = "CPU fuses arithmetic+bcc operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.arith_cbz_fusion)] = .{
+    result[@intFromEnum(Feature.arith_cbz_fusion)] = .{
         .llvm_name = "arith-cbz-fusion",
         .description = "CPU fuses arithmetic + cbz/cbnz operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ascend_store_address)] = .{
+    result[@intFromEnum(Feature.ascend_store_address)] = .{
         .llvm_name = "ascend-store-address",
         .description = "Schedule vector stores by ascending address",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.b16b16)] = .{
+    result[@intFromEnum(Feature.b16b16)] = .{
         .llvm_name = "b16b16",
         .description = "Enable SVE2.1 or SME2.1 non-widening BFloat16 to BFloat16 instructions (FEAT_B16B16)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.balance_fp_ops)] = .{
+    result[@intFromEnum(Feature.balance_fp_ops)] = .{
         .llvm_name = "balance-fp-ops",
         .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.bf16)] = .{
+    result[@intFromEnum(Feature.bf16)] = .{
         .llvm_name = "bf16",
         .description = "Enable BFloat16 Extension (FEAT_BF16)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.brbe)] = .{
+    result[@intFromEnum(Feature.brbe)] = .{
         .llvm_name = "brbe",
         .description = "Enable Branch Record Buffer Extension (FEAT_BRBE)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.bti)] = .{
+    result[@intFromEnum(Feature.bti)] = .{
         .llvm_name = "bti",
         .description = "Enable Branch Target Identification (FEAT_BTI)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.call_saved_x10)] = .{
+    result[@intFromEnum(Feature.call_saved_x10)] = .{
         .llvm_name = "call-saved-x10",
         .description = "Make X10 callee saved.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.call_saved_x11)] = .{
+    result[@intFromEnum(Feature.call_saved_x11)] = .{
         .llvm_name = "call-saved-x11",
         .description = "Make X11 callee saved.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.call_saved_x12)] = .{
+    result[@intFromEnum(Feature.call_saved_x12)] = .{
         .llvm_name = "call-saved-x12",
         .description = "Make X12 callee saved.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.call_saved_x13)] = .{
+    result[@intFromEnum(Feature.call_saved_x13)] = .{
         .llvm_name = "call-saved-x13",
         .description = "Make X13 callee saved.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.call_saved_x14)] = .{
+    result[@intFromEnum(Feature.call_saved_x14)] = .{
         .llvm_name = "call-saved-x14",
         .description = "Make X14 callee saved.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.call_saved_x15)] = .{
+    result[@intFromEnum(Feature.call_saved_x15)] = .{
         .llvm_name = "call-saved-x15",
         .description = "Make X15 callee saved.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.call_saved_x18)] = .{
+    result[@intFromEnum(Feature.call_saved_x18)] = .{
         .llvm_name = "call-saved-x18",
         .description = "Make X18 callee saved.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.call_saved_x8)] = .{
+    result[@intFromEnum(Feature.call_saved_x8)] = .{
         .llvm_name = "call-saved-x8",
         .description = "Make X8 callee saved.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.call_saved_x9)] = .{
+    result[@intFromEnum(Feature.call_saved_x9)] = .{
         .llvm_name = "call-saved-x9",
         .description = "Make X9 callee saved.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ccdp)] = .{
+    result[@intFromEnum(Feature.ccdp)] = .{
         .llvm_name = "ccdp",
         .description = "Enable v8.5 Cache Clean to Point of Deep Persistence (FEAT_DPB2)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ccidx)] = .{
+    result[@intFromEnum(Feature.ccidx)] = .{
         .llvm_name = "ccidx",
         .description = "Enable v8.3-A Extend of the CCSIDR number of sets (FEAT_CCIDX)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ccpp)] = .{
+    result[@intFromEnum(Feature.ccpp)] = .{
         .llvm_name = "ccpp",
         .description = "Enable v8.2 data Cache Clean to Point of Persistence (FEAT_DPB)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.clrbhb)] = .{
+    result[@intFromEnum(Feature.clrbhb)] = .{
         .llvm_name = "clrbhb",
         .description = "Enable Clear BHB instruction (FEAT_CLRBHB)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cmp_bcc_fusion)] = .{
+    result[@intFromEnum(Feature.cmp_bcc_fusion)] = .{
         .llvm_name = "cmp-bcc-fusion",
         .description = "CPU fuses cmp+bcc operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.complxnum)] = .{
+    result[@intFromEnum(Feature.complxnum)] = .{
         .llvm_name = "complxnum",
         .description = "Enable v8.3-A Floating-point complex number support (FEAT_FCMA)",
         .dependencies = featureSet(&[_]Feature{
             .neon,
         }),
     };
-    result[@enumToInt(Feature.contextidr_el2)] = .{
+    result[@intFromEnum(Feature.contextidr_el2)] = .{
         .llvm_name = "CONTEXTIDREL2",
         .description = "Enable RW operand Context ID Register (EL2)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cortex_r82)] = .{
+    result[@intFromEnum(Feature.cortex_r82)] = .{
         .llvm_name = "cortex-r82",
         .description = "Cortex-R82 ARM processors",
         .dependencies = featureSet(&[_]Feature{
             .use_postra_scheduler,
         }),
     };
-    result[@enumToInt(Feature.crc)] = .{
+    result[@intFromEnum(Feature.crc)] = .{
         .llvm_name = "crc",
         .description = "Enable ARMv8 CRC-32 checksum instructions (FEAT_CRC32)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.crypto)] = .{
+    result[@intFromEnum(Feature.crypto)] = .{
         .llvm_name = "crypto",
         .description = "Enable cryptographic instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -457,560 +457,560 @@ pub const all_features = blk: {
             .sha2,
         }),
     };
-    result[@enumToInt(Feature.cssc)] = .{
+    result[@intFromEnum(Feature.cssc)] = .{
         .llvm_name = "cssc",
         .description = "Enable Common Short Sequence Compression (CSSC) instructions (FEAT_CSSC)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.custom_cheap_as_move)] = .{
+    result[@intFromEnum(Feature.custom_cheap_as_move)] = .{
         .llvm_name = "custom-cheap-as-move",
         .description = "Use custom handling of cheap instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.d128)] = .{
+    result[@intFromEnum(Feature.d128)] = .{
         .llvm_name = "d128",
         .description = "Enable Armv9.4-A 128-bit Page Table Descriptors, System Registers and Instructions (FEAT_D128, FEAT_LVA3, FEAT_SYSREG128, FEAT_SYSINSTR128)",
         .dependencies = featureSet(&[_]Feature{
             .lse128,
         }),
     };
-    result[@enumToInt(Feature.disable_latency_sched_heuristic)] = .{
+    result[@intFromEnum(Feature.disable_latency_sched_heuristic)] = .{
         .llvm_name = "disable-latency-sched-heuristic",
         .description = "Disable latency scheduling heuristic",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dit)] = .{
+    result[@intFromEnum(Feature.dit)] = .{
         .llvm_name = "dit",
         .description = "Enable v8.4-A Data Independent Timing instructions (FEAT_DIT)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dotprod)] = .{
+    result[@intFromEnum(Feature.dotprod)] = .{
         .llvm_name = "dotprod",
         .description = "Enable dot product support (FEAT_DotProd)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ecv)] = .{
+    result[@intFromEnum(Feature.ecv)] = .{
         .llvm_name = "ecv",
         .description = "Enable enhanced counter virtualization extension (FEAT_ECV)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.el2vmsa)] = .{
+    result[@intFromEnum(Feature.el2vmsa)] = .{
         .llvm_name = "el2vmsa",
         .description = "Enable Exception Level 2 Virtual Memory System Architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.el3)] = .{
+    result[@intFromEnum(Feature.el3)] = .{
         .llvm_name = "el3",
         .description = "Enable Exception Level 3",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.enable_select_opt)] = .{
+    result[@intFromEnum(Feature.enable_select_opt)] = .{
         .llvm_name = "enable-select-opt",
         .description = "Enable the select optimize pass for select loop heuristics",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ete)] = .{
+    result[@intFromEnum(Feature.ete)] = .{
         .llvm_name = "ete",
         .description = "Enable Embedded Trace Extension (FEAT_ETE)",
         .dependencies = featureSet(&[_]Feature{
             .trbe,
         }),
     };
-    result[@enumToInt(Feature.exynos_cheap_as_move)] = .{
+    result[@intFromEnum(Feature.exynos_cheap_as_move)] = .{
         .llvm_name = "exynos-cheap-as-move",
         .description = "Use Exynos specific handling of cheap instructions",
         .dependencies = featureSet(&[_]Feature{
             .custom_cheap_as_move,
         }),
     };
-    result[@enumToInt(Feature.f32mm)] = .{
+    result[@intFromEnum(Feature.f32mm)] = .{
         .llvm_name = "f32mm",
         .description = "Enable Matrix Multiply FP32 Extension (FEAT_F32MM)",
         .dependencies = featureSet(&[_]Feature{
             .sve,
         }),
     };
-    result[@enumToInt(Feature.f64mm)] = .{
+    result[@intFromEnum(Feature.f64mm)] = .{
         .llvm_name = "f64mm",
         .description = "Enable Matrix Multiply FP64 Extension (FEAT_F64MM)",
         .dependencies = featureSet(&[_]Feature{
             .sve,
         }),
     };
-    result[@enumToInt(Feature.fgt)] = .{
+    result[@intFromEnum(Feature.fgt)] = .{
         .llvm_name = "fgt",
         .description = "Enable fine grained virtualization traps extension (FEAT_FGT)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fix_cortex_a53_835769)] = .{
+    result[@intFromEnum(Feature.fix_cortex_a53_835769)] = .{
         .llvm_name = "fix-cortex-a53-835769",
         .description = "Mitigate Cortex-A53 Erratum 835769",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.flagm)] = .{
+    result[@intFromEnum(Feature.flagm)] = .{
         .llvm_name = "flagm",
         .description = "Enable v8.4-A Flag Manipulation Instructions (FEAT_FlagM)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fmv)] = .{
+    result[@intFromEnum(Feature.fmv)] = .{
         .llvm_name = "fmv",
         .description = "Enable Function Multi Versioning support.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.force_32bit_jump_tables)] = .{
+    result[@intFromEnum(Feature.force_32bit_jump_tables)] = .{
         .llvm_name = "force-32bit-jump-tables",
         .description = "Force jump table entries to be 32-bits wide except at MinSize",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fp16fml)] = .{
+    result[@intFromEnum(Feature.fp16fml)] = .{
         .llvm_name = "fp16fml",
         .description = "Enable FP16 FML instructions (FEAT_FHM)",
         .dependencies = featureSet(&[_]Feature{
             .fullfp16,
         }),
     };
-    result[@enumToInt(Feature.fp_armv8)] = .{
+    result[@intFromEnum(Feature.fp_armv8)] = .{
         .llvm_name = "fp-armv8",
         .description = "Enable ARMv8 FP (FEAT_FP)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fptoint)] = .{
+    result[@intFromEnum(Feature.fptoint)] = .{
         .llvm_name = "fptoint",
         .description = "Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int (FEAT_FRINTTS)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fullfp16)] = .{
+    result[@intFromEnum(Feature.fullfp16)] = .{
         .llvm_name = "fullfp16",
         .description = "Full FP16 (FEAT_FP16)",
         .dependencies = featureSet(&[_]Feature{
             .fp_armv8,
         }),
     };
-    result[@enumToInt(Feature.fuse_address)] = .{
+    result[@intFromEnum(Feature.fuse_address)] = .{
         .llvm_name = "fuse-address",
         .description = "CPU fuses address generation and memory operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fuse_adrp_add)] = .{
+    result[@intFromEnum(Feature.fuse_adrp_add)] = .{
         .llvm_name = "fuse-adrp-add",
         .description = "CPU fuses adrp+add operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fuse_aes)] = .{
+    result[@intFromEnum(Feature.fuse_aes)] = .{
         .llvm_name = "fuse-aes",
         .description = "CPU fuses AES crypto operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fuse_arith_logic)] = .{
+    result[@intFromEnum(Feature.fuse_arith_logic)] = .{
         .llvm_name = "fuse-arith-logic",
         .description = "CPU fuses arithmetic and logic operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fuse_crypto_eor)] = .{
+    result[@intFromEnum(Feature.fuse_crypto_eor)] = .{
         .llvm_name = "fuse-crypto-eor",
         .description = "CPU fuses AES/PMULL and EOR operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fuse_csel)] = .{
+    result[@intFromEnum(Feature.fuse_csel)] = .{
         .llvm_name = "fuse-csel",
         .description = "CPU fuses conditional select operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fuse_literals)] = .{
+    result[@intFromEnum(Feature.fuse_literals)] = .{
         .llvm_name = "fuse-literals",
         .description = "CPU fuses literal generation operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.harden_sls_blr)] = .{
+    result[@intFromEnum(Feature.harden_sls_blr)] = .{
         .llvm_name = "harden-sls-blr",
         .description = "Harden against straight line speculation across BLR instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.harden_sls_nocomdat)] = .{
+    result[@intFromEnum(Feature.harden_sls_nocomdat)] = .{
         .llvm_name = "harden-sls-nocomdat",
         .description = "Generate thunk code for SLS mitigation in the normal text section",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.harden_sls_retbr)] = .{
+    result[@intFromEnum(Feature.harden_sls_retbr)] = .{
         .llvm_name = "harden-sls-retbr",
         .description = "Harden against straight line speculation across RET and BR instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hbc)] = .{
+    result[@intFromEnum(Feature.hbc)] = .{
         .llvm_name = "hbc",
         .description = "Enable Armv8.8-A Hinted Conditional Branches Extension (FEAT_HBC)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hcx)] = .{
+    result[@intFromEnum(Feature.hcx)] = .{
         .llvm_name = "hcx",
         .description = "Enable Armv8.7-A HCRX_EL2 system register (FEAT_HCX)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.i8mm)] = .{
+    result[@intFromEnum(Feature.i8mm)] = .{
         .llvm_name = "i8mm",
         .description = "Enable Matrix Multiply Int8 Extension (FEAT_I8MM)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ite)] = .{
+    result[@intFromEnum(Feature.ite)] = .{
         .llvm_name = "ite",
         .description = "Enable Armv9.4-A Instrumentation Extension FEAT_ITE",
         .dependencies = featureSet(&[_]Feature{
             .ete,
         }),
     };
-    result[@enumToInt(Feature.jsconv)] = .{
+    result[@intFromEnum(Feature.jsconv)] = .{
         .llvm_name = "jsconv",
         .description = "Enable v8.3-A JavaScript FP conversion instructions (FEAT_JSCVT)",
         .dependencies = featureSet(&[_]Feature{
             .fp_armv8,
         }),
     };
-    result[@enumToInt(Feature.lor)] = .{
+    result[@intFromEnum(Feature.lor)] = .{
         .llvm_name = "lor",
         .description = "Enables ARM v8.1 Limited Ordering Regions extension (FEAT_LOR)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ls64)] = .{
+    result[@intFromEnum(Feature.ls64)] = .{
         .llvm_name = "ls64",
         .description = "Enable Armv8.7-A LD64B/ST64B Accelerator Extension (FEAT_LS64, FEAT_LS64_V, FEAT_LS64_ACCDATA)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lse)] = .{
+    result[@intFromEnum(Feature.lse)] = .{
         .llvm_name = "lse",
         .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions (FEAT_LSE)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lse128)] = .{
+    result[@intFromEnum(Feature.lse128)] = .{
         .llvm_name = "lse128",
         .description = "Enable Armv9.4-A 128-bit Atomic Instructions (FEAT_LSE128)",
         .dependencies = featureSet(&[_]Feature{
             .lse,
         }),
     };
-    result[@enumToInt(Feature.lse2)] = .{
+    result[@intFromEnum(Feature.lse2)] = .{
         .llvm_name = "lse2",
         .description = "Enable ARMv8.4 Large System Extension 2 (LSE2) atomicity rules (FEAT_LSE2)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lsl_fast)] = .{
+    result[@intFromEnum(Feature.lsl_fast)] = .{
         .llvm_name = "lsl-fast",
         .description = "CPU has a fastpath logical shift of up to 3 places",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mec)] = .{
+    result[@intFromEnum(Feature.mec)] = .{
         .llvm_name = "mec",
         .description = "Enable Memory Encryption Contexts Extension",
         .dependencies = featureSet(&[_]Feature{
             .rme,
         }),
     };
-    result[@enumToInt(Feature.mops)] = .{
+    result[@intFromEnum(Feature.mops)] = .{
         .llvm_name = "mops",
         .description = "Enable Armv8.8-A memcpy and memset acceleration instructions (FEAT_MOPS)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mpam)] = .{
+    result[@intFromEnum(Feature.mpam)] = .{
         .llvm_name = "mpam",
         .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension (FEAT_MPAM)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mte)] = .{
+    result[@intFromEnum(Feature.mte)] = .{
         .llvm_name = "mte",
         .description = "Enable Memory Tagging Extension (FEAT_MTE, FEAT_MTE2)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.neon)] = .{
+    result[@intFromEnum(Feature.neon)] = .{
         .llvm_name = "neon",
         .description = "Enable Advanced SIMD instructions (FEAT_AdvSIMD)",
         .dependencies = featureSet(&[_]Feature{
             .fp_armv8,
         }),
     };
-    result[@enumToInt(Feature.nmi)] = .{
+    result[@intFromEnum(Feature.nmi)] = .{
         .llvm_name = "nmi",
         .description = "Enable Armv8.8-A Non-maskable Interrupts (FEAT_NMI, FEAT_GICv3_NMI)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_bti_at_return_twice)] = .{
+    result[@intFromEnum(Feature.no_bti_at_return_twice)] = .{
         .llvm_name = "no-bti-at-return-twice",
         .description = "Don't place a BTI instruction after a return-twice",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_neg_immediates)] = .{
+    result[@intFromEnum(Feature.no_neg_immediates)] = .{
         .llvm_name = "no-neg-immediates",
         .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_zcz_fp)] = .{
+    result[@intFromEnum(Feature.no_zcz_fp)] = .{
         .llvm_name = "no-zcz-fp",
         .description = "Has no zero-cycle zeroing instructions for FP registers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nv)] = .{
+    result[@intFromEnum(Feature.nv)] = .{
         .llvm_name = "nv",
         .description = "Enable v8.4-A Nested Virtualization Enchancement (FEAT_NV, FEAT_NV2)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.outline_atomics)] = .{
+    result[@intFromEnum(Feature.outline_atomics)] = .{
         .llvm_name = "outline-atomics",
         .description = "Enable out of line atomics to support LSE instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.pan)] = .{
+    result[@intFromEnum(Feature.pan)] = .{
         .llvm_name = "pan",
         .description = "Enables ARM v8.1 Privileged Access-Never extension (FEAT_PAN)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.pan_rwv)] = .{
+    result[@intFromEnum(Feature.pan_rwv)] = .{
         .llvm_name = "pan-rwv",
         .description = "Enable v8.2 PAN s1e1R and s1e1W Variants (FEAT_PAN2)",
         .dependencies = featureSet(&[_]Feature{
             .pan,
         }),
     };
-    result[@enumToInt(Feature.pauth)] = .{
+    result[@intFromEnum(Feature.pauth)] = .{
         .llvm_name = "pauth",
         .description = "Enable v8.3-A Pointer Authentication extension (FEAT_PAuth)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.perfmon)] = .{
+    result[@intFromEnum(Feature.perfmon)] = .{
         .llvm_name = "perfmon",
         .description = "Enable Code Generation for ARMv8 PMUv3 Performance Monitors extension (FEAT_PMUv3)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.predictable_select_expensive)] = .{
+    result[@intFromEnum(Feature.predictable_select_expensive)] = .{
         .llvm_name = "predictable-select-expensive",
         .description = "Prefer likely predicted branches over selects",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.predres)] = .{
+    result[@intFromEnum(Feature.predres)] = .{
         .llvm_name = "predres",
         .description = "Enable v8.5a execution and data prediction invalidation instructions (FEAT_SPECRES)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prfm_slc_target)] = .{
+    result[@intFromEnum(Feature.prfm_slc_target)] = .{
         .llvm_name = "prfm-slc-target",
         .description = "Enable SLC target for PRFM instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rand)] = .{
+    result[@intFromEnum(Feature.rand)] = .{
         .llvm_name = "rand",
         .description = "Enable Random Number generation instructions (FEAT_RNG)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ras)] = .{
+    result[@intFromEnum(Feature.ras)] = .{
         .llvm_name = "ras",
         .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions (FEAT_RAS, FEAT_RASv1p1)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rasv2)] = .{
+    result[@intFromEnum(Feature.rasv2)] = .{
         .llvm_name = "rasv2",
         .description = "Enable ARMv8.9-A Reliability, Availability and Serviceability Extensions (FEAT_RASv2)",
         .dependencies = featureSet(&[_]Feature{
             .ras,
         }),
     };
-    result[@enumToInt(Feature.rcpc)] = .{
+    result[@intFromEnum(Feature.rcpc)] = .{
         .llvm_name = "rcpc",
         .description = "Enable support for RCPC extension (FEAT_LRCPC)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rcpc3)] = .{
+    result[@intFromEnum(Feature.rcpc3)] = .{
         .llvm_name = "rcpc3",
         .description = "Enable Armv8.9-A RCPC instructions for A64 and Advanced SIMD and floating-point instruction set (FEAT_LRCPC3)",
         .dependencies = featureSet(&[_]Feature{
             .rcpc_immo,
         }),
     };
-    result[@enumToInt(Feature.rcpc_immo)] = .{
+    result[@intFromEnum(Feature.rcpc_immo)] = .{
         .llvm_name = "rcpc-immo",
         .description = "Enable v8.4-A RCPC instructions with Immediate Offsets (FEAT_LRCPC2)",
         .dependencies = featureSet(&[_]Feature{
             .rcpc,
         }),
     };
-    result[@enumToInt(Feature.rdm)] = .{
+    result[@intFromEnum(Feature.rdm)] = .{
         .llvm_name = "rdm",
         .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions (FEAT_RDM)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x1)] = .{
+    result[@intFromEnum(Feature.reserve_x1)] = .{
         .llvm_name = "reserve-x1",
         .description = "Reserve X1, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x10)] = .{
+    result[@intFromEnum(Feature.reserve_x10)] = .{
         .llvm_name = "reserve-x10",
         .description = "Reserve X10, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x11)] = .{
+    result[@intFromEnum(Feature.reserve_x11)] = .{
         .llvm_name = "reserve-x11",
         .description = "Reserve X11, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x12)] = .{
+    result[@intFromEnum(Feature.reserve_x12)] = .{
         .llvm_name = "reserve-x12",
         .description = "Reserve X12, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x13)] = .{
+    result[@intFromEnum(Feature.reserve_x13)] = .{
         .llvm_name = "reserve-x13",
         .description = "Reserve X13, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x14)] = .{
+    result[@intFromEnum(Feature.reserve_x14)] = .{
         .llvm_name = "reserve-x14",
         .description = "Reserve X14, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x15)] = .{
+    result[@intFromEnum(Feature.reserve_x15)] = .{
         .llvm_name = "reserve-x15",
         .description = "Reserve X15, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x18)] = .{
+    result[@intFromEnum(Feature.reserve_x18)] = .{
         .llvm_name = "reserve-x18",
         .description = "Reserve X18, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x2)] = .{
+    result[@intFromEnum(Feature.reserve_x2)] = .{
         .llvm_name = "reserve-x2",
         .description = "Reserve X2, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x20)] = .{
+    result[@intFromEnum(Feature.reserve_x20)] = .{
         .llvm_name = "reserve-x20",
         .description = "Reserve X20, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x21)] = .{
+    result[@intFromEnum(Feature.reserve_x21)] = .{
         .llvm_name = "reserve-x21",
         .description = "Reserve X21, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x22)] = .{
+    result[@intFromEnum(Feature.reserve_x22)] = .{
         .llvm_name = "reserve-x22",
         .description = "Reserve X22, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x23)] = .{
+    result[@intFromEnum(Feature.reserve_x23)] = .{
         .llvm_name = "reserve-x23",
         .description = "Reserve X23, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x24)] = .{
+    result[@intFromEnum(Feature.reserve_x24)] = .{
         .llvm_name = "reserve-x24",
         .description = "Reserve X24, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x25)] = .{
+    result[@intFromEnum(Feature.reserve_x25)] = .{
         .llvm_name = "reserve-x25",
         .description = "Reserve X25, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x26)] = .{
+    result[@intFromEnum(Feature.reserve_x26)] = .{
         .llvm_name = "reserve-x26",
         .description = "Reserve X26, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x27)] = .{
+    result[@intFromEnum(Feature.reserve_x27)] = .{
         .llvm_name = "reserve-x27",
         .description = "Reserve X27, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x28)] = .{
+    result[@intFromEnum(Feature.reserve_x28)] = .{
         .llvm_name = "reserve-x28",
         .description = "Reserve X28, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x3)] = .{
+    result[@intFromEnum(Feature.reserve_x3)] = .{
         .llvm_name = "reserve-x3",
         .description = "Reserve X3, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x30)] = .{
+    result[@intFromEnum(Feature.reserve_x30)] = .{
         .llvm_name = "reserve-x30",
         .description = "Reserve X30, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x4)] = .{
+    result[@intFromEnum(Feature.reserve_x4)] = .{
         .llvm_name = "reserve-x4",
         .description = "Reserve X4, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x5)] = .{
+    result[@intFromEnum(Feature.reserve_x5)] = .{
         .llvm_name = "reserve-x5",
         .description = "Reserve X5, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x6)] = .{
+    result[@intFromEnum(Feature.reserve_x6)] = .{
         .llvm_name = "reserve-x6",
         .description = "Reserve X6, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x7)] = .{
+    result[@intFromEnum(Feature.reserve_x7)] = .{
         .llvm_name = "reserve-x7",
         .description = "Reserve X7, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x9)] = .{
+    result[@intFromEnum(Feature.reserve_x9)] = .{
         .llvm_name = "reserve-x9",
         .description = "Reserve X9, making it unavailable as a GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rme)] = .{
+    result[@intFromEnum(Feature.rme)] = .{
         .llvm_name = "rme",
         .description = "Enable Realm Management Extension (FEAT_RME)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sb)] = .{
+    result[@intFromEnum(Feature.sb)] = .{
         .llvm_name = "sb",
         .description = "Enable v8.5 Speculation Barrier (FEAT_SB)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sel2)] = .{
+    result[@intFromEnum(Feature.sel2)] = .{
         .llvm_name = "sel2",
         .description = "Enable v8.4-A Secure Exception Level 2 extension (FEAT_SEL2)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sha2)] = .{
+    result[@intFromEnum(Feature.sha2)] = .{
         .llvm_name = "sha2",
         .description = "Enable SHA1 and SHA256 support (FEAT_SHA1, FEAT_SHA256)",
         .dependencies = featureSet(&[_]Feature{
             .neon,
         }),
     };
-    result[@enumToInt(Feature.sha3)] = .{
+    result[@intFromEnum(Feature.sha3)] = .{
         .llvm_name = "sha3",
         .description = "Enable SHA512 and SHA3 support (FEAT_SHA3, FEAT_SHA512)",
         .dependencies = featureSet(&[_]Feature{
             .sha2,
         }),
     };
-    result[@enumToInt(Feature.slow_misaligned_128store)] = .{
+    result[@intFromEnum(Feature.slow_misaligned_128store)] = .{
         .llvm_name = "slow-misaligned-128store",
         .description = "Misaligned 128 bit stores are slow",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_paired_128)] = .{
+    result[@intFromEnum(Feature.slow_paired_128)] = .{
         .llvm_name = "slow-paired-128",
         .description = "Paired 128 bit loads and stores are slow",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_strqro_store)] = .{
+    result[@intFromEnum(Feature.slow_strqro_store)] = .{
         .llvm_name = "slow-strqro-store",
         .description = "STR of Q register with register offset is slow",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm4)] = .{
+    result[@intFromEnum(Feature.sm4)] = .{
         .llvm_name = "sm4",
         .description = "Enable SM3 and SM4 support (FEAT_SM4, FEAT_SM3)",
         .dependencies = featureSet(&[_]Feature{
             .neon,
         }),
     };
-    result[@enumToInt(Feature.sme)] = .{
+    result[@intFromEnum(Feature.sme)] = .{
         .llvm_name = "sme",
         .description = "Enable Scalable Matrix Extension (SME) (FEAT_SME)",
         .dependencies = featureSet(&[_]Feature{
@@ -1018,79 +1018,79 @@ pub const all_features = blk: {
             .use_scalar_inc_vl,
         }),
     };
-    result[@enumToInt(Feature.sme2)] = .{
+    result[@intFromEnum(Feature.sme2)] = .{
         .llvm_name = "sme2",
         .description = "Enable Scalable Matrix Extension 2 (SME2) instructions",
         .dependencies = featureSet(&[_]Feature{
             .sme,
         }),
     };
-    result[@enumToInt(Feature.sme2p1)] = .{
+    result[@intFromEnum(Feature.sme2p1)] = .{
         .llvm_name = "sme2p1",
         .description = "Enable Scalable Matrix Extension 2.1 (FEAT_SME2p1) instructions",
         .dependencies = featureSet(&[_]Feature{
             .sme2,
         }),
     };
-    result[@enumToInt(Feature.sme_f16f16)] = .{
+    result[@intFromEnum(Feature.sme_f16f16)] = .{
         .llvm_name = "sme-f16f16",
         .description = "Enable SME2.1 non-widening Float16 instructions (FEAT_SME_F16F16)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sme_f64f64)] = .{
+    result[@intFromEnum(Feature.sme_f64f64)] = .{
         .llvm_name = "sme-f64f64",
         .description = "Enable Scalable Matrix Extension (SME) F64F64 instructions (FEAT_SME_F64F64)",
         .dependencies = featureSet(&[_]Feature{
             .sme,
         }),
     };
-    result[@enumToInt(Feature.sme_i16i64)] = .{
+    result[@intFromEnum(Feature.sme_i16i64)] = .{
         .llvm_name = "sme-i16i64",
         .description = "Enable Scalable Matrix Extension (SME) I16I64 instructions (FEAT_SME_I16I64)",
         .dependencies = featureSet(&[_]Feature{
             .sme,
         }),
     };
-    result[@enumToInt(Feature.spe)] = .{
+    result[@intFromEnum(Feature.spe)] = .{
         .llvm_name = "spe",
         .description = "Enable Statistical Profiling extension (FEAT_SPE)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.spe_eef)] = .{
+    result[@intFromEnum(Feature.spe_eef)] = .{
         .llvm_name = "spe-eef",
         .description = "Enable extra register in the Statistical Profiling Extension (FEAT_SPEv1p2)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.specres2)] = .{
+    result[@intFromEnum(Feature.specres2)] = .{
         .llvm_name = "specres2",
         .description = "Enable Speculation Restriction Instruction (FEAT_SPECRES2)",
         .dependencies = featureSet(&[_]Feature{
             .predres,
         }),
     };
-    result[@enumToInt(Feature.specrestrict)] = .{
+    result[@intFromEnum(Feature.specrestrict)] = .{
         .llvm_name = "specrestrict",
         .description = "Enable architectural speculation restriction (FEAT_CSV2_2)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ssbs)] = .{
+    result[@intFromEnum(Feature.ssbs)] = .{
         .llvm_name = "ssbs",
         .description = "Enable Speculative Store Bypass Safe bit (FEAT_SSBS, FEAT_SSBS2)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.strict_align)] = .{
+    result[@intFromEnum(Feature.strict_align)] = .{
         .llvm_name = "strict-align",
         .description = "Disallow all unaligned memory access",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sve)] = .{
+    result[@intFromEnum(Feature.sve)] = .{
         .llvm_name = "sve",
         .description = "Enable Scalable Vector Extension (SVE) instructions (FEAT_SVE)",
         .dependencies = featureSet(&[_]Feature{
             .fullfp16,
         }),
     };
-    result[@enumToInt(Feature.sve2)] = .{
+    result[@intFromEnum(Feature.sve2)] = .{
         .llvm_name = "sve2",
         .description = "Enable Scalable Vector Extension 2 (SVE2) instructions (FEAT_SVE2)",
         .dependencies = featureSet(&[_]Feature{
@@ -1098,7 +1098,7 @@ pub const all_features = blk: {
             .use_scalar_inc_vl,
         }),
     };
-    result[@enumToInt(Feature.sve2_aes)] = .{
+    result[@intFromEnum(Feature.sve2_aes)] = .{
         .llvm_name = "sve2-aes",
         .description = "Enable AES SVE2 instructions (FEAT_SVE_AES, FEAT_SVE_PMULL128)",
         .dependencies = featureSet(&[_]Feature{
@@ -1106,14 +1106,14 @@ pub const all_features = blk: {
             .sve2,
         }),
     };
-    result[@enumToInt(Feature.sve2_bitperm)] = .{
+    result[@intFromEnum(Feature.sve2_bitperm)] = .{
         .llvm_name = "sve2-bitperm",
         .description = "Enable bit permutation SVE2 instructions (FEAT_SVE_BitPerm)",
         .dependencies = featureSet(&[_]Feature{
             .sve2,
         }),
     };
-    result[@enumToInt(Feature.sve2_sha3)] = .{
+    result[@intFromEnum(Feature.sve2_sha3)] = .{
         .llvm_name = "sve2-sha3",
         .description = "Enable SHA3 SVE2 instructions (FEAT_SVE_SHA3)",
         .dependencies = featureSet(&[_]Feature{
@@ -1121,7 +1121,7 @@ pub const all_features = blk: {
             .sve2,
         }),
     };
-    result[@enumToInt(Feature.sve2_sm4)] = .{
+    result[@intFromEnum(Feature.sve2_sm4)] = .{
         .llvm_name = "sve2-sm4",
         .description = "Enable SM4 SVE2 instructions (FEAT_SVE_SM4)",
         .dependencies = featureSet(&[_]Feature{
@@ -1129,84 +1129,84 @@ pub const all_features = blk: {
             .sve2,
         }),
     };
-    result[@enumToInt(Feature.sve2p1)] = .{
+    result[@intFromEnum(Feature.sve2p1)] = .{
         .llvm_name = "sve2p1",
         .description = "Enable Scalable Vector Extension 2.1 instructions",
         .dependencies = featureSet(&[_]Feature{
             .sve2,
         }),
     };
-    result[@enumToInt(Feature.tagged_globals)] = .{
+    result[@intFromEnum(Feature.tagged_globals)] = .{
         .llvm_name = "tagged-globals",
         .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.the)] = .{
+    result[@intFromEnum(Feature.the)] = .{
         .llvm_name = "the",
         .description = "Enable Armv8.9-A Translation Hardening Extension (FEAT_THE)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tlb_rmi)] = .{
+    result[@intFromEnum(Feature.tlb_rmi)] = .{
         .llvm_name = "tlb-rmi",
         .description = "Enable v8.4-A TLB Range and Maintenance Instructions (FEAT_TLBIOS, FEAT_TLBIRANGE)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tme)] = .{
+    result[@intFromEnum(Feature.tme)] = .{
         .llvm_name = "tme",
         .description = "Enable Transactional Memory Extension (FEAT_TME)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tpidr_el1)] = .{
+    result[@intFromEnum(Feature.tpidr_el1)] = .{
         .llvm_name = "tpidr-el1",
         .description = "Permit use of TPIDR_EL1 for the TLS base",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tpidr_el2)] = .{
+    result[@intFromEnum(Feature.tpidr_el2)] = .{
         .llvm_name = "tpidr-el2",
         .description = "Permit use of TPIDR_EL2 for the TLS base",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tpidr_el3)] = .{
+    result[@intFromEnum(Feature.tpidr_el3)] = .{
         .llvm_name = "tpidr-el3",
         .description = "Permit use of TPIDR_EL3 for the TLS base",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tracev8_4)] = .{
+    result[@intFromEnum(Feature.tracev8_4)] = .{
         .llvm_name = "tracev8.4",
         .description = "Enable v8.4-A Trace extension (FEAT_TRF)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.trbe)] = .{
+    result[@intFromEnum(Feature.trbe)] = .{
         .llvm_name = "trbe",
         .description = "Enable Trace Buffer Extension (FEAT_TRBE)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.uaops)] = .{
+    result[@intFromEnum(Feature.uaops)] = .{
         .llvm_name = "uaops",
         .description = "Enable v8.2 UAO PState (FEAT_UAO)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.use_experimental_zeroing_pseudos)] = .{
+    result[@intFromEnum(Feature.use_experimental_zeroing_pseudos)] = .{
         .llvm_name = "use-experimental-zeroing-pseudos",
         .description = "Hint to the compiler that the MOVPRFX instruction is merged with destructive operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.use_postra_scheduler)] = .{
+    result[@intFromEnum(Feature.use_postra_scheduler)] = .{
         .llvm_name = "use-postra-scheduler",
         .description = "Schedule again after register allocation",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.use_reciprocal_square_root)] = .{
+    result[@intFromEnum(Feature.use_reciprocal_square_root)] = .{
         .llvm_name = "use-reciprocal-square-root",
         .description = "Use the reciprocal square root approximation",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.use_scalar_inc_vl)] = .{
+    result[@intFromEnum(Feature.use_scalar_inc_vl)] = .{
         .llvm_name = "use-scalar-inc-vl",
         .description = "Prefer inc/dec over add+cnt",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v8_1a)] = .{
+    result[@intFromEnum(Feature.v8_1a)] = .{
         .llvm_name = "v8.1a",
         .description = "Support ARM v8.1a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1219,7 +1219,7 @@ pub const all_features = blk: {
             .vh,
         }),
     };
-    result[@enumToInt(Feature.v8_2a)] = .{
+    result[@intFromEnum(Feature.v8_2a)] = .{
         .llvm_name = "v8.2a",
         .description = "Support ARM v8.2a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1230,7 +1230,7 @@ pub const all_features = blk: {
             .v8_1a,
         }),
     };
-    result[@enumToInt(Feature.v8_3a)] = .{
+    result[@intFromEnum(Feature.v8_3a)] = .{
         .llvm_name = "v8.3a",
         .description = "Support ARM v8.3a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1242,7 +1242,7 @@ pub const all_features = blk: {
             .v8_2a,
         }),
     };
-    result[@enumToInt(Feature.v8_4a)] = .{
+    result[@intFromEnum(Feature.v8_4a)] = .{
         .llvm_name = "v8.4a",
         .description = "Support ARM v8.4a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1260,7 +1260,7 @@ pub const all_features = blk: {
             .v8_3a,
         }),
     };
-    result[@enumToInt(Feature.v8_5a)] = .{
+    result[@intFromEnum(Feature.v8_5a)] = .{
         .llvm_name = "v8.5a",
         .description = "Support ARM v8.5a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1275,7 +1275,7 @@ pub const all_features = blk: {
             .v8_4a,
         }),
     };
-    result[@enumToInt(Feature.v8_6a)] = .{
+    result[@intFromEnum(Feature.v8_6a)] = .{
         .llvm_name = "v8.6a",
         .description = "Support ARM v8.6a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1287,7 +1287,7 @@ pub const all_features = blk: {
             .v8_5a,
         }),
     };
-    result[@enumToInt(Feature.v8_7a)] = .{
+    result[@intFromEnum(Feature.v8_7a)] = .{
         .llvm_name = "v8.7a",
         .description = "Support ARM v8.7a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1297,7 +1297,7 @@ pub const all_features = blk: {
             .xs,
         }),
     };
-    result[@enumToInt(Feature.v8_8a)] = .{
+    result[@intFromEnum(Feature.v8_8a)] = .{
         .llvm_name = "v8.8a",
         .description = "Support ARM v8.8a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1307,7 +1307,7 @@ pub const all_features = blk: {
             .v8_7a,
         }),
     };
-    result[@enumToInt(Feature.v8_9a)] = .{
+    result[@intFromEnum(Feature.v8_9a)] = .{
         .llvm_name = "v8.9a",
         .description = "Support ARM v8.9a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1319,7 +1319,7 @@ pub const all_features = blk: {
             .v8_8a,
         }),
     };
-    result[@enumToInt(Feature.v8a)] = .{
+    result[@intFromEnum(Feature.v8a)] = .{
         .llvm_name = "v8a",
         .description = "Support ARM v8.0a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1328,7 +1328,7 @@ pub const all_features = blk: {
             .neon,
         }),
     };
-    result[@enumToInt(Feature.v8r)] = .{
+    result[@intFromEnum(Feature.v8r)] = .{
         .llvm_name = "v8r",
         .description = "Support ARM v8r instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1354,7 +1354,7 @@ pub const all_features = blk: {
             .uaops,
         }),
     };
-    result[@enumToInt(Feature.v9_1a)] = .{
+    result[@intFromEnum(Feature.v9_1a)] = .{
         .llvm_name = "v9.1a",
         .description = "Support ARM v9.1a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1362,7 +1362,7 @@ pub const all_features = blk: {
             .v9a,
         }),
     };
-    result[@enumToInt(Feature.v9_2a)] = .{
+    result[@intFromEnum(Feature.v9_2a)] = .{
         .llvm_name = "v9.2a",
         .description = "Support ARM v9.2a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1370,7 +1370,7 @@ pub const all_features = blk: {
             .v9_1a,
         }),
     };
-    result[@enumToInt(Feature.v9_3a)] = .{
+    result[@intFromEnum(Feature.v9_3a)] = .{
         .llvm_name = "v9.3a",
         .description = "Support ARM v9.3a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1378,7 +1378,7 @@ pub const all_features = blk: {
             .v9_2a,
         }),
     };
-    result[@enumToInt(Feature.v9_4a)] = .{
+    result[@intFromEnum(Feature.v9_4a)] = .{
         .llvm_name = "v9.4a",
         .description = "Support ARM v9.4a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1386,7 +1386,7 @@ pub const all_features = blk: {
             .v9_3a,
         }),
     };
-    result[@enumToInt(Feature.v9a)] = .{
+    result[@intFromEnum(Feature.v9a)] = .{
         .llvm_name = "v9a",
         .description = "Support ARM v9a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1395,41 +1395,41 @@ pub const all_features = blk: {
             .v8_5a,
         }),
     };
-    result[@enumToInt(Feature.vh)] = .{
+    result[@intFromEnum(Feature.vh)] = .{
         .llvm_name = "vh",
         .description = "Enables ARM v8.1 Virtual Host extension (FEAT_VHE)",
         .dependencies = featureSet(&[_]Feature{
             .contextidr_el2,
         }),
     };
-    result[@enumToInt(Feature.wfxt)] = .{
+    result[@intFromEnum(Feature.wfxt)] = .{
         .llvm_name = "wfxt",
         .description = "Enable Armv8.7-A WFET and WFIT instruction (FEAT_WFxT)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.xs)] = .{
+    result[@intFromEnum(Feature.xs)] = .{
         .llvm_name = "xs",
         .description = "Enable Armv8.7-A limited-TLB-maintenance instruction (FEAT_XS)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zcm)] = .{
+    result[@intFromEnum(Feature.zcm)] = .{
         .llvm_name = "zcm",
         .description = "Has zero-cycle register moves",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zcz)] = .{
+    result[@intFromEnum(Feature.zcz)] = .{
         .llvm_name = "zcz",
         .description = "Has zero-cycle zeroing instructions",
         .dependencies = featureSet(&[_]Feature{
             .zcz_gp,
         }),
     };
-    result[@enumToInt(Feature.zcz_fp_workaround)] = .{
+    result[@intFromEnum(Feature.zcz_fp_workaround)] = .{
         .llvm_name = "zcz-fp-workaround",
         .description = "The zero-cycle floating-point zeroing instruction has a bug",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zcz_gp)] = .{
+    result[@intFromEnum(Feature.zcz_gp)] = .{
         .llvm_name = "zcz-gp",
         .description = "Has zero-cycle zeroing instructions for generic registers",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/amdgpu.zig
@@ -162,248 +162,248 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.@"16_bit_insts")] = .{
+    result[@intFromEnum(Feature.@"16_bit_insts")] = .{
         .llvm_name = "16-bit-insts",
         .description = "Has i16/f16 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.a16)] = .{
+    result[@intFromEnum(Feature.a16)] = .{
         .llvm_name = "a16",
         .description = "Support A16 for 16-bit coordinates/gradients/lod/clamp/mip image operands",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.add_no_carry_insts)] = .{
+    result[@intFromEnum(Feature.add_no_carry_insts)] = .{
         .llvm_name = "add-no-carry-insts",
         .description = "Have VALU add/sub instructions without carry out",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.aperture_regs)] = .{
+    result[@intFromEnum(Feature.aperture_regs)] = .{
         .llvm_name = "aperture-regs",
         .description = "Has Memory Aperture Base and Size Registers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.architected_flat_scratch)] = .{
+    result[@intFromEnum(Feature.architected_flat_scratch)] = .{
         .llvm_name = "architected-flat-scratch",
         .description = "Flat Scratch register is a readonly SPI initialized architected register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.atomic_fadd_no_rtn_insts)] = .{
+    result[@intFromEnum(Feature.atomic_fadd_no_rtn_insts)] = .{
         .llvm_name = "atomic-fadd-no-rtn-insts",
         .description = "Has buffer_atomic_add_f32 and global_atomic_add_f32 instructions that don't return original value",
         .dependencies = featureSet(&[_]Feature{
             .flat_global_insts,
         }),
     };
-    result[@enumToInt(Feature.atomic_fadd_rtn_insts)] = .{
+    result[@intFromEnum(Feature.atomic_fadd_rtn_insts)] = .{
         .llvm_name = "atomic-fadd-rtn-insts",
         .description = "Has buffer_atomic_add_f32 and global_atomic_add_f32 instructions that return original value",
         .dependencies = featureSet(&[_]Feature{
             .flat_global_insts,
         }),
     };
-    result[@enumToInt(Feature.atomic_pk_fadd_no_rtn_insts)] = .{
+    result[@intFromEnum(Feature.atomic_pk_fadd_no_rtn_insts)] = .{
         .llvm_name = "atomic-pk-fadd-no-rtn-insts",
         .description = "Has buffer_atomic_pk_add_f16 and global_atomic_pk_add_f16 instructions that don't return original value",
         .dependencies = featureSet(&[_]Feature{
             .flat_global_insts,
         }),
     };
-    result[@enumToInt(Feature.auto_waitcnt_before_barrier)] = .{
+    result[@intFromEnum(Feature.auto_waitcnt_before_barrier)] = .{
         .llvm_name = "auto-waitcnt-before-barrier",
         .description = "Hardware automatically inserts waitcnt before barrier",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.back_off_barrier)] = .{
+    result[@intFromEnum(Feature.back_off_barrier)] = .{
         .llvm_name = "back-off-barrier",
         .description = "Hardware supports backing off s_barrier if an exception occurs",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ci_insts)] = .{
+    result[@intFromEnum(Feature.ci_insts)] = .{
         .llvm_name = "ci-insts",
         .description = "Additional instructions for CI+",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cumode)] = .{
+    result[@intFromEnum(Feature.cumode)] = .{
         .llvm_name = "cumode",
         .description = "Enable CU wavefront execution mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dl_insts)] = .{
+    result[@intFromEnum(Feature.dl_insts)] = .{
         .llvm_name = "dl-insts",
         .description = "Has v_fmac_f32 and v_xnor_b32 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dot1_insts)] = .{
+    result[@intFromEnum(Feature.dot1_insts)] = .{
         .llvm_name = "dot1-insts",
         .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dot2_insts)] = .{
+    result[@intFromEnum(Feature.dot2_insts)] = .{
         .llvm_name = "dot2-insts",
         .description = "Has v_dot2_i32_i16, v_dot2_u32_u16 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dot3_insts)] = .{
+    result[@intFromEnum(Feature.dot3_insts)] = .{
         .llvm_name = "dot3-insts",
         .description = "Has v_dot8c_i32_i4 instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dot4_insts)] = .{
+    result[@intFromEnum(Feature.dot4_insts)] = .{
         .llvm_name = "dot4-insts",
         .description = "Has v_dot2c_i32_i16 instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dot5_insts)] = .{
+    result[@intFromEnum(Feature.dot5_insts)] = .{
         .llvm_name = "dot5-insts",
         .description = "Has v_dot2c_f32_f16 instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dot6_insts)] = .{
+    result[@intFromEnum(Feature.dot6_insts)] = .{
         .llvm_name = "dot6-insts",
         .description = "Has v_dot4c_i32_i8 instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dot7_insts)] = .{
+    result[@intFromEnum(Feature.dot7_insts)] = .{
         .llvm_name = "dot7-insts",
         .description = "Has v_dot2_f32_f16, v_dot4_u32_u8, v_dot8_u32_u4 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dot8_insts)] = .{
+    result[@intFromEnum(Feature.dot8_insts)] = .{
         .llvm_name = "dot8-insts",
         .description = "Has v_dot4_i32_iu8, v_dot8_i32_iu4 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dot9_insts)] = .{
+    result[@intFromEnum(Feature.dot9_insts)] = .{
         .llvm_name = "dot9-insts",
         .description = "Has v_dot2_f16_f16, v_dot2_bf16_bf16, v_dot2_f32_bf16 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dpp)] = .{
+    result[@intFromEnum(Feature.dpp)] = .{
         .llvm_name = "dpp",
         .description = "Support DPP (Data Parallel Primitives) extension",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dpp8)] = .{
+    result[@intFromEnum(Feature.dpp8)] = .{
         .llvm_name = "dpp8",
         .description = "Support DPP8 (Data Parallel Primitives) extension",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dpp_64bit)] = .{
+    result[@intFromEnum(Feature.dpp_64bit)] = .{
         .llvm_name = "dpp-64bit",
         .description = "Support DPP (Data Parallel Primitives) extension",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ds128)] = .{
+    result[@intFromEnum(Feature.ds128)] = .{
         .llvm_name = "enable-ds128",
         .description = "Use ds_{read|write}_b128",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ds_src2_insts)] = .{
+    result[@intFromEnum(Feature.ds_src2_insts)] = .{
         .llvm_name = "ds-src2-insts",
         .description = "Has ds_*_src2 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.extended_image_insts)] = .{
+    result[@intFromEnum(Feature.extended_image_insts)] = .{
         .llvm_name = "extended-image-insts",
         .description = "Support mips != 0, lod != 0, gather4, and get_lod",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_denormal_f32)] = .{
+    result[@intFromEnum(Feature.fast_denormal_f32)] = .{
         .llvm_name = "fast-denormal-f32",
         .description = "Enabling denormals does not cause f32 instructions to run at f64 rates",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_fmaf)] = .{
+    result[@intFromEnum(Feature.fast_fmaf)] = .{
         .llvm_name = "fast-fmaf",
         .description = "Assuming f32 fma is at least as fast as mul + add",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.flat_address_space)] = .{
+    result[@intFromEnum(Feature.flat_address_space)] = .{
         .llvm_name = "flat-address-space",
         .description = "Support flat address space",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.flat_atomic_fadd_f32_inst)] = .{
+    result[@intFromEnum(Feature.flat_atomic_fadd_f32_inst)] = .{
         .llvm_name = "flat-atomic-fadd-f32-inst",
         .description = "Has flat_atomic_add_f32 instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.flat_for_global)] = .{
+    result[@intFromEnum(Feature.flat_for_global)] = .{
         .llvm_name = "flat-for-global",
         .description = "Force to generate flat instruction for global",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.flat_global_insts)] = .{
+    result[@intFromEnum(Feature.flat_global_insts)] = .{
         .llvm_name = "flat-global-insts",
         .description = "Have global_* flat memory instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.flat_inst_offsets)] = .{
+    result[@intFromEnum(Feature.flat_inst_offsets)] = .{
         .llvm_name = "flat-inst-offsets",
         .description = "Flat instructions have immediate offset addressing mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.flat_scratch)] = .{
+    result[@intFromEnum(Feature.flat_scratch)] = .{
         .llvm_name = "enable-flat-scratch",
         .description = "Use scratch_* flat memory instructions to access scratch",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.flat_scratch_insts)] = .{
+    result[@intFromEnum(Feature.flat_scratch_insts)] = .{
         .llvm_name = "flat-scratch-insts",
         .description = "Have scratch_* flat memory instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.flat_segment_offset_bug)] = .{
+    result[@intFromEnum(Feature.flat_segment_offset_bug)] = .{
         .llvm_name = "flat-segment-offset-bug",
         .description = "GFX10 bug where inst_offset is ignored when flat instructions access global memory",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fma_mix_insts)] = .{
+    result[@intFromEnum(Feature.fma_mix_insts)] = .{
         .llvm_name = "fma-mix-insts",
         .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fmacf64_inst)] = .{
+    result[@intFromEnum(Feature.fmacf64_inst)] = .{
         .llvm_name = "fmacf64-inst",
         .description = "Has v_fmac_f64 instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fmaf)] = .{
+    result[@intFromEnum(Feature.fmaf)] = .{
         .llvm_name = "fmaf",
         .description = "Enable single precision FMA (not as fast as mul+add, but fused)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fp64)] = .{
+    result[@intFromEnum(Feature.fp64)] = .{
         .llvm_name = "fp64",
         .description = "Enable double precision operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fp8_insts)] = .{
+    result[@intFromEnum(Feature.fp8_insts)] = .{
         .llvm_name = "fp8-insts",
         .description = "Has fp8 and bf8 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.full_rate_64_ops)] = .{
+    result[@intFromEnum(Feature.full_rate_64_ops)] = .{
         .llvm_name = "full-rate-64-ops",
         .description = "Most fp64 instructions are full rate",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.g16)] = .{
+    result[@intFromEnum(Feature.g16)] = .{
         .llvm_name = "g16",
         .description = "Support G16 for 16-bit gradient image operands",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gcn3_encoding)] = .{
+    result[@intFromEnum(Feature.gcn3_encoding)] = .{
         .llvm_name = "gcn3-encoding",
         .description = "Encoding format for VI",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.get_wave_id_inst)] = .{
+    result[@intFromEnum(Feature.get_wave_id_inst)] = .{
         .llvm_name = "get-wave-id-inst",
         .description = "Has s_get_waveid_in_workgroup instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx10)] = .{
+    result[@intFromEnum(Feature.gfx10)] = .{
         .llvm_name = "gfx10",
         .description = "GFX10 GPU generation",
         .dependencies = featureSet(&[_]Feature{
@@ -449,27 +449,27 @@ pub const all_features = blk: {
             .vscnt,
         }),
     };
-    result[@enumToInt(Feature.gfx10_3_insts)] = .{
+    result[@intFromEnum(Feature.gfx10_3_insts)] = .{
         .llvm_name = "gfx10-3-insts",
         .description = "Additional instructions for GFX10.3",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx10_a_encoding)] = .{
+    result[@intFromEnum(Feature.gfx10_a_encoding)] = .{
         .llvm_name = "gfx10_a-encoding",
         .description = "Has BVH ray tracing instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx10_b_encoding)] = .{
+    result[@intFromEnum(Feature.gfx10_b_encoding)] = .{
         .llvm_name = "gfx10_b-encoding",
         .description = "Encoding format GFX10_B",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx10_insts)] = .{
+    result[@intFromEnum(Feature.gfx10_insts)] = .{
         .llvm_name = "gfx10-insts",
         .description = "Additional instructions for GFX10+",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx11)] = .{
+    result[@intFromEnum(Feature.gfx11)] = .{
         .llvm_name = "gfx11",
         .description = "GFX11 GPU generation",
         .dependencies = featureSet(&[_]Feature{
@@ -514,27 +514,27 @@ pub const all_features = blk: {
             .vscnt,
         }),
     };
-    result[@enumToInt(Feature.gfx11_full_vgprs)] = .{
+    result[@intFromEnum(Feature.gfx11_full_vgprs)] = .{
         .llvm_name = "gfx11-full-vgprs",
         .description = "GFX11 with 50% more physical VGPRs and 50% larger allocation granule than GFX10",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx11_insts)] = .{
+    result[@intFromEnum(Feature.gfx11_insts)] = .{
         .llvm_name = "gfx11-insts",
         .description = "Additional instructions for GFX11+",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx7_gfx8_gfx9_insts)] = .{
+    result[@intFromEnum(Feature.gfx7_gfx8_gfx9_insts)] = .{
         .llvm_name = "gfx7-gfx8-gfx9-insts",
         .description = "Instructions shared in GFX7, GFX8, GFX9",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx8_insts)] = .{
+    result[@intFromEnum(Feature.gfx8_insts)] = .{
         .llvm_name = "gfx8-insts",
         .description = "Additional instructions for GFX8+",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx9)] = .{
+    result[@intFromEnum(Feature.gfx9)] = .{
         .llvm_name = "gfx9",
         .description = "GFX9 GPU generation",
         .dependencies = featureSet(&[_]Feature{
@@ -577,277 +577,277 @@ pub const all_features = blk: {
             .xnack_support,
         }),
     };
-    result[@enumToInt(Feature.gfx90a_insts)] = .{
+    result[@intFromEnum(Feature.gfx90a_insts)] = .{
         .llvm_name = "gfx90a-insts",
         .description = "Additional instructions for GFX90A+",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx940_insts)] = .{
+    result[@intFromEnum(Feature.gfx940_insts)] = .{
         .llvm_name = "gfx940-insts",
         .description = "Additional instructions for GFX940+",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfx9_insts)] = .{
+    result[@intFromEnum(Feature.gfx9_insts)] = .{
         .llvm_name = "gfx9-insts",
         .description = "Additional instructions for GFX9+",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.half_rate_64_ops)] = .{
+    result[@intFromEnum(Feature.half_rate_64_ops)] = .{
         .llvm_name = "half-rate-64-ops",
         .description = "Most fp64 instructions are half rate instead of quarter",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.image_gather4_d16_bug)] = .{
+    result[@intFromEnum(Feature.image_gather4_d16_bug)] = .{
         .llvm_name = "image-gather4-d16-bug",
         .description = "Image Gather4 D16 hardware bug",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.image_insts)] = .{
+    result[@intFromEnum(Feature.image_insts)] = .{
         .llvm_name = "image-insts",
         .description = "Support image instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.image_store_d16_bug)] = .{
+    result[@intFromEnum(Feature.image_store_d16_bug)] = .{
         .llvm_name = "image-store-d16-bug",
         .description = "Image Store D16 hardware bug",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.inst_fwd_prefetch_bug)] = .{
+    result[@intFromEnum(Feature.inst_fwd_prefetch_bug)] = .{
         .llvm_name = "inst-fwd-prefetch-bug",
         .description = "S_INST_PREFETCH instruction causes shader to hang",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.int_clamp_insts)] = .{
+    result[@intFromEnum(Feature.int_clamp_insts)] = .{
         .llvm_name = "int-clamp-insts",
         .description = "Support clamp for integer destination",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.inv_2pi_inline_imm)] = .{
+    result[@intFromEnum(Feature.inv_2pi_inline_imm)] = .{
         .llvm_name = "inv-2pi-inline-imm",
         .description = "Has 1 / (2 * pi) as inline immediate",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lds_branch_vmem_war_hazard)] = .{
+    result[@intFromEnum(Feature.lds_branch_vmem_war_hazard)] = .{
         .llvm_name = "lds-branch-vmem-war-hazard",
         .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lds_misaligned_bug)] = .{
+    result[@intFromEnum(Feature.lds_misaligned_bug)] = .{
         .llvm_name = "lds-misaligned-bug",
         .description = "Some GFX10 bug with multi-dword LDS and flat access that is not naturally aligned in WGP mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ldsbankcount16)] = .{
+    result[@intFromEnum(Feature.ldsbankcount16)] = .{
         .llvm_name = "ldsbankcount16",
         .description = "The number of LDS banks per compute unit.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ldsbankcount32)] = .{
+    result[@intFromEnum(Feature.ldsbankcount32)] = .{
         .llvm_name = "ldsbankcount32",
         .description = "The number of LDS banks per compute unit.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.load_store_opt)] = .{
+    result[@intFromEnum(Feature.load_store_opt)] = .{
         .llvm_name = "load-store-opt",
         .description = "Enable SI load/store optimizer pass",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.localmemorysize32768)] = .{
+    result[@intFromEnum(Feature.localmemorysize32768)] = .{
         .llvm_name = "localmemorysize32768",
         .description = "The size of local memory in bytes",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.localmemorysize65536)] = .{
+    result[@intFromEnum(Feature.localmemorysize65536)] = .{
         .llvm_name = "localmemorysize65536",
         .description = "The size of local memory in bytes",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mad_intra_fwd_bug)] = .{
+    result[@intFromEnum(Feature.mad_intra_fwd_bug)] = .{
         .llvm_name = "mad-intra-fwd-bug",
         .description = "MAD_U64/I64 intra instruction forwarding bug",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mad_mac_f32_insts)] = .{
+    result[@intFromEnum(Feature.mad_mac_f32_insts)] = .{
         .llvm_name = "mad-mac-f32-insts",
         .description = "Has v_mad_f32/v_mac_f32/v_madak_f32/v_madmk_f32 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mad_mix_insts)] = .{
+    result[@intFromEnum(Feature.mad_mix_insts)] = .{
         .llvm_name = "mad-mix-insts",
         .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mai_insts)] = .{
+    result[@intFromEnum(Feature.mai_insts)] = .{
         .llvm_name = "mai-insts",
         .description = "Has mAI instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.max_private_element_size_16)] = .{
+    result[@intFromEnum(Feature.max_private_element_size_16)] = .{
         .llvm_name = "max-private-element-size-16",
         .description = "Maximum private access size may be 16",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.max_private_element_size_4)] = .{
+    result[@intFromEnum(Feature.max_private_element_size_4)] = .{
         .llvm_name = "max-private-element-size-4",
         .description = "Maximum private access size may be 4",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.max_private_element_size_8)] = .{
+    result[@intFromEnum(Feature.max_private_element_size_8)] = .{
         .llvm_name = "max-private-element-size-8",
         .description = "Maximum private access size may be 8",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mfma_inline_literal_bug)] = .{
+    result[@intFromEnum(Feature.mfma_inline_literal_bug)] = .{
         .llvm_name = "mfma-inline-literal-bug",
         .description = "MFMA cannot use inline literal as SrcC",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mimg_r128)] = .{
+    result[@intFromEnum(Feature.mimg_r128)] = .{
         .llvm_name = "mimg-r128",
         .description = "Support 128-bit texture resources",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.movrel)] = .{
+    result[@intFromEnum(Feature.movrel)] = .{
         .llvm_name = "movrel",
         .description = "Has v_movrel*_b32 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.negative_scratch_offset_bug)] = .{
+    result[@intFromEnum(Feature.negative_scratch_offset_bug)] = .{
         .llvm_name = "negative-scratch-offset-bug",
         .description = "Negative immediate offsets in scratch instructions with an SGPR offset page fault on GFX9",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.negative_unaligned_scratch_offset_bug)] = .{
+    result[@intFromEnum(Feature.negative_unaligned_scratch_offset_bug)] = .{
         .llvm_name = "negative-unaligned-scratch-offset-bug",
         .description = "Scratch instructions with a VGPR offset and a negative immediate offset that is not a multiple of 4 read wrong memory on GFX10",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_data_dep_hazard)] = .{
+    result[@intFromEnum(Feature.no_data_dep_hazard)] = .{
         .llvm_name = "no-data-dep-hazard",
         .description = "Does not need SW waitstates",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_sdst_cmpx)] = .{
+    result[@intFromEnum(Feature.no_sdst_cmpx)] = .{
         .llvm_name = "no-sdst-cmpx",
         .description = "V_CMPX does not write VCC/SGPR in addition to EXEC",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nsa_clause_bug)] = .{
+    result[@intFromEnum(Feature.nsa_clause_bug)] = .{
         .llvm_name = "nsa-clause-bug",
         .description = "MIMG-NSA in a hard clause has unpredictable results on GFX10.1",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nsa_encoding)] = .{
+    result[@intFromEnum(Feature.nsa_encoding)] = .{
         .llvm_name = "nsa-encoding",
         .description = "Support NSA encoding for image instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nsa_max_size_13)] = .{
+    result[@intFromEnum(Feature.nsa_max_size_13)] = .{
         .llvm_name = "nsa-max-size-13",
         .description = "The maximum non-sequential address size in VGPRs.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nsa_max_size_5)] = .{
+    result[@intFromEnum(Feature.nsa_max_size_5)] = .{
         .llvm_name = "nsa-max-size-5",
         .description = "The maximum non-sequential address size in VGPRs.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nsa_to_vmem_bug)] = .{
+    result[@intFromEnum(Feature.nsa_to_vmem_bug)] = .{
         .llvm_name = "nsa-to-vmem-bug",
         .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.offset_3f_bug)] = .{
+    result[@intFromEnum(Feature.offset_3f_bug)] = .{
         .llvm_name = "offset-3f-bug",
         .description = "Branch offset of 3f hardware bug",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.packed_fp32_ops)] = .{
+    result[@intFromEnum(Feature.packed_fp32_ops)] = .{
         .llvm_name = "packed-fp32-ops",
         .description = "Support packed fp32 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.packed_tid)] = .{
+    result[@intFromEnum(Feature.packed_tid)] = .{
         .llvm_name = "packed-tid",
         .description = "Workitem IDs are packed into v0 at kernel launch",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.pk_fmac_f16_inst)] = .{
+    result[@intFromEnum(Feature.pk_fmac_f16_inst)] = .{
         .llvm_name = "pk-fmac-f16-inst",
         .description = "Has v_pk_fmac_f16 instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.promote_alloca)] = .{
+    result[@intFromEnum(Feature.promote_alloca)] = .{
         .llvm_name = "promote-alloca",
         .description = "Enable promote alloca pass",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prt_strict_null)] = .{
+    result[@intFromEnum(Feature.prt_strict_null)] = .{
         .llvm_name = "enable-prt-strict-null",
         .description = "Enable zeroing of result registers for sparse texture fetches",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.r128_a16)] = .{
+    result[@intFromEnum(Feature.r128_a16)] = .{
         .llvm_name = "r128-a16",
         .description = "Support gfx9-style A16 for 16-bit coordinates/gradients/lod/clamp/mip image operands, where a16 is aliased with r128",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.s_memrealtime)] = .{
+    result[@intFromEnum(Feature.s_memrealtime)] = .{
         .llvm_name = "s-memrealtime",
         .description = "Has s_memrealtime instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.s_memtime_inst)] = .{
+    result[@intFromEnum(Feature.s_memtime_inst)] = .{
         .llvm_name = "s-memtime-inst",
         .description = "Has s_memtime instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.scalar_atomics)] = .{
+    result[@intFromEnum(Feature.scalar_atomics)] = .{
         .llvm_name = "scalar-atomics",
         .description = "Has atomic scalar memory instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.scalar_flat_scratch_insts)] = .{
+    result[@intFromEnum(Feature.scalar_flat_scratch_insts)] = .{
         .llvm_name = "scalar-flat-scratch-insts",
         .description = "Have s_scratch_* flat memory instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.scalar_stores)] = .{
+    result[@intFromEnum(Feature.scalar_stores)] = .{
         .llvm_name = "scalar-stores",
         .description = "Has store scalar memory instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sdwa)] = .{
+    result[@intFromEnum(Feature.sdwa)] = .{
         .llvm_name = "sdwa",
         .description = "Support SDWA (Sub-DWORD Addressing) extension",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sdwa_mav)] = .{
+    result[@intFromEnum(Feature.sdwa_mav)] = .{
         .llvm_name = "sdwa-mav",
         .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sdwa_omod)] = .{
+    result[@intFromEnum(Feature.sdwa_omod)] = .{
         .llvm_name = "sdwa-omod",
         .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sdwa_out_mods_vopc)] = .{
+    result[@intFromEnum(Feature.sdwa_out_mods_vopc)] = .{
         .llvm_name = "sdwa-out-mods-vopc",
         .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sdwa_scalar)] = .{
+    result[@intFromEnum(Feature.sdwa_scalar)] = .{
         .llvm_name = "sdwa-scalar",
         .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sdwa_sdst)] = .{
+    result[@intFromEnum(Feature.sdwa_sdst)] = .{
         .llvm_name = "sdwa-sdst",
         .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sea_islands)] = .{
+    result[@intFromEnum(Feature.sea_islands)] = .{
         .llvm_name = "sea-islands",
         .description = "SEA_ISLANDS GPU generation",
         .dependencies = featureSet(&[_]Feature{
@@ -868,27 +868,27 @@ pub const all_features = blk: {
             .wavefrontsize64,
         }),
     };
-    result[@enumToInt(Feature.sgpr_init_bug)] = .{
+    result[@intFromEnum(Feature.sgpr_init_bug)] = .{
         .llvm_name = "sgpr-init-bug",
         .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.shader_cycles_register)] = .{
+    result[@intFromEnum(Feature.shader_cycles_register)] = .{
         .llvm_name = "shader-cycles-register",
         .description = "Has SHADER_CYCLES hardware register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.si_scheduler)] = .{
+    result[@intFromEnum(Feature.si_scheduler)] = .{
         .llvm_name = "si-scheduler",
         .description = "Enable SI Machine Scheduler",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.smem_to_vector_write_hazard)] = .{
+    result[@intFromEnum(Feature.smem_to_vector_write_hazard)] = .{
         .llvm_name = "smem-to-vector-write-hazard",
         .description = "s_load_dword followed by v_cmp page faults",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.southern_islands)] = .{
+    result[@intFromEnum(Feature.southern_islands)] = .{
         .llvm_name = "southern-islands",
         .description = "SOUTHERN_ISLANDS GPU generation",
         .dependencies = featureSet(&[_]Feature{
@@ -906,97 +906,97 @@ pub const all_features = blk: {
             .wavefrontsize64,
         }),
     };
-    result[@enumToInt(Feature.sramecc)] = .{
+    result[@intFromEnum(Feature.sramecc)] = .{
         .llvm_name = "sramecc",
         .description = "Enable SRAMECC",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sramecc_support)] = .{
+    result[@intFromEnum(Feature.sramecc_support)] = .{
         .llvm_name = "sramecc-support",
         .description = "Hardware supports SRAMECC",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tgsplit)] = .{
+    result[@intFromEnum(Feature.tgsplit)] = .{
         .llvm_name = "tgsplit",
         .description = "Enable threadgroup split execution",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.trap_handler)] = .{
+    result[@intFromEnum(Feature.trap_handler)] = .{
         .llvm_name = "trap-handler",
         .description = "Trap handler support",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.trig_reduced_range)] = .{
+    result[@intFromEnum(Feature.trig_reduced_range)] = .{
         .llvm_name = "trig-reduced-range",
         .description = "Requires use of fract on arguments to trig instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.true16)] = .{
+    result[@intFromEnum(Feature.true16)] = .{
         .llvm_name = "true16",
         .description = "True 16-bit operand instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.unaligned_access_mode)] = .{
+    result[@intFromEnum(Feature.unaligned_access_mode)] = .{
         .llvm_name = "unaligned-access-mode",
         .description = "Enable unaligned global, local and region loads and stores if the hardware supports it",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.unaligned_buffer_access)] = .{
+    result[@intFromEnum(Feature.unaligned_buffer_access)] = .{
         .llvm_name = "unaligned-buffer-access",
         .description = "Hardware supports unaligned global loads and stores",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.unaligned_ds_access)] = .{
+    result[@intFromEnum(Feature.unaligned_ds_access)] = .{
         .llvm_name = "unaligned-ds-access",
         .description = "Hardware supports unaligned local and region loads and stores",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.unaligned_scratch_access)] = .{
+    result[@intFromEnum(Feature.unaligned_scratch_access)] = .{
         .llvm_name = "unaligned-scratch-access",
         .description = "Support unaligned scratch loads and stores",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.unpacked_d16_vmem)] = .{
+    result[@intFromEnum(Feature.unpacked_d16_vmem)] = .{
         .llvm_name = "unpacked-d16-vmem",
         .description = "Has unpacked d16 vmem instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.unsafe_ds_offset_folding)] = .{
+    result[@intFromEnum(Feature.unsafe_ds_offset_folding)] = .{
         .llvm_name = "unsafe-ds-offset-folding",
         .description = "Force using DS instruction immediate offsets on SI",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.user_sgpr_init16_bug)] = .{
+    result[@intFromEnum(Feature.user_sgpr_init16_bug)] = .{
         .llvm_name = "user-sgpr-init16-bug",
         .description = "Bug requiring at least 16 user+system SGPRs to be enabled",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.valu_trans_use_hazard)] = .{
+    result[@intFromEnum(Feature.valu_trans_use_hazard)] = .{
         .llvm_name = "valu-trans-use-hazard",
         .description = "Hazard when TRANS instructions are closely followed by a use of the result",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vcmpx_exec_war_hazard)] = .{
+    result[@intFromEnum(Feature.vcmpx_exec_war_hazard)] = .{
         .llvm_name = "vcmpx-exec-war-hazard",
         .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vcmpx_permlane_hazard)] = .{
+    result[@intFromEnum(Feature.vcmpx_permlane_hazard)] = .{
         .llvm_name = "vcmpx-permlane-hazard",
         .description = "TODO: describe me",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vgpr_index_mode)] = .{
+    result[@intFromEnum(Feature.vgpr_index_mode)] = .{
         .llvm_name = "vgpr-index-mode",
         .description = "Has VGPR mode register indexing",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vmem_to_scalar_write_hazard)] = .{
+    result[@intFromEnum(Feature.vmem_to_scalar_write_hazard)] = .{
         .llvm_name = "vmem-to-scalar-write-hazard",
         .description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.volcanic_islands)] = .{
+    result[@intFromEnum(Feature.volcanic_islands)] = .{
         .llvm_name = "volcanic-islands",
         .description = "VOLCANIC_ISLANDS GPU generation",
         .dependencies = featureSet(&[_]Feature{
@@ -1030,47 +1030,47 @@ pub const all_features = blk: {
             .wavefrontsize64,
         }),
     };
-    result[@enumToInt(Feature.vop3_literal)] = .{
+    result[@intFromEnum(Feature.vop3_literal)] = .{
         .llvm_name = "vop3-literal",
         .description = "Can use one literal in VOP3",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vop3p)] = .{
+    result[@intFromEnum(Feature.vop3p)] = .{
         .llvm_name = "vop3p",
         .description = "Has VOP3P packed instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vopd)] = .{
+    result[@intFromEnum(Feature.vopd)] = .{
         .llvm_name = "vopd",
         .description = "Has VOPD dual issue wave32 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vscnt)] = .{
+    result[@intFromEnum(Feature.vscnt)] = .{
         .llvm_name = "vscnt",
         .description = "Has separate store vscnt counter",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.wavefrontsize16)] = .{
+    result[@intFromEnum(Feature.wavefrontsize16)] = .{
         .llvm_name = "wavefrontsize16",
         .description = "The number of threads per wavefront",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.wavefrontsize32)] = .{
+    result[@intFromEnum(Feature.wavefrontsize32)] = .{
         .llvm_name = "wavefrontsize32",
         .description = "The number of threads per wavefront",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.wavefrontsize64)] = .{
+    result[@intFromEnum(Feature.wavefrontsize64)] = .{
         .llvm_name = "wavefrontsize64",
         .description = "The number of threads per wavefront",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.xnack)] = .{
+    result[@intFromEnum(Feature.xnack)] = .{
         .llvm_name = "xnack",
         .description = "Enable XNACK support",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.xnack_support)] = .{
+    result[@intFromEnum(Feature.xnack_support)] = .{
         .llvm_name = "xnack-support",
         .description = "Hardware supports XNACK",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/arc.zig
@@ -17,7 +17,7 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.norm)] = .{
+    result[@intFromEnum(Feature.norm)] = .{
         .llvm_name = "norm",
         .description = "Enable support for norm instruction.",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/arm.zig
@@ -214,156 +214,156 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.@"32bit")] = .{
+    result[@intFromEnum(Feature.@"32bit")] = .{
         .llvm_name = "32bit",
         .description = "Prefer 32-bit Thumb instrs",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.@"8msecext")] = .{
+    result[@intFromEnum(Feature.@"8msecext")] = .{
         .llvm_name = "8msecext",
         .description = "Enable support for ARMv8-M Security Extensions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.a76)] = .{
+    result[@intFromEnum(Feature.a76)] = .{
         .llvm_name = "a76",
         .description = "Cortex-A76 ARM processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.aapcs_frame_chain)] = .{
+    result[@intFromEnum(Feature.aapcs_frame_chain)] = .{
         .llvm_name = "aapcs-frame-chain",
         .description = "Create an AAPCS compliant frame chain",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.aapcs_frame_chain_leaf)] = .{
+    result[@intFromEnum(Feature.aapcs_frame_chain_leaf)] = .{
         .llvm_name = "aapcs-frame-chain-leaf",
         .description = "Create an AAPCS compliant frame chain for leaf functions",
         .dependencies = featureSet(&[_]Feature{
             .aapcs_frame_chain,
         }),
     };
-    result[@enumToInt(Feature.aclass)] = .{
+    result[@intFromEnum(Feature.aclass)] = .{
         .llvm_name = "aclass",
         .description = "Is application profile ('A' series)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.acquire_release)] = .{
+    result[@intFromEnum(Feature.acquire_release)] = .{
         .llvm_name = "acquire-release",
         .description = "Has v8 acquire/release (lda/ldaex  etc) instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.aes)] = .{
+    result[@intFromEnum(Feature.aes)] = .{
         .llvm_name = "aes",
         .description = "Enable AES support",
         .dependencies = featureSet(&[_]Feature{
             .neon,
         }),
     };
-    result[@enumToInt(Feature.atomics_32)] = .{
+    result[@intFromEnum(Feature.atomics_32)] = .{
         .llvm_name = "atomics-32",
         .description = "Assume that lock-free 32-bit atomics are available",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.avoid_movs_shop)] = .{
+    result[@intFromEnum(Feature.avoid_movs_shop)] = .{
         .llvm_name = "avoid-movs-shop",
         .description = "Avoid movs instructions with shifter operand",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.avoid_partial_cpsr)] = .{
+    result[@intFromEnum(Feature.avoid_partial_cpsr)] = .{
         .llvm_name = "avoid-partial-cpsr",
         .description = "Avoid CPSR partial update for OOO execution",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.bf16)] = .{
+    result[@intFromEnum(Feature.bf16)] = .{
         .llvm_name = "bf16",
         .description = "Enable support for BFloat16 instructions",
         .dependencies = featureSet(&[_]Feature{
             .neon,
         }),
     };
-    result[@enumToInt(Feature.big_endian_instructions)] = .{
+    result[@intFromEnum(Feature.big_endian_instructions)] = .{
         .llvm_name = "big-endian-instructions",
         .description = "Expect instructions to be stored big-endian.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cde)] = .{
+    result[@intFromEnum(Feature.cde)] = .{
         .llvm_name = "cde",
         .description = "Support CDE instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v8m_main,
         }),
     };
-    result[@enumToInt(Feature.cdecp0)] = .{
+    result[@intFromEnum(Feature.cdecp0)] = .{
         .llvm_name = "cdecp0",
         .description = "Coprocessor 0 ISA is CDEv1",
         .dependencies = featureSet(&[_]Feature{
             .cde,
         }),
     };
-    result[@enumToInt(Feature.cdecp1)] = .{
+    result[@intFromEnum(Feature.cdecp1)] = .{
         .llvm_name = "cdecp1",
         .description = "Coprocessor 1 ISA is CDEv1",
         .dependencies = featureSet(&[_]Feature{
             .cde,
         }),
     };
-    result[@enumToInt(Feature.cdecp2)] = .{
+    result[@intFromEnum(Feature.cdecp2)] = .{
         .llvm_name = "cdecp2",
         .description = "Coprocessor 2 ISA is CDEv1",
         .dependencies = featureSet(&[_]Feature{
             .cde,
         }),
     };
-    result[@enumToInt(Feature.cdecp3)] = .{
+    result[@intFromEnum(Feature.cdecp3)] = .{
         .llvm_name = "cdecp3",
         .description = "Coprocessor 3 ISA is CDEv1",
         .dependencies = featureSet(&[_]Feature{
             .cde,
         }),
     };
-    result[@enumToInt(Feature.cdecp4)] = .{
+    result[@intFromEnum(Feature.cdecp4)] = .{
         .llvm_name = "cdecp4",
         .description = "Coprocessor 4 ISA is CDEv1",
         .dependencies = featureSet(&[_]Feature{
             .cde,
         }),
     };
-    result[@enumToInt(Feature.cdecp5)] = .{
+    result[@intFromEnum(Feature.cdecp5)] = .{
         .llvm_name = "cdecp5",
         .description = "Coprocessor 5 ISA is CDEv1",
         .dependencies = featureSet(&[_]Feature{
             .cde,
         }),
     };
-    result[@enumToInt(Feature.cdecp6)] = .{
+    result[@intFromEnum(Feature.cdecp6)] = .{
         .llvm_name = "cdecp6",
         .description = "Coprocessor 6 ISA is CDEv1",
         .dependencies = featureSet(&[_]Feature{
             .cde,
         }),
     };
-    result[@enumToInt(Feature.cdecp7)] = .{
+    result[@intFromEnum(Feature.cdecp7)] = .{
         .llvm_name = "cdecp7",
         .description = "Coprocessor 7 ISA is CDEv1",
         .dependencies = featureSet(&[_]Feature{
             .cde,
         }),
     };
-    result[@enumToInt(Feature.cheap_predicable_cpsr)] = .{
+    result[@intFromEnum(Feature.cheap_predicable_cpsr)] = .{
         .llvm_name = "cheap-predicable-cpsr",
         .description = "Disable +1 predication cost for instructions updating CPSR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.clrbhb)] = .{
+    result[@intFromEnum(Feature.clrbhb)] = .{
         .llvm_name = "clrbhb",
         .description = "Enable Clear BHB instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.crc)] = .{
+    result[@intFromEnum(Feature.crc)] = .{
         .llvm_name = "crc",
         .description = "Enable support for CRC instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.crypto)] = .{
+    result[@intFromEnum(Feature.crypto)] = .{
         .llvm_name = "crypto",
         .description = "Enable support for Cryptography extensions",
         .dependencies = featureSet(&[_]Feature{
@@ -371,54 +371,54 @@ pub const all_features = blk: {
             .sha2,
         }),
     };
-    result[@enumToInt(Feature.d32)] = .{
+    result[@intFromEnum(Feature.d32)] = .{
         .llvm_name = "d32",
         .description = "Extend FP to 32 double registers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.db)] = .{
+    result[@intFromEnum(Feature.db)] = .{
         .llvm_name = "db",
         .description = "Has data barrier (dmb/dsb) instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dfb)] = .{
+    result[@intFromEnum(Feature.dfb)] = .{
         .llvm_name = "dfb",
         .description = "Has full data barrier (dfb) instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.disable_postra_scheduler)] = .{
+    result[@intFromEnum(Feature.disable_postra_scheduler)] = .{
         .llvm_name = "disable-postra-scheduler",
         .description = "Don't schedule again after register allocation",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dont_widen_vmovs)] = .{
+    result[@intFromEnum(Feature.dont_widen_vmovs)] = .{
         .llvm_name = "dont-widen-vmovs",
         .description = "Don't widen VMOVS to VMOVD",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dotprod)] = .{
+    result[@intFromEnum(Feature.dotprod)] = .{
         .llvm_name = "dotprod",
         .description = "Enable support for dot product instructions",
         .dependencies = featureSet(&[_]Feature{
             .neon,
         }),
     };
-    result[@enumToInt(Feature.dsp)] = .{
+    result[@intFromEnum(Feature.dsp)] = .{
         .llvm_name = "dsp",
         .description = "Supports DSP instructions in ARM and/or Thumb2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.execute_only)] = .{
+    result[@intFromEnum(Feature.execute_only)] = .{
         .llvm_name = "execute-only",
         .description = "Enable the generation of execute only code.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.expand_fp_mlx)] = .{
+    result[@intFromEnum(Feature.expand_fp_mlx)] = .{
         .llvm_name = "expand-fp-mlx",
         .description = "Expand VFP/NEON MLA/MLS instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.exynos)] = .{
+    result[@intFromEnum(Feature.exynos)] = .{
         .llvm_name = "exynos",
         .description = "Samsung Exynos processors",
         .dependencies = featureSet(&[_]Feature{
@@ -441,36 +441,36 @@ pub const all_features = blk: {
             .zcz,
         }),
     };
-    result[@enumToInt(Feature.fix_cmse_cve_2021_35465)] = .{
+    result[@intFromEnum(Feature.fix_cmse_cve_2021_35465)] = .{
         .llvm_name = "fix-cmse-cve-2021-35465",
         .description = "Mitigate against the cve-2021-35465 security vulnurability",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fix_cortex_a57_aes_1742098)] = .{
+    result[@intFromEnum(Feature.fix_cortex_a57_aes_1742098)] = .{
         .llvm_name = "fix-cortex-a57-aes-1742098",
         .description = "Work around Cortex-A57 Erratum 1742098 / Cortex-A72 Erratum 1655431 (AES)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fp16)] = .{
+    result[@intFromEnum(Feature.fp16)] = .{
         .llvm_name = "fp16",
         .description = "Enable half-precision floating point",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fp16fml)] = .{
+    result[@intFromEnum(Feature.fp16fml)] = .{
         .llvm_name = "fp16fml",
         .description = "Enable full half-precision floating point fml instructions",
         .dependencies = featureSet(&[_]Feature{
             .fullfp16,
         }),
     };
-    result[@enumToInt(Feature.fp64)] = .{
+    result[@intFromEnum(Feature.fp64)] = .{
         .llvm_name = "fp64",
         .description = "Floating point unit supports double precision",
         .dependencies = featureSet(&[_]Feature{
             .fpregs64,
         }),
     };
-    result[@enumToInt(Feature.fp_armv8)] = .{
+    result[@intFromEnum(Feature.fp_armv8)] = .{
         .llvm_name = "fp-armv8",
         .description = "Enable ARMv8 FP",
         .dependencies = featureSet(&[_]Feature{
@@ -479,7 +479,7 @@ pub const all_features = blk: {
             .vfp4,
         }),
     };
-    result[@enumToInt(Feature.fp_armv8d16)] = .{
+    result[@intFromEnum(Feature.fp_armv8d16)] = .{
         .llvm_name = "fp-armv8d16",
         .description = "Enable ARMv8 FP with only 16 d-registers",
         .dependencies = featureSet(&[_]Feature{
@@ -487,14 +487,14 @@ pub const all_features = blk: {
             .vfp4d16,
         }),
     };
-    result[@enumToInt(Feature.fp_armv8d16sp)] = .{
+    result[@intFromEnum(Feature.fp_armv8d16sp)] = .{
         .llvm_name = "fp-armv8d16sp",
         .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",
         .dependencies = featureSet(&[_]Feature{
             .vfp4d16sp,
         }),
     };
-    result[@enumToInt(Feature.fp_armv8sp)] = .{
+    result[@intFromEnum(Feature.fp_armv8sp)] = .{
         .llvm_name = "fp-armv8sp",
         .description = "Enable ARMv8 FP with no double precision",
         .dependencies = featureSet(&[_]Feature{
@@ -502,31 +502,31 @@ pub const all_features = blk: {
             .vfp4sp,
         }),
     };
-    result[@enumToInt(Feature.fpao)] = .{
+    result[@intFromEnum(Feature.fpao)] = .{
         .llvm_name = "fpao",
         .description = "Enable fast computation of positive address offsets",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fpregs)] = .{
+    result[@intFromEnum(Feature.fpregs)] = .{
         .llvm_name = "fpregs",
         .description = "Enable FP registers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fpregs16)] = .{
+    result[@intFromEnum(Feature.fpregs16)] = .{
         .llvm_name = "fpregs16",
         .description = "Enable 16-bit FP registers",
         .dependencies = featureSet(&[_]Feature{
             .fpregs,
         }),
     };
-    result[@enumToInt(Feature.fpregs64)] = .{
+    result[@intFromEnum(Feature.fpregs64)] = .{
         .llvm_name = "fpregs64",
         .description = "Enable 64-bit FP registers",
         .dependencies = featureSet(&[_]Feature{
             .fpregs,
         }),
     };
-    result[@enumToInt(Feature.fullfp16)] = .{
+    result[@intFromEnum(Feature.fullfp16)] = .{
         .llvm_name = "fullfp16",
         .description = "Enable full half-precision floating point",
         .dependencies = featureSet(&[_]Feature{
@@ -534,72 +534,72 @@ pub const all_features = blk: {
             .fpregs16,
         }),
     };
-    result[@enumToInt(Feature.fuse_aes)] = .{
+    result[@intFromEnum(Feature.fuse_aes)] = .{
         .llvm_name = "fuse-aes",
         .description = "CPU fuses AES crypto operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fuse_literals)] = .{
+    result[@intFromEnum(Feature.fuse_literals)] = .{
         .llvm_name = "fuse-literals",
         .description = "CPU fuses literal generation operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.harden_sls_blr)] = .{
+    result[@intFromEnum(Feature.harden_sls_blr)] = .{
         .llvm_name = "harden-sls-blr",
         .description = "Harden against straight line speculation across indirect calls",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.harden_sls_nocomdat)] = .{
+    result[@intFromEnum(Feature.harden_sls_nocomdat)] = .{
         .llvm_name = "harden-sls-nocomdat",
         .description = "Generate thunk code for SLS mitigation in the normal text section",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.harden_sls_retbr)] = .{
+    result[@intFromEnum(Feature.harden_sls_retbr)] = .{
         .llvm_name = "harden-sls-retbr",
         .description = "Harden against straight line speculation across RETurn and BranchRegister instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.has_v4t)] = .{
+    result[@intFromEnum(Feature.has_v4t)] = .{
         .llvm_name = "v4t",
         .description = "Support ARM v4T instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.has_v5t)] = .{
+    result[@intFromEnum(Feature.has_v5t)] = .{
         .llvm_name = "v5t",
         .description = "Support ARM v5T instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v4t,
         }),
     };
-    result[@enumToInt(Feature.has_v5te)] = .{
+    result[@intFromEnum(Feature.has_v5te)] = .{
         .llvm_name = "v5te",
         .description = "Support ARM v5TE, v5TEj, and v5TExp instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v5t,
         }),
     };
-    result[@enumToInt(Feature.has_v6)] = .{
+    result[@intFromEnum(Feature.has_v6)] = .{
         .llvm_name = "v6",
         .description = "Support ARM v6 instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v5te,
         }),
     };
-    result[@enumToInt(Feature.has_v6k)] = .{
+    result[@intFromEnum(Feature.has_v6k)] = .{
         .llvm_name = "v6k",
         .description = "Support ARM v6k instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v6,
         }),
     };
-    result[@enumToInt(Feature.has_v6m)] = .{
+    result[@intFromEnum(Feature.has_v6m)] = .{
         .llvm_name = "v6m",
         .description = "Support ARM v6M instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v6,
         }),
     };
-    result[@enumToInt(Feature.has_v6t2)] = .{
+    result[@intFromEnum(Feature.has_v6t2)] = .{
         .llvm_name = "v6t2",
         .description = "Support ARM v6t2 instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -608,7 +608,7 @@ pub const all_features = blk: {
             .thumb2,
         }),
     };
-    result[@enumToInt(Feature.has_v7)] = .{
+    result[@intFromEnum(Feature.has_v7)] = .{
         .llvm_name = "v7",
         .description = "Support ARM v7 instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -616,12 +616,12 @@ pub const all_features = blk: {
             .has_v7clrex,
         }),
     };
-    result[@enumToInt(Feature.has_v7clrex)] = .{
+    result[@intFromEnum(Feature.has_v7clrex)] = .{
         .llvm_name = "v7clrex",
         .description = "Has v7 clrex instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.has_v8)] = .{
+    result[@intFromEnum(Feature.has_v8)] = .{
         .llvm_name = "v8",
         .description = "Support ARM v8 instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -630,35 +630,35 @@ pub const all_features = blk: {
             .perfmon,
         }),
     };
-    result[@enumToInt(Feature.has_v8_1a)] = .{
+    result[@intFromEnum(Feature.has_v8_1a)] = .{
         .llvm_name = "v8.1a",
         .description = "Support ARM v8.1a instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v8,
         }),
     };
-    result[@enumToInt(Feature.has_v8_1m_main)] = .{
+    result[@intFromEnum(Feature.has_v8_1m_main)] = .{
         .llvm_name = "v8.1m.main",
         .description = "Support ARM v8-1M Mainline instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v8m_main,
         }),
     };
-    result[@enumToInt(Feature.has_v8_2a)] = .{
+    result[@intFromEnum(Feature.has_v8_2a)] = .{
         .llvm_name = "v8.2a",
         .description = "Support ARM v8.2a instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v8_1a,
         }),
     };
-    result[@enumToInt(Feature.has_v8_3a)] = .{
+    result[@intFromEnum(Feature.has_v8_3a)] = .{
         .llvm_name = "v8.3a",
         .description = "Support ARM v8.3a instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v8_2a,
         }),
     };
-    result[@enumToInt(Feature.has_v8_4a)] = .{
+    result[@intFromEnum(Feature.has_v8_4a)] = .{
         .llvm_name = "v8.4a",
         .description = "Support ARM v8.4a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -666,7 +666,7 @@ pub const all_features = blk: {
             .has_v8_3a,
         }),
     };
-    result[@enumToInt(Feature.has_v8_5a)] = .{
+    result[@intFromEnum(Feature.has_v8_5a)] = .{
         .llvm_name = "v8.5a",
         .description = "Support ARM v8.5a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -674,7 +674,7 @@ pub const all_features = blk: {
             .sb,
         }),
     };
-    result[@enumToInt(Feature.has_v8_6a)] = .{
+    result[@intFromEnum(Feature.has_v8_6a)] = .{
         .llvm_name = "v8.6a",
         .description = "Support ARM v8.6a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -683,21 +683,21 @@ pub const all_features = blk: {
             .i8mm,
         }),
     };
-    result[@enumToInt(Feature.has_v8_7a)] = .{
+    result[@intFromEnum(Feature.has_v8_7a)] = .{
         .llvm_name = "v8.7a",
         .description = "Support ARM v8.7a instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v8_6a,
         }),
     };
-    result[@enumToInt(Feature.has_v8_8a)] = .{
+    result[@intFromEnum(Feature.has_v8_8a)] = .{
         .llvm_name = "v8.8a",
         .description = "Support ARM v8.8a instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v8_7a,
         }),
     };
-    result[@enumToInt(Feature.has_v8_9a)] = .{
+    result[@intFromEnum(Feature.has_v8_9a)] = .{
         .llvm_name = "v8.9a",
         .description = "Support ARM v8.9a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -705,21 +705,21 @@ pub const all_features = blk: {
             .has_v8_8a,
         }),
     };
-    result[@enumToInt(Feature.has_v8m)] = .{
+    result[@intFromEnum(Feature.has_v8m)] = .{
         .llvm_name = "v8m",
         .description = "Support ARM v8M Baseline instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v6m,
         }),
     };
-    result[@enumToInt(Feature.has_v8m_main)] = .{
+    result[@intFromEnum(Feature.has_v8m_main)] = .{
         .llvm_name = "v8m.main",
         .description = "Support ARM v8M Mainline instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v7,
         }),
     };
-    result[@enumToInt(Feature.has_v9_1a)] = .{
+    result[@intFromEnum(Feature.has_v9_1a)] = .{
         .llvm_name = "v9.1a",
         .description = "Support ARM v9.1a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -727,7 +727,7 @@ pub const all_features = blk: {
             .has_v9a,
         }),
     };
-    result[@enumToInt(Feature.has_v9_2a)] = .{
+    result[@intFromEnum(Feature.has_v9_2a)] = .{
         .llvm_name = "v9.2a",
         .description = "Support ARM v9.2a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -735,7 +735,7 @@ pub const all_features = blk: {
             .has_v9_1a,
         }),
     };
-    result[@enumToInt(Feature.has_v9_3a)] = .{
+    result[@intFromEnum(Feature.has_v9_3a)] = .{
         .llvm_name = "v9.3a",
         .description = "Support ARM v9.3a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -743,7 +743,7 @@ pub const all_features = blk: {
             .has_v9_2a,
         }),
     };
-    result[@enumToInt(Feature.has_v9_4a)] = .{
+    result[@intFromEnum(Feature.has_v9_4a)] = .{
         .llvm_name = "v9.4a",
         .description = "Support ARM v9.4a instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -751,80 +751,80 @@ pub const all_features = blk: {
             .has_v9_3a,
         }),
     };
-    result[@enumToInt(Feature.has_v9a)] = .{
+    result[@intFromEnum(Feature.has_v9a)] = .{
         .llvm_name = "v9a",
         .description = "Support ARM v9a instructions",
         .dependencies = featureSet(&[_]Feature{
             .has_v8_5a,
         }),
     };
-    result[@enumToInt(Feature.hwdiv)] = .{
+    result[@intFromEnum(Feature.hwdiv)] = .{
         .llvm_name = "hwdiv",
         .description = "Enable divide instructions in Thumb",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hwdiv_arm)] = .{
+    result[@intFromEnum(Feature.hwdiv_arm)] = .{
         .llvm_name = "hwdiv-arm",
         .description = "Enable divide instructions in ARM mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.i8mm)] = .{
+    result[@intFromEnum(Feature.i8mm)] = .{
         .llvm_name = "i8mm",
         .description = "Enable Matrix Multiply Int8 Extension",
         .dependencies = featureSet(&[_]Feature{
             .neon,
         }),
     };
-    result[@enumToInt(Feature.iwmmxt)] = .{
+    result[@intFromEnum(Feature.iwmmxt)] = .{
         .llvm_name = "iwmmxt",
         .description = "ARMv5te architecture",
         .dependencies = featureSet(&[_]Feature{
             .v5te,
         }),
     };
-    result[@enumToInt(Feature.iwmmxt2)] = .{
+    result[@intFromEnum(Feature.iwmmxt2)] = .{
         .llvm_name = "iwmmxt2",
         .description = "ARMv5te architecture",
         .dependencies = featureSet(&[_]Feature{
             .v5te,
         }),
     };
-    result[@enumToInt(Feature.lob)] = .{
+    result[@intFromEnum(Feature.lob)] = .{
         .llvm_name = "lob",
         .description = "Enable Low Overhead Branch extensions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.long_calls)] = .{
+    result[@intFromEnum(Feature.long_calls)] = .{
         .llvm_name = "long-calls",
         .description = "Generate calls via indirect call instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.loop_align)] = .{
+    result[@intFromEnum(Feature.loop_align)] = .{
         .llvm_name = "loop-align",
         .description = "Prefer 32-bit alignment for loops",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.m3)] = .{
+    result[@intFromEnum(Feature.m3)] = .{
         .llvm_name = "m3",
         .description = "Cortex-M3 ARM processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mclass)] = .{
+    result[@intFromEnum(Feature.mclass)] = .{
         .llvm_name = "mclass",
         .description = "Is microcontroller profile ('M' series)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mp)] = .{
+    result[@intFromEnum(Feature.mp)] = .{
         .llvm_name = "mp",
         .description = "Supports Multiprocessing extension",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.muxed_units)] = .{
+    result[@intFromEnum(Feature.muxed_units)] = .{
         .llvm_name = "muxed-units",
         .description = "Has muxed AGU and NEON/FPU",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mve)] = .{
+    result[@intFromEnum(Feature.mve)] = .{
         .llvm_name = "mve",
         .description = "Support M-Class Vector Extension with integer ops",
         .dependencies = featureSet(&[_]Feature{
@@ -834,22 +834,22 @@ pub const all_features = blk: {
             .has_v8_1m_main,
         }),
     };
-    result[@enumToInt(Feature.mve1beat)] = .{
+    result[@intFromEnum(Feature.mve1beat)] = .{
         .llvm_name = "mve1beat",
         .description = "Model MVE instructions as a 1 beat per tick architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mve2beat)] = .{
+    result[@intFromEnum(Feature.mve2beat)] = .{
         .llvm_name = "mve2beat",
         .description = "Model MVE instructions as a 2 beats per tick architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mve4beat)] = .{
+    result[@intFromEnum(Feature.mve4beat)] = .{
         .llvm_name = "mve4beat",
         .description = "Model MVE instructions as a 4 beats per tick architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mve_fp)] = .{
+    result[@intFromEnum(Feature.mve_fp)] = .{
         .llvm_name = "mve.fp",
         .description = "Support M-Class Vector Extension with integer and floating ops",
         .dependencies = featureSet(&[_]Feature{
@@ -857,243 +857,243 @@ pub const all_features = blk: {
             .mve,
         }),
     };
-    result[@enumToInt(Feature.nacl_trap)] = .{
+    result[@intFromEnum(Feature.nacl_trap)] = .{
         .llvm_name = "nacl-trap",
         .description = "NaCl trap",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.neon)] = .{
+    result[@intFromEnum(Feature.neon)] = .{
         .llvm_name = "neon",
         .description = "Enable NEON instructions",
         .dependencies = featureSet(&[_]Feature{
             .vfp3,
         }),
     };
-    result[@enumToInt(Feature.neon_fpmovs)] = .{
+    result[@intFromEnum(Feature.neon_fpmovs)] = .{
         .llvm_name = "neon-fpmovs",
         .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.neonfp)] = .{
+    result[@intFromEnum(Feature.neonfp)] = .{
         .llvm_name = "neonfp",
         .description = "Use NEON for single precision FP",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_branch_predictor)] = .{
+    result[@intFromEnum(Feature.no_branch_predictor)] = .{
         .llvm_name = "no-branch-predictor",
         .description = "Has no branch predictor",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_bti_at_return_twice)] = .{
+    result[@intFromEnum(Feature.no_bti_at_return_twice)] = .{
         .llvm_name = "no-bti-at-return-twice",
         .description = "Don't place a BTI instruction after a return-twice",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_movt)] = .{
+    result[@intFromEnum(Feature.no_movt)] = .{
         .llvm_name = "no-movt",
         .description = "Don't use movt/movw pairs for 32-bit imms",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_neg_immediates)] = .{
+    result[@intFromEnum(Feature.no_neg_immediates)] = .{
         .llvm_name = "no-neg-immediates",
         .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.noarm)] = .{
+    result[@intFromEnum(Feature.noarm)] = .{
         .llvm_name = "noarm",
         .description = "Does not support ARM mode execution",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nonpipelined_vfp)] = .{
+    result[@intFromEnum(Feature.nonpipelined_vfp)] = .{
         .llvm_name = "nonpipelined-vfp",
         .description = "VFP instructions are not pipelined",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.pacbti)] = .{
+    result[@intFromEnum(Feature.pacbti)] = .{
         .llvm_name = "pacbti",
         .description = "Enable Pointer Authentication and Branch Target Identification",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.perfmon)] = .{
+    result[@intFromEnum(Feature.perfmon)] = .{
         .llvm_name = "perfmon",
         .description = "Enable support for Performance Monitor extensions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prefer_ishst)] = .{
+    result[@intFromEnum(Feature.prefer_ishst)] = .{
         .llvm_name = "prefer-ishst",
         .description = "Prefer ISHST barriers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prefer_vmovsr)] = .{
+    result[@intFromEnum(Feature.prefer_vmovsr)] = .{
         .llvm_name = "prefer-vmovsr",
         .description = "Prefer VMOVSR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prof_unpr)] = .{
+    result[@intFromEnum(Feature.prof_unpr)] = .{
         .llvm_name = "prof-unpr",
         .description = "Is profitable to unpredicate",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.r4)] = .{
+    result[@intFromEnum(Feature.r4)] = .{
         .llvm_name = "r4",
         .description = "Cortex-R4 ARM processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ras)] = .{
+    result[@intFromEnum(Feature.ras)] = .{
         .llvm_name = "ras",
         .description = "Enable Reliability, Availability and Serviceability extensions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rclass)] = .{
+    result[@intFromEnum(Feature.rclass)] = .{
         .llvm_name = "rclass",
         .description = "Is realtime profile ('R' series)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.read_tp_hard)] = .{
+    result[@intFromEnum(Feature.read_tp_hard)] = .{
         .llvm_name = "read-tp-hard",
         .description = "Reading thread pointer from register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_r9)] = .{
+    result[@intFromEnum(Feature.reserve_r9)] = .{
         .llvm_name = "reserve-r9",
         .description = "Reserve R9, making it unavailable as GPR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ret_addr_stack)] = .{
+    result[@intFromEnum(Feature.ret_addr_stack)] = .{
         .llvm_name = "ret-addr-stack",
         .description = "Has return address stack",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sb)] = .{
+    result[@intFromEnum(Feature.sb)] = .{
         .llvm_name = "sb",
         .description = "Enable v8.5a Speculation Barrier",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sha2)] = .{
+    result[@intFromEnum(Feature.sha2)] = .{
         .llvm_name = "sha2",
         .description = "Enable SHA1 and SHA256 support",
         .dependencies = featureSet(&[_]Feature{
             .neon,
         }),
     };
-    result[@enumToInt(Feature.slow_fp_brcc)] = .{
+    result[@intFromEnum(Feature.slow_fp_brcc)] = .{
         .llvm_name = "slow-fp-brcc",
         .description = "FP compare + branch is slow",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_load_D_subreg)] = .{
+    result[@intFromEnum(Feature.slow_load_D_subreg)] = .{
         .llvm_name = "slow-load-D-subreg",
         .description = "Loading into D subregs is slow",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_odd_reg)] = .{
+    result[@intFromEnum(Feature.slow_odd_reg)] = .{
         .llvm_name = "slow-odd-reg",
         .description = "VLDM/VSTM starting with an odd register is slow",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_vdup32)] = .{
+    result[@intFromEnum(Feature.slow_vdup32)] = .{
         .llvm_name = "slow-vdup32",
         .description = "Has slow VDUP32 - prefer VMOV",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_vgetlni32)] = .{
+    result[@intFromEnum(Feature.slow_vgetlni32)] = .{
         .llvm_name = "slow-vgetlni32",
         .description = "Has slow VGETLNi32 - prefer VMOV",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slowfpvfmx)] = .{
+    result[@intFromEnum(Feature.slowfpvfmx)] = .{
         .llvm_name = "slowfpvfmx",
         .description = "Disable VFP / NEON FMA instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slowfpvmlx)] = .{
+    result[@intFromEnum(Feature.slowfpvmlx)] = .{
         .llvm_name = "slowfpvmlx",
         .description = "Disable VFP / NEON MAC instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.soft_float)] = .{
+    result[@intFromEnum(Feature.soft_float)] = .{
         .llvm_name = "soft-float",
         .description = "Use software floating point features.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.splat_vfp_neon)] = .{
+    result[@intFromEnum(Feature.splat_vfp_neon)] = .{
         .llvm_name = "splat-vfp-neon",
         .description = "Splat register from VFP to NEON",
         .dependencies = featureSet(&[_]Feature{
             .dont_widen_vmovs,
         }),
     };
-    result[@enumToInt(Feature.strict_align)] = .{
+    result[@intFromEnum(Feature.strict_align)] = .{
         .llvm_name = "strict-align",
         .description = "Disallow all unaligned memory access",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.swift)] = .{
+    result[@intFromEnum(Feature.swift)] = .{
         .llvm_name = "swift",
         .description = "Swift ARM processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.thumb2)] = .{
+    result[@intFromEnum(Feature.thumb2)] = .{
         .llvm_name = "thumb2",
         .description = "Enable Thumb2 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.thumb_mode)] = .{
+    result[@intFromEnum(Feature.thumb_mode)] = .{
         .llvm_name = "thumb-mode",
         .description = "Thumb mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.trustzone)] = .{
+    result[@intFromEnum(Feature.trustzone)] = .{
         .llvm_name = "trustzone",
         .description = "Enable support for TrustZone security extensions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.use_mipipeliner)] = .{
+    result[@intFromEnum(Feature.use_mipipeliner)] = .{
         .llvm_name = "use-mipipeliner",
         .description = "Use the MachinePipeliner",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.use_misched)] = .{
+    result[@intFromEnum(Feature.use_misched)] = .{
         .llvm_name = "use-misched",
         .description = "Use the MachineScheduler",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v2)] = .{
+    result[@intFromEnum(Feature.v2)] = .{
         .llvm_name = null,
         .description = "ARMv2 architecture",
         .dependencies = featureSet(&[_]Feature{
             .strict_align,
         }),
     };
-    result[@enumToInt(Feature.v2a)] = .{
+    result[@intFromEnum(Feature.v2a)] = .{
         .llvm_name = null,
         .description = "ARMv2a architecture",
         .dependencies = featureSet(&[_]Feature{
             .strict_align,
         }),
     };
-    result[@enumToInt(Feature.v3)] = .{
+    result[@intFromEnum(Feature.v3)] = .{
         .llvm_name = null,
         .description = "ARMv3 architecture",
         .dependencies = featureSet(&[_]Feature{
             .strict_align,
         }),
     };
-    result[@enumToInt(Feature.v3m)] = .{
+    result[@intFromEnum(Feature.v3m)] = .{
         .llvm_name = null,
         .description = "ARMv3m architecture",
         .dependencies = featureSet(&[_]Feature{
             .strict_align,
         }),
     };
-    result[@enumToInt(Feature.v4)] = .{
+    result[@intFromEnum(Feature.v4)] = .{
         .llvm_name = "armv4",
         .description = "ARMv4 architecture",
         .dependencies = featureSet(&[_]Feature{
             .strict_align,
         }),
     };
-    result[@enumToInt(Feature.v4t)] = .{
+    result[@intFromEnum(Feature.v4t)] = .{
         .llvm_name = "armv4t",
         .description = "ARMv4t architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1101,7 +1101,7 @@ pub const all_features = blk: {
             .strict_align,
         }),
     };
-    result[@enumToInt(Feature.v5t)] = .{
+    result[@intFromEnum(Feature.v5t)] = .{
         .llvm_name = "armv5t",
         .description = "ARMv5t architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1109,7 +1109,7 @@ pub const all_features = blk: {
             .strict_align,
         }),
     };
-    result[@enumToInt(Feature.v5te)] = .{
+    result[@intFromEnum(Feature.v5te)] = .{
         .llvm_name = "armv5te",
         .description = "ARMv5te architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1117,7 +1117,7 @@ pub const all_features = blk: {
             .strict_align,
         }),
     };
-    result[@enumToInt(Feature.v5tej)] = .{
+    result[@intFromEnum(Feature.v5tej)] = .{
         .llvm_name = "armv5tej",
         .description = "ARMv5tej architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1125,7 +1125,7 @@ pub const all_features = blk: {
             .strict_align,
         }),
     };
-    result[@enumToInt(Feature.v6)] = .{
+    result[@intFromEnum(Feature.v6)] = .{
         .llvm_name = "armv6",
         .description = "ARMv6 architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1133,21 +1133,21 @@ pub const all_features = blk: {
             .has_v6,
         }),
     };
-    result[@enumToInt(Feature.v6j)] = .{
+    result[@intFromEnum(Feature.v6j)] = .{
         .llvm_name = "armv6j",
         .description = "ARMv7a architecture",
         .dependencies = featureSet(&[_]Feature{
             .v6,
         }),
     };
-    result[@enumToInt(Feature.v6k)] = .{
+    result[@intFromEnum(Feature.v6k)] = .{
         .llvm_name = "armv6k",
         .description = "ARMv6k architecture",
         .dependencies = featureSet(&[_]Feature{
             .has_v6k,
         }),
     };
-    result[@enumToInt(Feature.v6kz)] = .{
+    result[@intFromEnum(Feature.v6kz)] = .{
         .llvm_name = "armv6kz",
         .description = "ARMv6kz architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1155,7 +1155,7 @@ pub const all_features = blk: {
             .trustzone,
         }),
     };
-    result[@enumToInt(Feature.v6m)] = .{
+    result[@intFromEnum(Feature.v6m)] = .{
         .llvm_name = "armv6-m",
         .description = "ARMv6m architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1167,7 +1167,7 @@ pub const all_features = blk: {
             .thumb_mode,
         }),
     };
-    result[@enumToInt(Feature.v6sm)] = .{
+    result[@intFromEnum(Feature.v6sm)] = .{
         .llvm_name = "armv6s-m",
         .description = "ARMv6sm architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1179,7 +1179,7 @@ pub const all_features = blk: {
             .thumb_mode,
         }),
     };
-    result[@enumToInt(Feature.v6t2)] = .{
+    result[@intFromEnum(Feature.v6t2)] = .{
         .llvm_name = "armv6t2",
         .description = "ARMv6t2 architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1187,7 +1187,7 @@ pub const all_features = blk: {
             .has_v6t2,
         }),
     };
-    result[@enumToInt(Feature.v7a)] = .{
+    result[@intFromEnum(Feature.v7a)] = .{
         .llvm_name = "armv7-a",
         .description = "ARMv7a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1199,7 +1199,7 @@ pub const all_features = blk: {
             .perfmon,
         }),
     };
-    result[@enumToInt(Feature.v7em)] = .{
+    result[@intFromEnum(Feature.v7em)] = .{
         .llvm_name = "armv7e-m",
         .description = "ARMv7em architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1212,14 +1212,14 @@ pub const all_features = blk: {
             .thumb_mode,
         }),
     };
-    result[@enumToInt(Feature.v7k)] = .{
+    result[@intFromEnum(Feature.v7k)] = .{
         .llvm_name = "armv7k",
         .description = "ARMv7a architecture",
         .dependencies = featureSet(&[_]Feature{
             .v7a,
         }),
     };
-    result[@enumToInt(Feature.v7m)] = .{
+    result[@intFromEnum(Feature.v7m)] = .{
         .llvm_name = "armv7-m",
         .description = "ARMv7m architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1231,7 +1231,7 @@ pub const all_features = blk: {
             .thumb_mode,
         }),
     };
-    result[@enumToInt(Feature.v7r)] = .{
+    result[@intFromEnum(Feature.v7r)] = .{
         .llvm_name = "armv7-r",
         .description = "ARMv7r architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1243,14 +1243,14 @@ pub const all_features = blk: {
             .rclass,
         }),
     };
-    result[@enumToInt(Feature.v7s)] = .{
+    result[@intFromEnum(Feature.v7s)] = .{
         .llvm_name = "armv7s",
         .description = "ARMv7a architecture",
         .dependencies = featureSet(&[_]Feature{
             .v7a,
         }),
     };
-    result[@enumToInt(Feature.v7ve)] = .{
+    result[@intFromEnum(Feature.v7ve)] = .{
         .llvm_name = "armv7ve",
         .description = "ARMv7ve architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1265,7 +1265,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8_1a)] = .{
+    result[@intFromEnum(Feature.v8_1a)] = .{
         .llvm_name = "armv8.1-a",
         .description = "ARMv81a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1281,7 +1281,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8_1m_main)] = .{
+    result[@intFromEnum(Feature.v8_1m_main)] = .{
         .llvm_name = "armv8.1-m.main",
         .description = "ARMv81mMainline architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1297,7 +1297,7 @@ pub const all_features = blk: {
             .thumb_mode,
         }),
     };
-    result[@enumToInt(Feature.v8_2a)] = .{
+    result[@intFromEnum(Feature.v8_2a)] = .{
         .llvm_name = "armv8.2-a",
         .description = "ARMv82a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1314,7 +1314,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8_3a)] = .{
+    result[@intFromEnum(Feature.v8_3a)] = .{
         .llvm_name = "armv8.3-a",
         .description = "ARMv83a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1331,7 +1331,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8_4a)] = .{
+    result[@intFromEnum(Feature.v8_4a)] = .{
         .llvm_name = "armv8.4-a",
         .description = "ARMv84a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1348,7 +1348,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8_5a)] = .{
+    result[@intFromEnum(Feature.v8_5a)] = .{
         .llvm_name = "armv8.5-a",
         .description = "ARMv85a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1365,7 +1365,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8_6a)] = .{
+    result[@intFromEnum(Feature.v8_6a)] = .{
         .llvm_name = "armv8.6-a",
         .description = "ARMv86a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1382,7 +1382,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8_7a)] = .{
+    result[@intFromEnum(Feature.v8_7a)] = .{
         .llvm_name = "armv8.7-a",
         .description = "ARMv87a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1399,7 +1399,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8_8a)] = .{
+    result[@intFromEnum(Feature.v8_8a)] = .{
         .llvm_name = "armv8.8-a",
         .description = "ARMv88a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1416,7 +1416,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8_9a)] = .{
+    result[@intFromEnum(Feature.v8_9a)] = .{
         .llvm_name = "armv8.9-a",
         .description = "ARMv89a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1433,7 +1433,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8a)] = .{
+    result[@intFromEnum(Feature.v8a)] = .{
         .llvm_name = "armv8-a",
         .description = "ARMv8a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1449,7 +1449,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v8m)] = .{
+    result[@intFromEnum(Feature.v8m)] = .{
         .llvm_name = "armv8-m.base",
         .description = "ARMv8mBaseline architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1465,7 +1465,7 @@ pub const all_features = blk: {
             .thumb_mode,
         }),
     };
-    result[@enumToInt(Feature.v8m_main)] = .{
+    result[@intFromEnum(Feature.v8m_main)] = .{
         .llvm_name = "armv8-m.main",
         .description = "ARMv8mMainline architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1479,7 +1479,7 @@ pub const all_features = blk: {
             .thumb_mode,
         }),
     };
-    result[@enumToInt(Feature.v8r)] = .{
+    result[@intFromEnum(Feature.v8r)] = .{
         .llvm_name = "armv8-r",
         .description = "ARMv8r architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1495,7 +1495,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v9_1a)] = .{
+    result[@intFromEnum(Feature.v9_1a)] = .{
         .llvm_name = "armv9.1-a",
         .description = "ARMv91a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1511,7 +1511,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v9_2a)] = .{
+    result[@intFromEnum(Feature.v9_2a)] = .{
         .llvm_name = "armv9.2-a",
         .description = "ARMv92a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1527,7 +1527,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v9_3a)] = .{
+    result[@intFromEnum(Feature.v9_3a)] = .{
         .llvm_name = "armv9.3-a",
         .description = "ARMv93a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1544,7 +1544,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v9_4a)] = .{
+    result[@intFromEnum(Feature.v9_4a)] = .{
         .llvm_name = "armv9.4-a",
         .description = "ARMv94a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1560,7 +1560,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.v9a)] = .{
+    result[@intFromEnum(Feature.v9a)] = .{
         .llvm_name = "armv9-a",
         .description = "ARMv9a architecture",
         .dependencies = featureSet(&[_]Feature{
@@ -1576,7 +1576,7 @@ pub const all_features = blk: {
             .virtualization,
         }),
     };
-    result[@enumToInt(Feature.vfp2)] = .{
+    result[@intFromEnum(Feature.vfp2)] = .{
         .llvm_name = "vfp2",
         .description = "Enable VFP2 instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1584,14 +1584,14 @@ pub const all_features = blk: {
             .vfp2sp,
         }),
     };
-    result[@enumToInt(Feature.vfp2sp)] = .{
+    result[@intFromEnum(Feature.vfp2sp)] = .{
         .llvm_name = "vfp2sp",
         .description = "Enable VFP2 instructions with no double precision",
         .dependencies = featureSet(&[_]Feature{
             .fpregs,
         }),
     };
-    result[@enumToInt(Feature.vfp3)] = .{
+    result[@intFromEnum(Feature.vfp3)] = .{
         .llvm_name = "vfp3",
         .description = "Enable VFP3 instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1599,7 +1599,7 @@ pub const all_features = blk: {
             .vfp3sp,
         }),
     };
-    result[@enumToInt(Feature.vfp3d16)] = .{
+    result[@intFromEnum(Feature.vfp3d16)] = .{
         .llvm_name = "vfp3d16",
         .description = "Enable VFP3 instructions with only 16 d-registers",
         .dependencies = featureSet(&[_]Feature{
@@ -1607,14 +1607,14 @@ pub const all_features = blk: {
             .vfp3d16sp,
         }),
     };
-    result[@enumToInt(Feature.vfp3d16sp)] = .{
+    result[@intFromEnum(Feature.vfp3d16sp)] = .{
         .llvm_name = "vfp3d16sp",
         .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",
         .dependencies = featureSet(&[_]Feature{
             .vfp2sp,
         }),
     };
-    result[@enumToInt(Feature.vfp3sp)] = .{
+    result[@intFromEnum(Feature.vfp3sp)] = .{
         .llvm_name = "vfp3sp",
         .description = "Enable VFP3 instructions with no double precision",
         .dependencies = featureSet(&[_]Feature{
@@ -1622,7 +1622,7 @@ pub const all_features = blk: {
             .vfp3d16sp,
         }),
     };
-    result[@enumToInt(Feature.vfp4)] = .{
+    result[@intFromEnum(Feature.vfp4)] = .{
         .llvm_name = "vfp4",
         .description = "Enable VFP4 instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1631,7 +1631,7 @@ pub const all_features = blk: {
             .vfp4sp,
         }),
     };
-    result[@enumToInt(Feature.vfp4d16)] = .{
+    result[@intFromEnum(Feature.vfp4d16)] = .{
         .llvm_name = "vfp4d16",
         .description = "Enable VFP4 instructions with only 16 d-registers",
         .dependencies = featureSet(&[_]Feature{
@@ -1639,7 +1639,7 @@ pub const all_features = blk: {
             .vfp4d16sp,
         }),
     };
-    result[@enumToInt(Feature.vfp4d16sp)] = .{
+    result[@intFromEnum(Feature.vfp4d16sp)] = .{
         .llvm_name = "vfp4d16sp",
         .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",
         .dependencies = featureSet(&[_]Feature{
@@ -1647,7 +1647,7 @@ pub const all_features = blk: {
             .vfp3d16sp,
         }),
     };
-    result[@enumToInt(Feature.vfp4sp)] = .{
+    result[@intFromEnum(Feature.vfp4sp)] = .{
         .llvm_name = "vfp4sp",
         .description = "Enable VFP4 instructions with no double precision",
         .dependencies = featureSet(&[_]Feature{
@@ -1655,7 +1655,7 @@ pub const all_features = blk: {
             .vfp4d16sp,
         }),
     };
-    result[@enumToInt(Feature.virtualization)] = .{
+    result[@intFromEnum(Feature.virtualization)] = .{
         .llvm_name = "virtualization",
         .description = "Supports Virtualization extension",
         .dependencies = featureSet(&[_]Feature{
@@ -1663,34 +1663,34 @@ pub const all_features = blk: {
             .hwdiv_arm,
         }),
     };
-    result[@enumToInt(Feature.vldn_align)] = .{
+    result[@intFromEnum(Feature.vldn_align)] = .{
         .llvm_name = "vldn-align",
         .description = "Check for VLDn unaligned access",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vmlx_forwarding)] = .{
+    result[@intFromEnum(Feature.vmlx_forwarding)] = .{
         .llvm_name = "vmlx-forwarding",
         .description = "Has multiplier accumulator forwarding",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vmlx_hazards)] = .{
+    result[@intFromEnum(Feature.vmlx_hazards)] = .{
         .llvm_name = "vmlx-hazards",
         .description = "Has VMLx hazards",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.wide_stride_vfp)] = .{
+    result[@intFromEnum(Feature.wide_stride_vfp)] = .{
         .llvm_name = "wide-stride-vfp",
         .description = "Use a wide stride when allocating VFP registers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.xscale)] = .{
+    result[@intFromEnum(Feature.xscale)] = .{
         .llvm_name = "xscale",
         .description = "ARMv5te architecture",
         .dependencies = featureSet(&[_]Feature{
             .v5te,
         }),
     };
-    result[@enumToInt(Feature.zcz)] = .{
+    result[@intFromEnum(Feature.zcz)] = .{
         .llvm_name = "zcz",
         .description = "Has zero-cycle zeroing instructions",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/avr.zig
@@ -52,17 +52,17 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.addsubiw)] = .{
+    result[@intFromEnum(Feature.addsubiw)] = .{
         .llvm_name = "addsubiw",
         .description = "Enable 16-bit register-immediate addition and subtraction instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.avr0)] = .{
+    result[@intFromEnum(Feature.avr0)] = .{
         .llvm_name = "avr0",
         .description = "The device is a part of the avr0 family",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.avr1)] = .{
+    result[@intFromEnum(Feature.avr1)] = .{
         .llvm_name = "avr1",
         .description = "The device is a part of the avr1 family",
         .dependencies = featureSet(&[_]Feature{
@@ -72,7 +72,7 @@ pub const all_features = blk: {
             .progmem,
         }),
     };
-    result[@enumToInt(Feature.avr2)] = .{
+    result[@intFromEnum(Feature.avr2)] = .{
         .llvm_name = "avr2",
         .description = "The device is a part of the avr2 family",
         .dependencies = featureSet(&[_]Feature{
@@ -82,7 +82,7 @@ pub const all_features = blk: {
             .sram,
         }),
     };
-    result[@enumToInt(Feature.avr25)] = .{
+    result[@intFromEnum(Feature.avr25)] = .{
         .llvm_name = "avr25",
         .description = "The device is a part of the avr25 family",
         .dependencies = featureSet(&[_]Feature{
@@ -93,7 +93,7 @@ pub const all_features = blk: {
             .spm,
         }),
     };
-    result[@enumToInt(Feature.avr3)] = .{
+    result[@intFromEnum(Feature.avr3)] = .{
         .llvm_name = "avr3",
         .description = "The device is a part of the avr3 family",
         .dependencies = featureSet(&[_]Feature{
@@ -101,7 +101,7 @@ pub const all_features = blk: {
             .jmpcall,
         }),
     };
-    result[@enumToInt(Feature.avr31)] = .{
+    result[@intFromEnum(Feature.avr31)] = .{
         .llvm_name = "avr31",
         .description = "The device is a part of the avr31 family",
         .dependencies = featureSet(&[_]Feature{
@@ -109,7 +109,7 @@ pub const all_features = blk: {
             .elpm,
         }),
     };
-    result[@enumToInt(Feature.avr35)] = .{
+    result[@intFromEnum(Feature.avr35)] = .{
         .llvm_name = "avr35",
         .description = "The device is a part of the avr35 family",
         .dependencies = featureSet(&[_]Feature{
@@ -120,7 +120,7 @@ pub const all_features = blk: {
             .spm,
         }),
     };
-    result[@enumToInt(Feature.avr4)] = .{
+    result[@intFromEnum(Feature.avr4)] = .{
         .llvm_name = "avr4",
         .description = "The device is a part of the avr4 family",
         .dependencies = featureSet(&[_]Feature{
@@ -132,7 +132,7 @@ pub const all_features = blk: {
             .spm,
         }),
     };
-    result[@enumToInt(Feature.avr5)] = .{
+    result[@intFromEnum(Feature.avr5)] = .{
         .llvm_name = "avr5",
         .description = "The device is a part of the avr5 family",
         .dependencies = featureSet(&[_]Feature{
@@ -144,7 +144,7 @@ pub const all_features = blk: {
             .spm,
         }),
     };
-    result[@enumToInt(Feature.avr51)] = .{
+    result[@intFromEnum(Feature.avr51)] = .{
         .llvm_name = "avr51",
         .description = "The device is a part of the avr51 family",
         .dependencies = featureSet(&[_]Feature{
@@ -153,7 +153,7 @@ pub const all_features = blk: {
             .elpmx,
         }),
     };
-    result[@enumToInt(Feature.avr6)] = .{
+    result[@intFromEnum(Feature.avr6)] = .{
         .llvm_name = "avr6",
         .description = "The device is a part of the avr6 family",
         .dependencies = featureSet(&[_]Feature{
@@ -161,7 +161,7 @@ pub const all_features = blk: {
             .eijmpcall,
         }),
     };
-    result[@enumToInt(Feature.avrtiny)] = .{
+    result[@intFromEnum(Feature.avrtiny)] = .{
         .llvm_name = "avrtiny",
         .description = "The device is a part of the avrtiny family",
         .dependencies = featureSet(&[_]Feature{
@@ -172,82 +172,82 @@ pub const all_features = blk: {
             .tinyencoding,
         }),
     };
-    result[@enumToInt(Feature.@"break")] = .{
+    result[@intFromEnum(Feature.@"break")] = .{
         .llvm_name = "break",
         .description = "The device supports the `BREAK` debugging instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.des)] = .{
+    result[@intFromEnum(Feature.des)] = .{
         .llvm_name = "des",
         .description = "The device supports the `DES k` encryption instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.eijmpcall)] = .{
+    result[@intFromEnum(Feature.eijmpcall)] = .{
         .llvm_name = "eijmpcall",
         .description = "The device supports the `EIJMP`/`EICALL` instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.elpm)] = .{
+    result[@intFromEnum(Feature.elpm)] = .{
         .llvm_name = "elpm",
         .description = "The device supports the ELPM instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.elpmx)] = .{
+    result[@intFromEnum(Feature.elpmx)] = .{
         .llvm_name = "elpmx",
         .description = "The device supports the `ELPM Rd, Z[+]` instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ijmpcall)] = .{
+    result[@intFromEnum(Feature.ijmpcall)] = .{
         .llvm_name = "ijmpcall",
         .description = "The device supports `IJMP`/`ICALL`instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.jmpcall)] = .{
+    result[@intFromEnum(Feature.jmpcall)] = .{
         .llvm_name = "jmpcall",
         .description = "The device supports the `JMP` and `CALL` instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lpm)] = .{
+    result[@intFromEnum(Feature.lpm)] = .{
         .llvm_name = "lpm",
         .description = "The device supports the `LPM` instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lpmx)] = .{
+    result[@intFromEnum(Feature.lpmx)] = .{
         .llvm_name = "lpmx",
         .description = "The device supports the `LPM Rd, Z[+]` instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.memmappedregs)] = .{
+    result[@intFromEnum(Feature.memmappedregs)] = .{
         .llvm_name = "memmappedregs",
         .description = "The device has CPU registers mapped in data address space",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.movw)] = .{
+    result[@intFromEnum(Feature.movw)] = .{
         .llvm_name = "movw",
         .description = "The device supports the 16-bit MOVW instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mul)] = .{
+    result[@intFromEnum(Feature.mul)] = .{
         .llvm_name = "mul",
         .description = "The device supports the multiplication instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.progmem)] = .{
+    result[@intFromEnum(Feature.progmem)] = .{
         .llvm_name = "progmem",
         .description = "The device has a separate flash namespace",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rmw)] = .{
+    result[@intFromEnum(Feature.rmw)] = .{
         .llvm_name = "rmw",
         .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.smallstack)] = .{
+    result[@intFromEnum(Feature.smallstack)] = .{
         .llvm_name = "smallstack",
         .description = "The device has an 8-bit stack pointer",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.special)] = .{
+    result[@intFromEnum(Feature.special)] = .{
         .llvm_name = "special",
         .description = "Enable use of the entire instruction set - used for debugging",
         .dependencies = featureSet(&[_]Feature{
@@ -270,27 +270,27 @@ pub const all_features = blk: {
             .sram,
         }),
     };
-    result[@enumToInt(Feature.spm)] = .{
+    result[@intFromEnum(Feature.spm)] = .{
         .llvm_name = "spm",
         .description = "The device supports the `SPM` instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.spmx)] = .{
+    result[@intFromEnum(Feature.spmx)] = .{
         .llvm_name = "spmx",
         .description = "The device supports the `SPM Z+` instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sram)] = .{
+    result[@intFromEnum(Feature.sram)] = .{
         .llvm_name = "sram",
         .description = "The device has random access memory",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tinyencoding)] = .{
+    result[@intFromEnum(Feature.tinyencoding)] = .{
         .llvm_name = "tinyencoding",
         .description = "The device has Tiny core specific instruction encodings",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.xmega)] = .{
+    result[@intFromEnum(Feature.xmega)] = .{
         .llvm_name = "xmega",
         .description = "The device is a part of the xmega family",
         .dependencies = featureSet(&[_]Feature{
@@ -313,7 +313,7 @@ pub const all_features = blk: {
             .sram,
         }),
     };
-    result[@enumToInt(Feature.xmega3)] = .{
+    result[@intFromEnum(Feature.xmega3)] = .{
         .llvm_name = "xmega3",
         .description = "The device is a part of the xmega3 family",
         .dependencies = featureSet(&[_]Feature{
@@ -330,7 +330,7 @@ pub const all_features = blk: {
             .sram,
         }),
     };
-    result[@enumToInt(Feature.xmegau)] = .{
+    result[@intFromEnum(Feature.xmegau)] = .{
         .llvm_name = "xmegau",
         .description = "The device is a part of the xmegau family",
         .dependencies = featureSet(&[_]Feature{
lib/std/target/bpf.zig
@@ -19,17 +19,17 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.alu32)] = .{
+    result[@intFromEnum(Feature.alu32)] = .{
         .llvm_name = "alu32",
         .description = "Enable ALU32 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dummy)] = .{
+    result[@intFromEnum(Feature.dummy)] = .{
         .llvm_name = "dummy",
         .description = "unused feature",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dwarfris)] = .{
+    result[@intFromEnum(Feature.dwarfris)] = .{
         .llvm_name = "dwarfris",
         .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/csky.zig
@@ -79,26 +79,26 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.@"10e60")] = .{
+    result[@intFromEnum(Feature.@"10e60")] = .{
         .llvm_name = "10e60",
         .description = "Support CSKY 10e60 instructions",
         .dependencies = featureSet(&[_]Feature{
             .@"7e10",
         }),
     };
-    result[@enumToInt(Feature.@"2e3")] = .{
+    result[@intFromEnum(Feature.@"2e3")] = .{
         .llvm_name = "2e3",
         .description = "Support CSKY 2e3 instructions",
         .dependencies = featureSet(&[_]Feature{
             .e2,
         }),
     };
-    result[@enumToInt(Feature.@"3e3r1")] = .{
+    result[@intFromEnum(Feature.@"3e3r1")] = .{
         .llvm_name = "3e3r1",
         .description = "Support CSKY 3e3r1 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.@"3e3r2")] = .{
+    result[@intFromEnum(Feature.@"3e3r2")] = .{
         .llvm_name = "3e3r2",
         .description = "Support CSKY 3e3r2 instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -106,311 +106,311 @@ pub const all_features = blk: {
             .doloop,
         }),
     };
-    result[@enumToInt(Feature.@"3e3r3")] = .{
+    result[@intFromEnum(Feature.@"3e3r3")] = .{
         .llvm_name = "3e3r3",
         .description = "Support CSKY 3e3r3 instructions",
         .dependencies = featureSet(&[_]Feature{
             .doloop,
         }),
     };
-    result[@enumToInt(Feature.@"3e7")] = .{
+    result[@intFromEnum(Feature.@"3e7")] = .{
         .llvm_name = "3e7",
         .description = "Support CSKY 3e7 instructions",
         .dependencies = featureSet(&[_]Feature{
             .@"2e3",
         }),
     };
-    result[@enumToInt(Feature.@"7e10")] = .{
+    result[@intFromEnum(Feature.@"7e10")] = .{
         .llvm_name = "7e10",
         .description = "Support CSKY 7e10 instructions",
         .dependencies = featureSet(&[_]Feature{
             .@"3e7",
         }),
     };
-    result[@enumToInt(Feature.btst16)] = .{
+    result[@intFromEnum(Feature.btst16)] = .{
         .llvm_name = "btst16",
         .description = "Use the 16-bit btsti instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cache)] = .{
+    result[@intFromEnum(Feature.cache)] = .{
         .llvm_name = "cache",
         .description = "Enable cache",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ccrt)] = .{
+    result[@intFromEnum(Feature.ccrt)] = .{
         .llvm_name = "ccrt",
         .description = "Use CSKY compiler runtime",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck801)] = .{
+    result[@intFromEnum(Feature.ck801)] = .{
         .llvm_name = "ck801",
         .description = "CSKY ck801 processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck802)] = .{
+    result[@intFromEnum(Feature.ck802)] = .{
         .llvm_name = "ck802",
         .description = "CSKY ck802 processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck803)] = .{
+    result[@intFromEnum(Feature.ck803)] = .{
         .llvm_name = "ck803",
         .description = "CSKY ck803 processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck803s)] = .{
+    result[@intFromEnum(Feature.ck803s)] = .{
         .llvm_name = "ck803s",
         .description = "CSKY ck803s processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck804)] = .{
+    result[@intFromEnum(Feature.ck804)] = .{
         .llvm_name = "ck804",
         .description = "CSKY ck804 processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck805)] = .{
+    result[@intFromEnum(Feature.ck805)] = .{
         .llvm_name = "ck805",
         .description = "CSKY ck805 processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck807)] = .{
+    result[@intFromEnum(Feature.ck807)] = .{
         .llvm_name = "ck807",
         .description = "CSKY ck807 processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck810)] = .{
+    result[@intFromEnum(Feature.ck810)] = .{
         .llvm_name = "ck810",
         .description = "CSKY ck810 processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck810v)] = .{
+    result[@intFromEnum(Feature.ck810v)] = .{
         .llvm_name = "ck810v",
         .description = "CSKY ck810v processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck860)] = .{
+    result[@intFromEnum(Feature.ck860)] = .{
         .llvm_name = "ck860",
         .description = "CSKY ck860 processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ck860v)] = .{
+    result[@intFromEnum(Feature.ck860v)] = .{
         .llvm_name = "ck860v",
         .description = "CSKY ck860v processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.constpool)] = .{
+    result[@intFromEnum(Feature.constpool)] = .{
         .llvm_name = "constpool",
         .description = "Dump the constant pool by compiler",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.doloop)] = .{
+    result[@intFromEnum(Feature.doloop)] = .{
         .llvm_name = "doloop",
         .description = "Enable doloop instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dsp1e2)] = .{
+    result[@intFromEnum(Feature.dsp1e2)] = .{
         .llvm_name = "dsp1e2",
         .description = "Support CSKY dsp1e2 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dsp_silan)] = .{
+    result[@intFromEnum(Feature.dsp_silan)] = .{
         .llvm_name = "dsp_silan",
         .description = "Enable DSP Silan instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dspe60)] = .{
+    result[@intFromEnum(Feature.dspe60)] = .{
         .llvm_name = "dspe60",
         .description = "Support CSKY dspe60 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dspv2)] = .{
+    result[@intFromEnum(Feature.dspv2)] = .{
         .llvm_name = "dspv2",
         .description = "Enable DSP V2.0 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.e1)] = .{
+    result[@intFromEnum(Feature.e1)] = .{
         .llvm_name = "e1",
         .description = "Support CSKY e1 instructions",
         .dependencies = featureSet(&[_]Feature{
             .elrw,
         }),
     };
-    result[@enumToInt(Feature.e2)] = .{
+    result[@intFromEnum(Feature.e2)] = .{
         .llvm_name = "e2",
         .description = "Support CSKY e2 instructions",
         .dependencies = featureSet(&[_]Feature{
             .e1,
         }),
     };
-    result[@enumToInt(Feature.edsp)] = .{
+    result[@intFromEnum(Feature.edsp)] = .{
         .llvm_name = "edsp",
         .description = "Enable DSP instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.elrw)] = .{
+    result[@intFromEnum(Feature.elrw)] = .{
         .llvm_name = "elrw",
         .description = "Use the extend LRW instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fdivdu)] = .{
+    result[@intFromEnum(Feature.fdivdu)] = .{
         .llvm_name = "fdivdu",
         .description = "Enable float divide instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.float1e2)] = .{
+    result[@intFromEnum(Feature.float1e2)] = .{
         .llvm_name = "float1e2",
         .description = "Support CSKY float1e2 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.float1e3)] = .{
+    result[@intFromEnum(Feature.float1e3)] = .{
         .llvm_name = "float1e3",
         .description = "Support CSKY float1e3 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.float3e4)] = .{
+    result[@intFromEnum(Feature.float3e4)] = .{
         .llvm_name = "float3e4",
         .description = "Support CSKY float3e4 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.float7e60)] = .{
+    result[@intFromEnum(Feature.float7e60)] = .{
         .llvm_name = "float7e60",
         .description = "Support CSKY float7e60 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.floate1)] = .{
+    result[@intFromEnum(Feature.floate1)] = .{
         .llvm_name = "floate1",
         .description = "Support CSKY floate1 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fpuv2_df)] = .{
+    result[@intFromEnum(Feature.fpuv2_df)] = .{
         .llvm_name = "fpuv2_df",
         .description = "Enable FPUv2 double float instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fpuv2_sf)] = .{
+    result[@intFromEnum(Feature.fpuv2_sf)] = .{
         .llvm_name = "fpuv2_sf",
         .description = "Enable FPUv2 single float instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fpuv3_df)] = .{
+    result[@intFromEnum(Feature.fpuv3_df)] = .{
         .llvm_name = "fpuv3_df",
         .description = "Enable FPUv3 double float instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fpuv3_hf)] = .{
+    result[@intFromEnum(Feature.fpuv3_hf)] = .{
         .llvm_name = "fpuv3_hf",
         .description = "Enable FPUv3 harf precision operate instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fpuv3_hi)] = .{
+    result[@intFromEnum(Feature.fpuv3_hi)] = .{
         .llvm_name = "fpuv3_hi",
         .description = "Enable FPUv3 harf word converting instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fpuv3_sf)] = .{
+    result[@intFromEnum(Feature.fpuv3_sf)] = .{
         .llvm_name = "fpuv3_sf",
         .description = "Enable FPUv3 single float instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hard_float)] = .{
+    result[@intFromEnum(Feature.hard_float)] = .{
         .llvm_name = "hard-float",
         .description = "Use hard floating point features",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hard_float_abi)] = .{
+    result[@intFromEnum(Feature.hard_float_abi)] = .{
         .llvm_name = "hard-float-abi",
         .description = "Use hard floating point ABI to pass args",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hard_tp)] = .{
+    result[@intFromEnum(Feature.hard_tp)] = .{
         .llvm_name = "hard-tp",
         .description = "Enable TLS Pointer register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.high_registers)] = .{
+    result[@intFromEnum(Feature.high_registers)] = .{
         .llvm_name = "high-registers",
         .description = "Enable r16-r31 registers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hwdiv)] = .{
+    result[@intFromEnum(Feature.hwdiv)] = .{
         .llvm_name = "hwdiv",
         .description = "Enable divide instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.istack)] = .{
+    result[@intFromEnum(Feature.istack)] = .{
         .llvm_name = "istack",
         .description = "Enable interrupt attribute",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.java)] = .{
+    result[@intFromEnum(Feature.java)] = .{
         .llvm_name = "java",
         .description = "Enable java instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mp)] = .{
+    result[@intFromEnum(Feature.mp)] = .{
         .llvm_name = "mp",
         .description = "Support CSKY mp instructions",
         .dependencies = featureSet(&[_]Feature{
             .@"2e3",
         }),
     };
-    result[@enumToInt(Feature.mp1e2)] = .{
+    result[@intFromEnum(Feature.mp1e2)] = .{
         .llvm_name = "mp1e2",
         .description = "Support CSKY mp1e2 instructions",
         .dependencies = featureSet(&[_]Feature{
             .@"3e7",
         }),
     };
-    result[@enumToInt(Feature.multiple_stld)] = .{
+    result[@intFromEnum(Feature.multiple_stld)] = .{
         .llvm_name = "multiple_stld",
         .description = "Enable multiple load/store instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nvic)] = .{
+    result[@intFromEnum(Feature.nvic)] = .{
         .llvm_name = "nvic",
         .description = "Enable NVIC",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.pushpop)] = .{
+    result[@intFromEnum(Feature.pushpop)] = .{
         .llvm_name = "pushpop",
         .description = "Enable push/pop instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.smart)] = .{
+    result[@intFromEnum(Feature.smart)] = .{
         .llvm_name = "smart",
         .description = "Let CPU work in Smart Mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.soft_tp)] = .{
+    result[@intFromEnum(Feature.soft_tp)] = .{
         .llvm_name = "soft-tp",
         .description = "Disable TLS Pointer register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.stack_size)] = .{
+    result[@intFromEnum(Feature.stack_size)] = .{
         .llvm_name = "stack-size",
         .description = "Output stack size information",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.trust)] = .{
+    result[@intFromEnum(Feature.trust)] = .{
         .llvm_name = "trust",
         .description = "Enable trust instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vdsp2e3)] = .{
+    result[@intFromEnum(Feature.vdsp2e3)] = .{
         .llvm_name = "vdsp2e3",
         .description = "Support CSKY vdsp2e3 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vdsp2e60f)] = .{
+    result[@intFromEnum(Feature.vdsp2e60f)] = .{
         .llvm_name = "vdsp2e60f",
         .description = "Support CSKY vdsp2e60f instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vdspv1)] = .{
+    result[@intFromEnum(Feature.vdspv1)] = .{
         .llvm_name = "vdspv1",
         .description = "Enable 128bit vdsp-v1 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vdspv2)] = .{
+    result[@intFromEnum(Feature.vdspv2)] = .{
         .llvm_name = "vdspv2",
         .description = "Enable vdsp-v2 instructions",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/hexagon.zig
@@ -58,77 +58,77 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.audio)] = .{
+    result[@intFromEnum(Feature.audio)] = .{
         .llvm_name = "audio",
         .description = "Hexagon Audio extension instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cabac)] = .{
+    result[@intFromEnum(Feature.cabac)] = .{
         .llvm_name = "cabac",
         .description = "Emit the CABAC instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.compound)] = .{
+    result[@intFromEnum(Feature.compound)] = .{
         .llvm_name = "compound",
         .description = "Use compound instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.duplex)] = .{
+    result[@intFromEnum(Feature.duplex)] = .{
         .llvm_name = "duplex",
         .description = "Enable generation of duplex instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hvx)] = .{
+    result[@intFromEnum(Feature.hvx)] = .{
         .llvm_name = "hvx",
         .description = "Hexagon HVX instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hvx_ieee_fp)] = .{
+    result[@intFromEnum(Feature.hvx_ieee_fp)] = .{
         .llvm_name = "hvx-ieee-fp",
         .description = "Hexagon HVX IEEE floating point instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hvx_length128b)] = .{
+    result[@intFromEnum(Feature.hvx_length128b)] = .{
         .llvm_name = "hvx-length128b",
         .description = "Hexagon HVX 128B instructions",
         .dependencies = featureSet(&[_]Feature{
             .hvx,
         }),
     };
-    result[@enumToInt(Feature.hvx_length64b)] = .{
+    result[@intFromEnum(Feature.hvx_length64b)] = .{
         .llvm_name = "hvx-length64b",
         .description = "Hexagon HVX 64B instructions",
         .dependencies = featureSet(&[_]Feature{
             .hvx,
         }),
     };
-    result[@enumToInt(Feature.hvx_qfloat)] = .{
+    result[@intFromEnum(Feature.hvx_qfloat)] = .{
         .llvm_name = "hvx-qfloat",
         .description = "Hexagon HVX QFloating point instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hvxv60)] = .{
+    result[@intFromEnum(Feature.hvxv60)] = .{
         .llvm_name = "hvxv60",
         .description = "Hexagon HVX instructions",
         .dependencies = featureSet(&[_]Feature{
             .hvx,
         }),
     };
-    result[@enumToInt(Feature.hvxv62)] = .{
+    result[@intFromEnum(Feature.hvxv62)] = .{
         .llvm_name = "hvxv62",
         .description = "Hexagon HVX instructions",
         .dependencies = featureSet(&[_]Feature{
             .hvxv60,
         }),
     };
-    result[@enumToInt(Feature.hvxv65)] = .{
+    result[@intFromEnum(Feature.hvxv65)] = .{
         .llvm_name = "hvxv65",
         .description = "Hexagon HVX instructions",
         .dependencies = featureSet(&[_]Feature{
             .hvxv62,
         }),
     };
-    result[@enumToInt(Feature.hvxv66)] = .{
+    result[@intFromEnum(Feature.hvxv66)] = .{
         .llvm_name = "hvxv66",
         .description = "Hexagon HVX instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -136,161 +136,161 @@ pub const all_features = blk: {
             .zreg,
         }),
     };
-    result[@enumToInt(Feature.hvxv67)] = .{
+    result[@intFromEnum(Feature.hvxv67)] = .{
         .llvm_name = "hvxv67",
         .description = "Hexagon HVX instructions",
         .dependencies = featureSet(&[_]Feature{
             .hvxv66,
         }),
     };
-    result[@enumToInt(Feature.hvxv68)] = .{
+    result[@intFromEnum(Feature.hvxv68)] = .{
         .llvm_name = "hvxv68",
         .description = "Hexagon HVX instructions",
         .dependencies = featureSet(&[_]Feature{
             .hvxv67,
         }),
     };
-    result[@enumToInt(Feature.hvxv69)] = .{
+    result[@intFromEnum(Feature.hvxv69)] = .{
         .llvm_name = "hvxv69",
         .description = "Hexagon HVX instructions",
         .dependencies = featureSet(&[_]Feature{
             .hvxv68,
         }),
     };
-    result[@enumToInt(Feature.hvxv71)] = .{
+    result[@intFromEnum(Feature.hvxv71)] = .{
         .llvm_name = "hvxv71",
         .description = "Hexagon HVX instructions",
         .dependencies = featureSet(&[_]Feature{
             .hvxv69,
         }),
     };
-    result[@enumToInt(Feature.hvxv73)] = .{
+    result[@intFromEnum(Feature.hvxv73)] = .{
         .llvm_name = "hvxv73",
         .description = "Hexagon HVX instructions",
         .dependencies = featureSet(&[_]Feature{
             .hvxv71,
         }),
     };
-    result[@enumToInt(Feature.long_calls)] = .{
+    result[@intFromEnum(Feature.long_calls)] = .{
         .llvm_name = "long-calls",
         .description = "Use constant-extended calls",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mem_noshuf)] = .{
+    result[@intFromEnum(Feature.mem_noshuf)] = .{
         .llvm_name = "mem_noshuf",
         .description = "Supports mem_noshuf feature",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.memops)] = .{
+    result[@intFromEnum(Feature.memops)] = .{
         .llvm_name = "memops",
         .description = "Use memop instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.noreturn_stack_elim)] = .{
+    result[@intFromEnum(Feature.noreturn_stack_elim)] = .{
         .llvm_name = "noreturn-stack-elim",
         .description = "Eliminate stack allocation in a noreturn function when possible",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nvj)] = .{
+    result[@intFromEnum(Feature.nvj)] = .{
         .llvm_name = "nvj",
         .description = "Support for new-value jumps",
         .dependencies = featureSet(&[_]Feature{
             .packets,
         }),
     };
-    result[@enumToInt(Feature.nvs)] = .{
+    result[@intFromEnum(Feature.nvs)] = .{
         .llvm_name = "nvs",
         .description = "Support for new-value stores",
         .dependencies = featureSet(&[_]Feature{
             .packets,
         }),
     };
-    result[@enumToInt(Feature.packets)] = .{
+    result[@intFromEnum(Feature.packets)] = .{
         .llvm_name = "packets",
         .description = "Support for instruction packets",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prev65)] = .{
+    result[@intFromEnum(Feature.prev65)] = .{
         .llvm_name = "prev65",
         .description = "Support features deprecated in v65",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserved_r19)] = .{
+    result[@intFromEnum(Feature.reserved_r19)] = .{
         .llvm_name = "reserved-r19",
         .description = "Reserve register R19",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.small_data)] = .{
+    result[@intFromEnum(Feature.small_data)] = .{
         .llvm_name = "small-data",
         .description = "Allow GP-relative addressing of global variables",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tinycore)] = .{
+    result[@intFromEnum(Feature.tinycore)] = .{
         .llvm_name = "tinycore",
         .description = "Hexagon Tiny Core",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.unsafe_fp)] = .{
+    result[@intFromEnum(Feature.unsafe_fp)] = .{
         .llvm_name = "unsafe-fp",
         .description = "Use unsafe FP math",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v5)] = .{
+    result[@intFromEnum(Feature.v5)] = .{
         .llvm_name = "v5",
         .description = "Enable Hexagon V5 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v55)] = .{
+    result[@intFromEnum(Feature.v55)] = .{
         .llvm_name = "v55",
         .description = "Enable Hexagon V55 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v60)] = .{
+    result[@intFromEnum(Feature.v60)] = .{
         .llvm_name = "v60",
         .description = "Enable Hexagon V60 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v62)] = .{
+    result[@intFromEnum(Feature.v62)] = .{
         .llvm_name = "v62",
         .description = "Enable Hexagon V62 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v65)] = .{
+    result[@intFromEnum(Feature.v65)] = .{
         .llvm_name = "v65",
         .description = "Enable Hexagon V65 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v66)] = .{
+    result[@intFromEnum(Feature.v66)] = .{
         .llvm_name = "v66",
         .description = "Enable Hexagon V66 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v67)] = .{
+    result[@intFromEnum(Feature.v67)] = .{
         .llvm_name = "v67",
         .description = "Enable Hexagon V67 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v68)] = .{
+    result[@intFromEnum(Feature.v68)] = .{
         .llvm_name = "v68",
         .description = "Enable Hexagon V68 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v69)] = .{
+    result[@intFromEnum(Feature.v69)] = .{
         .llvm_name = "v69",
         .description = "Enable Hexagon V69 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v71)] = .{
+    result[@intFromEnum(Feature.v71)] = .{
         .llvm_name = "v71",
         .description = "Enable Hexagon V71 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v73)] = .{
+    result[@intFromEnum(Feature.v73)] = .{
         .llvm_name = "v73",
         .description = "Enable Hexagon V73 architecture",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zreg)] = .{
+    result[@intFromEnum(Feature.zreg)] = .{
         .llvm_name = "zreg",
         .description = "Hexagon ZReg extension instructions",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/loongarch.zig
@@ -27,63 +27,63 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.@"32bit")] = .{
+    result[@intFromEnum(Feature.@"32bit")] = .{
         .llvm_name = "32bit",
         .description = "LA32 Basic Integer and Privilege Instruction Set",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.@"64bit")] = .{
+    result[@intFromEnum(Feature.@"64bit")] = .{
         .llvm_name = "64bit",
         .description = "LA64 Basic Integer and Privilege Instruction Set",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.d)] = .{
+    result[@intFromEnum(Feature.d)] = .{
         .llvm_name = "d",
         .description = "'D' (Double-Precision Floating-Point)",
         .dependencies = featureSet(&[_]Feature{
             .f,
         }),
     };
-    result[@enumToInt(Feature.f)] = .{
+    result[@intFromEnum(Feature.f)] = .{
         .llvm_name = "f",
         .description = "'F' (Single-Precision Floating-Point)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.la_global_with_abs)] = .{
+    result[@intFromEnum(Feature.la_global_with_abs)] = .{
         .llvm_name = "la-global-with-abs",
         .description = "Expand la.global as la.abs",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.la_global_with_pcrel)] = .{
+    result[@intFromEnum(Feature.la_global_with_pcrel)] = .{
         .llvm_name = "la-global-with-pcrel",
         .description = "Expand la.global as la.pcrel",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.la_local_with_abs)] = .{
+    result[@intFromEnum(Feature.la_local_with_abs)] = .{
         .llvm_name = "la-local-with-abs",
         .description = "Expand la.local as la.abs",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lasx)] = .{
+    result[@intFromEnum(Feature.lasx)] = .{
         .llvm_name = "lasx",
         .description = "'LASX' (Loongson Advanced SIMD Extension)",
         .dependencies = featureSet(&[_]Feature{
             .lsx,
         }),
     };
-    result[@enumToInt(Feature.lbt)] = .{
+    result[@intFromEnum(Feature.lbt)] = .{
         .llvm_name = "lbt",
         .description = "'LBT' (Loongson Binary Translation Extension)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lsx)] = .{
+    result[@intFromEnum(Feature.lsx)] = .{
         .llvm_name = "lsx",
         .description = "'LSX' (Loongson SIMD Extension)",
         .dependencies = featureSet(&[_]Feature{
             .d,
         }),
     };
-    result[@enumToInt(Feature.lvz)] = .{
+    result[@intFromEnum(Feature.lvz)] = .{
         .llvm_name = "lvz",
         .description = "'LVZ' (Loongson Virtualization Extension)",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/m68k.zig
@@ -37,117 +37,117 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.isa_68000)] = .{
+    result[@intFromEnum(Feature.isa_68000)] = .{
         .llvm_name = "isa-68000",
         .description = "Is M68000 ISA supported",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.isa_68010)] = .{
+    result[@intFromEnum(Feature.isa_68010)] = .{
         .llvm_name = "isa-68010",
         .description = "Is M68010 ISA supported",
         .dependencies = featureSet(&[_]Feature{
             .isa_68000,
         }),
     };
-    result[@enumToInt(Feature.isa_68020)] = .{
+    result[@intFromEnum(Feature.isa_68020)] = .{
         .llvm_name = "isa-68020",
         .description = "Is M68020 ISA supported",
         .dependencies = featureSet(&[_]Feature{
             .isa_68010,
         }),
     };
-    result[@enumToInt(Feature.isa_68030)] = .{
+    result[@intFromEnum(Feature.isa_68030)] = .{
         .llvm_name = "isa-68030",
         .description = "Is M68030 ISA supported",
         .dependencies = featureSet(&[_]Feature{
             .isa_68020,
         }),
     };
-    result[@enumToInt(Feature.isa_68040)] = .{
+    result[@intFromEnum(Feature.isa_68040)] = .{
         .llvm_name = "isa-68040",
         .description = "Is M68040 ISA supported",
         .dependencies = featureSet(&[_]Feature{
             .isa_68030,
         }),
     };
-    result[@enumToInt(Feature.isa_68060)] = .{
+    result[@intFromEnum(Feature.isa_68060)] = .{
         .llvm_name = "isa-68060",
         .description = "Is M68060 ISA supported",
         .dependencies = featureSet(&[_]Feature{
             .isa_68040,
         }),
     };
-    result[@enumToInt(Feature.reserve_a0)] = .{
+    result[@intFromEnum(Feature.reserve_a0)] = .{
         .llvm_name = "reserve-a0",
         .description = "Reserve A0 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_a1)] = .{
+    result[@intFromEnum(Feature.reserve_a1)] = .{
         .llvm_name = "reserve-a1",
         .description = "Reserve A1 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_a2)] = .{
+    result[@intFromEnum(Feature.reserve_a2)] = .{
         .llvm_name = "reserve-a2",
         .description = "Reserve A2 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_a3)] = .{
+    result[@intFromEnum(Feature.reserve_a3)] = .{
         .llvm_name = "reserve-a3",
         .description = "Reserve A3 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_a4)] = .{
+    result[@intFromEnum(Feature.reserve_a4)] = .{
         .llvm_name = "reserve-a4",
         .description = "Reserve A4 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_a5)] = .{
+    result[@intFromEnum(Feature.reserve_a5)] = .{
         .llvm_name = "reserve-a5",
         .description = "Reserve A5 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_a6)] = .{
+    result[@intFromEnum(Feature.reserve_a6)] = .{
         .llvm_name = "reserve-a6",
         .description = "Reserve A6 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_d0)] = .{
+    result[@intFromEnum(Feature.reserve_d0)] = .{
         .llvm_name = "reserve-d0",
         .description = "Reserve D0 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_d1)] = .{
+    result[@intFromEnum(Feature.reserve_d1)] = .{
         .llvm_name = "reserve-d1",
         .description = "Reserve D1 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_d2)] = .{
+    result[@intFromEnum(Feature.reserve_d2)] = .{
         .llvm_name = "reserve-d2",
         .description = "Reserve D2 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_d3)] = .{
+    result[@intFromEnum(Feature.reserve_d3)] = .{
         .llvm_name = "reserve-d3",
         .description = "Reserve D3 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_d4)] = .{
+    result[@intFromEnum(Feature.reserve_d4)] = .{
         .llvm_name = "reserve-d4",
         .description = "Reserve D4 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_d5)] = .{
+    result[@intFromEnum(Feature.reserve_d5)] = .{
         .llvm_name = "reserve-d5",
         .description = "Reserve D5 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_d6)] = .{
+    result[@intFromEnum(Feature.reserve_d6)] = .{
         .llvm_name = "reserve-d6",
         .description = "Reserve D6 register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_d7)] = .{
+    result[@intFromEnum(Feature.reserve_d7)] = .{
         .llvm_name = "reserve-d7",
         .description = "Reserve D7 register",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/mips.zig
@@ -68,102 +68,102 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.abs2008)] = .{
+    result[@intFromEnum(Feature.abs2008)] = .{
         .llvm_name = "abs2008",
         .description = "Disable IEEE 754-2008 abs.fmt mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cnmips)] = .{
+    result[@intFromEnum(Feature.cnmips)] = .{
         .llvm_name = "cnmips",
         .description = "Octeon cnMIPS Support",
         .dependencies = featureSet(&[_]Feature{
             .mips64r2,
         }),
     };
-    result[@enumToInt(Feature.cnmipsp)] = .{
+    result[@intFromEnum(Feature.cnmipsp)] = .{
         .llvm_name = "cnmipsp",
         .description = "Octeon+ cnMIPS Support",
         .dependencies = featureSet(&[_]Feature{
             .cnmips,
         }),
     };
-    result[@enumToInt(Feature.crc)] = .{
+    result[@intFromEnum(Feature.crc)] = .{
         .llvm_name = "crc",
         .description = "Mips R6 CRC ASE",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dsp)] = .{
+    result[@intFromEnum(Feature.dsp)] = .{
         .llvm_name = "dsp",
         .description = "Mips DSP ASE",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dspr2)] = .{
+    result[@intFromEnum(Feature.dspr2)] = .{
         .llvm_name = "dspr2",
         .description = "Mips DSP-R2 ASE",
         .dependencies = featureSet(&[_]Feature{
             .dsp,
         }),
     };
-    result[@enumToInt(Feature.dspr3)] = .{
+    result[@intFromEnum(Feature.dspr3)] = .{
         .llvm_name = "dspr3",
         .description = "Mips DSP-R3 ASE",
         .dependencies = featureSet(&[_]Feature{
             .dspr2,
         }),
     };
-    result[@enumToInt(Feature.eva)] = .{
+    result[@intFromEnum(Feature.eva)] = .{
         .llvm_name = "eva",
         .description = "Mips EVA ASE",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fp64)] = .{
+    result[@intFromEnum(Feature.fp64)] = .{
         .llvm_name = "fp64",
         .description = "Support 64-bit FP registers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fpxx)] = .{
+    result[@intFromEnum(Feature.fpxx)] = .{
         .llvm_name = "fpxx",
         .description = "Support for FPXX",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ginv)] = .{
+    result[@intFromEnum(Feature.ginv)] = .{
         .llvm_name = "ginv",
         .description = "Mips Global Invalidate ASE",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gp64)] = .{
+    result[@intFromEnum(Feature.gp64)] = .{
         .llvm_name = "gp64",
         .description = "General Purpose Registers are 64-bit wide",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.long_calls)] = .{
+    result[@intFromEnum(Feature.long_calls)] = .{
         .llvm_name = "long-calls",
         .description = "Disable use of the jal instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.micromips)] = .{
+    result[@intFromEnum(Feature.micromips)] = .{
         .llvm_name = "micromips",
         .description = "microMips mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mips1)] = .{
+    result[@intFromEnum(Feature.mips1)] = .{
         .llvm_name = "mips1",
         .description = "Mips I ISA Support [highly experimental]",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mips16)] = .{
+    result[@intFromEnum(Feature.mips16)] = .{
         .llvm_name = "mips16",
         .description = "Mips16 mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mips2)] = .{
+    result[@intFromEnum(Feature.mips2)] = .{
         .llvm_name = "mips2",
         .description = "Mips II ISA Support [highly experimental]",
         .dependencies = featureSet(&[_]Feature{
             .mips1,
         }),
     };
-    result[@enumToInt(Feature.mips3)] = .{
+    result[@intFromEnum(Feature.mips3)] = .{
         .llvm_name = "mips3",
         .description = "MIPS III ISA Support [highly experimental]",
         .dependencies = featureSet(&[_]Feature{
@@ -174,7 +174,7 @@ pub const all_features = blk: {
             .mips3_32r2,
         }),
     };
-    result[@enumToInt(Feature.mips32)] = .{
+    result[@intFromEnum(Feature.mips32)] = .{
         .llvm_name = "mips32",
         .description = "Mips32 ISA Support",
         .dependencies = featureSet(&[_]Feature{
@@ -183,7 +183,7 @@ pub const all_features = blk: {
             .mips4_32,
         }),
     };
-    result[@enumToInt(Feature.mips32r2)] = .{
+    result[@intFromEnum(Feature.mips32r2)] = .{
         .llvm_name = "mips32r2",
         .description = "Mips32r2 ISA Support",
         .dependencies = featureSet(&[_]Feature{
@@ -193,21 +193,21 @@ pub const all_features = blk: {
             .mips5_32r2,
         }),
     };
-    result[@enumToInt(Feature.mips32r3)] = .{
+    result[@intFromEnum(Feature.mips32r3)] = .{
         .llvm_name = "mips32r3",
         .description = "Mips32r3 ISA Support",
         .dependencies = featureSet(&[_]Feature{
             .mips32r2,
         }),
     };
-    result[@enumToInt(Feature.mips32r5)] = .{
+    result[@intFromEnum(Feature.mips32r5)] = .{
         .llvm_name = "mips32r5",
         .description = "Mips32r5 ISA Support",
         .dependencies = featureSet(&[_]Feature{
             .mips32r3,
         }),
     };
-    result[@enumToInt(Feature.mips32r6)] = .{
+    result[@intFromEnum(Feature.mips32r6)] = .{
         .llvm_name = "mips32r6",
         .description = "Mips32r6 ISA Support [experimental]",
         .dependencies = featureSet(&[_]Feature{
@@ -217,22 +217,22 @@ pub const all_features = blk: {
             .nan2008,
         }),
     };
-    result[@enumToInt(Feature.mips3_32)] = .{
+    result[@intFromEnum(Feature.mips3_32)] = .{
         .llvm_name = "mips3_32",
         .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mips3_32r2)] = .{
+    result[@intFromEnum(Feature.mips3_32r2)] = .{
         .llvm_name = "mips3_32r2",
         .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mips3d)] = .{
+    result[@intFromEnum(Feature.mips3d)] = .{
         .llvm_name = "mips3d",
         .description = "Mips 3D ASE",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mips4)] = .{
+    result[@intFromEnum(Feature.mips4)] = .{
         .llvm_name = "mips4",
         .description = "MIPS IV ISA Support",
         .dependencies = featureSet(&[_]Feature{
@@ -241,17 +241,17 @@ pub const all_features = blk: {
             .mips4_32r2,
         }),
     };
-    result[@enumToInt(Feature.mips4_32)] = .{
+    result[@intFromEnum(Feature.mips4_32)] = .{
         .llvm_name = "mips4_32",
         .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mips4_32r2)] = .{
+    result[@intFromEnum(Feature.mips4_32r2)] = .{
         .llvm_name = "mips4_32r2",
         .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mips5)] = .{
+    result[@intFromEnum(Feature.mips5)] = .{
         .llvm_name = "mips5",
         .description = "MIPS V ISA Support [highly experimental]",
         .dependencies = featureSet(&[_]Feature{
@@ -259,12 +259,12 @@ pub const all_features = blk: {
             .mips5_32r2,
         }),
     };
-    result[@enumToInt(Feature.mips5_32r2)] = .{
+    result[@intFromEnum(Feature.mips5_32r2)] = .{
         .llvm_name = "mips5_32r2",
         .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mips64)] = .{
+    result[@intFromEnum(Feature.mips64)] = .{
         .llvm_name = "mips64",
         .description = "Mips64 ISA Support",
         .dependencies = featureSet(&[_]Feature{
@@ -272,7 +272,7 @@ pub const all_features = blk: {
             .mips5,
         }),
     };
-    result[@enumToInt(Feature.mips64r2)] = .{
+    result[@intFromEnum(Feature.mips64r2)] = .{
         .llvm_name = "mips64r2",
         .description = "Mips64r2 ISA Support",
         .dependencies = featureSet(&[_]Feature{
@@ -280,7 +280,7 @@ pub const all_features = blk: {
             .mips64,
         }),
     };
-    result[@enumToInt(Feature.mips64r3)] = .{
+    result[@intFromEnum(Feature.mips64r3)] = .{
         .llvm_name = "mips64r3",
         .description = "Mips64r3 ISA Support",
         .dependencies = featureSet(&[_]Feature{
@@ -288,7 +288,7 @@ pub const all_features = blk: {
             .mips64r2,
         }),
     };
-    result[@enumToInt(Feature.mips64r5)] = .{
+    result[@intFromEnum(Feature.mips64r5)] = .{
         .llvm_name = "mips64r5",
         .description = "Mips64r5 ISA Support",
         .dependencies = featureSet(&[_]Feature{
@@ -296,7 +296,7 @@ pub const all_features = blk: {
             .mips64r3,
         }),
     };
-    result[@enumToInt(Feature.mips64r6)] = .{
+    result[@intFromEnum(Feature.mips64r6)] = .{
         .llvm_name = "mips64r6",
         .description = "Mips64r6 ISA Support [experimental]",
         .dependencies = featureSet(&[_]Feature{
@@ -304,84 +304,84 @@ pub const all_features = blk: {
             .mips64r5,
         }),
     };
-    result[@enumToInt(Feature.msa)] = .{
+    result[@intFromEnum(Feature.msa)] = .{
         .llvm_name = "msa",
         .description = "Mips MSA ASE",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mt)] = .{
+    result[@intFromEnum(Feature.mt)] = .{
         .llvm_name = "mt",
         .description = "Mips MT ASE",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nan2008)] = .{
+    result[@intFromEnum(Feature.nan2008)] = .{
         .llvm_name = "nan2008",
         .description = "IEEE 754-2008 NaN encoding",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.noabicalls)] = .{
+    result[@intFromEnum(Feature.noabicalls)] = .{
         .llvm_name = "noabicalls",
         .description = "Disable SVR4-style position-independent code",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nomadd4)] = .{
+    result[@intFromEnum(Feature.nomadd4)] = .{
         .llvm_name = "nomadd4",
         .description = "Disable 4-operand madd.fmt and related instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nooddspreg)] = .{
+    result[@intFromEnum(Feature.nooddspreg)] = .{
         .llvm_name = "nooddspreg",
         .description = "Disable odd numbered single-precision registers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.p5600)] = .{
+    result[@intFromEnum(Feature.p5600)] = .{
         .llvm_name = "p5600",
         .description = "The P5600 Processor",
         .dependencies = featureSet(&[_]Feature{
             .mips32r5,
         }),
     };
-    result[@enumToInt(Feature.ptr64)] = .{
+    result[@intFromEnum(Feature.ptr64)] = .{
         .llvm_name = "ptr64",
         .description = "Pointers are 64-bit wide",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.single_float)] = .{
+    result[@intFromEnum(Feature.single_float)] = .{
         .llvm_name = "single-float",
         .description = "Only supports single precision float",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.soft_float)] = .{
+    result[@intFromEnum(Feature.soft_float)] = .{
         .llvm_name = "soft-float",
         .description = "Does not support floating point instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sym32)] = .{
+    result[@intFromEnum(Feature.sym32)] = .{
         .llvm_name = "sym32",
         .description = "Symbols are 32 bit on Mips64",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.use_indirect_jump_hazard)] = .{
+    result[@intFromEnum(Feature.use_indirect_jump_hazard)] = .{
         .llvm_name = "use-indirect-jump-hazard",
         .description = "Use indirect jump guards to prevent certain speculation based attacks",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.use_tcc_in_div)] = .{
+    result[@intFromEnum(Feature.use_tcc_in_div)] = .{
         .llvm_name = "use-tcc-in-div",
         .description = "Force the assembler to use trapping",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vfpu)] = .{
+    result[@intFromEnum(Feature.vfpu)] = .{
         .llvm_name = "vfpu",
         .description = "Enable vector FPU instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.virt)] = .{
+    result[@intFromEnum(Feature.virt)] = .{
         .llvm_name = "virt",
         .description = "Mips Virtualization ASE",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.xgot)] = .{
+    result[@intFromEnum(Feature.xgot)] = .{
         .llvm_name = "xgot",
         .description = "Assume 32-bit GOT",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/msp430.zig
@@ -20,22 +20,22 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.ext)] = .{
+    result[@intFromEnum(Feature.ext)] = .{
         .llvm_name = "ext",
         .description = "Enable MSP430-X extensions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hwmult16)] = .{
+    result[@intFromEnum(Feature.hwmult16)] = .{
         .llvm_name = "hwmult16",
         .description = "Enable 16-bit hardware multiplier",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hwmult32)] = .{
+    result[@intFromEnum(Feature.hwmult32)] = .{
         .llvm_name = "hwmult32",
         .description = "Enable 32-bit hardware multiplier",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hwmultf5)] = .{
+    result[@intFromEnum(Feature.hwmultf5)] = .{
         .llvm_name = "hwmultf5",
         .description = "Enable F5 series hardware multiplier",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/nvptx.zig
@@ -56,202 +56,202 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.ptx32)] = .{
+    result[@intFromEnum(Feature.ptx32)] = .{
         .llvm_name = "ptx32",
         .description = "Use PTX version 3.2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx40)] = .{
+    result[@intFromEnum(Feature.ptx40)] = .{
         .llvm_name = "ptx40",
         .description = "Use PTX version 4.0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx41)] = .{
+    result[@intFromEnum(Feature.ptx41)] = .{
         .llvm_name = "ptx41",
         .description = "Use PTX version 4.1",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx42)] = .{
+    result[@intFromEnum(Feature.ptx42)] = .{
         .llvm_name = "ptx42",
         .description = "Use PTX version 4.2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx43)] = .{
+    result[@intFromEnum(Feature.ptx43)] = .{
         .llvm_name = "ptx43",
         .description = "Use PTX version 4.3",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx50)] = .{
+    result[@intFromEnum(Feature.ptx50)] = .{
         .llvm_name = "ptx50",
         .description = "Use PTX version 5.0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx60)] = .{
+    result[@intFromEnum(Feature.ptx60)] = .{
         .llvm_name = "ptx60",
         .description = "Use PTX version 6.0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx61)] = .{
+    result[@intFromEnum(Feature.ptx61)] = .{
         .llvm_name = "ptx61",
         .description = "Use PTX version 6.1",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx63)] = .{
+    result[@intFromEnum(Feature.ptx63)] = .{
         .llvm_name = "ptx63",
         .description = "Use PTX version 6.3",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx64)] = .{
+    result[@intFromEnum(Feature.ptx64)] = .{
         .llvm_name = "ptx64",
         .description = "Use PTX version 6.4",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx65)] = .{
+    result[@intFromEnum(Feature.ptx65)] = .{
         .llvm_name = "ptx65",
         .description = "Use PTX version 6.5",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx70)] = .{
+    result[@intFromEnum(Feature.ptx70)] = .{
         .llvm_name = "ptx70",
         .description = "Use PTX version 7.0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx71)] = .{
+    result[@intFromEnum(Feature.ptx71)] = .{
         .llvm_name = "ptx71",
         .description = "Use PTX version 7.1",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx72)] = .{
+    result[@intFromEnum(Feature.ptx72)] = .{
         .llvm_name = "ptx72",
         .description = "Use PTX version 7.2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx73)] = .{
+    result[@intFromEnum(Feature.ptx73)] = .{
         .llvm_name = "ptx73",
         .description = "Use PTX version 7.3",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx74)] = .{
+    result[@intFromEnum(Feature.ptx74)] = .{
         .llvm_name = "ptx74",
         .description = "Use PTX version 7.4",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx75)] = .{
+    result[@intFromEnum(Feature.ptx75)] = .{
         .llvm_name = "ptx75",
         .description = "Use PTX version 7.5",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx76)] = .{
+    result[@intFromEnum(Feature.ptx76)] = .{
         .llvm_name = "ptx76",
         .description = "Use PTX version 7.6",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx77)] = .{
+    result[@intFromEnum(Feature.ptx77)] = .{
         .llvm_name = "ptx77",
         .description = "Use PTX version 7.7",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptx78)] = .{
+    result[@intFromEnum(Feature.ptx78)] = .{
         .llvm_name = "ptx78",
         .description = "Use PTX version 7.8",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_20)] = .{
+    result[@intFromEnum(Feature.sm_20)] = .{
         .llvm_name = "sm_20",
         .description = "Target SM 2.0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_21)] = .{
+    result[@intFromEnum(Feature.sm_21)] = .{
         .llvm_name = "sm_21",
         .description = "Target SM 2.1",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_30)] = .{
+    result[@intFromEnum(Feature.sm_30)] = .{
         .llvm_name = "sm_30",
         .description = "Target SM 3.0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_32)] = .{
+    result[@intFromEnum(Feature.sm_32)] = .{
         .llvm_name = "sm_32",
         .description = "Target SM 3.2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_35)] = .{
+    result[@intFromEnum(Feature.sm_35)] = .{
         .llvm_name = "sm_35",
         .description = "Target SM 3.5",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_37)] = .{
+    result[@intFromEnum(Feature.sm_37)] = .{
         .llvm_name = "sm_37",
         .description = "Target SM 3.7",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_50)] = .{
+    result[@intFromEnum(Feature.sm_50)] = .{
         .llvm_name = "sm_50",
         .description = "Target SM 5.0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_52)] = .{
+    result[@intFromEnum(Feature.sm_52)] = .{
         .llvm_name = "sm_52",
         .description = "Target SM 5.2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_53)] = .{
+    result[@intFromEnum(Feature.sm_53)] = .{
         .llvm_name = "sm_53",
         .description = "Target SM 5.3",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_60)] = .{
+    result[@intFromEnum(Feature.sm_60)] = .{
         .llvm_name = "sm_60",
         .description = "Target SM 6.0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_61)] = .{
+    result[@intFromEnum(Feature.sm_61)] = .{
         .llvm_name = "sm_61",
         .description = "Target SM 6.1",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_62)] = .{
+    result[@intFromEnum(Feature.sm_62)] = .{
         .llvm_name = "sm_62",
         .description = "Target SM 6.2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_70)] = .{
+    result[@intFromEnum(Feature.sm_70)] = .{
         .llvm_name = "sm_70",
         .description = "Target SM 7.0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_72)] = .{
+    result[@intFromEnum(Feature.sm_72)] = .{
         .llvm_name = "sm_72",
         .description = "Target SM 7.2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_75)] = .{
+    result[@intFromEnum(Feature.sm_75)] = .{
         .llvm_name = "sm_75",
         .description = "Target SM 7.5",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_80)] = .{
+    result[@intFromEnum(Feature.sm_80)] = .{
         .llvm_name = "sm_80",
         .description = "Target SM 8.0",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_86)] = .{
+    result[@intFromEnum(Feature.sm_86)] = .{
         .llvm_name = "sm_86",
         .description = "Target SM 8.6",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_87)] = .{
+    result[@intFromEnum(Feature.sm_87)] = .{
         .llvm_name = "sm_87",
         .description = "Target SM 8.7",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_89)] = .{
+    result[@intFromEnum(Feature.sm_89)] = .{
         .llvm_name = "sm_89",
         .description = "Target SM 8.9",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sm_90)] = .{
+    result[@intFromEnum(Feature.sm_90)] = .{
         .llvm_name = "sm_90",
         .description = "Target SM 9.0",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/powerpc.zig
@@ -97,329 +97,329 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.@"64bit")] = .{
+    result[@intFromEnum(Feature.@"64bit")] = .{
         .llvm_name = "64bit",
         .description = "Enable 64-bit instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.@"64bitregs")] = .{
+    result[@intFromEnum(Feature.@"64bitregs")] = .{
         .llvm_name = "64bitregs",
         .description = "Enable 64-bit registers usage for ppc32 [beta]",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.aix)] = .{
+    result[@intFromEnum(Feature.aix)] = .{
         .llvm_name = "aix",
         .description = "AIX OS",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.allow_unaligned_fp_access)] = .{
+    result[@intFromEnum(Feature.allow_unaligned_fp_access)] = .{
         .llvm_name = "allow-unaligned-fp-access",
         .description = "CPU does not trap on unaligned FP access",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.altivec)] = .{
+    result[@intFromEnum(Feature.altivec)] = .{
         .llvm_name = "altivec",
         .description = "Enable Altivec instructions",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.booke)] = .{
+    result[@intFromEnum(Feature.booke)] = .{
         .llvm_name = "booke",
         .description = "Enable Book E instructions",
         .dependencies = featureSet(&[_]Feature{
             .icbt,
         }),
     };
-    result[@enumToInt(Feature.bpermd)] = .{
+    result[@intFromEnum(Feature.bpermd)] = .{
         .llvm_name = "bpermd",
         .description = "Enable the bpermd instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cmpb)] = .{
+    result[@intFromEnum(Feature.cmpb)] = .{
         .llvm_name = "cmpb",
         .description = "Enable the cmpb instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.crbits)] = .{
+    result[@intFromEnum(Feature.crbits)] = .{
         .llvm_name = "crbits",
         .description = "Use condition-register bits individually",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.crypto)] = .{
+    result[@intFromEnum(Feature.crypto)] = .{
         .llvm_name = "crypto",
         .description = "Enable POWER8 Crypto instructions",
         .dependencies = featureSet(&[_]Feature{
             .power8_altivec,
         }),
     };
-    result[@enumToInt(Feature.direct_move)] = .{
+    result[@intFromEnum(Feature.direct_move)] = .{
         .llvm_name = "direct-move",
         .description = "Enable Power8 direct move instructions",
         .dependencies = featureSet(&[_]Feature{
             .vsx,
         }),
     };
-    result[@enumToInt(Feature.e500)] = .{
+    result[@intFromEnum(Feature.e500)] = .{
         .llvm_name = "e500",
         .description = "Enable E500/E500mc instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.efpu2)] = .{
+    result[@intFromEnum(Feature.efpu2)] = .{
         .llvm_name = "efpu2",
         .description = "Enable Embedded Floating-Point APU 2 instructions",
         .dependencies = featureSet(&[_]Feature{
             .spe,
         }),
     };
-    result[@enumToInt(Feature.extdiv)] = .{
+    result[@intFromEnum(Feature.extdiv)] = .{
         .llvm_name = "extdiv",
         .description = "Enable extended divide instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_MFLR)] = .{
+    result[@intFromEnum(Feature.fast_MFLR)] = .{
         .llvm_name = "fast-MFLR",
         .description = "MFLR is a fast instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fcpsgn)] = .{
+    result[@intFromEnum(Feature.fcpsgn)] = .{
         .llvm_name = "fcpsgn",
         .description = "Enable the fcpsgn instruction",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.float128)] = .{
+    result[@intFromEnum(Feature.float128)] = .{
         .llvm_name = "float128",
         .description = "Enable the __float128 data type for IEEE-754R Binary128.",
         .dependencies = featureSet(&[_]Feature{
             .vsx,
         }),
     };
-    result[@enumToInt(Feature.fpcvt)] = .{
+    result[@intFromEnum(Feature.fpcvt)] = .{
         .llvm_name = "fpcvt",
         .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.fprnd)] = .{
+    result[@intFromEnum(Feature.fprnd)] = .{
         .llvm_name = "fprnd",
         .description = "Enable the fri[mnpz] instructions",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.fpu)] = .{
+    result[@intFromEnum(Feature.fpu)] = .{
         .llvm_name = "fpu",
         .description = "Enable classic FPU instructions",
         .dependencies = featureSet(&[_]Feature{
             .hard_float,
         }),
     };
-    result[@enumToInt(Feature.fre)] = .{
+    result[@intFromEnum(Feature.fre)] = .{
         .llvm_name = "fre",
         .description = "Enable the fre instruction",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.fres)] = .{
+    result[@intFromEnum(Feature.fres)] = .{
         .llvm_name = "fres",
         .description = "Enable the fres instruction",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.frsqrte)] = .{
+    result[@intFromEnum(Feature.frsqrte)] = .{
         .llvm_name = "frsqrte",
         .description = "Enable the frsqrte instruction",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.frsqrtes)] = .{
+    result[@intFromEnum(Feature.frsqrtes)] = .{
         .llvm_name = "frsqrtes",
         .description = "Enable the frsqrtes instruction",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.fsqrt)] = .{
+    result[@intFromEnum(Feature.fsqrt)] = .{
         .llvm_name = "fsqrt",
         .description = "Enable the fsqrt instruction",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.fuse_add_logical)] = .{
+    result[@intFromEnum(Feature.fuse_add_logical)] = .{
         .llvm_name = "fuse-add-logical",
         .description = "Target supports Add with Logical Operations fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_addi_load)] = .{
+    result[@intFromEnum(Feature.fuse_addi_load)] = .{
         .llvm_name = "fuse-addi-load",
         .description = "Power8 Addi-Load fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_addis_load)] = .{
+    result[@intFromEnum(Feature.fuse_addis_load)] = .{
         .llvm_name = "fuse-addis-load",
         .description = "Power8 Addis-Load fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_arith_add)] = .{
+    result[@intFromEnum(Feature.fuse_arith_add)] = .{
         .llvm_name = "fuse-arith-add",
         .description = "Target supports Arithmetic Operations with Add fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_back2back)] = .{
+    result[@intFromEnum(Feature.fuse_back2back)] = .{
         .llvm_name = "fuse-back2back",
         .description = "Target supports general back to back fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_cmp)] = .{
+    result[@intFromEnum(Feature.fuse_cmp)] = .{
         .llvm_name = "fuse-cmp",
         .description = "Target supports Comparison Operations fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_logical)] = .{
+    result[@intFromEnum(Feature.fuse_logical)] = .{
         .llvm_name = "fuse-logical",
         .description = "Target supports Logical Operations fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_logical_add)] = .{
+    result[@intFromEnum(Feature.fuse_logical_add)] = .{
         .llvm_name = "fuse-logical-add",
         .description = "Target supports Logical with Add Operations fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_sha3)] = .{
+    result[@intFromEnum(Feature.fuse_sha3)] = .{
         .llvm_name = "fuse-sha3",
         .description = "Target supports SHA3 assist fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_store)] = .{
+    result[@intFromEnum(Feature.fuse_store)] = .{
         .llvm_name = "fuse-store",
         .description = "Target supports store clustering",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_wideimm)] = .{
+    result[@intFromEnum(Feature.fuse_wideimm)] = .{
         .llvm_name = "fuse-wideimm",
         .description = "Target supports Wide-Immediate fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fuse_zeromove)] = .{
+    result[@intFromEnum(Feature.fuse_zeromove)] = .{
         .llvm_name = "fuse-zeromove",
         .description = "Target supports move to SPR with branch fusion",
         .dependencies = featureSet(&[_]Feature{
             .fusion,
         }),
     };
-    result[@enumToInt(Feature.fusion)] = .{
+    result[@intFromEnum(Feature.fusion)] = .{
         .llvm_name = "fusion",
         .description = "Target supports instruction fusion",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hard_float)] = .{
+    result[@intFromEnum(Feature.hard_float)] = .{
         .llvm_name = "hard-float",
         .description = "Enable floating-point instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.htm)] = .{
+    result[@intFromEnum(Feature.htm)] = .{
         .llvm_name = "htm",
         .description = "Enable Hardware Transactional Memory instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.icbt)] = .{
+    result[@intFromEnum(Feature.icbt)] = .{
         .llvm_name = "icbt",
         .description = "Enable icbt instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.invariant_function_descriptors)] = .{
+    result[@intFromEnum(Feature.invariant_function_descriptors)] = .{
         .llvm_name = "invariant-function-descriptors",
         .description = "Assume function descriptors are invariant",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.isa_future_instructions)] = .{
+    result[@intFromEnum(Feature.isa_future_instructions)] = .{
         .llvm_name = "isa-future-instructions",
         .description = "Enable instructions for Future ISA.",
         .dependencies = featureSet(&[_]Feature{
             .isa_v31_instructions,
         }),
     };
-    result[@enumToInt(Feature.isa_v206_instructions)] = .{
+    result[@intFromEnum(Feature.isa_v206_instructions)] = .{
         .llvm_name = "isa-v206-instructions",
         .description = "Enable instructions in ISA 2.06.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.isa_v207_instructions)] = .{
+    result[@intFromEnum(Feature.isa_v207_instructions)] = .{
         .llvm_name = "isa-v207-instructions",
         .description = "Enable instructions in ISA 2.07.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.isa_v30_instructions)] = .{
+    result[@intFromEnum(Feature.isa_v30_instructions)] = .{
         .llvm_name = "isa-v30-instructions",
         .description = "Enable instructions in ISA 3.0.",
         .dependencies = featureSet(&[_]Feature{
             .isa_v207_instructions,
         }),
     };
-    result[@enumToInt(Feature.isa_v31_instructions)] = .{
+    result[@intFromEnum(Feature.isa_v31_instructions)] = .{
         .llvm_name = "isa-v31-instructions",
         .description = "Enable instructions in ISA 3.1.",
         .dependencies = featureSet(&[_]Feature{
             .isa_v30_instructions,
         }),
     };
-    result[@enumToInt(Feature.isel)] = .{
+    result[@intFromEnum(Feature.isel)] = .{
         .llvm_name = "isel",
         .description = "Enable the isel instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ldbrx)] = .{
+    result[@intFromEnum(Feature.ldbrx)] = .{
         .llvm_name = "ldbrx",
         .description = "Enable the ldbrx instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lfiwax)] = .{
+    result[@intFromEnum(Feature.lfiwax)] = .{
         .llvm_name = "lfiwax",
         .description = "Enable the lfiwax instruction",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.longcall)] = .{
+    result[@intFromEnum(Feature.longcall)] = .{
         .llvm_name = "longcall",
         .description = "Always use indirect calls",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mfocrf)] = .{
+    result[@intFromEnum(Feature.mfocrf)] = .{
         .llvm_name = "mfocrf",
         .description = "Enable the MFOCRF instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mma)] = .{
+    result[@intFromEnum(Feature.mma)] = .{
         .llvm_name = "mma",
         .description = "Enable MMA instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -428,43 +428,43 @@ pub const all_features = blk: {
             .power9_altivec,
         }),
     };
-    result[@enumToInt(Feature.modern_aix_as)] = .{
+    result[@intFromEnum(Feature.modern_aix_as)] = .{
         .llvm_name = "modern-aix-as",
         .description = "AIX system assembler is modern enough to support new mnes",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.msync)] = .{
+    result[@intFromEnum(Feature.msync)] = .{
         .llvm_name = "msync",
         .description = "Has only the msync instruction instead of sync",
         .dependencies = featureSet(&[_]Feature{
             .booke,
         }),
     };
-    result[@enumToInt(Feature.paired_vector_memops)] = .{
+    result[@intFromEnum(Feature.paired_vector_memops)] = .{
         .llvm_name = "paired-vector-memops",
         .description = "32Byte load and store instructions",
         .dependencies = featureSet(&[_]Feature{
             .isa_v30_instructions,
         }),
     };
-    result[@enumToInt(Feature.partword_atomics)] = .{
+    result[@intFromEnum(Feature.partword_atomics)] = .{
         .llvm_name = "partword-atomics",
         .description = "Enable l[bh]arx and st[bh]cx.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.pcrelative_memops)] = .{
+    result[@intFromEnum(Feature.pcrelative_memops)] = .{
         .llvm_name = "pcrelative-memops",
         .description = "Enable PC relative Memory Ops",
         .dependencies = featureSet(&[_]Feature{
             .prefix_instrs,
         }),
     };
-    result[@enumToInt(Feature.popcntd)] = .{
+    result[@intFromEnum(Feature.popcntd)] = .{
         .llvm_name = "popcntd",
         .description = "Enable the popcnt[dw] instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.power10_vector)] = .{
+    result[@intFromEnum(Feature.power10_vector)] = .{
         .llvm_name = "power10-vector",
         .description = "Enable POWER10 vector instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -472,14 +472,14 @@ pub const all_features = blk: {
             .power9_vector,
         }),
     };
-    result[@enumToInt(Feature.power8_altivec)] = .{
+    result[@intFromEnum(Feature.power8_altivec)] = .{
         .llvm_name = "power8-altivec",
         .description = "Enable POWER8 Altivec instructions",
         .dependencies = featureSet(&[_]Feature{
             .altivec,
         }),
     };
-    result[@enumToInt(Feature.power8_vector)] = .{
+    result[@intFromEnum(Feature.power8_vector)] = .{
         .llvm_name = "power8-vector",
         .description = "Enable POWER8 vector instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -487,7 +487,7 @@ pub const all_features = blk: {
             .vsx,
         }),
     };
-    result[@enumToInt(Feature.power9_altivec)] = .{
+    result[@intFromEnum(Feature.power9_altivec)] = .{
         .llvm_name = "power9-altivec",
         .description = "Enable POWER9 Altivec instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -495,7 +495,7 @@ pub const all_features = blk: {
             .power8_altivec,
         }),
     };
-    result[@enumToInt(Feature.power9_vector)] = .{
+    result[@intFromEnum(Feature.power9_vector)] = .{
         .llvm_name = "power9-vector",
         .description = "Enable POWER9 vector instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -503,32 +503,32 @@ pub const all_features = blk: {
             .power9_altivec,
         }),
     };
-    result[@enumToInt(Feature.ppc4xx)] = .{
+    result[@intFromEnum(Feature.ppc4xx)] = .{
         .llvm_name = "ppc4xx",
         .description = "Enable PPC 4xx instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ppc6xx)] = .{
+    result[@intFromEnum(Feature.ppc6xx)] = .{
         .llvm_name = "ppc6xx",
         .description = "Enable PPC 6xx instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ppc_postra_sched)] = .{
+    result[@intFromEnum(Feature.ppc_postra_sched)] = .{
         .llvm_name = "ppc-postra-sched",
         .description = "Use PowerPC post-RA scheduling strategy",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ppc_prera_sched)] = .{
+    result[@intFromEnum(Feature.ppc_prera_sched)] = .{
         .llvm_name = "ppc-prera-sched",
         .description = "Use PowerPC pre-RA scheduling strategy",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.predictable_select_expensive)] = .{
+    result[@intFromEnum(Feature.predictable_select_expensive)] = .{
         .llvm_name = "predictable-select-expensive",
         .description = "Prefer likely predicted branches over selects",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prefix_instrs)] = .{
+    result[@intFromEnum(Feature.prefix_instrs)] = .{
         .llvm_name = "prefix-instrs",
         .description = "Enable prefixed instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -536,61 +536,61 @@ pub const all_features = blk: {
             .power9_altivec,
         }),
     };
-    result[@enumToInt(Feature.privileged)] = .{
+    result[@intFromEnum(Feature.privileged)] = .{
         .llvm_name = "privileged",
         .description = "Add privileged instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.quadword_atomics)] = .{
+    result[@intFromEnum(Feature.quadword_atomics)] = .{
         .llvm_name = "quadword-atomics",
         .description = "Enable lqarx and stqcx.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.recipprec)] = .{
+    result[@intFromEnum(Feature.recipprec)] = .{
         .llvm_name = "recipprec",
         .description = "Assume higher precision reciprocal estimates",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rop_protect)] = .{
+    result[@intFromEnum(Feature.rop_protect)] = .{
         .llvm_name = "rop-protect",
         .description = "Add ROP protect",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.secure_plt)] = .{
+    result[@intFromEnum(Feature.secure_plt)] = .{
         .llvm_name = "secure-plt",
         .description = "Enable secure plt mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_popcntd)] = .{
+    result[@intFromEnum(Feature.slow_popcntd)] = .{
         .llvm_name = "slow-popcntd",
         .description = "Has slow popcnt[dw] instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.spe)] = .{
+    result[@intFromEnum(Feature.spe)] = .{
         .llvm_name = "spe",
         .description = "Enable SPE instructions",
         .dependencies = featureSet(&[_]Feature{
             .hard_float,
         }),
     };
-    result[@enumToInt(Feature.stfiwx)] = .{
+    result[@intFromEnum(Feature.stfiwx)] = .{
         .llvm_name = "stfiwx",
         .description = "Enable the stfiwx instruction",
         .dependencies = featureSet(&[_]Feature{
             .fpu,
         }),
     };
-    result[@enumToInt(Feature.two_const_nr)] = .{
+    result[@intFromEnum(Feature.two_const_nr)] = .{
         .llvm_name = "two-const-nr",
         .description = "Requires two constant Newton-Raphson computation",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vectors_use_two_units)] = .{
+    result[@intFromEnum(Feature.vectors_use_two_units)] = .{
         .llvm_name = "vectors-use-two-units",
         .description = "Vectors use two units",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vsx)] = .{
+    result[@intFromEnum(Feature.vsx)] = .{
         .llvm_name = "vsx",
         .description = "Enable VSX instructions",
         .dependencies = featureSet(&[_]Feature{
lib/std/target/riscv.zig
@@ -124,311 +124,311 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.@"32bit")] = .{
+    result[@intFromEnum(Feature.@"32bit")] = .{
         .llvm_name = "32bit",
         .description = "Implements RV32",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.@"64bit")] = .{
+    result[@intFromEnum(Feature.@"64bit")] = .{
         .llvm_name = "64bit",
         .description = "Implements RV64",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.a)] = .{
+    result[@intFromEnum(Feature.a)] = .{
         .llvm_name = "a",
         .description = "'A' (Atomic Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.c)] = .{
+    result[@intFromEnum(Feature.c)] = .{
         .llvm_name = "c",
         .description = "'C' (Compressed Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.d)] = .{
+    result[@intFromEnum(Feature.d)] = .{
         .llvm_name = "d",
         .description = "'D' (Double-Precision Floating-Point)",
         .dependencies = featureSet(&[_]Feature{
             .f,
         }),
     };
-    result[@enumToInt(Feature.e)] = .{
+    result[@intFromEnum(Feature.e)] = .{
         .llvm_name = "e",
         .description = "Implements RV32E (provides 16 rather than 32 GPRs)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.experimental_zawrs)] = .{
+    result[@intFromEnum(Feature.experimental_zawrs)] = .{
         .llvm_name = "experimental-zawrs",
         .description = "'Zawrs' (Wait on Reservation Set)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.experimental_zca)] = .{
+    result[@intFromEnum(Feature.experimental_zca)] = .{
         .llvm_name = "experimental-zca",
         .description = "'Zca' (part of the C extension, excluding compressed floating point loads/stores)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.experimental_zcd)] = .{
+    result[@intFromEnum(Feature.experimental_zcd)] = .{
         .llvm_name = "experimental-zcd",
         .description = "'Zcd' (Compressed Double-Precision Floating-Point Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.experimental_zcf)] = .{
+    result[@intFromEnum(Feature.experimental_zcf)] = .{
         .llvm_name = "experimental-zcf",
         .description = "'Zcf' (Compressed Single-Precision Floating-Point Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.experimental_zihintntl)] = .{
+    result[@intFromEnum(Feature.experimental_zihintntl)] = .{
         .llvm_name = "experimental-zihintntl",
         .description = "'zihintntl' (Non-Temporal Locality Hints)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.experimental_ztso)] = .{
+    result[@intFromEnum(Feature.experimental_ztso)] = .{
         .llvm_name = "experimental-ztso",
         .description = "'Ztso' (Memory Model - Total Store Order)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.experimental_zvfh)] = .{
+    result[@intFromEnum(Feature.experimental_zvfh)] = .{
         .llvm_name = "experimental-zvfh",
         .description = "'Zvfh' (Vector Half-Precision Floating-Point)",
         .dependencies = featureSet(&[_]Feature{
             .zve32f,
         }),
     };
-    result[@enumToInt(Feature.f)] = .{
+    result[@intFromEnum(Feature.f)] = .{
         .llvm_name = "f",
         .description = "'F' (Single-Precision Floating-Point)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.forced_atomics)] = .{
+    result[@intFromEnum(Feature.forced_atomics)] = .{
         .llvm_name = "forced-atomics",
         .description = "Assume that lock-free native-width atomics are available",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.h)] = .{
+    result[@intFromEnum(Feature.h)] = .{
         .llvm_name = "h",
         .description = "'H' (Hypervisor)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lui_addi_fusion)] = .{
+    result[@intFromEnum(Feature.lui_addi_fusion)] = .{
         .llvm_name = "lui-addi-fusion",
         .description = "Enable LUI+ADDI macrofusion",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.m)] = .{
+    result[@intFromEnum(Feature.m)] = .{
         .llvm_name = "m",
         .description = "'M' (Integer Multiplication and Division)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_default_unroll)] = .{
+    result[@intFromEnum(Feature.no_default_unroll)] = .{
         .llvm_name = "no-default-unroll",
         .description = "Disable default unroll preference.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_optimized_zero_stride_load)] = .{
+    result[@intFromEnum(Feature.no_optimized_zero_stride_load)] = .{
         .llvm_name = "no-optimized-zero-stride-load",
         .description = "Hasn't optimized (perform fewer memory operations)zero-stride vector load",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_rvc_hints)] = .{
+    result[@intFromEnum(Feature.no_rvc_hints)] = .{
         .llvm_name = "no-rvc-hints",
         .description = "Disable RVC Hint Instructions.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.relax)] = .{
+    result[@intFromEnum(Feature.relax)] = .{
         .llvm_name = "relax",
         .description = "Enable Linker relaxation.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x1)] = .{
+    result[@intFromEnum(Feature.reserve_x1)] = .{
         .llvm_name = "reserve-x1",
         .description = "Reserve X1",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x10)] = .{
+    result[@intFromEnum(Feature.reserve_x10)] = .{
         .llvm_name = "reserve-x10",
         .description = "Reserve X10",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x11)] = .{
+    result[@intFromEnum(Feature.reserve_x11)] = .{
         .llvm_name = "reserve-x11",
         .description = "Reserve X11",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x12)] = .{
+    result[@intFromEnum(Feature.reserve_x12)] = .{
         .llvm_name = "reserve-x12",
         .description = "Reserve X12",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x13)] = .{
+    result[@intFromEnum(Feature.reserve_x13)] = .{
         .llvm_name = "reserve-x13",
         .description = "Reserve X13",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x14)] = .{
+    result[@intFromEnum(Feature.reserve_x14)] = .{
         .llvm_name = "reserve-x14",
         .description = "Reserve X14",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x15)] = .{
+    result[@intFromEnum(Feature.reserve_x15)] = .{
         .llvm_name = "reserve-x15",
         .description = "Reserve X15",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x16)] = .{
+    result[@intFromEnum(Feature.reserve_x16)] = .{
         .llvm_name = "reserve-x16",
         .description = "Reserve X16",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x17)] = .{
+    result[@intFromEnum(Feature.reserve_x17)] = .{
         .llvm_name = "reserve-x17",
         .description = "Reserve X17",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x18)] = .{
+    result[@intFromEnum(Feature.reserve_x18)] = .{
         .llvm_name = "reserve-x18",
         .description = "Reserve X18",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x19)] = .{
+    result[@intFromEnum(Feature.reserve_x19)] = .{
         .llvm_name = "reserve-x19",
         .description = "Reserve X19",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x2)] = .{
+    result[@intFromEnum(Feature.reserve_x2)] = .{
         .llvm_name = "reserve-x2",
         .description = "Reserve X2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x20)] = .{
+    result[@intFromEnum(Feature.reserve_x20)] = .{
         .llvm_name = "reserve-x20",
         .description = "Reserve X20",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x21)] = .{
+    result[@intFromEnum(Feature.reserve_x21)] = .{
         .llvm_name = "reserve-x21",
         .description = "Reserve X21",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x22)] = .{
+    result[@intFromEnum(Feature.reserve_x22)] = .{
         .llvm_name = "reserve-x22",
         .description = "Reserve X22",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x23)] = .{
+    result[@intFromEnum(Feature.reserve_x23)] = .{
         .llvm_name = "reserve-x23",
         .description = "Reserve X23",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x24)] = .{
+    result[@intFromEnum(Feature.reserve_x24)] = .{
         .llvm_name = "reserve-x24",
         .description = "Reserve X24",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x25)] = .{
+    result[@intFromEnum(Feature.reserve_x25)] = .{
         .llvm_name = "reserve-x25",
         .description = "Reserve X25",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x26)] = .{
+    result[@intFromEnum(Feature.reserve_x26)] = .{
         .llvm_name = "reserve-x26",
         .description = "Reserve X26",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x27)] = .{
+    result[@intFromEnum(Feature.reserve_x27)] = .{
         .llvm_name = "reserve-x27",
         .description = "Reserve X27",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x28)] = .{
+    result[@intFromEnum(Feature.reserve_x28)] = .{
         .llvm_name = "reserve-x28",
         .description = "Reserve X28",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x29)] = .{
+    result[@intFromEnum(Feature.reserve_x29)] = .{
         .llvm_name = "reserve-x29",
         .description = "Reserve X29",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x3)] = .{
+    result[@intFromEnum(Feature.reserve_x3)] = .{
         .llvm_name = "reserve-x3",
         .description = "Reserve X3",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x30)] = .{
+    result[@intFromEnum(Feature.reserve_x30)] = .{
         .llvm_name = "reserve-x30",
         .description = "Reserve X30",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x31)] = .{
+    result[@intFromEnum(Feature.reserve_x31)] = .{
         .llvm_name = "reserve-x31",
         .description = "Reserve X31",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x4)] = .{
+    result[@intFromEnum(Feature.reserve_x4)] = .{
         .llvm_name = "reserve-x4",
         .description = "Reserve X4",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x5)] = .{
+    result[@intFromEnum(Feature.reserve_x5)] = .{
         .llvm_name = "reserve-x5",
         .description = "Reserve X5",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x6)] = .{
+    result[@intFromEnum(Feature.reserve_x6)] = .{
         .llvm_name = "reserve-x6",
         .description = "Reserve X6",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x7)] = .{
+    result[@intFromEnum(Feature.reserve_x7)] = .{
         .llvm_name = "reserve-x7",
         .description = "Reserve X7",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x8)] = .{
+    result[@intFromEnum(Feature.reserve_x8)] = .{
         .llvm_name = "reserve-x8",
         .description = "Reserve X8",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reserve_x9)] = .{
+    result[@intFromEnum(Feature.reserve_x9)] = .{
         .llvm_name = "reserve-x9",
         .description = "Reserve X9",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.save_restore)] = .{
+    result[@intFromEnum(Feature.save_restore)] = .{
         .llvm_name = "save-restore",
         .description = "Enable save/restore.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.short_forward_branch_opt)] = .{
+    result[@intFromEnum(Feature.short_forward_branch_opt)] = .{
         .llvm_name = "short-forward-branch-opt",
         .description = "Enable short forward branch optimization",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.svinval)] = .{
+    result[@intFromEnum(Feature.svinval)] = .{
         .llvm_name = "svinval",
         .description = "'Svinval' (Fine-Grained Address-Translation Cache Invalidation)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.svnapot)] = .{
+    result[@intFromEnum(Feature.svnapot)] = .{
         .llvm_name = "svnapot",
         .description = "'Svnapot' (NAPOT Translation Contiguity)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.svpbmt)] = .{
+    result[@intFromEnum(Feature.svpbmt)] = .{
         .llvm_name = "svpbmt",
         .description = "'Svpbmt' (Page-Based Memory Types)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tagged_globals)] = .{
+    result[@intFromEnum(Feature.tagged_globals)] = .{
         .llvm_name = "tagged-globals",
         .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.unaligned_scalar_mem)] = .{
+    result[@intFromEnum(Feature.unaligned_scalar_mem)] = .{
         .llvm_name = "unaligned-scalar-mem",
         .description = "Has reasonably performant unaligned scalar loads and stores",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v)] = .{
+    result[@intFromEnum(Feature.v)] = .{
         .llvm_name = "v",
         .description = "'V' (Vector Extension for Application Processors)",
         .dependencies = featureSet(&[_]Feature{
@@ -437,114 +437,114 @@ pub const all_features = blk: {
             .zvl128b,
         }),
     };
-    result[@enumToInt(Feature.xtheadvdot)] = .{
+    result[@intFromEnum(Feature.xtheadvdot)] = .{
         .llvm_name = "xtheadvdot",
         .description = "'xtheadvdot' (T-Head Vector Extensions for Dot)",
         .dependencies = featureSet(&[_]Feature{
             .v,
         }),
     };
-    result[@enumToInt(Feature.xventanacondops)] = .{
+    result[@intFromEnum(Feature.xventanacondops)] = .{
         .llvm_name = "xventanacondops",
         .description = "'XVentanaCondOps' (Ventana Conditional Ops)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zba)] = .{
+    result[@intFromEnum(Feature.zba)] = .{
         .llvm_name = "zba",
         .description = "'Zba' (Address Generation Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zbb)] = .{
+    result[@intFromEnum(Feature.zbb)] = .{
         .llvm_name = "zbb",
         .description = "'Zbb' (Basic Bit-Manipulation)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zbc)] = .{
+    result[@intFromEnum(Feature.zbc)] = .{
         .llvm_name = "zbc",
         .description = "'Zbc' (Carry-Less Multiplication)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zbkb)] = .{
+    result[@intFromEnum(Feature.zbkb)] = .{
         .llvm_name = "zbkb",
         .description = "'Zbkb' (Bitmanip instructions for Cryptography)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zbkc)] = .{
+    result[@intFromEnum(Feature.zbkc)] = .{
         .llvm_name = "zbkc",
         .description = "'Zbkc' (Carry-less multiply instructions for Cryptography)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zbkx)] = .{
+    result[@intFromEnum(Feature.zbkx)] = .{
         .llvm_name = "zbkx",
         .description = "'Zbkx' (Crossbar permutation instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zbs)] = .{
+    result[@intFromEnum(Feature.zbs)] = .{
         .llvm_name = "zbs",
         .description = "'Zbs' (Single-Bit Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zdinx)] = .{
+    result[@intFromEnum(Feature.zdinx)] = .{
         .llvm_name = "zdinx",
         .description = "'Zdinx' (Double in Integer)",
         .dependencies = featureSet(&[_]Feature{
             .zfinx,
         }),
     };
-    result[@enumToInt(Feature.zfh)] = .{
+    result[@intFromEnum(Feature.zfh)] = .{
         .llvm_name = "zfh",
         .description = "'Zfh' (Half-Precision Floating-Point)",
         .dependencies = featureSet(&[_]Feature{
             .f,
         }),
     };
-    result[@enumToInt(Feature.zfhmin)] = .{
+    result[@intFromEnum(Feature.zfhmin)] = .{
         .llvm_name = "zfhmin",
         .description = "'Zfhmin' (Half-Precision Floating-Point Minimal)",
         .dependencies = featureSet(&[_]Feature{
             .f,
         }),
     };
-    result[@enumToInt(Feature.zfinx)] = .{
+    result[@intFromEnum(Feature.zfinx)] = .{
         .llvm_name = "zfinx",
         .description = "'Zfinx' (Float in Integer)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zhinx)] = .{
+    result[@intFromEnum(Feature.zhinx)] = .{
         .llvm_name = "zhinx",
         .description = "'Zhinx' (Half Float in Integer)",
         .dependencies = featureSet(&[_]Feature{
             .zfinx,
         }),
     };
-    result[@enumToInt(Feature.zhinxmin)] = .{
+    result[@intFromEnum(Feature.zhinxmin)] = .{
         .llvm_name = "zhinxmin",
         .description = "'Zhinxmin' (Half Float in Integer Minimal)",
         .dependencies = featureSet(&[_]Feature{
             .zfinx,
         }),
     };
-    result[@enumToInt(Feature.zicbom)] = .{
+    result[@intFromEnum(Feature.zicbom)] = .{
         .llvm_name = "zicbom",
         .description = "'Zicbom' (Cache-Block Management Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zicbop)] = .{
+    result[@intFromEnum(Feature.zicbop)] = .{
         .llvm_name = "zicbop",
         .description = "'Zicbop' (Cache-Block Prefetch Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zicboz)] = .{
+    result[@intFromEnum(Feature.zicboz)] = .{
         .llvm_name = "zicboz",
         .description = "'Zicboz' (Cache-Block Zero Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zihintpause)] = .{
+    result[@intFromEnum(Feature.zihintpause)] = .{
         .llvm_name = "zihintpause",
         .description = "'zihintpause' (Pause Hint)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zk)] = .{
+    result[@intFromEnum(Feature.zk)] = .{
         .llvm_name = "zk",
         .description = "'Zk' (Standard scalar cryptography extension)",
         .dependencies = featureSet(&[_]Feature{
@@ -553,7 +553,7 @@ pub const all_features = blk: {
             .zkt,
         }),
     };
-    result[@enumToInt(Feature.zkn)] = .{
+    result[@intFromEnum(Feature.zkn)] = .{
         .llvm_name = "zkn",
         .description = "'Zkn' (NIST Algorithm Suite)",
         .dependencies = featureSet(&[_]Feature{
@@ -565,27 +565,27 @@ pub const all_features = blk: {
             .zknh,
         }),
     };
-    result[@enumToInt(Feature.zknd)] = .{
+    result[@intFromEnum(Feature.zknd)] = .{
         .llvm_name = "zknd",
         .description = "'Zknd' (NIST Suite: AES Decryption)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zkne)] = .{
+    result[@intFromEnum(Feature.zkne)] = .{
         .llvm_name = "zkne",
         .description = "'Zkne' (NIST Suite: AES Encryption)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zknh)] = .{
+    result[@intFromEnum(Feature.zknh)] = .{
         .llvm_name = "zknh",
         .description = "'Zknh' (NIST Suite: Hash Function Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zkr)] = .{
+    result[@intFromEnum(Feature.zkr)] = .{
         .llvm_name = "zkr",
         .description = "'Zkr' (Entropy Source Extension)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zks)] = .{
+    result[@intFromEnum(Feature.zks)] = .{
         .llvm_name = "zks",
         .description = "'Zks' (ShangMi Algorithm Suite)",
         .dependencies = featureSet(&[_]Feature{
@@ -596,48 +596,48 @@ pub const all_features = blk: {
             .zksh,
         }),
     };
-    result[@enumToInt(Feature.zksed)] = .{
+    result[@intFromEnum(Feature.zksed)] = .{
         .llvm_name = "zksed",
         .description = "'Zksed' (ShangMi Suite: SM4 Block Cipher Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zksh)] = .{
+    result[@intFromEnum(Feature.zksh)] = .{
         .llvm_name = "zksh",
         .description = "'Zksh' (ShangMi Suite: SM3 Hash Function Instructions)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zkt)] = .{
+    result[@intFromEnum(Feature.zkt)] = .{
         .llvm_name = "zkt",
         .description = "'Zkt' (Data Independent Execution Latency)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zmmul)] = .{
+    result[@intFromEnum(Feature.zmmul)] = .{
         .llvm_name = "zmmul",
         .description = "'Zmmul' (Integer Multiplication)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zve32f)] = .{
+    result[@intFromEnum(Feature.zve32f)] = .{
         .llvm_name = "zve32f",
         .description = "'Zve32f' (Vector Extensions for Embedded Processors with maximal 32 EEW and F extension)",
         .dependencies = featureSet(&[_]Feature{
             .zve32x,
         }),
     };
-    result[@enumToInt(Feature.zve32x)] = .{
+    result[@intFromEnum(Feature.zve32x)] = .{
         .llvm_name = "zve32x",
         .description = "'Zve32x' (Vector Extensions for Embedded Processors with maximal 32 EEW)",
         .dependencies = featureSet(&[_]Feature{
             .zvl32b,
         }),
     };
-    result[@enumToInt(Feature.zve64d)] = .{
+    result[@intFromEnum(Feature.zve64d)] = .{
         .llvm_name = "zve64d",
         .description = "'Zve64d' (Vector Extensions for Embedded Processors with maximal 64 EEW, F and D extension)",
         .dependencies = featureSet(&[_]Feature{
             .zve64f,
         }),
     };
-    result[@enumToInt(Feature.zve64f)] = .{
+    result[@intFromEnum(Feature.zve64f)] = .{
         .llvm_name = "zve64f",
         .description = "'Zve64f' (Vector Extensions for Embedded Processors with maximal 64 EEW and F extension)",
         .dependencies = featureSet(&[_]Feature{
@@ -645,7 +645,7 @@ pub const all_features = blk: {
             .zve64x,
         }),
     };
-    result[@enumToInt(Feature.zve64x)] = .{
+    result[@intFromEnum(Feature.zve64x)] = .{
         .llvm_name = "zve64x",
         .description = "'Zve64x' (Vector Extensions for Embedded Processors with maximal 64 EEW)",
         .dependencies = featureSet(&[_]Feature{
@@ -653,82 +653,82 @@ pub const all_features = blk: {
             .zvl64b,
         }),
     };
-    result[@enumToInt(Feature.zvl1024b)] = .{
+    result[@intFromEnum(Feature.zvl1024b)] = .{
         .llvm_name = "zvl1024b",
         .description = "'Zvl' (Minimum Vector Length) 1024",
         .dependencies = featureSet(&[_]Feature{
             .zvl512b,
         }),
     };
-    result[@enumToInt(Feature.zvl128b)] = .{
+    result[@intFromEnum(Feature.zvl128b)] = .{
         .llvm_name = "zvl128b",
         .description = "'Zvl' (Minimum Vector Length) 128",
         .dependencies = featureSet(&[_]Feature{
             .zvl64b,
         }),
     };
-    result[@enumToInt(Feature.zvl16384b)] = .{
+    result[@intFromEnum(Feature.zvl16384b)] = .{
         .llvm_name = "zvl16384b",
         .description = "'Zvl' (Minimum Vector Length) 16384",
         .dependencies = featureSet(&[_]Feature{
             .zvl8192b,
         }),
     };
-    result[@enumToInt(Feature.zvl2048b)] = .{
+    result[@intFromEnum(Feature.zvl2048b)] = .{
         .llvm_name = "zvl2048b",
         .description = "'Zvl' (Minimum Vector Length) 2048",
         .dependencies = featureSet(&[_]Feature{
             .zvl1024b,
         }),
     };
-    result[@enumToInt(Feature.zvl256b)] = .{
+    result[@intFromEnum(Feature.zvl256b)] = .{
         .llvm_name = "zvl256b",
         .description = "'Zvl' (Minimum Vector Length) 256",
         .dependencies = featureSet(&[_]Feature{
             .zvl128b,
         }),
     };
-    result[@enumToInt(Feature.zvl32768b)] = .{
+    result[@intFromEnum(Feature.zvl32768b)] = .{
         .llvm_name = "zvl32768b",
         .description = "'Zvl' (Minimum Vector Length) 32768",
         .dependencies = featureSet(&[_]Feature{
             .zvl16384b,
         }),
     };
-    result[@enumToInt(Feature.zvl32b)] = .{
+    result[@intFromEnum(Feature.zvl32b)] = .{
         .llvm_name = "zvl32b",
         .description = "'Zvl' (Minimum Vector Length) 32",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.zvl4096b)] = .{
+    result[@intFromEnum(Feature.zvl4096b)] = .{
         .llvm_name = "zvl4096b",
         .description = "'Zvl' (Minimum Vector Length) 4096",
         .dependencies = featureSet(&[_]Feature{
             .zvl2048b,
         }),
     };
-    result[@enumToInt(Feature.zvl512b)] = .{
+    result[@intFromEnum(Feature.zvl512b)] = .{
         .llvm_name = "zvl512b",
         .description = "'Zvl' (Minimum Vector Length) 512",
         .dependencies = featureSet(&[_]Feature{
             .zvl256b,
         }),
     };
-    result[@enumToInt(Feature.zvl64b)] = .{
+    result[@intFromEnum(Feature.zvl64b)] = .{
         .llvm_name = "zvl64b",
         .description = "'Zvl' (Minimum Vector Length) 64",
         .dependencies = featureSet(&[_]Feature{
             .zvl32b,
         }),
     };
-    result[@enumToInt(Feature.zvl65536b)] = .{
+    result[@intFromEnum(Feature.zvl65536b)] = .{
         .llvm_name = "zvl65536b",
         .description = "'Zvl' (Minimum Vector Length) 65536",
         .dependencies = featureSet(&[_]Feature{
             .zvl32768b,
         }),
     };
-    result[@enumToInt(Feature.zvl8192b)] = .{
+    result[@intFromEnum(Feature.zvl8192b)] = .{
         .llvm_name = "zvl8192b",
         .description = "'Zvl' (Minimum Vector Length) 8192",
         .dependencies = featureSet(&[_]Feature{
lib/std/target/s390x.zig
@@ -57,207 +57,207 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.bear_enhancement)] = .{
+    result[@intFromEnum(Feature.bear_enhancement)] = .{
         .llvm_name = "bear-enhancement",
         .description = "Assume that the BEAR-enhancement facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.deflate_conversion)] = .{
+    result[@intFromEnum(Feature.deflate_conversion)] = .{
         .llvm_name = "deflate-conversion",
         .description = "Assume that the deflate-conversion facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dfp_packed_conversion)] = .{
+    result[@intFromEnum(Feature.dfp_packed_conversion)] = .{
         .llvm_name = "dfp-packed-conversion",
         .description = "Assume that the DFP packed-conversion facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.dfp_zoned_conversion)] = .{
+    result[@intFromEnum(Feature.dfp_zoned_conversion)] = .{
         .llvm_name = "dfp-zoned-conversion",
         .description = "Assume that the DFP zoned-conversion facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.distinct_ops)] = .{
+    result[@intFromEnum(Feature.distinct_ops)] = .{
         .llvm_name = "distinct-ops",
         .description = "Assume that the distinct-operands facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.enhanced_dat_2)] = .{
+    result[@intFromEnum(Feature.enhanced_dat_2)] = .{
         .llvm_name = "enhanced-dat-2",
         .description = "Assume that the enhanced-DAT facility 2 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.enhanced_sort)] = .{
+    result[@intFromEnum(Feature.enhanced_sort)] = .{
         .llvm_name = "enhanced-sort",
         .description = "Assume that the enhanced-sort facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.execution_hint)] = .{
+    result[@intFromEnum(Feature.execution_hint)] = .{
         .llvm_name = "execution-hint",
         .description = "Assume that the execution-hint facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_serialization)] = .{
+    result[@intFromEnum(Feature.fast_serialization)] = .{
         .llvm_name = "fast-serialization",
         .description = "Assume that the fast-serialization facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fp_extension)] = .{
+    result[@intFromEnum(Feature.fp_extension)] = .{
         .llvm_name = "fp-extension",
         .description = "Assume that the floating-point extension facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.guarded_storage)] = .{
+    result[@intFromEnum(Feature.guarded_storage)] = .{
         .llvm_name = "guarded-storage",
         .description = "Assume that the guarded-storage facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.high_word)] = .{
+    result[@intFromEnum(Feature.high_word)] = .{
         .llvm_name = "high-word",
         .description = "Assume that the high-word facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.insert_reference_bits_multiple)] = .{
+    result[@intFromEnum(Feature.insert_reference_bits_multiple)] = .{
         .llvm_name = "insert-reference-bits-multiple",
         .description = "Assume that the insert-reference-bits-multiple facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.interlocked_access1)] = .{
+    result[@intFromEnum(Feature.interlocked_access1)] = .{
         .llvm_name = "interlocked-access1",
         .description = "Assume that interlocked-access facility 1 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.load_and_trap)] = .{
+    result[@intFromEnum(Feature.load_and_trap)] = .{
         .llvm_name = "load-and-trap",
         .description = "Assume that the load-and-trap facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.load_and_zero_rightmost_byte)] = .{
+    result[@intFromEnum(Feature.load_and_zero_rightmost_byte)] = .{
         .llvm_name = "load-and-zero-rightmost-byte",
         .description = "Assume that the load-and-zero-rightmost-byte facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.load_store_on_cond)] = .{
+    result[@intFromEnum(Feature.load_store_on_cond)] = .{
         .llvm_name = "load-store-on-cond",
         .description = "Assume that the load/store-on-condition facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.load_store_on_cond_2)] = .{
+    result[@intFromEnum(Feature.load_store_on_cond_2)] = .{
         .llvm_name = "load-store-on-cond-2",
         .description = "Assume that the load/store-on-condition facility 2 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.message_security_assist_extension3)] = .{
+    result[@intFromEnum(Feature.message_security_assist_extension3)] = .{
         .llvm_name = "message-security-assist-extension3",
         .description = "Assume that the message-security-assist extension facility 3 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.message_security_assist_extension4)] = .{
+    result[@intFromEnum(Feature.message_security_assist_extension4)] = .{
         .llvm_name = "message-security-assist-extension4",
         .description = "Assume that the message-security-assist extension facility 4 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.message_security_assist_extension5)] = .{
+    result[@intFromEnum(Feature.message_security_assist_extension5)] = .{
         .llvm_name = "message-security-assist-extension5",
         .description = "Assume that the message-security-assist extension facility 5 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.message_security_assist_extension7)] = .{
+    result[@intFromEnum(Feature.message_security_assist_extension7)] = .{
         .llvm_name = "message-security-assist-extension7",
         .description = "Assume that the message-security-assist extension facility 7 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.message_security_assist_extension8)] = .{
+    result[@intFromEnum(Feature.message_security_assist_extension8)] = .{
         .llvm_name = "message-security-assist-extension8",
         .description = "Assume that the message-security-assist extension facility 8 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.message_security_assist_extension9)] = .{
+    result[@intFromEnum(Feature.message_security_assist_extension9)] = .{
         .llvm_name = "message-security-assist-extension9",
         .description = "Assume that the message-security-assist extension facility 9 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.miscellaneous_extensions)] = .{
+    result[@intFromEnum(Feature.miscellaneous_extensions)] = .{
         .llvm_name = "miscellaneous-extensions",
         .description = "Assume that the miscellaneous-extensions facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.miscellaneous_extensions_2)] = .{
+    result[@intFromEnum(Feature.miscellaneous_extensions_2)] = .{
         .llvm_name = "miscellaneous-extensions-2",
         .description = "Assume that the miscellaneous-extensions facility 2 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.miscellaneous_extensions_3)] = .{
+    result[@intFromEnum(Feature.miscellaneous_extensions_3)] = .{
         .llvm_name = "miscellaneous-extensions-3",
         .description = "Assume that the miscellaneous-extensions facility 3 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nnp_assist)] = .{
+    result[@intFromEnum(Feature.nnp_assist)] = .{
         .llvm_name = "nnp-assist",
         .description = "Assume that the NNP-assist facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.population_count)] = .{
+    result[@intFromEnum(Feature.population_count)] = .{
         .llvm_name = "population-count",
         .description = "Assume that the population-count facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.processor_activity_instrumentation)] = .{
+    result[@intFromEnum(Feature.processor_activity_instrumentation)] = .{
         .llvm_name = "processor-activity-instrumentation",
         .description = "Assume that the processor-activity-instrumentation facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.processor_assist)] = .{
+    result[@intFromEnum(Feature.processor_assist)] = .{
         .llvm_name = "processor-assist",
         .description = "Assume that the processor-assist facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reset_dat_protection)] = .{
+    result[@intFromEnum(Feature.reset_dat_protection)] = .{
         .llvm_name = "reset-dat-protection",
         .description = "Assume that the reset-DAT-protection facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reset_reference_bits_multiple)] = .{
+    result[@intFromEnum(Feature.reset_reference_bits_multiple)] = .{
         .llvm_name = "reset-reference-bits-multiple",
         .description = "Assume that the reset-reference-bits-multiple facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.soft_float)] = .{
+    result[@intFromEnum(Feature.soft_float)] = .{
         .llvm_name = "soft-float",
         .description = "Use software emulation for floating point",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.transactional_execution)] = .{
+    result[@intFromEnum(Feature.transactional_execution)] = .{
         .llvm_name = "transactional-execution",
         .description = "Assume that the transactional-execution facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vector)] = .{
+    result[@intFromEnum(Feature.vector)] = .{
         .llvm_name = "vector",
         .description = "Assume that the vectory facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vector_enhancements_1)] = .{
+    result[@intFromEnum(Feature.vector_enhancements_1)] = .{
         .llvm_name = "vector-enhancements-1",
         .description = "Assume that the vector enhancements facility 1 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vector_enhancements_2)] = .{
+    result[@intFromEnum(Feature.vector_enhancements_2)] = .{
         .llvm_name = "vector-enhancements-2",
         .description = "Assume that the vector enhancements facility 2 is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vector_packed_decimal)] = .{
+    result[@intFromEnum(Feature.vector_packed_decimal)] = .{
         .llvm_name = "vector-packed-decimal",
         .description = "Assume that the vector packed decimal facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vector_packed_decimal_enhancement)] = .{
+    result[@intFromEnum(Feature.vector_packed_decimal_enhancement)] = .{
         .llvm_name = "vector-packed-decimal-enhancement",
         .description = "Assume that the vector packed decimal enhancement facility is installed",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vector_packed_decimal_enhancement_2)] = .{
+    result[@intFromEnum(Feature.vector_packed_decimal_enhancement_2)] = .{
         .llvm_name = "vector-packed-decimal-enhancement-2",
         .description = "Assume that the vector packed decimal enhancement facility 2 is installed",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/sparc.zig
@@ -35,97 +35,97 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.deprecated_v8)] = .{
+    result[@intFromEnum(Feature.deprecated_v8)] = .{
         .llvm_name = "deprecated-v8",
         .description = "Enable deprecated V8 instructions in V9 mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.detectroundchange)] = .{
+    result[@intFromEnum(Feature.detectroundchange)] = .{
         .llvm_name = "detectroundchange",
         .description = "LEON3 erratum detection: Detects any rounding mode change request: use only the round-to-nearest rounding mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fixallfdivsqrt)] = .{
+    result[@intFromEnum(Feature.fixallfdivsqrt)] = .{
         .llvm_name = "fixallfdivsqrt",
         .description = "LEON erratum fix: Fix FDIVS/FDIVD/FSQRTS/FSQRTD instructions with NOPs and floating-point store",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hard_quad_float)] = .{
+    result[@intFromEnum(Feature.hard_quad_float)] = .{
         .llvm_name = "hard-quad-float",
         .description = "Enable quad-word floating point instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hasleoncasa)] = .{
+    result[@intFromEnum(Feature.hasleoncasa)] = .{
         .llvm_name = "hasleoncasa",
         .description = "Enable CASA instruction for LEON3 and LEON4 processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hasumacsmac)] = .{
+    result[@intFromEnum(Feature.hasumacsmac)] = .{
         .llvm_name = "hasumacsmac",
         .description = "Enable UMAC and SMAC for LEON3 and LEON4 processors",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.insertnopload)] = .{
+    result[@intFromEnum(Feature.insertnopload)] = .{
         .llvm_name = "insertnopload",
         .description = "LEON3 erratum fix: Insert a NOP instruction after every single-cycle load instruction when the next instruction is another load/store instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.leon)] = .{
+    result[@intFromEnum(Feature.leon)] = .{
         .llvm_name = "leon",
         .description = "Enable LEON extensions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.leoncyclecounter)] = .{
+    result[@intFromEnum(Feature.leoncyclecounter)] = .{
         .llvm_name = "leoncyclecounter",
         .description = "Use the Leon cycle counter register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.leonpwrpsr)] = .{
+    result[@intFromEnum(Feature.leonpwrpsr)] = .{
         .llvm_name = "leonpwrpsr",
         .description = "Enable the PWRPSR instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_fmuls)] = .{
+    result[@intFromEnum(Feature.no_fmuls)] = .{
         .llvm_name = "no-fmuls",
         .description = "Disable the fmuls instruction.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.no_fsmuld)] = .{
+    result[@intFromEnum(Feature.no_fsmuld)] = .{
         .llvm_name = "no-fsmuld",
         .description = "Disable the fsmuld instruction.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.popc)] = .{
+    result[@intFromEnum(Feature.popc)] = .{
         .llvm_name = "popc",
         .description = "Use the popc (population count) instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.soft_float)] = .{
+    result[@intFromEnum(Feature.soft_float)] = .{
         .llvm_name = "soft-float",
         .description = "Use software emulation for floating point",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.soft_mul_div)] = .{
+    result[@intFromEnum(Feature.soft_mul_div)] = .{
         .llvm_name = "soft-mul-div",
         .description = "Use software emulation for integer multiply and divide",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v9)] = .{
+    result[@intFromEnum(Feature.v9)] = .{
         .llvm_name = "v9",
         .description = "Enable SPARC-V9 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vis)] = .{
+    result[@intFromEnum(Feature.vis)] = .{
         .llvm_name = "vis",
         .description = "Enable UltraSPARC Visual Instruction Set extensions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vis2)] = .{
+    result[@intFromEnum(Feature.vis2)] = .{
         .llvm_name = "vis2",
         .description = "Enable Visual Instruction Set extensions II",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vis3)] = .{
+    result[@intFromEnum(Feature.vis3)] = .{
         .llvm_name = "vis3",
         .description = "Enable Visual Instruction Set extensions III",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/spirv.zig
@@ -304,803 +304,803 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.v1_1)] = .{
+    result[@intFromEnum(Feature.v1_1)] = .{
         .llvm_name = null,
         .description = "SPIR-V version 1.1",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.v1_2)] = .{
+    result[@intFromEnum(Feature.v1_2)] = .{
         .llvm_name = null,
         .description = "SPIR-V version 1.2",
         .dependencies = featureSet(&[_]Feature{
             .v1_1,
         }),
     };
-    result[@enumToInt(Feature.v1_3)] = .{
+    result[@intFromEnum(Feature.v1_3)] = .{
         .llvm_name = null,
         .description = "SPIR-V version 1.3",
         .dependencies = featureSet(&[_]Feature{
             .v1_2,
         }),
     };
-    result[@enumToInt(Feature.v1_4)] = .{
+    result[@intFromEnum(Feature.v1_4)] = .{
         .llvm_name = null,
         .description = "SPIR-V version 1.4",
         .dependencies = featureSet(&[_]Feature{
             .v1_3,
         }),
     };
-    result[@enumToInt(Feature.v1_5)] = .{
+    result[@intFromEnum(Feature.v1_5)] = .{
         .llvm_name = null,
         .description = "SPIR-V version 1.5",
         .dependencies = featureSet(&[_]Feature{
             .v1_4,
         }),
     };
-    result[@enumToInt(Feature.SPV_AMD_shader_fragment_mask)] = .{
+    result[@intFromEnum(Feature.SPV_AMD_shader_fragment_mask)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_AMD_shader_fragment_mask",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_AMD_gpu_shader_int16)] = .{
+    result[@intFromEnum(Feature.SPV_AMD_gpu_shader_int16)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_AMD_gpu_shader_int16",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_AMD_gpu_shader_half_float)] = .{
+    result[@intFromEnum(Feature.SPV_AMD_gpu_shader_half_float)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_AMD_gpu_shader_half_float",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_AMD_texture_gather_bias_lod)] = .{
+    result[@intFromEnum(Feature.SPV_AMD_texture_gather_bias_lod)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_AMD_texture_gather_bias_lod",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_AMD_shader_ballot)] = .{
+    result[@intFromEnum(Feature.SPV_AMD_shader_ballot)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_AMD_shader_ballot",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_AMD_gcn_shader)] = .{
+    result[@intFromEnum(Feature.SPV_AMD_gcn_shader)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_AMD_gcn_shader",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_AMD_shader_image_load_store_lod)] = .{
+    result[@intFromEnum(Feature.SPV_AMD_shader_image_load_store_lod)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_AMD_shader_image_load_store_lod",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_AMD_shader_explicit_vertex_parameter)] = .{
+    result[@intFromEnum(Feature.SPV_AMD_shader_explicit_vertex_parameter)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_AMD_shader_explicit_vertex_parameter",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_AMD_shader_trinary_minmax)] = .{
+    result[@intFromEnum(Feature.SPV_AMD_shader_trinary_minmax)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_AMD_shader_trinary_minmax",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_AMD_gpu_shader_half_float_fetch)] = .{
+    result[@intFromEnum(Feature.SPV_AMD_gpu_shader_half_float_fetch)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_AMD_gpu_shader_half_float_fetch",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_GOOGLE_hlsl_functionality1)] = .{
+    result[@intFromEnum(Feature.SPV_GOOGLE_hlsl_functionality1)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_GOOGLE_hlsl_functionality1",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_GOOGLE_user_type)] = .{
+    result[@intFromEnum(Feature.SPV_GOOGLE_user_type)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_GOOGLE_user_type",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_GOOGLE_decorate_string)] = .{
+    result[@intFromEnum(Feature.SPV_GOOGLE_decorate_string)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_GOOGLE_decorate_string",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_demote_to_helper_invocation)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_demote_to_helper_invocation)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_demote_to_helper_invocation",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_descriptor_indexing)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_descriptor_indexing)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_descriptor_indexing",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_fragment_fully_covered)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_fragment_fully_covered)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_fragment_fully_covered",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_shader_stencil_export)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_shader_stencil_export)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_shader_stencil_export",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_physical_storage_buffer)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_physical_storage_buffer)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_physical_storage_buffer",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_shader_atomic_float_add)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float_add)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_shader_atomic_float_add",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_shader_atomic_float_min_max)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float_min_max)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_shader_atomic_float_min_max",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_shader_image_int64)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_shader_image_int64)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_shader_image_int64",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_fragment_shader_interlock)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_fragment_shader_interlock)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_fragment_shader_interlock",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_fragment_invocation_density)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_fragment_invocation_density)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_fragment_invocation_density",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_EXT_shader_viewport_index_layer)] = .{
+    result[@intFromEnum(Feature.SPV_EXT_shader_viewport_index_layer)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_EXT_shader_viewport_index_layer",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_loop_fuse)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_loop_fuse)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_loop_fuse",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_fpga_dsp_control)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_fpga_dsp_control)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_fpga_dsp_control",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_fpga_reg)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_fpga_reg)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_fpga_reg",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_fpga_memory_accesses)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_fpga_memory_accesses)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_fpga_memory_accesses",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_fpga_loop_controls)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_fpga_loop_controls)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_fpga_loop_controls",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_io_pipes)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_io_pipes)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_io_pipes",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_unstructured_loop_controls)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_unstructured_loop_controls)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_unstructured_loop_controls",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_blocking_pipes)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_blocking_pipes)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_blocking_pipes",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_device_side_avc_motion_estimation)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_device_side_avc_motion_estimation)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_device_side_avc_motion_estimation",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_fpga_memory_attributes)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_fpga_memory_attributes)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_fpga_memory_attributes",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_fp_fast_math_mode)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_fp_fast_math_mode)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_fp_fast_math_mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_media_block_io)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_media_block_io)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_media_block_io",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_shader_integer_functions2)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_shader_integer_functions2)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_shader_integer_functions2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_subgroups)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_subgroups)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_subgroups",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_fpga_cluster_attributes)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_fpga_cluster_attributes)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_fpga_cluster_attributes",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_kernel_attributes)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_kernel_attributes)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_kernel_attributes",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_INTEL_arbitrary_precision_integers)] = .{
+    result[@intFromEnum(Feature.SPV_INTEL_arbitrary_precision_integers)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_INTEL_arbitrary_precision_integers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_8bit_storage)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_8bit_storage)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_8bit_storage",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_shader_clock)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_shader_clock)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_shader_clock",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_device_group)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_device_group)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_device_group",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_16bit_storage)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_16bit_storage)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_16bit_storage",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_variable_pointers)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_variable_pointers)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_variable_pointers",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_no_integer_wrap_decoration)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_no_integer_wrap_decoration)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_no_integer_wrap_decoration",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_subgroup_vote)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_subgroup_vote)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_subgroup_vote",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_multiview)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_multiview)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_multiview",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_shader_ballot)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_shader_ballot)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_shader_ballot",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_vulkan_memory_model)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_vulkan_memory_model)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_vulkan_memory_model",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_physical_storage_buffer)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_physical_storage_buffer)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_physical_storage_buffer",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_workgroup_memory_explicit_layout)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_workgroup_memory_explicit_layout)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_workgroup_memory_explicit_layout",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_fragment_shading_rate)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_fragment_shading_rate)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_fragment_shading_rate",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_shader_atomic_counter_ops)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_shader_atomic_counter_ops)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_shader_atomic_counter_ops",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_shader_draw_parameters)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_shader_draw_parameters)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_shader_draw_parameters",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_storage_buffer_storage_class)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_storage_buffer_storage_class)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_storage_buffer_storage_class",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_linkonce_odr)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_linkonce_odr)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_linkonce_odr",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_terminate_invocation)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_terminate_invocation)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_terminate_invocation",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_non_semantic_info)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_non_semantic_info)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_non_semantic_info",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_post_depth_coverage)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_post_depth_coverage)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_post_depth_coverage",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_expect_assume)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_expect_assume)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_expect_assume",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_ray_tracing)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_ray_tracing)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_ray_tracing",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_ray_query)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_ray_query)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_ray_query",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_KHR_float_controls)] = .{
+    result[@intFromEnum(Feature.SPV_KHR_float_controls)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_KHR_float_controls",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_viewport_array2)] = .{
+    result[@intFromEnum(Feature.SPV_NV_viewport_array2)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_viewport_array2",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_shader_subgroup_partitioned)] = .{
+    result[@intFromEnum(Feature.SPV_NV_shader_subgroup_partitioned)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_shader_subgroup_partitioned",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NVX_multiview_per_view_attributes)] = .{
+    result[@intFromEnum(Feature.SPV_NVX_multiview_per_view_attributes)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NVX_multiview_per_view_attributes",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_ray_tracing)] = .{
+    result[@intFromEnum(Feature.SPV_NV_ray_tracing)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_ray_tracing",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_shader_image_footprint)] = .{
+    result[@intFromEnum(Feature.SPV_NV_shader_image_footprint)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_shader_image_footprint",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_shading_rate)] = .{
+    result[@intFromEnum(Feature.SPV_NV_shading_rate)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_shading_rate",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_stereo_view_rendering)] = .{
+    result[@intFromEnum(Feature.SPV_NV_stereo_view_rendering)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_stereo_view_rendering",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_compute_shader_derivatives)] = .{
+    result[@intFromEnum(Feature.SPV_NV_compute_shader_derivatives)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_compute_shader_derivatives",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_shader_sm_builtins)] = .{
+    result[@intFromEnum(Feature.SPV_NV_shader_sm_builtins)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_shader_sm_builtins",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_mesh_shader)] = .{
+    result[@intFromEnum(Feature.SPV_NV_mesh_shader)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_mesh_shader",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_geometry_shader_passthrough)] = .{
+    result[@intFromEnum(Feature.SPV_NV_geometry_shader_passthrough)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_geometry_shader_passthrough",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_fragment_shader_barycentric)] = .{
+    result[@intFromEnum(Feature.SPV_NV_fragment_shader_barycentric)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_fragment_shader_barycentric",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_cooperative_matrix)] = .{
+    result[@intFromEnum(Feature.SPV_NV_cooperative_matrix)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_cooperative_matrix",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SPV_NV_sample_mask_override_coverage)] = .{
+    result[@intFromEnum(Feature.SPV_NV_sample_mask_override_coverage)] = .{
         .llvm_name = null,
         .description = "SPIR-V extension SPV_NV_sample_mask_override_coverage",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.Matrix)] = .{
+    result[@intFromEnum(Feature.Matrix)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Matrix",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.Shader)] = .{
+    result[@intFromEnum(Feature.Shader)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Shader",
         .dependencies = featureSet(&[_]Feature{
             .Matrix,
         }),
     };
-    result[@enumToInt(Feature.Geometry)] = .{
+    result[@intFromEnum(Feature.Geometry)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Geometry",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.Tessellation)] = .{
+    result[@intFromEnum(Feature.Tessellation)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Tessellation",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.Addresses)] = .{
+    result[@intFromEnum(Feature.Addresses)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Addresses",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.Linkage)] = .{
+    result[@intFromEnum(Feature.Linkage)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Linkage",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.Kernel)] = .{
+    result[@intFromEnum(Feature.Kernel)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Kernel",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.Vector16)] = .{
+    result[@intFromEnum(Feature.Vector16)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Vector16",
         .dependencies = featureSet(&[_]Feature{
             .Kernel,
         }),
     };
-    result[@enumToInt(Feature.Float16Buffer)] = .{
+    result[@intFromEnum(Feature.Float16Buffer)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Float16Buffer",
         .dependencies = featureSet(&[_]Feature{
             .Kernel,
         }),
     };
-    result[@enumToInt(Feature.Float16)] = .{
+    result[@intFromEnum(Feature.Float16)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Float16",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.Float64)] = .{
+    result[@intFromEnum(Feature.Float64)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Float64",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.Int64)] = .{
+    result[@intFromEnum(Feature.Int64)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Int64",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.Int64Atomics)] = .{
+    result[@intFromEnum(Feature.Int64Atomics)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Int64Atomics",
         .dependencies = featureSet(&[_]Feature{
             .Int64,
         }),
     };
-    result[@enumToInt(Feature.ImageBasic)] = .{
+    result[@intFromEnum(Feature.ImageBasic)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageBasic",
         .dependencies = featureSet(&[_]Feature{
             .Kernel,
         }),
     };
-    result[@enumToInt(Feature.ImageReadWrite)] = .{
+    result[@intFromEnum(Feature.ImageReadWrite)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageReadWrite",
         .dependencies = featureSet(&[_]Feature{
             .ImageBasic,
         }),
     };
-    result[@enumToInt(Feature.ImageMipmap)] = .{
+    result[@intFromEnum(Feature.ImageMipmap)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageMipmap",
         .dependencies = featureSet(&[_]Feature{
             .ImageBasic,
         }),
     };
-    result[@enumToInt(Feature.Pipes)] = .{
+    result[@intFromEnum(Feature.Pipes)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Pipes",
         .dependencies = featureSet(&[_]Feature{
             .Kernel,
         }),
     };
-    result[@enumToInt(Feature.Groups)] = .{
+    result[@intFromEnum(Feature.Groups)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Groups",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.DeviceEnqueue)] = .{
+    result[@intFromEnum(Feature.DeviceEnqueue)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability DeviceEnqueue",
         .dependencies = featureSet(&[_]Feature{
             .Kernel,
         }),
     };
-    result[@enumToInt(Feature.LiteralSampler)] = .{
+    result[@intFromEnum(Feature.LiteralSampler)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability LiteralSampler",
         .dependencies = featureSet(&[_]Feature{
             .Kernel,
         }),
     };
-    result[@enumToInt(Feature.AtomicStorage)] = .{
+    result[@intFromEnum(Feature.AtomicStorage)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability AtomicStorage",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.Int16)] = .{
+    result[@intFromEnum(Feature.Int16)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Int16",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.TessellationPointSize)] = .{
+    result[@intFromEnum(Feature.TessellationPointSize)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability TessellationPointSize",
         .dependencies = featureSet(&[_]Feature{
             .Tessellation,
         }),
     };
-    result[@enumToInt(Feature.GeometryPointSize)] = .{
+    result[@intFromEnum(Feature.GeometryPointSize)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GeometryPointSize",
         .dependencies = featureSet(&[_]Feature{
             .Geometry,
         }),
     };
-    result[@enumToInt(Feature.ImageGatherExtended)] = .{
+    result[@intFromEnum(Feature.ImageGatherExtended)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageGatherExtended",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.StorageImageMultisample)] = .{
+    result[@intFromEnum(Feature.StorageImageMultisample)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageImageMultisample",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.UniformBufferArrayDynamicIndexing)] = .{
+    result[@intFromEnum(Feature.UniformBufferArrayDynamicIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability UniformBufferArrayDynamicIndexing",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.SampledImageArrayDynamicIndexing)] = .{
+    result[@intFromEnum(Feature.SampledImageArrayDynamicIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SampledImageArrayDynamicIndexing",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.StorageBufferArrayDynamicIndexing)] = .{
+    result[@intFromEnum(Feature.StorageBufferArrayDynamicIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageBufferArrayDynamicIndexing",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.StorageImageArrayDynamicIndexing)] = .{
+    result[@intFromEnum(Feature.StorageImageArrayDynamicIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageImageArrayDynamicIndexing",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ClipDistance)] = .{
+    result[@intFromEnum(Feature.ClipDistance)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ClipDistance",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.CullDistance)] = .{
+    result[@intFromEnum(Feature.CullDistance)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability CullDistance",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ImageCubeArray)] = .{
+    result[@intFromEnum(Feature.ImageCubeArray)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageCubeArray",
         .dependencies = featureSet(&[_]Feature{
             .SampledCubeArray,
         }),
     };
-    result[@enumToInt(Feature.SampleRateShading)] = .{
+    result[@intFromEnum(Feature.SampleRateShading)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SampleRateShading",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ImageRect)] = .{
+    result[@intFromEnum(Feature.ImageRect)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageRect",
         .dependencies = featureSet(&[_]Feature{
             .SampledRect,
         }),
     };
-    result[@enumToInt(Feature.SampledRect)] = .{
+    result[@intFromEnum(Feature.SampledRect)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SampledRect",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.GenericPointer)] = .{
+    result[@intFromEnum(Feature.GenericPointer)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GenericPointer",
         .dependencies = featureSet(&[_]Feature{
             .Addresses,
         }),
     };
-    result[@enumToInt(Feature.Int8)] = .{
+    result[@intFromEnum(Feature.Int8)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Int8",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.InputAttachment)] = .{
+    result[@intFromEnum(Feature.InputAttachment)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability InputAttachment",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.SparseResidency)] = .{
+    result[@intFromEnum(Feature.SparseResidency)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SparseResidency",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.MinLod)] = .{
+    result[@intFromEnum(Feature.MinLod)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability MinLod",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.Sampled1D)] = .{
+    result[@intFromEnum(Feature.Sampled1D)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Sampled1D",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.Image1D)] = .{
+    result[@intFromEnum(Feature.Image1D)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Image1D",
         .dependencies = featureSet(&[_]Feature{
             .Sampled1D,
         }),
     };
-    result[@enumToInt(Feature.SampledCubeArray)] = .{
+    result[@intFromEnum(Feature.SampledCubeArray)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SampledCubeArray",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.SampledBuffer)] = .{
+    result[@intFromEnum(Feature.SampledBuffer)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SampledBuffer",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ImageBuffer)] = .{
+    result[@intFromEnum(Feature.ImageBuffer)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageBuffer",
         .dependencies = featureSet(&[_]Feature{
             .SampledBuffer,
         }),
     };
-    result[@enumToInt(Feature.ImageMSArray)] = .{
+    result[@intFromEnum(Feature.ImageMSArray)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageMSArray",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.StorageImageExtendedFormats)] = .{
+    result[@intFromEnum(Feature.StorageImageExtendedFormats)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageImageExtendedFormats",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ImageQuery)] = .{
+    result[@intFromEnum(Feature.ImageQuery)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageQuery",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.DerivativeControl)] = .{
+    result[@intFromEnum(Feature.DerivativeControl)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability DerivativeControl",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.InterpolationFunction)] = .{
+    result[@intFromEnum(Feature.InterpolationFunction)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability InterpolationFunction",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.TransformFeedback)] = .{
+    result[@intFromEnum(Feature.TransformFeedback)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability TransformFeedback",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.GeometryStreams)] = .{
+    result[@intFromEnum(Feature.GeometryStreams)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GeometryStreams",
         .dependencies = featureSet(&[_]Feature{
             .Geometry,
         }),
     };
-    result[@enumToInt(Feature.StorageImageReadWithoutFormat)] = .{
+    result[@intFromEnum(Feature.StorageImageReadWithoutFormat)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageImageReadWithoutFormat",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.StorageImageWriteWithoutFormat)] = .{
+    result[@intFromEnum(Feature.StorageImageWriteWithoutFormat)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageImageWriteWithoutFormat",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.MultiViewport)] = .{
+    result[@intFromEnum(Feature.MultiViewport)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability MultiViewport",
         .dependencies = featureSet(&[_]Feature{
             .Geometry,
         }),
     };
-    result[@enumToInt(Feature.SubgroupDispatch)] = .{
+    result[@intFromEnum(Feature.SubgroupDispatch)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SubgroupDispatch",
         .dependencies = featureSet(&[_]Feature{
@@ -1108,7 +1108,7 @@ pub const all_features = blk: {
             .DeviceEnqueue,
         }),
     };
-    result[@enumToInt(Feature.NamedBarrier)] = .{
+    result[@intFromEnum(Feature.NamedBarrier)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability NamedBarrier",
         .dependencies = featureSet(&[_]Feature{
@@ -1116,7 +1116,7 @@ pub const all_features = blk: {
             .Kernel,
         }),
     };
-    result[@enumToInt(Feature.PipeStorage)] = .{
+    result[@intFromEnum(Feature.PipeStorage)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability PipeStorage",
         .dependencies = featureSet(&[_]Feature{
@@ -1124,14 +1124,14 @@ pub const all_features = blk: {
             .Pipes,
         }),
     };
-    result[@enumToInt(Feature.GroupNonUniform)] = .{
+    result[@intFromEnum(Feature.GroupNonUniform)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GroupNonUniform",
         .dependencies = featureSet(&[_]Feature{
             .v1_3,
         }),
     };
-    result[@enumToInt(Feature.GroupNonUniformVote)] = .{
+    result[@intFromEnum(Feature.GroupNonUniformVote)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GroupNonUniformVote",
         .dependencies = featureSet(&[_]Feature{
@@ -1139,7 +1139,7 @@ pub const all_features = blk: {
             .GroupNonUniform,
         }),
     };
-    result[@enumToInt(Feature.GroupNonUniformArithmetic)] = .{
+    result[@intFromEnum(Feature.GroupNonUniformArithmetic)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GroupNonUniformArithmetic",
         .dependencies = featureSet(&[_]Feature{
@@ -1147,7 +1147,7 @@ pub const all_features = blk: {
             .GroupNonUniform,
         }),
     };
-    result[@enumToInt(Feature.GroupNonUniformBallot)] = .{
+    result[@intFromEnum(Feature.GroupNonUniformBallot)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GroupNonUniformBallot",
         .dependencies = featureSet(&[_]Feature{
@@ -1155,7 +1155,7 @@ pub const all_features = blk: {
             .GroupNonUniform,
         }),
     };
-    result[@enumToInt(Feature.GroupNonUniformShuffle)] = .{
+    result[@intFromEnum(Feature.GroupNonUniformShuffle)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GroupNonUniformShuffle",
         .dependencies = featureSet(&[_]Feature{
@@ -1163,7 +1163,7 @@ pub const all_features = blk: {
             .GroupNonUniform,
         }),
     };
-    result[@enumToInt(Feature.GroupNonUniformShuffleRelative)] = .{
+    result[@intFromEnum(Feature.GroupNonUniformShuffleRelative)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GroupNonUniformShuffleRelative",
         .dependencies = featureSet(&[_]Feature{
@@ -1171,7 +1171,7 @@ pub const all_features = blk: {
             .GroupNonUniform,
         }),
     };
-    result[@enumToInt(Feature.GroupNonUniformClustered)] = .{
+    result[@intFromEnum(Feature.GroupNonUniformClustered)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GroupNonUniformClustered",
         .dependencies = featureSet(&[_]Feature{
@@ -1179,7 +1179,7 @@ pub const all_features = blk: {
             .GroupNonUniform,
         }),
     };
-    result[@enumToInt(Feature.GroupNonUniformQuad)] = .{
+    result[@intFromEnum(Feature.GroupNonUniformQuad)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GroupNonUniformQuad",
         .dependencies = featureSet(&[_]Feature{
@@ -1187,33 +1187,33 @@ pub const all_features = blk: {
             .GroupNonUniform,
         }),
     };
-    result[@enumToInt(Feature.ShaderLayer)] = .{
+    result[@intFromEnum(Feature.ShaderLayer)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShaderLayer",
         .dependencies = featureSet(&[_]Feature{
             .v1_5,
         }),
     };
-    result[@enumToInt(Feature.ShaderViewportIndex)] = .{
+    result[@intFromEnum(Feature.ShaderViewportIndex)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShaderViewportIndex",
         .dependencies = featureSet(&[_]Feature{
             .v1_5,
         }),
     };
-    result[@enumToInt(Feature.FragmentShadingRateKHR)] = .{
+    result[@intFromEnum(Feature.FragmentShadingRateKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FragmentShadingRateKHR",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.SubgroupBallotKHR)] = .{
+    result[@intFromEnum(Feature.SubgroupBallotKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SubgroupBallotKHR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.DrawParameters)] = .{
+    result[@intFromEnum(Feature.DrawParameters)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability DrawParameters",
         .dependencies = featureSet(&[_]Feature{
@@ -1221,47 +1221,47 @@ pub const all_features = blk: {
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.WorkgroupMemoryExplicitLayoutKHR)] = .{
+    result[@intFromEnum(Feature.WorkgroupMemoryExplicitLayoutKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability WorkgroupMemoryExplicitLayoutKHR",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.WorkgroupMemoryExplicitLayout8BitAccessKHR)] = .{
+    result[@intFromEnum(Feature.WorkgroupMemoryExplicitLayout8BitAccessKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability WorkgroupMemoryExplicitLayout8BitAccessKHR",
         .dependencies = featureSet(&[_]Feature{
             .WorkgroupMemoryExplicitLayoutKHR,
         }),
     };
-    result[@enumToInt(Feature.WorkgroupMemoryExplicitLayout16BitAccessKHR)] = .{
+    result[@intFromEnum(Feature.WorkgroupMemoryExplicitLayout16BitAccessKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability WorkgroupMemoryExplicitLayout16BitAccessKHR",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.SubgroupVoteKHR)] = .{
+    result[@intFromEnum(Feature.SubgroupVoteKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SubgroupVoteKHR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.StorageBuffer16BitAccess)] = .{
+    result[@intFromEnum(Feature.StorageBuffer16BitAccess)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageBuffer16BitAccess",
         .dependencies = featureSet(&[_]Feature{
             .v1_3,
         }),
     };
-    result[@enumToInt(Feature.StorageUniformBufferBlock16)] = .{
+    result[@intFromEnum(Feature.StorageUniformBufferBlock16)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageUniformBufferBlock16",
         .dependencies = featureSet(&[_]Feature{
             .v1_3,
         }),
     };
-    result[@enumToInt(Feature.UniformAndStorageBuffer16BitAccess)] = .{
+    result[@intFromEnum(Feature.UniformAndStorageBuffer16BitAccess)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability UniformAndStorageBuffer16BitAccess",
         .dependencies = featureSet(&[_]Feature{
@@ -1270,7 +1270,7 @@ pub const all_features = blk: {
             .StorageUniformBufferBlock16,
         }),
     };
-    result[@enumToInt(Feature.StorageUniform16)] = .{
+    result[@intFromEnum(Feature.StorageUniform16)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageUniform16",
         .dependencies = featureSet(&[_]Feature{
@@ -1279,28 +1279,28 @@ pub const all_features = blk: {
             .StorageUniformBufferBlock16,
         }),
     };
-    result[@enumToInt(Feature.StoragePushConstant16)] = .{
+    result[@intFromEnum(Feature.StoragePushConstant16)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StoragePushConstant16",
         .dependencies = featureSet(&[_]Feature{
             .v1_3,
         }),
     };
-    result[@enumToInt(Feature.StorageInputOutput16)] = .{
+    result[@intFromEnum(Feature.StorageInputOutput16)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageInputOutput16",
         .dependencies = featureSet(&[_]Feature{
             .v1_3,
         }),
     };
-    result[@enumToInt(Feature.DeviceGroup)] = .{
+    result[@intFromEnum(Feature.DeviceGroup)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability DeviceGroup",
         .dependencies = featureSet(&[_]Feature{
             .v1_3,
         }),
     };
-    result[@enumToInt(Feature.MultiView)] = .{
+    result[@intFromEnum(Feature.MultiView)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability MultiView",
         .dependencies = featureSet(&[_]Feature{
@@ -1308,7 +1308,7 @@ pub const all_features = blk: {
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.VariablePointersStorageBuffer)] = .{
+    result[@intFromEnum(Feature.VariablePointersStorageBuffer)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability VariablePointersStorageBuffer",
         .dependencies = featureSet(&[_]Feature{
@@ -1316,7 +1316,7 @@ pub const all_features = blk: {
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.VariablePointers)] = .{
+    result[@intFromEnum(Feature.VariablePointers)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability VariablePointers",
         .dependencies = featureSet(&[_]Feature{
@@ -1324,24 +1324,24 @@ pub const all_features = blk: {
             .VariablePointersStorageBuffer,
         }),
     };
-    result[@enumToInt(Feature.AtomicStorageOps)] = .{
+    result[@intFromEnum(Feature.AtomicStorageOps)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability AtomicStorageOps",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SampleMaskPostDepthCoverage)] = .{
+    result[@intFromEnum(Feature.SampleMaskPostDepthCoverage)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SampleMaskPostDepthCoverage",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.StorageBuffer8BitAccess)] = .{
+    result[@intFromEnum(Feature.StorageBuffer8BitAccess)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageBuffer8BitAccess",
         .dependencies = featureSet(&[_]Feature{
             .v1_5,
         }),
     };
-    result[@enumToInt(Feature.UniformAndStorageBuffer8BitAccess)] = .{
+    result[@intFromEnum(Feature.UniformAndStorageBuffer8BitAccess)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability UniformAndStorageBuffer8BitAccess",
         .dependencies = featureSet(&[_]Feature{
@@ -1349,63 +1349,63 @@ pub const all_features = blk: {
             .StorageBuffer8BitAccess,
         }),
     };
-    result[@enumToInt(Feature.StoragePushConstant8)] = .{
+    result[@intFromEnum(Feature.StoragePushConstant8)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StoragePushConstant8",
         .dependencies = featureSet(&[_]Feature{
             .v1_5,
         }),
     };
-    result[@enumToInt(Feature.DenormPreserve)] = .{
+    result[@intFromEnum(Feature.DenormPreserve)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability DenormPreserve",
         .dependencies = featureSet(&[_]Feature{
             .v1_4,
         }),
     };
-    result[@enumToInt(Feature.DenormFlushToZero)] = .{
+    result[@intFromEnum(Feature.DenormFlushToZero)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability DenormFlushToZero",
         .dependencies = featureSet(&[_]Feature{
             .v1_4,
         }),
     };
-    result[@enumToInt(Feature.SignedZeroInfNanPreserve)] = .{
+    result[@intFromEnum(Feature.SignedZeroInfNanPreserve)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SignedZeroInfNanPreserve",
         .dependencies = featureSet(&[_]Feature{
             .v1_4,
         }),
     };
-    result[@enumToInt(Feature.RoundingModeRTE)] = .{
+    result[@intFromEnum(Feature.RoundingModeRTE)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RoundingModeRTE",
         .dependencies = featureSet(&[_]Feature{
             .v1_4,
         }),
     };
-    result[@enumToInt(Feature.RoundingModeRTZ)] = .{
+    result[@intFromEnum(Feature.RoundingModeRTZ)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RoundingModeRTZ",
         .dependencies = featureSet(&[_]Feature{
             .v1_4,
         }),
     };
-    result[@enumToInt(Feature.RayQueryProvisionalKHR)] = .{
+    result[@intFromEnum(Feature.RayQueryProvisionalKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RayQueryProvisionalKHR",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.RayQueryKHR)] = .{
+    result[@intFromEnum(Feature.RayQueryKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RayQueryKHR",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.RayTraversalPrimitiveCullingKHR)] = .{
+    result[@intFromEnum(Feature.RayTraversalPrimitiveCullingKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RayTraversalPrimitiveCullingKHR",
         .dependencies = featureSet(&[_]Feature{
@@ -1413,160 +1413,160 @@ pub const all_features = blk: {
             .RayTracingKHR,
         }),
     };
-    result[@enumToInt(Feature.RayTracingKHR)] = .{
+    result[@intFromEnum(Feature.RayTracingKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RayTracingKHR",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.Float16ImageAMD)] = .{
+    result[@intFromEnum(Feature.Float16ImageAMD)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Float16ImageAMD",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ImageGatherBiasLodAMD)] = .{
+    result[@intFromEnum(Feature.ImageGatherBiasLodAMD)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageGatherBiasLodAMD",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.FragmentMaskAMD)] = .{
+    result[@intFromEnum(Feature.FragmentMaskAMD)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FragmentMaskAMD",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.StencilExportEXT)] = .{
+    result[@intFromEnum(Feature.StencilExportEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StencilExportEXT",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ImageReadWriteLodAMD)] = .{
+    result[@intFromEnum(Feature.ImageReadWriteLodAMD)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageReadWriteLodAMD",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.Int64ImageEXT)] = .{
+    result[@intFromEnum(Feature.Int64ImageEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability Int64ImageEXT",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ShaderClockKHR)] = .{
+    result[@intFromEnum(Feature.ShaderClockKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShaderClockKHR",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.SampleMaskOverrideCoverageNV)] = .{
+    result[@intFromEnum(Feature.SampleMaskOverrideCoverageNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SampleMaskOverrideCoverageNV",
         .dependencies = featureSet(&[_]Feature{
             .SampleRateShading,
         }),
     };
-    result[@enumToInt(Feature.GeometryShaderPassthroughNV)] = .{
+    result[@intFromEnum(Feature.GeometryShaderPassthroughNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GeometryShaderPassthroughNV",
         .dependencies = featureSet(&[_]Feature{
             .Geometry,
         }),
     };
-    result[@enumToInt(Feature.ShaderViewportIndexLayerEXT)] = .{
+    result[@intFromEnum(Feature.ShaderViewportIndexLayerEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShaderViewportIndexLayerEXT",
         .dependencies = featureSet(&[_]Feature{
             .MultiViewport,
         }),
     };
-    result[@enumToInt(Feature.ShaderViewportIndexLayerNV)] = .{
+    result[@intFromEnum(Feature.ShaderViewportIndexLayerNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShaderViewportIndexLayerNV",
         .dependencies = featureSet(&[_]Feature{
             .MultiViewport,
         }),
     };
-    result[@enumToInt(Feature.ShaderViewportMaskNV)] = .{
+    result[@intFromEnum(Feature.ShaderViewportMaskNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShaderViewportMaskNV",
         .dependencies = featureSet(&[_]Feature{
             .ShaderViewportIndexLayerNV,
         }),
     };
-    result[@enumToInt(Feature.ShaderStereoViewNV)] = .{
+    result[@intFromEnum(Feature.ShaderStereoViewNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShaderStereoViewNV",
         .dependencies = featureSet(&[_]Feature{
             .ShaderViewportMaskNV,
         }),
     };
-    result[@enumToInt(Feature.PerViewAttributesNV)] = .{
+    result[@intFromEnum(Feature.PerViewAttributesNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability PerViewAttributesNV",
         .dependencies = featureSet(&[_]Feature{
             .MultiView,
         }),
     };
-    result[@enumToInt(Feature.FragmentFullyCoveredEXT)] = .{
+    result[@intFromEnum(Feature.FragmentFullyCoveredEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FragmentFullyCoveredEXT",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.MeshShadingNV)] = .{
+    result[@intFromEnum(Feature.MeshShadingNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability MeshShadingNV",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ImageFootprintNV)] = .{
+    result[@intFromEnum(Feature.ImageFootprintNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ImageFootprintNV",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FragmentBarycentricNV)] = .{
+    result[@intFromEnum(Feature.FragmentBarycentricNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FragmentBarycentricNV",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ComputeDerivativeGroupQuadsNV)] = .{
+    result[@intFromEnum(Feature.ComputeDerivativeGroupQuadsNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ComputeDerivativeGroupQuadsNV",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FragmentDensityEXT)] = .{
+    result[@intFromEnum(Feature.FragmentDensityEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FragmentDensityEXT",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ShadingRateNV)] = .{
+    result[@intFromEnum(Feature.ShadingRateNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShadingRateNV",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.GroupNonUniformPartitionedNV)] = .{
+    result[@intFromEnum(Feature.GroupNonUniformPartitionedNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability GroupNonUniformPartitionedNV",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ShaderNonUniform)] = .{
+    result[@intFromEnum(Feature.ShaderNonUniform)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShaderNonUniform",
         .dependencies = featureSet(&[_]Feature{
@@ -1574,7 +1574,7 @@ pub const all_features = blk: {
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ShaderNonUniformEXT)] = .{
+    result[@intFromEnum(Feature.ShaderNonUniformEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShaderNonUniformEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1582,7 +1582,7 @@ pub const all_features = blk: {
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.RuntimeDescriptorArray)] = .{
+    result[@intFromEnum(Feature.RuntimeDescriptorArray)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RuntimeDescriptorArray",
         .dependencies = featureSet(&[_]Feature{
@@ -1590,7 +1590,7 @@ pub const all_features = blk: {
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.RuntimeDescriptorArrayEXT)] = .{
+    result[@intFromEnum(Feature.RuntimeDescriptorArrayEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RuntimeDescriptorArrayEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1598,7 +1598,7 @@ pub const all_features = blk: {
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.InputAttachmentArrayDynamicIndexing)] = .{
+    result[@intFromEnum(Feature.InputAttachmentArrayDynamicIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability InputAttachmentArrayDynamicIndexing",
         .dependencies = featureSet(&[_]Feature{
@@ -1606,7 +1606,7 @@ pub const all_features = blk: {
             .InputAttachment,
         }),
     };
-    result[@enumToInt(Feature.InputAttachmentArrayDynamicIndexingEXT)] = .{
+    result[@intFromEnum(Feature.InputAttachmentArrayDynamicIndexingEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability InputAttachmentArrayDynamicIndexingEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1614,7 +1614,7 @@ pub const all_features = blk: {
             .InputAttachment,
         }),
     };
-    result[@enumToInt(Feature.UniformTexelBufferArrayDynamicIndexing)] = .{
+    result[@intFromEnum(Feature.UniformTexelBufferArrayDynamicIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability UniformTexelBufferArrayDynamicIndexing",
         .dependencies = featureSet(&[_]Feature{
@@ -1622,7 +1622,7 @@ pub const all_features = blk: {
             .SampledBuffer,
         }),
     };
-    result[@enumToInt(Feature.UniformTexelBufferArrayDynamicIndexingEXT)] = .{
+    result[@intFromEnum(Feature.UniformTexelBufferArrayDynamicIndexingEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability UniformTexelBufferArrayDynamicIndexingEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1630,7 +1630,7 @@ pub const all_features = blk: {
             .SampledBuffer,
         }),
     };
-    result[@enumToInt(Feature.StorageTexelBufferArrayDynamicIndexing)] = .{
+    result[@intFromEnum(Feature.StorageTexelBufferArrayDynamicIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageTexelBufferArrayDynamicIndexing",
         .dependencies = featureSet(&[_]Feature{
@@ -1638,7 +1638,7 @@ pub const all_features = blk: {
             .ImageBuffer,
         }),
     };
-    result[@enumToInt(Feature.StorageTexelBufferArrayDynamicIndexingEXT)] = .{
+    result[@intFromEnum(Feature.StorageTexelBufferArrayDynamicIndexingEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageTexelBufferArrayDynamicIndexingEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1646,7 +1646,7 @@ pub const all_features = blk: {
             .ImageBuffer,
         }),
     };
-    result[@enumToInt(Feature.UniformBufferArrayNonUniformIndexing)] = .{
+    result[@intFromEnum(Feature.UniformBufferArrayNonUniformIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability UniformBufferArrayNonUniformIndexing",
         .dependencies = featureSet(&[_]Feature{
@@ -1654,7 +1654,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.UniformBufferArrayNonUniformIndexingEXT)] = .{
+    result[@intFromEnum(Feature.UniformBufferArrayNonUniformIndexingEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability UniformBufferArrayNonUniformIndexingEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1662,7 +1662,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.SampledImageArrayNonUniformIndexing)] = .{
+    result[@intFromEnum(Feature.SampledImageArrayNonUniformIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SampledImageArrayNonUniformIndexing",
         .dependencies = featureSet(&[_]Feature{
@@ -1670,7 +1670,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.SampledImageArrayNonUniformIndexingEXT)] = .{
+    result[@intFromEnum(Feature.SampledImageArrayNonUniformIndexingEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SampledImageArrayNonUniformIndexingEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1678,7 +1678,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.StorageBufferArrayNonUniformIndexing)] = .{
+    result[@intFromEnum(Feature.StorageBufferArrayNonUniformIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageBufferArrayNonUniformIndexing",
         .dependencies = featureSet(&[_]Feature{
@@ -1686,7 +1686,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.StorageBufferArrayNonUniformIndexingEXT)] = .{
+    result[@intFromEnum(Feature.StorageBufferArrayNonUniformIndexingEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageBufferArrayNonUniformIndexingEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1694,7 +1694,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.StorageImageArrayNonUniformIndexing)] = .{
+    result[@intFromEnum(Feature.StorageImageArrayNonUniformIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageImageArrayNonUniformIndexing",
         .dependencies = featureSet(&[_]Feature{
@@ -1702,7 +1702,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.StorageImageArrayNonUniformIndexingEXT)] = .{
+    result[@intFromEnum(Feature.StorageImageArrayNonUniformIndexingEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageImageArrayNonUniformIndexingEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1710,7 +1710,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.InputAttachmentArrayNonUniformIndexing)] = .{
+    result[@intFromEnum(Feature.InputAttachmentArrayNonUniformIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability InputAttachmentArrayNonUniformIndexing",
         .dependencies = featureSet(&[_]Feature{
@@ -1719,7 +1719,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.InputAttachmentArrayNonUniformIndexingEXT)] = .{
+    result[@intFromEnum(Feature.InputAttachmentArrayNonUniformIndexingEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability InputAttachmentArrayNonUniformIndexingEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1728,7 +1728,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.UniformTexelBufferArrayNonUniformIndexing)] = .{
+    result[@intFromEnum(Feature.UniformTexelBufferArrayNonUniformIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability UniformTexelBufferArrayNonUniformIndexing",
         .dependencies = featureSet(&[_]Feature{
@@ -1737,7 +1737,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.UniformTexelBufferArrayNonUniformIndexingEXT)] = .{
+    result[@intFromEnum(Feature.UniformTexelBufferArrayNonUniformIndexingEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability UniformTexelBufferArrayNonUniformIndexingEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1746,7 +1746,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.StorageTexelBufferArrayNonUniformIndexing)] = .{
+    result[@intFromEnum(Feature.StorageTexelBufferArrayNonUniformIndexing)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageTexelBufferArrayNonUniformIndexing",
         .dependencies = featureSet(&[_]Feature{
@@ -1755,7 +1755,7 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.StorageTexelBufferArrayNonUniformIndexingEXT)] = .{
+    result[@intFromEnum(Feature.StorageTexelBufferArrayNonUniformIndexingEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability StorageTexelBufferArrayNonUniformIndexingEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1764,42 +1764,42 @@ pub const all_features = blk: {
             .ShaderNonUniform,
         }),
     };
-    result[@enumToInt(Feature.RayTracingNV)] = .{
+    result[@intFromEnum(Feature.RayTracingNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RayTracingNV",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.VulkanMemoryModel)] = .{
+    result[@intFromEnum(Feature.VulkanMemoryModel)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability VulkanMemoryModel",
         .dependencies = featureSet(&[_]Feature{
             .v1_5,
         }),
     };
-    result[@enumToInt(Feature.VulkanMemoryModelKHR)] = .{
+    result[@intFromEnum(Feature.VulkanMemoryModelKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability VulkanMemoryModelKHR",
         .dependencies = featureSet(&[_]Feature{
             .v1_5,
         }),
     };
-    result[@enumToInt(Feature.VulkanMemoryModelDeviceScope)] = .{
+    result[@intFromEnum(Feature.VulkanMemoryModelDeviceScope)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability VulkanMemoryModelDeviceScope",
         .dependencies = featureSet(&[_]Feature{
             .v1_5,
         }),
     };
-    result[@enumToInt(Feature.VulkanMemoryModelDeviceScopeKHR)] = .{
+    result[@intFromEnum(Feature.VulkanMemoryModelDeviceScopeKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability VulkanMemoryModelDeviceScopeKHR",
         .dependencies = featureSet(&[_]Feature{
             .v1_5,
         }),
     };
-    result[@enumToInt(Feature.PhysicalStorageBufferAddresses)] = .{
+    result[@intFromEnum(Feature.PhysicalStorageBufferAddresses)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability PhysicalStorageBufferAddresses",
         .dependencies = featureSet(&[_]Feature{
@@ -1807,7 +1807,7 @@ pub const all_features = blk: {
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.PhysicalStorageBufferAddressesEXT)] = .{
+    result[@intFromEnum(Feature.PhysicalStorageBufferAddressesEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability PhysicalStorageBufferAddressesEXT",
         .dependencies = featureSet(&[_]Feature{
@@ -1815,261 +1815,261 @@ pub const all_features = blk: {
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ComputeDerivativeGroupLinearNV)] = .{
+    result[@intFromEnum(Feature.ComputeDerivativeGroupLinearNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ComputeDerivativeGroupLinearNV",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.RayTracingProvisionalKHR)] = .{
+    result[@intFromEnum(Feature.RayTracingProvisionalKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RayTracingProvisionalKHR",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.CooperativeMatrixNV)] = .{
+    result[@intFromEnum(Feature.CooperativeMatrixNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability CooperativeMatrixNV",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.FragmentShaderSampleInterlockEXT)] = .{
+    result[@intFromEnum(Feature.FragmentShaderSampleInterlockEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FragmentShaderSampleInterlockEXT",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.FragmentShaderShadingRateInterlockEXT)] = .{
+    result[@intFromEnum(Feature.FragmentShaderShadingRateInterlockEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FragmentShaderShadingRateInterlockEXT",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.ShaderSMBuiltinsNV)] = .{
+    result[@intFromEnum(Feature.ShaderSMBuiltinsNV)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ShaderSMBuiltinsNV",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.FragmentShaderPixelInterlockEXT)] = .{
+    result[@intFromEnum(Feature.FragmentShaderPixelInterlockEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FragmentShaderPixelInterlockEXT",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.DemoteToHelperInvocationEXT)] = .{
+    result[@intFromEnum(Feature.DemoteToHelperInvocationEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability DemoteToHelperInvocationEXT",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.SubgroupShuffleINTEL)] = .{
+    result[@intFromEnum(Feature.SubgroupShuffleINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SubgroupShuffleINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SubgroupBufferBlockIOINTEL)] = .{
+    result[@intFromEnum(Feature.SubgroupBufferBlockIOINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SubgroupBufferBlockIOINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SubgroupImageBlockIOINTEL)] = .{
+    result[@intFromEnum(Feature.SubgroupImageBlockIOINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SubgroupImageBlockIOINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SubgroupImageMediaBlockIOINTEL)] = .{
+    result[@intFromEnum(Feature.SubgroupImageMediaBlockIOINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SubgroupImageMediaBlockIOINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.RoundToInfinityINTEL)] = .{
+    result[@intFromEnum(Feature.RoundToInfinityINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability RoundToInfinityINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FloatingPointModeINTEL)] = .{
+    result[@intFromEnum(Feature.FloatingPointModeINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FloatingPointModeINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.IntegerFunctions2INTEL)] = .{
+    result[@intFromEnum(Feature.IntegerFunctions2INTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability IntegerFunctions2INTEL",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.FunctionPointersINTEL)] = .{
+    result[@intFromEnum(Feature.FunctionPointersINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FunctionPointersINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.IndirectReferencesINTEL)] = .{
+    result[@intFromEnum(Feature.IndirectReferencesINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability IndirectReferencesINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.AsmINTEL)] = .{
+    result[@intFromEnum(Feature.AsmINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability AsmINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.AtomicFloat32MinMaxEXT)] = .{
+    result[@intFromEnum(Feature.AtomicFloat32MinMaxEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability AtomicFloat32MinMaxEXT",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.AtomicFloat64MinMaxEXT)] = .{
+    result[@intFromEnum(Feature.AtomicFloat64MinMaxEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability AtomicFloat64MinMaxEXT",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.AtomicFloat16MinMaxEXT)] = .{
+    result[@intFromEnum(Feature.AtomicFloat16MinMaxEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability AtomicFloat16MinMaxEXT",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.VectorComputeINTEL)] = .{
+    result[@intFromEnum(Feature.VectorComputeINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability VectorComputeINTEL",
         .dependencies = featureSet(&[_]Feature{
             .VectorAnyINTEL,
         }),
     };
-    result[@enumToInt(Feature.VectorAnyINTEL)] = .{
+    result[@intFromEnum(Feature.VectorAnyINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability VectorAnyINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ExpectAssumeKHR)] = .{
+    result[@intFromEnum(Feature.ExpectAssumeKHR)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ExpectAssumeKHR",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SubgroupAvcMotionEstimationINTEL)] = .{
+    result[@intFromEnum(Feature.SubgroupAvcMotionEstimationINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SubgroupAvcMotionEstimationINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SubgroupAvcMotionEstimationIntraINTEL)] = .{
+    result[@intFromEnum(Feature.SubgroupAvcMotionEstimationIntraINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SubgroupAvcMotionEstimationIntraINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.SubgroupAvcMotionEstimationChromaINTEL)] = .{
+    result[@intFromEnum(Feature.SubgroupAvcMotionEstimationChromaINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability SubgroupAvcMotionEstimationChromaINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.VariableLengthArrayINTEL)] = .{
+    result[@intFromEnum(Feature.VariableLengthArrayINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability VariableLengthArrayINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FunctionFloatControlINTEL)] = .{
+    result[@intFromEnum(Feature.FunctionFloatControlINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FunctionFloatControlINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FPGAMemoryAttributesINTEL)] = .{
+    result[@intFromEnum(Feature.FPGAMemoryAttributesINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FPGAMemoryAttributesINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FPFastMathModeINTEL)] = .{
+    result[@intFromEnum(Feature.FPFastMathModeINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FPFastMathModeINTEL",
         .dependencies = featureSet(&[_]Feature{
             .Kernel,
         }),
     };
-    result[@enumToInt(Feature.ArbitraryPrecisionIntegersINTEL)] = .{
+    result[@intFromEnum(Feature.ArbitraryPrecisionIntegersINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability ArbitraryPrecisionIntegersINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.UnstructuredLoopControlsINTEL)] = .{
+    result[@intFromEnum(Feature.UnstructuredLoopControlsINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability UnstructuredLoopControlsINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FPGALoopControlsINTEL)] = .{
+    result[@intFromEnum(Feature.FPGALoopControlsINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FPGALoopControlsINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.KernelAttributesINTEL)] = .{
+    result[@intFromEnum(Feature.KernelAttributesINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability KernelAttributesINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FPGAKernelAttributesINTEL)] = .{
+    result[@intFromEnum(Feature.FPGAKernelAttributesINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FPGAKernelAttributesINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FPGAMemoryAccessesINTEL)] = .{
+    result[@intFromEnum(Feature.FPGAMemoryAccessesINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FPGAMemoryAccessesINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FPGAClusterAttributesINTEL)] = .{
+    result[@intFromEnum(Feature.FPGAClusterAttributesINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FPGAClusterAttributesINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.LoopFuseINTEL)] = .{
+    result[@intFromEnum(Feature.LoopFuseINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability LoopFuseINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FPGABufferLocationINTEL)] = .{
+    result[@intFromEnum(Feature.FPGABufferLocationINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FPGABufferLocationINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.USMStorageClassesINTEL)] = .{
+    result[@intFromEnum(Feature.USMStorageClassesINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability USMStorageClassesINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.IOPipesINTEL)] = .{
+    result[@intFromEnum(Feature.IOPipesINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability IOPipesINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.BlockingPipesINTEL)] = .{
+    result[@intFromEnum(Feature.BlockingPipesINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability BlockingPipesINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.FPGARegINTEL)] = .{
+    result[@intFromEnum(Feature.FPGARegINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability FPGARegINTEL",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.AtomicFloat32AddEXT)] = .{
+    result[@intFromEnum(Feature.AtomicFloat32AddEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability AtomicFloat32AddEXT",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.AtomicFloat64AddEXT)] = .{
+    result[@intFromEnum(Feature.AtomicFloat64AddEXT)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability AtomicFloat64AddEXT",
         .dependencies = featureSet(&[_]Feature{
             .Shader,
         }),
     };
-    result[@enumToInt(Feature.LongConstantCompositeINTEL)] = .{
+    result[@intFromEnum(Feature.LongConstantCompositeINTEL)] = .{
         .llvm_name = null,
         .description = "Enable SPIR-V capability LongConstantCompositeINTEL",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/ve.zig
@@ -17,7 +17,7 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.vpu)] = .{
+    result[@intFromEnum(Feature.vpu)] = .{
         .llvm_name = "vpu",
         .description = "Enable the VPU",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/wasm.zig
@@ -28,62 +28,62 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.atomics)] = .{
+    result[@intFromEnum(Feature.atomics)] = .{
         .llvm_name = "atomics",
         .description = "Enable Atomics",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.bulk_memory)] = .{
+    result[@intFromEnum(Feature.bulk_memory)] = .{
         .llvm_name = "bulk-memory",
         .description = "Enable bulk memory operations",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.exception_handling)] = .{
+    result[@intFromEnum(Feature.exception_handling)] = .{
         .llvm_name = "exception-handling",
         .description = "Enable Wasm exception handling",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.extended_const)] = .{
+    result[@intFromEnum(Feature.extended_const)] = .{
         .llvm_name = "extended-const",
         .description = "Enable extended const expressions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.multivalue)] = .{
+    result[@intFromEnum(Feature.multivalue)] = .{
         .llvm_name = "multivalue",
         .description = "Enable multivalue blocks, instructions, and functions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mutable_globals)] = .{
+    result[@intFromEnum(Feature.mutable_globals)] = .{
         .llvm_name = "mutable-globals",
         .description = "Enable mutable globals",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nontrapping_fptoint)] = .{
+    result[@intFromEnum(Feature.nontrapping_fptoint)] = .{
         .llvm_name = "nontrapping-fptoint",
         .description = "Enable non-trapping float-to-int conversion operators",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.reference_types)] = .{
+    result[@intFromEnum(Feature.reference_types)] = .{
         .llvm_name = "reference-types",
         .description = "Enable reference types",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.relaxed_simd)] = .{
+    result[@intFromEnum(Feature.relaxed_simd)] = .{
         .llvm_name = "relaxed-simd",
         .description = "Enable relaxed-simd instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sign_ext)] = .{
+    result[@intFromEnum(Feature.sign_ext)] = .{
         .llvm_name = "sign-ext",
         .description = "Enable sign extension operators",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.simd128)] = .{
+    result[@intFromEnum(Feature.simd128)] = .{
         .llvm_name = "simd128",
         .description = "Enable 128-bit SIMD",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tail_call)] = .{
+    result[@intFromEnum(Feature.tail_call)] = .{
         .llvm_name = "tail-call",
         .description = "Enable tail call instructions",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/target/x86.zig
@@ -178,135 +178,135 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.@"16bit_mode")] = .{
+    result[@intFromEnum(Feature.@"16bit_mode")] = .{
         .llvm_name = "16bit-mode",
         .description = "16-bit mode (i8086)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.@"32bit_mode")] = .{
+    result[@intFromEnum(Feature.@"32bit_mode")] = .{
         .llvm_name = "32bit-mode",
         .description = "32-bit mode (80386)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.@"3dnow")] = .{
+    result[@intFromEnum(Feature.@"3dnow")] = .{
         .llvm_name = "3dnow",
         .description = "Enable 3DNow! instructions",
         .dependencies = featureSet(&[_]Feature{
             .mmx,
         }),
     };
-    result[@enumToInt(Feature.@"3dnowa")] = .{
+    result[@intFromEnum(Feature.@"3dnowa")] = .{
         .llvm_name = "3dnowa",
         .description = "Enable 3DNow! Athlon instructions",
         .dependencies = featureSet(&[_]Feature{
             .@"3dnow",
         }),
     };
-    result[@enumToInt(Feature.@"64bit")] = .{
+    result[@intFromEnum(Feature.@"64bit")] = .{
         .llvm_name = "64bit",
         .description = "Support 64-bit instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.adx)] = .{
+    result[@intFromEnum(Feature.adx)] = .{
         .llvm_name = "adx",
         .description = "Support ADX instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.aes)] = .{
+    result[@intFromEnum(Feature.aes)] = .{
         .llvm_name = "aes",
         .description = "Enable AES instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse2,
         }),
     };
-    result[@enumToInt(Feature.allow_light_256_bit)] = .{
+    result[@intFromEnum(Feature.allow_light_256_bit)] = .{
         .llvm_name = "allow-light-256-bit",
         .description = "Enable generation of 256-bit load/stores even if we prefer 128-bit",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.amx_bf16)] = .{
+    result[@intFromEnum(Feature.amx_bf16)] = .{
         .llvm_name = "amx-bf16",
         .description = "Support AMX-BF16 instructions",
         .dependencies = featureSet(&[_]Feature{
             .amx_tile,
         }),
     };
-    result[@enumToInt(Feature.amx_fp16)] = .{
+    result[@intFromEnum(Feature.amx_fp16)] = .{
         .llvm_name = "amx-fp16",
         .description = "Support AMX amx-fp16 instructions",
         .dependencies = featureSet(&[_]Feature{
             .amx_tile,
         }),
     };
-    result[@enumToInt(Feature.amx_int8)] = .{
+    result[@intFromEnum(Feature.amx_int8)] = .{
         .llvm_name = "amx-int8",
         .description = "Support AMX-INT8 instructions",
         .dependencies = featureSet(&[_]Feature{
             .amx_tile,
         }),
     };
-    result[@enumToInt(Feature.amx_tile)] = .{
+    result[@intFromEnum(Feature.amx_tile)] = .{
         .llvm_name = "amx-tile",
         .description = "Support AMX-TILE instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.avx)] = .{
+    result[@intFromEnum(Feature.avx)] = .{
         .llvm_name = "avx",
         .description = "Enable AVX instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse4_2,
         }),
     };
-    result[@enumToInt(Feature.avx2)] = .{
+    result[@intFromEnum(Feature.avx2)] = .{
         .llvm_name = "avx2",
         .description = "Enable AVX2 instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx,
         }),
     };
-    result[@enumToInt(Feature.avx512bf16)] = .{
+    result[@intFromEnum(Feature.avx512bf16)] = .{
         .llvm_name = "avx512bf16",
         .description = "Support bfloat16 floating point",
         .dependencies = featureSet(&[_]Feature{
             .avx512bw,
         }),
     };
-    result[@enumToInt(Feature.avx512bitalg)] = .{
+    result[@intFromEnum(Feature.avx512bitalg)] = .{
         .llvm_name = "avx512bitalg",
         .description = "Enable AVX-512 Bit Algorithms",
         .dependencies = featureSet(&[_]Feature{
             .avx512bw,
         }),
     };
-    result[@enumToInt(Feature.avx512bw)] = .{
+    result[@intFromEnum(Feature.avx512bw)] = .{
         .llvm_name = "avx512bw",
         .description = "Enable AVX-512 Byte and Word Instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx512f,
         }),
     };
-    result[@enumToInt(Feature.avx512cd)] = .{
+    result[@intFromEnum(Feature.avx512cd)] = .{
         .llvm_name = "avx512cd",
         .description = "Enable AVX-512 Conflict Detection Instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx512f,
         }),
     };
-    result[@enumToInt(Feature.avx512dq)] = .{
+    result[@intFromEnum(Feature.avx512dq)] = .{
         .llvm_name = "avx512dq",
         .description = "Enable AVX-512 Doubleword and Quadword Instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx512f,
         }),
     };
-    result[@enumToInt(Feature.avx512er)] = .{
+    result[@intFromEnum(Feature.avx512er)] = .{
         .llvm_name = "avx512er",
         .description = "Enable AVX-512 Exponential and Reciprocal Instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx512f,
         }),
     };
-    result[@enumToInt(Feature.avx512f)] = .{
+    result[@intFromEnum(Feature.avx512f)] = .{
         .llvm_name = "avx512f",
         .description = "Enable AVX-512 instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -315,7 +315,7 @@ pub const all_features = blk: {
             .fma,
         }),
     };
-    result[@enumToInt(Feature.avx512fp16)] = .{
+    result[@intFromEnum(Feature.avx512fp16)] = .{
         .llvm_name = "avx512fp16",
         .description = "Support 16-bit floating point",
         .dependencies = featureSet(&[_]Feature{
@@ -324,287 +324,287 @@ pub const all_features = blk: {
             .avx512vl,
         }),
     };
-    result[@enumToInt(Feature.avx512ifma)] = .{
+    result[@intFromEnum(Feature.avx512ifma)] = .{
         .llvm_name = "avx512ifma",
         .description = "Enable AVX-512 Integer Fused Multiply-Add",
         .dependencies = featureSet(&[_]Feature{
             .avx512f,
         }),
     };
-    result[@enumToInt(Feature.avx512pf)] = .{
+    result[@intFromEnum(Feature.avx512pf)] = .{
         .llvm_name = "avx512pf",
         .description = "Enable AVX-512 PreFetch Instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx512f,
         }),
     };
-    result[@enumToInt(Feature.avx512vbmi)] = .{
+    result[@intFromEnum(Feature.avx512vbmi)] = .{
         .llvm_name = "avx512vbmi",
         .description = "Enable AVX-512 Vector Byte Manipulation Instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx512bw,
         }),
     };
-    result[@enumToInt(Feature.avx512vbmi2)] = .{
+    result[@intFromEnum(Feature.avx512vbmi2)] = .{
         .llvm_name = "avx512vbmi2",
         .description = "Enable AVX-512 further Vector Byte Manipulation Instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx512bw,
         }),
     };
-    result[@enumToInt(Feature.avx512vl)] = .{
+    result[@intFromEnum(Feature.avx512vl)] = .{
         .llvm_name = "avx512vl",
         .description = "Enable AVX-512 Vector Length eXtensions",
         .dependencies = featureSet(&[_]Feature{
             .avx512f,
         }),
     };
-    result[@enumToInt(Feature.avx512vnni)] = .{
+    result[@intFromEnum(Feature.avx512vnni)] = .{
         .llvm_name = "avx512vnni",
         .description = "Enable AVX-512 Vector Neural Network Instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx512f,
         }),
     };
-    result[@enumToInt(Feature.avx512vp2intersect)] = .{
+    result[@intFromEnum(Feature.avx512vp2intersect)] = .{
         .llvm_name = "avx512vp2intersect",
         .description = "Enable AVX-512 vp2intersect",
         .dependencies = featureSet(&[_]Feature{
             .avx512f,
         }),
     };
-    result[@enumToInt(Feature.avx512vpopcntdq)] = .{
+    result[@intFromEnum(Feature.avx512vpopcntdq)] = .{
         .llvm_name = "avx512vpopcntdq",
         .description = "Enable AVX-512 Population Count Instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx512f,
         }),
     };
-    result[@enumToInt(Feature.avxifma)] = .{
+    result[@intFromEnum(Feature.avxifma)] = .{
         .llvm_name = "avxifma",
         .description = "Enable AVX-IFMA",
         .dependencies = featureSet(&[_]Feature{
             .avx2,
         }),
     };
-    result[@enumToInt(Feature.avxneconvert)] = .{
+    result[@intFromEnum(Feature.avxneconvert)] = .{
         .llvm_name = "avxneconvert",
         .description = "Support AVX-NE-CONVERT instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx2,
         }),
     };
-    result[@enumToInt(Feature.avxvnni)] = .{
+    result[@intFromEnum(Feature.avxvnni)] = .{
         .llvm_name = "avxvnni",
         .description = "Support AVX_VNNI encoding",
         .dependencies = featureSet(&[_]Feature{
             .avx2,
         }),
     };
-    result[@enumToInt(Feature.avxvnniint8)] = .{
+    result[@intFromEnum(Feature.avxvnniint8)] = .{
         .llvm_name = "avxvnniint8",
         .description = "Enable AVX-VNNI-INT8",
         .dependencies = featureSet(&[_]Feature{
             .avx2,
         }),
     };
-    result[@enumToInt(Feature.bmi)] = .{
+    result[@intFromEnum(Feature.bmi)] = .{
         .llvm_name = "bmi",
         .description = "Support BMI instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.bmi2)] = .{
+    result[@intFromEnum(Feature.bmi2)] = .{
         .llvm_name = "bmi2",
         .description = "Support BMI2 instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.branchfusion)] = .{
+    result[@intFromEnum(Feature.branchfusion)] = .{
         .llvm_name = "branchfusion",
         .description = "CMP/TEST can be fused with conditional branches",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cldemote)] = .{
+    result[@intFromEnum(Feature.cldemote)] = .{
         .llvm_name = "cldemote",
         .description = "Enable Cache Line Demote",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.clflushopt)] = .{
+    result[@intFromEnum(Feature.clflushopt)] = .{
         .llvm_name = "clflushopt",
         .description = "Flush A Cache Line Optimized",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.clwb)] = .{
+    result[@intFromEnum(Feature.clwb)] = .{
         .llvm_name = "clwb",
         .description = "Cache Line Write Back",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.clzero)] = .{
+    result[@intFromEnum(Feature.clzero)] = .{
         .llvm_name = "clzero",
         .description = "Enable Cache Line Zero",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cmov)] = .{
+    result[@intFromEnum(Feature.cmov)] = .{
         .llvm_name = "cmov",
         .description = "Enable conditional move instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cmpccxadd)] = .{
+    result[@intFromEnum(Feature.cmpccxadd)] = .{
         .llvm_name = "cmpccxadd",
         .description = "Support CMPCCXADD instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.crc32)] = .{
+    result[@intFromEnum(Feature.crc32)] = .{
         .llvm_name = "crc32",
         .description = "Enable SSE 4.2 CRC32 instruction (used when SSE4.2 is supported but function is GPR only)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.cx16)] = .{
+    result[@intFromEnum(Feature.cx16)] = .{
         .llvm_name = "cx16",
         .description = "64-bit with cmpxchg16b (this is true for most x86-64 chips, but not the first AMD chips)",
         .dependencies = featureSet(&[_]Feature{
             .cx8,
         }),
     };
-    result[@enumToInt(Feature.cx8)] = .{
+    result[@intFromEnum(Feature.cx8)] = .{
         .llvm_name = "cx8",
         .description = "Support CMPXCHG8B instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.enqcmd)] = .{
+    result[@intFromEnum(Feature.enqcmd)] = .{
         .llvm_name = "enqcmd",
         .description = "Has ENQCMD instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ermsb)] = .{
+    result[@intFromEnum(Feature.ermsb)] = .{
         .llvm_name = "ermsb",
         .description = "REP MOVS/STOS are fast",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.f16c)] = .{
+    result[@intFromEnum(Feature.f16c)] = .{
         .llvm_name = "f16c",
         .description = "Support 16-bit floating point conversion instructions",
         .dependencies = featureSet(&[_]Feature{
             .avx,
         }),
     };
-    result[@enumToInt(Feature.false_deps_getmant)] = .{
+    result[@intFromEnum(Feature.false_deps_getmant)] = .{
         .llvm_name = "false-deps-getmant",
         .description = "VGETMANTSS/SD/SH and VGETMANDPS/PD(memory version) has a false dependency on dest register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.false_deps_lzcnt_tzcnt)] = .{
+    result[@intFromEnum(Feature.false_deps_lzcnt_tzcnt)] = .{
         .llvm_name = "false-deps-lzcnt-tzcnt",
         .description = "LZCNT/TZCNT have a false dependency on dest register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.false_deps_mulc)] = .{
+    result[@intFromEnum(Feature.false_deps_mulc)] = .{
         .llvm_name = "false-deps-mulc",
         .description = "VF[C]MULCPH/SH has a false dependency on dest register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.false_deps_mullq)] = .{
+    result[@intFromEnum(Feature.false_deps_mullq)] = .{
         .llvm_name = "false-deps-mullq",
         .description = "VPMULLQ has a false dependency on dest register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.false_deps_perm)] = .{
+    result[@intFromEnum(Feature.false_deps_perm)] = .{
         .llvm_name = "false-deps-perm",
         .description = "VPERMD/Q/PS/PD has a false dependency on dest register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.false_deps_popcnt)] = .{
+    result[@intFromEnum(Feature.false_deps_popcnt)] = .{
         .llvm_name = "false-deps-popcnt",
         .description = "POPCNT has a false dependency on dest register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.false_deps_range)] = .{
+    result[@intFromEnum(Feature.false_deps_range)] = .{
         .llvm_name = "false-deps-range",
         .description = "VRANGEPD/PS/SD/SS has a false dependency on dest register",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_11bytenop)] = .{
+    result[@intFromEnum(Feature.fast_11bytenop)] = .{
         .llvm_name = "fast-11bytenop",
         .description = "Target can quickly decode up to 11 byte NOPs",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_15bytenop)] = .{
+    result[@intFromEnum(Feature.fast_15bytenop)] = .{
         .llvm_name = "fast-15bytenop",
         .description = "Target can quickly decode up to 15 byte NOPs",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_7bytenop)] = .{
+    result[@intFromEnum(Feature.fast_7bytenop)] = .{
         .llvm_name = "fast-7bytenop",
         .description = "Target can quickly decode up to 7 byte NOPs",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_bextr)] = .{
+    result[@intFromEnum(Feature.fast_bextr)] = .{
         .llvm_name = "fast-bextr",
         .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_gather)] = .{
+    result[@intFromEnum(Feature.fast_gather)] = .{
         .llvm_name = "fast-gather",
         .description = "Indicates if gather is reasonably fast (this is true for Skylake client and all AVX-512 CPUs)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_hops)] = .{
+    result[@intFromEnum(Feature.fast_hops)] = .{
         .llvm_name = "fast-hops",
         .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_lzcnt)] = .{
+    result[@intFromEnum(Feature.fast_lzcnt)] = .{
         .llvm_name = "fast-lzcnt",
         .description = "LZCNT instructions are as fast as most simple integer ops",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_movbe)] = .{
+    result[@intFromEnum(Feature.fast_movbe)] = .{
         .llvm_name = "fast-movbe",
         .description = "Prefer a movbe over a single-use load + bswap / single-use bswap + store",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_scalar_fsqrt)] = .{
+    result[@intFromEnum(Feature.fast_scalar_fsqrt)] = .{
         .llvm_name = "fast-scalar-fsqrt",
         .description = "Scalar SQRT is fast (disable Newton-Raphson)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_scalar_shift_masks)] = .{
+    result[@intFromEnum(Feature.fast_scalar_shift_masks)] = .{
         .llvm_name = "fast-scalar-shift-masks",
         .description = "Prefer a left/right scalar logical shift pair over a shift+and pair",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_shld_rotate)] = .{
+    result[@intFromEnum(Feature.fast_shld_rotate)] = .{
         .llvm_name = "fast-shld-rotate",
         .description = "SHLD can be used as a faster rotate",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_variable_crosslane_shuffle)] = .{
+    result[@intFromEnum(Feature.fast_variable_crosslane_shuffle)] = .{
         .llvm_name = "fast-variable-crosslane-shuffle",
         .description = "Cross-lane shuffles with variable masks are fast",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_variable_perlane_shuffle)] = .{
+    result[@intFromEnum(Feature.fast_variable_perlane_shuffle)] = .{
         .llvm_name = "fast-variable-perlane-shuffle",
         .description = "Per-lane shuffles with variable masks are fast",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_vector_fsqrt)] = .{
+    result[@intFromEnum(Feature.fast_vector_fsqrt)] = .{
         .llvm_name = "fast-vector-fsqrt",
         .description = "Vector SQRT is fast (disable Newton-Raphson)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fast_vector_shift_masks)] = .{
+    result[@intFromEnum(Feature.fast_vector_shift_masks)] = .{
         .llvm_name = "fast-vector-shift-masks",
         .description = "Prefer a left/right vector logical shift pair over a shift+and pair",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fma)] = .{
+    result[@intFromEnum(Feature.fma)] = .{
         .llvm_name = "fma",
         .description = "Enable three-operand fused multiply-add",
         .dependencies = featureSet(&[_]Feature{
             .avx,
         }),
     };
-    result[@enumToInt(Feature.fma4)] = .{
+    result[@intFromEnum(Feature.fma4)] = .{
         .llvm_name = "fma4",
         .description = "Enable four-operand fused multiply-add",
         .dependencies = featureSet(&[_]Feature{
@@ -612,218 +612,218 @@ pub const all_features = blk: {
             .sse4a,
         }),
     };
-    result[@enumToInt(Feature.fsgsbase)] = .{
+    result[@intFromEnum(Feature.fsgsbase)] = .{
         .llvm_name = "fsgsbase",
         .description = "Support FS/GS Base instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fsrm)] = .{
+    result[@intFromEnum(Feature.fsrm)] = .{
         .llvm_name = "fsrm",
         .description = "REP MOVSB of short lengths is faster",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.fxsr)] = .{
+    result[@intFromEnum(Feature.fxsr)] = .{
         .llvm_name = "fxsr",
         .description = "Support fxsave/fxrestore instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.gfni)] = .{
+    result[@intFromEnum(Feature.gfni)] = .{
         .llvm_name = "gfni",
         .description = "Enable Galois Field Arithmetic Instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse2,
         }),
     };
-    result[@enumToInt(Feature.harden_sls_ijmp)] = .{
+    result[@intFromEnum(Feature.harden_sls_ijmp)] = .{
         .llvm_name = "harden-sls-ijmp",
         .description = "Harden against straight line speculation across indirect JMP instructions.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.harden_sls_ret)] = .{
+    result[@intFromEnum(Feature.harden_sls_ret)] = .{
         .llvm_name = "harden-sls-ret",
         .description = "Harden against straight line speculation across RET instructions.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.hreset)] = .{
+    result[@intFromEnum(Feature.hreset)] = .{
         .llvm_name = "hreset",
         .description = "Has hreset instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.idivl_to_divb)] = .{
+    result[@intFromEnum(Feature.idivl_to_divb)] = .{
         .llvm_name = "idivl-to-divb",
         .description = "Use 8-bit divide for positive values less than 256",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.idivq_to_divl)] = .{
+    result[@intFromEnum(Feature.idivq_to_divl)] = .{
         .llvm_name = "idivq-to-divl",
         .description = "Use 32-bit divide for positive values less than 2^32",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.invpcid)] = .{
+    result[@intFromEnum(Feature.invpcid)] = .{
         .llvm_name = "invpcid",
         .description = "Invalidate Process-Context Identifier",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.kl)] = .{
+    result[@intFromEnum(Feature.kl)] = .{
         .llvm_name = "kl",
         .description = "Support Key Locker kl Instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse2,
         }),
     };
-    result[@enumToInt(Feature.lea_sp)] = .{
+    result[@intFromEnum(Feature.lea_sp)] = .{
         .llvm_name = "lea-sp",
         .description = "Use LEA for adjusting the stack pointer (this is an optimization for Intel Atom processors)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lea_uses_ag)] = .{
+    result[@intFromEnum(Feature.lea_uses_ag)] = .{
         .llvm_name = "lea-uses-ag",
         .description = "LEA instruction needs inputs at AG stage",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lvi_cfi)] = .{
+    result[@intFromEnum(Feature.lvi_cfi)] = .{
         .llvm_name = "lvi-cfi",
         .description = "Prevent indirect calls/branches from using a memory operand, and precede all indirect calls/branches from a register with an LFENCE instruction to serialize control flow. Also decompose RET instructions into a POP+LFENCE+JMP sequence.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lvi_load_hardening)] = .{
+    result[@intFromEnum(Feature.lvi_load_hardening)] = .{
         .llvm_name = "lvi-load-hardening",
         .description = "Insert LFENCE instructions to prevent data speculatively injected into loads from being used maliciously.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lwp)] = .{
+    result[@intFromEnum(Feature.lwp)] = .{
         .llvm_name = "lwp",
         .description = "Enable LWP instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.lzcnt)] = .{
+    result[@intFromEnum(Feature.lzcnt)] = .{
         .llvm_name = "lzcnt",
         .description = "Support LZCNT instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.macrofusion)] = .{
+    result[@intFromEnum(Feature.macrofusion)] = .{
         .llvm_name = "macrofusion",
         .description = "Various instructions can be fused with conditional branches",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mmx)] = .{
+    result[@intFromEnum(Feature.mmx)] = .{
         .llvm_name = "mmx",
         .description = "Enable MMX instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.movbe)] = .{
+    result[@intFromEnum(Feature.movbe)] = .{
         .llvm_name = "movbe",
         .description = "Support MOVBE instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.movdir64b)] = .{
+    result[@intFromEnum(Feature.movdir64b)] = .{
         .llvm_name = "movdir64b",
         .description = "Support movdir64b instruction (direct store 64 bytes)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.movdiri)] = .{
+    result[@intFromEnum(Feature.movdiri)] = .{
         .llvm_name = "movdiri",
         .description = "Support movdiri instruction (direct store integer)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.mwaitx)] = .{
+    result[@intFromEnum(Feature.mwaitx)] = .{
         .llvm_name = "mwaitx",
         .description = "Enable MONITORX/MWAITX timer functionality",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.nopl)] = .{
+    result[@intFromEnum(Feature.nopl)] = .{
         .llvm_name = "nopl",
         .description = "Enable NOPL instruction (generally pentium pro+)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.pad_short_functions)] = .{
+    result[@intFromEnum(Feature.pad_short_functions)] = .{
         .llvm_name = "pad-short-functions",
         .description = "Pad short functions (to prevent a stall when returning too early)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.pclmul)] = .{
+    result[@intFromEnum(Feature.pclmul)] = .{
         .llvm_name = "pclmul",
         .description = "Enable packed carry-less multiplication instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse2,
         }),
     };
-    result[@enumToInt(Feature.pconfig)] = .{
+    result[@intFromEnum(Feature.pconfig)] = .{
         .llvm_name = "pconfig",
         .description = "platform configuration instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.pku)] = .{
+    result[@intFromEnum(Feature.pku)] = .{
         .llvm_name = "pku",
         .description = "Enable protection keys",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.popcnt)] = .{
+    result[@intFromEnum(Feature.popcnt)] = .{
         .llvm_name = "popcnt",
         .description = "Support POPCNT instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prefer_128_bit)] = .{
+    result[@intFromEnum(Feature.prefer_128_bit)] = .{
         .llvm_name = "prefer-128-bit",
         .description = "Prefer 128-bit AVX instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prefer_256_bit)] = .{
+    result[@intFromEnum(Feature.prefer_256_bit)] = .{
         .llvm_name = "prefer-256-bit",
         .description = "Prefer 256-bit AVX instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prefer_mask_registers)] = .{
+    result[@intFromEnum(Feature.prefer_mask_registers)] = .{
         .llvm_name = "prefer-mask-registers",
         .description = "Prefer AVX512 mask registers over PTEST/MOVMSK",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prefetchi)] = .{
+    result[@intFromEnum(Feature.prefetchi)] = .{
         .llvm_name = "prefetchi",
         .description = "Prefetch instruction with T0 or T1 Hint",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prefetchwt1)] = .{
+    result[@intFromEnum(Feature.prefetchwt1)] = .{
         .llvm_name = "prefetchwt1",
         .description = "Prefetch with Intent to Write and T1 Hint",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.prfchw)] = .{
+    result[@intFromEnum(Feature.prfchw)] = .{
         .llvm_name = "prfchw",
         .description = "Support PRFCHW instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ptwrite)] = .{
+    result[@intFromEnum(Feature.ptwrite)] = .{
         .llvm_name = "ptwrite",
         .description = "Support ptwrite instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.raoint)] = .{
+    result[@intFromEnum(Feature.raoint)] = .{
         .llvm_name = "raoint",
         .description = "Support RAO-INT instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rdpid)] = .{
+    result[@intFromEnum(Feature.rdpid)] = .{
         .llvm_name = "rdpid",
         .description = "Support RDPID instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rdpru)] = .{
+    result[@intFromEnum(Feature.rdpru)] = .{
         .llvm_name = "rdpru",
         .description = "Support RDPRU instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rdrnd)] = .{
+    result[@intFromEnum(Feature.rdrnd)] = .{
         .llvm_name = "rdrnd",
         .description = "Support RDRAND instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rdseed)] = .{
+    result[@intFromEnum(Feature.rdseed)] = .{
         .llvm_name = "rdseed",
         .description = "Support RDSEED instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.retpoline)] = .{
+    result[@intFromEnum(Feature.retpoline)] = .{
         .llvm_name = "retpoline",
         .description = "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct",
         .dependencies = featureSet(&[_]Feature{
@@ -831,200 +831,200 @@ pub const all_features = blk: {
             .retpoline_indirect_calls,
         }),
     };
-    result[@enumToInt(Feature.retpoline_external_thunk)] = .{
+    result[@intFromEnum(Feature.retpoline_external_thunk)] = .{
         .llvm_name = "retpoline-external-thunk",
         .description = "When lowering an indirect call or branch using a `retpoline`, rely on the specified user provided thunk rather than emitting one ourselves. Only has effect when combined with some other retpoline feature",
         .dependencies = featureSet(&[_]Feature{
             .retpoline_indirect_calls,
         }),
     };
-    result[@enumToInt(Feature.retpoline_indirect_branches)] = .{
+    result[@intFromEnum(Feature.retpoline_indirect_branches)] = .{
         .llvm_name = "retpoline-indirect-branches",
         .description = "Remove speculation of indirect branches from the generated code",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.retpoline_indirect_calls)] = .{
+    result[@intFromEnum(Feature.retpoline_indirect_calls)] = .{
         .llvm_name = "retpoline-indirect-calls",
         .description = "Remove speculation of indirect calls from the generated code",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.rtm)] = .{
+    result[@intFromEnum(Feature.rtm)] = .{
         .llvm_name = "rtm",
         .description = "Support RTM instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sahf)] = .{
+    result[@intFromEnum(Feature.sahf)] = .{
         .llvm_name = "sahf",
         .description = "Support LAHF and SAHF instructions in 64-bit mode",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sbb_dep_breaking)] = .{
+    result[@intFromEnum(Feature.sbb_dep_breaking)] = .{
         .llvm_name = "sbb-dep-breaking",
         .description = "SBB with same register has no source dependency",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.serialize)] = .{
+    result[@intFromEnum(Feature.serialize)] = .{
         .llvm_name = "serialize",
         .description = "Has serialize instruction",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.seses)] = .{
+    result[@intFromEnum(Feature.seses)] = .{
         .llvm_name = "seses",
         .description = "Prevent speculative execution side channel timing attacks by inserting a speculation barrier before memory reads, memory writes, and conditional branches. Implies LVI Control Flow integrity.",
         .dependencies = featureSet(&[_]Feature{
             .lvi_cfi,
         }),
     };
-    result[@enumToInt(Feature.sgx)] = .{
+    result[@intFromEnum(Feature.sgx)] = .{
         .llvm_name = "sgx",
         .description = "Enable Software Guard Extensions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sha)] = .{
+    result[@intFromEnum(Feature.sha)] = .{
         .llvm_name = "sha",
         .description = "Enable SHA instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse2,
         }),
     };
-    result[@enumToInt(Feature.shstk)] = .{
+    result[@intFromEnum(Feature.shstk)] = .{
         .llvm_name = "shstk",
         .description = "Support CET Shadow-Stack instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_3ops_lea)] = .{
+    result[@intFromEnum(Feature.slow_3ops_lea)] = .{
         .llvm_name = "slow-3ops-lea",
         .description = "LEA instruction with 3 ops or certain registers is slow",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_incdec)] = .{
+    result[@intFromEnum(Feature.slow_incdec)] = .{
         .llvm_name = "slow-incdec",
         .description = "INC and DEC instructions are slower than ADD and SUB",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_lea)] = .{
+    result[@intFromEnum(Feature.slow_lea)] = .{
         .llvm_name = "slow-lea",
         .description = "LEA instruction with certain arguments is slow",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_pmaddwd)] = .{
+    result[@intFromEnum(Feature.slow_pmaddwd)] = .{
         .llvm_name = "slow-pmaddwd",
         .description = "PMADDWD is slower than PMULLD",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_pmulld)] = .{
+    result[@intFromEnum(Feature.slow_pmulld)] = .{
         .llvm_name = "slow-pmulld",
         .description = "PMULLD instruction is slow (compared to PMULLW/PMULHW and PMULUDQ)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_shld)] = .{
+    result[@intFromEnum(Feature.slow_shld)] = .{
         .llvm_name = "slow-shld",
         .description = "SHLD instruction is slow",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_two_mem_ops)] = .{
+    result[@intFromEnum(Feature.slow_two_mem_ops)] = .{
         .llvm_name = "slow-two-mem-ops",
         .description = "Two memory operand instructions are slow",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_unaligned_mem_16)] = .{
+    result[@intFromEnum(Feature.slow_unaligned_mem_16)] = .{
         .llvm_name = "slow-unaligned-mem-16",
         .description = "Slow unaligned 16-byte memory access",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.slow_unaligned_mem_32)] = .{
+    result[@intFromEnum(Feature.slow_unaligned_mem_32)] = .{
         .llvm_name = "slow-unaligned-mem-32",
         .description = "Slow unaligned 32-byte memory access",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.soft_float)] = .{
+    result[@intFromEnum(Feature.soft_float)] = .{
         .llvm_name = "soft-float",
         .description = "Use software floating point features",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sse)] = .{
+    result[@intFromEnum(Feature.sse)] = .{
         .llvm_name = "sse",
         .description = "Enable SSE instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.sse2)] = .{
+    result[@intFromEnum(Feature.sse2)] = .{
         .llvm_name = "sse2",
         .description = "Enable SSE2 instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse,
         }),
     };
-    result[@enumToInt(Feature.sse3)] = .{
+    result[@intFromEnum(Feature.sse3)] = .{
         .llvm_name = "sse3",
         .description = "Enable SSE3 instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse2,
         }),
     };
-    result[@enumToInt(Feature.sse4_1)] = .{
+    result[@intFromEnum(Feature.sse4_1)] = .{
         .llvm_name = "sse4.1",
         .description = "Enable SSE 4.1 instructions",
         .dependencies = featureSet(&[_]Feature{
             .ssse3,
         }),
     };
-    result[@enumToInt(Feature.sse4_2)] = .{
+    result[@intFromEnum(Feature.sse4_2)] = .{
         .llvm_name = "sse4.2",
         .description = "Enable SSE 4.2 instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse4_1,
         }),
     };
-    result[@enumToInt(Feature.sse4a)] = .{
+    result[@intFromEnum(Feature.sse4a)] = .{
         .llvm_name = "sse4a",
         .description = "Support SSE 4a instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse3,
         }),
     };
-    result[@enumToInt(Feature.sse_unaligned_mem)] = .{
+    result[@intFromEnum(Feature.sse_unaligned_mem)] = .{
         .llvm_name = "sse-unaligned-mem",
         .description = "Allow unaligned memory operands with SSE instructions (this may require setting a configuration bit in the processor)",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.ssse3)] = .{
+    result[@intFromEnum(Feature.ssse3)] = .{
         .llvm_name = "ssse3",
         .description = "Enable SSSE3 instructions",
         .dependencies = featureSet(&[_]Feature{
             .sse3,
         }),
     };
-    result[@enumToInt(Feature.tagged_globals)] = .{
+    result[@intFromEnum(Feature.tagged_globals)] = .{
         .llvm_name = "tagged-globals",
         .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits.",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tbm)] = .{
+    result[@intFromEnum(Feature.tbm)] = .{
         .llvm_name = "tbm",
         .description = "Enable TBM instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.tsxldtrk)] = .{
+    result[@intFromEnum(Feature.tsxldtrk)] = .{
         .llvm_name = "tsxldtrk",
         .description = "Support TSXLDTRK instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.uintr)] = .{
+    result[@intFromEnum(Feature.uintr)] = .{
         .llvm_name = "uintr",
         .description = "Has UINTR Instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.use_glm_div_sqrt_costs)] = .{
+    result[@intFromEnum(Feature.use_glm_div_sqrt_costs)] = .{
         .llvm_name = "use-glm-div-sqrt-costs",
         .description = "Use Goldmont specific floating point div/sqrt costs",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.use_slm_arith_costs)] = .{
+    result[@intFromEnum(Feature.use_slm_arith_costs)] = .{
         .llvm_name = "use-slm-arith-costs",
         .description = "Use Silvermont specific arithmetic costs",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.vaes)] = .{
+    result[@intFromEnum(Feature.vaes)] = .{
         .llvm_name = "vaes",
         .description = "Promote selected AES instructions to AVX512/AVX registers",
         .dependencies = featureSet(&[_]Feature{
@@ -1032,7 +1032,7 @@ pub const all_features = blk: {
             .avx,
         }),
     };
-    result[@enumToInt(Feature.vpclmulqdq)] = .{
+    result[@intFromEnum(Feature.vpclmulqdq)] = .{
         .llvm_name = "vpclmulqdq",
         .description = "Enable vpclmulqdq instructions",
         .dependencies = featureSet(&[_]Feature{
@@ -1040,60 +1040,60 @@ pub const all_features = blk: {
             .pclmul,
         }),
     };
-    result[@enumToInt(Feature.vzeroupper)] = .{
+    result[@intFromEnum(Feature.vzeroupper)] = .{
         .llvm_name = "vzeroupper",
         .description = "Should insert vzeroupper instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.waitpkg)] = .{
+    result[@intFromEnum(Feature.waitpkg)] = .{
         .llvm_name = "waitpkg",
         .description = "Wait and pause enhancements",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.wbnoinvd)] = .{
+    result[@intFromEnum(Feature.wbnoinvd)] = .{
         .llvm_name = "wbnoinvd",
         .description = "Write Back No Invalidate",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.widekl)] = .{
+    result[@intFromEnum(Feature.widekl)] = .{
         .llvm_name = "widekl",
         .description = "Support Key Locker wide Instructions",
         .dependencies = featureSet(&[_]Feature{
             .kl,
         }),
     };
-    result[@enumToInt(Feature.x87)] = .{
+    result[@intFromEnum(Feature.x87)] = .{
         .llvm_name = "x87",
         .description = "Enable X87 float instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.xop)] = .{
+    result[@intFromEnum(Feature.xop)] = .{
         .llvm_name = "xop",
         .description = "Enable XOP instructions",
         .dependencies = featureSet(&[_]Feature{
             .fma4,
         }),
     };
-    result[@enumToInt(Feature.xsave)] = .{
+    result[@intFromEnum(Feature.xsave)] = .{
         .llvm_name = "xsave",
         .description = "Support xsave instructions",
         .dependencies = featureSet(&[_]Feature{}),
     };
-    result[@enumToInt(Feature.xsavec)] = .{
+    result[@intFromEnum(Feature.xsavec)] = .{
         .llvm_name = "xsavec",
         .description = "Support xsavec instructions",
         .dependencies = featureSet(&[_]Feature{
             .xsave,
         }),
     };
-    result[@enumToInt(Feature.xsaveopt)] = .{
+    result[@intFromEnum(Feature.xsaveopt)] = .{
         .llvm_name = "xsaveopt",
         .description = "Support xsaveopt instructions",
         .dependencies = featureSet(&[_]Feature{
             .xsave,
         }),
     };
-    result[@enumToInt(Feature.xsaves)] = .{
+    result[@intFromEnum(Feature.xsaves)] = .{
         .llvm_name = "xsaves",
         .description = "Support xsaves instructions",
         .dependencies = featureSet(&[_]Feature{
lib/std/target/xtensa.zig
@@ -17,7 +17,7 @@ pub const all_features = blk: {
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
     var result: [len]CpuFeature = undefined;
-    result[@enumToInt(Feature.density)] = .{
+    result[@intFromEnum(Feature.density)] = .{
         .llvm_name = "density",
         .description = "Enable Density instructions",
         .dependencies = featureSet(&[_]Feature{}),
lib/std/Thread/Condition.zig
@@ -487,7 +487,7 @@ test "Condition - multi signal" {
 
     // The first paddle will be hit one last time by the last paddle.
     for (paddles, 0..) |p, i| {
-        const expected = @as(u32, num_iterations) + @boolToInt(i == 0);
+        const expected = @as(u32, num_iterations) + @intFromBool(i == 0);
         try testing.expectEqual(p.value, expected);
     }
 }
lib/std/Thread/Futex.zig
@@ -202,7 +202,7 @@ const DarwinImpl = struct {
         };
 
         if (status >= 0) return;
-        switch (@intToEnum(std.os.E, -status)) {
+        switch (@enumFromInt(std.os.E, -status)) {
             // Wait was interrupted by the OS or other spurious signalling.
             .INTR => {},
             // Address of the futex was paged out. This is unlikely, but possible in theory, and
@@ -229,7 +229,7 @@ const DarwinImpl = struct {
             const status = os.darwin.__ulock_wake(flags, addr, 0);
 
             if (status >= 0) return;
-            switch (@intToEnum(std.os.E, -status)) {
+            switch (@enumFromInt(std.os.E, -status)) {
                 .INTR => continue, // spurious wake()
                 .FAULT => unreachable, // __ulock_wake doesn't generate EFAULT according to darwin pthread_cond_t
                 .NOENT => return, // nothing was woken up
@@ -304,11 +304,11 @@ const FreebsdImpl = struct {
         }
 
         const rc = os.freebsd._umtx_op(
-            @ptrToInt(&ptr.value),
-            @enumToInt(os.freebsd.UMTX_OP.WAIT_UINT_PRIVATE),
+            @intFromPtr(&ptr.value),
+            @intFromEnum(os.freebsd.UMTX_OP.WAIT_UINT_PRIVATE),
             @as(c_ulong, expect),
             tm_size,
-            @ptrToInt(tm_ptr),
+            @intFromPtr(tm_ptr),
         );
 
         switch (os.errno(rc)) {
@@ -326,8 +326,8 @@ const FreebsdImpl = struct {
 
     fn wake(ptr: *const Atomic(u32), max_waiters: u32) void {
         const rc = os.freebsd._umtx_op(
-            @ptrToInt(&ptr.value),
-            @enumToInt(os.freebsd.UMTX_OP.WAKE_PRIVATE),
+            @intFromPtr(&ptr.value),
+            @intFromEnum(os.freebsd.UMTX_OP.WAKE_PRIVATE),
             @as(c_ulong, max_waiters),
             0, // there is no timeout struct
             0, // there is no timeout struct pointer
@@ -719,7 +719,7 @@ const PosixImpl = struct {
 
             // Make sure the pointer is aligned,
             // then cut off the zero bits from the alignment to get the unique address.
-            const addr = @ptrToInt(ptr);
+            const addr = @intFromPtr(ptr);
             assert(addr & (alignment - 1) == 0);
             return addr >> @ctz(@as(usize, alignment));
         }
lib/std/time/epoch.zig
@@ -83,7 +83,7 @@ pub const Month = enum(u4) {
     /// return the numeric calendar value for the given month
     /// i.e. jan=1, feb=2, etc
     pub fn numeric(self: Month) u4 {
-        return @enumToInt(self);
+        return @intFromEnum(self);
     }
 };
 
@@ -122,7 +122,7 @@ pub const YearAndDay = struct {
             if (days_left < days_in_month)
                 break;
             days_left -= days_in_month;
-            month = @intToEnum(Month, @enumToInt(month) + 1);
+            month = @enumFromInt(Month, @intFromEnum(month) + 1);
         }
         return .{ .month = month, .day_index = @intCast(u5, days_left) };
     }
lib/std/unicode/throughput_test.zig
@@ -32,8 +32,8 @@ fn benchmarkCodepointCount(buf: []const u8) !ResultCount {
     }
     const end = timer.read();
 
-    const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
-    const throughput = @floatToInt(u64, @intToFloat(f64, bytes) / elapsed_s);
+    const elapsed_s = @floatFromInt(f64, end - start) / time.ns_per_s;
+    const throughput = @intFromFloat(u64, @floatFromInt(f64, bytes) / elapsed_s);
 
     return ResultCount{ .count = r, .throughput = throughput };
 }
lib/std/valgrind/callgrind.zig
@@ -11,7 +11,7 @@ pub const CallgrindClientRequest = enum(usize) {
 };
 
 fn doCallgrindClientRequestExpr(default: usize, request: CallgrindClientRequest, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) usize {
-    return valgrind.doClientRequest(default, @intCast(usize, @enumToInt(request)), a1, a2, a3, a4, a5);
+    return valgrind.doClientRequest(default, @intCast(usize, @intFromEnum(request)), a1, a2, a3, a4, a5);
 }
 
 fn doCallgrindClientRequestStmt(request: CallgrindClientRequest, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) void {
@@ -28,7 +28,7 @@ pub fn dumpStats() void {
 /// the dump. This string is written as a description field into the
 /// profile data dump.
 pub fn dumpStatsAt(pos_str: [*]u8) void {
-    doCallgrindClientRequestStmt(.DumpStatsAt, @ptrToInt(pos_str), 0, 0, 0, 0);
+    doCallgrindClientRequestStmt(.DumpStatsAt, @intFromPtr(pos_str), 0, 0, 0, 0);
 }
 
 /// Zero cost centers
lib/std/valgrind/memcheck.zig
@@ -21,7 +21,7 @@ pub const MemCheckClientRequest = enum(usize) {
 };
 
 fn doMemCheckClientRequestExpr(default: usize, request: MemCheckClientRequest, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) usize {
-    return valgrind.doClientRequest(default, @intCast(usize, @enumToInt(request)), a1, a2, a3, a4, a5);
+    return valgrind.doClientRequest(default, @intCast(usize, @intFromEnum(request)), a1, a2, a3, a4, a5);
 }
 
 fn doMemCheckClientRequestStmt(request: MemCheckClientRequest, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) void {
@@ -32,7 +32,7 @@ fn doMemCheckClientRequestStmt(request: MemCheckClientRequest, a1: usize, a2: us
 /// This returns -1 when run on Valgrind and 0 otherwise.
 pub fn makeMemNoAccess(qzz: []u8) i1 {
     return @intCast(i1, doMemCheckClientRequestExpr(0, // default return
-        .MakeMemNoAccess, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));
+        .MakeMemNoAccess, @intFromPtr(qzz.ptr), qzz.len, 0, 0, 0));
 }
 
 /// Similarly, mark memory at qzz.ptr as addressable but undefined
@@ -40,7 +40,7 @@ pub fn makeMemNoAccess(qzz: []u8) i1 {
 /// This returns -1 when run on Valgrind and 0 otherwise.
 pub fn makeMemUndefined(qzz: []u8) i1 {
     return @intCast(i1, doMemCheckClientRequestExpr(0, // default return
-        .MakeMemUndefined, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));
+        .MakeMemUndefined, @intFromPtr(qzz.ptr), qzz.len, 0, 0, 0));
 }
 
 /// Similarly, mark memory at qzz.ptr as addressable and defined
@@ -48,7 +48,7 @@ pub fn makeMemUndefined(qzz: []u8) i1 {
 pub fn makeMemDefined(qzz: []u8) i1 {
     // This returns -1 when run on Valgrind and 0 otherwise.
     return @intCast(i1, doMemCheckClientRequestExpr(0, // default return
-        .MakeMemDefined, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));
+        .MakeMemDefined, @intFromPtr(qzz.ptr), qzz.len, 0, 0, 0));
 }
 
 /// Similar to makeMemDefined except that addressability is
@@ -57,7 +57,7 @@ pub fn makeMemDefined(qzz: []u8) i1 {
 /// This returns -1 when run on Valgrind and 0 otherwise.
 pub fn makeMemDefinedIfAddressable(qzz: []u8) i1 {
     return @intCast(i1, doMemCheckClientRequestExpr(0, // default return
-        .MakeMemDefinedIfAddressable, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));
+        .MakeMemDefinedIfAddressable, @intFromPtr(qzz.ptr), qzz.len, 0, 0, 0));
 }
 
 /// Create a block-description handle.  The description is an ascii
@@ -66,7 +66,7 @@ pub fn makeMemDefinedIfAddressable(qzz: []u8) i1 {
 /// properties of the memory range.
 pub fn createBlock(qzz: []u8, desc: [*]u8) usize {
     return doMemCheckClientRequestExpr(0, // default return
-        .CreateBlock, @ptrToInt(qzz.ptr), qzz.len, @ptrToInt(desc), 0, 0);
+        .CreateBlock, @intFromPtr(qzz.ptr), qzz.len, @intFromPtr(desc), 0, 0);
 }
 
 /// Discard a block-description-handle. Returns 1 for an
@@ -81,7 +81,7 @@ pub fn discard(blkindex: usize) bool {
 /// error message and returns the address of the first offending byte.
 /// Otherwise it returns zero.
 pub fn checkMemIsAddressable(qzz: []u8) usize {
-    return doMemCheckClientRequestExpr(0, .CheckMemIsAddressable, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);
+    return doMemCheckClientRequestExpr(0, .CheckMemIsAddressable, @intFromPtr(qzz.ptr), qzz.len, 0, 0, 0);
 }
 
 /// Check that memory at qzz.ptr is addressable and defined for
@@ -89,7 +89,7 @@ pub fn checkMemIsAddressable(qzz: []u8) usize {
 /// established, Valgrind prints an error message and returns the
 /// address of the first offending byte.  Otherwise it returns zero.
 pub fn checkMemIsDefined(qzz: []u8) usize {
-    return doMemCheckClientRequestExpr(0, .CheckMemIsDefined, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);
+    return doMemCheckClientRequestExpr(0, .CheckMemIsDefined, @intFromPtr(qzz.ptr), qzz.len, 0, 0, 0);
 }
 
 /// Do a full memory leak check (like --leak-check=full) mid-execution.
@@ -134,10 +134,10 @@ pub fn countLeaks() CountResult {
     };
     doMemCheckClientRequestStmt(
         .CountLeaks,
-        @ptrToInt(&res.leaked),
-        @ptrToInt(&res.dubious),
-        @ptrToInt(&res.reachable),
-        @ptrToInt(&res.suppressed),
+        @intFromPtr(&res.leaked),
+        @intFromPtr(&res.dubious),
+        @intFromPtr(&res.reachable),
+        @intFromPtr(&res.suppressed),
         0,
     );
     return res;
@@ -164,10 +164,10 @@ pub fn countLeakBlocks() CountResult {
     };
     doMemCheckClientRequestStmt(
         .CountLeakBlocks,
-        @ptrToInt(&res.leaked),
-        @ptrToInt(&res.dubious),
-        @ptrToInt(&res.reachable),
-        @ptrToInt(&res.suppressed),
+        @intFromPtr(&res.leaked),
+        @intFromPtr(&res.dubious),
+        @intFromPtr(&res.reachable),
+        @intFromPtr(&res.suppressed),
         0,
     );
     return res;
@@ -195,7 +195,7 @@ test "countLeakBlocks" {
 /// impossible to segfault your system by using this call.
 pub fn getVbits(zza: []u8, zzvbits: []u8) u2 {
     std.debug.assert(zzvbits.len >= zza.len / 8);
-    return @intCast(u2, doMemCheckClientRequestExpr(0, .GetVbits, @ptrToInt(zza.ptr), @ptrToInt(zzvbits), zza.len, 0, 0));
+    return @intCast(u2, doMemCheckClientRequestExpr(0, .GetVbits, @intFromPtr(zza.ptr), @intFromPtr(zzvbits), zza.len, 0, 0));
 }
 
 /// Set the validity data for addresses zza, copying it
@@ -208,17 +208,17 @@ pub fn getVbits(zza: []u8, zzvbits: []u8) u2 {
 /// impossible to segfault your system by using this call.
 pub fn setVbits(zzvbits: []u8, zza: []u8) u2 {
     std.debug.assert(zzvbits.len >= zza.len / 8);
-    return @intCast(u2, doMemCheckClientRequestExpr(0, .SetVbits, @ptrToInt(zza.ptr), @ptrToInt(zzvbits), zza.len, 0, 0));
+    return @intCast(u2, doMemCheckClientRequestExpr(0, .SetVbits, @intFromPtr(zza.ptr), @intFromPtr(zzvbits), zza.len, 0, 0));
 }
 
 /// Disable and re-enable reporting of addressing errors in the
 /// specified address range.
 pub fn disableAddrErrorReportingInRange(qzz: []u8) usize {
     return doMemCheckClientRequestExpr(0, // default return
-        .DisableAddrErrorReportingInRange, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);
+        .DisableAddrErrorReportingInRange, @intFromPtr(qzz.ptr), qzz.len, 0, 0, 0);
 }
 
 pub fn enableAddrErrorReportingInRange(qzz: []u8) usize {
     return doMemCheckClientRequestExpr(0, // default return
-        .EnableAddrErrorReportingInRange, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);
+        .EnableAddrErrorReportingInRange, @intFromPtr(qzz.ptr), qzz.len, 0, 0, 0);
 }
lib/std/zig/system/arm.zig
@@ -135,7 +135,7 @@ pub const cpu_models = struct {
 
 pub const aarch64 = struct {
     fn setFeature(cpu: *Target.Cpu, feature: Target.aarch64.Feature, enabled: bool) void {
-        const idx = @as(Target.Cpu.Feature.Set.Index, @enumToInt(feature));
+        const idx = @as(Target.Cpu.Feature.Set.Index, @intFromEnum(feature));
 
         if (enabled) cpu.features.addFeature(idx) else cpu.features.removeFeature(idx);
     }
lib/std/zig/system/NativeTargetInfo.zig
@@ -207,10 +207,10 @@ pub fn detect(cross_target: CrossTarget) DetectError!NativeTargetInfo {
             })) {
                 switch (result.target.abi) {
                     .code16 => result.target.cpu.features.addFeature(
-                        @enumToInt(std.Target.x86.Feature.@"16bit_mode"),
+                        @intFromEnum(std.Target.x86.Feature.@"16bit_mode"),
                     ),
                     else => result.target.cpu.features.addFeature(
-                        @enumToInt(std.Target.x86.Feature.@"32bit_mode"),
+                        @intFromEnum(std.Target.x86.Feature.@"32bit_mode"),
                     ),
                 }
             }
@@ -221,7 +221,7 @@ pub fn detect(cross_target: CrossTarget) DetectError!NativeTargetInfo {
         },
         .thumb, .thumbeb => {
             result.target.cpu.features.addFeature(
-                @enumToInt(std.Target.arm.Feature.thumb_mode),
+                @intFromEnum(std.Target.arm.Feature.thumb_mode),
             );
         },
         else => {},
@@ -268,7 +268,7 @@ fn detectAbiAndDynamicLinker(
     // and supported by Zig. But that means that we must detect the system ABI here rather than
     // relying on `builtin.target`.
     const all_abis = comptime blk: {
-        assert(@enumToInt(Target.Abi.none) == 0);
+        assert(@intFromEnum(Target.Abi.none) == 0);
         const fields = std.meta.fields(Target.Abi)[1..];
         var array: [fields.len]Target.Abi = undefined;
         inline for (fields, 0..) |field, i| {
lib/std/zig/system/windows.zig
@@ -43,7 +43,7 @@ pub fn detectRuntimeVersion() WindowsVersion {
 
     const version: u32 = @as(u32, os_ver) << 16 | @as(u16, sp_ver) << 8 | sub_ver;
 
-    return @intToEnum(WindowsVersion, version);
+    return @enumFromInt(WindowsVersion, version);
 }
 
 // Technically, a registry value can be as long as 1MB. However, MS recommends storing
@@ -188,7 +188,7 @@ fn getCpuInfoFromRegistry(core: usize, args: anytype) !void {
 }
 
 fn setFeature(comptime Feature: type, cpu: *Target.Cpu, feature: Feature, enabled: bool) void {
-    const idx = @as(Target.Cpu.Feature.Set.Index, @enumToInt(feature));
+    const idx = @as(Target.Cpu.Feature.Set.Index, @intFromEnum(feature));
 
     if (enabled) cpu.features.addFeature(idx) else cpu.features.removeFeature(idx);
 }
lib/std/zig/system/x86.zig
@@ -10,7 +10,7 @@ const XCR0_ZMM0_15 = 0x40;
 const XCR0_ZMM16_31 = 0x80;
 
 fn setFeature(cpu: *Target.Cpu, feature: Target.x86.Feature, enabled: bool) void {
-    const idx = @as(Target.Cpu.Feature.Set.Index, @enumToInt(feature));
+    const idx = @as(Target.Cpu.Feature.Set.Index, @intFromEnum(feature));
 
     if (enabled) cpu.features.addFeature(idx) else cpu.features.removeFeature(idx);
 }
lib/std/zig/Ast.zig
@@ -208,22 +208,22 @@ pub fn renderError(tree: Ast, parse_error: Error, stream: anytype) !void {
         },
         .expected_block => {
             return stream.print("expected block, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_block_or_assignment => {
             return stream.print("expected block or assignment, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_block_or_expr => {
             return stream.print("expected block or expression, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_block_or_field => {
             return stream.print("expected block or field, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_container_members => {
@@ -233,42 +233,42 @@ pub fn renderError(tree: Ast, parse_error: Error, stream: anytype) !void {
         },
         .expected_expr => {
             return stream.print("expected expression, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_expr_or_assignment => {
             return stream.print("expected expression or assignment, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_fn => {
             return stream.print("expected function, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_inlinable => {
             return stream.print("expected 'while' or 'for', found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_labelable => {
             return stream.print("expected 'while', 'for', 'inline', or '{{', found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_param_list => {
             return stream.print("expected parameter list, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_prefix_expr => {
             return stream.print("expected prefix expression, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_primary_type_expr => {
             return stream.print("expected primary type expression, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_pub_item => {
@@ -276,7 +276,7 @@ pub fn renderError(tree: Ast, parse_error: Error, stream: anytype) !void {
         },
         .expected_return_type => {
             return stream.print("expected return type expression, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_semi_or_else => {
@@ -292,32 +292,32 @@ pub fn renderError(tree: Ast, parse_error: Error, stream: anytype) !void {
         },
         .expected_suffix_op => {
             return stream.print("expected pointer dereference, optional unwrap, or field access, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_type_expr => {
             return stream.print("expected type expression, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_var_decl => {
             return stream.print("expected variable declaration, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_var_decl_or_fn => {
             return stream.print("expected variable declaration or function, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_loop_payload => {
             return stream.print("expected loop payload, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .expected_container => {
             return stream.print("expected a struct, enum or union, found '{s}'", .{
-                token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)].symbol(),
+                token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)].symbol(),
             });
         },
         .extern_fn_body => {
@@ -434,7 +434,7 @@ pub fn renderError(tree: Ast, parse_error: Error, stream: anytype) !void {
         },
 
         .expected_token => {
-            const found_tag = token_tags[parse_error.token + @boolToInt(parse_error.token_is_prev)];
+            const found_tag = token_tags[parse_error.token + @intFromBool(parse_error.token_is_prev)];
             const expected_symbol = parse_error.extra.expected_tag.symbol();
             switch (found_tag) {
                 .invalid => return stream.print("expected '{s}', found invalid bytes", .{
@@ -1289,7 +1289,7 @@ pub fn lastToken(tree: Ast, node: Node.Index) TokenIndex {
         },
         .@"for" => {
             const extra = @bitCast(Node.For, datas[n].rhs);
-            n = tree.extra_data[datas[n].lhs + extra.inputs + @boolToInt(extra.has_else)];
+            n = tree.extra_data[datas[n].lhs + extra.inputs + @intFromBool(extra.has_else)];
         },
         .@"suspend" => {
             if (datas[n].lhs != 0) {
@@ -2291,7 +2291,7 @@ fn fullForComponents(tree: Ast, info: full.For.Components) full.For {
         result.label_token = tok_i - 1;
     }
     const last_cond_token = tree.lastToken(info.inputs[info.inputs.len - 1]);
-    result.payload_token = last_cond_token + 3 + @boolToInt(token_tags[last_cond_token + 1] == .comma);
+    result.payload_token = last_cond_token + 3 + @intFromBool(token_tags[last_cond_token + 1] == .comma);
     if (info.else_expr != 0) {
         result.else_token = tree.lastToken(info.then_expr) + 1;
     }
lib/std/zig/c_builtins.zig
@@ -11,10 +11,10 @@ pub inline fn __builtin_bswap64(val: u64) u64 {
 }
 
 pub inline fn __builtin_signbit(val: f64) c_int {
-    return @boolToInt(std.math.signbit(val));
+    return @intFromBool(std.math.signbit(val));
 }
 pub inline fn __builtin_signbitf(val: f32) c_int {
-    return @boolToInt(std.math.signbit(val));
+    return @intFromBool(std.math.signbit(val));
 }
 
 pub inline fn __builtin_popcount(val: c_uint) c_int {
@@ -215,11 +215,11 @@ pub inline fn __builtin_inff() f32 {
 }
 
 pub inline fn __builtin_isnan(x: anytype) c_int {
-    return @boolToInt(std.math.isNan(x));
+    return @intFromBool(std.math.isNan(x));
 }
 
 pub inline fn __builtin_isinf(x: anytype) c_int {
-    return @boolToInt(std.math.isInf(x));
+    return @intFromBool(std.math.isInf(x));
 }
 
 /// Similar to isinf, except the return value is -1 for an argument of -Inf and 1 for an argument of +Inf.
@@ -230,7 +230,7 @@ pub inline fn __builtin_isinf_sign(x: anytype) c_int {
 
 pub inline fn __has_builtin(func: anytype) c_int {
     _ = func;
-    return @boolToInt(true);
+    return @intFromBool(true);
 }
 
 pub inline fn __builtin_assume(cond: bool) void {
@@ -243,7 +243,7 @@ pub inline fn __builtin_unreachable() noreturn {
 
 pub inline fn __builtin_constant_p(expr: anytype) c_int {
     _ = expr;
-    return @boolToInt(false);
+    return @intFromBool(false);
 }
 pub fn __builtin_mul_overflow(a: anytype, b: anytype, result: *@TypeOf(a, b)) c_int {
     const res = @mulWithOverflow(a, b);
lib/std/zig/c_translation.zig
@@ -21,30 +21,30 @@ pub fn cast(comptime DestType: type, target: anytype) DestType {
         .Int => {
             switch (@typeInfo(SourceType)) {
                 .Pointer => {
-                    return castInt(DestType, @ptrToInt(target));
+                    return castInt(DestType, @intFromPtr(target));
                 },
                 .Optional => |opt| {
                     if (@typeInfo(opt.child) == .Pointer) {
-                        return castInt(DestType, @ptrToInt(target));
+                        return castInt(DestType, @intFromPtr(target));
                     }
                 },
                 .Int => {
                     return castInt(DestType, target);
                 },
                 .Fn => {
-                    return castInt(DestType, @ptrToInt(&target));
+                    return castInt(DestType, @intFromPtr(&target));
                 },
                 .Bool => {
-                    return @boolToInt(target);
+                    return @intFromBool(target);
                 },
                 else => {},
             }
         },
         .Float => {
             switch (@typeInfo(SourceType)) {
-                .Int => return @intToFloat(DestType, target),
+                .Int => return @floatFromInt(DestType, target),
                 .Float => return @floatCast(DestType, target),
-                .Bool => return @intToFloat(DestType, @boolToInt(target)),
+                .Bool => return @floatFromInt(DestType, @intFromBool(target)),
                 else => {},
             }
         },
@@ -88,13 +88,13 @@ fn castPtr(comptime DestType: type, target: anytype) DestType {
 fn castToPtr(comptime DestType: type, comptime SourceType: type, target: anytype) DestType {
     switch (@typeInfo(SourceType)) {
         .Int => {
-            return @intToPtr(DestType, castInt(usize, target));
+            return @ptrFromInt(DestType, castInt(usize, target));
         },
         .ComptimeInt => {
             if (target < 0)
-                return @intToPtr(DestType, @bitCast(usize, @intCast(isize, target)))
+                return @ptrFromInt(DestType, @bitCast(usize, @intCast(isize, target)))
             else
-                return @intToPtr(DestType, @intCast(usize, target));
+                return @ptrFromInt(DestType, @intCast(usize, target));
         },
         .Pointer => {
             return castPtr(DestType, target);
@@ -120,34 +120,34 @@ fn ptrInfo(comptime PtrType: type) std.builtin.Type.Pointer {
 test "cast" {
     var i = @as(i64, 10);
 
-    try testing.expect(cast(*u8, 16) == @intToPtr(*u8, 16));
+    try testing.expect(cast(*u8, 16) == @ptrFromInt(*u8, 16));
     try testing.expect(cast(*u64, &i).* == @as(u64, 10));
     try testing.expect(cast(*i64, @as(?*align(1) i64, &i)) == &i);
 
-    try testing.expect(cast(?*u8, 2) == @intToPtr(*u8, 2));
+    try testing.expect(cast(?*u8, 2) == @ptrFromInt(*u8, 2));
     try testing.expect(cast(?*i64, @as(*align(1) i64, &i)) == &i);
     try testing.expect(cast(?*i64, @as(?*align(1) i64, &i)) == &i);
 
-    try testing.expectEqual(@as(u32, 4), cast(u32, @intToPtr(*u32, 4)));
-    try testing.expectEqual(@as(u32, 4), cast(u32, @intToPtr(?*u32, 4)));
+    try testing.expectEqual(@as(u32, 4), cast(u32, @ptrFromInt(*u32, 4)));
+    try testing.expectEqual(@as(u32, 4), cast(u32, @ptrFromInt(?*u32, 4)));
     try testing.expectEqual(@as(u32, 10), cast(u32, @as(u64, 10)));
 
     try testing.expectEqual(@bitCast(i32, @as(u32, 0x8000_0000)), cast(i32, @as(u32, 0x8000_0000)));
 
-    try testing.expectEqual(@intToPtr(*u8, 2), cast(*u8, @intToPtr(*const u8, 2)));
-    try testing.expectEqual(@intToPtr(*u8, 2), cast(*u8, @intToPtr(*volatile u8, 2)));
+    try testing.expectEqual(@ptrFromInt(*u8, 2), cast(*u8, @ptrFromInt(*const u8, 2)));
+    try testing.expectEqual(@ptrFromInt(*u8, 2), cast(*u8, @ptrFromInt(*volatile u8, 2)));
 
-    try testing.expectEqual(@intToPtr(?*anyopaque, 2), cast(?*anyopaque, @intToPtr(*u8, 2)));
+    try testing.expectEqual(@ptrFromInt(?*anyopaque, 2), cast(?*anyopaque, @ptrFromInt(*u8, 2)));
 
     var foo: c_int = -1;
-    try testing.expect(cast(*anyopaque, -1) == @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1))));
-    try testing.expect(cast(*anyopaque, foo) == @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1))));
-    try testing.expect(cast(?*anyopaque, -1) == @intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))));
-    try testing.expect(cast(?*anyopaque, foo) == @intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))));
+    try testing.expect(cast(*anyopaque, -1) == @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -1))));
+    try testing.expect(cast(*anyopaque, foo) == @ptrFromInt(*anyopaque, @bitCast(usize, @as(isize, -1))));
+    try testing.expect(cast(?*anyopaque, -1) == @ptrFromInt(?*anyopaque, @bitCast(usize, @as(isize, -1))));
+    try testing.expect(cast(?*anyopaque, foo) == @ptrFromInt(?*anyopaque, @bitCast(usize, @as(isize, -1))));
 
     const FnPtr = ?*align(1) const fn (*anyopaque) void;
-    try testing.expect(cast(FnPtr, 0) == @intToPtr(FnPtr, @as(usize, 0)));
-    try testing.expect(cast(FnPtr, foo) == @intToPtr(FnPtr, @bitCast(usize, @as(isize, -1))));
+    try testing.expect(cast(FnPtr, 0) == @ptrFromInt(FnPtr, @as(usize, 0)));
+    try testing.expect(cast(FnPtr, foo) == @ptrFromInt(FnPtr, @bitCast(usize, @as(isize, -1))));
 }
 
 /// Given a value returns its size as C's sizeof operator would.
lib/std/zig/ErrorBundle.zig
@@ -98,17 +98,17 @@ pub fn getMessages(eb: ErrorBundle) []const MessageIndex {
 }
 
 pub fn getErrorMessage(eb: ErrorBundle, index: MessageIndex) ErrorMessage {
-    return eb.extraData(ErrorMessage, @enumToInt(index)).data;
+    return eb.extraData(ErrorMessage, @intFromEnum(index)).data;
 }
 
 pub fn getSourceLocation(eb: ErrorBundle, index: SourceLocationIndex) SourceLocation {
     assert(index != .none);
-    return eb.extraData(SourceLocation, @enumToInt(index)).data;
+    return eb.extraData(SourceLocation, @intFromEnum(index)).data;
 }
 
 pub fn getNotes(eb: ErrorBundle, index: MessageIndex) []const MessageIndex {
     const notes_len = eb.getErrorMessage(index).notes_len;
-    const start = @enumToInt(index) + @typeInfo(ErrorMessage).Struct.fields.len;
+    const start = @intFromEnum(index) + @typeInfo(ErrorMessage).Struct.fields.len;
     return @ptrCast([]const MessageIndex, eb.extra[start..][0..notes_len]);
 }
 
@@ -125,8 +125,8 @@ fn extraData(eb: ErrorBundle, comptime T: type, index: usize) struct { data: T,
     inline for (fields) |field| {
         @field(result, field.name) = switch (field.type) {
             u32 => eb.extra[i],
-            MessageIndex => @intToEnum(MessageIndex, eb.extra[i]),
-            SourceLocationIndex => @intToEnum(SourceLocationIndex, eb.extra[i]),
+            MessageIndex => @enumFromInt(MessageIndex, eb.extra[i]),
+            SourceLocationIndex => @enumFromInt(SourceLocationIndex, eb.extra[i]),
             else => @compileError("bad field type"),
         };
         i += 1;
@@ -189,7 +189,7 @@ fn renderErrorMessageToWriter(
     const counting_stderr = counting_writer.writer();
     const err_msg = eb.getErrorMessage(err_msg_index);
     if (err_msg.src_loc != .none) {
-        const src = eb.extraData(SourceLocation, @enumToInt(err_msg.src_loc));
+        const src = eb.extraData(SourceLocation, @intFromEnum(err_msg.src_loc));
         try counting_stderr.writeByteNTimes(' ', indent);
         try ttyconf.setColor(stderr, .bold);
         try counting_stderr.print("{s}:{d}:{d}: ", .{
@@ -407,15 +407,15 @@ pub const Wip = struct {
     }
 
     pub fn addErrorMessage(wip: *Wip, em: ErrorMessage) !MessageIndex {
-        return @intToEnum(MessageIndex, try addExtra(wip, em));
+        return @enumFromInt(MessageIndex, try addExtra(wip, em));
     }
 
     pub fn addErrorMessageAssumeCapacity(wip: *Wip, em: ErrorMessage) MessageIndex {
-        return @intToEnum(MessageIndex, addExtraAssumeCapacity(wip, em));
+        return @enumFromInt(MessageIndex, addExtraAssumeCapacity(wip, em));
     }
 
     pub fn addSourceLocation(wip: *Wip, sl: SourceLocation) !SourceLocationIndex {
-        return @intToEnum(SourceLocationIndex, try addExtra(wip, sl));
+        return @enumFromInt(SourceLocationIndex, try addExtra(wip, sl));
     }
 
     pub fn addReferenceTrace(wip: *Wip, rt: ReferenceTrace) !void {
@@ -433,7 +433,7 @@ pub const Wip = struct {
         // The ensureUnusedCapacity call above guarantees this.
         const notes_start = wip.reserveNotes(@intCast(u32, other_list.len)) catch unreachable;
         for (notes_start.., other_list) |note, message| {
-            wip.extra.items[note] = @enumToInt(wip.addOtherMessage(other, message) catch unreachable);
+            wip.extra.items[note] = @intFromEnum(wip.addOtherMessage(other, message) catch unreachable);
         }
     }
 
@@ -455,7 +455,7 @@ pub const Wip = struct {
         });
         const notes_start = try wip.reserveNotes(other_msg.notes_len);
         for (notes_start.., other.getNotes(msg_index)) |note, other_note| {
-            wip.extra.items[note] = @enumToInt(try wip.addOtherMessage(other, other_note));
+            wip.extra.items[note] = @intFromEnum(try wip.addOtherMessage(other, other_note));
         }
         return msg;
     }
@@ -505,8 +505,8 @@ pub const Wip = struct {
         inline for (fields) |field| {
             wip.extra.items[i] = switch (field.type) {
                 u32 => @field(extra, field.name),
-                MessageIndex => @enumToInt(@field(extra, field.name)),
-                SourceLocationIndex => @enumToInt(@field(extra, field.name)),
+                MessageIndex => @intFromEnum(@field(extra, field.name)),
+                SourceLocationIndex => @intFromEnum(@field(extra, field.name)),
                 else => @compileError("bad field type"),
             };
             i += 1;
lib/std/zig/number_literal.zig
@@ -141,7 +141,7 @@ pub fn parseNumberLiteral(bytes: []const u8) Result {
             'a'...'z' => c - 'a' + 10,
             else => return .{ .failure = .{ .invalid_character = i } },
         };
-        if (digit >= base) return .{ .failure = .{ .invalid_digit = .{ .i = i, .base = @intToEnum(Base, base) } } };
+        if (digit >= base) return .{ .failure = .{ .invalid_digit = .{ .i = i, .base = @enumFromInt(Base, base) } } };
         if (exponent and digit >= 10) return .{ .failure = .{ .invalid_digit_exponent = i } };
         underscore = false;
         special = 0;
@@ -159,7 +159,7 @@ pub fn parseNumberLiteral(bytes: []const u8) Result {
     if (underscore) return .{ .failure = .{ .trailing_underscore = bytes.len - 1 } };
     if (special != 0) return .{ .failure = .{ .trailing_special = bytes.len - 1 } };
 
-    if (float) return .{ .float = @intToEnum(FloatBase, base) };
-    if (overflow) return .{ .big_int = @intToEnum(Base, base) };
+    if (float) return .{ .float = @enumFromInt(FloatBase, base) };
+    if (overflow) return .{ .big_int = @enumFromInt(Base, base) };
     return .{ .int = x };
 }
lib/std/zig/Parse.zig
@@ -1486,7 +1486,7 @@ fn parseExprPrecedence(p: *Parse, min_prec: i32) Error!Node.Index {
 
     while (true) {
         const tok_tag = p.token_tags[p.tok_i];
-        const info = operTable[@intCast(usize, @enumToInt(tok_tag))];
+        const info = operTable[@intCast(usize, @intFromEnum(tok_tag))];
         if (info.prec < min_prec) {
             break;
         }
lib/std/zig/parser_test.zig
@@ -628,7 +628,7 @@ test "zig fmt: builtin call with trailing comma" {
     try testCanonical(
         \\pub fn main() void {
         \\    @breakpoint();
-        \\    _ = @boolToInt(a);
+        \\    _ = @intFromBool(a);
         \\    _ = @call(
         \\        a,
         \\        b,
@@ -4815,7 +4815,7 @@ test "zig fmt: use of comments and multiline string literals may force the param
         \\        \\ Consider providing your own hash function.
         \\    );
         \\    return @intCast(i1, doMemCheckClientRequestExpr(0, // default return
-        \\        .MakeMemUndefined, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0));
+        \\        .MakeMemUndefined, @intFromPtr(qzz.ptr), qzz.len, 0, 0, 0));
         \\}
         \\
         \\// This looks like garbage don't do this
lib/std/zig/perf_test.zig
@@ -18,9 +18,9 @@ pub fn main() !void {
     }
     const end = timer.read();
     memory_used /= iterations;
-    const elapsed_s = @intToFloat(f64, end - start) / std.time.ns_per_s;
-    const bytes_per_sec_float = @intToFloat(f64, source.len * iterations) / elapsed_s;
-    const bytes_per_sec = @floatToInt(u64, @floor(bytes_per_sec_float));
+    const elapsed_s = @floatFromInt(f64, end - start) / std.time.ns_per_s;
+    const bytes_per_sec_float = @floatFromInt(f64, source.len * iterations) / elapsed_s;
+    const bytes_per_sec = @intFromFloat(u64, @floor(bytes_per_sec_float));
 
     var stdout_file = std.io.getStdOut();
     const stdout = stdout_file.writer();
lib/std/zig/render.zig
@@ -1723,7 +1723,7 @@ fn renderSwitchCase(
 
     if (switch_case.payload_token) |payload_token| {
         try renderToken(ais, tree, payload_token - 1, .none); // pipe
-        const ident = payload_token + @boolToInt(token_tags[payload_token] == .asterisk);
+        const ident = payload_token + @intFromBool(token_tags[payload_token] == .asterisk);
         if (token_tags[payload_token] == .asterisk) {
             try renderToken(ais, tree, payload_token, .none); // asterisk
         }
lib/std/zig/Server.zig
@@ -253,7 +253,7 @@ fn bswap(x: anytype) @TypeOf(x) {
 
     const T = @TypeOf(x);
     switch (@typeInfo(T)) {
-        .Enum => return @intToEnum(T, @byteSwap(@enumToInt(x))),
+        .Enum => return @enumFromInt(T, @byteSwap(@intFromEnum(x))),
         .Int => return @byteSwap(x),
         .Struct => |info| switch (info.layout) {
             .Extern => {
@@ -286,7 +286,7 @@ fn bswap_and_workaround_u32(bytes_ptr: *const [4]u8) u32 {
 /// workaround for https://github.com/ziglang/zig/issues/14904
 fn bswap_and_workaround_tag(bytes_ptr: *const [4]u8) InMessage.Tag {
     const int = std.mem.readIntLittle(u32, bytes_ptr);
-    return @intToEnum(InMessage.Tag, int);
+    return @enumFromInt(InMessage.Tag, int);
 }
 
 const OutMessage = std.zig.Server.Message;
lib/std/array_hash_map.zig
@@ -2310,7 +2310,7 @@ pub fn getHashPtrAddrFn(comptime K: type, comptime Context: type) (fn (Context,
     return struct {
         fn hash(ctx: Context, key: K) u32 {
             _ = ctx;
-            return getAutoHashFn(usize, void)({}, @ptrToInt(key));
+            return getAutoHashFn(usize, void)({}, @intFromPtr(key));
         }
     }.hash;
 }
lib/std/bit_set.zig
@@ -306,7 +306,7 @@ pub fn IntegerBitSet(comptime size: u16) type {
         }
         fn boolMaskBit(index: usize, value: bool) MaskInt {
             if (MaskInt == u0) return 0;
-            return @as(MaskInt, @boolToInt(value)) << @intCast(ShiftInt, index);
+            return @as(MaskInt, @intFromBool(value)) << @intCast(ShiftInt, index);
         }
     };
 }
@@ -640,7 +640,7 @@ pub fn ArrayBitSet(comptime MaskIntType: type, comptime size: usize) type {
             return index >> @bitSizeOf(ShiftInt);
         }
         fn boolMaskBit(index: usize, value: bool) MaskInt {
-            return @as(MaskInt, @boolToInt(value)) << @intCast(ShiftInt, index);
+            return @as(MaskInt, @intFromBool(value)) << @intCast(ShiftInt, index);
         }
     };
 }
@@ -669,7 +669,7 @@ pub const DynamicBitSetUnmanaged = struct {
 
     // Don't modify this value.  Ideally it would go in const data so
     // modifications would cause a bus error, but the only way
-    // to discard a const qualifier is through ptrToInt, which
+    // to discard a const qualifier is through intFromPtr, which
     // cannot currently round trip at comptime.
     var empty_masks_data = [_]MaskInt{ 0, undefined };
     const empty_masks_ptr = empty_masks_data[1..2];
@@ -1011,7 +1011,7 @@ pub const DynamicBitSetUnmanaged = struct {
         return index >> @bitSizeOf(ShiftInt);
     }
     fn boolMaskBit(index: usize, value: bool) MaskInt {
-        return @as(MaskInt, @boolToInt(value)) << @intCast(ShiftInt, index);
+        return @as(MaskInt, @intFromBool(value)) << @intCast(ShiftInt, index);
     }
     fn numMasks(bit_length: usize) usize {
         return (bit_length + (@bitSizeOf(MaskInt) - 1)) / @bitSizeOf(MaskInt);
lib/std/c.zig
@@ -113,7 +113,7 @@ pub usingnamespace switch (builtin.os.tag) {
 
 pub fn getErrno(rc: anytype) c.E {
     if (rc == -1) {
-        return @intToEnum(c.E, c._errno().*);
+        return @enumFromInt(c.E, c._errno().*);
     } else {
         return .SUCCESS;
     }
lib/std/child_process.zig
@@ -449,7 +449,7 @@ pub const ChildProcess = struct {
                 // has a value greater than 0
                 if ((fd[0].revents & std.os.POLL.IN) != 0) {
                     const err_int = try readIntFd(err_pipe[0]);
-                    return @errSetCast(SpawnError, @intToError(err_int));
+                    return @errSetCast(SpawnError, @errorFromInt(err_int));
                 }
             } else {
                 // Write maxInt(ErrInt) to the write end of the err_pipe. This is after
@@ -462,7 +462,7 @@ pub const ChildProcess = struct {
                 // Here we potentially return the fork child's error from the parent
                 // pid.
                 if (err_int != maxInt(ErrInt)) {
-                    return @errSetCast(SpawnError, @intToError(err_int));
+                    return @errSetCast(SpawnError, @errorFromInt(err_int));
                 }
             }
         }
@@ -1356,7 +1356,7 @@ fn destroyPipe(pipe: [2]os.fd_t) void {
 // Child of fork calls this to report an error to the fork parent.
 // Then the child exits.
 fn forkChildErrReport(fd: i32, err: ChildProcess.SpawnError) noreturn {
-    writeIntFd(fd, @as(ErrInt, @errorToInt(err))) catch {};
+    writeIntFd(fd, @as(ErrInt, @intFromError(err))) catch {};
     // If we're linking libc, some naughty applications may have registered atexit handlers
     // which we really do not want to run in the fork child. I caught LLVM doing this and
     // it caused a deadlock instead of doing an exit syscall. In the words of Avril Lavigne,
lib/std/coff.zig
@@ -1105,7 +1105,7 @@ pub const Coff = struct {
         assert(self.is_image);
 
         const data_dirs = self.getDataDirectories();
-        const debug_dir = data_dirs[@enumToInt(DirectoryEntry.DEBUG)];
+        const debug_dir = data_dirs[@intFromEnum(DirectoryEntry.DEBUG)];
 
         var stream = std.io.fixedBufferStream(self.data);
         const reader = stream.reader();
@@ -1303,9 +1303,9 @@ pub const Symtab = struct {
         return .{
             .name = raw[0..8].*,
             .value = mem.readIntLittle(u32, raw[8..12]),
-            .section_number = @intToEnum(SectionNumber, mem.readIntLittle(u16, raw[12..14])),
+            .section_number = @enumFromInt(SectionNumber, mem.readIntLittle(u16, raw[12..14])),
             .type = @bitCast(SymType, mem.readIntLittle(u16, raw[14..16])),
-            .storage_class = @intToEnum(StorageClass, raw[16]),
+            .storage_class = @enumFromInt(StorageClass, raw[16]),
             .number_of_aux_symbols = raw[17],
         };
     }
@@ -1333,7 +1333,7 @@ pub const Symtab = struct {
     fn asWeakExtDef(raw: []const u8) WeakExternalDefinition {
         return .{
             .tag_index = mem.readIntLittle(u32, raw[0..4]),
-            .flag = @intToEnum(WeakExternalFlag, mem.readIntLittle(u32, raw[4..8])),
+            .flag = @enumFromInt(WeakExternalFlag, mem.readIntLittle(u32, raw[4..8])),
             .unused = raw[8..18].*,
         };
     }
@@ -1351,7 +1351,7 @@ pub const Symtab = struct {
             .number_of_linenumbers = mem.readIntLittle(u16, raw[6..8]),
             .checksum = mem.readIntLittle(u32, raw[8..12]),
             .number = mem.readIntLittle(u16, raw[12..14]),
-            .selection = @intToEnum(ComdatSelection, raw[14]),
+            .selection = @enumFromInt(ComdatSelection, raw[14]),
             .unused = raw[15..18].*,
         };
     }
lib/std/debug.zig
@@ -461,7 +461,7 @@ pub const StackIterator = struct {
         if (native_os == .freestanding) return true;
 
         const aligned_address = address & ~@intCast(usize, (mem.page_size - 1));
-        const aligned_memory = @intToPtr([*]align(mem.page_size) u8, aligned_address)[0..mem.page_size];
+        const aligned_memory = @ptrFromInt([*]align(mem.page_size) u8, aligned_address)[0..mem.page_size];
 
         if (native_os != .windows) {
             if (native_os != .wasi) {
@@ -511,7 +511,7 @@ pub const StackIterator = struct {
         if (fp == 0 or !mem.isAligned(fp, @alignOf(usize)) or !isValidMemory(fp))
             return null;
 
-        const new_fp = math.add(usize, @intToPtr(*const usize, fp).*, fp_bias) catch return null;
+        const new_fp = math.add(usize, @ptrFromInt(*const usize, fp).*, fp_bias) catch return null;
 
         // Sanity check: the stack grows down thus all the parent frames must be
         // be at addresses that are greater (or equal) than the previous one.
@@ -520,7 +520,7 @@ pub const StackIterator = struct {
         if (new_fp != 0 and new_fp < self.fp)
             return null;
 
-        const new_pc = @intToPtr(
+        const new_pc = @ptrFromInt(
             *const usize,
             math.add(usize, fp, pc_offset) catch return null,
         ).*;
@@ -584,12 +584,12 @@ pub noinline fn walkStackWindows(addresses: []usize) usize {
             );
         } else {
             // leaf function
-            context.setIp(@intToPtr(*u64, current_regs.sp).*);
+            context.setIp(@ptrFromInt(*u64, current_regs.sp).*);
             context.setSp(current_regs.sp + @sizeOf(usize));
         }
 
         const next_regs = context.getRegs();
-        if (next_regs.sp < @ptrToInt(tib.StackLimit) or next_regs.sp > @ptrToInt(tib.StackBase)) {
+        if (next_regs.sp < @intFromPtr(tib.StackLimit) or next_regs.sp > @intFromPtr(tib.StackBase)) {
             break;
         }
 
@@ -1216,7 +1216,7 @@ pub const DebugInfo = struct {
             var module_valid = true;
             while (module_valid) {
                 const module_info = try debug_info.modules.addOne(allocator);
-                module_info.base_address = @ptrToInt(module_entry.modBaseAddr);
+                module_info.base_address = @intFromPtr(module_entry.modBaseAddr);
                 module_info.size = module_entry.modBaseSize;
                 module_info.name = allocator.dupe(u8, mem.sliceTo(&module_entry.szModule, 0)) catch &.{};
                 module_valid = windows.kernel32.Module32Next(handle, &module_entry) == 1;
@@ -1283,9 +1283,9 @@ pub const DebugInfo = struct {
 
             var it = macho.LoadCommandIterator{
                 .ncmds = header.ncmds,
-                .buffer = @alignCast(@alignOf(u64), @intToPtr(
+                .buffer = @alignCast(@alignOf(u64), @ptrFromInt(
                     [*]u8,
-                    @ptrToInt(header) + @sizeOf(macho.mach_header_64),
+                    @intFromPtr(header) + @sizeOf(macho.mach_header_64),
                 ))[0..header.sizeofcmds],
             };
             while (it.next()) |cmd| switch (cmd.cmd()) {
@@ -1332,7 +1332,7 @@ pub const DebugInfo = struct {
                     return obj_di;
                 }
 
-                const mapped_module = @intToPtr([*]const u8, module.base_address)[0..module.size];
+                const mapped_module = @ptrFromInt([*]const u8, module.base_address)[0..module.size];
                 const obj_di = try self.allocator.create(ModuleDebugInfo);
                 errdefer self.allocator.destroy(obj_di);
 
@@ -1897,11 +1897,11 @@ fn handleSegfaultPosix(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const any
     resetSegfaultHandler();
 
     const addr = switch (native_os) {
-        .linux => @ptrToInt(info.fields.sigfault.addr),
-        .freebsd, .macos => @ptrToInt(info.addr),
-        .netbsd => @ptrToInt(info.info.reason.fault.addr),
-        .openbsd => @ptrToInt(info.data.fault.addr),
-        .solaris => @ptrToInt(info.reason.fault.addr),
+        .linux => @intFromPtr(info.fields.sigfault.addr),
+        .freebsd, .macos => @intFromPtr(info.addr),
+        .netbsd => @intFromPtr(info.info.reason.fault.addr),
+        .openbsd => @intFromPtr(info.data.fault.addr),
+        .solaris => @intFromPtr(info.reason.fault.addr),
         else => unreachable,
     };
 
@@ -2008,7 +2008,7 @@ fn handleSegfaultWindowsExtra(
     msg: u8,
     label: ?[]const u8,
 ) noreturn {
-    const exception_address = @ptrToInt(info.ExceptionRecord.ExceptionAddress);
+    const exception_address = @intFromPtr(info.ExceptionRecord.ExceptionAddress);
     if (@hasDecl(windows, "CONTEXT")) {
         nosuspend switch (panic_stage) {
             0 => {
lib/std/dynamic_library.zig
@@ -71,18 +71,18 @@ pub fn linkmap_iterator(phdrs: []elf.Phdr) !LinkMap.Iterator {
         while (_DYNAMIC[i].d_tag != elf.DT_NULL) : (i += 1) {
             switch (_DYNAMIC[i].d_tag) {
                 elf.DT_DEBUG => {
-                    const ptr = @intToPtr(?*RDebug, _DYNAMIC[i].d_val);
+                    const ptr = @ptrFromInt(?*RDebug, _DYNAMIC[i].d_val);
                     if (ptr) |r_debug| {
                         if (r_debug.r_version != 1) return error.InvalidExe;
                         break :init r_debug.r_map;
                     }
                 },
                 elf.DT_PLTGOT => {
-                    const ptr = @intToPtr(?[*]usize, _DYNAMIC[i].d_val);
+                    const ptr = @ptrFromInt(?[*]usize, _DYNAMIC[i].d_val);
                     if (ptr) |got_table| {
                         // The address to the link_map structure is stored in
                         // the second slot
-                        break :init @intToPtr(?*LinkMap, got_table[1]);
+                        break :init @ptrFromInt(?*LinkMap, got_table[1]);
                     }
                 },
                 else => {},
@@ -136,7 +136,7 @@ pub const ElfDynLib = struct {
         if (!mem.eql(u8, eh.e_ident[0..4], elf.MAGIC)) return error.NotElfFile;
         if (eh.e_type != elf.ET.DYN) return error.NotDynamicLibrary;
 
-        const elf_addr = @ptrToInt(file_bytes.ptr);
+        const elf_addr = @intFromPtr(file_bytes.ptr);
 
         // Iterate over the program header entries to find out the
         // dynamic vector as well as the total size of the virtual memory.
@@ -149,10 +149,10 @@ pub const ElfDynLib = struct {
                 i += 1;
                 ph_addr += eh.e_phentsize;
             }) {
-                const ph = @intToPtr(*elf.Phdr, ph_addr);
+                const ph = @ptrFromInt(*elf.Phdr, ph_addr);
                 switch (ph.p_type) {
                     elf.PT_LOAD => virt_addr_end = @max(virt_addr_end, ph.p_vaddr + ph.p_memsz),
-                    elf.PT_DYNAMIC => maybe_dynv = @intToPtr([*]usize, elf_addr + ph.p_offset),
+                    elf.PT_DYNAMIC => maybe_dynv = @ptrFromInt([*]usize, elf_addr + ph.p_offset),
                     else => {},
                 }
             }
@@ -170,7 +170,7 @@ pub const ElfDynLib = struct {
         );
         errdefer os.munmap(all_loaded_mem);
 
-        const base = @ptrToInt(all_loaded_mem.ptr);
+        const base = @intFromPtr(all_loaded_mem.ptr);
 
         // Now iterate again and actually load all the program sections.
         {
@@ -180,7 +180,7 @@ pub const ElfDynLib = struct {
                 i += 1;
                 ph_addr += eh.e_phentsize;
             }) {
-                const ph = @intToPtr(*elf.Phdr, ph_addr);
+                const ph = @ptrFromInt(*elf.Phdr, ph_addr);
                 switch (ph.p_type) {
                     elf.PT_LOAD => {
                         // The VirtAddr may not be page-aligned; in such case there will be
@@ -188,7 +188,7 @@ pub const ElfDynLib = struct {
                         const aligned_addr = (base + ph.p_vaddr) & ~(@as(usize, mem.page_size) - 1);
                         const extra_bytes = (base + ph.p_vaddr) - aligned_addr;
                         const extended_memsz = mem.alignForward(usize, ph.p_memsz + extra_bytes, mem.page_size);
-                        const ptr = @intToPtr([*]align(mem.page_size) u8, aligned_addr);
+                        const ptr = @ptrFromInt([*]align(mem.page_size) u8, aligned_addr);
                         const prot = elfToMmapProt(ph.p_flags);
                         if ((ph.p_flags & elf.PF_W) == 0) {
                             // If it does not need write access, it can be mapped from the fd.
@@ -228,11 +228,11 @@ pub const ElfDynLib = struct {
             while (dynv[i] != 0) : (i += 2) {
                 const p = base + dynv[i + 1];
                 switch (dynv[i]) {
-                    elf.DT_STRTAB => maybe_strings = @intToPtr([*:0]u8, p),
-                    elf.DT_SYMTAB => maybe_syms = @intToPtr([*]elf.Sym, p),
-                    elf.DT_HASH => maybe_hashtab = @intToPtr([*]os.Elf_Symndx, p),
-                    elf.DT_VERSYM => maybe_versym = @intToPtr([*]u16, p),
-                    elf.DT_VERDEF => maybe_verdef = @intToPtr(*elf.Verdef, p),
+                    elf.DT_STRTAB => maybe_strings = @ptrFromInt([*:0]u8, p),
+                    elf.DT_SYMTAB => maybe_syms = @ptrFromInt([*]elf.Sym, p),
+                    elf.DT_HASH => maybe_hashtab = @ptrFromInt([*]os.Elf_Symndx, p),
+                    elf.DT_VERSYM => maybe_versym = @ptrFromInt([*]u16, p),
+                    elf.DT_VERDEF => maybe_verdef = @ptrFromInt(*elf.Verdef, p),
                     else => {},
                 }
             }
@@ -261,7 +261,7 @@ pub const ElfDynLib = struct {
 
     pub fn lookup(self: *ElfDynLib, comptime T: type, name: [:0]const u8) ?T {
         if (self.lookupAddress("", name)) |symbol| {
-            return @intToPtr(T, symbol);
+            return @ptrFromInt(T, symbol);
         } else {
             return null;
         }
@@ -284,7 +284,7 @@ pub const ElfDynLib = struct {
                 if (!checkver(self.verdef.?, versym[i], vername, self.strings))
                     continue;
             }
-            return @ptrToInt(self.memory.ptr) + self.syms[i].st_value;
+            return @intFromPtr(self.memory.ptr) + self.syms[i].st_value;
         }
 
         return null;
@@ -307,9 +307,9 @@ fn checkver(def_arg: *elf.Verdef, vsym_arg: i32, vername: []const u8, strings: [
             break;
         if (def.vd_next == 0)
             return false;
-        def = @intToPtr(*elf.Verdef, @ptrToInt(def) + def.vd_next);
+        def = @ptrFromInt(*elf.Verdef, @intFromPtr(def) + def.vd_next);
     }
-    const aux = @intToPtr(*elf.Verdaux, @ptrToInt(def) + def.vd_aux);
+    const aux = @ptrFromInt(*elf.Verdaux, @intFromPtr(def) + def.vd_aux);
     return mem.eql(u8, vername, mem.sliceTo(strings + aux.vda_name, 0));
 }
 
lib/std/elf.zig
@@ -453,8 +453,8 @@ pub const Header = struct {
         };
 
         const machine = if (need_bswap) blk: {
-            const value = @enumToInt(hdr32.e_machine);
-            break :blk @intToEnum(EM, @byteSwap(value));
+            const value = @intFromEnum(hdr32.e_machine);
+            break :blk @enumFromInt(EM, @byteSwap(value));
         } else hdr32.e_machine;
 
         return @as(Header, .{
lib/std/enums.zig
@@ -53,7 +53,7 @@ pub fn values(comptime E: type) []const E {
 /// Returns the tag name for `e` or null if no tag exists.
 pub fn tagName(comptime E: type, e: E) ?[]const u8 {
     return inline for (@typeInfo(E).Enum.fields) |f| {
-        if (@enumToInt(e) == f.value) break f.name;
+        if (@intFromEnum(e) == f.value) break f.name;
     } else null;
 }
 
@@ -61,11 +61,11 @@ test tagName {
     const E = enum(u8) { a, b, _ };
     try testing.expect(tagName(E, .a) != null);
     try testing.expectEqualStrings("a", tagName(E, .a).?);
-    try testing.expect(tagName(E, @intToEnum(E, 42)) == null);
+    try testing.expect(tagName(E, @enumFromInt(E, 42)) == null);
 }
 
 /// Determines the length of a direct-mapped enum array, indexed by
-/// @intCast(usize, @enumToInt(enum_value)).
+/// @intCast(usize, @intFromEnum(enum_value)).
 /// If the enum is non-exhaustive, the resulting length will only be enough
 /// to hold all explicit fields.
 /// If the enum contains any fields with values that cannot be represented
@@ -100,7 +100,7 @@ pub fn directEnumArrayLen(comptime E: type, comptime max_unused_slots: comptime_
 }
 
 /// Initializes an array of Data which can be indexed by
-/// @intCast(usize, @enumToInt(enum_value)).
+/// @intCast(usize, @intFromEnum(enum_value)).
 /// If the enum is non-exhaustive, the resulting array will only be large enough
 /// to hold all explicit fields.
 /// If the enum contains any fields with values that cannot be represented
@@ -136,7 +136,7 @@ test "std.enums.directEnumArray" {
 }
 
 /// Initializes an array of Data which can be indexed by
-/// @intCast(usize, @enumToInt(enum_value)).  The enum must be exhaustive.
+/// @intCast(usize, @intFromEnum(enum_value)).  The enum must be exhaustive.
 /// If the enum contains any fields with values that cannot be represented
 /// by usize, a compile error is issued.  The max_unused_slots parameter limits
 /// the total number of items which have no matching enum key (holes in the enum
@@ -156,7 +156,7 @@ pub fn directEnumArrayDefault(
     var result: [len]Data = if (default) |d| [_]Data{d} ** len else undefined;
     inline for (@typeInfo(@TypeOf(init_values)).Struct.fields) |f| {
         const enum_value = @field(E, f.name);
-        const index = @intCast(usize, @enumToInt(enum_value));
+        const index = @intCast(usize, @intFromEnum(enum_value));
         result[index] = @field(init_values, f.name);
     }
     return result;
@@ -341,7 +341,7 @@ pub fn BoundedEnumMultiset(comptime E: type, comptime CountSize: type) type {
             var self = initWithCount(0);
             inline for (@typeInfo(E).Enum.fields) |field| {
                 const c = @field(init_counts, field.name);
-                const key = @intToEnum(E, field.value);
+                const key = @enumFromInt(E, field.value);
                 self.counts.set(key, c);
             }
             return self;
@@ -412,7 +412,7 @@ pub fn BoundedEnumMultiset(comptime E: type, comptime CountSize: type) type {
         /// asserts operation will not overflow any key.
         pub fn addSetAssertSafe(self: *Self, other: Self) void {
             inline for (@typeInfo(E).Enum.fields) |field| {
-                const key = @intToEnum(E, field.value);
+                const key = @enumFromInt(E, field.value);
                 self.addAssertSafe(key, other.getCount(key));
             }
         }
@@ -420,7 +420,7 @@ pub fn BoundedEnumMultiset(comptime E: type, comptime CountSize: type) type {
         /// Increases the all key counts by given multiset.
         pub fn addSet(self: *Self, other: Self) error{Overflow}!void {
             inline for (@typeInfo(E).Enum.fields) |field| {
-                const key = @intToEnum(E, field.value);
+                const key = @enumFromInt(E, field.value);
                 try self.add(key, other.getCount(key));
             }
         }
@@ -430,7 +430,7 @@ pub fn BoundedEnumMultiset(comptime E: type, comptime CountSize: type) type {
         /// then that key will have a key count of zero.
         pub fn removeSet(self: *Self, other: Self) void {
             inline for (@typeInfo(E).Enum.fields) |field| {
-                const key = @intToEnum(E, field.value);
+                const key = @enumFromInt(E, field.value);
                 self.remove(key, other.getCount(key));
             }
         }
@@ -439,7 +439,7 @@ pub fn BoundedEnumMultiset(comptime E: type, comptime CountSize: type) type {
         /// given multiset.
         pub fn eql(self: Self, other: Self) bool {
             inline for (@typeInfo(E).Enum.fields) |field| {
-                const key = @intToEnum(E, field.value);
+                const key = @enumFromInt(E, field.value);
                 if (self.getCount(key) != other.getCount(key)) {
                     return false;
                 }
@@ -451,7 +451,7 @@ pub fn BoundedEnumMultiset(comptime E: type, comptime CountSize: type) type {
         /// equal to the given multiset.
         pub fn subsetOf(self: Self, other: Self) bool {
             inline for (@typeInfo(E).Enum.fields) |field| {
-                const key = @intToEnum(E, field.value);
+                const key = @enumFromInt(E, field.value);
                 if (self.getCount(key) > other.getCount(key)) {
                     return false;
                 }
@@ -463,7 +463,7 @@ pub fn BoundedEnumMultiset(comptime E: type, comptime CountSize: type) type {
         /// equal to the given multiset.
         pub fn supersetOf(self: Self, other: Self) bool {
             inline for (@typeInfo(E).Enum.fields) |field| {
-                const key = @intToEnum(E, field.value);
+                const key = @enumFromInt(E, field.value);
                 if (self.getCount(key) < other.getCount(key)) {
                     return false;
                 }
@@ -1323,14 +1323,14 @@ pub fn EnumIndexer(comptime E: type) type {
             pub const Key = E;
             pub const count = fields_len;
             pub fn indexOf(e: E) usize {
-                return @intCast(usize, @enumToInt(e) - min);
+                return @intCast(usize, @intFromEnum(e) - min);
             }
             pub fn keyForIndex(i: usize) E {
                 // TODO fix addition semantics.  This calculation
                 // gives up some safety to avoid artificially limiting
                 // the range of signed enum values to max_isize.
                 const enum_value = if (min < 0) @bitCast(isize, i) +% min else i + min;
-                return @intToEnum(E, @intCast(std.meta.Tag(E), enum_value));
+                return @enumFromInt(E, @intCast(std.meta.Tag(E), enum_value));
             }
         };
     }
lib/std/fmt.zig
@@ -409,15 +409,15 @@ pub fn formatAddress(value: anytype, options: FormatOptions, writer: anytype) @T
         .Pointer => |info| {
             try writer.writeAll(@typeName(info.child) ++ "@");
             if (info.size == .Slice)
-                try formatInt(@ptrToInt(value.ptr), 16, .lower, FormatOptions{}, writer)
+                try formatInt(@intFromPtr(value.ptr), 16, .lower, FormatOptions{}, writer)
             else
-                try formatInt(@ptrToInt(value), 16, .lower, FormatOptions{}, writer);
+                try formatInt(@intFromPtr(value), 16, .lower, FormatOptions{}, writer);
             return;
         },
         .Optional => |info| {
             if (@typeInfo(info.child) == .Pointer) {
                 try writer.writeAll(@typeName(info.child) ++ "@");
-                try formatInt(@ptrToInt(value), 16, .lower, FormatOptions{}, writer);
+                try formatInt(@intFromPtr(value), 16, .lower, FormatOptions{}, writer);
                 return;
             }
         },
@@ -531,7 +531,7 @@ pub fn formatType(
             // Use @tagName only if value is one of known fields
             @setEvalBranchQuota(3 * enumInfo.fields.len);
             inline for (enumInfo.fields) |enumField| {
-                if (@enumToInt(value) == enumField.value) {
+                if (@intFromEnum(value) == enumField.value) {
                     try writer.writeAll(".");
                     try writer.writeAll(@tagName(value));
                     return;
@@ -539,7 +539,7 @@ pub fn formatType(
             }
 
             try writer.writeAll("(");
-            try formatType(@enumToInt(value), actual_fmt, options, writer, max_depth);
+            try formatType(@intFromEnum(value), actual_fmt, options, writer, max_depth);
             try writer.writeAll(")");
         },
         .Union => |info| {
@@ -559,7 +559,7 @@ pub fn formatType(
                 }
                 try writer.writeAll(" }");
             } else {
-                try format(writer, "@{x}", .{@ptrToInt(&value)});
+                try format(writer, "@{x}", .{@intFromPtr(&value)});
             }
         },
         .Struct => |info| {
@@ -624,7 +624,7 @@ pub fn formatType(
                 .Enum, .Union, .Struct => {
                     return formatType(value.*, actual_fmt, options, writer, max_depth);
                 },
-                else => return format(writer, "{s}@{x}", .{ @typeName(ptr_info.child), @ptrToInt(value) }),
+                else => return format(writer, "{s}@{x}", .{ @typeName(ptr_info.child), @intFromPtr(value) }),
             },
             .Many, .C => {
                 if (actual_fmt.len == 0)
@@ -1213,7 +1213,7 @@ pub fn formatFloatHexadecimal(
                 extra_bits -= 1;
             }
             // Round to nearest, tie to even.
-            mantissa |= @boolToInt(mantissa & 0b100 != 0);
+            mantissa |= @intFromBool(mantissa & 0b100 != 0);
             mantissa += 1;
             // Drop the excess bits.
             mantissa >>= 2;
@@ -2099,7 +2099,7 @@ test "optional" {
         try expectFmt("optional: null\n", "optional: {?}\n", .{value});
     }
     {
-        const value = @intToPtr(?*i32, 0xf000d000);
+        const value = @ptrFromInt(?*i32, 0xf000d000);
         try expectFmt("optional: *i32@f000d000\n", "optional: {*}\n", .{value});
     }
 }
@@ -2204,7 +2204,7 @@ test "array" {
 
         var buf: [100]u8 = undefined;
         try expectFmt(
-            try bufPrint(buf[0..], "array: [3]u8@{x}\n", .{@ptrToInt(&value)}),
+            try bufPrint(buf[0..], "array: [3]u8@{x}\n", .{@intFromPtr(&value)}),
             "array: {*}\n",
             .{&value},
         );
@@ -2218,7 +2218,7 @@ test "slice" {
     }
     {
         var runtime_zero: usize = 0;
-        const value = @intToPtr([*]align(1) const []const u8, 0xdeadbeef)[runtime_zero..runtime_zero];
+        const value = @ptrFromInt([*]align(1) const []const u8, 0xdeadbeef)[runtime_zero..runtime_zero];
         try expectFmt("slice: []const u8@deadbeef\n", "slice: {*}\n", .{value});
     }
     {
@@ -2248,17 +2248,17 @@ test "escape non-printable" {
 
 test "pointer" {
     {
-        const value = @intToPtr(*align(1) i32, 0xdeadbeef);
+        const value = @ptrFromInt(*align(1) i32, 0xdeadbeef);
         try expectFmt("pointer: i32@deadbeef\n", "pointer: {}\n", .{value});
         try expectFmt("pointer: i32@deadbeef\n", "pointer: {*}\n", .{value});
     }
     const FnPtr = *align(1) const fn () void;
     {
-        const value = @intToPtr(FnPtr, 0xdeadbeef);
+        const value = @ptrFromInt(FnPtr, 0xdeadbeef);
         try expectFmt("pointer: fn() void@deadbeef\n", "pointer: {}\n", .{value});
     }
     {
-        const value = @intToPtr(FnPtr, 0xdeadbeef);
+        const value = @ptrFromInt(FnPtr, 0xdeadbeef);
         try expectFmt("pointer: fn() void@deadbeef\n", "pointer: {}\n", .{value});
     }
 }
@@ -2360,11 +2360,11 @@ test "non-exhaustive enum" {
     };
     try expectFmt("enum: fmt.test.non-exhaustive enum.Enum.One\n", "enum: {}\n", .{Enum.One});
     try expectFmt("enum: fmt.test.non-exhaustive enum.Enum.Two\n", "enum: {}\n", .{Enum.Two});
-    try expectFmt("enum: fmt.test.non-exhaustive enum.Enum(4660)\n", "enum: {}\n", .{@intToEnum(Enum, 0x1234)});
+    try expectFmt("enum: fmt.test.non-exhaustive enum.Enum(4660)\n", "enum: {}\n", .{@enumFromInt(Enum, 0x1234)});
     try expectFmt("enum: fmt.test.non-exhaustive enum.Enum.One\n", "enum: {x}\n", .{Enum.One});
     try expectFmt("enum: fmt.test.non-exhaustive enum.Enum.Two\n", "enum: {x}\n", .{Enum.Two});
     try expectFmt("enum: fmt.test.non-exhaustive enum.Enum.Two\n", "enum: {X}\n", .{Enum.Two});
-    try expectFmt("enum: fmt.test.non-exhaustive enum.Enum(1234)\n", "enum: {x}\n", .{@intToEnum(Enum, 0x1234)});
+    try expectFmt("enum: fmt.test.non-exhaustive enum.Enum(1234)\n", "enum: {x}\n", .{@enumFromInt(Enum, 0x1234)});
 }
 
 test "float.scientific" {
lib/std/fs.zig
@@ -1268,8 +1268,8 @@ pub const Dir = struct {
             &range_off,
             &range_len,
             null,
-            @boolToInt(flags.lock_nonblocking),
-            @boolToInt(exclusive),
+            @intFromBool(flags.lock_nonblocking),
+            @intFromBool(exclusive),
         );
         return file;
     }
@@ -1429,8 +1429,8 @@ pub const Dir = struct {
             &range_off,
             &range_len,
             null,
-            @boolToInt(flags.lock_nonblocking),
-            @boolToInt(exclusive),
+            @intFromBool(flags.lock_nonblocking),
+            @intFromBool(exclusive),
         );
         return file;
     }
lib/std/hash_map.zig
@@ -1442,7 +1442,7 @@ pub fn HashMapUnmanaged(
             // map, which is assumed to exist as keyPtr must be valid.  This
             // item must be at index 0.
             const idx = if (@sizeOf(K) > 0)
-                (@ptrToInt(keyPtr) - @ptrToInt(self.keys())) / @sizeOf(K)
+                (@intFromPtr(keyPtr) - @intFromPtr(self.keys())) / @sizeOf(K)
             else
                 0;
 
@@ -1554,19 +1554,19 @@ pub fn HashMapUnmanaged(
             const total_size = std.mem.alignForward(usize, vals_end, max_align);
 
             const slice = try allocator.alignedAlloc(u8, max_align, total_size);
-            const ptr = @ptrToInt(slice.ptr);
+            const ptr = @intFromPtr(slice.ptr);
 
             const metadata = ptr + @sizeOf(Header);
 
-            const hdr = @intToPtr(*Header, ptr);
+            const hdr = @ptrFromInt(*Header, ptr);
             if (@sizeOf([*]V) != 0) {
-                hdr.values = @intToPtr([*]V, ptr + vals_start);
+                hdr.values = @ptrFromInt([*]V, ptr + vals_start);
             }
             if (@sizeOf([*]K) != 0) {
-                hdr.keys = @intToPtr([*]K, ptr + keys_start);
+                hdr.keys = @ptrFromInt([*]K, ptr + keys_start);
             }
             hdr.capacity = new_capacity;
-            self.metadata = @intToPtr([*]Metadata, metadata);
+            self.metadata = @ptrFromInt([*]Metadata, metadata);
         }
 
         fn deallocate(self: *Self, allocator: Allocator) void {
@@ -1589,7 +1589,7 @@ pub fn HashMapUnmanaged(
 
             const total_size = std.mem.alignForward(usize, vals_end, max_align);
 
-            const slice = @intToPtr([*]align(max_align) u8, @ptrToInt(self.header()))[0..total_size];
+            const slice = @ptrFromInt([*]align(max_align) u8, @intFromPtr(self.header()))[0..total_size];
             allocator.free(slice);
 
             self.metadata = null;
lib/std/heap.zig
@@ -61,7 +61,7 @@ const CAllocator = struct {
     pub const supports_posix_memalign = @hasDecl(c, "posix_memalign");
 
     fn getHeader(ptr: [*]u8) *[*]u8 {
-        return @intToPtr(*[*]u8, @ptrToInt(ptr) - @sizeOf(usize));
+        return @ptrFromInt(*[*]u8, @intFromPtr(ptr) - @sizeOf(usize));
     }
 
     fn alignedAlloc(len: usize, log2_align: u8) ?[*]u8 {
@@ -82,7 +82,7 @@ const CAllocator = struct {
         // alignment padding and store the original malloc()'ed pointer before
         // the aligned address.
         var unaligned_ptr = @ptrCast([*]u8, c.malloc(len + alignment - 1 + @sizeOf(usize)) orelse return null);
-        const unaligned_addr = @ptrToInt(unaligned_ptr);
+        const unaligned_addr = @intFromPtr(unaligned_ptr);
         const aligned_addr = mem.alignForward(usize, unaligned_addr + @sizeOf(usize), alignment);
         var aligned_ptr = unaligned_ptr + (aligned_addr - unaligned_addr);
         getHeader(aligned_ptr).* = unaligned_ptr;
@@ -105,7 +105,7 @@ const CAllocator = struct {
         }
 
         const unaligned_ptr = getHeader(ptr).*;
-        const delta = @ptrToInt(ptr) - @ptrToInt(unaligned_ptr);
+        const delta = @intFromPtr(ptr) - @intFromPtr(unaligned_ptr);
         return CAllocator.malloc_size(unaligned_ptr) - delta;
     }
 
@@ -283,7 +283,7 @@ pub const HeapAllocator = switch (builtin.os.tag) {
         }
 
         fn getRecordPtr(buf: []u8) *align(1) usize {
-            return @intToPtr(*align(1) usize, @ptrToInt(buf.ptr) + buf.len);
+            return @ptrFromInt(*align(1) usize, @intFromPtr(buf.ptr) + buf.len);
         }
 
         fn alloc(
@@ -306,9 +306,9 @@ pub const HeapAllocator = switch (builtin.os.tag) {
                 break :blk other_hh.?; // can't be null because of the cmpxchg
             };
             const ptr = os.windows.kernel32.HeapAlloc(heap_handle, 0, amt) orelse return null;
-            const root_addr = @ptrToInt(ptr);
+            const root_addr = @intFromPtr(ptr);
             const aligned_addr = mem.alignForward(usize, root_addr, ptr_align);
-            const buf = @intToPtr([*]u8, aligned_addr)[0..n];
+            const buf = @ptrFromInt([*]u8, aligned_addr)[0..n];
             getRecordPtr(buf).* = root_addr;
             return buf.ptr;
         }
@@ -325,15 +325,15 @@ pub const HeapAllocator = switch (builtin.os.tag) {
             const self = @ptrCast(*HeapAllocator, @alignCast(@alignOf(HeapAllocator), ctx));
 
             const root_addr = getRecordPtr(buf).*;
-            const align_offset = @ptrToInt(buf.ptr) - root_addr;
+            const align_offset = @intFromPtr(buf.ptr) - root_addr;
             const amt = align_offset + new_size + @sizeOf(usize);
             const new_ptr = os.windows.kernel32.HeapReAlloc(
                 self.heap_handle.?,
                 os.windows.HEAP_REALLOC_IN_PLACE_ONLY,
-                @intToPtr(*anyopaque, root_addr),
+                @ptrFromInt(*anyopaque, root_addr),
                 amt,
             ) orelse return false;
-            assert(new_ptr == @intToPtr(*anyopaque, root_addr));
+            assert(new_ptr == @ptrFromInt(*anyopaque, root_addr));
             getRecordPtr(buf.ptr[0..new_size]).* = root_addr;
             return true;
         }
@@ -347,20 +347,20 @@ pub const HeapAllocator = switch (builtin.os.tag) {
             _ = log2_buf_align;
             _ = return_address;
             const self = @ptrCast(*HeapAllocator, @alignCast(@alignOf(HeapAllocator), ctx));
-            os.windows.HeapFree(self.heap_handle.?, 0, @intToPtr(*anyopaque, getRecordPtr(buf).*));
+            os.windows.HeapFree(self.heap_handle.?, 0, @ptrFromInt(*anyopaque, getRecordPtr(buf).*));
         }
     },
     else => @compileError("Unsupported OS"),
 };
 
 fn sliceContainsPtr(container: []u8, ptr: [*]u8) bool {
-    return @ptrToInt(ptr) >= @ptrToInt(container.ptr) and
-        @ptrToInt(ptr) < (@ptrToInt(container.ptr) + container.len);
+    return @intFromPtr(ptr) >= @intFromPtr(container.ptr) and
+        @intFromPtr(ptr) < (@intFromPtr(container.ptr) + container.len);
 }
 
 fn sliceContainsSlice(container: []u8, slice: []u8) bool {
-    return @ptrToInt(slice.ptr) >= @ptrToInt(container.ptr) and
-        (@ptrToInt(slice.ptr) + slice.len) <= (@ptrToInt(container.ptr) + container.len);
+    return @intFromPtr(slice.ptr) >= @intFromPtr(container.ptr) and
+        (@intFromPtr(slice.ptr) + slice.len) <= (@intFromPtr(container.ptr) + container.len);
 }
 
 pub const FixedBufferAllocator = struct {
@@ -804,21 +804,21 @@ pub fn testAllocatorLargeAlignment(base_allocator: mem.Allocator) !void {
     align_mask = @shlWithOverflow(~@as(usize, 0), @as(Allocator.Log2Align, @ctz(large_align)))[0];
 
     var slice = try allocator.alignedAlloc(u8, large_align, 500);
-    try testing.expect(@ptrToInt(slice.ptr) & align_mask == @ptrToInt(slice.ptr));
+    try testing.expect(@intFromPtr(slice.ptr) & align_mask == @intFromPtr(slice.ptr));
 
     if (allocator.resize(slice, 100)) {
         slice = slice[0..100];
     }
 
     slice = try allocator.realloc(slice, 5000);
-    try testing.expect(@ptrToInt(slice.ptr) & align_mask == @ptrToInt(slice.ptr));
+    try testing.expect(@intFromPtr(slice.ptr) & align_mask == @intFromPtr(slice.ptr));
 
     if (allocator.resize(slice, 10)) {
         slice = slice[0..10];
     }
 
     slice = try allocator.realloc(slice, 20000);
-    try testing.expect(@ptrToInt(slice.ptr) & align_mask == @ptrToInt(slice.ptr));
+    try testing.expect(@intFromPtr(slice.ptr) & align_mask == @intFromPtr(slice.ptr));
 
     allocator.free(slice);
 }
@@ -840,7 +840,7 @@ pub fn testAllocatorAlignedShrink(base_allocator: mem.Allocator) !void {
     // which is 16 pages, hence the 32. This test may require to increase
     // the size of the allocations feeding the `allocator` parameter if they
     // fail, because of this high over-alignment we want to have.
-    while (@ptrToInt(slice.ptr) == mem.alignForward(usize, @ptrToInt(slice.ptr), mem.page_size * 32)) {
+    while (@intFromPtr(slice.ptr) == mem.alignForward(usize, @intFromPtr(slice.ptr), mem.page_size * 32)) {
         try stuff_to_free.append(slice);
         slice = try allocator.alignedAlloc(u8, 16, alloc_size);
     }
lib/std/http.zig
@@ -232,7 +232,7 @@ pub const Status = enum(u10) {
     };
 
     pub fn class(self: Status) Class {
-        return switch (@enumToInt(self)) {
+        return switch (@intFromEnum(self)) {
             100...199 => .informational,
             200...299 => .success,
             300...399 => .redirect,
lib/std/io.zig
@@ -257,7 +257,7 @@ pub fn Poller(comptime StreamEnum: type) type {
         }
 
         pub inline fn fifo(self: *Self, comptime which: StreamEnum) *PollFifo {
-            return &self.fifos[@enumToInt(which)];
+            return &self.fifos[@intFromEnum(which)];
         }
 
         fn pollWindows(self: *Self) !bool {
@@ -275,7 +275,7 @@ pub fn Poller(comptime StreamEnum: type) type {
                     )) {
                         .pending => {
                             self.windows.active.handles_buf[self.windows.active.count] = handle;
-                            self.windows.active.stream_map[self.windows.active.count] = @intToEnum(StreamEnum, i);
+                            self.windows.active.stream_map[self.windows.active.count] = @enumFromInt(StreamEnum, i);
                             self.windows.active.count += 1;
                         },
                         .closed => {}, // don't add to the wait_objects list
@@ -302,7 +302,7 @@ pub fn Poller(comptime StreamEnum: type) type {
                 const active_idx = status - os.windows.WAIT_OBJECT_0;
 
                 const handle = self.windows.active.handles_buf[active_idx];
-                const stream_idx = @enumToInt(self.windows.active.stream_map[active_idx]);
+                const stream_idx = @intFromEnum(self.windows.active.stream_map[active_idx]);
                 var read_bytes: u32 = undefined;
                 if (0 == os.windows.kernel32.GetOverlappedResult(
                     handle,
lib/std/leb128.zig
@@ -318,7 +318,7 @@ fn test_write_leb128(value: anytype) !void {
         if (@typeInfo(T).Int.bits <= 7) break :bn @as(u16, 1);
 
         const unused_bits = if (value < 0) @clz(~value) else @clz(value);
-        const used_bits: u16 = (@typeInfo(T).Int.bits - unused_bits) + @boolToInt(t_signed);
+        const used_bits: u16 = (@typeInfo(T).Int.bits - unused_bits) + @intFromBool(t_signed);
         if (used_bits <= 7) break :bn @as(u16, 1);
         break :bn ((used_bits + 6) / 7);
     };
lib/std/log.zig
@@ -36,7 +36,7 @@
 //!     // .my_project, .nice_library and the default
 //!     const scope_prefix = "(" ++ switch (scope) {
 //!         .my_project, .nice_library, std.log.default_log_scope => @tagName(scope),
-//!         else => if (@enumToInt(level) <= @enumToInt(std.log.Level.err))
+//!         else => if (@intFromEnum(level) <= @intFromEnum(std.log.Level.err))
 //!             @tagName(scope)
 //!         else
 //!             return,
@@ -128,9 +128,9 @@ fn log(
 /// Determine if a specific log message level and scope combination are enabled for logging.
 pub fn logEnabled(comptime message_level: Level, comptime scope: @Type(.EnumLiteral)) bool {
     inline for (scope_levels) |scope_level| {
-        if (scope_level.scope == scope) return @enumToInt(message_level) <= @enumToInt(scope_level.level);
+        if (scope_level.scope == scope) return @intFromEnum(message_level) <= @intFromEnum(scope_level.level);
     }
-    return @enumToInt(message_level) <= @enumToInt(level);
+    return @intFromEnum(message_level) <= @intFromEnum(level);
 }
 
 /// Determine if a specific log message level using the default log scope is enabled for logging.
lib/std/math.zig
@@ -1104,7 +1104,7 @@ pub const AlignCastError = error{UnalignedMemory};
 
 /// Align cast a pointer but return an error if it's the wrong alignment
 pub fn alignCast(comptime alignment: u29, ptr: anytype) AlignCastError!@TypeOf(@alignCast(alignment, ptr)) {
-    const addr = @ptrToInt(ptr);
+    const addr = @intFromPtr(ptr);
     if (addr % alignment != 0) {
         return error.UnalignedMemory;
     }
@@ -1311,7 +1311,7 @@ pub fn lossyCast(comptime T: type, value: anytype) T {
     switch (@typeInfo(T)) {
         .Float => {
             switch (@typeInfo(@TypeOf(value))) {
-                .Int => return @intToFloat(T, value),
+                .Int => return @floatFromInt(T, value),
                 .Float => return @floatCast(T, value),
                 .ComptimeInt => return @as(T, value),
                 .ComptimeFloat => return @as(T, value),
@@ -1335,7 +1335,7 @@ pub fn lossyCast(comptime T: type, value: anytype) T {
                     } else if (value <= minInt(T)) {
                         return @as(T, minInt(T));
                     } else {
-                        return @floatToInt(T, value);
+                        return @intFromFloat(T, value);
                     }
                 },
                 else => @compileError("bad type"),
@@ -1401,7 +1401,7 @@ pub fn maxInt(comptime T: type) comptime_int {
     const info = @typeInfo(T);
     const bit_count = info.Int.bits;
     if (bit_count == 0) return 0;
-    return (1 << (bit_count - @boolToInt(info.Int.signedness == .signed))) - 1;
+    return (1 << (bit_count - @intFromBool(info.Int.signedness == .signed))) - 1;
 }
 
 /// Returns the minimum value of integer type T.
@@ -1624,7 +1624,7 @@ test "order.compare" {
 
 test "compare.reverse" {
     inline for (@typeInfo(CompareOperator).Enum.fields) |op_field| {
-        const op = @intToEnum(CompareOperator, op_field.value);
+        const op = @enumFromInt(CompareOperator, op_field.value);
         try testing.expect(compare(2, op, 3) == compare(3, op.reverse(), 2));
         try testing.expect(compare(3, op, 3) == compare(3, op.reverse(), 3));
         try testing.expect(compare(4, op, 3) == compare(3, op.reverse(), 4));
@@ -1643,13 +1643,13 @@ pub inline fn boolMask(comptime MaskInt: type, value: bool) MaskInt {
 
     // The u1 and i1 cases tend to overflow,
     // so we special case them here.
-    if (MaskInt == u1) return @boolToInt(value);
+    if (MaskInt == u1) return @intFromBool(value);
     if (MaskInt == i1) {
         // The @as here is a workaround for #7950
-        return @bitCast(i1, @as(u1, @boolToInt(value)));
+        return @bitCast(i1, @as(u1, @intFromBool(value)));
     }
 
-    return -%@intCast(MaskInt, @boolToInt(value));
+    return -%@intCast(MaskInt, @intFromBool(value));
 }
 
 test "boolMask" {
@@ -1708,8 +1708,8 @@ pub fn break_f80(x: f80) F80 {
 pub inline fn sign(i: anytype) @TypeOf(i) {
     const T = @TypeOf(i);
     return switch (@typeInfo(T)) {
-        .Int, .ComptimeInt => @as(T, @boolToInt(i > 0)) - @as(T, @boolToInt(i < 0)),
-        .Float, .ComptimeFloat => @intToFloat(T, @boolToInt(i > 0)) - @intToFloat(T, @boolToInt(i < 0)),
+        .Int, .ComptimeInt => @as(T, @intFromBool(i > 0)) - @as(T, @intFromBool(i < 0)),
+        .Float, .ComptimeFloat => @floatFromInt(T, @intFromBool(i > 0)) - @floatFromInt(T, @intFromBool(i < 0)),
         .Vector => |vinfo| blk: {
             switch (@typeInfo(vinfo.child)) {
                 .Int, .Float => {
lib/std/mem.zig
@@ -73,7 +73,7 @@ pub fn ValidationAllocator(comptime T: type) type {
             const underlying = self.getUnderlyingAllocatorPtr();
             const result = underlying.rawAlloc(n, log2_ptr_align, ret_addr) orelse
                 return null;
-            assert(mem.isAlignedLog2(@ptrToInt(result), log2_ptr_align));
+            assert(mem.isAlignedLog2(@intFromPtr(result), log2_ptr_align));
             return result;
         }
 
@@ -185,7 +185,7 @@ test "Allocator.resize" {
         var values = try testing.allocator.alloc(T, 100);
         defer testing.allocator.free(values);
 
-        for (values, 0..) |*v, i| v.* = @intToFloat(T, i);
+        for (values, 0..) |*v, i| v.* = @floatFromInt(T, i);
         if (!testing.allocator.resize(values, values.len + 10)) return error.OutOfMemory;
         values = values.ptr[0 .. values.len + 10];
         try testing.expect(values.len == 110);
@@ -233,7 +233,7 @@ pub fn zeroes(comptime T: type) T {
             return @as(T, 0);
         },
         .Enum, .EnumLiteral => {
-            return @intToEnum(T, 0);
+            return @enumFromInt(T, 0);
         },
         .Void => {
             return {};
@@ -1374,7 +1374,7 @@ pub fn readVarPackedInt(
         const value = if (read_size == 1) b: {
             break :b @truncate(uN, read_bytes[0] >> bit_shift);
         } else b: {
-            const i: u1 = @boolToInt(endian == .Big);
+            const i: u1 = @intFromBool(endian == .Big);
             const head = @truncate(uN, read_bytes[i] >> bit_shift);
             const tail_shift = @intCast(Log2N, @as(u4, 8) - bit_shift);
             const tail = @truncate(uN, read_bytes[1 - i]);
@@ -3778,7 +3778,7 @@ pub fn alignPointerOffset(ptr: anytype, align_to: usize) ?usize {
         return 0;
 
     // Calculate the aligned base address with an eye out for overflow.
-    const addr = @ptrToInt(ptr);
+    const addr = @intFromPtr(ptr);
     var ov = @addWithOverflow(addr, align_to - 1);
     if (ov[1] != 0) return null;
     ov[0] &= ~@as(usize, align_to - 1);
@@ -3800,16 +3800,16 @@ pub fn alignPointerOffset(ptr: anytype, align_to: usize) ?usize {
 pub fn alignPointer(ptr: anytype, align_to: usize) ?@TypeOf(ptr) {
     const adjust_off = alignPointerOffset(ptr, align_to) orelse return null;
     const T = @TypeOf(ptr);
-    // Avoid the use of intToPtr to avoid losing the pointer provenance info.
+    // Avoid the use of ptrFromInt to avoid losing the pointer provenance info.
     return @alignCast(@typeInfo(T).Pointer.alignment, ptr + adjust_off);
 }
 
 test "alignPointer" {
     const S = struct {
         fn checkAlign(comptime T: type, base: usize, align_to: usize, expected: usize) !void {
-            var ptr = @intToPtr(T, base);
+            var ptr = @ptrFromInt(T, base);
             var aligned = alignPointer(ptr, align_to);
-            try testing.expectEqual(expected, @ptrToInt(aligned));
+            try testing.expectEqual(expected, @intFromPtr(aligned));
         }
     };
 
@@ -4236,8 +4236,8 @@ pub fn doNotOptimizeAway(val: anytype) void {
     const t = @typeInfo(@TypeOf(val));
     switch (t) {
         .Void, .Null, .ComptimeInt, .ComptimeFloat => return,
-        .Enum => doNotOptimizeAway(@enumToInt(val)),
-        .Bool => doNotOptimizeAway(@boolToInt(val)),
+        .Enum => doNotOptimizeAway(@intFromEnum(val)),
+        .Bool => doNotOptimizeAway(@intFromBool(val)),
         .Int => {
             const bits = t.Int.bits;
             if (bits <= max_gp_register_bits and builtin.zig_backend != .stage2_c) {
@@ -4425,7 +4425,7 @@ fn AlignedSlice(comptime AttributeSource: type, comptime new_alignment: usize) t
 /// Returns the largest slice in the given bytes that conforms to the new alignment,
 /// or `null` if the given bytes contain no conforming address.
 pub fn alignInBytes(bytes: []u8, comptime new_alignment: usize) ?[]align(new_alignment) u8 {
-    const begin_address = @ptrToInt(bytes.ptr);
+    const begin_address = @intFromPtr(bytes.ptr);
     const end_address = begin_address + bytes.len;
 
     const begin_address_aligned = mem.alignForward(usize, begin_address, new_alignment);
lib/std/meta.zig
@@ -453,7 +453,7 @@ pub fn fieldInfo(comptime T: type, comptime field: FieldEnum(T)) switch (@typeIn
     .Enum => Type.EnumField,
     else => @compileError("Expected struct, union, error set or enum type, found '" ++ @typeName(T) ++ "'"),
 } {
-    return fields(T)[@enumToInt(field)];
+    return fields(T)[@intFromEnum(field)];
 }
 
 test "std.meta.fieldInfo" {
@@ -591,7 +591,7 @@ pub fn FieldEnum(comptime T: type) type {
     if (@typeInfo(T) == .Union) {
         if (@typeInfo(T).Union.tag_type) |tag_type| {
             for (std.enums.values(tag_type), 0..) |v, i| {
-                if (@enumToInt(v) != i) break; // enum values not consecutive
+                if (@intFromEnum(v) != i) break; // enum values not consecutive
                 if (!std.mem.eql(u8, @tagName(v), field_infos[i].name)) break; // fields out of order
             } else {
                 return tag_type;
@@ -929,8 +929,8 @@ test "intToEnum with error return" {
     try testing.expect(intToEnum(E1, zero) catch unreachable == E1.A);
     try testing.expect(intToEnum(E2, one) catch unreachable == E2.B);
     try testing.expect(intToEnum(E3, zero) catch unreachable == E3.A);
-    try testing.expect(intToEnum(E3, 127) catch unreachable == @intToEnum(E3, 127));
-    try testing.expect(intToEnum(E3, -128) catch unreachable == @intToEnum(E3, -128));
+    try testing.expect(intToEnum(E3, 127) catch unreachable == @enumFromInt(E3, 127));
+    try testing.expect(intToEnum(E3, -128) catch unreachable == @enumFromInt(E3, -128));
     try testing.expectError(error.InvalidEnumTag, intToEnum(E1, one));
     try testing.expectError(error.InvalidEnumTag, intToEnum(E3, 128));
     try testing.expectError(error.InvalidEnumTag, intToEnum(E3, -129));
@@ -943,14 +943,14 @@ pub fn intToEnum(comptime EnumTag: type, tag_int: anytype) IntToEnumError!EnumTa
 
     if (!enum_info.is_exhaustive) {
         if (std.math.cast(enum_info.tag_type, tag_int)) |tag| {
-            return @intToEnum(EnumTag, tag);
+            return @enumFromInt(EnumTag, tag);
         }
         return error.InvalidEnumTag;
     }
 
     inline for (enum_info.fields) |f| {
         const this_tag_value = @field(EnumTag, f.name);
-        if (tag_int == @enumToInt(this_tag_value)) {
+        if (tag_int == @intFromEnum(this_tag_value)) {
             return this_tag_value;
         }
     }
lib/std/multi_array_list.zig
@@ -64,7 +64,7 @@ pub fn MultiArrayList(comptime T: type) type {
         /// and then get the field arrays from the slice.
         pub const Slice = struct {
             /// This array is indexed by the field index which can be obtained
-            /// by using @enumToInt() on the Field enum
+            /// by using @intFromEnum() on the Field enum
             ptrs: [fields.len][*]u8,
             len: usize,
             capacity: usize,
@@ -74,7 +74,7 @@ pub fn MultiArrayList(comptime T: type) type {
                 if (self.capacity == 0) {
                     return &[_]F{};
                 }
-                const byte_ptr = self.ptrs[@enumToInt(field)];
+                const byte_ptr = self.ptrs[@intFromEnum(field)];
                 const casted_ptr: [*]F = if (@sizeOf(F) == 0)
                     undefined
                 else
@@ -89,14 +89,14 @@ pub fn MultiArrayList(comptime T: type) type {
                     else => unreachable,
                 };
                 inline for (fields, 0..) |field_info, i| {
-                    self.items(@intToEnum(Field, i))[index] = @field(e, field_info.name);
+                    self.items(@enumFromInt(Field, i))[index] = @field(e, field_info.name);
                 }
             }
 
             pub fn get(self: Slice, index: usize) T {
                 var result: Elem = undefined;
                 inline for (fields, 0..) |field_info, i| {
-                    @field(result, field_info.name) = self.items(@intToEnum(Field, i))[index];
+                    @field(result, field_info.name) = self.items(@enumFromInt(Field, i))[index];
                 }
                 return switch (@typeInfo(T)) {
                     .Struct => result,
@@ -294,7 +294,7 @@ pub fn MultiArrayList(comptime T: type) type {
             };
             const slices = self.slice();
             inline for (fields, 0..) |field_info, field_index| {
-                const field_slice = slices.items(@intToEnum(Field, field_index));
+                const field_slice = slices.items(@enumFromInt(Field, field_index));
                 var i: usize = self.len - 1;
                 while (i > index) : (i -= 1) {
                     field_slice[i] = field_slice[i - 1];
@@ -309,7 +309,7 @@ pub fn MultiArrayList(comptime T: type) type {
         pub fn swapRemove(self: *Self, index: usize) void {
             const slices = self.slice();
             inline for (fields, 0..) |_, i| {
-                const field_slice = slices.items(@intToEnum(Field, i));
+                const field_slice = slices.items(@enumFromInt(Field, i));
                 field_slice[index] = field_slice[self.len - 1];
                 field_slice[self.len - 1] = undefined;
             }
@@ -321,7 +321,7 @@ pub fn MultiArrayList(comptime T: type) type {
         pub fn orderedRemove(self: *Self, index: usize) void {
             const slices = self.slice();
             inline for (fields, 0..) |_, field_index| {
-                const field_slice = slices.items(@intToEnum(Field, field_index));
+                const field_slice = slices.items(@enumFromInt(Field, field_index));
                 var i = index;
                 while (i < self.len - 1) : (i += 1) {
                     field_slice[i] = field_slice[i + 1];
@@ -358,7 +358,7 @@ pub fn MultiArrayList(comptime T: type) type {
                 const self_slice = self.slice();
                 inline for (fields, 0..) |field_info, i| {
                     if (@sizeOf(field_info.type) != 0) {
-                        const field = @intToEnum(Field, i);
+                        const field = @enumFromInt(Field, i);
                         const dest_slice = self_slice.items(field)[new_len..];
                         // We use memset here for more efficient codegen in safety-checked,
                         // valgrind-enabled builds. Otherwise the valgrind client request
@@ -379,7 +379,7 @@ pub fn MultiArrayList(comptime T: type) type {
             const other_slice = other.slice();
             inline for (fields, 0..) |field_info, i| {
                 if (@sizeOf(field_info.type) != 0) {
-                    const field = @intToEnum(Field, i);
+                    const field = @enumFromInt(Field, i);
                     @memcpy(other_slice.items(field), self_slice.items(field));
                 }
             }
@@ -440,7 +440,7 @@ pub fn MultiArrayList(comptime T: type) type {
             const other_slice = other.slice();
             inline for (fields, 0..) |field_info, i| {
                 if (@sizeOf(field_info.type) != 0) {
-                    const field = @intToEnum(Field, i);
+                    const field = @enumFromInt(Field, i);
                     @memcpy(other_slice.items(field), self_slice.items(field));
                 }
             }
@@ -459,7 +459,7 @@ pub fn MultiArrayList(comptime T: type) type {
             const result_slice = result.slice();
             inline for (fields, 0..) |field_info, i| {
                 if (@sizeOf(field_info.type) != 0) {
-                    const field = @intToEnum(Field, i);
+                    const field = @enumFromInt(Field, i);
                     @memcpy(result_slice.items(field), self_slice.items(field));
                 }
             }
@@ -476,7 +476,7 @@ pub fn MultiArrayList(comptime T: type) type {
                 pub fn swap(sc: @This(), a_index: usize, b_index: usize) void {
                     inline for (fields, 0..) |field_info, i| {
                         if (@sizeOf(field_info.type) != 0) {
-                            const field = @intToEnum(Field, i);
+                            const field = @enumFromInt(Field, i);
                             const ptr = sc.slice.items(field);
                             mem.swap(field_info.type, &ptr[a_index], &ptr[b_index]);
                         }
lib/std/net.zig
@@ -804,8 +804,8 @@ pub fn getAddressList(allocator: mem.Allocator, name: []const u8, port: u16) Get
         var first = true;
         while (true) {
             const rc = ws2_32.getaddrinfo(name_c.ptr, port_c.ptr, &hints, &res);
-            switch (@intToEnum(os.windows.ws2_32.WinsockError, @intCast(u16, rc))) {
-                @intToEnum(os.windows.ws2_32.WinsockError, 0) => break,
+            switch (@enumFromInt(os.windows.ws2_32.WinsockError, @intCast(u16, rc))) {
+                @enumFromInt(os.windows.ws2_32.WinsockError, 0) => break,
                 .WSATRY_AGAIN => return error.TemporaryNameServerFailure,
                 .WSANO_RECOVERY => return error.NameServerFailure,
                 .WSAEAFNOSUPPORT => return error.AddressFamilyNotSupported,
@@ -874,7 +874,7 @@ pub fn getAddressList(allocator: mem.Allocator, name: []const u8, port: u16) Get
         };
         var res: ?*os.addrinfo = null;
         switch (sys.getaddrinfo(name_c.ptr, port_c.ptr, &hints, &res)) {
-            @intToEnum(sys.EAI, 0) => {},
+            @enumFromInt(sys.EAI, 0) => {},
             .ADDRFAMILY => return error.HostLacksNetworkAddresses,
             .AGAIN => return error.TemporaryNameServerFailure,
             .BADFLAGS => unreachable, // Invalid hints
@@ -1688,19 +1688,19 @@ fn dnsParse(
     if (qdcount + ancount > 64) return error.InvalidDnsPacket;
     while (qdcount != 0) {
         qdcount -= 1;
-        while (@ptrToInt(p) - @ptrToInt(r.ptr) < r.len and p[0] -% 1 < 127) p += 1;
-        if (p[0] > 193 or (p[0] == 193 and p[1] > 254) or @ptrToInt(p) > @ptrToInt(r.ptr) + r.len - 6)
+        while (@intFromPtr(p) - @intFromPtr(r.ptr) < r.len and p[0] -% 1 < 127) p += 1;
+        if (p[0] > 193 or (p[0] == 193 and p[1] > 254) or @intFromPtr(p) > @intFromPtr(r.ptr) + r.len - 6)
             return error.InvalidDnsPacket;
-        p += @as(usize, 5) + @boolToInt(p[0] != 0);
+        p += @as(usize, 5) + @intFromBool(p[0] != 0);
     }
     while (ancount != 0) {
         ancount -= 1;
-        while (@ptrToInt(p) - @ptrToInt(r.ptr) < r.len and p[0] -% 1 < 127) p += 1;
-        if (p[0] > 193 or (p[0] == 193 and p[1] > 254) or @ptrToInt(p) > @ptrToInt(r.ptr) + r.len - 6)
+        while (@intFromPtr(p) - @intFromPtr(r.ptr) < r.len and p[0] -% 1 < 127) p += 1;
+        if (p[0] > 193 or (p[0] == 193 and p[1] > 254) or @intFromPtr(p) > @intFromPtr(r.ptr) + r.len - 6)
             return error.InvalidDnsPacket;
-        p += @as(usize, 1) + @boolToInt(p[0] != 0);
+        p += @as(usize, 1) + @intFromBool(p[0] != 0);
         const len = p[8] * @as(usize, 256) + p[9];
-        if (@ptrToInt(p) + len > @ptrToInt(r.ptr) + r.len) return error.InvalidDnsPacket;
+        if (@intFromPtr(p) + len > @intFromPtr(r.ptr) + r.len) return error.InvalidDnsPacket;
         try callback(ctx, p[1], p[10..][0..len], r);
         p += 10 + len;
     }
lib/std/os.zig
@@ -608,7 +608,7 @@ pub fn abort() noreturn {
         sigprocmask(SIG.UNBLOCK, &sigabrtmask, null);
 
         // Beyond this point should be unreachable.
-        @intToPtr(*allowzero volatile u8, 0).* = 0;
+        @ptrFromInt(*allowzero volatile u8, 0).* = 0;
         raise(SIG.KILL) catch {};
         exit(127); // Pid 1 might not be signalled in some containers.
     }
@@ -678,10 +678,10 @@ pub fn exit(status: u8) noreturn {
         // exit() is only available if exitBootServices() has not been called yet.
         // This call to exit should not fail, so we don't care about its return value.
         if (uefi.system_table.boot_services) |bs| {
-            _ = bs.exit(uefi.handle, @intToEnum(uefi.Status, status), 0, null);
+            _ = bs.exit(uefi.handle, @enumFromInt(uefi.Status, status), 0, null);
         }
         // If we can't exit, reboot the system instead.
-        uefi.system_table.runtime_services.resetSystem(uefi.tables.ResetType.ResetCold, @intToEnum(uefi.Status, status), 0, null);
+        uefi.system_table.runtime_services.resetSystem(uefi.tables.ResetType.ResetCold, @enumFromInt(uefi.Status, status), 0, null);
     }
     system.exit(status);
 }
@@ -2045,7 +2045,7 @@ pub fn getcwd(out_buffer: []u8) GetCwdError![]u8 {
 
     const err = if (builtin.link_libc) blk: {
         const c_err = if (std.c.getcwd(out_buffer.ptr, out_buffer.len)) |_| 0 else std.c._errno().*;
-        break :blk @intToEnum(E, c_err);
+        break :blk @enumFromInt(E, c_err);
     } else blk: {
         break :blk errno(system.getcwd(out_buffer.ptr, out_buffer.len));
     };
@@ -3249,7 +3249,7 @@ pub fn isatty(handle: fd_t) bool {
         while (true) {
             var wsz: linux.winsize = undefined;
             const fd = @bitCast(usize, @as(isize, handle));
-            const rc = linux.syscall3(.ioctl, fd, linux.T.IOCGWINSZ, @ptrToInt(&wsz));
+            const rc = linux.syscall3(.ioctl, fd, linux.T.IOCGWINSZ, @intFromPtr(&wsz));
             switch (linux.getErrno(rc)) {
                 .SUCCESS => return true,
                 .INTR => continue,
@@ -4016,7 +4016,7 @@ pub fn getsockoptError(sockfd: fd_t) ConnectError!void {
     const rc = system.getsockopt(sockfd, SOL.SOCKET, SO.ERROR, @ptrCast([*]u8, &err_code), &size);
     assert(size == 4);
     switch (errno(rc)) {
-        .SUCCESS => switch (@intToEnum(E, err_code)) {
+        .SUCCESS => switch (@enumFromInt(E, err_code)) {
             .SUCCESS => return,
             .ACCES => return error.PermissionDenied,
             .PERM => return error.PermissionDenied,
@@ -4425,10 +4425,10 @@ pub fn mmap(
     const rc = mmap_sym(ptr, length, prot, flags, fd, ioffset);
     const err = if (builtin.link_libc) blk: {
         if (rc != std.c.MAP.FAILED) return @ptrCast([*]align(mem.page_size) u8, @alignCast(mem.page_size, rc))[0..length];
-        break :blk @intToEnum(E, system._errno().*);
+        break :blk @enumFromInt(E, system._errno().*);
     } else blk: {
         const err = errno(rc);
-        if (err == .SUCCESS) return @intToPtr([*]align(mem.page_size) u8, rc)[0..length];
+        if (err == .SUCCESS) return @ptrFromInt([*]align(mem.page_size) u8, rc)[0..length];
         break :blk err;
     };
     switch (err) {
@@ -5164,7 +5164,7 @@ pub fn realpathZ(pathname: [*:0]const u8, out_buffer: *[MAX_PATH_BYTES]u8) RealP
 
         return getFdPath(fd, out_buffer);
     }
-    const result_path = std.c.realpath(pathname, out_buffer) orelse switch (@intToEnum(E, std.c._errno().*)) {
+    const result_path = std.c.realpath(pathname, out_buffer) orelse switch (@enumFromInt(E, std.c._errno().*)) {
         .SUCCESS => unreachable,
         .INVAL => unreachable,
         .BADF => unreachable,
@@ -5275,7 +5275,7 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 {
             if (comptime builtin.os.version_range.semver.max.order(.{ .major = 13, .minor = 0, .patch = 0 }) == .gt) {
                 var kfile: system.kinfo_file = undefined;
                 kfile.structsize = system.KINFO_FILE_SIZE;
-                switch (errno(system.fcntl(fd, system.F.KINFO, @ptrToInt(&kfile)))) {
+                switch (errno(system.fcntl(fd, system.F.KINFO, @intFromPtr(&kfile)))) {
                     .SUCCESS => {},
                     .BADF => return error.FileNotFound,
                     else => |err| return unexpectedErrno(err),
@@ -5400,21 +5400,21 @@ pub fn dl_iterate_phdr(
         switch (system.dl_iterate_phdr(struct {
             fn callbackC(info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int {
                 const context_ptr = @ptrCast(*const Context, @alignCast(@alignOf(*const Context), data));
-                callback(info, size, context_ptr.*) catch |err| return @errorToInt(err);
+                callback(info, size, context_ptr.*) catch |err| return @intFromError(err);
                 return 0;
             }
-        }.callbackC, @intToPtr(?*anyopaque, @ptrToInt(&context)))) {
+        }.callbackC, @ptrFromInt(?*anyopaque, @intFromPtr(&context)))) {
             0 => return,
-            else => |err| return @errSetCast(Error, @intToError(@intCast(u16, err))), // TODO don't hardcode u16
+            else => |err| return @errSetCast(Error, @errorFromInt(@intCast(u16, err))), // TODO don't hardcode u16
         }
     }
 
     const elf_base = std.process.getBaseAddress();
-    const ehdr = @intToPtr(*elf.Ehdr, elf_base);
+    const ehdr = @ptrFromInt(*elf.Ehdr, elf_base);
     // Make sure the base address points to an ELF image.
     assert(mem.eql(u8, ehdr.e_ident[0..4], elf.MAGIC));
     const n_phdr = ehdr.e_phnum;
-    const phdrs = (@intToPtr([*]elf.Phdr, elf_base + ehdr.e_phoff))[0..n_phdr];
+    const phdrs = (@ptrFromInt([*]elf.Phdr, elf_base + ehdr.e_phoff))[0..n_phdr];
 
     var it = dl.linkmap_iterator(phdrs) catch unreachable;
 
@@ -5425,7 +5425,7 @@ pub fn dl_iterate_phdr(
         // is non-zero.
         const base_address = for (phdrs) |*phdr| {
             if (phdr.p_type == elf.PT_PHDR) {
-                break @ptrToInt(phdrs.ptr) - phdr.p_vaddr;
+                break @intFromPtr(phdrs.ptr) - phdr.p_vaddr;
                 // We could try computing the difference between _DYNAMIC and
                 // the p_vaddr of the PT_DYNAMIC section, but using the phdr is
                 // good enough (Is it?).
@@ -5448,12 +5448,12 @@ pub fn dl_iterate_phdr(
         var dlpi_phnum: u16 = undefined;
 
         if (entry.l_addr != 0) {
-            const elf_header = @intToPtr(*elf.Ehdr, entry.l_addr);
-            dlpi_phdr = @intToPtr([*]elf.Phdr, entry.l_addr + elf_header.e_phoff);
+            const elf_header = @ptrFromInt(*elf.Ehdr, entry.l_addr);
+            dlpi_phdr = @ptrFromInt([*]elf.Phdr, entry.l_addr + elf_header.e_phoff);
             dlpi_phnum = elf_header.e_phnum;
         } else {
             // This is the running ELF image
-            dlpi_phdr = @intToPtr([*]elf.Phdr, elf_base + ehdr.e_phoff);
+            dlpi_phdr = @ptrFromInt([*]elf.Phdr, elf_base + ehdr.e_phoff);
             dlpi_phnum = ehdr.e_phnum;
         }
 
@@ -5626,7 +5626,7 @@ pub const UnexpectedError = error{
 /// and you get an unexpected error.
 pub fn unexpectedErrno(err: E) UnexpectedError {
     if (unexpected_error_tracing) {
-        std.debug.print("unexpected errno: {d}\n", .{@enumToInt(err)});
+        std.debug.print("unexpected errno: {d}\n", .{@intFromEnum(err)});
         std.debug.dumpCurrentStackTrace(null);
     }
     return error.Unexpected;
@@ -5773,7 +5773,7 @@ pub fn res_mkquery(
     var name = dname;
     if (mem.endsWith(u8, name, ".")) name.len -= 1;
     assert(name.len <= 253);
-    const n = 17 + name.len + @boolToInt(name.len != 0);
+    const n = 17 + name.len + @intFromBool(name.len != 0);
 
     // Construct query template - ID will be filled later
     var q: [280]u8 = undefined;
@@ -6673,7 +6673,7 @@ pub fn dn_expand(
         if ((p[0] & 0xc0) != 0) {
             if (p + 1 == end) return error.InvalidDnsPacket;
             var j = ((p[0] & @as(usize, 0x3f)) << 8) | p[1];
-            if (len == std.math.maxInt(usize)) len = @ptrToInt(p) + 2 - @ptrToInt(comp_dn.ptr);
+            if (len == std.math.maxInt(usize)) len = @intFromPtr(p) + 2 - @intFromPtr(comp_dn.ptr);
             if (j >= msg.len) return error.InvalidDnsPacket;
             p = msg.ptr + j;
         } else if (p[0] != 0) {
@@ -6683,7 +6683,7 @@ pub fn dn_expand(
             }
             var j = p[0];
             p += 1;
-            if (j >= @ptrToInt(end) - @ptrToInt(p) or j >= @ptrToInt(dend) - @ptrToInt(dest)) {
+            if (j >= @intFromPtr(end) - @intFromPtr(p) or j >= @intFromPtr(dend) - @intFromPtr(dest)) {
                 return error.InvalidDnsPacket;
             }
             while (j != 0) {
@@ -6694,7 +6694,7 @@ pub fn dn_expand(
             }
         } else {
             dest[0] = 0;
-            if (len == std.math.maxInt(usize)) len = @ptrToInt(p) + 1 - @ptrToInt(comp_dn.ptr);
+            if (len == std.math.maxInt(usize)) len = @intFromPtr(p) + 1 - @intFromPtr(comp_dn.ptr);
             return len;
         }
     }
@@ -6908,7 +6908,7 @@ pub const IoCtl_SIOCGIFINDEX_Error = error{
 
 pub fn ioctl_SIOCGIFINDEX(fd: fd_t, ifr: *ifreq) IoCtl_SIOCGIFINDEX_Error!void {
     while (true) {
-        switch (errno(system.ioctl(fd, SIOCGIFINDEX, @ptrToInt(ifr)))) {
+        switch (errno(system.ioctl(fd, SIOCGIFINDEX, @intFromPtr(ifr)))) {
             .SUCCESS => return,
             .INVAL => unreachable, // Bad parameters.
             .NOTTY => unreachable,
@@ -7032,7 +7032,7 @@ pub fn prctl(option: PR, args: anytype) PrctlError!u31 {
         inline while (i < args.len) : (i += 1) buf[i] = args[i];
     }
 
-    const rc = system.prctl(@enumToInt(option), buf[0], buf[1], buf[2], buf[3]);
+    const rc = system.prctl(@intFromEnum(option), buf[0], buf[1], buf[2], buf[3]);
     switch (errno(rc)) {
         .SUCCESS => return @intCast(u31, rc),
         .ACCES => return error.AccessDenied,
@@ -7318,7 +7318,7 @@ pub fn ptrace(request: u32, pid: pid_t, addr: usize, signal: usize) PtraceError!
         .macos, .ios, .tvos, .watchos => switch (errno(darwin.ptrace(
             math.cast(i32, request) orelse return error.Overflow,
             pid,
-            @intToPtr(?[*]u8, addr),
+            @ptrFromInt(?[*]u8, addr),
             math.cast(i32, signal) orelse return error.Overflow,
         ))) {
             .SUCCESS => {},
lib/std/pdb.zig
@@ -863,7 +863,7 @@ pub const Pdb = struct {
     }
 
     pub fn getStream(self: *Pdb, stream: StreamType) ?*MsfStream {
-        const id = @enumToInt(stream);
+        const id = @intFromEnum(stream);
         return self.getStreamById(id);
     }
 };
lib/std/process.zig
@@ -514,9 +514,9 @@ pub const ArgIteratorWasi = struct {
     /// Call to free the internal buffer of the iterator.
     pub fn deinit(self: *ArgIteratorWasi) void {
         const last_item = self.args[self.args.len - 1];
-        const last_byte_addr = @ptrToInt(last_item.ptr) + last_item.len + 1; // null terminated
+        const last_byte_addr = @intFromPtr(last_item.ptr) + last_item.len + 1; // null terminated
         const first_item_ptr = self.args[0].ptr;
-        const len = last_byte_addr - @ptrToInt(first_item_ptr);
+        const len = last_byte_addr - @intFromPtr(first_item_ptr);
         self.allocator.free(first_item_ptr[0..len]);
         self.allocator.free(self.args);
     }
@@ -1079,9 +1079,9 @@ pub fn getBaseAddress() usize {
             return phdr - @sizeOf(std.elf.Ehdr);
         },
         .macos, .freebsd, .netbsd => {
-            return @ptrToInt(&std.c._mh_execute_header);
+            return @intFromPtr(&std.c._mh_execute_header);
         },
-        .windows => return @ptrToInt(os.windows.kernel32.GetModuleHandleW(null)),
+        .windows => return @intFromPtr(os.windows.kernel32.GetModuleHandleW(null)),
         else => @compileError("Unsupported OS"),
     }
 }
lib/std/RingBuffer.zig
@@ -102,7 +102,7 @@ pub fn isFull(self: RingBuffer) bool {
 
 /// Returns the length
 pub fn len(self: RingBuffer) usize {
-    const wrap_offset = 2 * self.data.len * @boolToInt(self.write_index < self.read_index);
+    const wrap_offset = 2 * self.data.len * @intFromBool(self.write_index < self.read_index);
     const adjusted_write_index = self.write_index + wrap_offset;
     return adjusted_write_index - self.read_index;
 }
lib/std/simd.zig
@@ -61,7 +61,7 @@ pub fn suggestVectorSize(comptime T: type) ?usize {
 
 test "suggestVectorSizeForCpu works with signed and unsigned values" {
     comptime var cpu = std.Target.Cpu.baseline(std.Target.Cpu.Arch.x86_64);
-    comptime cpu.features.addFeature(@enumToInt(std.Target.x86.Feature.avx512f));
+    comptime cpu.features.addFeature(@intFromEnum(std.Target.x86.Feature.avx512f));
     const signed_integer_size = suggestVectorSizeForCpu(i32, cpu).?;
     const unsigned_integer_size = suggestVectorSizeForCpu(u32, cpu).?;
     try std.testing.expectEqual(@as(usize, 16), unsigned_integer_size);
@@ -94,7 +94,7 @@ pub inline fn iota(comptime T: type, comptime len: usize) @Vector(len, T) {
         for (&out, 0..) |*element, i| {
             element.* = switch (@typeInfo(T)) {
                 .Int => @intCast(T, i),
-                .Float => @intToFloat(T, i),
+                .Float => @floatFromInt(T, i),
                 else => @compileError("Can't use type " ++ @typeName(T) ++ " in iota."),
             };
         }
lib/std/sort.zig
@@ -96,7 +96,7 @@ fn siftDown(a: usize, root: usize, n: usize, context: anytype) void {
         if (child >= n) break;
 
         // choose the greater child.
-        child += @boolToInt(child + 1 < n and context.lessThan(child, child + 1));
+        child += @intFromBool(child + 1 < n and context.lessThan(child, child + 1));
 
         // stop if the invariant holds at `node`.
         if (!context.lessThan(node, child)) break;
lib/std/start.zig
@@ -248,7 +248,7 @@ fn EfiMain(handle: uefi.Handle, system_table: *uefi.tables.SystemTable) callconv
             return root.main();
         },
         uefi.Status => {
-            return @enumToInt(root.main());
+            return @intFromEnum(root.main());
         },
         else => @compileError("expected return type of main to be 'void', 'noreturn', 'usize', or 'std.os.uefi.Status'"),
     }
@@ -419,7 +419,7 @@ fn posixCallMainAndExit() callconv(.C) noreturn {
                     else => continue,
                 }
             }
-            break :init @intToPtr([*]elf.Phdr, at_phdr)[0..at_phnum];
+            break :init @ptrFromInt([*]elf.Phdr, at_phdr)[0..at_phnum];
         };
 
         // Apply the initial relocations as early as possible in the startup
@@ -500,7 +500,7 @@ fn main(c_argc: c_int, c_argv: [*][*:0]c_char, c_envp: [*:null]?[*:0]c_char) cal
     if (builtin.os.tag == .linux) {
         const at_phdr = std.c.getauxval(elf.AT_PHDR);
         const at_phnum = std.c.getauxval(elf.AT_PHNUM);
-        const phdrs = (@intToPtr([*]elf.Phdr, at_phdr))[0..at_phnum];
+        const phdrs = (@ptrFromInt([*]elf.Phdr, at_phdr))[0..at_phnum];
         expandStackSize(phdrs);
     }
 
lib/std/start_windows_tls.zig
@@ -22,14 +22,14 @@ comptime {
 // TODO also note, ReactOS has a +1 on StartAddressOfRawData and AddressOfCallBacks. Investigate
 // why they do that.
 //export const _tls_used linksection(".rdata$T") = std.os.windows.IMAGE_TLS_DIRECTORY {
-//    .StartAddressOfRawData = @ptrToInt(&_tls_start),
-//    .EndAddressOfRawData = @ptrToInt(&_tls_end),
-//    .AddressOfIndex = @ptrToInt(&_tls_index),
-//    .AddressOfCallBacks = @ptrToInt(__xl_a),
+//    .StartAddressOfRawData = @intFromPtr(&_tls_start),
+//    .EndAddressOfRawData = @intFromPtr(&_tls_end),
+//    .AddressOfIndex = @intFromPtr(&_tls_index),
+//    .AddressOfCallBacks = @intFromPtr(__xl_a),
 //    .SizeOfZeroFill = 0,
 //    .Characteristics = 0,
 //};
-// This is the workaround because we can't do @ptrToInt at comptime like that.
+// This is the workaround because we can't do @intFromPtr at comptime like that.
 pub const IMAGE_TLS_DIRECTORY = extern struct {
     StartAddressOfRawData: *anyopaque,
     EndAddressOfRawData: *anyopaque,
lib/std/tar.zig
@@ -70,8 +70,8 @@ pub const Header = struct {
     }
 
     pub fn fileType(header: Header) FileType {
-        const result = @intToEnum(FileType, header.bytes[156]);
-        return if (result == @intToEnum(FileType, 0)) .normal else result;
+        const result = @enumFromInt(FileType, header.bytes[156]);
+        return if (result == @enumFromInt(FileType, 0)) .normal else result;
     }
 
     fn str(header: Header, start: usize, end: usize) []const u8 {
lib/std/target.zig
@@ -139,7 +139,7 @@ pub const Target = struct {
 
             /// Returns whether the first version `self` is newer (greater) than or equal to the second version `ver`.
             pub fn isAtLeast(self: WindowsVersion, ver: WindowsVersion) bool {
-                return @enumToInt(self) >= @enumToInt(ver);
+                return @intFromEnum(self) >= @intFromEnum(ver);
             }
 
             pub const Range = struct {
@@ -147,14 +147,14 @@ pub const Target = struct {
                 max: WindowsVersion,
 
                 pub fn includesVersion(self: Range, ver: WindowsVersion) bool {
-                    return @enumToInt(ver) >= @enumToInt(self.min) and @enumToInt(ver) <= @enumToInt(self.max);
+                    return @intFromEnum(ver) >= @intFromEnum(self.min) and @intFromEnum(ver) <= @intFromEnum(self.max);
                 }
 
                 /// Checks if system is guaranteed to be at least `version` or older than `version`.
                 /// Returns `null` if a runtime check is required.
                 pub fn isAtLeast(self: Range, ver: WindowsVersion) ?bool {
-                    if (@enumToInt(self.min) >= @enumToInt(ver)) return true;
-                    if (@enumToInt(self.max) < @enumToInt(ver)) return false;
+                    if (@intFromEnum(self.min) >= @intFromEnum(ver)) return true;
+                    if (@intFromEnum(self.max) < @intFromEnum(ver)) return false;
                     return null;
                 }
             };
@@ -168,17 +168,17 @@ pub const Target = struct {
                 out_stream: anytype,
             ) !void {
                 if (comptime std.mem.eql(u8, fmt, "s")) {
-                    if (@enumToInt(self) >= @enumToInt(WindowsVersion.nt4) and @enumToInt(self) <= @enumToInt(WindowsVersion.latest)) {
+                    if (@intFromEnum(self) >= @intFromEnum(WindowsVersion.nt4) and @intFromEnum(self) <= @intFromEnum(WindowsVersion.latest)) {
                         try std.fmt.format(out_stream, ".{s}", .{@tagName(self)});
                     } else {
                         // TODO this code path breaks zig triples, but it is used in `builtin`
-                        try std.fmt.format(out_stream, "@intToEnum(Target.Os.WindowsVersion, 0x{X:0>8})", .{@enumToInt(self)});
+                        try std.fmt.format(out_stream, "@enumFromInt(Target.Os.WindowsVersion, 0x{X:0>8})", .{@intFromEnum(self)});
                     }
                 } else if (fmt.len == 0) {
-                    if (@enumToInt(self) >= @enumToInt(WindowsVersion.nt4) and @enumToInt(self) <= @enumToInt(WindowsVersion.latest)) {
+                    if (@intFromEnum(self) >= @intFromEnum(WindowsVersion.nt4) and @intFromEnum(self) <= @intFromEnum(WindowsVersion.latest)) {
                         try std.fmt.format(out_stream, "WindowsVersion.{s}", .{@tagName(self)});
                     } else {
-                        try std.fmt.format(out_stream, "WindowsVersion(0x{X:0>8})", .{@enumToInt(self)});
+                        try std.fmt.format(out_stream, "WindowsVersion(0x{X:0>8})", .{@intFromEnum(self)});
                     }
                 } else {
                     std.fmt.invalidFmtError(fmt, self);
@@ -778,21 +778,21 @@ pub const Target = struct {
                     pub fn featureSet(features: []const F) Set {
                         var x = Set.empty;
                         for (features) |feature| {
-                            x.addFeature(@enumToInt(feature));
+                            x.addFeature(@intFromEnum(feature));
                         }
                         return x;
                     }
 
                     /// Returns true if the specified feature is enabled.
                     pub fn featureSetHas(set: Set, feature: F) bool {
-                        return set.isEnabled(@enumToInt(feature));
+                        return set.isEnabled(@intFromEnum(feature));
                     }
 
                     /// Returns true if any specified feature is enabled.
                     pub fn featureSetHasAny(set: Set, features: anytype) bool {
                         comptime std.debug.assert(std.meta.trait.isIndexable(@TypeOf(features)));
                         inline for (features) |feature| {
-                            if (set.isEnabled(@enumToInt(@as(F, feature)))) return true;
+                            if (set.isEnabled(@intFromEnum(@as(F, feature)))) return true;
                         }
                         return false;
                     }
@@ -801,7 +801,7 @@ pub const Target = struct {
                     pub fn featureSetHasAll(set: Set, features: anytype) bool {
                         comptime std.debug.assert(std.meta.trait.isIndexable(@TypeOf(features)));
                         inline for (features) |feature| {
-                            if (!set.isEnabled(@enumToInt(@as(F, feature)))) return false;
+                            if (!set.isEnabled(@intFromEnum(@as(F, feature)))) return false;
                         }
                         return true;
                     }
lib/std/Thread.zig
@@ -65,8 +65,8 @@ pub fn setName(self: Thread, name: []const u8) SetNameError!void {
         .linux => if (use_pthreads) {
             if (self.getHandle() == std.c.pthread_self()) {
                 // Set the name of the calling thread (no thread id required).
-                const err = try os.prctl(.SET_NAME, .{@ptrToInt(name_with_terminator.ptr)});
-                switch (@intToEnum(os.E, err)) {
+                const err = try os.prctl(.SET_NAME, .{@intFromPtr(name_with_terminator.ptr)});
+                switch (@enumFromInt(os.E, err)) {
                     .SUCCESS => return,
                     else => |e| return os.unexpectedErrno(e),
                 }
@@ -175,8 +175,8 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co
         .linux => if (use_pthreads) {
             if (self.getHandle() == std.c.pthread_self()) {
                 // Get the name of the calling thread (no thread id required).
-                const err = try os.prctl(.GET_NAME, .{@ptrToInt(buffer.ptr)});
-                switch (@intToEnum(os.E, err)) {
+                const err = try os.prctl(.GET_NAME, .{@intFromPtr(buffer.ptr)});
+                switch (@enumFromInt(os.E, err)) {
                     .SUCCESS => return std.mem.sliceTo(buffer, 0),
                     else => |e| return os.unexpectedErrno(e),
                 }
@@ -611,7 +611,7 @@ const PosixThreadImpl = struct {
                 return @bitCast(u32, c.find_thread(null));
             },
             else => {
-                return @ptrToInt(c.pthread_self());
+                return @intFromPtr(c.pthread_self());
             },
         }
     }
@@ -776,7 +776,7 @@ const LinuxThreadImpl = struct {
                     \\  movl $0, %%ebx
                     \\  int $128
                     :
-                    : [ptr] "r" (@ptrToInt(self.mapped.ptr)),
+                    : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
                       [len] "r" (self.mapped.len),
                     : "memory"
                 ),
@@ -787,7 +787,7 @@ const LinuxThreadImpl = struct {
                     \\  movq $1, %%rdi
                     \\  syscall
                     :
-                    : [ptr] "{rdi}" (@ptrToInt(self.mapped.ptr)),
+                    : [ptr] "{rdi}" (@intFromPtr(self.mapped.ptr)),
                       [len] "{rsi}" (self.mapped.len),
                 ),
                 .arm, .armeb, .thumb, .thumbeb => asm volatile (
@@ -799,7 +799,7 @@ const LinuxThreadImpl = struct {
                     \\  mov r0, #0
                     \\  svc 0
                     :
-                    : [ptr] "r" (@ptrToInt(self.mapped.ptr)),
+                    : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
                       [len] "r" (self.mapped.len),
                     : "memory"
                 ),
@@ -812,7 +812,7 @@ const LinuxThreadImpl = struct {
                     \\  mov x0, #0
                     \\  svc 0
                     :
-                    : [ptr] "r" (@ptrToInt(self.mapped.ptr)),
+                    : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
                       [len] "r" (self.mapped.len),
                     : "memory"
                 ),
@@ -826,7 +826,7 @@ const LinuxThreadImpl = struct {
                     \\  li $4, 0
                     \\  syscall
                     :
-                    : [ptr] "r" (@ptrToInt(self.mapped.ptr)),
+                    : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
                       [len] "r" (self.mapped.len),
                     : "memory"
                 ),
@@ -839,7 +839,7 @@ const LinuxThreadImpl = struct {
                     \\  li $4, 0
                     \\  syscall
                     :
-                    : [ptr] "r" (@ptrToInt(self.mapped.ptr)),
+                    : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
                       [len] "r" (self.mapped.len),
                     : "memory"
                 ),
@@ -853,7 +853,7 @@ const LinuxThreadImpl = struct {
                     \\  sc
                     \\  blr
                     :
-                    : [ptr] "r" (@ptrToInt(self.mapped.ptr)),
+                    : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
                       [len] "r" (self.mapped.len),
                     : "memory"
                 ),
@@ -866,7 +866,7 @@ const LinuxThreadImpl = struct {
                     \\  mv a0, zero
                     \\  ecall
                     :
-                    : [ptr] "r" (@ptrToInt(self.mapped.ptr)),
+                    : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
                       [len] "r" (self.mapped.len),
                     : "memory"
                 ),
@@ -893,7 +893,7 @@ const LinuxThreadImpl = struct {
                     \\  mov 1, %%o0
                     \\  t 0x6d
                     :
-                    : [ptr] "r" (@ptrToInt(self.mapped.ptr)),
+                    : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
                       [len] "r" (self.mapped.len),
                     : "memory"
                 ),
@@ -911,7 +911,7 @@ const LinuxThreadImpl = struct {
             thread: ThreadCompletion,
 
             fn entryFn(raw_arg: usize) callconv(.C) u8 {
-                const self = @intToPtr(*@This(), raw_arg);
+                const self = @ptrFromInt(*@This(), raw_arg);
                 defer switch (self.thread.completion.swap(.completed, .SeqCst)) {
                     .running => {},
                     .completed => unreachable,
@@ -980,7 +980,7 @@ const LinuxThreadImpl = struct {
         var tls_ptr = os.linux.tls.prepareTLS(mapped[tls_offset..]);
         var user_desc: if (target.cpu.arch == .x86) os.linux.user_desc else void = undefined;
         if (target.cpu.arch == .x86) {
-            defer tls_ptr = @ptrToInt(&user_desc);
+            defer tls_ptr = @intFromPtr(&user_desc);
             user_desc = .{
                 .entry_number = os.linux.tls.tls_image.gdt_entry_number,
                 .base_addr = tls_ptr,
@@ -1007,9 +1007,9 @@ const LinuxThreadImpl = struct {
 
         switch (linux.getErrno(linux.clone(
             Instance.entryFn,
-            @ptrToInt(&mapped[stack_offset]),
+            @intFromPtr(&mapped[stack_offset]),
             flags,
-            @ptrToInt(instance),
+            @intFromPtr(instance),
             &instance.thread.parent_tid,
             tls_ptr,
             &instance.thread.child_tid.value,
lib/std/treap.zig
@@ -159,7 +159,7 @@ pub fn Treap(comptime Key: type, comptime compareFn: anytype) type {
                 if (order == .eq) break;
 
                 parent_ref.* = current;
-                node = current.children[@boolToInt(order == .gt)];
+                node = current.children[@intFromBool(order == .gt)];
             }
 
             return node;
@@ -168,12 +168,12 @@ pub fn Treap(comptime Key: type, comptime compareFn: anytype) type {
         fn insert(self: *Self, key: Key, parent: ?*Node, node: *Node) void {
             // generate a random priority & prepare the node to be inserted into the tree
             node.key = key;
-            node.priority = self.prng.random(@ptrToInt(node));
+            node.priority = self.prng.random(@intFromPtr(node));
             node.parent = parent;
             node.children = [_]?*Node{ null, null };
 
             // point the parent at the new node
-            const link = if (parent) |p| &p.children[@boolToInt(compare(key, p.key) == .gt)] else &self.root;
+            const link = if (parent) |p| &p.children[@intFromBool(compare(key, p.key) == .gt)] else &self.root;
             assert(link.* == null);
             link.* = node;
 
@@ -182,7 +182,7 @@ pub fn Treap(comptime Key: type, comptime compareFn: anytype) type {
                 if (p.priority <= node.priority) break;
 
                 const is_right = p.children[1] == node;
-                assert(p.children[@boolToInt(is_right)] == node);
+                assert(p.children[@intFromBool(is_right)] == node);
 
                 const rotate_right = !is_right;
                 self.rotate(p, rotate_right);
@@ -197,7 +197,7 @@ pub fn Treap(comptime Key: type, comptime compareFn: anytype) type {
             new.children = old.children;
 
             // point the parent at the new node
-            const link = if (old.parent) |p| &p.children[@boolToInt(p.children[1] == old)] else &self.root;
+            const link = if (old.parent) |p| &p.children[@intFromBool(p.children[1] == old)] else &self.root;
             assert(link.* == old);
             link.* = new;
 
@@ -220,7 +220,7 @@ pub fn Treap(comptime Key: type, comptime compareFn: anytype) type {
             }
 
             // node is a now a leaf; remove by nulling out the parent's reference to it.
-            const link = if (node.parent) |p| &p.children[@boolToInt(p.children[1] == node)] else &self.root;
+            const link = if (node.parent) |p| &p.children[@intFromBool(p.children[1] == node)] else &self.root;
             assert(link.* == node);
             link.* = null;
 
@@ -240,12 +240,12 @@ pub fn Treap(comptime Key: type, comptime compareFn: anytype) type {
             //      parent -> (node (target YY adjacent) XX)
             //      parent -> (target YY (node adjacent XX))
             const parent = node.parent;
-            const target = node.children[@boolToInt(!right)] orelse unreachable;
-            const adjacent = target.children[@boolToInt(right)];
+            const target = node.children[@intFromBool(!right)] orelse unreachable;
+            const adjacent = target.children[@intFromBool(right)];
 
             // rotate the children
-            target.children[@boolToInt(right)] = node;
-            node.children[@boolToInt(!right)] = adjacent;
+            target.children[@intFromBool(right)] = node;
+            node.children[@intFromBool(!right)] = adjacent;
 
             // rotate the parents
             node.parent = target;
@@ -253,7 +253,7 @@ pub fn Treap(comptime Key: type, comptime compareFn: anytype) type {
             if (adjacent) |adj| adj.parent = node;
 
             // fix the parent link
-            const link = if (parent) |p| &p.children[@boolToInt(p.children[1] == node)] else &self.root;
+            const link = if (parent) |p| &p.children[@intFromBool(p.children[1] == node)] else &self.root;
             assert(link.* == node);
             link.* = target;
         }
lib/std/valgrind.zig
@@ -94,7 +94,7 @@ pub fn IsTool(base: [2]u8, code: usize) bool {
 }
 
 fn doClientRequestExpr(default: usize, request: ClientRequest, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) usize {
-    return doClientRequest(default, @intCast(usize, @enumToInt(request)), a1, a2, a3, a4, a5);
+    return doClientRequest(default, @intCast(usize, @intFromEnum(request)), a1, a2, a3, a4, a5);
 }
 
 fn doClientRequestStmt(request: ClientRequest, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) void {
@@ -117,7 +117,7 @@ test "works whether running on valgrind or not" {
 /// a JITter or some such, since it provides a way to make sure valgrind will
 /// retranslate the invalidated area.  Returns no value.
 pub fn discardTranslations(qzz: []const u8) void {
-    doClientRequestStmt(.DiscardTranslations, @ptrToInt(qzz.ptr), qzz.len, 0, 0, 0);
+    doClientRequestStmt(.DiscardTranslations, @intFromPtr(qzz.ptr), qzz.len, 0, 0, 0);
 }
 
 pub fn innerThreads(qzz: [*]u8) void {
@@ -125,19 +125,19 @@ pub fn innerThreads(qzz: [*]u8) void {
 }
 
 pub fn nonSIMDCall0(func: fn (usize) usize) usize {
-    return doClientRequestExpr(0, .ClientCall0, @ptrToInt(func), 0, 0, 0, 0);
+    return doClientRequestExpr(0, .ClientCall0, @intFromPtr(func), 0, 0, 0, 0);
 }
 
 pub fn nonSIMDCall1(func: fn (usize, usize) usize, a1: usize) usize {
-    return doClientRequestExpr(0, .ClientCall1, @ptrToInt(func), a1, 0, 0, 0);
+    return doClientRequestExpr(0, .ClientCall1, @intFromPtr(func), a1, 0, 0, 0);
 }
 
 pub fn nonSIMDCall2(func: fn (usize, usize, usize) usize, a1: usize, a2: usize) usize {
-    return doClientRequestExpr(0, .ClientCall2, @ptrToInt(func), a1, a2, 0, 0);
+    return doClientRequestExpr(0, .ClientCall2, @intFromPtr(func), a1, a2, 0, 0);
 }
 
 pub fn nonSIMDCall3(func: fn (usize, usize, usize, usize) usize, a1: usize, a2: usize, a3: usize) usize {
-    return doClientRequestExpr(0, .ClientCall3, @ptrToInt(func), a1, a2, a3, 0);
+    return doClientRequestExpr(0, .ClientCall3, @intFromPtr(func), a1, a2, a3, 0);
 }
 
 /// Counts the number of errors that have been recorded by a tool.  Nb:
@@ -149,15 +149,15 @@ pub fn countErrors() usize {
 }
 
 pub fn mallocLikeBlock(mem: []u8, rzB: usize, is_zeroed: bool) void {
-    doClientRequestStmt(.MalloclikeBlock, @ptrToInt(mem.ptr), mem.len, rzB, @boolToInt(is_zeroed), 0);
+    doClientRequestStmt(.MalloclikeBlock, @intFromPtr(mem.ptr), mem.len, rzB, @intFromBool(is_zeroed), 0);
 }
 
 pub fn resizeInPlaceBlock(oldmem: []u8, newsize: usize, rzB: usize) void {
-    doClientRequestStmt(.ResizeinplaceBlock, @ptrToInt(oldmem.ptr), oldmem.len, newsize, rzB, 0);
+    doClientRequestStmt(.ResizeinplaceBlock, @intFromPtr(oldmem.ptr), oldmem.len, newsize, rzB, 0);
 }
 
 pub fn freeLikeBlock(addr: [*]u8, rzB: usize) void {
-    doClientRequestStmt(.FreelikeBlock, @ptrToInt(addr), rzB, 0, 0, 0);
+    doClientRequestStmt(.FreelikeBlock, @intFromPtr(addr), rzB, 0, 0, 0);
 }
 
 /// Create a memory pool.
@@ -166,7 +166,7 @@ pub const MempoolFlags = struct {
     pub const MetaPool = 2;
 };
 pub fn createMempool(pool: [*]u8, rzB: usize, is_zeroed: bool, flags: usize) void {
-    doClientRequestStmt(.CreateMempool, @ptrToInt(pool), rzB, @boolToInt(is_zeroed), flags, 0);
+    doClientRequestStmt(.CreateMempool, @intFromPtr(pool), rzB, @intFromBool(is_zeroed), flags, 0);
 }
 
 /// Destroy a memory pool.
@@ -176,39 +176,39 @@ pub fn destroyMempool(pool: [*]u8) void {
 
 /// Associate a piece of memory with a memory pool.
 pub fn mempoolAlloc(pool: [*]u8, mem: []u8) void {
-    doClientRequestStmt(.MempoolAlloc, @ptrToInt(pool), @ptrToInt(mem.ptr), mem.len, 0, 0);
+    doClientRequestStmt(.MempoolAlloc, @intFromPtr(pool), @intFromPtr(mem.ptr), mem.len, 0, 0);
 }
 
 /// Disassociate a piece of memory from a memory pool.
 pub fn mempoolFree(pool: [*]u8, addr: [*]u8) void {
-    doClientRequestStmt(.MempoolFree, @ptrToInt(pool), @ptrToInt(addr), 0, 0, 0);
+    doClientRequestStmt(.MempoolFree, @intFromPtr(pool), @intFromPtr(addr), 0, 0, 0);
 }
 
 /// Disassociate any pieces outside a particular range.
 pub fn mempoolTrim(pool: [*]u8, mem: []u8) void {
-    doClientRequestStmt(.MempoolTrim, @ptrToInt(pool), @ptrToInt(mem.ptr), mem.len, 0, 0);
+    doClientRequestStmt(.MempoolTrim, @intFromPtr(pool), @intFromPtr(mem.ptr), mem.len, 0, 0);
 }
 
 /// Resize and/or move a piece associated with a memory pool.
 pub fn moveMempool(poolA: [*]u8, poolB: [*]u8) void {
-    doClientRequestStmt(.MoveMempool, @ptrToInt(poolA), @ptrToInt(poolB), 0, 0, 0);
+    doClientRequestStmt(.MoveMempool, @intFromPtr(poolA), @intFromPtr(poolB), 0, 0, 0);
 }
 
 /// Resize and/or move a piece associated with a memory pool.
 pub fn mempoolChange(pool: [*]u8, addrA: [*]u8, mem: []u8) void {
-    doClientRequestStmt(.MempoolChange, @ptrToInt(pool), @ptrToInt(addrA), @ptrToInt(mem.ptr), mem.len, 0);
+    doClientRequestStmt(.MempoolChange, @intFromPtr(pool), @intFromPtr(addrA), @intFromPtr(mem.ptr), mem.len, 0);
 }
 
 /// Return if a mempool exists.
 pub fn mempoolExists(pool: [*]u8) bool {
-    return doClientRequestExpr(0, .MempoolExists, @ptrToInt(pool), 0, 0, 0, 0) != 0;
+    return doClientRequestExpr(0, .MempoolExists, @intFromPtr(pool), 0, 0, 0, 0) != 0;
 }
 
 /// Mark a piece of memory as being a stack. Returns a stack id.
 /// start is the lowest addressable stack byte, end is the highest
 /// addressable stack byte.
 pub fn stackRegister(stack: []u8) usize {
-    return doClientRequestExpr(0, .StackRegister, @ptrToInt(stack.ptr), @ptrToInt(stack.ptr) + stack.len, 0, 0, 0);
+    return doClientRequestExpr(0, .StackRegister, @intFromPtr(stack.ptr), @intFromPtr(stack.ptr) + stack.len, 0, 0, 0);
 }
 
 /// Unmark the piece of memory associated with a stack id as being a stack.
@@ -220,7 +220,7 @@ pub fn stackDeregister(id: usize) void {
 /// start is the new lowest addressable stack byte, end is the new highest
 /// addressable stack byte.
 pub fn stackChange(id: usize, newstack: []u8) void {
-    doClientRequestStmt(.StackChange, id, @ptrToInt(newstack.ptr), @ptrToInt(newstack.ptr) + newstack.len, 0, 0);
+    doClientRequestStmt(.StackChange, id, @intFromPtr(newstack.ptr), @intFromPtr(newstack.ptr) + newstack.len, 0, 0);
 }
 
 // Load PDB debug info for Wine PE image_map.
@@ -235,7 +235,7 @@ pub fn stackChange(id: usize, newstack: []u8) void {
 /// result will be dumped in there and is guaranteed to be zero
 /// terminated.  If no info is found, the first byte is set to zero.
 pub fn mapIpToSrcloc(addr: *const u8, buf64: [64]u8) usize {
-    return doClientRequestExpr(0, .MapIpToSrcloc, @ptrToInt(addr), @ptrToInt(&buf64[0]), 0, 0, 0);
+    return doClientRequestExpr(0, .MapIpToSrcloc, @intFromPtr(addr), @intFromPtr(&buf64[0]), 0, 0, 0);
 }
 
 /// Disable error reporting for this thread.  Behaves in a stack like
@@ -261,7 +261,7 @@ pub fn enableErrorReporting() void {
 /// If no connection is opened, output will go to the log output.
 /// Returns 1 if command not recognised, 0 otherwise.
 pub fn monitorCommand(command: [*]u8) bool {
-    return doClientRequestExpr(0, .GdbMonitorCommand, @ptrToInt(command.ptr), 0, 0, 0, 0) != 0;
+    return doClientRequestExpr(0, .GdbMonitorCommand, @intFromPtr(command.ptr), 0, 0, 0, 0) != 0;
 }
 
 pub const memcheck = @import("valgrind/memcheck.zig");
lib/std/wasm.zig
@@ -198,7 +198,7 @@ pub const Opcode = enum(u8) {
 /// Returns the integer value of an `Opcode`. Used by the Zig compiler
 /// to write instructions to the wasm binary file
 pub fn opcode(op: Opcode) u8 {
-    return @enumToInt(op);
+    return @intFromEnum(op);
 }
 
 test "Wasm - opcodes" {
@@ -244,7 +244,7 @@ pub const MiscOpcode = enum(u32) {
 /// Returns the integer value of an `MiscOpcode`. Used by the Zig compiler
 /// to write instructions to the wasm binary file
 pub fn miscOpcode(op: MiscOpcode) u32 {
-    return @enumToInt(op);
+    return @intFromEnum(op);
 }
 
 /// Simd opcodes that require a prefix `0xFD`.
@@ -515,7 +515,7 @@ pub const SimdOpcode = enum(u32) {
 /// Returns the integer value of an `SimdOpcode`. Used by the Zig compiler
 /// to write instructions to the wasm binary file
 pub fn simdOpcode(op: SimdOpcode) u32 {
-    return @enumToInt(op);
+    return @intFromEnum(op);
 }
 
 /// Simd opcodes that require a prefix `0xFE`.
@@ -595,7 +595,7 @@ pub const AtomicsOpcode = enum(u32) {
 /// Returns the integer value of an `AtomicsOpcode`. Used by the Zig compiler
 /// to write instructions to the wasm binary file
 pub fn atomicsOpcode(op: AtomicsOpcode) u32 {
-    return @enumToInt(op);
+    return @intFromEnum(op);
 }
 
 /// Enum representing all Wasm value types as per spec:
@@ -610,7 +610,7 @@ pub const Valtype = enum(u8) {
 
 /// Returns the integer value of a `Valtype`
 pub fn valtype(value: Valtype) u8 {
-    return @enumToInt(value);
+    return @intFromEnum(value);
 }
 
 /// Reference types, where the funcref references to a function regardless of its type
@@ -622,7 +622,7 @@ pub const RefType = enum(u8) {
 
 /// Returns the integer value of a `Reftype`
 pub fn reftype(value: RefType) u8 {
-    return @enumToInt(value);
+    return @intFromEnum(value);
 }
 
 test "Wasm - valtypes" {
@@ -649,11 +649,11 @@ pub const Limits = struct {
     };
 
     pub fn hasFlag(limits: Limits, flag: Flags) bool {
-        return limits.flags & @enumToInt(flag) != 0;
+        return limits.flags & @intFromEnum(flag) != 0;
     }
 
     pub fn setFlag(limits: *Limits, flag: Flags) void {
-        limits.flags |= @enumToInt(flag);
+        limits.flags |= @intFromEnum(flag);
     }
 };
 
@@ -790,7 +790,7 @@ pub const Section = enum(u8) {
 
 /// Returns the integer value of a given `Section`
 pub fn section(val: Section) u8 {
-    return @enumToInt(val);
+    return @intFromEnum(val);
 }
 
 /// The kind of the type when importing or exporting to/from the host environment
@@ -804,7 +804,7 @@ pub const ExternalKind = enum(u8) {
 
 /// Returns the integer value of a given `ExternalKind`
 pub fn externalKind(val: ExternalKind) u8 {
-    return @enumToInt(val);
+    return @intFromEnum(val);
 }
 
 /// Defines the enum values for each subsection id for the "Names" custom section
lib/compiler_rt.zig
@@ -55,7 +55,7 @@ comptime {
     _ = @import("compiler_rt/trunctfdf2.zig");
     _ = @import("compiler_rt/trunctfxf2.zig");
 
-    _ = @import("compiler_rt/float_to_int.zig");
+    _ = @import("compiler_rt/int_from_float.zig");
     _ = @import("compiler_rt/fixhfsi.zig");
     _ = @import("compiler_rt/fixhfdi.zig");
     _ = @import("compiler_rt/fixhfti.zig");
@@ -87,7 +87,7 @@ comptime {
     _ = @import("compiler_rt/fixunsxfdi.zig");
     _ = @import("compiler_rt/fixunsxfti.zig");
 
-    _ = @import("compiler_rt/int_to_float.zig");
+    _ = @import("compiler_rt/float_from_int.zig");
     _ = @import("compiler_rt/floatsihf.zig");
     _ = @import("compiler_rt/floatsisf.zig");
     _ = @import("compiler_rt/floatsidf.zig");
lib/test_runner.zig
@@ -117,7 +117,7 @@ fn mainServer() !void {
             },
 
             else => {
-                std.debug.print("unsupported message: {x}", .{@enumToInt(hdr.tag)});
+                std.debug.print("unsupported message: {x}", .{@intFromEnum(hdr.tag)});
                 std.process.exit(1);
             },
         }
@@ -216,10 +216,10 @@ pub fn log(
     comptime format: []const u8,
     args: anytype,
 ) void {
-    if (@enumToInt(message_level) <= @enumToInt(std.log.Level.err)) {
+    if (@intFromEnum(message_level) <= @intFromEnum(std.log.Level.err)) {
         log_err_count += 1;
     }
-    if (@enumToInt(message_level) <= @enumToInt(std.testing.log_level)) {
+    if (@intFromEnum(message_level) <= @intFromEnum(std.testing.log_level)) {
         std.debug.print(
             "[" ++ @tagName(scope) ++ "] (" ++ @tagName(message_level) ++ "): " ++ format ++ "\n",
             args,
src/arch/aarch64/bits.zig
@@ -62,84 +62,84 @@ pub const Register = enum(u8) {
     // zig fmt: on
 
     pub fn class(self: Register) RegisterClass {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.x0)...@enumToInt(Register.xzr) => .general_purpose,
-            @enumToInt(Register.w0)...@enumToInt(Register.wzr) => .general_purpose,
-
-            @enumToInt(Register.sp) => .stack_pointer,
-            @enumToInt(Register.wsp) => .stack_pointer,
-
-            @enumToInt(Register.q0)...@enumToInt(Register.q31) => .floating_point,
-            @enumToInt(Register.d0)...@enumToInt(Register.d31) => .floating_point,
-            @enumToInt(Register.s0)...@enumToInt(Register.s31) => .floating_point,
-            @enumToInt(Register.h0)...@enumToInt(Register.h31) => .floating_point,
-            @enumToInt(Register.b0)...@enumToInt(Register.b31) => .floating_point,
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.x0)...@intFromEnum(Register.xzr) => .general_purpose,
+            @intFromEnum(Register.w0)...@intFromEnum(Register.wzr) => .general_purpose,
+
+            @intFromEnum(Register.sp) => .stack_pointer,
+            @intFromEnum(Register.wsp) => .stack_pointer,
+
+            @intFromEnum(Register.q0)...@intFromEnum(Register.q31) => .floating_point,
+            @intFromEnum(Register.d0)...@intFromEnum(Register.d31) => .floating_point,
+            @intFromEnum(Register.s0)...@intFromEnum(Register.s31) => .floating_point,
+            @intFromEnum(Register.h0)...@intFromEnum(Register.h31) => .floating_point,
+            @intFromEnum(Register.b0)...@intFromEnum(Register.b31) => .floating_point,
             else => unreachable,
         };
     }
 
     pub fn id(self: Register) u6 {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.x0)...@enumToInt(Register.xzr) => @intCast(u6, @enumToInt(self) - @enumToInt(Register.x0)),
-            @enumToInt(Register.w0)...@enumToInt(Register.wzr) => @intCast(u6, @enumToInt(self) - @enumToInt(Register.w0)),
-
-            @enumToInt(Register.sp) => 32,
-            @enumToInt(Register.wsp) => 32,
-
-            @enumToInt(Register.q0)...@enumToInt(Register.q31) => @intCast(u6, @enumToInt(self) - @enumToInt(Register.q0) + 33),
-            @enumToInt(Register.d0)...@enumToInt(Register.d31) => @intCast(u6, @enumToInt(self) - @enumToInt(Register.d0) + 33),
-            @enumToInt(Register.s0)...@enumToInt(Register.s31) => @intCast(u6, @enumToInt(self) - @enumToInt(Register.s0) + 33),
-            @enumToInt(Register.h0)...@enumToInt(Register.h31) => @intCast(u6, @enumToInt(self) - @enumToInt(Register.h0) + 33),
-            @enumToInt(Register.b0)...@enumToInt(Register.b31) => @intCast(u6, @enumToInt(self) - @enumToInt(Register.b0) + 33),
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.x0)...@intFromEnum(Register.xzr) => @intCast(u6, @intFromEnum(self) - @intFromEnum(Register.x0)),
+            @intFromEnum(Register.w0)...@intFromEnum(Register.wzr) => @intCast(u6, @intFromEnum(self) - @intFromEnum(Register.w0)),
+
+            @intFromEnum(Register.sp) => 32,
+            @intFromEnum(Register.wsp) => 32,
+
+            @intFromEnum(Register.q0)...@intFromEnum(Register.q31) => @intCast(u6, @intFromEnum(self) - @intFromEnum(Register.q0) + 33),
+            @intFromEnum(Register.d0)...@intFromEnum(Register.d31) => @intCast(u6, @intFromEnum(self) - @intFromEnum(Register.d0) + 33),
+            @intFromEnum(Register.s0)...@intFromEnum(Register.s31) => @intCast(u6, @intFromEnum(self) - @intFromEnum(Register.s0) + 33),
+            @intFromEnum(Register.h0)...@intFromEnum(Register.h31) => @intCast(u6, @intFromEnum(self) - @intFromEnum(Register.h0) + 33),
+            @intFromEnum(Register.b0)...@intFromEnum(Register.b31) => @intCast(u6, @intFromEnum(self) - @intFromEnum(Register.b0) + 33),
             else => unreachable,
         };
     }
 
     pub fn enc(self: Register) u5 {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.x0)...@enumToInt(Register.xzr) => @intCast(u5, @enumToInt(self) - @enumToInt(Register.x0)),
-            @enumToInt(Register.w0)...@enumToInt(Register.wzr) => @intCast(u5, @enumToInt(self) - @enumToInt(Register.w0)),
-
-            @enumToInt(Register.sp) => 31,
-            @enumToInt(Register.wsp) => 31,
-
-            @enumToInt(Register.q0)...@enumToInt(Register.q31) => @intCast(u5, @enumToInt(self) - @enumToInt(Register.q0)),
-            @enumToInt(Register.d0)...@enumToInt(Register.d31) => @intCast(u5, @enumToInt(self) - @enumToInt(Register.d0)),
-            @enumToInt(Register.s0)...@enumToInt(Register.s31) => @intCast(u5, @enumToInt(self) - @enumToInt(Register.s0)),
-            @enumToInt(Register.h0)...@enumToInt(Register.h31) => @intCast(u5, @enumToInt(self) - @enumToInt(Register.h0)),
-            @enumToInt(Register.b0)...@enumToInt(Register.b31) => @intCast(u5, @enumToInt(self) - @enumToInt(Register.b0)),
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.x0)...@intFromEnum(Register.xzr) => @intCast(u5, @intFromEnum(self) - @intFromEnum(Register.x0)),
+            @intFromEnum(Register.w0)...@intFromEnum(Register.wzr) => @intCast(u5, @intFromEnum(self) - @intFromEnum(Register.w0)),
+
+            @intFromEnum(Register.sp) => 31,
+            @intFromEnum(Register.wsp) => 31,
+
+            @intFromEnum(Register.q0)...@intFromEnum(Register.q31) => @intCast(u5, @intFromEnum(self) - @intFromEnum(Register.q0)),
+            @intFromEnum(Register.d0)...@intFromEnum(Register.d31) => @intCast(u5, @intFromEnum(self) - @intFromEnum(Register.d0)),
+            @intFromEnum(Register.s0)...@intFromEnum(Register.s31) => @intCast(u5, @intFromEnum(self) - @intFromEnum(Register.s0)),
+            @intFromEnum(Register.h0)...@intFromEnum(Register.h31) => @intCast(u5, @intFromEnum(self) - @intFromEnum(Register.h0)),
+            @intFromEnum(Register.b0)...@intFromEnum(Register.b31) => @intCast(u5, @intFromEnum(self) - @intFromEnum(Register.b0)),
             else => unreachable,
         };
     }
 
     /// Returns the bit-width of the register.
     pub fn size(self: Register) u8 {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.x0)...@enumToInt(Register.xzr) => 64,
-            @enumToInt(Register.w0)...@enumToInt(Register.wzr) => 32,
-
-            @enumToInt(Register.sp) => 64,
-            @enumToInt(Register.wsp) => 32,
-
-            @enumToInt(Register.q0)...@enumToInt(Register.q31) => 128,
-            @enumToInt(Register.d0)...@enumToInt(Register.d31) => 64,
-            @enumToInt(Register.s0)...@enumToInt(Register.s31) => 32,
-            @enumToInt(Register.h0)...@enumToInt(Register.h31) => 16,
-            @enumToInt(Register.b0)...@enumToInt(Register.b31) => 8,
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.x0)...@intFromEnum(Register.xzr) => 64,
+            @intFromEnum(Register.w0)...@intFromEnum(Register.wzr) => 32,
+
+            @intFromEnum(Register.sp) => 64,
+            @intFromEnum(Register.wsp) => 32,
+
+            @intFromEnum(Register.q0)...@intFromEnum(Register.q31) => 128,
+            @intFromEnum(Register.d0)...@intFromEnum(Register.d31) => 64,
+            @intFromEnum(Register.s0)...@intFromEnum(Register.s31) => 32,
+            @intFromEnum(Register.h0)...@intFromEnum(Register.h31) => 16,
+            @intFromEnum(Register.b0)...@intFromEnum(Register.b31) => 8,
             else => unreachable,
         };
     }
 
     /// Convert from a general-purpose register to its 64 bit alias.
     pub fn toX(self: Register) Register {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.x0)...@enumToInt(Register.xzr) => @intToEnum(
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.x0)...@intFromEnum(Register.xzr) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.x0) + @enumToInt(Register.x0),
+                @intFromEnum(self) - @intFromEnum(Register.x0) + @intFromEnum(Register.x0),
             ),
-            @enumToInt(Register.w0)...@enumToInt(Register.wzr) => @intToEnum(
+            @intFromEnum(Register.w0)...@intFromEnum(Register.wzr) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.w0) + @enumToInt(Register.x0),
+                @intFromEnum(self) - @intFromEnum(Register.w0) + @intFromEnum(Register.x0),
             ),
             else => unreachable,
         };
@@ -147,14 +147,14 @@ pub const Register = enum(u8) {
 
     /// Convert from a general-purpose register to its 32 bit alias.
     pub fn toW(self: Register) Register {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.x0)...@enumToInt(Register.xzr) => @intToEnum(
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.x0)...@intFromEnum(Register.xzr) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.x0) + @enumToInt(Register.w0),
+                @intFromEnum(self) - @intFromEnum(Register.x0) + @intFromEnum(Register.w0),
             ),
-            @enumToInt(Register.w0)...@enumToInt(Register.wzr) => @intToEnum(
+            @intFromEnum(Register.w0)...@intFromEnum(Register.wzr) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.w0) + @enumToInt(Register.w0),
+                @intFromEnum(self) - @intFromEnum(Register.w0) + @intFromEnum(Register.w0),
             ),
             else => unreachable,
         };
@@ -162,26 +162,26 @@ pub const Register = enum(u8) {
 
     /// Convert from a floating-point register to its 128 bit alias.
     pub fn toQ(self: Register) Register {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.q0)...@enumToInt(Register.q31) => @intToEnum(
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.q0)...@intFromEnum(Register.q31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.q0) + @enumToInt(Register.q0),
+                @intFromEnum(self) - @intFromEnum(Register.q0) + @intFromEnum(Register.q0),
             ),
-            @enumToInt(Register.d0)...@enumToInt(Register.d31) => @intToEnum(
+            @intFromEnum(Register.d0)...@intFromEnum(Register.d31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.d0) + @enumToInt(Register.q0),
+                @intFromEnum(self) - @intFromEnum(Register.d0) + @intFromEnum(Register.q0),
             ),
-            @enumToInt(Register.s0)...@enumToInt(Register.s31) => @intToEnum(
+            @intFromEnum(Register.s0)...@intFromEnum(Register.s31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.s0) + @enumToInt(Register.q0),
+                @intFromEnum(self) - @intFromEnum(Register.s0) + @intFromEnum(Register.q0),
             ),
-            @enumToInt(Register.h0)...@enumToInt(Register.h31) => @intToEnum(
+            @intFromEnum(Register.h0)...@intFromEnum(Register.h31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.h0) + @enumToInt(Register.q0),
+                @intFromEnum(self) - @intFromEnum(Register.h0) + @intFromEnum(Register.q0),
             ),
-            @enumToInt(Register.b0)...@enumToInt(Register.b31) => @intToEnum(
+            @intFromEnum(Register.b0)...@intFromEnum(Register.b31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.b0) + @enumToInt(Register.q0),
+                @intFromEnum(self) - @intFromEnum(Register.b0) + @intFromEnum(Register.q0),
             ),
             else => unreachable,
         };
@@ -189,26 +189,26 @@ pub const Register = enum(u8) {
 
     /// Convert from a floating-point register to its 64 bit alias.
     pub fn toD(self: Register) Register {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.q0)...@enumToInt(Register.q31) => @intToEnum(
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.q0)...@intFromEnum(Register.q31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.q0) + @enumToInt(Register.d0),
+                @intFromEnum(self) - @intFromEnum(Register.q0) + @intFromEnum(Register.d0),
             ),
-            @enumToInt(Register.d0)...@enumToInt(Register.d31) => @intToEnum(
+            @intFromEnum(Register.d0)...@intFromEnum(Register.d31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.d0) + @enumToInt(Register.d0),
+                @intFromEnum(self) - @intFromEnum(Register.d0) + @intFromEnum(Register.d0),
             ),
-            @enumToInt(Register.s0)...@enumToInt(Register.s31) => @intToEnum(
+            @intFromEnum(Register.s0)...@intFromEnum(Register.s31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.s0) + @enumToInt(Register.d0),
+                @intFromEnum(self) - @intFromEnum(Register.s0) + @intFromEnum(Register.d0),
             ),
-            @enumToInt(Register.h0)...@enumToInt(Register.h31) => @intToEnum(
+            @intFromEnum(Register.h0)...@intFromEnum(Register.h31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.h0) + @enumToInt(Register.d0),
+                @intFromEnum(self) - @intFromEnum(Register.h0) + @intFromEnum(Register.d0),
             ),
-            @enumToInt(Register.b0)...@enumToInt(Register.b31) => @intToEnum(
+            @intFromEnum(Register.b0)...@intFromEnum(Register.b31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.b0) + @enumToInt(Register.d0),
+                @intFromEnum(self) - @intFromEnum(Register.b0) + @intFromEnum(Register.d0),
             ),
             else => unreachable,
         };
@@ -216,26 +216,26 @@ pub const Register = enum(u8) {
 
     /// Convert from a floating-point register to its 32 bit alias.
     pub fn toS(self: Register) Register {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.q0)...@enumToInt(Register.q31) => @intToEnum(
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.q0)...@intFromEnum(Register.q31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.q0) + @enumToInt(Register.s0),
+                @intFromEnum(self) - @intFromEnum(Register.q0) + @intFromEnum(Register.s0),
             ),
-            @enumToInt(Register.d0)...@enumToInt(Register.d31) => @intToEnum(
+            @intFromEnum(Register.d0)...@intFromEnum(Register.d31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.d0) + @enumToInt(Register.s0),
+                @intFromEnum(self) - @intFromEnum(Register.d0) + @intFromEnum(Register.s0),
             ),
-            @enumToInt(Register.s0)...@enumToInt(Register.s31) => @intToEnum(
+            @intFromEnum(Register.s0)...@intFromEnum(Register.s31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.s0) + @enumToInt(Register.s0),
+                @intFromEnum(self) - @intFromEnum(Register.s0) + @intFromEnum(Register.s0),
             ),
-            @enumToInt(Register.h0)...@enumToInt(Register.h31) => @intToEnum(
+            @intFromEnum(Register.h0)...@intFromEnum(Register.h31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.h0) + @enumToInt(Register.s0),
+                @intFromEnum(self) - @intFromEnum(Register.h0) + @intFromEnum(Register.s0),
             ),
-            @enumToInt(Register.b0)...@enumToInt(Register.b31) => @intToEnum(
+            @intFromEnum(Register.b0)...@intFromEnum(Register.b31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.b0) + @enumToInt(Register.s0),
+                @intFromEnum(self) - @intFromEnum(Register.b0) + @intFromEnum(Register.s0),
             ),
             else => unreachable,
         };
@@ -243,26 +243,26 @@ pub const Register = enum(u8) {
 
     /// Convert from a floating-point register to its 16 bit alias.
     pub fn toH(self: Register) Register {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.q0)...@enumToInt(Register.q31) => @intToEnum(
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.q0)...@intFromEnum(Register.q31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.q0) + @enumToInt(Register.h0),
+                @intFromEnum(self) - @intFromEnum(Register.q0) + @intFromEnum(Register.h0),
             ),
-            @enumToInt(Register.d0)...@enumToInt(Register.d31) => @intToEnum(
+            @intFromEnum(Register.d0)...@intFromEnum(Register.d31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.d0) + @enumToInt(Register.h0),
+                @intFromEnum(self) - @intFromEnum(Register.d0) + @intFromEnum(Register.h0),
             ),
-            @enumToInt(Register.s0)...@enumToInt(Register.s31) => @intToEnum(
+            @intFromEnum(Register.s0)...@intFromEnum(Register.s31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.s0) + @enumToInt(Register.h0),
+                @intFromEnum(self) - @intFromEnum(Register.s0) + @intFromEnum(Register.h0),
             ),
-            @enumToInt(Register.h0)...@enumToInt(Register.h31) => @intToEnum(
+            @intFromEnum(Register.h0)...@intFromEnum(Register.h31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.h0) + @enumToInt(Register.h0),
+                @intFromEnum(self) - @intFromEnum(Register.h0) + @intFromEnum(Register.h0),
             ),
-            @enumToInt(Register.b0)...@enumToInt(Register.b31) => @intToEnum(
+            @intFromEnum(Register.b0)...@intFromEnum(Register.b31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.b0) + @enumToInt(Register.h0),
+                @intFromEnum(self) - @intFromEnum(Register.b0) + @intFromEnum(Register.h0),
             ),
             else => unreachable,
         };
@@ -270,26 +270,26 @@ pub const Register = enum(u8) {
 
     /// Convert from a floating-point register to its 8 bit alias.
     pub fn toB(self: Register) Register {
-        return switch (@enumToInt(self)) {
-            @enumToInt(Register.q0)...@enumToInt(Register.q31) => @intToEnum(
+        return switch (@intFromEnum(self)) {
+            @intFromEnum(Register.q0)...@intFromEnum(Register.q31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.q0) + @enumToInt(Register.b0),
+                @intFromEnum(self) - @intFromEnum(Register.q0) + @intFromEnum(Register.b0),
             ),
-            @enumToInt(Register.d0)...@enumToInt(Register.d31) => @intToEnum(
+            @intFromEnum(Register.d0)...@intFromEnum(Register.d31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.d0) + @enumToInt(Register.b0),
+                @intFromEnum(self) - @intFromEnum(Register.d0) + @intFromEnum(Register.b0),
             ),
-            @enumToInt(Register.s0)...@enumToInt(Register.s31) => @intToEnum(
+            @intFromEnum(Register.s0)...@intFromEnum(Register.s31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.s0) + @enumToInt(Register.b0),
+                @intFromEnum(self) - @intFromEnum(Register.s0) + @intFromEnum(Register.b0),
             ),
-            @enumToInt(Register.h0)...@enumToInt(Register.h31) => @intToEnum(
+            @intFromEnum(Register.h0)...@intFromEnum(Register.h31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.h0) + @enumToInt(Register.b0),
+                @intFromEnum(self) - @intFromEnum(Register.h0) + @intFromEnum(Register.b0),
             ),
-            @enumToInt(Register.b0)...@enumToInt(Register.b31) => @intToEnum(
+            @intFromEnum(Register.b0)...@intFromEnum(Register.b31) => @enumFromInt(
                 Register,
-                @enumToInt(self) - @enumToInt(Register.b0) + @enumToInt(Register.b0),
+                @intFromEnum(self) - @intFromEnum(Register.b0) + @intFromEnum(Register.b0),
             ),
             else => unreachable,
         };
@@ -901,7 +901,7 @@ pub const Instruction = union(enum) {
                         .rn = rn.enc(),
                         .rt2 = rt2.enc(),
                         .imm7 = imm7,
-                        .load = @boolToInt(load),
+                        .load = @intFromBool(load),
                         .encoding = encoding,
                         .opc = 0b00,
                     },
@@ -916,7 +916,7 @@ pub const Instruction = union(enum) {
                         .rn = rn.enc(),
                         .rt2 = rt2.enc(),
                         .imm7 = imm7,
-                        .load = @boolToInt(load),
+                        .load = @intFromBool(load),
                         .encoding = encoding,
                         .opc = 0b10,
                     },
@@ -1010,7 +1010,7 @@ pub const Instruction = union(enum) {
                 .imm6 = amount,
                 .rm = rm.enc(),
                 .n = n,
-                .shift = @enumToInt(shift),
+                .shift = @intFromEnum(shift),
                 .opc = opc,
                 .sf = switch (rd.size()) {
                     32 => 0b0,
@@ -1037,7 +1037,7 @@ pub const Instruction = union(enum) {
                 .rd = rd.enc(),
                 .rn = rn.enc(),
                 .imm12 = imm12,
-                .sh = @boolToInt(shift),
+                .sh = @intFromBool(shift),
                 .s = s,
                 .op = op,
                 .sf = switch (rd.size()) {
@@ -1126,7 +1126,7 @@ pub const Instruction = union(enum) {
                 .rn = rn.enc(),
                 .imm6 = imm6,
                 .rm = rm.enc(),
-                .shift = @enumToInt(shift),
+                .shift = @intFromEnum(shift),
                 .s = s,
                 .op = op,
                 .sf = switch (rd.size()) {
@@ -1163,7 +1163,7 @@ pub const Instruction = union(enum) {
                 .rd = rd.enc(),
                 .rn = rn.enc(),
                 .imm3 = imm3,
-                .option = @enumToInt(extend),
+                .option = @intFromEnum(extend),
                 .rm = rm.enc(),
                 .s = s,
                 .op = op,
@@ -1186,7 +1186,7 @@ pub const Instruction = union(enum) {
 
         return Instruction{
             .conditional_branch = .{
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
                 .o0 = o0,
                 .imm19 = @bitCast(u19, @intCast(i19, offset >> 2)),
                 .o1 = o1,
@@ -1232,7 +1232,7 @@ pub const Instruction = union(enum) {
                 .rd = rd.enc(),
                 .rn = rn.enc(),
                 .op2 = op2,
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
                 .rm = rm.enc(),
                 .s = s,
                 .op = op,
@@ -1394,7 +1394,7 @@ pub const Instruction = union(enum) {
     };
 
     pub fn ldp(rt1: Register, rt2: Register, rn: Register, offset: LoadStorePairOffset) Instruction {
-        return loadStoreRegisterPair(rt1, rt2, rn, offset.offset, @enumToInt(offset.encoding), true);
+        return loadStoreRegisterPair(rt1, rt2, rn, offset.offset, @intFromEnum(offset.encoding), true);
     }
 
     pub fn ldnp(rt1: Register, rt2: Register, rn: Register, offset: i9) Instruction {
@@ -1402,7 +1402,7 @@ pub const Instruction = union(enum) {
     }
 
     pub fn stp(rt1: Register, rt2: Register, rn: Register, offset: LoadStorePairOffset) Instruction {
-        return loadStoreRegisterPair(rt1, rt2, rn, offset.offset, @enumToInt(offset.encoding), false);
+        return loadStoreRegisterPair(rt1, rt2, rn, offset.offset, @intFromEnum(offset.encoding), false);
     }
 
     pub fn stnp(rt1: Register, rt2: Register, rn: Register, offset: i9) Instruction {
src/arch/aarch64/CodeGen.zig
@@ -951,7 +951,7 @@ fn finishAir(self: *Self, inst: Air.Inst.Index, result: MCValue, operands: [Live
         const dies = @truncate(u1, tomb_bits) != 0;
         tomb_bits >>= 1;
         if (!dies) continue;
-        const op_int = @enumToInt(op);
+        const op_int = @intFromEnum(op);
         if (op_int < Air.ref_start_index) continue;
         const op_index = @intCast(Air.Inst.Index, op_int - Air.ref_start_index);
         self.processDeath(op_index);
@@ -4026,7 +4026,7 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type
                                     .tag = tag,
                                     .data = .{
                                         .payload = try self.addExtra(Mir.LoadMemoryPie{
-                                            .register = @enumToInt(src_reg),
+                                            .register = @intFromEnum(src_reg),
                                             .atom_index = atom_index,
                                             .sym_index = load_struct.sym_index,
                                         }),
@@ -4694,7 +4694,7 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {
     // that death now instead of later as this has an effect on
     // whether it needs to be spilled in the branches
     if (self.liveness.operandDies(inst, 0)) {
-        const op_int = @enumToInt(pl_op.operand);
+        const op_int = @intFromEnum(pl_op.operand);
         if (op_int >= Air.ref_start_index) {
             const op_index = @intCast(Air.Inst.Index, op_int - Air.ref_start_index);
             self.processDeath(op_index);
@@ -5546,7 +5546,7 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro
                             .tag = tag,
                             .data = .{
                                 .payload = try self.addExtra(Mir.LoadMemoryPie{
-                                    .register = @enumToInt(src_reg),
+                                    .register = @intFromEnum(src_reg),
                                     .atom_index = atom_index,
                                     .sym_index = load_struct.sym_index,
                                 }),
@@ -5667,7 +5667,7 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void
                 .tag = tag,
                 .data = .{
                     .payload = try self.addExtra(Mir.LoadMemoryPie{
-                        .register = @enumToInt(reg),
+                        .register = @intFromEnum(reg),
                         .atom_index = atom_index,
                         .sym_index = load_struct.sym_index,
                     }),
@@ -5864,7 +5864,7 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I
                             .tag = tag,
                             .data = .{
                                 .payload = try self.addExtra(Mir.LoadMemoryPie{
-                                    .register = @enumToInt(src_reg),
+                                    .register = @intFromEnum(src_reg),
                                     .atom_index = atom_index,
                                     .sym_index = load_struct.sym_index,
                                 }),
src/arch/aarch64/Emit.zig
@@ -837,7 +837,7 @@ fn mirLoadMemoryPie(emit: *Emit, inst: Mir.Inst.Index) !void {
     const tag = emit.mir.instructions.items(.tag)[inst];
     const payload = emit.mir.instructions.items(.data)[inst].payload;
     const data = emit.mir.extraData(Mir.LoadMemoryPie, payload).data;
-    const reg = @intToEnum(Register, data.register);
+    const reg = @enumFromInt(Register, data.register);
 
     // PC-relative displacement to the entry in memory.
     // adrp
@@ -1245,7 +1245,7 @@ fn mirPushPopRegs(emit: *Emit, inst: Mir.Inst.Index) !void {
             var count: u6 = 0;
             var other_reg: ?Register = null;
             while (i > 0) : (i -= 1) {
-                const reg = @intToEnum(Register, i - 1);
+                const reg = @enumFromInt(Register, i - 1);
                 if (regListIsSet(reg_list, reg)) {
                     if (count == 0 and odd_number_of_regs) {
                         try emit.writeInstruction(Instruction.ldr(
@@ -1274,7 +1274,7 @@ fn mirPushPopRegs(emit: *Emit, inst: Mir.Inst.Index) !void {
             var count: u6 = 0;
             var other_reg: ?Register = null;
             while (i < 32) : (i += 1) {
-                const reg = @intToEnum(Register, i);
+                const reg = @enumFromInt(Register, i);
                 if (regListIsSet(reg_list, reg)) {
                     if (count == number_of_regs - 1 and odd_number_of_regs) {
                         try emit.writeInstruction(Instruction.str(
src/arch/arm/bits.zig
@@ -159,7 +159,7 @@ pub const Register = enum(u5) {
     /// Returns the unique 4-bit ID of this register which is used in
     /// the machine code
     pub fn id(self: Register) u4 {
-        return @truncate(u4, @enumToInt(self));
+        return @truncate(u4, @intFromEnum(self));
     }
 
     pub fn dwarfLocOp(self: Register) u8 {
@@ -408,7 +408,7 @@ pub const Instruction = union(enum) {
                 return Shift{
                     .register = .{
                         .rs = rs.id(),
-                        .typ = @enumToInt(typ),
+                        .typ = @intFromEnum(typ),
                     },
                 };
             }
@@ -417,7 +417,7 @@ pub const Instruction = union(enum) {
                 return Shift{
                     .immediate = .{
                         .amount = amount,
-                        .typ = @enumToInt(typ),
+                        .typ = @intFromEnum(typ),
                     },
                 };
             }
@@ -633,9 +633,9 @@ pub const Instruction = union(enum) {
     ) Instruction {
         return Instruction{
             .data_processing = .{
-                .cond = @enumToInt(cond),
-                .i = @boolToInt(op2 == .immediate),
-                .opcode = @enumToInt(opcode),
+                .cond = @intFromEnum(cond),
+                .i = @intFromBool(op2 == .immediate),
+                .opcode = @intFromEnum(opcode),
                 .s = s,
                 .rn = rn.id(),
                 .rd = rd.id(),
@@ -652,7 +652,7 @@ pub const Instruction = union(enum) {
     ) Instruction {
         return Instruction{
             .data_processing = .{
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
                 .i = 1,
                 .opcode = if (top) 0b1010 else 0b1000,
                 .s = 0,
@@ -673,8 +673,8 @@ pub const Instruction = union(enum) {
     ) Instruction {
         return Instruction{
             .multiply = .{
-                .cond = @enumToInt(cond),
-                .accumulate = @boolToInt(ra != null),
+                .cond = @intFromEnum(cond),
+                .accumulate = @intFromBool(ra != null),
                 .set_cond = set_cond,
                 .rd = rd.id(),
                 .rn = rn.id(),
@@ -696,7 +696,7 @@ pub const Instruction = union(enum) {
     ) Instruction {
         return Instruction{
             .multiply_long = .{
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
                 .unsigned = signed,
                 .accumulate = accumulate,
                 .set_cond = set_cond,
@@ -723,7 +723,7 @@ pub const Instruction = union(enum) {
                 .m = m,
                 .rm = rm.id(),
                 .rd = rd.id(),
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
             },
         };
     }
@@ -741,7 +741,7 @@ pub const Instruction = union(enum) {
                 .rd = rd.id(),
                 .rn = rn.id(),
                 .opc = opc,
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
             },
         };
     }
@@ -762,7 +762,7 @@ pub const Instruction = union(enum) {
                 .rd = rd.id(),
                 .widthm1 = @intCast(u5, width - 1),
                 .unsigned = unsigned,
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
             },
         };
     }
@@ -779,7 +779,7 @@ pub const Instruction = union(enum) {
     ) Instruction {
         return Instruction{
             .single_data_transfer = .{
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
                 .rn = rn.id(),
                 .rd = rd.id(),
                 .offset = offset.toU12(),
@@ -789,12 +789,12 @@ pub const Instruction = union(enum) {
                     .pre_index, .post_index => 0b1,
                 },
                 .byte_word = byte_word,
-                .up_down = @boolToInt(positive),
+                .up_down = @intFromBool(positive),
                 .pre_post = switch (mode) {
                     .offset, .pre_index => 0b1,
                     .post_index => 0b0,
                 },
-                .imm = @boolToInt(offset != .immediate),
+                .imm = @intFromBool(offset != .immediate),
             },
         };
     }
@@ -830,13 +830,13 @@ pub const Instruction = union(enum) {
                     .offset => 0b0,
                     .pre_index, .post_index => 0b1,
                 },
-                .imm = @boolToInt(offset == .immediate),
-                .up_down = @boolToInt(positive),
+                .imm = @intFromBool(offset == .immediate),
+                .up_down = @intFromBool(positive),
                 .pre_index = switch (mode) {
                     .offset, .pre_index => 0b1,
                     .post_index => 0b0,
                 },
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
             },
         };
     }
@@ -856,11 +856,11 @@ pub const Instruction = union(enum) {
                 .register_list = @bitCast(u16, reg_list),
                 .rn = rn.id(),
                 .load_store = load_store,
-                .write_back = @boolToInt(write_back),
+                .write_back = @intFromBool(write_back),
                 .psr_or_user = psr_or_user,
                 .up_down = up_down,
                 .pre_post = pre_post,
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
             },
         };
     }
@@ -868,7 +868,7 @@ pub const Instruction = union(enum) {
     fn branch(cond: Condition, offset: i26, link: u1) Instruction {
         return Instruction{
             .branch = .{
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
                 .link = link,
                 .offset = @bitCast(u24, @intCast(i24, offset >> 2)),
             },
@@ -878,7 +878,7 @@ pub const Instruction = union(enum) {
     fn branchExchange(cond: Condition, rn: Register, link: u1) Instruction {
         return Instruction{
             .branch_exchange = .{
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
                 .link = link,
                 .rn = rn.id(),
             },
@@ -888,7 +888,7 @@ pub const Instruction = union(enum) {
     fn supervisorCall(cond: Condition, comment: u24) Instruction {
         return Instruction{
             .supervisor_call = .{
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
                 .comment = comment,
             },
         };
@@ -1060,7 +1060,7 @@ pub const Instruction = union(enum) {
     pub fn mrs(cond: Condition, rd: Register, psr: Psr) Instruction {
         return Instruction{
             .data_processing = .{
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
                 .i = 0,
                 .opcode = if (psr == .spsr) 0b1010 else 0b1000,
                 .s = 0,
@@ -1074,7 +1074,7 @@ pub const Instruction = union(enum) {
     pub fn msr(cond: Condition, psr: Psr, op: Operand) Instruction {
         return Instruction{
             .data_processing = .{
-                .cond = @enumToInt(cond),
+                .cond = @intFromEnum(cond),
                 .i = 0,
                 .opcode = if (psr == .spsr) 0b1011 else 0b1001,
                 .s = 0,
src/arch/arm/CodeGen.zig
@@ -937,7 +937,7 @@ fn finishAir(self: *Self, inst: Air.Inst.Index, result: MCValue, operands: [Live
         const dies = @truncate(u1, tomb_bits) != 0;
         tomb_bits >>= 1;
         if (!dies) continue;
-        const op_int = @enumToInt(op);
+        const op_int = @intFromEnum(op);
         if (op_int < Air.ref_start_index) continue;
         const op_index = @intCast(Air.Inst.Index, op_int - Air.ref_start_index);
         self.processDeath(op_index);
@@ -4649,7 +4649,7 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {
     // that death now instead of later as this has an effect on
     // whether it needs to be spilled in the branches
     if (self.liveness.operandDies(inst, 0)) {
-        const op_int = @enumToInt(pl_op.operand);
+        const op_int = @intFromEnum(pl_op.operand);
         if (op_int >= Air.ref_start_index) {
             const op_index = @intCast(Air.Inst.Index, op_int - Air.ref_start_index);
             self.processDeath(op_index);
src/arch/riscv64/bits.zig
@@ -407,7 +407,7 @@ pub const Register = enum(u6) {
     /// Returns the unique 4-bit ID of this register which is used in
     /// the machine code
     pub fn id(self: Register) u5 {
-        return @truncate(u5, @enumToInt(self));
+        return @truncate(u5, @intFromEnum(self));
     }
 
     pub fn dwarfLocOp(reg: Register) u8 {
src/arch/riscv64/CodeGen.zig
@@ -755,7 +755,7 @@ fn finishAir(self: *Self, inst: Air.Inst.Index, result: MCValue, operands: [Live
         const dies = @truncate(u1, tomb_bits) != 0;
         tomb_bits >>= 1;
         if (!dies) continue;
-        const op_int = @enumToInt(op);
+        const op_int = @intFromEnum(op);
         if (op_int < Air.ref_start_index) continue;
         const op_index = @intCast(Air.Inst.Index, op_int - Air.ref_start_index);
         self.processDeath(op_index);
src/arch/sparc64/bits.zig
@@ -16,7 +16,7 @@ pub const Register = enum(u6) {
     // zig fmt: on
 
     pub fn id(self: Register) u5 {
-        return @truncate(u5, @enumToInt(self));
+        return @truncate(u5, @intFromEnum(self));
     }
 
     pub fn enc(self: Register) u5 {
@@ -96,9 +96,9 @@ pub const FloatingPointRegister = enum(u7) {
 
     pub fn id(self: FloatingPointRegister) u6 {
         return switch (self.size()) {
-            32 => @truncate(u6, @enumToInt(self)),
-            64 => @truncate(u6, (@enumToInt(self) - 32) * 2),
-            128 => @truncate(u6, (@enumToInt(self) - 64) * 4),
+            32 => @truncate(u6, @intFromEnum(self)),
+            64 => @truncate(u6, (@intFromEnum(self) - 32) * 2),
+            128 => @truncate(u6, (@intFromEnum(self) - 64) * 4),
             else => unreachable,
         };
     }
@@ -114,7 +114,7 @@ pub const FloatingPointRegister = enum(u7) {
 
     /// Returns the bit-width of the register.
     pub fn size(self: FloatingPointRegister) u8 {
-        return switch (@enumToInt(self)) {
+        return switch (@intFromEnum(self)) {
             0...31 => 32,
             32...63 => 64,
             64...79 => 128,
@@ -696,8 +696,8 @@ pub const Instruction = union(enum) {
         /// Encodes the condition into the instruction bit pattern.
         pub fn enc(cond: Condition) u4 {
             return switch (cond) {
-                .icond => |c| @enumToInt(c),
-                .fcond => |c| @enumToInt(c),
+                .icond => |c| @intFromEnum(c),
+                .fcond => |c| @intFromEnum(c),
             };
         }
 
@@ -786,7 +786,7 @@ pub const Instruction = union(enum) {
         const udisp_truncated = @truncate(u22, udisp >> 2);
         return Instruction{
             .format_2b = .{
-                .a = @boolToInt(annul),
+                .a = @intFromBool(annul),
                 .cond = cond.enc(),
                 .op2 = op2,
                 .disp22 = udisp_truncated,
@@ -803,16 +803,16 @@ pub const Instruction = union(enum) {
         // Discard the last two bits since those are implicitly zero.
         const udisp_truncated = @truncate(u19, udisp >> 2);
 
-        const ccr_cc1 = @truncate(u1, @enumToInt(ccr) >> 1);
-        const ccr_cc0 = @truncate(u1, @enumToInt(ccr));
+        const ccr_cc1 = @truncate(u1, @intFromEnum(ccr) >> 1);
+        const ccr_cc0 = @truncate(u1, @intFromEnum(ccr));
         return Instruction{
             .format_2c = .{
-                .a = @boolToInt(annul),
+                .a = @intFromBool(annul),
                 .cond = cond.enc(),
                 .op2 = op2,
                 .cc1 = ccr_cc1,
                 .cc0 = ccr_cc0,
-                .p = @boolToInt(pt),
+                .p = @intFromBool(pt),
                 .disp19 = udisp_truncated,
             },
         };
@@ -831,10 +831,10 @@ pub const Instruction = union(enum) {
         const udisp_lo = @truncate(u14, udisp_truncated & 0b0011_1111_1111_1111);
         return Instruction{
             .format_2d = .{
-                .a = @boolToInt(annul),
-                .rcond = @enumToInt(rcond),
+                .a = @intFromBool(annul),
+                .rcond = @intFromEnum(rcond),
                 .op2 = op2,
-                .p = @boolToInt(pt),
+                .p = @intFromBool(pt),
                 .rs1 = rs1.enc(),
                 .d16hi = udisp_hi,
                 .d16lo = udisp_lo,
@@ -891,7 +891,7 @@ pub const Instruction = union(enum) {
                 .rd = rd.enc(),
                 .op3 = op3,
                 .rs1 = rs1.enc(),
-                .rcond = @enumToInt(rcond),
+                .rcond = @intFromEnum(rcond),
                 .rs2 = rs2.enc(),
             },
         };
@@ -903,7 +903,7 @@ pub const Instruction = union(enum) {
                 .rd = rd.enc(),
                 .op3 = op3,
                 .rs1 = rs1.enc(),
-                .rcond = @enumToInt(rcond),
+                .rcond = @intFromEnum(rcond),
                 .simm10 = @bitCast(u10, imm),
             },
         };
@@ -934,7 +934,7 @@ pub const Instruction = union(enum) {
                 .rd = rd.enc(),
                 .op3 = op3,
                 .rs1 = rs1.enc(),
-                .imm_asi = @enumToInt(asi),
+                .imm_asi = @intFromEnum(asi),
                 .rs2 = rs2.enc(),
             },
         };
@@ -956,7 +956,7 @@ pub const Instruction = union(enum) {
                 .rd = rd.enc(),
                 .op3 = op3,
                 .rs1 = rs1.enc(),
-                .x = @enumToInt(sw),
+                .x = @intFromEnum(sw),
                 .rs2 = rs2.enc(),
             },
         };
@@ -995,8 +995,8 @@ pub const Instruction = union(enum) {
         };
     }
     fn format3o(op: u2, op3: u6, opf: u9, ccr: CCR, rs1: Register, rs2: Register) Instruction {
-        const ccr_cc1 = @truncate(u1, @enumToInt(ccr) >> 1);
-        const ccr_cc0 = @truncate(u1, @enumToInt(ccr));
+        const ccr_cc1 = @truncate(u1, @intFromEnum(ccr) >> 1);
+        const ccr_cc0 = @truncate(u1, @intFromEnum(ccr));
         return Instruction{
             .format_3o = .{
                 .op = op,
@@ -1051,8 +1051,8 @@ pub const Instruction = union(enum) {
     }
 
     fn format4a(op3: u6, ccr: CCR, rs1: Register, rs2: Register, rd: Register) Instruction {
-        const ccr_cc1 = @truncate(u1, @enumToInt(ccr) >> 1);
-        const ccr_cc0 = @truncate(u1, @enumToInt(ccr));
+        const ccr_cc1 = @truncate(u1, @intFromEnum(ccr) >> 1);
+        const ccr_cc0 = @truncate(u1, @intFromEnum(ccr));
         return Instruction{
             .format_4a = .{
                 .rd = rd.enc(),
@@ -1066,8 +1066,8 @@ pub const Instruction = union(enum) {
     }
 
     fn format4b(op3: u6, ccr: CCR, rs1: Register, imm: i11, rd: Register) Instruction {
-        const ccr_cc1 = @truncate(u1, @enumToInt(ccr) >> 1);
-        const ccr_cc0 = @truncate(u1, @enumToInt(ccr));
+        const ccr_cc1 = @truncate(u1, @intFromEnum(ccr) >> 1);
+        const ccr_cc0 = @truncate(u1, @intFromEnum(ccr));
         return Instruction{
             .format_4b = .{
                 .rd = rd.enc(),
@@ -1081,9 +1081,9 @@ pub const Instruction = union(enum) {
     }
 
     fn format4c(op3: u6, cond: Condition, ccr: CCR, rs2: Register, rd: Register) Instruction {
-        const ccr_cc2 = @truncate(u1, @enumToInt(ccr) >> 2);
-        const ccr_cc1 = @truncate(u1, @enumToInt(ccr) >> 1);
-        const ccr_cc0 = @truncate(u1, @enumToInt(ccr));
+        const ccr_cc2 = @truncate(u1, @intFromEnum(ccr) >> 2);
+        const ccr_cc1 = @truncate(u1, @intFromEnum(ccr) >> 1);
+        const ccr_cc0 = @truncate(u1, @intFromEnum(ccr));
         return Instruction{
             .format_4c = .{
                 .rd = rd.enc(),
@@ -1098,9 +1098,9 @@ pub const Instruction = union(enum) {
     }
 
     fn format4d(op3: u6, cond: Condition, ccr: CCR, imm: i11, rd: Register) Instruction {
-        const ccr_cc2 = @truncate(u1, @enumToInt(ccr) >> 2);
-        const ccr_cc1 = @truncate(u1, @enumToInt(ccr) >> 1);
-        const ccr_cc0 = @truncate(u1, @enumToInt(ccr));
+        const ccr_cc2 = @truncate(u1, @intFromEnum(ccr) >> 2);
+        const ccr_cc1 = @truncate(u1, @intFromEnum(ccr) >> 1);
+        const ccr_cc0 = @truncate(u1, @intFromEnum(ccr));
         return Instruction{
             .format_4d = .{
                 .rd = rd.enc(),
@@ -1115,8 +1115,8 @@ pub const Instruction = union(enum) {
     }
 
     fn format4e(op3: u6, ccr: CCR, rs1: Register, rd: Register, sw_trap: u7) Instruction {
-        const ccr_cc1 = @truncate(u1, @enumToInt(ccr) >> 1);
-        const ccr_cc0 = @truncate(u1, @enumToInt(ccr));
+        const ccr_cc1 = @truncate(u1, @intFromEnum(ccr) >> 1);
+        const ccr_cc0 = @truncate(u1, @intFromEnum(ccr));
         return Instruction{
             .format_4e = .{
                 .rd = rd.enc(),
@@ -1142,7 +1142,7 @@ pub const Instruction = union(enum) {
                 .rd = rd.enc(),
                 .op3 = op3,
                 .rs1 = rs1.enc(),
-                .rcond = @enumToInt(rcond),
+                .rcond = @intFromEnum(rcond),
                 .opf_low = opf_low,
                 .rs2 = rs2.enc(),
             },
@@ -1468,8 +1468,8 @@ pub const Instruction = union(enum) {
     pub fn trap(comptime s2: type, cond: ICondition, ccr: CCR, rs1: Register, rs2: s2) Instruction {
         // Tcc instructions abuse the rd field to store the conditionals.
         return switch (s2) {
-            Register => format4a(0b11_1010, ccr, rs1, rs2, @intToEnum(Register, @enumToInt(cond))),
-            u7 => format4e(0b11_1010, ccr, rs1, @intToEnum(Register, @enumToInt(cond)), rs2),
+            Register => format4a(0b11_1010, ccr, rs1, rs2, @enumFromInt(Register, @intFromEnum(cond))),
+            u7 => format4e(0b11_1010, ccr, rs1, @enumFromInt(Register, @intFromEnum(cond)), rs2),
             else => unreachable,
         };
     }
src/arch/sparc64/CodeGen.zig
@@ -1513,7 +1513,7 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {
     // that death now instead of later as this has an effect on
     // whether it needs to be spilled in the branches
     if (self.liveness.operandDies(inst, 0)) {
-        const op_int = @enumToInt(pl_op.operand);
+        const op_int = @intFromEnum(pl_op.operand);
         if (op_int >= Air.ref_start_index) {
             const op_index = @intCast(Air.Inst.Index, op_int - Air.ref_start_index);
             self.processDeath(op_index);
@@ -3568,7 +3568,7 @@ fn finishAir(self: *Self, inst: Air.Inst.Index, result: MCValue, operands: [Live
         const dies = @truncate(u1, tomb_bits) != 0;
         tomb_bits >>= 1;
         if (!dies) continue;
-        const op_int = @enumToInt(op);
+        const op_int = @intFromEnum(op);
         if (op_int < Air.ref_start_index) continue;
         const op_index = @intCast(Air.Inst.Index, op_int - Air.ref_start_index);
         self.processDeath(op_index);
src/arch/wasm/CodeGen.zig
@@ -116,11 +116,11 @@ const WValue = union(enum) {
     fn free(value: *WValue, gen: *CodeGen) void {
         if (value.* != .local) return;
         const local_value = value.local.value;
-        const reserved = gen.args.len + @boolToInt(gen.return_value != .none);
+        const reserved = gen.args.len + @intFromBool(gen.return_value != .none);
         if (local_value < reserved + 2) return; // reserved locals may never be re-used. Also accounts for 2 stack locals.
 
         const index = local_value - reserved;
-        const valtype = @intToEnum(wasm.Valtype, gen.locals.items[index]);
+        const valtype = @enumFromInt(wasm.Valtype, gen.locals.items[index]);
         switch (valtype) {
             .i32 => gen.free_locals_i32.append(gen.gpa, local_value) catch return, // It's ok to fail any of those, a new local can be allocated instead
             .i64 => gen.free_locals_i64.append(gen.gpa, local_value) catch return,
@@ -889,7 +889,7 @@ fn processDeath(func: *CodeGen, ref: Air.Inst.Ref) void {
     // TODO: Upon branch consolidation free any locals if needed.
     const value = func.currentBranch().values.getPtr(ref) orelse return;
     if (value.* != .local) return;
-    const reserved_indexes = func.args.len + @boolToInt(func.return_value != .none);
+    const reserved_indexes = func.args.len + @intFromBool(func.return_value != .none);
     if (value.local.value < reserved_indexes) {
         return; // function arguments can never be re-used
     }
@@ -911,7 +911,7 @@ fn addTag(func: *CodeGen, tag: Mir.Inst.Tag) error{OutOfMemory}!void {
 
 fn addExtended(func: *CodeGen, opcode: wasm.MiscOpcode) error{OutOfMemory}!void {
     const extra_index = @intCast(u32, func.mir_extra.items.len);
-    try func.mir_extra.append(func.gpa, @enumToInt(opcode));
+    try func.mir_extra.append(func.gpa, @intFromEnum(opcode));
     try func.addInst(.{ .tag = .misc_prefix, .data = .{ .payload = extra_index } });
 }
 
@@ -3218,7 +3218,7 @@ fn lowerConstant(func: *CodeGen, arg_val: Value, ty: Type) InnerError!WValue {
                 return WValue{ .imm32 = 0 };
             }
         } else {
-            return WValue{ .imm32 = @boolToInt(!val.isNull(mod)) };
+            return WValue{ .imm32 = @intFromBool(!val.isNull(mod)) };
         },
         .aggregate => switch (mod.intern_pool.indexToKey(ty.ip_index)) {
             .array_type => return func.fail("Wasm TODO: LowerConstant for {}", .{ty.fmt(mod)}),
@@ -3904,7 +3904,7 @@ fn airSwitchBr(func: *CodeGen, inst: Air.Inst.Index) InnerError!void {
         }
 
         // Account for default branch so always add '1'
-        const depth = @intCast(u32, highest - lowest + @boolToInt(has_else_body)) + 1;
+        const depth = @intCast(u32, highest - lowest + @intFromBool(has_else_body)) + 1;
         const jump_table: Mir.JumpTable = .{ .length = depth };
         const table_extra_index = try func.addExtra(jump_table);
         try func.addInst(.{ .tag = .br_table, .data = .{ .payload = table_extra_index } });
@@ -3939,7 +3939,7 @@ fn airSwitchBr(func: *CodeGen, inst: Air.Inst.Index) InnerError!void {
         break :blk target_ty.intInfo(mod).signedness;
     };
 
-    try func.branches.ensureUnusedCapacity(func.gpa, case_list.items.len + @boolToInt(has_else_body));
+    try func.branches.ensureUnusedCapacity(func.gpa, case_list.items.len + @intFromBool(has_else_body));
     for (case_list.items, 0..) |case, index| {
         // when sparse, we use if/else-chain, so emit conditional checks
         if (is_sparse) {
@@ -4821,7 +4821,7 @@ fn airIntFromFloat(func: *CodeGen, inst: Air.Inst.Index) InnerError!void {
     const op_ty = func.typeOf(ty_op.operand);
 
     if (op_ty.abiSize(mod) > 8) {
-        return func.fail("TODO: floatToInt for integers/floats with bitsize larger than 64 bits", .{});
+        return func.fail("TODO: intFromFloat for integers/floats with bitsize larger than 64 bits", .{});
     }
 
     try func.emitWValue(operand);
@@ -4846,7 +4846,7 @@ fn airFloatFromInt(func: *CodeGen, inst: Air.Inst.Index) InnerError!void {
     const op_ty = func.typeOf(ty_op.operand);
 
     if (op_ty.abiSize(mod) > 8) {
-        return func.fail("TODO: intToFloat for integers/floats with bitsize larger than 64 bits", .{});
+        return func.fail("TODO: floatFromInt for integers/floats with bitsize larger than 64 bits", .{});
     }
 
     try func.emitWValue(operand);
src/arch/wasm/Emit.zig
@@ -269,12 +269,12 @@ fn emitLocals(emit: *Emit) !void {
 }
 
 fn emitTag(emit: *Emit, tag: Mir.Inst.Tag) !void {
-    try emit.code.append(@enumToInt(tag));
+    try emit.code.append(@intFromEnum(tag));
 }
 
 fn emitBlock(emit: *Emit, tag: Mir.Inst.Tag, inst: Mir.Inst.Index) !void {
     const block_type = emit.mir.instructions.items(.data)[inst].block_type;
-    try emit.code.append(@enumToInt(tag));
+    try emit.code.append(@intFromEnum(tag));
     try emit.code.append(block_type);
 }
 
@@ -293,13 +293,13 @@ fn emitBrTable(emit: *Emit, inst: Mir.Inst.Index) !void {
 
 fn emitLabel(emit: *Emit, tag: Mir.Inst.Tag, inst: Mir.Inst.Index) !void {
     const label = emit.mir.instructions.items(.data)[inst].label;
-    try emit.code.append(@enumToInt(tag));
+    try emit.code.append(@intFromEnum(tag));
     try leb128.writeULEB128(emit.code.writer(), label);
 }
 
 fn emitGlobal(emit: *Emit, tag: Mir.Inst.Tag, inst: Mir.Inst.Index) !void {
     const label = emit.mir.instructions.items(.data)[inst].label;
-    try emit.code.append(@enumToInt(tag));
+    try emit.code.append(@intFromEnum(tag));
     var buf: [5]u8 = undefined;
     leb128.writeUnsignedFixed(5, &buf, label);
     const global_offset = emit.offset();
@@ -343,7 +343,7 @@ fn emitFloat64(emit: *Emit, inst: Mir.Inst.Index) !void {
 fn emitMemArg(emit: *Emit, tag: Mir.Inst.Tag, inst: Mir.Inst.Index) !void {
     const extra_index = emit.mir.instructions.items(.data)[inst].payload;
     const mem_arg = emit.mir.extraData(Mir.MemArg, extra_index).data;
-    try emit.code.append(@enumToInt(tag));
+    try emit.code.append(@intFromEnum(tag));
     try encodeMemArg(mem_arg, emit.code.writer());
 }
 
@@ -436,7 +436,7 @@ fn emitExtended(emit: *Emit, inst: Mir.Inst.Index) !void {
     const writer = emit.code.writer();
     try emit.code.append(std.wasm.opcode(.misc_prefix));
     try leb128.writeULEB128(writer, opcode);
-    switch (@intToEnum(std.wasm.MiscOpcode, opcode)) {
+    switch (@enumFromInt(std.wasm.MiscOpcode, opcode)) {
         // bulk-memory opcodes
         .data_drop => {
             const segment = emit.mir.extra[extra_index + 1];
@@ -475,7 +475,7 @@ fn emitSimd(emit: *Emit, inst: Mir.Inst.Index) !void {
     const writer = emit.code.writer();
     try emit.code.append(std.wasm.opcode(.simd_prefix));
     try leb128.writeULEB128(writer, opcode);
-    switch (@intToEnum(std.wasm.SimdOpcode, opcode)) {
+    switch (@enumFromInt(std.wasm.SimdOpcode, opcode)) {
         .v128_store,
         .v128_load,
         .v128_load8_splat,
@@ -526,7 +526,7 @@ fn emitAtomic(emit: *Emit, inst: Mir.Inst.Index) !void {
     const writer = emit.code.writer();
     try emit.code.append(std.wasm.opcode(.atomics_prefix));
     try leb128.writeULEB128(writer, opcode);
-    switch (@intToEnum(std.wasm.AtomicsOpcode, opcode)) {
+    switch (@enumFromInt(std.wasm.AtomicsOpcode, opcode)) {
         .i32_atomic_load,
         .i64_atomic_load,
         .i32_atomic_load8_u,
src/arch/wasm/Mir.zig
@@ -544,12 +544,12 @@ pub const Inst = struct {
 
         /// From a given wasm opcode, returns a MIR tag.
         pub fn fromOpcode(opcode: std.wasm.Opcode) Tag {
-            return @intToEnum(Tag, @enumToInt(opcode)); // Given `Opcode` is not present as a tag for MIR yet
+            return @enumFromInt(Tag, @intFromEnum(opcode)); // Given `Opcode` is not present as a tag for MIR yet
         }
 
         /// Returns a wasm opcode from a given MIR tag.
         pub fn toOpcode(self: Tag) std.wasm.Opcode {
-            return @intToEnum(std.wasm.Opcode, @enumToInt(self));
+            return @enumFromInt(std.wasm.Opcode, @intFromEnum(self));
         }
     };
 
src/arch/x86/bits.zig
@@ -14,7 +14,7 @@ pub const Register = enum(u8) {
 
     /// Returns the bit-width of the register.
     pub fn size(self: Register) u7 {
-        return switch (@enumToInt(self)) {
+        return switch (@intFromEnum(self)) {
             0...7 => 32,
             8...15 => 16,
             16...23 => 8,
@@ -26,22 +26,22 @@ pub const Register = enum(u8) {
     /// x86 has. It is embedded in some instructions, such as the `B8 +rd` move
     /// instruction, and is used in the R/M byte.
     pub fn id(self: Register) u3 {
-        return @truncate(u3, @enumToInt(self));
+        return @truncate(u3, @intFromEnum(self));
     }
 
     /// Convert from any register to its 32 bit alias.
     pub fn to32(self: Register) Register {
-        return @intToEnum(Register, @as(u8, self.id()));
+        return @enumFromInt(Register, @as(u8, self.id()));
     }
 
     /// Convert from any register to its 16 bit alias.
     pub fn to16(self: Register) Register {
-        return @intToEnum(Register, @as(u8, self.id()) + 8);
+        return @enumFromInt(Register, @as(u8, self.id()) + 8);
     }
 
     /// Convert from any register to its 8 bit alias.
     pub fn to8(self: Register) Register {
-        return @intToEnum(Register, @as(u8, self.id()) + 16);
+        return @enumFromInt(Register, @as(u8, self.id()) + 16);
     }
 
     pub fn dwarfLocOp(reg: Register) u8 {
src/arch/x86_64/bits.zig
@@ -193,20 +193,20 @@ pub const Register = enum(u7) {
     };
 
     pub fn class(reg: Register) Class {
-        return switch (@enumToInt(reg)) {
+        return switch (@intFromEnum(reg)) {
             // zig fmt: off
-            @enumToInt(Register.rax)  ... @enumToInt(Register.r15)   => .general_purpose,
-            @enumToInt(Register.eax)  ... @enumToInt(Register.r15d)  => .general_purpose,
-            @enumToInt(Register.ax)   ... @enumToInt(Register.r15w)  => .general_purpose,
-            @enumToInt(Register.al)   ... @enumToInt(Register.r15b)  => .general_purpose,
-            @enumToInt(Register.ah)   ... @enumToInt(Register.bh)    => .general_purpose,
+            @intFromEnum(Register.rax)  ... @intFromEnum(Register.r15)   => .general_purpose,
+            @intFromEnum(Register.eax)  ... @intFromEnum(Register.r15d)  => .general_purpose,
+            @intFromEnum(Register.ax)   ... @intFromEnum(Register.r15w)  => .general_purpose,
+            @intFromEnum(Register.al)   ... @intFromEnum(Register.r15b)  => .general_purpose,
+            @intFromEnum(Register.ah)   ... @intFromEnum(Register.bh)    => .general_purpose,
 
-            @enumToInt(Register.ymm0) ... @enumToInt(Register.ymm15) => .sse,
-            @enumToInt(Register.xmm0) ... @enumToInt(Register.xmm15) => .sse,
-            @enumToInt(Register.mm0)  ... @enumToInt(Register.mm7)   => .mmx,
-            @enumToInt(Register.st0)  ... @enumToInt(Register.st7)   => .x87,
+            @intFromEnum(Register.ymm0) ... @intFromEnum(Register.ymm15) => .sse,
+            @intFromEnum(Register.xmm0) ... @intFromEnum(Register.xmm15) => .sse,
+            @intFromEnum(Register.mm0)  ... @intFromEnum(Register.mm7)   => .mmx,
+            @intFromEnum(Register.st0)  ... @intFromEnum(Register.st7)   => .x87,
 
-            @enumToInt(Register.es)   ... @enumToInt(Register.gs)    => .segment,
+            @intFromEnum(Register.es)   ... @intFromEnum(Register.gs)    => .segment,
 
             else => unreachable,
             // zig fmt: on
@@ -214,42 +214,42 @@ pub const Register = enum(u7) {
     }
 
     pub fn id(reg: Register) u6 {
-        const base = switch (@enumToInt(reg)) {
+        const base = switch (@intFromEnum(reg)) {
             // zig fmt: off
-            @enumToInt(Register.rax)  ... @enumToInt(Register.r15)   => @enumToInt(Register.rax),
-            @enumToInt(Register.eax)  ... @enumToInt(Register.r15d)  => @enumToInt(Register.eax),
-            @enumToInt(Register.ax)   ... @enumToInt(Register.r15w)  => @enumToInt(Register.ax),
-            @enumToInt(Register.al)   ... @enumToInt(Register.r15b)  => @enumToInt(Register.al),
-            @enumToInt(Register.ah)   ... @enumToInt(Register.bh)    => @enumToInt(Register.ah) - 4,
+            @intFromEnum(Register.rax)  ... @intFromEnum(Register.r15)   => @intFromEnum(Register.rax),
+            @intFromEnum(Register.eax)  ... @intFromEnum(Register.r15d)  => @intFromEnum(Register.eax),
+            @intFromEnum(Register.ax)   ... @intFromEnum(Register.r15w)  => @intFromEnum(Register.ax),
+            @intFromEnum(Register.al)   ... @intFromEnum(Register.r15b)  => @intFromEnum(Register.al),
+            @intFromEnum(Register.ah)   ... @intFromEnum(Register.bh)    => @intFromEnum(Register.ah) - 4,
 
-            @enumToInt(Register.ymm0) ... @enumToInt(Register.ymm15) => @enumToInt(Register.ymm0) - 16,
-            @enumToInt(Register.xmm0) ... @enumToInt(Register.xmm15) => @enumToInt(Register.xmm0) - 16,
-            @enumToInt(Register.mm0)  ... @enumToInt(Register.mm7)   => @enumToInt(Register.mm0) - 32,
-            @enumToInt(Register.st0)  ... @enumToInt(Register.st7)   => @enumToInt(Register.st0) - 40,
+            @intFromEnum(Register.ymm0) ... @intFromEnum(Register.ymm15) => @intFromEnum(Register.ymm0) - 16,
+            @intFromEnum(Register.xmm0) ... @intFromEnum(Register.xmm15) => @intFromEnum(Register.xmm0) - 16,
+            @intFromEnum(Register.mm0)  ... @intFromEnum(Register.mm7)   => @intFromEnum(Register.mm0) - 32,
+            @intFromEnum(Register.st0)  ... @intFromEnum(Register.st7)   => @intFromEnum(Register.st0) - 40,
 
-            @enumToInt(Register.es)   ... @enumToInt(Register.gs)    => @enumToInt(Register.es) - 48,
+            @intFromEnum(Register.es)   ... @intFromEnum(Register.gs)    => @intFromEnum(Register.es) - 48,
 
             else => unreachable,
             // zig fmt: on
         };
-        return @intCast(u6, @enumToInt(reg) - base);
+        return @intCast(u6, @intFromEnum(reg) - base);
     }
 
     pub fn bitSize(reg: Register) u64 {
-        return switch (@enumToInt(reg)) {
+        return switch (@intFromEnum(reg)) {
             // zig fmt: off
-            @enumToInt(Register.rax)  ... @enumToInt(Register.r15)   => 64,
-            @enumToInt(Register.eax)  ... @enumToInt(Register.r15d)  => 32,
-            @enumToInt(Register.ax)   ... @enumToInt(Register.r15w)  => 16,
-            @enumToInt(Register.al)   ... @enumToInt(Register.r15b)  => 8,
-            @enumToInt(Register.ah)   ... @enumToInt(Register.bh)    => 8,
+            @intFromEnum(Register.rax)  ... @intFromEnum(Register.r15)   => 64,
+            @intFromEnum(Register.eax)  ... @intFromEnum(Register.r15d)  => 32,
+            @intFromEnum(Register.ax)   ... @intFromEnum(Register.r15w)  => 16,
+            @intFromEnum(Register.al)   ... @intFromEnum(Register.r15b)  => 8,
+            @intFromEnum(Register.ah)   ... @intFromEnum(Register.bh)    => 8,
 
-            @enumToInt(Register.ymm0) ... @enumToInt(Register.ymm15) => 256,
-            @enumToInt(Register.xmm0) ... @enumToInt(Register.xmm15) => 128,
-            @enumToInt(Register.mm0)  ... @enumToInt(Register.mm7)   => 64,
-            @enumToInt(Register.st0)  ... @enumToInt(Register.st7)   => 80,
+            @intFromEnum(Register.ymm0) ... @intFromEnum(Register.ymm15) => 256,
+            @intFromEnum(Register.xmm0) ... @intFromEnum(Register.xmm15) => 128,
+            @intFromEnum(Register.mm0)  ... @intFromEnum(Register.mm7)   => 64,
+            @intFromEnum(Register.st0)  ... @intFromEnum(Register.st7)   => 80,
 
-            @enumToInt(Register.es)   ... @enumToInt(Register.gs)    => 16,
+            @intFromEnum(Register.es)   ... @intFromEnum(Register.gs)    => 16,
 
             else => unreachable,
             // zig fmt: on
@@ -257,15 +257,15 @@ pub const Register = enum(u7) {
     }
 
     pub fn isExtended(reg: Register) bool {
-        return switch (@enumToInt(reg)) {
+        return switch (@intFromEnum(reg)) {
             // zig fmt: off
-            @enumToInt(Register.r8)  ... @enumToInt(Register.r15)    => true,
-            @enumToInt(Register.r8d) ... @enumToInt(Register.r15d)   => true,
-            @enumToInt(Register.r8w) ... @enumToInt(Register.r15w)   => true,
-            @enumToInt(Register.r8b) ... @enumToInt(Register.r15b)   => true,
+            @intFromEnum(Register.r8)  ... @intFromEnum(Register.r15)    => true,
+            @intFromEnum(Register.r8d) ... @intFromEnum(Register.r15d)   => true,
+            @intFromEnum(Register.r8w) ... @intFromEnum(Register.r15w)   => true,
+            @intFromEnum(Register.r8b) ... @intFromEnum(Register.r15b)   => true,
 
-            @enumToInt(Register.ymm8) ... @enumToInt(Register.ymm15) => true,
-            @enumToInt(Register.xmm8) ... @enumToInt(Register.xmm15) => true,
+            @intFromEnum(Register.ymm8) ... @intFromEnum(Register.ymm15) => true,
+            @intFromEnum(Register.xmm8) ... @intFromEnum(Register.xmm15) => true,
 
             else => false,
             // zig fmt: on
@@ -273,25 +273,25 @@ pub const Register = enum(u7) {
     }
 
     pub fn enc(reg: Register) u4 {
-        const base = switch (@enumToInt(reg)) {
+        const base = switch (@intFromEnum(reg)) {
             // zig fmt: off
-            @enumToInt(Register.rax)  ... @enumToInt(Register.r15)   => @enumToInt(Register.rax),
-            @enumToInt(Register.eax)  ... @enumToInt(Register.r15d)  => @enumToInt(Register.eax),
-            @enumToInt(Register.ax)   ... @enumToInt(Register.r15w)  => @enumToInt(Register.ax),
-            @enumToInt(Register.al)   ... @enumToInt(Register.r15b)  => @enumToInt(Register.al),
-            @enumToInt(Register.ah)   ... @enumToInt(Register.bh)    => @enumToInt(Register.ah) - 4,
+            @intFromEnum(Register.rax)  ... @intFromEnum(Register.r15)   => @intFromEnum(Register.rax),
+            @intFromEnum(Register.eax)  ... @intFromEnum(Register.r15d)  => @intFromEnum(Register.eax),
+            @intFromEnum(Register.ax)   ... @intFromEnum(Register.r15w)  => @intFromEnum(Register.ax),
+            @intFromEnum(Register.al)   ... @intFromEnum(Register.r15b)  => @intFromEnum(Register.al),
+            @intFromEnum(Register.ah)   ... @intFromEnum(Register.bh)    => @intFromEnum(Register.ah) - 4,
 
-            @enumToInt(Register.ymm0) ... @enumToInt(Register.ymm15) => @enumToInt(Register.ymm0),
-            @enumToInt(Register.xmm0) ... @enumToInt(Register.xmm15) => @enumToInt(Register.xmm0),
-            @enumToInt(Register.mm0)  ... @enumToInt(Register.mm7)   => @enumToInt(Register.mm0),
-            @enumToInt(Register.st0)  ... @enumToInt(Register.st7)   => @enumToInt(Register.st0),
+            @intFromEnum(Register.ymm0) ... @intFromEnum(Register.ymm15) => @intFromEnum(Register.ymm0),
+            @intFromEnum(Register.xmm0) ... @intFromEnum(Register.xmm15) => @intFromEnum(Register.xmm0),
+            @intFromEnum(Register.mm0)  ... @intFromEnum(Register.mm7)   => @intFromEnum(Register.mm0),
+            @intFromEnum(Register.st0)  ... @intFromEnum(Register.st7)   => @intFromEnum(Register.st0),
 
-            @enumToInt(Register.es)   ... @enumToInt(Register.gs)    => @enumToInt(Register.es),
+            @intFromEnum(Register.es)   ... @intFromEnum(Register.gs)    => @intFromEnum(Register.es),
 
             else => unreachable,
             // zig fmt: on
         };
-        return @truncate(u4, @enumToInt(reg) - base);
+        return @truncate(u4, @intFromEnum(reg) - base);
     }
 
     pub fn lowEnc(reg: Register) u3 {
@@ -312,49 +312,49 @@ pub const Register = enum(u7) {
 
     fn gpBase(reg: Register) u7 {
         assert(reg.class() == .general_purpose);
-        return switch (@enumToInt(reg)) {
+        return switch (@intFromEnum(reg)) {
             // zig fmt: off
-            @enumToInt(Register.rax)  ... @enumToInt(Register.r15)   => @enumToInt(Register.rax),
-            @enumToInt(Register.eax)  ... @enumToInt(Register.r15d)  => @enumToInt(Register.eax),
-            @enumToInt(Register.ax)   ... @enumToInt(Register.r15w)  => @enumToInt(Register.ax),
-            @enumToInt(Register.al)   ... @enumToInt(Register.r15b)  => @enumToInt(Register.al),
-            @enumToInt(Register.ah)   ... @enumToInt(Register.bh)    => @enumToInt(Register.ah) - 4,
+            @intFromEnum(Register.rax)  ... @intFromEnum(Register.r15)   => @intFromEnum(Register.rax),
+            @intFromEnum(Register.eax)  ... @intFromEnum(Register.r15d)  => @intFromEnum(Register.eax),
+            @intFromEnum(Register.ax)   ... @intFromEnum(Register.r15w)  => @intFromEnum(Register.ax),
+            @intFromEnum(Register.al)   ... @intFromEnum(Register.r15b)  => @intFromEnum(Register.al),
+            @intFromEnum(Register.ah)   ... @intFromEnum(Register.bh)    => @intFromEnum(Register.ah) - 4,
             else => unreachable,
             // zig fmt: on
         };
     }
 
     pub fn to64(reg: Register) Register {
-        return @intToEnum(Register, @enumToInt(reg) - reg.gpBase() + @enumToInt(Register.rax));
+        return @enumFromInt(Register, @intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.rax));
     }
 
     pub fn to32(reg: Register) Register {
-        return @intToEnum(Register, @enumToInt(reg) - reg.gpBase() + @enumToInt(Register.eax));
+        return @enumFromInt(Register, @intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.eax));
     }
 
     pub fn to16(reg: Register) Register {
-        return @intToEnum(Register, @enumToInt(reg) - reg.gpBase() + @enumToInt(Register.ax));
+        return @enumFromInt(Register, @intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.ax));
     }
 
     pub fn to8(reg: Register) Register {
-        return @intToEnum(Register, @enumToInt(reg) - reg.gpBase() + @enumToInt(Register.al));
+        return @enumFromInt(Register, @intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.al));
     }
 
     fn sseBase(reg: Register) u7 {
         assert(reg.class() == .sse);
-        return switch (@enumToInt(reg)) {
-            @enumToInt(Register.ymm0)...@enumToInt(Register.ymm15) => @enumToInt(Register.ymm0),
-            @enumToInt(Register.xmm0)...@enumToInt(Register.xmm15) => @enumToInt(Register.xmm0),
+        return switch (@intFromEnum(reg)) {
+            @intFromEnum(Register.ymm0)...@intFromEnum(Register.ymm15) => @intFromEnum(Register.ymm0),
+            @intFromEnum(Register.xmm0)...@intFromEnum(Register.xmm15) => @intFromEnum(Register.xmm0),
             else => unreachable,
         };
     }
 
     pub fn to256(reg: Register) Register {
-        return @intToEnum(Register, @enumToInt(reg) - reg.sseBase() + @enumToInt(Register.ymm0));
+        return @enumFromInt(Register, @intFromEnum(reg) - reg.sseBase() + @intFromEnum(Register.ymm0));
     }
 
     pub fn to128(reg: Register) Register {
-        return @intToEnum(Register, @enumToInt(reg) - reg.sseBase() + @enumToInt(Register.xmm0));
+        return @enumFromInt(Register, @intFromEnum(reg) - reg.sseBase() + @intFromEnum(Register.xmm0));
     }
 
     /// DWARF register encoding
@@ -421,7 +421,7 @@ pub const FrameIndex = enum(u32) {
     pub const named_count = @typeInfo(FrameIndex).Enum.fields.len;
 
     pub fn isNamed(fi: FrameIndex) bool {
-        return @enumToInt(fi) < named_count;
+        return @intFromEnum(fi) < named_count;
     }
 
     pub fn format(
@@ -436,7 +436,7 @@ pub const FrameIndex = enum(u32) {
             try writer.writeAll(@tagName(fi));
         } else {
             try writer.writeByte('(');
-            try std.fmt.formatType(@enumToInt(fi), fmt, options, writer, 0);
+            try std.fmt.formatType(@intFromEnum(fi), fmt, options, writer, 0);
             try writer.writeByte(')');
         }
     }
src/arch/x86_64/CodeGen.zig
@@ -690,7 +690,7 @@ pub fn generate(
 
     try function.frame_allocs.resize(gpa, FrameIndex.named_count);
     function.frame_allocs.set(
-        @enumToInt(FrameIndex.stack_frame),
+        @intFromEnum(FrameIndex.stack_frame),
         FrameAlloc.init(.{
             .size = 0,
             .alignment = if (mod.align_stack_fns.get(module_fn_index)) |set_align_stack|
@@ -700,7 +700,7 @@ pub fn generate(
         }),
     );
     function.frame_allocs.set(
-        @enumToInt(FrameIndex.call_frame),
+        @intFromEnum(FrameIndex.call_frame),
         FrameAlloc.init(.{ .size = 0, .alignment = 1 }),
     );
 
@@ -721,16 +721,16 @@ pub fn generate(
 
     function.args = call_info.args;
     function.ret_mcv = call_info.return_value;
-    function.frame_allocs.set(@enumToInt(FrameIndex.ret_addr), FrameAlloc.init(.{
+    function.frame_allocs.set(@intFromEnum(FrameIndex.ret_addr), FrameAlloc.init(.{
         .size = Type.usize.abiSize(mod),
         .alignment = @min(Type.usize.abiAlignment(mod), call_info.stack_align),
     }));
-    function.frame_allocs.set(@enumToInt(FrameIndex.base_ptr), FrameAlloc.init(.{
+    function.frame_allocs.set(@intFromEnum(FrameIndex.base_ptr), FrameAlloc.init(.{
         .size = Type.usize.abiSize(mod),
         .alignment = @min(Type.usize.abiAlignment(mod) * 2, call_info.stack_align),
     }));
     function.frame_allocs.set(
-        @enumToInt(FrameIndex.args_frame),
+        @intFromEnum(FrameIndex.args_frame),
         FrameAlloc.init(.{ .size = call_info.stack_byte_count, .alignment = call_info.stack_align }),
     );
 
@@ -2147,7 +2147,7 @@ fn setFrameLoc(
     offset: *i32,
     comptime aligned: bool,
 ) void {
-    const frame_i = @enumToInt(frame_index);
+    const frame_i = @intFromEnum(frame_index);
     if (aligned) {
         const alignment = @as(i32, 1) << self.frame_allocs.items(.abi_align)[frame_i];
         offset.* = mem.alignForward(i32, offset.*, alignment);
@@ -2167,21 +2167,21 @@ fn computeFrameLayout(self: *Self) !FrameLayout {
     const frame_offset = self.frame_locs.items(.disp);
 
     for (stack_frame_order, FrameIndex.named_count..) |*frame_order, frame_index|
-        frame_order.* = @intToEnum(FrameIndex, frame_index);
+        frame_order.* = @enumFromInt(FrameIndex, frame_index);
     {
         const SortContext = struct {
             frame_align: @TypeOf(frame_align),
             pub fn lessThan(context: @This(), lhs: FrameIndex, rhs: FrameIndex) bool {
-                return context.frame_align[@enumToInt(lhs)] > context.frame_align[@enumToInt(rhs)];
+                return context.frame_align[@intFromEnum(lhs)] > context.frame_align[@intFromEnum(rhs)];
             }
         };
         const sort_context = SortContext{ .frame_align = frame_align };
         mem.sort(FrameIndex, stack_frame_order, sort_context, SortContext.lessThan);
     }
 
-    const call_frame_align = frame_align[@enumToInt(FrameIndex.call_frame)];
-    const stack_frame_align = frame_align[@enumToInt(FrameIndex.stack_frame)];
-    const args_frame_align = frame_align[@enumToInt(FrameIndex.args_frame)];
+    const call_frame_align = frame_align[@intFromEnum(FrameIndex.call_frame)];
+    const stack_frame_align = frame_align[@intFromEnum(FrameIndex.stack_frame)];
+    const args_frame_align = frame_align[@intFromEnum(FrameIndex.args_frame)];
     const needed_align = @max(call_frame_align, stack_frame_align);
     const need_align_stack = needed_align > args_frame_align;
 
@@ -2200,7 +2200,7 @@ fn computeFrameLayout(self: *Self) !FrameLayout {
     self.setFrameLoc(.ret_addr, .rbp, &rbp_offset, false);
     self.setFrameLoc(.args_frame, .rbp, &rbp_offset, false);
     const stack_frame_align_offset =
-        if (need_align_stack) 0 else frame_offset[@enumToInt(FrameIndex.args_frame)];
+        if (need_align_stack) 0 else frame_offset[@intFromEnum(FrameIndex.args_frame)];
 
     var rsp_offset: i32 = 0;
     self.setFrameLoc(.call_frame, .rsp, &rsp_offset, true);
@@ -2209,23 +2209,23 @@ fn computeFrameLayout(self: *Self) !FrameLayout {
     rsp_offset += stack_frame_align_offset;
     rsp_offset = mem.alignForward(i32, rsp_offset, @as(i32, 1) << needed_align);
     rsp_offset -= stack_frame_align_offset;
-    frame_size[@enumToInt(FrameIndex.call_frame)] =
-        @intCast(u31, rsp_offset - frame_offset[@enumToInt(FrameIndex.stack_frame)]);
+    frame_size[@intFromEnum(FrameIndex.call_frame)] =
+        @intCast(u31, rsp_offset - frame_offset[@intFromEnum(FrameIndex.stack_frame)]);
 
     return .{
         .stack_mask = @as(u32, math.maxInt(u32)) << (if (need_align_stack) needed_align else 0),
-        .stack_adjust = @intCast(u32, rsp_offset - frame_offset[@enumToInt(FrameIndex.call_frame)]),
+        .stack_adjust = @intCast(u32, rsp_offset - frame_offset[@intFromEnum(FrameIndex.call_frame)]),
         .save_reg_list = save_reg_list,
     };
 }
 
 fn getFrameAddrAlignment(self: *Self, frame_addr: FrameAddr) u32 {
-    const alloc_align = @as(u32, 1) << self.frame_allocs.get(@enumToInt(frame_addr.index)).abi_align;
+    const alloc_align = @as(u32, 1) << self.frame_allocs.get(@intFromEnum(frame_addr.index)).abi_align;
     return @min(alloc_align, @bitCast(u32, frame_addr.off) & (alloc_align - 1));
 }
 
 fn getFrameAddrSize(self: *Self, frame_addr: FrameAddr) u32 {
-    return self.frame_allocs.get(@enumToInt(frame_addr.index)).abi_size - @intCast(u31, frame_addr.off);
+    return self.frame_allocs.get(@intFromEnum(frame_addr.index)).abi_size - @intCast(u31, frame_addr.off);
 }
 
 fn allocFrameIndex(self: *Self, alloc: FrameAlloc) !FrameIndex {
@@ -2233,19 +2233,19 @@ fn allocFrameIndex(self: *Self, alloc: FrameAlloc) !FrameIndex {
     const frame_size = frame_allocs_slice.items(.abi_size);
     const frame_align = frame_allocs_slice.items(.abi_align);
 
-    const stack_frame_align = &frame_align[@enumToInt(FrameIndex.stack_frame)];
+    const stack_frame_align = &frame_align[@intFromEnum(FrameIndex.stack_frame)];
     stack_frame_align.* = @max(stack_frame_align.*, alloc.abi_align);
 
     for (self.free_frame_indices.keys(), 0..) |frame_index, free_i| {
-        const abi_size = frame_size[@enumToInt(frame_index)];
+        const abi_size = frame_size[@intFromEnum(frame_index)];
         if (abi_size != alloc.abi_size) continue;
-        const abi_align = &frame_align[@enumToInt(frame_index)];
+        const abi_align = &frame_align[@intFromEnum(frame_index)];
         abi_align.* = @max(abi_align.*, alloc.abi_align);
 
         _ = self.free_frame_indices.swapRemoveAt(free_i);
         return frame_index;
     }
-    const frame_index = @intToEnum(FrameIndex, self.frame_allocs.len);
+    const frame_index = @enumFromInt(FrameIndex, self.frame_allocs.len);
     try self.frame_allocs.append(self.gpa, alloc);
     return frame_index;
 }
@@ -2876,7 +2876,7 @@ fn activeIntBits(self: *Self, dst_air: Air.Inst.Ref) u16 {
                 var space: Value.BigIntSpace = undefined;
                 const src_int = src_val.toBigInt(&space, mod);
                 return @intCast(u16, src_int.bitCountTwosComp()) +
-                    @boolToInt(src_int.positive and dst_info.signedness == .signed);
+                    @intFromBool(src_int.positive and dst_info.signedness == .signed);
             },
             .intcast => {
                 const src_ty = self.typeOf(air_data[inst].ty_op.operand);
@@ -8034,10 +8034,10 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier
             FrameAlloc.init(.{ .size = info.stack_byte_count, .alignment = info.stack_align });
         const frame_allocs_slice = self.frame_allocs.slice();
         const stack_frame_size =
-            &frame_allocs_slice.items(.abi_size)[@enumToInt(FrameIndex.call_frame)];
+            &frame_allocs_slice.items(.abi_size)[@intFromEnum(FrameIndex.call_frame)];
         stack_frame_size.* = @max(stack_frame_size.*, needed_call_frame.abi_size);
         const stack_frame_align =
-            &frame_allocs_slice.items(.abi_align)[@enumToInt(FrameIndex.call_frame)];
+            &frame_allocs_slice.items(.abi_align)[@intFromEnum(FrameIndex.call_frame)];
         stack_frame_align.* = @max(stack_frame_align.*, needed_call_frame.abi_align);
     }
 
@@ -10915,10 +10915,10 @@ fn airTagName(self: *Self, inst: Air.Inst.Index) !void {
         });
         const frame_allocs_slice = self.frame_allocs.slice();
         const stack_frame_size =
-            &frame_allocs_slice.items(.abi_size)[@enumToInt(FrameIndex.call_frame)];
+            &frame_allocs_slice.items(.abi_size)[@intFromEnum(FrameIndex.call_frame)];
         stack_frame_size.* = @max(stack_frame_size.*, needed_call_frame.abi_size);
         const stack_frame_align =
-            &frame_allocs_slice.items(.abi_align)[@enumToInt(FrameIndex.call_frame)];
+            &frame_allocs_slice.items(.abi_align)[@intFromEnum(FrameIndex.call_frame)];
         stack_frame_align.* = @max(stack_frame_align.*, needed_call_frame.abi_align);
     }
 
@@ -11413,7 +11413,7 @@ fn airUnionInit(self: *Self, inst: Air.Inst.Index) !void {
         const tag_ty = union_obj.tag_ty;
         const field_index = tag_ty.enumFieldIndex(field_name, mod).?;
         const tag_val = try mod.enumValueFieldIndex(tag_ty, field_index);
-        const tag_int_val = try tag_val.enumToInt(tag_ty, mod);
+        const tag_int_val = try tag_val.intFromEnum(tag_ty, mod);
         const tag_int = tag_int_val.toUnsignedInt(mod);
         const tag_off = if (layout.tag_align < layout.payload_align)
             @intCast(i32, layout.payload_size)
@@ -11637,7 +11637,7 @@ fn limitImmediateType(self: *Self, operand: Air.Inst.Ref, comptime T: type) !MCV
     switch (mcv) {
         .immediate => |imm| {
             // This immediate is unsigned.
-            const U = std.meta.Int(.unsigned, ti.bits - @boolToInt(ti.signedness == .signed));
+            const U = std.meta.Int(.unsigned, ti.bits - @intFromBool(ti.signedness == .signed));
             if (imm >= math.maxInt(U)) {
                 return MCValue{ .register = try self.copyToTmpRegister(Type.usize, mcv) };
             }
@@ -11782,17 +11782,17 @@ fn resolveCallingConventionValues(
                     },
                     .float, .sse => switch (self.target.os.tag) {
                         .windows => if (param_reg_i < 4) {
-                            arg.* = .{ .register = @intToEnum(
+                            arg.* = .{ .register = @enumFromInt(
                                 Register,
-                                @enumToInt(Register.xmm0) + param_reg_i,
+                                @intFromEnum(Register.xmm0) + param_reg_i,
                             ) };
                             param_reg_i += 1;
                             continue;
                         },
                         else => if (param_sse_reg_i < 8) {
-                            arg.* = .{ .register = @intToEnum(
+                            arg.* = .{ .register = @enumFromInt(
                                 Register,
-                                @enumToInt(Register.xmm0) + param_sse_reg_i,
+                                @intFromEnum(Register.xmm0) + param_sse_reg_i,
                             ) };
                             param_sse_reg_i += 1;
                             continue;
src/arch/x86_64/encoder.zig
@@ -267,7 +267,7 @@ pub const Instruction = struct {
 
     fn encodeOpcode(inst: Instruction, encoder: anytype) !void {
         const opcode = inst.encoding.opcode();
-        const first = @boolToInt(inst.encoding.mandatoryPrefix() != null);
+        const first = @intFromBool(inst.encoding.mandatoryPrefix() != null);
         const final = opcode.len - 1;
         for (opcode[first..final]) |byte| try encoder.opcode_1byte(byte);
         switch (inst.encoding.data.op_en) {
@@ -647,25 +647,25 @@ fn Encoder(comptime T: type, comptime opts: Options) type {
                 try self.writer.writeByte(0b1100_0100);
 
                 try self.writer.writeByte(
-                    @as(u8, ~@boolToInt(fields.r)) << 7 |
-                        @as(u8, ~@boolToInt(fields.x)) << 6 |
-                        @as(u8, ~@boolToInt(fields.b)) << 5 |
-                        @as(u8, @enumToInt(fields.m)) << 0,
+                    @as(u8, ~@intFromBool(fields.r)) << 7 |
+                        @as(u8, ~@intFromBool(fields.x)) << 6 |
+                        @as(u8, ~@intFromBool(fields.b)) << 5 |
+                        @as(u8, @intFromEnum(fields.m)) << 0,
                 );
 
                 try self.writer.writeByte(
-                    @as(u8, @boolToInt(fields.w)) << 7 |
+                    @as(u8, @intFromBool(fields.w)) << 7 |
                         @as(u8, ~fields.v.enc()) << 3 |
-                        @as(u8, @boolToInt(fields.l)) << 2 |
-                        @as(u8, @enumToInt(fields.p)) << 0,
+                        @as(u8, @intFromBool(fields.l)) << 2 |
+                        @as(u8, @intFromEnum(fields.p)) << 0,
                 );
             } else {
                 try self.writer.writeByte(0b1100_0101);
                 try self.writer.writeByte(
-                    @as(u8, ~@boolToInt(fields.r)) << 7 |
+                    @as(u8, ~@intFromBool(fields.r)) << 7 |
                         @as(u8, ~fields.v.enc()) << 3 |
-                        @as(u8, @boolToInt(fields.l)) << 2 |
-                        @as(u8, @enumToInt(fields.p)) << 0,
+                        @as(u8, @intFromBool(fields.l)) << 2 |
+                        @as(u8, @intFromEnum(fields.p)) << 0,
                 );
             }
         }
src/arch/x86_64/Encoding.zig
@@ -56,7 +56,7 @@ pub fn findByMnemonic(
 
     var shortest_enc: ?Encoding = null;
     var shortest_len: ?usize = null;
-    next: for (mnemonic_to_encodings_map[@enumToInt(mnemonic)]) |data| {
+    next: for (mnemonic_to_encodings_map[@intFromEnum(mnemonic)]) |data| {
         switch (data.mode) {
             .none, .short => if (rex_required) continue,
             .rex, .rex_short => if (!rex_required) continue,
@@ -85,7 +85,7 @@ pub fn findByOpcode(opc: []const u8, prefixes: struct {
     rex: Rex,
 }, modrm_ext: ?u3) ?Encoding {
     for (mnemonic_to_encodings_map, 0..) |encs, mnemonic_int| for (encs) |data| {
-        const enc = Encoding{ .mnemonic = @intToEnum(Mnemonic, mnemonic_int), .data = data };
+        const enc = Encoding{ .mnemonic = @enumFromInt(Mnemonic, mnemonic_int), .data = data };
         if (modrm_ext) |ext| if (ext != data.modrm_ext) continue;
         if (!std.mem.eql(u8, opc, enc.opcode())) continue;
         if (prefixes.rex.w) {
@@ -772,7 +772,7 @@ const mnemonic_to_encodings_map = init: {
     var entries = encodings.table;
     std.mem.sort(encodings.Entry, &entries, {}, struct {
         fn lessThan(_: void, lhs: encodings.Entry, rhs: encodings.Entry) bool {
-            return @enumToInt(lhs[0]) < @enumToInt(rhs[0]);
+            return @intFromEnum(lhs[0]) < @intFromEnum(rhs[0]);
         }
     }.lessThan);
     var data_storage: [entries.len]Data = undefined;
@@ -794,7 +794,7 @@ const mnemonic_to_encodings_map = init: {
         std.mem.copyForwards(Op, &data.ops, entry[2]);
         std.mem.copyForwards(u8, &data.opc, entry[3]);
 
-        while (mnemonic_int < @enumToInt(entry[0])) : (mnemonic_int += 1) {
+        while (mnemonic_int < @intFromEnum(entry[0])) : (mnemonic_int += 1) {
             mnemonic_map[mnemonic_int] = data_storage[mnemonic_start..data_index];
             mnemonic_start = data_index;
         }
src/arch/x86_64/Mir.zig
@@ -1053,16 +1053,16 @@ pub const MemorySib = struct {
         const sib = mem.sib;
         assert(sib.scale_index.scale == 0 or std.math.isPowerOfTwo(sib.scale_index.scale));
         return .{
-            .ptr_size = @enumToInt(sib.ptr_size),
-            .base_tag = @enumToInt(@as(Memory.Base.Tag, sib.base)),
+            .ptr_size = @intFromEnum(sib.ptr_size),
+            .base_tag = @intFromEnum(@as(Memory.Base.Tag, sib.base)),
             .base = switch (sib.base) {
                 .none => undefined,
-                .reg => |r| @enumToInt(r),
-                .frame => |fi| @enumToInt(fi),
+                .reg => |r| @intFromEnum(r),
+                .frame => |fi| @intFromEnum(fi),
             },
             .scale_index = @as(u32, sib.scale_index.scale) << 0 |
                 @as(u32, if (sib.scale_index.scale > 0)
-                @enumToInt(sib.scale_index.index)
+                @intFromEnum(sib.scale_index.index)
             else
                 undefined) << 4,
             .disp = sib.disp,
@@ -1073,15 +1073,15 @@ pub const MemorySib = struct {
         const scale = @truncate(u4, msib.scale_index);
         assert(scale == 0 or std.math.isPowerOfTwo(scale));
         return .{ .sib = .{
-            .ptr_size = @intToEnum(Memory.PtrSize, msib.ptr_size),
-            .base = switch (@intToEnum(Memory.Base.Tag, msib.base_tag)) {
+            .ptr_size = @enumFromInt(Memory.PtrSize, msib.ptr_size),
+            .base = switch (@enumFromInt(Memory.Base.Tag, msib.base_tag)) {
                 .none => .none,
-                .reg => .{ .reg = @intToEnum(Register, msib.base) },
-                .frame => .{ .frame = @intToEnum(bits.FrameIndex, msib.base) },
+                .reg => .{ .reg = @enumFromInt(Register, msib.base) },
+                .frame => .{ .frame = @enumFromInt(bits.FrameIndex, msib.base) },
             },
             .scale_index = .{
                 .scale = scale,
-                .index = if (scale > 0) @intToEnum(Register, msib.scale_index >> 4) else undefined,
+                .index = if (scale > 0) @enumFromInt(Register, msib.scale_index >> 4) else undefined,
             },
             .disp = msib.disp,
         } };
@@ -1096,14 +1096,14 @@ pub const MemoryRip = struct {
 
     pub fn encode(mem: Memory) MemoryRip {
         return .{
-            .ptr_size = @enumToInt(mem.rip.ptr_size),
+            .ptr_size = @intFromEnum(mem.rip.ptr_size),
             .disp = mem.rip.disp,
         };
     }
 
     pub fn decode(mrip: MemoryRip) Memory {
         return .{ .rip = .{
-            .ptr_size = @intToEnum(Memory.PtrSize, mrip.ptr_size),
+            .ptr_size = @enumFromInt(Memory.PtrSize, mrip.ptr_size),
             .disp = mrip.disp,
         } };
     }
@@ -1119,7 +1119,7 @@ pub const MemoryMoffs = struct {
 
     pub fn encode(seg: Register, offset: u64) MemoryMoffs {
         return .{
-            .seg = @enumToInt(seg),
+            .seg = @intFromEnum(seg),
             .msb = @truncate(u32, offset >> 32),
             .lsb = @truncate(u32, offset >> 0),
         };
@@ -1127,7 +1127,7 @@ pub const MemoryMoffs = struct {
 
     pub fn decode(moffs: MemoryMoffs) Memory {
         return .{ .moffs = .{
-            .seg = @intToEnum(Register, moffs.seg),
+            .seg = @enumFromInt(Register, moffs.seg),
             .offset = @as(u64, moffs.msb) << 32 | @as(u64, moffs.lsb) << 0,
         } };
     }
@@ -1168,8 +1168,8 @@ pub fn resolveFrameLoc(mir: Mir, mem: Memory) Memory {
         .sib => |sib| switch (sib.base) {
             .none, .reg => mem,
             .frame => |index| if (mir.frame_locs.len > 0) Memory.sib(sib.ptr_size, .{
-                .base = .{ .reg = mir.frame_locs.items(.base)[@enumToInt(index)] },
-                .disp = mir.frame_locs.items(.disp)[@enumToInt(index)] + sib.disp,
+                .base = .{ .reg = mir.frame_locs.items(.base)[@intFromEnum(index)] },
+                .disp = mir.frame_locs.items(.disp)[@intFromEnum(index)] + sib.disp,
                 .scale_index = mem.scaleIndex(),
             }) else mem,
         },
src/codegen/c/type.zig
@@ -129,15 +129,15 @@ pub const CType = extern union {
         varargs_function,
 
         pub const last_no_payload_tag = Tag.zig_c_longdouble;
-        pub const no_payload_count = @enumToInt(last_no_payload_tag) + 1;
+        pub const no_payload_count = @intFromEnum(last_no_payload_tag) + 1;
 
         pub fn hasPayload(self: Tag) bool {
-            return @enumToInt(self) >= no_payload_count;
+            return @intFromEnum(self) >= no_payload_count;
         }
 
         pub fn toIndex(self: Tag) Index {
             assert(!self.hasPayload());
-            return @intCast(Index, @enumToInt(self));
+            return @intCast(Index, @intFromEnum(self));
         }
 
         pub fn Type(comptime self: Tag) type {
@@ -334,7 +334,7 @@ pub const CType = extern union {
             map: Map = .{},
 
             pub fn indexToCType(self: Set, index: Index) CType {
-                if (index < Tag.no_payload_count) return initTag(@intToEnum(Tag, index));
+                if (index < Tag.no_payload_count) return initTag(@enumFromInt(Tag, index));
                 return self.map.keys()[index - Tag.no_payload_count];
             }
 
@@ -370,7 +370,7 @@ pub const CType = extern union {
 
             pub fn cTypeToIndex(self: *Promoted, cty: CType) Allocator.Error!Index {
                 const t = cty.tag();
-                if (@enumToInt(t) < Tag.no_payload_count) return @intCast(Index, @enumToInt(t));
+                if (@intFromEnum(t) < Tag.no_payload_count) return @intCast(Index, @intFromEnum(t));
 
                 const gop = try self.set.map.getOrPutContext(self.gpa(), cty, .{ .store = &self.set });
                 if (!gop.found_existing) gop.key_ptr.* = cty;
src/codegen/llvm/bindings.zig
@@ -8,7 +8,7 @@ pub const Bool = enum(c_int) {
     _,
 
     pub fn fromBool(b: bool) Bool {
-        return @intToEnum(Bool, @boolToInt(b));
+        return @enumFromInt(Bool, @intFromBool(b));
     }
 
     pub fn toBool(b: Bool) bool {
src/codegen/spirv/Assembler.zig
@@ -306,7 +306,7 @@ fn processTypeInstruction(self: *Assembler) !AsmValue {
         },
         .OpTypePointer => try self.spv.ptrType(
             try self.resolveTypeRef(operands[2].ref_id),
-            @intToEnum(spec.StorageClass, operands[1].value),
+            @enumFromInt(spec.StorageClass, operands[1].value),
         ),
         .OpTypeFunction => blk: {
             const param_operands = operands[2..];
@@ -340,7 +340,7 @@ fn processGenericInstruction(self: *Assembler) !?AsmValue {
         else => switch (self.inst.opcode) {
             .OpEntryPoint => unreachable,
             .OpExecutionMode, .OpExecutionModeId => &self.spv.sections.execution_modes,
-            .OpVariable => switch (@intToEnum(spec.StorageClass, operands[2].value)) {
+            .OpVariable => switch (@enumFromInt(spec.StorageClass, operands[2].value)) {
                 .Function => &self.func.prologue,
                 else => {
                     // This is currently disabled because global variables are required to be
@@ -391,7 +391,7 @@ fn processGenericInstruction(self: *Assembler) !?AsmValue {
     }
 
     const actual_word_count = section.instructions.items.len - first_word;
-    section.instructions.items[first_word] |= @as(u32, @intCast(u16, actual_word_count)) << 16 | @enumToInt(self.inst.opcode);
+    section.instructions.items[first_word] |= @as(u32, @intCast(u16, actual_word_count)) << 16 | @intFromEnum(self.inst.opcode);
 
     if (maybe_result_id) |result| {
         return AsmValue{ .value = result };
@@ -695,7 +695,7 @@ fn parseContextDependentInt(self: *Assembler, signedness: std.builtin.Signedness
             .unsigned => 0,
             .signed => -(@as(i128, 1) << (@intCast(u7, width) - 1)),
         };
-        const max = (@as(i128, 1) << (@intCast(u7, width) - @boolToInt(signedness == .signed))) - 1;
+        const max = (@as(i128, 1) << (@intCast(u7, width) - @intFromBool(signedness == .signed))) - 1;
         if (int < min or int > max) {
             break :invalid;
         }
src/codegen/spirv/Cache.zig
@@ -411,7 +411,7 @@ pub const Key = union(enum) {
 
         pub fn eql(ctx: @This(), a: Key, b_void: void, b_index: usize) bool {
             _ = b_void;
-            return ctx.self.lookup(@intToEnum(Ref, b_index)).eql(a);
+            return ctx.self.lookup(@enumFromInt(Ref, b_index)).eql(a);
         }
 
         pub fn hash(ctx: @This(), a: Key) u32 {
@@ -445,7 +445,7 @@ pub fn materialize(self: *const Self, spv: *Module) !Section {
     var section = Section{};
     errdefer section.deinit(spv.gpa);
     for (self.items.items(.result_id), 0..) |result_id, index| {
-        try self.emit(spv, result_id, @intToEnum(Ref, index), &section);
+        try self.emit(spv, result_id, @enumFromInt(Ref, index), &section);
     }
     return section;
 }
@@ -603,14 +603,14 @@ pub fn resolve(self: *Self, spv: *Module, key: Key) !Ref {
     const adapter: Key.Adapter = .{ .self = self };
     const entry = try self.map.getOrPutAdapted(spv.gpa, key, adapter);
     if (entry.found_existing) {
-        return @intToEnum(Ref, entry.index);
+        return @enumFromInt(Ref, entry.index);
     }
     const result_id = spv.allocId();
     const item: Item = switch (key) {
         inline .void_type, .bool_type => .{
             .tag = .type_simple,
             .result_id = result_id,
-            .data = @enumToInt(key.toSimpleType()),
+            .data = @intFromEnum(key.toSimpleType()),
         },
         .int_type => |int| blk: {
             const t: Tag = switch (int.signedness) {
@@ -654,17 +654,17 @@ pub fn resolve(self: *Self, spv: *Module, key: Key) !Ref {
             .Generic => Item{
                 .tag = .type_ptr_generic,
                 .result_id = result_id,
-                .data = @enumToInt(ptr.child_type),
+                .data = @intFromEnum(ptr.child_type),
             },
             .CrossWorkgroup => Item{
                 .tag = .type_ptr_crosswgp,
                 .result_id = result_id,
-                .data = @enumToInt(ptr.child_type),
+                .data = @intFromEnum(ptr.child_type),
             },
             .Function => Item{
                 .tag = .type_ptr_function,
                 .result_id = result_id,
-                .data = @enumToInt(ptr.child_type),
+                .data = @intFromEnum(ptr.child_type),
             },
             else => |storage_class| Item{
                 .tag = .type_ptr_simple,
@@ -770,12 +770,12 @@ pub fn resolve(self: *Self, spv: *Module, key: Key) !Ref {
         .undef => |undef| .{
             .tag = .undef,
             .result_id = result_id,
-            .data = @enumToInt(undef.ty),
+            .data = @intFromEnum(undef.ty),
         },
         .null => |null_info| .{
             .tag = .null,
             .result_id = result_id,
-            .data = @enumToInt(null_info.ty),
+            .data = @intFromEnum(null_info.ty),
         },
         .bool => |bool_info| .{
             .tag = switch (bool_info.value) {
@@ -783,21 +783,21 @@ pub fn resolve(self: *Self, spv: *Module, key: Key) !Ref {
                 false => Tag.bool_false,
             },
             .result_id = result_id,
-            .data = @enumToInt(bool_info.ty),
+            .data = @intFromEnum(bool_info.ty),
         },
     };
     try self.items.append(spv.gpa, item);
 
-    return @intToEnum(Ref, entry.index);
+    return @enumFromInt(Ref, entry.index);
 }
 
 /// Turn a Ref back into a Key.
 /// The Key is valid until the next call to resolve().
 pub fn lookup(self: *const Self, ref: Ref) Key {
-    const item = self.items.get(@enumToInt(ref));
+    const item = self.items.get(@intFromEnum(ref));
     const data = item.data;
     return switch (item.tag) {
-        .type_simple => switch (@intToEnum(Tag.SimpleType, data)) {
+        .type_simple => switch (@enumFromInt(Tag.SimpleType, data)) {
             .void => .void_type,
             .bool => .bool_type,
         },
@@ -826,19 +826,19 @@ pub fn lookup(self: *const Self, ref: Ref) Key {
         .type_ptr_generic => .{
             .ptr_type = .{
                 .storage_class = .Generic,
-                .child_type = @intToEnum(Ref, data),
+                .child_type = @enumFromInt(Ref, data),
             },
         },
         .type_ptr_crosswgp => .{
             .ptr_type = .{
                 .storage_class = .CrossWorkgroup,
-                .child_type = @intToEnum(Ref, data),
+                .child_type = @enumFromInt(Ref, data),
             },
         },
         .type_ptr_function => .{
             .ptr_type = .{
                 .storage_class = .Function,
-                .child_type = @intToEnum(Ref, data),
+                .child_type = @enumFromInt(Ref, data),
             },
         },
         .type_ptr_simple => {
@@ -923,17 +923,17 @@ pub fn lookup(self: *const Self, ref: Ref) Key {
             } };
         },
         .undef => .{ .undef = .{
-            .ty = @intToEnum(Ref, data),
+            .ty = @enumFromInt(Ref, data),
         } },
         .null => .{ .null = .{
-            .ty = @intToEnum(Ref, data),
+            .ty = @enumFromInt(Ref, data),
         } },
         .bool_true => .{ .bool = .{
-            .ty = @intToEnum(Ref, data),
+            .ty = @enumFromInt(Ref, data),
             .value = true,
         } },
         .bool_false => .{ .bool = .{
-            .ty = @intToEnum(Ref, data),
+            .ty = @enumFromInt(Ref, data),
             .value = false,
         } },
     };
@@ -942,14 +942,14 @@ pub fn lookup(self: *const Self, ref: Ref) Key {
 /// Look op the result-id that corresponds to a particular
 /// ref.
 pub fn resultId(self: Self, ref: Ref) IdResult {
-    return self.items.items(.result_id)[@enumToInt(ref)];
+    return self.items.items(.result_id)[@intFromEnum(ref)];
 }
 
 /// Get the ref for a key that has already been added to the cache.
 fn get(self: *const Self, key: Key) Ref {
     const adapter: Key.Adapter = .{ .self = self };
     const index = self.map.getIndexAdapted(key, adapter).?;
-    return @intToEnum(Ref, index);
+    return @enumFromInt(Ref, index);
 }
 
 fn addExtra(self: *Self, spv: *Module, extra: anytype) !u32 {
@@ -965,9 +965,9 @@ fn addExtraAssumeCapacity(self: *Self, extra: anytype) !u32 {
         const word = switch (field.type) {
             u32 => field_val,
             i32 => @bitCast(u32, field_val),
-            Ref => @enumToInt(field_val),
-            StorageClass => @enumToInt(field_val),
-            String => @enumToInt(field_val),
+            Ref => @intFromEnum(field_val),
+            StorageClass => @intFromEnum(field_val),
+            String => @intFromEnum(field_val),
             else => @compileError("Invalid type: " ++ @typeName(field.type)),
         };
         self.extra.appendAssumeCapacity(word);
@@ -987,9 +987,9 @@ fn extraDataTrail(self: Self, comptime T: type, offset: u32) struct { data: T, t
         @field(result, field.name) = switch (field.type) {
             u32 => word,
             i32 => @bitCast(i32, word),
-            Ref => @intToEnum(Ref, word),
-            StorageClass => @intToEnum(StorageClass, word),
-            String => @intToEnum(String, word),
+            Ref => @enumFromInt(Ref, word),
+            StorageClass => @enumFromInt(StorageClass, word),
+            String => @enumFromInt(String, word),
             else => @compileError("Invalid type: " ++ @typeName(field.type)),
         };
     }
@@ -1035,12 +1035,12 @@ pub fn addString(self: *Self, spv: *Module, str: []const u8) !String {
         entry.value_ptr.* = @intCast(u32, offset);
     }
 
-    return @intToEnum(String, entry.index);
+    return @enumFromInt(String, entry.index);
 }
 
 pub fn getString(self: *const Self, ref: String) ?[]const u8 {
     return switch (ref) {
         .none => null,
-        else => std.mem.sliceTo(self.string_bytes.items[self.strings.values()[@enumToInt(ref)]..], 0),
+        else => std.mem.sliceTo(self.string_bytes.items[self.strings.values()[@intFromEnum(ref)]..], 0),
     };
 }
src/codegen/spirv/Module.zig
@@ -246,10 +246,10 @@ fn orderGlobalsInto(
     const global = self.globalPtr(decl_index).?;
     const insts = self.globals.section.instructions.items[global.begin_inst..global.end_inst];
 
-    seen.set(@enumToInt(decl_index));
+    seen.set(@intFromEnum(decl_index));
 
     for (deps) |dep| {
-        if (!seen.isSet(@enumToInt(dep))) {
+        if (!seen.isSet(@intFromEnum(dep))) {
             try self.orderGlobalsInto(dep, section, seen);
         }
     }
@@ -267,7 +267,7 @@ fn orderGlobals(self: *Module) !Section {
     errdefer ordered_globals.deinit(self.gpa);
 
     for (globals) |decl_index| {
-        if (!seen.isSet(@enumToInt(decl_index))) {
+        if (!seen.isSet(@intFromEnum(decl_index))) {
             try self.orderGlobalsInto(decl_index, &ordered_globals, &seen);
         }
     }
@@ -284,14 +284,14 @@ fn addEntryPointDeps(
     const decl = self.declPtr(decl_index);
     const deps = self.decl_deps.items[decl.begin_dep..decl.end_dep];
 
-    seen.set(@enumToInt(decl_index));
+    seen.set(@intFromEnum(decl_index));
 
     if (self.globalPtr(decl_index)) |global| {
         try interface.append(global.result_id);
     }
 
     for (deps) |dep| {
-        if (!seen.isSet(@enumToInt(dep))) {
+        if (!seen.isSet(@intFromEnum(dep))) {
             try self.addEntryPointDeps(dep, seen, interface);
         }
     }
@@ -516,7 +516,7 @@ pub fn allocDecl(self: *Module, kind: DeclKind) !Decl.Index {
         .begin_dep = undefined,
         .end_dep = undefined,
     });
-    const index = @intToEnum(Decl.Index, @intCast(u32, self.decls.items.len - 1));
+    const index = @enumFromInt(Decl.Index, @intCast(u32, self.decls.items.len - 1));
     switch (kind) {
         .func => {},
         // If the decl represents a global, also allocate a global node.
@@ -531,7 +531,7 @@ pub fn allocDecl(self: *Module, kind: DeclKind) !Decl.Index {
 }
 
 pub fn declPtr(self: *Module, index: Decl.Index) *Decl {
-    return &self.decls.items[@enumToInt(index)];
+    return &self.decls.items[@intFromEnum(index)];
 }
 
 pub fn globalPtr(self: *Module, index: Decl.Index) ?*Global {
src/codegen/spirv/Section.zig
@@ -50,7 +50,7 @@ pub fn emitRaw(
 ) !void {
     const word_count = 1 + operand_words;
     try section.instructions.ensureUnusedCapacity(allocator, word_count);
-    section.writeWord((@intCast(Word, word_count << 16)) | @enumToInt(opcode));
+    section.writeWord((@intCast(Word, word_count << 16)) | @intFromEnum(opcode));
 }
 
 pub fn emit(
@@ -61,7 +61,7 @@ pub fn emit(
 ) !void {
     const word_count = instructionSize(opcode, operands);
     try section.instructions.ensureUnusedCapacity(allocator, word_count);
-    section.writeWord(@intCast(Word, word_count << 16) | @enumToInt(opcode));
+    section.writeWord(@intCast(Word, word_count << 16) | @intFromEnum(opcode));
     section.writeOperands(opcode.Operands(), operands);
 }
 
@@ -126,14 +126,14 @@ pub fn writeOperand(section: *Section, comptime Operand: type, operand: Operand)
         // TODO: Where this type is used (OpSpecConstantOp) is currently not correct in the spec json,
         // so it most likely needs to be altered into something that can actually describe the entire
         // instruction in which it is used.
-        spec.LiteralSpecConstantOpInteger => section.writeWord(@enumToInt(operand.opcode)),
+        spec.LiteralSpecConstantOpInteger => section.writeWord(@intFromEnum(operand.opcode)),
 
         spec.PairLiteralIntegerIdRef => section.writeWords(&.{ operand.value, operand.label.id }),
         spec.PairIdRefLiteralInteger => section.writeWords(&.{ operand.target.id, operand.member }),
         spec.PairIdRefIdRef => section.writeWords(&.{ operand[0].id, operand[1].id }),
 
         else => switch (@typeInfo(Operand)) {
-            .Enum => section.writeWord(@enumToInt(operand)),
+            .Enum => section.writeWord(@intFromEnum(operand)),
             .Optional => |info| if (operand) |child| {
                 section.writeOperand(info.child, child);
             },
@@ -217,7 +217,7 @@ fn writeExtendedMask(section: *Section, comptime Operand: type, operand: Operand
 
 fn writeExtendedUnion(section: *Section, comptime Operand: type, operand: Operand) void {
     const tag = std.meta.activeTag(operand);
-    section.writeWord(@enumToInt(tag));
+    section.writeWord(@intFromEnum(tag));
 
     inline for (@typeInfo(Operand).Union.fields) |field| {
         if (@field(Operand, field.name) == tag) {
@@ -327,7 +327,7 @@ test "SPIR-V Section emit() - no operands" {
 
     try section.emit(std.testing.allocator, .OpNop, {});
 
-    try testing.expect(section.instructions.items[0] == (@as(Word, 1) << 16) | @enumToInt(Opcode.OpNop));
+    try testing.expect(section.instructions.items[0] == (@as(Word, 1) << 16) | @intFromEnum(Opcode.OpNop));
 }
 
 test "SPIR-V Section emit() - simple" {
@@ -340,7 +340,7 @@ test "SPIR-V Section emit() - simple" {
     });
 
     try testing.expectEqualSlices(Word, &.{
-        (@as(Word, 3) << 16) | @enumToInt(Opcode.OpUndef),
+        (@as(Word, 3) << 16) | @intFromEnum(Opcode.OpUndef),
         0,
         1,
     }, section.instructions.items);
@@ -358,8 +358,8 @@ test "SPIR-V Section emit() - string" {
     });
 
     try testing.expectEqualSlices(Word, &.{
-        (@as(Word, 10) << 16) | @enumToInt(Opcode.OpSource),
-        @enumToInt(spec.SourceLanguage.Unknown),
+        (@as(Word, 10) << 16) | @intFromEnum(Opcode.OpSource),
+        @intFromEnum(spec.SourceLanguage.Unknown),
         123,
         456,
         std.mem.bytesToValue(Word, "pub "),
@@ -389,7 +389,7 @@ test "SPIR-V Section emit() - extended mask" {
     });
 
     try testing.expectEqualSlices(Word, &.{
-        (@as(Word, 5) << 16) | @enumToInt(Opcode.OpLoopMerge),
+        (@as(Word, 5) << 16) | @intFromEnum(Opcode.OpLoopMerge),
         10,
         20,
         @bitCast(Word, spec.LoopControl{ .Unroll = true, .DependencyLength = true }),
@@ -409,9 +409,9 @@ test "SPIR-V Section emit() - extended union" {
     });
 
     try testing.expectEqualSlices(Word, &.{
-        (@as(Word, 6) << 16) | @enumToInt(Opcode.OpExecutionMode),
+        (@as(Word, 6) << 16) | @intFromEnum(Opcode.OpExecutionMode),
         888,
-        @enumToInt(spec.ExecutionMode.LocalSize),
+        @intFromEnum(spec.ExecutionMode.LocalSize),
         4,
         8,
         16,
src/codegen/c.zig
@@ -462,7 +462,7 @@ pub const Function = struct {
                     => |owner_decl| try std.fmt.allocPrint(arena, "zig_{s}_{}__{d}", .{
                         @tagName(key),
                         fmtIdent(mod.intern_pool.stringToSlice(mod.declPtr(owner_decl).name)),
-                        @enumToInt(owner_decl),
+                        @intFromEnum(owner_decl),
                     }),
                 },
                 .data = switch (key) {
@@ -1865,7 +1865,7 @@ pub const DeclGen = struct {
             };
             try writer.print("{}__{d}", .{
                 fmtIdent(name_stream.getWritten()),
-                @enumToInt(decl_index),
+                @intFromEnum(decl_index),
             });
         }
     }
@@ -1991,7 +1991,7 @@ fn renderTypeName(
                 @tagName(tag)["fwd_".len..],
                 attributes,
                 fmtIdent(mod.intern_pool.stringToSlice(mod.declPtr(owner_decl).name)),
-                @enumToInt(owner_decl),
+                @intFromEnum(owner_decl),
             });
         },
     }
@@ -2100,7 +2100,7 @@ fn renderTypePrefix(
         .fwd_anon_struct,
         .fwd_anon_union,
         => if (decl.unwrap()) |decl_index|
-            try w.print("anon__{d}_{d}", .{ @enumToInt(decl_index), idx })
+            try w.print("anon__{d}_{d}", .{ @intFromEnum(decl_index), idx })
         else
             try renderTypeName(mod, w, idx, cty, ""),
 
@@ -2514,7 +2514,7 @@ pub fn genLazyFn(o: *Object, lazy_fn: LazyFnMap.Entry) !void {
                 const name = mod.intern_pool.stringToSlice(name_ip);
                 const tag_val = try mod.enumValueFieldIndex(enum_ty, index);
 
-                const int_val = try tag_val.enumToInt(enum_ty, mod);
+                const int_val = try tag_val.intFromEnum(enum_ty, mod);
 
                 const name_ty = try mod.arrayType(.{
                     .len = name.len,
@@ -4701,7 +4701,7 @@ fn airSwitchBr(f: *Function, inst: Air.Inst.Index) !CValue {
 
     // On the final iteration we do not need to fix any state. This is because, like in the `else`
     // branch of a `cond_br`, our parent has to do it for this entire body anyway.
-    const last_case_i = switch_br.data.cases_len - @boolToInt(switch_br.data.else_body_len == 0);
+    const last_case_i = switch_br.data.cases_len - @intFromBool(switch_br.data.else_body_len == 0);
 
     var extra_index: usize = switch_br.end;
     for (0..switch_br.data.cases_len) |case_i| {
@@ -6894,7 +6894,7 @@ fn airUnionInit(f: *Function, inst: Air.Inst.Index) !CValue {
 
             const tag_val = try mod.enumValueFieldIndex(tag_ty, field_index);
 
-            const int_val = try tag_val.enumToInt(tag_ty, mod);
+            const int_val = try tag_val.intFromEnum(tag_ty, mod);
 
             const a = try Assignment.start(f, writer, tag_ty);
             try f.writeCValueMember(writer, local, .{ .identifier = "tag" });
@@ -6924,7 +6924,7 @@ fn airPrefetch(f: *Function, inst: Air.Inst.Index) !CValue {
         .data => {
             try writer.writeAll("zig_prefetch(");
             try f.writeCValue(writer, ptr, .FunctionArgument);
-            try writer.print(", {d}, {d});\n", .{ @enumToInt(prefetch.rw), prefetch.locality });
+            try writer.print(", {d}, {d});\n", .{ @intFromEnum(prefetch.rw), prefetch.locality });
         },
         // The available prefetch intrinsics do not accept a cache argument; only
         // address, rw, and locality.
src/codegen/llvm.zig
@@ -949,7 +949,7 @@ pub const Object = struct {
             mod.comp.bin_file.options.error_return_tracing;
 
         const err_ret_trace = if (err_return_tracing)
-            llvm_func.getParam(@boolToInt(ret_ptr != null))
+            llvm_func.getParam(@intFromBool(ret_ptr != null))
         else
             null;
 
@@ -960,7 +960,7 @@ pub const Object = struct {
         defer args.deinit();
 
         {
-            var llvm_arg_i = @as(c_uint, @boolToInt(ret_ptr != null)) + @boolToInt(err_return_tracing);
+            var llvm_arg_i = @as(c_uint, @intFromBool(ret_ptr != null)) + @intFromBool(err_return_tracing);
             var it = iterateParamTypes(&dg, fn_info);
             while (it.next()) |lowering| switch (lowering) {
                 .no_bits => continue,
@@ -2570,7 +2570,7 @@ pub const DeclGen = struct {
             mod.comp.bin_file.options.error_return_tracing;
 
         if (err_return_tracing) {
-            dg.addArgAttr(llvm_fn, @boolToInt(sret), "nonnull");
+            dg.addArgAttr(llvm_fn, @intFromBool(sret), "nonnull");
         }
 
         switch (fn_info.cc) {
@@ -2604,8 +2604,8 @@ pub const DeclGen = struct {
         // because functions with bodies are handled in `updateFunc`.
         if (is_extern) {
             var it = iterateParamTypes(dg, fn_info);
-            it.llvm_index += @boolToInt(sret);
-            it.llvm_index += @boolToInt(err_return_tracing);
+            it.llvm_index += @intFromBool(sret);
+            it.llvm_index += @intFromBool(err_return_tracing);
             while (it.next()) |lowering| switch (lowering) {
                 .byval => {
                     const param_index = it.zig_index - 1;
@@ -2812,7 +2812,7 @@ pub const DeclGen = struct {
                 const elem_ty = t.childType(mod);
                 if (std.debug.runtime_safety) assert((try elem_ty.onePossibleValue(mod)) == null);
                 const elem_llvm_ty = try dg.lowerType(elem_ty);
-                const total_len = t.arrayLen(mod) + @boolToInt(t.sentinel(mod) != null);
+                const total_len = t.arrayLen(mod) + @intFromBool(t.sentinel(mod) != null);
                 return elem_llvm_ty.arrayType(@intCast(c_uint, total_len));
             },
             .Vector => {
@@ -3307,7 +3307,7 @@ pub const DeclGen = struct {
                 }
             },
             .enum_tag => {
-                const int_val = try tv.enumToInt(mod);
+                const int_val = try tv.intFromEnum(mod);
 
                 var bigint_space: Value.BigIntSpace = undefined;
                 const bigint = int_val.toBigInt(&bigint_space, mod);
@@ -3476,7 +3476,7 @@ pub const DeclGen = struct {
                         const elem_ty = tv.ty.childType(mod);
                         const sentinel = tv.ty.sentinel(mod);
                         const len = @intCast(usize, tv.ty.arrayLen(mod));
-                        const len_including_sent = len + @boolToInt(sentinel != null);
+                        const len_including_sent = len + @intFromBool(sentinel != null);
                         const gpa = dg.gpa;
                         const llvm_elems = try gpa.alloc(*llvm.Value, len_including_sent);
                         defer gpa.free(llvm_elems);
@@ -3923,7 +3923,7 @@ pub const DeclGen = struct {
                         const llvm_pl_index = if (layout.tag_size == 0)
                             0
                         else
-                            @boolToInt(layout.tag_align >= layout.payload_align);
+                            @intFromBool(layout.tag_align >= layout.payload_align);
                         const indices: [2]*llvm.Value = .{
                             llvm_u32.constInt(0, .False),
                             llvm_u32.constInt(llvm_pl_index, .False),
@@ -3959,7 +3959,7 @@ pub const DeclGen = struct {
                             };
                             return parent_llvm_ty.constInBoundsGEP(parent_llvm_ptr, &indices, indices.len);
                         } else {
-                            const llvm_index = llvm_u32.constInt(@boolToInt(parent_ty.hasRuntimeBitsIgnoreComptime(mod)), .False);
+                            const llvm_index = llvm_u32.constInt(@intFromBool(parent_ty.hasRuntimeBitsIgnoreComptime(mod)), .False);
                             const indices: [1]*llvm.Value = .{llvm_index};
                             return parent_llvm_ty.constInBoundsGEP(parent_llvm_ptr, &indices, indices.len);
                         }
@@ -4762,8 +4762,8 @@ pub const FuncGen = struct {
         if (callee_ty.zigTypeTag(mod) == .Pointer) {
             // Add argument attributes for function pointer calls.
             it = iterateParamTypes(self.dg, fn_info);
-            it.llvm_index += @boolToInt(sret);
-            it.llvm_index += @boolToInt(err_return_tracing);
+            it.llvm_index += @intFromBool(sret);
+            it.llvm_index += @intFromBool(err_return_tracing);
             while (it.next()) |lowering| switch (lowering) {
                 .byval => {
                     const param_index = it.zig_index - 1;
@@ -5857,7 +5857,7 @@ pub const FuncGen = struct {
             .Union => {
                 const union_llvm_ty = try self.dg.lowerType(struct_ty);
                 const layout = struct_ty.unionGetLayout(mod);
-                const payload_index = @boolToInt(layout.tag_align >= layout.payload_align);
+                const payload_index = @intFromBool(layout.tag_align >= layout.payload_align);
                 const field_ptr = self.builder.buildStructGEP(union_llvm_ty, struct_llvm_val, payload_index, "");
                 const llvm_field_ty = try self.dg.lowerType(field_ty);
                 if (isByRef(field_ty, mod)) {
@@ -8444,7 +8444,7 @@ pub const FuncGen = struct {
             return null;
         }
         const un_llvm_ty = try self.dg.lowerType(un_ty);
-        const tag_index = @boolToInt(layout.tag_align < layout.payload_align);
+        const tag_index = @intFromBool(layout.tag_align < layout.payload_align);
         const tag_field_ptr = self.builder.buildStructGEP(un_llvm_ty, union_ptr, tag_index, "");
         // TODO alignment on this store
         _ = self.builder.buildStore(new_tag, tag_field_ptr);
@@ -8463,14 +8463,14 @@ pub const FuncGen = struct {
             if (layout.payload_size == 0) {
                 return self.builder.buildLoad(llvm_un_ty, union_handle, "");
             }
-            const tag_index = @boolToInt(layout.tag_align < layout.payload_align);
+            const tag_index = @intFromBool(layout.tag_align < layout.payload_align);
             const tag_field_ptr = self.builder.buildStructGEP(llvm_un_ty, union_handle, tag_index, "");
             return self.builder.buildLoad(llvm_un_ty.structGetTypeAtIndex(tag_index), tag_field_ptr, "");
         } else {
             if (layout.payload_size == 0) {
                 return union_handle;
             }
-            const tag_index = @boolToInt(layout.tag_align < layout.payload_align);
+            const tag_index = @intFromBool(layout.tag_align < layout.payload_align);
             return self.builder.buildExtractValue(union_handle, tag_index, "");
         }
     }
@@ -9206,7 +9206,7 @@ pub const FuncGen = struct {
             const union_field_name = union_obj.fields.keys()[extra.field_index];
             const enum_field_index = tag_ty.enumFieldIndex(union_field_name, mod).?;
             const tag_val = try mod.enumValueFieldIndex(tag_ty, enum_field_index);
-            const tag_int_val = try tag_val.enumToInt(tag_ty, mod);
+            const tag_int_val = try tag_val.intFromEnum(tag_ty, mod);
             break :blk tag_int_val.toUnsignedInt(mod);
         };
         if (layout.payload_size == 0) {
@@ -9288,7 +9288,7 @@ pub const FuncGen = struct {
         {
             const indices: [3]*llvm.Value = .{
                 index_type.constNull(),
-                index_type.constInt(@boolToInt(layout.tag_align >= layout.payload_align), .False),
+                index_type.constInt(@intFromBool(layout.tag_align >= layout.payload_align), .False),
                 index_type.constNull(),
             };
             const len: c_uint = if (field_size == layout.payload_size) 2 else 3;
@@ -9298,7 +9298,7 @@ pub const FuncGen = struct {
         {
             const indices: [2]*llvm.Value = .{
                 index_type.constNull(),
-                index_type.constInt(@boolToInt(layout.tag_align < layout.payload_align), .False),
+                index_type.constInt(@intFromBool(layout.tag_align < layout.payload_align), .False),
             };
             const field_ptr = self.builder.buildInBoundsGEP(llvm_union_ty, result_ptr, &indices, indices.len, "");
             const tag_llvm_ty = try self.dg.lowerType(union_obj.tag_ty);
@@ -9313,15 +9313,15 @@ pub const FuncGen = struct {
     fn airPrefetch(self: *FuncGen, inst: Air.Inst.Index) !?*llvm.Value {
         const prefetch = self.air.instructions.items(.data)[inst].prefetch;
 
-        comptime assert(@enumToInt(std.builtin.PrefetchOptions.Rw.read) == 0);
-        comptime assert(@enumToInt(std.builtin.PrefetchOptions.Rw.write) == 1);
+        comptime assert(@intFromEnum(std.builtin.PrefetchOptions.Rw.read) == 0);
+        comptime assert(@intFromEnum(std.builtin.PrefetchOptions.Rw.write) == 1);
 
         // TODO these two asserts should be able to be comptime because the type is a u2
         assert(prefetch.locality >= 0);
         assert(prefetch.locality <= 3);
 
-        comptime assert(@enumToInt(std.builtin.PrefetchOptions.Cache.instruction) == 0);
-        comptime assert(@enumToInt(std.builtin.PrefetchOptions.Cache.data) == 1);
+        comptime assert(@intFromEnum(std.builtin.PrefetchOptions.Cache.instruction) == 0);
+        comptime assert(@intFromEnum(std.builtin.PrefetchOptions.Cache.data) == 1);
 
         // LLVM fails during codegen of instruction cache prefetchs for these architectures.
         // This is an LLVM bug as the prefetch intrinsic should be a noop if not supported
@@ -9368,9 +9368,9 @@ pub const FuncGen = struct {
 
         const params = [_]*llvm.Value{
             ptr,
-            llvm_u32.constInt(@enumToInt(prefetch.rw), .False),
+            llvm_u32.constInt(@intFromEnum(prefetch.rw), .False),
             llvm_u32.constInt(prefetch.locality, .False),
-            llvm_u32.constInt(@enumToInt(prefetch.cache), .False),
+            llvm_u32.constInt(@intFromEnum(prefetch.cache), .False),
         };
         _ = self.builder.buildCall(fn_val.globalGetValueType(), fn_val, &params, params.len, .C, .Auto, "");
         return null;
@@ -9596,7 +9596,7 @@ pub const FuncGen = struct {
                         // the index to the element at index `1` to get a pointer to the end of
                         // the struct.
                         const llvm_u32 = self.context.intType(32);
-                        const llvm_index = llvm_u32.constInt(@boolToInt(struct_ty.hasRuntimeBitsIgnoreComptime(mod)), .False);
+                        const llvm_index = llvm_u32.constInt(@intFromBool(struct_ty.hasRuntimeBitsIgnoreComptime(mod)), .False);
                         const indices: [1]*llvm.Value = .{llvm_index};
                         return self.builder.buildInBoundsGEP(struct_llvm_ty, struct_ptr, &indices, indices.len, "");
                     }
@@ -9605,7 +9605,7 @@ pub const FuncGen = struct {
             .Union => {
                 const layout = struct_ty.unionGetLayout(mod);
                 if (layout.payload_size == 0 or struct_ty.containerLayout(mod) == .Packed) return struct_ptr;
-                const payload_index = @boolToInt(layout.tag_align >= layout.payload_align);
+                const payload_index = @intFromBool(layout.tag_align >= layout.payload_align);
                 const union_llvm_ty = try self.dg.lowerType(struct_ty);
                 const union_field_ptr = self.builder.buildStructGEP(union_llvm_ty, struct_ptr, payload_index, "");
                 return union_field_ptr;
@@ -9658,7 +9658,7 @@ pub const FuncGen = struct {
 
         assert(info.vector_index != .runtime);
         if (info.vector_index != .none) {
-            const index_u32 = self.context.intType(32).constInt(@enumToInt(info.vector_index), .False);
+            const index_u32 = self.context.intType(32).constInt(@intFromEnum(info.vector_index), .False);
             const vec_elem_ty = try self.dg.lowerType(info.pointee_type);
             const vec_ty = vec_elem_ty.vectorType(info.host_size);
 
@@ -9734,7 +9734,7 @@ pub const FuncGen = struct {
 
         assert(info.vector_index != .runtime);
         if (info.vector_index != .none) {
-            const index_u32 = self.context.intType(32).constInt(@enumToInt(info.vector_index), .False);
+            const index_u32 = self.context.intType(32).constInt(@intFromEnum(info.vector_index), .False);
             const vec_elem_ty = try self.dg.lowerType(elem_ty);
             const vec_ty = vec_elem_ty.vectorType(info.host_size);
 
@@ -11025,29 +11025,29 @@ const AnnotatedDITypePtr = enum(usize) {
     _,
 
     fn initFwd(di_type: *llvm.DIType) AnnotatedDITypePtr {
-        const addr = @ptrToInt(di_type);
+        const addr = @intFromPtr(di_type);
         assert(@truncate(u1, addr) == 0);
-        return @intToEnum(AnnotatedDITypePtr, addr | 1);
+        return @enumFromInt(AnnotatedDITypePtr, addr | 1);
     }
 
     fn initFull(di_type: *llvm.DIType) AnnotatedDITypePtr {
-        const addr = @ptrToInt(di_type);
-        return @intToEnum(AnnotatedDITypePtr, addr);
+        const addr = @intFromPtr(di_type);
+        return @enumFromInt(AnnotatedDITypePtr, addr);
     }
 
     fn init(di_type: *llvm.DIType, resolve: Object.DebugResolveStatus) AnnotatedDITypePtr {
-        const addr = @ptrToInt(di_type);
-        const bit = @boolToInt(resolve == .fwd);
-        return @intToEnum(AnnotatedDITypePtr, addr | bit);
+        const addr = @intFromPtr(di_type);
+        const bit = @intFromBool(resolve == .fwd);
+        return @enumFromInt(AnnotatedDITypePtr, addr | bit);
     }
 
     fn toDIType(self: AnnotatedDITypePtr) *llvm.DIType {
-        const fixed_addr = @enumToInt(self) & ~@as(usize, 1);
-        return @intToPtr(*llvm.DIType, fixed_addr);
+        const fixed_addr = @intFromEnum(self) & ~@as(usize, 1);
+        return @ptrFromInt(*llvm.DIType, fixed_addr);
     }
 
     fn isFwdOnly(self: AnnotatedDITypePtr) bool {
-        return @truncate(u1, @enumToInt(self)) != 0;
+        return @truncate(u1, @intFromEnum(self)) != 0;
     }
 };
 
@@ -11118,11 +11118,11 @@ fn buildAllocaInner(
 }
 
 fn errUnionPayloadOffset(payload_ty: Type, mod: *Module) u1 {
-    return @boolToInt(Type.anyerror.abiAlignment(mod) > payload_ty.abiAlignment(mod));
+    return @intFromBool(Type.anyerror.abiAlignment(mod) > payload_ty.abiAlignment(mod));
 }
 
 fn errUnionErrorOffset(payload_ty: Type, mod: *Module) u1 {
-    return @boolToInt(Type.anyerror.abiAlignment(mod) <= payload_ty.abiAlignment(mod));
+    return @intFromBool(Type.anyerror.abiAlignment(mod) <= payload_ty.abiAlignment(mod));
 }
 
 /// Returns true for asm constraint (e.g. "=*m", "=r") if it accepts a memory location
src/codegen/spirv.zig
@@ -387,7 +387,7 @@ pub const DeclGen = struct {
         switch (repr) {
             .indirect => {
                 const int_ty_ref = try self.intType(.unsigned, 1);
-                return self.spv.constInt(int_ty_ref, @boolToInt(value));
+                return self.spv.constInt(int_ty_ref, @intFromBool(value));
             },
             .direct => {
                 const bool_ty_ref = try self.resolveType(Type.bool, .direct);
@@ -532,7 +532,7 @@ pub const DeclGen = struct {
         }
 
         fn addConstBool(self: *@This(), value: bool) !void {
-            try self.addByte(@boolToInt(value)); // TODO: Keep in sync with something?
+            try self.addByte(@intFromBool(value)); // TODO: Keep in sync with something?
         }
 
         fn addInt(self: *@This(), ty: Type, val: Value) !void {
@@ -697,7 +697,7 @@ pub const DeclGen = struct {
                     try self.addUndef(padding);
                 },
                 .enum_tag => {
-                    const int_val = try val.enumToInt(ty, mod);
+                    const int_val = try val.intFromEnum(ty, mod);
 
                     const int_ty = ty.intTagType(mod);
 
@@ -873,7 +873,7 @@ pub const DeclGen = struct {
         assert(storage_class != .Generic and storage_class != .Function);
 
         const var_id = self.spv.allocId();
-        log.debug("lowerIndirectConstant: id = {}, index = {}, ty = {}, val = {}", .{ var_id.id, @enumToInt(spv_decl_index), ty.fmt(self.module), val.fmtDebug() });
+        log.debug("lowerIndirectConstant: id = {}, index = {}, ty = {}, val = {}", .{ var_id.id, @intFromEnum(spv_decl_index), ty.fmt(self.module), val.fmtDebug() });
 
         const section = &self.spv.globals.section;
 
@@ -1010,7 +1010,7 @@ pub const DeclGen = struct {
                     false,
                     alignment,
                 );
-                log.debug("indirect constant: index = {}", .{@enumToInt(spv_decl_index)});
+                log.debug("indirect constant: index = {}", .{@intFromEnum(spv_decl_index)});
                 try self.func.decl_deps.put(self.spv.gpa, spv_decl_index, {});
 
                 try self.func.body.emit(self.spv.gpa, .OpLoad, .{
@@ -1578,7 +1578,7 @@ pub const DeclGen = struct {
         }
     }
 
-    fn boolToInt(self: *DeclGen, result_ty_ref: CacheRef, condition_id: IdRef) !IdRef {
+    fn intFromBool(self: *DeclGen, result_ty_ref: CacheRef, condition_id: IdRef) !IdRef {
         const zero_id = try self.spv.constInt(result_ty_ref, 0);
         const one_id = try self.spv.constInt(result_ty_ref, 1);
         const result_id = self.spv.allocId();
@@ -1621,7 +1621,7 @@ pub const DeclGen = struct {
         return switch (ty.zigTypeTag(mod)) {
             .Bool => blk: {
                 const indirect_bool_ty_ref = try self.resolveType(ty, .indirect);
-                break :blk self.boolToInt(indirect_bool_ty_ref, operand_id);
+                break :blk self.intFromBool(indirect_bool_ty_ref, operand_id);
             },
             else => operand_id,
         };
@@ -2011,7 +2011,7 @@ pub const DeclGen = struct {
 
         // Construct the struct that Zig wants as result.
         // The value should already be the correct type.
-        const ov_id = try self.boolToInt(ov_ty_ref, overflowed_id);
+        const ov_id = try self.intFromBool(ov_ty_ref, overflowed_id);
         const result_ty_ref = try self.resolveType(result_ty, .direct);
         return try self.constructStruct(result_ty_ref, &.{
             value_id,
@@ -2515,7 +2515,7 @@ pub const DeclGen = struct {
         if (layout.payload_size == 0) return union_handle;
 
         const tag_ty = un_ty.unionTagTypeSafety().?;
-        const tag_index = @boolToInt(layout.tag_align < layout.payload_align);
+        const tag_index = @intFromBool(layout.tag_align < layout.payload_align);
         return try self.extractField(tag_ty, union_handle, tag_index);
     }
 
@@ -3105,7 +3105,7 @@ pub const DeclGen = struct {
                         .Int => if (cond_ty.isSignedInt(mod)) @bitCast(u64, value.toSignedInt(mod)) else value.toUnsignedInt(mod),
                         .Enum => blk: {
                             // TODO: figure out of cond_ty is correct (something with enum literals)
-                            break :blk (try value.enumToInt(cond_ty, mod)).toUnsignedInt(mod); // TODO: composite integer constants
+                            break :blk (try value.intFromEnum(cond_ty, mod)).toUnsignedInt(mod); // TODO: composite integer constants
                         },
                         else => unreachable,
                     };
src/link/MachO/dead_strip.zig
@@ -148,7 +148,7 @@ fn markLive(zld: *Zld, atom_index: AtomIndex, alive: *AtomTable) void {
 
     for (relocs) |rel| {
         const target = switch (cpu_arch) {
-            .aarch64 => switch (@intToEnum(macho.reloc_type_arm64, rel.r_type)) {
+            .aarch64 => switch (@enumFromInt(macho.reloc_type_arm64, rel.r_type)) {
                 .ARM64_RELOC_ADDEND => continue,
                 else => Atom.parseRelocTarget(zld, .{
                     .object_id = atom.getFile().?,
@@ -208,7 +208,7 @@ fn refersLive(zld: *Zld, atom_index: AtomIndex, alive: AtomTable) bool {
 
     for (relocs) |rel| {
         const target = switch (cpu_arch) {
-            .aarch64 => switch (@intToEnum(macho.reloc_type_arm64, rel.r_type)) {
+            .aarch64 => switch (@enumFromInt(macho.reloc_type_arm64, rel.r_type)) {
                 .ARM64_RELOC_ADDEND => continue,
                 else => Atom.parseRelocTarget(zld, .{
                     .object_id = atom.getFile().?,
src/link/MachO/eh_frame.zig
@@ -291,7 +291,7 @@ pub fn EhFrameRecord(comptime is_mutable: bool) type {
             for (relocs) |rel| {
                 switch (cpu_arch) {
                     .aarch64 => {
-                        const rel_type = @intToEnum(macho.reloc_type_arm64, rel.r_type);
+                        const rel_type = @enumFromInt(macho.reloc_type_arm64, rel.r_type);
                         switch (rel_type) {
                             .ARM64_RELOC_SUBTRACTOR,
                             .ARM64_RELOC_UNSIGNED,
@@ -301,7 +301,7 @@ pub fn EhFrameRecord(comptime is_mutable: bool) type {
                         }
                     },
                     .x86_64 => {
-                        const rel_type = @intToEnum(macho.reloc_type_x86_64, rel.r_type);
+                        const rel_type = @enumFromInt(macho.reloc_type_x86_64, rel.r_type);
                         switch (rel_type) {
                             .X86_64_RELOC_GOT => {},
                             else => unreachable,
@@ -342,7 +342,7 @@ pub fn EhFrameRecord(comptime is_mutable: bool) type {
 
                 switch (cpu_arch) {
                     .aarch64 => {
-                        const rel_type = @intToEnum(macho.reloc_type_arm64, rel.r_type);
+                        const rel_type = @enumFromInt(macho.reloc_type_arm64, rel.r_type);
                         switch (rel_type) {
                             .ARM64_RELOC_SUBTRACTOR => {
                                 // Address of the __eh_frame in the source object file
@@ -363,7 +363,7 @@ pub fn EhFrameRecord(comptime is_mutable: bool) type {
                         }
                     },
                     .x86_64 => {
-                        const rel_type = @intToEnum(macho.reloc_type_x86_64, rel.r_type);
+                        const rel_type = @enumFromInt(macho.reloc_type_x86_64, rel.r_type);
                         switch (rel_type) {
                             .X86_64_RELOC_GOT => {
                                 const target_addr = try Atom.getRelocTargetAddress(zld, target, true, false);
src/link/MachO/thunks.zig
@@ -289,7 +289,7 @@ fn scanRelocs(
 }
 
 inline fn relocNeedsThunk(rel: macho.relocation_info) bool {
-    const rel_type = @intToEnum(macho.reloc_type_arm64, rel.r_type);
+    const rel_type = @enumFromInt(macho.reloc_type_arm64, rel.r_type);
     return rel_type == .ARM64_RELOC_BRANCH26;
 }
 
src/link/MachO/UnwindInfo.zig
@@ -760,14 +760,14 @@ pub const UnwindEncoding = struct {
     pub fn isDwarf(enc: macho.compact_unwind_encoding_t, cpu_arch: std.Target.Cpu.Arch) bool {
         const mode = getMode(enc);
         return switch (cpu_arch) {
-            .aarch64 => @intToEnum(macho.UNWIND_ARM64_MODE, mode) == .DWARF,
-            .x86_64 => @intToEnum(macho.UNWIND_X86_64_MODE, mode) == .DWARF,
+            .aarch64 => @enumFromInt(macho.UNWIND_ARM64_MODE, mode) == .DWARF,
+            .x86_64 => @enumFromInt(macho.UNWIND_X86_64_MODE, mode) == .DWARF,
             else => unreachable,
         };
     }
 
     pub fn setMode(enc: *macho.compact_unwind_encoding_t, mode: anytype) void {
-        enc.* |= @intCast(u32, @enumToInt(mode)) << 24;
+        enc.* |= @intCast(u32, @intFromEnum(mode)) << 24;
     }
 
     pub fn hasLsda(enc: macho.compact_unwind_encoding_t) bool {
@@ -776,7 +776,7 @@ pub const UnwindEncoding = struct {
     }
 
     pub fn setHasLsda(enc: *macho.compact_unwind_encoding_t, has_lsda: bool) void {
-        const mask = @intCast(u32, @boolToInt(has_lsda)) << 31;
+        const mask = @intCast(u32, @intFromBool(has_lsda)) << 31;
         enc.* |= mask;
     }
 
src/link/MachO/zld.zig
@@ -1819,12 +1819,12 @@ pub const Zld = struct {
                     for (relocs) |rel| {
                         switch (cpu_arch) {
                             .aarch64 => {
-                                const rel_type = @intToEnum(macho.reloc_type_arm64, rel.r_type);
+                                const rel_type = @enumFromInt(macho.reloc_type_arm64, rel.r_type);
                                 if (rel_type != .ARM64_RELOC_UNSIGNED) continue;
                                 if (rel.r_length != 3) continue;
                             },
                             .x86_64 => {
-                                const rel_type = @intToEnum(macho.reloc_type_x86_64, rel.r_type);
+                                const rel_type = @enumFromInt(macho.reloc_type_x86_64, rel.r_type);
                                 if (rel_type != .X86_64_RELOC_UNSIGNED) continue;
                                 if (rel.r_length != 3) continue;
                             },
@@ -1958,12 +1958,12 @@ pub const Zld = struct {
                     for (relocs) |rel| {
                         switch (cpu_arch) {
                             .aarch64 => {
-                                const rel_type = @intToEnum(macho.reloc_type_arm64, rel.r_type);
+                                const rel_type = @enumFromInt(macho.reloc_type_arm64, rel.r_type);
                                 if (rel_type != .ARM64_RELOC_UNSIGNED) continue;
                                 if (rel.r_length != 3) continue;
                             },
                             .x86_64 => {
-                                const rel_type = @intToEnum(macho.reloc_type_x86_64, rel.r_type);
+                                const rel_type = @enumFromInt(macho.reloc_type_x86_64, rel.r_type);
                                 if (rel_type != .X86_64_RELOC_UNSIGNED) continue;
                                 if (rel.r_length != 3) continue;
                             },
src/link/MachO/ZldAtom.zig
@@ -214,7 +214,7 @@ pub fn parseRelocTarget(zld: *Zld, ctx: struct {
                 mem.readIntLittle(u32, ctx.code[rel_offset..][0..4]);
         } else blk: {
             assert(zld.options.target.cpu.arch == .x86_64);
-            const correction: u3 = switch (@intToEnum(macho.reloc_type_x86_64, ctx.rel.r_type)) {
+            const correction: u3 = switch (@enumFromInt(macho.reloc_type_x86_64, ctx.rel.r_type)) {
                 .X86_64_RELOC_SIGNED => 0,
                 .X86_64_RELOC_SIGNED_1 => 1,
                 .X86_64_RELOC_SIGNED_2 => 2,
@@ -272,7 +272,7 @@ pub fn getRelocTargetAtomIndex(zld: *Zld, target: SymbolWithLoc, is_via_got: boo
 
 fn scanAtomRelocsArm64(zld: *Zld, atom_index: AtomIndex, relocs: []align(1) const macho.relocation_info) !void {
     for (relocs) |rel| {
-        const rel_type = @intToEnum(macho.reloc_type_arm64, rel.r_type);
+        const rel_type = @enumFromInt(macho.reloc_type_arm64, rel.r_type);
 
         switch (rel_type) {
             .ARM64_RELOC_ADDEND, .ARM64_RELOC_SUBTRACTOR => continue,
@@ -321,7 +321,7 @@ fn scanAtomRelocsArm64(zld: *Zld, atom_index: AtomIndex, relocs: []align(1) cons
 
 fn scanAtomRelocsX86(zld: *Zld, atom_index: AtomIndex, relocs: []align(1) const macho.relocation_info) !void {
     for (relocs) |rel| {
-        const rel_type = @intToEnum(macho.reloc_type_x86_64, rel.r_type);
+        const rel_type = @enumFromInt(macho.reloc_type_x86_64, rel.r_type);
 
         switch (rel_type) {
             .X86_64_RELOC_SUBTRACTOR => continue,
@@ -495,7 +495,7 @@ fn resolveRelocsArm64(
     var subtractor: ?SymbolWithLoc = null;
 
     for (atom_relocs) |rel| {
-        const rel_type = @intToEnum(macho.reloc_type_arm64, rel.r_type);
+        const rel_type = @enumFromInt(macho.reloc_type_arm64, rel.r_type);
 
         switch (rel_type) {
             .ARM64_RELOC_ADDEND => {
@@ -797,7 +797,7 @@ fn resolveRelocsX86(
     var subtractor: ?SymbolWithLoc = null;
 
     for (atom_relocs) |rel| {
-        const rel_type = @intToEnum(macho.reloc_type_x86_64, rel.r_type);
+        const rel_type = @enumFromInt(macho.reloc_type_x86_64, rel.r_type);
 
         switch (rel_type) {
             .X86_64_RELOC_SUBTRACTOR => {
@@ -1004,14 +1004,14 @@ pub fn getAtomRelocs(zld: *Zld, atom_index: AtomIndex) []const macho.relocation_
 
 pub fn relocRequiresGot(zld: *Zld, rel: macho.relocation_info) bool {
     switch (zld.options.target.cpu.arch) {
-        .aarch64 => switch (@intToEnum(macho.reloc_type_arm64, rel.r_type)) {
+        .aarch64 => switch (@enumFromInt(macho.reloc_type_arm64, rel.r_type)) {
             .ARM64_RELOC_GOT_LOAD_PAGE21,
             .ARM64_RELOC_GOT_LOAD_PAGEOFF12,
             .ARM64_RELOC_POINTER_TO_GOT,
             => return true,
             else => return false,
         },
-        .x86_64 => switch (@intToEnum(macho.reloc_type_x86_64, rel.r_type)) {
+        .x86_64 => switch (@enumFromInt(macho.reloc_type_x86_64, rel.r_type)) {
             .X86_64_RELOC_GOT,
             .X86_64_RELOC_GOT_LOAD,
             => return true,
src/link/Wasm/Object.zig
@@ -365,7 +365,7 @@ fn Parser(comptime ReaderType: type) type {
                 const len = try readLeb(u32, parser.reader.reader());
                 var limited_reader = std.io.limitedReader(parser.reader.reader(), len);
                 const reader = limited_reader.reader();
-                switch (@intToEnum(std.wasm.Section, byte)) {
+                switch (@enumFromInt(std.wasm.Section, byte)) {
                     .custom => {
                         const name_len = try readLeb(u32, reader);
                         const name = try gpa.alloc(u8, name_len);
@@ -645,7 +645,7 @@ fn Parser(comptime ReaderType: type) type {
         /// such as access to the `import` section to find the name of a symbol.
         fn parseSubsection(parser: *ObjectParser, gpa: Allocator, reader: anytype) !void {
             const sub_type = try leb.readULEB128(u8, reader);
-            log.debug("Found subsection: {s}", .{@tagName(@intToEnum(types.SubsectionType, sub_type))});
+            log.debug("Found subsection: {s}", .{@tagName(@enumFromInt(types.SubsectionType, sub_type))});
             const payload_len = try leb.readULEB128(u32, reader);
             if (payload_len == 0) return;
 
@@ -655,7 +655,7 @@ fn Parser(comptime ReaderType: type) type {
             // every subsection contains a 'count' field
             const count = try leb.readULEB128(u32, limited_reader);
 
-            switch (@intToEnum(types.SubsectionType, sub_type)) {
+            switch (@enumFromInt(types.SubsectionType, sub_type)) {
                 .WASM_SEGMENT_INFO => {
                     const segments = try gpa.alloc(types.Segment, count);
                     errdefer gpa.free(segments);
@@ -678,7 +678,7 @@ fn Parser(comptime ReaderType: type) type {
                         // support legacy object files that specified being TLS by the name instead of the TLS flag.
                         if (!segment.isTLS() and (std.mem.startsWith(u8, segment.name, ".tdata") or std.mem.startsWith(u8, segment.name, ".tbss"))) {
                             // set the flag so we can simply check for the flag in the rest of the linker.
-                            segment.flags |= @enumToInt(types.Segment.Flags.WASM_SEG_FLAG_TLS);
+                            segment.flags |= @intFromEnum(types.Segment.Flags.WASM_SEG_FLAG_TLS);
                         }
                     }
                     parser.object.segment_info = segments;
@@ -714,7 +714,7 @@ fn Parser(comptime ReaderType: type) type {
                         errdefer gpa.free(symbols);
                         for (symbols) |*symbol| {
                             symbol.* = .{
-                                .kind = @intToEnum(types.ComdatSym.Type, try leb.readULEB128(u8, reader)),
+                                .kind = @enumFromInt(types.ComdatSym.Type, try leb.readULEB128(u8, reader)),
                                 .index = try leb.readULEB128(u32, reader),
                             };
                         }
@@ -758,7 +758,7 @@ fn Parser(comptime ReaderType: type) type {
         /// requires access to `Object` to find the name of a symbol when it's
         /// an import and flag `WASM_SYM_EXPLICIT_NAME` is not set.
         fn parseSymbol(parser: *ObjectParser, gpa: Allocator, reader: anytype) !Symbol {
-            const tag = @intToEnum(Symbol.Tag, try leb.readULEB128(u8, reader));
+            const tag = @enumFromInt(Symbol.Tag, try leb.readULEB128(u8, reader));
             const flags = try leb.readULEB128(u32, reader);
             var symbol: Symbol = .{
                 .flags = flags,
@@ -846,7 +846,7 @@ fn readLeb(comptime T: type, reader: anytype) !T {
 /// Asserts `T` is an enum
 fn readEnum(comptime T: type, reader: anytype) !T {
     switch (@typeInfo(T)) {
-        .Enum => |enum_type| return @intToEnum(T, try readLeb(enum_type.tag_type, reader)),
+        .Enum => |enum_type| return @enumFromInt(T, try readLeb(enum_type.tag_type, reader)),
         else => @compileError("T must be an enum. Instead was given type " ++ @typeName(T)),
     }
 }
@@ -867,7 +867,7 @@ fn readLimits(reader: anytype) !std.wasm.Limits {
 
 fn readInit(reader: anytype) !std.wasm.InitExpression {
     const opcode = try reader.readByte();
-    const init_expr: std.wasm.InitExpression = switch (@intToEnum(std.wasm.Opcode, opcode)) {
+    const init_expr: std.wasm.InitExpression = switch (@enumFromInt(std.wasm.Opcode, opcode)) {
         .i32_const => .{ .i32_const = try readLeb(i32, reader) },
         .global_get => .{ .global_get = try readLeb(u32, reader) },
         else => @panic("TODO: initexpression for other opcodes"),
src/link/Wasm/Symbol.zig
@@ -91,32 +91,32 @@ pub fn requiresImport(symbol: Symbol) bool {
 }
 
 pub fn isTLS(symbol: Symbol) bool {
-    return symbol.flags & @enumToInt(Flag.WASM_SYM_TLS) != 0;
+    return symbol.flags & @intFromEnum(Flag.WASM_SYM_TLS) != 0;
 }
 
 pub fn hasFlag(symbol: Symbol, flag: Flag) bool {
-    return symbol.flags & @enumToInt(flag) != 0;
+    return symbol.flags & @intFromEnum(flag) != 0;
 }
 
 pub fn setFlag(symbol: *Symbol, flag: Flag) void {
-    symbol.flags |= @enumToInt(flag);
+    symbol.flags |= @intFromEnum(flag);
 }
 
 pub fn isUndefined(symbol: Symbol) bool {
-    return symbol.flags & @enumToInt(Flag.WASM_SYM_UNDEFINED) != 0;
+    return symbol.flags & @intFromEnum(Flag.WASM_SYM_UNDEFINED) != 0;
 }
 
 pub fn setUndefined(symbol: *Symbol, is_undefined: bool) void {
     if (is_undefined) {
         symbol.setFlag(.WASM_SYM_UNDEFINED);
     } else {
-        symbol.flags &= ~@enumToInt(Flag.WASM_SYM_UNDEFINED);
+        symbol.flags &= ~@intFromEnum(Flag.WASM_SYM_UNDEFINED);
     }
 }
 
 pub fn setGlobal(symbol: *Symbol, is_global: bool) void {
     if (is_global) {
-        symbol.flags &= ~@enumToInt(Flag.WASM_SYM_BINDING_LOCAL);
+        symbol.flags &= ~@intFromEnum(Flag.WASM_SYM_BINDING_LOCAL);
     } else {
         symbol.setFlag(.WASM_SYM_BINDING_LOCAL);
     }
@@ -127,23 +127,23 @@ pub fn isDefined(symbol: Symbol) bool {
 }
 
 pub fn isVisible(symbol: Symbol) bool {
-    return symbol.flags & @enumToInt(Flag.WASM_SYM_VISIBILITY_HIDDEN) == 0;
+    return symbol.flags & @intFromEnum(Flag.WASM_SYM_VISIBILITY_HIDDEN) == 0;
 }
 
 pub fn isLocal(symbol: Symbol) bool {
-    return symbol.flags & @enumToInt(Flag.WASM_SYM_BINDING_LOCAL) != 0;
+    return symbol.flags & @intFromEnum(Flag.WASM_SYM_BINDING_LOCAL) != 0;
 }
 
 pub fn isGlobal(symbol: Symbol) bool {
-    return symbol.flags & @enumToInt(Flag.WASM_SYM_BINDING_LOCAL) == 0;
+    return symbol.flags & @intFromEnum(Flag.WASM_SYM_BINDING_LOCAL) == 0;
 }
 
 pub fn isHidden(symbol: Symbol) bool {
-    return symbol.flags & @enumToInt(Flag.WASM_SYM_VISIBILITY_HIDDEN) != 0;
+    return symbol.flags & @intFromEnum(Flag.WASM_SYM_VISIBILITY_HIDDEN) != 0;
 }
 
 pub fn isNoStrip(symbol: Symbol) bool {
-    return symbol.flags & @enumToInt(Flag.WASM_SYM_NO_STRIP) != 0;
+    return symbol.flags & @intFromEnum(Flag.WASM_SYM_NO_STRIP) != 0;
 }
 
 pub fn isExported(symbol: Symbol, is_dynamic: bool) bool {
@@ -153,7 +153,7 @@ pub fn isExported(symbol: Symbol, is_dynamic: bool) bool {
 }
 
 pub fn isWeak(symbol: Symbol) bool {
-    return symbol.flags & @enumToInt(Flag.WASM_SYM_BINDING_WEAK) != 0;
+    return symbol.flags & @intFromEnum(Flag.WASM_SYM_BINDING_WEAK) != 0;
 }
 
 /// Formats the symbol into human-readable text
src/link/Wasm/types.zig
@@ -118,7 +118,7 @@ pub const Segment = struct {
     flags: u32,
 
     pub fn isTLS(segment: Segment) bool {
-        return segment.flags & @enumToInt(Flags.WASM_SEG_FLAG_TLS) != 0;
+        return segment.flags & @intFromEnum(Flags.WASM_SEG_FLAG_TLS) != 0;
     }
 
     /// Returns the name as how it will be output into the final object
@@ -205,7 +205,7 @@ pub const Feature = struct {
 
         /// From a given cpu feature, returns its linker feature
         pub fn fromCpuFeature(feature: std.Target.wasm.Feature) Tag {
-            return @intToEnum(Tag, @enumToInt(feature));
+            return @enumFromInt(Tag, @intFromEnum(feature));
         }
 
         pub fn format(tag: Tag, comptime fmt: []const u8, opt: std.fmt.FormatOptions, writer: anytype) !void {
src/link/Coff.zig
@@ -538,7 +538,7 @@ fn allocateAtom(self: *Coff, atom_index: Atom.Index, new_atom_size: u32, alignme
     defer tracy.end();
 
     const atom = self.getAtom(atom_index);
-    const sect_id = @enumToInt(atom.getSymbol(self).section_number) - 1;
+    const sect_id = @intFromEnum(atom.getSymbol(self).section_number) - 1;
     const header = &self.sections.items(.header)[sect_id];
     const free_list = &self.sections.items(.free_list)[sect_id];
     const maybe_last_atom_index = &self.sections.items(.last_atom_index)[sect_id];
@@ -739,7 +739,7 @@ fn shrinkAtom(self: *Coff, atom_index: Atom.Index, new_block_size: u32) void {
 fn writeAtom(self: *Coff, atom_index: Atom.Index, code: []u8) !void {
     const atom = self.getAtom(atom_index);
     const sym = atom.getSymbol(self);
-    const section = self.sections.get(@enumToInt(sym.section_number) - 1);
+    const section = self.sections.get(@intFromEnum(sym.section_number) - 1);
     const file_offset = section.header.pointer_to_raw_data + sym.value - section.header.virtual_address;
 
     log.debug("writing atom for symbol {s} at file offset 0x{x} to 0x{x}", .{
@@ -769,14 +769,14 @@ fn writeAtom(self: *Coff, atom_index: Atom.Index, code: []u8) !void {
 
     if (is_hot_update_compatible) {
         if (self.base.child_pid) |handle| {
-            const slide = @ptrToInt(self.hot_state.loaded_base_address.?);
+            const slide = @intFromPtr(self.hot_state.loaded_base_address.?);
 
             const mem_code = try gpa.dupe(u8, code);
             defer gpa.free(mem_code);
             self.resolveRelocs(atom_index, relocs.items, mem_code, slide);
 
             const vaddr = sym.value + slide;
-            const pvaddr = @intToPtr(*anyopaque, vaddr);
+            const pvaddr = @ptrFromInt(*anyopaque, vaddr);
 
             log.debug("writing to memory at address {x}", .{vaddr});
 
@@ -860,9 +860,9 @@ fn writeOffsetTableEntry(self: *Coff, index: usize) !void {
     if (is_hot_update_compatible) {
         if (self.base.child_pid) |handle| {
             const gpa = self.base.allocator;
-            const slide = @ptrToInt(self.hot_state.loaded_base_address.?);
+            const slide = @intFromPtr(self.hot_state.loaded_base_address.?);
             const actual_vmaddr = vmaddr + slide;
-            const pvaddr = @intToPtr(*anyopaque, actual_vmaddr);
+            const pvaddr = @ptrFromInt(*anyopaque, actual_vmaddr);
             log.debug("writing GOT entry to memory at address {x}", .{actual_vmaddr});
             if (build_options.enable_logging) {
                 switch (self.ptr_width) {
@@ -970,7 +970,7 @@ fn freeAtom(self: *Coff, atom_index: Atom.Index) void {
 
     const atom = self.getAtom(atom_index);
     const sym = atom.getSymbol(self);
-    const sect_id = @enumToInt(sym.section_number) - 1;
+    const sect_id = @intFromEnum(sym.section_number) - 1;
     const free_list = &self.sections.items(.free_list)[sect_id];
     var already_have_free_list_node = false;
     {
@@ -1107,7 +1107,7 @@ pub fn lowerUnnamedConst(self: *Coff, tv: TypedValue, decl_index: Module.Decl.In
         const atom = self.getAtom(atom_index);
         const sym = atom.getSymbolPtr(self);
         try self.setSymbolName(sym, sym_name);
-        sym.section_number = @intToEnum(coff.SectionNumber, self.rdata_section_index.? + 1);
+        sym.section_number = @enumFromInt(coff.SectionNumber, self.rdata_section_index.? + 1);
     }
 
     const res = try codegen.generateSymbol(&self.base, decl.srcLoc(mod), tv, &code_buffer, .none, .{
@@ -1244,7 +1244,7 @@ fn updateLazySymbolAtom(
     const code_len = @intCast(u32, code.len);
     const symbol = atom.getSymbolPtr(self);
     try self.setSymbolName(symbol, name);
-    symbol.section_number = @intToEnum(coff.SectionNumber, section_index + 1);
+    symbol.section_number = @enumFromInt(coff.SectionNumber, section_index + 1);
     symbol.type = .{ .complex_type = .NULL, .base_type = .NULL };
 
     const vaddr = try self.allocateAtom(atom_index, code_len, required_alignment);
@@ -1341,7 +1341,7 @@ fn updateDeclCode(self: *Coff, decl_index: Module.Decl.Index, code: []u8, comple
     if (atom.size != 0) {
         const sym = atom.getSymbolPtr(self);
         try self.setSymbolName(sym, decl_name);
-        sym.section_number = @intToEnum(coff.SectionNumber, sect_index + 1);
+        sym.section_number = @enumFromInt(coff.SectionNumber, sect_index + 1);
         sym.type = .{ .complex_type = complex_type, .base_type = .NULL };
 
         const capacity = atom.capacity(self);
@@ -1365,7 +1365,7 @@ fn updateDeclCode(self: *Coff, decl_index: Module.Decl.Index, code: []u8, comple
     } else {
         const sym = atom.getSymbolPtr(self);
         try self.setSymbolName(sym, decl_name);
-        sym.section_number = @intToEnum(coff.SectionNumber, sect_index + 1);
+        sym.section_number = @enumFromInt(coff.SectionNumber, sect_index + 1);
         sym.type = .{ .complex_type = complex_type, .base_type = .NULL };
 
         const vaddr = try self.allocateAtom(atom_index, code_len, required_alignment);
@@ -1502,7 +1502,7 @@ pub fn updateDeclExports(
         const sym = self.getSymbolPtr(sym_loc);
         try self.setSymbolName(sym, mod.intern_pool.stringToSlice(exp.opts.name));
         sym.value = decl_sym.value;
-        sym.section_number = @intToEnum(coff.SectionNumber, self.text_section_index.? + 1);
+        sym.section_number = @enumFromInt(coff.SectionNumber, self.text_section_index.? + 1);
         sym.type = .{ .complex_type = .FUNCTION, .base_type = .NULL };
 
         switch (exp.opts.linkage) {
@@ -1668,7 +1668,7 @@ pub fn flushModule(self: *Coff, comp: *Compilation, prog_node: *std.Progress.Nod
 
         const atom = self.getAtom(atom_index);
         const sym = atom.getSymbol(self);
-        const section = self.sections.get(@enumToInt(sym.section_number) - 1).header;
+        const section = self.sections.get(@intFromEnum(sym.section_number) - 1).header;
         const file_offset = section.pointer_to_raw_data + sym.value - section.virtual_address;
 
         var code = std.ArrayList(u8).init(gpa);
@@ -1878,7 +1878,7 @@ fn writeBaseRelocations(self: *Coff) !void {
 
     try self.base.file.?.pwriteAll(buffer.items, header.pointer_to_raw_data);
 
-    self.data_directories[@enumToInt(coff.DirectoryEntry.BASERELOC)] = .{
+    self.data_directories[@intFromEnum(coff.DirectoryEntry.BASERELOC)] = .{
         .virtual_address = header.virtual_address,
         .size = needed_size,
     };
@@ -2011,11 +2011,11 @@ fn writeImportTables(self: *Coff) !void {
 
     try self.base.file.?.pwriteAll(buffer.items, header.pointer_to_raw_data);
 
-    self.data_directories[@enumToInt(coff.DirectoryEntry.IMPORT)] = .{
+    self.data_directories[@intFromEnum(coff.DirectoryEntry.IMPORT)] = .{
         .virtual_address = header.virtual_address + iat_size,
         .size = dir_table_size,
     };
-    self.data_directories[@enumToInt(coff.DirectoryEntry.IAT)] = .{
+    self.data_directories[@intFromEnum(coff.DirectoryEntry.IAT)] = .{
         .virtual_address = header.virtual_address,
         .size = iat_size,
     };
@@ -2469,7 +2469,7 @@ fn logSymtab(self: *Coff) void {
             .UNDEFINED => 0, // TODO
             .ABSOLUTE => unreachable, // TODO
             .DEBUG => unreachable, // TODO
-            else => @enumToInt(sym.section_number),
+            else => @intFromEnum(sym.section_number),
         };
         log.debug("    %{d}: {?s} @{x} in {s}({d}), {s}", .{
             sym_id,
src/link/Dwarf.zig
@@ -171,11 +171,11 @@ pub const DeclState = struct {
         switch (ty.zigTypeTag(mod)) {
             .NoReturn => unreachable,
             .Void => {
-                try dbg_info_buffer.append(@enumToInt(AbbrevKind.pad1));
+                try dbg_info_buffer.append(@intFromEnum(AbbrevKind.pad1));
             },
             .Bool => {
                 try dbg_info_buffer.ensureUnusedCapacity(12);
-                dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.base_type));
+                dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.base_type));
                 // DW.AT.encoding, DW.FORM.data1
                 dbg_info_buffer.appendAssumeCapacity(DW.ATE.boolean);
                 // DW.AT.byte_size, DW.FORM.udata
@@ -186,7 +186,7 @@ pub const DeclState = struct {
             .Int => {
                 const info = ty.intInfo(mod);
                 try dbg_info_buffer.ensureUnusedCapacity(12);
-                dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.base_type));
+                dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.base_type));
                 // DW.AT.encoding, DW.FORM.data1
                 dbg_info_buffer.appendAssumeCapacity(switch (info.signedness) {
                     .signed => DW.ATE.signed,
@@ -200,7 +200,7 @@ pub const DeclState = struct {
             .Optional => {
                 if (ty.isPtrLikeOptional(mod)) {
                     try dbg_info_buffer.ensureUnusedCapacity(12);
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.base_type));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.base_type));
                     // DW.AT.encoding, DW.FORM.data1
                     dbg_info_buffer.appendAssumeCapacity(DW.ATE.address);
                     // DW.AT.byte_size, DW.FORM.udata
@@ -211,7 +211,7 @@ pub const DeclState = struct {
                     // Non-pointer optionals are structs: struct { .maybe = *, .val = * }
                     const payload_ty = ty.optionalChild(mod);
                     // DW.AT.structure_type
-                    try dbg_info_buffer.append(@enumToInt(AbbrevKind.struct_type));
+                    try dbg_info_buffer.append(@intFromEnum(AbbrevKind.struct_type));
                     // DW.AT.byte_size, DW.FORM.udata
                     const abi_size = ty.abiSize(mod);
                     try leb128.writeULEB128(dbg_info_buffer.writer(), abi_size);
@@ -219,7 +219,7 @@ pub const DeclState = struct {
                     try dbg_info_buffer.writer().print("{}\x00", .{ty.fmt(mod)});
                     // DW.AT.member
                     try dbg_info_buffer.ensureUnusedCapacity(7);
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.struct_member));
                     // DW.AT.name, DW.FORM.string
                     dbg_info_buffer.appendSliceAssumeCapacity("maybe");
                     dbg_info_buffer.appendAssumeCapacity(0);
@@ -231,7 +231,7 @@ pub const DeclState = struct {
                     try dbg_info_buffer.ensureUnusedCapacity(6);
                     dbg_info_buffer.appendAssumeCapacity(0);
                     // DW.AT.member
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.struct_member));
                     // DW.AT.name, DW.FORM.string
                     dbg_info_buffer.appendSliceAssumeCapacity("val");
                     dbg_info_buffer.appendAssumeCapacity(0);
@@ -253,14 +253,14 @@ pub const DeclState = struct {
                     const ptr_bytes = @intCast(u8, @divExact(ptr_bits, 8));
                     // DW.AT.structure_type
                     try dbg_info_buffer.ensureUnusedCapacity(2);
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_type));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.struct_type));
                     // DW.AT.byte_size, DW.FORM.udata
                     try leb128.writeULEB128(dbg_info_buffer.writer(), ty.abiSize(mod));
                     // DW.AT.name, DW.FORM.string
                     try dbg_info_buffer.writer().print("{}\x00", .{ty.fmt(mod)});
                     // DW.AT.member
                     try dbg_info_buffer.ensureUnusedCapacity(5);
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.struct_member));
                     // DW.AT.name, DW.FORM.string
                     dbg_info_buffer.appendSliceAssumeCapacity("ptr");
                     dbg_info_buffer.appendAssumeCapacity(0);
@@ -273,7 +273,7 @@ pub const DeclState = struct {
                     try dbg_info_buffer.ensureUnusedCapacity(6);
                     dbg_info_buffer.appendAssumeCapacity(0);
                     // DW.AT.member
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.struct_member));
                     // DW.AT.name, DW.FORM.string
                     dbg_info_buffer.appendSliceAssumeCapacity("len");
                     dbg_info_buffer.appendAssumeCapacity(0);
@@ -288,7 +288,7 @@ pub const DeclState = struct {
                     dbg_info_buffer.appendAssumeCapacity(0);
                 } else {
                     try dbg_info_buffer.ensureUnusedCapacity(5);
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.ptr_type));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.ptr_type));
                     // DW.AT.type, DW.FORM.ref4
                     const index = dbg_info_buffer.items.len;
                     try dbg_info_buffer.resize(index + 4);
@@ -297,7 +297,7 @@ pub const DeclState = struct {
             },
             .Array => {
                 // DW.AT.array_type
-                try dbg_info_buffer.append(@enumToInt(AbbrevKind.array_type));
+                try dbg_info_buffer.append(@intFromEnum(AbbrevKind.array_type));
                 // DW.AT.name, DW.FORM.string
                 try dbg_info_buffer.writer().print("{}\x00", .{ty.fmt(mod)});
                 // DW.AT.type, DW.FORM.ref4
@@ -305,7 +305,7 @@ pub const DeclState = struct {
                 try dbg_info_buffer.resize(index + 4);
                 try self.addTypeRelocGlobal(atom_index, ty.childType(mod), @intCast(u32, index));
                 // DW.AT.subrange_type
-                try dbg_info_buffer.append(@enumToInt(AbbrevKind.array_dim));
+                try dbg_info_buffer.append(@intFromEnum(AbbrevKind.array_dim));
                 // DW.AT.type, DW.FORM.ref4
                 index = dbg_info_buffer.items.len;
                 try dbg_info_buffer.resize(index + 4);
@@ -318,7 +318,7 @@ pub const DeclState = struct {
             },
             .Struct => blk: {
                 // DW.AT.structure_type
-                try dbg_info_buffer.append(@enumToInt(AbbrevKind.struct_type));
+                try dbg_info_buffer.append(@intFromEnum(AbbrevKind.struct_type));
                 // DW.AT.byte_size, DW.FORM.udata
                 try leb128.writeULEB128(dbg_info_buffer.writer(), ty.abiSize(mod));
 
@@ -329,7 +329,7 @@ pub const DeclState = struct {
 
                         for (fields.types, 0..) |field_ty, field_index| {
                             // DW.AT.member
-                            try dbg_info_buffer.append(@enumToInt(AbbrevKind.struct_member));
+                            try dbg_info_buffer.append(@intFromEnum(AbbrevKind.struct_member));
                             // DW.AT.name, DW.FORM.string
                             try dbg_info_buffer.writer().print("{d}\x00", .{field_index});
                             // DW.AT.type, DW.FORM.ref4
@@ -363,7 +363,7 @@ pub const DeclState = struct {
                             const field_name = mod.intern_pool.stringToSlice(field_name_ip);
                             // DW.AT.member
                             try dbg_info_buffer.ensureUnusedCapacity(field_name.len + 2);
-                            dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member));
+                            dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.struct_member));
                             // DW.AT.name, DW.FORM.string
                             dbg_info_buffer.appendSliceAssumeCapacity(field_name);
                             dbg_info_buffer.appendAssumeCapacity(0);
@@ -384,7 +384,7 @@ pub const DeclState = struct {
             },
             .Enum => {
                 // DW.AT.enumeration_type
-                try dbg_info_buffer.append(@enumToInt(AbbrevKind.enum_type));
+                try dbg_info_buffer.append(@intFromEnum(AbbrevKind.enum_type));
                 // DW.AT.byte_size, DW.FORM.udata
                 try leb128.writeULEB128(dbg_info_buffer.writer(), ty.abiSize(mod));
                 // DW.AT.name, DW.FORM.string
@@ -398,7 +398,7 @@ pub const DeclState = struct {
                     const field_name = mod.intern_pool.stringToSlice(field_name_index);
                     // DW.AT.enumerator
                     try dbg_info_buffer.ensureUnusedCapacity(field_name.len + 2 + @sizeOf(u64));
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.enum_variant));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.enum_variant));
                     // DW.AT.name, DW.FORM.string
                     dbg_info_buffer.appendSliceAssumeCapacity(field_name);
                     dbg_info_buffer.appendAssumeCapacity(0);
@@ -408,7 +408,7 @@ pub const DeclState = struct {
                         const value = enum_type.values[field_i];
                         // TODO do not assume a 64bit enum value - could be bigger.
                         // See https://github.com/ziglang/zig/issues/645
-                        const field_int_val = try value.toValue().enumToInt(ty, mod);
+                        const field_int_val = try value.toValue().intFromEnum(ty, mod);
                         break :value @bitCast(u64, field_int_val.toSignedInt(mod));
                     };
                     mem.writeInt(u64, dbg_info_buffer.addManyAsArrayAssumeCapacity(8), value, target_endian);
@@ -430,7 +430,7 @@ pub const DeclState = struct {
                 // for untagged unions.
                 if (is_tagged) {
                     // DW.AT.structure_type
-                    try dbg_info_buffer.append(@enumToInt(AbbrevKind.struct_type));
+                    try dbg_info_buffer.append(@intFromEnum(AbbrevKind.struct_type));
                     // DW.AT.byte_size, DW.FORM.udata
                     try leb128.writeULEB128(dbg_info_buffer.writer(), layout.abi_size);
                     // DW.AT.name, DW.FORM.string
@@ -440,7 +440,7 @@ pub const DeclState = struct {
 
                     // DW.AT.member
                     try dbg_info_buffer.ensureUnusedCapacity(9);
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.struct_member));
                     // DW.AT.name, DW.FORM.string
                     dbg_info_buffer.appendSliceAssumeCapacity("payload");
                     dbg_info_buffer.appendAssumeCapacity(0);
@@ -453,7 +453,7 @@ pub const DeclState = struct {
                 }
 
                 // DW.AT.union_type
-                try dbg_info_buffer.append(@enumToInt(AbbrevKind.union_type));
+                try dbg_info_buffer.append(@intFromEnum(AbbrevKind.union_type));
                 // DW.AT.byte_size, DW.FORM.udata,
                 try leb128.writeULEB128(dbg_info_buffer.writer(), layout.payload_size);
                 // DW.AT.name, DW.FORM.string
@@ -468,7 +468,7 @@ pub const DeclState = struct {
                     const field = fields.get(field_name).?;
                     if (!field.ty.hasRuntimeBits(mod)) continue;
                     // DW.AT.member
-                    try dbg_info_buffer.append(@enumToInt(AbbrevKind.struct_member));
+                    try dbg_info_buffer.append(@intFromEnum(AbbrevKind.struct_member));
                     // DW.AT.name, DW.FORM.string
                     try dbg_info_buffer.appendSlice(mod.intern_pool.stringToSlice(field_name));
                     try dbg_info_buffer.append(0);
@@ -485,7 +485,7 @@ pub const DeclState = struct {
                 if (is_tagged) {
                     // DW.AT.member
                     try dbg_info_buffer.ensureUnusedCapacity(5);
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.struct_member));
                     // DW.AT.name, DW.FORM.string
                     dbg_info_buffer.appendSliceAssumeCapacity("tag");
                     dbg_info_buffer.appendAssumeCapacity(0);
@@ -519,7 +519,7 @@ pub const DeclState = struct {
                 const error_off = if (error_align >= payload_align) 0 else payload_ty.abiSize(mod);
 
                 // DW.AT.structure_type
-                try dbg_info_buffer.append(@enumToInt(AbbrevKind.struct_type));
+                try dbg_info_buffer.append(@intFromEnum(AbbrevKind.struct_type));
                 // DW.AT.byte_size, DW.FORM.udata
                 try leb128.writeULEB128(dbg_info_buffer.writer(), abi_size);
                 // DW.AT.name, DW.FORM.string
@@ -529,7 +529,7 @@ pub const DeclState = struct {
                 if (!payload_ty.isNoReturn(mod)) {
                     // DW.AT.member
                     try dbg_info_buffer.ensureUnusedCapacity(7);
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.struct_member));
                     // DW.AT.name, DW.FORM.string
                     dbg_info_buffer.appendSliceAssumeCapacity("value");
                     dbg_info_buffer.appendAssumeCapacity(0);
@@ -544,7 +544,7 @@ pub const DeclState = struct {
                 {
                     // DW.AT.member
                     try dbg_info_buffer.ensureUnusedCapacity(5);
-                    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member));
+                    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.struct_member));
                     // DW.AT.name, DW.FORM.string
                     dbg_info_buffer.appendSliceAssumeCapacity("err");
                     dbg_info_buffer.appendAssumeCapacity(0);
@@ -561,7 +561,7 @@ pub const DeclState = struct {
             },
             else => {
                 log.debug("TODO implement .debug_info for type '{}'", .{ty.fmt(self.mod)});
-                try dbg_info_buffer.append(@enumToInt(AbbrevKind.pad1));
+                try dbg_info_buffer.append(@intFromEnum(AbbrevKind.pad1));
             },
         }
     }
@@ -595,7 +595,7 @@ pub const DeclState = struct {
         switch (loc) {
             .register => |reg| {
                 try dbg_info.ensureUnusedCapacity(4);
-                dbg_info.appendAssumeCapacity(@enumToInt(AbbrevKind.parameter));
+                dbg_info.appendAssumeCapacity(@intFromEnum(AbbrevKind.parameter));
                 // DW.AT.location, DW.FORM.exprloc
                 var expr_len = std.io.countingWriter(std.io.null_writer);
                 if (reg < 32) {
@@ -614,7 +614,7 @@ pub const DeclState = struct {
             },
             .stack => |info| {
                 try dbg_info.ensureUnusedCapacity(9);
-                dbg_info.appendAssumeCapacity(@enumToInt(AbbrevKind.parameter));
+                dbg_info.appendAssumeCapacity(@intFromEnum(AbbrevKind.parameter));
                 // DW.AT.location, DW.FORM.exprloc
                 var expr_len = std.io.countingWriter(std.io.null_writer);
                 if (info.fp_register < 32) {
@@ -643,7 +643,7 @@ pub const DeclState = struct {
                 // where each argument is encoded as
                 // <opcode> i:uleb128
                 dbg_info.appendSliceAssumeCapacity(&.{
-                    @enumToInt(AbbrevKind.parameter),
+                    @intFromEnum(AbbrevKind.parameter),
                     DW.OP.WASM_location,
                     DW.OP.WASM_local,
                 });
@@ -670,7 +670,7 @@ pub const DeclState = struct {
         const dbg_info = &self.dbg_info;
         const atom_index = self.di_atom_decls.get(owner_decl).?;
         const name_with_null = name.ptr[0 .. name.len + 1];
-        try dbg_info.append(@enumToInt(AbbrevKind.variable));
+        try dbg_info.append(@intFromEnum(AbbrevKind.variable));
         const mod = self.mod;
         const target = mod.getTarget();
         const endian = target.cpu.arch.endian();
@@ -679,7 +679,7 @@ pub const DeclState = struct {
         switch (loc) {
             .register => |reg| {
                 try dbg_info.ensureUnusedCapacity(4);
-                dbg_info.appendAssumeCapacity(@enumToInt(AbbrevKind.parameter));
+                dbg_info.appendAssumeCapacity(@intFromEnum(AbbrevKind.parameter));
                 // DW.AT.location, DW.FORM.exprloc
                 var expr_len = std.io.countingWriter(std.io.null_writer);
                 if (reg < 32) {
@@ -699,7 +699,7 @@ pub const DeclState = struct {
 
             .stack => |info| {
                 try dbg_info.ensureUnusedCapacity(9);
-                dbg_info.appendAssumeCapacity(@enumToInt(AbbrevKind.parameter));
+                dbg_info.appendAssumeCapacity(@intFromEnum(AbbrevKind.parameter));
                 // DW.AT.location, DW.FORM.exprloc
                 var expr_len = std.io.countingWriter(std.io.null_writer);
                 if (info.fp_register < 32) {
@@ -741,7 +741,7 @@ pub const DeclState = struct {
                 const ptr_width = @intCast(u8, @divExact(target.ptrBitWidth(), 8));
                 try dbg_info.ensureUnusedCapacity(2 + ptr_width);
                 dbg_info.appendSliceAssumeCapacity(&[2]u8{ // DW.AT.location, DW.FORM.exprloc
-                    1 + ptr_width + @boolToInt(is_ptr),
+                    1 + ptr_width + @intFromBool(is_ptr),
                     DW.OP.addr, // literal address
                 });
                 const offset = @intCast(u32, dbg_info.items.len);
@@ -1015,9 +1015,9 @@ pub fn initDeclState(self: *Dwarf, mod: *Module, decl_index: Module.Decl.Index)
             const fn_ret_type = decl.ty.fnReturnType(mod);
             const fn_ret_has_bits = fn_ret_type.hasRuntimeBits(mod);
             if (fn_ret_has_bits) {
-                dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.subprogram));
+                dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.subprogram));
             } else {
-                dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.subprogram_retvoid));
+                dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.subprogram_retvoid));
             }
             // These get overwritten after generating the machine code. These values are
             // "relocations" and have to be in this fixed place so that functions can be
@@ -1617,14 +1617,14 @@ pub fn writeDbgAbbrev(self: *Dwarf) !void {
     // These are LEB encoded but since the values are all less than 127
     // we can simply append these bytes.
     const abbrev_buf = [_]u8{
-        @enumToInt(AbbrevKind.compile_unit), DW.TAG.compile_unit, DW.CHILDREN.yes, // header
-        DW.AT.stmt_list,                     DW.FORM.sec_offset,  DW.AT.low_pc,
-        DW.FORM.addr,                        DW.AT.high_pc,       DW.FORM.addr,
-        DW.AT.name,                          DW.FORM.strp,        DW.AT.comp_dir,
-        DW.FORM.strp,                        DW.AT.producer,      DW.FORM.strp,
-        DW.AT.language,                      DW.FORM.data2,       0,
+        @intFromEnum(AbbrevKind.compile_unit), DW.TAG.compile_unit, DW.CHILDREN.yes, // header
+        DW.AT.stmt_list,                       DW.FORM.sec_offset,  DW.AT.low_pc,
+        DW.FORM.addr,                          DW.AT.high_pc,       DW.FORM.addr,
+        DW.AT.name,                            DW.FORM.strp,        DW.AT.comp_dir,
+        DW.FORM.strp,                          DW.AT.producer,      DW.FORM.strp,
+        DW.AT.language,                        DW.FORM.data2,       0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.subprogram),
+        @intFromEnum(AbbrevKind.subprogram),
         DW.TAG.subprogram,
         DW.CHILDREN.yes, // header
         DW.AT.low_pc,
@@ -1635,15 +1635,15 @@ pub fn writeDbgAbbrev(self: *Dwarf) !void {
         DW.FORM.ref4,
         DW.AT.name,
         DW.FORM.string,
-        0,                                         0, // table sentinel
-        @enumToInt(AbbrevKind.subprogram_retvoid),
+        0,                                           0, // table sentinel
+        @intFromEnum(AbbrevKind.subprogram_retvoid),
         DW.TAG.subprogram, DW.CHILDREN.yes, // header
         DW.AT.low_pc,      DW.FORM.addr,
         DW.AT.high_pc,     DW.FORM.data4,
         DW.AT.name,        DW.FORM.string,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.base_type),
+        @intFromEnum(AbbrevKind.base_type),
         DW.TAG.base_type,
         DW.CHILDREN.no, // header
         DW.AT.encoding,
@@ -1654,14 +1654,14 @@ pub fn writeDbgAbbrev(self: *Dwarf) !void {
         DW.FORM.string,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.ptr_type),
+        @intFromEnum(AbbrevKind.ptr_type),
         DW.TAG.pointer_type,
         DW.CHILDREN.no, // header
         DW.AT.type,
         DW.FORM.ref4,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.struct_type),
+        @intFromEnum(AbbrevKind.struct_type),
         DW.TAG.structure_type,
         DW.CHILDREN.yes, // header
         DW.AT.byte_size,
@@ -1670,7 +1670,7 @@ pub fn writeDbgAbbrev(self: *Dwarf) !void {
         DW.FORM.string,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.struct_member),
+        @intFromEnum(AbbrevKind.struct_member),
         DW.TAG.member,
         DW.CHILDREN.no, // header
         DW.AT.name,
@@ -1681,7 +1681,7 @@ pub fn writeDbgAbbrev(self: *Dwarf) !void {
         DW.FORM.udata,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.enum_type),
+        @intFromEnum(AbbrevKind.enum_type),
         DW.TAG.enumeration_type,
         DW.CHILDREN.yes, // header
         DW.AT.byte_size,
@@ -1690,7 +1690,7 @@ pub fn writeDbgAbbrev(self: *Dwarf) !void {
         DW.FORM.string,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.enum_variant),
+        @intFromEnum(AbbrevKind.enum_variant),
         DW.TAG.enumerator,
         DW.CHILDREN.no, // header
         DW.AT.name,
@@ -1699,7 +1699,7 @@ pub fn writeDbgAbbrev(self: *Dwarf) !void {
         DW.FORM.data8,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.union_type),
+        @intFromEnum(AbbrevKind.union_type),
         DW.TAG.union_type,
         DW.CHILDREN.yes, // header
         DW.AT.byte_size,
@@ -1708,32 +1708,32 @@ pub fn writeDbgAbbrev(self: *Dwarf) !void {
         DW.FORM.string,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.pad1),
+        @intFromEnum(AbbrevKind.pad1),
         DW.TAG.unspecified_type,
         DW.CHILDREN.no, // header
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.parameter),
+        @intFromEnum(AbbrevKind.parameter),
         DW.TAG.formal_parameter, DW.CHILDREN.no, // header
         DW.AT.location,          DW.FORM.exprloc,
         DW.AT.type,              DW.FORM.ref4,
         DW.AT.name,              DW.FORM.string,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.variable),
+        @intFromEnum(AbbrevKind.variable),
         DW.TAG.variable, DW.CHILDREN.no, // header
         DW.AT.location,  DW.FORM.exprloc,
         DW.AT.type,      DW.FORM.ref4,
         DW.AT.name,      DW.FORM.string,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.array_type),
+        @intFromEnum(AbbrevKind.array_type),
         DW.TAG.array_type, DW.CHILDREN.yes, // header
         DW.AT.name,        DW.FORM.string,
         DW.AT.type,        DW.FORM.ref4,
         0,
         0, // table sentinel
-        @enumToInt(AbbrevKind.array_dim),
+        @intFromEnum(AbbrevKind.array_dim),
         DW.TAG.subrange_type, DW.CHILDREN.no, // header
         DW.AT.type,           DW.FORM.ref4,
         DW.AT.count,          DW.FORM.udata,
@@ -1838,7 +1838,7 @@ pub fn writeDbgInfoHeader(self: *Dwarf, module: *Module, low_pc: u64, high_pc: u
     const comp_dir_strp = try self.strtab.insert(self.allocator, compile_unit_dir);
     const producer_strp = try self.strtab.insert(self.allocator, link.producer_string);
 
-    di_buf.appendAssumeCapacity(@enumToInt(AbbrevKind.compile_unit));
+    di_buf.appendAssumeCapacity(@intFromEnum(AbbrevKind.compile_unit));
     if (self.bin_file.tag == .macho) {
         mem.writeIntLittle(u32, di_buf.addManyAsArrayAssumeCapacity(4), 0); // DW.AT.stmt_list, DW.FORM.sec_offset
         mem.writeIntLittle(u64, di_buf.addManyAsArrayAssumeCapacity(8), low_pc);
@@ -2038,7 +2038,7 @@ fn pwriteDbgInfoNops(
     const tracy = trace(@src());
     defer tracy.end();
 
-    const page_of_nops = [1]u8{@enumToInt(AbbrevKind.pad1)} ** 4096;
+    const page_of_nops = [1]u8{@intFromEnum(AbbrevKind.pad1)} ** 4096;
     var vecs: [32]std.os.iovec_const = undefined;
     var vec_index: usize = 0;
     {
@@ -2110,9 +2110,9 @@ fn writeDbgInfoNopsToArrayList(
         buffer.items.len,
         offset + content.len + next_padding_size + 1,
     ));
-    @memset(buffer.items[offset - prev_padding_size .. offset], @enumToInt(AbbrevKind.pad1));
+    @memset(buffer.items[offset - prev_padding_size .. offset], @intFromEnum(AbbrevKind.pad1));
     @memcpy(buffer.items[offset..][0..content.len], content);
-    @memset(buffer.items[offset + content.len ..][0..next_padding_size], @enumToInt(AbbrevKind.pad1));
+    @memset(buffer.items[offset + content.len ..][0..next_padding_size], @intFromEnum(AbbrevKind.pad1));
 
     if (trailing_zero) {
         buffer.items[offset + content.len + next_padding_size] = 0;
@@ -2653,7 +2653,7 @@ fn addDbgInfoErrorSet(
     const target_endian = target.cpu.arch.endian();
 
     // DW.AT.enumeration_type
-    try dbg_info_buffer.append(@enumToInt(AbbrevKind.enum_type));
+    try dbg_info_buffer.append(@intFromEnum(AbbrevKind.enum_type));
     // DW.AT.byte_size, DW.FORM.udata
     const abi_size = Type.anyerror.abiSize(mod);
     try leb128.writeULEB128(dbg_info_buffer.writer(), abi_size);
@@ -2664,7 +2664,7 @@ fn addDbgInfoErrorSet(
     // DW.AT.enumerator
     const no_error = "(no error)";
     try dbg_info_buffer.ensureUnusedCapacity(no_error.len + 2 + @sizeOf(u64));
-    dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.enum_variant));
+    dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.enum_variant));
     // DW.AT.name, DW.FORM.string
     dbg_info_buffer.appendSliceAssumeCapacity(no_error);
     dbg_info_buffer.appendAssumeCapacity(0);
@@ -2677,7 +2677,7 @@ fn addDbgInfoErrorSet(
         const error_name = mod.intern_pool.stringToSlice(error_name_ip);
         // DW.AT.enumerator
         try dbg_info_buffer.ensureUnusedCapacity(error_name.len + 2 + @sizeOf(u64));
-        dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.enum_variant));
+        dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevKind.enum_variant));
         // DW.AT.name, DW.FORM.string
         dbg_info_buffer.appendSliceAssumeCapacity(error_name);
         dbg_info_buffer.appendAssumeCapacity(0);
src/link/Elf.zig
@@ -1826,7 +1826,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node) !v
 
             for (system_libs, 0..) |link_lib, i| {
                 const lib_as_needed = !system_libs_values[i].needed;
-                switch ((@as(u2, @boolToInt(lib_as_needed)) << 1) | @boolToInt(as_needed)) {
+                switch ((@as(u2, @intFromBool(lib_as_needed)) << 1) | @intFromBool(as_needed)) {
                     0b00, 0b11 => {},
                     0b01 => {
                         argv.appendAssumeCapacity("--no-as-needed");
@@ -2048,11 +2048,11 @@ fn writeElfHeader(self: *Elf) !void {
             .Dynamic => elf.ET.DYN,
         },
     };
-    mem.writeInt(u16, hdr_buf[index..][0..2], @enumToInt(elf_type), endian);
+    mem.writeInt(u16, hdr_buf[index..][0..2], @intFromEnum(elf_type), endian);
     index += 2;
 
     const machine = self.base.options.target.cpu.arch.toElfMachine();
-    mem.writeInt(u16, hdr_buf[index..][0..2], @enumToInt(machine), endian);
+    mem.writeInt(u16, hdr_buf[index..][0..2], @intFromEnum(machine), endian);
     index += 2;
 
     // ELF Version, again
@@ -2557,7 +2557,7 @@ fn updateDeclCode(self: *Elf, decl_index: Module.Decl.Index, code: []const u8, s
                     .iov_len = code.len,
                 }};
                 var remote_vec: [1]std.os.iovec_const = .{.{
-                    .iov_base = @intToPtr([*]u8, @intCast(usize, local_sym.st_value)),
+                    .iov_base = @ptrFromInt([*]u8, @intCast(usize, local_sym.st_value)),
                     .iov_len = code.len,
                 }};
                 const rc = std.os.linux.process_vm_writev(pid, &code_vec, &remote_vec, 0);
@@ -3051,7 +3051,7 @@ fn writeOffsetTableEntry(self: *Elf, index: @TypeOf(self.got_table).Index) !void
                             .iov_len = buf.len,
                         }};
                         var remote_vec: [1]std.os.iovec_const = .{.{
-                            .iov_base = @intToPtr([*]u8, @intCast(usize, vaddr)),
+                            .iov_base = @ptrFromInt([*]u8, @intCast(usize, vaddr)),
                             .iov_len = buf.len,
                         }};
                         const rc = std.os.linux.process_vm_writev(pid, &local_vec, &remote_vec, 0);
src/link/Plan9.zig
@@ -1192,7 +1192,7 @@ pub fn writeSym(self: *Plan9, w: anytype, sym: aout.Sym) !void {
     } else {
         try w.writeIntBig(u64, sym.value);
     }
-    try w.writeByte(@enumToInt(sym.type));
+    try w.writeByte(@intFromEnum(sym.type));
     try w.writeAll(sym.name);
     try w.writeByte(0);
 }
src/link/Wasm.zig
@@ -196,7 +196,7 @@ pub const Segment = struct {
     };
 
     pub fn isPassive(segment: Segment) bool {
-        return segment.flags & @enumToInt(Flag.WASM_DATA_SEGMENT_IS_PASSIVE) != 0;
+        return segment.flags & @intFromEnum(Flag.WASM_DATA_SEGMENT_IS_PASSIVE) != 0;
     }
 
     /// For a given segment, determines if it needs passive initialization
@@ -1094,14 +1094,14 @@ fn validateFeatures(
             const value = @intCast(u16, object_index) << 1 | @as(u1, 1);
             switch (feature.prefix) {
                 .used => {
-                    used[@enumToInt(feature.tag)] = value;
+                    used[@intFromEnum(feature.tag)] = value;
                 },
                 .disallowed => {
-                    disallowed[@enumToInt(feature.tag)] = value;
+                    disallowed[@intFromEnum(feature.tag)] = value;
                 },
                 .required => {
-                    required[@enumToInt(feature.tag)] = value;
-                    used[@enumToInt(feature.tag)] = value;
+                    required[@intFromEnum(feature.tag)] = value;
+                    used[@intFromEnum(feature.tag)] = value;
                 },
             }
         }
@@ -1120,9 +1120,9 @@ fn validateFeatures(
         const is_enabled = @truncate(u1, used_set) != 0;
         if (infer) {
             allowed[used_index] = is_enabled;
-            emit_features_count.* += @boolToInt(is_enabled);
+            emit_features_count.* += @intFromBool(is_enabled);
         } else if (is_enabled and !allowed[used_index]) {
-            log.err("feature '{}' not allowed, but used by linked object", .{@intToEnum(types.Feature.Tag, used_index)});
+            log.err("feature '{}' not allowed, but used by linked object", .{@enumFromInt(types.Feature.Tag, used_index)});
             log.err("  defined in '{s}'", .{wasm.objects.items[used_set >> 1].name});
             valid_feature_set = false;
         }
@@ -1133,7 +1133,7 @@ fn validateFeatures(
     }
 
     if (wasm.base.options.shared_memory) {
-        const disallowed_feature = disallowed[@enumToInt(types.Feature.Tag.shared_mem)];
+        const disallowed_feature = disallowed[@intFromEnum(types.Feature.Tag.shared_mem)];
         if (@truncate(u1, disallowed_feature) != 0) {
             log.err(
                 "shared-memory is disallowed by '{s}' because it wasn't compiled with 'atomics' and 'bulk-memory' features enabled",
@@ -1143,7 +1143,7 @@ fn validateFeatures(
         }
 
         for ([_]types.Feature.Tag{ .atomics, .bulk_memory }) |feature| {
-            if (!allowed[@enumToInt(feature)]) {
+            if (!allowed[@intFromEnum(feature)]) {
                 log.err("feature '{}' is not used but is required for shared-memory", .{feature});
             }
         }
@@ -1151,7 +1151,7 @@ fn validateFeatures(
 
     if (has_tls) {
         for ([_]types.Feature.Tag{ .atomics, .bulk_memory }) |feature| {
-            if (!allowed[@enumToInt(feature)]) {
+            if (!allowed[@intFromEnum(feature)]) {
                 log.err("feature '{}' is not used but is required for thread-local storage", .{feature});
             }
         }
@@ -1162,7 +1162,7 @@ fn validateFeatures(
         for (object.features) |feature| {
             if (feature.prefix == .disallowed) continue; // already defined in 'disallowed' set.
             // from here a feature is always used
-            const disallowed_feature = disallowed[@enumToInt(feature.tag)];
+            const disallowed_feature = disallowed[@intFromEnum(feature.tag)];
             if (@truncate(u1, disallowed_feature) != 0) {
                 log.err("feature '{}' is disallowed, but used by linked object", .{feature.tag});
                 log.err("  disallowed by '{s}'", .{wasm.objects.items[disallowed_feature >> 1].name});
@@ -1170,14 +1170,14 @@ fn validateFeatures(
                 valid_feature_set = false;
             }
 
-            object_used_features[@enumToInt(feature.tag)] = true;
+            object_used_features[@intFromEnum(feature.tag)] = true;
         }
 
         // validate the linked object file has each required feature
         for (required, 0..) |required_feature, feature_index| {
             const is_required = @truncate(u1, required_feature) != 0;
             if (is_required and !object_used_features[feature_index]) {
-                log.err("feature '{}' is required but not used in linked object", .{@intToEnum(types.Feature.Tag, feature_index)});
+                log.err("feature '{}' is required but not used in linked object", .{@enumFromInt(types.Feature.Tag, feature_index)});
                 log.err("  required by '{s}'", .{wasm.objects.items[required_feature >> 1].name});
                 log.err("  missing in '{s}'", .{object.name});
                 valid_feature_set = false;
@@ -1324,7 +1324,7 @@ pub fn allocateSymbol(wasm: *Wasm) !u32 {
     try wasm.symbols.ensureUnusedCapacity(wasm.base.allocator, 1);
     var symbol: Symbol = .{
         .name = undefined, // will be set after updateDecl
-        .flags = @enumToInt(Symbol.Flag.WASM_SYM_BINDING_LOCAL),
+        .flags = @intFromEnum(Symbol.Flag.WASM_SYM_BINDING_LOCAL),
         .tag = undefined, // will be set after updateDecl
         .index = undefined, // will be set after updateDecl
         .virtual_address = undefined, // will be set during atom allocation
@@ -1560,7 +1560,7 @@ pub fn lowerUnnamedConst(wasm: *Wasm, tv: TypedValue, decl_index: Module.Decl.In
         atom.alignment = tv.ty.abiAlignment(mod);
         wasm.symbols.items[atom.sym_index] = .{
             .name = try wasm.string_table.put(wasm.base.allocator, name),
-            .flags = @enumToInt(Symbol.Flag.WASM_SYM_BINDING_LOCAL),
+            .flags = @intFromEnum(Symbol.Flag.WASM_SYM_BINDING_LOCAL),
             .tag = .data,
             .index = undefined,
             .virtual_address = undefined,
@@ -2028,7 +2028,7 @@ fn parseAtom(wasm: *Wasm, atom_index: Atom.Index, kind: Kind) !void {
                 const index = @intCast(u32, wasm.segments.items.len);
                 var flags: u32 = 0;
                 if (wasm.base.options.shared_memory) {
-                    flags |= @enumToInt(Segment.Flag.WASM_DATA_SEGMENT_IS_PASSIVE);
+                    flags |= @intFromEnum(Segment.Flag.WASM_DATA_SEGMENT_IS_PASSIVE);
                 }
                 try wasm.segments.append(wasm.base.allocator, .{
                     .alignment = atom.alignment,
@@ -2868,7 +2868,7 @@ pub fn getMatchingSegment(wasm: *Wasm, object_index: u16, relocatable_index: u32
                 result.value_ptr.* = index;
                 var flags: u32 = 0;
                 if (wasm.base.options.shared_memory) {
-                    flags |= @enumToInt(Segment.Flag.WASM_DATA_SEGMENT_IS_PASSIVE);
+                    flags |= @intFromEnum(Segment.Flag.WASM_DATA_SEGMENT_IS_PASSIVE);
                 }
                 try wasm.segments.append(wasm.base.allocator, .{
                     .alignment = 1,
@@ -3073,7 +3073,7 @@ pub fn createDebugSectionForIndex(wasm: *Wasm, index: *?u32, name: []const u8) !
         .tag = .section,
         .name = try wasm.string_table.put(wasm.base.allocator, name),
         .index = 0,
-        .flags = @enumToInt(Symbol.Flag.WASM_SYM_BINDING_LOCAL),
+        .flags = @intFromEnum(Symbol.Flag.WASM_SYM_BINDING_LOCAL),
     };
 
     atom.alignment = 1; // debug sections are always 1-byte-aligned
@@ -3544,7 +3544,7 @@ fn writeToFile(
             header_offset,
             .import,
             @intCast(u32, binary_bytes.items.len - header_offset - header_size),
-            @intCast(u32, wasm.imports.count() + @boolToInt(import_memory)),
+            @intCast(u32, wasm.imports.count() + @intFromBool(import_memory)),
         );
         section_count += 1;
     }
@@ -3606,7 +3606,7 @@ fn writeToFile(
 
         for (wasm.wasm_globals.items) |global| {
             try binary_writer.writeByte(std.wasm.valtype(global.global_type.valtype));
-            try binary_writer.writeByte(@boolToInt(global.global_type.mutable));
+            try binary_writer.writeByte(@intFromBool(global.global_type.mutable));
             try emitInit(binary_writer, global.init);
         }
 
@@ -3628,7 +3628,7 @@ fn writeToFile(
             const name = wasm.string_table.get(exp.name);
             try leb.writeULEB128(binary_writer, @intCast(u32, name.len));
             try binary_writer.writeAll(name);
-            try leb.writeULEB128(binary_writer, @enumToInt(exp.kind));
+            try leb.writeULEB128(binary_writer, @intFromEnum(exp.kind));
             try leb.writeULEB128(binary_writer, exp.index);
         }
 
@@ -3644,7 +3644,7 @@ fn writeToFile(
             header_offset,
             .@"export",
             @intCast(u32, binary_bytes.items.len - header_offset - header_size),
-            @intCast(u32, wasm.exports.items.len) + @boolToInt(!import_memory),
+            @intCast(u32, wasm.exports.items.len) + @intFromBool(!import_memory),
         );
         section_count += 1;
     }
@@ -3682,7 +3682,7 @@ fn writeToFile(
     }
 
     // When the shared-memory option is enabled, we *must* emit the 'data count' section.
-    const data_segments_count = wasm.data_segments.count() - @boolToInt(wasm.data_segments.contains(".bss") and import_memory);
+    const data_segments_count = wasm.data_segments.count() - @intFromBool(wasm.data_segments.contains(".bss") and import_memory);
     if (data_segments_count != 0 and wasm.base.options.shared_memory) {
         const header_offset = try reserveVecSectionHeader(&binary_bytes);
         try writeVecSectionHeader(
@@ -3760,7 +3760,7 @@ fn writeToFile(
             var atom_index = wasm.atoms.get(segment_index).?;
 
             try leb.writeULEB128(binary_writer, segment.flags);
-            if (segment.flags & @enumToInt(Wasm.Segment.Flag.WASM_DATA_SEGMENT_HAS_MEMINDEX) != 0) {
+            if (segment.flags & @intFromEnum(Wasm.Segment.Flag.WASM_DATA_SEGMENT_HAS_MEMINDEX) != 0) {
                 try leb.writeULEB128(binary_writer, @as(u32, 0)); // memory is always index 0 as we only have 1 memory entry
             }
             // when a segment is passive, it's initialized during runtime.
@@ -4030,8 +4030,8 @@ fn emitFeaturesSection(binary_bytes: *std.ArrayList(u8), enabled_features: []con
     try leb.writeULEB128(writer, features_count);
     for (enabled_features, 0..) |enabled, feature_index| {
         if (enabled) {
-            const feature: types.Feature = .{ .prefix = .used, .tag = @intToEnum(types.Feature.Tag, feature_index) };
-            try leb.writeULEB128(writer, @enumToInt(feature.prefix));
+            const feature: types.Feature = .{ .prefix = .used, .tag = @enumFromInt(types.Feature.Tag, feature_index) };
+            try leb.writeULEB128(writer, @intFromEnum(feature.prefix));
             var buf: [100]u8 = undefined;
             const string = try std.fmt.bufPrint(&buf, "{}", .{feature.tag});
             try leb.writeULEB128(writer, @intCast(u32, string.len));
@@ -4121,7 +4121,7 @@ fn emitNameSubsection(wasm: *Wasm, section_id: std.wasm.NameSubsection, names: a
     }
 
     // From now, write to the actual writer
-    try leb.writeULEB128(writer, @enumToInt(section_id));
+    try leb.writeULEB128(writer, @intFromEnum(section_id));
     try leb.writeULEB128(writer, @intCast(u32, section_list.items.len));
     try writer.writeAll(section_list.items);
 }
@@ -4169,12 +4169,12 @@ fn emitImport(wasm: *Wasm, writer: anytype, import: types.Import) !void {
     try leb.writeULEB128(writer, @intCast(u32, name.len));
     try writer.writeAll(name);
 
-    try writer.writeByte(@enumToInt(import.kind));
+    try writer.writeByte(@intFromEnum(import.kind));
     switch (import.kind) {
         .function => |type_index| try leb.writeULEB128(writer, type_index),
         .global => |global_type| {
             try leb.writeULEB128(writer, std.wasm.valtype(global_type.valtype));
-            try writer.writeByte(@boolToInt(global_type.mutable));
+            try writer.writeByte(@intFromBool(global_type.mutable));
         },
         .table => |table| {
             try leb.writeULEB128(writer, std.wasm.reftype(table.reftype));
@@ -4609,7 +4609,7 @@ fn reserveCustomSectionHeader(bytes: *std.ArrayList(u8)) !u32 {
 
 fn writeVecSectionHeader(buffer: []u8, offset: u32, section: std.wasm.Section, size: u32, items: u32) !void {
     var buf: [1 + 5 + 5]u8 = undefined;
-    buf[0] = @enumToInt(section);
+    buf[0] = @intFromEnum(section);
     leb.writeUnsignedFixed(5, buf[1..6], size);
     leb.writeUnsignedFixed(5, buf[6..], items);
     buffer[offset..][0..buf.len].* = buf;
@@ -4645,7 +4645,7 @@ fn emitLinkSection(wasm: *Wasm, binary_bytes: *std.ArrayList(u8), symbol_table:
 fn emitSymbolTable(wasm: *Wasm, binary_bytes: *std.ArrayList(u8), symbol_table: *std.AutoArrayHashMap(SymbolLoc, u32)) !void {
     const writer = binary_bytes.writer();
 
-    try leb.writeULEB128(writer, @enumToInt(types.SubsectionType.WASM_SYMBOL_TABLE));
+    try leb.writeULEB128(writer, @intFromEnum(types.SubsectionType.WASM_SYMBOL_TABLE));
     const table_offset = binary_bytes.items.len;
 
     var symbol_count: u32 = 0;
@@ -4655,7 +4655,7 @@ fn emitSymbolTable(wasm: *Wasm, binary_bytes: *std.ArrayList(u8), symbol_table:
         try symbol_table.putNoClobber(sym_loc, symbol_count);
         symbol_count += 1;
         log.debug("Emit symbol: {}", .{symbol});
-        try leb.writeULEB128(writer, @enumToInt(symbol.tag));
+        try leb.writeULEB128(writer, @intFromEnum(symbol.tag));
         try leb.writeULEB128(writer, symbol.flags);
 
         const sym_name = if (wasm.export_names.get(sym_loc)) |exp_name| wasm.string_table.get(exp_name) else sym_loc.getName(wasm);
@@ -4693,7 +4693,7 @@ fn emitSymbolTable(wasm: *Wasm, binary_bytes: *std.ArrayList(u8), symbol_table:
 
 fn emitSegmentInfo(wasm: *Wasm, binary_bytes: *std.ArrayList(u8)) !void {
     const writer = binary_bytes.writer();
-    try leb.writeULEB128(writer, @enumToInt(types.SubsectionType.WASM_SEGMENT_INFO));
+    try leb.writeULEB128(writer, @intFromEnum(types.SubsectionType.WASM_SEGMENT_INFO));
     const segment_offset = binary_bytes.items.len;
 
     try leb.writeULEB128(writer, @intCast(u32, wasm.segment_info.count()));
@@ -4754,7 +4754,7 @@ fn emitCodeRelocations(
             count += 1;
             const sym_loc: SymbolLoc = .{ .file = atom.file, .index = relocation.index };
             const symbol_index = symbol_table.get(sym_loc).?;
-            try leb.writeULEB128(writer, @enumToInt(relocation.relocation_type));
+            try leb.writeULEB128(writer, @intFromEnum(relocation.relocation_type));
             const offset = atom.offset + relocation.offset + size_offset;
             try leb.writeULEB128(writer, offset);
             try leb.writeULEB128(writer, symbol_index);
@@ -4804,7 +4804,7 @@ fn emitDataRelocations(
                     .index = relocation.index,
                 };
                 const symbol_index = symbol_table.get(sym_loc).?;
-                try leb.writeULEB128(writer, @enumToInt(relocation.relocation_type));
+                try leb.writeULEB128(writer, @intFromEnum(relocation.relocation_type));
                 const offset = atom.offset + relocation.offset + size_offset;
                 try leb.writeULEB128(writer, offset);
                 try leb.writeULEB128(writer, symbol_index);
src/translate_c/ast.zig
@@ -228,7 +228,7 @@ pub const Node = extern union {
         array_filler,
 
         pub const last_no_payload_tag = Tag.@"break";
-        pub const no_payload_count = @enumToInt(last_no_payload_tag) + 1;
+        pub const no_payload_count = @intFromEnum(last_no_payload_tag) + 1;
 
         pub fn Type(comptime t: Tag) type {
             return switch (t) {
@@ -381,8 +381,8 @@ pub const Node = extern union {
         }
 
         pub fn init(comptime t: Tag) Node {
-            comptime std.debug.assert(@enumToInt(t) < Tag.no_payload_count);
-            return .{ .tag_if_small_enough = @enumToInt(t) };
+            comptime std.debug.assert(@intFromEnum(t) < Tag.no_payload_count);
+            return .{ .tag_if_small_enough = @intFromEnum(t) };
         }
 
         pub fn create(comptime t: Tag, ally: Allocator, data: Data(t)) error{OutOfMemory}!Node {
@@ -401,7 +401,7 @@ pub const Node = extern union {
 
     pub fn tag(self: Node) Tag {
         if (self.tag_if_small_enough < Tag.no_payload_count) {
-            return @intToEnum(Tag, @intCast(std.meta.Tag(Tag), self.tag_if_small_enough));
+            return @enumFromInt(Tag, @intCast(std.meta.Tag(Tag), self.tag_if_small_enough));
         } else {
             return self.ptr_otherwise.tag;
         }
@@ -418,7 +418,7 @@ pub const Node = extern union {
     }
 
     pub fn initPayload(payload: *Payload) Node {
-        std.debug.assert(@enumToInt(payload.tag) >= Tag.no_payload_count);
+        std.debug.assert(@intFromEnum(payload.tag) >= Tag.no_payload_count);
         return .{ .ptr_otherwise = payload };
     }
 
src/Air.zig
@@ -850,93 +850,93 @@ pub const Inst = struct {
     pub const Index = u32;
 
     pub const Ref = enum(u32) {
-        u1_type = @enumToInt(InternPool.Index.u1_type),
-        u8_type = @enumToInt(InternPool.Index.u8_type),
-        i8_type = @enumToInt(InternPool.Index.i8_type),
-        u16_type = @enumToInt(InternPool.Index.u16_type),
-        i16_type = @enumToInt(InternPool.Index.i16_type),
-        u29_type = @enumToInt(InternPool.Index.u29_type),
-        u32_type = @enumToInt(InternPool.Index.u32_type),
-        i32_type = @enumToInt(InternPool.Index.i32_type),
-        u64_type = @enumToInt(InternPool.Index.u64_type),
-        i64_type = @enumToInt(InternPool.Index.i64_type),
-        u80_type = @enumToInt(InternPool.Index.u80_type),
-        u128_type = @enumToInt(InternPool.Index.u128_type),
-        i128_type = @enumToInt(InternPool.Index.i128_type),
-        usize_type = @enumToInt(InternPool.Index.usize_type),
-        isize_type = @enumToInt(InternPool.Index.isize_type),
-        c_char_type = @enumToInt(InternPool.Index.c_char_type),
-        c_short_type = @enumToInt(InternPool.Index.c_short_type),
-        c_ushort_type = @enumToInt(InternPool.Index.c_ushort_type),
-        c_int_type = @enumToInt(InternPool.Index.c_int_type),
-        c_uint_type = @enumToInt(InternPool.Index.c_uint_type),
-        c_long_type = @enumToInt(InternPool.Index.c_long_type),
-        c_ulong_type = @enumToInt(InternPool.Index.c_ulong_type),
-        c_longlong_type = @enumToInt(InternPool.Index.c_longlong_type),
-        c_ulonglong_type = @enumToInt(InternPool.Index.c_ulonglong_type),
-        c_longdouble_type = @enumToInt(InternPool.Index.c_longdouble_type),
-        f16_type = @enumToInt(InternPool.Index.f16_type),
-        f32_type = @enumToInt(InternPool.Index.f32_type),
-        f64_type = @enumToInt(InternPool.Index.f64_type),
-        f80_type = @enumToInt(InternPool.Index.f80_type),
-        f128_type = @enumToInt(InternPool.Index.f128_type),
-        anyopaque_type = @enumToInt(InternPool.Index.anyopaque_type),
-        bool_type = @enumToInt(InternPool.Index.bool_type),
-        void_type = @enumToInt(InternPool.Index.void_type),
-        type_type = @enumToInt(InternPool.Index.type_type),
-        anyerror_type = @enumToInt(InternPool.Index.anyerror_type),
-        comptime_int_type = @enumToInt(InternPool.Index.comptime_int_type),
-        comptime_float_type = @enumToInt(InternPool.Index.comptime_float_type),
-        noreturn_type = @enumToInt(InternPool.Index.noreturn_type),
-        anyframe_type = @enumToInt(InternPool.Index.anyframe_type),
-        null_type = @enumToInt(InternPool.Index.null_type),
-        undefined_type = @enumToInt(InternPool.Index.undefined_type),
-        enum_literal_type = @enumToInt(InternPool.Index.enum_literal_type),
-        atomic_order_type = @enumToInt(InternPool.Index.atomic_order_type),
-        atomic_rmw_op_type = @enumToInt(InternPool.Index.atomic_rmw_op_type),
-        calling_convention_type = @enumToInt(InternPool.Index.calling_convention_type),
-        address_space_type = @enumToInt(InternPool.Index.address_space_type),
-        float_mode_type = @enumToInt(InternPool.Index.float_mode_type),
-        reduce_op_type = @enumToInt(InternPool.Index.reduce_op_type),
-        call_modifier_type = @enumToInt(InternPool.Index.call_modifier_type),
-        prefetch_options_type = @enumToInt(InternPool.Index.prefetch_options_type),
-        export_options_type = @enumToInt(InternPool.Index.export_options_type),
-        extern_options_type = @enumToInt(InternPool.Index.extern_options_type),
-        type_info_type = @enumToInt(InternPool.Index.type_info_type),
-        manyptr_u8_type = @enumToInt(InternPool.Index.manyptr_u8_type),
-        manyptr_const_u8_type = @enumToInt(InternPool.Index.manyptr_const_u8_type),
-        manyptr_const_u8_sentinel_0_type = @enumToInt(InternPool.Index.manyptr_const_u8_sentinel_0_type),
-        single_const_pointer_to_comptime_int_type = @enumToInt(InternPool.Index.single_const_pointer_to_comptime_int_type),
-        slice_const_u8_type = @enumToInt(InternPool.Index.slice_const_u8_type),
-        slice_const_u8_sentinel_0_type = @enumToInt(InternPool.Index.slice_const_u8_sentinel_0_type),
-        anyerror_void_error_union_type = @enumToInt(InternPool.Index.anyerror_void_error_union_type),
-        generic_poison_type = @enumToInt(InternPool.Index.generic_poison_type),
-        empty_struct_type = @enumToInt(InternPool.Index.empty_struct_type),
-        undef = @enumToInt(InternPool.Index.undef),
-        zero = @enumToInt(InternPool.Index.zero),
-        zero_usize = @enumToInt(InternPool.Index.zero_usize),
-        zero_u8 = @enumToInt(InternPool.Index.zero_u8),
-        one = @enumToInt(InternPool.Index.one),
-        one_usize = @enumToInt(InternPool.Index.one_usize),
-        one_u8 = @enumToInt(InternPool.Index.one_u8),
-        four_u8 = @enumToInt(InternPool.Index.four_u8),
-        negative_one = @enumToInt(InternPool.Index.negative_one),
-        calling_convention_c = @enumToInt(InternPool.Index.calling_convention_c),
-        calling_convention_inline = @enumToInt(InternPool.Index.calling_convention_inline),
-        void_value = @enumToInt(InternPool.Index.void_value),
-        unreachable_value = @enumToInt(InternPool.Index.unreachable_value),
-        null_value = @enumToInt(InternPool.Index.null_value),
-        bool_true = @enumToInt(InternPool.Index.bool_true),
-        bool_false = @enumToInt(InternPool.Index.bool_false),
-        empty_struct = @enumToInt(InternPool.Index.empty_struct),
-        generic_poison = @enumToInt(InternPool.Index.generic_poison),
+        u1_type = @intFromEnum(InternPool.Index.u1_type),
+        u8_type = @intFromEnum(InternPool.Index.u8_type),
+        i8_type = @intFromEnum(InternPool.Index.i8_type),
+        u16_type = @intFromEnum(InternPool.Index.u16_type),
+        i16_type = @intFromEnum(InternPool.Index.i16_type),
+        u29_type = @intFromEnum(InternPool.Index.u29_type),
+        u32_type = @intFromEnum(InternPool.Index.u32_type),
+        i32_type = @intFromEnum(InternPool.Index.i32_type),
+        u64_type = @intFromEnum(InternPool.Index.u64_type),
+        i64_type = @intFromEnum(InternPool.Index.i64_type),
+        u80_type = @intFromEnum(InternPool.Index.u80_type),
+        u128_type = @intFromEnum(InternPool.Index.u128_type),
+        i128_type = @intFromEnum(InternPool.Index.i128_type),
+        usize_type = @intFromEnum(InternPool.Index.usize_type),
+        isize_type = @intFromEnum(InternPool.Index.isize_type),
+        c_char_type = @intFromEnum(InternPool.Index.c_char_type),
+        c_short_type = @intFromEnum(InternPool.Index.c_short_type),
+        c_ushort_type = @intFromEnum(InternPool.Index.c_ushort_type),
+        c_int_type = @intFromEnum(InternPool.Index.c_int_type),
+        c_uint_type = @intFromEnum(InternPool.Index.c_uint_type),
+        c_long_type = @intFromEnum(InternPool.Index.c_long_type),
+        c_ulong_type = @intFromEnum(InternPool.Index.c_ulong_type),
+        c_longlong_type = @intFromEnum(InternPool.Index.c_longlong_type),
+        c_ulonglong_type = @intFromEnum(InternPool.Index.c_ulonglong_type),
+        c_longdouble_type = @intFromEnum(InternPool.Index.c_longdouble_type),
+        f16_type = @intFromEnum(InternPool.Index.f16_type),
+        f32_type = @intFromEnum(InternPool.Index.f32_type),
+        f64_type = @intFromEnum(InternPool.Index.f64_type),
+        f80_type = @intFromEnum(InternPool.Index.f80_type),
+        f128_type = @intFromEnum(InternPool.Index.f128_type),
+        anyopaque_type = @intFromEnum(InternPool.Index.anyopaque_type),
+        bool_type = @intFromEnum(InternPool.Index.bool_type),
+        void_type = @intFromEnum(InternPool.Index.void_type),
+        type_type = @intFromEnum(InternPool.Index.type_type),
+        anyerror_type = @intFromEnum(InternPool.Index.anyerror_type),
+        comptime_int_type = @intFromEnum(InternPool.Index.comptime_int_type),
+        comptime_float_type = @intFromEnum(InternPool.Index.comptime_float_type),
+        noreturn_type = @intFromEnum(InternPool.Index.noreturn_type),
+        anyframe_type = @intFromEnum(InternPool.Index.anyframe_type),
+        null_type = @intFromEnum(InternPool.Index.null_type),
+        undefined_type = @intFromEnum(InternPool.Index.undefined_type),
+        enum_literal_type = @intFromEnum(InternPool.Index.enum_literal_type),
+        atomic_order_type = @intFromEnum(InternPool.Index.atomic_order_type),
+        atomic_rmw_op_type = @intFromEnum(InternPool.Index.atomic_rmw_op_type),
+        calling_convention_type = @intFromEnum(InternPool.Index.calling_convention_type),
+        address_space_type = @intFromEnum(InternPool.Index.address_space_type),
+        float_mode_type = @intFromEnum(InternPool.Index.float_mode_type),
+        reduce_op_type = @intFromEnum(InternPool.Index.reduce_op_type),
+        call_modifier_type = @intFromEnum(InternPool.Index.call_modifier_type),
+        prefetch_options_type = @intFromEnum(InternPool.Index.prefetch_options_type),
+        export_options_type = @intFromEnum(InternPool.Index.export_options_type),
+        extern_options_type = @intFromEnum(InternPool.Index.extern_options_type),
+        type_info_type = @intFromEnum(InternPool.Index.type_info_type),
+        manyptr_u8_type = @intFromEnum(InternPool.Index.manyptr_u8_type),
+        manyptr_const_u8_type = @intFromEnum(InternPool.Index.manyptr_const_u8_type),
+        manyptr_const_u8_sentinel_0_type = @intFromEnum(InternPool.Index.manyptr_const_u8_sentinel_0_type),
+        single_const_pointer_to_comptime_int_type = @intFromEnum(InternPool.Index.single_const_pointer_to_comptime_int_type),
+        slice_const_u8_type = @intFromEnum(InternPool.Index.slice_const_u8_type),
+        slice_const_u8_sentinel_0_type = @intFromEnum(InternPool.Index.slice_const_u8_sentinel_0_type),
+        anyerror_void_error_union_type = @intFromEnum(InternPool.Index.anyerror_void_error_union_type),
+        generic_poison_type = @intFromEnum(InternPool.Index.generic_poison_type),
+        empty_struct_type = @intFromEnum(InternPool.Index.empty_struct_type),
+        undef = @intFromEnum(InternPool.Index.undef),
+        zero = @intFromEnum(InternPool.Index.zero),
+        zero_usize = @intFromEnum(InternPool.Index.zero_usize),
+        zero_u8 = @intFromEnum(InternPool.Index.zero_u8),
+        one = @intFromEnum(InternPool.Index.one),
+        one_usize = @intFromEnum(InternPool.Index.one_usize),
+        one_u8 = @intFromEnum(InternPool.Index.one_u8),
+        four_u8 = @intFromEnum(InternPool.Index.four_u8),
+        negative_one = @intFromEnum(InternPool.Index.negative_one),
+        calling_convention_c = @intFromEnum(InternPool.Index.calling_convention_c),
+        calling_convention_inline = @intFromEnum(InternPool.Index.calling_convention_inline),
+        void_value = @intFromEnum(InternPool.Index.void_value),
+        unreachable_value = @intFromEnum(InternPool.Index.unreachable_value),
+        null_value = @intFromEnum(InternPool.Index.null_value),
+        bool_true = @intFromEnum(InternPool.Index.bool_true),
+        bool_false = @intFromEnum(InternPool.Index.bool_false),
+        empty_struct = @intFromEnum(InternPool.Index.empty_struct),
+        generic_poison = @intFromEnum(InternPool.Index.generic_poison),
 
         /// This Ref does not correspond to any AIR instruction or constant
         /// value. It is used to handle argument types of var args functions.
-        var_args_param_type = @enumToInt(InternPool.Index.var_args_param_type),
+        var_args_param_type = @intFromEnum(InternPool.Index.var_args_param_type),
         /// This Ref does not correspond to any AIR instruction or constant
         /// value and may instead be used as a sentinel to indicate null.
-        none = @enumToInt(InternPool.Index.none),
+        none = @intFromEnum(InternPool.Index.none),
         _,
     };
 
@@ -1103,11 +1103,11 @@ pub const VectorCmp = struct {
     op: u32,
 
     pub fn compareOperator(self: VectorCmp) std.math.CompareOperator {
-        return @intToEnum(std.math.CompareOperator, @truncate(u3, self.op));
+        return @enumFromInt(std.math.CompareOperator, @truncate(u3, self.op));
     }
 
     pub fn encodeOp(compare_operator: std.math.CompareOperator) u32 {
-        return @enumToInt(compare_operator);
+        return @intFromEnum(compare_operator);
     }
 };
 
@@ -1148,11 +1148,11 @@ pub const Cmpxchg = struct {
     flags: u32,
 
     pub fn successOrder(self: Cmpxchg) std.builtin.AtomicOrder {
-        return @intToEnum(std.builtin.AtomicOrder, @truncate(u3, self.flags));
+        return @enumFromInt(std.builtin.AtomicOrder, @truncate(u3, self.flags));
     }
 
     pub fn failureOrder(self: Cmpxchg) std.builtin.AtomicOrder {
-        return @intToEnum(std.builtin.AtomicOrder, @truncate(u3, self.flags >> 3));
+        return @enumFromInt(std.builtin.AtomicOrder, @truncate(u3, self.flags >> 3));
     }
 };
 
@@ -1163,11 +1163,11 @@ pub const AtomicRmw = struct {
     flags: u32,
 
     pub fn ordering(self: AtomicRmw) std.builtin.AtomicOrder {
-        return @intToEnum(std.builtin.AtomicOrder, @truncate(u3, self.flags));
+        return @enumFromInt(std.builtin.AtomicOrder, @truncate(u3, self.flags));
     }
 
     pub fn op(self: AtomicRmw) std.builtin.AtomicRmwOp {
-        return @intToEnum(std.builtin.AtomicRmwOp, @truncate(u4, self.flags >> 3));
+        return @enumFromInt(std.builtin.AtomicRmwOp, @truncate(u4, self.flags >> 3));
     }
 };
 
@@ -1177,13 +1177,13 @@ pub const UnionInit = struct {
 };
 
 pub fn getMainBody(air: Air) []const Air.Inst.Index {
-    const body_index = air.extra[@enumToInt(ExtraIndex.main_block)];
+    const body_index = air.extra[@intFromEnum(ExtraIndex.main_block)];
     const extra = air.extraData(Block, body_index);
     return air.extra[extra.end..][0..extra.data.body_len];
 }
 
 pub fn typeOf(air: Air, inst: Air.Inst.Ref, ip: *const InternPool) Type {
-    const ref_int = @enumToInt(inst);
+    const ref_int = @intFromEnum(inst);
     if (ref_int < InternPool.static_keys.len) {
         return InternPool.static_keys[ref_int].typeOf().toType();
     }
@@ -1446,9 +1446,9 @@ pub fn typeOfIndex(air: Air, inst: Air.Inst.Index, ip: *const InternPool) Type {
 }
 
 pub fn getRefType(air: Air, ref: Air.Inst.Ref) Type {
-    const ref_int = @enumToInt(ref);
+    const ref_int = @intFromEnum(ref);
     if (ref_int < ref_start_index) {
-        const ip_index = @intToEnum(InternPool.Index, ref_int);
+        const ip_index = @enumFromInt(InternPool.Index, ref_int);
         return ip_index.toType();
     }
     const inst_index = ref_int - ref_start_index;
@@ -1469,9 +1469,9 @@ pub fn extraData(air: Air, comptime T: type, index: usize) struct { data: T, end
     inline for (fields) |field| {
         @field(result, field.name) = switch (field.type) {
             u32 => air.extra[i],
-            Inst.Ref => @intToEnum(Inst.Ref, air.extra[i]),
+            Inst.Ref => @enumFromInt(Inst.Ref, air.extra[i]),
             i32 => @bitCast(i32, air.extra[i]),
-            InternPool.Index => @intToEnum(InternPool.Index, air.extra[i]),
+            InternPool.Index => @enumFromInt(InternPool.Index, air.extra[i]),
             else => @compileError("bad field type: " ++ @typeName(field.type)),
         };
         i += 1;
@@ -1491,12 +1491,12 @@ pub fn deinit(air: *Air, gpa: std.mem.Allocator) void {
 pub const ref_start_index: u32 = InternPool.static_len;
 
 pub fn indexToRef(inst: Inst.Index) Inst.Ref {
-    return @intToEnum(Inst.Ref, ref_start_index + inst);
+    return @enumFromInt(Inst.Ref, ref_start_index + inst);
 }
 
 pub fn refToIndex(inst: Inst.Ref) ?Inst.Index {
     assert(inst != .none);
-    const ref_int = @enumToInt(inst);
+    const ref_int = @intFromEnum(inst);
     if (ref_int >= ref_start_index) {
         return ref_int - ref_start_index;
     } else {
@@ -1511,9 +1511,9 @@ pub fn refToIndexAllowNone(inst: Inst.Ref) ?Inst.Index {
 
 /// Returns `null` if runtime-known.
 pub fn value(air: Air, inst: Inst.Ref, mod: *Module) !?Value {
-    const ref_int = @enumToInt(inst);
+    const ref_int = @intFromEnum(inst);
     if (ref_int < ref_start_index) {
-        const ip_index = @intToEnum(InternPool.Index, ref_int);
+        const ip_index = @enumFromInt(InternPool.Index, ref_int);
         return ip_index.toValue();
     }
     const inst_index = @intCast(Air.Inst.Index, ref_int - ref_start_index);
src/AstGen.zig
@@ -82,7 +82,7 @@ fn setExtra(astgen: *AstGen, index: usize, extra: anytype) void {
     inline for (fields) |field| {
         astgen.extra.items[i] = switch (field.type) {
             u32 => @field(extra, field.name),
-            Zir.Inst.Ref => @enumToInt(@field(extra, field.name)),
+            Zir.Inst.Ref => @intFromEnum(@field(extra, field.name)),
             i32 => @bitCast(u32, @field(extra, field.name)),
             Zir.Inst.Call.Flags => @bitCast(u32, @field(extra, field.name)),
             Zir.Inst.BuiltinCall.Flags => @bitCast(u32, @field(extra, field.name)),
@@ -168,7 +168,7 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir {
         try lowerAstErrors(&astgen);
     }
 
-    const err_index = @enumToInt(Zir.ExtraIndex.compile_errors);
+    const err_index = @intFromEnum(Zir.ExtraIndex.compile_errors);
     if (astgen.compile_errors.items.len == 0) {
         astgen.extra.items[err_index] = 0;
     } else {
@@ -184,7 +184,7 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir {
         }
     }
 
-    const imports_index = @enumToInt(Zir.ExtraIndex.imports);
+    const imports_index = @intFromEnum(Zir.ExtraIndex.imports);
     if (astgen.imports.count() == 0) {
         astgen.extra.items[imports_index] = 0;
     } else {
@@ -1513,7 +1513,7 @@ fn arrayInitExprRlNone(
 
     for (elements) |elem_init| {
         const elem_ref = try expr(gz, scope, .{ .rl = .none }, elem_init);
-        astgen.extra.items[extra_index] = @enumToInt(elem_ref);
+        astgen.extra.items[extra_index] = @intFromEnum(elem_ref);
         extra_index += 1;
     }
     return try gz.addPlNodePayloadIndex(tag, node, payload_index);
@@ -1530,13 +1530,13 @@ fn arrayInitExprInner(
 ) InnerError!Zir.Inst.Ref {
     const astgen = gz.astgen;
 
-    const len = elements.len + @boolToInt(array_ty_inst != .none);
+    const len = elements.len + @intFromBool(array_ty_inst != .none);
     const payload_index = try addExtra(astgen, Zir.Inst.MultiOp{
         .operands_len = @intCast(u32, len),
     });
     var extra_index = try reserveExtra(astgen, len);
     if (array_ty_inst != .none) {
-        astgen.extra.items[extra_index] = @enumToInt(array_ty_inst);
+        astgen.extra.items[extra_index] = @intFromEnum(array_ty_inst);
         extra_index += 1;
     }
 
@@ -1548,14 +1548,14 @@ fn arrayInitExprInner(
                 .tag = .elem_type_index,
                 .data = .{ .bin = .{
                     .lhs = array_ty_inst,
-                    .rhs = @intToEnum(Zir.Inst.Ref, i),
+                    .rhs = @enumFromInt(Zir.Inst.Ref, i),
                 } },
             });
             break :ri ResultInfo{ .rl = .{ .coerced_ty = ty_expr } };
         } else ResultInfo{ .rl = .{ .none = {} } };
 
         const elem_ref = try expr(gz, scope, ri, elem_init);
-        astgen.extra.items[extra_index] = @enumToInt(elem_ref);
+        astgen.extra.items[extra_index] = @intFromEnum(elem_ref);
         extra_index += 1;
     }
 
@@ -3515,17 +3515,17 @@ fn ptrType(
         .src_node = gz.nodeIndexToRelative(node),
     });
     if (sentinel_ref != .none) {
-        gz.astgen.extra.appendAssumeCapacity(@enumToInt(sentinel_ref));
+        gz.astgen.extra.appendAssumeCapacity(@intFromEnum(sentinel_ref));
     }
     if (align_ref != .none) {
-        gz.astgen.extra.appendAssumeCapacity(@enumToInt(align_ref));
+        gz.astgen.extra.appendAssumeCapacity(@intFromEnum(align_ref));
     }
     if (addrspace_ref != .none) {
-        gz.astgen.extra.appendAssumeCapacity(@enumToInt(addrspace_ref));
+        gz.astgen.extra.appendAssumeCapacity(@intFromEnum(addrspace_ref));
     }
     if (bit_start_ref != .none) {
-        gz.astgen.extra.appendAssumeCapacity(@enumToInt(bit_start_ref));
-        gz.astgen.extra.appendAssumeCapacity(@enumToInt(bit_end_ref));
+        gz.astgen.extra.appendAssumeCapacity(@intFromEnum(bit_start_ref));
+        gz.astgen.extra.appendAssumeCapacity(@intFromEnum(bit_end_ref));
     }
 
     const new_index = @intCast(Zir.Inst.Index, gz.astgen.instructions.len);
@@ -3644,10 +3644,10 @@ const WipMembers = struct {
         assert(index < self.decls_start);
         const bit_bag: u32 = if (self.decl_index % decls_per_u32 == 0) 0 else self.payload.items[index];
         self.payload.items[index] = (bit_bag >> bits_per_decl) |
-            (@as(u32, @boolToInt(is_pub)) << 28) |
-            (@as(u32, @boolToInt(is_export)) << 29) |
-            (@as(u32, @boolToInt(has_align)) << 30) |
-            (@as(u32, @boolToInt(has_section_or_addrspace)) << 31);
+            (@as(u32, @intFromBool(is_pub)) << 28) |
+            (@as(u32, @intFromBool(is_export)) << 29) |
+            (@as(u32, @intFromBool(has_align)) << 30) |
+            (@as(u32, @intFromBool(has_section_or_addrspace)) << 31);
         self.decl_index += 1;
     }
 
@@ -3659,7 +3659,7 @@ const WipMembers = struct {
         bit_bag >>= bits_per_field;
         comptime var i = 0;
         inline while (i < bits_per_field) : (i += 1) {
-            bit_bag |= @as(u32, @boolToInt(bits[i])) << (32 - bits_per_field + i);
+            bit_bag |= @as(u32, @intFromBool(bits[i])) << (32 - bits_per_field + i);
         }
         self.payload.items[index] = bit_bag;
         self.field_index += 1;
@@ -4233,11 +4233,11 @@ fn globalVarDecl(
     wip_members.appendToDecl(block_inst);
     wip_members.appendToDecl(doc_comment_index); // doc_comment wip
     if (align_inst != .none) {
-        wip_members.appendToDecl(@enumToInt(align_inst));
+        wip_members.appendToDecl(@intFromEnum(align_inst));
     }
     if (has_section_or_addrspace) {
-        wip_members.appendToDecl(@enumToInt(section_inst));
-        wip_members.appendToDecl(@enumToInt(addrspace_inst));
+        wip_members.appendToDecl(@intFromEnum(section_inst));
+        wip_members.appendToDecl(@intFromEnum(addrspace_inst));
     }
 }
 
@@ -4727,7 +4727,7 @@ fn structDeclInner(
             wip_members.appendToField(@intCast(u32, astgen.scratch.items.len - old_scratch_len));
             block_scope.instructions.items.len = block_scope.instructions_top;
         } else {
-            wip_members.appendToField(@enumToInt(field_type));
+            wip_members.appendToField(@intFromEnum(field_type));
         }
 
         if (have_align) {
@@ -4878,13 +4878,13 @@ fn unionDeclInner(
 
         if (have_type) {
             const field_type = try typeExpr(&block_scope, &namespace.base, member.ast.type_expr);
-            wip_members.appendToField(@enumToInt(field_type));
+            wip_members.appendToField(@intFromEnum(field_type));
         } else if (arg_inst == .none and auto_enum_tok == null) {
             return astgen.failNode(member_node, "union field missing type", .{});
         }
         if (have_align) {
             const align_inst = try expr(&block_scope, &block_scope.base, .{ .rl = .{ .ty = .u32_type } }, member.ast.align_expr);
-            wip_members.appendToField(@enumToInt(align_inst));
+            wip_members.appendToField(@intFromEnum(align_inst));
         }
         if (have_value) {
             if (arg_inst == .none) {
@@ -4916,7 +4916,7 @@ fn unionDeclInner(
                 );
             }
             const tag_value = try expr(&block_scope, &block_scope.base, .{ .rl = .{ .ty = arg_inst } }, member.ast.value_expr);
-            wip_members.appendToField(@enumToInt(tag_value));
+            wip_members.appendToField(@intFromEnum(tag_value));
         }
     }
 
@@ -5167,7 +5167,7 @@ fn containerDecl(
                     }
                     namespace.base.tag = .enum_namespace;
                     const tag_value_inst = try expr(&block_scope, &namespace.base, .{ .rl = .{ .ty = arg_inst } }, member.ast.value_expr);
-                    wip_members.appendToField(@enumToInt(tag_value_inst));
+                    wip_members.appendToField(@intFromEnum(tag_value_inst));
                 }
             }
 
@@ -5846,7 +5846,7 @@ fn ifExpr(
                 else
                     .err_union_payload_unsafe;
                 const payload_inst = try then_scope.addUnNode(tag, cond.inst, then_node);
-                const token_name_index = payload_token + @boolToInt(payload_is_ref);
+                const token_name_index = payload_token + @intFromBool(payload_is_ref);
                 const ident_name = try astgen.identAsString(token_name_index);
                 const token_name_str = tree.tokenSlice(token_name_index);
                 if (mem.eql(u8, "_", token_name_str))
@@ -6000,8 +6000,8 @@ fn setCondBrPayload(
     const astgen = then_scope.astgen;
     const then_body = then_scope.instructionsSliceUpto(else_scope);
     const else_body = else_scope.instructionsSlice();
-    const then_body_len = astgen.countBodyLenAfterFixups(then_body) + @boolToInt(then_break != 0);
-    const else_body_len = astgen.countBodyLenAfterFixups(else_body) + @boolToInt(else_break != 0);
+    const then_body_len = astgen.countBodyLenAfterFixups(then_body) + @intFromBool(then_break != 0);
+    const else_body_len = astgen.countBodyLenAfterFixups(else_body) + @intFromBool(else_break != 0);
     try astgen.extra.ensureUnusedCapacity(
         astgen.gpa,
         @typeInfo(Zir.Inst.CondBr).Struct.fields.len + then_body_len + else_body_len,
@@ -6036,8 +6036,8 @@ fn setCondBrPayloadElideBlockStorePtr(
     const else_body = else_scope.instructionsSlice();
     const has_then_break = then_break != 0;
     const has_else_break = else_break != 0;
-    const then_body_len = astgen.countBodyLenAfterFixups(then_body) + @boolToInt(has_then_break);
-    const else_body_len = astgen.countBodyLenAfterFixups(else_body) + @boolToInt(has_else_break);
+    const then_body_len = astgen.countBodyLenAfterFixups(then_body) + @intFromBool(has_then_break);
+    const else_body_len = astgen.countBodyLenAfterFixups(else_body) + @intFromBool(has_else_break);
     try astgen.extra.ensureUnusedCapacity(
         astgen.gpa,
         @typeInfo(Zir.Inst.CondBr).Struct.fields.len + then_body_len + else_body_len,
@@ -6197,7 +6197,7 @@ fn whileExpr(
                 const ident_bytes = tree.tokenSlice(ident_token);
                 if (mem.eql(u8, "_", ident_bytes))
                     break :s &then_scope.base;
-                const payload_name_loc = payload_token + @boolToInt(payload_is_ref);
+                const payload_name_loc = payload_token + @intFromBool(payload_is_ref);
                 const ident_name = try astgen.identAsString(payload_name_loc);
                 try astgen.detectLocalShadowing(&then_scope.base, ident_name, payload_name_loc, ident_bytes, .capture);
                 payload_val_scope = .{
@@ -6439,7 +6439,7 @@ fn forExpr(
         for (for_full.ast.inputs, 0..) |input, i_usize| {
             const i = @intCast(u32, i_usize);
             const capture_is_ref = token_tags[capture_token] == .asterisk;
-            const ident_tok = capture_token + @boolToInt(capture_is_ref);
+            const ident_tok = capture_token + @intFromBool(capture_is_ref);
             const is_discard = mem.eql(u8, tree.tokenSlice(ident_tok), "_");
 
             if (is_discard and capture_is_ref) {
@@ -6567,7 +6567,7 @@ fn forExpr(
         for (for_full.ast.inputs, 0..) |input, i_usize| {
             const i = @intCast(u32, i_usize);
             const capture_is_ref = token_tags[capture_token] == .asterisk;
-            const ident_tok = capture_token + @boolToInt(capture_is_ref);
+            const ident_tok = capture_token + @intFromBool(capture_is_ref);
             const capture_name = tree.tokenSlice(ident_tok);
             // Skip over the comma, and on to the next capture (or the ending pipe character).
             capture_token = ident_tok + 2;
@@ -6591,7 +6591,7 @@ fn forExpr(
                 // indexables, we use it as an element index. This is so similar
                 // that they can share the same code paths, branching only on the
                 // ZIR tag.
-                const switch_cond = (@as(u2, @boolToInt(capture_is_ref)) << 1) | @boolToInt(is_counter);
+                const switch_cond = (@as(u2, @intFromBool(capture_is_ref)) << 1) | @intFromBool(is_counter);
                 const tag: Zir.Inst.Tag = switch (switch_cond) {
                     0b00 => .elem_val,
                     0b01 => .add,
@@ -6842,7 +6842,7 @@ fn switchExpr(
     const payloads = &astgen.scratch;
     const scratch_top = astgen.scratch.items.len;
     const case_table_start = scratch_top;
-    const scalar_case_table = case_table_start + @boolToInt(special_prong != .none);
+    const scalar_case_table = case_table_start + @intFromBool(special_prong != .none);
     const multi_case_table = scalar_case_table + scalar_cases_len;
     const case_table_end = multi_case_table + multi_cases_len;
     try astgen.scratch.resize(gpa, case_table_end);
@@ -6971,7 +6971,7 @@ fn switchExpr(
                 items_len += 1;
 
                 const item_inst = try comptimeExpr(parent_gz, scope, item_ri, item_node);
-                try payloads.append(gpa, @enumToInt(item_inst));
+                try payloads.append(gpa, @intFromEnum(item_inst));
             }
 
             // ranges
@@ -6983,7 +6983,7 @@ fn switchExpr(
                 const first = try comptimeExpr(parent_gz, scope, item_ri, node_datas[range].lhs);
                 const last = try comptimeExpr(parent_gz, scope, item_ri, node_datas[range].rhs);
                 try payloads.appendSlice(gpa, &[_]u32{
-                    @enumToInt(first), @enumToInt(last),
+                    @intFromEnum(first), @intFromEnum(last),
                 });
             }
 
@@ -7000,7 +7000,7 @@ fn switchExpr(
             try payloads.resize(gpa, header_index + 2); // item, body_len
             const item_node = case.ast.values[0];
             const item_inst = try comptimeExpr(parent_gz, scope, item_ri, item_node);
-            payloads.items[header_index] = @enumToInt(item_inst);
+            payloads.items[header_index] = @intFromEnum(item_inst);
             break :blk header_index + 1;
         };
 
@@ -7069,8 +7069,8 @@ fn switchExpr(
     try parent_gz.instructions.append(gpa, switch_block);
 
     try astgen.extra.ensureUnusedCapacity(gpa, @typeInfo(Zir.Inst.SwitchBlock).Struct.fields.len +
-        @boolToInt(multi_cases_len != 0) +
-        @boolToInt(any_has_tag_capture) +
+        @intFromBool(multi_cases_len != 0) +
+        @intFromBool(any_has_tag_capture) +
         payloads.items.len - case_table_end);
 
     const payload_index = astgen.addExtraAssumeCapacity(Zir.Inst.SwitchBlock{
@@ -7633,8 +7633,8 @@ fn numberLiteral(gz: *GenZir, ri: ResultInfo, node: Ast.Node.Index, source_node:
             const gpa = astgen.gpa;
             var big_int = try std.math.big.int.Managed.init(gpa);
             defer big_int.deinit();
-            const prefix_offset = @as(u8, 2) * @boolToInt(base != .decimal);
-            big_int.setString(@enumToInt(base), bytes[prefix_offset..]) catch |err| switch (err) {
+            const prefix_offset = @as(u8, 2) * @intFromBool(base != .decimal);
+            big_int.setString(@intFromEnum(base), bytes[prefix_offset..]) catch |err| switch (err) {
                 error.InvalidCharacter => unreachable, // caught in `parseNumberLiteral`
                 error.InvalidBase => unreachable, // we only pass 16, 8, 2, see above
                 error.OutOfMemory => return error.OutOfMemory,
@@ -7739,7 +7739,7 @@ fn asmExpr(
         },
         else => .{
             .tag = .asm_expr,
-            .tmpl = @enumToInt(try comptimeExpr(gz, scope, .{ .rl = .none }, full.ast.template)),
+            .tmpl = @intFromEnum(try comptimeExpr(gz, scope, .{ .rl = .none }, full.ast.template)),
         },
     };
 
@@ -7977,7 +7977,7 @@ fn typeOf(
 
     for (args, 0..) |arg, i| {
         const param_ref = try reachableExpr(&typeof_scope, &typeof_scope.base, .{ .rl = .none }, arg, node);
-        astgen.extra.items[args_index + i] = @enumToInt(param_ref);
+        astgen.extra.items[args_index + i] = @intFromEnum(param_ref);
     }
     _ = try typeof_scope.addBreak(.break_inline, refToIndex(typeof_inst).?, .void_value);
 
@@ -8026,7 +8026,7 @@ fn minMax(
     var extra_index = try reserveExtra(gz.astgen, args.len);
     for (args) |arg| {
         const arg_ref = try expr(gz, scope, .{ .rl = .none }, arg);
-        astgen.extra.items[extra_index] = @enumToInt(arg_ref);
+        astgen.extra.items[extra_index] = @intFromEnum(arg_ref);
         extra_index += 1;
     }
     const tag: Zir.Inst.Extended = switch (op) {
@@ -8101,7 +8101,7 @@ fn builtinCall(
             var extra_index = try reserveExtra(gz.astgen, params.len);
             for (params) |param| {
                 const param_ref = try expr(gz, scope, .{ .rl = .none }, param);
-                astgen.extra.items[extra_index] = @enumToInt(param_ref);
+                astgen.extra.items[extra_index] = @intFromEnum(param_ref);
                 extra_index += 1;
             }
             const result = try gz.addExtendedMultiOpPayloadIndex(.compile_log, payload_index, params.len);
@@ -8335,7 +8335,7 @@ fn builtinCall(
                 .tag = .extended,
                 .data = .{ .extended = .{
                     .opcode = .reify,
-                    .small = @enumToInt(gz.anon_name_strategy),
+                    .small = @intFromEnum(gz.anon_name_strategy),
                     .operand = payload_index,
                 } },
             });
@@ -9050,7 +9050,7 @@ fn callExpr(
                 .callee = callee_obj,
                 .flags = .{
                     .pop_error_return_trace = !propagate_error_trace,
-                    .packed_modifier = @intCast(Zir.Inst.Call.Flags.PackedModifier, @enumToInt(modifier)),
+                    .packed_modifier = @intCast(Zir.Inst.Call.Flags.PackedModifier, @intFromEnum(modifier)),
                     .args_len = @intCast(Zir.Inst.Call.Flags.PackedArgsLen, call.ast.params.len),
                 },
             });
@@ -9071,7 +9071,7 @@ fn callExpr(
                 .field_name_start = callee_field.field_name_start,
                 .flags = .{
                     .pop_error_return_trace = !propagate_error_trace,
-                    .packed_modifier = @intCast(Zir.Inst.Call.Flags.PackedModifier, @enumToInt(modifier)),
+                    .packed_modifier = @intCast(Zir.Inst.Call.Flags.PackedModifier, @intFromEnum(modifier)),
                     .args_len = @intCast(Zir.Inst.Call.Flags.PackedArgsLen, call.ast.params.len),
                 },
             });
@@ -10266,80 +10266,80 @@ fn rvalue(
         },
         .ty => |ty_inst| {
             // Quickly eliminate some common, unnecessary type coercion.
-            const as_ty = @as(u64, @enumToInt(Zir.Inst.Ref.type_type)) << 32;
-            const as_comptime_int = @as(u64, @enumToInt(Zir.Inst.Ref.comptime_int_type)) << 32;
-            const as_bool = @as(u64, @enumToInt(Zir.Inst.Ref.bool_type)) << 32;
-            const as_usize = @as(u64, @enumToInt(Zir.Inst.Ref.usize_type)) << 32;
-            const as_void = @as(u64, @enumToInt(Zir.Inst.Ref.void_type)) << 32;
-            switch ((@as(u64, @enumToInt(ty_inst)) << 32) | @as(u64, @enumToInt(result))) {
-                as_ty | @enumToInt(Zir.Inst.Ref.u1_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.u8_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.i8_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.u16_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.u29_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.i16_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.u32_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.i32_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.u64_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.i64_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.u128_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.i128_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.usize_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.isize_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_char_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_short_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_ushort_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_int_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_uint_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_long_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_ulong_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_longlong_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_ulonglong_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_longdouble_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.f16_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.f32_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.f64_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.f80_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.f128_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.anyopaque_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.bool_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.void_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.type_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.anyerror_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.comptime_int_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.comptime_float_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.noreturn_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.anyframe_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.null_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.undefined_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.enum_literal_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.atomic_order_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.atomic_rmw_op_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.calling_convention_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.address_space_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.float_mode_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.reduce_op_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.call_modifier_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.prefetch_options_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.export_options_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.extern_options_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.type_info_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.manyptr_u8_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.manyptr_const_u8_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.manyptr_const_u8_sentinel_0_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.single_const_pointer_to_comptime_int_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.slice_const_u8_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.slice_const_u8_sentinel_0_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.anyerror_void_error_union_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.generic_poison_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.empty_struct_type),
-                as_comptime_int | @enumToInt(Zir.Inst.Ref.zero),
-                as_comptime_int | @enumToInt(Zir.Inst.Ref.one),
-                as_bool | @enumToInt(Zir.Inst.Ref.bool_true),
-                as_bool | @enumToInt(Zir.Inst.Ref.bool_false),
-                as_usize | @enumToInt(Zir.Inst.Ref.zero_usize),
-                as_usize | @enumToInt(Zir.Inst.Ref.one_usize),
-                as_void | @enumToInt(Zir.Inst.Ref.void_value),
+            const as_ty = @as(u64, @intFromEnum(Zir.Inst.Ref.type_type)) << 32;
+            const as_comptime_int = @as(u64, @intFromEnum(Zir.Inst.Ref.comptime_int_type)) << 32;
+            const as_bool = @as(u64, @intFromEnum(Zir.Inst.Ref.bool_type)) << 32;
+            const as_usize = @as(u64, @intFromEnum(Zir.Inst.Ref.usize_type)) << 32;
+            const as_void = @as(u64, @intFromEnum(Zir.Inst.Ref.void_type)) << 32;
+            switch ((@as(u64, @intFromEnum(ty_inst)) << 32) | @as(u64, @intFromEnum(result))) {
+                as_ty | @intFromEnum(Zir.Inst.Ref.u1_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.u8_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.i8_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.u16_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.u29_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.i16_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.u32_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.i32_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.u64_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.i64_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.u128_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.i128_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.usize_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.isize_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.c_char_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.c_short_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.c_ushort_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.c_int_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.c_uint_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.c_long_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.c_ulong_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.c_longlong_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.c_ulonglong_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.c_longdouble_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.f16_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.f32_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.f64_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.f80_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.f128_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.anyopaque_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.bool_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.void_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.type_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.anyerror_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.comptime_int_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.comptime_float_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.noreturn_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.anyframe_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.null_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.undefined_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.enum_literal_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.atomic_order_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.atomic_rmw_op_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.calling_convention_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.address_space_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.float_mode_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.reduce_op_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.call_modifier_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.prefetch_options_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.export_options_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.extern_options_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.type_info_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.manyptr_u8_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.manyptr_const_u8_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.manyptr_const_u8_sentinel_0_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.single_const_pointer_to_comptime_int_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.slice_const_u8_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.slice_const_u8_sentinel_0_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.anyerror_void_error_union_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.generic_poison_type),
+                as_ty | @intFromEnum(Zir.Inst.Ref.empty_struct_type),
+                as_comptime_int | @intFromEnum(Zir.Inst.Ref.zero),
+                as_comptime_int | @intFromEnum(Zir.Inst.Ref.one),
+                as_bool | @intFromEnum(Zir.Inst.Ref.bool_true),
+                as_bool | @intFromEnum(Zir.Inst.Ref.bool_false),
+                as_usize | @intFromEnum(Zir.Inst.Ref.zero_usize),
+                as_usize | @intFromEnum(Zir.Inst.Ref.one_usize),
+                as_void | @intFromEnum(Zir.Inst.Ref.void_value),
                 => return result, // type of result is already correct
 
                 // Need an explicit type coercion instruction.
@@ -11429,8 +11429,8 @@ const GenZir = struct {
                     fancyFnExprExtraLen(astgen, cc_body, args.cc_ref) +
                     fancyFnExprExtraLen(astgen, ret_body, ret_ref) +
                     body_len + src_locs.len +
-                    @boolToInt(args.lib_name != 0) +
-                    @boolToInt(args.noalias_bits != 0),
+                    @intFromBool(args.lib_name != 0) +
+                    @intFromBool(args.noalias_bits != 0),
             );
             const payload_index = astgen.addExtraAssumeCapacity(Zir.Inst.FuncFancy{
                 .param_block = args.param_block,
@@ -11468,7 +11468,7 @@ const GenZir = struct {
                 const inst_data = zir_datas[align_body[align_body.len - 1]].@"break";
                 astgen.extra.items[inst_data.payload_index] = new_index;
             } else if (args.align_ref != .none) {
-                astgen.extra.appendAssumeCapacity(@enumToInt(args.align_ref));
+                astgen.extra.appendAssumeCapacity(@intFromEnum(args.align_ref));
             }
             if (addrspace_body.len != 0) {
                 astgen.extra.appendAssumeCapacity(countBodyLenAfterFixups(astgen, addrspace_body));
@@ -11476,7 +11476,7 @@ const GenZir = struct {
                 const inst_data = zir_datas[addrspace_body[addrspace_body.len - 1]].@"break";
                 astgen.extra.items[inst_data.payload_index] = new_index;
             } else if (args.addrspace_ref != .none) {
-                astgen.extra.appendAssumeCapacity(@enumToInt(args.addrspace_ref));
+                astgen.extra.appendAssumeCapacity(@intFromEnum(args.addrspace_ref));
             }
             if (section_body.len != 0) {
                 astgen.extra.appendAssumeCapacity(countBodyLenAfterFixups(astgen, section_body));
@@ -11484,7 +11484,7 @@ const GenZir = struct {
                 const inst_data = zir_datas[section_body[section_body.len - 1]].@"break";
                 astgen.extra.items[inst_data.payload_index] = new_index;
             } else if (args.section_ref != .none) {
-                astgen.extra.appendAssumeCapacity(@enumToInt(args.section_ref));
+                astgen.extra.appendAssumeCapacity(@intFromEnum(args.section_ref));
             }
             if (cc_body.len != 0) {
                 astgen.extra.appendAssumeCapacity(countBodyLenAfterFixups(astgen, cc_body));
@@ -11492,7 +11492,7 @@ const GenZir = struct {
                 const inst_data = zir_datas[cc_body[cc_body.len - 1]].@"break";
                 astgen.extra.items[inst_data.payload_index] = new_index;
             } else if (args.cc_ref != .none) {
-                astgen.extra.appendAssumeCapacity(@enumToInt(args.cc_ref));
+                astgen.extra.appendAssumeCapacity(@intFromEnum(args.cc_ref));
             }
             if (ret_body.len != 0) {
                 astgen.extra.appendAssumeCapacity(countBodyLenAfterFixups(astgen, ret_body));
@@ -11500,7 +11500,7 @@ const GenZir = struct {
                 const inst_data = zir_datas[ret_body[ret_body.len - 1]].@"break";
                 astgen.extra.items[inst_data.payload_index] = new_index;
             } else if (ret_ref != .none) {
-                astgen.extra.appendAssumeCapacity(@enumToInt(ret_ref));
+                astgen.extra.appendAssumeCapacity(@intFromEnum(ret_ref));
             }
 
             if (args.noalias_bits != 0) {
@@ -11542,7 +11542,7 @@ const GenZir = struct {
             const ret_body_len = if (ret_body.len != 0)
                 countBodyLenAfterFixups(astgen, ret_body)
             else
-                @boolToInt(ret_ref != .none);
+                @intFromBool(ret_ref != .none);
 
             const payload_index = astgen.addExtraAssumeCapacity(Zir.Inst.Func{
                 .param_block = args.param_block,
@@ -11556,7 +11556,7 @@ const GenZir = struct {
                 const inst_data = zir_datas[ret_body[ret_body.len - 1]].@"break";
                 astgen.extra.items[inst_data.payload_index] = new_index;
             } else if (ret_ref != .none) {
-                astgen.extra.appendAssumeCapacity(@enumToInt(ret_ref));
+                astgen.extra.appendAssumeCapacity(@intFromEnum(ret_ref));
             }
             astgen.appendBodyWithFixups(body);
             astgen.extra.appendSliceAssumeCapacity(src_locs);
@@ -11587,7 +11587,7 @@ const GenZir = struct {
     fn fancyFnExprExtraLen(astgen: *AstGen, body: []Zir.Inst.Index, ref: Zir.Inst.Ref) u32 {
         // In the case of non-empty body, there is one for the body length,
         // and then one for each instruction.
-        return countBodyLenAfterFixups(astgen, body) + @boolToInt(ref != .none);
+        return countBodyLenAfterFixups(astgen, body) + @intFromBool(ref != .none);
     }
 
     fn addVar(gz: *GenZir, args: struct {
@@ -11607,9 +11607,9 @@ const GenZir = struct {
         try astgen.extra.ensureUnusedCapacity(
             gpa,
             @typeInfo(Zir.Inst.ExtendedVar).Struct.fields.len +
-                @boolToInt(args.lib_name != 0) +
-                @boolToInt(args.align_inst != .none) +
-                @boolToInt(args.init != .none),
+                @intFromBool(args.lib_name != 0) +
+                @intFromBool(args.align_inst != .none) +
+                @intFromBool(args.init != .none),
         );
         const payload_index = astgen.addExtraAssumeCapacity(Zir.Inst.ExtendedVar{
             .var_type = args.var_type,
@@ -11618,10 +11618,10 @@ const GenZir = struct {
             astgen.extra.appendAssumeCapacity(args.lib_name);
         }
         if (args.align_inst != .none) {
-            astgen.extra.appendAssumeCapacity(@enumToInt(args.align_inst));
+            astgen.extra.appendAssumeCapacity(@intFromEnum(args.align_inst));
         }
         if (args.init != .none) {
-            astgen.extra.appendAssumeCapacity(@enumToInt(args.init));
+            astgen.extra.appendAssumeCapacity(@intFromEnum(args.init));
         }
 
         const new_index = @intCast(Zir.Inst.Index, astgen.instructions.len);
@@ -12208,23 +12208,23 @@ const GenZir = struct {
         try astgen.extra.ensureUnusedCapacity(
             gpa,
             @typeInfo(Zir.Inst.AllocExtended).Struct.fields.len +
-                @as(usize, @boolToInt(args.type_inst != .none)) +
-                @as(usize, @boolToInt(args.align_inst != .none)),
+                @as(usize, @intFromBool(args.type_inst != .none)) +
+                @as(usize, @intFromBool(args.align_inst != .none)),
         );
         const payload_index = gz.astgen.addExtraAssumeCapacity(Zir.Inst.AllocExtended{
             .src_node = gz.nodeIndexToRelative(args.node),
         });
         if (args.type_inst != .none) {
-            astgen.extra.appendAssumeCapacity(@enumToInt(args.type_inst));
+            astgen.extra.appendAssumeCapacity(@intFromEnum(args.type_inst));
         }
         if (args.align_inst != .none) {
-            astgen.extra.appendAssumeCapacity(@enumToInt(args.align_inst));
+            astgen.extra.appendAssumeCapacity(@intFromEnum(args.align_inst));
         }
 
-        const has_type: u4 = @boolToInt(args.type_inst != .none);
-        const has_align: u4 = @boolToInt(args.align_inst != .none);
-        const is_const: u4 = @boolToInt(args.is_const);
-        const is_comptime: u4 = @boolToInt(args.is_comptime);
+        const has_type: u4 = @intFromBool(args.type_inst != .none);
+        const has_align: u4 = @intFromBool(args.align_inst != .none);
+        const is_const: u4 = @intFromBool(args.is_const);
+        const is_comptime: u4 = @intFromBool(args.is_comptime);
         const small: u16 = has_type | (has_align << 1) | (is_const << 2) | (is_comptime << 3);
 
         const new_index = @intCast(Zir.Inst.Index, astgen.instructions.len);
@@ -12284,7 +12284,7 @@ const GenZir = struct {
         const small: u16 = @intCast(u16, args.outputs.len) |
             @intCast(u16, args.inputs.len << 5) |
             @intCast(u16, args.clobbers.len << 10) |
-            (@as(u16, @boolToInt(args.is_volatile)) << 15);
+            (@as(u16, @intFromBool(args.is_volatile)) << 15);
 
         const new_index = @intCast(Zir.Inst.Index, astgen.instructions.len);
         astgen.instructions.appendAssumeCapacity(.{
@@ -12362,7 +12362,7 @@ const GenZir = struct {
         if (args.backing_int_ref != .none) {
             astgen.extra.appendAssumeCapacity(args.backing_int_body_len);
             if (args.backing_int_body_len == 0) {
-                astgen.extra.appendAssumeCapacity(@enumToInt(args.backing_int_ref));
+                astgen.extra.appendAssumeCapacity(@intFromEnum(args.backing_int_ref));
             }
         }
         astgen.instructions.set(inst, .{
@@ -12405,7 +12405,7 @@ const GenZir = struct {
             astgen.extra.appendAssumeCapacity(@bitCast(u32, node_offset));
         }
         if (args.tag_type != .none) {
-            astgen.extra.appendAssumeCapacity(@enumToInt(args.tag_type));
+            astgen.extra.appendAssumeCapacity(@intFromEnum(args.tag_type));
         }
         if (args.body_len != 0) {
             astgen.extra.appendAssumeCapacity(args.body_len);
@@ -12454,7 +12454,7 @@ const GenZir = struct {
             astgen.extra.appendAssumeCapacity(@bitCast(u32, node_offset));
         }
         if (args.tag_type != .none) {
-            astgen.extra.appendAssumeCapacity(@enumToInt(args.tag_type));
+            astgen.extra.appendAssumeCapacity(@intFromEnum(args.tag_type));
         }
         if (args.body_len != 0) {
             astgen.extra.appendAssumeCapacity(args.body_len);
@@ -12948,10 +12948,10 @@ fn lowerAstErrors(astgen: *AstGen) !void {
     var notes: std.ArrayListUnmanaged(u32) = .{};
     defer notes.deinit(gpa);
 
-    if (token_tags[parse_err.token + @boolToInt(parse_err.token_is_prev)] == .invalid) {
-        const tok = parse_err.token + @boolToInt(parse_err.token_is_prev);
-        const bad_off = @intCast(u32, tree.tokenSlice(parse_err.token + @boolToInt(parse_err.token_is_prev)).len);
-        const byte_abs = token_starts[parse_err.token + @boolToInt(parse_err.token_is_prev)] + bad_off;
+    if (token_tags[parse_err.token + @intFromBool(parse_err.token_is_prev)] == .invalid) {
+        const tok = parse_err.token + @intFromBool(parse_err.token_is_prev);
+        const bad_off = @intCast(u32, tree.tokenSlice(parse_err.token + @intFromBool(parse_err.token_is_prev)).len);
+        const byte_abs = token_starts[parse_err.token + @intFromBool(parse_err.token_is_prev)] + bad_off;
         try notes.append(gpa, try astgen.errNoteTokOff(tok, bad_off, "invalid byte: '{'}'", .{
             std.zig.fmtEscapes(tree.source[byte_abs..][0..1]),
         }));
src/Autodoc.zig
@@ -107,10 +107,10 @@ pub fn generateZirData(self: *Autodoc) !void {
     const file = self.comp_module.import_table.get(abs_root_src_path).?; // file is expected to be present in the import table
     // Append all the types in Zir.Inst.Ref.
     {
-        comptime std.debug.assert(@enumToInt(InternPool.Index.first_type) == 0);
+        comptime std.debug.assert(@intFromEnum(InternPool.Index.first_type) == 0);
         var i: u32 = 0;
-        while (i <= @enumToInt(InternPool.Index.last_type)) : (i += 1) {
-            const ip_index = @intToEnum(InternPool.Index, i);
+        while (i <= @intFromEnum(InternPool.Index.last_type)) : (i += 1) {
+            const ip_index = @enumFromInt(InternPool.Index, i);
             var tmpbuf = std.ArrayList(u8).init(self.arena);
             if (ip_index == .generic_poison_type) {
                 // Not a real type, doesn't have a normal name
@@ -696,14 +696,14 @@ const DocData = struct {
             jsw.whitespace = opts.whitespace;
             try jsw.beginArray();
             try jsw.arrayElem();
-            try jsw.emitNumber(@enumToInt(active_tag));
+            try jsw.emitNumber(@intFromEnum(active_tag));
             inline for (comptime std.meta.fields(Type)) |case| {
                 if (@field(Type, case.name) == active_tag) {
                     const current_value = @field(self, case.name);
                     inline for (comptime std.meta.fields(case.type)) |f| {
                         try jsw.arrayElem();
                         if (f.type == std.builtin.Type.Pointer.Size) {
-                            try jsw.emitNumber(@enumToInt(@field(current_value, f.name)));
+                            try jsw.emitNumber(@intFromEnum(@field(current_value, f.name)));
                         } else {
                             try std.json.stringify(@field(current_value, f.name), opts, w);
                             jsw.state_index -= 1;
@@ -756,7 +756,7 @@ const DocData = struct {
         as: As,
         sizeOf: usize, // index in `exprs`
         bitSizeOf: usize, // index in `exprs`
-        enumToInt: usize, // index in `exprs`
+        intFromEnum: usize, // index in `exprs`
         compileError: usize, //index in `exprs`
         errorSets: usize,
         string: []const u8, // direct value
@@ -956,7 +956,7 @@ fn walkInstruction(
 
                 if (result.found_existing) {
                     return DocData.WalkResult{
-                        .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                        .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                         .expr = .{ .type = result.value_ptr.main },
                     };
                 }
@@ -1005,7 +1005,7 @@ fn walkInstruction(
             const result = try self.files.getOrPut(self.arena, new_file.file);
             if (result.found_existing) {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                     .expr = .{ .type = result.value_ptr.* },
                 };
             }
@@ -1033,8 +1033,8 @@ fn walkInstruction(
         },
         .ret_type => {
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
-                .expr = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
+                .expr = .{ .type = @intFromEnum(Ref.type_type) },
             };
         },
         .ret_node => {
@@ -1093,7 +1093,7 @@ fn walkInstruction(
                 try self.types.append(self.arena, .{
                     .Array = .{
                         .len = .{ .int = .{ .value = str.len } },
-                        .child = .{ .type = @enumToInt(Ref.u8_type) },
+                        .child = .{ .type = @intFromEnum(Ref.u8_type) },
                         .sentinel = .{ .int = .{
                             .value = 0,
                             .negated = false,
@@ -1155,7 +1155,7 @@ fn walkInstruction(
         .int => {
             const int = data[inst_index].int;
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.comptime_int_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.comptime_int_type) },
                 .expr = .{ .int = .{ .value = int } },
             };
         },
@@ -1176,7 +1176,7 @@ fn walkInstruction(
             const as_string = try big_int.toStringAlloc(self.arena, 10, .lower);
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.comptime_int_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.comptime_int_type) },
                 .expr = .{ .int_big = .{ .value = as_string } },
             };
         },
@@ -1422,7 +1422,7 @@ fn walkInstruction(
             } };
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .binOpIndex = binop_index },
             };
         },
@@ -1466,7 +1466,7 @@ fn walkInstruction(
             } };
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.bool_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.bool_type) },
                 .expr = .{ .binOpIndex = binop_index },
             };
         },
@@ -1516,7 +1516,7 @@ fn walkInstruction(
             self.exprs.items[bin_index] = .{ .builtin = .{ .name = @tagName(tags[inst_index]), .param = param_index } };
 
             return DocData.WalkResult{
-                .typeRef = param.typeRef orelse .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = param.typeRef orelse .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .builtinIndex = bin_index },
             };
         },
@@ -1578,7 +1578,7 @@ fn walkInstruction(
             self.exprs.items[binop_index] = .{ .builtinBin = .{ .name = @tagName(tags[inst_index]), .lhs = lhs_index, .rhs = rhs_index } };
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .builtinBinIndex = binop_index },
             };
         },
@@ -1608,7 +1608,7 @@ fn walkInstruction(
             } });
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .errorUnion = type_slot_index },
             };
         },
@@ -1637,7 +1637,7 @@ fn walkInstruction(
             } });
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .errorSets = type_slot_index },
             };
         },
@@ -1670,7 +1670,7 @@ fn walkInstruction(
             // present in json
             var sentinel: ?DocData.Expr = null;
             if (ptr.flags.has_sentinel) {
-                const ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+                const ref = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
                 const ref_result = try self.walkRef(file, parent_scope, parent_src, ref, false);
                 sentinel = ref_result.expr;
                 extra_index += 1;
@@ -1678,21 +1678,21 @@ fn walkInstruction(
 
             var @"align": ?DocData.Expr = null;
             if (ptr.flags.has_align) {
-                const ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+                const ref = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
                 const ref_result = try self.walkRef(file, parent_scope, parent_src, ref, false);
                 @"align" = ref_result.expr;
                 extra_index += 1;
             }
             var address_space: ?DocData.Expr = null;
             if (ptr.flags.has_addrspace) {
-                const ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+                const ref = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
                 const ref_result = try self.walkRef(file, parent_scope, parent_src, ref, false);
                 address_space = ref_result.expr;
                 extra_index += 1;
             }
             var bit_start: ?DocData.Expr = null;
             if (ptr.flags.has_bit_range) {
-                const ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+                const ref = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
                 const ref_result = try self.walkRef(file, parent_scope, parent_src, ref, false);
                 address_space = ref_result.expr;
                 extra_index += 1;
@@ -1700,7 +1700,7 @@ fn walkInstruction(
 
             var host_size: ?DocData.Expr = null;
             if (ptr.flags.has_bit_range) {
-                const ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+                const ref = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
                 const ref_result = try self.walkRef(file, parent_scope, parent_src, ref, false);
                 host_size = ref_result.expr;
             }
@@ -1724,7 +1724,7 @@ fn walkInstruction(
                 },
             });
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .type = type_slot_index },
             };
         },
@@ -1744,7 +1744,7 @@ fn walkInstruction(
             });
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .type = type_slot_index },
             };
         },
@@ -1764,7 +1764,7 @@ fn walkInstruction(
                 },
             });
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .type = type_slot_index },
             };
         },
@@ -1863,7 +1863,7 @@ fn walkInstruction(
         .float => {
             const float = data[inst_index].float;
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.comptime_float_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.comptime_float_type) },
                 .expr = .{ .float = float },
             };
         },
@@ -1872,7 +1872,7 @@ fn walkInstruction(
             const pl_node = data[inst_index].pl_node;
             const extra = file.zir.extraData(Zir.Inst.Float128, pl_node.payload_index);
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.comptime_float_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.comptime_float_type) },
                 .expr = .{ .float128 = extra.data.get() },
             };
         },
@@ -1913,7 +1913,7 @@ fn walkInstruction(
             const operand_index = self.exprs.items.len;
             try self.exprs.append(self.arena, operand.expr);
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.comptime_int_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.comptime_int_type) },
                 .expr = .{ .sizeOf = operand_index },
             };
         },
@@ -1950,8 +1950,8 @@ fn walkInstruction(
             try self.exprs.append(self.arena, operand.expr);
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.comptime_int_type) },
-                .expr = .{ .enumToInt = operand_index },
+                .typeRef = .{ .type = @intFromEnum(Ref.comptime_int_type) },
+                .expr = .{ .intFromEnum = operand_index },
             };
         },
         .switch_block => {
@@ -1992,7 +1992,7 @@ fn walkInstruction(
             // } });
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .switchIndex = switch_index },
             };
         },
@@ -2109,7 +2109,7 @@ fn walkInstruction(
             });
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .type = operand_idx },
             };
         },
@@ -2210,13 +2210,13 @@ fn walkInstruction(
             });
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .type = self.types.items.len - 1 },
             };
         },
         .block => {
             const res = DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .comptimeExpr = self.comptime_exprs.items.len },
             };
             const pl_node = data[inst_index].pl_node;
@@ -2233,7 +2233,7 @@ fn walkInstruction(
                 parent_src,
                 getBlockInlineBreak(file.zir, inst_index) orelse {
                     const res = DocData.WalkResult{
-                        .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                        .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                         .expr = .{ .comptimeExpr = self.comptime_exprs.items.len },
                     };
                     const pl_node = data[inst_index].pl_node;
@@ -2376,7 +2376,7 @@ fn walkInstruction(
             });
 
             return DocData.WalkResult{
-                .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                 .expr = .{ .type = type_slot_index },
             };
         },
@@ -2600,7 +2600,7 @@ fn walkInstruction(
                         //       anyway, but maybe we should put it elsewhere.
                     }
                     return DocData.WalkResult{
-                        .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                        .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                         .expr = .{ .type = type_slot_index },
                     };
                 },
@@ -2620,7 +2620,7 @@ fn walkInstruction(
                     };
 
                     if (small.has_init) {
-                        const var_init_ref = @intToEnum(Ref, file.zir.extra[extra_index]);
+                        const var_init_ref = @enumFromInt(Ref, file.zir.extra[extra_index]);
                         const var_init = try self.walkRef(file, parent_scope, parent_src, var_init_ref, need_type);
                         value.expr = var_init.expr;
                         value.typeRef = var_init.typeRef;
@@ -2656,7 +2656,7 @@ fn walkInstruction(
                     const tag_type_ref: ?Ref = if (small.has_tag_type) blk: {
                         const tag_type = file.zir.extra[extra_index];
                         extra_index += 1;
-                        const tag_ref = @intToEnum(Ref, tag_type);
+                        const tag_ref = @enumFromInt(Ref, tag_type);
                         break :blk tag_ref;
                     } else null;
 
@@ -2751,7 +2751,7 @@ fn walkInstruction(
                     }
 
                     return DocData.WalkResult{
-                        .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                        .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                         .expr = .{ .type = type_slot_index },
                     };
                 },
@@ -2781,7 +2781,7 @@ fn walkInstruction(
                     const tag_type: ?DocData.Expr = if (small.has_tag_type) blk: {
                         const tag_type = file.zir.extra[extra_index];
                         extra_index += 1;
-                        const tag_ref = @intToEnum(Ref, tag_type);
+                        const tag_ref = @enumFromInt(Ref, tag_type);
                         const wr = try self.walkRef(file, parent_scope, parent_src, tag_ref, false);
                         break :blk wr.expr;
                     } else null;
@@ -2839,7 +2839,7 @@ fn walkInstruction(
                             const value_expr: ?DocData.Expr = if (has_value) blk: {
                                 const value_ref = file.zir.extra[extra_index];
                                 extra_index += 1;
-                                const value = try self.walkRef(file, &scope, src_info, @intToEnum(Ref, value_ref), false);
+                                const value = try self.walkRef(file, &scope, src_info, @enumFromInt(Ref, value_ref), false);
                                 break :blk value.expr;
                             } else null;
                             try field_values.append(self.arena, value_expr);
@@ -2887,7 +2887,7 @@ fn walkInstruction(
                         //       anyway, but maybe we should put it elsewhere.
                     }
                     return DocData.WalkResult{
-                        .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                        .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                         .expr = .{ .type = type_slot_index },
                     };
                 },
@@ -2928,7 +2928,7 @@ fn walkInstruction(
                         const backing_int_body_len = file.zir.extra[extra_index];
                         extra_index += 1; // backing_int_body_len
                         if (backing_int_body_len == 0) {
-                            const backing_int_ref = @intToEnum(Ref, file.zir.extra[extra_index]);
+                            const backing_int_ref = @enumFromInt(Ref, file.zir.extra[extra_index]);
                             const backing_int_res = try self.walkRef(file, &scope, src_info, backing_int_ref, true);
                             backing_int = backing_int_res.expr;
                             extra_index += 1; // backing_int_ref
@@ -3006,13 +3006,13 @@ fn walkInstruction(
                         //       anyway, but maybe we should put it elsewhere.
                     }
                     return DocData.WalkResult{
-                        .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                        .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                         .expr = .{ .type = type_slot_index },
                     };
                 },
                 .this => {
                     return DocData.WalkResult{
-                        .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                        .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                         .expr = .{
                             .this = parent_scope.enclosing_type.?,
                             // We know enclosing_type is always present
@@ -3038,7 +3038,7 @@ fn walkInstruction(
                     self.exprs.items[bin_index] = .{ .builtin = .{ .name = @tagName(extended.opcode), .param = param_index } };
 
                     return DocData.WalkResult{
-                        .typeRef = param.typeRef orelse .{ .type = @enumToInt(Ref.type_type) },
+                        .typeRef = param.typeRef orelse .{ .type = @intFromEnum(Ref.type_type) },
                         .expr = .{ .builtinIndex = bin_index },
                     };
                 },
@@ -3058,7 +3058,7 @@ fn walkInstruction(
 
                     return DocData.WalkResult{
                         // from docs we know they return u32
-                        .typeRef = .{ .type = @enumToInt(Ref.u32_type) },
+                        .typeRef = .{ .type = @intFromEnum(Ref.u32_type) },
                         .expr = .{ .builtinIndex = bin_index },
                     };
                 },
@@ -3131,7 +3131,7 @@ fn walkInstruction(
                         .failure_order = failure_order_index,
                     } });
                     return DocData.WalkResult{
-                        .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+                        .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
                         .expr = .{ .cmpxchgIndex = cmpxchg_index },
                     };
                 },
@@ -3280,21 +3280,21 @@ fn analyzeDecl(
 
     extra_index += 1;
     const align_inst: Zir.Inst.Ref = if (!has_align) .none else inst: {
-        const inst = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+        const inst = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
         extra_index += 1;
         break :inst inst;
     };
     _ = align_inst;
 
     const section_inst: Zir.Inst.Ref = if (!has_section_or_addrspace) .none else inst: {
-        const inst = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+        const inst = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
         extra_index += 1;
         break :inst inst;
     };
     _ = section_inst;
 
     const addrspace_inst: Zir.Inst.Ref = if (!has_section_or_addrspace) .none else inst: {
-        const inst = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+        const inst = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
         extra_index += 1;
         break :inst inst;
     };
@@ -4111,7 +4111,7 @@ fn analyzeFancyFunction(
 
     var align_index: ?usize = null;
     if (extra.data.bits.has_align_ref) {
-        const align_ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+        const align_ref = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
         align_index = self.exprs.items.len;
         _ = try self.walkRef(file, scope, parent_src, align_ref, false);
         extra_index += 1;
@@ -4128,7 +4128,7 @@ fn analyzeFancyFunction(
 
     var addrspace_index: ?usize = null;
     if (extra.data.bits.has_addrspace_ref) {
-        const addrspace_ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+        const addrspace_ref = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
         addrspace_index = self.exprs.items.len;
         _ = try self.walkRef(file, scope, parent_src, addrspace_ref, false);
         extra_index += 1;
@@ -4145,7 +4145,7 @@ fn analyzeFancyFunction(
 
     var section_index: ?usize = null;
     if (extra.data.bits.has_section_ref) {
-        const section_ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+        const section_ref = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
         section_index = self.exprs.items.len;
         _ = try self.walkRef(file, scope, parent_src, section_ref, false);
         extra_index += 1;
@@ -4162,7 +4162,7 @@ fn analyzeFancyFunction(
 
     var cc_index: ?usize = null;
     if (extra.data.bits.has_cc_ref and !extra.data.bits.has_cc_body) {
-        const cc_ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+        const cc_ref = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
         const cc_expr = try self.walkRef(file, scope, parent_src, cc_ref, false);
 
         cc_index = self.exprs.items.len;
@@ -4211,7 +4211,7 @@ fn analyzeFancyFunction(
     const generic_ret: ?DocData.Expr = switch (ret_type_ref) {
         .type => |t| blk: {
             if (fn_info.body.len == 0) break :blk null;
-            if (t == @enumToInt(Ref.type_type)) {
+            if (t == @intFromEnum(Ref.type_type)) {
                 break :blk try self.getGenericReturnType(
                     file,
                     scope,
@@ -4249,7 +4249,7 @@ fn analyzeFancyFunction(
     };
 
     return DocData.WalkResult{
-        .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+        .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
         .expr = .{ .type = type_slot_index },
     };
 }
@@ -4354,7 +4354,7 @@ fn analyzeFunction(
     const generic_ret: ?DocData.Expr = switch (ret_type_ref) {
         .type => |t| blk: {
             if (fn_info.body.len == 0) break :blk null;
-            if (t == @enumToInt(Ref.type_type)) {
+            if (t == @intFromEnum(Ref.type_type)) {
                 break :blk try self.getGenericReturnType(
                     file,
                     scope,
@@ -4395,7 +4395,7 @@ fn analyzeFunction(
     };
 
     return DocData.WalkResult{
-        .typeRef = .{ .type = @enumToInt(Ref.type_type) },
+        .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
         .expr = .{ .type = type_slot_index },
     };
 }
@@ -4467,7 +4467,7 @@ fn collectUnionFieldInfo(
         const doc_comment_index = file.zir.extra[extra_index];
         extra_index += 1;
         const field_type = if (has_type)
-            @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index])
+            @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index])
         else
             .void_type;
         if (has_type) extra_index += 1;
@@ -4561,7 +4561,7 @@ fn collectStructFieldInfo(
         if (has_type_body) {
             fields[field_i].type_body_len = file.zir.extra[extra_index];
         } else {
-            fields[field_i].type_ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+            fields[field_i].type_ref = @enumFromInt(Zir.Inst.Ref, file.zir.extra[extra_index]);
         }
         extra_index += 1;
 
@@ -4651,13 +4651,13 @@ fn walkRef(
 ) AutodocErrors!DocData.WalkResult {
     if (ref == .none) {
         return .{ .expr = .{ .comptimeExpr = 0 } };
-    } else if (@enumToInt(ref) <= @enumToInt(InternPool.Index.last_type)) {
+    } else if (@intFromEnum(ref) <= @intFromEnum(InternPool.Index.last_type)) {
         // We can just return a type that indexes into `types` with the
         // enum value because in the beginning we pre-filled `types` with
         // the types that are listed in `Ref`.
         return DocData.WalkResult{
-            .typeRef = .{ .type = @enumToInt(std.builtin.TypeId.Type) },
-            .expr = .{ .type = @enumToInt(ref) },
+            .typeRef = .{ .type = @intFromEnum(std.builtin.TypeId.Type) },
+            .expr = .{ .type = @intFromEnum(ref) },
         };
     } else if (Zir.refToIndex(ref)) |zir_index| {
         return self.walkInstruction(file, parent_scope, parent_src, zir_index, need_type);
@@ -4676,26 +4676,26 @@ fn walkRef(
             },
             .zero => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.comptime_int_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.comptime_int_type) },
                     .expr = .{ .int = .{ .value = 0 } },
                 };
             },
             .one => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.comptime_int_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.comptime_int_type) },
                     .expr = .{ .int = .{ .value = 1 } },
                 };
             },
 
             .void_value => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.void_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.void_type) },
                     .expr = .{ .void = .{} },
                 };
             },
             .unreachable_value => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.noreturn_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.noreturn_type) },
                     .expr = .{ .@"unreachable" = .{} },
                 };
             },
@@ -4704,13 +4704,13 @@ fn walkRef(
             },
             .bool_true => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.bool_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.bool_type) },
                     .expr = .{ .bool = true },
                 };
             },
             .bool_false => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.bool_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.bool_type) },
                     .expr = .{ .bool = false },
                 };
             },
@@ -4719,37 +4719,37 @@ fn walkRef(
             },
             .zero_usize => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.usize_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.usize_type) },
                     .expr = .{ .int = .{ .value = 0 } },
                 };
             },
             .one_usize => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.usize_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.usize_type) },
                     .expr = .{ .int = .{ .value = 1 } },
                 };
             },
             .calling_convention_type => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.type_type) },
-                    .expr = .{ .type = @enumToInt(Ref.calling_convention_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.type_type) },
+                    .expr = .{ .type = @intFromEnum(Ref.calling_convention_type) },
                 };
             },
             .calling_convention_c => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.calling_convention_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.calling_convention_type) },
                     .expr = .{ .enumLiteral = "C" },
                 };
             },
             .calling_convention_inline => {
                 return DocData.WalkResult{
-                    .typeRef = .{ .type = @enumToInt(Ref.calling_convention_type) },
+                    .typeRef = .{ .type = @intFromEnum(Ref.calling_convention_type) },
                     .expr = .{ .enumLiteral = "Inline" },
                 };
             },
             // .generic_poison => {
             //     return DocData.WalkResult{ .int = .{
-            //         .type = @enumToInt(Ref.comptime_int_type),
+            //         .type = @intFromEnum(Ref.comptime_int_type),
             //         .value = 1,
             //     } };
             // },
src/clang.zig
@@ -1448,7 +1448,7 @@ pub const CK = enum(c_int) {
     IntegralToBoolean,
     IntegralToFloating,
     FloatingToFixedPoint,
-    FixedPointToFloating,
+    FixedPofloatFromInting,
     FixedPointCast,
     FixedPointToIntegral,
     IntegralToFixedPoint,
src/codegen.zig
@@ -381,7 +381,7 @@ pub fn generateSymbol(
                         .fail => |em| return Result{ .fail = em },
                     }
                 }
-                try code.writer().writeByte(@boolToInt(payload_val != null));
+                try code.writer().writeByte(@intFromBool(payload_val != null));
                 try code.writer().writeByteNTimes(0, padding);
             }
         },
@@ -391,7 +391,7 @@ pub fn generateSymbol(
                 .elems, .repeated_elem => {
                     var index: u64 = 0;
                     var len_including_sentinel =
-                        array_type.len + @boolToInt(array_type.sentinel != .none);
+                        array_type.len + @intFromBool(array_type.sentinel != .none);
                     while (index < len_including_sentinel) : (index += 1) {
                         switch (try generateSymbol(bin_file, src_loc, .{
                             .ty = array_type.child.toType(),
@@ -952,7 +952,7 @@ pub fn genTypedValue(
             }
         },
         .Bool => {
-            return GenResult.mcv(.{ .immediate = @boolToInt(typed_value.val.toBool()) });
+            return GenResult.mcv(.{ .immediate = @intFromBool(typed_value.val.toBool()) });
         },
         .Optional => {
             if (typed_value.ty.isPtrLikeOptional(mod)) {
@@ -961,7 +961,7 @@ pub fn genTypedValue(
                     .val = typed_value.val.optionalValue(mod) orelse return GenResult.mcv(.{ .immediate = 0 }),
                 }, owner_decl_index);
             } else if (typed_value.ty.abiSize(mod) == 1) {
-                return GenResult.mcv(.{ .immediate = @boolToInt(!typed_value.val.isNull(mod)) });
+                return GenResult.mcv(.{ .immediate = @intFromBool(!typed_value.val.isNull(mod)) });
             }
         },
         .Enum => {
src/Compilation.zig
@@ -1050,7 +1050,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
                 const is_enabled = options.target.cpu.features.isEnabled(index);
 
                 if (feature.llvm_name) |llvm_name| {
-                    const plus_or_minus = "-+"[@boolToInt(is_enabled)];
+                    const plus_or_minus = "-+"[@intFromBool(is_enabled)];
                     try buf.ensureUnusedCapacity(2 + llvm_name.len);
                     buf.appendAssumeCapacity(plus_or_minus);
                     buf.appendSliceAssumeCapacity(llvm_name);
@@ -2506,7 +2506,7 @@ pub fn makeBinFileWritable(self: *Compilation) !void {
 /// This function is temporally single-threaded.
 pub fn totalErrorCount(self: *Compilation) u32 {
     var total: usize = self.failed_c_objects.count() + self.misc_failures.count() +
-        @boolToInt(self.alloc_failure_occurred) + self.lld_errors.items.len;
+        @intFromBool(self.alloc_failure_occurred) + self.lld_errors.items.len;
 
     if (self.bin_file.options.module) |module| {
         total += module.failed_exports.count();
@@ -2520,7 +2520,7 @@ pub fn totalErrorCount(self: *Compilation) u32 {
                 } else {
                     const file = entry.key_ptr.*;
                     assert(file.zir_loaded);
-                    const payload_index = file.zir.extra[@enumToInt(Zir.ExtraIndex.compile_errors)];
+                    const payload_index = file.zir.extra[@intFromEnum(Zir.ExtraIndex.compile_errors)];
                     assert(payload_index != 0);
                     const header = file.zir.extraData(Zir.Inst.CompileErrors, payload_index);
                     total += header.data.items_len;
@@ -2551,14 +2551,14 @@ pub fn totalErrorCount(self: *Compilation) u32 {
 
     // The "no entry point found" error only counts if there are no semantic analysis errors.
     if (total == 0) {
-        total += @boolToInt(self.link_error_flags.no_entry_point_found);
+        total += @intFromBool(self.link_error_flags.no_entry_point_found);
     }
-    total += @boolToInt(self.link_error_flags.missing_libc);
+    total += @intFromBool(self.link_error_flags.missing_libc);
 
     // Compile log errors only count if there are no other errors.
     if (total == 0) {
         if (self.bin_file.options.module) |module| {
-            total += @boolToInt(module.compile_log_decls.count() != 0);
+            total += @intFromBool(module.compile_log_decls.count() != 0);
         }
     }
 
@@ -2604,7 +2604,7 @@ pub fn getAllErrorsAlloc(self: *Compilation) !ErrorBundle {
         });
         const notes_start = try bundle.reserveNotes(notes_len);
         for (notes_start.., lld_error.context_lines) |note, context_line| {
-            bundle.extra.items[note] = @enumToInt(bundle.addErrorMessageAssumeCapacity(.{
+            bundle.extra.items[note] = @intFromEnum(bundle.addErrorMessageAssumeCapacity(.{
                 .msg = try bundle.addString(context_line),
             }));
         }
@@ -2697,10 +2697,10 @@ pub fn getAllErrorsAlloc(self: *Compilation) !ErrorBundle {
             .notes_len = 2,
         });
         const notes_start = try bundle.reserveNotes(2);
-        bundle.extra.items[notes_start + 0] = @enumToInt(try bundle.addErrorMessage(.{
+        bundle.extra.items[notes_start + 0] = @intFromEnum(try bundle.addErrorMessage(.{
             .msg = try bundle.addString("run 'zig libc -h' to learn about libc installations"),
         }));
-        bundle.extra.items[notes_start + 1] = @enumToInt(try bundle.addErrorMessage(.{
+        bundle.extra.items[notes_start + 1] = @intFromEnum(try bundle.addErrorMessage(.{
             .msg = try bundle.addString("run 'zig targets' to see the targets for which zig can always provide libc"),
         }));
     }
@@ -2895,7 +2895,7 @@ pub fn addModuleErrorMsg(mod: *Module, eb: *ErrorBundle.Wip, module_err_msg: Mod
     const notes_start = try eb.reserveNotes(notes_len);
 
     for (notes_start.., notes.keys()) |i, note| {
-        eb.extra.items[i] = @enumToInt(try eb.addErrorMessage(note));
+        eb.extra.items[i] = @intFromEnum(try eb.addErrorMessage(note));
     }
 }
 
@@ -2903,7 +2903,7 @@ pub fn addZirErrorMessages(eb: *ErrorBundle.Wip, file: *Module.File) !void {
     assert(file.zir_loaded);
     assert(file.tree_loaded);
     assert(file.source_loaded);
-    const payload_index = file.zir.extra[@enumToInt(Zir.ExtraIndex.compile_errors)];
+    const payload_index = file.zir.extra[@intFromEnum(Zir.ExtraIndex.compile_errors)];
     assert(payload_index != 0);
     const gpa = eb.gpa;
 
@@ -2963,7 +2963,7 @@ pub fn addZirErrorMessages(eb: *ErrorBundle.Wip, file: *Module.File) !void {
                 const src_path = try file.fullPath(gpa);
                 defer gpa.free(src_path);
 
-                eb.extra.items[note_i] = @enumToInt(try eb.addErrorMessage(.{
+                eb.extra.items[note_i] = @intFromEnum(try eb.addErrorMessage(.{
                     .msg = try eb.addString(msg),
                     .src_loc = try eb.addSourceLocation(.{
                         .src_path = try eb.addString(src_path),
@@ -3466,7 +3466,7 @@ fn workerAstGenFile(
     // If we experience an error preemptively fetching the
     // file, just ignore it and let it happen again later during Sema.
     assert(file.zir_loaded);
-    const imports_index = file.zir.extra[@enumToInt(Zir.ExtraIndex.imports)];
+    const imports_index = file.zir.extra[@intFromEnum(Zir.ExtraIndex.imports)];
     if (imports_index != 0) {
         const extra = file.zir.extraData(Zir.Inst.Imports, imports_index);
         var import_i: u32 = 0;
@@ -4239,10 +4239,10 @@ pub fn addCCArgs(
         }
 
         try argv.append(try std.fmt.allocPrint(arena, "-D_LIBCPP_ABI_VERSION={d}", .{
-            @enumToInt(comp.libcxx_abi_version),
+            @intFromEnum(comp.libcxx_abi_version),
         }));
         try argv.append(try std.fmt.allocPrint(arena, "-D_LIBCPP_ABI_NAMESPACE=__{d}", .{
-            @enumToInt(comp.libcxx_abi_version),
+            @intFromEnum(comp.libcxx_abi_version),
         }));
     }
 
@@ -4307,7 +4307,7 @@ pub fn addCCArgs(
 
                 if (feature.llvm_name) |llvm_name| {
                     argv.appendSliceAssumeCapacity(&[_][]const u8{ "-Xclang", "-target-feature", "-Xclang" });
-                    const plus_or_minus = "-+"[@boolToInt(is_enabled)];
+                    const plus_or_minus = "-+"[@intFromBool(is_enabled)];
                     const arg = try std.fmt.allocPrint(arena, "{c}{s}", .{ plus_or_minus, llvm_name });
                     argv.appendAssumeCapacity(arg);
                 }
src/crash_report.zig
@@ -186,11 +186,11 @@ fn handleSegfaultPosix(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const any
     PanicSwitch.preDispatch();
 
     const addr = switch (builtin.os.tag) {
-        .linux => @ptrToInt(info.fields.sigfault.addr),
-        .freebsd, .macos => @ptrToInt(info.addr),
-        .netbsd => @ptrToInt(info.info.reason.fault.addr),
-        .openbsd => @ptrToInt(info.data.fault.addr),
-        .solaris => @ptrToInt(info.reason.fault.addr),
+        .linux => @intFromPtr(info.fields.sigfault.addr),
+        .freebsd, .macos => @intFromPtr(info.addr),
+        .netbsd => @intFromPtr(info.info.reason.fault.addr),
+        .openbsd => @intFromPtr(info.data.fault.addr),
+        .solaris => @intFromPtr(info.reason.fault.addr),
         else => @compileError("TODO implement handleSegfaultPosix for new POSIX OS"),
     };
 
@@ -279,7 +279,7 @@ fn handleSegfaultWindowsExtra(info: *os.windows.EXCEPTION_POINTERS, comptime msg
         const regs = info.ContextRecord.getRegs();
         break :ctx StackContext{ .exception = .{ .bp = regs.bp, .ip = regs.ip } };
     } else ctx: {
-        const addr = @ptrToInt(info.ExceptionRecord.ExceptionAddress);
+        const addr = @intFromPtr(info.ExceptionRecord.ExceptionAddress);
         break :ctx StackContext{ .current = .{ .ret_addr = addr } };
     };
 
src/InternPool.zig
@@ -80,7 +80,7 @@ const KeyAdapter = struct {
 
     pub fn eql(ctx: @This(), a: Key, b_void: void, b_map_index: usize) bool {
         _ = b_void;
-        return ctx.intern_pool.indexToKey(@intToEnum(Index, b_map_index)).eql(a, ctx.intern_pool);
+        return ctx.intern_pool.indexToKey(@enumFromInt(Index, b_map_index)).eql(a, ctx.intern_pool);
     }
 
     pub fn hash(ctx: @This(), a: Key) u32 {
@@ -95,7 +95,7 @@ pub const OptionalMapIndex = enum(u32) {
 
     pub fn unwrap(oi: OptionalMapIndex) ?MapIndex {
         if (oi == .none) return null;
-        return @intToEnum(MapIndex, @enumToInt(oi));
+        return @enumFromInt(MapIndex, @intFromEnum(oi));
     }
 };
 
@@ -104,7 +104,7 @@ pub const MapIndex = enum(u32) {
     _,
 
     pub fn toOptional(i: MapIndex) OptionalMapIndex {
-        return @intToEnum(OptionalMapIndex, @enumToInt(i));
+        return @enumFromInt(OptionalMapIndex, @intFromEnum(i));
     }
 };
 
@@ -114,7 +114,7 @@ pub const RuntimeIndex = enum(u32) {
     _,
 
     pub fn increment(ri: *RuntimeIndex) void {
-        ri.* = @intToEnum(RuntimeIndex, @enumToInt(ri.*) + 1);
+        ri.* = @enumFromInt(RuntimeIndex, @intFromEnum(ri.*) + 1);
     }
 };
 
@@ -130,11 +130,11 @@ pub const NullTerminatedString = enum(u32) {
     _,
 
     pub fn toString(self: NullTerminatedString) String {
-        return @intToEnum(String, @enumToInt(self));
+        return @enumFromInt(String, @intFromEnum(self));
     }
 
     pub fn toOptional(self: NullTerminatedString) OptionalNullTerminatedString {
-        return @intToEnum(OptionalNullTerminatedString, @enumToInt(self));
+        return @enumFromInt(OptionalNullTerminatedString, @intFromEnum(self));
     }
 
     const Adapter = struct {
@@ -147,14 +147,14 @@ pub const NullTerminatedString = enum(u32) {
 
         pub fn hash(ctx: @This(), a: NullTerminatedString) u32 {
             _ = ctx;
-            return std.hash.uint32(@enumToInt(a));
+            return std.hash.uint32(@intFromEnum(a));
         }
     };
 
     /// Compare based on integer value alone, ignoring the string contents.
     pub fn indexLessThan(ctx: void, a: NullTerminatedString, b: NullTerminatedString) bool {
         _ = ctx;
-        return @enumToInt(a) < @enumToInt(b);
+        return @intFromEnum(a) < @intFromEnum(b);
     }
 
     pub fn toUnsigned(self: NullTerminatedString, ip: *const InternPool) ?u32 {
@@ -196,7 +196,7 @@ pub const OptionalNullTerminatedString = enum(u32) {
 
     pub fn unwrap(oi: OptionalNullTerminatedString) ?NullTerminatedString {
         if (oi == .none) return null;
-        return @intToEnum(NullTerminatedString, @enumToInt(oi));
+        return @enumFromInt(NullTerminatedString, @intFromEnum(oi));
     }
 };
 
@@ -279,7 +279,7 @@ pub const Key = union(enum) {
 
         /// Look up field index based on field name.
         pub fn nameIndex(self: ErrorSetType, ip: *const InternPool, name: NullTerminatedString) ?u32 {
-            const map = &ip.maps.items[@enumToInt(self.names_map.unwrap().?)];
+            const map = &ip.maps.items[@intFromEnum(self.names_map.unwrap().?)];
             const adapter: NullTerminatedString.Adapter = .{ .strings = self.names };
             const field_index = map.getIndexAdapted(name, adapter) orelse return null;
             return @intCast(u32, field_index);
@@ -417,7 +417,7 @@ pub const Key = union(enum) {
 
         /// Look up field index based on field name.
         pub fn nameIndex(self: EnumType, ip: *const InternPool, name: NullTerminatedString) ?u32 {
-            const map = &ip.maps.items[@enumToInt(self.names_map.unwrap().?)];
+            const map = &ip.maps.items[@intFromEnum(self.names_map.unwrap().?)];
             const adapter: NullTerminatedString.Adapter = .{ .strings = self.names };
             const field_index = map.getIndexAdapted(name, adapter) orelse return null;
             return @intCast(u32, field_index);
@@ -437,7 +437,7 @@ pub const Key = union(enum) {
                 else => unreachable,
             };
             if (self.values_map.unwrap()) |values_map| {
-                const map = &ip.maps.items[@enumToInt(values_map)];
+                const map = &ip.maps.items[@intFromEnum(values_map)];
                 const adapter: Index.Adapter = .{ .indexes = self.values };
                 const field_index = map.getIndexAdapted(int_tag_val, adapter) orelse return null;
                 return @intCast(u32, field_index);
@@ -691,7 +691,7 @@ pub const Key = union(enum) {
     pub fn hash64(key: Key, ip: *const InternPool) u64 {
         const asBytes = std.mem.asBytes;
         const KeyTag = @typeInfo(Key).Union.tag_type.?;
-        const seed = @enumToInt(@as(KeyTag, key));
+        const seed = @intFromEnum(@as(KeyTag, key));
         return switch (key) {
             // TODO: assert no padding in these types
             inline .ptr_type,
@@ -714,8 +714,8 @@ pub const Key = union(enum) {
             .un,
             => |x| Hash.hash(seed, asBytes(&x)),
 
-            .int_type => |x| Hash.hash(seed + @enumToInt(x.signedness), asBytes(&x.bits)),
-            .union_type => |x| Hash.hash(seed + @enumToInt(x.runtime_tag), asBytes(&x.index)),
+            .int_type => |x| Hash.hash(seed + @intFromEnum(x.signedness), asBytes(&x.bits)),
+            .union_type => |x| Hash.hash(seed + @intFromEnum(x.runtime_tag), asBytes(&x.index)),
 
             .error_union => |x| switch (x.val) {
                 .err_name => |y| Hash.hash(seed + 0, asBytes(&x.ty) ++ asBytes(&y)),
@@ -777,7 +777,7 @@ pub const Key = union(enum) {
                 // Int-to-ptr pointers are hashed separately than decl-referencing pointers.
                 // This is sound due to pointer provenance rules.
                 const addr: @typeInfo(Key.Ptr.Addr).Union.tag_type.? = ptr.addr;
-                const seed2 = seed + @enumToInt(addr);
+                const seed2 = seed + @intFromEnum(addr);
                 const common = asBytes(&ptr.ty) ++ asBytes(&ptr.len);
                 return switch (ptr.addr) {
                     .decl => |x| Hash.hash(seed2, common ++ asBytes(&x)),
@@ -1381,7 +1381,7 @@ pub const Index = enum(u32) {
 
         pub fn hash(ctx: @This(), a: Index) u32 {
             _ = ctx;
-            return std.hash.uint32(@enumToInt(a));
+            return std.hash.uint32(@intFromEnum(a));
         }
     };
 
@@ -2259,21 +2259,21 @@ pub const Alignment = enum(u6) {
     pub fn toByteUnitsOptional(a: Alignment) ?u64 {
         return switch (a) {
             .none => null,
-            _ => @as(u64, 1) << @enumToInt(a),
+            _ => @as(u64, 1) << @intFromEnum(a),
         };
     }
 
     pub fn toByteUnits(a: Alignment, default: u64) u64 {
         return switch (a) {
             .none => default,
-            _ => @as(u64, 1) << @enumToInt(a),
+            _ => @as(u64, 1) << @intFromEnum(a),
         };
     }
 
     pub fn fromByteUnits(n: u64) Alignment {
         if (n == 0) return .none;
         assert(std.math.isPowerOfTwo(n));
-        return @intToEnum(Alignment, @ctz(n));
+        return @enumFromInt(Alignment, @ctz(n));
     }
 
     pub fn fromNonzeroByteUnits(n: u64) Alignment {
@@ -2282,7 +2282,7 @@ pub const Alignment = enum(u6) {
     }
 
     pub fn min(a: Alignment, b: Alignment) Alignment {
-        return @intToEnum(Alignment, @min(@enumToInt(a), @enumToInt(b)));
+        return @enumFromInt(Alignment, @min(@intFromEnum(a), @intFromEnum(b)));
     }
 };
 
@@ -2509,10 +2509,10 @@ pub fn init(ip: *InternPool, gpa: Allocator) !void {
         const cc_c = ip.indexToKey(.calling_convention_c).enum_tag.int;
 
         assert(ip.indexToKey(cc_inline).int.storage.u64 ==
-            @enumToInt(std.builtin.CallingConvention.Inline));
+            @intFromEnum(std.builtin.CallingConvention.Inline));
 
         assert(ip.indexToKey(cc_c).int.storage.u64 ==
-            @enumToInt(std.builtin.CallingConvention.C));
+            @intFromEnum(std.builtin.CallingConvention.C));
 
         assert(ip.indexToKey(ip.typeOf(cc_inline)).int_type.bits ==
             @typeInfo(@typeInfo(std.builtin.CallingConvention).Enum.tag_type).Int.bits);
@@ -2550,7 +2550,7 @@ pub fn deinit(ip: *InternPool, gpa: Allocator) void {
 
 pub fn indexToKey(ip: *const InternPool, index: Index) Key {
     assert(index != .none);
-    const item = ip.items.get(@enumToInt(index));
+    const item = ip.items.get(@intFromEnum(index));
     const data = item.data;
     return switch (item.tag) {
         .type_int_signed => .{
@@ -2581,8 +2581,8 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
                 .sentinel = .none,
             } };
         },
-        .simple_type => .{ .simple_type = @intToEnum(SimpleType, data) },
-        .simple_value => .{ .simple_value = @intToEnum(SimpleValue, data) },
+        .simple_type => .{ .simple_type = @enumFromInt(SimpleType, data) },
+        .simple_value => .{ .simple_value = @enumFromInt(SimpleValue, data) },
 
         .type_vector => {
             const vector_info = ip.extraData(Vector, data);
@@ -2601,8 +2601,8 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
             return .{ .ptr_type = ptr_info };
         },
 
-        .type_optional => .{ .opt_type = @intToEnum(Index, data) },
-        .type_anyframe => .{ .anyframe_type = @intToEnum(Index, data) },
+        .type_optional => .{ .opt_type = @enumFromInt(Index, data) },
+        .type_anyframe => .{ .anyframe_type = @enumFromInt(Index, data) },
 
         .type_error_union => .{ .error_union_type = ip.extraData(Key.ErrorUnionType, data) },
         .type_error_set => {
@@ -2615,12 +2615,12 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
             } };
         },
         .type_inferred_error_set => .{
-            .inferred_error_set_type = @intToEnum(Module.Fn.InferredErrorSet.Index, data),
+            .inferred_error_set_type = @enumFromInt(Module.Fn.InferredErrorSet.Index, data),
         },
 
         .type_opaque => .{ .opaque_type = ip.extraData(Key.OpaqueType, data) },
         .type_struct => {
-            const struct_index = @intToEnum(Module.Struct.OptionalIndex, data);
+            const struct_index = @enumFromInt(Module.Struct.OptionalIndex, data);
             const namespace = if (struct_index.unwrap()) |i|
                 ip.structPtrConst(i).namespace.toOptional()
             else
@@ -2632,7 +2632,7 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
         },
         .type_struct_ns => .{ .struct_type = .{
             .index = .none,
-            .namespace = @intToEnum(Module.Namespace.Index, data).toOptional(),
+            .namespace = @enumFromInt(Module.Namespace.Index, data).toOptional(),
         } },
 
         .type_struct_anon => {
@@ -2660,15 +2660,15 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
         },
 
         .type_union_untagged => .{ .union_type = .{
-            .index = @intToEnum(Module.Union.Index, data),
+            .index = @enumFromInt(Module.Union.Index, data),
             .runtime_tag = .none,
         } },
         .type_union_tagged => .{ .union_type = .{
-            .index = @intToEnum(Module.Union.Index, data),
+            .index = @enumFromInt(Module.Union.Index, data),
             .runtime_tag = .tagged,
         } },
         .type_union_safety => .{ .union_type = .{
-            .index = @intToEnum(Module.Union.Index, data),
+            .index = @enumFromInt(Module.Union.Index, data),
             .runtime_tag = .safety,
         } },
 
@@ -2693,10 +2693,10 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
         .type_enum_nonexhaustive => ip.indexToKeyEnum(data, .nonexhaustive),
         .type_function => .{ .func_type = ip.indexToKeyFuncType(data) },
 
-        .undef => .{ .undef = @intToEnum(Index, data) },
+        .undef => .{ .undef = @enumFromInt(Index, data) },
         .runtime_value => .{ .runtime_value = ip.extraData(Tag.TypeValue, data) },
         .opt_null => .{ .opt = .{
-            .ty = @intToEnum(Index, data),
+            .ty = @enumFromInt(Index, data),
             .val = .none,
         } },
         .opt_payload => {
@@ -2754,7 +2754,7 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
         .ptr_elem => {
             // Avoid `indexToKey` recursion by asserting the tag encoding.
             const info = ip.extraData(PtrBaseIndex, data);
-            const index_item = ip.items.get(@enumToInt(info.index));
+            const index_item = ip.items.get(@intFromEnum(info.index));
             return switch (index_item.tag) {
                 .int_usize => .{ .ptr = .{
                     .ty = info.ty,
@@ -2770,7 +2770,7 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
         .ptr_field => {
             // Avoid `indexToKey` recursion by asserting the tag encoding.
             const info = ip.extraData(PtrBaseIndex, data);
-            const index_item = ip.items.get(@enumToInt(info.index));
+            const index_item = ip.items.get(@intFromEnum(info.index));
             return switch (index_item.tag) {
                 .int_usize => .{ .ptr = .{
                     .ty = info.ty,
@@ -2785,7 +2785,7 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
         },
         .ptr_slice => {
             const info = ip.extraData(PtrSlice, data);
-            const ptr_item = ip.items.get(@enumToInt(info.ptr));
+            const ptr_item = ip.items.get(@intFromEnum(info.ptr));
             return .{
                 .ptr = .{
                     .ty = info.ty,
@@ -2815,7 +2815,7 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
                         .ptr_elem => b: {
                             // Avoid `indexToKey` recursion by asserting the tag encoding.
                             const sub_info = ip.extraData(PtrBaseIndex, ptr_item.data);
-                            const index_item = ip.items.get(@enumToInt(sub_info.index));
+                            const index_item = ip.items.get(@intFromEnum(sub_info.index));
                             break :b switch (index_item.tag) {
                                 .int_usize => .{ .elem = .{
                                     .base = sub_info.base,
@@ -2828,7 +2828,7 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
                         .ptr_field => b: {
                             // Avoid `indexToKey` recursion by asserting the tag encoding.
                             const sub_info = ip.extraData(PtrBaseIndex, ptr_item.data);
-                            const index_item = ip.items.get(@enumToInt(sub_info.index));
+                            const index_item = ip.items.get(@intFromEnum(sub_info.index));
                             break :b switch (index_item.tag) {
                                 .int_usize => .{ .field = .{
                                     .base = sub_info.base,
@@ -2940,8 +2940,8 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
         .extern_func => .{ .extern_func = ip.extraData(Tag.ExternFunc, data) },
         .func => .{ .func = ip.extraData(Tag.Func, data) },
         .only_possible_value => {
-            const ty = @intToEnum(Index, data);
-            const ty_item = ip.items.get(@enumToInt(ty));
+            const ty = @enumFromInt(Index, data);
+            const ty_item = ip.items.get(@intFromEnum(ty));
             return switch (ty_item.tag) {
                 .type_array_big => {
                     const sentinel = @ptrCast(
@@ -2950,7 +2950,7 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
                     );
                     return .{ .aggregate = .{
                         .ty = ty,
-                        .storage = .{ .elems = sentinel[0..@boolToInt(sentinel[0] != .none)] },
+                        .storage = .{ .elems = sentinel[0..@intFromBool(sentinel[0] != .none)] },
                     } };
                 },
                 .type_array_small, .type_vector => .{ .aggregate = .{
@@ -2994,7 +2994,7 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
             const len = @intCast(u32, ip.aggregateTypeLenIncludingSentinel(extra.ty));
             return .{ .aggregate = .{
                 .ty = extra.ty,
-                .storage = .{ .bytes = ip.string_bytes.items[@enumToInt(extra.bytes)..][0..len] },
+                .storage = .{ .bytes = ip.string_bytes.items[@intFromEnum(extra.bytes)..][0..len] },
             } };
         },
         .aggregate => {
@@ -3029,7 +3029,7 @@ pub fn indexToKey(ip: *const InternPool, index: Index) Key {
                 .val = .{ .payload = extra.val },
             } };
         },
-        .enum_literal => .{ .enum_literal = @intToEnum(NullTerminatedString, data) },
+        .enum_literal => .{ .enum_literal = @enumFromInt(NullTerminatedString, data) },
         .enum_tag => .{ .enum_tag = ip.extraData(Tag.EnumTag, data) },
 
         .memoized_call => {
@@ -3103,7 +3103,7 @@ fn indexToKeyBigInt(ip: *const InternPool, limb_index: u32, positive: bool) Key
 pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
     const adapter: KeyAdapter = .{ .intern_pool = ip };
     const gop = try ip.map.getOrPutAdapted(gpa, key, adapter);
-    if (gop.found_existing) return @intToEnum(Index, gop.index);
+    if (gop.found_existing) return @enumFromInt(Index, gop.index);
     try ip.items.ensureUnusedCapacity(gpa, 1);
     switch (key) {
         .int_type => |int_type| {
@@ -3129,9 +3129,9 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                 try ip.items.ensureUnusedCapacity(gpa, 1);
                 ip.items.appendAssumeCapacity(.{
                     .tag = .type_slice,
-                    .data = @enumToInt(ptr_type_index),
+                    .data = @intFromEnum(ptr_type_index),
                 });
-                return @intToEnum(Index, ip.items.len - 1);
+                return @enumFromInt(Index, ip.items.len - 1);
             }
 
             var ptr_type_adjusted = ptr_type;
@@ -3155,7 +3155,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                             .child = array_type.child,
                         }),
                     });
-                    return @intToEnum(Index, ip.items.len - 1);
+                    return @enumFromInt(Index, ip.items.len - 1);
                 }
             }
 
@@ -3183,14 +3183,14 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
             assert(payload_type != .none);
             ip.items.appendAssumeCapacity(.{
                 .tag = .type_optional,
-                .data = @enumToInt(payload_type),
+                .data = @intFromEnum(payload_type),
             });
         },
         .anyframe_type => |payload_type| {
             // payload_type might be none, indicating the type is `anyframe`.
             ip.items.appendAssumeCapacity(.{
                 .tag = .type_anyframe,
-                .data = @enumToInt(payload_type),
+                .data = @intFromEnum(payload_type),
             });
         },
         .error_union_type => |error_union_type| {
@@ -3218,26 +3218,26 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
         .inferred_error_set_type => |ies_index| {
             ip.items.appendAssumeCapacity(.{
                 .tag = .type_inferred_error_set,
-                .data = @enumToInt(ies_index),
+                .data = @intFromEnum(ies_index),
             });
         },
         .simple_type => |simple_type| {
             ip.items.appendAssumeCapacity(.{
                 .tag = .simple_type,
-                .data = @enumToInt(simple_type),
+                .data = @intFromEnum(simple_type),
             });
         },
         .simple_value => |simple_value| {
             ip.items.appendAssumeCapacity(.{
                 .tag = .simple_value,
-                .data = @enumToInt(simple_value),
+                .data = @intFromEnum(simple_value),
             });
         },
         .undef => |ty| {
             assert(ty != .none);
             ip.items.appendAssumeCapacity(.{
                 .tag = .undef,
-                .data = @enumToInt(ty),
+                .data = @intFromEnum(ty),
             });
         },
         .runtime_value => |runtime_value| {
@@ -3251,13 +3251,13 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
         .struct_type => |struct_type| {
             ip.items.appendAssumeCapacity(if (struct_type.index.unwrap()) |i| .{
                 .tag = .type_struct,
-                .data = @enumToInt(i),
+                .data = @intFromEnum(i),
             } else if (struct_type.namespace.unwrap()) |i| .{
                 .tag = .type_struct_ns,
-                .data = @enumToInt(i),
+                .data = @intFromEnum(i),
             } else .{
                 .tag = .type_struct,
-                .data = @enumToInt(Module.Struct.OptionalIndex.none),
+                .data = @intFromEnum(Module.Struct.OptionalIndex.none),
             });
         },
 
@@ -3279,7 +3279,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                 });
                 ip.extra.appendSliceAssumeCapacity(@ptrCast([]const u32, anon_struct_type.types));
                 ip.extra.appendSliceAssumeCapacity(@ptrCast([]const u32, anon_struct_type.values));
-                return @intToEnum(Index, ip.items.len - 1);
+                return @enumFromInt(Index, ip.items.len - 1);
             }
 
             assert(anon_struct_type.names.len == anon_struct_type.types.len);
@@ -3297,7 +3297,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
             ip.extra.appendSliceAssumeCapacity(@ptrCast([]const u32, anon_struct_type.types));
             ip.extra.appendSliceAssumeCapacity(@ptrCast([]const u32, anon_struct_type.values));
             ip.extra.appendSliceAssumeCapacity(@ptrCast([]const u32, anon_struct_type.names));
-            return @intToEnum(Index, ip.items.len - 1);
+            return @enumFromInt(Index, ip.items.len - 1);
         },
 
         .union_type => |union_type| {
@@ -3307,7 +3307,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                     .safety => .type_union_safety,
                     .tagged => .type_union_tagged,
                 },
-                .data = @enumToInt(union_type.index),
+                .data = @intFromEnum(union_type.index),
             });
         },
 
@@ -3343,7 +3343,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                         }),
                     });
                     ip.extra.appendSliceAssumeCapacity(@ptrCast([]const u32, enum_type.names));
-                    return @intToEnum(Index, ip.items.len - 1);
+                    return @enumFromInt(Index, ip.items.len - 1);
                 },
                 .explicit => return finishGetEnum(ip, gpa, enum_type, .type_enum_explicit),
                 .nonexhaustive => return finishGetEnum(ip, gpa, enum_type, .type_enum_nonexhaustive),
@@ -3540,7 +3540,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                     });
                 },
             }
-            assert(ptr.ty == ip.indexToKey(@intToEnum(Index, ip.items.len - 1)).ptr.ty);
+            assert(ptr.ty == ip.indexToKey(@enumFromInt(Index, ip.items.len - 1)).ptr.ty);
         },
 
         .opt => |opt| {
@@ -3548,7 +3548,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
             assert(opt.val == .none or ip.indexToKey(opt.ty).opt_type == ip.typeOf(opt.val));
             ip.items.appendAssumeCapacity(if (opt.val == .none) .{
                 .tag = .opt_null,
-                .data = @enumToInt(opt.ty),
+                .data = @intFromEnum(opt.ty),
             } else .{
                 .tag = .opt_payload,
                 .data = try ip.addExtra(gpa, Tag.TypeValue{
@@ -3574,7 +3574,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                             .lazy_ty = lazy_ty,
                         }),
                     });
-                    return @intToEnum(Index, ip.items.len - 1);
+                    return @enumFromInt(Index, ip.items.len - 1);
                 },
             }
             switch (int.ty) {
@@ -3715,7 +3715,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                                 .value = casted,
                             }),
                         });
-                        return @intToEnum(Index, ip.items.len - 1);
+                        return @enumFromInt(Index, ip.items.len - 1);
                     } else |_| {}
 
                     const tag: Tag = if (big_int.positive) .int_positive else .int_negative;
@@ -3730,7 +3730,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                                 .value = casted,
                             }),
                         });
-                        return @intToEnum(Index, ip.items.len - 1);
+                        return @enumFromInt(Index, ip.items.len - 1);
                     }
 
                     var buf: [2]Limb = undefined;
@@ -3772,7 +3772,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
 
         .enum_literal => |enum_literal| ip.items.appendAssumeCapacity(.{
             .tag = .enum_literal,
-            .data = @enumToInt(enum_literal),
+            .data = @intFromEnum(enum_literal),
         }),
 
         .enum_tag => |enum_tag| {
@@ -3790,7 +3790,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
 
         .empty_enum_value => |enum_or_union_ty| ip.items.appendAssumeCapacity(.{
             .tag = .only_possible_value,
-            .data = @enumToInt(enum_or_union_ty),
+            .data = @intFromEnum(enum_or_union_ty),
         }),
 
         .float => |float| {
@@ -3847,7 +3847,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                 .vector_type, .anon_struct_type, .struct_type => .none,
                 else => unreachable,
             };
-            const len_including_sentinel = len + @boolToInt(sentinel != .none);
+            const len_including_sentinel = len + @intFromBool(sentinel != .none);
             switch (aggregate.storage) {
                 .bytes => |bytes| {
                     assert(child == .u8_type);
@@ -3891,9 +3891,9 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
             if (len == 0) {
                 ip.items.appendAssumeCapacity(.{
                     .tag = .only_possible_value,
-                    .data = @enumToInt(aggregate.ty),
+                    .data = @intFromEnum(aggregate.ty),
                 });
-                return @intToEnum(Index, ip.items.len - 1);
+                return @enumFromInt(Index, ip.items.len - 1);
             }
 
             switch (ty_key) {
@@ -3919,9 +3919,9 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                     // in the aggregate fields.
                     ip.items.appendAssumeCapacity(.{
                         .tag = .only_possible_value,
-                        .data = @enumToInt(aggregate.ty),
+                        .data = @intFromEnum(aggregate.ty),
                     });
-                    return @intToEnum(Index, ip.items.len - 1);
+                    return @enumFromInt(Index, ip.items.len - 1);
                 },
                 else => {},
             }
@@ -3960,7 +3960,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                         .elem_val = elem,
                     }),
                 });
-                return @intToEnum(Index, ip.items.len - 1);
+                return @enumFromInt(Index, ip.items.len - 1);
             }
 
             if (child == .u8_type) bytes: {
@@ -3994,7 +3994,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                     @intCast(u8, ip.indexToKey(sentinel).int.storage.u64),
                 );
                 const string = if (has_internal_null)
-                    @intToEnum(String, string_bytes_index)
+                    @enumFromInt(String, string_bytes_index)
                 else
                     (try ip.getOrPutTrailingString(gpa, @intCast(usize, len_including_sentinel))).toString();
                 ip.items.appendAssumeCapacity(.{
@@ -4004,7 +4004,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                         .bytes = string,
                     }),
                 });
-                return @intToEnum(Index, ip.items.len - 1);
+                return @enumFromInt(Index, ip.items.len - 1);
             }
 
             try ip.extra.ensureUnusedCapacity(
@@ -4018,7 +4018,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
                 }),
             });
             ip.extra.appendSliceAssumeCapacity(@ptrCast([]const u32, aggregate.storage.elems));
-            if (sentinel != .none) ip.extra.appendAssumeCapacity(@enumToInt(sentinel));
+            if (sentinel != .none) ip.extra.appendAssumeCapacity(@intFromEnum(sentinel));
         },
 
         .un => |un| {
@@ -4046,7 +4046,7 @@ pub fn get(ip: *InternPool, gpa: Allocator, key: Key) Allocator.Error!Index {
             ip.extra.appendSliceAssumeCapacity(@ptrCast([]const u32, memoized_call.arg_values));
         },
     }
-    return @intToEnum(Index, ip.items.len - 1);
+    return @enumFromInt(Index, ip.items.len - 1);
 }
 
 /// Provides API for completing an enum type after calling `getIncompleteEnum`.
@@ -4060,7 +4060,7 @@ pub const IncompleteEnumType = struct {
 
     pub fn setTagType(self: @This(), ip: *InternPool, tag_ty: Index) void {
         assert(tag_ty == .noreturn_type or ip.isIntegerType(tag_ty));
-        ip.extra.items[self.tag_ty_index] = @enumToInt(tag_ty);
+        ip.extra.items[self.tag_ty_index] = @intFromEnum(tag_ty);
     }
 
     /// Returns the already-existing field with the same name, if any.
@@ -4070,7 +4070,7 @@ pub const IncompleteEnumType = struct {
         gpa: Allocator,
         name: NullTerminatedString,
     ) Allocator.Error!?u32 {
-        const map = &ip.maps.items[@enumToInt(self.names_map)];
+        const map = &ip.maps.items[@intFromEnum(self.names_map)];
         const field_index = map.count();
         const strings = ip.extra.items[self.names_start..][0..field_index];
         const adapter: NullTerminatedString.Adapter = .{
@@ -4078,7 +4078,7 @@ pub const IncompleteEnumType = struct {
         };
         const gop = try map.getOrPutAdapted(gpa, name, adapter);
         if (gop.found_existing) return @intCast(u32, gop.index);
-        ip.extra.items[self.names_start + field_index] = @enumToInt(name);
+        ip.extra.items[self.names_start + field_index] = @intFromEnum(name);
         return null;
     }
 
@@ -4090,8 +4090,8 @@ pub const IncompleteEnumType = struct {
         gpa: Allocator,
         value: Index,
     ) Allocator.Error!?u32 {
-        assert(ip.typeOf(value) == @intToEnum(Index, ip.extra.items[self.tag_ty_index]));
-        const map = &ip.maps.items[@enumToInt(self.values_map.unwrap().?)];
+        assert(ip.typeOf(value) == @enumFromInt(Index, ip.extra.items[self.tag_ty_index]));
+        const map = &ip.maps.items[@intFromEnum(self.values_map.unwrap().?)];
         const field_index = map.count();
         const indexes = ip.extra.items[self.values_start..][0..field_index];
         const adapter: Index.Adapter = .{
@@ -4099,7 +4099,7 @@ pub const IncompleteEnumType = struct {
         };
         const gop = try map.getOrPutAdapted(gpa, value, adapter);
         if (gop.found_existing) return @intCast(u32, gop.index);
-        ip.extra.items[self.values_start + field_index] = @enumToInt(value);
+        ip.extra.items[self.values_start + field_index] = @intFromEnum(value);
         return null;
     }
 };
@@ -4156,9 +4156,9 @@ fn getIncompleteEnumAuto(
         .tag = .type_enum_auto,
         .data = extra_index,
     });
-    ip.extra.appendNTimesAssumeCapacity(@enumToInt(Index.none), enum_type.fields_len);
+    ip.extra.appendNTimesAssumeCapacity(@intFromEnum(Index.none), enum_type.fields_len);
     return .{
-        .index = @intToEnum(Index, ip.items.len - 1),
+        .index = @enumFromInt(Index, ip.items.len - 1),
         .tag_ty_index = extra_index + std.meta.fieldIndex(EnumAuto, "int_tag_type").?,
         .names_map = names_map,
         .names_start = extra_index + extra_fields_len,
@@ -4207,9 +4207,9 @@ fn getIncompleteEnumExplicit(
         .data = extra_index,
     });
     // This is both fields and values (if present).
-    ip.extra.appendNTimesAssumeCapacity(@enumToInt(Index.none), reserved_len);
+    ip.extra.appendNTimesAssumeCapacity(@intFromEnum(Index.none), reserved_len);
     return .{
-        .index = @intToEnum(Index, ip.items.len - 1),
+        .index = @enumFromInt(Index, ip.items.len - 1),
         .tag_ty_index = extra_index + std.meta.fieldIndex(EnumExplicit, "int_tag_type").?,
         .names_map = names_map,
         .names_start = extra_index + extra_fields_len,
@@ -4248,13 +4248,13 @@ pub fn finishGetEnum(
     });
     ip.extra.appendSliceAssumeCapacity(@ptrCast([]const u32, enum_type.names));
     ip.extra.appendSliceAssumeCapacity(@ptrCast([]const u32, enum_type.values));
-    return @intToEnum(Index, ip.items.len - 1);
+    return @enumFromInt(Index, ip.items.len - 1);
 }
 
 pub fn getIfExists(ip: *const InternPool, key: Key) ?Index {
     const adapter: KeyAdapter = .{ .intern_pool = ip };
     const index = ip.map.getIndexAdapted(key, adapter) orelse return null;
-    return @intToEnum(Index, index);
+    return @enumFromInt(Index, index);
 }
 
 pub fn getAssumeExists(ip: *const InternPool, key: Key) Index {
@@ -4267,7 +4267,7 @@ fn addStringsToMap(
     map_index: MapIndex,
     strings: []const NullTerminatedString,
 ) Allocator.Error!void {
-    const map = &ip.maps.items[@enumToInt(map_index)];
+    const map = &ip.maps.items[@intFromEnum(map_index)];
     const adapter: NullTerminatedString.Adapter = .{ .strings = strings };
     for (strings) |string| {
         const gop = try map.getOrPutAdapted(gpa, string, adapter);
@@ -4281,7 +4281,7 @@ fn addIndexesToMap(
     map_index: MapIndex,
     indexes: []const Index,
 ) Allocator.Error!void {
-    const map = &ip.maps.items[@enumToInt(map_index)];
+    const map = &ip.maps.items[@intFromEnum(map_index)];
     const adapter: Index.Adapter = .{ .indexes = indexes };
     for (indexes) |index| {
         const gop = try map.getOrPutAdapted(gpa, index, adapter);
@@ -4292,7 +4292,7 @@ fn addIndexesToMap(
 fn addMap(ip: *InternPool, gpa: Allocator) Allocator.Error!MapIndex {
     const ptr = try ip.maps.addOne(gpa);
     ptr.* = .{};
-    return @intToEnum(MapIndex, ip.maps.items.len - 1);
+    return @enumFromInt(MapIndex, ip.maps.items.len - 1);
 }
 
 /// This operation only happens under compile error conditions.
@@ -4324,22 +4324,22 @@ fn addExtraAssumeCapacity(ip: *InternPool, extra: anytype) u32 {
     inline for (@typeInfo(@TypeOf(extra)).Struct.fields) |field| {
         ip.extra.appendAssumeCapacity(switch (field.type) {
             u32 => @field(extra, field.name),
-            Index => @enumToInt(@field(extra, field.name)),
-            Module.Decl.Index => @enumToInt(@field(extra, field.name)),
-            Module.Namespace.Index => @enumToInt(@field(extra, field.name)),
-            Module.Namespace.OptionalIndex => @enumToInt(@field(extra, field.name)),
-            Module.Fn.Index => @enumToInt(@field(extra, field.name)),
-            MapIndex => @enumToInt(@field(extra, field.name)),
-            OptionalMapIndex => @enumToInt(@field(extra, field.name)),
-            RuntimeIndex => @enumToInt(@field(extra, field.name)),
-            String => @enumToInt(@field(extra, field.name)),
-            NullTerminatedString => @enumToInt(@field(extra, field.name)),
-            OptionalNullTerminatedString => @enumToInt(@field(extra, field.name)),
+            Index => @intFromEnum(@field(extra, field.name)),
+            Module.Decl.Index => @intFromEnum(@field(extra, field.name)),
+            Module.Namespace.Index => @intFromEnum(@field(extra, field.name)),
+            Module.Namespace.OptionalIndex => @intFromEnum(@field(extra, field.name)),
+            Module.Fn.Index => @intFromEnum(@field(extra, field.name)),
+            MapIndex => @intFromEnum(@field(extra, field.name)),
+            OptionalMapIndex => @intFromEnum(@field(extra, field.name)),
+            RuntimeIndex => @intFromEnum(@field(extra, field.name)),
+            String => @intFromEnum(@field(extra, field.name)),
+            NullTerminatedString => @intFromEnum(@field(extra, field.name)),
+            OptionalNullTerminatedString => @intFromEnum(@field(extra, field.name)),
             i32 => @bitCast(u32, @field(extra, field.name)),
             Tag.TypePointer.Flags => @bitCast(u32, @field(extra, field.name)),
             TypeFunction.Flags => @bitCast(u32, @field(extra, field.name)),
             Tag.TypePointer.PackedOffset => @bitCast(u32, @field(extra, field.name)),
-            Tag.TypePointer.VectorIndex => @enumToInt(@field(extra, field.name)),
+            Tag.TypePointer.VectorIndex => @intFromEnum(@field(extra, field.name)),
             Tag.Variable.Flags => @bitCast(u32, @field(extra, field.name)),
             else => @compileError("bad field type: " ++ @typeName(field.type)),
         });
@@ -4365,7 +4365,7 @@ fn addLimbsExtraAssumeCapacity(ip: *InternPool, extra: anytype) u32 {
     inline for (@typeInfo(@TypeOf(extra)).Struct.fields, 0..) |field, i| {
         const new: u32 = switch (field.type) {
             u32 => @field(extra, field.name),
-            Index => @enumToInt(@field(extra, field.name)),
+            Index => @intFromEnum(@field(extra, field.name)),
             else => @compileError("bad field type: " ++ @typeName(field.type)),
         };
         if (i % 2 == 0) {
@@ -4392,22 +4392,22 @@ fn extraDataTrail(ip: *const InternPool, comptime T: type, index: usize) struct
         const int32 = ip.extra.items[i + index];
         @field(result, field.name) = switch (field.type) {
             u32 => int32,
-            Index => @intToEnum(Index, int32),
-            Module.Decl.Index => @intToEnum(Module.Decl.Index, int32),
-            Module.Namespace.Index => @intToEnum(Module.Namespace.Index, int32),
-            Module.Namespace.OptionalIndex => @intToEnum(Module.Namespace.OptionalIndex, int32),
-            Module.Fn.Index => @intToEnum(Module.Fn.Index, int32),
-            MapIndex => @intToEnum(MapIndex, int32),
-            OptionalMapIndex => @intToEnum(OptionalMapIndex, int32),
-            RuntimeIndex => @intToEnum(RuntimeIndex, int32),
-            String => @intToEnum(String, int32),
-            NullTerminatedString => @intToEnum(NullTerminatedString, int32),
-            OptionalNullTerminatedString => @intToEnum(OptionalNullTerminatedString, int32),
+            Index => @enumFromInt(Index, int32),
+            Module.Decl.Index => @enumFromInt(Module.Decl.Index, int32),
+            Module.Namespace.Index => @enumFromInt(Module.Namespace.Index, int32),
+            Module.Namespace.OptionalIndex => @enumFromInt(Module.Namespace.OptionalIndex, int32),
+            Module.Fn.Index => @enumFromInt(Module.Fn.Index, int32),
+            MapIndex => @enumFromInt(MapIndex, int32),
+            OptionalMapIndex => @enumFromInt(OptionalMapIndex, int32),
+            RuntimeIndex => @enumFromInt(RuntimeIndex, int32),
+            String => @enumFromInt(String, int32),
+            NullTerminatedString => @enumFromInt(NullTerminatedString, int32),
+            OptionalNullTerminatedString => @enumFromInt(OptionalNullTerminatedString, int32),
             i32 => @bitCast(i32, int32),
             Tag.TypePointer.Flags => @bitCast(Tag.TypePointer.Flags, int32),
             TypeFunction.Flags => @bitCast(TypeFunction.Flags, int32),
             Tag.TypePointer.PackedOffset => @bitCast(Tag.TypePointer.PackedOffset, int32),
-            Tag.TypePointer.VectorIndex => @intToEnum(Tag.TypePointer.VectorIndex, int32),
+            Tag.TypePointer.VectorIndex => @enumFromInt(Tag.TypePointer.VectorIndex, int32),
             Tag.Variable.Flags => @bitCast(Tag.Variable.Flags, int32),
             else => @compileError("bad field type: " ++ @typeName(field.type)),
         };
@@ -4439,7 +4439,7 @@ fn limbData(ip: *const InternPool, comptime T: type, index: usize) T {
 
         @field(result, field.name) = switch (field.type) {
             u32 => int32,
-            Index => @intToEnum(Index, int32),
+            Index => @enumFromInt(Index, int32),
             else => @compileError("bad field type: " ++ @typeName(field.type)),
         };
     }
@@ -4475,7 +4475,7 @@ fn limbsSliceToIndex(ip: *const InternPool, limbs: []const Limb) LimbsAsIndexes
     };
     // TODO: https://github.com/ziglang/zig/issues/1738
     return .{
-        .start = @intCast(u32, @divExact(@ptrToInt(limbs.ptr) - @ptrToInt(host_slice.ptr), @sizeOf(Limb))),
+        .start = @intCast(u32, @divExact(@intFromPtr(limbs.ptr) - @intFromPtr(host_slice.ptr), @sizeOf(Limb))),
         .len = @intCast(u32, limbs.len),
     };
 }
@@ -4536,16 +4536,16 @@ pub fn slicePtrType(ip: *const InternPool, i: Index) Index {
         .slice_const_u8_sentinel_0_type => return .manyptr_const_u8_sentinel_0_type,
         else => {},
     }
-    const item = ip.items.get(@enumToInt(i));
+    const item = ip.items.get(@intFromEnum(i));
     switch (item.tag) {
-        .type_slice => return @intToEnum(Index, item.data),
+        .type_slice => return @enumFromInt(Index, item.data),
         else => unreachable, // not a slice type
     }
 }
 
 /// Given a slice value, returns the value of the ptr field.
 pub fn slicePtr(ip: *const InternPool, i: Index) Index {
-    const item = ip.items.get(@enumToInt(i));
+    const item = ip.items.get(@intFromEnum(i));
     switch (item.tag) {
         .ptr_slice => return ip.extraData(PtrSlice, item.data).ptr,
         else => unreachable, // not a slice value
@@ -4554,7 +4554,7 @@ pub fn slicePtr(ip: *const InternPool, i: Index) Index {
 
 /// Given a slice value, returns the value of the len field.
 pub fn sliceLen(ip: *const InternPool, i: Index) Index {
-    const item = ip.items.get(@enumToInt(i));
+    const item = ip.items.get(@intFromEnum(i));
     switch (item.tag) {
         .ptr_slice => return ip.extraData(PtrSlice, item.data).len,
         else => unreachable, // not a slice value
@@ -4841,28 +4841,28 @@ pub fn getCoercedInts(ip: *InternPool, gpa: Allocator, int: Key.Int, new_ty: Ind
 pub fn indexToStructType(ip: *const InternPool, val: Index) Module.Struct.OptionalIndex {
     assert(val != .none);
     const tags = ip.items.items(.tag);
-    if (tags[@enumToInt(val)] != .type_struct) return .none;
+    if (tags[@intFromEnum(val)] != .type_struct) return .none;
     const datas = ip.items.items(.data);
-    return @intToEnum(Module.Struct.Index, datas[@enumToInt(val)]).toOptional();
+    return @enumFromInt(Module.Struct.Index, datas[@intFromEnum(val)]).toOptional();
 }
 
 pub fn indexToUnionType(ip: *const InternPool, val: Index) Module.Union.OptionalIndex {
     assert(val != .none);
     const tags = ip.items.items(.tag);
-    switch (tags[@enumToInt(val)]) {
+    switch (tags[@intFromEnum(val)]) {
         .type_union_tagged, .type_union_untagged, .type_union_safety => {},
         else => return .none,
     }
     const datas = ip.items.items(.data);
-    return @intToEnum(Module.Union.Index, datas[@enumToInt(val)]).toOptional();
+    return @enumFromInt(Module.Union.Index, datas[@intFromEnum(val)]).toOptional();
 }
 
 pub fn indexToFuncType(ip: *const InternPool, val: Index) ?Key.FuncType {
     assert(val != .none);
     const tags = ip.items.items(.tag);
     const datas = ip.items.items(.data);
-    switch (tags[@enumToInt(val)]) {
-        .type_function => return indexToKeyFuncType(ip, datas[@enumToInt(val)]),
+    switch (tags[@intFromEnum(val)]) {
+        .type_function => return indexToKeyFuncType(ip, datas[@intFromEnum(val)]),
         else => return null,
     }
 }
@@ -4870,17 +4870,17 @@ pub fn indexToFuncType(ip: *const InternPool, val: Index) ?Key.FuncType {
 pub fn indexToFunc(ip: *const InternPool, val: Index) Module.Fn.OptionalIndex {
     assert(val != .none);
     const tags = ip.items.items(.tag);
-    if (tags[@enumToInt(val)] != .func) return .none;
+    if (tags[@intFromEnum(val)] != .func) return .none;
     const datas = ip.items.items(.data);
-    return ip.extraData(Tag.Func, datas[@enumToInt(val)]).index.toOptional();
+    return ip.extraData(Tag.Func, datas[@intFromEnum(val)]).index.toOptional();
 }
 
 pub fn indexToInferredErrorSetType(ip: *const InternPool, val: Index) Module.Fn.InferredErrorSet.OptionalIndex {
     assert(val != .none);
     const tags = ip.items.items(.tag);
-    if (tags[@enumToInt(val)] != .type_inferred_error_set) return .none;
+    if (tags[@intFromEnum(val)] != .type_inferred_error_set) return .none;
     const datas = ip.items.items(.data);
-    return @intToEnum(Module.Fn.InferredErrorSet.Index, datas[@enumToInt(val)]).toOptional();
+    return @enumFromInt(Module.Fn.InferredErrorSet.Index, datas[@intFromEnum(val)]).toOptional();
 }
 
 /// includes .comptime_int_type
@@ -4956,9 +4956,9 @@ pub fn isAggregateType(ip: *const InternPool, ty: Index) bool {
 
 /// The is only legal because the initializer is not part of the hash.
 pub fn mutateVarInit(ip: *InternPool, index: Index, init_index: Index) void {
-    const item = ip.items.get(@enumToInt(index));
+    const item = ip.items.get(@intFromEnum(index));
     assert(item.tag == .variable);
-    ip.extra.items[item.data + std.meta.fieldIndex(Tag.Variable, "init").?] = @enumToInt(init_index);
+    ip.extra.items[item.data + std.meta.fieldIndex(Tag.Variable, "init").?] = @intFromEnum(init_index);
 }
 
 pub fn dump(ip: *const InternPool) void {
@@ -5038,7 +5038,7 @@ fn dumpStatsFallible(ip: *const InternPool, arena: Allocator) anyerror!void {
             .type_enum_auto => @sizeOf(EnumAuto),
             .type_opaque => @sizeOf(Key.OpaqueType),
             .type_struct => b: {
-                const struct_index = @intToEnum(Module.Struct.Index, data);
+                const struct_index = @enumFromInt(Module.Struct.Index, data);
                 const struct_obj = ip.structPtrConst(struct_index);
                 break :b @sizeOf(Module.Struct) +
                     @sizeOf(Module.Namespace) +
@@ -5107,7 +5107,7 @@ fn dumpStatsFallible(ip: *const InternPool, arena: Allocator) anyerror!void {
                 const info = ip.extraData(Bytes, data);
                 const len = @intCast(u32, ip.aggregateTypeLenIncludingSentinel(info.ty));
                 break :b @sizeOf(Bytes) + len +
-                    @boolToInt(ip.string_bytes.items[@enumToInt(info.bytes) + len - 1] != 0);
+                    @intFromBool(ip.string_bytes.items[@intFromEnum(info.bytes) + len - 1] != 0);
             },
             .aggregate => b: {
                 const info = ip.extraData(Tag.Aggregate, data);
@@ -5162,8 +5162,8 @@ fn dumpAllFallible(ip: *const InternPool) anyerror!void {
     for (tags, datas, 0..) |tag, data, i| {
         try w.print("${d} = {s}(", .{ i, @tagName(tag) });
         switch (tag) {
-            .simple_type => try w.print("{s}", .{@tagName(@intToEnum(SimpleType, data))}),
-            .simple_value => try w.print("{s}", .{@tagName(@intToEnum(SimpleValue, data))}),
+            .simple_type => try w.print("{s}", .{@tagName(@enumFromInt(SimpleType, data))}),
+            .simple_value => try w.print("{s}", .{@tagName(@enumFromInt(SimpleValue, data))}),
 
             .type_int_signed,
             .type_int_unsigned,
@@ -5246,11 +5246,11 @@ fn dumpAllFallible(ip: *const InternPool) anyerror!void {
 }
 
 pub fn structPtr(ip: *InternPool, index: Module.Struct.Index) *Module.Struct {
-    return ip.allocated_structs.at(@enumToInt(index));
+    return ip.allocated_structs.at(@intFromEnum(index));
 }
 
 pub fn structPtrConst(ip: *const InternPool, index: Module.Struct.Index) *const Module.Struct {
-    return ip.allocated_structs.at(@enumToInt(index));
+    return ip.allocated_structs.at(@intFromEnum(index));
 }
 
 pub fn structPtrUnwrapConst(ip: *const InternPool, index: Module.Struct.OptionalIndex) ?*const Module.Struct {
@@ -5258,27 +5258,27 @@ pub fn structPtrUnwrapConst(ip: *const InternPool, index: Module.Struct.Optional
 }
 
 pub fn unionPtr(ip: *InternPool, index: Module.Union.Index) *Module.Union {
-    return ip.allocated_unions.at(@enumToInt(index));
+    return ip.allocated_unions.at(@intFromEnum(index));
 }
 
 pub fn unionPtrConst(ip: *const InternPool, index: Module.Union.Index) *const Module.Union {
-    return ip.allocated_unions.at(@enumToInt(index));
+    return ip.allocated_unions.at(@intFromEnum(index));
 }
 
 pub fn funcPtr(ip: *InternPool, index: Module.Fn.Index) *Module.Fn {
-    return ip.allocated_funcs.at(@enumToInt(index));
+    return ip.allocated_funcs.at(@intFromEnum(index));
 }
 
 pub fn funcPtrConst(ip: *const InternPool, index: Module.Fn.Index) *const Module.Fn {
-    return ip.allocated_funcs.at(@enumToInt(index));
+    return ip.allocated_funcs.at(@intFromEnum(index));
 }
 
 pub fn inferredErrorSetPtr(ip: *InternPool, index: Module.Fn.InferredErrorSet.Index) *Module.Fn.InferredErrorSet {
-    return ip.allocated_inferred_error_sets.at(@enumToInt(index));
+    return ip.allocated_inferred_error_sets.at(@intFromEnum(index));
 }
 
 pub fn inferredErrorSetPtrConst(ip: *const InternPool, index: Module.Fn.InferredErrorSet.Index) *const Module.Fn.InferredErrorSet {
-    return ip.allocated_inferred_error_sets.at(@enumToInt(index));
+    return ip.allocated_inferred_error_sets.at(@intFromEnum(index));
 }
 
 pub fn createStruct(
@@ -5287,12 +5287,12 @@ pub fn createStruct(
     initialization: Module.Struct,
 ) Allocator.Error!Module.Struct.Index {
     if (ip.structs_free_list.popOrNull()) |index| {
-        ip.allocated_structs.at(@enumToInt(index)).* = initialization;
+        ip.allocated_structs.at(@intFromEnum(index)).* = initialization;
         return index;
     }
     const ptr = try ip.allocated_structs.addOne(gpa);
     ptr.* = initialization;
-    return @intToEnum(Module.Struct.Index, ip.allocated_structs.len - 1);
+    return @enumFromInt(Module.Struct.Index, ip.allocated_structs.len - 1);
 }
 
 pub fn destroyStruct(ip: *InternPool, gpa: Allocator, index: Module.Struct.Index) void {
@@ -5309,12 +5309,12 @@ pub fn createUnion(
     initialization: Module.Union,
 ) Allocator.Error!Module.Union.Index {
     if (ip.unions_free_list.popOrNull()) |index| {
-        ip.allocated_unions.at(@enumToInt(index)).* = initialization;
+        ip.allocated_unions.at(@intFromEnum(index)).* = initialization;
         return index;
     }
     const ptr = try ip.allocated_unions.addOne(gpa);
     ptr.* = initialization;
-    return @intToEnum(Module.Union.Index, ip.allocated_unions.len - 1);
+    return @enumFromInt(Module.Union.Index, ip.allocated_unions.len - 1);
 }
 
 pub fn destroyUnion(ip: *InternPool, gpa: Allocator, index: Module.Union.Index) void {
@@ -5331,12 +5331,12 @@ pub fn createFunc(
     initialization: Module.Fn,
 ) Allocator.Error!Module.Fn.Index {
     if (ip.funcs_free_list.popOrNull()) |index| {
-        ip.allocated_funcs.at(@enumToInt(index)).* = initialization;
+        ip.allocated_funcs.at(@intFromEnum(index)).* = initialization;
         return index;
     }
     const ptr = try ip.allocated_funcs.addOne(gpa);
     ptr.* = initialization;
-    return @intToEnum(Module.Fn.Index, ip.allocated_funcs.len - 1);
+    return @enumFromInt(Module.Fn.Index, ip.allocated_funcs.len - 1);
 }
 
 pub fn destroyFunc(ip: *InternPool, gpa: Allocator, index: Module.Fn.Index) void {
@@ -5353,12 +5353,12 @@ pub fn createInferredErrorSet(
     initialization: Module.Fn.InferredErrorSet,
 ) Allocator.Error!Module.Fn.InferredErrorSet.Index {
     if (ip.inferred_error_sets_free_list.popOrNull()) |index| {
-        ip.allocated_inferred_error_sets.at(@enumToInt(index)).* = initialization;
+        ip.allocated_inferred_error_sets.at(@intFromEnum(index)).* = initialization;
         return index;
     }
     const ptr = try ip.allocated_inferred_error_sets.addOne(gpa);
     ptr.* = initialization;
-    return @intToEnum(Module.Fn.InferredErrorSet.Index, ip.allocated_inferred_error_sets.len - 1);
+    return @enumFromInt(Module.Fn.InferredErrorSet.Index, ip.allocated_inferred_error_sets.len - 1);
 }
 
 pub fn destroyInferredErrorSet(ip: *InternPool, gpa: Allocator, index: Module.Fn.InferredErrorSet.Index) void {
@@ -5425,11 +5425,11 @@ pub fn getOrPutTrailingString(
     });
     if (gop.found_existing) {
         string_bytes.shrinkRetainingCapacity(str_index);
-        return @intToEnum(NullTerminatedString, gop.key_ptr.*);
+        return @enumFromInt(NullTerminatedString, gop.key_ptr.*);
     } else {
         gop.key_ptr.* = str_index;
         string_bytes.appendAssumeCapacity(0);
-        return @intToEnum(NullTerminatedString, str_index);
+        return @enumFromInt(NullTerminatedString, str_index);
     }
 }
 
@@ -5437,7 +5437,7 @@ pub fn getString(ip: *InternPool, s: []const u8) OptionalNullTerminatedString {
     if (ip.string_table.getKeyAdapted(s, std.hash_map.StringIndexAdapter{
         .bytes = &ip.string_bytes,
     })) |index| {
-        return @intToEnum(NullTerminatedString, index).toOptional();
+        return @enumFromInt(NullTerminatedString, index).toOptional();
     } else {
         return .none;
     }
@@ -5445,7 +5445,7 @@ pub fn getString(ip: *InternPool, s: []const u8) OptionalNullTerminatedString {
 
 pub fn stringToSlice(ip: *const InternPool, s: NullTerminatedString) [:0]const u8 {
     const string_bytes = ip.string_bytes.items;
-    const start = @enumToInt(s);
+    const start = @intFromEnum(s);
     var end: usize = start;
     while (string_bytes[end] != 0) end += 1;
     return string_bytes[start..end :0];
@@ -5543,7 +5543,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {
 
         // This optimization on tags is needed so that indexToKey can call
         // typeOf without being recursive.
-        _ => switch (ip.items.items(.tag)[@enumToInt(index)]) {
+        _ => switch (ip.items.items(.tag)[@intFromEnum(index)]) {
             .type_int_signed,
             .type_int_unsigned,
             .type_array_big,
@@ -5574,7 +5574,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {
             .undef,
             .opt_null,
             .only_possible_value,
-            => @intToEnum(Index, ip.items.items(.data)[@enumToInt(index)]),
+            => @enumFromInt(Index, ip.items.items(.data)[@intFromEnum(index)]),
 
             .simple_value => unreachable, // handled via Index above
 
@@ -5604,9 +5604,9 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {
             .aggregate,
             .repeated,
             => |t| {
-                const extra_index = ip.items.items(.data)[@enumToInt(index)];
+                const extra_index = ip.items.items(.data)[@intFromEnum(index)];
                 const field_index = std.meta.fieldIndex(t.Payload(), "ty").?;
-                return @intToEnum(Index, ip.extra.items[extra_index + field_index]);
+                return @enumFromInt(Index, ip.extra.items[extra_index + field_index]);
             },
 
             .int_u8 => .u8_type,
@@ -5622,7 +5622,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {
             // Note these are stored in limbs data, not extra data.
             .int_positive,
             .int_negative,
-            => ip.limbData(Int, ip.items.items(.data)[@enumToInt(index)]).ty,
+            => ip.limbData(Int, ip.items.items(.data)[@intFromEnum(index)]).ty,
 
             .enum_literal => .enum_literal_type,
             .float_f16 => .f16_type,
@@ -5648,7 +5648,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {
 /// Assumes that the enum's field indexes equal its value tags.
 pub fn toEnum(ip: *const InternPool, comptime E: type, i: Index) E {
     const int = ip.indexToKey(i).enum_tag.int;
-    return @intToEnum(E, ip.indexToKey(int).int.storage.u64);
+    return @enumFromInt(E, ip.indexToKey(int).int.storage.u64);
 }
 
 pub fn aggregateTypeLen(ip: *const InternPool, ty: Index) u64 {
@@ -5665,7 +5665,7 @@ pub fn aggregateTypeLenIncludingSentinel(ip: *const InternPool, ty: Index) u64 {
     return switch (ip.indexToKey(ty)) {
         .struct_type => |struct_type| ip.structPtrConst(struct_type.index.unwrap() orelse return 0).fields.count(),
         .anon_struct_type => |anon_struct_type| anon_struct_type.types.len,
-        .array_type => |array_type| array_type.len + @boolToInt(array_type.sentinel != .none),
+        .array_type => |array_type| array_type.len + @intFromBool(array_type.sentinel != .none),
         .vector_type => |vector_type| vector_type.len,
         else => unreachable,
     };
@@ -5783,7 +5783,7 @@ pub fn zigTypeTagOrPoison(ip: *const InternPool, index: Index) error{GenericPois
 
         .var_args_param_type => unreachable, // special tag
 
-        _ => switch (ip.items.items(.tag)[@enumToInt(index)]) {
+        _ => switch (ip.items.items(.tag)[@intFromEnum(index)]) {
             .type_int_signed,
             .type_int_unsigned,
             => .Int,
src/libcxx.zig
@@ -128,10 +128,10 @@ pub fn buildLibCXX(comp: *Compilation, prog_node: *std.Progress.Node) !void {
     const cxx_include_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libcxx", "include" });
     const cxx_src_include_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libcxx", "src" });
     const abi_version_arg = try std.fmt.allocPrint(arena, "-D_LIBCPP_ABI_VERSION={d}", .{
-        @enumToInt(comp.libcxx_abi_version),
+        @intFromEnum(comp.libcxx_abi_version),
     });
     const abi_namespace_arg = try std.fmt.allocPrint(arena, "-D_LIBCPP_ABI_NAMESPACE=__{d}", .{
-        @enumToInt(comp.libcxx_abi_version),
+        @intFromEnum(comp.libcxx_abi_version),
     });
     var c_source_files = try std.ArrayList(Compilation.CSourceFile).initCapacity(arena, libcxx_files.len);
 
@@ -302,10 +302,10 @@ pub fn buildLibCXXABI(comp: *Compilation, prog_node: *std.Progress.Node) !void {
     const cxx_include_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libcxx", "include" });
     const cxx_src_include_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libcxx", "src" });
     const abi_version_arg = try std.fmt.allocPrint(arena, "-D_LIBCPP_ABI_VERSION={d}", .{
-        @enumToInt(comp.libcxx_abi_version),
+        @intFromEnum(comp.libcxx_abi_version),
     });
     const abi_namespace_arg = try std.fmt.allocPrint(arena, "-D_LIBCPP_ABI_NAMESPACE=__{d}", .{
-        @enumToInt(comp.libcxx_abi_version),
+        @intFromEnum(comp.libcxx_abi_version),
     });
     var c_source_files = try std.ArrayList(Compilation.CSourceFile).initCapacity(arena, libcxxabi_files.len);
 
src/Liveness.zig
@@ -1286,7 +1286,7 @@ fn analyzeOperands(
                 break :blk true;
             };
 
-            var tomb_bits: Bpi = @as(Bpi, @boolToInt(immediate_death)) << (bpi - 1);
+            var tomb_bits: Bpi = @as(Bpi, @intFromBool(immediate_death)) << (bpi - 1);
 
             // If our result is unused and the instruction doesn't need to be lowered, backends will
             // skip the lowering of this instruction, so we don't want to record uses of operands.
src/main.zig
@@ -140,8 +140,8 @@ pub fn log(
     // Hide debug messages unless:
     // * logging enabled with `-Dlog`.
     // * the --debug-log arg for the scope has been provided
-    if (@enumToInt(level) > @enumToInt(std.options.log_level) or
-        @enumToInt(level) > @enumToInt(std.log.Level.info))
+    if (@intFromEnum(level) > @intFromEnum(std.options.log_level) or
+        @intFromEnum(level) > @intFromEnum(std.log.Level.info))
     {
         if (!build_options.enable_logging) return;
 
@@ -2424,8 +2424,8 @@ fn buildOutputType(
             fatal("shared memory is not allowed in object files", .{});
         }
 
-        if (!target_info.target.cpu.features.isEnabled(@enumToInt(std.Target.wasm.Feature.atomics)) or
-            !target_info.target.cpu.features.isEnabled(@enumToInt(std.Target.wasm.Feature.bulk_memory)))
+        if (!target_info.target.cpu.features.isEnabled(@intFromEnum(std.Target.wasm.Feature.atomics)) or
+            !target_info.target.cpu.features.isEnabled(@intFromEnum(std.Target.wasm.Feature.bulk_memory)))
         {
             fatal("'atomics' and 'bulk-memory' features must be enabled to use shared memory", .{});
         }
@@ -2640,7 +2640,7 @@ fn buildOutputType(
 
     if (output_mode == .Obj and (object_format == .coff or object_format == .macho)) {
         const total_obj_count = c_source_files.items.len +
-            @boolToInt(root_src_file != null) +
+            @intFromBool(root_src_file != null) +
             link_objects.items.len;
         if (total_obj_count > 1) {
             fatal("{s} does not support linking multiple objects into one", .{@tagName(object_format)});
@@ -3466,7 +3466,7 @@ fn serve(
                 }
             },
             else => {
-                fatal("unrecognized message from client: 0x{x}", .{@enumToInt(hdr.tag)});
+                fatal("unrecognized message from client: 0x{x}", .{@intFromEnum(hdr.tag)});
             },
         }
     }
@@ -4706,7 +4706,7 @@ pub fn cmdFmt(gpa: Allocator, arena: Allocator, args: []const []const u8) !void
         defer gpa.free(formatted);
 
         if (check_flag) {
-            const code: u8 = @boolToInt(mem.eql(u8, formatted, source_code));
+            const code: u8 = @intFromBool(mem.eql(u8, formatted, source_code));
             process.exit(code);
         }
 
@@ -5080,7 +5080,7 @@ pub fn lldMain(
             unreachable;
         }
     };
-    return @boolToInt(!ok);
+    return @intFromBool(!ok);
 }
 
 const ArgIteratorResponseFile = process.ArgIteratorGeneral(.{ .comments = true, .single_quotes = true });
src/Manifest.zig
@@ -39,7 +39,7 @@ pub const multihash_function: MultihashFunction = switch (Hash) {
 comptime {
     // We avoid unnecessary uleb128 code in hexDigest by asserting here the
     // values are small enough to be contained in the one-byte encoding.
-    assert(@enumToInt(multihash_function) < 127);
+    assert(@intFromEnum(multihash_function) < 127);
     assert(Hash.digest_length < 127);
 }
 pub const multihash_len = 1 + 1 + Hash.digest_length;
@@ -117,8 +117,8 @@ test hex64 {
 pub fn hexDigest(digest: [Hash.digest_length]u8) [multihash_len * 2]u8 {
     var result: [multihash_len * 2]u8 = undefined;
 
-    result[0] = hex_charset[@enumToInt(multihash_function) >> 4];
-    result[1] = hex_charset[@enumToInt(multihash_function) & 15];
+    result[0] = hex_charset[@intFromEnum(multihash_function) >> 4];
+    result[1] = hex_charset[@intFromEnum(multihash_function) & 15];
 
     result[2] = hex_charset[Hash.digest_length >> 4];
     result[3] = hex_charset[Hash.digest_length & 15];
@@ -284,7 +284,7 @@ const Parse = struct {
                     @errorName(err),
                 });
             };
-            if (@intToEnum(MultihashFunction, their_multihash_func) != multihash_function) {
+            if (@enumFromInt(MultihashFunction, their_multihash_func) != multihash_function) {
                 return fail(p, tok, "unsupported hash function: only sha2-256 is supported", .{});
             }
         }
src/Module.zig
@@ -223,7 +223,7 @@ pub const MonomorphedFuncsContext = struct {
 
     pub fn hash(ctx: @This(), key: MonomorphedFuncKey) u64 {
         const key_args = ctx.mod.monomorphed_func_keys.items[key.args_index..][0..key.args_len];
-        return std.hash.Wyhash.hash(@enumToInt(key.func), std.mem.sliceAsBytes(key_args));
+        return std.hash.Wyhash.hash(@intFromEnum(key.func), std.mem.sliceAsBytes(key_args));
     }
 };
 
@@ -236,7 +236,7 @@ pub const MonomorphedFuncsAdaptedContext = struct {
     }
 
     pub fn hash(_: @This(), adapted_key: MonomorphedFuncAdaptedKey) u64 {
-        return std.hash.Wyhash.hash(@enumToInt(adapted_key.func), std.mem.sliceAsBytes(adapted_key.args));
+        return std.hash.Wyhash.hash(@intFromEnum(adapted_key.func), std.mem.sliceAsBytes(adapted_key.args));
     }
 };
 
@@ -263,7 +263,7 @@ pub const GlobalEmitH = struct {
     allocated_emit_h: std.SegmentedList(EmitH, 0) = .{},
 
     pub fn declPtr(global_emit_h: *GlobalEmitH, decl_index: Decl.Index) *EmitH {
-        return global_emit_h.allocated_emit_h.at(@enumToInt(decl_index));
+        return global_emit_h.allocated_emit_h.at(@intFromEnum(decl_index));
     }
 };
 
@@ -553,7 +553,7 @@ pub const Decl = struct {
         _,
 
         pub fn toOptional(i: Index) OptionalIndex {
-            return @intToEnum(OptionalIndex, @enumToInt(i));
+            return @enumFromInt(OptionalIndex, @intFromEnum(i));
         }
     };
 
@@ -562,12 +562,12 @@ pub const Decl = struct {
         _,
 
         pub fn init(oi: ?Index) OptionalIndex {
-            return @intToEnum(OptionalIndex, @enumToInt(oi orelse return .none));
+            return @enumFromInt(OptionalIndex, @intFromEnum(oi orelse return .none));
         }
 
         pub fn unwrap(oi: OptionalIndex) ?Index {
             if (oi == .none) return null;
-            return @intToEnum(Index, @enumToInt(oi));
+            return @enumFromInt(Index, @intFromEnum(oi));
         }
     };
 
@@ -632,23 +632,23 @@ pub const Decl = struct {
         if (!decl.has_align) return .none;
         assert(decl.zir_decl_index != 0);
         const zir = decl.getFileScope(mod).zir;
-        return @intToEnum(Zir.Inst.Ref, zir.extra[decl.zir_decl_index + 8]);
+        return @enumFromInt(Zir.Inst.Ref, zir.extra[decl.zir_decl_index + 8]);
     }
 
     pub fn zirLinksectionRef(decl: Decl, mod: *Module) Zir.Inst.Ref {
         if (!decl.has_linksection_or_addrspace) return .none;
         assert(decl.zir_decl_index != 0);
         const zir = decl.getFileScope(mod).zir;
-        const extra_index = decl.zir_decl_index + 8 + @boolToInt(decl.has_align);
-        return @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
+        const extra_index = decl.zir_decl_index + 8 + @intFromBool(decl.has_align);
+        return @enumFromInt(Zir.Inst.Ref, zir.extra[extra_index]);
     }
 
     pub fn zirAddrspaceRef(decl: Decl, mod: *Module) Zir.Inst.Ref {
         if (!decl.has_linksection_or_addrspace) return .none;
         assert(decl.zir_decl_index != 0);
         const zir = decl.getFileScope(mod).zir;
-        const extra_index = decl.zir_decl_index + 8 + @boolToInt(decl.has_align) + 1;
-        return @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
+        const extra_index = decl.zir_decl_index + 8 + @intFromBool(decl.has_align) + 1;
+        return @enumFromInt(Zir.Inst.Ref, zir.extra[extra_index]);
     }
 
     pub fn relativeToLine(decl: Decl, offset: u32) u32 {
@@ -831,7 +831,7 @@ pub const Decl = struct {
             decl.scope.sub_file_path,
             loc.line + 1,
             loc.column + 1,
-            @enumToInt(decl.name),
+            @intFromEnum(decl.name),
             @tagName(decl.analysis),
         });
         if (decl.has_tv) {
@@ -927,7 +927,7 @@ pub const Struct = struct {
         _,
 
         pub fn toOptional(i: Index) OptionalIndex {
-            return @intToEnum(OptionalIndex, @enumToInt(i));
+            return @enumFromInt(OptionalIndex, @intFromEnum(i));
         }
     };
 
@@ -936,12 +936,12 @@ pub const Struct = struct {
         _,
 
         pub fn init(oi: ?Index) OptionalIndex {
-            return @intToEnum(OptionalIndex, @enumToInt(oi orelse return .none));
+            return @enumFromInt(OptionalIndex, @intFromEnum(oi orelse return .none));
         }
 
         pub fn unwrap(oi: OptionalIndex) ?Index {
             if (oi == .none) return null;
-            return @intToEnum(Index, @enumToInt(oi));
+            return @enumFromInt(Index, @intFromEnum(oi));
         }
     };
 
@@ -1128,7 +1128,7 @@ pub const Union = struct {
         _,
 
         pub fn toOptional(i: Index) OptionalIndex {
-            return @intToEnum(OptionalIndex, @enumToInt(i));
+            return @enumFromInt(OptionalIndex, @intFromEnum(i));
         }
     };
 
@@ -1137,12 +1137,12 @@ pub const Union = struct {
         _,
 
         pub fn init(oi: ?Index) OptionalIndex {
-            return @intToEnum(OptionalIndex, @enumToInt(oi orelse return .none));
+            return @enumFromInt(OptionalIndex, @intFromEnum(oi orelse return .none));
         }
 
         pub fn unwrap(oi: OptionalIndex) ?Index {
             if (oi == .none) return null;
-            return @intToEnum(Index, @enumToInt(oi));
+            return @enumFromInt(Index, @intFromEnum(oi));
         }
     };
 
@@ -1424,7 +1424,7 @@ pub const Fn = struct {
         _,
 
         pub fn toOptional(i: Index) OptionalIndex {
-            return @intToEnum(OptionalIndex, @enumToInt(i));
+            return @enumFromInt(OptionalIndex, @intFromEnum(i));
         }
     };
 
@@ -1433,12 +1433,12 @@ pub const Fn = struct {
         _,
 
         pub fn init(oi: ?Index) OptionalIndex {
-            return @intToEnum(OptionalIndex, @enumToInt(oi orelse return .none));
+            return @enumFromInt(OptionalIndex, @intFromEnum(oi orelse return .none));
         }
 
         pub fn unwrap(oi: OptionalIndex) ?Index {
             if (oi == .none) return null;
-            return @intToEnum(Index, @enumToInt(oi));
+            return @enumFromInt(Index, @intFromEnum(oi));
         }
     };
 
@@ -1492,7 +1492,7 @@ pub const Fn = struct {
             _,
 
             pub fn toOptional(i: InferredErrorSet.Index) InferredErrorSet.OptionalIndex {
-                return @intToEnum(InferredErrorSet.OptionalIndex, @enumToInt(i));
+                return @enumFromInt(InferredErrorSet.OptionalIndex, @intFromEnum(i));
             }
         };
 
@@ -1501,12 +1501,12 @@ pub const Fn = struct {
             _,
 
             pub fn init(oi: ?InferredErrorSet.Index) InferredErrorSet.OptionalIndex {
-                return @intToEnum(InferredErrorSet.OptionalIndex, @enumToInt(oi orelse return .none));
+                return @enumFromInt(InferredErrorSet.OptionalIndex, @intFromEnum(oi orelse return .none));
             }
 
             pub fn unwrap(oi: InferredErrorSet.OptionalIndex) ?InferredErrorSet.Index {
                 if (oi == .none) return null;
-                return @intToEnum(InferredErrorSet.Index, @enumToInt(oi));
+                return @enumFromInt(InferredErrorSet.Index, @intFromEnum(oi));
             }
         };
 
@@ -1594,7 +1594,7 @@ pub const DeclAdapter = struct {
 
     pub fn hash(self: @This(), s: InternPool.NullTerminatedString) u32 {
         _ = self;
-        return std.hash.uint32(@enumToInt(s));
+        return std.hash.uint32(@intFromEnum(s));
     }
 
     pub fn eql(self: @This(), a: InternPool.NullTerminatedString, b_decl_index: Decl.Index, b_index: usize) bool {
@@ -1628,7 +1628,7 @@ pub const Namespace = struct {
         _,
 
         pub fn toOptional(i: Index) OptionalIndex {
-            return @intToEnum(OptionalIndex, @enumToInt(i));
+            return @enumFromInt(OptionalIndex, @intFromEnum(i));
         }
     };
 
@@ -1637,12 +1637,12 @@ pub const Namespace = struct {
         _,
 
         pub fn init(oi: ?Index) OptionalIndex {
-            return @intToEnum(OptionalIndex, @enumToInt(oi orelse return .none));
+            return @enumFromInt(OptionalIndex, @intFromEnum(oi orelse return .none));
         }
 
         pub fn unwrap(oi: OptionalIndex) ?Index {
             if (oi == .none) return null;
-            return @intToEnum(Index, @enumToInt(oi));
+            return @enumFromInt(Index, @intFromEnum(oi));
         }
     };
 
@@ -1651,7 +1651,7 @@ pub const Namespace = struct {
 
         pub fn hash(ctx: @This(), decl_index: Decl.Index) u32 {
             const decl = ctx.module.declPtr(decl_index);
-            return std.hash.uint32(@enumToInt(decl.name));
+            return std.hash.uint32(@intFromEnum(decl.name));
         }
 
         pub fn eql(ctx: @This(), a_decl_index: Decl.Index, b_decl_index: Decl.Index, b_index: usize) bool {
@@ -2006,7 +2006,7 @@ pub const File = struct {
         // be the case if there were other astgen failures in this file
         if (!file.zir_loaded) return;
 
-        const imports_index = file.zir.extra[@enumToInt(Zir.ExtraIndex.imports)];
+        const imports_index = file.zir.extra[@intFromEnum(Zir.ExtraIndex.imports)];
         if (imports_index == 0) return;
         const extra = file.zir.extraData(Zir.Inst.Imports, imports_index);
 
@@ -3360,11 +3360,11 @@ pub fn destroyDecl(mod: *Module, decl_index: Decl.Index) void {
 }
 
 pub fn declPtr(mod: *Module, index: Decl.Index) *Decl {
-    return mod.allocated_decls.at(@enumToInt(index));
+    return mod.allocated_decls.at(@intFromEnum(index));
 }
 
 pub fn namespacePtr(mod: *Module, index: Namespace.Index) *Namespace {
-    return mod.allocated_namespaces.at(@enumToInt(index));
+    return mod.allocated_namespaces.at(@intFromEnum(index));
 }
 
 pub fn unionPtr(mod: *Module, index: Union.Index) *Union {
@@ -3767,10 +3767,10 @@ fn loadZirCacheBody(gpa: Allocator, header: Zir.Header, cache_file: std.fs.File)
     if (data_has_safety_tag) {
         const tags = zir.instructions.items(.tag);
         for (zir.instructions.items(.data), 0..) |*data, i| {
-            const union_tag = Zir.Inst.Tag.data_tags[@enumToInt(tags[i])];
+            const union_tag = Zir.Inst.Tag.data_tags[@intFromEnum(tags[i])];
             const as_struct = @ptrCast(*HackDataLayout, data);
             as_struct.* = .{
-                .safety_tag = @enumToInt(union_tag),
+                .safety_tag = @intFromEnum(union_tag),
                 .data = safety_buffer[i],
             };
         }
@@ -4101,7 +4101,7 @@ pub fn ensureDeclAnalyzed(mod: *Module, decl_index: Decl.Index) SemaError!void {
         const update_level: Decl.DepType = if (!type_changed and decl.ty.zigTypeTag(mod) == .Fn) .function_body else .normal;
 
         for (decl.dependants.keys(), decl.dependants.values()) |dep_index, dep_type| {
-            if (@enumToInt(dep_type) < @enumToInt(update_level)) continue;
+            if (@intFromEnum(dep_type) < @intFromEnum(update_level)) continue;
 
             const dep = mod.declPtr(dep_index);
             switch (dep.analysis) {
@@ -4621,7 +4621,7 @@ fn semaDecl(mod: *Module, decl_index: Decl.Index) !bool {
 
             const is_inline = decl.ty.fnCallingConvention(mod) == .Inline;
             if (decl.is_exported) {
-                const export_src: LazySrcLoc = .{ .token_offset = @boolToInt(decl.is_pub) };
+                const export_src: LazySrcLoc = .{ .token_offset = @intFromBool(decl.is_pub) };
                 if (is_inline) {
                     return sema.fail(&block_scope, export_src, "export of inline function", .{});
                 }
@@ -4721,7 +4721,7 @@ fn semaDecl(mod: *Module, decl_index: Decl.Index) !bool {
     }
 
     if (decl.is_exported) {
-        const export_src: LazySrcLoc = .{ .token_offset = @boolToInt(decl.is_pub) };
+        const export_src: LazySrcLoc = .{ .token_offset = @intFromBool(decl.is_pub) };
         // The scope needs to have the decl in it.
         try sema.analyzeExport(&block_scope, export_src, .{ .name = decl.name }, decl_index);
     }
@@ -4742,7 +4742,7 @@ pub fn declareDeclDependencyType(mod: *Module, depender_index: Decl.Index, depen
     const dependee = mod.declPtr(dependee_index);
 
     if (depender.dependencies.get(dependee_index)) |cur_type| {
-        if (@enumToInt(cur_type) >= @enumToInt(dep_type)) {
+        if (@intFromEnum(cur_type) >= @intFromEnum(dep_type)) {
             // We already have this dependency (or stricter) marked
             return;
         }
@@ -5611,7 +5611,7 @@ pub fn analyzeFnBody(mod: *Module, func_index: Fn.Index, arena: Allocator) SemaE
         .body_len = @intCast(u32, inner_block.instructions.items.len),
     });
     sema.air_extra.appendSliceAssumeCapacity(inner_block.instructions.items);
-    sema.air_extra.items[@enumToInt(Air.ExtraIndex.main_block)] = main_block_index;
+    sema.air_extra.items[@intFromEnum(Air.ExtraIndex.main_block)] = main_block_index;
 
     func.state = .success;
 
@@ -5681,12 +5681,12 @@ fn markOutdatedDecl(mod: *Module, decl_index: Decl.Index) !void {
 
 pub fn createNamespace(mod: *Module, initialization: Namespace) !Namespace.Index {
     if (mod.namespaces_free_list.popOrNull()) |index| {
-        mod.allocated_namespaces.at(@enumToInt(index)).* = initialization;
+        mod.allocated_namespaces.at(@intFromEnum(index)).* = initialization;
         return index;
     }
     const ptr = try mod.allocated_namespaces.addOne(mod.gpa);
     ptr.* = initialization;
-    return @intToEnum(Namespace.Index, mod.allocated_namespaces.len - 1);
+    return @enumFromInt(Namespace.Index, mod.allocated_namespaces.len - 1);
 }
 
 pub fn destroyNamespace(mod: *Module, index: Namespace.Index) void {
@@ -5744,7 +5744,7 @@ pub fn allocateNewDecl(
         }
         break :d .{
             .new_decl = decl,
-            .decl_index = @intToEnum(Decl.Index, mod.allocated_decls.len - 1),
+            .decl_index = @enumFromInt(Decl.Index, mod.allocated_decls.len - 1),
         };
     };
 
@@ -5808,7 +5808,7 @@ pub fn createAnonymousDeclFromDecl(
     const new_decl_index = try mod.allocateNewDecl(namespace, src_decl.src_node, src_scope);
     errdefer mod.destroyDecl(new_decl_index);
     const name = try mod.intern_pool.getOrPutStringFmt(mod.gpa, "{}__anon_{d}", .{
-        src_decl.name.fmt(&mod.intern_pool), @enumToInt(new_decl_index),
+        src_decl.name.fmt(&mod.intern_pool), @intFromEnum(new_decl_index),
     });
     try mod.initNewAnonDecl(new_decl_index, src_decl.src_line, namespace, tv, name);
     return new_decl_index;
@@ -6172,7 +6172,7 @@ pub fn argSrc(
     @setCold(true);
     const gpa = mod.gpa;
     if (start_arg_i == 0 and bound_arg_src != null) return bound_arg_src.?;
-    const arg_i = start_arg_i - @boolToInt(bound_arg_src != null);
+    const arg_i = start_arg_i - @intFromBool(bound_arg_src != null);
     const tree = decl.getFileScope(mod).getTree(gpa) catch |err| {
         // In this case we emit a warning + a less precise source location.
         log.warn("unable to load {s}: {s}", .{
@@ -6741,7 +6741,7 @@ pub fn ptrType(mod: *Module, info: InternPool.Key.PtrType) Allocator.Error!Type
             }
         },
         .runtime => {},
-        _ => assert(@enumToInt(info.flags.vector_index) < info.packed_offset.host_size),
+        _ => assert(@intFromEnum(info.flags.vector_index) < info.packed_offset.host_size),
     }
 
     return (try intern(mod, .{ .ptr_type = canon_info })).toType();
@@ -6969,17 +6969,17 @@ pub fn intBitsForValue(mod: *Module, val: Value, sign: bool) u16 {
     const key = mod.intern_pool.indexToKey(val.toIntern());
     switch (key.int.storage) {
         .i64 => |x| {
-            if (std.math.cast(u64, x)) |casted| return Type.smallestUnsignedBits(casted) + @boolToInt(sign);
+            if (std.math.cast(u64, x)) |casted| return Type.smallestUnsignedBits(casted) + @intFromBool(sign);
             assert(sign);
             // Protect against overflow in the following negation.
             if (x == std.math.minInt(i64)) return 64;
             return Type.smallestUnsignedBits(@intCast(u64, -(x + 1))) + 1;
         },
         .u64 => |x| {
-            return Type.smallestUnsignedBits(x) + @boolToInt(sign);
+            return Type.smallestUnsignedBits(x) + @intFromBool(sign);
         },
         .big_int => |big| {
-            if (big.positive) return @intCast(u16, big.bitCountAbs() + @boolToInt(sign));
+            if (big.positive) return @intCast(u16, big.bitCountAbs() + @intFromBool(sign));
 
             // Zero is still a possibility, in which case unsigned is fine
             if (big.eqZero()) return 0;
@@ -6987,10 +6987,10 @@ pub fn intBitsForValue(mod: *Module, val: Value, sign: bool) u16 {
             return @intCast(u16, big.bitCountTwosComp());
         },
         .lazy_align => |lazy_ty| {
-            return Type.smallestUnsignedBits(lazy_ty.toType().abiAlignment(mod)) + @boolToInt(sign);
+            return Type.smallestUnsignedBits(lazy_ty.toType().abiAlignment(mod)) + @intFromBool(sign);
         },
         .lazy_size => |lazy_ty| {
-            return Type.smallestUnsignedBits(lazy_ty.toType().abiSize(mod)) + @boolToInt(sign);
+            return Type.smallestUnsignedBits(lazy_ty.toType().abiSize(mod)) + @intFromBool(sign);
         },
     }
 }
src/objcopy.zig
@@ -539,7 +539,7 @@ const HexWriter = struct {
             const parts = addressParts(self.address);
             sum +%= parts[0];
             sum +%= parts[1];
-            sum +%= @enumToInt(self.payload);
+            sum +%= @intFromEnum(self.payload);
             for (payload_bytes) |byte| {
                 sum +%= byte;
             }
@@ -557,7 +557,7 @@ const HexWriter = struct {
             const line = try std.fmt.bufPrint(&outbuf, ":{0X:0>2}{1X:0>4}{2X:0>2}{3s}{4X:0>2}" ++ linesep, .{
                 @intCast(u8, payload_bytes.len),
                 self.address,
-                @enumToInt(self.payload),
+                @intFromEnum(self.payload),
                 std.fmt.fmtSliceHexUpper(payload_bytes),
                 self.checksum(),
             });
src/Package.zig
@@ -502,7 +502,7 @@ fn fetchAndUnpack(
 
         if (req.response.status != .ok) {
             return report.fail(dep.url_tok, "Expected response status '200 OK' got '{} {s}'", .{
-                @enumToInt(req.response.status),
+                @intFromEnum(req.response.status),
                 req.response.status.phrase() orelse "",
             });
         }
@@ -568,7 +568,7 @@ fn fetchAndUnpack(
             .msg = "url field is missing corresponding hash field",
         });
         const notes_start = try eb.reserveNotes(notes_len);
-        eb.extra.items[notes_start] = @enumToInt(try eb.addErrorMessage(.{
+        eb.extra.items[notes_start] = @intFromEnum(try eb.addErrorMessage(.{
             .msg = try eb.printString("expected .hash = \"{s}\",", .{&actual_hex}),
         }));
         return error.PackageFetchFailed;
@@ -715,7 +715,7 @@ fn hashFileFallible(dir: fs.Dir, hashed_file: *HashedFile) HashedFile.Error!void
     defer file.close();
     var hasher = Manifest.Hash.init(.{});
     hasher.update(hashed_file.normalized_path);
-    hasher.update(&.{ 0, @boolToInt(try isExecutable(file)) });
+    hasher.update(&.{ 0, @intFromBool(try isExecutable(file)) });
     while (true) {
         const bytes_read = try file.read(&buf);
         if (bytes_read == 0) break;
src/print_air.zig
@@ -956,7 +956,7 @@ const Writer = struct {
         operand: Air.Inst.Ref,
         dies: bool,
     ) @TypeOf(s).Error!void {
-        const i = @enumToInt(operand);
+        const i = @intFromEnum(operand);
 
         if (i < InternPool.static_len) {
             return s.print("@{}", .{operand});
src/print_zir.zig
@@ -36,7 +36,7 @@ pub fn renderAsTextToFile(
     try stream.print("%{d} ", .{main_struct_inst});
     try writer.writeInstToStream(stream, main_struct_inst);
     try stream.writeAll("\n");
-    const imports_index = scope_file.zir.extra[@enumToInt(Zir.ExtraIndex.imports)];
+    const imports_index = scope_file.zir.extra[@intFromEnum(Zir.ExtraIndex.imports)];
     if (imports_index != 0) {
         try stream.writeAll("Imports:\n");
 
@@ -559,7 +559,7 @@ const Writer = struct {
     fn writeElemTypeIndex(self: *Writer, stream: anytype, inst: Zir.Inst.Index) !void {
         const inst_data = self.code.instructions.items(.data)[inst].bin;
         try self.writeInstRef(stream, inst_data.lhs);
-        try stream.print(", {d})", .{@enumToInt(inst_data.rhs)});
+        try stream.print(", {d})", .{@intFromEnum(inst_data.rhs)});
     }
 
     fn writeUnNode(
@@ -632,25 +632,25 @@ const Writer = struct {
         var extra_index = extra.end;
         if (inst_data.flags.has_sentinel) {
             try stream.writeAll(", ");
-            try self.writeInstRef(stream, @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]));
+            try self.writeInstRef(stream, @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]));
             extra_index += 1;
         }
         if (inst_data.flags.has_align) {
             try stream.writeAll(", align(");
-            try self.writeInstRef(stream, @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]));
+            try self.writeInstRef(stream, @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]));
             extra_index += 1;
             if (inst_data.flags.has_bit_range) {
-                const bit_start = extra_index + @boolToInt(inst_data.flags.has_addrspace);
+                const bit_start = extra_index + @intFromBool(inst_data.flags.has_addrspace);
                 try stream.writeAll(":");
-                try self.writeInstRef(stream, @intToEnum(Zir.Inst.Ref, self.code.extra[bit_start]));
+                try self.writeInstRef(stream, @enumFromInt(Zir.Inst.Ref, self.code.extra[bit_start]));
                 try stream.writeAll(":");
-                try self.writeInstRef(stream, @intToEnum(Zir.Inst.Ref, self.code.extra[bit_start + 1]));
+                try self.writeInstRef(stream, @enumFromInt(Zir.Inst.Ref, self.code.extra[bit_start + 1]));
             }
             try stream.writeAll(")");
         }
         if (inst_data.flags.has_addrspace) {
             try stream.writeAll(", addrspace(");
-            try self.writeInstRef(stream, @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]));
+            try self.writeInstRef(stream, @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]));
             try stream.writeAll(")");
         }
         try stream.writeAll(") ");
@@ -1084,7 +1084,7 @@ const Writer = struct {
 
         try self.writeFlag(stream, "volatile, ", is_volatile);
         if (tmpl_is_expr) {
-            try self.writeInstRef(stream, @intToEnum(Zir.Inst.Ref, extra.data.asm_source));
+            try self.writeInstRef(stream, @enumFromInt(Zir.Inst.Ref, extra.data.asm_source));
             try stream.writeAll(", ");
         } else {
             const asm_source = self.code.nullTerminatedString(extra.data.asm_source);
@@ -1179,7 +1179,7 @@ const Writer = struct {
         if (extra.data.flags.ensure_result_used) {
             try stream.writeAll("nodiscard ");
         }
-        try stream.print(".{s}, ", .{@tagName(@intToEnum(std.builtin.CallModifier, extra.data.flags.packed_modifier))});
+        try stream.print(".{s}, ", .{@tagName(@enumFromInt(std.builtin.CallModifier, extra.data.flags.packed_modifier))});
         switch (kind) {
             .direct => try self.writeInstRef(stream, extra.data.callee),
             .field => {
@@ -1287,7 +1287,7 @@ const Writer = struct {
             extra_index += 1;
             try stream.writeAll("Packed(");
             if (backing_int_body_len == 0) {
-                const backing_int_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                const backing_int_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                 extra_index += 1;
                 try self.writeInstRef(stream, backing_int_ref);
             } else {
@@ -1369,7 +1369,7 @@ const Writer = struct {
                     if (has_type_body) {
                         fields[field_i].type_len = self.code.extra[extra_index];
                     } else {
-                        fields[field_i].type = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                        fields[field_i].type = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                     }
                     extra_index += 1;
 
@@ -1454,7 +1454,7 @@ const Writer = struct {
         } else null;
 
         const tag_type_ref = if (small.has_tag_type) blk: {
-            const tag_type_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            const tag_type_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
             break :blk tag_type_ref;
         } else .none;
@@ -1552,14 +1552,14 @@ const Writer = struct {
             try stream.print("{}", .{std.zig.fmtId(field_name)});
 
             if (has_type) {
-                const field_type = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                const field_type = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                 extra_index += 1;
 
                 try stream.writeAll(": ");
                 try self.writeInstRef(stream, field_type);
             }
             if (has_align) {
-                const align_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                const align_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                 extra_index += 1;
 
                 try stream.writeAll(" align(");
@@ -1567,7 +1567,7 @@ const Writer = struct {
                 try stream.writeAll(")");
             }
             if (has_value) {
-                const default_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                const default_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                 extra_index += 1;
 
                 try stream.writeAll(" = ");
@@ -1618,17 +1618,17 @@ const Writer = struct {
             extra_index += 1;
 
             const align_inst: Zir.Inst.Ref = if (!has_align) .none else inst: {
-                const inst = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                const inst = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                 extra_index += 1;
                 break :inst inst;
             };
             const section_inst: Zir.Inst.Ref = if (!has_section_or_addrspace) .none else inst: {
-                const inst = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                const inst = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                 extra_index += 1;
                 break :inst inst;
             };
             const addrspace_inst: Zir.Inst.Ref = if (!has_section_or_addrspace) .none else inst: {
-                const inst = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                const inst = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                 extra_index += 1;
                 break :inst inst;
             };
@@ -1712,7 +1712,7 @@ const Writer = struct {
         } else null;
 
         const tag_type_ref = if (small.has_tag_type) blk: {
-            const tag_type_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            const tag_type_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
             break :blk tag_type_ref;
         } else .none;
@@ -1797,7 +1797,7 @@ const Writer = struct {
                 try stream.print("{}", .{std.zig.fmtId(field_name)});
 
                 if (has_tag_value) {
-                    const tag_value_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                    const tag_value_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                     extra_index += 1;
 
                     try stream.writeAll(" = ");
@@ -1940,7 +1940,7 @@ const Writer = struct {
             const scalar_cases_len = extra.data.bits.scalar_cases_len;
             var scalar_i: usize = 0;
             while (scalar_i < scalar_cases_len) : (scalar_i += 1) {
-                const item_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                const item_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                 extra_index += 1;
                 const info = @bitCast(Zir.Inst.SwitchBlock.ProngInfo, self.code.extra[extra_index]);
                 extra_index += 1;
@@ -1988,9 +1988,9 @@ const Writer = struct {
 
                 var range_i: usize = 0;
                 while (range_i < ranges_len) : (range_i += 1) {
-                    const item_first = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                    const item_first = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                     extra_index += 1;
-                    const item_last = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                    const item_last = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                     extra_index += 1;
 
                     if (range_i != 0 or items.len != 0) {
@@ -2091,7 +2091,7 @@ const Writer = struct {
                 ret_ty_ref = .void_type;
             },
             1 => {
-                ret_ty_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+                ret_ty_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
                 extra_index += 1;
             },
             else => {
@@ -2162,7 +2162,7 @@ const Writer = struct {
             align_body = self.code.extra[extra_index..][0..body_len];
             extra_index += align_body.len;
         } else if (extra.data.bits.has_align_ref) {
-            align_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            align_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
         }
         if (extra.data.bits.has_addrspace_body) {
@@ -2171,7 +2171,7 @@ const Writer = struct {
             addrspace_body = self.code.extra[extra_index..][0..body_len];
             extra_index += addrspace_body.len;
         } else if (extra.data.bits.has_addrspace_ref) {
-            addrspace_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            addrspace_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
         }
         if (extra.data.bits.has_section_body) {
@@ -2180,7 +2180,7 @@ const Writer = struct {
             section_body = self.code.extra[extra_index..][0..body_len];
             extra_index += section_body.len;
         } else if (extra.data.bits.has_section_ref) {
-            section_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            section_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
         }
         if (extra.data.bits.has_cc_body) {
@@ -2189,7 +2189,7 @@ const Writer = struct {
             cc_body = self.code.extra[extra_index..][0..body_len];
             extra_index += cc_body.len;
         } else if (extra.data.bits.has_cc_ref) {
-            cc_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            cc_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
         }
         if (extra.data.bits.has_ret_ty_body) {
@@ -2198,7 +2198,7 @@ const Writer = struct {
             ret_ty_body = self.code.extra[extra_index..][0..body_len];
             extra_index += ret_ty_body.len;
         } else if (extra.data.bits.has_ret_ty_ref) {
-            ret_ty_ref = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            ret_ty_ref = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
         }
 
@@ -2251,12 +2251,12 @@ const Writer = struct {
             try stream.print(", lib_name=\"{}\"", .{std.zig.fmtEscapes(lib_name)});
         }
         const align_inst: Zir.Inst.Ref = if (!small.has_align) .none else blk: {
-            const align_inst = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            const align_inst = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
             break :blk align_inst;
         };
         const init_inst: Zir.Inst.Ref = if (!small.has_init) .none else blk: {
-            const init_inst = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            const init_inst = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
             break :blk init_inst;
         };
@@ -2274,12 +2274,12 @@ const Writer = struct {
 
         var extra_index: usize = extra.end;
         const type_inst: Zir.Inst.Ref = if (!small.has_type) .none else blk: {
-            const type_inst = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            const type_inst = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
             break :blk type_inst;
         };
         const align_inst: Zir.Inst.Ref = if (!small.has_align) .none else blk: {
-            const align_inst = @intToEnum(Zir.Inst.Ref, self.code.extra[extra_index]);
+            const align_inst = @enumFromInt(Zir.Inst.Ref, self.code.extra[extra_index]);
             extra_index += 1;
             break :blk align_inst;
         };
@@ -2480,8 +2480,8 @@ const Writer = struct {
     }
 
     fn writeInstRef(self: *Writer, stream: anytype, ref: Zir.Inst.Ref) !void {
-        const i = @enumToInt(ref);
-        if (i < InternPool.static_len) return stream.print("@{}", .{@intToEnum(InternPool.Index, i)});
+        const i = @intFromEnum(ref);
+        if (i < InternPool.static_len) return stream.print("@{}", .{@enumFromInt(InternPool.Index, i)});
         return self.writeInstIndex(stream, i - InternPool.static_len);
     }
 
src/register_manager.zig
@@ -366,7 +366,7 @@ const MockRegister1 = enum(u2) {
     r3,
 
     pub fn id(reg: MockRegister1) u2 {
-        return @enumToInt(reg);
+        return @intFromEnum(reg);
     }
 
     const allocatable_registers = [_]MockRegister1{ .r2, .r3 };
@@ -394,7 +394,7 @@ const MockRegister2 = enum(u2) {
     r3,
 
     pub fn id(reg: MockRegister2) u2 {
-        return @enumToInt(reg);
+        return @intFromEnum(reg);
     }
 
     const allocatable_registers = [_]MockRegister2{ .r0, .r1, .r2, .r3 };
@@ -426,14 +426,14 @@ const MockRegister3 = enum(u3) {
     x3,
 
     pub fn id(reg: MockRegister3) u3 {
-        return switch (@enumToInt(reg)) {
-            0...3 => @as(u3, @truncate(u2, @enumToInt(reg))),
-            4...7 => @enumToInt(reg),
+        return switch (@intFromEnum(reg)) {
+            0...3 => @as(u3, @truncate(u2, @intFromEnum(reg))),
+            4...7 => @intFromEnum(reg),
         };
     }
 
     pub fn enc(reg: MockRegister3) u2 {
-        return @truncate(u2, @enumToInt(reg));
+        return @truncate(u2, @intFromEnum(reg));
     }
 
     const gp_regs = [_]MockRegister3{ .r0, .r1, .r2, .r3 };
src/Sema.zig
@@ -1387,7 +1387,7 @@ fn analyzeBodyInner(
                         check_block = check_block.parent.?;
                     };
 
-                    if (@enumToInt(target_runtime_index) < @enumToInt(block.runtime_index)) {
+                    if (@intFromEnum(target_runtime_index) < @intFromEnum(block.runtime_index)) {
                         const runtime_src = block.runtime_cond orelse block.runtime_loop.?;
                         const msg = msg: {
                             const msg = try sema.errMsg(block, src, "comptime control flow inside runtime block", .{});
@@ -1761,10 +1761,10 @@ pub fn resolveInstAllowNone(sema: *Sema, zir_ref: Zir.Inst.Ref) !Air.Inst.Ref {
 
 pub fn resolveInst(sema: *Sema, zir_ref: Zir.Inst.Ref) !Air.Inst.Ref {
     assert(zir_ref != .none);
-    const i = @enumToInt(zir_ref);
+    const i = @intFromEnum(zir_ref);
     // First section of indexes correspond to a set number of constant values.
     // We intentionally map the same indexes to the same values between ZIR and AIR.
-    if (i < InternPool.static_len) return @intToEnum(Air.Inst.Ref, i);
+    if (i < InternPool.static_len) return @enumFromInt(Air.Inst.Ref, i);
     // The last section of indexes refers to the map of ZIR => AIR.
     const inst = sema.inst_map.get(i - InternPool.static_len).?;
     if (inst == .generic_poison) return error.GenericPoison;
@@ -2038,9 +2038,9 @@ fn resolveMaybeUndefValAllowVariablesMaybeRuntime(
 ) CompileError!?Value {
     assert(inst != .none);
     // First section of indexes correspond to a set number of constant values.
-    const int = @enumToInt(inst);
+    const int = @intFromEnum(inst);
     if (int < InternPool.static_len) {
-        return @intToEnum(InternPool.Index, int).toValue();
+        return @enumFromInt(InternPool.Index, int).toValue();
     }
 
     const i = int - InternPool.static_len;
@@ -2745,8 +2745,8 @@ pub fn analyzeStructDecl(
     }
 
     var extra_index: usize = extended.operand;
-    extra_index += @boolToInt(small.has_src_node);
-    extra_index += @boolToInt(small.has_fields_len);
+    extra_index += @intFromBool(small.has_src_node);
+    extra_index += @intFromBool(small.has_fields_len);
     const decls_len = if (small.has_decls_len) blk: {
         const decls_len = sema.code.extra[extra_index];
         extra_index += 1;
@@ -2857,7 +2857,7 @@ fn createAnonymousDeclTypeNamed(
             // renamed.
 
             const name = mod.intern_pool.getOrPutStringFmt(gpa, "{}__{s}_{d}", .{
-                src_decl.name.fmt(&mod.intern_pool), anon_prefix, @enumToInt(new_decl_index),
+                src_decl.name.fmt(&mod.intern_pool), anon_prefix, @intFromEnum(new_decl_index),
             }) catch unreachable;
             try mod.initNewAnonDecl(new_decl_index, src_decl.src_line, namespace, typed_value, name);
             return new_decl_index;
@@ -2948,7 +2948,7 @@ fn zirEnumDecl(
     const tag_ty_src: LazySrcLoc = .{ .node_offset_container_tag = src.node_offset.x };
 
     const tag_type_ref = if (small.has_tag_type) blk: {
-        const tag_type_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+        const tag_type_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
         extra_index += 1;
         break :blk tag_type_ref;
     } else .none;
@@ -3131,7 +3131,7 @@ fn zirEnumDecl(
         }
 
         const tag_overflow = if (has_tag_value) overflow: {
-            const tag_val_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+            const tag_val_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
             extra_index += 1;
             const tag_inst = try sema.resolveInst(tag_val_ref);
             last_tag_val = sema.resolveConstValue(block, .unneeded, tag_inst, "") catch |err| switch (err) {
@@ -3222,9 +3222,9 @@ fn zirUnionDecl(
         break :blk LazySrcLoc.nodeOffset(node_offset);
     } else sema.src;
 
-    extra_index += @boolToInt(small.has_tag_type);
-    extra_index += @boolToInt(small.has_body_len);
-    extra_index += @boolToInt(small.has_fields_len);
+    extra_index += @intFromBool(small.has_tag_type);
+    extra_index += @intFromBool(small.has_body_len);
+    extra_index += @intFromBool(small.has_fields_len);
 
     const decls_len = if (small.has_decls_len) blk: {
         const decls_len = sema.code.extra[extra_index];
@@ -3574,13 +3574,13 @@ fn zirAllocExtended(
     var extra_index: usize = extra.end;
 
     const var_ty: Type = if (small.has_type) blk: {
-        const type_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+        const type_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
         extra_index += 1;
         break :blk try sema.resolveType(block, ty_src, type_ref);
     } else undefined;
 
     const alignment: u32 = if (small.has_align) blk: {
-        const align_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+        const align_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
         extra_index += 1;
         const alignment = try sema.resolveAlign(block, align_src, align_ref);
         break :blk alignment;
@@ -6006,7 +6006,7 @@ fn zirFence(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) Co
     const order_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = extra.node };
     const order = try sema.resolveAtomicOrder(block, order_src, extra.operand, "atomic order of @fence must be comptime-known");
 
-    if (@enumToInt(order) < @enumToInt(std.builtin.AtomicOrder.Acquire)) {
+    if (@intFromEnum(order) < @intFromEnum(std.builtin.AtomicOrder.Acquire)) {
         return sema.fail(block, order_src, "atomic ordering must be Acquire or stricter", .{});
     }
 
@@ -6441,7 +6441,7 @@ fn zirCall(
     const extra = sema.code.extraData(ExtraType, inst_data.payload_index);
     const args_len = extra.data.flags.args_len;
 
-    const modifier = @intToEnum(std.builtin.CallModifier, extra.data.flags.packed_modifier);
+    const modifier = @enumFromInt(std.builtin.CallModifier, extra.data.flags.packed_modifier);
     const ensure_result_used = extra.data.flags.ensure_result_used;
     const pop_error_return_trace = extra.data.flags.pop_error_return_trace;
 
@@ -6473,7 +6473,7 @@ fn zirCall(
     }
 
     const callee_ty = sema.typeOf(func);
-    const total_args = args_len + @boolToInt(bound_arg_src != null);
+    const total_args = args_len + @intFromBool(bound_arg_src != null);
     const func_ty = try sema.checkCallArgumentCount(block, func, callee_src, callee_ty, total_args, bound_arg_src != null);
 
     const args_body = sema.code.extra[extra.end..];
@@ -6612,7 +6612,7 @@ fn checkCallArgumentCount(
 
     const func_ty_info = mod.typeToFunc(func_ty).?;
     const fn_params_len = func_ty_info.param_types.len;
-    const args_len = total_args - @boolToInt(member_fn);
+    const args_len = total_args - @intFromBool(member_fn);
     if (func_ty_info.is_var_args) {
         assert(func_ty_info.cc == .C);
         if (total_args >= fn_params_len) return func_ty;
@@ -6631,7 +6631,7 @@ fn checkCallArgumentCount(
             .{
                 member_str,
                 variadic_str,
-                fn_params_len - @boolToInt(member_fn),
+                fn_params_len - @intFromBool(member_fn),
                 args_len,
             },
         );
@@ -7538,7 +7538,7 @@ fn instantiateGenericCall(
         const new_decl = mod.declPtr(new_decl_index);
         // TODO better names for generic function instantiations
         const decl_name = try mod.intern_pool.getOrPutStringFmt(gpa, "{}__anon_{d}", .{
-            fn_owner_decl.name.fmt(&mod.intern_pool), @enumToInt(new_decl_index),
+            fn_owner_decl.name.fmt(&mod.intern_pool), @intFromEnum(new_decl_index),
         });
         new_decl.name = decl_name;
         new_decl.src_line = fn_owner_decl.src_line;
@@ -7982,7 +7982,7 @@ fn zirElemTypeIndex(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr
     const indexable_ty = try sema.resolveType(block, .unneeded, bin.lhs);
     assert(indexable_ty.isIndexable(mod)); // validated by a previous instruction
     if (indexable_ty.zigTypeTag(mod) == .Struct) {
-        const elem_type = indexable_ty.structFieldType(@enumToInt(bin.rhs), mod);
+        const elem_type = indexable_ty.structFieldType(@intFromEnum(bin.rhs), mod);
         return sema.addType(elem_type);
     } else {
         const elem_type = indexable_ty.elemType2(mod);
@@ -8295,7 +8295,7 @@ fn zirIntFromEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
     }
 
     if (try sema.resolveMaybeUndefVal(enum_tag)) |enum_tag_val| {
-        const val = try enum_tag_val.enumToInt(enum_tag_ty, mod);
+        const val = try enum_tag_val.intFromEnum(enum_tag_ty, mod);
         return sema.addConstant(int_tag_ty, try val.copy(sema.arena));
     }
 
@@ -8729,7 +8729,7 @@ fn zirFunc(
     const ret_ty: Type = switch (extra.data.ret_body_len) {
         0 => Type.void,
         1 => blk: {
-            const ret_ty_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+            const ret_ty_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
             extra_index += 1;
             if (sema.resolveType(block, ret_ty_src, ret_ty_ref)) |ret_ty| {
                 break :blk ret_ty;
@@ -9668,8 +9668,8 @@ fn intCast(
         const wanted_info = dest_scalar_ty.intInfo(mod);
         const actual_bits = actual_info.bits;
         const wanted_bits = wanted_info.bits;
-        const actual_value_bits = actual_bits - @boolToInt(actual_info.signedness == .signed);
-        const wanted_value_bits = wanted_bits - @boolToInt(wanted_info.signedness == .signed);
+        const actual_value_bits = actual_bits - @intFromBool(actual_info.signedness == .signed);
+        const wanted_value_bits = wanted_bits - @intFromBool(wanted_info.signedness == .signed);
 
         // range shrinkage
         // requirement: int value fits into target type
@@ -9790,7 +9790,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
                 const msg = try sema.errMsg(block, dest_ty_src, "cannot @bitCast to '{}'", .{dest_ty.fmt(mod)});
                 errdefer msg.destroy(sema.gpa);
                 switch (operand_ty.zigTypeTag(mod)) {
-                    .Int, .ComptimeInt => try sema.errNote(block, dest_ty_src, msg, "use @intToEnum to cast from '{}'", .{operand_ty.fmt(mod)}),
+                    .Int, .ComptimeInt => try sema.errNote(block, dest_ty_src, msg, "use @enumFromInt to cast from '{}'", .{operand_ty.fmt(mod)}),
                     else => {},
                 }
 
@@ -9804,7 +9804,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
                 const msg = try sema.errMsg(block, dest_ty_src, "cannot @bitCast to '{}'", .{dest_ty.fmt(mod)});
                 errdefer msg.destroy(sema.gpa);
                 switch (operand_ty.zigTypeTag(mod)) {
-                    .Int, .ComptimeInt => try sema.errNote(block, dest_ty_src, msg, "use @intToPtr to cast from '{}'", .{operand_ty.fmt(mod)}),
+                    .Int, .ComptimeInt => try sema.errNote(block, dest_ty_src, msg, "use @ptrFromInt to cast from '{}'", .{operand_ty.fmt(mod)}),
                     .Pointer => try sema.errNote(block, dest_ty_src, msg, "use @ptrCast to cast from '{}'", .{operand_ty.fmt(mod)}),
                     else => {},
                 }
@@ -9854,7 +9854,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
                 const msg = try sema.errMsg(block, operand_src, "cannot @bitCast from '{}'", .{operand_ty.fmt(mod)});
                 errdefer msg.destroy(sema.gpa);
                 switch (dest_ty.zigTypeTag(mod)) {
-                    .Int, .ComptimeInt => try sema.errNote(block, operand_src, msg, "use @enumToInt to cast to '{}'", .{dest_ty.fmt(mod)}),
+                    .Int, .ComptimeInt => try sema.errNote(block, operand_src, msg, "use @intFromEnum to cast to '{}'", .{dest_ty.fmt(mod)}),
                     else => {},
                 }
 
@@ -9867,7 +9867,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
                 const msg = try sema.errMsg(block, operand_src, "cannot @bitCast from '{}'", .{operand_ty.fmt(mod)});
                 errdefer msg.destroy(sema.gpa);
                 switch (dest_ty.zigTypeTag(mod)) {
-                    .Int, .ComptimeInt => try sema.errNote(block, operand_src, msg, "use @ptrToInt to cast to '{}'", .{dest_ty.fmt(mod)}),
+                    .Int, .ComptimeInt => try sema.errNote(block, operand_src, msg, "use @intFromPtr to cast to '{}'", .{dest_ty.fmt(mod)}),
                     .Pointer => try sema.errNote(block, operand_src, msg, "use @ptrCast to cast to '{}'", .{dest_ty.fmt(mod)}),
                     else => {},
                 }
@@ -10547,7 +10547,7 @@ const SwitchProngAnalysis = struct {
                         try cases_extra.ensureUnusedCapacity(3 + coerce_block.instructions.items.len);
                         cases_extra.appendAssumeCapacity(1); // items_len
                         cases_extra.appendAssumeCapacity(@intCast(u32, coerce_block.instructions.items.len)); // body_len
-                        cases_extra.appendAssumeCapacity(@enumToInt(case_vals[idx])); // item
+                        cases_extra.appendAssumeCapacity(@intFromEnum(case_vals[idx])); // item
                         cases_extra.appendSliceAssumeCapacity(coerce_block.instructions.items); // body
                     }
                 }
@@ -10834,7 +10834,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
             {
                 var scalar_i: u32 = 0;
                 while (scalar_i < scalar_cases_len) : (scalar_i += 1) {
-                    const item_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+                    const item_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
                     extra_index += 1;
                     const info = @bitCast(Zir.Inst.SwitchBlock.ProngInfo, sema.code.extra[extra_index]);
                     extra_index += 1 + info.body_len;
@@ -10933,7 +10933,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
             {
                 var scalar_i: u32 = 0;
                 while (scalar_i < scalar_cases_len) : (scalar_i += 1) {
-                    const item_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+                    const item_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
                     extra_index += 1;
                     const info = @bitCast(Zir.Inst.SwitchBlock.ProngInfo, sema.code.extra[extra_index]);
                     extra_index += 1 + info.body_len;
@@ -11074,7 +11074,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
             {
                 var scalar_i: u32 = 0;
                 while (scalar_i < scalar_cases_len) : (scalar_i += 1) {
-                    const item_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+                    const item_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
                     extra_index += 1;
                     const info = @bitCast(Zir.Inst.SwitchBlock.ProngInfo, sema.code.extra[extra_index]);
                     extra_index += 1 + info.body_len;
@@ -11116,9 +11116,9 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
                     try case_vals.ensureUnusedCapacity(gpa, 2 * ranges_len);
                     var range_i: u32 = 0;
                     while (range_i < ranges_len) : (range_i += 1) {
-                        const item_first = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+                        const item_first = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
                         extra_index += 1;
-                        const item_last = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+                        const item_last = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
                         extra_index += 1;
 
                         const vals = try sema.validateSwitchRange(
@@ -11169,7 +11169,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
             {
                 var scalar_i: u32 = 0;
                 while (scalar_i < scalar_cases_len) : (scalar_i += 1) {
-                    const item_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+                    const item_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
                     extra_index += 1;
                     const info = @bitCast(Zir.Inst.SwitchBlock.ProngInfo, sema.code.extra[extra_index]);
                     extra_index += 1 + info.body_len;
@@ -11251,7 +11251,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
             {
                 var scalar_i: u32 = 0;
                 while (scalar_i < scalar_cases_len) : (scalar_i += 1) {
-                    const item_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+                    const item_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
                     extra_index += 1;
                     const info = @bitCast(Zir.Inst.SwitchBlock.ProngInfo, sema.code.extra[extra_index]);
                     extra_index += 1;
@@ -11571,7 +11571,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
         try cases_extra.ensureUnusedCapacity(gpa, 3 + case_block.instructions.items.len);
         cases_extra.appendAssumeCapacity(1); // items_len
         cases_extra.appendAssumeCapacity(@intCast(u32, case_block.instructions.items.len));
-        cases_extra.appendAssumeCapacity(@enumToInt(item));
+        cases_extra.appendAssumeCapacity(@intFromEnum(item));
         cases_extra.appendSliceAssumeCapacity(case_block.instructions.items);
     }
 
@@ -11656,7 +11656,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
                     try cases_extra.ensureUnusedCapacity(gpa, 3 + case_block.instructions.items.len);
                     cases_extra.appendAssumeCapacity(1); // items_len
                     cases_extra.appendAssumeCapacity(@intCast(u32, case_block.instructions.items.len));
-                    cases_extra.appendAssumeCapacity(@enumToInt(item_ref));
+                    cases_extra.appendAssumeCapacity(@intFromEnum(item_ref));
                     cases_extra.appendSliceAssumeCapacity(case_block.instructions.items);
                 }
             }
@@ -11702,7 +11702,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
                 try cases_extra.ensureUnusedCapacity(gpa, 3 + case_block.instructions.items.len);
                 cases_extra.appendAssumeCapacity(1); // items_len
                 cases_extra.appendAssumeCapacity(@intCast(u32, case_block.instructions.items.len));
-                cases_extra.appendAssumeCapacity(@enumToInt(item));
+                cases_extra.appendAssumeCapacity(@intFromEnum(item));
                 cases_extra.appendSliceAssumeCapacity(case_block.instructions.items);
             }
 
@@ -11753,7 +11753,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
             cases_extra.appendAssumeCapacity(@intCast(u32, case_block.instructions.items.len));
 
             for (items) |item| {
-                cases_extra.appendAssumeCapacity(@enumToInt(item));
+                cases_extra.appendAssumeCapacity(@intFromEnum(item));
             }
 
             cases_extra.appendSliceAssumeCapacity(case_block.instructions.items);
@@ -11903,7 +11903,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
                     try cases_extra.ensureUnusedCapacity(gpa, 3 + case_block.instructions.items.len);
                     cases_extra.appendAssumeCapacity(1); // items_len
                     cases_extra.appendAssumeCapacity(@intCast(u32, case_block.instructions.items.len));
-                    cases_extra.appendAssumeCapacity(@enumToInt(item_ref));
+                    cases_extra.appendAssumeCapacity(@intFromEnum(item_ref));
                     cases_extra.appendSliceAssumeCapacity(case_block.instructions.items);
                 }
             },
@@ -11944,7 +11944,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
                     try cases_extra.ensureUnusedCapacity(gpa, 3 + case_block.instructions.items.len);
                     cases_extra.appendAssumeCapacity(1); // items_len
                     cases_extra.appendAssumeCapacity(@intCast(u32, case_block.instructions.items.len));
-                    cases_extra.appendAssumeCapacity(@enumToInt(item_ref));
+                    cases_extra.appendAssumeCapacity(@intFromEnum(item_ref));
                     cases_extra.appendSliceAssumeCapacity(case_block.instructions.items);
                 }
             },
@@ -11975,7 +11975,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
                     try cases_extra.ensureUnusedCapacity(gpa, 3 + case_block.instructions.items.len);
                     cases_extra.appendAssumeCapacity(1); // items_len
                     cases_extra.appendAssumeCapacity(@intCast(u32, case_block.instructions.items.len));
-                    cases_extra.appendAssumeCapacity(@enumToInt(item_ref));
+                    cases_extra.appendAssumeCapacity(@intFromEnum(item_ref));
                     cases_extra.appendSliceAssumeCapacity(case_block.instructions.items);
                 }
             },
@@ -12003,7 +12003,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
                     try cases_extra.ensureUnusedCapacity(gpa, 3 + case_block.instructions.items.len);
                     cases_extra.appendAssumeCapacity(1); // items_len
                     cases_extra.appendAssumeCapacity(@intCast(u32, case_block.instructions.items.len));
-                    cases_extra.appendAssumeCapacity(@enumToInt(Air.Inst.Ref.bool_true));
+                    cases_extra.appendAssumeCapacity(@intFromEnum(Air.Inst.Ref.bool_true));
                     cases_extra.appendSliceAssumeCapacity(case_block.instructions.items);
                 }
                 if (false_count == 0) {
@@ -12029,7 +12029,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
                     try cases_extra.ensureUnusedCapacity(gpa, 3 + case_block.instructions.items.len);
                     cases_extra.appendAssumeCapacity(1); // items_len
                     cases_extra.appendAssumeCapacity(@intCast(u32, case_block.instructions.items.len));
-                    cases_extra.appendAssumeCapacity(@enumToInt(Air.Inst.Ref.bool_false));
+                    cases_extra.appendAssumeCapacity(@intFromEnum(Air.Inst.Ref.bool_false));
                     cases_extra.appendSliceAssumeCapacity(case_block.instructions.items);
                 }
             },
@@ -15685,7 +15685,7 @@ fn zirAsm(
     const is_global_assembly = sema.func_index == .none;
 
     const asm_source: []const u8 = if (tmpl_is_expr) blk: {
-        const tmpl = @intToEnum(Zir.Inst.Ref, extra.data.asm_source);
+        const tmpl = @enumFromInt(Zir.Inst.Ref, extra.data.asm_source);
         const s: []const u8 = try sema.resolveConstString(block, src, tmpl, "assembly code must be comptime-known");
         break :blk s;
     } else sema.code.nullTerminatedString(extra.data.asm_source);
@@ -15789,7 +15789,7 @@ fn zirAsm(
                 .source_len = @intCast(u32, asm_source.len),
                 .outputs_len = outputs_len,
                 .inputs_len = @intCast(u32, args.len),
-                .flags = (@as(u32, @boolToInt(is_volatile)) << 31) | @intCast(u32, clobbers.len),
+                .flags = (@as(u32, @intFromBool(is_volatile)) << 31) | @intCast(u32, clobbers.len),
             }),
         } },
     });
@@ -16448,7 +16448,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
         .EnumLiteral,
         => |type_info_tag| return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
             .ty = type_info_ty.toIntern(),
-            .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(type_info_tag))).toIntern(),
+            .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(type_info_tag))).toIntern(),
             .val = .void_value,
         } })).toValue()),
         .Fn => {
@@ -16543,7 +16543,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
 
             const field_values = .{
                 // calling_convention: CallingConvention,
-                (try mod.enumValueFieldIndex(callconv_ty, @enumToInt(info.cc))).toIntern(),
+                (try mod.enumValueFieldIndex(callconv_ty, @intFromEnum(info.cc))).toIntern(),
                 // alignment: comptime_int,
                 (try mod.intValue(Type.comptime_int, ty.abiAlignment(mod))).toIntern(),
                 // is_generic: bool,
@@ -16557,7 +16557,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Fn))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Fn))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = fn_info_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -16580,13 +16580,13 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             const info = ty.intInfo(mod);
             const field_values = .{
                 // signedness: Signedness,
-                try (try mod.enumValueFieldIndex(signedness_ty, @enumToInt(info.signedness))).intern(signedness_ty, mod),
+                try (try mod.enumValueFieldIndex(signedness_ty, @intFromEnum(info.signedness))).intern(signedness_ty, mod),
                 // bits: u16,
                 (try mod.intValue(Type.u16, info.bits)).toIntern(),
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Int))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Int))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = int_info_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -16611,7 +16611,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Float))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Float))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = float_info_ty.toIntern(),
                     .storage = .{ .elems = &field_vals },
@@ -16653,7 +16653,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
 
             const field_values = .{
                 // size: Size,
-                try (try mod.enumValueFieldIndex(ptr_size_ty, @enumToInt(info.size))).intern(ptr_size_ty, mod),
+                try (try mod.enumValueFieldIndex(ptr_size_ty, @intFromEnum(info.size))).intern(ptr_size_ty, mod),
                 // is_const: bool,
                 Value.makeBool(!info.mutable).toIntern(),
                 // is_volatile: bool,
@@ -16661,7 +16661,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
                 // alignment: comptime_int,
                 alignment.toIntern(),
                 // address_space: AddressSpace
-                try (try mod.enumValueFieldIndex(addrspace_ty, @enumToInt(info.@"addrspace"))).intern(addrspace_ty, mod),
+                try (try mod.enumValueFieldIndex(addrspace_ty, @intFromEnum(info.@"addrspace"))).intern(addrspace_ty, mod),
                 // child: type,
                 info.pointee_type.toIntern(),
                 // is_allowzero: bool,
@@ -16671,7 +16671,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Pointer))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Pointer))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = pointer_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -16703,7 +16703,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Array))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Array))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = array_field_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -16733,7 +16733,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Vector))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Vector))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = vector_field_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -16760,7 +16760,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Optional))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Optional))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = optional_field_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -16870,7 +16870,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             // Construct Type{ .ErrorSet = errors_val }
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.ErrorSet))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.ErrorSet))).toIntern(),
                 .val = errors_val,
             } })).toValue());
         },
@@ -16896,7 +16896,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.ErrorUnion))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.ErrorUnion))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = error_union_field_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -17023,7 +17023,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Enum))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Enum))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = type_enum_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -17164,7 +17164,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
 
             const field_values = .{
                 // layout: ContainerLayout,
-                (try mod.enumValueFieldIndex(container_layout_ty, @enumToInt(layout))).toIntern(),
+                (try mod.enumValueFieldIndex(container_layout_ty, @intFromEnum(layout))).toIntern(),
 
                 // tag_type: ?type,
                 enum_tag_ty_val,
@@ -17175,7 +17175,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Union))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Union))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = type_union_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -17393,7 +17393,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
 
             const field_values = [_]InternPool.Index{
                 // layout: ContainerLayout,
-                (try mod.enumValueFieldIndex(container_layout_ty, @enumToInt(layout))).toIntern(),
+                (try mod.enumValueFieldIndex(container_layout_ty, @intFromEnum(layout))).toIntern(),
                 // backing_integer: ?type,
                 backing_integer_val,
                 // fields: []const StructField,
@@ -17405,7 +17405,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Struct))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Struct))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = type_struct_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -17437,7 +17437,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
             };
             return sema.addConstant(type_info_ty, (try mod.intern(.{ .un = .{
                 .ty = type_info_ty.toIntern(),
-                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @enumToInt(std.builtin.TypeId.Opaque))).toIntern(),
+                .tag = (try mod.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.Opaque))).toIntern(),
                 .val = try mod.intern(.{ .aggregate = .{
                     .ty = type_opaque_ty.toIntern(),
                     .storage = .{ .elems = &field_values },
@@ -18494,7 +18494,7 @@ fn zirPtrType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
     var extra_i = extra.end;
 
     const sentinel = if (inst_data.flags.has_sentinel) blk: {
-        const ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_i]);
+        const ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_i]);
         extra_i += 1;
         const coerced = try sema.coerce(block, elem_ty, try sema.resolveInst(ref), sentinel_src);
         const val = try sema.resolveConstValue(block, sentinel_src, coerced, "pointer sentinel value must be comptime-known");
@@ -18502,7 +18502,7 @@ fn zirPtrType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
     } else .none;
 
     const abi_align: InternPool.Alignment = if (inst_data.flags.has_align) blk: {
-        const ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_i]);
+        const ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_i]);
         extra_i += 1;
         const coerced = try sema.coerce(block, Type.u32, try sema.resolveInst(ref), align_src);
         const val = try sema.resolveConstValue(block, align_src, coerced, "pointer alignment must be comptime-known");
@@ -18521,20 +18521,20 @@ fn zirPtrType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
     } else .none;
 
     const address_space: std.builtin.AddressSpace = if (inst_data.flags.has_addrspace) blk: {
-        const ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_i]);
+        const ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_i]);
         extra_i += 1;
         break :blk try sema.analyzeAddressSpace(block, addrspace_src, ref, .pointer);
     } else if (elem_ty.zigTypeTag(mod) == .Fn and target.cpu.arch == .avr) .flash else .generic;
 
     const bit_offset = if (inst_data.flags.has_bit_range) blk: {
-        const ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_i]);
+        const ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_i]);
         extra_i += 1;
         const bit_offset = try sema.resolveInt(block, bitoffset_src, ref, Type.u16, "pointer bit-offset must be comptime-known");
         break :blk @intCast(u16, bit_offset);
     } else 0;
 
     const host_size: u16 = if (inst_data.flags.has_bit_range) blk: {
-        const ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_i]);
+        const ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_i]);
         extra_i += 1;
         const host_size = try sema.resolveInt(block, hostsize_src, ref, Type.u16, "pointer host size must be comptime-known");
         break :blk @intCast(u16, host_size);
@@ -19093,7 +19093,7 @@ fn zirArrayInit(
     const array_ty = try sema.resolveType(block, src, args[0]);
     const sentinel_val = array_ty.sentinel(mod);
 
-    const resolved_args = try gpa.alloc(Air.Inst.Ref, args.len - 1 + @boolToInt(sentinel_val != null));
+    const resolved_args = try gpa.alloc(Air.Inst.Ref, args.len - 1 + @intFromBool(sentinel_val != null));
     defer gpa.free(resolved_args);
     for (args[1..], 0..) |arg, i| {
         const resolved_arg = try sema.resolveInst(arg);
@@ -19600,7 +19600,7 @@ fn zirReify(
     const mod = sema.mod;
     const gpa = sema.gpa;
     const ip = &mod.intern_pool;
-    const name_strategy = @intToEnum(Zir.Inst.NameStrategy, extended.small);
+    const name_strategy = @enumFromInt(Zir.Inst.NameStrategy, extended.small);
     const extra = sema.code.extraData(Zir.Inst.UnNode, extended.operand).data;
     const src = LazySrcLoc.nodeOffset(extra.node);
     const type_info_ty = try sema.getBuiltinType("Type");
@@ -19612,7 +19612,7 @@ fn zirReify(
     const target = mod.getTarget();
     if (try union_val.val.toValue().anyUndef(mod)) return sema.failWithUseOfUndef(block, src);
     const tag_index = type_info_ty.unionTagFieldIndex(union_val.tag.toValue(), mod).?;
-    switch (@intToEnum(std.builtin.TypeId, tag_index)) {
+    switch (@enumFromInt(std.builtin.TypeId, tag_index)) {
         .Type => return Air.Inst.Ref.type_type,
         .Void => return Air.Inst.Ref.void_type,
         .Bool => return Air.Inst.Ref.bool_type,
@@ -20762,7 +20762,7 @@ fn zirIntFromFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro
     try sema.checkFloatType(block, operand_src, operand_ty);
 
     if (try sema.resolveMaybeUndefVal(operand)) |val| {
-        const result_val = try sema.floatToInt(block, operand_src, val, operand_ty, dest_ty);
+        const result_val = try sema.intFromFloat(block, operand_src, val, operand_ty, dest_ty);
         return sema.addConstant(dest_ty, result_val);
     } else if (dest_ty.zigTypeTag(mod) == .ComptimeInt) {
         return sema.failWithNeededComptime(block, operand_src, "value being casted to 'comptime_int' must be comptime-known");
@@ -20802,7 +20802,7 @@ fn zirFloatFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro
     _ = try sema.checkIntType(block, operand_src, operand_ty);
 
     if (try sema.resolveMaybeUndefVal(operand)) |val| {
-        const result_val = try val.intToFloatAdvanced(sema.arena, operand_ty, dest_ty, sema.mod, sema);
+        const result_val = try val.floatFromIntAdvanced(sema.arena, operand_ty, dest_ty, sema.mod, sema);
         return sema.addConstant(dest_ty, result_val);
     } else if (dest_ty.zigTypeTag(mod) == .ComptimeFloat) {
         return sema.failWithNeededComptime(block, operand_src, "value being casted to 'comptime_float' must be comptime-known");
@@ -21750,7 +21750,7 @@ fn checkComptimeVarStore(
     src: LazySrcLoc,
     decl_ref_mut: InternPool.Key.Ptr.Addr.MutDecl,
 ) CompileError!void {
-    if (@enumToInt(decl_ref_mut.runtime_index) < @enumToInt(block.runtime_index)) {
+    if (@intFromEnum(decl_ref_mut.runtime_index) < @intFromEnum(block.runtime_index)) {
         if (block.runtime_cond) |cond_src| {
             const msg = msg: {
                 const msg = try sema.errMsg(block, src, "store to comptime variable depends on runtime condition", .{});
@@ -22065,13 +22065,13 @@ fn zirCmpxchg(
     const success_order = try sema.resolveAtomicOrder(block, success_order_src, extra.success_order, "atomic order of cmpxchg success must be comptime-known");
     const failure_order = try sema.resolveAtomicOrder(block, failure_order_src, extra.failure_order, "atomic order of cmpxchg failure must be comptime-known");
 
-    if (@enumToInt(success_order) < @enumToInt(std.builtin.AtomicOrder.Monotonic)) {
+    if (@intFromEnum(success_order) < @intFromEnum(std.builtin.AtomicOrder.Monotonic)) {
         return sema.fail(block, success_order_src, "success atomic ordering must be Monotonic or stricter", .{});
     }
-    if (@enumToInt(failure_order) < @enumToInt(std.builtin.AtomicOrder.Monotonic)) {
+    if (@intFromEnum(failure_order) < @intFromEnum(std.builtin.AtomicOrder.Monotonic)) {
         return sema.fail(block, failure_order_src, "failure atomic ordering must be Monotonic or stricter", .{});
     }
-    if (@enumToInt(failure_order) > @enumToInt(success_order)) {
+    if (@intFromEnum(failure_order) > @intFromEnum(success_order)) {
         return sema.fail(block, failure_order_src, "failure atomic ordering must be no stricter than success", .{});
     }
     if (failure_order == .Release or failure_order == .AcqRel) {
@@ -22110,8 +22110,8 @@ fn zirCmpxchg(
         } else break :rs expected_src;
     } else ptr_src;
 
-    const flags: u32 = @as(u32, @enumToInt(success_order)) |
-        (@as(u32, @enumToInt(failure_order)) << 3);
+    const flags: u32 = @as(u32, @intFromEnum(success_order)) |
+        (@as(u32, @intFromEnum(failure_order)) << 3);
 
     try sema.requireRuntimeBlock(block, src, runtime_src);
     return block.addInst(.{
@@ -22610,7 +22610,7 @@ fn zirAtomicRmw(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
         } else break :rs ptr_src;
     } else ptr_src;
 
-    const flags: u32 = @as(u32, @enumToInt(order)) | (@as(u32, @enumToInt(op)) << 3);
+    const flags: u32 = @as(u32, @intFromEnum(order)) | (@as(u32, @intFromEnum(op)) << 3);
 
     try sema.requireRuntimeBlock(block, src, runtime_src);
     return block.addInst(.{
@@ -23556,7 +23556,7 @@ fn zirVarExtended(
     assert(!small.has_align);
 
     const uncasted_init: Air.Inst.Ref = if (small.has_init) blk: {
-        const init_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+        const init_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
         extra_index += 1;
         break :blk try sema.resolveInst(init_ref);
     } else .none;
@@ -23641,7 +23641,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
             break :blk alignment;
         }
     } else if (extra.data.bits.has_align_ref) blk: {
-        const align_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+        const align_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
         extra_index += 1;
         const align_tv = sema.resolveInstConst(block, align_src, align_ref, "alignment must be comptime-known") catch |err| switch (err) {
             error.GenericPoison => {
@@ -23671,7 +23671,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
         }
         break :blk mod.toEnum(std.builtin.AddressSpace, val);
     } else if (extra.data.bits.has_addrspace_ref) blk: {
-        const addrspace_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+        const addrspace_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
         extra_index += 1;
         const addrspace_tv = sema.resolveInstConst(block, addrspace_src, addrspace_ref, "addrespace must be comptime-known") catch |err| switch (err) {
             error.GenericPoison => {
@@ -23695,7 +23695,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
         }
         break :blk FuncLinkSection{ .explicit = try val.toIpString(ty, mod) };
     } else if (extra.data.bits.has_section_ref) blk: {
-        const section_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+        const section_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
         extra_index += 1;
         const section_name = sema.resolveConstStringIntern(block, section_src, section_ref, "linksection must be comptime-known") catch |err| switch (err) {
             error.GenericPoison => {
@@ -23719,7 +23719,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
         }
         break :blk mod.toEnum(std.builtin.CallingConvention, val);
     } else if (extra.data.bits.has_cc_ref) blk: {
-        const cc_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+        const cc_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
         extra_index += 1;
         const cc_tv = sema.resolveInstConst(block, cc_src, cc_ref, "calling convention must be comptime-known") catch |err| switch (err) {
             error.GenericPoison => {
@@ -23743,7 +23743,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
         const ty = val.toType();
         break :blk ty;
     } else if (extra.data.bits.has_ret_ty_ref) blk: {
-        const ret_ty_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
+        const ret_ty_ref = @enumFromInt(Zir.Inst.Ref, sema.code.extra[extra_index]);
         extra_index += 1;
         const ret_ty_tv = sema.resolveInstConst(block, ret_src, ret_ty_ref, "return type must be comptime-known") catch |err| switch (err) {
             error.GenericPoison => {
@@ -26354,7 +26354,7 @@ fn elemValArray(
     const array_ty = sema.typeOf(array);
     const array_sent = array_ty.sentinel(mod);
     const array_len = array_ty.arrayLen(mod);
-    const array_len_s = array_len + @boolToInt(array_sent != null);
+    const array_len_s = array_len + @intFromBool(array_sent != null);
     const elem_ty = array_ty.childType(mod);
 
     if (array_len_s == 0) {
@@ -26419,7 +26419,7 @@ fn elemPtrArray(
     const array_ty = array_ptr_ty.childType(mod);
     const array_sent = array_ty.sentinel(mod) != null;
     const array_len = array_ty.arrayLen(mod);
-    const array_len_s = array_len + @boolToInt(array_sent);
+    const array_len_s = array_len + @intFromBool(array_sent);
 
     if (array_len_s == 0) {
         return sema.fail(block, array_ptr_src, "indexing into empty array is not allowed", .{});
@@ -26489,7 +26489,7 @@ fn elemValSlice(
     if (maybe_slice_val) |slice_val| {
         runtime_src = elem_index_src;
         const slice_len = slice_val.sliceLen(mod);
-        const slice_len_s = slice_len + @boolToInt(slice_sent);
+        const slice_len_s = slice_len + @intFromBool(slice_sent);
         if (slice_len_s == 0) {
             return sema.fail(block, slice_src, "indexing into empty slice is not allowed", .{});
         }
@@ -26551,7 +26551,7 @@ fn elemPtrSlice(
             return sema.addConstUndef(elem_ptr_ty);
         }
         const slice_len = slice_val.sliceLen(mod);
-        const slice_len_s = slice_len + @boolToInt(slice_sent);
+        const slice_len_s = slice_len + @intFromBool(slice_sent);
         if (slice_len_s == 0) {
             return sema.fail(block, slice_src, "indexing into empty slice is not allowed", .{});
         }
@@ -27020,7 +27020,7 @@ fn coerceExtra(
                         .{ val.fmtValue(inst_ty, mod), dest_ty.fmt(mod) },
                     );
                 }
-                const result_val = try sema.floatToInt(block, inst_src, val, inst_ty, dest_ty);
+                const result_val = try sema.intFromFloat(block, inst_src, val, inst_ty, dest_ty);
                 return try sema.addConstant(dest_ty, result_val);
             },
             .Int, .ComptimeInt => {
@@ -27102,9 +27102,9 @@ fn coerceExtra(
                     }
                     break :int;
                 };
-                const result_val = try val.intToFloatAdvanced(sema.arena, inst_ty, dest_ty, mod, sema);
+                const result_val = try val.floatFromIntAdvanced(sema.arena, inst_ty, dest_ty, mod, sema);
                 // TODO implement this compile error
-                //const int_again_val = try result_val.floatToInt(sema.arena, inst_ty);
+                //const int_again_val = try result_val.intFromFloat(sema.arena, inst_ty);
                 //if (!int_again_val.eql(val, inst_ty, mod)) {
                 //    return sema.fail(
                 //        block,
@@ -30773,7 +30773,7 @@ fn analyzeSlice(
                         }
                         const has_sentinel = slice_ty.sentinel(mod) != null;
                         const slice_len = slice_val.sliceLen(mod);
-                        const len_plus_sent = slice_len + @boolToInt(has_sentinel);
+                        const len_plus_sent = slice_len + @intFromBool(has_sentinel);
                         const slice_len_val_with_sentinel = try mod.intValue(Type.usize, len_plus_sent);
                         if (!(try sema.compareAll(end_val, .lte, slice_len_val_with_sentinel, Type.usize))) {
                             const sentinel_label: []const u8 = if (has_sentinel)
@@ -31234,12 +31234,12 @@ fn cmpNumeric(
         } else {
             lhs_bits = lhs_val.intBitCountTwosComp(mod);
         }
-        lhs_bits += @boolToInt(!lhs_is_signed and dest_int_is_signed);
+        lhs_bits += @intFromBool(!lhs_is_signed and dest_int_is_signed);
     } else if (lhs_is_float) {
         dest_float_type = lhs_ty;
     } else {
         const int_info = lhs_ty.intInfo(mod);
-        lhs_bits = int_info.bits + @boolToInt(int_info.signedness == .unsigned and dest_int_is_signed);
+        lhs_bits = int_info.bits + @intFromBool(int_info.signedness == .unsigned and dest_int_is_signed);
     }
 
     var rhs_bits: usize = undefined;
@@ -31292,12 +31292,12 @@ fn cmpNumeric(
         } else {
             rhs_bits = rhs_val.intBitCountTwosComp(mod);
         }
-        rhs_bits += @boolToInt(!rhs_is_signed and dest_int_is_signed);
+        rhs_bits += @intFromBool(!rhs_is_signed and dest_int_is_signed);
     } else if (rhs_is_float) {
         dest_float_type = rhs_ty;
     } else {
         const int_info = rhs_ty.intInfo(mod);
-        rhs_bits = int_info.bits + @boolToInt(int_info.signedness == .unsigned and dest_int_is_signed);
+        rhs_bits = int_info.bits + @intFromBool(int_info.signedness == .unsigned and dest_int_is_signed);
     }
 
     const dest_ty = if (dest_float_type) |ft| ft else blk: {
@@ -31356,7 +31356,7 @@ fn compareIntsOnlyPossibleResult(
         .neq, .lt, .lte => true,
     };
 
-    const sign_adj = @boolToInt(!is_negative and rhs_info.signedness == .signed);
+    const sign_adj = @intFromBool(!is_negative and rhs_info.signedness == .signed);
     const req_bits = lhs_val.intBitCountTwosComp(mod) + sign_adj;
 
     // No sized type can have more than 65535 bits.
@@ -31628,7 +31628,7 @@ const PeerResolveStrategy = enum {
         // Our merging should be order-independent. Thus, even though the union order is arbitrary,
         // by sorting the tags and switching first on the smaller, we have half as many cases to
         // worry about (since we avoid the duplicates).
-        const s0_is_a = @enumToInt(a) <= @enumToInt(b);
+        const s0_is_a = @intFromEnum(a) <= @intFromEnum(b);
         const s0 = if (s0_is_a) a else b;
         const s1 = if (s0_is_a) b else a;
 
@@ -33288,9 +33288,9 @@ fn semaBackingIntType(mod: *Module, struct_obj: *Module.Struct) CompileError!voi
 
     if (small.has_backing_int) {
         var extra_index: usize = extended.operand;
-        extra_index += @boolToInt(small.has_src_node);
-        extra_index += @boolToInt(small.has_fields_len);
-        extra_index += @boolToInt(small.has_decls_len);
+        extra_index += @intFromBool(small.has_src_node);
+        extra_index += @intFromBool(small.has_fields_len);
+        extra_index += @intFromBool(small.has_decls_len);
 
         const backing_int_body_len = zir.extra[extra_index];
         extra_index += 1;
@@ -33338,7 +33338,7 @@ fn semaBackingIntType(mod: *Module, struct_obj: *Module.Struct) CompileError!voi
         const backing_int_src: LazySrcLoc = .{ .node_offset_container_tag = 0 };
         const backing_int_ty = blk: {
             if (backing_int_body_len == 0) {
-                const backing_int_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
+                const backing_int_ref = @enumFromInt(Zir.Inst.Ref, zir.extra[extra_index]);
                 break :blk try sema.resolveType(&block, backing_int_src, backing_int_ref);
             } else {
                 const body = zir.extra[extra_index..][0..backing_int_body_len];
@@ -34013,7 +34013,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void
     var extra_index: usize = extended.operand;
 
     const src = LazySrcLoc.nodeOffset(0);
-    extra_index += @boolToInt(small.has_src_node);
+    extra_index += @intFromBool(small.has_src_node);
 
     const fields_len = if (small.has_fields_len) blk: {
         const fields_len = zir.extra[extra_index];
@@ -34140,7 +34140,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void
             if (has_type_body) {
                 fields[field_i].type_body_len = zir.extra[extra_index];
             } else {
-                fields[field_i].type_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
+                fields[field_i].type_ref = @enumFromInt(Zir.Inst.Ref, zir.extra[extra_index]);
             }
             extra_index += 1;
 
@@ -34364,10 +34364,10 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
     var extra_index: usize = extended.operand;
 
     const src = LazySrcLoc.nodeOffset(0);
-    extra_index += @boolToInt(small.has_src_node);
+    extra_index += @intFromBool(small.has_src_node);
 
     const tag_type_ref: Zir.Inst.Ref = if (small.has_tag_type) blk: {
-        const ty_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
+        const ty_ref = @enumFromInt(Zir.Inst.Ref, zir.extra[extra_index]);
         extra_index += 1;
         break :blk ty_ref;
     } else .none;
@@ -34532,19 +34532,19 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
         extra_index += 1;
 
         const field_type_ref: Zir.Inst.Ref = if (has_type) blk: {
-            const field_type_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
+            const field_type_ref = @enumFromInt(Zir.Inst.Ref, zir.extra[extra_index]);
             extra_index += 1;
             break :blk field_type_ref;
         } else .none;
 
         const align_ref: Zir.Inst.Ref = if (has_align) blk: {
-            const align_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
+            const align_ref = @enumFromInt(Zir.Inst.Ref, zir.extra[extra_index]);
             extra_index += 1;
             break :blk align_ref;
         } else .none;
 
         const tag_ref: Air.Inst.Ref = if (has_tag) blk: {
-            const tag_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
+            const tag_ref = @enumFromInt(Zir.Inst.Ref, zir.extra[extra_index]);
             extra_index += 1;
             break :blk try sema.resolveInst(tag_ref);
         } else .none;
@@ -34955,7 +34955,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {
 
             inline .array_type, .vector_type => |seq_type, seq_tag| {
                 const has_sentinel = seq_tag == .array_type and seq_type.sentinel != .none;
-                if (seq_type.len + @boolToInt(has_sentinel) == 0) return (try mod.intern(.{ .aggregate = .{
+                if (seq_type.len + @intFromBool(has_sentinel) == 0) return (try mod.intern(.{ .aggregate = .{
                     .ty = ty.toIntern(),
                     .storage = .{ .elems = &.{} },
                 } })).toValue();
@@ -35177,8 +35177,8 @@ pub fn getTmpAir(sema: Sema) Air {
 }
 
 pub fn addType(sema: *Sema, ty: Type) !Air.Inst.Ref {
-    if (@enumToInt(ty.toIntern()) < Air.ref_start_index)
-        return @intToEnum(Air.Inst.Ref, @enumToInt(ty.toIntern()));
+    if (@intFromEnum(ty.toIntern()) < Air.ref_start_index)
+        return @enumFromInt(Air.Inst.Ref, @intFromEnum(ty.toIntern()));
     try sema.air_instructions.append(sema.gpa, .{
         .tag = .interned,
         .data = .{ .interned = ty.toIntern() },
@@ -35209,8 +35209,8 @@ pub fn addConstant(sema: *Sema, ty: Type, val: Value) SemaError!Air.Inst.Ref {
             });
         }
     }
-    if (@enumToInt(val.toIntern()) < Air.ref_start_index)
-        return @intToEnum(Air.Inst.Ref, @enumToInt(val.toIntern()));
+    if (@intFromEnum(val.toIntern()) < Air.ref_start_index)
+        return @enumFromInt(Air.Inst.Ref, @intFromEnum(val.toIntern()));
     try sema.air_instructions.append(gpa, .{
         .tag = .interned,
         .data = .{ .interned = val.toIntern() },
@@ -35230,9 +35230,9 @@ pub fn addExtraAssumeCapacity(sema: *Sema, extra: anytype) u32 {
     inline for (fields) |field| {
         sema.air_extra.appendAssumeCapacity(switch (field.type) {
             u32 => @field(extra, field.name),
-            Air.Inst.Ref => @enumToInt(@field(extra, field.name)),
+            Air.Inst.Ref => @intFromEnum(@field(extra, field.name)),
             i32 => @bitCast(u32, @field(extra, field.name)),
-            InternPool.Index => @enumToInt(@field(extra, field.name)),
+            InternPool.Index => @intFromEnum(@field(extra, field.name)),
             else => @compileError("bad field type: " ++ @typeName(field.type)),
         });
     }
@@ -36001,12 +36001,12 @@ fn intSubWithOverflowScalar(
     const overflowed = result_bigint.subWrap(lhs_bigint, rhs_bigint, info.signedness, info.bits);
     const wrapped_result = try mod.intValue_big(ty, result_bigint.toConst());
     return Value.OverflowArithmeticResult{
-        .overflow_bit = try mod.intValue(Type.u1, @boolToInt(overflowed)),
+        .overflow_bit = try mod.intValue(Type.u1, @intFromBool(overflowed)),
         .wrapped_result = wrapped_result,
     };
 }
 
-fn floatToInt(
+fn intFromFloat(
     sema: *Sema,
     block: *Block,
     src: LazySrcLoc,
@@ -36021,14 +36021,14 @@ fn floatToInt(
         const scalar_ty = int_ty.scalarType(mod);
         for (result_data, 0..) |*scalar, i| {
             const elem_val = try val.elemValue(sema.mod, i);
-            scalar.* = try (try sema.floatToIntScalar(block, src, elem_val, elem_ty, int_ty.scalarType(mod))).intern(scalar_ty, mod);
+            scalar.* = try (try sema.intFromFloatScalar(block, src, elem_val, elem_ty, int_ty.scalarType(mod))).intern(scalar_ty, mod);
         }
         return (try mod.intern(.{ .aggregate = .{
             .ty = int_ty.toIntern(),
             .storage = .{ .elems = result_data },
         } })).toValue();
     }
-    return sema.floatToIntScalar(block, src, val, float_ty, int_ty);
+    return sema.intFromFloatScalar(block, src, val, float_ty, int_ty);
 }
 
 // float is expected to be finite and non-NaN
@@ -36056,7 +36056,7 @@ fn float128IntPartToBigInt(
     return rational.p;
 }
 
-fn floatToIntScalar(
+fn intFromFloatScalar(
     sema: *Sema,
     block: *Block,
     src: LazySrcLoc,
@@ -36123,21 +36123,21 @@ fn intFitsInType(
                     return big_int.fitsInTwosComp(info.signedness, info.bits);
                 },
                 .lazy_align => |lazy_ty| {
-                    const max_needed_bits = @as(u16, 16) + @boolToInt(info.signedness == .signed);
+                    const max_needed_bits = @as(u16, 16) + @intFromBool(info.signedness == .signed);
                     // If it is u16 or bigger we know the alignment fits without resolving it.
                     if (info.bits >= max_needed_bits) return true;
                     const x = try sema.typeAbiAlignment(lazy_ty.toType());
                     if (x == 0) return true;
-                    const actual_needed_bits = std.math.log2(x) + 1 + @boolToInt(info.signedness == .signed);
+                    const actual_needed_bits = std.math.log2(x) + 1 + @intFromBool(info.signedness == .signed);
                     return info.bits >= actual_needed_bits;
                 },
                 .lazy_size => |lazy_ty| {
-                    const max_needed_bits = @as(u16, 64) + @boolToInt(info.signedness == .signed);
+                    const max_needed_bits = @as(u16, 64) + @intFromBool(info.signedness == .signed);
                     // If it is u64 or bigger we know the size fits without resolving it.
                     if (info.bits >= max_needed_bits) return true;
                     const x = try sema.typeAbiSize(lazy_ty.toType());
                     if (x == 0) return true;
-                    const actual_needed_bits = std.math.log2(x) + 1 + @boolToInt(info.signedness == .signed);
+                    const actual_needed_bits = std.math.log2(x) + 1 + @intFromBool(info.signedness == .signed);
                     return info.bits >= actual_needed_bits;
                 },
             },
@@ -36146,7 +36146,7 @@ fn intFitsInType(
                 return switch (aggregate.storage) {
                     .bytes => |bytes| for (bytes, 0..) |byte, i| {
                         if (byte == 0) continue;
-                        const actual_needed_bits = std.math.log2(byte) + 1 + @boolToInt(info.signedness == .signed);
+                        const actual_needed_bits = std.math.log2(byte) + 1 + @intFromBool(info.signedness == .signed);
                         if (info.bits >= actual_needed_bits) continue;
                         if (vector_index) |vi| vi.* = i;
                         break false;
@@ -36242,7 +36242,7 @@ fn intAddWithOverflowScalar(
     const overflowed = result_bigint.addWrap(lhs_bigint, rhs_bigint, info.signedness, info.bits);
     const result = try mod.intValue_big(ty, result_bigint.toConst());
     return Value.OverflowArithmeticResult{
-        .overflow_bit = try mod.intValue(Type.u1, @boolToInt(overflowed)),
+        .overflow_bit = try mod.intValue(Type.u1, @intFromBool(overflowed)),
         .wrapped_result = result,
     };
 }
@@ -36352,7 +36352,7 @@ fn elemPtrType(sema: *Sema, ptr_ty: Type, offset: ?usize) !Type {
         break :blk .{
             .host_size = @intCast(u16, parent_ty.arrayLen(mod)),
             .alignment = @intCast(u16, parent_ty.abiAlignment(mod)),
-            .vector_index = if (offset) |some| @intToEnum(VI, some) else .runtime,
+            .vector_index = if (offset) |some| @enumFromInt(VI, some) else .runtime,
         };
     } else .{};
 
src/translate_c.zig
@@ -110,7 +110,7 @@ const Scope = struct {
             if (self.base.parent.?.id == .do_loop) {
                 // We reserve 1 extra statement if the parent is a do_loop. This is in case of
                 // do while, we want to put `if (cond) break;` at the end.
-                const alloc_len = self.statements.items.len + @boolToInt(self.base.parent.?.id == .do_loop);
+                const alloc_len = self.statements.items.len + @intFromBool(self.base.parent.?.id == .do_loop);
                 var stmts = try c.arena.alloc(Node, alloc_len);
                 stmts.len = self.statements.items.len;
                 @memcpy(stmts[0..self.statements.items.len], self.statements.items);
@@ -507,14 +507,14 @@ fn declVisitorNamesOnly(c: *Context, decl: *const clang.Decl) Error!void {
                     const enum_decl = enum_ty.getDecl();
                     // check if this decl is unnamed
                     if (@ptrCast(*const clang.NamedDecl, enum_decl).getName_bytes_begin()[0] != 0) return;
-                    break @ptrToInt(enum_decl.getCanonicalDecl());
+                    break @intFromPtr(enum_decl.getCanonicalDecl());
                 },
                 .Record => {
                     const record_ty = @ptrCast(*const clang.RecordType, child_ty);
                     const record_decl = record_ty.getDecl();
                     // check if this decl is unnamed
                     if (@ptrCast(*const clang.NamedDecl, record_decl).getName_bytes_begin()[0] != 0) return;
-                    break @ptrToInt(record_decl.getCanonicalDecl());
+                    break @intFromPtr(record_decl.getCanonicalDecl());
                 },
                 .Elaborated => {
                     const elaborated_ty = @ptrCast(*const clang.ElaboratedType, child_ty);
@@ -543,7 +543,7 @@ fn declVisitorNamesOnly(c: *Context, decl: *const clang.Decl) Error!void {
             }
             result.value_ptr.* = decl_name;
             // Put this typedef in the decl_table to avoid redefinitions.
-            try c.decl_table.putNoClobber(c.gpa, @ptrToInt(typedef_decl.getCanonicalDecl()), decl_name);
+            try c.decl_table.putNoClobber(c.gpa, @intFromPtr(typedef_decl.getCanonicalDecl()), decl_name);
             try c.typedefs.put(c.gpa, decl_name, {});
         }
     }
@@ -913,7 +913,7 @@ const builtin_typedef_map = std.ComptimeStringMap([]const u8, .{
 });
 
 fn transTypeDef(c: *Context, scope: *Scope, typedef_decl: *const clang.TypedefNameDecl) Error!void {
-    if (c.decl_table.get(@ptrToInt(typedef_decl.getCanonicalDecl()))) |_|
+    if (c.decl_table.get(@intFromPtr(typedef_decl.getCanonicalDecl()))) |_|
         return; // Avoid processing this decl twice
     const toplevel = scope.id == .root;
     const bs: *Scope.Block = if (!toplevel) try scope.findBlockScope(c) else undefined;
@@ -922,10 +922,10 @@ fn transTypeDef(c: *Context, scope: *Scope, typedef_decl: *const clang.TypedefNa
     try c.typedefs.put(c.gpa, name, {});
 
     if (builtin_typedef_map.get(name)) |builtin| {
-        return c.decl_table.putNoClobber(c.gpa, @ptrToInt(typedef_decl.getCanonicalDecl()), builtin);
+        return c.decl_table.putNoClobber(c.gpa, @intFromPtr(typedef_decl.getCanonicalDecl()), builtin);
     }
     if (!toplevel) name = try bs.makeMangledName(c, name);
-    try c.decl_table.putNoClobber(c.gpa, @ptrToInt(typedef_decl.getCanonicalDecl()), name);
+    try c.decl_table.putNoClobber(c.gpa, @intFromPtr(typedef_decl.getCanonicalDecl()), name);
 
     const child_qt = typedef_decl.getUnderlyingType();
     const typedef_loc = typedef_decl.getLocation();
@@ -938,7 +938,7 @@ fn transTypeDef(c: *Context, scope: *Scope, typedef_decl: *const clang.TypedefNa
 
     const payload = try c.arena.create(ast.Payload.SimpleVarDecl);
     payload.* = .{
-        .base = .{ .tag = ([2]Tag{ .var_simple, .pub_var_simple })[@boolToInt(toplevel)] },
+        .base = .{ .tag = ([2]Tag{ .var_simple, .pub_var_simple })[@intFromBool(toplevel)] },
         .data = .{
             .name = name,
             .init = init_node,
@@ -1063,7 +1063,7 @@ fn hasFlexibleArrayField(c: *Context, record_def: *const clang.RecordDecl) bool
 }
 
 fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordDecl) Error!void {
-    if (c.decl_table.get(@ptrToInt(record_decl.getCanonicalDecl()))) |_|
+    if (c.decl_table.get(@intFromPtr(record_decl.getCanonicalDecl()))) |_|
         return; // Avoid processing this decl twice
     const record_loc = record_decl.getLocation();
     const toplevel = scope.id == .root;
@@ -1079,13 +1079,13 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
     } else if (record_decl.isStruct()) {
         container_kind_name = "struct";
     } else {
-        try c.decl_table.putNoClobber(c.gpa, @ptrToInt(record_decl.getCanonicalDecl()), bare_name);
+        try c.decl_table.putNoClobber(c.gpa, @intFromPtr(record_decl.getCanonicalDecl()), bare_name);
         return failDecl(c, record_loc, bare_name, "record {s} is not a struct or union", .{bare_name});
     }
 
     var is_unnamed = false;
     var name = bare_name;
-    if (c.unnamed_typedefs.get(@ptrToInt(record_decl.getCanonicalDecl()))) |typedef_name| {
+    if (c.unnamed_typedefs.get(@intFromPtr(record_decl.getCanonicalDecl()))) |typedef_name| {
         bare_name = typedef_name;
         name = typedef_name;
     } else {
@@ -1098,12 +1098,12 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
         name = try std.fmt.allocPrint(c.arena, "{s}_{s}", .{ container_kind_name, bare_name });
     }
     if (!toplevel) name = try bs.makeMangledName(c, name);
-    try c.decl_table.putNoClobber(c.gpa, @ptrToInt(record_decl.getCanonicalDecl()), name);
+    try c.decl_table.putNoClobber(c.gpa, @intFromPtr(record_decl.getCanonicalDecl()), name);
 
     const is_pub = toplevel and !is_unnamed;
     const init_node = blk: {
         const record_def = record_decl.getDefinition() orelse {
-            try c.opaque_demotes.put(c.gpa, @ptrToInt(record_decl.getCanonicalDecl()), {});
+            try c.opaque_demotes.put(c.gpa, @intFromPtr(record_decl.getCanonicalDecl()), {});
             break :blk Tag.opaque_literal.init();
         };
 
@@ -1126,7 +1126,7 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
             const field_qt = field_decl.getType();
 
             if (field_decl.isBitField()) {
-                try c.opaque_demotes.put(c.gpa, @ptrToInt(record_decl.getCanonicalDecl()), {});
+                try c.opaque_demotes.put(c.gpa, @intFromPtr(record_decl.getCanonicalDecl()), {});
                 try warn(c, scope, field_loc, "{s} demoted to opaque type - has bitfield", .{container_kind_name});
                 break :blk Tag.opaque_literal.init();
             }
@@ -1142,7 +1142,7 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
             if (isFlexibleArrayFieldDecl(c, field_decl)) {
                 const flexible_array_fn = buildFlexibleArrayFn(c, scope, layout, field_name, field_decl) catch |err| switch (err) {
                     error.UnsupportedType => {
-                        try c.opaque_demotes.put(c.gpa, @ptrToInt(record_decl.getCanonicalDecl()), {});
+                        try c.opaque_demotes.put(c.gpa, @intFromPtr(record_decl.getCanonicalDecl()), {});
                         try warn(c, scope, record_loc, "{s} demoted to opaque type - unable to translate type of flexible array field {s}", .{ container_kind_name, field_name });
                         break :blk Tag.opaque_literal.init();
                     },
@@ -1153,7 +1153,7 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
             }
             const field_type = transQualType(c, scope, field_qt, field_loc) catch |err| switch (err) {
                 error.UnsupportedType => {
-                    try c.opaque_demotes.put(c.gpa, @ptrToInt(record_decl.getCanonicalDecl()), {});
+                    try c.opaque_demotes.put(c.gpa, @intFromPtr(record_decl.getCanonicalDecl()), {});
                     try warn(c, scope, record_loc, "{s} demoted to opaque type - unable to translate type of field {s}", .{ container_kind_name, field_name });
                     break :blk Tag.opaque_literal.init();
                 },
@@ -1166,7 +1166,7 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
                 ClangAlignment.forField(c, field_decl, record_def).zigAlignment();
 
             if (is_anon) {
-                try c.decl_table.putNoClobber(c.gpa, @ptrToInt(field_decl.getCanonicalDecl()), field_name);
+                try c.decl_table.putNoClobber(c.gpa, @intFromPtr(field_decl.getCanonicalDecl()), field_name);
             }
 
             try fields.append(.{
@@ -1178,7 +1178,7 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
 
         const record_payload = try c.arena.create(ast.Payload.Record);
         record_payload.* = .{
-            .base = .{ .tag = ([2]Tag{ .@"struct", .@"union" })[@boolToInt(is_union)] },
+            .base = .{ .tag = ([2]Tag{ .@"struct", .@"union" })[@intFromBool(is_union)] },
             .data = .{
                 .layout = .@"extern",
                 .fields = try c.arena.dupe(ast.Payload.Record.Field, fields.items),
@@ -1191,7 +1191,7 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
 
     const payload = try c.arena.create(ast.Payload.SimpleVarDecl);
     payload.* = .{
-        .base = .{ .tag = ([2]Tag{ .var_simple, .pub_var_simple })[@boolToInt(is_pub)] },
+        .base = .{ .tag = ([2]Tag{ .var_simple, .pub_var_simple })[@intFromBool(is_pub)] },
         .data = .{
             .name = name,
             .init = init_node,
@@ -1211,7 +1211,7 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
 }
 
 fn transEnumDecl(c: *Context, scope: *Scope, enum_decl: *const clang.EnumDecl) Error!void {
-    if (c.decl_table.get(@ptrToInt(enum_decl.getCanonicalDecl()))) |_|
+    if (c.decl_table.get(@intFromPtr(enum_decl.getCanonicalDecl()))) |_|
         return; // Avoid processing this decl twice
     const enum_loc = enum_decl.getLocation();
     const toplevel = scope.id == .root;
@@ -1220,7 +1220,7 @@ fn transEnumDecl(c: *Context, scope: *Scope, enum_decl: *const clang.EnumDecl) E
     var is_unnamed = false;
     var bare_name: []const u8 = try c.str(@ptrCast(*const clang.NamedDecl, enum_decl).getName_bytes_begin());
     var name = bare_name;
-    if (c.unnamed_typedefs.get(@ptrToInt(enum_decl.getCanonicalDecl()))) |typedef_name| {
+    if (c.unnamed_typedefs.get(@intFromPtr(enum_decl.getCanonicalDecl()))) |typedef_name| {
         bare_name = typedef_name;
         name = typedef_name;
     } else {
@@ -1231,7 +1231,7 @@ fn transEnumDecl(c: *Context, scope: *Scope, enum_decl: *const clang.EnumDecl) E
         name = try std.fmt.allocPrint(c.arena, "enum_{s}", .{bare_name});
     }
     if (!toplevel) name = try bs.makeMangledName(c, name);
-    try c.decl_table.putNoClobber(c.gpa, @ptrToInt(enum_decl.getCanonicalDecl()), name);
+    try c.decl_table.putNoClobber(c.gpa, @intFromPtr(enum_decl.getCanonicalDecl()), name);
 
     const enum_type_node = if (enum_decl.getDefinition()) |enum_def| blk: {
         var it = enum_def.enumerator_begin();
@@ -1280,14 +1280,14 @@ fn transEnumDecl(c: *Context, scope: *Scope, enum_decl: *const clang.EnumDecl) E
         else
             try Tag.type.create(c.arena, "c_int");
     } else blk: {
-        try c.opaque_demotes.put(c.gpa, @ptrToInt(enum_decl.getCanonicalDecl()), {});
+        try c.opaque_demotes.put(c.gpa, @intFromPtr(enum_decl.getCanonicalDecl()), {});
         break :blk Tag.opaque_literal.init();
     };
 
     const is_pub = toplevel and !is_unnamed;
     const payload = try c.arena.create(ast.Payload.SimpleVarDecl);
     payload.* = .{
-        .base = .{ .tag = ([2]Tag{ .var_simple, .pub_var_simple })[@boolToInt(is_pub)] },
+        .base = .{ .tag = ([2]Tag{ .var_simple, .pub_var_simple })[@intFromBool(is_pub)] },
         .data = .{
             .init = enum_type_node,
             .name = name,
@@ -1536,7 +1536,7 @@ fn transSimpleOffsetOfExpr(c: *Context, expr: *const clang.OffsetOfExpr) TransEr
     if (component.getKind() == .Field) {
         const field_decl = component.getField();
         if (field_decl.getParent()) |record_decl| {
-            if (c.decl_table.get(@ptrToInt(record_decl.getCanonicalDecl()))) |type_name| {
+            if (c.decl_table.get(@intFromPtr(record_decl.getCanonicalDecl()))) |type_name| {
                 const type_node = try Tag.type.create(c.arena, type_name);
 
                 var raw_field_name = try c.str(@ptrCast(*const clang.NamedDecl, field_decl).getName_bytes_begin());
@@ -1768,7 +1768,7 @@ fn transBinaryOperator(
 
     const infixOpNode = try transCreateNodeInfixOp(c, op_id, lhs, rhs, result_used);
     if (isPointerDiffExpr) {
-        // @divExact(@bitCast(<platform-ptrdiff_t>, @ptrToInt(lhs) -% @ptrToInt(rhs)), @sizeOf(<lhs target type>))
+        // @divExact(@bitCast(<platform-ptrdiff_t>, @intFromPtr(lhs) -% @intFromPtr(rhs)), @sizeOf(<lhs target type>))
         const ptrdiff_type = try transQualTypeIntWidthOf(c, qt, true);
 
         // C standard requires that pointer subtraction operands are of the same type,
@@ -2138,7 +2138,7 @@ fn transBoolExpr(
             return fail(c, error.UnsupportedTranslation, expr.getBeginLoc(), "invalid integer literal", .{});
         }
         const is_zero = signum == 0;
-        return Node{ .tag_if_small_enough = @enumToInt(([2]Tag{ .true_literal, .false_literal })[@boolToInt(is_zero)]) };
+        return Node{ .tag_if_small_enough = @intFromEnum(([2]Tag{ .true_literal, .false_literal })[@intFromBool(is_zero)]) };
     }
 
     var res = try transExpr(c, scope, expr, used);
@@ -2599,7 +2599,7 @@ fn literalFitsInType(c: *Context, expr: *const clang.Expr, qt: clang.QualType) b
     var width = qualTypeIntBitWidth(c, qt) catch 8;
     if (width == 0) width = 8; // Byte is the smallest type.
     const is_signed = cIsSignedInteger(qt);
-    const width_max_int = (@as(u64, 1) << math.lossyCast(u6, width - @boolToInt(is_signed))) - 1;
+    const width_max_int = (@as(u64, 1) << math.lossyCast(u6, width - @intFromBool(is_signed))) - 1;
 
     switch (@ptrCast(*const clang.Stmt, expr).getStmtClass()) {
         .CharacterLiteralClass => {
@@ -2664,7 +2664,7 @@ fn transInitListExprRecord(
         //     .field_name = expr
         var raw_name = try c.str(@ptrCast(*const clang.NamedDecl, field_decl).getName_bytes_begin());
         if (field_decl.isAnonymousStructOrUnion()) {
-            const name = c.decl_table.get(@ptrToInt(field_decl.getCanonicalDecl())).?;
+            const name = c.decl_table.get(@intFromPtr(field_decl.getCanonicalDecl())).?;
             raw_name = try c.arena.dupe(u8, name);
         }
 
@@ -3442,7 +3442,7 @@ fn transMemberExpr(c: *Context, scope: *Scope, stmt: *const clang.MemberExpr, re
         if (decl_kind == .Field) {
             const field_decl = @ptrCast(*const clang.FieldDecl, member_decl);
             if (field_decl.isAnonymousStructOrUnion()) {
-                const name = c.decl_table.get(@ptrToInt(field_decl.getCanonicalDecl())).?;
+                const name = c.decl_table.get(@intFromPtr(field_decl.getCanonicalDecl())).?;
                 break :blk try c.arena.dupe(u8, name);
             }
         }
@@ -4026,7 +4026,7 @@ fn transCreateCompoundAssign(
     return block_scope.complete(c);
 }
 
-// Casting away const or volatile requires us to use @intToPtr
+// Casting away const or volatile requires us to use @ptrFromInt
 fn removeCVQualifiers(c: *Context, dst_type_node: Node, expr: Node) Error!Node {
     const int_from_ptr = try Tag.int_from_ptr.create(c.arena, expr);
     return Tag.ptr_from_int.create(c.arena, .{ .lhs = dst_type_node, .rhs = int_from_ptr });
@@ -4835,7 +4835,7 @@ fn transType(c: *Context, scope: *Scope, ty: *const clang.Type, source_loc: clan
                 if (builtin_typedef_map.get(decl_name)) |builtin| return Tag.type.create(c.arena, builtin);
             }
             try transTypeDef(c, trans_scope, typedef_decl);
-            const name = c.decl_table.get(@ptrToInt(typedef_decl.getCanonicalDecl())).?;
+            const name = c.decl_table.get(@intFromPtr(typedef_decl.getCanonicalDecl())).?;
             return Tag.identifier.create(c.arena, name);
         },
         .Record => {
@@ -4848,7 +4848,7 @@ fn transType(c: *Context, scope: *Scope, ty: *const clang.Type, source_loc: clan
                 if (c.global_names.get(decl_name)) |_| trans_scope = &c.global_scope.base;
             }
             try transRecordDecl(c, trans_scope, record_decl);
-            const name = c.decl_table.get(@ptrToInt(record_decl.getCanonicalDecl())).?;
+            const name = c.decl_table.get(@intFromPtr(record_decl.getCanonicalDecl())).?;
             return Tag.identifier.create(c.arena, name);
         },
         .Enum => {
@@ -4861,7 +4861,7 @@ fn transType(c: *Context, scope: *Scope, ty: *const clang.Type, source_loc: clan
                 if (c.global_names.get(decl_name)) |_| trans_scope = &c.global_scope.base;
             }
             try transEnumDecl(c, trans_scope, enum_decl);
-            const name = c.decl_table.get(@ptrToInt(enum_decl.getCanonicalDecl())).?;
+            const name = c.decl_table.get(@intFromPtr(enum_decl.getCanonicalDecl())).?;
             return Tag.identifier.create(c.arena, name);
         },
         .Elaborated => {
@@ -4928,7 +4928,7 @@ fn qualTypeWasDemotedToOpaque(c: *Context, qt: clang.QualType) bool {
             const record_ty = @ptrCast(*const clang.RecordType, ty);
 
             const record_decl = record_ty.getDecl();
-            const canonical = @ptrToInt(record_decl.getCanonicalDecl());
+            const canonical = @intFromPtr(record_decl.getCanonicalDecl());
             if (c.opaque_demotes.contains(canonical)) return true;
 
             // check all childern for opaque types.
@@ -4944,7 +4944,7 @@ fn qualTypeWasDemotedToOpaque(c: *Context, qt: clang.QualType) bool {
             const enum_ty = @ptrCast(*const clang.EnumType, ty);
 
             const enum_decl = enum_ty.getDecl();
-            const canonical = @ptrToInt(enum_decl.getCanonicalDecl());
+            const canonical = @intFromPtr(enum_decl.getCanonicalDecl());
             return c.opaque_demotes.contains(canonical);
         },
         .Elaborated => {
@@ -5533,7 +5533,7 @@ fn getMacroText(unit: *const clang.ASTUnit, c: *const Context, macro: *const cla
 
     const begin_c = c.source_manager.getCharacterData(begin_loc);
     const end_c = c.source_manager.getCharacterData(end_loc);
-    const slice_len = @ptrToInt(end_c) - @ptrToInt(begin_c);
+    const slice_len = @intFromPtr(end_c) - @intFromPtr(begin_c);
     return begin_c[0..slice_len];
 }
 
@@ -6087,7 +6087,7 @@ fn parseCPrimaryExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
     return node;
 }
 
-fn macroBoolToInt(c: *Context, node: Node) !Node {
+fn macroIntFromBool(c: *Context, node: Node) !Node {
     if (!isBoolRes(node)) {
         return node;
     }
@@ -6141,8 +6141,8 @@ fn parseCAndExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
 fn parseCBitOrExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
     var node = try parseCBitXorExpr(c, m, scope);
     while (m.next().? == .Pipe) {
-        const lhs = try macroBoolToInt(c, node);
-        const rhs = try macroBoolToInt(c, try parseCBitXorExpr(c, m, scope));
+        const lhs = try macroIntFromBool(c, node);
+        const rhs = try macroIntFromBool(c, try parseCBitXorExpr(c, m, scope));
         node = try Tag.bit_or.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
     }
     m.i -= 1;
@@ -6152,8 +6152,8 @@ fn parseCBitOrExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
 fn parseCBitXorExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
     var node = try parseCBitAndExpr(c, m, scope);
     while (m.next().? == .Caret) {
-        const lhs = try macroBoolToInt(c, node);
-        const rhs = try macroBoolToInt(c, try parseCBitAndExpr(c, m, scope));
+        const lhs = try macroIntFromBool(c, node);
+        const rhs = try macroIntFromBool(c, try parseCBitAndExpr(c, m, scope));
         node = try Tag.bit_xor.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
     }
     m.i -= 1;
@@ -6163,8 +6163,8 @@ fn parseCBitXorExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
 fn parseCBitAndExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
     var node = try parseCEqExpr(c, m, scope);
     while (m.next().? == .Ampersand) {
-        const lhs = try macroBoolToInt(c, node);
-        const rhs = try macroBoolToInt(c, try parseCEqExpr(c, m, scope));
+        const lhs = try macroIntFromBool(c, node);
+        const rhs = try macroIntFromBool(c, try parseCEqExpr(c, m, scope));
         node = try Tag.bit_and.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
     }
     m.i -= 1;
@@ -6177,14 +6177,14 @@ fn parseCEqExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
         switch (m.peek().?) {
             .BangEqual => {
                 _ = m.next();
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCRelExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCRelExpr(c, m, scope));
                 node = try Tag.not_equal.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             .EqualEqual => {
                 _ = m.next();
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCRelExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCRelExpr(c, m, scope));
                 node = try Tag.equal.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             else => return node,
@@ -6198,26 +6198,26 @@ fn parseCRelExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
         switch (m.peek().?) {
             .AngleBracketRight => {
                 _ = m.next();
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCShiftExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCShiftExpr(c, m, scope));
                 node = try Tag.greater_than.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             .AngleBracketRightEqual => {
                 _ = m.next();
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCShiftExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCShiftExpr(c, m, scope));
                 node = try Tag.greater_than_equal.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             .AngleBracketLeft => {
                 _ = m.next();
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCShiftExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCShiftExpr(c, m, scope));
                 node = try Tag.less_than.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             .AngleBracketLeftEqual => {
                 _ = m.next();
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCShiftExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCShiftExpr(c, m, scope));
                 node = try Tag.less_than_equal.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             else => return node,
@@ -6231,14 +6231,14 @@ fn parseCShiftExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
         switch (m.peek().?) {
             .AngleBracketAngleBracketLeft => {
                 _ = m.next();
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCAddSubExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCAddSubExpr(c, m, scope));
                 node = try Tag.shl.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             .AngleBracketAngleBracketRight => {
                 _ = m.next();
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCAddSubExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCAddSubExpr(c, m, scope));
                 node = try Tag.shr.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             else => return node,
@@ -6252,14 +6252,14 @@ fn parseCAddSubExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
         switch (m.peek().?) {
             .Plus => {
                 _ = m.next();
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCMulExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCMulExpr(c, m, scope));
                 node = try Tag.add.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             .Minus => {
                 _ = m.next();
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCMulExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCMulExpr(c, m, scope));
                 node = try Tag.sub.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             else => return node,
@@ -6272,18 +6272,18 @@ fn parseCMulExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
     while (true) {
         switch (m.next().?) {
             .Asterisk => {
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCCastExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCCastExpr(c, m, scope));
                 node = try Tag.mul.create(c.arena, .{ .lhs = lhs, .rhs = rhs });
             },
             .Slash => {
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCCastExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCCastExpr(c, m, scope));
                 node = try Tag.macro_arithmetic.create(c.arena, .{ .op = .div, .lhs = lhs, .rhs = rhs });
             },
             .Percent => {
-                const lhs = try macroBoolToInt(c, node);
-                const rhs = try macroBoolToInt(c, try parseCCastExpr(c, m, scope));
+                const lhs = try macroIntFromBool(c, node);
+                const rhs = try macroIntFromBool(c, try parseCCastExpr(c, m, scope));
                 node = try Tag.macro_arithmetic.create(c.arena, .{ .op = .rem, .lhs = lhs, .rhs = rhs });
             },
             else => {
@@ -6512,7 +6512,7 @@ fn parseCPostfixExpr(c: *Context, m: *MacroCtx, scope: *Scope, type_name: ?Node)
                 node = try Tag.field_access.create(c.arena, .{ .lhs = deref, .field_name = m.slice() });
             },
             .LBracket => {
-                const index_val = try macroBoolToInt(c, try parseCExpr(c, m, scope));
+                const index_val = try macroIntFromBool(c, try parseCExpr(c, m, scope));
                 const index = try Tag.int_cast.create(c.arena, .{
                     .lhs = try Tag.type.create(c.arena, "usize"),
                     .rhs = index_val,
@@ -6610,12 +6610,12 @@ fn parseCUnaryExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!Node {
             return Tag.not.create(c.arena, operand);
         },
         .Minus => {
-            const operand = try macroBoolToInt(c, try parseCCastExpr(c, m, scope));
+            const operand = try macroIntFromBool(c, try parseCCastExpr(c, m, scope));
             return Tag.negate.create(c.arena, operand);
         },
         .Plus => return try parseCCastExpr(c, m, scope),
         .Tilde => {
-            const operand = try macroBoolToInt(c, try parseCCastExpr(c, m, scope));
+            const operand = try macroIntFromBool(c, try parseCCastExpr(c, m, scope));
             return Tag.bit_not.create(c.arena, operand);
         },
         .Asterisk => {
src/type.zig
@@ -130,7 +130,7 @@ pub const Type = struct {
         // The InternPool data structure hashes based on Key to make interned objects
         // unique. An Index can be treated simply as u32 value for the
         // purpose of Type/Value hashing and equality.
-        return std.hash.uint32(@enumToInt(ty.toIntern()));
+        return std.hash.uint32(@intFromEnum(ty.toIntern()));
     }
 
     pub fn format(ty: Type, comptime unused_fmt_string: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void {
@@ -227,7 +227,7 @@ pub const Type = struct {
                     if (info.vector_index == .runtime) {
                         try writer.writeAll(":?");
                     } else if (info.vector_index != .none) {
-                        try writer.print(":{d}", .{@enumToInt(info.vector_index)});
+                        try writer.print(":{d}", .{@intFromEnum(info.vector_index)});
                     }
                     try writer.writeAll(") ");
                 }
@@ -1227,7 +1227,7 @@ pub const Type = struct {
             if (have_tag) {
                 return abiAlignmentAdvanced(union_obj.tag_ty, mod, strat);
             } else {
-                return AbiAlignmentAdvanced{ .scalar = @boolToInt(union_obj.layout == .Extern) };
+                return AbiAlignmentAdvanced{ .scalar = @intFromBool(union_obj.layout == .Extern) };
             }
         }
 
@@ -1307,7 +1307,7 @@ pub const Type = struct {
                 .anyframe_type => return AbiSizeAdvanced{ .scalar = @divExact(target.ptrBitWidth(), 8) },
 
                 .array_type => |array_type| {
-                    const len = array_type.len + @boolToInt(array_type.sentinel != .none);
+                    const len = array_type.len + @intFromBool(array_type.sentinel != .none);
                     switch (try array_type.child.toType().abiSizeAdvanced(mod, strat)) {
                         .scalar => |elem_size| return .{ .scalar = len * elem_size },
                         .val => switch (strat) {
@@ -1630,7 +1630,7 @@ pub const Type = struct {
             .anyframe_type => return target.ptrBitWidth(),
 
             .array_type => |array_type| {
-                const len = array_type.len + @boolToInt(array_type.sentinel != .none);
+                const len = array_type.len + @intFromBool(array_type.sentinel != .none);
                 if (len == 0) return 0;
                 const elem_ty = array_type.child.toType();
                 const elem_size = @max(elem_ty.abiAlignment(mod), elem_ty.abiSize(mod));
@@ -2182,7 +2182,7 @@ pub const Type = struct {
     }
 
     pub fn arrayLenIncludingSentinel(ty: Type, mod: *const Module) u64 {
-        return ty.arrayLen(mod) + @boolToInt(ty.sentinel(mod) != null);
+        return ty.arrayLen(mod) + @intFromBool(ty.sentinel(mod) != null);
     }
 
     pub fn vectorLen(ty: Type, mod: *const Module) u32 {
@@ -2477,7 +2477,7 @@ pub const Type = struct {
 
                 inline .array_type, .vector_type => |seq_type, seq_tag| {
                     const has_sentinel = seq_tag == .array_type and seq_type.sentinel != .none;
-                    if (seq_type.len + @boolToInt(has_sentinel) == 0) return (try mod.intern(.{ .aggregate = .{
+                    if (seq_type.len + @intFromBool(has_sentinel) == 0) return (try mod.intern(.{ .aggregate = .{
                         .ty = ty.toIntern(),
                         .storage = .{ .elems = &.{} },
                     } })).toValue();
@@ -3540,7 +3540,7 @@ pub const Type = struct {
         if (max == 0) return 0;
         const base = std.math.log2(max);
         const upper = (@as(u64, 1) << @intCast(u6, base)) - 1;
-        return @intCast(u16, base + @boolToInt(upper < max));
+        return @intCast(u16, base + @intFromBool(upper < max));
     }
 
     /// This is only used for comptime asserts. Bump this number when you make a change
src/TypedValue.zig
@@ -41,8 +41,8 @@ pub fn hash(tv: TypedValue, hasher: *std.hash.Wyhash, mod: *Module) void {
     return tv.val.hash(tv.ty, hasher, mod);
 }
 
-pub fn enumToInt(tv: TypedValue, mod: *Module) Allocator.Error!Value {
-    return tv.val.enumToInt(tv.ty, mod);
+pub fn intFromEnum(tv: TypedValue, mod: *Module) Allocator.Error!Value {
+    return tv.val.intFromEnum(tv.ty, mod);
 }
 
 const max_aggregate_items = 100;
@@ -240,7 +240,7 @@ pub fn print(
                     try writer.print(".{i}", .{enum_type.names[tag_index].fmt(ip)});
                     return;
                 }
-                try writer.writeAll("@intToEnum(");
+                try writer.writeAll("@enumFromInt(");
                 try print(.{
                     .ty = Type.type,
                     .val = enum_tag.ty.toValue(),
src/value.zig
@@ -112,7 +112,7 @@ pub const Value = struct {
             return self.castTag(T.base_tag);
         }
         inline for (@typeInfo(Tag).Enum.fields) |field| {
-            const t = @intToEnum(Tag, field.value);
+            const t = @enumFromInt(Tag, field.value);
             if (self.legacy.ptr_otherwise.tag == t) {
                 if (T == t.Type()) {
                     return @fieldParentPtr(T, "base", self.legacy.ptr_otherwise);
@@ -503,7 +503,7 @@ pub const Value = struct {
         return self.toIntern().toType();
     }
 
-    pub fn enumToInt(val: Value, ty: Type, mod: *Module) Allocator.Error!Value {
+    pub fn intFromEnum(val: Value, ty: Type, mod: *Module) Allocator.Error!Value {
         const ip = &mod.intern_pool;
         return switch (ip.indexToKey(ip.typeOf(val.toIntern()))) {
             // Assume it is already an integer and return it directly.
@@ -703,7 +703,7 @@ pub const Value = struct {
         switch (ty.zigTypeTag(mod)) {
             .Void => {},
             .Bool => {
-                buffer[0] = @boolToInt(val.toBool());
+                buffer[0] = @intFromBool(val.toBool());
             },
             .Int, .Enum => {
                 const int_info = ty.intInfo(mod);
@@ -836,7 +836,7 @@ pub const Value = struct {
                 const bits = ty.intInfo(mod).bits;
                 if (bits == 0) return;
 
-                switch (mod.intern_pool.indexToKey((try val.enumToInt(ty, mod)).toIntern()).int.storage) {
+                switch (mod.intern_pool.indexToKey((try val.intFromEnum(ty, mod)).toIntern()).int.storage) {
                     inline .u64, .i64 => |int| std.mem.writeVarPackedInt(buffer, bit_offset, bits, int, endian),
                     .big_int => |bigint| bigint.writePackedTwosComplement(buffer, bit_offset, bits, endian),
                     else => unreachable,
@@ -1170,10 +1170,10 @@ pub const Value = struct {
                     if (T == f80) {
                         @panic("TODO we can't lower this properly on non-x86 llvm backend yet");
                     }
-                    return @intToFloat(T, x);
+                    return @floatFromInt(T, x);
                 },
-                .lazy_align => |ty| @intToFloat(T, ty.toType().abiAlignment(mod)),
-                .lazy_size => |ty| @intToFloat(T, ty.toType().abiSize(mod)),
+                .lazy_align => |ty| @floatFromInt(T, ty.toType().abiAlignment(mod)),
+                .lazy_size => |ty| @floatFromInt(T, ty.toType().abiSize(mod)),
             },
             .float => |float| switch (float.storage) {
                 inline else => |x| @floatCast(T, x),
@@ -1191,7 +1191,7 @@ pub const Value = struct {
         var i: usize = limbs.len;
         while (i != 0) {
             i -= 1;
-            const limb: f128 = @intToFloat(f128, limbs[i]);
+            const limb: f128 = @floatFromInt(f128, limbs[i]);
             result = @mulAdd(f128, base, result, limb);
         }
         if (positive) {
@@ -1593,8 +1593,8 @@ pub const Value = struct {
                 return a_type.eql(b_type, mod);
             },
             .Enum => {
-                const a_val = try a.enumToInt(ty, mod);
-                const b_val = try b.enumToInt(ty, mod);
+                const a_val = try a.intFromEnum(ty, mod);
+                const b_val = try b.intFromEnum(ty, mod);
                 const int_ty = ty.intTagType(mod);
                 return eqlAdvanced(a_val, int_ty, b_val, int_ty, mod, opt_sema);
             },
@@ -2124,30 +2124,30 @@ pub const Value = struct {
         };
     }
 
-    pub fn intToFloat(val: Value, arena: Allocator, int_ty: Type, float_ty: Type, mod: *Module) !Value {
-        return intToFloatAdvanced(val, arena, int_ty, float_ty, mod, null) catch |err| switch (err) {
+    pub fn floatFromInt(val: Value, arena: Allocator, int_ty: Type, float_ty: Type, mod: *Module) !Value {
+        return floatFromIntAdvanced(val, arena, int_ty, float_ty, mod, null) catch |err| switch (err) {
             error.OutOfMemory => return error.OutOfMemory,
             else => unreachable,
         };
     }
 
-    pub fn intToFloatAdvanced(val: Value, arena: Allocator, int_ty: Type, float_ty: Type, mod: *Module, opt_sema: ?*Sema) !Value {
+    pub fn floatFromIntAdvanced(val: Value, arena: Allocator, int_ty: Type, float_ty: Type, mod: *Module, opt_sema: ?*Sema) !Value {
         if (int_ty.zigTypeTag(mod) == .Vector) {
             const result_data = try arena.alloc(InternPool.Index, int_ty.vectorLen(mod));
             const scalar_ty = float_ty.scalarType(mod);
             for (result_data, 0..) |*scalar, i| {
                 const elem_val = try val.elemValue(mod, i);
-                scalar.* = try (try intToFloatScalar(elem_val, scalar_ty, mod, opt_sema)).intern(scalar_ty, mod);
+                scalar.* = try (try floatFromIntScalar(elem_val, scalar_ty, mod, opt_sema)).intern(scalar_ty, mod);
             }
             return (try mod.intern(.{ .aggregate = .{
                 .ty = float_ty.toIntern(),
                 .storage = .{ .elems = result_data },
             } })).toValue();
         }
-        return intToFloatScalar(val, float_ty, mod, opt_sema);
+        return floatFromIntScalar(val, float_ty, mod, opt_sema);
     }
 
-    pub fn intToFloatScalar(val: Value, float_ty: Type, mod: *Module, opt_sema: ?*Sema) !Value {
+    pub fn floatFromIntScalar(val: Value, float_ty: Type, mod: *Module, opt_sema: ?*Sema) !Value {
         return switch (mod.intern_pool.indexToKey(val.toIntern())) {
             .undef => (try mod.intern(.{ .undef = float_ty.toIntern() })).toValue(),
             .int => |int| switch (int.storage) {
@@ -2155,30 +2155,30 @@ pub const Value = struct {
                     const float = bigIntToFloat(big_int.limbs, big_int.positive);
                     return mod.floatValue(float_ty, float);
                 },
-                inline .u64, .i64 => |x| intToFloatInner(x, float_ty, mod),
+                inline .u64, .i64 => |x| floatFromIntInner(x, float_ty, mod),
                 .lazy_align => |ty| if (opt_sema) |sema| {
-                    return intToFloatInner((try ty.toType().abiAlignmentAdvanced(mod, .{ .sema = sema })).scalar, float_ty, mod);
+                    return floatFromIntInner((try ty.toType().abiAlignmentAdvanced(mod, .{ .sema = sema })).scalar, float_ty, mod);
                 } else {
-                    return intToFloatInner(ty.toType().abiAlignment(mod), float_ty, mod);
+                    return floatFromIntInner(ty.toType().abiAlignment(mod), float_ty, mod);
                 },
                 .lazy_size => |ty| if (opt_sema) |sema| {
-                    return intToFloatInner((try ty.toType().abiSizeAdvanced(mod, .{ .sema = sema })).scalar, float_ty, mod);
+                    return floatFromIntInner((try ty.toType().abiSizeAdvanced(mod, .{ .sema = sema })).scalar, float_ty, mod);
                 } else {
-                    return intToFloatInner(ty.toType().abiSize(mod), float_ty, mod);
+                    return floatFromIntInner(ty.toType().abiSize(mod), float_ty, mod);
                 },
             },
             else => unreachable,
         };
     }
 
-    fn intToFloatInner(x: anytype, dest_ty: Type, mod: *Module) !Value {
+    fn floatFromIntInner(x: anytype, dest_ty: Type, mod: *Module) !Value {
         const target = mod.getTarget();
         const storage: InternPool.Key.Float.Storage = switch (dest_ty.floatBits(target)) {
-            16 => .{ .f16 = @intToFloat(f16, x) },
-            32 => .{ .f32 = @intToFloat(f32, x) },
-            64 => .{ .f64 = @intToFloat(f64, x) },
-            80 => .{ .f80 = @intToFloat(f80, x) },
-            128 => .{ .f128 = @intToFloat(f128, x) },
+            16 => .{ .f16 = @floatFromInt(f16, x) },
+            32 => .{ .f32 = @floatFromInt(f32, x) },
+            64 => .{ .f64 = @floatFromInt(f64, x) },
+            80 => .{ .f80 = @floatFromInt(f80, x) },
+            128 => .{ .f128 = @floatFromInt(f128, x) },
             else => unreachable,
         };
         return (try mod.intern(.{ .float = .{
@@ -2193,7 +2193,7 @@ pub const Value = struct {
         }
 
         const w_value = @fabs(scalar);
-        return @divFloor(@floatToInt(std.math.big.Limb, std.math.log2(w_value)), @typeInfo(std.math.big.Limb).Int.bits) + 1;
+        return @divFloor(@intFromFloat(std.math.big.Limb, std.math.log2(w_value)), @typeInfo(std.math.big.Limb).Int.bits) + 1;
     }
 
     pub const OverflowArithmeticResult = struct {
@@ -2364,7 +2364,7 @@ pub const Value = struct {
         }
 
         return OverflowArithmeticResult{
-            .overflow_bit = try mod.intValue(Type.u1, @boolToInt(overflowed)),
+            .overflow_bit = try mod.intValue(Type.u1, @intFromBool(overflowed)),
             .wrapped_result = try mod.intValue_big(ty, result_bigint.toConst()),
         };
     }
@@ -3177,7 +3177,7 @@ pub const Value = struct {
             result_bigint.truncate(result_bigint.toConst(), info.signedness, info.bits);
         }
         return OverflowArithmeticResult{
-            .overflow_bit = try mod.intValue(Type.u1, @boolToInt(overflowed)),
+            .overflow_bit = try mod.intValue(Type.u1, @intFromBool(overflowed)),
             .wrapped_result = try mod.intValue_big(ty, result_bigint.toConst()),
         };
     }
src/Zir.zig
@@ -74,7 +74,7 @@ pub fn extraData(code: Zir, comptime T: type, index: usize) struct { data: T, en
     inline for (fields) |field| {
         @field(result, field.name) = switch (field.type) {
             u32 => code.extra[i],
-            Inst.Ref => @intToEnum(Inst.Ref, code.extra[i]),
+            Inst.Ref => @enumFromInt(Inst.Ref, code.extra[i]),
             i32 => @bitCast(i32, code.extra[i]),
             Inst.Call.Flags => @bitCast(Inst.Call.Flags, code.extra[i]),
             Inst.BuiltinCall.Flags => @bitCast(Inst.BuiltinCall.Flags, code.extra[i]),
@@ -105,7 +105,7 @@ pub fn refSlice(code: Zir, start: usize, len: usize) []Inst.Ref {
 }
 
 pub fn hasCompileErrors(code: Zir) bool {
-    return code.extra[@enumToInt(ExtraIndex.compile_errors)] != 0;
+    return code.extra[@intFromEnum(ExtraIndex.compile_errors)] != 0;
 }
 
 pub fn deinit(code: *Zir, gpa: Allocator) void {
@@ -1934,7 +1934,7 @@ pub const Inst = struct {
         /// Implement builtin `@errToInt`.
         /// `operand` is payload index to `UnNode`.
         int_from_error,
-        /// Implement builtin `@intToError`.
+        /// Implement builtin `@errorFromInt`.
         /// `operand` is payload index to `UnNode`.
         error_from_int,
         /// Implement builtin `@Type`.
@@ -2005,93 +2005,93 @@ pub const Inst = struct {
     /// The tag type is specified so that it is safe to bitcast between `[]u32`
     /// and `[]Ref`.
     pub const Ref = enum(u32) {
-        u1_type = @enumToInt(InternPool.Index.u1_type),
-        u8_type = @enumToInt(InternPool.Index.u8_type),
-        i8_type = @enumToInt(InternPool.Index.i8_type),
-        u16_type = @enumToInt(InternPool.Index.u16_type),
-        i16_type = @enumToInt(InternPool.Index.i16_type),
-        u29_type = @enumToInt(InternPool.Index.u29_type),
-        u32_type = @enumToInt(InternPool.Index.u32_type),
-        i32_type = @enumToInt(InternPool.Index.i32_type),
-        u64_type = @enumToInt(InternPool.Index.u64_type),
-        i64_type = @enumToInt(InternPool.Index.i64_type),
-        u80_type = @enumToInt(InternPool.Index.u80_type),
-        u128_type = @enumToInt(InternPool.Index.u128_type),
-        i128_type = @enumToInt(InternPool.Index.i128_type),
-        usize_type = @enumToInt(InternPool.Index.usize_type),
-        isize_type = @enumToInt(InternPool.Index.isize_type),
-        c_char_type = @enumToInt(InternPool.Index.c_char_type),
-        c_short_type = @enumToInt(InternPool.Index.c_short_type),
-        c_ushort_type = @enumToInt(InternPool.Index.c_ushort_type),
-        c_int_type = @enumToInt(InternPool.Index.c_int_type),
-        c_uint_type = @enumToInt(InternPool.Index.c_uint_type),
-        c_long_type = @enumToInt(InternPool.Index.c_long_type),
-        c_ulong_type = @enumToInt(InternPool.Index.c_ulong_type),
-        c_longlong_type = @enumToInt(InternPool.Index.c_longlong_type),
-        c_ulonglong_type = @enumToInt(InternPool.Index.c_ulonglong_type),
-        c_longdouble_type = @enumToInt(InternPool.Index.c_longdouble_type),
-        f16_type = @enumToInt(InternPool.Index.f16_type),
-        f32_type = @enumToInt(InternPool.Index.f32_type),
-        f64_type = @enumToInt(InternPool.Index.f64_type),
-        f80_type = @enumToInt(InternPool.Index.f80_type),
-        f128_type = @enumToInt(InternPool.Index.f128_type),
-        anyopaque_type = @enumToInt(InternPool.Index.anyopaque_type),
-        bool_type = @enumToInt(InternPool.Index.bool_type),
-        void_type = @enumToInt(InternPool.Index.void_type),
-        type_type = @enumToInt(InternPool.Index.type_type),
-        anyerror_type = @enumToInt(InternPool.Index.anyerror_type),
-        comptime_int_type = @enumToInt(InternPool.Index.comptime_int_type),
-        comptime_float_type = @enumToInt(InternPool.Index.comptime_float_type),
-        noreturn_type = @enumToInt(InternPool.Index.noreturn_type),
-        anyframe_type = @enumToInt(InternPool.Index.anyframe_type),
-        null_type = @enumToInt(InternPool.Index.null_type),
-        undefined_type = @enumToInt(InternPool.Index.undefined_type),
-        enum_literal_type = @enumToInt(InternPool.Index.enum_literal_type),
-        atomic_order_type = @enumToInt(InternPool.Index.atomic_order_type),
-        atomic_rmw_op_type = @enumToInt(InternPool.Index.atomic_rmw_op_type),
-        calling_convention_type = @enumToInt(InternPool.Index.calling_convention_type),
-        address_space_type = @enumToInt(InternPool.Index.address_space_type),
-        float_mode_type = @enumToInt(InternPool.Index.float_mode_type),
-        reduce_op_type = @enumToInt(InternPool.Index.reduce_op_type),
-        call_modifier_type = @enumToInt(InternPool.Index.call_modifier_type),
-        prefetch_options_type = @enumToInt(InternPool.Index.prefetch_options_type),
-        export_options_type = @enumToInt(InternPool.Index.export_options_type),
-        extern_options_type = @enumToInt(InternPool.Index.extern_options_type),
-        type_info_type = @enumToInt(InternPool.Index.type_info_type),
-        manyptr_u8_type = @enumToInt(InternPool.Index.manyptr_u8_type),
-        manyptr_const_u8_type = @enumToInt(InternPool.Index.manyptr_const_u8_type),
-        manyptr_const_u8_sentinel_0_type = @enumToInt(InternPool.Index.manyptr_const_u8_sentinel_0_type),
-        single_const_pointer_to_comptime_int_type = @enumToInt(InternPool.Index.single_const_pointer_to_comptime_int_type),
-        slice_const_u8_type = @enumToInt(InternPool.Index.slice_const_u8_type),
-        slice_const_u8_sentinel_0_type = @enumToInt(InternPool.Index.slice_const_u8_sentinel_0_type),
-        anyerror_void_error_union_type = @enumToInt(InternPool.Index.anyerror_void_error_union_type),
-        generic_poison_type = @enumToInt(InternPool.Index.generic_poison_type),
-        empty_struct_type = @enumToInt(InternPool.Index.empty_struct_type),
-        undef = @enumToInt(InternPool.Index.undef),
-        zero = @enumToInt(InternPool.Index.zero),
-        zero_usize = @enumToInt(InternPool.Index.zero_usize),
-        zero_u8 = @enumToInt(InternPool.Index.zero_u8),
-        one = @enumToInt(InternPool.Index.one),
-        one_usize = @enumToInt(InternPool.Index.one_usize),
-        one_u8 = @enumToInt(InternPool.Index.one_u8),
-        four_u8 = @enumToInt(InternPool.Index.four_u8),
-        negative_one = @enumToInt(InternPool.Index.negative_one),
-        calling_convention_c = @enumToInt(InternPool.Index.calling_convention_c),
-        calling_convention_inline = @enumToInt(InternPool.Index.calling_convention_inline),
-        void_value = @enumToInt(InternPool.Index.void_value),
-        unreachable_value = @enumToInt(InternPool.Index.unreachable_value),
-        null_value = @enumToInt(InternPool.Index.null_value),
-        bool_true = @enumToInt(InternPool.Index.bool_true),
-        bool_false = @enumToInt(InternPool.Index.bool_false),
-        empty_struct = @enumToInt(InternPool.Index.empty_struct),
-        generic_poison = @enumToInt(InternPool.Index.generic_poison),
+        u1_type = @intFromEnum(InternPool.Index.u1_type),
+        u8_type = @intFromEnum(InternPool.Index.u8_type),
+        i8_type = @intFromEnum(InternPool.Index.i8_type),
+        u16_type = @intFromEnum(InternPool.Index.u16_type),
+        i16_type = @intFromEnum(InternPool.Index.i16_type),
+        u29_type = @intFromEnum(InternPool.Index.u29_type),
+        u32_type = @intFromEnum(InternPool.Index.u32_type),
+        i32_type = @intFromEnum(InternPool.Index.i32_type),
+        u64_type = @intFromEnum(InternPool.Index.u64_type),
+        i64_type = @intFromEnum(InternPool.Index.i64_type),
+        u80_type = @intFromEnum(InternPool.Index.u80_type),
+        u128_type = @intFromEnum(InternPool.Index.u128_type),
+        i128_type = @intFromEnum(InternPool.Index.i128_type),
+        usize_type = @intFromEnum(InternPool.Index.usize_type),
+        isize_type = @intFromEnum(InternPool.Index.isize_type),
+        c_char_type = @intFromEnum(InternPool.Index.c_char_type),
+        c_short_type = @intFromEnum(InternPool.Index.c_short_type),
+        c_ushort_type = @intFromEnum(InternPool.Index.c_ushort_type),
+        c_int_type = @intFromEnum(InternPool.Index.c_int_type),
+        c_uint_type = @intFromEnum(InternPool.Index.c_uint_type),
+        c_long_type = @intFromEnum(InternPool.Index.c_long_type),
+        c_ulong_type = @intFromEnum(InternPool.Index.c_ulong_type),
+        c_longlong_type = @intFromEnum(InternPool.Index.c_longlong_type),
+        c_ulonglong_type = @intFromEnum(InternPool.Index.c_ulonglong_type),
+        c_longdouble_type = @intFromEnum(InternPool.Index.c_longdouble_type),
+        f16_type = @intFromEnum(InternPool.Index.f16_type),
+        f32_type = @intFromEnum(InternPool.Index.f32_type),
+        f64_type = @intFromEnum(InternPool.Index.f64_type),
+        f80_type = @intFromEnum(InternPool.Index.f80_type),
+        f128_type = @intFromEnum(InternPool.Index.f128_type),
+        anyopaque_type = @intFromEnum(InternPool.Index.anyopaque_type),
+        bool_type = @intFromEnum(InternPool.Index.bool_type),
+        void_type = @intFromEnum(InternPool.Index.void_type),
+        type_type = @intFromEnum(InternPool.Index.type_type),
+        anyerror_type = @intFromEnum(InternPool.Index.anyerror_type),
+        comptime_int_type = @intFromEnum(InternPool.Index.comptime_int_type),
+        comptime_float_type = @intFromEnum(InternPool.Index.comptime_float_type),
+        noreturn_type = @intFromEnum(InternPool.Index.noreturn_type),
+        anyframe_type = @intFromEnum(InternPool.Index.anyframe_type),
+        null_type = @intFromEnum(InternPool.Index.null_type),
+        undefined_type = @intFromEnum(InternPool.Index.undefined_type),
+        enum_literal_type = @intFromEnum(InternPool.Index.enum_literal_type),
+        atomic_order_type = @intFromEnum(InternPool.Index.atomic_order_type),
+        atomic_rmw_op_type = @intFromEnum(InternPool.Index.atomic_rmw_op_type),
+        calling_convention_type = @intFromEnum(InternPool.Index.calling_convention_type),
+        address_space_type = @intFromEnum(InternPool.Index.address_space_type),
+        float_mode_type = @intFromEnum(InternPool.Index.float_mode_type),
+        reduce_op_type = @intFromEnum(InternPool.Index.reduce_op_type),
+        call_modifier_type = @intFromEnum(InternPool.Index.call_modifier_type),
+        prefetch_options_type = @intFromEnum(InternPool.Index.prefetch_options_type),
+        export_options_type = @intFromEnum(InternPool.Index.export_options_type),
+        extern_options_type = @intFromEnum(InternPool.Index.extern_options_type),
+        type_info_type = @intFromEnum(InternPool.Index.type_info_type),
+        manyptr_u8_type = @intFromEnum(InternPool.Index.manyptr_u8_type),
+        manyptr_const_u8_type = @intFromEnum(InternPool.Index.manyptr_const_u8_type),
+        manyptr_const_u8_sentinel_0_type = @intFromEnum(InternPool.Index.manyptr_const_u8_sentinel_0_type),
+        single_const_pointer_to_comptime_int_type = @intFromEnum(InternPool.Index.single_const_pointer_to_comptime_int_type),
+        slice_const_u8_type = @intFromEnum(InternPool.Index.slice_const_u8_type),
+        slice_const_u8_sentinel_0_type = @intFromEnum(InternPool.Index.slice_const_u8_sentinel_0_type),
+        anyerror_void_error_union_type = @intFromEnum(InternPool.Index.anyerror_void_error_union_type),
+        generic_poison_type = @intFromEnum(InternPool.Index.generic_poison_type),
+        empty_struct_type = @intFromEnum(InternPool.Index.empty_struct_type),
+        undef = @intFromEnum(InternPool.Index.undef),
+        zero = @intFromEnum(InternPool.Index.zero),
+        zero_usize = @intFromEnum(InternPool.Index.zero_usize),
+        zero_u8 = @intFromEnum(InternPool.Index.zero_u8),
+        one = @intFromEnum(InternPool.Index.one),
+        one_usize = @intFromEnum(InternPool.Index.one_usize),
+        one_u8 = @intFromEnum(InternPool.Index.one_u8),
+        four_u8 = @intFromEnum(InternPool.Index.four_u8),
+        negative_one = @intFromEnum(InternPool.Index.negative_one),
+        calling_convention_c = @intFromEnum(InternPool.Index.calling_convention_c),
+        calling_convention_inline = @intFromEnum(InternPool.Index.calling_convention_inline),
+        void_value = @intFromEnum(InternPool.Index.void_value),
+        unreachable_value = @intFromEnum(InternPool.Index.unreachable_value),
+        null_value = @intFromEnum(InternPool.Index.null_value),
+        bool_true = @intFromEnum(InternPool.Index.bool_true),
+        bool_false = @intFromEnum(InternPool.Index.bool_false),
+        empty_struct = @intFromEnum(InternPool.Index.empty_struct),
+        generic_poison = @intFromEnum(InternPool.Index.generic_poison),
 
         /// This tag is here to match Air and InternPool, however it is unused
         /// for ZIR purposes.
-        var_args_param_type = @enumToInt(InternPool.Index.var_args_param_type),
+        var_args_param_type = @intFromEnum(InternPool.Index.var_args_param_type),
         /// This Ref does not correspond to any ZIR instruction or constant
         /// value and may instead be used as a sentinel to indicate null.
-        none = @enumToInt(InternPool.Index.none),
+        none = @intFromEnum(InternPool.Index.none),
         _,
     };
 
@@ -2691,8 +2691,8 @@ pub const Inst = struct {
             pub const ScalarCasesLen = u28;
 
             pub fn specialProng(bits: Bits) SpecialProng {
-                const has_else: u2 = @boolToInt(bits.has_else);
-                const has_under: u2 = @boolToInt(bits.has_under);
+                const has_else: u2 = @intFromBool(bits.has_else);
+                const has_under: u2 = @intFromBool(bits.has_under);
                 return switch ((has_else << 1) | has_under) {
                     0b00 => .none,
                     0b01 => .under,
@@ -3241,8 +3241,8 @@ pub fn declIterator(zir: Zir, decl_inst: u32) DeclIterator {
                 .struct_decl => {
                     const small = @bitCast(Inst.StructDecl.Small, extended.small);
                     var extra_index: usize = extended.operand;
-                    extra_index += @boolToInt(small.has_src_node);
-                    extra_index += @boolToInt(small.has_fields_len);
+                    extra_index += @intFromBool(small.has_src_node);
+                    extra_index += @intFromBool(small.has_fields_len);
                     const decls_len = if (small.has_decls_len) decls_len: {
                         const decls_len = zir.extra[extra_index];
                         extra_index += 1;
@@ -3264,10 +3264,10 @@ pub fn declIterator(zir: Zir, decl_inst: u32) DeclIterator {
                 .enum_decl => {
                     const small = @bitCast(Inst.EnumDecl.Small, extended.small);
                     var extra_index: usize = extended.operand;
-                    extra_index += @boolToInt(small.has_src_node);
-                    extra_index += @boolToInt(small.has_tag_type);
-                    extra_index += @boolToInt(small.has_body_len);
-                    extra_index += @boolToInt(small.has_fields_len);
+                    extra_index += @intFromBool(small.has_src_node);
+                    extra_index += @intFromBool(small.has_tag_type);
+                    extra_index += @intFromBool(small.has_body_len);
+                    extra_index += @intFromBool(small.has_fields_len);
                     const decls_len = if (small.has_decls_len) decls_len: {
                         const decls_len = zir.extra[extra_index];
                         extra_index += 1;
@@ -3279,10 +3279,10 @@ pub fn declIterator(zir: Zir, decl_inst: u32) DeclIterator {
                 .union_decl => {
                     const small = @bitCast(Inst.UnionDecl.Small, extended.small);
                     var extra_index: usize = extended.operand;
-                    extra_index += @boolToInt(small.has_src_node);
-                    extra_index += @boolToInt(small.has_tag_type);
-                    extra_index += @boolToInt(small.has_body_len);
-                    extra_index += @boolToInt(small.has_fields_len);
+                    extra_index += @intFromBool(small.has_src_node);
+                    extra_index += @intFromBool(small.has_tag_type);
+                    extra_index += @intFromBool(small.has_body_len);
+                    extra_index += @intFromBool(small.has_fields_len);
                     const decls_len = if (small.has_decls_len) decls_len: {
                         const decls_len = zir.extra[extra_index];
                         extra_index += 1;
@@ -3294,7 +3294,7 @@ pub fn declIterator(zir: Zir, decl_inst: u32) DeclIterator {
                 .opaque_decl => {
                     const small = @bitCast(Inst.OpaqueDecl.Small, extended.small);
                     var extra_index: usize = extended.operand;
-                    extra_index += @boolToInt(small.has_src_node);
+                    extra_index += @intFromBool(small.has_src_node);
                     const decls_len = if (small.has_decls_len) decls_len: {
                         const decls_len = zir.extra[extra_index];
                         extra_index += 1;
@@ -3367,7 +3367,7 @@ fn findDeclsInner(
             const inst_data = datas[inst].pl_node;
             const extra = zir.extraData(Inst.FuncFancy, inst_data.payload_index);
             var extra_index: usize = extra.end;
-            extra_index += @boolToInt(extra.data.bits.has_lib_name);
+            extra_index += @intFromBool(extra.data.bits.has_lib_name);
 
             if (extra.data.bits.has_align_body) {
                 const body_len = zir.extra[extra_index];
@@ -3419,7 +3419,7 @@ fn findDeclsInner(
                 extra_index += 1;
             }
 
-            extra_index += @boolToInt(extra.data.bits.has_any_noalias);
+            extra_index += @intFromBool(extra.data.bits.has_any_noalias);
 
             const body = zir.extra[extra_index..][0..extra.data.body_len];
             return zir.findDeclsBody(list, body);
@@ -3598,7 +3598,7 @@ pub fn getFnInfo(zir: Zir, fn_inst: Inst.Index) FnInfo {
                     ret_ty_ref = .void_type;
                 },
                 1 => {
-                    ret_ty_ref = @intToEnum(Inst.Ref, zir.extra[extra_index]);
+                    ret_ty_ref = @enumFromInt(Inst.Ref, zir.extra[extra_index]);
                     extra_index += 1;
                 },
                 else => {
@@ -3625,7 +3625,7 @@ pub fn getFnInfo(zir: Zir, fn_inst: Inst.Index) FnInfo {
             var ret_ty_ref: Inst.Ref = .void_type;
             var ret_ty_body: []const Inst.Index = &.{};
 
-            extra_index += @boolToInt(extra.data.bits.has_lib_name);
+            extra_index += @intFromBool(extra.data.bits.has_lib_name);
             if (extra.data.bits.has_align_body) {
                 extra_index += zir.extra[extra_index] + 1;
             } else if (extra.data.bits.has_align_ref) {
@@ -3652,11 +3652,11 @@ pub fn getFnInfo(zir: Zir, fn_inst: Inst.Index) FnInfo {
                 ret_ty_body = zir.extra[extra_index..][0..body_len];
                 extra_index += ret_ty_body.len;
             } else if (extra.data.bits.has_ret_ty_ref) {
-                ret_ty_ref = @intToEnum(Inst.Ref, zir.extra[extra_index]);
+                ret_ty_ref = @enumFromInt(Inst.Ref, zir.extra[extra_index]);
                 extra_index += 1;
             }
 
-            extra_index += @boolToInt(extra.data.bits.has_any_noalias);
+            extra_index += @intFromBool(extra.data.bits.has_any_noalias);
 
             const body = zir.extra[extra_index..][0..extra.data.body_len];
             extra_index += body.len;
@@ -3696,12 +3696,12 @@ pub fn getFnInfo(zir: Zir, fn_inst: Inst.Index) FnInfo {
 pub const ref_start_index: u32 = InternPool.static_len;
 
 pub fn indexToRef(inst: Inst.Index) Inst.Ref {
-    return @intToEnum(Inst.Ref, ref_start_index + inst);
+    return @enumFromInt(Inst.Ref, ref_start_index + inst);
 }
 
 pub fn refToIndex(inst: Inst.Ref) ?Inst.Index {
     assert(inst != .none);
-    const ref_int = @enumToInt(inst);
+    const ref_int = @intFromEnum(inst);
     if (ref_int >= ref_start_index) {
         return ref_int - ref_start_index;
     } else {
test/behavior/bugs/10138.zig
@@ -17,7 +17,7 @@ fn open() usize {
 }
 
 fn write(fd: usize, a: [*]const u8, len: usize) usize {
-    return syscall4(.WRITE, fd, @ptrToInt(a), len);
+    return syscall4(.WRITE, fd, @intFromPtr(a), len);
 }
 
 fn syscall4(n: enum { WRITE }, a: usize, b: usize, c: usize) usize {
test/behavior/bugs/12142.zig
@@ -15,7 +15,7 @@ const Letter = enum(u8) {
 };
 
 fn letter(e: Letter) u8 {
-    return @enumToInt(e);
+    return @intFromEnum(e);
 }
 
 test {
test/behavior/bugs/12450.zig
@@ -18,6 +18,6 @@ test {
 
     var f1: *align(16) Foo = @alignCast(16, @ptrCast(*align(1) Foo, &buffer[0]));
     try expect(@typeInfo(@TypeOf(f1)).Pointer.alignment == 16);
-    try expect(@ptrToInt(f1) == @ptrToInt(&f1.a));
+    try expect(@intFromPtr(f1) == @intFromPtr(&f1.a));
     try expect(@typeInfo(@TypeOf(&f1.a)).Pointer.alignment == 16);
 }
test/behavior/bugs/12680_other_file.zig
@@ -1,6 +1,6 @@
 // export this function twice
 pub export fn testFunc() callconv(.C) usize {
-    return @ptrToInt(&testFunc);
+    return @intFromPtr(&testFunc);
 }
 
 comptime {
test/behavior/bugs/12723.zig
@@ -3,6 +3,6 @@ const expect = @import("std").testing.expect;
 test "Non-exhaustive enum backed by comptime_int" {
     const E = enum(comptime_int) { a, b, c, _ };
     comptime var e: E = .a;
-    e = @intToEnum(E, 378089457309184723749);
-    try expect(@enumToInt(e) == 378089457309184723749);
+    e = @enumFromInt(E, 378089457309184723749);
+    try expect(@intFromEnum(e) == 378089457309184723749);
 }
test/behavior/bugs/1741.zig
@@ -8,5 +8,5 @@ test "fixed" {
     if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
 
     const x: f32 align(128) = 12.34;
-    try std.testing.expect(@ptrToInt(&x) % 128 == 0);
+    try std.testing.expect(@intFromPtr(&x) % 128 == 0);
 }
test/behavior/bugs/9584.zig
@@ -35,7 +35,7 @@ pub fn a(
     _ = flag_a;
     // With this bug present, `flag_b` would actually contain the value 17.
     // Note: this bug only presents itself on debug mode.
-    const flag_b_byte: u8 = @boolToInt(flag_b);
+    const flag_b_byte: u8 = @intFromBool(flag_b);
     try std.testing.expect(flag_b_byte == 1);
 }
 
test/behavior/align.zig
@@ -24,7 +24,7 @@ test "slicing array of length 1 can not assume runtime index is always zero" {
     const slice = @as(*align(4) [1]u8, &foo)[runtime_index..];
     try expect(@TypeOf(slice) == []u8);
     try expect(slice.len == 0);
-    try expect(@truncate(u2, @ptrToInt(slice.ptr) - 1) == 0);
+    try expect(@truncate(u2, @intFromPtr(slice.ptr) - 1) == 0);
 }
 
 test "default alignment allows unspecified in type syntax" {
@@ -299,11 +299,11 @@ test "page aligned array on stack" {
     var number1: u8 align(16) = 42;
     var number2: u8 align(16) = 43;
 
-    try expect(@ptrToInt(&array[0]) & 0xFFF == 0);
+    try expect(@intFromPtr(&array[0]) & 0xFFF == 0);
     try expect(array[3] == 4);
 
-    try expect(@truncate(u4, @ptrToInt(&number1)) == 0);
-    try expect(@truncate(u4, @ptrToInt(&number2)) == 0);
+    try expect(@truncate(u4, @intFromPtr(&number1)) == 0);
+    try expect(@truncate(u4, @intFromPtr(&number2)) == 0);
     try expect(number1 == 42);
     try expect(number2 == 43);
 }
@@ -518,7 +518,7 @@ test "struct field explicit alignment" {
     node.massive_byte = 100;
     try expect(node.massive_byte == 100);
     try comptime expect(@TypeOf(&node.massive_byte) == *align(64) u8);
-    try expect(@ptrToInt(&node.massive_byte) % 64 == 0);
+    try expect(@intFromPtr(&node.massive_byte) % 64 == 0);
 }
 
 test "align(@alignOf(T)) T does not force resolution of T" {
@@ -561,7 +561,7 @@ test "align(N) on functions" {
     if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
     if (native_arch == .thumb) return error.SkipZigTest;
 
-    try expect((@ptrToInt(&overaligned_fn) & (0x1000 - 1)) == 0);
+    try expect((@intFromPtr(&overaligned_fn) & (0x1000 - 1)) == 0);
 }
 fn overaligned_fn() align(0x1000) i32 {
     return 42;
@@ -578,7 +578,7 @@ test "comptime alloc alignment" {
     _ = bytes1;
 
     comptime var bytes2 align(256) = [_]u8{0};
-    var bytes2_addr = @ptrToInt(&bytes2);
+    var bytes2_addr = @intFromPtr(&bytes2);
     try expect(bytes2_addr & 0xff == 0);
 }
 
test/behavior/array.zig
@@ -176,8 +176,8 @@ test "array with sentinels" {
             var arr: [3:0x55]u8 = undefined;
             // Make sure the sentinel pointer is pointing after the last element.
             if (!is_ct) {
-                const sentinel_ptr = @ptrToInt(&arr[3]);
-                const last_elem_ptr = @ptrToInt(&arr[2]);
+                const sentinel_ptr = @intFromPtr(&arr[3]);
+                const last_elem_ptr = @intFromPtr(&arr[2]);
                 try expect((sentinel_ptr - last_elem_ptr) == 1);
             }
             // Make sure the sentinel is writeable.
test/behavior/async_fn.zig
@@ -829,7 +829,7 @@ test "alignment of local variables in async functions" {
             var y: u8 = 123;
             _ = y;
             var x: u8 align(128) = 1;
-            try expect(@ptrToInt(&x) % 128 == 0);
+            try expect(@intFromPtr(&x) % 128 == 0);
         }
     };
     try S.doTheTest();
@@ -1184,7 +1184,7 @@ test "using @TypeOf on a generic function call" {
                 global_frame = @frame();
             }
             const F = @TypeOf(async amain(x - 1));
-            const frame = @intToPtr(*F, @ptrToInt(&buf));
+            const frame = @ptrFromInt(*F, @intFromPtr(&buf));
             return await @asyncCall(frame, {}, amain, .{x - 1});
         }
     };
@@ -1212,7 +1212,7 @@ test "recursive call of await @asyncCall with struct return type" {
                 global_frame = @frame();
             }
             const F = @TypeOf(async amain(x - 1));
-            const frame = @intToPtr(*F, @ptrToInt(&buf));
+            const frame = @ptrFromInt(*F, @intFromPtr(&buf));
             return await @asyncCall(frame, {}, amain, .{x - 1});
         }
 
test/behavior/bool.zig
@@ -13,22 +13,22 @@ test "cast bool to int" {
 
     const t = true;
     const f = false;
-    try expectEqual(@as(u32, 1), @boolToInt(t));
-    try expectEqual(@as(u32, 0), @boolToInt(f));
-    try expectEqual(-1, @bitCast(i1, @boolToInt(t)));
-    try expectEqual(0, @bitCast(i1, @boolToInt(f)));
-    try expectEqual(u1, @TypeOf(@boolToInt(t)));
-    try expectEqual(u1, @TypeOf(@boolToInt(f)));
-    try nonConstCastBoolToInt(t, f);
+    try expectEqual(@as(u32, 1), @intFromBool(t));
+    try expectEqual(@as(u32, 0), @intFromBool(f));
+    try expectEqual(-1, @bitCast(i1, @intFromBool(t)));
+    try expectEqual(0, @bitCast(i1, @intFromBool(f)));
+    try expectEqual(u1, @TypeOf(@intFromBool(t)));
+    try expectEqual(u1, @TypeOf(@intFromBool(f)));
+    try nonConstCastIntFromBool(t, f);
 }
 
-fn nonConstCastBoolToInt(t: bool, f: bool) !void {
-    try expectEqual(@as(u32, 1), @boolToInt(t));
-    try expectEqual(@as(u32, 0), @boolToInt(f));
-    try expectEqual(@as(i1, -1), @bitCast(i1, @boolToInt(t)));
-    try expectEqual(@as(i1, 0), @bitCast(i1, @boolToInt(f)));
-    try expectEqual(u1, @TypeOf(@boolToInt(t)));
-    try expectEqual(u1, @TypeOf(@boolToInt(f)));
+fn nonConstCastIntFromBool(t: bool, f: bool) !void {
+    try expectEqual(@as(u32, 1), @intFromBool(t));
+    try expectEqual(@as(u32, 0), @intFromBool(f));
+    try expectEqual(@as(i1, -1), @bitCast(i1, @intFromBool(t)));
+    try expectEqual(@as(i1, 0), @bitCast(i1, @intFromBool(f)));
+    try expectEqual(u1, @TypeOf(@intFromBool(t)));
+    try expectEqual(u1, @TypeOf(@intFromBool(f)));
 }
 
 test "bool cmp" {
test/behavior/builtin_functions_returning_void_or_noreturn.zig
@@ -17,8 +17,8 @@ test {
     try testing.expectEqual(void, @TypeOf(@breakpoint()));
     try testing.expectEqual({}, @export(x, .{ .name = "x" }));
     try testing.expectEqual({}, @fence(.Acquire));
-    try testing.expectEqual({}, @memcpy(@intToPtr([*]u8, 1)[0..0], @intToPtr([*]u8, 1)[0..0]));
-    try testing.expectEqual({}, @memset(@intToPtr([*]u8, 1)[0..0], undefined));
+    try testing.expectEqual({}, @memcpy(@ptrFromInt([*]u8, 1)[0..0], @ptrFromInt([*]u8, 1)[0..0]));
+    try testing.expectEqual({}, @memset(@ptrFromInt([*]u8, 1)[0..0], undefined));
     try testing.expectEqual(noreturn, @TypeOf(if (true) @panic("") else {}));
     try testing.expectEqual({}, @prefetch(&val, .{}));
     try testing.expectEqual({}, @setAlignStack(16));
test/behavior/call.zig
@@ -364,11 +364,11 @@ test "Enum constructed by @Type passed as generic argument" {
             alive: bool,
         });
         fn foo(comptime a: E, b: u32) !void {
-            try expect(@enumToInt(a) == b);
+            try expect(@intFromEnum(a) == b);
         }
     };
     inline for (@typeInfo(S.E).Enum.fields, 0..) |_, i| {
-        try S.foo(@intToEnum(S.E, i), i);
+        try S.foo(@enumFromInt(S.E, i), i);
     }
 }
 
test/behavior/cast.zig
@@ -10,14 +10,14 @@ const native_endian = builtin.target.cpu.arch.endian();
 
 test "int to ptr cast" {
     const x = @as(usize, 13);
-    const y = @intToPtr(*u8, x);
-    const z = @ptrToInt(y);
+    const y = @ptrFromInt(*u8, x);
+    const z = @intFromPtr(y);
     try expect(z == 13);
 }
 
 test "integer literal to pointer cast" {
-    const vga_mem = @intToPtr(*u16, 0xB8000);
-    try expect(@ptrToInt(vga_mem) == 0xB8000);
+    const vga_mem = @ptrFromInt(*u16, 0xB8000);
+    try expect(@intFromPtr(vga_mem) == 0xB8000);
 }
 
 test "peer type resolution: ?T and T" {
@@ -66,37 +66,37 @@ test "implicit cast comptime_int to comptime_float" {
     try expect(2 == 2.0);
 }
 
-test "comptime_int @intToFloat" {
+test "comptime_int @floatFromInt" {
     {
-        const result = @intToFloat(f16, 1234);
+        const result = @floatFromInt(f16, 1234);
         try expect(@TypeOf(result) == f16);
         try expect(result == 1234.0);
     }
     {
-        const result = @intToFloat(f32, 1234);
+        const result = @floatFromInt(f32, 1234);
         try expect(@TypeOf(result) == f32);
         try expect(result == 1234.0);
     }
     {
-        const result = @intToFloat(f64, 1234);
+        const result = @floatFromInt(f64, 1234);
         try expect(@TypeOf(result) == f64);
         try expect(result == 1234.0);
     }
 
     {
-        const result = @intToFloat(f128, 1234);
+        const result = @floatFromInt(f128, 1234);
         try expect(@TypeOf(result) == f128);
         try expect(result == 1234.0);
     }
     // big comptime_int (> 64 bits) to f128 conversion
     {
-        const result = @intToFloat(f128, 0x1_0000_0000_0000_0000);
+        const result = @floatFromInt(f128, 0x1_0000_0000_0000_0000);
         try expect(@TypeOf(result) == f128);
         try expect(result == 0x1_0000_0000_0000_0000.0);
     }
 }
 
-test "@intToFloat" {
+test "@floatFromInt" {
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
@@ -107,8 +107,8 @@ test "@intToFloat" {
         }
 
         fn testIntToFloat(k: i32) !void {
-            const f = @intToFloat(f32, k);
-            const i = @floatToInt(i32, f);
+            const f = @floatFromInt(f32, k);
+            const i = @intFromFloat(i32, f);
             try expect(i == k);
         }
     };
@@ -116,7 +116,7 @@ test "@intToFloat" {
     try comptime S.doTheTest();
 }
 
-test "@intToFloat(f80)" {
+test "@floatFromInt(f80)" {
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
@@ -131,8 +131,8 @@ test "@intToFloat(f80)" {
 
         fn testIntToFloat(comptime Int: type, k: Int) !void {
             @setRuntimeSafety(false); // TODO
-            const f = @intToFloat(f80, k);
-            const i = @floatToInt(Int, f);
+            const f = @floatFromInt(f80, k);
+            const i = @intFromFloat(Int, f);
             try expect(i == k);
         }
     };
@@ -152,28 +152,28 @@ test "@intToFloat(f80)" {
     try comptime S.doTheTest(i256);
 }
 
-test "@floatToInt" {
+test "@intFromFloat" {
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
 
-    try testFloatToInts();
-    try comptime testFloatToInts();
+    try testIntFromFloats();
+    try comptime testIntFromFloats();
 }
 
-fn testFloatToInts() !void {
+fn testIntFromFloats() !void {
     const x = @as(i32, 1e4);
     try expect(x == 10000);
-    const y = @floatToInt(i32, @as(f32, 1e4));
+    const y = @intFromFloat(i32, @as(f32, 1e4));
     try expect(y == 10000);
-    try expectFloatToInt(f32, 255.1, u8, 255);
-    try expectFloatToInt(f32, 127.2, i8, 127);
-    try expectFloatToInt(f32, -128.2, i8, -128);
+    try expectIntFromFloat(f32, 255.1, u8, 255);
+    try expectIntFromFloat(f32, 127.2, i8, 127);
+    try expectIntFromFloat(f32, -128.2, i8, -128);
 }
 
-fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {
-    try expect(@floatToInt(I, f) == i);
+fn expectIntFromFloat(comptime F: type, f: F, comptime I: type, i: I) !void {
+    try expect(@intFromFloat(I, f) == i);
 }
 
 test "implicitly cast indirect pointer to maybe-indirect pointer" {
@@ -280,9 +280,9 @@ test "*usize to *void" {
     v.* = {};
 }
 
-test "@intToEnum passed a comptime_int to an enum with one item" {
+test "@enumFromInt passed a comptime_int to an enum with one item" {
     const E = enum { A };
-    const x = @intToEnum(E, 0);
+    const x = @enumFromInt(E, 0);
     try expect(x == E.A);
 }
 
@@ -420,8 +420,8 @@ test "explicit cast from integer to error type" {
     try comptime testCastIntToErr(error.ItBroke);
 }
 fn testCastIntToErr(err: anyerror) !void {
-    const x = @errorToInt(err);
-    const y = @intToError(x);
+    const x = @intFromError(err);
+    const y = @errorFromInt(x);
     try expect(error.ItBroke == y);
 }
 
@@ -1093,15 +1093,15 @@ test "peer type resolve array pointer and unknown pointer" {
 test "comptime float casts" {
     if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
 
-    const a = @intToFloat(comptime_float, 1);
+    const a = @floatFromInt(comptime_float, 1);
     try expect(a == 1);
     try expect(@TypeOf(a) == comptime_float);
-    const b = @floatToInt(comptime_int, 2);
+    const b = @intFromFloat(comptime_int, 2);
     try expect(b == 2);
     try expect(@TypeOf(b) == comptime_int);
 
-    try expectFloatToInt(comptime_int, 1234, i16, 1234);
-    try expectFloatToInt(comptime_float, 12.3, comptime_int, 12);
+    try expectIntFromFloat(comptime_int, 1234, i16, 1234);
+    try expectIntFromFloat(comptime_float, 12.3, comptime_int, 12);
 }
 
 test "pointer reinterpret const float to int" {
@@ -1146,11 +1146,11 @@ test "compile time int to ptr of function" {
 
 // On some architectures function pointers must be aligned.
 const hardcoded_fn_addr = maxInt(usize) & ~@as(usize, 0xf);
-pub const FUNCTION_CONSTANT = @intToPtr(PFN_void, hardcoded_fn_addr);
+pub const FUNCTION_CONSTANT = @ptrFromInt(PFN_void, hardcoded_fn_addr);
 pub const PFN_void = *const fn (*anyopaque) callconv(.C) void;
 
 fn foobar(func: PFN_void) !void {
-    try std.testing.expect(@ptrToInt(func) == hardcoded_fn_addr);
+    try std.testing.expect(@intFromPtr(func) == hardcoded_fn_addr);
 }
 
 test "implicit ptr to *anyopaque" {
@@ -1285,11 +1285,11 @@ test "implicit cast *[0]T to E![]const u8" {
 var global_array: [4]u8 = undefined;
 test "cast from array reference to fn: comptime fn ptr" {
     const f = @ptrCast(*align(1) const fn () callconv(.C) void, &global_array);
-    try expect(@ptrToInt(f) == @ptrToInt(&global_array));
+    try expect(@intFromPtr(f) == @intFromPtr(&global_array));
 }
 test "cast from array reference to fn: runtime fn ptr" {
     var f = @ptrCast(*align(1) const fn () callconv(.C) void, &global_array);
-    try expect(@ptrToInt(f) == @ptrToInt(&global_array));
+    try expect(@intFromPtr(f) == @intFromPtr(&global_array));
 }
 
 test "*const [N]null u8 to ?[]const u8" {
@@ -1500,19 +1500,19 @@ test "coerce between pointers of compatible differently-named floats" {
 }
 
 test "peer type resolution of const and non-const pointer to array" {
-    const a = @intToPtr(*[1024]u8, 42);
-    const b = @intToPtr(*const [1024]u8, 42);
+    const a = @ptrFromInt(*[1024]u8, 42);
+    const b = @ptrFromInt(*const [1024]u8, 42);
     try std.testing.expect(@TypeOf(a, b) == *const [1024]u8);
     try std.testing.expect(a == b);
 }
 
-test "floatToInt to zero-bit int" {
+test "intFromFloat to zero-bit int" {
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
 
     const a: f32 = 0.0;
-    try comptime std.testing.expect(@floatToInt(u0, a) == 0);
+    try comptime std.testing.expect(@intFromFloat(u0, a) == 0);
 }
 
 test "peer type resolution of function pointer and function body" {
@@ -1560,9 +1560,9 @@ test "optional pointer coerced to optional allowzero pointer" {
 
     var p: ?*u32 = undefined;
     var q: ?*allowzero u32 = undefined;
-    p = @intToPtr(*u32, 4);
+    p = @ptrFromInt(*u32, 4);
     q = p;
-    try expect(@ptrToInt(q.?) == 4);
+    try expect(@intFromPtr(q.?) == 4);
 }
 
 test "single item pointer to pointer to array to slice" {
@@ -1623,8 +1623,8 @@ test "peer type resolution: const sentinel slice and mutable non-sentinel slice"
 
     const S = struct {
         fn doTheTest(comptime T: type, comptime s: T) !void {
-            var a: [:s]const T = @intToPtr(*const [2:s]T, 0x1000);
-            var b: []T = @intToPtr(*[3]T, 0x2000);
+            var a: [:s]const T = @ptrFromInt(*const [2:s]T, 0x1000);
+            var b: []T = @ptrFromInt(*[3]T, 0x2000);
             comptime assert(@TypeOf(a, b) == []const T);
             comptime assert(@TypeOf(b, a) == []const T);
 
@@ -1634,8 +1634,8 @@ test "peer type resolution: const sentinel slice and mutable non-sentinel slice"
 
             const R = @TypeOf(r1);
 
-            try expectEqual(@as(R, @intToPtr(*const [2:s]T, 0x1000)), r1);
-            try expectEqual(@as(R, @intToPtr(*const [3]T, 0x2000)), r2);
+            try expectEqual(@as(R, @ptrFromInt(*const [2:s]T, 0x1000)), r1);
+            try expectEqual(@as(R, @ptrFromInt(*const [3]T, 0x2000)), r2);
         }
     };
 
@@ -1815,7 +1815,7 @@ test "peer type resolution: three-way resolution combines error set and optional
 
     const E = error{Foo};
     var a: E = error.Foo;
-    var b: *const [5:0]u8 = @intToPtr(*const [5:0]u8, 0x1000);
+    var b: *const [5:0]u8 = @ptrFromInt(*const [5:0]u8, 0x1000);
     var c: ?[*:0]u8 = null;
     comptime assert(@TypeOf(a, b, c) == E!?[*:0]const u8);
     comptime assert(@TypeOf(a, c, b) == E!?[*:0]const u8);
@@ -1844,7 +1844,7 @@ test "peer type resolution: three-way resolution combines error set and optional
     const T = @TypeOf(r1);
 
     try expectEqual(@as(T, error.Foo), r1);
-    try expectEqual(@as(T, @intToPtr([*:0]u8, 0x1000)), r2);
+    try expectEqual(@as(T, @ptrFromInt([*:0]u8, 0x1000)), r2);
     try expectEqual(@as(T, null), r3);
 }
 
test/behavior/comptime_memory.zig
@@ -192,9 +192,9 @@ test "basic pointer preservation" {
     }
 
     comptime {
-        const lazy_address = @ptrToInt(&imports.global_u32);
-        try testing.expectEqual(@ptrToInt(&imports.global_u32), lazy_address);
-        try testing.expectEqual(&imports.global_u32, @intToPtr(*u32, lazy_address));
+        const lazy_address = @intFromPtr(&imports.global_u32);
+        try testing.expectEqual(@intFromPtr(&imports.global_u32), lazy_address);
+        try testing.expectEqual(&imports.global_u32, @ptrFromInt(*u32, lazy_address));
     }
 }
 
@@ -251,7 +251,7 @@ test "shuffle chunks of linker value" {
         return error.SkipZigTest;
     }
 
-    const lazy_address = @ptrToInt(&imports.global_u32);
+    const lazy_address = @intFromPtr(&imports.global_u32);
     const shuffled1_rt = shuffle(lazy_address, Bits, ShuffledBits);
     const unshuffled1_rt = shuffle(shuffled1_rt, ShuffledBits, Bits);
     try testing.expectEqual(lazy_address, unshuffled1_rt);
@@ -271,8 +271,8 @@ test "dance on linker values" {
 
     comptime {
         var arr: [2]usize = undefined;
-        arr[0] = @ptrToInt(&imports.global_u32);
-        arr[1] = @ptrToInt(&imports.global_u32);
+        arr[0] = @intFromPtr(&imports.global_u32);
+        arr[1] = @intFromPtr(&imports.global_u32);
 
         const weird_ptr = @ptrCast([*]Bits, @ptrCast([*]u8, &arr) + @sizeOf(usize) - 3);
         try doTypePunBitsTest(&weird_ptr[0]);
@@ -290,7 +290,7 @@ test "dance on linker values" {
             rebuilt_bytes[i] = arr_bytes[1][i];
         }
 
-        try testing.expectEqual(&imports.global_u32, @intToPtr(*u32, @bitCast(usize, rebuilt_bytes)));
+        try testing.expectEqual(&imports.global_u32, @ptrFromInt(*u32, @bitCast(usize, rebuilt_bytes)));
     }
 }
 
@@ -309,14 +309,14 @@ test "offset array ptr by element size" {
             .{ .x = bigToNativeEndian(u32, 0x03070b0f) },
         };
 
-        const address = @ptrToInt(&arr);
-        try testing.expectEqual(@ptrToInt(&arr[0]), address);
-        try testing.expectEqual(@ptrToInt(&arr[0]) + 10, address + 10);
-        try testing.expectEqual(@ptrToInt(&arr[1]), address + @sizeOf(VirtualStruct));
-        try testing.expectEqual(@ptrToInt(&arr[2]), address + 2 * @sizeOf(VirtualStruct));
-        try testing.expectEqual(@ptrToInt(&arr[3]), address + @sizeOf(VirtualStruct) * 3);
+        const address = @intFromPtr(&arr);
+        try testing.expectEqual(@intFromPtr(&arr[0]), address);
+        try testing.expectEqual(@intFromPtr(&arr[0]) + 10, address + 10);
+        try testing.expectEqual(@intFromPtr(&arr[1]), address + @sizeOf(VirtualStruct));
+        try testing.expectEqual(@intFromPtr(&arr[2]), address + 2 * @sizeOf(VirtualStruct));
+        try testing.expectEqual(@intFromPtr(&arr[3]), address + @sizeOf(VirtualStruct) * 3);
 
-        const secondElement = @intToPtr(*VirtualStruct, @ptrToInt(&arr[0]) + 2 * @sizeOf(VirtualStruct));
+        const secondElement = @ptrFromInt(*VirtualStruct, @intFromPtr(&arr[0]) + 2 * @sizeOf(VirtualStruct));
         try testing.expectEqual(bigToNativeEndian(u32, 0x02060a0e), secondElement.x);
     }
 }
@@ -331,18 +331,18 @@ test "offset instance by field size" {
         const VirtualStruct = struct { x: u32, y: u32, z: u32, w: u32 };
         var inst = VirtualStruct{ .x = 0, .y = 1, .z = 2, .w = 3 };
 
-        var ptr = @ptrToInt(&inst);
+        var ptr = @intFromPtr(&inst);
         ptr -= 4;
         ptr += @offsetOf(VirtualStruct, "x");
-        try testing.expectEqual(@as(u32, 0), @intToPtr([*]u32, ptr)[1]);
+        try testing.expectEqual(@as(u32, 0), @ptrFromInt([*]u32, ptr)[1]);
         ptr -= @offsetOf(VirtualStruct, "x");
         ptr += @offsetOf(VirtualStruct, "y");
-        try testing.expectEqual(@as(u32, 1), @intToPtr([*]u32, ptr)[1]);
+        try testing.expectEqual(@as(u32, 1), @ptrFromInt([*]u32, ptr)[1]);
         ptr = ptr - @offsetOf(VirtualStruct, "y") + @offsetOf(VirtualStruct, "z");
-        try testing.expectEqual(@as(u32, 2), @intToPtr([*]u32, ptr)[1]);
-        ptr = @ptrToInt(&inst.z) - 4 - @offsetOf(VirtualStruct, "z");
+        try testing.expectEqual(@as(u32, 2), @ptrFromInt([*]u32, ptr)[1]);
+        ptr = @intFromPtr(&inst.z) - 4 - @offsetOf(VirtualStruct, "z");
         ptr += @offsetOf(VirtualStruct, "w");
-        try testing.expectEqual(@as(u32, 3), @intToPtr(*u32, ptr + 4).*);
+        try testing.expectEqual(@as(u32, 3), @ptrFromInt(*u32, ptr + 4).*);
     }
 }
 
test/behavior/enum.zig
@@ -8,7 +8,7 @@ const Tag = std.meta.Tag;
 const Number = enum { Zero, One, Two, Three, Four };
 
 fn shouldEqual(n: Number, expected: u3) !void {
-    try expect(@enumToInt(n) == expected);
+    try expect(@intFromEnum(n) == expected);
 }
 
 test "enum to int" {
@@ -20,7 +20,7 @@ test "enum to int" {
 }
 
 fn testIntToEnumEval(x: i32) !void {
-    try expect(@intToEnum(IntToEnumNumber, x) == IntToEnumNumber.Three);
+    try expect(@enumFromInt(IntToEnumNumber, x) == IntToEnumNumber.Three);
 }
 const IntToEnumNumber = enum { Zero, One, Two, Three, Four };
 
@@ -597,7 +597,7 @@ const MultipleChoice = enum(u32) {
 };
 
 fn testEnumWithSpecifiedTagValues(x: MultipleChoice) !void {
-    try expect(@enumToInt(x) == 60);
+    try expect(@intFromEnum(x) == 60);
     try expect(1234 == switch (x) {
         MultipleChoice.A => 1,
         MultipleChoice.B => 2,
@@ -629,7 +629,7 @@ test "non-exhaustive enum" {
                 .b => true,
                 _ => false,
             });
-            e = @intToEnum(E, 12);
+            e = @enumFromInt(E, 12);
             try expect(switch (e) {
                 .a => false,
                 .b => false,
@@ -648,10 +648,10 @@ test "non-exhaustive enum" {
             });
 
             try expect(@typeInfo(E).Enum.fields.len == 2);
-            e = @intToEnum(E, 12);
-            try expect(@enumToInt(e) == 12);
-            e = @intToEnum(E, y);
-            try expect(@enumToInt(e) == 52);
+            e = @enumFromInt(E, 12);
+            try expect(@intFromEnum(e) == 12);
+            e = @enumFromInt(E, y);
+            try expect(@intFromEnum(e) == 52);
             try expect(@typeInfo(E).Enum.is_exhaustive == false);
         }
     };
@@ -666,11 +666,11 @@ test "empty non-exhaustive enum" {
         const E = enum(u8) { _ };
 
         fn doTheTest(y: u8) !void {
-            var e = @intToEnum(E, y);
+            var e = @enumFromInt(E, y);
             try expect(switch (e) {
                 _ => true,
             });
-            try expect(@enumToInt(e) == y);
+            try expect(@intFromEnum(e) == y);
 
             try expect(@typeInfo(E).Enum.fields.len == 0);
             try expect(@typeInfo(E).Enum.is_exhaustive == false);
@@ -693,7 +693,7 @@ test "single field non-exhaustive enum" {
                 .a => true,
                 _ => false,
             });
-            e = @intToEnum(E, 12);
+            e = @enumFromInt(E, 12);
             try expect(switch (e) {
                 .a => false,
                 _ => true,
@@ -709,7 +709,7 @@ test "single field non-exhaustive enum" {
                 else => false,
             });
 
-            try expect(@enumToInt(@intToEnum(E, y)) == y);
+            try expect(@intFromEnum(@enumFromInt(E, y)) == y);
             try expect(@typeInfo(E).Enum.fields.len == 1);
             try expect(@typeInfo(E).Enum.is_exhaustive == false);
         }
@@ -725,7 +725,7 @@ const EnumWithTagValues = enum(u4) {
     D = 1 << 3,
 };
 test "enum with tag values don't require parens" {
-    try expect(@enumToInt(EnumWithTagValues.C) == 0b0100);
+    try expect(@intFromEnum(EnumWithTagValues.C) == 0b0100);
 }
 
 const MultipleChoice2 = enum(u32) {
@@ -741,8 +741,8 @@ const MultipleChoice2 = enum(u32) {
 };
 
 test "cast integer literal to enum" {
-    try expect(@intToEnum(MultipleChoice2, 0) == MultipleChoice2.Unspecified1);
-    try expect(@intToEnum(MultipleChoice2, 40) == MultipleChoice2.B);
+    try expect(@enumFromInt(MultipleChoice2, 0) == MultipleChoice2.Unspecified1);
+    try expect(@enumFromInt(MultipleChoice2, 40) == MultipleChoice2.B);
 }
 
 test "enum with specified and unspecified tag values" {
@@ -754,7 +754,7 @@ test "enum with specified and unspecified tag values" {
 }
 
 fn testEnumWithSpecifiedAndUnspecifiedTagValues(x: MultipleChoice2) !void {
-    try expect(@enumToInt(x) == 1000);
+    try expect(@intFromEnum(x) == 1000);
     try expect(1234 == switch (x) {
         MultipleChoice2.A => 1,
         MultipleChoice2.B => 2,
@@ -790,7 +790,7 @@ test "casting enum to its tag type" {
 }
 
 fn testCastEnumTag(value: Small2) !void {
-    try expect(@enumToInt(value) == 1);
+    try expect(@intFromEnum(value) == 1);
 }
 
 test "enum with 1 field but explicit tag type should still have the tag type" {
@@ -807,27 +807,27 @@ test "signed integer as enum tag" {
         A2 = 1,
     };
 
-    try expect(@enumToInt(SignedEnum.A0) == -1);
-    try expect(@enumToInt(SignedEnum.A1) == 0);
-    try expect(@enumToInt(SignedEnum.A2) == 1);
+    try expect(@intFromEnum(SignedEnum.A0) == -1);
+    try expect(@intFromEnum(SignedEnum.A1) == 0);
+    try expect(@intFromEnum(SignedEnum.A2) == 1);
 }
 
 test "enum with one member and custom tag type" {
     const E = enum(u2) {
         One,
     };
-    try expect(@enumToInt(E.One) == 0);
+    try expect(@intFromEnum(E.One) == 0);
     const E2 = enum(u2) {
         One = 2,
     };
-    try expect(@enumToInt(E2.One) == 2);
+    try expect(@intFromEnum(E2.One) == 2);
 }
 
-test "enum with one member and u1 tag type @enumToInt" {
+test "enum with one member and u1 tag type @intFromEnum" {
     const Enum = enum(u1) {
         Test,
     };
-    try expect(@enumToInt(Enum.Test) == 0);
+    try expect(@intFromEnum(Enum.Test) == 0);
 }
 
 test "enum with comptime_int tag type" {
@@ -901,9 +901,9 @@ test "enum value allocation" {
         A2,
     };
 
-    try expect(@enumToInt(LargeEnum.A0) == 0x80000000);
-    try expect(@enumToInt(LargeEnum.A1) == 0x80000001);
-    try expect(@enumToInt(LargeEnum.A2) == 0x80000002);
+    try expect(@intFromEnum(LargeEnum.A0) == 0x80000000);
+    try expect(@intFromEnum(LargeEnum.A1) == 0x80000001);
+    try expect(@intFromEnum(LargeEnum.A2) == 0x80000002);
 }
 
 test "enum literal casting to tagged union" {
@@ -1183,7 +1183,7 @@ test "Non-exhaustive enum with nonstandard int size behaves correctly" {
 test "runtime int to enum with one possible value" {
     const E = enum { one };
     var runtime: usize = 0;
-    if (@intToEnum(E, runtime) != .one) {
+    if (@enumFromInt(E, runtime) != .one) {
         @compileError("test failed");
     }
 }
@@ -1194,6 +1194,6 @@ test "enum tag from a local variable" {
             return enum(Inner) { _ };
         }
     };
-    const i = @intToEnum(S.Int(u32), 0);
-    try std.testing.expect(@enumToInt(i) == 0);
+    const i = @enumFromInt(S.Int(u32), 0);
+    try std.testing.expect(@intFromEnum(i) == 0);
 }
test/behavior/error.zig
@@ -16,8 +16,8 @@ fn expectError(expected_err: anyerror, observed_err_union: anytype) !void {
 }
 
 test "error values" {
-    const a = @errorToInt(error.err1);
-    const b = @errorToInt(error.err2);
+    const a = @intFromError(error.err1);
+    const b = @intFromError(error.err2);
     try expect(a != b);
 }
 
@@ -259,14 +259,14 @@ fn testComptimeTestErrorEmptySet(x: EmptyErrorSet!i32) !void {
 }
 
 test "comptime err to int of error set with only 1 possible value" {
-    testErrToIntWithOnePossibleValue(error.A, @errorToInt(error.A));
-    comptime testErrToIntWithOnePossibleValue(error.A, @errorToInt(error.A));
+    testErrToIntWithOnePossibleValue(error.A, @intFromError(error.A));
+    comptime testErrToIntWithOnePossibleValue(error.A, @intFromError(error.A));
 }
 fn testErrToIntWithOnePossibleValue(
     x: error{A},
     comptime value: u32,
 ) void {
-    if (@errorToInt(x) != value) {
+    if (@intFromError(x) != value) {
         @compileError("bad");
     }
 }
test/behavior/eval.zig
@@ -1372,7 +1372,7 @@ test "lazy value is resolved as slice operand" {
 
     const ptr1 = a[0..@sizeOf(A)];
     const ptr2 = @ptrCast([*]u8, &a)[0..@sizeOf(A)];
-    try expect(@ptrToInt(ptr1) == @ptrToInt(ptr2));
+    try expect(@intFromPtr(ptr1) == @intFromPtr(ptr2));
     try expect(ptr1.len == ptr2.len);
 }
 
test/behavior/export.zig
@@ -7,7 +7,7 @@ const builtin = @import("builtin");
 
 // can't really run this test but we can make sure it has no compile error
 // and generates code
-const vram = @intToPtr([*]volatile u8, 0x20000000)[0..0x8000];
+const vram = @ptrFromInt([*]volatile u8, 0x20000000)[0..0x8000];
 export fn writeToVRam() void {
     vram[0] = 'X';
 }
test/behavior/export_self_referential_type_info.zig
@@ -1,1 +1,1 @@
-export const self_referential_type_info: c_int = @boolToInt(@typeInfo(@This()).Struct.is_tuple);
+export const self_referential_type_info: c_int = @intFromBool(@typeInfo(@This()).Struct.is_tuple);
test/behavior/floatop.zig
@@ -89,12 +89,12 @@ fn testDifferentSizedFloatComparisons() !void {
 //    }
 //}
 
-test "negative f128 floatToInt at compile-time" {
+test "negative f128 intFromFloat at compile-time" {
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
 
     const a: f128 = -2;
-    var b = @floatToInt(i64, a);
+    var b = @intFromFloat(i64, a);
     try expect(@as(i64, -2) == b);
 }
 
test/behavior/fn_in_struct_in_comptime.zig
@@ -5,7 +5,7 @@ fn get_foo() fn (*u8) usize {
     comptime {
         return struct {
             fn func(ptr: *u8) usize {
-                var u = @ptrToInt(ptr);
+                var u = @intFromPtr(ptr);
                 return u;
             }
         }.func;
@@ -14,5 +14,5 @@ fn get_foo() fn (*u8) usize {
 
 test "define a function in an anonymous struct in comptime" {
     const foo = get_foo();
-    try expect(foo(@intToPtr(*u8, 12345)) == 12345);
+    try expect(foo(@ptrFromInt(*u8, 12345)) == 12345);
 }
test/behavior/generics.zig
@@ -267,7 +267,7 @@ test "generic function instantiation turns into comptime call" {
             .Enum => std.builtin.Type.EnumField,
             else => void,
         } {
-            return @typeInfo(T).Enum.fields[@enumToInt(field)];
+            return @typeInfo(T).Enum.fields[@intFromEnum(field)];
         }
 
         pub fn FieldEnum(comptime T: type) type {
@@ -425,10 +425,10 @@ test "null sentinel pointer passed as generic argument" {
 
     const S = struct {
         fn doTheTest(a: anytype) !void {
-            try std.testing.expect(@ptrToInt(a) == 8);
+            try std.testing.expect(@intFromPtr(a) == 8);
         }
     };
-    try S.doTheTest((@intToPtr([*:null]const [*c]const u8, 8)));
+    try S.doTheTest((@ptrFromInt([*:null]const [*c]const u8, 8)));
 }
 
 test "generic function passed as comptime argument" {
test/behavior/inline_switch.zig
@@ -103,7 +103,7 @@ test "inline else enum" {
     var a: E2 = .a;
     switch (a) {
         .a, .b => {},
-        inline else => |val| comptime if (@enumToInt(val) < 4) @compileError("bad"),
+        inline else => |val| comptime if (@intFromEnum(val) < 4) @compileError("bad"),
     }
 }
 
test/behavior/packed-struct.zig
@@ -375,7 +375,7 @@ test "load pointer from packed struct" {
     }
 }
 
-test "@ptrToInt on a packed struct field" {
+test "@intFromPtr on a packed struct field" {
     if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
@@ -394,7 +394,7 @@ test "@ptrToInt on a packed struct field" {
             .z = 0,
         };
     };
-    try expect(@ptrToInt(&S.p0.z) - @ptrToInt(&S.p0.x) == 2);
+    try expect(@intFromPtr(&S.p0.z) - @intFromPtr(&S.p0.x) == 2);
 }
 
 test "optional pointer in packed struct" {
test/behavior/pointers.zig
@@ -184,8 +184,8 @@ test "implicit cast error unions with non-optional to optional pointer" {
 }
 
 test "compare equality of optional and non-optional pointer" {
-    const a = @intToPtr(*const usize, 0x12345678);
-    const b = @intToPtr(?*usize, 0x12345678);
+    const a = @ptrFromInt(*const usize, 0x12345678);
+    const b = @ptrFromInt(?*usize, 0x12345678);
     try expect(a == b);
     try expect(b == a);
 }
@@ -197,14 +197,14 @@ test "allowzero pointer and slice" {
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
 
-    var ptr = @intToPtr([*]allowzero i32, 0);
+    var ptr = @ptrFromInt([*]allowzero i32, 0);
     var opt_ptr: ?[*]allowzero i32 = ptr;
     try expect(opt_ptr != null);
-    try expect(@ptrToInt(ptr) == 0);
+    try expect(@intFromPtr(ptr) == 0);
     var runtime_zero: usize = 0;
     var slice = ptr[runtime_zero..10];
     try comptime expect(@TypeOf(slice) == []allowzero i32);
-    try expect(@ptrToInt(&slice[5]) == 20);
+    try expect(@intFromPtr(&slice[5]) == 20);
 
     try comptime expect(@typeInfo(@TypeOf(ptr)).Pointer.is_allowzero);
     try comptime expect(@typeInfo(@TypeOf(slice)).Pointer.is_allowzero);
@@ -367,10 +367,10 @@ test "pointer sentinel with +inf" {
 }
 
 test "pointer to array at fixed address" {
-    const array = @intToPtr(*volatile [2]u32, 0x10);
+    const array = @ptrFromInt(*volatile [2]u32, 0x10);
     // Silly check just to reference `array`
-    try expect(@ptrToInt(&array[0]) == 0x10);
-    try expect(@ptrToInt(&array[1]) == 0x14);
+    try expect(@intFromPtr(&array[0]) == 0x10);
+    try expect(@intFromPtr(&array[1]) == 0x14);
 }
 
 test "pointer arithmetic affects the alignment" {
@@ -404,16 +404,16 @@ test "pointer arithmetic affects the alignment" {
     }
 }
 
-test "@ptrToInt on null optional at comptime" {
+test "@intFromPtr on null optional at comptime" {
     {
-        const pointer = @intToPtr(?*u8, 0x000);
-        const x = @ptrToInt(pointer);
+        const pointer = @ptrFromInt(?*u8, 0x000);
+        const x = @intFromPtr(pointer);
         _ = x;
-        try comptime expect(0 == @ptrToInt(pointer));
+        try comptime expect(0 == @intFromPtr(pointer));
     }
     {
-        const pointer = @intToPtr(?*u8, 0xf00);
-        try comptime expect(0xf00 == @ptrToInt(pointer));
+        const pointer = @ptrFromInt(?*u8, 0xf00);
+        try comptime expect(0xf00 == @intFromPtr(pointer));
     }
 }
 
@@ -516,7 +516,7 @@ test "ptrCast comptime known slice to C pointer" {
     try std.testing.expectEqualStrings(s, std.mem.sliceTo(p, 0));
 }
 
-test "ptrToInt on a generic function" {
+test "intFromPtr on a generic function" {
     if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
@@ -527,7 +527,7 @@ test "ptrToInt on a generic function" {
             return i;
         }
         fn doTheTest(a: anytype) !void {
-            try expect(@ptrToInt(a) != 0);
+            try expect(@intFromPtr(a) != 0);
         }
     };
     try S.doTheTest(&S.generic);
test/behavior/inttoptr.zig โ†’ test/behavior/ptrfromint.zig
@@ -9,10 +9,10 @@ test "casting integer address to function pointer" {
 
 fn addressToFunction() void {
     var addr: usize = 0xdeadbee0;
-    _ = @intToPtr(*const fn () void, addr);
+    _ = @ptrFromInt(*const fn () void, addr);
 }
 
-test "mutate through ptr initialized with constant intToPtr value" {
+test "mutate through ptr initialized with constant ptrFromInt value" {
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
@@ -21,7 +21,7 @@ test "mutate through ptr initialized with constant intToPtr value" {
 }
 
 fn forceCompilerAnalyzeBranchHardCodedPtrDereference(x: bool) void {
-    const hardCodedP = @intToPtr(*volatile u8, 0xdeadbeef);
+    const hardCodedP = @ptrFromInt(*volatile u8, 0xdeadbeef);
     if (x) {
         hardCodedP.* = hardCodedP.* | 10;
     } else {
@@ -29,20 +29,20 @@ fn forceCompilerAnalyzeBranchHardCodedPtrDereference(x: bool) void {
     }
 }
 
-test "@intToPtr creates null pointer" {
+test "@ptrFromInt creates null pointer" {
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
 
-    const ptr = @intToPtr(?*u32, 0);
+    const ptr = @ptrFromInt(?*u32, 0);
     try expectEqual(@as(?*u32, null), ptr);
 }
 
-test "@intToPtr creates allowzero zero pointer" {
+test "@ptrFromInt creates allowzero zero pointer" {
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
 
-    const ptr = @intToPtr(*allowzero u32, 0);
-    try expectEqual(@as(usize, 0), @ptrToInt(ptr));
+    const ptr = @ptrFromInt(*allowzero u32, 0);
+    try expectEqual(@as(usize, 0), @intFromPtr(ptr));
 }
test/behavior/sizeof_and_typeof.zig
@@ -92,15 +92,15 @@ test "@offsetOf" {
 
     // // Normal struct fields can be moved/padded
     var a: A = undefined;
-    try expect(@ptrToInt(&a.a) - @ptrToInt(&a) == @offsetOf(A, "a"));
-    try expect(@ptrToInt(&a.b) - @ptrToInt(&a) == @offsetOf(A, "b"));
-    try expect(@ptrToInt(&a.c) - @ptrToInt(&a) == @offsetOf(A, "c"));
-    try expect(@ptrToInt(&a.d) - @ptrToInt(&a) == @offsetOf(A, "d"));
-    try expect(@ptrToInt(&a.e) - @ptrToInt(&a) == @offsetOf(A, "e"));
-    try expect(@ptrToInt(&a.f) - @ptrToInt(&a) == @offsetOf(A, "f"));
-    try expect(@ptrToInt(&a.g) - @ptrToInt(&a) == @offsetOf(A, "g"));
-    try expect(@ptrToInt(&a.h) - @ptrToInt(&a) == @offsetOf(A, "h"));
-    try expect(@ptrToInt(&a.i) - @ptrToInt(&a) == @offsetOf(A, "i"));
+    try expect(@intFromPtr(&a.a) - @intFromPtr(&a) == @offsetOf(A, "a"));
+    try expect(@intFromPtr(&a.b) - @intFromPtr(&a) == @offsetOf(A, "b"));
+    try expect(@intFromPtr(&a.c) - @intFromPtr(&a) == @offsetOf(A, "c"));
+    try expect(@intFromPtr(&a.d) - @intFromPtr(&a) == @offsetOf(A, "d"));
+    try expect(@intFromPtr(&a.e) - @intFromPtr(&a) == @offsetOf(A, "e"));
+    try expect(@intFromPtr(&a.f) - @intFromPtr(&a) == @offsetOf(A, "f"));
+    try expect(@intFromPtr(&a.g) - @intFromPtr(&a) == @offsetOf(A, "g"));
+    try expect(@intFromPtr(&a.h) - @intFromPtr(&a) == @offsetOf(A, "h"));
+    try expect(@intFromPtr(&a.i) - @intFromPtr(&a) == @offsetOf(A, "i"));
 }
 
 test "@bitOffsetOf" {
@@ -231,7 +231,7 @@ test "@sizeOf comparison against zero" {
 
 test "hardcoded address in typeof expression" {
     const S = struct {
-        fn func() @TypeOf(@intToPtr(*[]u8, 0x10).*[0]) {
+        fn func() @TypeOf(@ptrFromInt(*[]u8, 0x10).*[0]) {
             return 0;
         }
     };
@@ -252,7 +252,7 @@ test "array access of generic param in typeof expression" {
 test "lazy size cast to float" {
     {
         const S = struct { a: u8 };
-        try expect(@intToFloat(f32, @sizeOf(S)) == 1.0);
+        try expect(@floatFromInt(f32, @sizeOf(S)) == 1.0);
     }
     {
         const S = struct { a: u8 };
test/behavior/slice.zig
@@ -138,10 +138,10 @@ fn memFree(comptime T: type, memory: []T) void {
 test "slice of hardcoded address to pointer" {
     const S = struct {
         fn doTheTest() !void {
-            const pointer = @intToPtr([*]u8, 0x04)[0..2];
+            const pointer = @ptrFromInt([*]u8, 0x04)[0..2];
             try comptime expect(@TypeOf(pointer) == *[2]u8);
             const slice: []const u8 = pointer;
-            try expect(@ptrToInt(slice.ptr) == 4);
+            try expect(@intFromPtr(slice.ptr) == 4);
             try expect(slice.len == 2);
         }
     };
@@ -197,13 +197,13 @@ test "slicing pointer by length" {
     }
 }
 
-const x = @intToPtr([*]i32, 0x1000)[0..0x500];
+const x = @ptrFromInt([*]i32, 0x1000)[0..0x500];
 const y = x[0x100..];
 test "compile time slice of pointer to hard coded address" {
-    try expect(@ptrToInt(x) == 0x1000);
+    try expect(@intFromPtr(x) == 0x1000);
     try expect(x.len == 0x500);
 
-    try expect(@ptrToInt(y) == 0x1400);
+    try expect(@intFromPtr(y) == 0x1400);
     try expect(y.len == 0x400);
 }
 
@@ -838,13 +838,13 @@ test "empty slice ptr is non null" {
         const empty_slice: []u8 = &[_]u8{};
         const p: [*]u8 = empty_slice.ptr + 0;
         const t = @ptrCast([*]i8, p);
-        try expect(@ptrToInt(t) == @ptrToInt(empty_slice.ptr));
+        try expect(@intFromPtr(t) == @intFromPtr(empty_slice.ptr));
     }
     {
         const empty_slice: []u8 = &.{};
         const p: [*]u8 = empty_slice.ptr + 0;
         const t = @ptrCast([*]i8, p);
-        try expect(@ptrToInt(t) == @ptrToInt(empty_slice.ptr));
+        try expect(@intFromPtr(t) == @intFromPtr(empty_slice.ptr));
     }
 }
 
test/behavior/struct.zig
@@ -838,7 +838,7 @@ test "non-packed struct with u128 entry in union" {
 
     var sx: S = undefined;
     var s = &sx;
-    try expect(@ptrToInt(&s.f2) - @ptrToInt(&s.f1) == @offsetOf(S, "f2"));
+    try expect(@intFromPtr(&s.f2) - @intFromPtr(&s.f1) == @offsetOf(S, "f2"));
     var v2 = U{ .Num = 123 };
     s.f2 = v2;
     try expect(s.f2.Num == 123);
test/behavior/switch.zig
@@ -590,9 +590,9 @@ test "switch on pointer type" {
             field: u32,
         };
 
-        const P1 = @intToPtr(*X, 0x400);
-        const P2 = @intToPtr(*X, 0x800);
-        const P3 = @intToPtr(*X, 0xC00);
+        const P1 = @ptrFromInt(*X, 0x400);
+        const P2 = @ptrFromInt(*X, 0x800);
+        const P3 = @ptrFromInt(*X, 0xC00);
 
         fn doTheTest(arg: *X) i32 {
             switch (arg) {
@@ -682,9 +682,9 @@ test "enum value without tag name used as switch item" {
         b = 2,
         _,
     };
-    var e: E = @intToEnum(E, 0);
+    var e: E = @enumFromInt(E, 0);
     switch (e) {
-        @intToEnum(E, 0) => {},
+        @enumFromInt(E, 0) => {},
         .a => return error.TestFailed,
         .b => return error.TestFailed,
         _ => return error.TestFailed,
test/behavior/translate_c_macros.zig
@@ -60,7 +60,7 @@ test "cast negative integer to pointer" {
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
 
-    try expectEqual(@intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED);
+    try expectEqual(@ptrFromInt(?*anyopaque, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED);
 }
 
 test "casting to union with a macro" {
test/behavior/type.zig
@@ -363,8 +363,8 @@ test "Type.Enum" {
         },
     });
     try testing.expectEqual(true, @typeInfo(Foo).Enum.is_exhaustive);
-    try testing.expectEqual(@as(u8, 1), @enumToInt(Foo.a));
-    try testing.expectEqual(@as(u8, 5), @enumToInt(Foo.b));
+    try testing.expectEqual(@as(u8, 1), @intFromEnum(Foo.a));
+    try testing.expectEqual(@as(u8, 5), @intFromEnum(Foo.b));
     const Bar = @Type(.{
         .Enum = .{
             .tag_type = u32,
@@ -377,9 +377,9 @@ test "Type.Enum" {
         },
     });
     try testing.expectEqual(false, @typeInfo(Bar).Enum.is_exhaustive);
-    try testing.expectEqual(@as(u32, 1), @enumToInt(Bar.a));
-    try testing.expectEqual(@as(u32, 5), @enumToInt(Bar.b));
-    try testing.expectEqual(@as(u32, 6), @enumToInt(@intToEnum(Bar, 6)));
+    try testing.expectEqual(@as(u32, 1), @intFromEnum(Bar.a));
+    try testing.expectEqual(@as(u32, 5), @intFromEnum(Bar.b));
+    try testing.expectEqual(@as(u32, 6), @intFromEnum(@enumFromInt(Bar, 6)));
 }
 
 test "Type.Union" {
test/behavior/union.zig
@@ -364,7 +364,7 @@ test "simple union(enum(u32))" {
 
     var x = MultipleChoice.C;
     try expect(x == MultipleChoice.C);
-    try expect(@enumToInt(@as(Tag(MultipleChoice), x)) == 60);
+    try expect(@intFromEnum(@as(Tag(MultipleChoice), x)) == 60);
 }
 
 const PackedPtrOrInt = packed union {
@@ -655,7 +655,7 @@ const MultipleChoice2 = union(enum(u32)) {
 };
 
 fn testEnumWithSpecifiedAndUnspecifiedTagValues(x: MultipleChoice2) !void {
-    try expect(@enumToInt(@as(Tag(MultipleChoice2), x)) == 60);
+    try expect(@intFromEnum(@as(Tag(MultipleChoice2), x)) == 60);
     try expect(1123 == switch (x) {
         MultipleChoice2.A => 1,
         MultipleChoice2.B => 2,
@@ -721,11 +721,11 @@ test "union with only 1 field casted to its enum type which has enum value speci
     try comptime expect(Tag(ExprTag) == comptime_int);
     comptime var t = @as(ExprTag, e);
     try expect(t == Expr.Literal);
-    try expect(@enumToInt(t) == 33);
-    try comptime expect(@enumToInt(t) == 33);
+    try expect(@intFromEnum(t) == 33);
+    try comptime expect(@intFromEnum(t) == 33);
 }
 
-test "@enumToInt works on unions" {
+test "@intFromEnum works on unions" {
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
@@ -739,9 +739,9 @@ test "@enumToInt works on unions" {
     const a = Bar{ .A = true };
     var b = Bar{ .B = undefined };
     var c = Bar.C;
-    try expect(@enumToInt(a) == 0);
-    try expect(@enumToInt(b) == 1);
-    try expect(@enumToInt(c) == 2);
+    try expect(@intFromEnum(a) == 0);
+    try expect(@intFromEnum(b) == 1);
+    try expect(@intFromEnum(c) == 2);
 }
 
 test "comptime union field value equality" {
@@ -1396,7 +1396,7 @@ test "@unionInit uses tag value instead of field index" {
         var a = &u.b;
         try expect(a.* == i);
     }
-    try expect(@enumToInt(u) == 255);
+    try expect(@intFromEnum(u) == 255);
 }
 
 test "union field ptr - zero sized payload" {
test/behavior/vector.zig
@@ -1173,7 +1173,7 @@ test "byte vector initialized in inline function" {
     if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
 
     if (comptime builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .x86_64 and
-        builtin.cpu.features.isEnabled(@enumToInt(std.Target.x86.Feature.avx512f)))
+        builtin.cpu.features.isEnabled(@intFromEnum(std.Target.x86.Feature.avx512f)))
     {
         // TODO https://github.com/ziglang/zig/issues/13279
         return error.SkipZigTest;
test/c_abi/main.zig
@@ -143,11 +143,11 @@ export fn zig_longdouble(x: c_longdouble) void {
 extern fn c_ptr(*anyopaque) void;
 
 test "C ABI pointer" {
-    c_ptr(@intToPtr(*anyopaque, 0xdeadbeef));
+    c_ptr(@ptrFromInt(*anyopaque, 0xdeadbeef));
 }
 
 export fn zig_ptr(x: *anyopaque) void {
-    expect(@ptrToInt(x) == 0xdeadbeef) catch @panic("test failure: zig_ptr");
+    expect(@intFromPtr(x) == 0xdeadbeef) catch @panic("test failure: zig_ptr");
 }
 
 extern fn c_bool(bool) void;
@@ -1058,14 +1058,14 @@ test "C function that takes byval struct called via function pointer" {
 
     var fn_ptr = &c_func_ptr_byval;
     fn_ptr(
-        @intToPtr(*anyopaque, 1),
-        @intToPtr(*anyopaque, 2),
+        @ptrFromInt(*anyopaque, 1),
+        @ptrFromInt(*anyopaque, 2),
         ByVal{
             .origin = .{ .x = 9, .y = 10, .z = 11 },
             .size = .{ .width = 12, .height = 13, .depth = 14 },
         },
         @as(c_ulong, 3),
-        @intToPtr(*anyopaque, 4),
+        @ptrFromInt(*anyopaque, 4),
         @as(c_ulong, 5),
     );
 }
test/cases/compile_errors/async/non_async_function_pointer_passed_to_asyncCall.zig
@@ -3,7 +3,7 @@ export fn entry() void {
     var bytes: [100]u8 align(16) = undefined;
     _ = @asyncCall(&bytes, {}, ptr, .{});
 }
-fn afunc() void { }
+fn afunc() void {}
 
 // error
 // backend=stage1
test/cases/compile_errors/async/prevent_bad_implicit_casting_of_anyframe_types.zig
@@ -21,4 +21,4 @@ fn func() void {}
 //
 // :3:28: error: expected type 'anyframe->i32', found 'anyframe'
 // :8:28: error: expected type 'anyframe->i32', found 'i32'
-// tmp.zig:13:29: error: expected type 'anyframe->i32', found '*@Frame(func)'
\ No newline at end of file
+// tmp.zig:13:29: error: expected type 'anyframe->i32', found '*@Frame(func)'
test/cases/compile_errors/async/runtime-known_function_called_with_async_keyword.zig
@@ -3,7 +3,7 @@ export fn entry() void {
     _ = async ptr();
 }
 
-fn afunc() callconv(.Async) void { }
+fn afunc() callconv(.Async) void {}
 
 // error
 // backend=stage1
test/cases/compile_errors/stage1/obj/generic_function_where_return_type_is_self-referenced.zig
@@ -1,10 +1,8 @@
 fn Foo(comptime T: type) Foo(T) {
-    return struct{ x: T };
+    return struct { x: T };
 }
 export fn entry() void {
-    const t = Foo(u32) {
-      .x = 1
-    };
+    const t = Foo(u32){ .x = 1 };
     _ = t;
 }
 
test/cases/compile_errors/stage1/obj/unsupported_modifier_at_start_of_asm_output_constraint.zig
@@ -1,6 +1,10 @@
 export fn foo() void {
     var bar: u32 = 3;
-    asm volatile ("" : [baz]"+r"(bar) : : "");
+    asm volatile (""
+        : [baz] "+r" (bar),
+        :
+        : ""
+    );
 }
 
 // error
test/cases/compile_errors/add_overflow_in_function_evaluation.zig
@@ -3,7 +3,9 @@ fn add(a: u16, b: u16) u16 {
     return a + b;
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(y)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(y));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/addition_with_non_numbers.zig
@@ -1,12 +1,14 @@
 const Foo = struct {
     field: i32,
 };
-const x = Foo {.field = 1} + Foo {.field = 2};
+const x = Foo{ .field = 1 } + Foo{ .field = 2 };
 
-export fn entry() usize { return @sizeOf(@TypeOf(x)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(x));
+}
 
 // error
 // backend=llvm
 // target=native
 //
-// :4:28: error: invalid operands to binary expression: 'Struct' and 'Struct'
+// :4:29: error: invalid operands to binary expression: 'Struct' and 'Struct'
test/cases/compile_errors/address_of_number_literal.zig
@@ -1,12 +1,16 @@
 const x = 3;
 const y = &x;
-fn foo() *const i32 { return y; }
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+fn foo() *const i32 {
+    return y;
+}
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
 // target=native
 //
-// :3:30: error: expected type '*const i32', found '*const comptime_int'
-// :3:30: note: pointer type child 'comptime_int' cannot cast into pointer type child 'i32'
+// :4:12: error: expected type '*const i32', found '*const comptime_int'
+// :4:12: note: pointer type child 'comptime_int' cannot cast into pointer type child 'i32'
 // :3:10: note: function return type declared here
test/cases/compile_errors/alignment_of_enum_field_specified.zig
@@ -1,7 +1,10 @@
+// zig fmt: off
 const Number = enum {
     a,
     b align(i32),
 };
+// zig fmt: on
+
 export fn entry1() void {
     var x: Number = undefined;
     _ = x;
@@ -11,4 +14,4 @@ export fn entry1() void {
 // backend=stage2
 // target=native
 //
-// :3:13: error: enum fields cannot be aligned
+// :4:13: error: enum fields cannot be aligned
test/cases/compile_errors/array_concatenation_with_wrong_type.zig
@@ -2,7 +2,9 @@ const src = "aoeu";
 const derp: usize = 1234;
 const a = derp ++ "foo";
 
-export fn entry() usize { return @sizeOf(@TypeOf(a)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(a));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/array_mult_with_number_type.zig
@@ -7,4 +7,4 @@ export fn entry(base: f32, exponent: f32) f32 {
 // target=native
 //
 // :2:12: error: expected indexable; found 'f32'
-// :2:17: note: this operator multiplies arrays; use std.math.pow for exponentiation
\ No newline at end of file
+// :2:17: note: this operator multiplies arrays; use std.math.pow for exponentiation
test/cases/compile_errors/assign_inline_fn_to_non-comptime_var.zig
@@ -2,7 +2,7 @@ export fn entry() void {
     var a = &b;
     _ = a;
 }
-fn b() callconv(.Inline) void { }
+inline fn b() void {}
 
 // error
 // backend=stage2
test/cases/compile_errors/assign_null_to_non-optional_pointer.zig
@@ -1,6 +1,8 @@
 const a: *u8 = null;
 
-export fn entry() usize { return @sizeOf(@TypeOf(a)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(a));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/assign_through_constant_pointer.zig
@@ -1,10 +1,10 @@
 export fn f() void {
-  var cstr = "Hat";
-  cstr[0] = 'W';
+    var cstr = "Hat";
+    cstr[0] = 'W';
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :3:7: error: cannot assign to constant
+// :3:9: error: cannot assign to constant
test/cases/compile_errors/assign_through_constant_slice.zig
@@ -1,10 +1,10 @@
 export fn f() void {
-  var cstr: []const u8 = "Hat";
-  cstr[0] = 'W';
+    var cstr: []const u8 = "Hat";
+    cstr[0] = 'W';
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :3:7: error: cannot assign to constant
+// :3:9: error: cannot assign to constant
test/cases/compile_errors/assign_to_constant_field.zig
@@ -2,7 +2,9 @@ const Foo = struct {
     field: i32,
 };
 export fn derp() void {
-    const f = Foo {.field = 1234,};
+    const f = Foo{
+        .field = 1234,
+    };
     f.field = 0;
 }
 
@@ -10,4 +12,4 @@ export fn derp() void {
 // backend=stage2
 // target=native
 //
-// :6:6: error: cannot assign to constant
+// :8:6: error: cannot assign to constant
test/cases/compile_errors/bad_alignCast_at_comptime.zig
@@ -1,5 +1,5 @@
 comptime {
-    const ptr = @intToPtr(*align(1) i32, 0x1);
+    const ptr = @ptrFromInt(*align(1) i32, 0x1);
     const aligned = @alignCast(4, ptr);
     _ = aligned;
 }
test/cases/compile_errors/bad_import.zig
@@ -1,4 +1,6 @@
-const bogus = @import("bogus-does-not-exist.zig",);
+const bogus = @import(
+    "bogus-does-not-exist.zig",
+);
 
 // error
 // backend=stage2
test/cases/compile_errors/binary_not_on_number_literal.zig
@@ -2,7 +2,9 @@ const TINY_QUANTUM_SHIFT = 4;
 const TINY_QUANTUM_SIZE = 1 << TINY_QUANTUM_SHIFT;
 var block_aligned_stuff: usize = (4 + TINY_QUANTUM_SIZE) & ~(TINY_QUANTUM_SIZE - 1);
 
-export fn entry() usize { return @sizeOf(@TypeOf(block_aligned_stuff)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(block_aligned_stuff));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/bitCast_to_enum_type.zig
@@ -9,4 +9,4 @@ export fn entry() void {
 // target=native
 //
 // :3:24: error: cannot @bitCast to 'tmp.entry.E'
-// :3:24: note: use @intToEnum to cast from 'u32'
+// :3:24: note: use @enumFromInt to cast from 'u32'
test/cases/compile_errors/bogus_compile_var.zig
@@ -1,5 +1,7 @@
 const x = @import("builtin").bogus;
-export fn entry() usize { return @sizeOf(@TypeOf(x)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(x));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/bogus_method_call_on_slice.zig
@@ -2,7 +2,9 @@ var self = "aoeu";
 fn f(m: []const u8) void {
     m.copy(u8, self[0..], m);
 }
-export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&f));
+}
 pub export fn entry1() void {
     .{}.bar();
 }
@@ -14,6 +16,6 @@ pub export fn entry2() void {
 // backend=stage2
 // target=native
 //
-// :7:8: error: no field or member function named 'bar' in '@TypeOf(.{})'
-// :10:18: error: no field or member function named 'bar' in 'struct{comptime foo: comptime_int = 1}'
+// :9:8: error: no field or member function named 'bar' in '@TypeOf(.{})'
+// :12:18: error: no field or member function named 'bar' in 'struct{comptime foo: comptime_int = 1}'
 // :3:6: error: no field or member function named 'copy' in '[]const u8'
test/cases/compile_errors/branch_on_undefined_value.zig
@@ -1,6 +1,8 @@
 const x = if (undefined) true else false;
 
-export fn entry() usize { return @sizeOf(@TypeOf(x)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(x));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/calling_function_with_naked_calling_convention.zig
@@ -1,7 +1,7 @@
 export fn entry() void {
     foo();
 }
-fn foo() callconv(.Naked) void { }
+fn foo() callconv(.Naked) void {}
 
 // error
 // backend=llvm
test/cases/compile_errors/calling_var_args_extern_function_passing_array_instead_of_pointer.zig
@@ -1,5 +1,7 @@
 export fn entry() void {
-    foo("hello".*,);
+    foo(
+        "hello".*,
+    );
 }
 pub extern fn foo(format: *const u8, ...) void;
 
@@ -7,5 +9,5 @@ pub extern fn foo(format: *const u8, ...) void;
 // backend=stage2
 // target=native
 //
-// :2:16: error: expected type '*const u8', found '[5:0]u8'
-// :4:27: note: parameter type declared here
+// :3:16: error: expected type '*const u8', found '[5:0]u8'
+// :6:27: note: parameter type declared here
test/cases/compile_errors/cast_unreachable.zig
@@ -1,7 +1,9 @@
 fn f() i32 {
     return @as(i32, return 1);
 }
-export fn entry() void { _ = f(); }
+export fn entry() void {
+    _ = f();
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/casting_bit_offset_pointer_to_regular_pointer.zig
@@ -12,7 +12,9 @@ fn bar(x: *const u3) u3 {
     return x.*;
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/colliding_invalid_top_level_functions.zig
@@ -1,6 +1,8 @@
 fn func() bogus {}
 fn func() bogus {}
-export fn entry() usize { return @sizeOf(@TypeOf(func)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(func));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/compile_log_statement_warning_deduplication_in_generic_fn.zig
@@ -4,15 +4,17 @@ export fn entry() void {
 }
 fn inner(comptime n: usize) void {
     comptime var i = 0;
-    inline while (i < n) : (i += 1) { @compileLog("!@#$"); }
+    inline while (i < n) : (i += 1) {
+        @compileLog("!@#$");
+    }
 }
 
 // error
 // backend=llvm
 // target=native
 //
-// :7:39: error: found compile log statement
-// :7:39: note: also here
+// :8:9: error: found compile log statement
+// :8:9: note: also here
 //
 // Compile Log Output:
 // @as(*const [4:0]u8, "!@#$")
test/cases/compile_errors/compile_time_division_by_zero.zig
@@ -3,7 +3,9 @@ fn foo(x: u32) u32 {
     return 1 / x;
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(y)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(y));
+}
 
 // error
 // backend=llvm
test/cases/compile_errors/compileError_shows_traceback_of_references_that_caused_it.zig
@@ -1,4 +1,6 @@
-const foo = @compileError("aoeu",);
+const foo = @compileError(
+    "aoeu",
+);
 
 const bar = baz + foo;
 const baz = 1;
test/cases/compile_errors/comptime_call_of_function_pointer.zig
@@ -1,5 +1,5 @@
 export fn entry() void {
-    const fn_ptr = @intToPtr(*align(1) fn () void, 0xffd2);
+    const fn_ptr = @ptrFromInt(*align(1) fn () void, 0xffd2);
     comptime fn_ptr();
 }
 
test/cases/compile_errors/comptime_if_inside_runtime_for.zig
@@ -1,14 +1,14 @@
 export fn entry() void {
-	var x: u32 = 0;
-	for(0..1, 1..2) |_, _| {
-		var y = x + if(x == 0) 1 else 0;
-		_ = y;
-	}
+    var x: u32 = 0;
+    for (0..1, 1..2) |_, _| {
+        var y = x + if (x == 0) 1 else 0;
+        _ = y;
+    }
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :4:15: error: value with comptime-only type 'comptime_int' depends on runtime control flow
-// :3:6: note: runtime control flow here
+// :4:21: error: value with comptime-only type 'comptime_int' depends on runtime control flow
+// :3:10: note: runtime control flow here
test/cases/compile_errors/constant_inside_comptime_function_has_compile_error.zig
@@ -1,7 +1,9 @@
 const ContextAllocator = MemoryPool(usize);
 
 pub fn MemoryPool(comptime T: type) type {
-    const free_list_t = @compileError("aoeu",);
+    const free_list_t = @compileError(
+        "aoeu",
+    );
     _ = T;
 
     return struct {
test/cases/compile_errors/container_init_with_non-type.zig
@@ -1,7 +1,9 @@
 const zero: i32 = 0;
 const a = zero{1};
 
-export fn entry() usize { return @sizeOf(@TypeOf(a)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(a));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/control_flow_uses_comptime_var_at_runtime.zig
@@ -5,7 +5,7 @@ export fn foo() void {
     }
 }
 
-fn bar() void { }
+fn bar() void {}
 export fn baz() void {
     comptime var idx: u32 = 0;
     while (idx < 1) {
test/cases/compile_errors/dereference_an_array.zig
@@ -5,7 +5,9 @@ pub fn pass(in: []u8) []u8 {
     return out.*[0..1];
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&pass)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&pass));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/direct_struct_loop.zig
@@ -1,9 +1,13 @@
-const A = struct { a : A, };
-export fn entry() usize { return @sizeOf(A); }
+const A = struct {
+    a: A,
+};
+export fn entry() usize {
+    return @sizeOf(A);
+}
 
 // error
 // backend=stage2
 // target=native
 //
 // :1:11: error: struct 'tmp.A' depends on itself
-// :1:20: note: while checking this field
+// :2:5: note: while checking this field
test/cases/compile_errors/disallow_coercion_from_non-null-terminated_pointer_to_null-terminated_pointer.zig
@@ -1,6 +1,6 @@
 extern fn puts(s: [*:0]const u8) c_int;
 pub export fn entry() void {
-    const no_zero_array = [_]u8{'h', 'e', 'l', 'l', 'o'};
+    const no_zero_array = [_]u8{ 'h', 'e', 'l', 'l', 'o' };
     const no_zero_ptr: [*]const u8 = &no_zero_array;
     _ = puts(no_zero_ptr);
 }
test/cases/compile_errors/division_by_zero.zig
@@ -3,10 +3,18 @@ const lit_float_x = 1.0 / 0.0;
 const int_x = @as(u32, 1) / @as(u32, 0);
 const float_x = @as(f32, 1.0) / @as(f32, 0.0);
 
-export fn entry1() usize { return @sizeOf(@TypeOf(lit_int_x)); }
-export fn entry2() usize { return @sizeOf(@TypeOf(lit_float_x)); }
-export fn entry3() usize { return @sizeOf(@TypeOf(int_x)); }
-export fn entry4() usize { return @sizeOf(@TypeOf(float_x)); } // no error on purpose
+export fn entry1() usize {
+    return @sizeOf(@TypeOf(lit_int_x));
+}
+export fn entry2() usize {
+    return @sizeOf(@TypeOf(lit_float_x));
+}
+export fn entry3() usize {
+    return @sizeOf(@TypeOf(int_x));
+}
+export fn entry4() usize {
+    return @sizeOf(@TypeOf(float_x));
+} // no error on purpose
 
 // error
 // backend=stage2
test/cases/compile_errors/duplicate-unused_labels.zig
@@ -1,31 +1,37 @@
 comptime {
-    blk: { blk: while (false) {} }
+    blk: {
+        blk: while (false) {}
+    }
 }
 comptime {
-    blk: while (false) { blk: for (@as([0]void, undefined)) |_| {} }
+    blk: while (false) {
+        blk: for (@as([0]void, undefined)) |_| {}
+    }
 }
 comptime {
-    blk: for (@as([0]void, undefined)) |_| { blk: {} }
+    blk: for (@as([0]void, undefined)) |_| {
+        blk: {}
+    }
 }
 comptime {
     blk: {}
 }
 comptime {
-    blk: while(false) {}
+    blk: while (false) {}
 }
 comptime {
-    blk: for(@as([0]void, undefined)) |_| {}
+    blk: for (@as([0]void, undefined)) |_| {}
 }
 
 // error
 // target=native
 //
-// :2:12: error: redefinition of label 'blk'
+// :3:9: error: redefinition of label 'blk'
 // :2:5: note: previous definition here
-// :5:26: error: redefinition of label 'blk'
-// :5:5: note: previous definition here
-// :8:46: error: redefinition of label 'blk'
-// :8:5: note: previous definition here
-// :11:5: error: unused block label
-// :14:5: error: unused while loop label
-// :17:5: error: unused for loop label
+// :8:9: error: redefinition of label 'blk'
+// :7:5: note: previous definition here
+// :13:9: error: redefinition of label 'blk'
+// :12:5: note: previous definition here
+// :17:5: error: unused block label
+// :20:5: error: unused while loop label
+// :23:5: error: unused for loop label
test/cases/compile_errors/duplicate_error_value_in_error_set.zig
@@ -1,4 +1,4 @@
-const Foo = error {
+const Foo = error{
     Bar,
     Bar,
 };
test/cases/compile_errors/duplicate_field_in_struct_value_expression.zig
@@ -1,10 +1,10 @@
 const A = struct {
-    x : i32,
-    y : i32,
-    z : i32,
+    x: i32,
+    y: i32,
+    z: i32,
 };
 export fn f() void {
-    const a = A {
+    const a = A{
         .z = 1,
         .y = 2,
         .x = 3,
test/cases/compile_errors/embedFile_with_bogus_file.zig
@@ -1,6 +1,8 @@
-const resource = @embedFile("bogus.txt",);
+const resource = @embedFile("bogus.txt");
 
-export fn entry() usize { return @sizeOf(@TypeOf(resource)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(resource));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/empty_switch_on_an_integer.zig
@@ -1,6 +1,6 @@
 export fn entry() void {
     var x: u32 = 0;
-    switch(x) {}
+    switch (x) {}
 }
 
 // error
test/cases/compile_errors/enum_in_field_count_range_but_not_matching_tag.zig
@@ -3,7 +3,7 @@ const Foo = enum(u32) {
     B = 11,
 };
 export fn entry() void {
-    var x = @intToEnum(Foo, 0);
+    var x = @enumFromInt(Foo, 0);
     _ = x;
 }
 
test/cases/compile_errors/enum_with_declarations_unavailable_for_reify_type.zig
@@ -1,5 +1,8 @@
 export fn entry() void {
-    _ = @Type(@typeInfo(enum { foo, const bar = 1; }));
+    _ = @Type(@typeInfo(enum {
+        foo,
+        const bar = 1;
+    }));
 }
 
 // error
test/cases/compile_errors/intToEnum_on_non-exhaustive_enums_checks_int_in_range.zig โ†’ test/cases/compile_errors/enumFromInt_on_non-exhaustive_enums_checks_int_in_range.zig
@@ -1,6 +1,6 @@
 pub export fn entry() void {
     const E = enum(u3) { a, b, c, _ };
-    @compileLog(@intToEnum(E, 100));
+    @compileLog(@enumFromInt(E, 100));
 }
 
 // error
test/cases/compile_errors/error_not_handled_in_switch.zig
@@ -5,9 +5,9 @@ export fn entry() void {
 }
 fn foo(x: i32) !void {
     switch (x) {
-        0 ... 10 => return error.Foo,
-        11 ... 20 => return error.Bar,
-        21 ... 30 => return error.Baz,
+        0...10 => return error.Foo,
+        11...20 => return error.Bar,
+        21...30 => return error.Baz,
         else => {},
     }
 }
test/cases/compile_errors/error_note_for_function_parameter_incompatibility.zig
@@ -1,5 +1,9 @@
-fn do_the_thing(func: *const fn (arg: i32) void) void { _ = func; }
-fn bar(arg: bool) void { _ = arg; }
+fn do_the_thing(func: *const fn (arg: i32) void) void {
+    _ = func;
+}
+fn bar(arg: bool) void {
+    _ = arg;
+}
 export fn entry() void {
     do_the_thing(bar);
 }
@@ -8,6 +12,6 @@ export fn entry() void {
 // backend=stage2
 // target=native
 //
-// :4:18: error: expected type '*const fn(i32) void', found '*const fn(bool) void'
-// :4:18: note: pointer type child 'fn(bool) void' cannot cast into pointer type child 'fn(i32) void'
-// :4:18: note: parameter 0 'bool' cannot cast into 'i32'
+// :8:18: error: expected type '*const fn(i32) void', found '*const fn(bool) void'
+// :8:18: note: pointer type child 'fn(bool) void' cannot cast into pointer type child 'fn(i32) void'
+// :8:18: note: parameter 0 'bool' cannot cast into 'i32'
test/cases/compile_errors/explicitly_casting_non_tag_type_to_enum.zig
@@ -7,7 +7,7 @@ const Small = enum(u2) {
 
 export fn entry() void {
     var y = @as(f32, 3);
-    var x = @intToEnum(Small, y);
+    var x = @enumFromInt(Small, y);
     _ = x;
 }
 
@@ -15,4 +15,4 @@ export fn entry() void {
 // backend=stage2
 // target=native
 //
-// :10:31: error: expected integer type, found 'f32'
+// :10:33: error: expected integer type, found 'f32'
test/cases/compile_errors/export_function_with_comptime_parameter.zig
@@ -1,4 +1,4 @@
-export fn foo(comptime x: anytype, y: i32) i32{
+export fn foo(comptime x: anytype, y: i32) i32 {
     return x + y;
 }
 
test/cases/compile_errors/export_with_empty_name_string.zig
@@ -1,4 +1,4 @@
-pub export fn entry() void { }
+pub export fn entry() void {}
 comptime {
     @export(entry, .{ .name = "" });
 }
test/cases/compile_errors/extern_function_pointer_mismatch.zig
@@ -1,13 +1,21 @@
-const fns = [_](fn(i32)i32) { a, b, c };
-pub fn a(x: i32) i32 {return x + 0;}
-pub fn b(x: i32) i32 {return x + 1;}
-export fn c(x: i32) i32 {return x + 2;}
+const fns = [_](fn (i32) i32){ a, b, c };
+pub fn a(x: i32) i32 {
+    return x + 0;
+}
+pub fn b(x: i32) i32 {
+    return x + 1;
+}
+export fn c(x: i32) i32 {
+    return x + 2;
+}
 
-export fn entry() usize { return @sizeOf(@TypeOf(fns)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(fns));
+}
 
 // error
 // backend=stage2
 // target=native
 //
-// :1:37: error: expected type 'fn(i32) i32', found 'fn(i32) callconv(.C) i32'
-// :1:37: note: calling convention 'C' cannot cast into calling convention 'Unspecified'
+// :1:38: error: expected type 'fn(i32) i32', found 'fn(i32) callconv(.C) i32'
+// :1:38: note: calling convention 'C' cannot cast into calling convention 'Unspecified'
test/cases/compile_errors/extern_function_with_comptime_parameter.zig
@@ -4,9 +4,15 @@ fn f() i32 {
 }
 pub extern fn entry1(b: u32, comptime a: [2]u8, c: i32) void;
 pub extern fn entry2(b: u32, noalias a: anytype, i43) void;
-comptime { _ = &f; }
-comptime { _ = &entry1; }
-comptime { _ = &entry2; }
+comptime {
+    _ = &f;
+}
+comptime {
+    _ = &entry1;
+}
+comptime {
+    _ = &entry2;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/extern_struct_with_extern-compatible_but_inferred_integer_tag_type.zig
@@ -1,3 +1,4 @@
+// zig fmt: off
 pub const E = enum {
 @"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",
 @"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",
@@ -27,6 +28,7 @@ pub const E = enum {
 @"245",@"246",@"247",@"248",@"249",@"250",@"251",@"252",@"253",
 @"254",@"255", @"256"
 };
+// zig fmt: on
 pub const S = extern struct {
     e: E,
 };
@@ -39,7 +41,7 @@ export fn entry() void {
 // backend=stage2
 // target=native
 //
-// :31:8: error: extern structs cannot contain fields of type 'tmp.E'
-// :31:8: note: enum tag type 'u9' is not extern compatible
-// :31:8: note: only integers with power of two bits are extern compatible
-// :1:15: note: enum declared here
+// :33:8: error: extern structs cannot contain fields of type 'tmp.E'
+// :33:8: note: enum tag type 'u9' is not extern compatible
+// :33:8: note: only integers with power of two bits are extern compatible
+// :2:15: note: enum declared here
test/cases/compile_errors/extern_union_field_missing_type.zig
@@ -2,7 +2,7 @@ const Letter = extern union {
     A,
 };
 export fn entry() void {
-    var a = Letter { .A = {} };
+    var a = Letter{ .A = {} };
     _ = a;
 }
 
test/cases/compile_errors/extern_union_given_enum_tag_type.zig
@@ -9,7 +9,7 @@ const Payload = extern union(Letter) {
     C: bool,
 };
 export fn entry() void {
-    var a = Payload { .A = 1234 };
+    var a = Payload{ .A = 1234 };
     _ = a;
 }
 
test/cases/compile_errors/fieldParentPtr-comptime_field_ptr_not_based_on_struct.zig
@@ -2,10 +2,13 @@ const Foo = struct {
     a: i32,
     b: i32,
 };
-const foo = Foo { .a = 1, .b = 2, };
+const foo = Foo{
+    .a = 1,
+    .b = 2,
+};
 
 comptime {
-    const field_ptr = @intToPtr(*i32, 0x1234);
+    const field_ptr = @ptrFromInt(*i32, 0x1234);
     const another_foo_ptr = @fieldParentPtr(Foo, "b", field_ptr);
     _ = another_foo_ptr;
 }
@@ -14,4 +17,4 @@ comptime {
 // backend=stage2
 // target=native
 //
-// :9:55: error: pointer value not based on parent struct
+// :12:55: error: pointer value not based on parent struct
test/cases/compile_errors/fieldParentPtr-comptime_wrong_field_index.zig
@@ -2,7 +2,10 @@ const Foo = struct {
     a: i32,
     b: i32,
 };
-const foo = Foo { .a = 1, .b = 2, };
+const foo = Foo{
+    .a = 1,
+    .b = 2,
+};
 
 comptime {
     const another_foo_ptr = @fieldParentPtr(Foo, "b", &foo.a);
@@ -13,5 +16,5 @@ comptime {
 // backend=stage2
 // target=native
 //
-// :8:29: error: field 'b' has index '1' but pointer value is index '0' of struct 'tmp.Foo'
+// :11:29: error: field 'b' has index '1' but pointer value is index '0' of struct 'tmp.Foo'
 // :1:13: note: struct declared here
test/cases/compile_errors/floatToInt_comptime_safety.zig
@@ -1,17 +0,0 @@
-comptime {
-    _ = @floatToInt(i8, @as(f32, -129.1));
-}
-comptime {
-    _ = @floatToInt(u8, @as(f32, -1.1));
-}
-comptime {
-    _ = @floatToInt(u8, @as(f32, 256.1));
-}
-
-// error
-// backend=stage2
-// target=native
-//
-// :2:25: error: float value '-129.10000610351562' cannot be stored in integer type 'i8'
-// :5:25: error: float value '-1.100000023841858' cannot be stored in integer type 'u8'
-// :8:25: error: float value '256.1000061035156' cannot be stored in integer type 'u8'
test/cases/compile_errors/for.zig
@@ -1,13 +1,15 @@
 export fn a() void {
     for (0..10, 10..21) |i, j| {
-        _ = i; _ = j;
+        _ = i;
+        _ = j;
     }
 }
 export fn b() void {
     const s1 = "hello";
     const s2 = true;
     for (s1, s2) |i, j| {
-        _ = i; _ = j;
+        _ = i;
+        _ = j;
     }
 }
 export fn c() void {
@@ -20,7 +22,9 @@ export fn d() void {
     const x: [*]const u8 = "hello";
     const y: [*]const u8 = "world";
     for (x, 0.., y) |x1, x2, x3| {
-        _ = x1; _ = x2; _ = x3;
+        _ = x1;
+        _ = x2;
+        _ = x3;
     }
 }
 
@@ -31,10 +35,10 @@ export fn d() void {
 // :2:5: error: non-matching for loop lengths
 // :2:11: note: length 10 here
 // :2:19: note: length 11 here
-// :9:14: error: type 'bool' is not indexable and not a range
-// :9:14: note: for loop operand must be a range, array, slice, tuple, or vector
-// :15:16: error: pointer capture of non pointer type '[10]u8'
-// :15:10: note: consider using '&' here
-// :22:5: error: unbounded for loop
-// :22:10: note: type '[*]const u8' has no upper bound
-// :22:18: note: type '[*]const u8' has no upper bound
+// :10:14: error: type 'bool' is not indexable and not a range
+// :10:14: note: for loop operand must be a range, array, slice, tuple, or vector
+// :17:16: error: pointer capture of non pointer type '[10]u8'
+// :17:10: note: consider using '&' here
+// :24:5: error: unbounded for loop
+// :24:10: note: type '[*]const u8' has no upper bound
+// :24:18: note: type '[*]const u8' has no upper bound
test/cases/compile_errors/for_extra_capture.zig
@@ -1,12 +1,15 @@
+// zig fmt: off
 export fn b() void {
     for (0..10) |i, j| {
-        _ = i; _ = j;
+        _ = i;
+        _ = j;
     }
 }
+// zig fmt: on
 
 // error
 // backend=stage2
 // target=native
 //
-// :2:21: error: extra capture in for loop
-// :2:21: note: run 'zig fmt' to upgrade your code automatically
+// :3:21: error: extra capture in for loop
+// :3:21: note: run 'zig fmt' to upgrade your code automatically
test/cases/compile_errors/function_alignment_non_power_of_2.zig
@@ -1,5 +1,7 @@
 extern fn foo() align(3) void;
-export fn entry() void { return foo(); }
+export fn entry() void {
+    return foo();
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/function_call_assigned_to_incorrect_type.zig
@@ -3,7 +3,7 @@ export fn entry() void {
     arr = concat();
 }
 fn concat() [16]f32 {
-    return [1]f32{0}**16;
+    return [1]f32{0} ** 16;
 }
 
 // error
test/cases/compile_errors/function_parameter_is_opaque.zig
@@ -9,12 +9,16 @@ export fn entry2() void {
     _ = someFuncPtr;
 }
 
-fn foo(p: FooType) void {_ = p;}
+fn foo(p: FooType) void {
+    _ = p;
+}
 export fn entry3() void {
     _ = foo;
 }
 
-fn bar(p: @TypeOf(null)) void {_ = p;}
+fn bar(p: @TypeOf(null)) void {
+    _ = p;
+}
 export fn entry4() void {
     _ = bar;
 }
@@ -28,4 +32,4 @@ export fn entry4() void {
 // :8:28: error: parameter of type '@TypeOf(null)' not allowed
 // :12:8: error: parameter of opaque type 'tmp.FooType' not allowed
 // :1:17: note: opaque declared here
-// :17:8: error: parameter of type '@TypeOf(null)' not allowed
+// :19:8: error: parameter of type '@TypeOf(null)' not allowed
test/cases/compile_errors/function_with_non-extern_non-packed_enum_parameter.zig
@@ -1,5 +1,7 @@
 const Foo = enum { A, B, C };
-export fn entry(foo: Foo) void { _ = foo; }
+export fn entry(foo: Foo) void {
+    _ = foo;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/function_with_non-extern_non-packed_struct_parameter.zig
@@ -3,7 +3,9 @@ const Foo = struct {
     B: f32,
     C: bool,
 };
-export fn entry(foo: Foo) void { _ = foo; }
+export fn entry(foo: Foo) void {
+    _ = foo;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/function_with_non-extern_non-packed_union_parameter.zig
@@ -3,7 +3,9 @@ const Foo = union {
     B: f32,
     C: bool,
 };
-export fn entry(foo: Foo) void { _ = foo; }
+export fn entry(foo: Foo) void {
+    _ = foo;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/generic_function_call_assigned_to_incorrect_type.zig
@@ -2,7 +2,7 @@ pub export fn entry() void {
     var res: []i32 = undefined;
     res = myAlloc(i32);
 }
-fn myAlloc(comptime arg: type) anyerror!arg{
+fn myAlloc(comptime arg: type) anyerror!arg {
     unreachable;
 }
 
test/cases/compile_errors/generic_function_instance_with_non-constant_expression.zig
@@ -1,13 +1,17 @@
-fn foo(comptime x: i32, y: i32) i32 { return x + y; }
+fn foo(comptime x: i32, y: i32) i32 {
+    return x + y;
+}
 fn test1(a: i32, b: i32) i32 {
     return foo(a, b);
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&test1)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&test1));
+}
 
 // error
 // backend=stage2
 // target=native
 //
-// :3:16: error: unable to resolve comptime value
-// :3:16: note: parameter is comptime
+// :5:16: error: unable to resolve comptime value
+// :5:16: note: parameter is comptime
test/cases/compile_errors/generic_instantiation_failure_in_generic_function_return_type.zig
@@ -6,7 +6,6 @@ pub export fn entry() void {
 }
 fn sliceAsBytes(slice: anytype) std.meta.trait.isPtrTo(.Array)(@TypeOf(slice)) {}
 
-
 // error
 // backend=llvm
 // target=native
test/cases/compile_errors/global_variable_alignment_non_power_of_2.zig
@@ -1,5 +1,7 @@
 const some_data: [100]u8 align(3) = undefined;
-export fn entry() usize { return @sizeOf(@TypeOf(some_data)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(some_data));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/global_variable_initializer_must_be_constant_expression.zig
@@ -1,6 +1,8 @@
 extern fn foo() i32;
 const x = foo();
-export fn entry() i32 { return x; }
+export fn entry() i32 {
+    return x;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/ignored_assert-err-ok_return_value.zig
@@ -1,7 +1,9 @@
 export fn foo() void {
     bar() catch unreachable;
 }
-fn bar() anyerror!i32 { return 0; }
+fn bar() anyerror!i32 {
+    return 0;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/ignored_comptime_statement_value.zig
@@ -1,11 +1,13 @@
 export fn foo() void {
-    comptime {1;}
+    comptime {
+        1;
+    }
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :2:15: error: value of type 'comptime_int' ignored
-// :2:15: note: all non-void values must be used
-// :2:15: note: this error can be suppressed by assigning the value to '_'
+// :3:9: error: value of type 'comptime_int' ignored
+// :3:9: note: all non-void values must be used
+// :3:9: note: this error can be suppressed by assigning the value to '_'
test/cases/compile_errors/ignored_deferred_function_call.zig
@@ -1,7 +1,9 @@
 export fn foo() void {
     defer bar();
 }
-fn bar() anyerror!i32 { return 0; }
+fn bar() anyerror!i32 {
+    return 0;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/ignored_deferred_statement_value.zig
@@ -1,11 +1,13 @@
 export fn foo() void {
-    defer {1;}
+    defer {
+        1;
+    }
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :2:12: error: value of type 'comptime_int' ignored
-// :2:12: note: all non-void values must be used
-// :2:12: note: this error can be suppressed by assigning the value to '_'
+// :3:9: error: value of type 'comptime_int' ignored
+// :3:9: note: all non-void values must be used
+// :3:9: note: this error can be suppressed by assigning the value to '_'
test/cases/compile_errors/ignored_return_value.zig
@@ -1,7 +1,9 @@
 export fn foo() void {
     bar();
 }
-fn bar() i32 { return 0; }
+fn bar() i32 {
+    return 0;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/illegal_comparison_of_types.zig
@@ -9,8 +9,12 @@ fn bad_eql_2(a: *const EnumWithData, b: *const EnumWithData) bool {
     return a.* == b.*;
 }
 
-export fn entry1() usize { return @sizeOf(@TypeOf(&bad_eql_1)); }
-export fn entry2() usize { return @sizeOf(@TypeOf(&bad_eql_2)); }
+export fn entry1() usize {
+    return @sizeOf(@TypeOf(&bad_eql_1));
+}
+export fn entry2() usize {
+    return @sizeOf(@TypeOf(&bad_eql_2));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/implicit_cast_from_array_to_mutable_slice.zig
@@ -1,5 +1,7 @@
 var global_array: [10]i32 = undefined;
-fn foo(param: []i32) void {_ = param;}
+fn foo(param: []i32) void {
+    _ = param;
+}
 export fn entry() void {
     foo(global_array);
 }
@@ -8,4 +10,4 @@ export fn entry() void {
 // backend=llvm
 // target=native
 //
-// :4:9: error: array literal requires address-of operator (&) to coerce to slice type '[]i32'
+// :6:9: error: array literal requires address-of operator (&) to coerce to slice type '[]i32'
test/cases/compile_errors/implicitly_increasing_pointer_alignment.zig
@@ -4,7 +4,7 @@ const Foo = packed struct {
 };
 
 export fn entry() void {
-    var foo = Foo { .a = 1, .b = 10 };
+    var foo = Foo{ .a = 1, .b = 10 };
     bar(&foo.b);
 }
 
test/cases/compile_errors/implicitly_increasing_slice_alignment.zig
@@ -4,7 +4,7 @@ const Foo = packed struct {
 };
 
 export fn entry() void {
-    var foo = Foo { .a = 1, .b = 10 };
+    var foo = Foo{ .a = 1, .b = 10 };
     foo.b += 1;
     bar(@as(*[1]u32, &foo.b)[0..]);
 }
test/cases/compile_errors/import_outside_package_path.zig
@@ -1,4 +1,4 @@
-comptime{
+comptime {
     _ = @import("../a.zig");
 }
 
test/cases/compile_errors/incorrect_return_type.zig
@@ -1,24 +1,24 @@
- pub export fn entry() void{
-     _ = foo();
- }
- const A = struct {
-     a: u32,
- };
- fn foo() A {
-     return bar();
- }
- const B = struct {
-     a: u32,
- };
- fn bar() B {
-     unreachable;
- }
+pub export fn entry() void {
+    _ = foo();
+}
+const A = struct {
+    a: u32,
+};
+fn foo() A {
+    return bar();
+}
+const B = struct {
+    a: u32,
+};
+fn bar() B {
+    unreachable;
+}
 
 // error
 // backend=stage2
 // target=native
 //
-// :8:16: error: expected type 'tmp.A', found 'tmp.B'
-// :10:12: note: struct declared here
-// :4:12: note: struct declared here
-// :7:11: note: function return type declared here
+// :8:15: error: expected type 'tmp.A', found 'tmp.B'
+// :10:11: note: struct declared here
+// :4:11: note: struct declared here
+// :7:10: note: function return type declared here
test/cases/compile_errors/increase_pointer_alignment_in_ptrCast.zig
@@ -1,5 +1,5 @@
 export fn entry() u32 {
-    var bytes: [4]u8 = [_]u8{0x01, 0x02, 0x03, 0x04};
+    var bytes: [4]u8 = [_]u8{ 0x01, 0x02, 0x03, 0x04 };
     const ptr = @ptrCast(*u32, &bytes[0]);
     return ptr.*;
 }
test/cases/compile_errors/indirect_struct_loop.zig
@@ -1,13 +1,21 @@
-const A = struct { b : B, };
-const B = struct { c : C, };
-const C = struct { a : A, };
-export fn entry() usize { return @sizeOf(A); }
+const A = struct {
+    b: B,
+};
+const B = struct {
+    c: C,
+};
+const C = struct {
+    a: A,
+};
+export fn entry() usize {
+    return @sizeOf(A);
+}
 
 // error
 // backend=stage2
 // target=native
 //
 // :1:11: error: struct 'tmp.A' depends on itself
-// :3:20: note: while checking this field
-// :2:20: note: while checking this field
-// :1:20: note: while checking this field
+// :8:5: note: while checking this field
+// :5:5: note: while checking this field
+// :2:5: note: while checking this field
test/cases/compile_errors/inferred_array_size_invalid_here.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 export fn entry2() void {
     const S = struct { a: *const [_]u8 };
-    var a = .{ S{} };
+    var a = .{S{}};
     _ = a;
 }
 
test/cases/compile_errors/inferring_error_set_of_function_pointer.zig
@@ -1,9 +1,9 @@
 comptime {
-    const z: ?fn()!void = null;
+    const z: ?fn () !void = null;
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :2:19: error: function prototype may not have inferred error set
+// :2:21: error: function prototype may not have inferred error set
test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig
@@ -1,17 +1,17 @@
 export fn foo() void {
     var a: f32 = 2;
-    _ = @floatToInt(comptime_int, a);
+    _ = @intFromFloat(comptime_int, a);
 }
 export fn bar() void {
     var a: u32 = 2;
-    _ = @intToFloat(comptime_float, a);
+    _ = @floatFromInt(comptime_float, a);
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :3:35: error: unable to resolve comptime value
-// :3:35: note: value being casted to 'comptime_int' must be comptime-known
-// :7:37: error: unable to resolve comptime value
-// :7:37: note: value being casted to 'comptime_float' must be comptime-known
+// :3:37: error: unable to resolve comptime value
+// :3:37: note: value being casted to 'comptime_int' must be comptime-known
+// :7:39: error: unable to resolve comptime value
+// :7:39: note: value being casted to 'comptime_float' must be comptime-known
test/cases/compile_errors/int_to_err_global_invalid_number.zig
@@ -4,7 +4,7 @@ const Set1 = error{
 };
 comptime {
     var x: u16 = 3;
-    var y = @intToError(x);
+    var y = @errorFromInt(x);
     _ = y;
 }
 
@@ -12,4 +12,4 @@ comptime {
 // backend=stage2
 // target=native
 //
-// :7:25: error: integer value '3' represents no error
+// :7:27: error: integer value '3' represents no error
test/cases/compile_errors/int_to_err_non_global_invalid_number.zig
@@ -7,8 +7,8 @@ const Set2 = error{
     C,
 };
 comptime {
-    var x = @errorToInt(Set1.B);
-    var y = @errSetCast(Set2, @intToError(x));
+    var x = @intFromError(Set1.B);
+    var y = @errSetCast(Set2, @errorFromInt(x));
     _ = y;
 }
 
test/cases/compile_errors/integer_overflow_error.zig
@@ -1,8 +1,10 @@
-const x : u8 = 300;
-export fn entry() usize { return @sizeOf(@TypeOf(x)); }
+const x: u8 = 300;
+export fn entry() usize {
+    return @sizeOf(@TypeOf(x));
+}
 
 // error
 // backend=stage2
 // target=native
 //
-// :1:16: error: type 'u8' cannot represent integer value '300'
+// :1:15: error: type 'u8' cannot represent integer value '300'
test/cases/compile_errors/integer_underflow_error.zig
@@ -1,9 +1,9 @@
 export fn entry() void {
-    _ = @intToPtr(*anyopaque, ~@as(usize, @import("std").math.maxInt(usize)) - 1);
+    _ = @ptrFromInt(*anyopaque, ~@as(usize, @import("std").math.maxInt(usize)) - 1);
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :2:78: error: overflow of integer type 'usize' with value '-1'
+// :2:80: error: overflow of integer type 'usize' with value '-1'
test/cases/compile_errors/intFromFloat_comptime_safety.zig
@@ -0,0 +1,17 @@
+comptime {
+    _ = @intFromFloat(i8, @as(f32, -129.1));
+}
+comptime {
+    _ = @intFromFloat(u8, @as(f32, -1.1));
+}
+comptime {
+    _ = @intFromFloat(u8, @as(f32, 256.1));
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:27: error: float value '-129.10000610351562' cannot be stored in integer type 'i8'
+// :5:27: error: float value '-1.100000023841858' cannot be stored in integer type 'u8'
+// :8:27: error: float value '256.1000061035156' cannot be stored in integer type 'u8'
test/cases/compile_errors/intFromPtr_0_to_non_optional_pointer.zig
@@ -0,0 +1,10 @@
+export fn entry() void {
+    var b = @ptrFromInt(*i32, 0);
+    _ = b;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:31: error: pointer type '*i32' does not allow address zero
test/cases/compile_errors/inttoptr_non_ptr_type.zig
@@ -1,15 +0,0 @@
-pub export fn entry() void {
-    _ = @intToPtr(i32, 10);
-}
-
-pub export fn entry2() void {
-    _ = @intToPtr([]u8, 20);
-}
-
-// error
-// backend=stage2
-// target=native
-//
-// :2:19: error: expected pointer type, found 'i32'
-// :6:19: error: integer cannot be converted to slice type '[]u8'
-// :6:19: note: slice length cannot be inferred from address
test/cases/compile_errors/intToPtr_with_misaligned_address.zig
@@ -1,10 +0,0 @@
-pub export fn entry() void {
-    var y = @intToPtr([*]align(4) u8, 5);
-    _ = y;
-}
-
-// error
-// backend=stage2
-// target=native
-//
-// :2:39: error: pointer type '[*]align(4) u8' requires aligned address
test/cases/compile_errors/invalid_builtin_fn.zig
@@ -1,6 +1,7 @@
-fn f() @bogus(foo) {
+fn f() @bogus(foo) {}
+export fn entry() void {
+    _ = f();
 }
-export fn entry() void { _ = f(); }
 
 // error
 // backend=stage2
test/cases/compile_errors/invalid_capture_type.zig
@@ -1,5 +1,7 @@
 export fn f1() void {
-    if (true) |x| { _ = x; }
+    if (true) |x| {
+        _ = x;
+    }
 }
 export fn f2() void {
     if (@as(usize, 5)) |_| {}
@@ -19,6 +21,6 @@ export fn f5() void {
 // target=native
 //
 // :2:9: error: expected optional type, found 'bool'
-// :5:9: error: expected optional type, found 'usize'
-// :8:9: error: expected error union type, found 'usize'
-// :14:9: error: expected error union type, found 'error{Foo}'
+// :7:9: error: expected optional type, found 'usize'
+// :10:9: error: expected error union type, found 'usize'
+// :16:9: error: expected error union type, found 'error{Foo}'
test/cases/compile_errors/invalid_comparison_for_function_pointers.zig
@@ -1,7 +1,9 @@
 fn foo() void {}
 const invalid = foo > foo;
 
-export fn entry() usize { return @sizeOf(@TypeOf(invalid)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(invalid));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/invalid_field_access_in_comptime.zig
@@ -1,7 +1,10 @@
-comptime { var x = doesnt_exist.whatever; _ = x; }
+comptime {
+    var x = doesnt_exist.whatever;
+    _ = x;
+}
 
 // error
 // backend=stage2
 // target=native
 //
-// :1:20: error: use of undeclared identifier 'doesnt_exist'
+// :2:13: error: use of undeclared identifier 'doesnt_exist'
test/cases/compile_errors/invalid_field_in_struct_value_expression.zig
@@ -1,10 +1,10 @@
 const A = struct {
-    x : i32,
-    y : i32,
-    z : i32,
+    x: i32,
+    y: i32,
+    z: i32,
 };
 export fn f() void {
-    const a = A {
+    const a = A{
         .z = 4,
         .y = 2,
         .foo = 42,
@@ -21,7 +21,6 @@ pub export fn entry() void {
     dump(.{ .field_1 = 123, .field_3 = 456 });
 }
 
-
 // error
 // backend=stage2
 // target=native
test/cases/compile_errors/invalid_float_casts.zig
@@ -4,11 +4,11 @@ export fn foo() void {
 }
 export fn bar() void {
     var a: f32 = 2;
-    _ = @floatToInt(f32, a);
+    _ = @intFromFloat(f32, a);
 }
 export fn baz() void {
     var a: f32 = 2;
-    _ = @intToFloat(f32, a);
+    _ = @floatFromInt(f32, a);
 }
 export fn qux() void {
     var a: u32 = 2;
@@ -20,6 +20,6 @@ export fn qux() void {
 // target=native
 //
 // :3:36: error: unable to cast runtime value to 'comptime_float'
-// :7:21: error: expected integer type, found 'f32'
-// :11:26: error: expected integer type, found 'f32'
+// :7:23: error: expected integer type, found 'f32'
+// :11:28: error: expected integer type, found 'f32'
 // :15:25: error: expected float type, found 'u32'
test/cases/compile_errors/invalid_int_casts.zig
@@ -4,11 +4,11 @@ export fn foo() void {
 }
 export fn bar() void {
     var a: u32 = 2;
-    _ = @intToFloat(u32, a);
+    _ = @floatFromInt(u32, a);
 }
 export fn baz() void {
     var a: u32 = 2;
-    _ = @floatToInt(u32, a);
+    _ = @intFromFloat(u32, a);
 }
 export fn qux() void {
     var a: f32 = 2;
@@ -20,6 +20,6 @@ export fn qux() void {
 // target=native
 //
 // :3:32: error: unable to cast runtime value to 'comptime_int'
-// :7:21: error: expected float type, found 'u32'
-// :11:26: error: expected float type, found 'u32'
+// :7:23: error: expected float type, found 'u32'
+// :11:28: error: expected float type, found 'u32'
 // :15:23: error: expected integer or vector, found 'f32'
test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig
@@ -8,12 +8,12 @@ const U = union(E) {
     b,
 };
 export fn foo() void {
-    var e = @intToEnum(E, 15);
+    var e = @enumFromInt(E, 15);
     var u: U = e;
     _ = u;
 }
 export fn bar() void {
-    const e = @intToEnum(E, 15);
+    const e = @enumFromInt(E, 15);
     var u: U = e;
     _ = u;
 }
@@ -24,5 +24,5 @@ export fn bar() void {
 //
 // :12:16: error: runtime coercion to union 'tmp.U' from non-exhaustive enum
 // :1:11: note: enum declared here
-// :17:16: error: union 'tmp.U' has no tag with value '@intToEnum(tmp.E, 15)'
+// :17:16: error: union 'tmp.U' has no tag with value '@enumFromInt(tmp.E, 15)'
 // :6:11: note: union declared here
test/cases/compile_errors/invalid_optional_type_in_extern_struct.zig
@@ -1,7 +1,9 @@
 const stroo = extern struct {
     moo: ?[*c]u8,
 };
-export fn testf(fluff: *stroo) void { _ = fluff; }
+export fn testf(fluff: *stroo) void {
+    _ = fluff;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/invalid_pointer_with_reify_type.zig
@@ -8,7 +8,7 @@ export fn entry() void {
         .child = u8,
         .is_allowzero = false,
         .sentinel = &@as(u8, 0),
-    }});
+    } });
 }
 
 // error
test/cases/compile_errors/invalid_shift_amount_error.zig
@@ -1,8 +1,10 @@
-const x : u8 = 2;
+const x: u8 = 2;
 fn f() u16 {
     return x << 8;
 }
-export fn entry() u16 { return f(); }
+export fn entry() u16 {
+    return f();
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/invalid_type.zig
@@ -1,5 +1,7 @@
 fn a() bogus {}
-export fn entry() void { _ = a(); }
+export fn entry() void {
+    _ = a();
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/invalid_type_in_builtin_extern.zig
@@ -1,4 +1,4 @@
-const x = @extern(*comptime_int, .{.name="foo"});
+const x = @extern(*comptime_int, .{ .name = "foo" });
 pub export fn entry() void {
     _ = x;
 }
test/cases/compile_errors/invalid_variadic_function.zig
@@ -1,8 +1,12 @@
 fn foo(...) void {}
 fn bar(a: anytype, ...) callconv(a) void {}
 
-comptime { _ = foo; }
-comptime { _ = bar; }
+comptime {
+    _ = foo;
+}
+comptime {
+    _ = bar;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/issue_3818_bitcast_from_parray-slice_to_u16.zig
@@ -1,10 +1,10 @@
 export fn foo1() void {
-    var bytes = [_]u8{1, 2};
+    var bytes = [_]u8{ 1, 2 };
     const word: u16 = @bitCast(u16, bytes[0..]);
     _ = word;
 }
 export fn foo2() void {
-    var bytes: []const u8 = &[_]u8{1, 2};
+    var bytes: []const u8 = &[_]u8{ 1, 2 };
     const word: u16 = @bitCast(u16, bytes);
     _ = word;
 }
@@ -14,6 +14,6 @@ export fn foo2() void {
 // target=native
 //
 // :3:42: error: cannot @bitCast from '*[2]u8'
-// :3:42: note: use @ptrToInt to cast to 'u16'
+// :3:42: note: use @intFromPtr to cast to 'u16'
 // :8:37: error: cannot @bitCast from '[]const u8'
-// :8:37: note: use @ptrToInt to cast to 'u16'
+// :8:37: note: use @intFromPtr to cast to 'u16'
test/cases/compile_errors/local_variable_redeclaration.zig
@@ -1,5 +1,5 @@
 export fn f() void {
-    const a : i32 = 0;
+    const a: i32 = 0;
     var a = 0;
 }
 
test/cases/compile_errors/local_variable_redeclares_parameter.zig
@@ -1,7 +1,9 @@
-fn f(a : i32) void {
+fn f(a: i32) void {
     const a = 0;
 }
-export fn entry() void { f(1); }
+export fn entry() void {
+    f(1);
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/local_variable_shadowing_global.zig
@@ -2,7 +2,7 @@ const Foo = struct {};
 const Bar = struct {};
 
 export fn entry() void {
-    var Bar : i32 = undefined;
+    var Bar: i32 = undefined;
     _ = Bar;
 }
 
test/cases/compile_errors/main_function_with_bogus_args_type.zig
@@ -1,4 +1,6 @@
-pub fn main(args: [][]bogus) !void {_ = args;}
+pub fn main(args: [][]bogus) !void {
+    _ = args;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/missing_const_in_slice_with_nested_array_type.zig
@@ -2,7 +2,7 @@ const Geo3DTex2D = struct { vertices: [][2]f32 };
 pub fn getGeo3DTex2D() Geo3DTex2D {
     return Geo3DTex2D{
         .vertices = [_][2]f32{
-            [_]f32{ -0.5, -0.5},
+            [_]f32{ -0.5, -0.5 },
         },
     };
 }
test/cases/compile_errors/missing_else_clause.zig
@@ -1,9 +1,13 @@
 fn f(b: bool) void {
-    const x : i32 = if (b) h: { break :h 1; };
+    const x: i32 = if (b) h: {
+        break :h 1;
+    };
     _ = x;
 }
 fn g(b: bool) void {
-    const y = if (b) h: { break :h @as(i32, 1); };
+    const y = if (b) h: {
+        break :h @as(i32, 1);
+    };
     _ = y;
 }
 fn h() void {
@@ -30,10 +34,10 @@ export fn entry() void {
 // backend=stage2
 // target=native
 //
-// :2:21: error: incompatible types: 'i32' and 'void'
-// :2:31: note: type 'i32' here
-// :6:15: error: incompatible types: 'i32' and 'void'
-// :6:25: note: type 'i32' here
-// :12:16: error: expected type 'tmp.h.T', found 'void'
-// :11:15: note: struct declared here
-// :18:9: error: incompatible types: 'void' and 'tmp.k.T'
+// :2:20: error: incompatible types: 'i32' and 'void'
+// :2:30: note: type 'i32' here
+// :8:15: error: incompatible types: 'i32' and 'void'
+// :8:25: note: type 'i32' here
+// :16:16: error: expected type 'tmp.h.T', found 'void'
+// :15:15: note: struct declared here
+// :22:9: error: incompatible types: 'void' and 'tmp.k.T'
test/cases/compile_errors/missing_field_in_struct_value_expression.zig
@@ -1,12 +1,12 @@
 const A = struct {
-    x : i32,
-    y : i32,
-    z : i32,
+    x: i32,
+    y: i32,
+    z: i32,
 };
 export fn f() void {
     // we want the error on the '{' not the 'A' because
     // the A could be a complicated expression
-    const a = A {
+    const a = A{
         .z = 4,
         .y = 2,
     };
@@ -17,5 +17,5 @@ export fn f() void {
 // backend=stage2
 // target=native
 //
-// :9:17: error: missing struct field: x
+// :9:16: error: missing struct field: x
 // :1:11: note: struct 'tmp.A' declared here
test/cases/compile_errors/missing_main_fn_in_executable.zig
@@ -1,5 +1,3 @@
-
-
 // error
 // backend=llvm
 // target=x86_64-linux
test/cases/compile_errors/missing_param_name.zig
@@ -1,5 +1,7 @@
 fn f(i32) void {}
-export fn entry() usize { return @sizeOf(@TypeOf(f)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(f));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/misspelled_type_with_pointer_only_reference.zig
@@ -24,11 +24,13 @@ pub const JsonNode = struct {
 fn foo() void {
     var jll: JasonList = undefined;
     jll.init(1234);
-    var jd = JsonNode {.kind = JsonType.JSONArray , .jobject = JsonOA.JSONArray {jll} };
+    var jd = JsonNode{ .kind = JsonType.JSONArray, .jobject = JsonOA.JSONArray{jll} };
     _ = jd;
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(foo));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/mul_overflow_in_function_evaluation.zig
@@ -3,7 +3,9 @@ fn mul(a: u16, b: u16) u16 {
     return a * b;
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&y)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&y));
+}
 
 // error
 // backend=stage2
@@ -11,4 +13,3 @@ export fn entry() usize { return @sizeOf(@TypeOf(&y)); }
 //
 // :3:14: error: overflow of integer type 'u16' with value '1800000'
 // :1:14: note: called from here
-
test/cases/compile_errors/multiple_function_definitions.zig
@@ -1,6 +1,8 @@
 fn a() void {}
 fn a() void {}
-export fn entry() void { a(); }
+export fn entry() void {
+    a();
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/negation_overflow_in_function_evaluation.zig
@@ -3,7 +3,9 @@ fn neg(x: i8) i8 {
     return -x;
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&y)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&y));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/nested_vectors.zig
@@ -10,4 +10,3 @@ export fn entry() void {
 // target=native
 //
 // :3:16: error: expected integer, float, bool, or pointer for the vector element type; found '@Vector(4, u8)'
-
test/cases/compile_errors/noalias_on_non_pointer_param.zig
@@ -1,11 +1,19 @@
-fn f(noalias x: i32) void { _ = x; }
-export fn entry() void { f(1234); }
+fn f(noalias x: i32) void {
+    _ = x;
+}
+export fn entry() void {
+    f(1234);
+}
 
-fn generic(comptime T: type, noalias _: [*]T, noalias _: [*]const T, _: usize) void  {}
-comptime { _ = &generic; }
+fn generic(comptime T: type, noalias _: [*]T, noalias _: [*]const T, _: usize) void {}
+comptime {
+    _ = &generic;
+}
 
-fn slice(noalias _: []u8) void  {}
-comptime { _ = &slice; }
+fn slice(noalias _: []u8) void {}
+comptime {
+    _ = &slice;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/non-comptime-parameter-used-as-array-size.zig
@@ -5,8 +5,7 @@ export fn entry() void {
     _ = llamas2;
 }
 
-fn makeLlamas(count: usize) [count]u8 {
-}
+fn makeLlamas(count: usize) [count]u8 {}
 
 // error
 // target=native
test/cases/compile_errors/non-const_expression_function_call_with_struct_return_value_outside_function.zig
@@ -4,11 +4,13 @@ const Foo = struct {
 const a = get_it();
 fn get_it() Foo {
     global_side_effect = true;
-    return Foo {.x = 13};
+    return Foo{ .x = 13 };
 }
 var global_side_effect = false;
 
-export fn entry() usize { return @sizeOf(@TypeOf(a)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(a));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/non-const_expression_in_struct_literal_outside_function.zig
@@ -1,10 +1,12 @@
 const Foo = struct {
     x: i32,
 };
-const a = Foo {.x = get_it()};
+const a = Foo{ .x = get_it() };
 extern fn get_it() i32;
 
-export fn entry() usize { return @sizeOf(@TypeOf(a)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(a));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/non-const_variables_of_things_that_require_const_variables.zig
@@ -1,30 +1,30 @@
 export fn entry1() void {
-   var m2 = &2;
-   _ = m2;
+    var m2 = &2;
+    _ = m2;
 }
 export fn entry2() void {
-   var a = undefined;
-   _ = a;
+    var a = undefined;
+    _ = a;
 }
 export fn entry3() void {
-   var b = 1;
-   _ = b;
+    var b = 1;
+    _ = b;
 }
 export fn entry4() void {
-   var c = 1.0;
-   _ = c;
+    var c = 1.0;
+    _ = c;
 }
 export fn entry5() void {
-   var d = null;
-   _ = d;
+    var d = null;
+    _ = d;
 }
 export fn entry6(opaque_: *Opaque) void {
-   var e = opaque_.*;
-   _ = e;
+    var e = opaque_.*;
+    _ = e;
 }
 export fn entry7() void {
-   var f = i32;
-   _ = f;
+    var f = i32;
+    _ = f;
 }
 const Opaque = opaque {};
 
@@ -32,14 +32,14 @@ const Opaque = opaque {};
 // backend=stage2
 // target=native
 //
-// :2:8: error: variable of type '*const comptime_int' must be const or comptime
-// :6:8: error: variable of type '@TypeOf(undefined)' must be const or comptime
-// :10:8: error: variable of type 'comptime_int' must be const or comptime
-// :10:8: note: to modify this variable at runtime, it must be given an explicit fixed-size number type
-// :14:8: error: variable of type 'comptime_float' must be const or comptime
-// :14:8: note: to modify this variable at runtime, it must be given an explicit fixed-size number type
-// :18:8: error: variable of type '@TypeOf(null)' must be const or comptime
-// :22:19: error: values of type 'tmp.Opaque' must be comptime-known, but operand value is runtime-known
-// :22:19: note: opaque type 'tmp.Opaque' has undefined size
-// :26:8: error: variable of type 'type' must be const or comptime
-// :26:8: note: types are not available at runtime
+// :2:9: error: variable of type '*const comptime_int' must be const or comptime
+// :6:9: error: variable of type '@TypeOf(undefined)' must be const or comptime
+// :10:9: error: variable of type 'comptime_int' must be const or comptime
+// :10:9: note: to modify this variable at runtime, it must be given an explicit fixed-size number type
+// :14:9: error: variable of type 'comptime_float' must be const or comptime
+// :14:9: note: to modify this variable at runtime, it must be given an explicit fixed-size number type
+// :18:9: error: variable of type '@TypeOf(null)' must be const or comptime
+// :22:20: error: values of type 'tmp.Opaque' must be comptime-known, but operand value is runtime-known
+// :22:20: note: opaque type 'tmp.Opaque' has undefined size
+// :26:9: error: variable of type 'type' must be const or comptime
+// :26:9: note: types are not available at runtime
test/cases/compile_errors/non-exhaustive_enum_marker_assigned_a_value.zig
@@ -8,7 +8,10 @@ const B = enum {
     b,
     _,
 };
-comptime { _ = A; _ = B; }
+comptime {
+    _ = A;
+    _ = B;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/non-inline_for_loop_on_a_type_that_requires_comptime.zig
@@ -4,7 +4,9 @@ const Foo = struct {
 };
 export fn entry() void {
     const xx: [2]Foo = .{ .{ .name = "", .T = u8 }, .{ .name = "", .T = u8 } };
-    for (xx) |f| { _ = f;}
+    for (xx) |f| {
+        _ = f;
+    }
 }
 
 // error
test/cases/compile_errors/non_constant_expression_in_array_size.zig
@@ -2,14 +2,18 @@ const Foo = struct {
     y: [get()]u8,
 };
 var global_var: usize = 1;
-fn get() usize { return global_var; }
+fn get() usize {
+    return global_var;
+}
 
-export fn entry() usize { return @offsetOf(Foo, "y"); }
+export fn entry() usize {
+    return @offsetOf(Foo, "y");
+}
 
 // error
 // backend=stage2
 // target=native
 //
-// :5:18: error: unable to resolve comptime value
-// :5:18: note: value being returned at comptime must be comptime-known
+// :6:5: error: unable to resolve comptime value
+// :6:5: note: value being returned at comptime must be comptime-known
 // :2:12: note: called from here
test/cases/compile_errors/non_float_passed_to_floatToInt.zig
@@ -1,10 +0,0 @@
-export fn entry() void {
-    const x = @floatToInt(i32, @as(i32, 54));
-    _ = x;
-}
-
-// error
-// backend=stage2
-// target=native
-//
-// :2:32: error: expected float type, found 'i32'
test/cases/compile_errors/non_float_passed_to_intFromFloat.zig
@@ -0,0 +1,10 @@
+export fn entry() void {
+    const x = @intFromFloat(i32, @as(i32, 54));
+    _ = x;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:34: error: expected float type, found 'i32'
test/cases/compile_errors/non_int_passed_to_floatFromInt.zig
@@ -0,0 +1,10 @@
+export fn entry() void {
+    const x = @floatFromInt(f32, 1.1);
+    _ = x;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:34: error: expected integer type, found 'comptime_float'
test/cases/compile_errors/non_int_passed_to_intToFloat.zig
@@ -1,10 +0,0 @@
-export fn entry() void {
-    const x = @intToFloat(f32, 1.1);
-    _ = x;
-}
-
-// error
-// backend=stage2
-// target=native
-//
-// :2:32: error: expected integer type, found 'comptime_float'
test/cases/compile_errors/non_pointer_given_to_ptrToInt.zig โ†’ test/cases/compile_errors/non_pointer_given_to_intFromPtr.zig
@@ -1,9 +1,9 @@
 export fn entry(x: i32) usize {
-    return @ptrToInt(x);
+    return @intFromPtr(x);
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :2:22: error: expected pointer, found 'i32'
+// :2:24: error: expected pointer, found 'i32'
test/cases/compile_errors/offsetOf-bad_field_name.zig
@@ -2,12 +2,15 @@ const Foo = struct {
     derp: i32,
 };
 export fn foo() usize {
-    return @offsetOf(Foo, "a",);
+    return @offsetOf(
+        Foo,
+        "a",
+    );
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :5:27: error: no field named 'a' in struct 'tmp.Foo'
+// :7:9: error: no field named 'a' in struct 'tmp.Foo'
 // :1:13: note: struct declared here
test/cases/compile_errors/offsetOf-non_struct.zig
@@ -1,6 +1,6 @@
 const Foo = i32;
 export fn foo() usize {
-    return @offsetOf(Foo, "a",);
+    return @offsetOf(Foo, "a");
 }
 
 // error
test/cases/compile_errors/old_fn_ptr_in_extern_context.zig
@@ -5,7 +5,7 @@ comptime {
     _ = @sizeOf(S) == 1;
 }
 comptime {
-    _ = [*c][4]fn() callconv(.C) void;
+    _ = [*c][4]fn () callconv(.C) void;
 }
 
 // error
test/cases/compile_errors/out_of_int_range_comptime_float_passed_to_intFromFloat.zig
@@ -0,0 +1,10 @@
+export fn entry() void {
+    const x = @intFromFloat(i8, 200);
+    _ = x;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:33: error: float value '200' cannot be stored in integer type 'i8'
test/cases/compile_errors/out_of_range_comptime_int_passed_to_floatToInt.zig
@@ -1,10 +0,0 @@
-export fn entry() void {
-    const x = @floatToInt(i8, 200);
-    _ = x;
-}
-
-// error
-// backend=stage2
-// target=native
-//
-// :2:31: error: float value '200' cannot be stored in integer type 'i8'
test/cases/compile_errors/overflow_in_enum_value_allocation.zig
@@ -3,8 +3,8 @@ const Moo = enum(u8) {
     Over,
 };
 pub export fn entry() void {
-  var y = Moo.Last;
-  _ = y;
+    var y = Moo.Last;
+    _ = y;
 }
 
 // error
test/cases/compile_errors/packed_union_given_enum_tag_type.zig
@@ -9,7 +9,7 @@ const Payload = packed union(Letter) {
     C: bool,
 };
 export fn entry() void {
-    var a = Payload { .A = 1234 };
+    var a = Payload{ .A = 1234 };
     _ = a;
 }
 
test/cases/compile_errors/packed_union_with_automatic_layout_field.zig
@@ -7,7 +7,7 @@ const Payload = packed union {
     B: bool,
 };
 export fn entry() void {
-    var a = Payload { .B = true };
+    var a = Payload{ .B = true };
     _ = a;
 }
 
test/cases/compile_errors/panic_called_at_compile_time.zig
@@ -1,6 +1,8 @@
 export fn entry() void {
     comptime {
-        @panic("aoeu",);
+        @panic(
+            "aoeu",
+        );
     }
 }
 
test/cases/compile_errors/parameter_redeclaration.zig
@@ -1,10 +1,11 @@
-fn f(a : i32, a : i32) void {
+fn f(a: i32, a: i32) void {}
+export fn entry() void {
+    f(1, 2);
 }
-export fn entry() void { f(1, 2); }
 
 // error
 // backend=stage2
 // target=native
 //
-// :1:15: error: redeclaration of function parameter 'a'
+// :1:14: error: redeclaration of function parameter 'a'
 // :1:6: note: previous declaration here
test/cases/compile_errors/pass_const_ptr_to_mutable_ptr_fn.zig
@@ -1,14 +1,17 @@
 fn foo() bool {
-    const a = @as([]const u8, "a",);
+    const a = @as([]const u8, "a");
     const b = &a;
     return ptrEql(b, b);
 }
 fn ptrEql(a: *[]const u8, b: *[]const u8) bool {
-    _ = a; _ = b;
+    _ = a;
+    _ = b;
     return true;
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/passing_an_under-aligned_function_pointer.zig
@@ -4,7 +4,9 @@ export fn entry() void {
 fn testImplicitlyDecreaseFnAlign(ptr: *const fn () align(8) i32, answer: i32) void {
     if (ptr() != answer) unreachable;
 }
-fn alignedSmall() align(4) i32 { return 1234; }
+fn alignedSmall() align(4) i32 {
+    return 1234;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/pointer_to_noreturn.zig
@@ -1,5 +1,7 @@
 fn a() *noreturn {}
-export fn entry() void { _ = a(); }
+export fn entry() void {
+    _ = a();
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/ptrFromInt_non_ptr_type.zig
@@ -0,0 +1,15 @@
+pub export fn entry() void {
+    _ = @ptrFromInt(i32, 10);
+}
+
+pub export fn entry2() void {
+    _ = @ptrFromInt([]u8, 20);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected pointer type, found 'i32'
+// :6:21: error: integer cannot be converted to slice type '[]u8'
+// :6:21: note: slice length cannot be inferred from address
test/cases/compile_errors/ptrFromInt_with_misaligned_address.zig
@@ -0,0 +1,10 @@
+pub export fn entry() void {
+    var y = @ptrFromInt([*]align(4) u8, 5);
+    _ = y;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:41: error: pointer type '[*]align(4) u8' requires aligned address
test/cases/compile_errors/ptrToInt_0_to_non_optional_pointer.zig
@@ -1,10 +0,0 @@
-export fn entry() void {
-    var b = @intToPtr(*i32, 0);
-    _ = b;
-}
-
-// error
-// backend=stage2
-// target=native
-//
-// :2:29: error: pointer type '*i32' does not allow address zero
test/cases/compile_errors/range_operator_in_switch_used_on_error_set.zig
@@ -1,13 +1,13 @@
 export fn entry() void {
     foo(452) catch |err| switch (err) {
-        error.Foo ... error.Bar => {},
+        error.Foo...error.Bar => {},
         else => {},
     };
 }
 fn foo(x: i32) !void {
     switch (x) {
-        0 ... 10 => return error.Foo,
-        11 ... 20 => return error.Bar,
+        0...10 => return error.Foo,
+        11...20 => return error.Bar,
         else => {},
     }
 }
@@ -17,4 +17,4 @@ fn foo(x: i32) !void {
 // target=native
 //
 // :2:34: error: ranges not allowed when switching on type '@typeInfo(@typeInfo(@TypeOf(tmp.foo)).Fn.return_type.?).ErrorUnion.error_set'
-// :3:19: note: range here
+// :3:18: note: range here
test/cases/compile_errors/reassign_to_array_parameter.zig
@@ -1,8 +1,8 @@
 fn reassign(a: [3]f32) void {
-    a = [3]f32{4, 5, 6};
+    a = [3]f32{ 4, 5, 6 };
 }
 export fn entry() void {
-    reassign(.{1, 2, 3});
+    reassign(.{ 1, 2, 3 });
 }
 
 // error
test/cases/compile_errors/reassign_to_struct_parameter.zig
@@ -2,10 +2,10 @@ const S = struct {
     x: u32,
 };
 fn reassign(s: S) void {
-    s = S{.x = 2};
+    s = S{ .x = 2 };
 }
 export fn entry() void {
-    reassign(S{.x = 3});
+    reassign(S{ .x = 3 });
 }
 
 // error
test/cases/compile_errors/redefinition_of_enums.zig
@@ -1,5 +1,5 @@
-const A = enum {x};
-const A = enum {x};
+const A = enum { x };
+const A = enum { x };
 
 // error
 // backend=stage2
test/cases/compile_errors/redefinition_of_global_variables.zig
@@ -1,5 +1,5 @@
-var a : i32 = 1;
-var a : i32 = 2;
+var a: i32 = 1;
+var a: i32 = 2;
 
 // error
 // backend=stage2
test/cases/compile_errors/redefinition_of_struct.zig
@@ -1,5 +1,5 @@
-const A = struct { x : i32, };
-const A = struct { y : i32, };
+const A = struct { x: i32 };
+const A = struct { y: i32 };
 
 // error
 // backend=stage2
test/cases/compile_errors/reference_to_const_data.zig
@@ -1,5 +1,5 @@
 export fn foo() void {
-    var ptr = &[_]u8{0,0,0,0};
+    var ptr = &[_]u8{ 0, 0, 0, 0 };
     ptr[1] = 2;
 }
 export fn bar() void {
@@ -11,11 +11,11 @@ export fn baz() void {
     ptr.* = false;
 }
 export fn qux() void {
-    const S = struct{
+    const S = struct {
         x: usize,
         y: usize,
     };
-    var ptr = &S{.x=1,.y=2};
+    var ptr = &S{ .x = 1, .y = 2 };
     ptr.x = 2;
 }
 export fn quux() void {
test/cases/compile_errors/reify_type.Fn_with_is_generic_true.zig
@@ -8,7 +8,9 @@ const Foo = @Type(.{
         .params = &.{},
     },
 });
-comptime { _ = Foo; }
+comptime {
+    _ = Foo;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/reify_type.Fn_with_is_var_args_true_and_non-C_callconv.zig
@@ -8,7 +8,9 @@ const Foo = @Type(.{
         .params = &.{},
     },
 });
-comptime { _ = Foo; }
+comptime {
+    _ = Foo;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/reify_type.Fn_with_return_type_null.zig
@@ -8,7 +8,9 @@ const Foo = @Type(.{
         .params = &.{},
     },
 });
-comptime { _ = Foo; }
+comptime {
+    _ = Foo;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/reify_type_for_exhaustive_enum_with_non-integer_tag_type.zig
@@ -7,7 +7,7 @@ const Tag = @Type(.{
     },
 });
 export fn entry() void {
-    _ = @intToEnum(Tag, 0);
+    _ = @enumFromInt(Tag, 0);
 }
 
 // error
test/cases/compile_errors/reify_type_for_exhaustive_enum_with_undefined_tag_type.zig
@@ -7,7 +7,7 @@ const Tag = @Type(.{
     },
 });
 export fn entry() void {
-    _ = @intToEnum(Tag, 0);
+    _ = @enumFromInt(Tag, 0);
 }
 
 // error
test/cases/compile_errors/reify_type_union_payload_is_undefined.zig
@@ -1,7 +1,9 @@
 const Foo = @Type(.{
     .Struct = undefined,
 });
-comptime { _ = Foo; }
+comptime {
+    _ = Foo;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/return_from_defer_expression.zig
@@ -6,13 +6,15 @@ pub fn testTrickyDefer() !void {
     const a = maybeInt() orelse return;
 }
 
-fn canFail() anyerror!void { }
+fn canFail() anyerror!void {}
 
 pub fn maybeInt() ?i32 {
     return 0;
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(testTrickyDefer)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(testTrickyDefer));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/runtime_assignment_to_comptime_struct_type.zig
@@ -4,7 +4,7 @@ const Foo = struct {
 };
 export fn f() void {
     var x: u8 = 0;
-    const foo = Foo { .Bar = x, .Baz = u8 };
+    const foo = Foo{ .Bar = x, .Baz = u8 };
     _ = foo;
 }
 
@@ -12,5 +12,5 @@ export fn f() void {
 // backend=stage2
 // target=native
 //
-// :7:30: error: unable to resolve comptime value
-// :7:30: note: initializer of comptime only struct must be comptime-known
+// :7:29: error: unable to resolve comptime value
+// :7:29: note: initializer of comptime only struct must be comptime-known
test/cases/compile_errors/runtime_assignment_to_comptime_union_type.zig
@@ -4,7 +4,7 @@ const Foo = union {
 };
 export fn f() void {
     var x: u8 = 0;
-    const foo = Foo { .Bar = x };
+    const foo = Foo{ .Bar = x };
     _ = foo;
 }
 
@@ -12,5 +12,5 @@ export fn f() void {
 // backend=stage2
 // target=native
 //
-// :7:30: error: unable to resolve comptime value
-// :7:30: note: initializer of comptime only union must be comptime-known
+// :7:29: error: unable to resolve comptime value
+// :7:29: note: initializer of comptime only union must be comptime-known
test/cases/compile_errors/runtime_to_comptime_num.zig
@@ -2,16 +2,16 @@ pub export fn entry() void {
     var a: u32 = 0;
     _ = @as(comptime_int, a);
 }
-pub export fn entry2() void{
+pub export fn entry2() void {
     var a: u32 = 0;
     _ = @as(comptime_float, a);
 }
-pub export fn entry3() void{
+pub export fn entry3() void {
     comptime var aa: comptime_float = 0.0;
     var a: f32 = 4;
     aa = a;
 }
-pub export fn entry4() void{
+pub export fn entry4() void {
     comptime var aa: comptime_int = 0.0;
     var a: f32 = 4;
     aa = a;
test/cases/compile_errors/saturating_shl_assign_does_not_allow_negative_rhs_at_comptime.zig
@@ -1,12 +1,12 @@
 export fn a() void {
     comptime {
-      var x = @as(i32, 1);
-      x <<|= @as(i32, -2);
-  }
+        var x = @as(i32, 1);
+        x <<|= @as(i32, -2);
+    }
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :4:14: error: shift by negative amount '-2'
+// :4:16: error: shift by negative amount '-2'
test/cases/compile_errors/self_referential_struct_requires_comptime.zig
@@ -7,7 +7,6 @@ pub export fn entry() void {
     _ = s;
 }
 
-
 // error
 // backend=stage2
 // target=native
test/cases/compile_errors/setAlignStack_in_inline_function.zig
@@ -1,7 +1,7 @@
 export fn entry() void {
     foo();
 }
-fn foo() callconv(.Inline) void {
+inline fn foo() void {
     @setAlignStack(16);
 }
 
@@ -12,7 +12,6 @@ fn bar() void {
     @setAlignStack(16);
 }
 
-
 // error
 // backend=stage2
 // target=native
test/cases/compile_errors/slice_passed_as_array_init_type_with_elems.zig
@@ -1,5 +1,5 @@
 export fn entry() void {
-    const x = []u8{1, 2};
+    const x = []u8{ 1, 2 };
     _ = x;
 }
 
test/cases/compile_errors/slice_sentinel_mismatch-2.zig
@@ -2,7 +2,9 @@ fn foo() [:0]u8 {
     var x: []u8 = undefined;
     return x;
 }
-comptime { _ = &foo; }
+comptime {
+    _ = &foo;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/slice_used_as_extern_fn_param.zig
@@ -1,4 +1,4 @@
-extern fn Text(str: []const u8, num: i32) callconv(.C) void; 
+extern fn Text(str: []const u8, num: i32) callconv(.C) void;
 export fn entry() void {
     _ = Text;
 }
test/cases/compile_errors/specify_enum_tag_type_that_is_too_small.zig
@@ -1,4 +1,4 @@
-const Small = enum (u2) {
+const Small = enum(u2) {
     One,
     Two,
     Three,
test/cases/compile_errors/specify_non-integer_enum_tag_type.zig
@@ -1,4 +1,4 @@
-const Small = enum (f32) {
+const Small = enum(f32) {
     One,
     Two,
     Three,
@@ -13,4 +13,4 @@ export fn entry() void {
 // backend=stage2
 // target=native
 //
-// :1:21: error: expected integer tag type, found 'f32'
+// :1:20: error: expected integer tag type, found 'f32'
test/cases/compile_errors/src_fields_runtime.zig
@@ -4,7 +4,10 @@ pub export fn entry1() void {
     comptime var b: []const u8 = s.fn_name;
     comptime var c: u32 = s.column;
     comptime var d: u32 = s.line;
-    _ = a; _ = b; _ = c; _ = d;
+    _ = a;
+    _ = b;
+    _ = c;
+    _ = d;
 }
 
 // error
test/cases/compile_errors/std.fmt_error_for_unused_arguments.zig
@@ -1,5 +1,5 @@
 export fn entry() void {
-    @import("std").debug.print("{d} {d} {d} {d} {d}", .{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15});
+    @import("std").debug.print("{d} {d} {d} {d} {d}", .{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 });
 }
 
 // error
test/cases/compile_errors/struct_type_mismatch_in_arg.zig
@@ -1,18 +1,18 @@
 const Foo = struct { i: i32 };
 const Bar = struct { j: i32 };
 
-pub fn helper(_: Foo, _: Bar) void { }
+pub fn helper(_: Foo, _: Bar) void {}
 
 comptime {
-    helper(Bar { .j = 10 }, Bar { .j = 10 });
-    helper(Bar { .i = 10 }, Bar { .j = 10 });
+    helper(Bar{ .j = 10 }, Bar{ .j = 10 });
+    helper(Bar{ .i = 10 }, Bar{ .j = 10 });
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :7:16: error: expected type 'tmp.Foo', found 'tmp.Bar'
+// :7:15: error: expected type 'tmp.Foo', found 'tmp.Bar'
 // :2:13: note: struct declared here
 // :1:13: note: struct declared here
 // :4:18: note: parameter type declared here
test/cases/compile_errors/struct_type_returned_from_non-generic_function.zig
@@ -1,5 +1,5 @@
 pub export fn entry(param: usize) usize {
-    return struct{ param };
+    return struct { param };
 }
 
 // error
test/cases/compile_errors/struct_with_declarations_unavailable_for_reify_type.zig
@@ -1,5 +1,7 @@
 export fn entry() void {
-    _ = @Type(@typeInfo(struct { const foo = 1; }));
+    _ = @Type(@typeInfo(struct {
+        const foo = 1;
+    }));
 }
 
 // error
test/cases/compile_errors/struct_with_invalid_field.zig
@@ -1,10 +1,10 @@
-const std = @import("std",);
+const std = @import(
+    "std",
+);
 const Allocator = std.mem.Allocator;
 const ArrayList = std.ArrayList;
 
-const HeaderWeight = enum {
-    H1, H2, H3, H4, H5, H6,
-};
+const HeaderWeight = enum { H1, H2, H3, H4, H5, H6 };
 
 const MdText = ArrayList(u8);
 
@@ -16,7 +16,7 @@ const MdNode = union(enum) {
 };
 
 export fn entry() void {
-    const a = MdNode.Header {
+    const a = MdNode.Header{
         .text = MdText.init(std.testing.allocator),
         .weight = HeaderWeight.H1,
     };
test/cases/compile_errors/sub_overflow_in_function_evaluation.zig
@@ -3,7 +3,9 @@ fn sub(a: u16, b: u16) u16 {
     return a - b;
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&y)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&y));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/suspend_inside_suspend_block.zig
@@ -3,8 +3,7 @@ export fn entry() void {
 }
 fn foo() void {
     suspend {
-        suspend {
-        }
+        suspend {}
     }
 }
 
test/cases/compile_errors/switch_expression-duplicate_enumeration_prong.zig
@@ -14,7 +14,9 @@ fn f(n: Number) i32 {
     }
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&f));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-duplicate_enumeration_prong_when_else_present.zig
@@ -15,7 +15,9 @@ fn f(n: Number) i32 {
     }
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&f));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-duplicate_or_overlapping_integer_value.zig
@@ -1,16 +1,18 @@
 fn foo(x: u8) u8 {
     return switch (x) {
-        0 ... 100 => @as(u8, 0),
-        101 ... 200 => 1,
-        201, 203 ... 207 => 2,
-        206 ... 255 => 3,
+        0...100 => @as(u8, 0),
+        101...200 => 1,
+        201, 203...207 => 2,
+        206...255 => 3,
     };
 }
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
 // target=native
 //
-// :6:13: error: duplicate switch value
-// :5:18: note: previous value here
+// :6:12: error: duplicate switch value
+// :5:17: note: previous value here
test/cases/compile_errors/switch_expression-duplicate_type.zig
@@ -7,7 +7,9 @@ fn foo(comptime T: type, x: T) u8 {
         else => 3,
     };
 }
-export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(foo(u32, 0)));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-duplicate_type_struct_alias.zig
@@ -11,7 +11,9 @@ fn foo(comptime T: type, x: T) u8 {
         else => 3,
     };
 }
-export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(foo(u32, 0)));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig
@@ -12,7 +12,9 @@ fn f(n: Number) i32 {
     }
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&f));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-non_exhaustive_integer_prongs.zig
@@ -3,7 +3,9 @@ fn foo(x: u8) void {
         0 => {},
     }
 }
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-switch_on_pointer_type_with_no_else.zig
@@ -4,7 +4,9 @@ fn foo(x: *u8) void {
     }
 }
 var y: u8 = 100;
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-unreachable_else_prong_bool.zig
@@ -5,7 +5,9 @@ fn foo(x: bool) void {
         else => {},
     }
 }
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-unreachable_else_prong_enum.zig
@@ -1,4 +1,4 @@
-const TestEnum = enum{ T1, T2 };
+const TestEnum = enum { T1, T2 };
 
 fn err(x: u8) TestEnum {
     switch (x) {
@@ -15,7 +15,9 @@ fn foo(x: u8) void {
     }
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=llvm
test/cases/compile_errors/switch_expression-unreachable_else_prong_range_i8.zig
@@ -8,7 +8,9 @@ fn foo(x: i8) void {
         else => {},
     }
 }
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-unreachable_else_prong_range_u8.zig
@@ -8,7 +8,9 @@ fn foo(x: u8) void {
         else => {},
     }
 }
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-unreachable_else_prong_u1.zig
@@ -5,7 +5,9 @@ fn foo(x: u1) void {
         else => {},
     }
 }
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switch_expression-unreachable_else_prong_u2.zig
@@ -7,7 +7,9 @@ fn foo(x: u2) void {
         else => {},
     }
 }
-export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&foo));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/switching_with_exhaustive_enum_has___prong_.zig
@@ -1,4 +1,4 @@
-const E = enum{
+const E = enum {
     a,
     b,
 };
test/cases/compile_errors/switching_with_non-exhaustive_enums.zig
@@ -22,7 +22,7 @@ pub export fn entry2() void {
     }
 }
 pub export fn entry3() void {
-    var u = U{.a = 2};
+    var u = U{ .a = 2 };
     switch (u) { // error: `_` prong not allowed when switching on tagged union
         .a => {},
         .b => {},
test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig
@@ -1,6 +1,6 @@
 test "enum" {
     const E = enum(u8) { A, B, _ };
-    _ = @tagName(@intToEnum(E, 5));
+    _ = @tagName(@enumFromInt(E, 5));
 }
 
 // error
@@ -8,5 +8,5 @@ test "enum" {
 // target=native
 // is_test=1
 //
-// :3:9: error: no field with value '@intToEnum(tmp.test.enum.E, 5)' in enum 'test.enum.E'
+// :3:9: error: no field with value '@enumFromInt(tmp.test.enum.E, 5)' in enum 'test.enum.E'
 // :2:15: note: declared here
test/cases/compile_errors/tagName_used_on_union_with_no_associated_enum_tag.zig
@@ -3,7 +3,7 @@ const FloatInt = extern union {
     Int: i32,
 };
 export fn entry() void {
-    var fi = FloatInt{.Float = 123.45};
+    var fi = FloatInt{ .Float = 123.45 };
     var tagName = @tagName(fi);
     _ = tagName;
 }
test/cases/compile_errors/top_level_decl_dependency_loop.zig
@@ -1,5 +1,5 @@
-const a : @TypeOf(b) = 0;
-const b : @TypeOf(a) = 0;
+const a: @TypeOf(b) = 0;
+const b: @TypeOf(a) = 0;
 export fn entry() void {
     const c = a + b;
     _ = c;
test/cases/compile_errors/try_in_function_with_non_error_return_type.zig
@@ -1,7 +1,7 @@
 export fn f() void {
     try something();
 }
-fn something() anyerror!void { }
+fn something() anyerror!void {}
 
 // error
 // backend=stage2
test/cases/compile_errors/tuple_init_edge_cases.zig
@@ -1,44 +1,56 @@
 pub export fn entry1() void {
     const T = @TypeOf(.{ 123, 3 });
-    var b = T{ .@"1" = 3 }; _ = b;
-    var c = T{ 123, 3 }; _ = c;
-    var d = T{}; _ = d;
+    var b = T{ .@"1" = 3 };
+    _ = b;
+    var c = T{ 123, 3 };
+    _ = c;
+    var d = T{};
+    _ = d;
 }
 pub export fn entry2() void {
     var a: u32 = 2;
     const T = @TypeOf(.{ 123, a });
-    var b = T{ .@"1" = 3 }; _ = b;
-    var c = T{ 123, 3 }; _ = c;
-    var d = T{}; _ = d;
+    var b = T{ .@"1" = 3 };
+    _ = b;
+    var c = T{ 123, 3 };
+    _ = c;
+    var d = T{};
+    _ = d;
 }
 pub export fn entry3() void {
     var a: u32 = 2;
     const T = @TypeOf(.{ 123, a });
-    var b = T{ .@"0" = 123 }; _ = b;
+    var b = T{ .@"0" = 123 };
+    _ = b;
 }
 comptime {
     var a: u32 = 2;
     const T = @TypeOf(.{ 123, a });
-    var b = T{ .@"0" = 123 }; _ = b;
-    var c = T{ 123, 2 }; _ = c;
-    var d = T{}; _ = d;
+    var b = T{ .@"0" = 123 };
+    _ = b;
+    var c = T{ 123, 2 };
+    _ = c;
+    var d = T{};
+    _ = d;
 }
 pub export fn entry4() void {
     var a: u32 = 2;
     const T = @TypeOf(.{ 123, a });
-    var b = T{ 123, 4, 5 }; _ = b;
+    var b = T{ 123, 4, 5 };
+    _ = b;
 }
 pub export fn entry5() void {
     var a: u32 = 2;
     const T = @TypeOf(.{ 123, a });
-    var b = T{ .@"0" = 123, .@"2" = 123, .@"1" = 123 }; _ = b;
+    var b = T{ .@"0" = 123, .@"2" = 123, .@"1" = 123 };
+    _ = b;
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :12:14: error: missing tuple field with index 1
 // :17:14: error: missing tuple field with index 1
-// :29:14: error: expected at most 2 tuple fields; found 3
-// :34:30: error: index '2' out of bounds of tuple 'struct{comptime comptime_int = 123, u32}'
+// :23:14: error: missing tuple field with index 1
+// :39:14: error: expected at most 2 tuple fields; found 3
+// :45:30: error: index '2' out of bounds of tuple 'struct{comptime comptime_int = 123, u32}'
test/cases/compile_errors/type_checking_function_pointers.zig
@@ -1,7 +1,9 @@
 fn a(b: *const fn (*const u8) void) void {
     _ = b;
 }
-fn c(d: u8) void {_ = d;}
+fn c(d: u8) void {
+    _ = d;
+}
 export fn entry() void {
     a(c);
 }
@@ -10,6 +12,6 @@ export fn entry() void {
 // backend=stage2
 // target=native
 //
-// :6:7: error: expected type '*const fn(*const u8) void', found '*const fn(u8) void'
-// :6:7: note: pointer type child 'fn(u8) void' cannot cast into pointer type child 'fn(*const u8) void'
-// :6:7: note: parameter 0 'u8' cannot cast into '*const u8'
+// :8:7: error: expected type '*const fn(*const u8) void', found '*const fn(u8) void'
+// :8:7: note: pointer type child 'fn(u8) void' cannot cast into pointer type child 'fn(*const u8) void'
+// :8:7: note: parameter 0 'u8' cannot cast into '*const u8'
test/cases/compile_errors/undeclared_identifier.zig
@@ -1,11 +1,9 @@
 export fn a() void {
-    return
-    b +
-    c;
+    return b + c;
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :3:5: error: use of undeclared identifier 'b'
+// :2:12: error: use of undeclared identifier 'b'
test/cases/compile_errors/union_auto-enum_value_already_taken.zig
@@ -6,7 +6,7 @@ const MultipleChoice = union(enum(u32)) {
     E = 60,
 };
 export fn entry() void {
-    var x = MultipleChoice { .C = {} };
+    var x = MultipleChoice{ .C = {} };
     _ = x;
 }
 
test/cases/compile_errors/union_enum_field_does_not_match_enum.zig
@@ -10,7 +10,7 @@ const Payload = union(Letter) {
     D: bool,
 };
 export fn entry() void {
-    var a = Payload {.A = 1234};
+    var a = Payload{ .A = 1234 };
     _ = a;
 }
 
test/cases/compile_errors/unreachable_parameter.zig
@@ -1,5 +1,9 @@
-fn f(a: noreturn) void { _ = a; }
-export fn entry() void { f(); }
+fn f(a: noreturn) void {
+    _ = a;
+}
+export fn entry() void {
+    f();
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/unreachable_with_return.zig
@@ -1,9 +1,13 @@
-fn a() noreturn {return;}
-export fn entry() void { a(); }
+fn a() noreturn {
+    return;
+}
+export fn entry() void {
+    a();
+}
 
 // error
 // backend=stage2
 // target=native
 //
-// :1:18: error: function declared 'noreturn' returns
+// :2:5: error: function declared 'noreturn' returns
 // :1:8: note: 'noreturn' declared here
test/cases/compile_errors/while_expected_bool_got_error_union.zig
@@ -1,7 +1,9 @@
 export fn foo() void {
     while (bar()) {}
 }
-fn bar() anyerror!i32 { return 1; }
+fn bar() anyerror!i32 {
+    return 1;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/while_expected_bool_got_optional.zig
@@ -1,7 +1,9 @@
 export fn foo() void {
     while (bar()) {}
 }
-fn bar() ?i32 { return 1; }
+fn bar() ?i32 {
+    return 1;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/while_expected_error_union_got_bool.zig
@@ -1,7 +1,13 @@
 export fn foo() void {
-    while (bar()) |x| {_ = x;} else |err| {_ = err;}
+    while (bar()) |x| {
+        _ = x;
+    } else |err| {
+        _ = err;
+    }
+}
+fn bar() bool {
+    return true;
 }
-fn bar() bool { return true; }
 
 // error
 // backend=stage2
test/cases/compile_errors/while_expected_error_union_got_optional.zig
@@ -1,7 +1,13 @@
 export fn foo() void {
-    while (bar()) |x| {_ = x;} else |err| {_ = err;}
+    while (bar()) |x| {
+        _ = x;
+    } else |err| {
+        _ = err;
+    }
+}
+fn bar() ?i32 {
+    return 1;
 }
-fn bar() ?i32 { return 1; }
 
 // error
 // backend=stage2
test/cases/compile_errors/while_expected_optional_got_bool.zig
@@ -1,7 +1,11 @@
 export fn foo() void {
-    while (bar()) |x| {_ = x;}
+    while (bar()) |x| {
+        _ = x;
+    }
+}
+fn bar() bool {
+    return true;
 }
-fn bar() bool { return true; }
 
 // error
 // backend=stage2
test/cases/compile_errors/while_expected_optional_got_error_union.zig
@@ -1,7 +1,11 @@
 export fn foo() void {
-    while (bar()) |x| {_ = x;}
+    while (bar()) |x| {
+        _ = x;
+    }
+}
+fn bar() anyerror!i32 {
+    return 1;
 }
-fn bar() anyerror!i32 { return 1; }
 
 // error
 // backend=stage2
test/cases/compile_errors/write_to_const_global_variable.zig
@@ -1,8 +1,10 @@
-const x : i32 = 99;
+const x: i32 = 99;
 fn f() void {
     x = 1;
 }
-export fn entry() void { f(); }
+export fn entry() void {
+    f();
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/wrong_function_type.zig
@@ -1,8 +1,16 @@
-const fns = [_]fn() void { a, b, c };
-fn a() i32 {return 0;}
-fn b() i32 {return 1;}
-fn c() i32 {return 2;}
-export fn entry() usize { return @sizeOf(@TypeOf(fns)); }
+const fns = [_]fn () void{ a, b, c };
+fn a() i32 {
+    return 0;
+}
+fn b() i32 {
+    return 1;
+}
+fn c() i32 {
+    return 2;
+}
+export fn entry() usize {
+    return @sizeOf(@TypeOf(fns));
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/wrong_number_of_arguments.zig
@@ -1,7 +1,11 @@
 export fn a() void {
     c(1);
 }
-fn c(d: i32, e: i32, f: i32) void { _ = d; _ = e; _ = f; }
+fn c(d: i32, e: i32, f: i32) void {
+    _ = d;
+    _ = e;
+    _ = f;
+}
 
 // error
 // backend=stage2
test/cases/compile_errors/wrong_number_of_arguments_for_method_fn_call.zig
@@ -1,15 +1,19 @@
 const Foo = struct {
-    fn method(self: *const Foo, a: i32) void {_ = self; _ = a;}
+    fn method(self: *const Foo, a: i32) void {
+        _ = self;
+        _ = a;
+    }
 };
 fn f(foo: *const Foo) void {
-
     foo.method(1, 2);
 }
-export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
+export fn entry() usize {
+    return @sizeOf(@TypeOf(&f));
+}
 
 // error
 // backend=stage2
 // target=native
 //
-// :6:8: error: member function expected 1 argument(s), found 2
+// :8:8: error: member function expected 1 argument(s), found 2
 // :2:5: note: function declared here
test/cases/compile_errors/wrong_size_to_an_array_literal.zig
@@ -1,5 +1,5 @@
 comptime {
-    const array = [2]u8{1, 2, 3};
+    const array = [2]u8{ 1, 2, 3 };
     _ = array;
 }
 
test/cases/compile_errors/wrong_types_given_to_export.zig
@@ -1,11 +1,11 @@
-fn entry() callconv(.C) void { }
+fn entry() callconv(.C) void {}
 comptime {
-    @export(entry, .{.name = "entry", .linkage = @as(u32, 1234) });
+    @export(entry, .{ .name = "entry", .linkage = @as(u32, 1234) });
 }
 
 // error
 // backend=stage2
 // target=native
 //
-// :3:50: error: expected type 'builtin.GlobalLinkage', found 'u32'
+// :3:51: error: expected type 'builtin.GlobalLinkage', found 'u32'
 // :?:?: note: enum declared here
test/cases/llvm/f_segment_address_space_reading_and_writing.zig
@@ -20,7 +20,7 @@ fn getFs() c_ulong {
         :
         : [number] "{rax}" (158),
           [code] "{rdi}" (0x1003),
-          [ptr] "{rsi}" (@ptrToInt(&result)),
+          [ptr] "{rsi}" (@intFromPtr(&result)),
         : "rcx", "r11", "memory"
     );
     return result;
@@ -31,10 +31,10 @@ var test_value: u64 = 12345;
 pub fn main() void {
     const orig_fs = getFs();
 
-    setFs(@ptrToInt(&test_value));
-    assert(getFs() == @ptrToInt(&test_value));
+    setFs(@intFromPtr(&test_value));
+    assert(getFs() == @intFromPtr(&test_value));
 
-    var test_ptr = @intToPtr(*allowzero addrspace(.fs) u64, 0);
+    var test_ptr = @ptrFromInt(*allowzero addrspace(.fs) u64, 0);
     assert(test_ptr.* == 12345);
     test_ptr.* = 98765;
     assert(test_value == 98765);
test/cases/safety/@alignCast misaligned.zig
@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
 }
 
 pub fn main() !void {
-    var array align(4) = [_]u32{0x11111111, 0x11111111};
+    var array align(4) = [_]u32{ 0x11111111, 0x11111111 };
     const bytes = std.mem.sliceAsBytes(array[0..]);
     if (foo(bytes) != 0x11111111) return error.Wrong;
     return error.TestFailed;
test/cases/safety/@intToEnum - no matching tag value.zig โ†’ test/cases/safety/@enumFromInt - no matching tag value.zig
@@ -17,7 +17,7 @@ pub fn main() !void {
     return error.TestFailed;
 }
 fn bar(a: u2) Foo {
-    return @intToEnum(Foo, a);
+    return @enumFromInt(Foo, a);
 }
 fn baz(_: Foo) void {}
 
test/cases/safety/@errSetCast error not present in destination.zig
@@ -7,8 +7,8 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
     }
     std.process.exit(1);
 }
-const Set1 = error{A, B};
-const Set2 = error{A, C};
+const Set1 = error{ A, B };
+const Set2 = error{ A, C };
 pub fn main() !void {
     foo(Set1.B) catch {};
     return error.TestFailed;
test/cases/safety/@floatToInt cannot fit - negative out of range.zig โ†’ test/cases/safety/@intFromFloat cannot fit - negative out of range.zig
@@ -12,9 +12,9 @@ pub fn main() !void {
     return error.TestFailed;
 }
 fn bar(a: f32) i8 {
-    return @floatToInt(i8, a);
+    return @intFromFloat(i8, a);
 }
-fn baz(_: i8) void { }
+fn baz(_: i8) void {}
 // run
 // backend=llvm
 // target=native
test/cases/safety/@floatToInt cannot fit - negative to unsigned.zig โ†’ test/cases/safety/@intFromFloat cannot fit - negative to unsigned.zig
@@ -12,9 +12,9 @@ pub fn main() !void {
     return error.TestFailed;
 }
 fn bar(a: f32) u8 {
-    return @floatToInt(u8, a);
+    return @intFromFloat(u8, a);
 }
-fn baz(_: u8) void { }
+fn baz(_: u8) void {}
 // run
 // backend=llvm
 // target=native
test/cases/safety/@floatToInt cannot fit - positive out of range.zig โ†’ test/cases/safety/@intFromFloat cannot fit - positive out of range.zig
@@ -12,9 +12,9 @@ pub fn main() !void {
     return error.TestFailed;
 }
 fn bar(a: f32) u8 {
-    return @floatToInt(u8, a);
+    return @intFromFloat(u8, a);
 }
-fn baz(_: u8) void { }
+fn baz(_: u8) void {}
 // run
 // backend=llvm
 // target=native
test/cases/safety/@intToPtr address zero to non-optional byte-aligned pointer.zig โ†’ test/cases/safety/@ptrFromInt address zero to non-optional byte-aligned pointer.zig
@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
 }
 pub fn main() !void {
     var zero: usize = 0;
-    var b = @intToPtr(*u8, zero);
+    var b = @ptrFromInt(*u8, zero);
     _ = b;
     return error.TestFailed;
 }
test/cases/safety/@intToPtr address zero to non-optional pointer.zig โ†’ test/cases/safety/@ptrFromInt address zero to non-optional pointer.zig
@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
 }
 pub fn main() !void {
     var zero: usize = 0;
-    var b = @intToPtr(*i32, zero);
+    var b = @ptrFromInt(*i32, zero);
     _ = b;
     return error.TestFailed;
 }
test/cases/safety/intToPtr with misaligned address.zig โ†’ test/cases/safety/@ptrFromInt with misaligned address.zig
@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
 }
 pub fn main() !void {
     var x: usize = 5;
-    var y = @intToPtr([*]align(4) u8, x);
+    var y = @ptrFromInt([*]align(4) u8, x);
     _ = y;
     return error.TestFailed;
 }
test/cases/safety/bad union field access.zig
@@ -14,7 +14,7 @@ const Foo = union {
 };
 
 pub fn main() !void {
-    var f = Foo { .int = 42 };
+    var f = Foo{ .int = 42 };
     bar(&f);
     return error.TestFailed;
 }
test/cases/safety/cast []u8 to bigger slice of wrong size.zig
@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
 }
 
 pub fn main() !void {
-    const x = widenSlice(&[_]u8{1, 2, 3, 4, 5});
+    const x = widenSlice(&[_]u8{ 1, 2, 3, 4, 5 });
     if (x.len == 0) return error.Whatever;
     return error.TestFailed;
 }
test/cases/safety/cast integer to global error and no code matches.zig
@@ -12,7 +12,7 @@ pub fn main() !void {
     return error.TestFailed;
 }
 fn bar(x: u16) anyerror {
-    return @intToError(x);
+    return @errorFromInt(x);
 }
 // run
 // backend=llvm
test/cases/safety/error return trace across suspend points.zig
@@ -1,6 +1,5 @@
 const std = @import("std");
 
-
 pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn {
     _ = message;
     _ = stack_trace;
@@ -36,4 +35,4 @@ fn printTrace(p: anyframe->anyerror!void) void {
 }
 // run
 // backend=stage1
-// target=native
\ No newline at end of file
+// target=native
test/cases/safety/exact division failure - vectors.zig
@@ -9,8 +9,8 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
 }
 
 pub fn main() !void {
-    var a: @Vector(4, i32) = [4]i32{111, 222, 333, 444};
-    var b: @Vector(4, i32) = [4]i32{111, 222, 333, 441};
+    var a: @Vector(4, i32) = [4]i32{ 111, 222, 333, 444 };
+    var b: @Vector(4, i32) = [4]i32{ 111, 222, 333, 441 };
     const x = divExact(a, b);
     _ = x;
     return error.TestFailed;
test/cases/safety/for_len_mismatch_three.zig
@@ -21,4 +21,3 @@ pub fn main() !void {
 // run
 // backend=llvm
 // target=native
-
test/cases/safety/integer division by zero - vectors.zig
@@ -8,8 +8,8 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
     std.process.exit(1);
 }
 pub fn main() !void {
-    var a: @Vector(4, i32) = [4]i32{111, 222, 333, 444};
-    var b: @Vector(4, i32) = [4]i32{111, 0, 333, 444};
+    var a: @Vector(4, i32) = [4]i32{ 111, 222, 333, 444 };
+    var b: @Vector(4, i32) = [4]i32{ 111, 0, 333, 444 };
     const x = div0(a, b);
     _ = x;
     return error.TestFailed;
test/cases/safety/pointer casting to null function pointer.zig
@@ -13,7 +13,7 @@ fn getNullPtr() ?*const anyopaque {
 }
 pub fn main() !void {
     const null_ptr: ?*const anyopaque = getNullPtr();
-    const required_ptr: *align(1) const fn() void = @ptrCast(*align(1) const fn() void, null_ptr);
+    const required_ptr: *align(1) const fn () void = @ptrCast(*align(1) const fn () void, null_ptr);
     _ = required_ptr;
     return error.TestFailed;
 }
test/cases/safety/slice sentinel mismatch - optional pointers.zig
@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
 }
 
 pub fn main() !void {
-    var buf: [4]?*i32 = .{ @intToPtr(*i32, 4), @intToPtr(*i32, 8), @intToPtr(*i32, 12), @intToPtr(*i32, 16) };
+    var buf: [4]?*i32 = .{ @ptrFromInt(*i32, 4), @ptrFromInt(*i32, 8), @ptrFromInt(*i32, 12), @ptrFromInt(*i32, 16) };
     const slice = buf[0..3 :null];
     _ = slice;
     return error.TestFailed;
test/cases/safety/zero casted to error.zig
@@ -12,7 +12,7 @@ pub fn main() !void {
     return error.TestFailed;
 }
 fn bar(x: u16) anyerror {
-    return @intToError(x);
+    return @errorFromInt(x);
 }
 // run
 // backend=llvm
test/cases/x86_64-linux/inline_assembly.2.zig
@@ -2,7 +2,7 @@ pub fn main() void {
     var bruh: u32 = 1;
     asm (""
         :
-        : [bruh] "{rax}" (4)
+        : [bruh] "{rax}" (4),
         : "memory"
     );
 }
test/cases/x86_64-linux/inline_assembly.3.zig
@@ -2,7 +2,7 @@ pub fn main() void {}
 comptime {
     asm (""
         :
-        : [bruh] "{rax}" (4)
+        : [bruh] "{rax}" (4),
         : "memory"
     );
 }
test/cases/assert_function.18.zig
@@ -7,7 +7,7 @@ pub fn main() void {
 }
 
 fn print() void {
-    _ = write(1, @ptrToInt("hello\n"), 6);
+    _ = write(1, @intFromPtr("hello\n"), 6);
 }
 
 // run
test/cases/assert_function.7.zig
@@ -7,7 +7,7 @@ pub fn main() void {
 }
 
 fn print() void {
-    _ = write(1, @ptrToInt("hello\n"), 6);
+    _ = write(1, @intFromPtr("hello\n"), 6);
 }
 
 pub fn assert(ok: bool) void {
test/cases/assert_function.8.zig
@@ -7,7 +7,7 @@ pub fn main() void {
 }
 
 fn print() void {
-    _ = write(1, @ptrToInt("hello\n"), 6);
+    _ = write(1, @intFromPtr("hello\n"), 6);
 }
 
 pub fn assert(ok: bool) void {
test/cases/comptime_var.2.zig
@@ -8,7 +8,7 @@ pub fn main() void {
 }
 
 fn print(len: usize) void {
-    _ = write(1, @ptrToInt("Hello, World!\n"), len);
+    _ = write(1, @intFromPtr("Hello, World!\n"), len);
 }
 
 // run
test/cases/comptime_var.6.zig
@@ -7,7 +7,7 @@ pub fn main() void {
     }
 }
 fn print(len: usize) void {
-    _ = write(1, @ptrToInt("Hello"), len);
+    _ = write(1, @intFromPtr("Hello"), len);
 }
 
 // run
test/cases/conditional_branches.0.zig
@@ -12,7 +12,7 @@ fn foo(x: u64) void {
 
 fn print() void {
     const str = "Hello, World!\n";
-    _ = write(1, @ptrToInt(str.ptr), ptr.len);
+    _ = write(1, @intFromPtr(str.ptr), ptr.len);
 }
 
 // run
test/cases/conditional_branches.1.zig
@@ -15,7 +15,7 @@ fn foo(x: bool) void {
 
 fn print() void {
     const str = "Hello, World!\n";
-    _ = write(1, @ptrToInt(str.ptr), ptr.len);
+    _ = write(1, @intFromPtr(str.ptr), ptr.len);
 }
 
 // run
test/cases/decl_value_arena.zig
@@ -1,20 +1,20 @@
 pub const Protocols: struct {
-	list: *const fn(*Connection) void = undefined,
-	handShake: type = struct {
-		const stepStart: u8 = 0;
-	},
+    list: *const fn (*Connection) void = undefined,
+    handShake: type = struct {
+        const stepStart: u8 = 0;
+    },
 } = .{};
 
 pub const Connection = struct {
-	streamBuffer: [0]u8 = undefined,
-	__lastReceivedPackets: [0]u8 = undefined,
+    streamBuffer: [0]u8 = undefined,
+    __lastReceivedPackets: [0]u8 = undefined,
 
-	handShakeState: u8 = Protocols.handShake.stepStart,
+    handShakeState: u8 = Protocols.handShake.stepStart,
 };
 
 pub fn main() void {
-	var conn: Connection = undefined;
-	_ = conn;
+    var conn: Connection = undefined;
+    _ = conn;
 }
 
 // run
test/cases/enum_values.0.zig
@@ -7,8 +7,8 @@ pub fn main() void {
         number1;
         number2;
     }
-    const number3 = @intToEnum(Number, 2);
-    if (@enumToInt(number3) != 2) {
+    const number3 = @enumFromInt(Number, 2);
+    if (@intFromEnum(number3) != 2) {
         unreachable;
     }
     return;
test/cases/enum_values.1.zig
@@ -3,12 +3,12 @@ const Number = enum { One, Two, Three };
 pub fn main() void {
     var number1 = Number.One;
     var number2: Number = .Two;
-    const number3 = @intToEnum(Number, 2);
+    const number3 = @enumFromInt(Number, 2);
     assert(number1 != number2);
     assert(number2 != number3);
-    assert(@enumToInt(number1) == 0);
-    assert(@enumToInt(number2) == 1);
-    assert(@enumToInt(number3) == 2);
+    assert(@intFromEnum(number1) == 0);
+    assert(@intFromEnum(number2) == 1);
+    assert(@intFromEnum(number3) == 2);
     var x: Number = .Two;
     assert(number2 == x);
 
test/cases/error_in_nested_declaration.zig
@@ -5,7 +5,7 @@ const S = struct {
         pub fn str(_: @This(), extra: []u32) []i32 {
             return @bitCast([]i32, extra);
         }
-    },  
+    },
 };
 
 pub export fn entry() void {
test/cases/hello_world_with_updates.2.zig
@@ -8,7 +8,7 @@ pub export fn main() noreturn {
 }
 
 fn print() void {
-    const msg = @ptrToInt("Hello, World!\n");
+    const msg = @intFromPtr("Hello, World!\n");
     const len = 14;
     _ = write(1, msg, len);
 }
test/cases/hello_world_with_updates.3.zig
@@ -5,7 +5,7 @@ pub fn main() void {
 }
 
 fn print() void {
-    const msg = @ptrToInt("Hello, World!\n");
+    const msg = @intFromPtr("Hello, World!\n");
     const len = 14;
     _ = write(1, msg, len);
 }
test/cases/hello_world_with_updates.4.zig
@@ -8,7 +8,7 @@ pub fn main() void {
 }
 
 fn print() void {
-    const msg = @ptrToInt("Hello, World!\n");
+    const msg = @intFromPtr("Hello, World!\n");
     const len = 14;
     _ = write(1, msg, len);
 }
test/cases/hello_world_with_updates.5.zig
@@ -5,7 +5,7 @@ pub fn main() void {
 }
 
 fn print() void {
-    const msg = @ptrToInt("What is up? This is a longer message that will force the data to be relocated in virtual address space.\n");
+    const msg = @intFromPtr("What is up? This is a longer message that will force the data to be relocated in virtual address space.\n");
     const len = 104;
     _ = write(1, msg, len);
 }
test/cases/hello_world_with_updates.6.zig
@@ -8,7 +8,7 @@ pub fn main() void {
 }
 
 fn print() void {
-    const msg = @ptrToInt("What is up? This is a longer message that will force the data to be relocated in virtual address space.\n");
+    const msg = @intFromPtr("What is up? This is a longer message that will force the data to be relocated in virtual address space.\n");
     const len = 104;
     _ = write(1, msg, len);
 }
test/cases/int_to_ptr.0.zig
@@ -1,5 +1,5 @@
 pub fn main() void {
-    _ = @intToPtr(*u8, 0);
+    _ = @ptrFromInt(*u8, 0);
 }
 
 // error
test/cases/int_to_ptr.1.zig
@@ -1,5 +1,5 @@
 pub fn main() void {
-    _ = @intToPtr(*u32, 2);
+    _ = @ptrFromInt(*u32, 2);
 }
 
 // error
test/cases/unused_labels.3.zig
@@ -1,5 +1,7 @@
 comptime {
-    blk: {blk: {}}
+    blk: {
+        blk: {}
+    }
 }
 
 // error
test/cases/variable_shadowing.3.zig
@@ -1,7 +1,6 @@
 pub fn main() void {
     var i = 0;
-    for ("n", 0..) |_, i| {
-    }
+    for ("n", 0..) |_, i| {}
 }
 
 // error
test/cases/variable_shadowing.4.zig
@@ -1,7 +1,6 @@
 pub fn main() void {
     var i = 0;
-    for ("n") |i| {
-    }
+    for ("n") |i| {}
 }
 
 // error
test/cases/variable_shadowing.5.zig
@@ -1,7 +1,6 @@
 pub fn main() void {
     var i = 0;
-    while ("n") |i| {
-    }
+    while ("n") |i| {}
 }
 
 // error
test/cases/variable_shadowing.6.zig
@@ -2,9 +2,7 @@ pub fn main() void {
     var i = 0;
     while ("n") |bruh| {
         _ = bruh;
-    } else |i| {
-
-    }
+    } else |i| {}
 }
 
 // error
test/link/common_symbols_alignment/main.zig
@@ -4,6 +4,6 @@ extern var foo: i32;
 extern var bar: i32;
 
 test {
-    try std.testing.expect(@ptrToInt(&foo) % 4 == 0);
-    try std.testing.expect(@ptrToInt(&bar) % 4096 == 0);
+    try std.testing.expect(@intFromPtr(&foo) % 4 == 0);
+    try std.testing.expect(@intFromPtr(&bar) % 4096 == 0);
 }
test/standalone/pie/main.zig
@@ -5,7 +5,7 @@ threadlocal var foo: u8 = 42;
 
 test "Check ELF header" {
     // PIE executables are marked as ET_DYN, regular exes as ET_EXEC.
-    const header = @intToPtr(*elf.Ehdr, std.process.getBaseAddress());
+    const header = @ptrFromInt(*elf.Ehdr, std.process.getBaseAddress());
     try std.testing.expectEqual(elf.ET.DYN, header.e_type);
 }
 
test/behavior.zig
@@ -174,7 +174,7 @@ test {
     _ = @import("behavior/inline_switch.zig");
     _ = @import("behavior/int128.zig");
     _ = @import("behavior/int_comparison_elision.zig");
-    _ = @import("behavior/inttoptr.zig");
+    _ = @import("behavior/ptrfromint.zig");
     _ = @import("behavior/ir_block_deps.zig");
     _ = @import("behavior/lower_strlit_to_vector.zig");
     _ = @import("behavior/math.zig");
test/cbe.zig
@@ -71,22 +71,22 @@ pub fn addCases(ctx: *Cases) !void {
     }
 
     {
-        var case = ctx.exeFromCompiledC("intToError", .{});
+        var case = ctx.exeFromCompiledC("errorFromInt", .{});
 
         case.addCompareOutput(
             \\pub export fn main() c_int {
             \\    // comptime checks
             \\    const a = error.A;
             \\    const b = error.B;
-            \\    const c = @intToError(2);
-            \\    const d = @intToError(1);
+            \\    const c = @errorFromInt(2);
+            \\    const d = @errorFromInt(1);
             \\    if (!(c == b)) unreachable;
             \\    if (!(a == d)) unreachable;
             \\    // runtime checks
             \\    var x = error.A;
             \\    var y = error.B;
-            \\    var z = @intToError(2);
-            \\    var f = @intToError(1);
+            \\    var z = @errorFromInt(2);
+            \\    var f = @errorFromInt(1);
             \\    if (!(y == z)) unreachable;
             \\    if (!(x == f)) unreachable;
             \\    return 0;
@@ -94,13 +94,13 @@ pub fn addCases(ctx: *Cases) !void {
         , "");
         case.addError(
             \\pub export fn main() c_int {
-            \\    _ = @intToError(0);
+            \\    _ = @errorFromInt(0);
             \\    return 0;
             \\}
         , &.{":2:21: error: integer value '0' represents no error"});
         case.addError(
             \\pub export fn main() c_int {
-            \\    _ = @intToError(3);
+            \\    _ = @errorFromInt(3);
             \\    return 0;
             \\}
         , &.{":2:21: error: integer value '3' represents no error"});
@@ -635,19 +635,19 @@ pub fn addCases(ctx: *Cases) !void {
             ":6:12: note: consider 'union(enum)' here to make it a tagged union",
         });
 
-        // @enumToInt, @intToEnum, enum literal coercion, field access syntax, comparison, switch
+        // @intFromEnum, @enumFromInt, enum literal coercion, field access syntax, comparison, switch
         case.addCompareOutput(
             \\const Number = enum { One, Two, Three };
             \\
             \\pub export fn main() c_int {
             \\    var number1 = Number.One;
             \\    var number2: Number = .Two;
-            \\    const number3 = @intToEnum(Number, 2);
+            \\    const number3 = @enumFromInt(Number, 2);
             \\    if (number1 == number2) return 1;
             \\    if (number2 == number3) return 1;
-            \\    if (@enumToInt(number1) != 0) return 1;
-            \\    if (@enumToInt(number2) != 1) return 1;
-            \\    if (@enumToInt(number3) != 2) return 1;
+            \\    if (@intFromEnum(number1) != 0) return 1;
+            \\    if (@intFromEnum(number2) != 1) return 1;
+            \\    if (@intFromEnum(number3) != 2) return 1;
             \\    var x: Number = .Two;
             \\    if (number2 != x) return 1;
             \\    switch (x) {
@@ -728,7 +728,7 @@ pub fn addCases(ctx: *Cases) !void {
         case.addError(
             \\pub export fn main() c_int {
             \\    const a = true;
-            \\    _ = @enumToInt(a);
+            \\    _ = @intFromEnum(a);
             \\}
         , &.{
             ":3:20: error: expected enum or tagged union, found 'bool'",
@@ -737,7 +737,7 @@ pub fn addCases(ctx: *Cases) !void {
         case.addError(
             \\pub export fn main() c_int {
             \\    const a = 1;
-            \\    _ = @intToEnum(bool, a);
+            \\    _ = @enumFromInt(bool, a);
             \\}
         , &.{
             ":3:20: error: expected enum, found 'bool'",
@@ -746,7 +746,7 @@ pub fn addCases(ctx: *Cases) !void {
         case.addError(
             \\const E = enum { a, b, c };
             \\pub export fn main() c_int {
-            \\    _ = @intToEnum(E, 3);
+            \\    _ = @enumFromInt(E, 3);
             \\}
         , &.{
             ":3:9: error: enum 'tmp.E' has no tag with value '3'",
test/compare_output.zig
@@ -229,8 +229,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
         \\    }
         \\    const small: f32 = 3.25;
         \\    const x: f64 = small;
-        \\    const y = @floatToInt(i32, x);
-        \\    const z = @intToFloat(f64, y);
+        \\    const y = @intFromFloat(i32, x);
+        \\    const z = @floatFromInt(f64, y);
         \\    _ = c.printf("%.2f\n%d\n%.2f\n%.2f\n", x, y, z, @as(f64, -0.4));
         \\    return 0;
         \\}
test/gen_h.zig
@@ -137,7 +137,7 @@ pub fn addCases(cases: *tests.GenHContext) void {
         \\};
         \\
         \\export fn a(s: *E) u8 {
-        \\    return @enumToInt(s.*);
+        \\    return @intFromEnum(s.*);
         \\}
     , &[_][]const u8{
         \\enum E;
test/translate_c.zig
@@ -300,7 +300,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
     , &[_][]const u8{
         \\pub const FOO = (foo + @as(c_int, 2)).*;
         ,
-        \\pub const VALUE = ((((@as(c_int, 1) + (@as(c_int, 2) * @as(c_int, 3))) + (@as(c_int, 4) * @as(c_int, 5))) + @as(c_int, 6)) << @as(c_int, 7)) | @boolToInt(@as(c_int, 8) == @as(c_int, 9));
+        \\pub const VALUE = ((((@as(c_int, 1) + (@as(c_int, 2) * @as(c_int, 3))) + (@as(c_int, 4) * @as(c_int, 5))) + @as(c_int, 6)) << @as(c_int, 7)) | @intFromBool(@as(c_int, 8) == @as(c_int, 9));
         ,
         \\pub inline fn _AL_READ3BYTES(p: anytype) @TypeOf((@import("std").zig.c_translation.cast([*c]u8, p).* | ((@import("std").zig.c_translation.cast([*c]u8, p) + @as(c_int, 1)).* << @as(c_int, 8))) | ((@import("std").zig.c_translation.cast([*c]u8, p) + @as(c_int, 2)).* << @as(c_int, 16))) {
         \\    return (@import("std").zig.c_translation.cast([*c]u8, p).* | ((@import("std").zig.c_translation.cast([*c]u8, p) + @as(c_int, 1)).* << @as(c_int, 8))) | ((@import("std").zig.c_translation.cast([*c]u8, p) + @as(c_int, 2)).* << @as(c_int, 16));
@@ -439,8 +439,8 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\#define FOO(x) ((x >= 0) + (x >= 0))
         \\#define BAR 1 && 2 > 4
     , &[_][]const u8{
-        \\pub inline fn FOO(x: anytype) @TypeOf(@boolToInt(x >= @as(c_int, 0)) + @boolToInt(x >= @as(c_int, 0))) {
-        \\    return @boolToInt(x >= @as(c_int, 0)) + @boolToInt(x >= @as(c_int, 0));
+        \\pub inline fn FOO(x: anytype) @TypeOf(@intFromBool(x >= @as(c_int, 0)) + @intFromBool(x >= @as(c_int, 0))) {
+        \\    return @intFromBool(x >= @as(c_int, 0)) + @intFromBool(x >= @as(c_int, 0));
         \\}
         ,
         \\pub const BAR = (@as(c_int, 1) != 0) and (@as(c_int, 2) > @as(c_int, 4));
@@ -905,7 +905,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\pub extern fn foo() void;
         \\pub export fn bar() void {
         \\    var func_ptr: ?*anyopaque = @ptrCast(?*anyopaque, &foo);
-        \\    var typed_func_ptr: ?*const fn () callconv(.C) void = @intToPtr(?*const fn () callconv(.C) void, @intCast(c_ulong, @ptrToInt(func_ptr)));
+        \\    var typed_func_ptr: ?*const fn () callconv(.C) void = @ptrFromInt(?*const fn () callconv(.C) void, @intCast(c_ulong, @intFromPtr(func_ptr)));
         \\    _ = @TypeOf(typed_func_ptr);
         \\}
     });
@@ -1719,10 +1719,10 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\    var a: c_int = undefined;
         \\    var b: f32 = undefined;
         \\    var c: ?*anyopaque = undefined;
-        \\    return @boolToInt(!(a == @as(c_int, 0)));
-        \\    return @boolToInt(!(a != 0));
-        \\    return @boolToInt(!(b != 0));
-        \\    return @boolToInt(!(c != null));
+        \\    return @intFromBool(!(a == @as(c_int, 0)));
+        \\    return @intFromBool(!(a != 0));
+        \\    return @intFromBool(!(b != 0));
+        \\    return @intFromBool(!(c != null));
         \\}
     });
 
@@ -2238,7 +2238,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
     , &[_][]const u8{
         \\pub export var a: f32 = @floatCast(f32, 3.1415);
         \\pub export var b: f64 = 3.1415;
-        \\pub export var c: c_int = @floatToInt(c_int, 3.1415);
+        \\pub export var c: c_int = @intFromFloat(c_int, 3.1415);
         \\pub export var d: f64 = 3;
     });
 
@@ -2417,13 +2417,13 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
     });
 
     cases.add("c style cast",
-        \\int float_to_int(float a) {
+        \\int int_from_float(float a) {
         \\    return (int)a;
         \\}
     , &[_][]const u8{
-        \\pub export fn float_to_int(arg_a: f32) c_int {
+        \\pub export fn int_from_float(arg_a: f32) c_int {
         \\    var a = arg_a;
-        \\    return @floatToInt(c_int, a);
+        \\    return @intFromFloat(c_int, a);
         \\}
     });
 
@@ -2534,18 +2534,18 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
             \\    var b = arg_b;
             \\    var c = arg_c;
             \\    var d: enum_Foo = @bitCast(c_uint, FooA);
-            \\    var e: c_int = @boolToInt((a != 0) and (b != 0));
-            \\    var f: c_int = @boolToInt((b != 0) and (c != null));
-            \\    var g: c_int = @boolToInt((a != 0) and (c != null));
-            \\    var h: c_int = @boolToInt((a != 0) or (b != 0));
-            \\    var i: c_int = @boolToInt((b != 0) or (c != null));
-            \\    var j: c_int = @boolToInt((a != 0) or (c != null));
-            \\    var k: c_int = @boolToInt((a != 0) or (@bitCast(c_int, d) != 0));
-            \\    var l: c_int = @boolToInt((@bitCast(c_int, d) != 0) and (b != 0));
-            \\    var m: c_int = @boolToInt((c != null) or (d != 0));
+            \\    var e: c_int = @intFromBool((a != 0) and (b != 0));
+            \\    var f: c_int = @intFromBool((b != 0) and (c != null));
+            \\    var g: c_int = @intFromBool((a != 0) and (c != null));
+            \\    var h: c_int = @intFromBool((a != 0) or (b != 0));
+            \\    var i: c_int = @intFromBool((b != 0) or (c != null));
+            \\    var j: c_int = @intFromBool((a != 0) or (c != null));
+            \\    var k: c_int = @intFromBool((a != 0) or (@bitCast(c_int, d) != 0));
+            \\    var l: c_int = @intFromBool((@bitCast(c_int, d) != 0) and (b != 0));
+            \\    var m: c_int = @intFromBool((c != null) or (d != 0));
             \\    var td: SomeTypedef = 44;
-            \\    var o: c_int = @boolToInt((td != 0) or (b != 0));
-            \\    var p: c_int = @boolToInt((c != null) and (td != 0));
+            \\    var o: c_int = @intFromBool((td != 0) or (b != 0));
+            \\    var p: c_int = @intFromBool((c != null) and (td != 0));
             \\    return (((((((((e + f) + g) + h) + i) + j) + k) + l) + m) + o) + p;
             \\}
         ,
@@ -2605,13 +2605,13 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\pub export fn test_comparisons(arg_a: c_int, arg_b: c_int) c_int {
         \\    var a = arg_a;
         \\    var b = arg_b;
-        \\    var c: c_int = @boolToInt(a < b);
-        \\    var d: c_int = @boolToInt(a > b);
-        \\    var e: c_int = @boolToInt(a <= b);
-        \\    var f: c_int = @boolToInt(a >= b);
-        \\    var g: c_int = @boolToInt(c < d);
-        \\    var h: c_int = @boolToInt(e < f);
-        \\    var i: c_int = @boolToInt(g < h);
+        \\    var c: c_int = @intFromBool(a < b);
+        \\    var d: c_int = @intFromBool(a > b);
+        \\    var e: c_int = @intFromBool(a <= b);
+        \\    var f: c_int = @intFromBool(a >= b);
+        \\    var g: c_int = @intFromBool(c < d);
+        \\    var h: c_int = @intFromBool(e < f);
+        \\    var i: c_int = @intFromBool(g < h);
         \\    return i;
         \\}
     });
@@ -3258,11 +3258,11 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\pub extern fn fn_bool(x: bool) void;
         \\pub extern fn fn_ptr(x: ?*anyopaque) void;
         \\pub export fn call() void {
-        \\    fn_int(@floatToInt(c_int, 3.0));
-        \\    fn_int(@floatToInt(c_int, 3.0));
+        \\    fn_int(@intFromFloat(c_int, 3.0));
+        \\    fn_int(@intFromFloat(c_int, 3.0));
         \\    fn_int(@as(c_int, 1094861636));
-        \\    fn_f32(@intToFloat(f32, @as(c_int, 3)));
-        \\    fn_f64(@intToFloat(f64, @as(c_int, 3)));
+        \\    fn_f32(@floatFromInt(f32, @as(c_int, 3)));
+        \\    fn_f64(@floatFromInt(f64, @as(c_int, 3)));
         \\    fn_char(@bitCast(u8, @truncate(i8, @as(c_int, '3'))));
         \\    fn_char(@bitCast(u8, @truncate(i8, @as(c_int, '\x01'))));
         \\    fn_char(@bitCast(u8, @truncate(i8, @as(c_int, 0))));
@@ -3270,9 +3270,9 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\    fn_f64(3.0);
         \\    fn_bool(@as(c_int, 123) != 0);
         \\    fn_bool(@as(c_int, 0) != 0);
-        \\    fn_bool(@ptrToInt(&fn_int) != 0);
-        \\    fn_int(@intCast(c_int, @ptrToInt(&fn_int)));
-        \\    fn_ptr(@intToPtr(?*anyopaque, @as(c_int, 42)));
+        \\    fn_bool(@intFromPtr(&fn_int) != 0);
+        \\    fn_int(@intCast(c_int, @intFromPtr(&fn_int)));
+        \\    fn_ptr(@ptrFromInt(?*anyopaque, @as(c_int, 42)));
         \\}
     });
 
@@ -3473,11 +3473,11 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\}
         \\pub export fn bar(arg_a: [*c]const c_int) void {
         \\    var a = arg_a;
-        \\    foo(@intToPtr([*c]c_int, @ptrToInt(a)));
+        \\    foo(@ptrFromInt([*c]c_int, @intFromPtr(a)));
         \\}
         \\pub export fn baz(arg_a: [*c]volatile c_int) void {
         \\    var a = arg_a;
-        \\    foo(@intToPtr([*c]c_int, @ptrToInt(a)));
+        \\    foo(@ptrFromInt([*c]c_int, @intFromPtr(a)));
         \\}
     });
 
@@ -3491,10 +3491,10 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
     , &[_][]const u8{
         \\pub export fn foo(arg_x: bool) bool {
         \\    var x = arg_x;
-        \\    var a: bool = @as(c_int, @boolToInt(x)) != @as(c_int, 1);
-        \\    var b: bool = @as(c_int, @boolToInt(a)) != @as(c_int, 0);
-        \\    var c: bool = @ptrToInt(&foo) != 0;
-        \\    return foo(@as(c_int, @boolToInt(c)) != @as(c_int, @boolToInt(b)));
+        \\    var a: bool = @as(c_int, @intFromBool(x)) != @as(c_int, 1);
+        \\    var b: bool = @as(c_int, @intFromBool(a)) != @as(c_int, 0);
+        \\    var c: bool = @intFromPtr(&foo) != 0;
+        \\    return foo(@as(c_int, @intFromBool(c)) != @as(c_int, @intFromBool(b)));
         \\}
     });
 
@@ -3910,7 +3910,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\pub export fn foo() void {
         \\    var a: c_int = undefined;
         \\    if ((blk: {
-        \\        const tmp = @boolToInt(@as(c_int, 1) > @as(c_int, 0));
+        \\        const tmp = @intFromBool(@as(c_int, 1) > @as(c_int, 0));
         \\        a = tmp;
         \\        break :blk tmp;
         \\    }) != 0) {}
@@ -3928,7 +3928,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
             \\pub export fn foo() void {
             \\    var a: S = undefined;
             \\    var b: S = undefined;
-            \\    var c: c_longlong = @divExact(@bitCast(c_longlong, @ptrToInt(a) -% @ptrToInt(b)), @sizeOf(u8));
+            \\    var c: c_longlong = @divExact(@bitCast(c_longlong, @intFromPtr(a) -% @intFromPtr(b)), @sizeOf(u8));
             \\    _ = @TypeOf(c);
             \\}
         });
@@ -3943,7 +3943,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
             \\pub export fn foo() void {
             \\    var a: S = undefined;
             \\    var b: S = undefined;
-            \\    var c: c_long = @divExact(@bitCast(c_long, @ptrToInt(a) -% @ptrToInt(b)), @sizeOf(u8));
+            \\    var c: c_long = @divExact(@bitCast(c_long, @intFromPtr(a) -% @intFromPtr(b)), @sizeOf(u8));
             \\    _ = @TypeOf(c);
             \\}
         });
tools/gen_outline_atomics.zig
@@ -31,7 +31,7 @@ pub fn main() !void {
         \\/// It is intentionally not exported in order to make the machine code that
         \\/// uses it a statically predicted direct branch rather than using the PLT,
         \\/// which ARM is concerned would have too much overhead.
-        \\var __aarch64_have_lse_atomics: u8 = @boolToInt(always_has_lse);
+        \\var __aarch64_have_lse_atomics: u8 = @intFromBool(always_has_lse);
         \\
         \\
     );
@@ -144,11 +144,11 @@ const N = enum(u8) {
     }
 
     fn register(n: N) []const u8 {
-        return if (@enumToInt(n) < 8) "w" else "x";
+        return if (@intFromEnum(n) < 8) "w" else "x";
     }
 
     fn toBytes(n: N) u8 {
-        return @enumToInt(n);
+        return @intFromEnum(n);
     }
 
     fn toBits(n: N) u8 {
@@ -212,7 +212,7 @@ fn generateCas(arena: Allocator, n: N, order: Ordering) ![]const u8 {
 
     const reg = n.register();
 
-    if (@enumToInt(n) < 16) {
+    if (@intFromEnum(n) < 16) {
         const cas = try std.fmt.allocPrint(arena, ".inst 0x08a07c41 + {s} + {s}", .{ s_def.b, o_def.m });
         const ldxr = try std.fmt.allocPrint(arena, "ld{s}xr{s}", .{ o_def.a, s_def.s });
         const stxr = try std.fmt.allocPrint(arena, "st{s}xr{s}", .{ o_def.l, s_def.s });
tools/gen_stubs.zig
@@ -444,7 +444,7 @@ fn parseElf(parse: Parse, comptime is_64: bool, comptime endian: builtin.Endian)
         const name = try arena.dupe(u8, mem.sliceTo(dynstr[s(sym.st_name)..], 0));
         const ty = @truncate(u4, sym.st_info);
         const binding = @truncate(u4, sym.st_info >> 4);
-        const visib = @intToEnum(elf.STV, @truncate(u2, sym.st_other));
+        const visib = @enumFromInt(elf.STV, @truncate(u2, sym.st_other));
         const size = s(sym.st_size);
 
         if (parse.blacklist.contains(name)) continue;
tools/process_headers.zig
@@ -32,7 +32,7 @@ const MultiArch = union(enum) {
     specific: Arch,
 
     fn eql(a: MultiArch, b: MultiArch) bool {
-        if (@enumToInt(a) != @enumToInt(b))
+        if (@intFromEnum(a) != @intFromEnum(b))
             return false;
         if (a != .specific)
             return true;
@@ -45,7 +45,7 @@ const MultiAbi = union(enum) {
     specific: Abi,
 
     fn eql(a: MultiAbi, b: MultiAbi) bool {
-        if (@enumToInt(a) != @enumToInt(b))
+        if (@intFromEnum(a) != @intFromEnum(b))
             return false;
         if (std.meta.Tag(MultiAbi)(a) != .specific)
             return true;
@@ -262,9 +262,9 @@ const DestTarget = struct {
     const HashContext = struct {
         pub fn hash(self: @This(), a: DestTarget) u32 {
             _ = self;
-            return @enumToInt(a.arch) +%
-                (@enumToInt(a.os) *% @as(u32, 4202347608)) +%
-                (@enumToInt(a.abi) *% @as(u32, 4082223418));
+            return @intFromEnum(a.arch) +%
+                (@intFromEnum(a.os) *% @as(u32, 4202347608)) +%
+                (@intFromEnum(a.abi) *% @as(u32, 4082223418));
         }
 
         pub fn eql(self: @This(), a: DestTarget, b: DestTarget, b_index: usize) bool {
tools/update-linux-headers.zig
@@ -37,7 +37,7 @@ const MultiArch = union(enum) {
     specific: Arch,
 
     fn eql(a: MultiArch, b: MultiArch) bool {
-        if (@enumToInt(a) != @enumToInt(b))
+        if (@intFromEnum(a) != @intFromEnum(b))
             return false;
         if (a != .specific)
             return true;
tools/update_clang_options.zig
@@ -591,7 +591,7 @@ pub fn main() anyerror!void {
 
         for (all_features, 0..) |feat, i| {
             const llvm_name = feat.llvm_name orelse continue;
-            const zig_feat = @intToEnum(Feature, i);
+            const zig_feat = @enumFromInt(Feature, i);
             const zig_name = @tagName(zig_feat);
             try llvm_to_zig_cpu_features.put(llvm_name, zig_name);
         }
tools/update_cpu_features.zig
@@ -1247,7 +1247,7 @@ fn processOneTarget(job: Job) anyerror!void {
     for (all_features.items) |feature| {
         if (feature.llvm_name) |llvm_name| {
             try w.print(
-                \\    result[@enumToInt(Feature.{})] = .{{
+                \\    result[@intFromEnum(Feature.{})] = .{{
                 \\        .llvm_name = "{}",
                 \\        .description = "{}",
                 \\        .dependencies = featureSet(&[_]Feature{{
@@ -1260,7 +1260,7 @@ fn processOneTarget(job: Job) anyerror!void {
             );
         } else {
             try w.print(
-                \\    result[@enumToInt(Feature.{})] = .{{
+                \\    result[@intFromEnum(Feature.{})] = .{{
                 \\        .llvm_name = null,
                 \\        .description = "{}",
                 \\        .dependencies = featureSet(&[_]Feature{{
tools/update_spirv_features.zig
@@ -137,7 +137,7 @@ pub fn main() !void {
 
     for (versions, 0..) |ver, i| {
         try w.print(
-            \\    result[@enumToInt(Feature.v{0}_{1})] = .{{
+            \\    result[@intFromEnum(Feature.v{0}_{1})] = .{{
             \\        .llvm_name = null,
             \\        .description = "SPIR-V version {0}.{1}",
             \\
@@ -163,7 +163,7 @@ pub fn main() !void {
     // TODO: Extension dependencies.
     for (extensions) |ext| {
         try w.print(
-            \\    result[@enumToInt(Feature.{s})] = .{{
+            \\    result[@intFromEnum(Feature.{s})] = .{{
             \\        .llvm_name = null,
             \\        .description = "SPIR-V extension {s}",
             \\        .dependencies = featureSet(&[_]Feature{{}}),
@@ -178,7 +178,7 @@ pub fn main() !void {
     // TODO: Capability extension dependencies.
     for (capabilities) |cap| {
         try w.print(
-            \\    result[@enumToInt(Feature.{s})] = .{{
+            \\    result[@intFromEnum(Feature.{s})] = .{{
             \\        .llvm_name = null,
             \\        .description = "Enable SPIR-V capability {s}",
             \\        .dependencies = featureSet(&[_]Feature{{
build.zig
@@ -487,7 +487,7 @@ fn addWasiUpdateStep(b: *std.Build, version: [:0]const u8) !void {
         .cpu_arch = .wasm32,
         .os_tag = .wasi,
     };
-    target.cpu_features_add.addFeature(@enumToInt(std.Target.wasm.Feature.bulk_memory));
+    target.cpu_features_add.addFeature(@intFromEnum(std.Target.wasm.Feature.bulk_memory));
 
     const exe = addCompilerStep(b, .ReleaseSmall, target);
 
CMakeLists.txt
@@ -376,7 +376,7 @@ set(ZIG_STAGE2_SOURCES
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixxfdi.zig"
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixxfsi.zig"
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixxfti.zig"
-    "${CMAKE_SOURCE_DIR}/lib/compiler_rt/float_to_int.zig"
+    "${CMAKE_SOURCE_DIR}/lib/compiler_rt/int_from_float.zig"
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatdidf.zig"
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatdihf.zig"
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatdisf.zig"
@@ -417,7 +417,7 @@ set(ZIG_STAGE2_SOURCES
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/getf2.zig"
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/gexf2.zig"
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/int.zig"
-    "${CMAKE_SOURCE_DIR}/lib/compiler_rt/int_to_float.zig"
+    "${CMAKE_SOURCE_DIR}/lib/compiler_rt/float_from_int.zig"
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/log.zig"
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/log10.zig"
     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/log2.zig"