packages feed

llvm-hs-pretty-0.4.0.0: tests/input/tensorflow_blocks.ll

%"struct.mystruct" = type { i32, float, float*, float* }

define i32 @main(%"struct.mystruct" *%structs) {
  %1 = add i32 5, 3
  %2 = add i32 %1, 7
  %3 = fadd float 8.0, 3.0
  %4 = fadd float %3, 9.0
  %5 = fdiv float %4, %3
  %6 = alloca i32, i32 1
  %7 = load i32, i32 *%6
  %8 = alloca float, i32 1
  store float %5, float *%8
  %9 = fcmp olt float %3, 4.0
  %10 = icmp slt i32 %2, 4
  %11 = trunc i32 %7 to i8
  %12 = fadd double 8.0, 3.0
  %13 = fptrunc double %12 to float
  %14 = fpext float %13 to double
  %15 = zext i32 %7 to i64
  %16 = sext i32 %7 to i64
  %17 = fptoui float %4 to i32
  %18 = fptosi float %4 to i32
  %19 = uitofp i32 %2 to float
  %20 = sitofp i32 %2 to float
  %21 = bitcast float *%8 to i32*
  %22 = addrspacecast float* %8 to float addrspace(1) *
  %23 = bitcast float %3 to i32
  %24 = alloca %struct.mystruct, i32 1
  %25 = load %struct.mystruct, %struct.mystruct* %24
  %26 = extractvalue %struct.mystruct %25, 0
  %27 = insertvalue %struct.mystruct %25, i32 4, 0
  %28 = insertvalue %struct.mystruct %27, float 1.5, 1
  %29 = getelementptr %struct.mystruct , %struct.mystruct *%24, i32 0, i32 0
  %30 = getelementptr %struct.mystruct , %struct.mystruct *%24, i32 0, i32 1
  %31 = icmp slt i32 %2, 4
  %32 = select i1 %31, i32 21, i32 44

  %33 = alloca i64, i32 1

  store float %3, float *%8
  store float %4, float *%8

  store i64 %15, i64 *%33
  store i64 %16, i64 *%33
  store i32 %17, i32 *%6
  store i32 %18, i32 *%6
  store float %19, float *%8
  store float %20, float *%8
;  store i32 %21, i32 *%6
 ; store i32 %22, i32 *%6
  ;store i32 %24, i32 *%6

  store %struct.mystruct %28, %struct.mystruct *%structs

  store i32 %32, i32 *%6

  ret i32 0
}

define float addrspace(1) *@someFunc(float addrspace(1) * %d1, float addrspace(1) * %v1) {
    ret float addrspace(1) *%v1
}

define void @someKernel(float addrspace(1) * %d1, float addrspace(1) * %d2) {
    %1 = alloca float addrspace(1)*, i32 1
    %2 = load float addrspace(1) *, float addrspace(1) **%1
    %3 = call float addrspace(1) * @someFunc(float addrspace(1) *%d1, float addrspace(1) *%2)
    ret void
}

@mysharedmem = internal addrspace(3) global [8 x float] zeroinitializer, align 4

define void @usesShared(float addrspace(1) *%d1) {
    %1 = getelementptr inbounds [8 x float], [8 x float]* addrspacecast ([8 x float] addrspace(3) *@mysharedmem to [8 x float]*), i32 0
    %2 = getelementptr inbounds [8 x float], [8 x float]* addrspacecast ([8 x float] addrspace(3)* @mysharedmem to [8 x float]*), i64 0, i64 0
    %3 = getelementptr inbounds [8 x float], [8 x float]* addrspacecast ([8 x float] addrspace(3)* @mysharedmem to [8 x float]*), i64 0, i64 2
    store float 4.0, float *%2
    store float 3.0, float *%3
    ret void
}

define float *@returnsPointer(float *%in) {
    ret float * %in
}

define void @usesPointerFunction(float *%in) {
    call float *@returnsPointer(float *%in)
    ret void
}

define void @llvm.dbg.value(float *%foo, i64 %i1) {
    ret void
}

define void @containsLlvmDebug(float *%d1) {
    tail call void @llvm.dbg.value(float* %d1, i64 0)
    ret void
}

define i32 @usestructs(%"struct.mystruct" *%structs) {
  %1 = alloca %struct.mystruct, i32 1
  %2 = load %struct.mystruct, %struct.mystruct* %1
  %3 = getelementptr %struct.mystruct , %struct.mystruct *%1, i32 0, i32 1
  %4 = alloca float, i32 1
  %5 = load float, float *%4
  store float %5, float *%3

  %6 = insertvalue %struct.mystruct undef, i32 45, 0
  %7 = insertvalue %struct.mystruct %6, float 3.5, 1
  store %struct.mystruct %7, %struct.mystruct *%structs

  %8 = extractvalue %struct.mystruct %7, 1
  store float %8, float *%3

  ret i32 0
}

define void @storefloat(float *%data) {
  %1 = fadd float 5.0, 3.0
  store float %1, float *%data
  ret void
}

define void @test_bitcast(i32 *%data) {
  %1 = fadd float 5.0, 3.0
  %2 = bitcast float %1 to i32
  store i32 %2, i32* %data
  ret void
}

define void @test_ieee_doubles(double *%data) {
  store double 0x43EFFE0000000000, double* %data
  %1 = getelementptr inbounds double, double* %data, i64 0
  store double 0x43DFFC0000000000, double* %1
  %2 = getelementptr inbounds double, double* %data, i64 1
  store double 0xFFF0000000000000, double* %2   ; -INFINITY
  %3 = getelementptr inbounds double, double* %data, i64 2
  store double 0x7FF0000000000000, double* %3   ; INFINITY
  %4 = getelementptr inbounds double, double* %data, i64 3
  store double 0xFFEFFFFFFFFFFFFF, double* %4   ; -INFINITY
  ret void
}

%"class.tensorflow::random::Array" = type {
  [4 x i32],
  [4 x float]
}

define void @test_randomintarray(i32 *%data) {
  %1 = alloca %"class.tensorflow::random::Array", i32 1
  %2 = load %"class.tensorflow::random::Array", %"class.tensorflow::random::Array"* %1
  %3 = extractvalue %"class.tensorflow::random::Array" %2, 0
  %4 = extractvalue [4 x i32] %3, 0
  %5 = extractvalue [4 x i32] %3, 1
  %6 = extractvalue [4 x i32] %3, 2
  %7 = add i32 %4, %5
  %8 = add i32 %7, %6
  store i32 %8, i32* %data
  ret void
}