-
Notifications
You must be signed in to change notification settings - Fork 149
Open
Description
The code is here
with
# 19.1.7
CLANG=clang++
ENZYME=enzyme/lib/libClangEnzyme.so
#12.8
CUDA=/cuda
# pick the one that exists:
CUDA_LIB=$CUDA/lib64
# CUDA_LIB=$CUDA/targets/x86_64-linux/lib
$CLANG -O3 -x cuda test2.cxx \
--cuda-path=$CUDA --cuda-gpu-arch=sm_80 \
-L$CUDA_LIB -Wl,-rpath,$CUDA_LIB \
-lcudart \
-fplugin="$ENZYME" \
-o test
and error msg
test2.cxx:75:19: error: Enzyme: Cannot deduce type of extract %29 = extractvalue [2 x float] %28, 0, !dbg !1270{} start: 0 size: 4 extractSize: 4
<analysis>
i64 %0: {[-1]:Integer}, intvals: {0,}
ptr %1: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Float@float, [-1,8]:Pointer, [-1,16]:Pointer}, intvals: {}
ptr %2: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Integer, [-1,0,1]:Integer, [-1,0,2]:Integer, [-1,0,3]:Integer, [-1,0,4]:Integer, [-1,0,5]:Integer, [-1,0,6]:Integer, [-1,0,7]:Integer}, intvals: {}
call void @_ZN2OpclEmiiR3c_v(ptr noundef nonnull align 8 dereferenceable(40) %1, i64 noundef %0, i32 noundef %10, i32 noundef %15, ptr noundef nonnull align 4 dereferenceable(32) %4) #142, !dbg !1271: {}, intvals: {}
%46 = getelementptr inbounds [2 x [3 x float]], ptr %33, i32 0, i32 1, i32 2, !dbg !1270: {[-1]:Pointer}, intvals: {}
%4 = alloca %struct.c_v, align 4: {[-1]:Pointer}, intvals: {}
%5 = mul i64 2, %0, !dbg !1251: {[-1]:Integer}, intvals: {0,}
%7 = load ptr, ptr %6, align 8, !dbg !1253: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
%8 = add i64 %5, 0, !dbg !1254: {[-1]:Integer}, intvals: {0,}
%10 = load i32, ptr %9, align 4, !dbg !1255: {[-1]:Integer}, intvals: {}
%12 = load ptr, ptr %11, align 8, !dbg !1257: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
%13 = add i64 %5, 1, !dbg !1258: {[-1]:Integer}, intvals: {1,}
%30 = getelementptr inbounds [2 x float], ptr %27, i32 0, i32 0, !dbg !1270: {[-1]:Pointer}, intvals: {}
%32 = getelementptr inbounds [2 x float], ptr %27, i32 0, i32 1, !dbg !1270: {[-1]:Pointer}, intvals: {}
%35 = extractvalue [2 x [3 x float]] %34, 0, 0, !dbg !1270: {}, intvals: {}
%37 = extractvalue [2 x [3 x float]] %34, 0, 1, !dbg !1270: {}, intvals: {}
%39 = extractvalue [2 x [3 x float]] %34, 0, 2, !dbg !1270: {}, intvals: {}
%41 = extractvalue [2 x [3 x float]] %34, 1, 0, !dbg !1270: {}, intvals: {}
%43 = extractvalue [2 x [3 x float]] %34, 1, 1, !dbg !1270: {}, intvals: {}
%45 = extractvalue [2 x [3 x float]] %34, 1, 2, !dbg !1270: {}, intvals: {}
%11 = getelementptr inbounds %struct.ConView, ptr %2, i32 0, i32 0, !dbg !1257: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Integer, [-1,0,1]:Integer, [-1,0,2]:Integer, [-1,0,3]:Integer, [-1,0,4]:Integer, [-1,0,5]:Integer, [-1,0,6]:Integer, [-1,0,7]:Integer}, intvals: {}
%16 = getelementptr inbounds %struct.Op, ptr %1, i32 0, i32 1, !dbg !1261: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%6 = getelementptr inbounds %struct.ConView, ptr %2, i32 0, i32 0, !dbg !1253: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Integer, [-1,0,1]:Integer, [-1,0,2]:Integer, [-1,0,3]:Integer, [-1,0,4]:Integer, [-1,0,5]:Integer, [-1,0,6]:Integer, [-1,0,7]:Integer}, intvals: {}
%38 = getelementptr inbounds [2 x [3 x float]], ptr %33, i32 0, i32 0, i32 1, !dbg !1270: {[-1]:Pointer}, intvals: {}
%36 = getelementptr inbounds [2 x [3 x float]], ptr %33, i32 0, i32 0, i32 0, !dbg !1270: {[-1]:Pointer}, intvals: {}
%42 = getelementptr inbounds [2 x [3 x float]], ptr %33, i32 0, i32 1, i32 0, !dbg !1270: {[-1]:Pointer}, intvals: {}
%28 = extractvalue %struct.c_v %26, 0, !dbg !1270: {}, intvals: {}
%33 = getelementptr inbounds %struct.c_v, ptr %4, i32 0, i32 1, !dbg !1270: {[-1]:Pointer}, intvals: {}
%34 = extractvalue %struct.c_v %26, 1, !dbg !1270: {}, intvals: {}
call void @_ZN2OpclEmff(ptr noundef nonnull align 8 dereferenceable(40) %1, i64 noundef %0, float noundef %20, float noundef %25) #142, !dbg !1272: {}, intvals: {}
%29 = extractvalue [2 x float] %28, 0, !dbg !1270: {}, intvals: {}
%31 = extractvalue [2 x float] %28, 1, !dbg !1270: {}, intvals: {}
%40 = getelementptr inbounds [2 x [3 x float]], ptr %33, i32 0, i32 0, i32 2, !dbg !1270: {[-1]:Pointer}, intvals: {}
%14 = getelementptr inbounds i32, ptr %12, i64 %13, !dbg !1259: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%15 = load i32, ptr %14, align 4, !dbg !1259: {[-1]:Integer}, intvals: {}
%17 = load ptr, ptr %16, align 8, !dbg !1261: {[-1]:Pointer}, intvals: {}
%18 = sext i32 %10 to i64, !dbg !1262: {[-1]:Integer}, intvals: {}
%19 = getelementptr inbounds float, ptr %17, i64 %18, !dbg !1262: {[-1]:Pointer, [-1,0]:Float@float}, intvals: {}
%20 = load float, ptr %19, align 4, !dbg !1262: {[-1]:Float@float}, intvals: {}
%22 = load ptr, ptr %21, align 8, !dbg !1264: {[-1]:Pointer}, intvals: {}
%23 = sext i32 %15 to i64, !dbg !1265: {[-1]:Integer}, intvals: {}
%24 = getelementptr inbounds float, ptr %22, i64 %23, !dbg !1265: {[-1]:Pointer, [-1,0]:Float@float}, intvals: {}
%25 = load float, ptr %24, align 4, !dbg !1265: {[-1]:Float@float}, intvals: {}
%21 = getelementptr inbounds %struct.Op, ptr %1, i32 0, i32 2, !dbg !1264: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%44 = getelementptr inbounds [2 x [3 x float]], ptr %33, i32 0, i32 1, i32 1, !dbg !1270: {[-1]:Pointer}, intvals: {}
i64 2: {[-1]:Integer}, intvals: {2,}
i64 0: {[-1]:Anything}, intvals: {0,}
i64 1: {[-1]:Integer}, intvals: {1,}
call void @_ZN2Op3preEm(ptr noundef nonnull align 8 dereferenceable(40) %1, i64 noundef %0) #142, !dbg !1267: {}, intvals: {}
%26 = call %struct.c_v @_ZN2Op8pre_workEm(ptr noundef nonnull align 8 dereferenceable(40) %1, i64 noundef %0) #142, !dbg !1270: {}, intvals: {}
%9 = getelementptr inbounds i32, ptr %7, i64 %8, !dbg !1255: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%27 = getelementptr inbounds %struct.c_v, ptr %4, i32 0, i32 0, !dbg !1270: {[-1]:Pointer}, intvals: {}
</analysis>
Metadata
Metadata
Assignees
Labels
No labels