That picked them up:
Code: Select all
bash-3.2$ ./xcc1llvm
Usage: xcc1llvm [options] <file>
OPTIONS:
  --help                    Display available options
  --version                 Display the version of the compiler
  -analysis <file>          Optimize using the whole program analysis
  -dD                       Print macro definitions in -E mode in addition to normal output
  -dM                       Print macro definitions in -E mode only
  -D<macro>[=<val>]         Define a <macro> with <val> as its value.  If just <macro> is given, <val> is taken to be 1
  -emit-llvm                Output LLVM IR instead of assembly
  -emit-llvm-bc             Output LLVM bitcode instead of assembly
  -E                        Only run the preprocessor
          (-f<option> may be disabled using -fno-<option>)
  -falways-inline           Always inline functions declared with the inline specifier
  -fglobalresource-directives
                            Emit .globalresource directives [enabled]
  -fimplicit-overlay        Treat every function as an overlay root
  -finline-functions        Inline simple functions into their callers
  -foverlay                 Place functions marked with the overlay attribute in overlays
  -fresource-checks         Trap at run-time when resource allocation fails
  -fshow-used-clocks        Show clock usage
  -fsubword-select          Allow selecting on sub-word streaming channel inputs [enabled]
  -fsyntax-only             Check for syntax errors, then stop
  -ftrap-info               Output trap information [enabled]
  -funroll-loops            Perform automatic loop unrolling
  -fverbose-asm             Add extra commentary to assembler output
  -fxta-info                Generate timing information [enabled]
  -fverify                  Verify llvm-IR
  -g[<opt>]                 Generate debug information in DWARF format
  -isystem <directory>      Add directory to SYSTEM include search path
  -I <directory>            Add directory to include search path
  -march=[xs1b|xs2a]        Set the target architecture of compilation [xs1b]
  -mcmodel=[default|small|large]
                            Set the code model [default]
  -m[no-]dual-issue         Disable/enable dual-issue instruction scheduling
  -mllvm <option>           Pass <option> to the LLVM backend
  -mtimer-abi=[swtimers|hwtimers]
                            Set the swtimers/hwtimer abi
  -MD                       Generate make dependencies and compile
  -MF <file>                Write dependency output to the given file
  -MMD                      Like -MD but ignore system header files
  -MP                       Generate phony targets for headers
  -MT <target>              Set target of rule in dependency output
  -o <file>                 Place output into <file>
  -O<number>                Set optimization level to <number>
  -Os                       Optimize for space rather than speed
  -pre-compilation-analysis Output analysis information about file
  -P                        Disable linemarker output in -E mode
  -taskgraph                Output taskgraph information about file
  -trigraphs                Process trigraph sequences
  -U<macro>                 Undefine <macro>
  -version                  Display the version of the compiler
  -w                        Suppress warnings
          (-W<option> may be disabled using -Wno-<option>)
  -Wall                     Turn on all warnings (see -Wuseful)
  -Wbidirectional-buffered-port
                            Warn about the use of bidirectional buffered ports [enabled]
  -Wcast-align              Warn when a reinterpret cast moves to a larger alignment [enabled]
  -Wchar-subscripts         Warn about subscripts whose type is "char"
  -Wcomment                 Warn about suspicious comment symbols
  -Wconversion              Warn when a negative integer constant is implicitly converted to an unsigned type
  -Wdiv-by-zero             Warn about compile-time integer division by zero [enabled]
  -Werror                   Treat all warnings as errors
  -Werror=<option>          Treat -W<option> as an error
  -Wextra                   Print extra (possibly unwanted) warnings
  -Wfloat-equal             Warn if floating point values are used in equality comparisons
  -Wimplicit                Warn about implicit declarations
  -Wimplicit-int            Warn when a declaration does not specify a type
  -Wlarger-than-<number>    Warn if an object is larger than <number> bytes
  -Wmain                    Warn about suspicious declarations of "main"
  -Wmissing-braces          Warn about initializers which are not fully bracketed
  -Wpadded                  Warn when padding is required to align structure members
  -Wparentheses             Warn if parentheses are omitted in certain contexts
  -Wptr-conv                Warn when implicit pointer casts [enabled]
  -Wredundant-decls         Warn about multiple declarations of the same object
  -Wreinterpret-alignment   Warn when a reinterpret cast moves to a larger alignment
  -Wreturn-type             Warn about a non-void function not returning a value
  -Wshadow                  Warn when one local variable shadows another
  -Wsign-compare            Warn about signed-unsigned comparisons
  -Wswitch-default          Warn about enumerated switches missing a "default:" statement
  -Wswitch-fallthrough      Warn when a switch case does not end with a break [enabled]
  -Wsystem-headers          Do not suppress warnings from system headers
  -Wundef                   Warn when undefined macros in conditionals
  -Wunknown-pragmas         Warn when an unknown pragma is encountered
  -Wunused                  Enable all -Wunused- warnings
  -Wunused-function         Warn when a function is unused
  -Wunused-parameter        Warn when a function parameter is unused
  -Wunused-variable         Warn when a variable is unused
  -Wunusual-code            Warn about unusual code
  -Wuseful                  Turn on useful warnings
  @<file>                   Inserts the contents of <file> into the argument list at this postion
