Cannot deduce type of extract error for cuda code
- Dominant language
- LLVM
- Stars
- 1.7k
- Forks
- 188
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 26
Description
```
cd /home/mixu/dev/vNNN/Cromwell/Output/3d_debug && /home/mixu/software/llvm-18.1.8/llvm-project-llvmorg-18.1.8/build/bin/clang++ ... --target=x86_64-pc-linux-gnu --gcc-toolchain=/home/mixu/dev/vNNN/Cromwell/Cromwell/../Dependencies//../../FBU_Dependencies/thirdparty/compilers/gcc/linx64 -std=c++17 -stdlib=libstdc++ -Wno-deprecated-builtins -Wno-unknown-warning-option --cuda-path="/home/mixu/dev/vNNN/Cromwell/Cromwell/../Dependencies/cuda" -g -std=c++17 --cuda-path=/home/mixu/dev/vNNN/Cromwell/Dependencies/cuda -fPIC --target=x86_64-pc-linux-gnu --gcc-toolchain=/home/mixu/dev/vNNN/Cromwell/Cromwell/../Dependencies//../../FBU_Dependencies/thirdparty/compilers/gcc/linx64 -std=c++17 -stdlib=libstdc++ -Wno-deprecated-builtins -Wno-unknown-warning-option --cuda-gpu-arch=sm_86 -w -Wno-missing-template-arg-list-after-template-kw -fplugin="/home/mixu/software/Enzyme/enzyme/build-18-debug/Enzyme/ClangEnzyme.so" -mllvm -enzyme-loose-types=1 -mllvm -enzyme-coalese=1 -mllvm -enzyme-noalias=1 -mllvm -enzyme-phi-restructure=1 -x cuda -Xarch_device -g0 -MD -MT GeometryTools/CMakeFiles/Cromwell.GeometryTools.dir/src/Mesh/MeshMetrics.cxx.o -MF GeometryTools/CMakeFiles/Cromwell.GeometryTools.dir/src/Mesh/MeshMetrics.cxx.o.d -x cuda -c /home/mixu/dev/vNNN/Cromwell/Cromwell/GeometryTools/src/Mesh/MeshMetrics.cxx -o GeometryTools/CMakeFiles/Cromwell.GeometryTools.dir/src/Mesh/MeshMetrics.cxx.o
/home/mixu/dev/vNNN/Cromwell/Output/3d_debug
error: Enzyme: Cannot deduce type of extract %13 = extractvalue %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume" %5, 1{} start: 0 size: 24 extractSize: 24
%25 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 1, i32 2: {[-1]:Pointer}, intvals: {}
i64 0: {[-1]:Anything}, intvals: {0,}
i32 0: {[-1]:Anything}, intvals: {0,}
i32 1: {[-1]:Integer}, intvals: {1,}
%7 = extractvalue %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume" %5, 0: {}, intvals: {}
%12 = getelementptr inbounds %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume", ptr %4, i32 0, i32 1: {[-1]:Pointer}, intvals: {}
%13 = extractvalue %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume" %5, 1: {}, intvals: {}
%26 = icmp ugt i32 %0, 0: {[-1]:Integer}, intvals: {}
%28 = call noundef ptr @_ZNK8Cromwell10Containers10CRSMapViewIjjE7OffsetsEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #149: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
call void @_ZN8Cromwell13GeometryTools4Mesh7Metrics32CellVolumeAndCentroidOp_internal9post_workINS_8Patterns14CudaOperationsEEEvjRNS2_15centroid_volumeE(ptr noundef nonnull align 8 dereferenceable(108) %1, i32 noundef %0, ptr noundef nonnull align 4 dereferenceable(32) %4) #149: {}, intvals: {}
%4 = alloca %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume", align 4: {[-1]:Pointer}, intvals: {}
%47 = trunc i64 %45 to i32: {[-1]:Integer}, intvals: {0,}
%8 = extractvalue [2 x float] %7, 0: {}, intvals: {}
%37 = getelementptr inbounds i32, ptr %35, i64 %36: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%38 = load i32, ptr %37, align 4: {[-1]:Integer}, intvals: {}
%39 = call noundef ptr @_ZNK8Cromwell10Containers10CRSMapViewIjjE9NeighborsEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #149: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%6 = getelementptr inbounds %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume", ptr %4, i32 0, i32 0: {[-1]:Pointer}, intvals: {}
%44 = phi i32 [ %40, %33 ], [ %47, %49 ]: {[-1]:Integer}, intvals: {}
%19 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 0, i32 2: {[-1]:Pointer}, intvals: {}
%17 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 0, i32 1: {[-1]:Pointer}, intvals: {}
%11 = getelementptr inbounds [2 x float], ptr %6, i32 0, i32 1: {[-1]:Pointer}, intvals: {}
%16 = extractvalue [2 x [3 x float]] %13, 0, 1: {}, intvals: {}
%18 = extractvalue [2 x [3 x float]] %13, 0, 2: {}, intvals: {}
%20 = extractvalue [2 x [3 x float]] %13, 1, 0: {}, intvals: {}
%22 = extractvalue [2 x [3 x float]] %13, 1, 1: {}, intvals: {}
%24 = extractvalue [2 x [3 x float]] %13, 1, 2: {}, intvals: {}
%46 = add nuw nsw i64 %43, 1: {[-1]:Integer}, intvals: {1,}
%43 = phi i64 [ %46, %49 ], [ 0, %33 ]: {[-1]:Integer}, intvals: {0,}
%21 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 1, i32 0: {[-1]:Pointer}, intvals: {}
%15 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 0, i32 0: {[-1]:Pointer}, intvals: {}
i64 1: {[-1]:Integer}, intvals: {1,}
%23 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 1, i32 1: {[-1]:Pointer}, intvals: {}
%10 = extractvalue [2 x float] %7, 1: {}, intvals: {}
%14 = extractvalue [2 x [3 x float]] %13, 0, 0: {}, intvals: {}
%30 = zext i32 %29 to i64: {[-1]:Integer}, intvals: {-1,}
%36 = zext i32 %0 to i64: {[-1]:Integer}, intvals: {0,}
%51 = zext i32 %44 to i64: {[-1]:Integer}, intvals: {}
i32 %0: {[-1]:Integer}, intvals: {0,}
ptr %1: {[-1]:Pointer, [-1,0]:Pointer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,16]:Pointer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,32]:Pointer, [-1,32,0]:Float@float, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,56]:Integer, [-1,57]:Integer, [-1,58]:Integer, [-1,59]:Integer, [-1,72]:Integer, [-1,73]:Integer, [-1,74]:Integer, [-1,75]:Integer, [-1,76]:Integer, [-1,77]:Integer, [-1,78]:Integer, [-1,79]:Integer, [-1,80]:Pointer, [-1,88]:Integer, [-1,89]:Integer, [-1,90]:Integer, [-1,91]:Integer, [-1,92]:Integer, [-1,93]:Integer, [-1,94]:Integer, [-1,95]:Integer, [-1,96]:Integer, [-1,97]:Integer, [-1,98]:Integer, [-1,99]:Integer, [-1,100]:Integer, [-1,101]:Integer, [-1,102]:Integer, [-1,103]:Integer, [-1,104]:Integer, [-1,105]:Integer, [-1,106]:Integer, [-1,107]:Integer}, intvals: {}
ptr %2: {[-1]:Pointer, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,16]:Pointer, [-1,16,0]:Integer, [-1,16,1]:Integer, [-1,16,2]:Integer, [-1,16,3]:Integer}, intvals: {}
%56 = getelementptr inbounds i32, ptr %54, i64 %55: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%57 = load i32, ptr %56, align 4: {[-1]:Integer}, intvals: {}
%41 = zext i32 %34 to i64: {[-1]:Integer}, intvals: {0,}
%58 = add i32 %47, 1: {[-1]:Integer}, intvals: {1,}
%9 = getelementptr inbounds [2 x float], ptr %6, i32 0, i32 0: {[-1]:Pointer}, intvals: {}
%29 = sub i32 %0, 1: {[-1]:Integer}, intvals: {-1,}
%31 = getelementptr inbounds i32, ptr %28, i64 %30: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%32 = load i32, ptr %31, align 4: {[-1]:Integer}, intvals: {}
%34 = phi i32 [ %32, %27 ], [ 0, %3 ]: {[-1]:Integer}, intvals: {0,}
%35 = call noundef ptr @_ZNK8Cromwell10Containers10CRSMapViewIjjE7OffsetsEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #149: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%5 = call %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume" @_ZN8Cromwell13GeometryTools4Mesh7Metrics32CellVolumeAndCentroidOp_internal8pre_workEj(ptr noundef nonnull align 8 dereferenceable(108) %1, i32 noundef %0) #149: {}, intvals: {}
%50 = call noundef ptr @_ZNK8Cromwell10Containers10CRSMapViewIjjE9NeighborsEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #149: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%52 = getelementptr inbounds i32, ptr %50, i64 %51: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%53 = load i32, ptr %52, align 4: {[-1]:Integer}, intvals: {}
%54 = call noundef ptr @_ZNK8Cromwell10Containers10CRSMapViewIjjE9NeighborsEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #149: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%55 = zext i32 %47 to i64: {[-1]:Integer}, intvals: {0,}
%40 = sub i32 %38, 1: {[-1]:Integer}, intvals: {}
%45 = add i64 %41, %43: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer}, intvals: {0,}
%48 = icmp ult i32 %47, %38: {[-1]:Integer}, intvals: {}
call void @_ZN8Cromwell13GeometryTools4Mesh7Metrics32CellVolumeAndCentroidOp_internalclEjjjRNS2_15centroid_volumeE(ptr noundef nonnull align 8 dereferenceable(108) %1, i32 noundef %0, i32 noundef %53, i32 noundef %57, ptr noundef nonnull align 4 dereferenceable(32) %4) #149: {}, intvals: {}
error: Enzyme: Cannot deduce type of extract %7 = extractvalue %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume" %5, 0{} start: 0 size: 8 extractSize: 8
%25 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 1, i32 2: {[-1]:Pointer}, intvals: {}
i64 0: {[-1]:Anything}, intvals: {0,}
i32 0: {[-1]:Anything}, intvals: {0,}
i32 1: {[-1]:Integer}, intvals: {1,}
%7 = extractvalue %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume" %5, 0: {}, intvals: {}
%12 = getelementptr inbounds %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume", ptr %4, i32 0, i32 1: {[-1]:Pointer}, intvals: {}
%13 = extractvalue %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume" %5, 1: {}, intvals: {}
%26 = icmp ugt i32 %0, 0: {[-1]:Integer}, intvals: {}
%28 = call noundef ptr @_ZNK8Cromwell10Containers10CRSMapViewIjjE7OffsetsEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #149: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
call void @_ZN8Cromwell13GeometryTools4Mesh7Metrics32CellVolumeAndCentroidOp_internal9post_workINS_8Patterns14CudaOperationsEEEvjRNS2_15centroid_volumeE(ptr noundef nonnull align 8 dereferenceable(108) %1, i32 noundef %0, ptr noundef nonnull align 4 dereferenceable(32) %4) #149: {}, intvals: {}
%4 = alloca %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume", align 4: {[-1]:Pointer}, intvals: {}
%47 = trunc i64 %45 to i32: {[-1]:Integer}, intvals: {0,}
%8 = extractvalue [2 x float] %7, 0: {}, intvals: {}
%37 = getelementptr inbounds i32, ptr %35, i64 %36: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%38 = load i32, ptr %37, align 4: {[-1]:Integer}, intvals: {}
%39 = call noundef ptr @_ZNK8Cromwell10Containers10CRSMapViewIjjE9NeighborsEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #149: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%6 = getelementptr inbounds %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume", ptr %4, i32 0, i32 0: {[-1]:Pointer}, intvals: {}
%44 = phi i32 [ %40, %33 ], [ %47, %49 ]: {[-1]:Integer}, intvals: {}
%19 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 0, i32 2: {[-1]:Pointer}, intvals: {}
%17 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 0, i32 1: {[-1]:Pointer}, intvals: {}
%11 = getelementptr inbounds [2 x float], ptr %6, i32 0, i32 1: {[-1]:Pointer}, intvals: {}
%16 = extractvalue [2 x [3 x float]] %13, 0, 1: {}, intvals: {}
%18 = extractvalue [2 x [3 x float]] %13, 0, 2: {}, intvals: {}
%20 = extractvalue [2 x [3 x float]] %13, 1, 0: {}, intvals: {}
%22 = extractvalue [2 x [3 x float]] %13, 1, 1: {}, intvals: {}
%24 = extractvalue [2 x [3 x float]] %13, 1, 2: {}, intvals: {}
%46 = add nuw nsw i64 %43, 1: {[-1]:Integer}, intvals: {1,}
%43 = phi i64 [ %46, %49 ], [ 0, %33 ]: {[-1]:Integer}, intvals: {0,}
%21 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 1, i32 0: {[-1]:Pointer}, intvals: {}
%15 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 0, i32 0: {[-1]:Pointer}, intvals: {}
i64 1: {[-1]:Integer}, intvals: {1,}
%23 = getelementptr inbounds [2 x [3 x float]], ptr %12, i32 0, i32 1, i32 1: {[-1]:Pointer}, intvals: {}
%10 = extractvalue [2 x float] %7, 1: {}, intvals: {}
%14 = extractvalue [2 x [3 x float]] %13, 0, 0: {}, intvals: {}
%30 = zext i32 %29 to i64: {[-1]:Integer}, intvals: {-1,}
%36 = zext i32 %0 to i64: {[-1]:Integer}, intvals: {0,}
%51 = zext i32 %44 to i64: {[-1]:Integer}, intvals: {}
i32 %0: {[-1]:Integer}, intvals: {0,}
ptr %1: {[-1]:Pointer, [-1,0]:Pointer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,16]:Pointer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,32]:Pointer, [-1,32,0]:Float@float, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,56]:Integer, [-1,57]:Integer, [-1,58]:Integer, [-1,59]:Integer, [-1,72]:Integer, [-1,73]:Integer, [-1,74]:Integer, [-1,75]:Integer, [-1,76]:Integer, [-1,77]:Integer, [-1,78]:Integer, [-1,79]:Integer, [-1,80]:Pointer, [-1,88]:Integer, [-1,89]:Integer, [-1,90]:Integer, [-1,91]:Integer, [-1,92]:Integer, [-1,93]:Integer, [-1,94]:Integer, [-1,95]:Integer, [-1,96]:Integer, [-1,97]:Integer, [-1,98]:Integer, [-1,99]:Integer, [-1,100]:Integer, [-1,101]:Integer, [-1,102]:Integer, [-1,103]:Integer, [-1,104]:Integer, [-1,105]:Integer, [-1,106]:Integer, [-1,107]:Integer}, intvals: {}
ptr %2: {[-1]:Pointer, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,16]:Pointer, [-1,16,0]:Integer, [-1,16,1]:Integer, [-1,16,2]:Integer, [-1,16,3]:Integer}, intvals: {}
%56 = getelementptr inbounds i32, ptr %54, i64 %55: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%57 = load i32, ptr %56, align 4: {[-1]:Integer}, intvals: {}
%41 = zext i32 %34 to i64: {[-1]:Integer}, intvals: {0,}
%58 = add i32 %47, 1: {[-1]:Integer}, intvals: {1,}
%9 = getelementptr inbounds [2 x float], ptr %6, i32 0, i32 0: {[-1]:Pointer}, intvals: {}
%29 = sub i32 %0, 1: {[-1]:Integer}, intvals: {-1,}
%31 = getelementptr inbounds i32, ptr %28, i64 %30: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%32 = load i32, ptr %31, align 4: {[-1]:Integer}, intvals: {}
%34 = phi i32 [ %32, %27 ], [ 0, %3 ]: {[-1]:Integer}, intvals: {0,}
%35 = call noundef ptr @_ZNK8Cromwell10Containers10CRSMapViewIjjE7OffsetsEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #149: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%5 = call %"struct.Cromwell::GeometryTools::Mesh::Metrics::centroid_volume" @_ZN8Cromwell13GeometryTools4Mesh7Metrics32CellVolumeAndCentroidOp_internal8pre_workEj(ptr noundef nonnull align 8 dereferenceable(108) %1, i32 noundef %0) #149: {}, intvals: {}
%50 = call noundef ptr @_ZNK8Cromwell10Containers10CRSMapViewIjjE9NeighborsEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #149: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%52 = getelementptr inbounds i32, ptr %50, i64 %51: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%53 = load i32, ptr %52, align 4: {[-1]:Integer}, intvals: {}
%54 = call noundef ptr @_ZNK8Cromwell10Containers10CRSMapViewIjjE9NeighborsEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #149: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer}, intvals: {}
%55 = zext i32 %47 to i64: {[-1]:Integer}, intvals: {0,}
%40 = sub i32 %38, 1: {[-1]:Integer}, intvals: {}
%45 = add i64 %41, %43: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer}, intvals: {0,}
%48 = icmp ult i32 %47, %38: {[-1]:Integer}, intvals: {}
call void @_ZN8Cromwell13GeometryTools4Mesh7Metrics32CellVolumeAndCentroidOp_internalclEjjjRNS2_15centroid_volumeE(ptr noundef nonnull align 8 dereferenceable(108) %1, i32 noundef %0, i32 noundef %53, i32 noundef %57, ptr noundef nonnull align 4 dereferenceable(32) %4) #149: {}, intvals: {}
2 errors generated when compiling for sm_86.
```
Contributor guide
Assessment
This issue has not been assessed yet.