2008-06-24 11:33:03 +10:00
/ *
* Copyright 2 0 0 8 M i c h a e l E l l e r m a n , I B M C o r p o r a t i o n .
*
*
* This p r o g r a m i s f r e e s o f t w a r e ; you can redistribute it and/or
* modify i t u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e
* as p u b l i s h e d b y t h e F r e e S o f t w a r e F o u n d a t i o n ; either version
* 2 of t h e L i c e n s e , o r ( a t y o u r o p t i o n ) a n y l a t e r v e r s i o n .
* /
# include < a s m / f e a t u r e - f i x u p s . h >
# include < a s m / p p c _ a s m . h >
2008-07-02 01:16:40 +10:00
# include < a s m / s y n c h . h >
2008-06-24 11:33:03 +10:00
.text
# define g l o b l ( x ) \
.globl x; \
x :
globl( f t r _ f i x u p _ t e s t 1 )
or 1 ,1 ,1
or 2 ,2 ,2 / * f i x u p w i l l n o p o u t t h i s i n s t r u c t i o n * /
or 3 ,3 ,3
globl( e n d _ f t r _ f i x u p _ t e s t 1 )
globl( f t r _ f i x u p _ t e s t 1 _ o r i g )
or 1 ,1 ,1
or 2 ,2 ,2
or 3 ,3 ,3
globl( f t r _ f i x u p _ t e s t 1 _ e x p e c t e d )
or 1 ,1 ,1
nop
or 3 ,3 ,3
globl( f t r _ f i x u p _ t e s t 2 )
or 1 ,1 ,1
or 2 ,2 ,2 / * f i x u p w i l l r e p l a c e t h i s w i t h f t r _ f i x u p _ t e s t 2 _ a l t * /
or 3 ,3 ,3
globl( e n d _ f t r _ f i x u p _ t e s t 2 )
globl( f t r _ f i x u p _ t e s t 2 _ o r i g )
or 1 ,1 ,1
or 2 ,2 ,2
or 3 ,3 ,3
globl( f t r _ f i x u p _ t e s t 2 _ a l t )
or 3 1 ,3 1 ,3 1
globl( f t r _ f i x u p _ t e s t 2 _ e x p e c t e d )
or 1 ,1 ,1
or 3 1 ,3 1 ,3 1
or 3 ,3 ,3
globl( f t r _ f i x u p _ t e s t 3 )
or 1 ,1 ,1
or 2 ,2 ,2 / * f i x u p w i l l f a i l t o r e p l a c e t h i s * /
or 3 ,3 ,3
globl( e n d _ f t r _ f i x u p _ t e s t 3 )
globl( f t r _ f i x u p _ t e s t 3 _ o r i g )
or 1 ,1 ,1
or 2 ,2 ,2
or 3 ,3 ,3
globl( f t r _ f i x u p _ t e s t 3 _ a l t )
or 3 1 ,3 1 ,3 1
or 3 1 ,3 1 ,3 1
globl( f t r _ f i x u p _ t e s t 4 )
or 1 ,1 ,1
or 2 ,2 ,2
or 2 ,2 ,2
or 2 ,2 ,2
or 2 ,2 ,2
or 3 ,3 ,3
globl( e n d _ f t r _ f i x u p _ t e s t 4 )
globl( f t r _ f i x u p _ t e s t 4 _ e x p e c t e d )
or 1 ,1 ,1
or 3 1 ,3 1 ,3 1
or 3 1 ,3 1 ,3 1
nop
nop
or 3 ,3 ,3
globl( f t r _ f i x u p _ t e s t 4 _ o r i g )
or 1 ,1 ,1
or 2 ,2 ,2
or 2 ,2 ,2
or 2 ,2 ,2
or 2 ,2 ,2
or 3 ,3 ,3
globl( f t r _ f i x u p _ t e s t 4 _ a l t )
or 3 1 ,3 1 ,3 1
or 3 1 ,3 1 ,3 1
globl( f t r _ f i x u p _ t e s t 5 )
or 1 ,1 ,1
BEGIN_ F T R _ S E C T I O N
or 2 ,2 ,2
or 2 ,2 ,2
or 2 ,2 ,2
or 2 ,2 ,2
or 2 ,2 ,2
or 2 ,2 ,2
or 2 ,2 ,2
FTR_ S E C T I O N _ E L S E
2 : b 3 f
3 : or 5 ,5 ,5
beq 3 b
b 1 f
or 6 ,6 ,6
b 2 b
1 : bdnz 3 b
ALT_ F T R _ S E C T I O N _ E N D ( 0 , 1 )
or 1 ,1 ,1
globl( e n d _ f t r _ f i x u p _ t e s t 5 )
globl( f t r _ f i x u p _ t e s t 5 _ e x p e c t e d )
or 1 ,1 ,1
2 : b 3 f
3 : or 5 ,5 ,5
beq 3 b
b 1 f
or 6 ,6 ,6
b 2 b
1 : bdnz 3 b
or 1 ,1 ,1
globl( f t r _ f i x u p _ t e s t 6 )
1 : or 1 ,1 ,1
BEGIN_ F T R _ S E C T I O N
or 5 ,5 ,5
2008-07-02 01:16:16 +10:00
2 : PPC_ L C M P I r3 ,0
2008-06-24 11:33:03 +10:00
beq 4 f
blt 2 b
b 1 b
b 4 f
FTR_ S E C T I O N _ E L S E
2 : or 2 ,2 ,2
2008-07-02 01:16:16 +10:00
PPC_ L C M P I r3 ,1
2008-06-24 11:33:03 +10:00
beq 3 f
blt 2 b
b 3 f
b 1 b
ALT_ F T R _ S E C T I O N _ E N D ( 0 , 1 )
3 : or 1 ,1 ,1
or 2 ,2 ,2
4 : or 3 ,3 ,3
globl( e n d _ f t r _ f i x u p _ t e s t 6 )
globl( f t r _ f i x u p _ t e s t 6 _ e x p e c t e d )
1 : or 1 ,1 ,1
2 : or 2 ,2 ,2
2008-07-02 01:16:16 +10:00
PPC_ L C M P I r3 ,1
2008-06-24 11:33:03 +10:00
beq 3 f
blt 2 b
b 3 f
b 1 b
2 : or 1 ,1 ,1
or 2 ,2 ,2
3 : or 3 ,3 ,3
# define M A K E _ M A C R O _ T E S T ( T Y P E ) \
globl( f t r _ f i x u p _ t e s t _ ## T Y P E # # _ m a c r o s ) \
or 1 ,1 ,1 ; \
/* Basic test, this section should all be nop'ed */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
END_ ## T Y P E # # _ S E C T I O N ( 0 , 1 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Basic test, this section should NOT be nop'ed */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
END_ ## T Y P E # # _ S E C T I O N ( 0 , 0 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nesting test, inner section should be nop'ed */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 80 ) \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
END_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 0 , 1 , 8 0 ) \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
END_ ## T Y P E # # _ S E C T I O N ( 0 , 0 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nesting test, whole section should be nop'ed */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 80 ) \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
END_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 0 , 0 , 8 0 ) \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
END_ ## T Y P E # # _ S E C T I O N ( 0 , 1 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nesting test, none should be nop'ed */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 80 ) \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
END_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 0 , 0 , 8 0 ) \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
END_ ## T Y P E # # _ S E C T I O N ( 0 , 0 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Basic alt section test, default case should be taken */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
# # TYPE## _ S E C T I O N _ E L S E \
or 5 ,5 ,5 ; \
or 5 ,5 ,5 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 0 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Basic alt section test, else case should be taken */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
# # TYPE## _ S E C T I O N _ E L S E \
or 3 1 ,3 1 ,3 1 ; \
or 3 1 ,3 1 ,3 1 ; \
or 3 1 ,3 1 ,3 1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 1 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Alt with smaller else case, should be padded with nops */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
# # TYPE## _ S E C T I O N _ E L S E \
or 3 1 ,3 1 ,3 1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 1 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Alt section with nested section in default case */ \
/* Default case should be taken, with nop'ed inner section */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 3 ,3 ,3 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 95 ) \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
END_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 0 , 1 , 9 5 ) \
or 3 ,3 ,3 ; \
# # TYPE## _ S E C T I O N _ E L S E \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 0 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Alt section with nested section in else, default taken */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
# # TYPE## _ S E C T I O N _ E L S E \
or 5 ,5 ,5 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 95 ) \
or 3 ,3 ,3 ; \
END_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 0 , 1 , 9 5 ) \
or 5 ,5 ,5 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 0 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Alt section with nested section in else, else taken & nop */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
# # TYPE## _ S E C T I O N _ E L S E \
or 5 ,5 ,5 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 95 ) \
or 3 ,3 ,3 ; \
END_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 0 , 1 , 9 5 ) \
or 5 ,5 ,5 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 1 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Feature section with nested alt section, default taken */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 95 ) \
or 1 ,1 ,1 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 95 ) \
or 5 ,5 ,5 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 0 , 9 5 ) \
or 2 ,2 ,2 ; \
END_ ## T Y P E # # _ S E C T I O N ( 0 , 0 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Feature section with nested alt section, else taken */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 95 ) \
or 1 ,1 ,1 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 95 ) \
or 5 ,5 ,5 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 1 , 9 5 ) \
or 2 ,2 ,2 ; \
END_ ## T Y P E # # _ S E C T I O N ( 0 , 0 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Feature section with nested alt section, all nop'ed */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 95 ) \
or 1 ,1 ,1 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 95 ) \
or 5 ,5 ,5 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 0 , 9 5 ) \
or 2 ,2 ,2 ; \
END_ ## T Y P E # # _ S E C T I O N ( 0 , 1 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nested alt sections, default with inner default taken */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 95 ) \
or 1 ,1 ,1 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 95 ) \
or 5 ,5 ,5 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 0 , 9 5 ) \
or 2 ,2 ,2 ; \
# # TYPE## _ S E C T I O N _ E L S E \
or 3 1 ,3 1 ,3 1 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 94 ) \
or 5 ,5 ,5 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 94 ) \
or 1 ,1 ,1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 0 , 9 4 ) \
or 3 1 ,3 1 ,3 1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 0 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nested alt sections, default with inner else taken */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 95 ) \
or 1 ,1 ,1 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 95 ) \
or 5 ,5 ,5 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 1 , 9 5 ) \
or 2 ,2 ,2 ; \
# # TYPE## _ S E C T I O N _ E L S E \
or 3 1 ,3 1 ,3 1 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 94 ) \
or 5 ,5 ,5 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 94 ) \
or 1 ,1 ,1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 0 , 9 4 ) \
or 3 1 ,3 1 ,3 1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 0 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nested alt sections, else with inner default taken */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 95 ) \
or 1 ,1 ,1 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 95 ) \
or 5 ,5 ,5 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 1 , 9 5 ) \
or 2 ,2 ,2 ; \
# # TYPE## _ S E C T I O N _ E L S E \
or 3 1 ,3 1 ,3 1 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 94 ) \
or 5 ,5 ,5 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 94 ) \
or 1 ,1 ,1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 0 , 9 4 ) \
or 3 1 ,3 1 ,3 1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 1 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nested alt sections, else with inner else taken */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 95 ) \
or 1 ,1 ,1 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 95 ) \
or 5 ,5 ,5 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 1 , 9 5 ) \
or 2 ,2 ,2 ; \
# # TYPE## _ S E C T I O N _ E L S E \
or 3 1 ,3 1 ,3 1 ; \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 94 ) \
or 5 ,5 ,5 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 94 ) \
or 1 ,1 ,1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 1 , 9 4 ) \
or 3 1 ,3 1 ,3 1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 1 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nested alt sections, else can have large else case */ \
BEGIN_ ## T Y P E # # _ S E C T I O N \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
# # TYPE## _ S E C T I O N _ E L S E \
BEGIN_ ## T Y P E # # _ S E C T I O N _ N E S T E D ( 94 ) \
or 5 ,5 ,5 ; \
or 5 ,5 ,5 ; \
or 5 ,5 ,5 ; \
or 5 ,5 ,5 ; \
# # TYPE## _ S E C T I O N _ E L S E _ N E S T E D ( 94 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D _ N E S T E D ( 0 , 1 , 9 4 ) \
ALT_ ## T Y P E # # _ S E C T I O N _ E N D ( 0 , 1 ) \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ;
# define M A K E _ M A C R O _ T E S T _ E X P E C T E D ( T Y P E ) \
globl( f t r _ f i x u p _ t e s t _ ## T Y P E # # _ m a c r o s _ e x p e c t e d ) \
or 1 ,1 ,1 ; \
/* Basic test, this section should all be nop'ed */ \
/* BEGIN_##TYPE##_SECTION */ \
nop; \
nop; \
nop; \
/* END_##TYPE##_SECTION(0, 1) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Basic test, this section should NOT be nop'ed */ \
/* BEGIN_##TYPE##_SECTION */ \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
/* END_##TYPE##_SECTION(0, 0) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nesting test, inner section should be nop'ed */ \
/* BEGIN_##TYPE##_SECTION */ \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
/* BEGIN_##TYPE##_SECTION_NESTED(80) */ \
nop; \
nop; \
/* END_##TYPE##_SECTION_NESTED(0, 1, 80) */ \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
/* END_##TYPE##_SECTION(0, 0) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nesting test, whole section should be nop'ed */ \
/* NB. inner section is not nop'ed, but then entire outer is */ \
/* BEGIN_##TYPE##_SECTION */ \
nop; \
nop; \
/* BEGIN_##TYPE##_SECTION_NESTED(80) */ \
nop; \
nop; \
/* END_##TYPE##_SECTION_NESTED(0, 0, 80) */ \
nop; \
nop; \
/* END_##TYPE##_SECTION(0, 1) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nesting test, none should be nop'ed */ \
/* BEGIN_##TYPE##_SECTION */ \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
/* BEGIN_##TYPE##_SECTION_NESTED(80) */ \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
/* END_##TYPE##_SECTION_NESTED(0, 0, 80) */ \
or 2 ,2 ,2 ; \
or 2 ,2 ,2 ; \
/* END_##TYPE##_SECTION(0, 0) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Basic alt section test, default case should be taken */ \
/* BEGIN_##TYPE##_SECTION */ \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
/* ##TYPE##_SECTION_ELSE */ \
/* or 5,5,5; */ \
/* or 5,5,5; */ \
/* ALT_##TYPE##_SECTION_END(0, 0) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Basic alt section test, else case should be taken */ \
/* BEGIN_##TYPE##_SECTION */ \
/* or 3,3,3; */ \
/* or 3,3,3; */ \
/* or 3,3,3; */ \
/* ##TYPE##_SECTION_ELSE */ \
or 3 1 ,3 1 ,3 1 ; \
or 3 1 ,3 1 ,3 1 ; \
or 3 1 ,3 1 ,3 1 ; \
/* ALT_##TYPE##_SECTION_END(0, 1) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Alt with smaller else case, should be padded with nops */ \
/* BEGIN_##TYPE##_SECTION */ \
/* or 3,3,3; */ \
/* or 3,3,3; */ \
/* or 3,3,3; */ \
/* ##TYPE##_SECTION_ELSE */ \
or 3 1 ,3 1 ,3 1 ; \
nop; \
nop; \
/* ALT_##TYPE##_SECTION_END(0, 1) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Alt section with nested section in default case */ \
/* Default case should be taken, with nop'ed inner section */ \
/* BEGIN_##TYPE##_SECTION */ \
or 3 ,3 ,3 ; \
/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
nop; \
nop; \
/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \
or 3 ,3 ,3 ; \
/* ##TYPE##_SECTION_ELSE */ \
/* or 2,2,2; */ \
/* or 2,2,2; */ \
/* ALT_##TYPE##_SECTION_END(0, 0) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Alt section with nested section in else, default taken */ \
/* BEGIN_##TYPE##_SECTION */ \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
or 3 ,3 ,3 ; \
/* ##TYPE##_SECTION_ELSE */ \
/* or 5,5,5; */ \
/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
/* or 3,3,3; */ \
/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \
/* or 5,5,5; */ \
/* ALT_##TYPE##_SECTION_END(0, 0) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Alt section with nested section in else, else taken & nop */ \
/* BEGIN_##TYPE##_SECTION */ \
/* or 3,3,3; */ \
/* or 3,3,3; */ \
/* or 3,3,3; */ \
/* ##TYPE##_SECTION_ELSE */ \
or 5 ,5 ,5 ; \
/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
nop; \
/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \
or 5 ,5 ,5 ; \
/* ALT_##TYPE##_SECTION_END(0, 1) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Feature section with nested alt section, default taken */ \
/* BEGIN_##TYPE##_SECTION */ \
or 2 ,2 ,2 ; \
/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
or 1 ,1 ,1 ; \
/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
/* or 5,5,5; */ \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \
or 2 ,2 ,2 ; \
/* END_##TYPE##_SECTION(0, 0) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Feature section with nested alt section, else taken */ \
/* BEGIN_##TYPE##_SECTION */ \
or 2 ,2 ,2 ; \
/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
/* or 1,1,1; */ \
/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
or 5 ,5 ,5 ; \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \
or 2 ,2 ,2 ; \
/* END_##TYPE##_SECTION(0, 0) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Feature section with nested alt section, all nop'ed */ \
/* BEGIN_##TYPE##_SECTION */ \
nop; \
/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
nop; \
/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
/* or 5,5,5; */ \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \
nop; \
/* END_##TYPE##_SECTION(0, 1) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nested alt sections, default with inner default taken */ \
/* BEGIN_##TYPE##_SECTION */ \
or 2 ,2 ,2 ; \
/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
or 1 ,1 ,1 ; \
/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
/* or 5,5,5; */ \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \
or 2 ,2 ,2 ; \
/* ##TYPE##_SECTION_ELSE */ \
/* or 31,31,31; */ \
/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \
/* or 5,5,5; */ \
/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \
/* or 1,1,1; */ \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \
/* or 31,31,31; */ \
/* ALT_##TYPE##_SECTION_END(0, 0) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nested alt sections, default with inner else taken */ \
/* BEGIN_##TYPE##_SECTION */ \
or 2 ,2 ,2 ; \
/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
/* or 1,1,1; */ \
/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
or 5 ,5 ,5 ; \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \
or 2 ,2 ,2 ; \
/* ##TYPE##_SECTION_ELSE */ \
/* or 31,31,31; */ \
/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \
/* or 5,5,5; */ \
/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \
/* or 1,1,1; */ \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \
/* or 31,31,31; */ \
/* ALT_##TYPE##_SECTION_END(0, 0) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nested alt sections, else with inner default taken */ \
/* BEGIN_##TYPE##_SECTION */ \
/* or 2,2,2; */ \
/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
/* or 1,1,1; */ \
/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
/* or 5,5,5; */ \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \
/* or 2,2,2; */ \
/* ##TYPE##_SECTION_ELSE */ \
or 3 1 ,3 1 ,3 1 ; \
/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \
or 5 ,5 ,5 ; \
/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \
/* or 1,1,1; */ \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \
or 3 1 ,3 1 ,3 1 ; \
/* ALT_##TYPE##_SECTION_END(0, 1) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nested alt sections, else with inner else taken */ \
/* BEGIN_##TYPE##_SECTION */ \
/* or 2,2,2; */ \
/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
/* or 1,1,1; */ \
/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
/* or 5,5,5; */ \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \
/* or 2,2,2; */ \
/* ##TYPE##_SECTION_ELSE */ \
or 3 1 ,3 1 ,3 1 ; \
/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \
/* or 5,5,5; */ \
/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \
or 1 ,1 ,1 ; \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */ \
or 3 1 ,3 1 ,3 1 ; \
/* ALT_##TYPE##_SECTION_END(0, 1) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* Nested alt sections, else can have large else case */ \
/* BEGIN_##TYPE##_SECTION */ \
/* or 2,2,2; */ \
/* or 2,2,2; */ \
/* or 2,2,2; */ \
/* or 2,2,2; */ \
/* ##TYPE##_SECTION_ELSE */ \
/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \
/* or 5,5,5; */ \
/* or 5,5,5; */ \
/* or 5,5,5; */ \
/* or 5,5,5; */ \
/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ; \
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */ \
/* ALT_##TYPE##_SECTION_END(0, 1) */ \
or 1 ,1 ,1 ; \
or 1 ,1 ,1 ;
MAKE_ M A C R O _ T E S T ( F T R ) ;
MAKE_ M A C R O _ T E S T _ E X P E C T E D ( F T R ) ;
# ifdef C O N F I G _ P P C 6 4
MAKE_ M A C R O _ T E S T ( F W _ F T R ) ;
MAKE_ M A C R O _ T E S T _ E X P E C T E D ( F W _ F T R ) ;
# endif
2008-07-02 01:16:40 +10:00
globl( l w s y n c _ f i x u p _ t e s t )
1 : or 1 ,1 ,1
LWSYNC
globl( e n d _ l w s y n c _ f i x u p _ t e s t )
globl( l w s y n c _ f i x u p _ t e s t _ e x p e c t e d _ L W S Y N C )
1 : or 1 ,1 ,1
lwsync
globl( l w s y n c _ f i x u p _ t e s t _ e x p e c t e d _ S Y N C )
1 : or 1 ,1 ,1
sync