@@ -10044,6 +10044,23 @@ instruct cmovI_cmpL(iRegINoSp dst, iRegI src, iRegL op1, iRegL op2, cmpOp cop) %
10044
10044
ins_pipe(pipe_class_compare);
10045
10045
%}
10046
10046
10047
+ instruct cmovI_cmpUL(iRegINoSp dst, iRegI src, iRegL op1, iRegL op2, cmpOpU cop) %{
10048
+ match(Set dst (CMoveI (Binary cop (CmpUL op1 op2)) (Binary dst src)));
10049
+ ins_cost(ALU_COST + BRANCH_COST);
10050
+
10051
+ format %{
10052
+ "CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovI_cmpUL\n\t"
10053
+ %}
10054
+
10055
+ ins_encode %{
10056
+ __ enc_cmove($cop$$cmpcode | C2_MacroAssembler::unsigned_branch_mask,
10057
+ as_Register($op1$$reg), as_Register($op2$$reg),
10058
+ as_Register($dst$$reg), as_Register($src$$reg));
10059
+ %}
10060
+
10061
+ ins_pipe(pipe_class_compare);
10062
+ %}
10063
+
10047
10064
instruct cmovL_cmpL(iRegLNoSp dst, iRegL src, iRegL op1, iRegL op2, cmpOp cop) %{
10048
10065
match(Set dst (CMoveL (Binary cop (CmpL op1 op2)) (Binary dst src)));
10049
10066
ins_cost(ALU_COST + BRANCH_COST);
@@ -10078,23 +10095,39 @@ instruct cmovL_cmpUL(iRegLNoSp dst, iRegL src, iRegL op1, iRegL op2, cmpOpU cop)
10078
10095
ins_pipe(pipe_class_compare);
10079
10096
%}
10080
10097
10081
- instruct cmovI_cmpUL(iRegINoSp dst, iRegI src, iRegL op1, iRegL op2, cmpOpU cop) %{
10082
- match(Set dst (CMoveI (Binary cop (CmpUL op1 op2)) (Binary dst src)));
10098
+ instruct cmovL_cmpI(iRegLNoSp dst, iRegL src, iRegI op1, iRegI op2, cmpOp cop) %{
10099
+ match(Set dst (CMoveL (Binary cop (CmpI op1 op2)) (Binary dst src)));
10083
10100
ins_cost(ALU_COST + BRANCH_COST);
10084
10101
10085
10102
format %{
10086
- "CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovI_cmpUL \n\t"
10103
+ "CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovL_cmpI \n\t"
10087
10104
%}
10088
10105
10089
10106
ins_encode %{
10090
- __ enc_cmove($cop$$cmpcode | C2_MacroAssembler::unsigned_branch_mask ,
10107
+ __ enc_cmove($cop$$cmpcode,
10091
10108
as_Register($op1$$reg), as_Register($op2$$reg),
10092
10109
as_Register($dst$$reg), as_Register($src$$reg));
10093
10110
%}
10094
10111
10095
10112
ins_pipe(pipe_class_compare);
10096
10113
%}
10097
10114
10115
+ instruct cmovL_cmpU(iRegLNoSp dst, iRegL src, iRegI op1, iRegI op2, cmpOpU cop) %{
10116
+ match(Set dst (CMoveL (Binary cop (CmpU op1 op2)) (Binary dst src)));
10117
+ ins_cost(ALU_COST + BRANCH_COST);
10118
+
10119
+ format %{
10120
+ "CMove $dst, ($op1 $cop $op2), $dst, $src\t#@cmovL_cmpU\n\t"
10121
+ %}
10122
+
10123
+ ins_encode %{
10124
+ __ enc_cmove($cop$$cmpcode | C2_MacroAssembler::unsigned_branch_mask,
10125
+ as_Register($op1$$reg), as_Register($op2$$reg),
10126
+ as_Register($dst$$reg), as_Register($src$$reg));
10127
+ %}
10128
+
10129
+ ins_pipe(pipe_class_compare);
10130
+ %}
10098
10131
10099
10132
// ============================================================================
10100
10133
// Procedure Call/Return Instructions
0 commit comments