Skip to content

Enzyme: Cannot deduce type of extract %29 = extractvalue [2 x float] %28, 0, !dbg !1270{} start: 0 size: 4 extractSize: 4 #2630

@minansys

Description

@minansys

The code is here

https://fwd.gymni.ch/Vy9f32

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>

@wsmoses

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions