From 9b4916780f924ca83ac05292499ad92908eb8d36 Mon Sep 17 00:00:00 2001 From: Imran Hameed Date: Mon, 14 Jun 2021 20:12:34 -0400 Subject: [PATCH] Enable pclmul, aes when compiling tests. Insert `unreachable` instructions correctly --- src/mono/mono/mini/mini-llvm.c | 23 +++++++++++------------ src/tests/run.proj | 2 ++ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/mono/mono/mini/mini-llvm.c b/src/mono/mono/mini/mini-llvm.c index 0647a9767ac9e9..b19cf2fe572c12 100644 --- a/src/mono/mono/mini/mini-llvm.c +++ b/src/mono/mono/mini/mini-llvm.c @@ -5022,6 +5022,13 @@ immediate_unroll_commit_default (ImmediateUnrollCtx *ictx, LLVMValueRef value) LLVMAddIncoming (ictx->phi, &value, &ictx->default_case, 1); } +static void +immediate_unroll_unreachable_default (ImmediateUnrollCtx *ictx) +{ + immediate_unroll_default (ictx); + LLVMBuildUnreachable (ictx->ctx->builder); +} + static LLVMValueRef immediate_unroll_end (ImmediateUnrollCtx *ictx, LLVMBasicBlockRef *continuation) { @@ -9013,9 +9020,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) LLVMValueRef result = call_intrins (ctx, INTRINS_SSE_MPSADBW, args, "sse41_mpsadbw"); immediate_unroll_commit (&ictx, i, result); } - immediate_unroll_default (&ictx); - LLVMBuildUnreachable (builder); - immediate_unroll_commit_default (&ictx, LLVMGetUndef (v128_i2_t)); + immediate_unroll_unreachable_default (&ictx); values [ins->dreg] = immediate_unroll_end (&ictx, &cbb); break; } @@ -9030,9 +9035,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) LLVMValueRef result = call_intrins (ctx, INTRINS_SSE_INSERTPS, args, dname); immediate_unroll_commit (&ictx, i, result); } - immediate_unroll_default (&ictx); - LLVMBuildUnreachable (builder); - immediate_unroll_commit_default (&ictx, LLVMGetUndef (v128_r4_t)); + immediate_unroll_unreachable_default (&ictx); values [ins->dreg] = immediate_unroll_end (&ictx, &cbb); break; } @@ -9191,9 +9194,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) LLVMValueRef result = call_intrins (ctx, INTRINS_PCLMULQDQ, args, "pclmulqdq"); immediate_unroll_commit (&ictx, imm, result); } - immediate_unroll_default (&ictx); - LLVMBuildUnreachable (builder); - immediate_unroll_commit_default (&ictx, LLVMGetUndef (v128_i8_t)); + immediate_unroll_unreachable_default (&ictx); values [ins->dreg] = immediate_unroll_end (&ictx, &cbb); break; } @@ -9208,9 +9209,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) LLVMValueRef result = call_intrins (ctx, INTRINS_AESNI_AESKEYGENASSIST, args, "aes_keygenassist"); immediate_unroll_commit (&ictx, i, result); } - immediate_unroll_default (&ictx); - LLVMBuildUnreachable (builder); - immediate_unroll_commit_default (&ictx, LLVMGetUndef (v128_i8_t)); + immediate_unroll_unreachable_default (&ictx); LLVMValueRef result = immediate_unroll_end (&ictx, &cbb); values [ins->dreg] = convert (ctx, result, v128_i1_t); break; diff --git a/src/tests/run.proj b/src/tests/run.proj index c092a4ae0e7ba3..c16a18fe9f3629 100644 --- a/src/tests/run.proj +++ b/src/tests/run.proj @@ -604,6 +604,8 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). + + @(MonoAotOption->'%(Identity)', ',')