[sanitizer] Improve FreeBSD ASLR detection
[llvm-project.git] / llvm / test / Transforms / SCCP / ub-shift.ll
blobc338043cb3113afb94da4bf89568e1d4c7cc0117
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(i64* %p) {
5 ; CHECK-LABEL: @shift_undef_64(
6 ; CHECK-NEXT:    store i64 0, i64* [[P:%.*]]
7 ; CHECK-NEXT:    store i64 -1, i64* [[P]]
8 ; CHECK-NEXT:    [[R3:%.*]] = shl i64 -1, 4294967298
9 ; CHECK-NEXT:    store i64 [[R3]], i64* [[P]]
10 ; CHECK-NEXT:    ret void
12   %r1 = lshr i64 -1, 4294967296 ; 2^32
13   store i64 %r1, i64* %p
15   %r2 = ashr i64 -1, 4294967297 ; 2^32 + 1
16   store i64 %r2, i64* %p
18   %r3 = shl i64 -1, 4294967298 ; 2^32 + 2
19   store i64 %r3, i64* %p
21   ret void
24 define void @shift_undef_65(i65* %p) {
25 ; CHECK-LABEL: @shift_undef_65(
26 ; CHECK-NEXT:    store i65 0, i65* [[P:%.*]]
27 ; CHECK-NEXT:    store i65 0, i65* [[P]]
28 ; CHECK-NEXT:    [[R3:%.*]] = shl i65 1, -18446744073709551615
29 ; CHECK-NEXT:    store i65 [[R3]], i65* [[P]]
30 ; CHECK-NEXT:    ret void
32   %r1 = lshr i65 2, 18446744073709551617
33   store i65 %r1, i65* %p
35   %r2 = ashr i65 4, 18446744073709551617
36   store i65 %r2, i65* %p
38   %r3 = shl i65 1, 18446744073709551617
39   store i65 %r3, i65* %p
41   ret void
44 define void @shift_undef_256(i256* %p) {
45 ; CHECK-LABEL: @shift_undef_256(
46 ; CHECK-NEXT:    store i256 0, i256* [[P:%.*]]
47 ; CHECK-NEXT:    store i256 0, i256* [[P]]
48 ; CHECK-NEXT:    [[R3:%.*]] = shl i256 1, 18446744073709551619
49 ; CHECK-NEXT:    store i256 [[R3]], i256* [[P]]
50 ; CHECK-NEXT:    ret void
52   %r1 = lshr i256 2, 18446744073709551617
53   store i256 %r1, i256* %p
55   %r2 = ashr i256 4, 18446744073709551618
56   store i256 %r2, i256* %p
58   %r3 = shl i256 1, 18446744073709551619
59   store i256 %r3, i256* %p
61   ret void
64 define void @shift_undef_511(i511* %p) {
65 ; CHECK-LABEL: @shift_undef_511(
66 ; CHECK-NEXT:    store i511 0, i511* [[P:%.*]]
67 ; CHECK-NEXT:    store i511 -1, i511* [[P]]
68 ; CHECK-NEXT:    [[R3:%.*]] = shl i511 -3, 1208925819614629174706180
69 ; CHECK-NEXT:    store i511 [[R3]], i511* [[P]]
70 ; CHECK-NEXT:    ret void
72   %r1 = lshr i511 -1, 1208925819614629174706276 ; 2^80 + 100
73   store i511 %r1, i511* %p
75   %r2 = ashr i511 -2, 1208925819614629174706200
76   store i511 %r2, i511* %p
78   %r3 = shl i511 -3, 1208925819614629174706180
79   store i511 %r3, i511* %p
81   ret void