@@ -5042,6 +5042,66 @@ define i1 @isnormal_logical_select_0_fmf1(half %x) {
5042
5042
ret i1 %and
5043
5043
}
5044
5044
5045
+ define i1 @and_fcmp_reassoc1 (i1 %x , double %a , double %b ) {
5046
+ ; CHECK-LABEL: @and_fcmp_reassoc1(
5047
+ ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
5048
+ ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A]], [[B]]
5049
+ ; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[TMP1]], [[X:%.*]]
5050
+ ; CHECK-NEXT: [[RETVAL1:%.*]] = and i1 [[RETVAL]], [[CMP1]]
5051
+ ; CHECK-NEXT: ret i1 [[RETVAL1]]
5052
+ ;
5053
+ %cmp = fcmp ult double %a , %b
5054
+ %cmp1 = fcmp ugt double %a , %b
5055
+ %and = and i1 %cmp , %x
5056
+ %retval = and i1 %and , %cmp1
5057
+ ret i1 %retval
5058
+ }
5059
+
5060
+ define i1 @and_fcmp_reassoc2 (i1 %x , double %a , double %b ) {
5061
+ ; CHECK-LABEL: @and_fcmp_reassoc2(
5062
+ ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
5063
+ ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A]], [[B]]
5064
+ ; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[X:%.*]], [[TMP1]]
5065
+ ; CHECK-NEXT: [[RETVAL1:%.*]] = and i1 [[RETVAL]], [[CMP1]]
5066
+ ; CHECK-NEXT: ret i1 [[RETVAL1]]
5067
+ ;
5068
+ %cmp = fcmp ult double %a , %b
5069
+ %cmp1 = fcmp ugt double %a , %b
5070
+ %and = and i1 %x , %cmp
5071
+ %retval = and i1 %and , %cmp1
5072
+ ret i1 %retval
5073
+ }
5074
+
5075
+ define i1 @and_fcmp_reassoc3 (i1 %x , double %a , double %b ) {
5076
+ ; CHECK-LABEL: @and_fcmp_reassoc3(
5077
+ ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
5078
+ ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A]], [[B]]
5079
+ ; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[TMP1]], [[X:%.*]]
5080
+ ; CHECK-NEXT: [[RETVAL1:%.*]] = and i1 [[CMP1]], [[RETVAL]]
5081
+ ; CHECK-NEXT: ret i1 [[RETVAL1]]
5082
+ ;
5083
+ %cmp = fcmp ult double %a , %b
5084
+ %cmp1 = fcmp ugt double %a , %b
5085
+ %and = and i1 %cmp , %x
5086
+ %retval = and i1 %cmp1 , %and
5087
+ ret i1 %retval
5088
+ }
5089
+
5090
+ define i1 @and_fcmp_reassoc4 (i1 %x , double %a , double %b ) {
5091
+ ; CHECK-LABEL: @and_fcmp_reassoc4(
5092
+ ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
5093
+ ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A]], [[B]]
5094
+ ; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[X:%.*]], [[TMP1]]
5095
+ ; CHECK-NEXT: [[RETVAL1:%.*]] = and i1 [[CMP1]], [[RETVAL]]
5096
+ ; CHECK-NEXT: ret i1 [[RETVAL1]]
5097
+ ;
5098
+ %cmp = fcmp ult double %a , %b
5099
+ %cmp1 = fcmp ugt double %a , %b
5100
+ %and = and i1 %x , %cmp
5101
+ %retval = and i1 %cmp1 , %and
5102
+ ret i1 %retval
5103
+ }
5104
+
5045
5105
declare half @llvm.fabs.f16 (half )
5046
5106
declare <2 x half > @llvm.fabs.v2f16 (<2 x half >)
5047
5107
declare half @llvm.copysign.f16 (half , half )
0 commit comments