aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-09-19 12:57:58 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-09-19 12:57:58 -0400
commit15301504e2a0f46a482f4d73abe482bd1eb63357 (patch)
treef4714b1f248f338a4941ae41ff119796c6ba5873 /src
parent5eeef1f5ed5912d03bb8e744c6618734073af2ed (diff)
parent0ab7cfa023416f2cea22d7b5db1121c938560757 (diff)
downloadzig-15301504e2a0f46a482f4d73abe482bd1eb63357.tar.gz
zig-15301504e2a0f46a482f4d73abe482bd1eb63357.zip
Merge remote-tracking branch 'origin/llvm7'
Diffstat (limited to 'src')
-rw-r--r--src/codegen.cpp107
-rw-r--r--src/target.cpp17
-rw-r--r--src/target.hpp3
-rw-r--r--src/translate_c.cpp58
-rw-r--r--src/zig_llvm.cpp21
-rw-r--r--src/zig_llvm.h17
6 files changed, 105 insertions, 118 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp
index b1915ae45a..91e7c8dde9 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -933,25 +933,6 @@ static void gen_safety_crash(CodeGen *g, PanicMsgId msg_id) {
gen_panic(g, get_panic_msg_ptr_val(g, msg_id), nullptr);
}
-static LLVMValueRef get_memcpy_fn_val(CodeGen *g) {
- if (g->memcpy_fn_val)
- return g->memcpy_fn_val;
-
- LLVMTypeRef param_types[] = {
- LLVMPointerType(LLVMInt8Type(), 0),
- LLVMPointerType(LLVMInt8Type(), 0),
- LLVMIntType(g->pointer_size_bytes * 8),
- LLVMInt32Type(),
- LLVMInt1Type(),
- };
- LLVMTypeRef fn_type = LLVMFunctionType(LLVMVoidType(), param_types, 5, false);
- Buf *name = buf_sprintf("llvm.memcpy.p0i8.p0i8.i%d", g->pointer_size_bytes * 8);
- g->memcpy_fn_val = LLVMAddFunction(g->module, buf_ptr(name), fn_type);
- assert(LLVMGetIntrinsicID(g->memcpy_fn_val));
-
- return g->memcpy_fn_val;
-}
-
static LLVMValueRef get_stacksave_fn_val(CodeGen *g) {
if (g->stacksave_fn_val)
return g->stacksave_fn_val;
@@ -1537,15 +1518,7 @@ static LLVMValueRef get_safety_crash_err_fn(CodeGen *g) {
LLVMValueRef len_field_ptr = LLVMBuildStructGEP(g->builder, err_name_val, slice_len_index, "");
LLVMValueRef err_name_len = gen_load_untyped(g, len_field_ptr, 0, false, "");
- LLVMValueRef params[] = {
- offset_buf_ptr, // dest pointer
- err_name_ptr, // source pointer
- err_name_len, // size bytes
- LLVMConstInt(LLVMInt32Type(), u8_align_bytes, false), // align bytes
- LLVMConstNull(LLVMInt1Type()), // is volatile
- };
-
- LLVMBuildCall(g->builder, get_memcpy_fn_val(g), params, 5, "");
+ ZigLLVMBuildMemCpy(g->builder, offset_buf_ptr, u8_align_bytes, err_name_ptr, u8_align_bytes, err_name_len, false);
LLVMValueRef const_prefix_len = LLVMConstInt(LLVMTypeOf(err_name_len), strlen(unwrap_err_msg_text), false);
LLVMValueRef full_buf_len = LLVMBuildNUWAdd(g->builder, const_prefix_len, err_name_len, "");
@@ -1817,18 +1790,8 @@ static LLVMValueRef gen_assign_raw(CodeGen *g, LLVMValueRef ptr, ZigType *ptr_ty
assert(size_bytes > 0);
assert(align_bytes > 0);
- LLVMValueRef volatile_bit = ptr_type->data.pointer.is_volatile ?
- LLVMConstAllOnes(LLVMInt1Type()) : LLVMConstNull(LLVMInt1Type());
-
- LLVMValueRef params[] = {
- dest_ptr, // dest pointer
- src_ptr, // source pointer
- LLVMConstInt(usize->type_ref, size_bytes, false),
- LLVMConstInt(LLVMInt32Type(), align_bytes, false),
- volatile_bit,
- };
-
- LLVMBuildCall(g->builder, get_memcpy_fn_val(g), params, 5, "");
+ ZigLLVMBuildMemCpy(g->builder, dest_ptr, align_bytes, src_ptr, align_bytes, LLVMConstInt(usize->type_ref, size_bytes, false),
+ ptr_type->data.pointer.is_volatile);
return nullptr;
}
@@ -3190,25 +3153,6 @@ static LLVMValueRef ir_render_bool_not(CodeGen *g, IrExecutable *executable, IrI
return LLVMBuildICmp(g->builder, LLVMIntEQ, value, zero, "");
}
-static LLVMValueRef get_memset_fn_val(CodeGen *g) {
- if (g->memset_fn_val)
- return g->memset_fn_val;
-
- LLVMTypeRef param_types[] = {
- LLVMPointerType(LLVMInt8Type(), 0),
- LLVMInt8Type(),
- LLVMIntType(g->pointer_size_bytes * 8),
- LLVMInt32Type(),
- LLVMInt1Type(),
- };
- LLVMTypeRef fn_type = LLVMFunctionType(LLVMVoidType(), param_types, 5, false);
- Buf *name = buf_sprintf("llvm.memset.p0i8.i%d", g->pointer_size_bytes * 8);
- g->memset_fn_val = LLVMAddFunction(g->module, buf_ptr(name), fn_type);
- assert(LLVMGetIntrinsicID(g->memset_fn_val));
-
- return g->memset_fn_val;
-}
-
static LLVMValueRef ir_render_decl_var(CodeGen *g, IrExecutable *executable,
IrInstructionDeclVar *decl_var_instruction)
{
@@ -3248,16 +3192,7 @@ static LLVMValueRef ir_render_decl_var(CodeGen *g, IrExecutable *executable,
LLVMValueRef fill_char = LLVMConstInt(LLVMInt8Type(), 0xaa, false);
LLVMValueRef dest_ptr = LLVMBuildBitCast(g->builder, var->value_ref, ptr_u8, "");
LLVMValueRef byte_count = LLVMConstInt(usize->type_ref, size_bytes, false);
- LLVMValueRef align_in_bytes = LLVMConstInt(LLVMInt32Type(), var->align_bytes, false);
- LLVMValueRef params[] = {
- dest_ptr,
- fill_char,
- byte_count,
- align_in_bytes,
- LLVMConstNull(LLVMInt1Type()), // is volatile
- };
-
- LLVMBuildCall(g->builder, get_memset_fn_val(g), params, 5, "");
+ ZigLLVMBuildMemSet(g->builder, dest_ptr, fill_char, byte_count, var->align_bytes, false);
}
}
@@ -4275,21 +4210,7 @@ static LLVMValueRef ir_render_memset(CodeGen *g, IrExecutable *executable, IrIns
ZigType *ptr_type = instruction->dest_ptr->value.type;
assert(ptr_type->id == ZigTypeIdPointer);
- LLVMValueRef is_volatile = ptr_type->data.pointer.is_volatile ?
- LLVMConstAllOnes(LLVMInt1Type()) : LLVMConstNull(LLVMInt1Type());
-
- uint32_t alignment = get_ptr_align(g, ptr_type);
- LLVMValueRef align_val = LLVMConstInt(LLVMInt32Type(), alignment, false);
-
- LLVMValueRef params[] = {
- dest_ptr_casted,
- char_val,
- len_val,
- align_val,
- is_volatile,
- };
-
- LLVMBuildCall(g->builder, get_memset_fn_val(g), params, 5, "");
+ ZigLLVMBuildMemSet(g->builder, dest_ptr_casted, char_val, len_val, get_ptr_align(g, ptr_type), ptr_type->data.pointer.is_volatile);
return nullptr;
}
@@ -4309,21 +4230,9 @@ static LLVMValueRef ir_render_memcpy(CodeGen *g, IrExecutable *executable, IrIns
assert(dest_ptr_type->id == ZigTypeIdPointer);
assert(src_ptr_type->id == ZigTypeIdPointer);
- LLVMValueRef is_volatile = (dest_ptr_type->data.pointer.is_volatile || src_ptr_type->data.pointer.is_volatile) ?
- LLVMConstAllOnes(LLVMInt1Type()) : LLVMConstNull(LLVMInt1Type());
-
- uint32_t min_align_bytes = min(get_ptr_align(g, src_ptr_type), get_ptr_align(g, dest_ptr_type));
- LLVMValueRef align_val = LLVMConstInt(LLVMInt32Type(), min_align_bytes, false);
-
- LLVMValueRef params[] = {
- dest_ptr_casted,
- src_ptr_casted,
- len_val,
- align_val,
- is_volatile,
- };
-
- LLVMBuildCall(g->builder, get_memcpy_fn_val(g), params, 5, "");
+ bool is_volatile = (dest_ptr_type->data.pointer.is_volatile || src_ptr_type->data.pointer.is_volatile);
+ ZigLLVMBuildMemCpy(g->builder, dest_ptr_casted, get_ptr_align(g, dest_ptr_type),
+ src_ptr_casted, get_ptr_align(g, src_ptr_type), len_val, is_volatile);
return nullptr;
}
diff --git a/src/target.cpp b/src/target.cpp
index f657af8af3..5cc5f789fb 100644
--- a/src/target.cpp
+++ b/src/target.cpp
@@ -148,7 +148,6 @@ static const Os os_list[] = {
OsRTEMS,
OsNaCl, // Native Client
OsCNK, // BG/P Compute-Node Kernel
- OsBitrig,
OsAIX,
OsCUDA, // NVIDIA CUDA
OsNVCL, // NVIDIA OpenCL
@@ -159,9 +158,11 @@ static const Os os_list[] = {
OsWatchOS, // Apple watchOS
OsMesa3D,
OsContiki,
+ OsAMDPAL,
OsZen,
};
+// Coordinate with zig_llvm.h
static const ZigLLVM_EnvironmentType environ_list[] = {
ZigLLVM_UnknownEnvironment,
@@ -181,9 +182,7 @@ static const ZigLLVM_EnvironmentType environ_list[] = {
ZigLLVM_MSVC,
ZigLLVM_Itanium,
ZigLLVM_Cygnus,
- ZigLLVM_AMDOpenCL,
ZigLLVM_CoreCLR,
- ZigLLVM_OpenCL,
ZigLLVM_Simulator,
};
@@ -280,8 +279,6 @@ static ZigLLVM_OSType get_llvm_os_type(Os os_type) {
return ZigLLVM_NaCl;
case OsCNK:
return ZigLLVM_CNK;
- case OsBitrig:
- return ZigLLVM_Bitrig;
case OsAIX:
return ZigLLVM_AIX;
case OsCUDA:
@@ -302,6 +299,8 @@ static ZigLLVM_OSType get_llvm_os_type(Os os_type) {
return ZigLLVM_Mesa3D;
case OsContiki:
return ZigLLVM_Contiki;
+ case OsAMDPAL:
+ return ZigLLVM_AMDPAL;
}
zig_unreachable();
}
@@ -349,8 +348,6 @@ static Os get_zig_os_type(ZigLLVM_OSType os_type) {
return OsNaCl;
case ZigLLVM_CNK:
return OsCNK;
- case ZigLLVM_Bitrig:
- return OsBitrig;
case ZigLLVM_AIX:
return OsAIX;
case ZigLLVM_CUDA:
@@ -371,6 +368,8 @@ static Os get_zig_os_type(ZigLLVM_OSType os_type) {
return OsMesa3D;
case ZigLLVM_Contiki:
return OsContiki;
+ case ZigLLVM_AMDPAL:
+ return OsAMDPAL;
}
zig_unreachable();
}
@@ -400,7 +399,6 @@ const char *get_target_os_name(Os os_type) {
case OsRTEMS:
case OsNaCl: // Native Client
case OsCNK: // BG/P Compute-Node Kernel
- case OsBitrig:
case OsAIX:
case OsCUDA: // NVIDIA CUDA
case OsNVCL: // NVIDIA OpenCL
@@ -411,6 +409,7 @@ const char *get_target_os_name(Os os_type) {
case OsWatchOS: // Apple watchOS
case OsMesa3D:
case OsContiki:
+ case OsAMDPAL:
return ZigLLVMGetOSTypeName(get_llvm_os_type(os_type));
}
zig_unreachable();
@@ -772,7 +771,6 @@ uint32_t target_c_type_size_in_bits(const ZigTarget *target, CIntType id) {
case OsRTEMS:
case OsNaCl:
case OsCNK:
- case OsBitrig:
case OsAIX:
case OsCUDA:
case OsNVCL:
@@ -784,6 +782,7 @@ uint32_t target_c_type_size_in_bits(const ZigTarget *target, CIntType id) {
case OsMesa3D:
case OsFuchsia:
case OsContiki:
+ case OsAMDPAL:
zig_panic("TODO c type size in bits for this target");
}
zig_unreachable();
diff --git a/src/target.hpp b/src/target.hpp
index c8658bf352..0e0b1f2dc5 100644
--- a/src/target.hpp
+++ b/src/target.hpp
@@ -17,6 +17,7 @@ struct ArchType {
ZigLLVM_SubArchType sub_arch;
};
+// Synchronize with target.cpp::os_list
enum Os {
OsFreestanding,
OsAnanas,
@@ -38,7 +39,6 @@ enum Os {
OsRTEMS,
OsNaCl, // Native Client
OsCNK, // BG/P Compute-Node Kernel
- OsBitrig,
OsAIX,
OsCUDA, // NVIDIA CUDA
OsNVCL, // NVIDIA OpenCL
@@ -49,6 +49,7 @@ enum Os {
OsWatchOS, // Apple watchOS
OsMesa3D,
OsContiki,
+ OsAMDPAL,
OsZen,
};
diff --git a/src/translate_c.cpp b/src/translate_c.cpp
index 12c474cd53..df48c9e4a2 100644
--- a/src/translate_c.cpp
+++ b/src/translate_c.cpp
@@ -773,6 +773,7 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
case BuiltinType::Char_U:
case BuiltinType::UChar:
case BuiltinType::Char_S:
+ case BuiltinType::Char8:
return trans_create_node_symbol_str(c, "u8");
case BuiltinType::SChar:
return trans_create_node_symbol_str(c, "i8");
@@ -823,6 +824,12 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
case BuiltinType::UnknownAny:
case BuiltinType::BuiltinFn:
case BuiltinType::ARCUnbridgedCast:
+ case BuiltinType::ShortAccum:
+ case BuiltinType::Accum:
+ case BuiltinType::LongAccum:
+ case BuiltinType::UShortAccum:
+ case BuiltinType::UAccum:
+ case BuiltinType::ULongAccum:
case BuiltinType::OCLImage1dRO:
case BuiltinType::OCLImage1dArrayRO:
@@ -865,6 +872,24 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
case BuiltinType::OCLClkEvent:
case BuiltinType::OCLQueue:
case BuiltinType::OCLReserveID:
+ case BuiltinType::ShortFract:
+ case BuiltinType::Fract:
+ case BuiltinType::LongFract:
+ case BuiltinType::UShortFract:
+ case BuiltinType::UFract:
+ case BuiltinType::ULongFract:
+ case BuiltinType::SatShortAccum:
+ case BuiltinType::SatAccum:
+ case BuiltinType::SatLongAccum:
+ case BuiltinType::SatUShortAccum:
+ case BuiltinType::SatUAccum:
+ case BuiltinType::SatULongAccum:
+ case BuiltinType::SatShortFract:
+ case BuiltinType::SatFract:
+ case BuiltinType::SatLongFract:
+ case BuiltinType::SatUShortFract:
+ case BuiltinType::SatUFract:
+ case BuiltinType::SatULongFract:
emit_warning(c, source_loc, "unsupported builtin type");
return nullptr;
}
@@ -1109,6 +1134,7 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
case Type::ObjCTypeParam:
case Type::DeducedTemplateSpecialization:
case Type::DependentAddressSpace:
+ case Type::DependentVector:
emit_warning(c, source_loc, "unsupported type: '%s'", ty->getTypeClassName());
return nullptr;
}
@@ -2376,6 +2402,7 @@ static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *
case BuiltinType::Float128:
case BuiltinType::LongDouble:
case BuiltinType::WChar_U:
+ case BuiltinType::Char8:
case BuiltinType::Char16:
case BuiltinType::Char32:
case BuiltinType::WChar_S:
@@ -2438,6 +2465,30 @@ static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *
case BuiltinType::OCLClkEvent:
case BuiltinType::OCLQueue:
case BuiltinType::OCLReserveID:
+ case BuiltinType::ShortAccum:
+ case BuiltinType::Accum:
+ case BuiltinType::LongAccum:
+ case BuiltinType::UShortAccum:
+ case BuiltinType::UAccum:
+ case BuiltinType::ULongAccum:
+ case BuiltinType::ShortFract:
+ case BuiltinType::Fract:
+ case BuiltinType::LongFract:
+ case BuiltinType::UShortFract:
+ case BuiltinType::UFract:
+ case BuiltinType::ULongFract:
+ case BuiltinType::SatShortAccum:
+ case BuiltinType::SatAccum:
+ case BuiltinType::SatLongAccum:
+ case BuiltinType::SatUShortAccum:
+ case BuiltinType::SatUAccum:
+ case BuiltinType::SatULongAccum:
+ case BuiltinType::SatShortFract:
+ case BuiltinType::SatFract:
+ case BuiltinType::SatLongFract:
+ case BuiltinType::SatUShortFract:
+ case BuiltinType::SatUFract:
+ case BuiltinType::SatULongFract:
return res;
}
break;
@@ -2523,6 +2574,7 @@ static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *
case Type::ObjCTypeParam:
case Type::DeducedTemplateSpecialization:
case Type::DependentAddressSpace:
+ case Type::DependentVector:
return res;
}
zig_unreachable();
@@ -3587,6 +3639,9 @@ static int trans_stmt_extra(Context *c, TransScope *scope, const Stmt *stmt,
case Stmt::SEHTryStmtClass:
emit_warning(c, stmt->getLocStart(), "TODO handle C SEHTryStmtClass");
return ErrorUnexpected;
+ case Stmt::FixedPointLiteralClass:
+ emit_warning(c, stmt->getLocStart(), "TODO handle C FixedPointLiteralClass");
+ return ErrorUnexpected;
}
zig_unreachable();
}
@@ -4712,7 +4767,6 @@ int parse_h_file(ImportTableEntry *import, ZigList<ErrorMsg *> *errors, const ch
std::shared_ptr<PCHContainerOperations> pch_container_ops = std::make_shared<PCHContainerOperations>();
- bool skip_function_bodies = false;
bool only_local_decls = true;
bool capture_diagnostics = true;
bool user_files_are_volatile = true;
@@ -4725,7 +4779,7 @@ int parse_h_file(ImportTableEntry *import, ZigList<ErrorMsg *> *errors, const ch
&clang_argv.at(0), &clang_argv.last(),
pch_container_ops, diags, resources_path,
only_local_decls, capture_diagnostics, None, true, 0, TU_Complete,
- false, false, allow_pch_with_compiler_errors, skip_function_bodies,
+ false, false, allow_pch_with_compiler_errors, SkipFunctionBodiesScope::None,
single_file_parse, user_files_are_volatile, for_serialization, None, &err_unit,
nullptr));
diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp
index 61287f620c..ad8edb4cda 100644
--- a/src/zig_llvm.cpp
+++ b/src/zig_llvm.cpp
@@ -38,6 +38,7 @@
#include <llvm/Transforms/IPO/PassManagerBuilder.h>
#include <llvm/Transforms/IPO/AlwaysInliner.h>
#include <llvm/Transforms/Scalar.h>
+#include <llvm/Transforms/Utils.h>
#include <lld/Common/Driver.h>
@@ -165,7 +166,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
abort();
}
- if (target_machine->addPassesToEmitFile(MPM, dest, ft)) {
+ if (target_machine->addPassesToEmitFile(MPM, dest, nullptr, ft)) {
*error_message = strdup("TargetMachine can't emit a file of this type");
return true;
}
@@ -214,6 +215,20 @@ LLVMValueRef ZigLLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, LLVMValueRef *A
return wrap(unwrap(B)->Insert(call_inst));
}
+LLVMValueRef ZigLLVMBuildMemCpy(LLVMBuilderRef B, LLVMValueRef Dst, unsigned DstAlign,
+ LLVMValueRef Src, unsigned SrcAlign, LLVMValueRef Size, bool isVolatile)
+{
+ CallInst *call_inst = unwrap(B)->CreateMemCpy(unwrap(Dst), DstAlign, unwrap(Src), SrcAlign, unwrap(Size), isVolatile);
+ return wrap(call_inst);
+}
+
+LLVMValueRef ZigLLVMBuildMemSet(LLVMBuilderRef B, LLVMValueRef Ptr, LLVMValueRef Val, LLVMValueRef Size,
+ unsigned Align, bool isVolatile)
+{
+ CallInst *call_inst = unwrap(B)->CreateMemSet(unwrap(Ptr), unwrap(Val), unwrap(Size), Align, isVolatile);
+ return wrap(call_inst);
+}
+
void ZigLLVMFnSetSubprogram(LLVMValueRef fn, ZigLLVMDISubprogram *subprogram) {
assert( isa<Function>(unwrap(fn)) );
Function *unwrapped_function = reinterpret_cast<Function*>(unwrap(fn));
@@ -704,6 +719,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
switch (sub_arch) {
case ZigLLVM_NoSubArch:
return "(none)";
+ case ZigLLVM_ARMSubArch_v8_4a:
+ return "v8_4a";
case ZigLLVM_ARMSubArch_v8_3a:
return "v8_3a";
case ZigLLVM_ARMSubArch_v8_2a:
@@ -847,7 +864,7 @@ bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_
return lld::elf::link(array_ref_args, false, diag);
case ZigLLVM_MachO:
- return lld::mach_o::link(array_ref_args, diag);
+ return lld::mach_o::link(array_ref_args, false, diag);
case ZigLLVM_Wasm:
return lld::wasm::link(array_ref_args, false, diag);
diff --git a/src/zig_llvm.h b/src/zig_llvm.h
index 5cdc6cc041..a005b3157e 100644
--- a/src/zig_llvm.h
+++ b/src/zig_llvm.h
@@ -68,6 +68,12 @@ enum ZigLLVM_FnInline {
ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, LLVMValueRef *Args,
unsigned NumArgs, unsigned CC, enum ZigLLVM_FnInline fn_inline, const char *Name);
+ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildMemCpy(LLVMBuilderRef B, LLVMValueRef Dst, unsigned DstAlign,
+ LLVMValueRef Src, unsigned SrcAlign, LLVMValueRef Size, bool isVolatile);
+
+ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildMemSet(LLVMBuilderRef B, LLVMValueRef Ptr, LLVMValueRef Val, LLVMValueRef Size,
+ unsigned Align, bool isVolatile);
+
ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildCmpXchg(LLVMBuilderRef builder, LLVMValueRef ptr, LLVMValueRef cmp,
LLVMValueRef new_val, LLVMAtomicOrdering success_ordering,
LLVMAtomicOrdering failure_ordering, bool is_weak);
@@ -267,6 +273,7 @@ enum ZigLLVM_ArchType {
enum ZigLLVM_SubArchType {
ZigLLVM_NoSubArch,
+ ZigLLVM_ARMSubArch_v8_4a,
ZigLLVM_ARMSubArch_v8_3a,
ZigLLVM_ARMSubArch_v8_2a,
ZigLLVM_ARMSubArch_v8_1a,
@@ -311,8 +318,9 @@ enum ZigLLVM_VendorType {
ZigLLVM_AMD,
ZigLLVM_Mesa,
ZigLLVM_SUSE,
+ ZigLLVM_OpenEmbedded,
- ZigLLVM_LastVendorType = ZigLLVM_SUSE
+ ZigLLVM_LastVendorType = ZigLLVM_OpenEmbedded
};
enum ZigLLVM_OSType {
@@ -338,7 +346,6 @@ enum ZigLLVM_OSType {
ZigLLVM_RTEMS,
ZigLLVM_NaCl, // Native Client
ZigLLVM_CNK, // BG/P Compute-Node Kernel
- ZigLLVM_Bitrig,
ZigLLVM_AIX,
ZigLLVM_CUDA, // NVIDIA CUDA
ZigLLVM_NVCL, // NVIDIA OpenCL
@@ -349,10 +356,12 @@ enum ZigLLVM_OSType {
ZigLLVM_WatchOS, // Apple watchOS
ZigLLVM_Mesa3D,
ZigLLVM_Contiki,
+ ZigLLVM_AMDPAL, // AMD PAL Runtime
- ZigLLVM_LastOSType = ZigLLVM_Contiki
+ ZigLLVM_LastOSType = ZigLLVM_AMDPAL
};
+// Synchronize with target.cpp::environ_list
enum ZigLLVM_EnvironmentType {
ZigLLVM_UnknownEnvironment,
@@ -373,9 +382,7 @@ enum ZigLLVM_EnvironmentType {
ZigLLVM_MSVC,
ZigLLVM_Itanium,
ZigLLVM_Cygnus,
- ZigLLVM_AMDOpenCL,
ZigLLVM_CoreCLR,
- ZigLLVM_OpenCL,
ZigLLVM_Simulator,
ZigLLVM_LastEnvironmentType = ZigLLVM_Simulator