| ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: opt -disable-output -passes='print<scalar-evolution>' < %s 2>&1 | FileCheck %s |
| |
| define i32 @pr135511(i32 %x) { |
| ; CHECK-LABEL: 'pr135511' |
| ; CHECK-NEXT: Classifying expressions for: @pr135511 |
| ; CHECK-NEXT: %and = and i32 %x, 16382 |
| ; CHECK-NEXT: --> (2 * (zext i13 (trunc i32 (%x /u 2) to i13) to i32))<nuw><nsw> U: [0,16383) S: [0,16383) |
| ; CHECK-NEXT: %neg = sub nsw i32 0, %and |
| ; CHECK-NEXT: --> (-2 * (zext i13 (trunc i32 (%x /u 2) to i13) to i32))<nsw> U: [0,-1) S: [-16382,1) |
| ; CHECK-NEXT: %res = and i32 %neg, 268431360 |
| ; CHECK-NEXT: --> (4096 * (zext i16 (trunc i32 ((-1 * (zext i13 (trunc i32 (%x /u 2) to i13) to i32))<nsw> /u 2048) to i16) to i32))<nuw><nsw> U: [0,268431361) S: [0,268431361) |
| ; CHECK-NEXT: Determining loop execution counts for: @pr135511 |
| ; |
| %and = and i32 %x, 16382 |
| %neg = sub nsw i32 0, %and |
| %res = and i32 %neg, 268431360 |
| ret i32 %res |
| } |