extendInteger extends the value to at least targetType using a zero or sign extend. The resulting value is not truncated: it may still be bigger than targetType.
(value llvm.Value, valueType types.Type, targetType llvm.Type)
| 263 | // extend. The resulting value is not truncated: it may still be bigger than |
| 264 | // targetType. |
| 265 | func (b *builder) extendInteger(value llvm.Value, valueType types.Type, targetType llvm.Type) llvm.Value { |
| 266 | if value.Type().IntTypeWidth() < targetType.IntTypeWidth() { |
| 267 | if valueType.Underlying().(*types.Basic).Info()&types.IsUnsigned != 0 { |
| 268 | // Unsigned, so zero-extend to the target type. |
| 269 | value = b.CreateZExt(value, targetType, "") |
| 270 | } else { |
| 271 | // Signed, so sign-extend to the target type. |
| 272 | value = b.CreateSExt(value, targetType, "") |
| 273 | } |
| 274 | } |
| 275 | return value |
| 276 | } |
no test coverage detected