diff --git a/llvm/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td b/llvm/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td index 5e6f6cb1389a..717e95e92ab0 100644 --- a/llvm/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td +++ b/llvm/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td @@ -19,6 +19,8 @@ def OptionList : OptionList<[ (help "Stop after b-code generation, do not compile")), (switch_option "c", (help "Stop after assemble, do not link")), + (prefix_option "p", + (help "Specify part name")), (prefix_list_option "I", (help "Add a directory to include path")), (prefix_list_option "L", @@ -33,22 +35,27 @@ def OptionList : OptionList<[ (help "Generate linker map file with the given name")), (prefix_list_option "D", (help "Define a macro")), + (switch_option "X", + (help "Do not invoke mp2hex to create an output hex file.")), (switch_option "O0", (help "Do not optimize")), -// (switch_option "O1", -// (help "Optimization level 1")), -// (switch_option "O2", -// (help "Optimization level 2. (Default)")), -// (parameter_option "pre-RA-sched", -// (help "Example of an option that is passed to llc")), - (prefix_list_option "Wa,", (comma_separated), - (help "Pass options to native assembler")), - (prefix_list_option "Wl,", (comma_separated), - (help "Pass options to native linker")) -// (prefix_list_option "Wllc,", -// (help "Pass options to llc")), -// (prefix_list_option "Wo,", -// (help "Pass options to llvm-ld")) + (switch_option "O1", + (help "Optimization Level 1.")), + (switch_option "O2", + (help "Optimization Level 2.")), + (switch_option "O3", + (help "Optimization Level 3.")), + (switch_option "Od", + (help "Perform Debug-safe Optimizations only.")), + (switch_option "r", + (help "Use resource file for part info"), + (really_hidden)), + (parameter_option "regalloc", + (help "Register allocator to use.(possible values: simple, linearscan, pbqp, local. default = pbqp)")), + (prefix_list_option "Wa,", + (help "Pass options to assembler (Run 'gpasm -help' for assembler options)")), + (prefix_list_option "Wl,", + (help "Pass options to linker (Run 'mplink -help' for linker options)")) ]>; // Tools @@ -58,34 +65,27 @@ class clang_based : Tool< (output_suffix "bc"), (cmd_line (case (switch_on "E"), - (case + (case (not_empty "o"), !strconcat(cmd, " -E $INFILE -o $OUTFILE"), (default), !strconcat(cmd, " -E $INFILE")), (default), !strconcat(cmd, " $INFILE -o $OUTFILE"))), - (actions (case + (actions (case (and (multiple_input_files), (or (switch_on "S"), (switch_on "c"))), (error "cannot specify -o with -c or -S with multiple files"), (switch_on "E"), [(stop_compilation), (output_suffix ext_E)], (switch_on "bc"),[(stop_compilation), (output_suffix "bc")], (switch_on "g"), (append_cmd "-g"), + (switch_on "O1"), (append_cmd ""), + (switch_on "O2"), (append_cmd ""), + (switch_on "O3"), (append_cmd ""), + (switch_on "Od"), (append_cmd ""), (not_empty "D"), (forward "D"), - (not_empty "I"), (forward "I"))), - (sink) + (not_empty "I"), (forward "I"), + (switch_on "O0"), (append_cmd "-O0"), + (default), (append_cmd "-O1"))) ]>; -def clang_cc : clang_based<"c", "$CALL(GetBinDir)clang-cc -I $CALL(GetStdHeadersDir) -triple=pic16- -emit-llvm-bc ", "i">; - -//def clang_cc : Tool<[ -// (in_language "c"), -// (out_language "llvm-bitcode"), -// (output_suffix "bc"), -// (cmd_line "$CALL(GetBinDir)clang-cc -I $CALL(GetStdHeadersDir) -triple=pic16- -emit-llvm-bc "), -// (cmd_line kkkkk -// (actions (case -// (switch_on "g"), (append_cmd "g"), -// (not_empty "I"), (forward "I"))), -// (sink) -//]>; +def clang_cc : clang_based<"c", "$CALL(GetBinDir)clang -cc1 -I $CALL(GetStdHeadersDir) -triple=pic16- -emit-llvm-bc ", "i">; // pre-link-and-lto step. @@ -93,9 +93,14 @@ def llvm_ld : Tool<[ (in_language "llvm-bitcode"), (out_language "llvm-bitcode"), (output_suffix "bc"), - (cmd_line "$CALL(GetBinDir)llvm-ld -L $CALL(GetStdLibsDir) -disable-gvn -instcombine -disable-inlining $INFILE -b $OUTFILE -l std"), + (cmd_line "$CALL(GetBinDir)llvm-ld -L $CALL(GetStdLibsDir) -instcombine -disable-licm-promotion $INFILE -b $OUTFILE -l std"), (actions (case - (switch_on "O0"), (append_cmd "-disable-opt"))), + (switch_on "O0"), (append_cmd "-disable-opt"), + (switch_on "O1"), (append_cmd "-disable-opt"), + (switch_on "O2"), (append_cmd ""), +// Whenever O3 is not specified on the command line, default i.e. disable-inlining will always be added. + (switch_on "O3"), (append_cmd ""), + (default), (append_cmd "-disable-inlining"))), (join) ]>; @@ -104,7 +109,7 @@ def llvm_ld_optimizer : Tool<[ (in_language "llvm-bitcode"), (out_language "llvm-bitcode"), (output_suffix "bc"), - (cmd_line "$CALL(GetBinDir)llvm-ld -disable-gvn -instcombine -disable-inlining $INFILE -b $OUTFILE"), + (cmd_line "$CALL(GetBinDir)llvm-ld -instcombine -disable-inlining $INFILE -b $OUTFILE"), (actions (case (switch_on "O0"), (append_cmd "-disable-opt"))) ]>; @@ -114,7 +119,7 @@ def pic16passes : Tool<[ (in_language "llvm-bitcode"), (out_language "llvm-bitcode"), (output_suffix "obc"), - (cmd_line "$CALL(GetBinDir)opt -pic16cg -pic16overlay $INFILE -f -o $OUTFILE"), + (cmd_line "$CALL(GetBinDir)opt -pic16overlay $INFILE -f -o $OUTFILE"), (actions (case (switch_on "O0"), (append_cmd "-disable-opt"))) ]>; @@ -123,21 +128,24 @@ def llc : Tool<[ (in_language "llvm-bitcode"), (out_language "assembler"), (output_suffix "s"), - (cmd_line "$CALL(GetBinDir)llc -march=pic16 -disable-jump-tables -pre-RA-sched=list-burr -regalloc=pbqp -f $INFILE -o $OUTFILE"), + (cmd_line "$CALL(GetBinDir)llc -march=pic16 -disable-jump-tables -pre-RA-sched=list-burr -f $INFILE -o $OUTFILE"), (actions (case - (switch_on "S"), (stop_compilation))) -// (not_empty "Wllc,"), (unpack_values "Wllc,"), -// (not_empty "pre-RA-sched"), (forward "pre-RA-sched"))) + (switch_on "S"), (stop_compilation), + (not_empty "regalloc"), (forward "regalloc"), + (empty "regalloc"), (append_cmd "-regalloc=pbqp"))) ]>; def gpasm : Tool<[ (in_language "assembler"), (out_language "object-code"), (output_suffix "o"), - (cmd_line "$CALL(GetBinDir)gpasm -r decimal -p p16F1937 -I $CALL(GetStdAsmHeadersDir) -C -c -q $INFILE -o $OUTFILE"), + (cmd_line "$CALL(GetBinDir)gpasm -r decimal -I $CALL(GetStdAsmHeadersDir) -C -c -w 2 $INFILE -o $OUTFILE"), (actions (case (switch_on "c"), (stop_compilation), (switch_on "g"), (append_cmd "-g"), + (switch_on "r"), (append_cmd "-z"), + (not_empty "p"), (forward "p"), + (empty "p"), (append_cmd "-p 16f1xxx"), (not_empty "Wa,"), (forward_value "Wa,"))) ]>; @@ -145,13 +153,16 @@ def mplink : Tool<[ (in_language "object-code"), (out_language "executable"), (output_suffix "cof"), - (cmd_line "$CALL(GetBinDir)mplink.exe -k $CALL(GetStdLinkerScriptsDir) -l $CALL(GetStdLibsDir) -p 16f1937 intrinsics.lib devices.lib $INFILE -o $OUTFILE"), + (cmd_line "$CALL(GetBinDir)mplink -k $CALL(GetStdLinkerScriptsDir) -l $CALL(GetStdLibsDir) intrinsics.lib stdn.lib $INFILE -o $OUTFILE"), (actions (case (not_empty "Wl,"), (forward_value "Wl,"), + (switch_on "r"), (append_cmd "-e"), + (switch_on "X"), (append_cmd "-x"), (not_empty "L"), (forward_as "L", "-l"), (not_empty "K"), (forward_as "K", "-k"), (not_empty "m"), (forward "m"), -// (not_empty "l"), [(unpack_values "l"),(append_cmd ".lib")])), + (not_empty "p"), [(forward "p"), (append_cmd "-c")], + (empty "p"), (append_cmd "-p 16f1xxx -c"), (not_empty "k"), (forward_value "k"), (not_empty "l"), (forward_value "l"))), (join) @@ -175,13 +186,13 @@ def LanguageMap : LanguageMap<[ def CompilationGraph : CompilationGraph<[ Edge<"root", "clang_cc">, Edge<"root", "llvm_ld">, - OptionalEdge<"root", "llvm_ld_optimizer", (case + OptionalEdge<"root", "llvm_ld_optimizer", (case (switch_on "S"), (inc_weight), (switch_on "c"), (inc_weight))>, Edge<"root", "gpasm">, Edge<"root", "mplink">, Edge<"clang_cc", "llvm_ld">, - OptionalEdge<"clang_cc", "llvm_ld_optimizer", (case + OptionalEdge<"clang_cc", "llvm_ld_optimizer", (case (switch_on "S"), (inc_weight), (switch_on "c"), (inc_weight))>, Edge<"llvm_ld", "pic16passes">,