-static void emit_be_Perm(const ir_node* irn, arm_emit_env_t *emit_env) {
- FILE *F = emit_env->out;
- const lc_arg_env_t *arm_env = arm_get_arg_env();
- char cmd_buf[SNPRINTF_BUF_LEN], cmnt_buf[SNPRINTF_BUF_LEN];
-
- lc_esnprintf(arm_env, cmd_buf, SNPRINTF_BUF_LEN, "eor %1S, %1S, %2S", irn, irn, irn);
- lc_esnprintf(arm_env, cmnt_buf, SNPRINTF_BUF_LEN, "/* begin Perm(%1S, %2S) */", irn, irn);
- arm_fprintf_format(F, cmd_buf, cmnt_buf, irn);
-
- lc_esnprintf(arm_env, cmd_buf, SNPRINTF_BUF_LEN, "eor %2S, %1S, %2S", irn, irn, irn);
- lc_esnprintf(arm_env, cmnt_buf, SNPRINTF_BUF_LEN, " ");
- arm_fprintf_format(F, cmd_buf, cmnt_buf, irn);
-
- lc_esnprintf(arm_env, cmd_buf, SNPRINTF_BUF_LEN, "eor %1S, %1S, %2S", irn, irn, irn);
- lc_esnprintf(arm_env, cmnt_buf, SNPRINTF_BUF_LEN, "/* end Perm(%1S, %2S) */", irn, irn);
- arm_fprintf_format(F, cmd_buf, cmnt_buf, irn);
-}
-
-static void emit_be_StackParam(const ir_node *irn, arm_emit_env_t *emit_env) {
- FILE *F = emit_env->out;
- ir_mode *mode = get_irn_mode(irn);
- const lc_arg_env_t *arm_env = arm_get_arg_env();
- char cmd_buf[SNPRINTF_BUF_LEN], cmnt_buf[SNPRINTF_BUF_LEN];
-
- if (mode_is_float(mode)) {
- if (USE_FPA(emit_env->cg->isa)) {
- lc_esnprintf(arm_env, cmd_buf, SNPRINTF_BUF_LEN, "ldf %1D, [%1S, #%O]", irn, irn, irn );
- lc_esnprintf(arm_env, cmnt_buf, SNPRINTF_BUF_LEN, "/* StackParam: (%1S + %O) -> %1D */",irn , irn, irn, get_irn_n(irn, 0));
- arm_fprintf_format(F, cmd_buf, cmnt_buf, irn);
- }
- else {
- assert(0 && "move not supported for this mode");
- }
- } else {
- lc_esnprintf(arm_env, cmd_buf, SNPRINTF_BUF_LEN, "ldr %1D, [%1S, #%O]", irn, irn, irn );
- lc_esnprintf(arm_env, cmnt_buf, SNPRINTF_BUF_LEN, "/* StackParam: (%1S + %O) -> %1D */",irn , irn, irn, get_irn_n(irn, 0));
- arm_fprintf_format(F, cmd_buf, cmnt_buf, irn);
- }
+static void emit_be_Perm(const ir_node *irn) {
+ be_emit_cstring("\teor ");
+ arm_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ arm_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ arm_emit_source_register(irn, 1);
+ be_emit_finish_line_gas(NULL);
+
+ be_emit_cstring("\teor ");
+ arm_emit_source_register(irn, 1);
+ be_emit_cstring(", ");
+ arm_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ arm_emit_source_register(irn, 1);
+ be_emit_finish_line_gas(NULL);
+
+ be_emit_cstring("\teor ");
+ arm_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ arm_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ arm_emit_source_register(irn, 1);
+ be_emit_finish_line_gas(irn);