aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/print_llvm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen/print_llvm.cpp')
-rw-r--r--src/codegen/print_llvm.cpp26
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);