blob: e172d56d3a5155c9da5ef9952c86ec752957f1ed [file] [log] [blame] [edit]
; 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
}