44define i1 @ceil_shift4 (i32 %arg0 ) {
55; CHECK-LABEL: define i1 @ceil_shift4(
66; CHECK-SAME: i32 [[ARG0:%.*]]) {
7- ; CHECK-NEXT: [[QUOT:%.*]] = lshr i32 [[ARG0]], 4
8- ; CHECK-NEXT: [[REM:%.*]] = and i32 [[ARG0]], 15
9- ; CHECK-NEXT: [[HAS_REM:%.*]] = icmp ne i32 [[REM]], 0
10- ; CHECK-NEXT: [[ZEXT_HAS_REM:%.*]] = zext i1 [[HAS_REM]] to i32
11- ; CHECK-NEXT: [[QUOT_OR_REM:%.*]] = or i32 [[QUOT]], [[ZEXT_HAS_REM]]
12- ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[QUOT_OR_REM]], 0
7+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[ARG0]], 0
138; CHECK-NEXT: ret i1 [[TMP1]]
149;
1510 %quot = lshr i32 %arg0 , 4
@@ -24,12 +19,7 @@ define i1 @ceil_shift4(i32 %arg0) {
2419define i1 @ceil_shift4_add (i32 %arg0 ) {
2520; CHECK-LABEL: define i1 @ceil_shift4_add(
2621; CHECK-SAME: i32 [[ARG0:%.*]]) {
27- ; CHECK-NEXT: [[QUOT:%.*]] = lshr i32 [[ARG0]], 4
28- ; CHECK-NEXT: [[REM:%.*]] = and i32 [[ARG0]], 15
29- ; CHECK-NEXT: [[HAS_REM:%.*]] = icmp ne i32 [[REM]], 0
30- ; CHECK-NEXT: [[ZEXT_HAS_REM:%.*]] = zext i1 [[HAS_REM]] to i32
31- ; CHECK-NEXT: [[TMP1:%.*]] = or i32 [[QUOT]], [[ZEXT_HAS_REM]]
32- ; CHECK-NEXT: [[TMP6:%.*]] = icmp eq i32 [[TMP1]], 0
22+ ; CHECK-NEXT: [[TMP6:%.*]] = icmp eq i32 [[ARG0]], 0
3323; CHECK-NEXT: ret i1 [[TMP6]]
3424;
3525 %quot = lshr i32 %arg0 , 4
@@ -44,12 +34,7 @@ define i1 @ceil_shift4_add(i32 %arg0) {
4434define i1 @ceil_shift6 (i32 %arg0 ) {
4535; CHECK-LABEL: define i1 @ceil_shift6(
4636; CHECK-SAME: i32 [[ARG0:%.*]]) {
47- ; CHECK-NEXT: [[QUOT:%.*]] = lshr i32 [[ARG0]], 6
48- ; CHECK-NEXT: [[REM:%.*]] = and i32 [[ARG0]], 63
49- ; CHECK-NEXT: [[HAS_REM:%.*]] = icmp ne i32 [[REM]], 0
50- ; CHECK-NEXT: [[ZEXT_HAS_REM:%.*]] = zext i1 [[HAS_REM]] to i32
51- ; CHECK-NEXT: [[QUOT_OR_REM:%.*]] = or i32 [[QUOT]], [[ZEXT_HAS_REM]]
52- ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[QUOT_OR_REM]], 0
37+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[ARG0]], 0
5338; CHECK-NEXT: ret i1 [[TMP1]]
5439;
5540 %quot = lshr i32 %arg0 , 6
@@ -64,12 +49,7 @@ define i1 @ceil_shift6(i32 %arg0) {
6449define i1 @ceil_shift11 (i32 %arg0 ) {
6550; CHECK-LABEL: define i1 @ceil_shift11(
6651; CHECK-SAME: i32 [[ARG0:%.*]]) {
67- ; CHECK-NEXT: [[QUOT:%.*]] = lshr i32 [[ARG0]], 11
68- ; CHECK-NEXT: [[REM:%.*]] = and i32 [[ARG0]], 2047
69- ; CHECK-NEXT: [[HAS_REM:%.*]] = icmp ne i32 [[REM]], 0
70- ; CHECK-NEXT: [[ZEXT_HAS_REM:%.*]] = zext i1 [[HAS_REM]] to i32
71- ; CHECK-NEXT: [[QUOT_OR_REM:%.*]] = or i32 [[QUOT]], [[ZEXT_HAS_REM]]
72- ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[QUOT_OR_REM]], 0
52+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[ARG0]], 0
7353; CHECK-NEXT: ret i1 [[TMP1]]
7454;
7555 %quot = lshr i32 %arg0 , 11
@@ -99,12 +79,7 @@ define i1 @ceil_shift0(i32 %arg0) {
9979define i1 @ceil_shift4_comm (i32 %arg0 ) {
10080; CHECK-LABEL: define i1 @ceil_shift4_comm(
10181; CHECK-SAME: i32 [[ARG0:%.*]]) {
102- ; CHECK-NEXT: [[QUOT:%.*]] = lshr i32 [[ARG0]], 4
103- ; CHECK-NEXT: [[REM:%.*]] = and i32 [[ARG0]], 15
104- ; CHECK-NEXT: [[HAS_REM:%.*]] = icmp ne i32 [[REM]], 0
105- ; CHECK-NEXT: [[ZEXT_HAS_REM:%.*]] = zext i1 [[HAS_REM]] to i32
106- ; CHECK-NEXT: [[QUOT_OR_REM:%.*]] = or i32 [[QUOT]], [[ZEXT_HAS_REM]]
107- ; CHECK-NEXT: [[TMP6:%.*]] = icmp eq i32 [[QUOT_OR_REM]], 0
82+ ; CHECK-NEXT: [[TMP6:%.*]] = icmp eq i32 [[ARG0]], 0
10883; CHECK-NEXT: ret i1 [[TMP6]]
10984;
11085 %quot = lshr i32 %arg0 , 4
@@ -123,11 +98,7 @@ define i1 @ceil_shift4_used_1(i32 %arg0) {
12398; CHECK-SAME: i32 [[ARG0:%.*]]) {
12499; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[ARG0]], 4
125100; CHECK-NEXT: call void @use(i32 [[TMP1]])
126- ; CHECK-NEXT: [[REM:%.*]] = and i32 [[ARG0]], 15
127- ; CHECK-NEXT: [[HAS_REM:%.*]] = icmp ne i32 [[REM]], 0
128- ; CHECK-NEXT: [[ZEXT_HAS_REM:%.*]] = zext i1 [[HAS_REM]] to i32
129- ; CHECK-NEXT: [[QUOT_OR_REM:%.*]] = or i32 [[TMP1]], [[ZEXT_HAS_REM]]
130- ; CHECK-NEXT: [[TMP6:%.*]] = icmp eq i32 [[QUOT_OR_REM]], 0
101+ ; CHECK-NEXT: [[TMP6:%.*]] = icmp eq i32 [[ARG0]], 0
131102; CHECK-NEXT: ret i1 [[TMP6]]
132103;
133104 %quot = lshr i32 %arg0 , 4
@@ -165,12 +136,7 @@ define i1 @ceil_shift4_used_5(i32 %arg0) {
165136define <4 x i1 > @ceil_shift4_v4i32 (<4 x i32 > %arg0 ) {
166137; CHECK-LABEL: define <4 x i1> @ceil_shift4_v4i32(
167138; CHECK-SAME: <4 x i32> [[ARG0:%.*]]) {
168- ; CHECK-NEXT: [[QUOT:%.*]] = lshr <4 x i32> [[ARG0]], splat (i32 16)
169- ; CHECK-NEXT: [[REM:%.*]] = and <4 x i32> [[ARG0]], splat (i32 65535)
170- ; CHECK-NEXT: [[HAS_REM:%.*]] = icmp ne <4 x i32> [[REM]], zeroinitializer
171- ; CHECK-NEXT: [[ZEXT_HAS_REM:%.*]] = zext <4 x i1> [[HAS_REM]] to <4 x i32>
172- ; CHECK-NEXT: [[QUOT_OR_REM:%.*]] = or <4 x i32> [[QUOT]], [[ZEXT_HAS_REM]]
173- ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq <4 x i32> [[QUOT_OR_REM]], zeroinitializer
139+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq <4 x i32> [[ARG0]], zeroinitializer
174140; CHECK-NEXT: ret <4 x i1> [[TMP1]]
175141;
176142 %quot = lshr <4 x i32 > %arg0 , splat (i32 16 )
@@ -185,12 +151,7 @@ define <4 x i1> @ceil_shift4_v4i32(<4 x i32> %arg0) {
185151define <8 x i1 > @ceil_shift4_v8i16 (<8 x i16 > %arg0 ) {
186152; CHECK-LABEL: define <8 x i1> @ceil_shift4_v8i16(
187153; CHECK-SAME: <8 x i16> [[ARG0:%.*]]) {
188- ; CHECK-NEXT: [[QUOT:%.*]] = lshr <8 x i16> [[ARG0]], splat (i16 4)
189- ; CHECK-NEXT: [[REM:%.*]] = and <8 x i16> [[ARG0]], splat (i16 15)
190- ; CHECK-NEXT: [[HAS_REM:%.*]] = icmp ne <8 x i16> [[REM]], zeroinitializer
191- ; CHECK-NEXT: [[ZEXT_HAS_REM:%.*]] = zext <8 x i1> [[HAS_REM]] to <8 x i16>
192- ; CHECK-NEXT: [[QUOT_OR_REM:%.*]] = or <8 x i16> [[QUOT]], [[ZEXT_HAS_REM]]
193- ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq <8 x i16> [[QUOT_OR_REM]], zeroinitializer
154+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq <8 x i16> [[ARG0]], zeroinitializer
194155; CHECK-NEXT: ret <8 x i1> [[TMP1]]
195156;
196157 %quot = lshr <8 x i16 > %arg0 , splat (i16 4 )
0 commit comments