@@ -5042,6 +5042,66 @@ define i1 @isnormal_logical_select_0_fmf1(half %x) {
50425042 ret i1 %and
50435043}
50445044
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+
50455105declare half @llvm.fabs.f16 (half )
50465106declare <2 x half > @llvm.fabs.v2f16 (<2 x half >)
50475107declare half @llvm.copysign.f16 (half , half )
0 commit comments