AE_MOVDA32 — Move an AR register into each half of AE_DR

Instruction Word

Slot
ae2_slot0
6
3
6
2
6
1
6
0
5
9
5
8
5
7
5
6
5
5
5
4
5
3
5
2
5
1
5
0
4
9
4
8
4
7
4
6
4
5
4
4
4
3
4
2
4
1
4
0
3
9
3
8
3
7
3
6
3
5
3
4
3
3
3
2
3
1
3
0
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
1
0
9876543210
Format ae_format2 - 64 bit(s)0000 1110
AE_MOVDA32 1000000000011000 1000 0010
ae_fld_ar_to_dr_v 3210
s 3210

Slot
Inst
6
3
6
2
6
1
6
0
5
9
5
8
5
7
5
6
5
5
5
4
5
3
5
2
5
1
5
0
4
9
4
8
4
7
4
6
4
5
4
4
4
3
4
2
4
1
4
0
3
9
3
8
3
7
3
6
3
5
3
4
3
3
3
2
3
1
3
0
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
1
0
9876543210
Format x24 - 24 bit(s) 0
AE_MOVDA32 00111100 00110100
ae_fld_ar_to_dr_v 3210
s 3210

Slot
ae_minislot0
6
3
6
2
6
1
6
0
5
9
5
8
5
7
5
6
5
5
5
4
5
3
5
2
5
1
5
0
4
9
4
8
4
7
4
6
4
5
4
4
4
3
4
2
4
1
4
0
3
9
3
8
3
7
3
6
3
5
3
4
3
3
3
2
3
1
3
0
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
1
0
9876543210
Format ae_mini0 - 64 bit(s)01000000000000000000000 1110
AE_MOVDA32 101000101
ae_fld_ar_to_dr_v 3210
s 3210

Slot
ae_minislot2
6
3
6
2
6
1
6
0
5
9
5
8
5
7
5
6
5
5
5
4
5
3
5
2
5
1
5
0
4
9
4
8
4
7
4
6
4
5
4
4
4
3
4
2
4
1
4
0
3
9
3
8
3
7
3
6
3
5
3
4
3
3
3
2
3
1
3
0
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
1
0
9876543210
Format ae_mini0 - 64 bit(s)01000000000000000000000 1110
AE_MOVDA32 1101101 0100
ae_fld_ar_to_dr_v 3210
s 3210

Assembler Syntax

AE_MOVDA32 aed0..15(ae_ar_to_dr_v), a0..15(ars)

C Syntax

#include <xtensa/tie/xt_hifi2.h>

extern ae_int32 AE_MOVDA32(unsigned a);

Description

AE_MOVDA32 copy and replicate the 32-bit contents of AR register a, into the two 32-bit elements of an AE_DR register d.

Implementation Pipeline

In Out
ars Mstage ae_ar_to_dr_v Mstage

Protos that use AE_MOVDA32

proto AE_ADD32S_scalar { out int32 d, in int32 d0, in ae_int32 d1 }{ae_int32 t, ae_int32 t2}{
AE_MOVDA32 t, d0;
AE_ADD32S t2, t, d1;
AE_MOVAD32.L d, t2;
}
proto AE_ADDI_32 { out ae_int32 a, in ae_int32 b, in immediate c }{int32 ta, ae_int32 tb}{
MOVI ta, c + 0;
AE_MOVDA32 tb, ta;
AE_ADD32 a, b, tb;
}
proto AE_ADDMI_32 { out ae_int32 a, in ae_int32 b, in immediate c }{int32 ta, ae_int32 tb}{
MOVI ta, c + 0;
AE_MOVDA32 tb, ta;
AE_ADD32 a, b, tb;
}
proto AE_INT32X2_AND_rinit { out ae_int32x2 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto AE_INT32X2_OR_rinit { out ae_int32x2 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto AE_MOVDA32 { out ae_int32 d, in uint32 a }{}{
AE_MOVDA32 d, a;
}
proto AE_MULAF16X4SS_scalar { out int32 aout, in int32 ain, in ae_int16 d0, in ae_int16 d1 }{ae_int32 t}{
AE_MOVDA32 t, ain;
AE_MULAF16SS.00 t, d0, d1;
AE_MOVAD32.L aout, t;
}
proto AE_MULSF16X4SS_scalar { out int32 aout, in int32 ain, in ae_int16 d0, in ae_int16 d1 }{ae_int32 t}{
AE_MOVDA32 t, ain;
AE_MULSF16SS.00 t, d0, d1;
AE_MOVAD32.L aout, t;
}
proto AE_RLadd4_rinit { out ae_int32 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto AE_RLadd_rinit { out ae_int32 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto AE_RLmac_rinit { out ae_int32 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto AE_RLmsu_rinit { out ae_int32 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto AE_RLsub4_rinit { out ae_int32 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto AE_RLsub_rinit { out ae_int32 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto AE_SUB32S_scalar { out int32 p, in int32 d0, in ae_int32 d1 }{ae_int32 t, ae_int32 t2}{
AE_MOVDA32 t, d0;
AE_SUB32S t2, t, d1;
AE_MOVAD32.L p, t2;
}
proto ae_int32x2_vextract_0_ae_int32 { out ae_int32 a, in ae_int32x2 d0 }{int32 t}{
AE_MOVAD32.L t, d0;
AE_MOVDA32 a, t;
}
proto ae_int32x2_vextract_1_ae_int32 { out ae_int32 a, in ae_int32x2 d0 }{int32 t}{
AE_MOVAD32.H t, d0;
AE_MOVDA32 a, t;
}
proto int16_rtor_ae_f24 { out ae_f24 d, in int16 a }{}{
AE_MOVDA32 d, a;
}
proto int16_rtor_ae_f24x2 { out ae_f24x2 d, in int16 a }{}{
AE_MOVDA32 d, a;
}
proto int16_rtor_ae_f32 { out ae_f32 d, in int16 a }{}{
AE_MOVDA32 d, a;
}
proto int16_rtor_ae_f32x2 { out ae_f32x2 d, in int16 a }{}{
AE_MOVDA32 d, a;
}
proto int16_rtor_ae_int24 { out ae_int24 d, in int16 a }{}{
AE_MOVDA32 d, a;
}
proto int16_rtor_ae_int24x2 { out ae_int24x2 d, in int16 a }{}{
AE_MOVDA32 d, a;
}
proto int16_rtor_ae_int32 { out ae_int32 d, in int16 a }{}{
AE_MOVDA32 d, a;
}
proto int16_rtor_ae_int32x2 { out ae_int32x2 d, in int16 a }{}{
AE_MOVDA32 d, a;
}
proto int32_rtor_ae_f24 { out ae_f24 d, in int32 a }{ae_f32x2 t1, ae_f32x2 t2}{
AE_MOVDA32 t1, a;
AE_SLAI32 t2, t1, 8;
AE_SRAI32 d, t2, 8;
}
proto int32_rtor_ae_f24x2 { out ae_f24x2 d, in int32 a }{ae_f32x2 t1, ae_f32x2 t2}{
AE_MOVDA32 t1, a;
AE_SLAI32 t2, t1, 8;
AE_SRAI32 d, t2, 8;
}
proto int32_rtor_ae_f32 { out ae_f32 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto int32_rtor_ae_f32x2 { out ae_f32x2 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto int32_rtor_ae_f32x4 { out ae_f32x4 d, in int32 a }{ae_int32 tmp}{
AE_MOVDA32 tmp, a;
AE_MOV d->d0, tmp;
AE_MOV d->d1, tmp;
}
proto int32_rtor_ae_int24 { out ae_int24 d, in int32 a }{ae_int32x2 t1, ae_int32x2 t2}{
AE_MOVDA32 t1, a;
AE_SLAI32 t2, t1, 8;
AE_SRAI32 d, t2, 8;
}
proto int32_rtor_ae_int24x2 { out ae_int24x2 d, in int32 a }{ae_int32x2 t1, ae_int32x2 t2}{
AE_MOVDA32 t1, a;
AE_SLAI32 t2, t1, 8;
AE_SRAI32 d, t2, 8;
}
proto int32_rtor_ae_int32 { out ae_int32 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto int32_rtor_ae_int32x2 { out ae_int32x2 d, in int32 a }{}{
AE_MOVDA32 d, a;
}
proto int32_rtor_ae_int32x4 { out ae_int32x4 d, in int32 a }{ae_int32 tmp}{
AE_MOVDA32 tmp, a;
AE_MOV d->d0, tmp;
AE_MOV d->d1, tmp;
}
proto int8_rtor_ae_int32 { out ae_int32 d, in int8 a }{}{
AE_MOVDA32 d, a;
}
proto int8_rtor_ae_int32x2 { out ae_int32x2 d, in int8 a }{}{
AE_MOVDA32 d, a;
}
proto uint16_rtor_ae_int32 { out ae_int32 d, in uint16 a }{}{
AE_MOVDA32 d, a;
}
proto uint16_rtor_ae_int32x2 { out ae_int32x2 d, in uint16 a }{}{
AE_MOVDA32 d, a;
}
proto uint32_rtor_ae_f24x2 { out ae_f24x2 d, in uint32 a }{ae_f32x2 t1, ae_f32x2 t2}{
AE_MOVDA32 t1, a;
AE_SLAI32 t2, t1, 8;
AE_SRLI32 d, t2, 8;
}
proto uint32_rtor_ae_f32x2 { out ae_f32x2 d, in uint32 a }{}{
AE_MOVDA32 d, a;
}
proto uint32_rtor_ae_f32x4 { out ae_f32x4 d, in uint32 a }{ae_int32 tmp}{
AE_MOVDA32 tmp, a;
AE_MOV d->d0, tmp;
AE_MOV d->d1, tmp;
}
proto uint32_rtor_ae_int24x2 { out ae_int24x2 d, in uint32 a }{ae_int32x2 t1, ae_int32x2 t2}{
AE_MOVDA32 t1, a;
AE_SLAI32 t2, t1, 8;
AE_SRLI32 d, t2, 8;
}
proto uint32_rtor_ae_int32 { out ae_int32 d, in uint32 a }{}{
AE_MOVDA32 d, a;
}
proto uint32_rtor_ae_int32u { out ae_int32u d, in uint32 a }{}{
AE_MOVDA32 d, a;
}
proto uint32_rtor_ae_int32x2 { out ae_int32x2 d, in uint32 a }{}{
AE_MOVDA32 d, a;
}
proto uint32_rtor_ae_int32x4 { out ae_int32x4 d, in uint32 a }{ae_int32 tmp}{
AE_MOVDA32 tmp, a;
AE_MOV d->d0, tmp;
AE_MOV d->d1, tmp;
}
proto uint8_rtor_ae_int32 { out ae_int32 d, in uint8 a }{}{
AE_MOVDA32 d, a;
}
proto uint8_rtor_ae_int32x2 { out ae_int32x2 d, in uint8 a }{}{
AE_MOVDA32 d, a;
}