#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*/ abort();
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void usage(void) {
  fprintf(
      stderr,
      "Usage: looptest TEST SIZE ITERATIONS PATH\n\n"
      "  Run TEST for a number of ITERATIONS with operation data SIZE bytes\n"
      "  TEST may be \'ping\' \'transfer\' or \'sink\'\n"
      "  SIZE indicates the size of transfer <= greybus max payload bytes\n"
      "  ITERATIONS indicates the number of times to execute TEST at SIZE "
      "bytes\n"
      "             Note if ITERATIONS is set to zero then this utility will\n"
      "             initiate an infinite (non terminating) test and exit\n"
      "             without logging any metrics data\n"
      "  SYSPATH indicates the sysfs path for the loopback greybus entries "
      "e.g.\n"
      "          /sys/bus/greybus/devices\n"
      "  DBGPATH indicates the debugfs path for the loopback greybus entries "
      "e.g.\n"
      "          /sys/kernel/debug/gb_loopback/\n"
      "Examples:\n"
      "  looptest transfer 128 10000 /sys/bus/greybus/devices/ "
      "/sys/kernel/debug/gb_loopback/\n"
      "  looptest ping 0 128 /sys/bus/greybus/devices/ "
      "/sys/kernel/debug/gb_loopback/\n"
      "  looptest sink 2030 32768 /sys/bus/greybus/devices/ "
      "/sys/kernel/debug/gb_loopback/\n");
  abort();
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
call   1040 <fprintf@plt>
mov    $0x0,%al
call   1030 <abort@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%edi
lea    0xecf(%rip),%rsi
call   1040 <fprintf@plt>
xor    %eax,%eax
call   1030 <abort@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [961 x i8] c"Usage: looptest TEST SIZE ITERATIONS PATH\0A\0A Run TEST for a number of ITERATIONS with operation data SIZE bytes\0A TEST may be 'ping' 'transfer' or 'sink'\0A SIZE indicates the size of transfer <= greybus max payload bytes\0A ITERATIONS indicates the number of times to execute TEST at SIZE bytes\0A Note if ITERATIONS is set to zero then this utility will\0A initiate an infinite (non terminating) test and exit\0A without logging any metrics data\0A SYSPATH indicates the sysfs path for the loopback greybus entries e.g.\0A /sys/bus/greybus/devices\0A DBGPATH indicates the debugfs path for the loopback greybus entries e.g.\0A /sys/kernel/debug/gb_loopback/\0AExamples:\0A looptest transfer 128 10000 /sys/bus/greybus/devices/ /sys/kernel/debug/gb_loopback/\0A looptest ping 0 128 /sys/bus/greybus/devices/ /sys/kernel/debug/gb_loopback/\0A looptest sink 2030 32768 /sys/bus/greybus/devices/ /sys/kernel/debug/gb_loopback/\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([961 x i8], [961 x i8]* @.str, i64 0, i64 0))
%3 = call i32 (...) @abort()
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [961 x i8] c"Usage: looptest TEST SIZE ITERATIONS PATH\0A\0A Run TEST for a number of ITERATIONS with operation data SIZE bytes\0A TEST may be 'ping' 'transfer' or 'sink'\0A SIZE indicates the size of transfer <= greybus max payload bytes\0A ITERATIONS indicates the number of times to execute TEST at SIZE bytes\0A Note if ITERATIONS is set to zero then this utility will\0A initiate an infinite (non terminating) test and exit\0A without logging any metrics data\0A SYSPATH indicates the sysfs path for the loopback greybus entries e.g.\0A /sys/bus/greybus/devices\0A DBGPATH indicates the debugfs path for the loopback greybus entries e.g.\0A /sys/kernel/debug/gb_loopback/\0AExamples:\0A looptest transfer 128 10000 /sys/bus/greybus/devices/ /sys/kernel/debug/gb_loopback/\0A looptest ping 0 128 /sys/bus/greybus/devices/ /sys/kernel/debug/gb_loopback/\0A looptest sink 2030 32768 /sys/bus/greybus/devices/ /sys/kernel/debug/gb_loopback/\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([961 x i8], [961 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 (...) @abort()
unreachable
}