| ... | @@ -8197,6 +8197,7 @@ static LLVMValueRef gen_const_val(CodeGen *g, ZigValue *const_val, const char *n | ... | @@ -8197,6 +8197,7 @@ static LLVMValueRef gen_const_val(CodeGen *g, ZigValue *const_val, const char *n |
| 8197 | buf[1] = tmp; | 8197 | buf[1] = tmp; |
| 8198 | #endif | 8198 | #endif |
| 8199 | LLVMValueRef as_i128 = LLVMConstIntOfArbitraryPrecision(LLVMInt128Type(), 2, buf); | 8199 | LLVMValueRef as_i128 = LLVMConstIntOfArbitraryPrecision(LLVMInt128Type(), 2, buf); |
| | 8200 | if (!target_has_f80(g->zig_target)) return as_i128; |
| 8200 | LLVMValueRef as_int = LLVMConstTrunc(as_i128, LLVMIntType(80)); | 8201 | LLVMValueRef as_int = LLVMConstTrunc(as_i128, LLVMIntType(80)); |
| 8201 | return LLVMConstBitCast(as_int, get_llvm_type(g, type_entry)); | 8202 | return LLVMConstBitCast(as_int, get_llvm_type(g, type_entry)); |
| 8202 | } | 8203 | } |
| ... | @@ -9420,13 +9421,15 @@ static void define_builtin_types(CodeGen *g) { | ... | @@ -9420,13 +9421,15 @@ static void define_builtin_types(CodeGen *g) { |
| 9420 | add_fp_entry(g, "f64", 64, LLVMDoubleType(), &g->builtin_types.entry_f64); | 9421 | add_fp_entry(g, "f64", 64, LLVMDoubleType(), &g->builtin_types.entry_f64); |
| 9421 | add_fp_entry(g, "f128", 128, LLVMFP128Type(), &g->builtin_types.entry_f128); | 9422 | add_fp_entry(g, "f128", 128, LLVMFP128Type(), &g->builtin_types.entry_f128); |
| 9422 | | 9423 | |
| 9423 | if (target_has_f80(g->zig_target)) { | 9424 | { |
| 9424 | add_fp_entry(g, "f80", 80, LLVMX86FP80Type(), &g->builtin_types.entry_f80); | | |
| 9425 | } else { | | |
| 9426 | ZigType *entry = new_type_table_entry(ZigTypeIdFloat); | 9425 | ZigType *entry = new_type_table_entry(ZigTypeIdFloat); |
| 9427 | entry->llvm_type = get_int_type(g, false, 128)->llvm_type; | 9426 | if (target_has_f80(g->zig_target)) { |
| 9428 | entry->size_in_bits = 8 * LLVMStoreSizeOfType(g->target_data_ref, entry->llvm_type); | 9427 | entry->llvm_type = LLVMX86FP80Type(); |
| 9429 | entry->abi_size = LLVMABISizeOfType(g->target_data_ref, entry->llvm_type); | 9428 | } else { |
| | 9429 | entry->llvm_type = get_int_type(g, false, 128)->llvm_type; |
| | 9430 | } |
| | 9431 | entry->size_in_bits = 8 * 16; |
| | 9432 | entry->abi_size = 16; |
| 9430 | entry->abi_align = 16; | 9433 | entry->abi_align = 16; |
| 9431 | buf_init_from_str(&entry->name, "f80"); | 9434 | buf_init_from_str(&entry->name, "f80"); |
| 9432 | entry->data.floating.bit_count = 80; | 9435 | entry->data.floating.bit_count = 80; |