-static void emit_be_Perm(const ir_node *n, ppc32_emit_env_t *env) {
- FILE *F = env->out;
- const arch_register_class_t *regclass = arch_get_irn_reg_class(env->arch_env, n, 0);
-
- if (regclass == &ppc32_reg_classes[CLASS_ppc32_general_purpose])
- {
- lc_efprintf(ppc32_get_arg_env(), F, "\txor %1S, %1S, %2S\t\t\t/* Swap %1S, %2S with XOR */\n",n,n,n,n,n);
- lc_efprintf(ppc32_get_arg_env(), F, "\txor %2S, %1S, %2S\t\t\t/* (continued) */\n",n,n,n);
- lc_efprintf(ppc32_get_arg_env(), F, "\txor %1S, %1S, %2S\t\t\t/* (continued) */\n",n,n,n);
- }
- else if (regclass == &ppc32_reg_classes[CLASS_ppc32_floating_point])
- {
- lc_efprintf(ppc32_get_arg_env(), F, "\tfmr f0, %1S\t\t\t/* Swap %1S, %2S with moves */\n",n,n,n);
- lc_efprintf(ppc32_get_arg_env(), F, "\tfmr %1S, %2S\t\t\t/* (continued) */\n",n,n);
- lc_efprintf(ppc32_get_arg_env(), F, "\tfmr %2S, f0\t\t\t/* (continued) */\n",n);
- }
- else if (regclass == &ppc32_reg_classes[CLASS_ppc32_condition])
- {
- lc_efprintf(ppc32_get_arg_env(), F, "\tmcrf cr7, %1S\t\t\t/* Swap %1S, %2S with moves */\n",n,n,n);
- lc_efprintf(ppc32_get_arg_env(), F, "\tmcrf %1S, %2S\t\t\t/* (continued) */\n",n,n);
- lc_efprintf(ppc32_get_arg_env(), F, "\tmcrf %2S, cr7\t\t\t/* (continued) */\n",n);
- }
- else assert(0 && "Illegal register class for Perm");
-
+static void emit_be_Perm(const ir_node *irn) {
+ const arch_register_class_t *regclass = arch_get_irn_reg_class(arch_env, irn, 0);
+
+ if (regclass == &ppc32_reg_classes[CLASS_ppc32_gp]) {
+ be_emit_cstring("\txor ");
+ ppc32_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ ppc32_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ ppc32_emit_source_register(irn, 1);
+ be_emit_pad_comment();
+ be_emit_cstring("/* Swap with XOR */\n");
+ be_emit_write_line();
+
+ be_emit_cstring("\txor ");
+ ppc32_emit_source_register(irn, 1);
+ be_emit_cstring(", ");
+ ppc32_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ ppc32_emit_source_register(irn, 1);
+ be_emit_pad_comment();
+ be_emit_cstring("/* (continued) */\n");
+ be_emit_write_line();
+
+ be_emit_cstring("\txor ");
+ ppc32_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ ppc32_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ ppc32_emit_source_register(irn, 1);
+ } else if (regclass == &ppc32_reg_classes[CLASS_ppc32_fp]) {
+ be_emit_cstring("\tfmr f0, ");
+ ppc32_emit_source_register(irn, 0);
+ be_emit_pad_comment();
+ be_emit_cstring("/* Swap with moves */\n");
+ be_emit_write_line();
+
+ be_emit_cstring("\tfmr ");
+ ppc32_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ ppc32_emit_source_register(irn, 1);
+ be_emit_pad_comment();
+ be_emit_cstring("/* (continued) */\n");
+ be_emit_write_line();
+
+ be_emit_cstring("\tfmr ");
+ ppc32_emit_source_register(irn, 1);
+ be_emit_cstring(", f0");
+ } else if (regclass == &ppc32_reg_classes[CLASS_ppc32_condition]) {
+ be_emit_cstring("\tmcrf cr7, ");
+ ppc32_emit_source_register(irn, 0);
+ be_emit_pad_comment();
+ be_emit_cstring("/* Swap with moves */\n");
+ be_emit_write_line();
+
+ be_emit_cstring("\tmcrf ");
+ ppc32_emit_source_register(irn, 0);
+ be_emit_cstring(", ");
+ ppc32_emit_source_register(irn, 1);
+ be_emit_pad_comment();
+ be_emit_cstring("/* (continued) */\n");
+ be_emit_write_line();
+
+ be_emit_cstring("\tmcrf ");
+ ppc32_emit_source_register(irn, 1);
+ be_emit_cstring(", cr7");
+ } else {
+ assert(0 && "Illegal register class for Perm");
+ panic("ppc32 Emitter: Illegal register class for Perm");
+ }
+ be_emit_finish_line_gas(irn);