diff options
Diffstat (limited to 'src/ir_print.cpp')
| -rw-r--r-- | src/ir_print.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/ir_print.cpp b/src/ir_print.cpp index 1b35247c4..d0c014a27 100644 --- a/src/ir_print.cpp +++ b/src/ir_print.cpp @@ -418,21 +418,24 @@ void ir_print_type(irFileBuffer *f, irModule *m, Type *t, bool in_struct) { } return; - // case Basic_f16: ir_write_str_lit(f, "half"); return; - case Basic_f32: ir_write_str_lit(f, "float"); return; - case Basic_f64: ir_write_str_lit(f, "double"); return; + case Basic_f16: ir_write_str_lit(f, "half"); return; + case Basic_f32: ir_write_str_lit(f, "float"); return; + case Basic_f64: ir_write_str_lit(f, "double"); return; + case Basic_f16le: ir_write_str_lit(f, "half"); return; case Basic_f32le: ir_write_str_lit(f, "float"); return; case Basic_f64le: ir_write_str_lit(f, "double"); return; + case Basic_f16be: ir_write_str_lit(f, "half"); return; case Basic_f32be: ir_write_str_lit(f, "float"); return; case Basic_f64be: ir_write_str_lit(f, "double"); return; - // case Basic_complex32: ir_write_str_lit(f, "%%..complex32"); return; + case Basic_complex32: ir_write_str_lit(f, "%%..complex32"); return; case Basic_complex64: ir_write_str_lit(f, "%..complex64"); return; case Basic_complex128: ir_write_str_lit(f, "%..complex128"); return; + case Basic_quaternion64: ir_write_str_lit(f, "%..quaternion64"); return; case Basic_quaternion128: ir_write_str_lit(f, "%..quaternion128"); return; case Basic_quaternion256: ir_write_str_lit(f, "%..quaternion256"); return; @@ -873,6 +876,23 @@ void ir_print_exact_value(irFileBuffer *f, irModule *m, ExactValue value, Type * } #else switch (type->Basic.kind) { + case Basic_f16: + ir_fprintf(f, "fptrunc (float bitcast (i32 %u to float) to half)", u_32); + break; + case Basic_f16le: + if (build_context.endian_kind != TargetEndian_Little) { + u_32 = gb_endian_swap32(u_32); + } + ir_fprintf(f, "fptrunc (float bitcast (i32 %u to float) to half)", u_32); + break; + case Basic_f16be: + if (build_context.endian_kind != TargetEndian_Big) { + u_32 = gb_endian_swap32(u_32); + } + ir_fprintf(f, "fptrunc (float bitcast (i32 %u to float) to half)", u_32); + break; + + case Basic_f32: ir_fprintf(f, "bitcast (i32 %u to float)", u_32); break; |