-
- // CMP %1S, n_projs - 1
- // BHI default
-
-
-
- lc_esnprintf(arm_get_arg_env(), cmd_buf, SNPRINTF_BUF_LEN, "CMP %1S, #%u", irn, n_projs - 1);
- lc_esnprintf(arm_get_arg_env(), cmnt_buf, SNPRINTF_BUF_LEN, "", irn);
- lc_efprintf(arm_get_arg_env(), out, "\t%-35s %-60s /* %+F */\n", cmd_buf, cmnt_buf, irn);
-
- lc_esnprintf(arm_get_arg_env(), cmd_buf, SNPRINTF_BUF_LEN, "BHI BLOCK_%d", default_block_num);
- lc_esnprintf(arm_get_arg_env(), cmnt_buf, SNPRINTF_BUF_LEN, "", irn);
- lc_efprintf(arm_get_arg_env(), out, "\t%-35s %-60s /* %+F */\n", cmd_buf, cmnt_buf, irn);
-
-
- lc_esnprintf(arm_get_arg_env(), cmd_buf, SNPRINTF_BUF_LEN, "LDR %%r12, TABLE_%d_START", block_nr);
- lc_esnprintf(arm_get_arg_env(), cmnt_buf, SNPRINTF_BUF_LEN, "", irn);
- lc_efprintf(arm_get_arg_env(), out, "\t%-35s %-60s /* %+F */\n", cmd_buf, cmnt_buf, irn);
-
- lc_esnprintf(arm_get_arg_env(), cmd_buf, SNPRINTF_BUF_LEN, "ADD %%r12, %%r12, %1S, LSL #2", irn);
- lc_esnprintf(arm_get_arg_env(), cmnt_buf, SNPRINTF_BUF_LEN, "", irn);
- lc_efprintf(arm_get_arg_env(), out, "\t%-35s %-60s /* %+F */\n", cmd_buf, cmnt_buf, irn);
-
- lc_esnprintf(arm_get_arg_env(), cmd_buf, SNPRINTF_BUF_LEN, "LDR %%r15, [%%r12, #0]");
- lc_esnprintf(arm_get_arg_env(), cmnt_buf, SNPRINTF_BUF_LEN, "", irn);
- lc_efprintf(arm_get_arg_env(), out, "\t%-35s %-60s /* %+F */\n", cmd_buf, cmnt_buf, irn);
-
- // LDR %r12, .TABLE_X_START
- // ADD %r12, %r12, [%1S, LSL #2]
- // LDR %r15, %r12
-
- fprintf(out, "TABLE_%d_START:\n\t.word\tTABLE_%d\n", block_nr, block_nr);
- fprintf(out, "\t.align 2\n");
- fprintf(out, "TABLE_%d:\n", block_nr);
-
-
- for ( i=0; i<n_projs; i++) {
- ir_node *block;
+ assert(default_proj != NULL && "SwitchJmp should have a Default Proj");
+
+ /*
+ CMP %1S, n_projs - 1
+ BHI default
+ */
+
+ be_emit_cstring("\tcmp ");
+ arm_emit_source_register(irn, 0);
+ be_emit_irprintf(", #%u", n_projs - 1);
+ be_emit_finish_line_gas(irn);
+
+ be_emit_cstring("\tbhi ");
+ arm_emit_cfop_target(default_proj);
+ be_emit_finish_line_gas(default_proj);
+
+ /*
+ LDR %r12, .TABLE_X_START
+ ADD %r12, %r12, [%1S, LSL #2]
+ LDR %r15, %r12
+ */
+
+ be_emit_irprintf("\tldr %%r12, TABLE_%d_START", block_nr);
+ be_emit_finish_line_gas(NULL);
+
+ be_emit_irprintf("\tadd %%r12, %%r12, ");
+ arm_emit_source_register(irn, 0);
+ be_emit_cstring(", LSL #2");
+ be_emit_finish_line_gas(NULL);
+
+ be_emit_cstring("\tldr %r15, [%r12, #0]");
+ be_emit_finish_line_gas(NULL);
+
+ be_emit_irprintf("TABLE_%d_START:\n\t.word\tTABLE_%d", block_nr, block_nr);
+ be_emit_finish_line_gas(NULL);
+ be_emit_irprintf("\t.align 2");
+ be_emit_finish_line_gas(NULL);
+ be_emit_irprintf("TABLE_%d:", block_nr);
+ be_emit_finish_line_gas(NULL);
+
+ for (i = 0; i < n_projs; ++i) {