// File: /workspace/github_c_makefile_star2_O0/vsee[P]openCLFeatureExtract/oclFeatureExt.cpp
// Function: operator<<(llvm::raw_ostream&, FeatureStats const&)
raw_ostream &operator<<(raw_ostream &os, const FeatureStats &stats)
    {
        os << "\n###############################\n";
        os << "#Functions: " << stats.funcount << "\n";
        os << "#Basic Blocks: " << stats.bbcount << "\n";

        os << "\n#Bin Ops: " << stats.binOpsCount << "\n";
        os << "#Bit Bin Ops: " << stats.bitbinOpsCount << "\n";
        os << "#Vec Ops: " << stats.vecOpsCount << "\n";
        os << "#Agg Ops: " << stats.aggOpsCount << "\n";
        os << "#Load Ops: " << stats.loadOpsCount << "\n";
        os << "#Store Ops: " << stats.storeOpsCount << "\n";
        os << "#Other Ops: " << stats.otherOpsCount << "\n";
        
        os << "\n#Global Mem Access: " << stats.globalMemAcc << "\n";
        os << "#Local Mem Access: " << stats.localMemAcc << "\n";
        os << "#Private Mem Access: " << stats.privateMemAcc << "\n";
        os << "-------------------------------------------\n";
        os << "#Total Ops: " << stats.getTotalOpsCount();
        
        return os;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x5bc6(%rip), %rsi      # 0xc2c1
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5bd8(%rip), %rsi      # 0xc2e3
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x5a53(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5bb7(%rip), %rsi      # 0xc2f0
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl (%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x5a26(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5b9a(%rip), %rsi      # 0xc300
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x59f8(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5b78(%rip), %rsi      # 0xc30c
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0xc(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x59ca(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5b59(%rip), %rsi      # 0xc31b
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x10(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x599c(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5b36(%rip), %rsi      # 0xc326
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x14(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x596e(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5b13(%rip), %rsi      # 0xc331
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x5940(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5af1(%rip), %rsi      # 0xc33d
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x1c(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x5912(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5ad0(%rip), %rsi      # 0xc34a
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x20(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x58e4(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5aaf(%rip), %rsi      # 0xc357
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x24(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x58b6(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5a97(%rip), %rsi      # 0xc36d
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x28(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x5888(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5a7d(%rip), %rsi      # 0xc381
callq 0x60a0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x2c(%rax), %esi
callq 0x8a40
movq %rax, %rdi
leaq 0x585a(%rip), %rsi      # 0xc17c
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5a65(%rip), %rsi      # 0xc397
callq 0x60a0
movq -0x8(%rbp), %rdi
leaq 0x5a82(%rip), %rsi      # 0xc3c4
callq 0x60a0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6c20
movq -0x18(%rbp), %rdi
movl %eax, %esi
callq 0x8a40
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)