| 520 | } |
| 521 | |
| 522 | llvm::Value* DecimalIR::ValueSplit::AsInt128(DecimalIR* decimal_ir) const { |
| 523 | auto builder = decimal_ir->ir_builder(); |
| 524 | auto types = decimal_ir->types(); |
| 525 | |
| 526 | auto value = builder->CreateSExt(high_, types->i128_type()); |
| 527 | value = builder->CreateShl(value, types->i128_constant(64)); |
| 528 | value = builder->CreateAdd(value, builder->CreateZExt(low_, types->i128_type())); |
| 529 | return value; |
| 530 | } |
| 531 | |
| 532 | /// Convert IR struct {%i128, %i1} to cpp class ValueWithOverflow |
| 533 | DecimalIR::ValueWithOverflow DecimalIR::ValueWithOverflow::MakeFromStruct( |
no test coverage detected