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