8301313: RISC-V: C2: assert(false) failed: bad AD file due to missing match rule
Reviewed-by: fyang, yadongwang
This commit is contained in:
parent
4c9de876bf
commit
3ad6aef149
@ -10044,6 +10044,23 @@ instruct cmovI_cmpL(iRegINoSp dst, iRegI src, iRegL op1, iRegL op2, cmpOp cop) %
|
|||||||
ins_pipe(pipe_class_compare);
|
ins_pipe(pipe_class_compare);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
instruct cmovI_cmpUL(iRegINoSp dst, iRegI src, iRegL op1, iRegL op2, cmpOpU cop) %{
|
||||||
|
match(Set dst (CMoveI (Binary cop (CmpUL op1 op2)) (Binary dst src)));
|
||||||
|
ins_cost(ALU_COST + BRANCH_COST);
|
||||||
|
|
||||||
|
format %{
|
||||||
|
"CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovI_cmpUL\n\t"
|
||||||
|
%}
|
||||||
|
|
||||||
|
ins_encode %{
|
||||||
|
__ enc_cmove($cop$$cmpcode | C2_MacroAssembler::unsigned_branch_mask,
|
||||||
|
as_Register($op1$$reg), as_Register($op2$$reg),
|
||||||
|
as_Register($dst$$reg), as_Register($src$$reg));
|
||||||
|
%}
|
||||||
|
|
||||||
|
ins_pipe(pipe_class_compare);
|
||||||
|
%}
|
||||||
|
|
||||||
instruct cmovL_cmpL(iRegLNoSp dst, iRegL src, iRegL op1, iRegL op2, cmpOp cop) %{
|
instruct cmovL_cmpL(iRegLNoSp dst, iRegL src, iRegL op1, iRegL op2, cmpOp cop) %{
|
||||||
match(Set dst (CMoveL (Binary cop (CmpL op1 op2)) (Binary dst src)));
|
match(Set dst (CMoveL (Binary cop (CmpL op1 op2)) (Binary dst src)));
|
||||||
ins_cost(ALU_COST + BRANCH_COST);
|
ins_cost(ALU_COST + BRANCH_COST);
|
||||||
@ -10078,12 +10095,29 @@ instruct cmovL_cmpUL(iRegLNoSp dst, iRegL src, iRegL op1, iRegL op2, cmpOpU cop)
|
|||||||
ins_pipe(pipe_class_compare);
|
ins_pipe(pipe_class_compare);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
instruct cmovI_cmpUL(iRegINoSp dst, iRegI src, iRegL op1, iRegL op2, cmpOpU cop) %{
|
instruct cmovL_cmpI(iRegLNoSp dst, iRegL src, iRegI op1, iRegI op2, cmpOp cop) %{
|
||||||
match(Set dst (CMoveI (Binary cop (CmpUL op1 op2)) (Binary dst src)));
|
match(Set dst (CMoveL (Binary cop (CmpI op1 op2)) (Binary dst src)));
|
||||||
ins_cost(ALU_COST + BRANCH_COST);
|
ins_cost(ALU_COST + BRANCH_COST);
|
||||||
|
|
||||||
format %{
|
format %{
|
||||||
"CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovI_cmpUL\n\t"
|
"CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovL_cmpI\n\t"
|
||||||
|
%}
|
||||||
|
|
||||||
|
ins_encode %{
|
||||||
|
__ enc_cmove($cop$$cmpcode,
|
||||||
|
as_Register($op1$$reg), as_Register($op2$$reg),
|
||||||
|
as_Register($dst$$reg), as_Register($src$$reg));
|
||||||
|
%}
|
||||||
|
|
||||||
|
ins_pipe(pipe_class_compare);
|
||||||
|
%}
|
||||||
|
|
||||||
|
instruct cmovL_cmpU(iRegLNoSp dst, iRegL src, iRegI op1, iRegI op2, cmpOpU cop) %{
|
||||||
|
match(Set dst (CMoveL (Binary cop (CmpU op1 op2)) (Binary dst src)));
|
||||||
|
ins_cost(ALU_COST + BRANCH_COST);
|
||||||
|
|
||||||
|
format %{
|
||||||
|
"CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovL_cmpU\n\t"
|
||||||
%}
|
%}
|
||||||
|
|
||||||
ins_encode %{
|
ins_encode %{
|
||||||
@ -10095,7 +10129,6 @@ instruct cmovI_cmpUL(iRegINoSp dst, iRegI src, iRegL op1, iRegL op2, cmpOpU cop)
|
|||||||
ins_pipe(pipe_class_compare);
|
ins_pipe(pipe_class_compare);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// Procedure Call/Return Instructions
|
// Procedure Call/Return Instructions
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user