#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void printUsage(void) {
  fprintf(stderr, "daggen [options] [-o <output file>]\n"
                  "\t -n <number of tasks>\n"
                  "\t --mindata <minimum data size>\n"
                  "\t --maxdata <maximum data size>\n"
                  "\t --minalpha <minimum Amdahl's law parameter value>\n"
                  "\t --maxalpha <maximum Amdahl's law parameter value>\n");
  fprintf(stderr, "\t --fat <dag shape>\n"
                  "\t	 fat=1.0: fat (maximum parallelism)\n"
                  "\t	 fat=0.0: thin (minimum parallelism)\n"
                  "\t --density <density>\n"
                  "\t    density=0.0: minimum number of dependencies\n"
                  "\t    density=1.0: full graph\n"
                  "\t --regular <regularity for num tasks per level>\n"
                  "\t    regular= 1.0: perfectly regular\n"
                  "\t    regular= 0.0: irregular\n"
                  "\t --ccr <communication(MBytes) to computation(sec) ratio>\n"
                  "\t --jump <number of levels spanned by communications>\n"
                  "\t    jump=1: perfectly synchronized levels\n"
                  "\t --dot: output generated DAG in the DOT format\n"
                  "\n");
  return;
}


x86 assembly (clang, -O0):
<printUsage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
mov    0x2eb0(%rip),%rax
mov    (%rax),%edi
lea    0xfab(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<printUsage>:
push   %rbx
mov    0x2ec8(%rip),%rbx
mov    (%rbx),%edi
lea    0xedf(%rip),%rsi
call   1030 <fprintf@plt>
mov    (%rbx),%edi
lea    0xfb5(%rip),%rsi
pop    %rbx
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [228 x i8] c"daggen [options] [-o <output file>]\0A\09 -n <number of tasks>\0A\09 --mindata <minimum data size>\0A\09 --maxdata <maximum data size>\0A\09 --minalpha <minimum Amdahl's law parameter value>\0A\09 --maxalpha <maximum Amdahl's law parameter value>\0A\00"
@.str.1 = [517 x i8] c"\09 --fat <dag shape>\0A\09\09 fat=1.0: fat (maximum parallelism)\0A\09\09 fat=0.0: thin (minimum parallelism)\0A\09 --density <density>\0A\09 density=0.0: minimum number of dependencies\0A\09 density=1.0: full graph\0A\09 --regular <regularity for num tasks per level>\0A\09 regular= 1.0: perfectly regular\0A\09 regular= 0.0: irregular\0A\09 --ccr <communication(MBytes) to computation(sec) ratio>\0A\09 --jump <number of levels spanned by communications>\0A\09 jump=1: perfectly synchronized levels\0A\09 --dot: output generated DAG in the DOT format\0A\0A\00"
define void @printUsage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([228 x i8], [228 x i8]* @.str, i64 0, i64 0))
%3 = load i32, i32* @stderr
%4 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([517 x i8], [517 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [228 x i8] c"daggen [options] [-o <output file>]\0A\09 -n <number of tasks>\0A\09 --mindata <minimum data size>\0A\09 --maxdata <maximum data size>\0A\09 --minalpha <minimum Amdahl's law parameter value>\0A\09 --maxalpha <maximum Amdahl's law parameter value>\0A\00"
@.str.1 = [517 x i8] c"\09 --fat <dag shape>\0A\09\09 fat=1.0: fat (maximum parallelism)\0A\09\09 fat=0.0: thin (minimum parallelism)\0A\09 --density <density>\0A\09 density=0.0: minimum number of dependencies\0A\09 density=1.0: full graph\0A\09 --regular <regularity for num tasks per level>\0A\09 regular= 1.0: perfectly regular\0A\09 regular= 0.0: irregular\0A\09 --ccr <communication(MBytes) to computation(sec) ratio>\0A\09 --jump <number of levels spanned by communications>\0A\09 jump=1: perfectly synchronized levels\0A\09 --dot: output generated DAG in the DOT format\0A\0A\00"
define void @printUsage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([228 x i8], [228 x i8]* @.str, i64 0, i64 0))
%3 = load i32, i32* @stderr
%4 = tail call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([517 x i8], [517 x i8]* @.str.1, i64 0, i64 0))
ret void
}