ret i32 %r
}
+define i32 @sdiv_constant_dividend_select_of_constants_divisor_0_arm(i1 %b) {
+; CHECK-LABEL: @sdiv_constant_dividend_select_of_constants_divisor_0_arm(
+; CHECK-NEXT: ret i32 3
+;
+ %s = select i1 %b, i32 12, i32 0
+ %r = sdiv i32 42, %s
+ ret i32 %r
+}
+
define i32 @sdiv_constant_dividend_select_divisor1(i1 %b, i32 %x) {
; CHECK-LABEL: @sdiv_constant_dividend_select_divisor1(
; CHECK-NEXT: [[S:%.*]] = select i1 [[B:%.*]], i32 [[X:%.*]], i32 -3
ret i32 %r
}
+define i32 @udiv_constant_dividend_select_of_constants_divisor_0_arm(i1 %b) {
+; CHECK-LABEL: @udiv_constant_dividend_select_of_constants_divisor_0_arm(
+; CHECK-NEXT: ret i32 3
+;
+ %s = select i1 %b, i32 12, i32 0
+ %r = udiv i32 42, %s
+ ret i32 %r
+}
+
define i32 @udiv_constant_dividend_select_divisor1(i1 %b, i32 %x) {
; CHECK-LABEL: @udiv_constant_dividend_select_divisor1(
; CHECK-NEXT: [[S:%.*]] = select i1 [[B:%.*]], i32 [[X:%.*]], i32 -3
ret i32 %r
}
+define i32 @srem_constant_dividend_select_of_constants_divisor_0_arm(i1 %b) {
+; CHECK-LABEL: @srem_constant_dividend_select_of_constants_divisor_0_arm(
+; CHECK-NEXT: ret i32 6
+;
+ %s = select i1 %b, i32 12, i32 0
+ %r = srem i32 42, %s
+ ret i32 %r
+}
+
define i32 @srem_constant_dividend_select_divisor1(i1 %b, i32 %x) {
; CHECK-LABEL: @srem_constant_dividend_select_divisor1(
; CHECK-NEXT: [[S:%.*]] = select i1 [[B:%.*]], i32 [[X:%.*]], i32 -3
ret i32 %r
}
+define i32 @urem_constant_dividend_select_of_constants_divisor_0_arm(i1 %b) {
+; CHECK-LABEL: @urem_constant_dividend_select_of_constants_divisor_0_arm(
+; CHECK-NEXT: ret i32 6
+;
+ %s = select i1 %b, i32 12, i32 0
+ %r = urem i32 42, %s
+ ret i32 %r
+}
+
define i32 @urem_constant_dividend_select_divisor1(i1 %b, i32 %x) {
; CHECK-LABEL: @urem_constant_dividend_select_divisor1(
; CHECK-NEXT: [[S:%.*]] = select i1 [[B:%.*]], i32 [[X:%.*]], i32 -3