casts of literal values are done statically by the ir gen, because the cast ({X}_TO_{Y}) is not supported for constants (literals) by the LLVM backend