xref: /aosp_15_r20/external/llvm/test/Transforms/ConstProp/shift.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -constprop -S | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shift_undef_64
4*9880d681SAndroid Build Coastguard Workerdefine void @shift_undef_64(i64* %p) {
5*9880d681SAndroid Build Coastguard Worker  %r1 = lshr i64 -1, 4294967296 ; 2^32
6*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i64 undef
7*9880d681SAndroid Build Coastguard Worker  store i64 %r1, i64* %p
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker  %r2 = ashr i64 -1, 4294967297 ; 2^32 + 1
10*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i64 undef
11*9880d681SAndroid Build Coastguard Worker  store i64 %r2, i64* %p
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker  %r3 = shl i64 -1, 4294967298 ; 2^32 + 2
14*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i64 undef
15*9880d681SAndroid Build Coastguard Worker  store i64 %r3, i64* %p
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker  ret void
18*9880d681SAndroid Build Coastguard Worker}
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shift_undef_65
21*9880d681SAndroid Build Coastguard Workerdefine void @shift_undef_65(i65* %p) {
22*9880d681SAndroid Build Coastguard Worker  %r1 = lshr i65 2, 18446744073709551617
23*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i65 undef
24*9880d681SAndroid Build Coastguard Worker  store i65 %r1, i65* %p
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker  %r2 = ashr i65 4, 18446744073709551617
27*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i65 undef
28*9880d681SAndroid Build Coastguard Worker  store i65 %r2, i65* %p
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker  %r3 = shl i65 1, 18446744073709551617
31*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i65 undef
32*9880d681SAndroid Build Coastguard Worker  store i65 %r3, i65* %p
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Worker  ret void
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shift_undef_256
38*9880d681SAndroid Build Coastguard Workerdefine void @shift_undef_256(i256* %p) {
39*9880d681SAndroid Build Coastguard Worker  %r1 = lshr i256 2, 18446744073709551617
40*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i256 undef
41*9880d681SAndroid Build Coastguard Worker  store i256 %r1, i256* %p
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker  %r2 = ashr i256 4, 18446744073709551618
44*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i256 undef
45*9880d681SAndroid Build Coastguard Worker  store i256 %r2, i256* %p
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Worker  %r3 = shl i256 1, 18446744073709551619
48*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i256 undef
49*9880d681SAndroid Build Coastguard Worker  store i256 %r3, i256* %p
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker  ret void
52*9880d681SAndroid Build Coastguard Worker}
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shift_undef_511
55*9880d681SAndroid Build Coastguard Workerdefine void @shift_undef_511(i511* %p) {
56*9880d681SAndroid Build Coastguard Worker  %r1 = lshr i511 -1, 1208925819614629174706276 ; 2^80 + 100
57*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i511 undef
58*9880d681SAndroid Build Coastguard Worker  store i511 %r1, i511* %p
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Worker  %r2 = ashr i511 -2, 1208925819614629174706200
61*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i511 undef
62*9880d681SAndroid Build Coastguard Worker  store i511 %r2, i511* %p
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Worker  %r3 = shl i511 -3, 1208925819614629174706180
65*9880d681SAndroid Build Coastguard Worker  ; CHECK: store i511 undef
66*9880d681SAndroid Build Coastguard Worker  store i511 %r3, i511* %p
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker  ret void
69*9880d681SAndroid Build Coastguard Worker}
70