136 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s --data-layout="e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -S -disable-output -disable-verify "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=ALL,X64 %s3; RUN: opt < %s --data-layout="e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-f80:32-n8:16:32-S128" -S -disable-output -disable-verify "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=ALL,X32 %s4 5declare void @useptr(ptr)6 7define void @ptrtoaddr(ptr %in, ptr %out0, ptr %out1, ptr %out2, ptr %out3) {8; X64-LABEL: 'ptrtoaddr'9; X64-NEXT: Classifying expressions for: @ptrtoaddr10; X64-NEXT: %p0 = ptrtoaddr ptr %in to i6411; X64-NEXT: --> %p0 U: full-set S: full-set12; X64-NEXT: %p1 = ptrtoaddr ptr %in to i3213; X64-NEXT: --> %p1 U: full-set S: full-set14; X64-NEXT: %p2 = ptrtoaddr ptr %in to i1615; X64-NEXT: --> %p2 U: full-set S: full-set16; X64-NEXT: %p3 = ptrtoaddr ptr %in to i12817; X64-NEXT: --> %p3 U: full-set S: full-set18; X64-NEXT: Determining loop execution counts for: @ptrtoaddr19;20; X32-LABEL: 'ptrtoaddr'21; X32-NEXT: Classifying expressions for: @ptrtoaddr22; X32-NEXT: %p0 = ptrtoaddr ptr %in to i6423; X32-NEXT: --> %p0 U: full-set S: full-set24; X32-NEXT: %p1 = ptrtoaddr ptr %in to i3225; X32-NEXT: --> %p1 U: full-set S: full-set26; X32-NEXT: %p2 = ptrtoaddr ptr %in to i1627; X32-NEXT: --> %p2 U: full-set S: full-set28; X32-NEXT: %p3 = ptrtoaddr ptr %in to i12829; X32-NEXT: --> %p3 U: full-set S: full-set30; X32-NEXT: Determining loop execution counts for: @ptrtoaddr31;32 %p0 = ptrtoaddr ptr %in to i6433 %p1 = ptrtoaddr ptr %in to i3234 %p2 = ptrtoaddr ptr %in to i1635 %p3 = ptrtoaddr ptr %in to i12836 store i64 %p0, ptr %out037 store i32 %p1, ptr %out138 store i16 %p2, ptr %out239 store i128 %p3, ptr %out340 ret void41}42 43define void @ptrtoaddr_as1(ptr addrspace(1) %in, ptr %out0, ptr %out1, ptr %out2, ptr %out3) {44; X64-LABEL: 'ptrtoaddr_as1'45; X64-NEXT: Classifying expressions for: @ptrtoaddr_as146; X64-NEXT: %p0 = ptrtoaddr ptr addrspace(1) %in to i6447; X64-NEXT: --> %p0 U: full-set S: full-set48; X64-NEXT: %p1 = ptrtoaddr ptr addrspace(1) %in to i3249; X64-NEXT: --> %p1 U: full-set S: full-set50; X64-NEXT: %p2 = ptrtoaddr ptr addrspace(1) %in to i1651; X64-NEXT: --> %p2 U: full-set S: full-set52; X64-NEXT: %p3 = ptrtoaddr ptr addrspace(1) %in to i12853; X64-NEXT: --> %p3 U: full-set S: full-set54; X64-NEXT: Determining loop execution counts for: @ptrtoaddr_as155;56; X32-LABEL: 'ptrtoaddr_as1'57; X32-NEXT: Classifying expressions for: @ptrtoaddr_as158; X32-NEXT: %p0 = ptrtoaddr ptr addrspace(1) %in to i6459; X32-NEXT: --> %p0 U: full-set S: full-set60; X32-NEXT: %p1 = ptrtoaddr ptr addrspace(1) %in to i3261; X32-NEXT: --> %p1 U: full-set S: full-set62; X32-NEXT: %p2 = ptrtoaddr ptr addrspace(1) %in to i1663; X32-NEXT: --> %p2 U: full-set S: full-set64; X32-NEXT: %p3 = ptrtoaddr ptr addrspace(1) %in to i12865; X32-NEXT: --> %p3 U: full-set S: full-set66; X32-NEXT: Determining loop execution counts for: @ptrtoaddr_as167;68 %p0 = ptrtoaddr ptr addrspace(1) %in to i6469 %p1 = ptrtoaddr ptr addrspace(1) %in to i3270 %p2 = ptrtoaddr ptr addrspace(1) %in to i1671 %p3 = ptrtoaddr ptr addrspace(1) %in to i12872 store i64 %p0, ptr %out073 store i32 %p1, ptr %out174 store i16 %p2, ptr %out275 store i128 %p3, ptr %out376 ret void77}78 79define void @ptrtoaddr_of_bitcast(ptr %in, ptr %out0) {80; X64-LABEL: 'ptrtoaddr_of_bitcast'81; X64-NEXT: Classifying expressions for: @ptrtoaddr_of_bitcast82; X64-NEXT: %in_casted = bitcast ptr %in to ptr83; X64-NEXT: --> %in U: full-set S: full-set84; X64-NEXT: %p0 = ptrtoaddr ptr %in_casted to i6485; X64-NEXT: --> %p0 U: full-set S: full-set86; X64-NEXT: Determining loop execution counts for: @ptrtoaddr_of_bitcast87;88; X32-LABEL: 'ptrtoaddr_of_bitcast'89; X32-NEXT: Classifying expressions for: @ptrtoaddr_of_bitcast90; X32-NEXT: %in_casted = bitcast ptr %in to ptr91; X32-NEXT: --> %in U: full-set S: full-set92; X32-NEXT: %p0 = ptrtoaddr ptr %in_casted to i6493; X32-NEXT: --> %p0 U: full-set S: full-set94; X32-NEXT: Determining loop execution counts for: @ptrtoaddr_of_bitcast95;96 %in_casted = bitcast ptr %in to ptr97 %p0 = ptrtoaddr ptr %in_casted to i6498 store i64 %p0, ptr %out099 ret void100}101 102define void @ptrtoaddr_of_nullptr(ptr %out0) {103; ALL-LABEL: 'ptrtoaddr_of_nullptr'104; ALL-NEXT: Classifying expressions for: @ptrtoaddr_of_nullptr105; ALL-NEXT: %p0 = ptrtoaddr ptr null to i64106; ALL-NEXT: --> %p0 U: full-set S: full-set107; ALL-NEXT: Determining loop execution counts for: @ptrtoaddr_of_nullptr108;109 %p0 = ptrtoaddr ptr null to i64110 store i64 %p0, ptr %out0111 ret void112}113 114define void @ptrtoaddr_of_gep(ptr %in, ptr %out0) {115; X64-LABEL: 'ptrtoaddr_of_gep'116; X64-NEXT: Classifying expressions for: @ptrtoaddr_of_gep117; X64-NEXT: %in_adj = getelementptr inbounds i8, ptr %in, i64 42118; X64-NEXT: --> (42 + %in) U: full-set S: full-set119; X64-NEXT: %p0 = ptrtoaddr ptr %in_adj to i64120; X64-NEXT: --> %p0 U: full-set S: full-set121; X64-NEXT: Determining loop execution counts for: @ptrtoaddr_of_gep122;123; X32-LABEL: 'ptrtoaddr_of_gep'124; X32-NEXT: Classifying expressions for: @ptrtoaddr_of_gep125; X32-NEXT: %in_adj = getelementptr inbounds i8, ptr %in, i64 42126; X32-NEXT: --> (42 + %in) U: full-set S: full-set127; X32-NEXT: %p0 = ptrtoaddr ptr %in_adj to i64128; X32-NEXT: --> %p0 U: full-set S: full-set129; X32-NEXT: Determining loop execution counts for: @ptrtoaddr_of_gep130;131 %in_adj = getelementptr inbounds i8, ptr %in, i64 42132 %p0 = ptrtoaddr ptr %in_adj to i64133 store i64 %p0, ptr %out0134 ret void135}136