For bug reporting instructions, please see:
http://www.xmos.com/support
Then this:
Code: Select all
bash-3.2$ ls -al
total 138096
drwxr-xr-x@  9 teig  admin       306 Sep 30 18:49 .
drwxr-xr-x@ 22 teig  admin       748 Oct 29 11:42 ..
-rwxr-xr-x@  1 teig  admin  26957984 Sep 30 18:49 xcc1llvm
-rwxr-xr-x@  1 teig  admin  33655136 Sep 30 18:49 xcc2clang
-rwxr-xr-x@  1 teig  admin   9440168 Sep 30 18:49 xllc
-rwxr-xr-x@  1 teig  admin     36832 Sep 30 18:49 xmos_check_module_version
-rwxr-xr-x@  1 teig  admin    249464 Sep 30 18:49 xpca
-rwxr-xr-x@  1 teig  admin    209988 Sep 30 18:49 xpcaobj
-rwxr-xr-x@  1 teig  admin    143660 Sep 30 18:49 xpp
bash-3.2$
And them finally I got (with ./xcc1llvm to run it):
Code: Select all
bash-3.2$ ./xcc1llvm -dM  -E /dev/null -march=xs2a
#define _ILP32 1
#define __ATOMIC_ACQUIRE 2
#define __ATOMIC_ACQ_REL 4
#define __ATOMIC_CONSUME 1
#define __ATOMIC_RELAXED 0
#define __ATOMIC_RELEASE 3
#define __ATOMIC_SEQ_CST 5
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __CHAR16_TYPE__ unsigned short
#define __CHAR32_TYPE__ unsigned int
#define __CHAR_BIT__ 8
#define __CHAR_UNSIGNED__ 1
#define __CONSTANT_CFSTRINGS__ 1
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __DBL_DIG__ 15
#define __DBL_EPSILON__ 2.2204460492503131e-16
#define __DBL_HAS_DENORM__ 1
#define __DBL_HAS_INFINITY__ 1
#define __DBL_HAS_QUIET_NAN__ 1
#define __DBL_MANT_DIG__ 53
#define __DBL_MAX_10_EXP__ 308
#define __DBL_MAX_EXP__ 1024
#define __DBL_MAX__ 1.7976931348623157e+308
#define __DBL_MIN_10_EXP__ (-307)
#define __DBL_MIN_EXP__ (-1021)
#define __DBL_MIN__ 2.2250738585072014e-308
#define __DECIMAL_DIG__ 17
#define __FINITE_MATH_ONLY__ 0
#define __FLT_DENORM_MIN__ 1.40129846e-45F
#define __FLT_DIG__ 6
#define __FLT_EPSILON__ 1.19209290e-7F
#define __FLT_EVAL_METHOD__ 0
#define __FLT_HAS_DENORM__ 1
#define __FLT_HAS_INFINITY__ 1
#define __FLT_HAS_QUIET_NAN__ 1
#define __FLT_MANT_DIG__ 24
#define __FLT_MAX_10_EXP__ 38
#define __FLT_MAX_EXP__ 128
#define __FLT_MAX__ 3.40282347e+38F
#define __FLT_MIN_10_EXP__ (-37)
#define __FLT_MIN_EXP__ (-125)
#define __FLT_MIN__ 1.17549435e-38F
#define __FLT_RADIX__ 2
#define __ILP32__ 1
#define __INT16_C_SUFFIX__ 
#define __INT16_FMTd__ "hd"
#define __INT16_FMTi__ "hi"
#define __INT16_TYPE__ short
#define __INT32_C_SUFFIX__ 
#define __INT32_FMTd__ "d"
#define __INT32_FMTi__ "i"
#define __INT32_TYPE__ int
#define __INT64_C_SUFFIX__ LL
#define __INT64_FMTd__ "lld"
#define __INT64_FMTi__ "lli"
#define __INT64_TYPE__ long long int
#define __INT8_C_SUFFIX__ 
#define __INT8_FMTd__ "hhd"
#define __INT8_FMTi__ "hhi"
#define __INT8_TYPE__ signed char
#define __INTMAX_C_SUFFIX__ LL
#define __INTMAX_FMTd__ "lld"
#define __INTMAX_FMTi__ "lli"
#define __INTMAX_MAX__ 9223372036854775807LL
#define __INTMAX_TYPE__ long long int
#define __INTMAX_WIDTH__ 64
#define __INTPTR_FMTd__ "d"
#define __INTPTR_FMTi__ "i"
#define __INTPTR_TYPE__ int
#define __INTPTR_WIDTH__ 32
#define __INT_MAX__ 2147483647
#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
#define __LDBL_DIG__ 15
#define __LDBL_EPSILON__ 2.2204460492503131e-16L
#define __LDBL_HAS_DENORM__ 1
#define __LDBL_HAS_INFINITY__ 1
#define __LDBL_HAS_QUIET_NAN__ 1
#define __LDBL_MANT_DIG__ 53
#define __LDBL_MAX_10_EXP__ 308
#define __LDBL_MAX_EXP__ 1024
#define __LDBL_MAX__ 1.7976931348623157e+308L
#define __LDBL_MIN_10_EXP__ (-307)
#define __LDBL_MIN_EXP__ (-1021)
#define __LDBL_MIN__ 2.2250738585072014e-308L
#define __LITTLE_ENDIAN__ 1
#define __LONG_LONG_MAX__ 9223372036854775807LL
#define __LONG_MAX__ 2147483647L
#define __ORDER_BIG_ENDIAN__ 4321
#define __ORDER_LITTLE_ENDIAN__ 1234
#define __ORDER_PDP_ENDIAN__ 3412
#define __POINTER_WIDTH__ 32
#define __PRAGMA_REDEFINE_EXTNAME 1
#define __PTRDIFF_FMTd__ "d"
#define __PTRDIFF_FMTi__ "i"
#define __PTRDIFF_TYPE__ int
#define __PTRDIFF_WIDTH__ 32
#define __SCHAR_MAX__ 127
#define __SHRT_MAX__ 32767
#define __SIG_ATOMIC_MAX__ 2147483647
#define __SIG_ATOMIC_WIDTH__ 32
#define __SIZEOF_DOUBLE__ 8
#define __SIZEOF_FLOAT__ 4
#define __SIZEOF_INT__ 4
#define __SIZEOF_LONG_DOUBLE__ 8
#define __SIZEOF_LONG_LONG__ 8
#define __SIZEOF_LONG__ 4
#define __SIZEOF_POINTER__ 4
#define __SIZEOF_PTRDIFF_T__ 4
#define __SIZEOF_SHORT__ 2
#define __SIZEOF_SIZE_T__ 4
#define __SIZEOF_WCHAR_T__ 1
#define __SIZEOF_WINT_T__ 4
#define __SIZE_FMTX__ "X"
#define __SIZE_FMTo__ "o"
#define __SIZE_FMTu__ "u"
#define __SIZE_FMTx__ "x"
#define __SIZE_MAX__ 4294967295U
#define __SIZE_TYPE__ unsigned int
#define __SIZE_WIDTH__ 32
#define __STDC_HOSTED__ 1
#define __STDC_UTF_16__ 1
#define __STDC_UTF_32__ 1
#define __UINTMAX_C_SUFFIX__ ULL
#define __UINTMAX_FMTX__ "llX"
#define __UINTMAX_FMTo__ "llo"
#define __UINTMAX_FMTu__ "llu"
#define __UINTMAX_FMTx__ "llx"
#define __UINTMAX_TYPE__ long long unsigned int
#define __USER_LABEL_PREFIX__ _
#define __VERSION__ "4.2.1 Compatible XMOS-25550-Sep-30-2017 Clang 3.6.0 "
#define __WCHAR_MAX__ 255
#define __WCHAR_TYPE__ unsigned char
#define __WCHAR_UNSIGNED__ 1
#define __WCHAR_WIDTH__ 8
#define __WINT_TYPE__ unsigned int
#define __WINT_UNSIGNED__ 1
#define __WINT_WIDTH__ 32
#define __XC__ 1
#define __XS2A__ 1
#define __llvm__ 1
#define __xcore__ 1
I tried several -march:
Code: Select all
-march=xs2a shows __XS2A__
-march=xs1b shows __XS1B__
bash-3.2$ ./xcc1llvm -dM  -E /dev/null -march=xs1_l
error: xcc1llvm: Unknown target architecture `xs1_l'
bash-3.2$ ./xcc1llvm -dM  -E /dev/null -march=xs1
error: xcc1llvm: Unknown target architecture `xs1l'
So what are the possible -march parameters? And which architectures do they match?