Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / Transforms / SCCP / ub-shift.ll
blobae2739d0445d0e940d64edb0364f4becc9bda039
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=sccp -S | FileCheck %s
4 define void @shift_undef_64(ptr %p) {
5 ; CHECK-LABEL: @shift_undef_64(
6 ; CHECK-NEXT:    store i64 0, ptr [[P:%.*]], align 4
7 ; CHECK-NEXT:    store i64 -1, ptr [[P]], align 4
8 ; CHECK-NEXT:    [[R3:%.*]] = shl nuw nsw i64 -1, 4294967298
9 ; CHECK-NEXT:    store i64 [[R3]], ptr [[P]], align 4
10 ; CHECK-NEXT:    ret void
12   %r1 = lshr i64 -1, 4294967296 ; 2^32
13   store i64 %r1, ptr %p
15   %r2 = ashr i64 -1, 4294967297 ; 2^32 + 1
16   store i64 %r2, ptr %p
18   %r3 = shl i64 -1, 4294967298 ; 2^32 + 2
19   store i64 %r3, ptr %p
21   ret void
24 define void @shift_undef_65(ptr %p) {
25 ; CHECK-LABEL: @shift_undef_65(
26 ; CHECK-NEXT:    store i65 0, ptr [[P:%.*]], align 4
27 ; CHECK-NEXT:    store i65 0, ptr [[P]], align 4
28 ; CHECK-NEXT:    [[R3:%.*]] = shl nuw nsw i65 1, -18446744073709551615
29 ; CHECK-NEXT:    store i65 [[R3]], ptr [[P]], align 4
30 ; CHECK-NEXT:    ret void
32   %r1 = lshr i65 2, 18446744073709551617
33   store i65 %r1, ptr %p
35   %r2 = ashr i65 4, 18446744073709551617
36   store i65 %r2, ptr %p
38   %r3 = shl i65 1, 18446744073709551617
39   store i65 %r3, ptr %p
41   ret void
44 define void @shift_undef_256(ptr %p) {
45 ; CHECK-LABEL: @shift_undef_256(
46 ; CHECK-NEXT:    store i256 0, ptr [[P:%.*]], align 4
47 ; CHECK-NEXT:    store i256 0, ptr [[P]], align 4
48 ; CHECK-NEXT:    [[R3:%.*]] = shl nuw nsw i256 1, 18446744073709551619
49 ; CHECK-NEXT:    store i256 [[R3]], ptr [[P]], align 4
50 ; CHECK-NEXT:    ret void
52   %r1 = lshr i256 2, 18446744073709551617
53   store i256 %r1, ptr %p
55   %r2 = ashr i256 4, 18446744073709551618
56   store i256 %r2, ptr %p
58   %r3 = shl i256 1, 18446744073709551619
59   store i256 %r3, ptr %p
61   ret void
64 define void @shift_undef_511(ptr %p) {
65 ; CHECK-LABEL: @shift_undef_511(
66 ; CHECK-NEXT:    store i511 0, ptr [[P:%.*]], align 4
67 ; CHECK-NEXT:    store i511 -1, ptr [[P]], align 4
68 ; CHECK-NEXT:    [[R3:%.*]] = shl nuw nsw i511 -3, 1208925819614629174706180
69 ; CHECK-NEXT:    store i511 [[R3]], ptr [[P]], align 4
70 ; CHECK-NEXT:    ret void
72   %r1 = lshr i511 -1, 1208925819614629174706276 ; 2^80 + 100
73   store i511 %r1, ptr %p
75   %r2 = ashr i511 -2, 1208925819614629174706200
76   store i511 %r2, ptr %p
78   %r3 = shl i511 -3, 1208925819614629174706180
79   store i511 %r3, ptr %p
81   ret void