@@ -3303,98 +3303,6 @@ entry:
33033303
33043304; PR 152851
33053305
3306- define i1 @val_is_aligend_sub (i32 %num , i32 %val ) {
3307- ; CHECK-LABEL: @val_is_aligend_sub(
3308- ; CHECK-NEXT: [[TMP1:%.*]] = tail call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 [[NUM:%.*]])
3309- ; CHECK-NEXT: [[POW:%.*]] = icmp eq i32 [[TMP1]], 1
3310- ; CHECK-NEXT: call void @llvm.assume(i1 [[POW]])
3311- ; CHECK-NEXT: [[NEG:%.*]] = add i32 [[NUM]], -1
3312- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[NUM1:%.*]], [[NEG]]
3313- ; CHECK-NEXT: [[_0:%.*]] = icmp eq i32 [[TMP2]], 0
3314- ; CHECK-NEXT: ret i1 [[_0]]
3315- ;
3316- %1 = tail call range(i32 1 , 33 ) i32 @llvm.ctpop.i32 (i32 %val )
3317- %pow = icmp eq i32 %1 , 1
3318- call void @llvm.assume (i1 %pow )
3319-
3320- %mask = sub i32 %val , 1
3321- %neg = sub nsw i32 0 , %val
3322-
3323- %num.biased = add i32 %num , %mask
3324- %_2.sroa.0.0 = and i32 %num.biased , %neg
3325- %_0 = icmp eq i32 %_2.sroa.0.0 , %num
3326- ret i1 %_0
3327- }
3328-
3329- define i1 @val_is_aligend_add (i32 %num , i32 %val ) {
3330- ; CHECK-LABEL: @val_is_aligend_add(
3331- ; CHECK-NEXT: [[TMP1:%.*]] = tail call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 [[NUM:%.*]])
3332- ; CHECK-NEXT: [[POW:%.*]] = icmp eq i32 [[TMP1]], 1
3333- ; CHECK-NEXT: call void @llvm.assume(i1 [[POW]])
3334- ; CHECK-NEXT: [[NEG:%.*]] = add i32 [[NUM]], -1
3335- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[NUM1:%.*]], [[NEG]]
3336- ; CHECK-NEXT: [[_0:%.*]] = icmp eq i32 [[TMP2]], 0
3337- ; CHECK-NEXT: ret i1 [[_0]]
3338- ;
3339- %1 = tail call range(i32 1 , 33 ) i32 @llvm.ctpop.i32 (i32 %val )
3340- %pow = icmp eq i32 %1 , 1
3341- call void @llvm.assume (i1 %pow )
3342-
3343- %mask = add i32 %val , -1
3344- %neg = sub nsw i32 0 , %val
3345-
3346- %num.biased = add i32 %num , %mask
3347- %_2.sroa.0.0 = and i32 %num.biased , %neg
3348- %_0 = icmp eq i32 %_2.sroa.0.0 , %num
3349- ret i1 %_0
3350- }
3351-
3352- define i1 @val_is_aligend_add_commute_add (i32 %num , i32 %val ) {
3353- ; CHECK-LABEL: @val_is_aligend_add_commute_add(
3354- ; CHECK-NEXT: [[TMP1:%.*]] = tail call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 [[VAL:%.*]])
3355- ; CHECK-NEXT: [[POW:%.*]] = icmp eq i32 [[TMP1]], 1
3356- ; CHECK-NEXT: call void @llvm.assume(i1 [[POW]])
3357- ; CHECK-NEXT: [[MASK:%.*]] = add i32 [[VAL]], -1
3358- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[NUM:%.*]], [[MASK]]
3359- ; CHECK-NEXT: [[_0:%.*]] = icmp eq i32 [[TMP2]], 0
3360- ; CHECK-NEXT: ret i1 [[_0]]
3361- ;
3362- %1 = tail call range(i32 1 , 33 ) i32 @llvm.ctpop.i32 (i32 %val )
3363- %pow = icmp eq i32 %1 , 1
3364- call void @llvm.assume (i1 %pow )
3365-
3366- %mask = add i32 %val , -1
3367- %neg = sub nsw i32 0 , %val
3368-
3369- %num.biased = add i32 %mask , %num
3370- %_2.sroa.0.0 = and i32 %num.biased , %neg
3371- %_0 = icmp eq i32 %_2.sroa.0.0 , %num
3372- ret i1 %_0
3373- }
3374-
3375- define i1 @val_is_aligend_add_commute_and (i32 %num , i32 %val ) {
3376- ; CHECK-LABEL: @val_is_aligend_add_commute_and(
3377- ; CHECK-NEXT: [[TMP1:%.*]] = tail call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 [[VAL:%.*]])
3378- ; CHECK-NEXT: [[POW:%.*]] = icmp eq i32 [[TMP1]], 1
3379- ; CHECK-NEXT: call void @llvm.assume(i1 [[POW]])
3380- ; CHECK-NEXT: [[MASK:%.*]] = add i32 [[VAL]], -1
3381- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[NUM:%.*]], [[MASK]]
3382- ; CHECK-NEXT: [[_0:%.*]] = icmp eq i32 [[TMP2]], 0
3383- ; CHECK-NEXT: ret i1 [[_0]]
3384- ;
3385- %1 = tail call range(i32 1 , 33 ) i32 @llvm.ctpop.i32 (i32 %val )
3386- %pow = icmp eq i32 %1 , 1
3387- call void @llvm.assume (i1 %pow )
3388-
3389- %mask = add i32 %val , -1
3390- %neg = sub nsw i32 0 , %val
3391-
3392- %num.biased = add i32 %mask , %num
3393- %_2.sroa.0.0 = and i32 %neg , %num.biased
3394- %_0 = icmp eq i32 %_2.sroa.0.0 , %num
3395- ret i1 %_0
3396- }
3397-
33983306define i1 @val_is_aligend_const_pow2 (i32 %num ) {
33993307; CHECK-LABEL: @val_is_aligend_const_pow2(
34003308; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[NUM:%.*]], 4095
@@ -3421,24 +3329,6 @@ define i1 @val_is_aligend_const_non_pow2(i32 %num) {
34213329 ret i1 %_0
34223330}
34233331
3424- define i1 @val_is_aligend_non_pow (i32 %num , i32 %val ) {
3425- ; CHECK-LABEL: @val_is_aligend_non_pow(
3426- ; CHECK-NEXT: [[MASK:%.*]] = add i32 [[VAL:%.*]], -1
3427- ; CHECK-NEXT: [[NEG:%.*]] = sub nsw i32 0, [[VAL]]
3428- ; CHECK-NEXT: [[NUM_BIASED:%.*]] = add i32 [[NUM:%.*]], [[MASK]]
3429- ; CHECK-NEXT: [[_2_SROA_0_0:%.*]] = and i32 [[NUM_BIASED]], [[NEG]]
3430- ; CHECK-NEXT: [[_0:%.*]] = icmp eq i32 [[_2_SROA_0_0]], [[NUM]]
3431- ; CHECK-NEXT: ret i1 [[_0]]
3432- ;
3433- %mask = add i32 %val , -1
3434- %neg = sub nsw i32 0 , %val
3435-
3436- %num.biased = add i32 %num , %mask
3437- %_2.sroa.0.0 = and i32 %num.biased , %neg
3438- %_0 = icmp eq i32 %_2.sroa.0.0 , %num
3439- ret i1 %_0
3440- }
3441-
34423332define i1 @val_is_aligend_const_pow2_multiuse (i32 %num ) {
34433333; CHECK-LABEL: @val_is_aligend_const_pow2_multiuse(
34443334; CHECK-NEXT: [[NUM_BIASED:%.*]] = add i32 [[NUM:%.*]], 4095
@@ -3469,32 +3359,3 @@ define i1 @val_is_aligend_const_pow2_multiuse1(i32 %num) {
34693359 %_0 = icmp eq i32 %_2.sroa.0.0 , %num
34703360 ret i1 %_0
34713361}
3472-
3473- define i1 @val_is_aligend_add_multiuse (i32 %num , i32 %val ) {
3474- ; CHECK-LABEL: @val_is_aligend_add_multiuse(
3475- ; CHECK-NEXT: [[TMP1:%.*]] = tail call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 [[VAL:%.*]])
3476- ; CHECK-NEXT: [[POW:%.*]] = icmp eq i32 [[TMP1]], 1
3477- ; CHECK-NEXT: call void @llvm.assume(i1 [[POW]])
3478- ; CHECK-NEXT: [[MASK:%.*]] = add i32 [[VAL]], -1
3479- ; CHECK-NEXT: [[NEG:%.*]] = sub nsw i32 0, [[VAL]]
3480- ; CHECK-NEXT: [[NUM_BIASED:%.*]] = add i32 [[NUM:%.*]], [[MASK]]
3481- ; CHECK-NEXT: [[_2_SROA_0_0:%.*]] = and i32 [[NUM_BIASED]], [[NEG]]
3482- ; CHECK-NEXT: call void @use(i32 [[_2_SROA_0_0]])
3483- ; CHECK-NEXT: [[_0:%.*]] = icmp eq i32 [[_2_SROA_0_0]], [[NUM]]
3484- ; CHECK-NEXT: ret i1 [[_0]]
3485- ;
3486- %1 = tail call range(i32 1 , 33 ) i32 @llvm.ctpop.i32 (i32 %val )
3487- %pow = icmp eq i32 %1 , 1
3488- call void @llvm.assume (i1 %pow )
3489-
3490- %mask = add i32 %val , -1
3491- %neg = sub nsw i32 0 , %val
3492-
3493- %num.biased = add i32 %num , %mask
3494- %_2.sroa.0.0 = and i32 %num.biased , %neg
3495-
3496- call void @use (i32 %_2.sroa.0.0 )
3497-
3498- %_0 = icmp eq i32 %_2.sroa.0.0 , %num
3499- ret i1 %_0
3500- }
0 commit comments