Commit 2f599b655b

Andrew Kelley <andrew@ziglang.org>
2021-08-16 10:11:10
update src/ to LLVM 13 rc1 API
1 parent a69b860
lib/std/target.zig
@@ -464,6 +464,7 @@ pub const Target = struct {
         musl,
         musleabi,
         musleabihf,
+        muslx32,
         msvc,
         itanium,
         cygnus,
@@ -758,6 +759,7 @@ pub const Target = struct {
             bpfeb,
             csky,
             hexagon,
+            m68k,
             mips,
             mipsel,
             mips64,
@@ -900,6 +902,7 @@ pub const Target = struct {
                     .arm => ._ARM,
                     .armeb => ._ARM,
                     .hexagon => ._HEXAGON,
+                    .m68k => ._68K,
                     .le32 => ._NONE,
                     .mips => ._MIPS,
                     .mipsel => ._MIPS_RS3_LE,
@@ -960,6 +963,7 @@ pub const Target = struct {
                     .arm => .ARM,
                     .armeb => .Unknown,
                     .hexagon => .Unknown,
+                    .m68k => .Unknown,
                     .le32 => .Unknown,
                     .mips => .Unknown,
                     .mipsel => .Unknown,
@@ -1063,6 +1067,7 @@ pub const Target = struct {
                     .armeb,
                     .aarch64_be,
                     .bpfeb,
+                    .m68k,
                     .mips,
                     .mips64,
                     .powerpc,
@@ -1089,6 +1094,7 @@ pub const Target = struct {
                     .armeb,
                     .csky,
                     .hexagon,
+                    .m68k,
                     .le32,
                     .mips,
                     .mipsel,
@@ -1587,6 +1593,7 @@ pub const Target = struct {
                 .arc,
                 .csky,
                 .hexagon,
+                .m68k,
                 .msp430,
                 .r600,
                 .amdgcn,
src/codegen/llvm/bindings.zig
@@ -259,6 +259,7 @@ extern fn LLVMGetInlineAsm(
     HasSideEffects: Bool,
     IsAlignStack: Bool,
     Dialect: InlineAsmDialect,
+    CanThrow: Bool,
 ) *const Value;
 
 pub const functionType = LLVMFunctionType;
@@ -840,6 +841,7 @@ pub const ArchType = enum(c_int) {
     bpfeb,
     csky,
     hexagon,
+    m68k,
     mips,
     mipsel,
     mips64,
src/codegen/llvm.zig
@@ -31,6 +31,7 @@ pub fn targetTriple(allocator: *Allocator, target: std.Target) ![:0]u8 {
         .bpfeb => "bpfeb",
         .csky => "csky",
         .hexagon => "hexagon",
+        .m68k => "m68k",
         .mips => "mips",
         .mipsel => "mipsel",
         .mips64 => "mips64",
@@ -140,6 +141,7 @@ pub fn targetTriple(allocator: *Allocator, target: std.Target) ![:0]u8 {
         .musl => "musl",
         .musleabi => "musleabi",
         .musleabihf => "musleabihf",
+        .muslx32 => "muslx32",
         .msvc => "msvc",
         .itanium => "itanium",
         .cygnus => "cygnus",
@@ -1463,6 +1465,7 @@ pub const FuncGen = struct {
             llvm.Bool.fromBool(is_volatile),
             .False,
             .ATT,
+            .False,
         );
         return self.builder.buildCall(
             asm_fn,
src/stage1/codegen.cpp
@@ -3953,7 +3953,7 @@ static LLVMValueRef gen_valgrind_client_request(CodeGen *g, LLVMValueRef default
                     input_and_output_count, false);
             LLVMValueRef asm_fn = LLVMGetInlineAsm(function_type, buf_ptr(asm_template), buf_len(asm_template),
                     buf_ptr(asm_constraints), buf_len(asm_constraints), asm_has_side_effects, asm_is_alignstack,
-                    LLVMInlineAsmDialectATT);
+                    LLVMInlineAsmDialectATT, false);
             return LLVMBuildCall(g->builder, asm_fn, param_values, input_and_output_count, "");
         }
     }
@@ -5064,7 +5064,7 @@ static LLVMValueRef ir_render_asm_gen(CodeGen *g, Stage1Air *executable, Stage1A
 
     bool is_volatile = instruction->has_side_effects || (asm_expr->output_list.length == 0);
     LLVMValueRef asm_fn = LLVMGetInlineAsm(function_type, buf_ptr(&llvm_template), buf_len(&llvm_template),
-            buf_ptr(&constraint_buf), buf_len(&constraint_buf), is_volatile, false, LLVMInlineAsmDialectATT);
+            buf_ptr(&constraint_buf), buf_len(&constraint_buf), is_volatile, false, LLVMInlineAsmDialectATT, false);
 
     LLVMValueRef built_call = LLVMBuildCall(g->builder, asm_fn, param_values, (unsigned)input_and_output_count, "");
     heap::c_allocator.deallocate(param_values, input_and_output_count);
@@ -5606,21 +5606,21 @@ static LLVMAtomicOrdering to_LLVMAtomicOrdering(AtomicOrder atomic_order) {
     zig_unreachable();
 }
 
-static enum ZigLLVM_AtomicRMWBinOp to_ZigLLVMAtomicRMWBinOp(AtomicRmwOp op, bool is_signed, bool is_float) {
+static LLVMAtomicRMWBinOp to_LLVMAtomicRMWBinOp(AtomicRmwOp op, bool is_signed, bool is_float) {
     switch (op) {
-        case AtomicRmwOp_xchg: return ZigLLVMAtomicRMWBinOpXchg;
+        case AtomicRmwOp_xchg: return LLVMAtomicRMWBinOpXchg;
         case AtomicRmwOp_add:
-            return is_float ? ZigLLVMAtomicRMWBinOpFAdd : ZigLLVMAtomicRMWBinOpAdd;
+            return is_float ? LLVMAtomicRMWBinOpFAdd : LLVMAtomicRMWBinOpAdd;
         case AtomicRmwOp_sub:
-            return is_float ? ZigLLVMAtomicRMWBinOpFSub : ZigLLVMAtomicRMWBinOpSub;
-        case AtomicRmwOp_and: return ZigLLVMAtomicRMWBinOpAnd;
-        case AtomicRmwOp_nand: return ZigLLVMAtomicRMWBinOpNand;
-        case AtomicRmwOp_or: return ZigLLVMAtomicRMWBinOpOr;
-        case AtomicRmwOp_xor: return ZigLLVMAtomicRMWBinOpXor;
+            return is_float ? LLVMAtomicRMWBinOpFSub : LLVMAtomicRMWBinOpSub;
+        case AtomicRmwOp_and: return LLVMAtomicRMWBinOpAnd;
+        case AtomicRmwOp_nand: return LLVMAtomicRMWBinOpNand;
+        case AtomicRmwOp_or: return LLVMAtomicRMWBinOpOr;
+        case AtomicRmwOp_xor: return LLVMAtomicRMWBinOpXor;
         case AtomicRmwOp_max:
-            return is_signed ? ZigLLVMAtomicRMWBinOpMax : ZigLLVMAtomicRMWBinOpUMax;
+            return is_signed ? LLVMAtomicRMWBinOpMax : LLVMAtomicRMWBinOpUMax;
         case AtomicRmwOp_min:
-            return is_signed ? ZigLLVMAtomicRMWBinOpMin : ZigLLVMAtomicRMWBinOpUMin;
+            return is_signed ? LLVMAtomicRMWBinOpMin : LLVMAtomicRMWBinOpUMin;
     }
     zig_unreachable();
 }
@@ -5679,8 +5679,9 @@ static LLVMValueRef ir_render_cmpxchg(CodeGen *g, Stage1Air *executable, Stage1A
     LLVMAtomicOrdering success_order = to_LLVMAtomicOrdering(instruction->success_order);
     LLVMAtomicOrdering failure_order = to_LLVMAtomicOrdering(instruction->failure_order);
 
-    LLVMValueRef result_val = ZigLLVMBuildCmpXchg(g->builder, ptr_val, cmp_val, new_val,
-            success_order, failure_order, instruction->is_weak);
+    LLVMValueRef result_val = LLVMBuildAtomicCmpXchg(g->builder, ptr_val, cmp_val, new_val,
+            success_order, failure_order, g->is_single_threaded);
+    LLVMSetWeak(result_val, instruction->is_weak);
 
     ZigType *optional_type = instruction->base.value->type;
     assert(optional_type->id == ZigTypeIdOptional);
@@ -6446,13 +6447,13 @@ static LLVMValueRef ir_render_atomic_rmw(CodeGen *g, Stage1Air *executable,
     } else {
         is_signed = false;
     }
-    enum ZigLLVM_AtomicRMWBinOp op = to_ZigLLVMAtomicRMWBinOp(instruction->op, is_signed, is_float);
+    LLVMAtomicRMWBinOp op = to_LLVMAtomicRMWBinOp(instruction->op, is_signed, is_float);
     LLVMAtomicOrdering ordering = to_LLVMAtomicOrdering(instruction->ordering);
     LLVMValueRef ptr = ir_llvm_value(g, instruction->ptr);
     LLVMValueRef operand = ir_llvm_value(g, instruction->operand);
 
     LLVMTypeRef actual_abi_type = get_atomic_abi_type(g, instruction->ptr,
-            op == ZigLLVMAtomicRMWBinOpXchg);
+            op == LLVMAtomicRMWBinOpXchg);
     if (actual_abi_type != nullptr) {
         // operand needs widening and truncating or bitcasting.
         LLVMValueRef casted_ptr = LLVMBuildBitCast(g->builder, ptr,
@@ -6465,7 +6466,7 @@ static LLVMValueRef ir_render_atomic_rmw(CodeGen *g, Stage1Air *executable,
         } else {
             casted_operand = LLVMBuildZExt(g->builder, operand, actual_abi_type, "");
         }
-        LLVMValueRef uncasted_result = ZigLLVMBuildAtomicRMW(g->builder, op, casted_ptr, casted_operand, ordering,
+        LLVMValueRef uncasted_result = LLVMBuildAtomicRMW(g->builder, op, casted_ptr, casted_operand, ordering,
                 g->is_single_threaded);
         if (is_float) {
             return LLVMBuildBitCast(g->builder, uncasted_result, get_llvm_type(g, operand_type), "");
@@ -6475,14 +6476,14 @@ static LLVMValueRef ir_render_atomic_rmw(CodeGen *g, Stage1Air *executable,
     }
 
     if (get_codegen_ptr_type_bail(g, operand_type) == nullptr) {
-        return ZigLLVMBuildAtomicRMW(g->builder, op, ptr, operand, ordering, g->is_single_threaded);
+        return LLVMBuildAtomicRMW(g->builder, op, ptr, operand, ordering, g->is_single_threaded);
     }
 
     // it's a pointer but we need to treat it as an int
     LLVMValueRef casted_ptr = LLVMBuildBitCast(g->builder, ptr,
         LLVMPointerType(g->builtin_types.entry_usize->llvm_type, 0), "");
     LLVMValueRef casted_operand = LLVMBuildPtrToInt(g->builder, operand, g->builtin_types.entry_usize->llvm_type, "");
-    LLVMValueRef uncasted_result = ZigLLVMBuildAtomicRMW(g->builder, op, casted_ptr, casted_operand, ordering,
+    LLVMValueRef uncasted_result = LLVMBuildAtomicRMW(g->builder, op, casted_ptr, casted_operand, ordering,
             g->is_single_threaded);
     return LLVMBuildIntToPtr(g->builder, uncasted_result, get_llvm_type(g, operand_type), "");
 }
src/stage1/target.cpp
@@ -25,6 +25,7 @@ static const ZigLLVM_ArchType arch_list[] = {
     ZigLLVM_bpfeb,          // eBPF or extended BPF or 64-bit BPF (big endian)
     ZigLLVM_csky,           // CSKY: csky
     ZigLLVM_hexagon,        // Hexagon: hexagon
+    ZigLLVM_m68k,           // M68k: Motorola 680x0 family
     ZigLLVM_mips,           // MIPS: mips, mipsallegrex, mipsr6
     ZigLLVM_mipsel,         // MIPSEL: mipsel, mipsallegrexe, mipsr6el
     ZigLLVM_mips64,         // MIPS64: mips64, mips64r6, mipsn32, mipsn32r6
@@ -147,6 +148,7 @@ static const ZigLLVM_EnvironmentType abi_list[] = {
     ZigLLVM_Musl,
     ZigLLVM_MuslEABI,
     ZigLLVM_MuslEABIHF,
+    ZigLLVM_MuslX32,
 
     ZigLLVM_MSVC,
     ZigLLVM_Itanium,
@@ -497,6 +499,7 @@ uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
         case ZigLLVM_arm:
         case ZigLLVM_armeb:
         case ZigLLVM_hexagon:
+        case ZigLLVM_m68k:
         case ZigLLVM_le32:
         case ZigLLVM_mips:
         case ZigLLVM_mipsel:
@@ -564,6 +567,7 @@ uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch) {
         case ZigLLVM_arm:
         case ZigLLVM_armeb:
         case ZigLLVM_hexagon:
+        case ZigLLVM_m68k:
         case ZigLLVM_le32:
         case ZigLLVM_mips:
         case ZigLLVM_mipsel:
@@ -798,6 +802,8 @@ const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch) {
         case ZigLLVM_aarch64_32:
         case ZigLLVM_riscv32:
         case ZigLLVM_riscv64:
+        case ZigLLVM_m68k:
+        case ZigLLVM_mips:
         case ZigLLVM_mipsel:
         case ZigLLVM_ppc:
         case ZigLLVM_ppcle:
@@ -824,7 +830,6 @@ const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch) {
         case ZigLLVM_kalimba:
         case ZigLLVM_le32:
         case ZigLLVM_le64:
-        case ZigLLVM_mips:
         case ZigLLVM_mips64:
         case ZigLLVM_mips64el:
         case ZigLLVM_msp430:
@@ -873,6 +878,7 @@ bool target_is_arm(const ZigTarget *target) {
         case ZigLLVM_bpfel:
         case ZigLLVM_csky:
         case ZigLLVM_hexagon:
+        case ZigLLVM_m68k:
         case ZigLLVM_lanai:
         case ZigLLVM_hsail:
         case ZigLLVM_hsail64:
src/clang.zig
@@ -1168,13 +1168,16 @@ const StmtClass = enum(c_int) {
     IndirectGotoStmtClass,
     MSDependentExistsStmtClass,
     NullStmtClass,
+    OMPCanonicalLoopClass,
     OMPAtomicDirectiveClass,
     OMPBarrierDirectiveClass,
     OMPCancelDirectiveClass,
     OMPCancellationPointDirectiveClass,
     OMPCriticalDirectiveClass,
     OMPDepobjDirectiveClass,
+    OMPDispatchDirectiveClass,
     OMPFlushDirectiveClass,
+    OMPInteropDirectiveClass,
     OMPDistributeDirectiveClass,
     OMPDistributeParallelForDirectiveClass,
     OMPDistributeParallelForSimdDirectiveClass,
@@ -1200,6 +1203,9 @@ const StmtClass = enum(c_int) {
     OMPTeamsDistributeParallelForDirectiveClass,
     OMPTeamsDistributeParallelForSimdDirectiveClass,
     OMPTeamsDistributeSimdDirectiveClass,
+    OMPTileDirectiveClass,
+    OMPUnrollDirectiveClass,
+    OMPMaskedDirectiveClass,
     OMPMasterDirectiveClass,
     OMPOrderedDirectiveClass,
     OMPParallelDirectiveClass,
@@ -1348,6 +1354,7 @@ const StmtClass = enum(c_int) {
     PseudoObjectExprClass,
     RecoveryExprClass,
     RequiresExprClass,
+    SYCLUniqueStableNameExprClass,
     ShuffleVectorExprClass,
     SizeOfPackExprClass,
     SourceLocExprClass,
@@ -1390,6 +1397,7 @@ pub const CK = enum(c_int) {
     PointerToIntegral,
     PointerToBoolean,
     ToVoid,
+    MatrixCast,
     VectorSplat,
     IntegralCast,
     IntegralToBoolean,
@@ -1445,6 +1453,8 @@ pub const DeclKind = enum(c_int) {
     Import,
     LifetimeExtendedTemporary,
     LinkageSpec,
+    Using,
+    UsingEnum,
     Label,
     Namespace,
     NamespaceAlias,
@@ -1473,7 +1483,7 @@ pub const DeclKind = enum(c_int) {
     TypeAlias,
     Typedef,
     UnresolvedUsingTypename,
-    Using,
+    UnresolvedUsingIfExists,
     UsingDirective,
     UsingPack,
     UsingShadow,
@@ -1615,6 +1625,72 @@ pub const BuiltinTypeKind = enum(c_int) {
     SveBool,
     VectorQuad,
     VectorPair,
+    RvvInt8mf8,
+    RvvInt8mf4,
+    RvvInt8mf2,
+    RvvInt8m1,
+    RvvInt8m2,
+    RvvInt8m4,
+    RvvInt8m8,
+    RvvUint8mf8,
+    RvvUint8mf4,
+    RvvUint8mf2,
+    RvvUint8m1,
+    RvvUint8m2,
+    RvvUint8m4,
+    RvvUint8m8,
+    RvvInt16mf4,
+    RvvInt16mf2,
+    RvvInt16m1,
+    RvvInt16m2,
+    RvvInt16m4,
+    RvvInt16m8,
+    RvvUint16mf4,
+    RvvUint16mf2,
+    RvvUint16m1,
+    RvvUint16m2,
+    RvvUint16m4,
+    RvvUint16m8,
+    RvvInt32mf2,
+    RvvInt32m1,
+    RvvInt32m2,
+    RvvInt32m4,
+    RvvInt32m8,
+    RvvUint32mf2,
+    RvvUint32m1,
+    RvvUint32m2,
+    RvvUint32m4,
+    RvvUint32m8,
+    RvvInt64m1,
+    RvvInt64m2,
+    RvvInt64m4,
+    RvvInt64m8,
+    RvvUint64m1,
+    RvvUint64m2,
+    RvvUint64m4,
+    RvvUint64m8,
+    RvvFloat16mf4,
+    RvvFloat16mf2,
+    RvvFloat16m1,
+    RvvFloat16m2,
+    RvvFloat16m4,
+    RvvFloat16m8,
+    RvvFloat32mf2,
+    RvvFloat32m1,
+    RvvFloat32m2,
+    RvvFloat32m4,
+    RvvFloat32m8,
+    RvvFloat64m1,
+    RvvFloat64m2,
+    RvvFloat64m4,
+    RvvFloat64m8,
+    RvvBool1,
+    RvvBool2,
+    RvvBool4,
+    RvvBool8,
+    RvvBool16,
+    RvvBool32,
+    RvvBool64,
     Void,
     Bool,
     Char_U,
@@ -1705,6 +1781,7 @@ pub const CallingConv = enum(c_int) {
     SpirFunction,
     OpenCLKernel,
     Swift,
+    SwiftAsync,
     PreserveMost,
     PreserveAll,
     AArch64VectorCall,
src/target.zig
@@ -34,6 +34,8 @@ pub const available_libcs = [_]ArchOsAbi{
     .{ .arch = .i386, .os = .linux, .abi = .gnu },
     .{ .arch = .i386, .os = .linux, .abi = .musl },
     .{ .arch = .i386, .os = .windows, .abi = .gnu },
+    .{ .arch = .m68k, .os = .linux, .abi = .gnu },
+    .{ .arch = .m68k, .os = .linux, .abi = .musl },
     .{ .arch = .mips64el, .os = .linux, .abi = .gnuabi64 },
     .{ .arch = .mips64el, .os = .linux, .abi = .gnuabin32 },
     .{ .arch = .mips64el, .os = .linux, .abi = .musl },
@@ -83,6 +85,7 @@ pub fn libCGenericName(target: std.Target) [:0]const u8 {
         .musl,
         .musleabi,
         .musleabihf,
+        .muslx32,
         .none,
         => return "musl",
         .code16,
@@ -186,6 +189,7 @@ pub fn hasLlvmSupport(target: std.Target) bool {
         .bpfeb,
         .csky,
         .hexagon,
+        .m68k,
         .mips,
         .mipsel,
         .mips64,
@@ -295,6 +299,7 @@ pub fn archToLLVM(arch_tag: std.Target.Cpu.Arch) llvm.ArchType {
         .bpfeb => .bpfeb,
         .csky => .csky,
         .hexagon => .hexagon,
+        .m68k => .m68k,
         .mips => .mips,
         .mipsel => .mipsel,
         .mips64 => .mips64,
src/zig_clang.cpp
@@ -164,6 +164,10 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
         case clang::CK_DerivedToBase:
         case clang::CK_DerivedToBaseMemberPointer:
         case clang::CK_Dynamic:
+        case clang::CK_FixedPointCast:
+        case clang::CK_FixedPointToBoolean:
+        case clang::CK_FixedPointToFloating:
+        case clang::CK_FixedPointToIntegral:
         case clang::CK_FloatingCast:
         case clang::CK_FloatingComplexCast:
         case clang::CK_FloatingComplexToBoolean:
@@ -171,6 +175,7 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
         case clang::CK_FloatingComplexToReal:
         case clang::CK_FloatingRealToComplex:
         case clang::CK_FloatingToBoolean:
+        case clang::CK_FloatingToFixedPoint:
         case clang::CK_FloatingToIntegral:
         case clang::CK_FunctionToPointerDecay:
         case clang::CK_IntToOCLSampler:
@@ -181,13 +186,13 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
         case clang::CK_IntegralComplexToReal:
         case clang::CK_IntegralRealToComplex:
         case clang::CK_IntegralToBoolean:
+        case clang::CK_IntegralToFixedPoint:
         case clang::CK_IntegralToFloating:
         case clang::CK_IntegralToPointer:
-        case clang::CK_FloatingToFixedPoint:
-        case clang::CK_FixedPointToFloating:
         case clang::CK_LValueBitCast:
-        case clang::CK_LValueToRValueBitCast:
         case clang::CK_LValueToRValue:
+        case clang::CK_LValueToRValueBitCast:
+        case clang::CK_MatrixCast:
         case clang::CK_MemberPointerToBoolean:
         case clang::CK_NoOp:
         case clang::CK_NonAtomicToAtomic:
@@ -203,10 +208,6 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
         case clang::CK_UserDefinedConversion:
         case clang::CK_VectorSplat:
         case clang::CK_ZeroToOCLOpaqueType:
-        case clang::CK_FixedPointCast:
-        case clang::CK_FixedPointToIntegral:
-        case clang::CK_IntegralToFixedPoint:
-        case clang::CK_FixedPointToBoolean:
             break;
     }
 };
@@ -236,6 +237,7 @@ static_assert((clang::CastKind)ZigClangCK_IntegralToPointer == clang::CK_Integra
 static_assert((clang::CastKind)ZigClangCK_PointerToIntegral == clang::CK_PointerToIntegral, "");
 static_assert((clang::CastKind)ZigClangCK_PointerToBoolean == clang::CK_PointerToBoolean, "");
 static_assert((clang::CastKind)ZigClangCK_ToVoid == clang::CK_ToVoid, "");
+static_assert((clang::CastKind)ZigClangCK_MatrixCast == clang::CK_MatrixCast, "");
 static_assert((clang::CastKind)ZigClangCK_VectorSplat == clang::CK_VectorSplat, "");
 static_assert((clang::CastKind)ZigClangCK_IntegralCast == clang::CK_IntegralCast, "");
 static_assert((clang::CastKind)ZigClangCK_IntegralToBoolean == clang::CK_IntegralToBoolean, "");
@@ -411,13 +413,16 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
         case ZigClangStmt_IndirectGotoStmtClass:
         case ZigClangStmt_MSDependentExistsStmtClass:
         case ZigClangStmt_NullStmtClass:
+        case ZigClangStmt_OMPCanonicalLoopClass:
         case ZigClangStmt_OMPAtomicDirectiveClass:
         case ZigClangStmt_OMPBarrierDirectiveClass:
         case ZigClangStmt_OMPCancelDirectiveClass:
         case ZigClangStmt_OMPCancellationPointDirectiveClass:
         case ZigClangStmt_OMPCriticalDirectiveClass:
         case ZigClangStmt_OMPDepobjDirectiveClass:
+        case ZigClangStmt_OMPDispatchDirectiveClass:
         case ZigClangStmt_OMPFlushDirectiveClass:
+        case ZigClangStmt_OMPInteropDirectiveClass:
         case ZigClangStmt_OMPDistributeDirectiveClass:
         case ZigClangStmt_OMPDistributeParallelForDirectiveClass:
         case ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass:
@@ -443,6 +448,9 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
         case ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass:
         case ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass:
         case ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass:
+        case ZigClangStmt_OMPTileDirectiveClass:
+        case ZigClangStmt_OMPUnrollDirectiveClass:
+        case ZigClangStmt_OMPMaskedDirectiveClass:
         case ZigClangStmt_OMPMasterDirectiveClass:
         case ZigClangStmt_OMPOrderedDirectiveClass:
         case ZigClangStmt_OMPParallelDirectiveClass:
@@ -591,6 +599,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
         case ZigClangStmt_PseudoObjectExprClass:
         case ZigClangStmt_RecoveryExprClass:
         case ZigClangStmt_RequiresExprClass:
+        case ZigClangStmt_SYCLUniqueStableNameExprClass:
         case ZigClangStmt_ShuffleVectorExprClass:
         case ZigClangStmt_SizeOfPackExprClass:
         case ZigClangStmt_SourceLocExprClass:
@@ -629,13 +638,16 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_IfStmtClass == clang::Stmt::I
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_IndirectGotoStmtClass == clang::Stmt::IndirectGotoStmtClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSDependentExistsStmtClass == clang::Stmt::MSDependentExistsStmtClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_NullStmtClass == clang::Stmt::NullStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCanonicalLoopClass == clang::Stmt::OMPCanonicalLoopClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPAtomicDirectiveClass == clang::Stmt::OMPAtomicDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPBarrierDirectiveClass == clang::Stmt::OMPBarrierDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancelDirectiveClass == clang::Stmt::OMPCancelDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancellationPointDirectiveClass == clang::Stmt::OMPCancellationPointDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCriticalDirectiveClass == clang::Stmt::OMPCriticalDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDepobjDirectiveClass == clang::Stmt::OMPDepobjDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDispatchDirectiveClass == clang::Stmt::OMPDispatchDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPFlushDirectiveClass == clang::Stmt::OMPFlushDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPInteropDirectiveClass == clang::Stmt::OMPInteropDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeDirectiveClass == clang::Stmt::OMPDistributeDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeParallelForDirectiveClass == clang::Stmt::OMPDistributeParallelForDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPDistributeParallelForSimdDirectiveClass, "");
@@ -661,6 +673,9 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeDirectiveCl
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTileDirectiveClass == clang::Stmt::OMPTileDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPUnrollDirectiveClass == clang::Stmt::OMPUnrollDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMaskedDirectiveClass == clang::Stmt::OMPMaskedDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMasterDirectiveClass == clang::Stmt::OMPMasterDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPOrderedDirectiveClass == clang::Stmt::OMPOrderedDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelDirectiveClass == clang::Stmt::OMPParallelDirectiveClass, "");
@@ -809,6 +824,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_PredefinedExprClass == clang:
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_PseudoObjectExprClass == clang::Stmt::PseudoObjectExprClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_RecoveryExprClass == clang::Stmt::RecoveryExprClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_RequiresExprClass == clang::Stmt::RequiresExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_SYCLUniqueStableNameExprClass == clang::Stmt::SYCLUniqueStableNameExprClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_ShuffleVectorExprClass == clang::Stmt::ShuffleVectorExprClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_SizeOfPackExprClass == clang::Stmt::SizeOfPackExprClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_SourceLocExprClass == clang::Stmt::SourceLocExprClass, "");
@@ -876,6 +892,8 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
         case clang::Decl::Import:
         case clang::Decl::LifetimeExtendedTemporary:
         case clang::Decl::LinkageSpec:
+        case clang::Decl::Using:
+        case clang::Decl::UsingEnum:
         case clang::Decl::Label:
         case clang::Decl::Namespace:
         case clang::Decl::NamespaceAlias:
@@ -904,7 +922,7 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
         case clang::Decl::TypeAlias:
         case clang::Decl::Typedef:
         case clang::Decl::UnresolvedUsingTypename:
-        case clang::Decl::Using:
+        case clang::Decl::UnresolvedUsingIfExists:
         case clang::Decl::UsingDirective:
         case clang::Decl::UsingPack:
         case clang::Decl::UsingShadow:
@@ -961,6 +979,8 @@ static_assert((clang::Decl::Kind)ZigClangDeclFriendTemplate == clang::Decl::Frie
 static_assert((clang::Decl::Kind)ZigClangDeclImport == clang::Decl::Import, "");
 static_assert((clang::Decl::Kind)ZigClangDeclLifetimeExtendedTemporary == clang::Decl::LifetimeExtendedTemporary, "");
 static_assert((clang::Decl::Kind)ZigClangDeclLinkageSpec == clang::Decl::LinkageSpec, "");
+static_assert((clang::Decl::Kind)ZigClangDeclUsing == clang::Decl::Using, "");
+static_assert((clang::Decl::Kind)ZigClangDeclUsingEnum == clang::Decl::UsingEnum, "");
 static_assert((clang::Decl::Kind)ZigClangDeclLabel == clang::Decl::Label, "");
 static_assert((clang::Decl::Kind)ZigClangDeclNamespace == clang::Decl::Namespace, "");
 static_assert((clang::Decl::Kind)ZigClangDeclNamespaceAlias == clang::Decl::NamespaceAlias, "");
@@ -989,8 +1009,8 @@ static_assert((clang::Decl::Kind)ZigClangDeclObjCTypeParam == clang::Decl::ObjCT
 static_assert((clang::Decl::Kind)ZigClangDeclTypeAlias == clang::Decl::TypeAlias, "");
 static_assert((clang::Decl::Kind)ZigClangDeclTypedef == clang::Decl::Typedef, "");
 static_assert((clang::Decl::Kind)ZigClangDeclUnresolvedUsingTypename == clang::Decl::UnresolvedUsingTypename, "");
+static_assert((clang::Decl::Kind)ZigClangDeclUnresolvedUsingIfExists == clang::Decl::UnresolvedUsingIfExists, "");
 static_assert((clang::Decl::Kind)ZigClangDeclOMPAllocate == clang::Decl::OMPAllocate, "");
-static_assert((clang::Decl::Kind)ZigClangDeclUsing == clang::Decl::Using, "");
 static_assert((clang::Decl::Kind)ZigClangDeclUsingDirective == clang::Decl::UsingDirective, "");
 static_assert((clang::Decl::Kind)ZigClangDeclUsingPack == clang::Decl::UsingPack, "");
 static_assert((clang::Decl::Kind)ZigClangDeclUsingShadow == clang::Decl::UsingShadow, "");
@@ -1032,177 +1052,243 @@ static_assert((clang::Decl::Kind)ZigClangDeclTranslationUnit == clang::Decl::Tra
 
 void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) {
     switch (x) {
-        case clang::BuiltinType::OCLImage1dRO:
-        case clang::BuiltinType::OCLImage1dArrayRO:
-        case clang::BuiltinType::OCLImage1dBufferRO:
-        case clang::BuiltinType::OCLImage2dRO:
-        case clang::BuiltinType::OCLImage2dArrayRO:
-        case clang::BuiltinType::OCLImage2dDepthRO:
-        case clang::BuiltinType::OCLImage2dArrayDepthRO:
-        case clang::BuiltinType::OCLImage2dMSAARO:
-        case clang::BuiltinType::OCLImage2dArrayMSAARO:
-        case clang::BuiltinType::OCLImage2dMSAADepthRO:
-        case clang::BuiltinType::OCLImage2dArrayMSAADepthRO:
-        case clang::BuiltinType::OCLImage3dRO:
-        case clang::BuiltinType::OCLImage1dWO:
-        case clang::BuiltinType::OCLImage1dArrayWO:
-        case clang::BuiltinType::OCLImage1dBufferWO:
-        case clang::BuiltinType::OCLImage2dWO:
-        case clang::BuiltinType::OCLImage2dArrayWO:
-        case clang::BuiltinType::OCLImage2dDepthWO:
-        case clang::BuiltinType::OCLImage2dArrayDepthWO:
-        case clang::BuiltinType::OCLImage2dMSAAWO:
-        case clang::BuiltinType::OCLImage2dArrayMSAAWO:
-        case clang::BuiltinType::OCLImage2dMSAADepthWO:
-        case clang::BuiltinType::OCLImage2dArrayMSAADepthWO:
-        case clang::BuiltinType::OCLImage3dWO:
-        case clang::BuiltinType::OCLImage1dRW:
-        case clang::BuiltinType::OCLImage1dArrayRW:
-        case clang::BuiltinType::OCLImage1dBufferRW:
-        case clang::BuiltinType::OCLImage2dRW:
-        case clang::BuiltinType::OCLImage2dArrayRW:
-        case clang::BuiltinType::OCLImage2dDepthRW:
-        case clang::BuiltinType::OCLImage2dArrayDepthRW:
-        case clang::BuiltinType::OCLImage2dMSAARW:
-        case clang::BuiltinType::OCLImage2dArrayMSAARW:
-        case clang::BuiltinType::OCLImage2dMSAADepthRW:
-        case clang::BuiltinType::OCLImage2dArrayMSAADepthRW:
-        case clang::BuiltinType::OCLImage3dRW:
-        case clang::BuiltinType::OCLIntelSubgroupAVCMcePayload:
-        case clang::BuiltinType::OCLIntelSubgroupAVCImePayload:
-        case clang::BuiltinType::OCLIntelSubgroupAVCRefPayload:
-        case clang::BuiltinType::OCLIntelSubgroupAVCSicPayload:
-        case clang::BuiltinType::OCLIntelSubgroupAVCMceResult:
-        case clang::BuiltinType::OCLIntelSubgroupAVCImeResult:
-        case clang::BuiltinType::OCLIntelSubgroupAVCRefResult:
-        case clang::BuiltinType::OCLIntelSubgroupAVCSicResult:
-        case clang::BuiltinType::OCLIntelSubgroupAVCImeResultSingleRefStreamout:
-        case clang::BuiltinType::OCLIntelSubgroupAVCImeResultDualRefStreamout:
-        case clang::BuiltinType::OCLIntelSubgroupAVCImeSingleRefStreamin:
-        case clang::BuiltinType::OCLIntelSubgroupAVCImeDualRefStreamin:
-        case clang::BuiltinType::SveInt8:
-        case clang::BuiltinType::SveInt16:
-        case clang::BuiltinType::SveInt32:
-        case clang::BuiltinType::SveInt64:
-        case clang::BuiltinType::SveUint8:
-        case clang::BuiltinType::SveUint16:
-        case clang::BuiltinType::SveUint32:
-        case clang::BuiltinType::SveUint64:
-        case clang::BuiltinType::SveFloat16:
-        case clang::BuiltinType::SveFloat32:
-        case clang::BuiltinType::SveFloat64:
-        case clang::BuiltinType::SveBFloat16:
-        case clang::BuiltinType::SveInt8x2:
-        case clang::BuiltinType::SveInt16x2:
-        case clang::BuiltinType::SveInt32x2:
-        case clang::BuiltinType::SveInt64x2:
-        case clang::BuiltinType::SveUint8x2:
-        case clang::BuiltinType::SveUint16x2:
-        case clang::BuiltinType::SveUint32x2:
-        case clang::BuiltinType::SveUint64x2:
-        case clang::BuiltinType::SveFloat16x2:
-        case clang::BuiltinType::SveFloat32x2:
-        case clang::BuiltinType::SveFloat64x2:
-        case clang::BuiltinType::SveBFloat16x2:
-        case clang::BuiltinType::SveInt8x3:
-        case clang::BuiltinType::SveInt16x3:
-        case clang::BuiltinType::SveInt32x3:
-        case clang::BuiltinType::SveInt64x3:
-        case clang::BuiltinType::SveUint8x3:
-        case clang::BuiltinType::SveUint16x3:
-        case clang::BuiltinType::SveUint32x3:
-        case clang::BuiltinType::SveUint64x3:
-        case clang::BuiltinType::SveFloat16x3:
-        case clang::BuiltinType::SveFloat32x3:
-        case clang::BuiltinType::SveFloat64x3:
-        case clang::BuiltinType::SveBFloat16x3:
-        case clang::BuiltinType::SveInt8x4:
-        case clang::BuiltinType::SveInt16x4:
-        case clang::BuiltinType::SveInt32x4:
-        case clang::BuiltinType::SveInt64x4:
-        case clang::BuiltinType::SveUint8x4:
-        case clang::BuiltinType::SveUint16x4:
-        case clang::BuiltinType::SveUint32x4:
-        case clang::BuiltinType::SveUint64x4:
-        case clang::BuiltinType::SveFloat16x4:
-        case clang::BuiltinType::SveFloat32x4:
-        case clang::BuiltinType::SveFloat64x4:
-        case clang::BuiltinType::SveBFloat16x4:
-        case clang::BuiltinType::SveBool:
-        case clang::BuiltinType::VectorQuad:
-        case clang::BuiltinType::VectorPair:
-        case clang::BuiltinType::Void:
-        case clang::BuiltinType::Bool:
-        case clang::BuiltinType::Char_U:
-        case clang::BuiltinType::UChar:
-        case clang::BuiltinType::WChar_U:
-        case clang::BuiltinType::Char8:
-        case clang::BuiltinType::Char16:
-        case clang::BuiltinType::Char32:
-        case clang::BuiltinType::UShort:
-        case clang::BuiltinType::UInt:
-        case clang::BuiltinType::ULong:
-        case clang::BuiltinType::ULongLong:
-        case clang::BuiltinType::UInt128:
-        case clang::BuiltinType::Char_S:
-        case clang::BuiltinType::SChar:
-        case clang::BuiltinType::WChar_S:
-        case clang::BuiltinType::Short:
-        case clang::BuiltinType::Int:
-        case clang::BuiltinType::Long:
-        case clang::BuiltinType::LongLong:
-        case clang::BuiltinType::Int128:
-        case clang::BuiltinType::ShortAccum:
-        case clang::BuiltinType::Accum:
-        case clang::BuiltinType::LongAccum:
-        case clang::BuiltinType::UShortAccum:
-        case clang::BuiltinType::UAccum:
-        case clang::BuiltinType::ULongAccum:
-        case clang::BuiltinType::ShortFract:
-        case clang::BuiltinType::Fract:
-        case clang::BuiltinType::LongFract:
-        case clang::BuiltinType::UShortFract:
-        case clang::BuiltinType::UFract:
-        case clang::BuiltinType::ULongFract:
-        case clang::BuiltinType::SatShortAccum:
-        case clang::BuiltinType::SatAccum:
-        case clang::BuiltinType::SatLongAccum:
-        case clang::BuiltinType::SatUShortAccum:
-        case clang::BuiltinType::SatUAccum:
-        case clang::BuiltinType::SatULongAccum:
-        case clang::BuiltinType::SatShortFract:
-        case clang::BuiltinType::SatFract:
-        case clang::BuiltinType::SatLongFract:
-        case clang::BuiltinType::SatUShortFract:
-        case clang::BuiltinType::SatUFract:
-        case clang::BuiltinType::SatULongFract:
-        case clang::BuiltinType::Half:
-        case clang::BuiltinType::Float:
-        case clang::BuiltinType::Double:
-        case clang::BuiltinType::LongDouble:
-        case clang::BuiltinType::Float16:
-        case clang::BuiltinType::BFloat16:
-        case clang::BuiltinType::Float128:
-        case clang::BuiltinType::NullPtr:
-        case clang::BuiltinType::ObjCId:
-        case clang::BuiltinType::ObjCClass:
-        case clang::BuiltinType::ObjCSel:
-        case clang::BuiltinType::OCLSampler:
-        case clang::BuiltinType::OCLEvent:
-        case clang::BuiltinType::OCLClkEvent:
-        case clang::BuiltinType::OCLQueue:
-        case clang::BuiltinType::OCLReserveID:
-        case clang::BuiltinType::Dependent:
-        case clang::BuiltinType::Overload:
-        case clang::BuiltinType::BoundMember:
-        case clang::BuiltinType::PseudoObject:
-        case clang::BuiltinType::UnknownAny:
-        case clang::BuiltinType::BuiltinFn:
-        case clang::BuiltinType::ARCUnbridgedCast:
-        case clang::BuiltinType::IncompleteMatrixIdx:
-        case clang::BuiltinType::OMPArraySection:
-        case clang::BuiltinType::OMPArrayShaping:
-        case clang::BuiltinType::OMPIterator:
+        case ZigClangBuiltinTypeOCLImage1dRO:
+        case ZigClangBuiltinTypeOCLImage1dArrayRO:
+        case ZigClangBuiltinTypeOCLImage1dBufferRO:
+        case ZigClangBuiltinTypeOCLImage2dRO:
+        case ZigClangBuiltinTypeOCLImage2dArrayRO:
+        case ZigClangBuiltinTypeOCLImage2dDepthRO:
+        case ZigClangBuiltinTypeOCLImage2dArrayDepthRO:
+        case ZigClangBuiltinTypeOCLImage2dMSAARO:
+        case ZigClangBuiltinTypeOCLImage2dArrayMSAARO:
+        case ZigClangBuiltinTypeOCLImage2dMSAADepthRO:
+        case ZigClangBuiltinTypeOCLImage2dArrayMSAADepthRO:
+        case ZigClangBuiltinTypeOCLImage3dRO:
+        case ZigClangBuiltinTypeOCLImage1dWO:
+        case ZigClangBuiltinTypeOCLImage1dArrayWO:
+        case ZigClangBuiltinTypeOCLImage1dBufferWO:
+        case ZigClangBuiltinTypeOCLImage2dWO:
+        case ZigClangBuiltinTypeOCLImage2dArrayWO:
+        case ZigClangBuiltinTypeOCLImage2dDepthWO:
+        case ZigClangBuiltinTypeOCLImage2dArrayDepthWO:
+        case ZigClangBuiltinTypeOCLImage2dMSAAWO:
+        case ZigClangBuiltinTypeOCLImage2dArrayMSAAWO:
+        case ZigClangBuiltinTypeOCLImage2dMSAADepthWO:
+        case ZigClangBuiltinTypeOCLImage2dArrayMSAADepthWO:
+        case ZigClangBuiltinTypeOCLImage3dWO:
+        case ZigClangBuiltinTypeOCLImage1dRW:
+        case ZigClangBuiltinTypeOCLImage1dArrayRW:
+        case ZigClangBuiltinTypeOCLImage1dBufferRW:
+        case ZigClangBuiltinTypeOCLImage2dRW:
+        case ZigClangBuiltinTypeOCLImage2dArrayRW:
+        case ZigClangBuiltinTypeOCLImage2dDepthRW:
+        case ZigClangBuiltinTypeOCLImage2dArrayDepthRW:
+        case ZigClangBuiltinTypeOCLImage2dMSAARW:
+        case ZigClangBuiltinTypeOCLImage2dArrayMSAARW:
+        case ZigClangBuiltinTypeOCLImage2dMSAADepthRW:
+        case ZigClangBuiltinTypeOCLImage2dArrayMSAADepthRW:
+        case ZigClangBuiltinTypeOCLImage3dRW:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCMcePayload:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCImePayload:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCRefPayload:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCSicPayload:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCMceResult:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeResult:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCRefResult:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCSicResult:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeResultSingleRefStreamout:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeResultDualRefStreamout:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeSingleRefStreamin:
+        case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeDualRefStreamin:
+        case ZigClangBuiltinTypeSveInt8:
+        case ZigClangBuiltinTypeSveInt16:
+        case ZigClangBuiltinTypeSveInt32:
+        case ZigClangBuiltinTypeSveInt64:
+        case ZigClangBuiltinTypeSveUint8:
+        case ZigClangBuiltinTypeSveUint16:
+        case ZigClangBuiltinTypeSveUint32:
+        case ZigClangBuiltinTypeSveUint64:
+        case ZigClangBuiltinTypeSveFloat16:
+        case ZigClangBuiltinTypeSveFloat32:
+        case ZigClangBuiltinTypeSveFloat64:
+        case ZigClangBuiltinTypeSveBFloat16:
+        case ZigClangBuiltinTypeSveInt8x2:
+        case ZigClangBuiltinTypeSveInt16x2:
+        case ZigClangBuiltinTypeSveInt32x2:
+        case ZigClangBuiltinTypeSveInt64x2:
+        case ZigClangBuiltinTypeSveUint8x2:
+        case ZigClangBuiltinTypeSveUint16x2:
+        case ZigClangBuiltinTypeSveUint32x2:
+        case ZigClangBuiltinTypeSveUint64x2:
+        case ZigClangBuiltinTypeSveFloat16x2:
+        case ZigClangBuiltinTypeSveFloat32x2:
+        case ZigClangBuiltinTypeSveFloat64x2:
+        case ZigClangBuiltinTypeSveBFloat16x2:
+        case ZigClangBuiltinTypeSveInt8x3:
+        case ZigClangBuiltinTypeSveInt16x3:
+        case ZigClangBuiltinTypeSveInt32x3:
+        case ZigClangBuiltinTypeSveInt64x3:
+        case ZigClangBuiltinTypeSveUint8x3:
+        case ZigClangBuiltinTypeSveUint16x3:
+        case ZigClangBuiltinTypeSveUint32x3:
+        case ZigClangBuiltinTypeSveUint64x3:
+        case ZigClangBuiltinTypeSveFloat16x3:
+        case ZigClangBuiltinTypeSveFloat32x3:
+        case ZigClangBuiltinTypeSveFloat64x3:
+        case ZigClangBuiltinTypeSveBFloat16x3:
+        case ZigClangBuiltinTypeSveInt8x4:
+        case ZigClangBuiltinTypeSveInt16x4:
+        case ZigClangBuiltinTypeSveInt32x4:
+        case ZigClangBuiltinTypeSveInt64x4:
+        case ZigClangBuiltinTypeSveUint8x4:
+        case ZigClangBuiltinTypeSveUint16x4:
+        case ZigClangBuiltinTypeSveUint32x4:
+        case ZigClangBuiltinTypeSveUint64x4:
+        case ZigClangBuiltinTypeSveFloat16x4:
+        case ZigClangBuiltinTypeSveFloat32x4:
+        case ZigClangBuiltinTypeSveFloat64x4:
+        case ZigClangBuiltinTypeSveBFloat16x4:
+        case ZigClangBuiltinTypeSveBool:
+        case ZigClangBuiltinTypeVectorQuad:
+        case ZigClangBuiltinTypeVectorPair:
+        case ZigClangBuiltinTypeRvvInt8mf8:
+        case ZigClangBuiltinTypeRvvInt8mf4:
+        case ZigClangBuiltinTypeRvvInt8mf2:
+        case ZigClangBuiltinTypeRvvInt8m1:
+        case ZigClangBuiltinTypeRvvInt8m2:
+        case ZigClangBuiltinTypeRvvInt8m4:
+        case ZigClangBuiltinTypeRvvInt8m8:
+        case ZigClangBuiltinTypeRvvUint8mf8:
+        case ZigClangBuiltinTypeRvvUint8mf4:
+        case ZigClangBuiltinTypeRvvUint8mf2:
+        case ZigClangBuiltinTypeRvvUint8m1:
+        case ZigClangBuiltinTypeRvvUint8m2:
+        case ZigClangBuiltinTypeRvvUint8m4:
+        case ZigClangBuiltinTypeRvvUint8m8:
+        case ZigClangBuiltinTypeRvvInt16mf4:
+        case ZigClangBuiltinTypeRvvInt16mf2:
+        case ZigClangBuiltinTypeRvvInt16m1:
+        case ZigClangBuiltinTypeRvvInt16m2:
+        case ZigClangBuiltinTypeRvvInt16m4:
+        case ZigClangBuiltinTypeRvvInt16m8:
+        case ZigClangBuiltinTypeRvvUint16mf4:
+        case ZigClangBuiltinTypeRvvUint16mf2:
+        case ZigClangBuiltinTypeRvvUint16m1:
+        case ZigClangBuiltinTypeRvvUint16m2:
+        case ZigClangBuiltinTypeRvvUint16m4:
+        case ZigClangBuiltinTypeRvvUint16m8:
+        case ZigClangBuiltinTypeRvvInt32mf2:
+        case ZigClangBuiltinTypeRvvInt32m1:
+        case ZigClangBuiltinTypeRvvInt32m2:
+        case ZigClangBuiltinTypeRvvInt32m4:
+        case ZigClangBuiltinTypeRvvInt32m8:
+        case ZigClangBuiltinTypeRvvUint32mf2:
+        case ZigClangBuiltinTypeRvvUint32m1:
+        case ZigClangBuiltinTypeRvvUint32m2:
+        case ZigClangBuiltinTypeRvvUint32m4:
+        case ZigClangBuiltinTypeRvvUint32m8:
+        case ZigClangBuiltinTypeRvvInt64m1:
+        case ZigClangBuiltinTypeRvvInt64m2:
+        case ZigClangBuiltinTypeRvvInt64m4:
+        case ZigClangBuiltinTypeRvvInt64m8:
+        case ZigClangBuiltinTypeRvvUint64m1:
+        case ZigClangBuiltinTypeRvvUint64m2:
+        case ZigClangBuiltinTypeRvvUint64m4:
+        case ZigClangBuiltinTypeRvvUint64m8:
+        case ZigClangBuiltinTypeRvvFloat16mf4:
+        case ZigClangBuiltinTypeRvvFloat16mf2:
+        case ZigClangBuiltinTypeRvvFloat16m1:
+        case ZigClangBuiltinTypeRvvFloat16m2:
+        case ZigClangBuiltinTypeRvvFloat16m4:
+        case ZigClangBuiltinTypeRvvFloat16m8:
+        case ZigClangBuiltinTypeRvvFloat32mf2:
+        case ZigClangBuiltinTypeRvvFloat32m1:
+        case ZigClangBuiltinTypeRvvFloat32m2:
+        case ZigClangBuiltinTypeRvvFloat32m4:
+        case ZigClangBuiltinTypeRvvFloat32m8:
+        case ZigClangBuiltinTypeRvvFloat64m1:
+        case ZigClangBuiltinTypeRvvFloat64m2:
+        case ZigClangBuiltinTypeRvvFloat64m4:
+        case ZigClangBuiltinTypeRvvFloat64m8:
+        case ZigClangBuiltinTypeRvvBool1:
+        case ZigClangBuiltinTypeRvvBool2:
+        case ZigClangBuiltinTypeRvvBool4:
+        case ZigClangBuiltinTypeRvvBool8:
+        case ZigClangBuiltinTypeRvvBool16:
+        case ZigClangBuiltinTypeRvvBool32:
+        case ZigClangBuiltinTypeRvvBool64:
+        case ZigClangBuiltinTypeVoid:
+        case ZigClangBuiltinTypeBool:
+        case ZigClangBuiltinTypeChar_U:
+        case ZigClangBuiltinTypeUChar:
+        case ZigClangBuiltinTypeWChar_U:
+        case ZigClangBuiltinTypeChar8:
+        case ZigClangBuiltinTypeChar16:
+        case ZigClangBuiltinTypeChar32:
+        case ZigClangBuiltinTypeUShort:
+        case ZigClangBuiltinTypeUInt:
+        case ZigClangBuiltinTypeULong:
+        case ZigClangBuiltinTypeULongLong:
+        case ZigClangBuiltinTypeUInt128:
+        case ZigClangBuiltinTypeChar_S:
+        case ZigClangBuiltinTypeSChar:
+        case ZigClangBuiltinTypeWChar_S:
+        case ZigClangBuiltinTypeShort:
+        case ZigClangBuiltinTypeInt:
+        case ZigClangBuiltinTypeLong:
+        case ZigClangBuiltinTypeLongLong:
+        case ZigClangBuiltinTypeInt128:
+        case ZigClangBuiltinTypeShortAccum:
+        case ZigClangBuiltinTypeAccum:
+        case ZigClangBuiltinTypeLongAccum:
+        case ZigClangBuiltinTypeUShortAccum:
+        case ZigClangBuiltinTypeUAccum:
+        case ZigClangBuiltinTypeULongAccum:
+        case ZigClangBuiltinTypeShortFract:
+        case ZigClangBuiltinTypeFract:
+        case ZigClangBuiltinTypeLongFract:
+        case ZigClangBuiltinTypeUShortFract:
+        case ZigClangBuiltinTypeUFract:
+        case ZigClangBuiltinTypeULongFract:
+        case ZigClangBuiltinTypeSatShortAccum:
+        case ZigClangBuiltinTypeSatAccum:
+        case ZigClangBuiltinTypeSatLongAccum:
+        case ZigClangBuiltinTypeSatUShortAccum:
+        case ZigClangBuiltinTypeSatUAccum:
+        case ZigClangBuiltinTypeSatULongAccum:
+        case ZigClangBuiltinTypeSatShortFract:
+        case ZigClangBuiltinTypeSatFract:
+        case ZigClangBuiltinTypeSatLongFract:
+        case ZigClangBuiltinTypeSatUShortFract:
+        case ZigClangBuiltinTypeSatUFract:
+        case ZigClangBuiltinTypeSatULongFract:
+        case ZigClangBuiltinTypeHalf:
+        case ZigClangBuiltinTypeFloat:
+        case ZigClangBuiltinTypeDouble:
+        case ZigClangBuiltinTypeLongDouble:
+        case ZigClangBuiltinTypeFloat16:
+        case ZigClangBuiltinTypeBFloat16:
+        case ZigClangBuiltinTypeFloat128:
+        case ZigClangBuiltinTypeNullPtr:
+        case ZigClangBuiltinTypeObjCId:
+        case ZigClangBuiltinTypeObjCClass:
+        case ZigClangBuiltinTypeObjCSel:
+        case ZigClangBuiltinTypeOCLSampler:
+        case ZigClangBuiltinTypeOCLEvent:
+        case ZigClangBuiltinTypeOCLClkEvent:
+        case ZigClangBuiltinTypeOCLQueue:
+        case ZigClangBuiltinTypeOCLReserveID:
+        case ZigClangBuiltinTypeDependent:
+        case ZigClangBuiltinTypeOverload:
+        case ZigClangBuiltinTypeBoundMember:
+        case ZigClangBuiltinTypePseudoObject:
+        case ZigClangBuiltinTypeUnknownAny:
+        case ZigClangBuiltinTypeBuiltinFn:
+        case ZigClangBuiltinTypeARCUnbridgedCast:
+        case ZigClangBuiltinTypeIncompleteMatrixIdx:
+        case ZigClangBuiltinTypeOMPArraySection:
+        case ZigClangBuiltinTypeOMPArrayShaping:
+        case ZigClangBuiltinTypeOMPIterator:
             break;
     }
 }
@@ -1306,6 +1392,72 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBFloat16x4 == clan
 static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBool == clang::BuiltinType::SveBool, "");
 static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVectorQuad == clang::BuiltinType::VectorQuad, "");
 static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVectorPair == clang::BuiltinType::VectorPair, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8mf8 == clang::BuiltinType::RvvInt8mf8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8mf4 == clang::BuiltinType::RvvInt8mf4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8mf2 == clang::BuiltinType::RvvInt8mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8m1 == clang::BuiltinType::RvvInt8m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8m2 == clang::BuiltinType::RvvInt8m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8m4 == clang::BuiltinType::RvvInt8m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8m8 == clang::BuiltinType::RvvInt8m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8mf8 == clang::BuiltinType::RvvUint8mf8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8mf4 == clang::BuiltinType::RvvUint8mf4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8mf2 == clang::BuiltinType::RvvUint8mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8m1 == clang::BuiltinType::RvvUint8m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8m2 == clang::BuiltinType::RvvUint8m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8m4 == clang::BuiltinType::RvvUint8m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8m8 == clang::BuiltinType::RvvUint8m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16mf4 == clang::BuiltinType::RvvInt16mf4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16mf2 == clang::BuiltinType::RvvInt16mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16m1 == clang::BuiltinType::RvvInt16m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16m2 == clang::BuiltinType::RvvInt16m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16m4 == clang::BuiltinType::RvvInt16m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16m8 == clang::BuiltinType::RvvInt16m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16mf4 == clang::BuiltinType::RvvUint16mf4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16mf2 == clang::BuiltinType::RvvUint16mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16m1 == clang::BuiltinType::RvvUint16m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16m2 == clang::BuiltinType::RvvUint16m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16m4 == clang::BuiltinType::RvvUint16m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16m8 == clang::BuiltinType::RvvUint16m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt32mf2 == clang::BuiltinType::RvvInt32mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt32m1 == clang::BuiltinType::RvvInt32m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt32m2 == clang::BuiltinType::RvvInt32m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt32m4 == clang::BuiltinType::RvvInt32m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt32m8 == clang::BuiltinType::RvvInt32m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint32mf2 == clang::BuiltinType::RvvUint32mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint32m1 == clang::BuiltinType::RvvUint32m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint32m2 == clang::BuiltinType::RvvUint32m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint32m4 == clang::BuiltinType::RvvUint32m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint32m8 == clang::BuiltinType::RvvUint32m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt64m1 == clang::BuiltinType::RvvInt64m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt64m2 == clang::BuiltinType::RvvInt64m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt64m4 == clang::BuiltinType::RvvInt64m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt64m8 == clang::BuiltinType::RvvInt64m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint64m1 == clang::BuiltinType::RvvUint64m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint64m2 == clang::BuiltinType::RvvUint64m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint64m4 == clang::BuiltinType::RvvUint64m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint64m8 == clang::BuiltinType::RvvUint64m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16mf4 == clang::BuiltinType::RvvFloat16mf4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16mf2 == clang::BuiltinType::RvvFloat16mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16m1 == clang::BuiltinType::RvvFloat16m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16m2 == clang::BuiltinType::RvvFloat16m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16m4 == clang::BuiltinType::RvvFloat16m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16m8 == clang::BuiltinType::RvvFloat16m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat32mf2 == clang::BuiltinType::RvvFloat32mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat32m1 == clang::BuiltinType::RvvFloat32m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat32m2 == clang::BuiltinType::RvvFloat32m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat32m4 == clang::BuiltinType::RvvFloat32m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat32m8 == clang::BuiltinType::RvvFloat32m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat64m1 == clang::BuiltinType::RvvFloat64m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat64m2 == clang::BuiltinType::RvvFloat64m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat64m4 == clang::BuiltinType::RvvFloat64m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat64m8 == clang::BuiltinType::RvvFloat64m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool1 == clang::BuiltinType::RvvBool1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool2 == clang::BuiltinType::RvvBool2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool4 == clang::BuiltinType::RvvBool4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool8 == clang::BuiltinType::RvvBool8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool16 == clang::BuiltinType::RvvBool16, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool32 == clang::BuiltinType::RvvBool32, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool64 == clang::BuiltinType::RvvBool64, "");
 static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVoid == clang::BuiltinType::Void, "");
 static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBool == clang::BuiltinType::Bool, "");
 static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeChar_U == clang::BuiltinType::Char_U, "");
@@ -1396,6 +1548,7 @@ void ZigClang_detect_enum_CallingConv(clang::CallingConv x) {
         case clang::CC_SpirFunction:
         case clang::CC_OpenCLKernel:
         case clang::CC_Swift:
+        case clang::CC_SwiftAsync:
         case clang::CC_PreserveMost:
         case clang::CC_PreserveAll:
         case clang::CC_AArch64VectorCall:
@@ -1418,6 +1571,7 @@ static_assert((clang::CallingConv)ZigClangCallingConv_IntelOclBicc == clang::CC_
 static_assert((clang::CallingConv)ZigClangCallingConv_SpirFunction == clang::CC_SpirFunction, "");
 static_assert((clang::CallingConv)ZigClangCallingConv_OpenCLKernel == clang::CC_OpenCLKernel, "");
 static_assert((clang::CallingConv)ZigClangCallingConv_Swift == clang::CC_Swift, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_SwiftAsync == clang::CC_SwiftAsync, "");
 static_assert((clang::CallingConv)ZigClangCallingConv_PreserveMost == clang::CC_PreserveMost, "");
 static_assert((clang::CallingConv)ZigClangCallingConv_PreserveAll == clang::CC_PreserveAll, "");
 static_assert((clang::CallingConv)ZigClangCallingConv_AArch64VectorCall == clang::CC_AArch64VectorCall, "");
src/zig_clang.h
@@ -318,13 +318,16 @@ enum ZigClangStmtClass {
     ZigClangStmt_IndirectGotoStmtClass,
     ZigClangStmt_MSDependentExistsStmtClass,
     ZigClangStmt_NullStmtClass,
+    ZigClangStmt_OMPCanonicalLoopClass,
     ZigClangStmt_OMPAtomicDirectiveClass,
     ZigClangStmt_OMPBarrierDirectiveClass,
     ZigClangStmt_OMPCancelDirectiveClass,
     ZigClangStmt_OMPCancellationPointDirectiveClass,
     ZigClangStmt_OMPCriticalDirectiveClass,
     ZigClangStmt_OMPDepobjDirectiveClass,
+    ZigClangStmt_OMPDispatchDirectiveClass,
     ZigClangStmt_OMPFlushDirectiveClass,
+    ZigClangStmt_OMPInteropDirectiveClass,
     ZigClangStmt_OMPDistributeDirectiveClass,
     ZigClangStmt_OMPDistributeParallelForDirectiveClass,
     ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass,
@@ -350,6 +353,9 @@ enum ZigClangStmtClass {
     ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass,
     ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass,
     ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass,
+    ZigClangStmt_OMPTileDirectiveClass,
+    ZigClangStmt_OMPUnrollDirectiveClass,
+    ZigClangStmt_OMPMaskedDirectiveClass,
     ZigClangStmt_OMPMasterDirectiveClass,
     ZigClangStmt_OMPOrderedDirectiveClass,
     ZigClangStmt_OMPParallelDirectiveClass,
@@ -498,6 +504,7 @@ enum ZigClangStmtClass {
     ZigClangStmt_PseudoObjectExprClass,
     ZigClangStmt_RecoveryExprClass,
     ZigClangStmt_RequiresExprClass,
+    ZigClangStmt_SYCLUniqueStableNameExprClass,
     ZigClangStmt_ShuffleVectorExprClass,
     ZigClangStmt_SizeOfPackExprClass,
     ZigClangStmt_SourceLocExprClass,
@@ -540,6 +547,7 @@ enum ZigClangCK {
     ZigClangCK_PointerToIntegral,
     ZigClangCK_PointerToBoolean,
     ZigClangCK_ToVoid,
+    ZigClangCK_MatrixCast,
     ZigClangCK_VectorSplat,
     ZigClangCK_IntegralCast,
     ZigClangCK_IntegralToBoolean,
@@ -595,6 +603,8 @@ enum ZigClangDeclKind {
     ZigClangDeclImport,
     ZigClangDeclLifetimeExtendedTemporary,
     ZigClangDeclLinkageSpec,
+    ZigClangDeclUsing,
+    ZigClangDeclUsingEnum,
     ZigClangDeclLabel,
     ZigClangDeclNamespace,
     ZigClangDeclNamespaceAlias,
@@ -623,7 +633,7 @@ enum ZigClangDeclKind {
     ZigClangDeclTypeAlias,
     ZigClangDeclTypedef,
     ZigClangDeclUnresolvedUsingTypename,
-    ZigClangDeclUsing,
+    ZigClangDeclUnresolvedUsingIfExists,
     ZigClangDeclUsingDirective,
     ZigClangDeclUsingPack,
     ZigClangDeclUsingShadow,
@@ -765,6 +775,72 @@ enum ZigClangBuiltinTypeKind {
     ZigClangBuiltinTypeSveBool,
     ZigClangBuiltinTypeVectorQuad,
     ZigClangBuiltinTypeVectorPair,
+    ZigClangBuiltinTypeRvvInt8mf8,
+    ZigClangBuiltinTypeRvvInt8mf4,
+    ZigClangBuiltinTypeRvvInt8mf2,
+    ZigClangBuiltinTypeRvvInt8m1,
+    ZigClangBuiltinTypeRvvInt8m2,
+    ZigClangBuiltinTypeRvvInt8m4,
+    ZigClangBuiltinTypeRvvInt8m8,
+    ZigClangBuiltinTypeRvvUint8mf8,
+    ZigClangBuiltinTypeRvvUint8mf4,
+    ZigClangBuiltinTypeRvvUint8mf2,
+    ZigClangBuiltinTypeRvvUint8m1,
+    ZigClangBuiltinTypeRvvUint8m2,
+    ZigClangBuiltinTypeRvvUint8m4,
+    ZigClangBuiltinTypeRvvUint8m8,
+    ZigClangBuiltinTypeRvvInt16mf4,
+    ZigClangBuiltinTypeRvvInt16mf2,
+    ZigClangBuiltinTypeRvvInt16m1,
+    ZigClangBuiltinTypeRvvInt16m2,
+    ZigClangBuiltinTypeRvvInt16m4,
+    ZigClangBuiltinTypeRvvInt16m8,
+    ZigClangBuiltinTypeRvvUint16mf4,
+    ZigClangBuiltinTypeRvvUint16mf2,
+    ZigClangBuiltinTypeRvvUint16m1,
+    ZigClangBuiltinTypeRvvUint16m2,
+    ZigClangBuiltinTypeRvvUint16m4,
+    ZigClangBuiltinTypeRvvUint16m8,
+    ZigClangBuiltinTypeRvvInt32mf2,
+    ZigClangBuiltinTypeRvvInt32m1,
+    ZigClangBuiltinTypeRvvInt32m2,
+    ZigClangBuiltinTypeRvvInt32m4,
+    ZigClangBuiltinTypeRvvInt32m8,
+    ZigClangBuiltinTypeRvvUint32mf2,
+    ZigClangBuiltinTypeRvvUint32m1,
+    ZigClangBuiltinTypeRvvUint32m2,
+    ZigClangBuiltinTypeRvvUint32m4,
+    ZigClangBuiltinTypeRvvUint32m8,
+    ZigClangBuiltinTypeRvvInt64m1,
+    ZigClangBuiltinTypeRvvInt64m2,
+    ZigClangBuiltinTypeRvvInt64m4,
+    ZigClangBuiltinTypeRvvInt64m8,
+    ZigClangBuiltinTypeRvvUint64m1,
+    ZigClangBuiltinTypeRvvUint64m2,
+    ZigClangBuiltinTypeRvvUint64m4,
+    ZigClangBuiltinTypeRvvUint64m8,
+    ZigClangBuiltinTypeRvvFloat16mf4,
+    ZigClangBuiltinTypeRvvFloat16mf2,
+    ZigClangBuiltinTypeRvvFloat16m1,
+    ZigClangBuiltinTypeRvvFloat16m2,
+    ZigClangBuiltinTypeRvvFloat16m4,
+    ZigClangBuiltinTypeRvvFloat16m8,
+    ZigClangBuiltinTypeRvvFloat32mf2,
+    ZigClangBuiltinTypeRvvFloat32m1,
+    ZigClangBuiltinTypeRvvFloat32m2,
+    ZigClangBuiltinTypeRvvFloat32m4,
+    ZigClangBuiltinTypeRvvFloat32m8,
+    ZigClangBuiltinTypeRvvFloat64m1,
+    ZigClangBuiltinTypeRvvFloat64m2,
+    ZigClangBuiltinTypeRvvFloat64m4,
+    ZigClangBuiltinTypeRvvFloat64m8,
+    ZigClangBuiltinTypeRvvBool1,
+    ZigClangBuiltinTypeRvvBool2,
+    ZigClangBuiltinTypeRvvBool4,
+    ZigClangBuiltinTypeRvvBool8,
+    ZigClangBuiltinTypeRvvBool16,
+    ZigClangBuiltinTypeRvvBool32,
+    ZigClangBuiltinTypeRvvBool64,
     ZigClangBuiltinTypeVoid,
     ZigClangBuiltinTypeBool,
     ZigClangBuiltinTypeChar_U,
@@ -855,6 +931,7 @@ enum ZigClangCallingConv {
     ZigClangCallingConv_SpirFunction, // default for OpenCL functions on SPIR target
     ZigClangCallingConv_OpenCLKernel, // inferred for OpenCL kernels
     ZigClangCallingConv_Swift,        // __attribute__((swiftcall))
+    ZigClangCallingConv_SwiftAsync,   // __attribute__((swiftasynccall))
     ZigClangCallingConv_PreserveMost, // __attribute__((preserve_most))
     ZigClangCallingConv_PreserveAll,  // __attribute__((preserve_all))
     ZigClangCallingConv_AArch64VectorCall, // __attribute__((aarch64_vector_pcs))
src/zig_llvm.cpp
@@ -155,10 +155,6 @@ LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, const char *Tri
 
     TargetOptions opt;
 
-    // Work around the missing initialization of this field in the default
-    // constructor. Use -1 so that the default value is used.
-    opt.StackProtectorGuardOffset = (unsigned)-1;
-
     opt.FunctionSections = function_sections;
     switch (float_abi) {
         case ZigLLVMABITypeDefault:
@@ -240,7 +236,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
 
     if (asm_filename) {
         std::error_code EC;
-        dest_asm_ptr = new(std::nothrow) raw_fd_ostream(asm_filename, EC, sys::fs::F_None);
+        dest_asm_ptr = new(std::nothrow) raw_fd_ostream(asm_filename, EC, sys::fs::OF_None);
         if (EC) {
             *error_message = strdup((const char *)StringRef(EC.message()).bytes_begin());
             return true;
@@ -248,7 +244,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
     }
     if (bin_filename) {
         std::error_code EC;
-        dest_bin_ptr = new(std::nothrow) raw_fd_ostream(bin_filename, EC, sys::fs::F_None);
+        dest_bin_ptr = new(std::nothrow) raw_fd_ostream(bin_filename, EC, sys::fs::OF_None);
         if (EC) {
             *error_message = strdup((const char *)StringRef(EC.message()).bytes_begin());
             return true;
@@ -256,7 +252,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
     }
     if (bitcode_filename) {
         std::error_code EC;
-        dest_bitcode_ptr = new(std::nothrow) raw_fd_ostream(bitcode_filename, EC, sys::fs::F_None);
+        dest_bitcode_ptr = new(std::nothrow) raw_fd_ostream(bitcode_filename, EC, sys::fs::OF_None);
         if (EC) {
             *error_message = strdup((const char *)StringRef(EC.message()).bytes_begin());
             return true;
@@ -292,7 +288,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
     StandardInstrumentations std_instrumentations(false);
     std_instrumentations.registerCallbacks(instr_callbacks);
 
-    PassBuilder pass_builder(false, &target_machine, pipeline_opts,
+    PassBuilder pass_builder(&target_machine, pipeline_opts,
                              None, &instr_callbacks);
     using OptimizationLevel = typename PassBuilder::OptimizationLevel;
 
@@ -1020,29 +1016,6 @@ void ZigLLVMSetModuleCodeModel(LLVMModuleRef module, LLVMCodeModel code_model) {
     assert(!JIT);
 }
 
-static AtomicOrdering mapFromLLVMOrdering(LLVMAtomicOrdering Ordering) {
-    switch (Ordering) {
-        case LLVMAtomicOrderingNotAtomic: return AtomicOrdering::NotAtomic;
-        case LLVMAtomicOrderingUnordered: return AtomicOrdering::Unordered;
-        case LLVMAtomicOrderingMonotonic: return AtomicOrdering::Monotonic;
-        case LLVMAtomicOrderingAcquire: return AtomicOrdering::Acquire;
-        case LLVMAtomicOrderingRelease: return AtomicOrdering::Release;
-        case LLVMAtomicOrderingAcquireRelease: return AtomicOrdering::AcquireRelease;
-        case LLVMAtomicOrderingSequentiallyConsistent: return AtomicOrdering::SequentiallyConsistent;
-    }
-    abort();
-}
-
-LLVMValueRef ZigLLVMBuildCmpXchg(LLVMBuilderRef builder, LLVMValueRef ptr, LLVMValueRef cmp,
-        LLVMValueRef new_val, LLVMAtomicOrdering success_ordering,
-        LLVMAtomicOrdering failure_ordering, bool is_weak)
-{
-    AtomicCmpXchgInst *inst = unwrap(builder)->CreateAtomicCmpXchg(unwrap(ptr), unwrap(cmp),
-                unwrap(new_val), mapFromLLVMOrdering(success_ordering), mapFromLLVMOrdering(failure_ordering));
-    inst->setWeak(is_weak);
-    return wrap(inst);
-}
-
 LLVMValueRef ZigLLVMBuildNSWShl(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
         const char *name)
 {
@@ -1237,38 +1210,6 @@ int ZigLLDLinkWasm(int argc, const char **argv, bool can_exit_early) {
     return lld::wasm::link(args, can_exit_early, llvm::outs(), llvm::errs());
 }
 
-static AtomicRMWInst::BinOp toLLVMRMWBinOp(enum ZigLLVM_AtomicRMWBinOp BinOp) {
-    switch (BinOp) {
-        default:
-        case ZigLLVMAtomicRMWBinOpXchg: return AtomicRMWInst::Xchg;
-        case ZigLLVMAtomicRMWBinOpAdd: return AtomicRMWInst::Add;
-        case ZigLLVMAtomicRMWBinOpSub: return AtomicRMWInst::Sub;
-        case ZigLLVMAtomicRMWBinOpAnd: return AtomicRMWInst::And;
-        case ZigLLVMAtomicRMWBinOpNand: return AtomicRMWInst::Nand;
-        case ZigLLVMAtomicRMWBinOpOr: return AtomicRMWInst::Or;
-        case ZigLLVMAtomicRMWBinOpXor: return AtomicRMWInst::Xor;
-        case ZigLLVMAtomicRMWBinOpMax: return AtomicRMWInst::Max;
-        case ZigLLVMAtomicRMWBinOpMin: return AtomicRMWInst::Min;
-        case ZigLLVMAtomicRMWBinOpUMax: return AtomicRMWInst::UMax;
-        case ZigLLVMAtomicRMWBinOpUMin: return AtomicRMWInst::UMin;
-        case ZigLLVMAtomicRMWBinOpFAdd: return AtomicRMWInst::FAdd;
-        case ZigLLVMAtomicRMWBinOpFSub: return AtomicRMWInst::FSub;
-    }
-}
-
-static AtomicOrdering toLLVMOrdering(LLVMAtomicOrdering Ordering) {
-    switch (Ordering) {
-        default:
-        case LLVMAtomicOrderingNotAtomic: return AtomicOrdering::NotAtomic;
-        case LLVMAtomicOrderingUnordered: return AtomicOrdering::Unordered;
-        case LLVMAtomicOrderingMonotonic: return AtomicOrdering::Monotonic;
-        case LLVMAtomicOrderingAcquire: return AtomicOrdering::Acquire;
-        case LLVMAtomicOrderingRelease: return AtomicOrdering::Release;
-        case LLVMAtomicOrderingAcquireRelease: return AtomicOrdering::AcquireRelease;
-        case LLVMAtomicOrderingSequentiallyConsistent: return AtomicOrdering::SequentiallyConsistent;
-    }
-}
-
 inline LLVMAttributeRef wrap(Attribute Attr) {
     return reinterpret_cast<LLVMAttributeRef>(Attr.getRawPointer());
 }
@@ -1277,16 +1218,6 @@ inline Attribute unwrap(LLVMAttributeRef Attr) {
     return Attribute::fromRawPointer(Attr);
 }
 
-LLVMValueRef ZigLLVMBuildAtomicRMW(LLVMBuilderRef B, enum ZigLLVM_AtomicRMWBinOp op,
-    LLVMValueRef PTR, LLVMValueRef Val,
-    LLVMAtomicOrdering ordering, LLVMBool singleThread) 
-{
-    AtomicRMWInst::BinOp intop = toLLVMRMWBinOp(op);
-    return wrap(unwrap(B)->CreateAtomicRMW(intop, unwrap(PTR),
-        unwrap(Val), toLLVMOrdering(ordering), 
-        singleThread ? SyncScope::SingleThread : SyncScope::System));
-}
-
 LLVMValueRef ZigLLVMBuildAndReduce(LLVMBuilderRef B, LLVMValueRef Val) {
     return wrap(unwrap(B)->CreateAndReduce(unwrap(Val)));
 }
@@ -1343,6 +1274,7 @@ static_assert((Triple::ArchType)ZigLLVM_bpfel == Triple::bpfel, "");
 static_assert((Triple::ArchType)ZigLLVM_bpfeb == Triple::bpfeb, "");
 static_assert((Triple::ArchType)ZigLLVM_csky == Triple::csky, "");
 static_assert((Triple::ArchType)ZigLLVM_hexagon == Triple::hexagon, "");
+static_assert((Triple::ArchType)ZigLLVM_m68k == Triple::m68k, "");
 static_assert((Triple::ArchType)ZigLLVM_mips == Triple::mips, "");
 static_assert((Triple::ArchType)ZigLLVM_mipsel == Triple::mipsel, "");
 static_assert((Triple::ArchType)ZigLLVM_mips64 == Triple::mips64, "");
@@ -1459,6 +1391,7 @@ static_assert((Triple::EnvironmentType)ZigLLVM_Android == Triple::Android, "");
 static_assert((Triple::EnvironmentType)ZigLLVM_Musl == Triple::Musl, "");
 static_assert((Triple::EnvironmentType)ZigLLVM_MuslEABI == Triple::MuslEABI, "");
 static_assert((Triple::EnvironmentType)ZigLLVM_MuslEABIHF == Triple::MuslEABIHF, "");
+static_assert((Triple::EnvironmentType)ZigLLVM_MuslX32 == Triple::MuslX32, "");
 static_assert((Triple::EnvironmentType)ZigLLVM_MSVC == Triple::MSVC, "");
 static_assert((Triple::EnvironmentType)ZigLLVM_Itanium == Triple::Itanium, "");
 static_assert((Triple::EnvironmentType)ZigLLVM_Cygnus == Triple::Cygnus, "");
src/zig_llvm.h
@@ -137,10 +137,6 @@ ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildUMin(LLVMBuilderRef builder, LLVMValueRef
 ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildSMax(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS, const char* name);
 ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildSMin(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS, const char* name);
 
-ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildCmpXchg(LLVMBuilderRef builder, LLVMValueRef ptr, LLVMValueRef cmp,
-        LLVMValueRef new_val, LLVMAtomicOrdering success_ordering,
-        LLVMAtomicOrdering failure_ordering, bool is_weak);
-
 ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildNSWShl(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
         const char *name);
 ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildNUWShl(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
@@ -303,6 +299,7 @@ enum ZigLLVM_ArchType {
     ZigLLVM_bpfeb,          // eBPF or extended BPF or 64-bit BPF (big endian)
     ZigLLVM_csky,           // CSKY: csky
     ZigLLVM_hexagon,        // Hexagon: hexagon
+    ZigLLVM_m68k,           // M68k: Motorola 680x0 family
     ZigLLVM_mips,           // MIPS: mips, mipsallegrex, mipsr6
     ZigLLVM_mipsel,         // MIPSEL: mipsel, mipsallegrexe, mipsr6el
     ZigLLVM_mips64,         // MIPS64: mips64, mips64r6, mipsn32, mipsn32r6
@@ -345,7 +342,6 @@ enum ZigLLVM_ArchType {
     ZigLLVM_renderscript32, // 32-bit RenderScript
     ZigLLVM_renderscript64, // 64-bit RenderScript
     ZigLLVM_ve,             // NEC SX-Aurora Vector Engine
-
     ZigLLVM_LastArchType = ZigLLVM_ve
 };
 
@@ -430,6 +426,7 @@ enum ZigLLVM_EnvironmentType {
     ZigLLVM_Musl,
     ZigLLVM_MuslEABI,
     ZigLLVM_MuslEABIHF,
+    ZigLLVM_MuslX32,
 
     ZigLLVM_MSVC,
     ZigLLVM_Itanium,
@@ -437,7 +434,6 @@ enum ZigLLVM_EnvironmentType {
     ZigLLVM_CoreCLR,
     ZigLLVM_Simulator, // Simulator variants of other systems, e.g., Apple's iOS
     ZigLLVM_MacABI, // Mac Catalyst variant of Apple's iOS deployment target.
-
     ZigLLVM_LastEnvironmentType = ZigLLVM_MacABI
 };
 
@@ -452,26 +448,6 @@ enum ZigLLVM_ObjectFormatType {
     ZigLLVM_XCOFF,
 };
 
-enum ZigLLVM_AtomicRMWBinOp {
-    ZigLLVMAtomicRMWBinOpXchg,
-    ZigLLVMAtomicRMWBinOpAdd,
-    ZigLLVMAtomicRMWBinOpSub,
-    ZigLLVMAtomicRMWBinOpAnd,
-    ZigLLVMAtomicRMWBinOpNand,
-    ZigLLVMAtomicRMWBinOpOr,
-    ZigLLVMAtomicRMWBinOpXor,
-    ZigLLVMAtomicRMWBinOpMax,
-    ZigLLVMAtomicRMWBinOpMin,
-    ZigLLVMAtomicRMWBinOpUMax,
-    ZigLLVMAtomicRMWBinOpUMin,
-    ZigLLVMAtomicRMWBinOpFAdd,
-    ZigLLVMAtomicRMWBinOpFSub,
-};
-
-LLVMValueRef ZigLLVMBuildAtomicRMW(LLVMBuilderRef B, enum ZigLLVM_AtomicRMWBinOp op,
-    LLVMValueRef PTR, LLVMValueRef Val,
-    LLVMAtomicOrdering ordering, LLVMBool singleThread);
-
 LLVMValueRef ZigLLVMBuildAndReduce(LLVMBuilderRef B, LLVMValueRef Val);
 LLVMValueRef ZigLLVMBuildOrReduce(LLVMBuilderRef B, LLVMValueRef Val);
 LLVMValueRef ZigLLVMBuildXorReduce(LLVMBuilderRef B, LLVMValueRef Val);