aboutsummaryrefslogtreecommitdiff
path: root/target-ppc/op_template.h
diff options
context:
space:
mode:
Diffstat (limited to 'target-ppc/op_template.h')
-rw-r--r--target-ppc/op_template.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/target-ppc/op_template.h b/target-ppc/op_template.h
index d45062592a..28dc59c942 100644
--- a/target-ppc/op_template.h
+++ b/target-ppc/op_template.h
@@ -57,6 +57,7 @@ void OPPROTO glue(op_store_T2_gpr_gpr, REG) (void)
}
#endif
+/* General purpose registers containing vector operands moves */
#if defined(TARGET_PPCEMB)
void OPPROTO glue(op_load_gpr64_T0_gpr, REG) (void)
{
@@ -99,6 +100,45 @@ void OPPROTO glue(op_store_T2_gpr64_gpr, REG) (void)
#endif
#endif /* defined(TARGET_PPCEMB) */
+/* Altivec registers moves */
+void OPPROTO glue(op_load_avr_A0_avr, REG) (void)
+{
+ AVR0 = env->avr[REG];
+ RETURN();
+}
+
+void OPPROTO glue(op_load_avr_A1_avr, REG) (void)
+{
+ AVR1 = env->avr[REG];
+ RETURN();
+}
+
+void OPPROTO glue(op_load_avr_A2_avr, REG) (void)
+{
+ AVR2 = env->avr[REG];
+ RETURN();
+}
+
+void OPPROTO glue(op_store_A0_avr_avr, REG) (void)
+{
+ env->avr[REG] = AVR0;
+ RETURN();
+}
+
+void OPPROTO glue(op_store_A1_avr_avr, REG) (void)
+{
+ env->avr[REG] = AVR1;
+ RETURN();
+}
+
+#if 0 // unused
+void OPPROTO glue(op_store_A2_avr_avr, REG) (void)
+{
+ env->avr[REG] = AVR2;
+ RETURN();
+}
+#endif
+
#if REG <= 7
/* Condition register moves */
void OPPROTO glue(op_load_crf_T0_crf, REG) (void)