@@ -9543,6 +9543,23 @@ instruct cmovI_cmpL(iRegINoSp dst, iRegI src, iRegL op1, iRegL op2, cmpOp cop) %
9543
9543
ins_pipe(pipe_class_compare);
9544
9544
%}
9545
9545
9546
+ instruct cmovI_cmpUL(iRegINoSp dst, iRegI src, iRegL op1, iRegL op2, cmpOpU cop) %{
9547
+ match(Set dst (CMoveI (Binary cop (CmpUL op1 op2)) (Binary dst src)));
9548
+ ins_cost(ALU_COST + BRANCH_COST);
9549
+
9550
+ format %{
9551
+ "CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovI_cmpUL\n\t"
9552
+ %}
9553
+
9554
+ ins_encode %{
9555
+ __ enc_cmove($cop$$cmpcode | MacroAssembler::unsigned_branch_mask,
9556
+ as_Register($op1$$reg), as_Register($op2$$reg),
9557
+ as_Register($dst$$reg), as_Register($src$$reg));
9558
+ %}
9559
+
9560
+ ins_pipe(pipe_class_compare);
9561
+ %}
9562
+
9546
9563
instruct cmovL_cmpL(iRegLNoSp dst, iRegL src, iRegL op1, iRegL op2, cmpOp cop) %{
9547
9564
match(Set dst (CMoveL (Binary cop (CmpL op1 op2)) (Binary dst src)));
9548
9565
ins_cost(ALU_COST + BRANCH_COST);
@@ -9577,22 +9594,39 @@ instruct cmovL_cmpUL(iRegLNoSp dst, iRegL src, iRegL op1, iRegL op2, cmpOpU cop)
9577
9594
ins_pipe(pipe_class_compare);
9578
9595
%}
9579
9596
9580
- instruct cmovI_cmpUL(iRegINoSp dst, iRegI src, iRegL op1, iRegL op2, cmpOpU cop) %{
9581
- match(Set dst (CMoveI (Binary cop (CmpUL op1 op2)) (Binary dst src)));
9597
+ instruct cmovL_cmpI(iRegLNoSp dst, iRegL src, iRegI op1, iRegI op2, cmpOp cop) %{
9598
+ match(Set dst (CMoveL (Binary cop (CmpI op1 op2)) (Binary dst src)));
9582
9599
ins_cost(ALU_COST + BRANCH_COST);
9600
+
9583
9601
format %{
9584
- "CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovI_cmpUL \n\t"
9602
+ "CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovL_cmpI \n\t"
9585
9603
%}
9586
9604
9587
9605
ins_encode %{
9588
- __ enc_cmove($cop$$cmpcode | MacroAssembler::unsigned_branch_mask ,
9606
+ __ enc_cmove($cop$$cmpcode,
9589
9607
as_Register($op1$$reg), as_Register($op2$$reg),
9590
9608
as_Register($dst$$reg), as_Register($src$$reg));
9591
9609
%}
9592
9610
9593
9611
ins_pipe(pipe_class_compare);
9594
9612
%}
9595
9613
9614
+ instruct cmovL_cmpU(iRegLNoSp dst, iRegL src, iRegI op1, iRegI op2, cmpOpU cop) %{
9615
+ match(Set dst (CMoveL (Binary cop (CmpU op1 op2)) (Binary dst src)));
9616
+ ins_cost(ALU_COST + BRANCH_COST);
9617
+
9618
+ format %{
9619
+ "CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovL_cmpU\n\t"
9620
+ %}
9621
+
9622
+ ins_encode %{
9623
+ __ enc_cmove($cop$$cmpcode | MacroAssembler::unsigned_branch_mask,
9624
+ as_Register($op1$$reg), as_Register($op2$$reg),
9625
+ as_Register($dst$$reg), as_Register($src$$reg));
9626
+ %}
9627
+
9628
+ ins_pipe(pipe_class_compare);
9629
+ %}
9596
9630
9597
9631
// ============================================================================
9598
9632
// Procedure Call/Return Instructions
0 commit comments