; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5 ; RUN: opt -disable-output -passes='print' < %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)) 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)) 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)) /u 2048) to i16) to i32)) 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 }