| ... | @@ -4139,13 +4139,9 @@ static LLVMValueRef ir_render_binary_not(CodeGen *g, Stage1Air *executable, | ... | @@ -4139,13 +4139,9 @@ static LLVMValueRef ir_render_binary_not(CodeGen *g, Stage1Air *executable, |
| 4139 | static LLVMValueRef ir_gen_soft_f80_neg(CodeGen *g, ZigType *op_type, LLVMValueRef operand) { | 4139 | static LLVMValueRef ir_gen_soft_f80_neg(CodeGen *g, ZigType *op_type, LLVMValueRef operand) { |
| 4140 | uint32_t vector_len = op_type->id == ZigTypeIdVector ? op_type->data.vector.len : 0; | 4140 | uint32_t vector_len = op_type->id == ZigTypeIdVector ? op_type->data.vector.len : 0; |
| 4141 | | 4141 | |
| 4142 | uint64_t buf[2] = {0, 0}; | 4142 | LLVMTypeRef llvm_i80 = LLVMIntType(80); |
| 4143 | if (g->is_big_endian != native_is_big_endian) { | 4143 | LLVMValueRef sign_mask = LLVMConstInt(llvm_i80, 1, false); |
| 4144 | buf[1] = 0x8000000000000000; | 4144 | sign_mask = LLVMConstShl(sign_mask, LLVMConstInt(llvm_i80, 79, false)); |
| 4145 | } else { | | |
| 4146 | buf[1] = 0x8000; | | |
| 4147 | } | | |
| 4148 | LLVMValueRef sign_mask = LLVMConstIntOfArbitraryPrecision(LLVMInt128Type(), 2, buf); | | |
| 4149 | | 4145 | |
| 4150 | LLVMValueRef result; | 4146 | LLVMValueRef result; |
| 4151 | if (vector_len == 0) { | 4147 | if (vector_len == 0) { |