3 * @brief Generated functions to emit code for assembler ir nodes.
4 * @note DO NOT EDIT THIS FILE, your changes will be lost.
5 * Edit libfirm/ir/be/sparc/sparc_spec.pl instead.
6 * created by: libfirm/ir/be/scripts/generate_emitter.pl libfirm/ir/be/sparc/sparc_spec.pl libfirm/ir/be/sparc
7 * @date Tue Dec 15 15:19:15 2009
17 #include "gen_sparc_emitter.h"
18 #include "sparc_new_nodes.h"
19 #include "sparc_emitter.h"
21 static void emit_sparc_SubSP(const ir_node *node) {
22 be_emit_cstring("\tadd ");
23 sparc_emit_source_register(node, 0);
24 be_emit_cstring(", ");
25 sparc_emit_source_register(node, 1);
26 be_emit_cstring(", ");
27 sparc_emit_dest_register(node, 0);
28 be_emit_finish_line_gas(node);
31 static void emit_sparc_Add(const ir_node *node) {
32 be_emit_cstring("\tadd ");
33 sparc_emit_source_register(node, 0);
34 be_emit_cstring(", ");
35 sparc_emit_reg_or_imm(node, 1);
36 be_emit_cstring(", ");
37 sparc_emit_dest_register(node, 0);
38 be_emit_finish_line_gas(node);
41 static void emit_sparc_Store(const ir_node *node) {
42 be_emit_cstring("\tst");
43 sparc_emit_store_mode(node);
45 sparc_emit_source_register(node, 0);
46 be_emit_cstring(", [");
47 sparc_emit_dest_register(node, 0);
48 sparc_emit_offset(node);
50 be_emit_finish_line_gas(node);
53 static void emit_sparc_Mov(const ir_node *node) {
54 be_emit_cstring("\tmov ");
55 sparc_emit_reg_or_imm(node, 0);
56 be_emit_cstring(", ");
57 sparc_emit_dest_register(node, 0);
58 be_emit_finish_line_gas(node);
61 static void emit_sparc_Tst(const ir_node *node) {
62 be_emit_cstring("\ttst ");
63 sparc_emit_source_register(node, 0);
64 be_emit_finish_line_gas(node);
67 static void emit_sparc_Cmp(const ir_node *node) {
68 be_emit_cstring("\tcmp ");
69 sparc_emit_source_register(node, 0);
70 be_emit_cstring(", ");
71 sparc_emit_reg_or_imm(node, 1);
72 be_emit_finish_line_gas(node);
75 static void emit_sparc_Sub(const ir_node *node) {
76 be_emit_cstring("\tsub ");
77 sparc_emit_source_register(node, 0);
78 be_emit_cstring(", ");
79 sparc_emit_reg_or_imm(node, 1);
80 be_emit_cstring(", ");
81 sparc_emit_dest_register(node, 0);
82 be_emit_finish_line_gas(node);
85 static void emit_sparc_Load(const ir_node *node) {
86 be_emit_cstring("\tld");
87 sparc_emit_load_mode(node);
88 be_emit_cstring(" [");
89 sparc_emit_source_register(node, 0);
90 sparc_emit_offset(node);
91 be_emit_cstring("], ");
92 sparc_emit_dest_register(node, 0);
93 be_emit_finish_line_gas(node);
96 static void emit_sparc_AddSP(const ir_node *node) {
97 be_emit_cstring("\tsub ");
98 sparc_emit_source_register(node, 0);
99 be_emit_cstring(", ");
100 sparc_emit_source_register(node, 1);
101 be_emit_cstring(", ");
102 sparc_emit_dest_register(node, 0);
103 be_emit_finish_line_gas(node);
107 * Enters the emitter functions for handled nodes into the generic
108 * pointer of an opcode.
110 void sparc_register_spec_emitters(void) {
112 #define BE_EMIT(a) op_sparc_##a->ops.generic = (op_func)emit_sparc_##a
114 /* generated emitter functions */