Skip to content

Commit

Permalink
Enable pclmul, aes when compiling tests. Insert unreachable instruc…
Browse files Browse the repository at this point in the history
…tions correctly
  • Loading branch information
imhameed committed Jun 17, 2021
1 parent 20f53f8 commit 9b49167
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 12 deletions.
23 changes: 11 additions & 12 deletions src/mono/mono/mini/mini-llvm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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;
}
Expand All @@ -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;
}
Expand Down Expand Up @@ -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;
}
Expand All @@ -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;
Expand Down
2 changes: 2 additions & 0 deletions src/tests/run.proj
Original file line number Diff line number Diff line change
Expand Up @@ -604,6 +604,8 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\","").
<MonoAotOption Include="mattr=lzcnt" />
<MonoAotOption Include="mattr=bmi" />
<MonoAotOption Include="mattr=bmi2" />
<MonoAotOption Include="mattr=pclmul" />
<MonoAotOption Include="mattr=aes" />
</ItemGroup>
<PropertyGroup>
<MonoAotOptions>@(MonoAotOption->'%(Identity)', ',')</MonoAotOptions>
Expand Down

0 comments on commit 9b49167

Please sign in to comment.