diff options
| author | gingerBill <bill@gingerbill.org> | 2021-11-06 17:23:33 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-11-06 17:23:33 +0000 |
| commit | 3d3785a7f1535cfa213f074704085f42ae02638a (patch) | |
| tree | f7387a64a44d747b02b3a1ff481e9cbbd969abd2 /src/llvm_backend_expr.cpp | |
| parent | 5df15b5724e1c25366d39b4bbb2f24b33068d5f6 (diff) | |
Remove many LLVM optimization passes which were causes UB due to them assuming C-like behaviour incompatible with Odin
Diffstat (limited to 'src/llvm_backend_expr.cpp')
| -rw-r--r-- | src/llvm_backend_expr.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index 006d396ed..291c5ab66 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -577,7 +577,7 @@ LLVMValueRef lb_matrix_to_trimmed_vector(lbProcedure *p, lbValue m) { } LLVMValueRef mask = lb_matrix_trimmed_vector_mask(p, mt); - LLVMValueRef trimmed_vector = LLVMBuildShuffleVector(p->builder, vector, LLVMGetUndef(LLVMTypeOf(vector)), mask, ""); + LLVMValueRef trimmed_vector = llvm_basic_shuffle(p, vector, mask); return trimmed_vector; } @@ -608,7 +608,7 @@ lbValue lb_emit_matrix_tranpose(lbProcedure *p, lbValue m, Type *type) { // transpose mask LLVMValueRef mask = LLVMConstVector(mask_elems.data, column_count); - LLVMValueRef row = LLVMBuildShuffleVector(p->builder, vector, LLVMGetUndef(LLVMTypeOf(vector)), mask, ""); + LLVMValueRef row = llvm_basic_shuffle(p, vector, mask); rows[i] = row; } @@ -747,13 +747,13 @@ lbValue lb_emit_matrix_mul(lbProcedure *p, lbValue lhs, lbValue rhs, Type *type) // transpose mask LLVMValueRef mask = LLVMConstVector(mask_elems.data, inner); - LLVMValueRef row = LLVMBuildShuffleVector(p->builder, x_vector, LLVMGetUndef(LLVMTypeOf(x_vector)), mask, ""); + LLVMValueRef row = llvm_basic_shuffle(p, x_vector, mask); x_rows[i] = row; } for (unsigned i = 0; i < outer_columns; i++) { LLVMValueRef mask = llvm_mask_iota(p->module, y_stride*i, inner); - LLVMValueRef column = LLVMBuildShuffleVector(p->builder, y_vector, LLVMGetUndef(LLVMTypeOf(y_vector)), mask, ""); + LLVMValueRef column = llvm_basic_shuffle(p, y_vector, mask); y_columns[i] = column; } @@ -825,7 +825,7 @@ lbValue lb_emit_matrix_mul_vector(lbProcedure *p, lbValue lhs, lbValue rhs, Type for (unsigned column_index = 0; column_index < column_count; column_index++) { LLVMValueRef mask = llvm_mask_iota(p->module, stride*column_index, row_count); - LLVMValueRef column = LLVMBuildShuffleVector(p->builder, matrix_vector, LLVMGetUndef(LLVMTypeOf(matrix_vector)), mask, ""); + LLVMValueRef column = llvm_basic_shuffle(p, matrix_vector, mask); m_columns[column_index] = column; } @@ -901,7 +901,7 @@ lbValue lb_emit_vector_mul_matrix(lbProcedure *p, lbValue lhs, lbValue rhs, Type // transpose mask LLVMValueRef mask = LLVMConstVector(mask_elems.data, column_count); - LLVMValueRef column = LLVMBuildShuffleVector(p->builder, matrix_vector, LLVMGetUndef(LLVMTypeOf(matrix_vector)), mask, ""); + LLVMValueRef column = llvm_basic_shuffle(p, matrix_vector, mask); m_columns[row_index] = column; } |