diff options
Diffstat (limited to 'src/codegen/print_llvm.cpp')
| -rw-r--r-- | src/codegen/print_llvm.cpp | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/codegen/print_llvm.cpp b/src/codegen/print_llvm.cpp index d2394f202..f7c6d2651 100644 --- a/src/codegen/print_llvm.cpp +++ b/src/codegen/print_llvm.cpp @@ -164,9 +164,6 @@ void ssa_print_type(gbFile *f, BaseTypeSizes s, Type *t) { case Type_Named: ssa_print_encoded_local(f, t->named.name); break; - case Type_Alias: - ssa_print_type(f, s, t->alias.base); - break; case Type_Tuple: if (t->tuple.variable_count == 1) { ssa_print_type(f, s, t->tuple.variables[0]->type); @@ -635,6 +632,29 @@ void ssa_print_instr(gbFile *f, ssaModule *m, ssaValue *value) { ssa_fprintf(f, "\n"); } break; + case ssaInstr_ShuffleVector: { + auto *sv = &instr->shuffle_vector; + Type *vt = ssa_value_type(sv->vector); + ssa_fprintf(f, "%%%d = shufflevector ", value->id); + + ssa_print_type(f, m->sizes, vt); + ssa_fprintf(f, " "); + ssa_print_value(f, m, sv->vector, vt); + ssa_fprintf(f, ", "); + ssa_print_type(f, m->sizes, vt); + ssa_fprintf(f, " undef,"); + + ssa_fprintf(f, " <%td x i32> <", sv->index_count); + for (isize i = 0; i < sv->index_count; i++) { + if (i > 0) { + ssa_fprintf(f, ", "); + } + ssa_fprintf(f, "i32 %d", sv->indices[i]); + } + ssa_fprintf(f, ">"); + ssa_fprintf(f, "\n"); + } break; + default: { GB_PANIC("<unknown instr> %d\n", instr->kind); |