#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*/ printf(char *, char const *);
void help_info(const char *appname) {
  printf("\n"
         "*******************************************************\n"
         "*******    Test Application for SPI driver    *********\n"
         "*******************************************************\n"
         "*    This test sends bytes of the last parameter to   *\n"
         "*    a specific SPI device. The maximum transfer      *\n"
         "*    bytes are 4096 bytes for bits per word less than *\n"
         "*    8(including 8), 2048 bytes for bits per word     *\n"
         "*    between 9 and 16, 1024 bytes for bits per word   *\n"
         "*    larger than 17(including 17). SPI writes data    *\n"
         "*    received data from the user into Tx FIFO and     *\n"
         "*    waits for the data in the Rx FIFO. Once the data *\n"
         "*    is ready in the Rx FIFO, it is read and sent to  *\n"
         "*    user. Test is considered successful if data      *\n"
         "*    received = data sent.                            *\n"
         "*                                                     *\n"
         "*    NOTE: As this test is intended to test the SPI   *\n"
         "*    device,it is always configured in loopback mode  *\n"
         "*    reasons is that it is dangerous to send ramdom   *\n"
         "*    data to SPI slave devices.                       *\n"
         "*                                                     *\n"
         "*    Options : %s                                      \n"
         "                  [-D spi_no]  [-s speed]              \n"
         "                  [-b bits_per_word]                   \n"
         "                  [-H] [-O] [-C] <value>               \n"
         "*                                                     *\n"
         "*    <spi_no> - CSPI Module number in [0, 1, 2]       *\n"
         "*    <speed> - Max transfer speed                     *\n"
         "*    <bits_per_word> - bits per word                  *\n"
         "*    -H - Phase 1 operation of clock                  *\n"
         "*    -O - Active low polarity of clock                *\n"
         "*    -C - Active high for chip select                 *\n"
         "*    <value> - Actual values to be sent               *\n"
         "*******************************************************\n"
         "\n",
         appname);
}


x86 assembly (clang, -O0):
<help_info>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xed9(%rip),%rdi
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<help_info>:
mov    %rdi,%rsi
lea    0xee6(%rip),%rdi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [1851 x i8] c"\0A*******************************************************\0A******* Test Application for SPI driver *********\0A*******************************************************\0A* This test sends bytes of the last parameter to *\0A* a specific SPI device. The maximum transfer *\0A* bytes are 4096 bytes for bits per word less than *\0A* 8(including 8), 2048 bytes for bits per word *\0A* between 9 and 16, 1024 bytes for bits per word *\0A* larger than 17(including 17). SPI writes data *\0A* received data from the user into Tx FIFO and *\0A* waits for the data in the Rx FIFO. Once the data *\0A* is ready in the Rx FIFO, it is read and sent to *\0A* user. Test is considered successful if data *\0A* received = data sent. *\0A* *\0A* NOTE: As this test is intended to test the SPI *\0A* device,it is always configured in loopback mode *\0A* reasons is that it is dangerous to send ramdom *\0A* data to SPI slave devices. *\0A* *\0A* Options : %s \0A [-D spi_no] [-s speed] \0A [-b bits_per_word] \0A [-H] [-O] [-C] <value> \0A* *\0A* <spi_no> - CSPI Module number in [0, 1, 2] *\0A* <speed> - Max transfer speed *\0A* <bits_per_word> - bits per word *\0A* -H - Phase 1 operation of clock *\0A* -O - Active low polarity of clock *\0A* -C - Active high for chip select *\0A* <value> - Actual values to be sent *\0A*******************************************************\0A\0A\00"
define void @help_info(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @printf(i8* getelementptr inbounds ([1851 x i8], [1851 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@.str = [1851 x i8] c"\0A*******************************************************\0A******* Test Application for SPI driver *********\0A*******************************************************\0A* This test sends bytes of the last parameter to *\0A* a specific SPI device. The maximum transfer *\0A* bytes are 4096 bytes for bits per word less than *\0A* 8(including 8), 2048 bytes for bits per word *\0A* between 9 and 16, 1024 bytes for bits per word *\0A* larger than 17(including 17). SPI writes data *\0A* received data from the user into Tx FIFO and *\0A* waits for the data in the Rx FIFO. Once the data *\0A* is ready in the Rx FIFO, it is read and sent to *\0A* user. Test is considered successful if data *\0A* received = data sent. *\0A* *\0A* NOTE: As this test is intended to test the SPI *\0A* device,it is always configured in loopback mode *\0A* reasons is that it is dangerous to send ramdom *\0A* data to SPI slave devices. *\0A* *\0A* Options : %s \0A [-D spi_no] [-s speed] \0A [-b bits_per_word] \0A [-H] [-O] [-C] <value> \0A* *\0A* <spi_no> - CSPI Module number in [0, 1, 2] *\0A* <speed> - Max transfer speed *\0A* <bits_per_word> - bits per word *\0A* -H - Phase 1 operation of clock *\0A* -O - Active low polarity of clock *\0A* -C - Active high for chip select *\0A* <value> - Actual values to be sent *\0A*******************************************************\0A\0A\00"
define void @help_info(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([1851 x i8], [1851 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}