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

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions