68030 Instruction times

 # - Add Calculate Effective Address time (CEA)
 % - Add Calculate Immediate Effective Address time (CIEA)
 * - Add Fetch Effective Address time (FEA)
 ! - Add Fetch Immediate Effective Address time (FIEA)
 j - Add Jump Effective Address Time (JEA)

 (r/p/w)  r - Read Cycles
          p - Prefetch Cycles
          w - Write Cycles

			       Head    Tail	 I-Cache	 No-Cache
 move	Rn,Dn			2	0	 2(0/0/0)	 2(0/1/0)
 move	Rn,An			2	0	 2(0/0/0)	 2(0/1/0)
*move	EA,An			0	0	 2(0/0/0)	 2(0/1/0)
*move	EA,Dn			0	0	 2(0/0/0)	 2(0/1/0)
 move	Rn,(An)			0	1	 3(0/0/1)	 4(0/1/1)
*move	SOURCE,(An)		2	0	 4(0/0/1)	 5(0/1/1)
 move	Rn,(An)+		0	1	 3(0/0/1)	 4(0/1/1)
*move	SOURCE,(An)+		2	0	 4(0/0/1)	 5(0/1/1)
 move	Rn,-(An)		0	2	 4(0/0/1)	 4(0/1/1)
*move	SOURCE,-(An)		2	0	 4(0/0/1)	 5(0/1/1)
*move	EA,(d16,An)		2	0	 4(0/0/1)	 5(0/1/1)
*move	EA,xxx.W		2	0	 4(0/0/1)	 5(0/1/1)
*move	EA,xxx.L		0	0	 6(0/0/1)	 7(0/2/1)
*move	EA,(d8,An,Xn)		4	0	 6(0/0/1)	 7(0/1/1)
*move	EA,(d16,An)		2	0	 8(0/0/1)	 9(0/2/1)
*move	EA,(d16,PC)		2	0	 8(0/0/1)	 9(0/2/1)
*move	EA,(d16,An,Xn)		2	0	 8(0/0/1)	 9(0/2/1)
*move	EA,(d16,PC,Xn)		2	0	 8(0/0/1)	 9(0/2/1)
*move	EA,([d16,An],Xn)	2	0	10(1/0/1)	11(1/2/1)
*move	EA,([d16,PC],Xn)	2	0	10(1/0/1)	11(1/2/1)
*move	EA,([d16,An],d16)	2	0	12(1/0/1)	14(1/2/1)
*move	EA,([d16,PC],d16)	2	0	12(1/0/1)	14(1/2/1)
*move	EA,([d16,An],d32)	2	0	14(1/0/1)	16(1/3/1)
*move	EA,([d16,PC],d32)	2	0	14(1/0/1)	16(1/3/1)
*move	EA,([d16,An],Xn,d32)	2	0	14(1/0/1)	16(1/3/1)
*move	EA,([d16,PC],Xn,d32)	2	0	14(1/0/1)	16(1/3/1)
*move	EA,(B)			4	0	 8(0/0/1)	 9(0/1/1)
*move	EA,(d16,B)		4	0	10(0/0/1)	12(0/2/1)
*move	EA,(d32,B)		4	0	14(0/0/1)	16(0/2/1)
*move	EA,([B])		4	0	10(1/0/1)	11(1/1/1)
*move	EA,([B].l)		4	0	10(1/0/1)	11(1/1/1)
*move	EA,([B],d16)		4	0	12(1/0/1)	14(1/2/1)
*move	EA,([B].l,d16)		4	0	12(1/0/1)	14(1/2/1)
*move	EA,([B],d32)		4	0	14(1/0/1)	16(1/2/1)
*move	EA,([B].l,d32)		4	0	14(1/0/1)	16(1/2/1)
*move	EA,([d16,B])		4	0	12(1/0/1)	14(1/2/1)
*move	EA,([d16,B].l)		4	0	12(1/0/1)	14(1/2/1)
*move	EA,([d16,B],d16)	4	0	14(1/0/1)	17(1/2/1)
*move	EA,([d16,B].l,d16)	4	0	14(1/0/1)	17(1/2/1)
*move	EA,([d16,B],d32)	4	0	16(1/0/1)	19(1/3/1)
*move	EA,([d16,B].l,d32)	4	0	16(1/0/1)	19(1/3/1)
*move	EA,([d32,B])		4	0	16(1/0/1)	18(1/2/1)
*move	EA,([d32,B].l)		4	0	16(1/0/1)	18(1/2/1)
*move	EA,([d32,B],d16)	4	0	18(1/0/1)	21(1/3/1)
*move	EA,([d32,B].l,d16)	4	0	18(1/0/1)	21(1/3/1)
*move	EA,([d32,B],d32)	4	0	18(1/0/1)	23(1/3/1)
*move	EA,([d32,B].l,d32)	4	0	18(1/0/1)	23(1/3/1)
 exg	Ry,Rx			4	0	 4(0/0/0)	 4(0/1/0)
 movec	Cr,Rn			6	0	 6(0/0/0)	 6(0/1/0)
 movec	Rn,usp vbr caar msp isp 6	0	 6(0/0/0)	 6(0/1/0)
 movec	Rn,sfc dfc cacr		4	0	12(0/0/0)	12(0/1/0)
 move	ccr,Dn			2	0	 4(0/0/0)	 4(0/1/0)
#move	ccr,mem			2	0	 4(0/0/1)	 5(0/1/1)
 move	Dn,ccr			4	0	 4(0/0/1)	 4(0/1/1)
#move	EA,ccr			0	0	 4(0/0/1)	 4(0/1/1)
 move	sr,Dn			2	0	 4(0/0/1)	 4(0/1/1)
#move	sr,mem			2	0	 4(0/0/1)	 4(0/1/1)
*move	EA,sr			0	0	 8(0/0/0)	10(0/1/0)
%movem	EA,rl (+)		2	0	8+4n(n/0/0)	8+4n(n/1/0)
%movem	rl,EA (+)		2	0	4+2n(0/0/n)	4+2n(0/1/n)
 movep.w Dn,(d16,An)		4	0	10(0/0/2)	10(0/1/2)
 movep.w (d16,An),Dn		2	0	10(2/0/0)	10(2/1/0)
 movep.l Dn,(d16,An)		4	0	14(0/0/4)	14(0/1/4)
 movep.l (d16,An),Dn		2	0	14(4/0/0)	14(4/1/0)
%moves	EA,Rn			3	0	 7(1/0/0)	 7(1/1/0)
%moves	Rn,EA			2	1	 5(0/0/1)	 6(0/1/1)
 move	usp,An			4	0	 4(0/0/0)	 4(0/1/1)
 move	An,usp			4	0	 4(0/0/0)	 4(0/1/0)
 swap	Dn			4	0	 4(0/0/0)	 4(0/1/0)
 add	Rn,Dn			2	0	 2(0/0/0)	 2(0/1/0)
 adda.w	Rn,An			4	0	 4(0/0/0)	 4(0/1/0)
 adda.l	Rn,An			2	0	 2(0/0/0)	 2(0/1/0)
*add	EA,Dn			0	0	 2(0/0/0)	 2(0/1/0)
*adda.w	EA,An			0	0	 4(0/0/0)	 4(0/1/0)
*adda.l	EA,An			0	0	 2(0/0/0)	 2(0/1/0)
*add	Dn,EA			0	1	 3(0/0/1)	 4(0/1/1)
 and	Dn,Dn			2	0	 2(0/0/0)	 2(0/1/0)
*and	EA,Dn			0	0	 2(0/0/0)	 2(0/1/0)
*and	Dn,EA			0	1	 3(0/0/1)	 4(0/1/1)
 eor	Dn,Dn			2	0	 2(0/0/0)	 2(0/1/0)
*eor	Dn,EA			0	1	 3(0/0/1)	 4(0/1/1)
 or	Dn,Dn			2	0	 2(0/0/0)	 2(0/1/0)
 or	EA,Dn			0	0	 2(0/0/0)	 2(0/1/0)
 or	Dn,EA			0	1	 3(0/0/1)	 4(0/1/1)
 sub	Rn,Dn			2	0	 2(0/0/0)	 2(0/1/0)
*sub	EA,Dn			0	0	 2(0/0/0)	 2(0/1/0)
*sub	Dn,EA			0	1	 3(0/0/1)	 4(0/1/1)
 suba.w	Rn,An			4	0	 4(0/0/0)	 4(0/1/0)
 suba.l	Rn,An			2	0	 2(0/0/0)	 2(0/1/0)
*suba.w	EA,An			0	0	 4(0/0/0)	 4(0/1/0)
*suba.l	EA,An			0	0	 2(0/0/0)	 2(0/1/0)
 cmp	Rn,Dn			2	0	 2(0/0/0)	 2(0/1/0)
*cmp	EA,Dn			0	0	 2(0/0/0)	 2(0/1/0)
 cmpa	Rn,An			4	0	 4(0/0/0)	 4(0/1/0)
*cmpa	EA,An			0	0	 4(0/0/0)	 4(0/1/0)
!cmp2	EA,Rn (max)		2	0	20(1/0/0)	20(1/1/0)
*muls.w	EA,Dn (max)		2	0	28(0/0/0)	28(0/1/0)
!muls.l	EA,Dn (max)		2	0	44(0/0/0)	44(0/1/0)
*mulu.w	EA,Dn (max)		2	0	28(0/0/0)	28(0/1/0)
!mulu.l	EA,Dn (max)		2	0	44(0/0/0)	44(0/1/0)
 divs.w	Dn,Dn (max)		2	0	56(0/0/0)	56(0/1/0)
*divs.w	EA,Dn (max)		0	0	56(0/0/0)	56(0/1/0)
!divs.l	Dn,Dn (max)		6	0	90(0/0/0)	90(0/1/0)
!divs.l	EA,Dn (max)		0	0	90(0/0/0)	90(0/1/0)
 divu.w	Dn,Dn (max)		2	0	44(0/0/0)	44(0/1/0)
*divu.w	EA,Dn (max)		0	0	44(0/0/0)	44(0/1/0)
!divu.l	Dn,Dn (max)		6	0	78(0/0/0)	78(0/1/0)
!divu.l	EA,Dn (max)		0	0	78(0/0/0)	78(0/1/0)
 moveq	#(data),Dn		2	0	 2(0/0/0)	 2(0/1/0)
 addq	#(data),Rn		2	0	 2(0/0/0)	 2(0/1/0)
*addq	#(data),Mem		0	1	 3(0/0/1)	 4(0/1/1)
 subq	#(data),Rn		2	0	 2(0/0/0)	 2(0/1/0)
*subq	#(data),Mem		0	1	 3(0/0/1)	 4(0/1/1)
!addi	#(data),Dn		2	0	 2(0/0/0)	 2(0/1/0)
!addi	#(data),Mem		0	1	 3(0/0/1)	 4(0/1/1)
!andi	#(data),Dn		2	0	 2(0/0/0)	 2(0/1/0)
!andi	#(data),Mem		0	1	 3(0/0/1)	 4(0/1/1)
!eori	#(data),Dn		2	0	 2(0/0/0)	 2(0/1/0)
!eori	#(data),Mem		0	1	 3(0/0/1)	 4(0/1/1)
!ori	#(data),Dn		2	0	 2(0/0/0)	 2(0/1/0)
!ori	#(data),Mem		0	1	 3(0/0/1)	 4(0/1/1)
!subi	#(data),Dn		2	0	 2(0/0/0)	 2(0/1/0)
!subi	#(data),Mem		0	1	 3(0/0/1)	 4(0/1/1)
!cmpi	#(data),Dn		2	0	 2(0/0/0)	 2(0/1/0)
!cmpi	#(data),Mem		0	0	 3(0/0/1)	 2(0/1/0)
 abcd	Dn,Dn			0	0	 4(0/0/0)	 4(0/1/0)
 abcd	-(An),-(An)		2	1	13(2/0/1)	14(2/1/1)
 sbcd	Dn,Dn			0	0	 4(0/0/0)	 4(0/1/0)
 sbcd	-(An),-(An)		2	1	13(2/0/1)	14(2/1/1)
 addx	Dn,Dn			2	0	 2(0/0/0)	 2(0/1/0)
 addx	-(An),-(An)		2	1	 9(2/0/1)	10(2/1/1)
 subx	Dn,Dn			2	0	 2(0/0/0)	 2(0/1/0)
 subx	-(An),-(An)		2	1	 9(2/0/1)	10(2/1/1)
 cmpm	(An)+,(An)+		0	0	 8(2/0/0)	 8(2/1/0)
 pack	Dn,Dn,#(data)		6	0	 6(0/0/0)	 6(0/1/0)
 pack	-(An),-(An),#(data)	2	1	11(1/0/1)	11(1/1/1)
 unpk	Dn,Dn,#(data)		8	0	 8(0/0/0)	 8(0/1/0)
 unpk	-(An),-(An),#(data)	2	1	11(1/0/1)	11(1/1/1)
 clr	Dn			2	0	 2(0/0/0)	 2(0/1/0)
#clr	Mem			0	1	 3(0/0/1)	 4(0/1/1)
 neg	Dn			2	0	 2(0/0/0)	 2(0/1/0)
*neg	Mem			0	1	 3(0/0/1)	 4(0/1/1)
 negx	Dn			2	0	 2(0/0/0)	 2(0/1/0)
*negx	Mem			0	1	 3(0/0/1)	 4(0/1/1)
 not	Dn			2	0	 2(0/0/0)	 2(0/1/0)
*not	Mem			0	1	 3(0/0/1)	 4(0/1/1)
 ext	Dn			4	0	 4(0/0/0)	 4(0/1/0)
 nbcd	Dn			0	0	 6(0/0/0)	 6(0/1/0)
 scc	Dn			4	0	 4(0/0/0)	 4(0/1/0)
#scc	Mem			0	1	 5(0/0/1)	 5(0/1/1)
 tas	Dn			4	0	 4(0/0/0)	 4(0/1/0)
#tas	Mem			3	0	12(1/0/1)	12(1/1/1)
 tst	Dn			0	0	 2(0/0/0)	 2(0/1/0)
*tst	Mem			0	0	 2(0/0/0)	 2(0/1/0)
 ls?	#(data),Dy		4	0	 4(0/0/0)	 4(0/1/0)
 ls?	Dx,Dy (shift << size)	6	0	 6(0/0/0)	 6(0/1/0)
 ls?	Dx,Dy (shift >> size)	8	0	 8(0/0/0)	 8(0/1/0)
*ls?	Mem (by one)		0	0	 4(0/0/1)	 4(0/1/1)
 asl	#(data),Dy		2	0	 6(0/0/0)	 6(0/1/0)
 asl	Dx,Dy			4	0	 8(0/0/0)	 8(0/1/0)
 asl	Mem (by one)		0	0	 6(0/0/0)	 6(0/1/0)
 asr	#(data),Dy		4	0	 4(0/0/0)	 4(0/1/0)
 asr	Dx,Dy (shift << size)	6	0	 6(0/0/0)	 6(0/1/0)
 asr	Dx,Dy (shift >> size)	10	0	10(0/0/0)	10(0/1/0)
*asr	Mem (by one)		0	0	 4(0/0/0)	 4(0/1/0)
 ro?	#(data),Dy		4	0	 6(0/0/0)	 6(0/1/0)
 ro?	Dx,Dy			6	0	 8(0/0/0)	 8(0/1/0)
*ro?	Mem (by one)		0	0	 6(0/0/1)	 6(0/1/1)
 rox?	Dn			10	0	12(0/0/0)	12(0/1/0)
*rox?	Mem (by one)		0	0	 4(0/0/0)	 4(0/1/0)
 btst	#(data),Dn		4	0	 4(0/0/0)	 4(0/1/0)
 btst	Dn,Dn			4	0	 4(0/0/0)	 4(0/1/0)
!btst	#(data),Mem		0	0	 4(0/0/0)	 4(0/1/0)
*btst	Dn,Mem			0	0	 4(0/0/0)	 4(0/1/0)
 bchg	#(data),Dn		6	0	 6(0/0/0)	 6(0/1/0)
 bchg	Dn,Dn			6	0	 6(0/0/0)	 6(0/1/0)
!bchg	#(data),Mem		0	0	 6(0/0/1)	 6(0/1/1)
*bchg	Dn,Mem			0	0	 6(0/0/1)	 6(0/1/1)
 bclr	#(data),Dn		6	0	 6(0/0/0)	 6(0/1/0)
 bclr	Dn,Dn			6	0	 6(0/0/0)	 6(0/1/0)
!bclr	#(data),Mem		0	0	 6(0/0/1)	 6(0/1/1)
*bclr	Dn,Mem			0	0	 6(0/0/1)	 6(0/1/1)
 bset	#(data),Dn		6	0	 6(0/0/0)	 6(0/1/0)
 bset	Dn,Dn			6	0	 6(0/0/0)	 6(0/1/0)
!bset	#(data),Mem		0	0	 6(0/0/1)	 6(0/1/1)
%bset	Dn,Mem			0	0	 6(0/0/1)	 6(0/1/1)
 bftst	Dn			8	0	 8(0/0/0)	 8(0/1/0)
%bftst	Mem (< 5 bytes)		6	0	10(1/0/0)	10(1/1/0)
%bftst	Mem (> 5 bytes)		6	0	14(2/0/0)	14(2/1/0)
 bfchg	Dn			14	0	14(0/0/0)	14(0/1/0)
%bfchg	Mem (< 5 bytes)		6	0	14(1/0/1)	14(1/1/1)
%bfchg	Mem (> 5 bytes)		6	0	22(2/0/2)	22(2/1/2)
 bfclr	Dn			14	0	14(0/0/0)	14(0/1/0)
%bfclr	Mem (< 5 bytes)		6	0	14(1/0/1)	14(1/1/1)
%bfclr	Mem (> 5 bytes)		6	0	22(2/0/2)	22(2/1/2)
 bfset	Dn			14	0	14(0/0/0)	14(0/1/0)
%bfset	Mem (< 5 bytes)		6	0	14(1/0/1)	14(1/1/1)
%bfset	Mem (> 5 bytes)		6	0	22(2/0/2)	22(2/1/2)
 bfexts	Dn			10	0	10(0/0/0)	10(0/1/0)
%bfexts Mem (< 5 bytes)		6	0	12(1/0/0)	12(1/1/0)
%bfexts	Mem (> 5 bytes)		6	0	18(2/0/0)	18(2/1/0)
 bfextu	Dn			10	0	10(0/0/0)	10(0/1/0)
%bfextu Mem (< 5 bytes)		6	0	12(1/0/0)	12(1/1/0)
%bfextu	Mem (> 5 bytes)		6	0	18(2/0/0)	18(2/1/0)
 bfins	Dn			12	0	12(0/0/0)	12(0/1/0)
%bfins	Mem (< 5 bytes)		6	0	12(1/0/1)	12(1/1/1)
%bfins	Mem (> 5 bytes)		6	0	18(2/0/2)	18(2/1/2)
 bfffo	Dn			20	0	20(0/0/0)	20(0/1/0)
%bfffo	Mem (< 5 bytes)		6	0	22(1/0/0)	22(1/1/0)
%bfffo	Mem (> 5 bytes)		6	0	28(2/0/0)	28(2/1/0)
 bcc	(taken)			6	0	 6(0/0/0)	 8(0/2/0)
 bcc.b	(not taken)		4	0	 4(0/0/0)	 4(0/1/0)
 bcc.w	(not taken)		6	0	 6(0/0/0)	 6(0/1/0)
 bcc.l	(not taken)		6	0	 6(0/0/0)	 8(0/2/0)
 dbcc	(false,cnt not expired)	6	0	 6(0/0/0)	 8(0/2/0)
 dbcc	(false,but cnt expired)	10	0	10(0/0/0)	13(0/3/0)
 dbcc	(true)			6	0	 6(0/0/0)	 8(0/1/0)
 andi to sr			4	0	12(0/0/0)	14(0/2/0)
 eori to sr			4	0	12(0/0/0)	14(0/2/0)
 ori to sr			4	0	12(0/0/0)	14(0/2/0)
 andi to ccr			4	0	12(0/0/0)	14(0/2/0)
 eori to ccr			4	0	12(0/0/0)	14(0/2/0)
 ori to ccr			4	0	12(0/0/0)	14(0/2/0)
 bsr				2	0	 6(0/0/1)	 9(0/2/1)
%cas (succesful compare)	1	0	13(1/0/1)	13(1/1/1)
%cas (unsuccesful compare)	1	0	11(1/0/0)	11(1/1/0)
 cas2 (succesful compare) (max)	2	0	24(2/0/2)	26(2/2/2)
 cas2 (unsuccesful compare)(max)2	0	24(2/0/0)	24(2/2/0)
 chk Dn,Dn (no Exception)	8	0	 8(0/0/0)	 8(0/1/0)
 chk Dn,Dn (Exception taken)	4	0	28(1/0/4)	30(1/3/4)
 chk EA,Dn (no Exception)	0	0	 8(0/0/0)	 8(0/1/0)
 chk EA,Dn (Exception taken)max	0	0	28(1/0/4)	30(1/3/4)
!chk2 Mem,Rn (no Exception)max	2	0	18(1/0/0)	18(1/1/0)
!chk2 Mem,Rn (Exception taken)mx2	0	40(2/0/4)	42(2/3/4)
jjmp				4	0	 4(0/0/0)	 6(0/2/0)
jjsr				0	0	 4(0/0/1)	 7(0/2/1)
#lea				2	0	 2(0/0/0)	 2(0/1/0)
 link.w				0	0	 4(0/0/1)	 5(0/1/1)
 link.l				2	0	 6(0/0/1)	 7(0/2/1)
 nop				0	0	 2(0/0/0)	 2(0/1/0)
#pea				0	2	 4(0/0/1)	 4(0/1/1)
 rtd				2	0	10(1/0/0)	12(1/2/0)
 rtr				1	0	12(2/0/0)	14(2/2/0)
 rts				1	0	 9(1/0/0)	11(1/2/0)
 unlk				0	0	 5(1/0/0)	 5(1/1/0)
 bkpt				1	0	 9(1/0/0)	 9(1/0/0)
 Interrupt (I-Stack)		0	0	23(2/0/4)	24(2/2/4)
 Interrupt (M-Stack)		0	0	33(2/0/8)	34(2/2/8)
 reset				0	0      518(0/0/0)      518(0/1/0)
 stop				0	0	 8(0/0/0)	 8(0/2/0)
 trace				0	0	22(1/0/5)	24(1/2/5)
 trap #n			0	0	18(1/0/5)	20(1/2/4)
 Illegal Instruction		0	0	18(1/0/5)	20(1/2/4)
 A-Line trap			0	0	18(1/0/5)	20(1/2/4)
 F-Line trap			0	0	18(1/0/5)	20(1/2/4)
 Priviledge Violation		0	0	18(1/0/5)	20(1/2/4)
 trapcc (Trap)			2	0	22(1/0/5)	24(1/2/5)
 trapcc (No trap)		4	0	 4(0/0/0)	 4(0/1/0)
 trapcc.w (Trap)		5	0	24(1/0/5)	26(1/3/5)
 trapcc.w (No trap)		6	0	 6(0/0/0)	 6(0/1/0)
 trapcc.l (Trap)		6	0	26(1/0/5)	28(1/3/5)
 trapcc.l (No trap)		8	0	 8(0/0/0)	 8(0/2/0)
 trapv (Trap)			2	0	22(1/0/5)	24(1/2/5)
 trapv (No trap)		4	0	 4(0/0/0)	 4(0/1/0)

 Bus Cycle Fault (Short)	0	0	36(1/0/10)	38(1/2/10)
 Bus Cycle Fault (Long) 	0	0	62(1/0/24)	64(1/2/24)
 RTE (Normal Four Word)		1	0	18(4/0/0)	20(4/2/0)
 RTE (Six Word)			1	0	18(4/0/0)	20(4/2/0)
 RTE (Throwaway)		1	0	12(4/0/0)	12(4/0/0)
 RTE (Coprocessor)		1	0	26(7/0/0)	26(7/2/0)
 RTE (Short Fault)          	1	0	36(10/0/0)	26(10/2/0)
 RTE (Long Fault)       	1	0	76(25/0/0)	76(25/2/0)

HTML Conversion by AG2HTML.pl V2.941126c, perl $RCSfile: 68030it.HTML,v $$Revision: 1.1 $$Date: 1999/09/14 21:14:06 $ Patch level: 36 & witbrock@cs.cmu.edu