diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/xstormy16/sfr')
70 files changed, 2218 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/01_const_to_sfrb.c b/gcc/testsuite/gcc.target/xstormy16/sfr/01_const_to_sfrb.c new file mode 100644 index 000000000..96e4adcfb --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/01_const_to_sfrb.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b 32532,#18" } } */ + +#define SFR (*((volatile unsigned char*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +void +Do (void) +{ + SFR = 0x12; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0x12) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/02_const_to_sfrw.c b/gcc/testsuite/gcc.target/xstormy16/sfr/02_const_to_sfrw.c new file mode 100644 index 000000000..930ba4d96 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/02_const_to_sfrw.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w 32532,#4660" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR = 0x1234; +} + +int +main (void) +{ + *p = 0x9876; + Do (); + return (*p == 0x1234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/03_var_to_sfrb.c b/gcc/testsuite/gcc.target/xstormy16/sfr/03_var_to_sfrb.c new file mode 100644 index 000000000..8c4b1f1c7 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/03_var_to_sfrb.c @@ -0,0 +1,21 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b 32532,r" } } */ + +#define SFR (*((volatile unsigned char*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +unsigned char yData = 0x12; + +void +Do (void) +{ + SFR = yData; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0x12) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/04_var_to_sfrw.c b/gcc/testsuite/gcc.target/xstormy16/sfr/04_var_to_sfrw.c new file mode 100644 index 000000000..c8d4a0e66 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/04_var_to_sfrw.c @@ -0,0 +1,21 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w 32532,r" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +unsigned short wData = 0x1234; + +void +Do (void) +{ + SFR = wData; +} + +int +main (void) +{ + *p = 0x9876; + Do (); + return (*p == 0x1234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/05_sfrb_to_var.c b/gcc/testsuite/gcc.target/xstormy16/sfr/05_sfrb_to_var.c new file mode 100644 index 000000000..9471e295a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/05_sfrb_to_var.c @@ -0,0 +1,21 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b r., *32532" } } */ + +#define SFR (*((volatile unsigned char*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +unsigned char yData = 0x12; + +void +Do (void) +{ + yData = SFR; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (yData == 0x34) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/06_sfrw_to_var.c b/gcc/testsuite/gcc.target/xstormy16/sfr/06_sfrw_to_var.c new file mode 100644 index 000000000..39cbab5c3 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/06_sfrw_to_var.c @@ -0,0 +1,21 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r6,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +unsigned short wData = 0x9876; + +void +Do (void) +{ + wData = SFR; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (wData == 0x1234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_0.c new file mode 100644 index 000000000..644afb59c --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_0.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 32532,#0" } } */ + +#define SFR (*((volatile unsigned char*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +void +Do (void) +{ + SFR |= 0x01; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0x35) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_7.c new file mode 100644 index 000000000..90cd3c83f --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_7.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 32532,#7" } } */ + +#define SFR (*((volatile unsigned char*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +void +Do (void) +{ + SFR |= 0x80; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0xb4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_0.c new file mode 100644 index 000000000..59d6153ed --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_0.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 32532,#0" } } */ + +#define SFR (*((volatile unsigned char*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +void +Do (void) +{ + SFR &= ~0x01; +} + +int +main (void) +{ + *p = 0xcb; + Do (); + return (*p == 0xca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_7.c new file mode 100644 index 000000000..0cb7e1761 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_7.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 32532,#7" } } */ + +#define SFR (*((volatile unsigned char*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +void +Do (void) +{ + SFR &= ~0x80; +} + +int +main (void) +{ + *p = 0xcb; + Do (); + return (*p == 0x4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_0.c new file mode 100644 index 000000000..54b0b1f6d --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_0.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +#define SFRA (*((volatile unsigned char*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile unsigned char*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (SFRA & 0x01) + { + if (SFRB & 0x01) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xcb; + *pB = 0x34; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_3.c new file mode 100644 index 000000000..4a575cc99 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_3.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +#define SFRA (*((volatile unsigned char*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile unsigned char*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (SFRA & 0x08) + { + if (SFRB & 0x08) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xcb; + *pB = 0x34; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_7.c new file mode 100644 index 000000000..747cbdd94 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_7.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +#define SFRA (*((volatile unsigned char*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile unsigned char*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (SFRA & 0x80) + { + if (SFRB & 0x80) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xcb; + *pB = 0x34; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_0.c new file mode 100644 index 000000000..d14969206 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_0.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +#define SFRA (*((volatile unsigned char*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile unsigned char*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (!(SFRA & 0x01)) + { + if (!(SFRB & 0x01)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x34; + *pB = 0xcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_3.c new file mode 100644 index 000000000..be6112cf1 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_3.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +#define SFRA (*((volatile unsigned char*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile unsigned char*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (!(SFRA & 0x08)) + { + if (!(SFRB & 0x08)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x34; + *pB = 0xcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_7.c new file mode 100644 index 000000000..12e68cd5b --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_7.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +#define SFRA (*((volatile unsigned char*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile unsigned char*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (!(SFRA & 0x80)) + { + if (!(SFRB & 0x80)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x34; + *pB = 0xcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_0.c new file mode 100644 index 000000000..00f4f78cc --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_0.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR |= 0x0001; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x1235) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_3.c new file mode 100644 index 000000000..b5741fc48 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_3.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR |= 0x0008; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x123c) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_7.c new file mode 100644 index 000000000..ffcad45b2 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_7.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR |= 0x0080; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x12b4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_8.c new file mode 100644 index 000000000..3f19329f2 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_8.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR |= 0x0100; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x1334) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_b.c b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_b.c new file mode 100644 index 000000000..b5e8bb9e2 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_b.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR |= 0x0800; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x1a34) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_f.c new file mode 100644 index 000000000..767e95ff4 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_f.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR |= 0x8000; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x9234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_0.c new file mode 100644 index 000000000..fcabe0994 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_0.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR &= ~0x0001; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xedca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_3.c new file mode 100644 index 000000000..26281be87 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_3.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR &= ~0x0008; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xedc3) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_7.c new file mode 100644 index 000000000..15ff063f4 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_7.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR &= ~0x0080; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xed4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_8.c new file mode 100644 index 000000000..c44817a73 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_8.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR &= ~0x0100; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xeccb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_b.c b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_b.c new file mode 100644 index 000000000..9f1c3a5e7 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_b.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR &= ~0x0800; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xe5cb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_f.c new file mode 100644 index 000000000..46eef43c4 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_f.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFR (*((volatile unsigned short*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR &= ~0x8000; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0x6dcb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_0.c new file mode 100644 index 000000000..287dd7a83 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_0.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA & 0x0001) + { + if (SFRB & 0x0001) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_3.c new file mode 100644 index 000000000..719fa58df --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_3.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA & 0x0008) + { + if (SFRB & 0x0008) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_7.c new file mode 100644 index 000000000..1b361c5fe --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_7.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA & 0x0080) + { + if (SFRB & 0x0080) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_8.c new file mode 100644 index 000000000..c8a3ba7cb --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_8.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA & 0x0100) + { + if (SFRB & 0x0100) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_b.c b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_b.c new file mode 100644 index 000000000..a0f5742c1 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_b.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA & 0x0800) + { + if (SFRB & 0x0800) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_f.c new file mode 100644 index 000000000..5e91bb23e --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_f.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA & 0x8000) + { + if (SFRB & 0x8000) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_0.c new file mode 100644 index 000000000..ac5d87fe3 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_0.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!(SFRA & 0x0001)) + { + if (!(SFRB & 0x0001)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_3.c new file mode 100644 index 000000000..fa77f1bd1 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_3.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!(SFRA & 0x0008)) + { + if (!(SFRB & 0x0008)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_7.c new file mode 100644 index 000000000..cb331f034 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_7.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!(SFRA & 0x0080)) + { + if (!(SFRB & 0x0080)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_8.c new file mode 100644 index 000000000..105bf4d8d --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_8.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!(SFRA & 0x0100)) + { + if (!(SFRB & 0x0100)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_b.c b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_b.c new file mode 100644 index 000000000..768cfb92b --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_b.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!(SFRA & 0x0800)) + { + if (!(SFRB & 0x0800)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_f.c new file mode 100644 index 000000000..533a3c61a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_f.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,32532" } } */ + +#define SFRA (*((volatile unsigned short*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile unsigned short*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!(SFRA & 0x8000)) + { + if (!(SFRB & 0x8000)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_0.c new file mode 100644 index 000000000..3879ed438 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_0.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 32532,#0" } } */ + +typedef struct +{ + unsigned char b0:1; + unsigned char b1:1; + unsigned char b2:1; + unsigned char b3:1; + unsigned char b4:1; + unsigned char b5:1; + unsigned char b6:1; + unsigned char b7:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +void +Do (void) +{ + SFR.b0 = 1; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0x35) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_7.c new file mode 100644 index 000000000..1b7bb8777 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_7.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 32532,#7" } } */ + +typedef struct +{ + unsigned char b0:1; + unsigned char b1:1; + unsigned char b2:1; + unsigned char b3:1; + unsigned char b4:1; + unsigned char b5:1; + unsigned char b6:1; + unsigned char b7:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +void +Do (void) +{ + SFR.b7 = 1; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0xb4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_0.c new file mode 100644 index 000000000..6f73231c7 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_0.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 32532,#0" } } */ + +typedef struct +{ + unsigned char b0:1; + unsigned char b1:1; + unsigned char b2:1; + unsigned char b3:1; + unsigned char b4:1; + unsigned char b5:1; + unsigned char b6:1; + unsigned char b7:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +void +Do (void) +{ + SFR.b0 = 0; +} + +int +main (void) +{ + *p = 0xcb; + Do (); + return (*p == 0xca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_7.c new file mode 100644 index 000000000..10063e492 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_7.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 32532,#7" } } */ + +typedef struct +{ + unsigned char b0:1; + unsigned char b1:1; + unsigned char b2:1; + unsigned char b3:1; + unsigned char b4:1; + unsigned char b5:1; + unsigned char b6:1; + unsigned char b7:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned char *p = (unsigned char *) 0x7f14; + +void +Do (void) +{ + SFR.b7 = 0; +} + +int +main (void) +{ + *p = 0xcb; + Do (); + return (*p == 0x4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_0.c new file mode 100644 index 000000000..bb8489b6c --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_0.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +typedef struct +{ + unsigned char b0:1; + unsigned char b1:1; + unsigned char b2:1; + unsigned char b3:1; + unsigned char b4:1; + unsigned char b5:1; + unsigned char b6:1; + unsigned char b7:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (SFRA.b0) + { + if (SFRB.b0) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xcb; + *pB = 0x34; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_3.c new file mode 100644 index 000000000..96b441c04 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_3.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +typedef struct +{ + unsigned char b0:1; + unsigned char b1:1; + unsigned char b2:1; + unsigned char b3:1; + unsigned char b4:1; + unsigned char b5:1; + unsigned char b6:1; + unsigned char b7:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (SFRA.b3) + { + if (SFRB.b3) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xcb; + *pB = 0x34; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_7.c new file mode 100644 index 000000000..ad7bebdc6 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_7.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +typedef struct +{ + unsigned char b0:1; + unsigned char b1:1; + unsigned char b2:1; + unsigned char b3:1; + unsigned char b4:1; + unsigned char b5:1; + unsigned char b6:1; + unsigned char b7:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (SFRA.b7) + { + if (SFRB.b7) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xcb; + *pB = 0x34; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_0.c new file mode 100644 index 000000000..dfa59a939 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_0.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +typedef struct +{ + unsigned char b0:1; + unsigned char b1:1; + unsigned char b2:1; + unsigned char b3:1; + unsigned char b4:1; + unsigned char b5:1; + unsigned char b6:1; + unsigned char b7:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (!SFRA.b0) + { + if (!SFRB.b0) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x34; + *pB = 0xcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_3.c new file mode 100644 index 000000000..c311877c7 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_3.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +typedef struct +{ + unsigned char b0:1; + unsigned char b1:1; + unsigned char b2:1; + unsigned char b3:1; + unsigned char b4:1; + unsigned char b5:1; + unsigned char b6:1; + unsigned char b7:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (!SFRA.b3) + { + if (!SFRB.b3) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x34; + *pB = 0xcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_7.c new file mode 100644 index 000000000..2e4eea990 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_7.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ + +typedef struct +{ + unsigned char b0:1; + unsigned char b1:1; + unsigned char b2:1; + unsigned char b3:1; + unsigned char b4:1; + unsigned char b5:1; + unsigned char b6:1; + unsigned char b7:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned char *pA = (unsigned char *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned char *pB = (unsigned char *) 0x7f10; + +char * +Do (void) +{ + if (!SFRA.b7) + { + if (!SFRB.b7) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x34; + *pB = 0xcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_0.c new file mode 100644 index 000000000..d2351681c --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_0.c @@ -0,0 +1,39 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 32532,#0" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR.b0 = 1; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x1235) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_7.c new file mode 100644 index 000000000..6f1cf87df --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_7.c @@ -0,0 +1,39 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 32532,#7" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR.b7 = 1; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x12b4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_8.c new file mode 100644 index 000000000..9de4c0def --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_8.c @@ -0,0 +1,39 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 32533,#0" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR.b8 = 1; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x1334) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_f.c new file mode 100644 index 000000000..e89757fb6 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_f.c @@ -0,0 +1,39 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 32533,#7" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR.b15 = 1; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x9234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_0.c new file mode 100644 index 000000000..5acd858fc --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_0.c @@ -0,0 +1,39 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 32532,#0" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR.b0 = 0; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xedca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_7.c new file mode 100644 index 000000000..112714e99 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_7.c @@ -0,0 +1,39 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 32532,#7" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR.b7 = 0; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xed4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_8.c new file mode 100644 index 000000000..015f9bc15 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_8.c @@ -0,0 +1,39 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 32533,#0" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR.b8 = 0; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xeccb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_f.c new file mode 100644 index 000000000..0c85ffaa9 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_f.c @@ -0,0 +1,39 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 32533,#7" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFR (*((volatile BitField*)0x7f14)) +unsigned short *p = (unsigned short *) 0x7f14; + +void +Do (void) +{ + SFR.b15 = 0; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0x6dcb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_0.c new file mode 100644 index 000000000..d4861b21b --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_0.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "bn 32532,#0" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA.b0) + { + if (SFRB.b0) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_3.c new file mode 100644 index 000000000..5318305db --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_3.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "bn 32532,#3" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA.b3) + { + if (SFRB.b3) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_7.c new file mode 100644 index 000000000..85b86a0e9 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_7.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b r., *32532" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA.b7) + { + if (SFRB.b7) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_8.c new file mode 100644 index 000000000..65412e3f5 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_8.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "bn 32533,#0" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA.b8) + { + if (SFRB.b8) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_b.c b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_b.c new file mode 100644 index 000000000..951db3f2f --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_b.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "bn 32533,#3" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA.b11) + { + if (SFRB.b11) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_f.c new file mode 100644 index 000000000..b51daa862 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_f.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b r., *32533" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (SFRA.b15) + { + if (SFRB.b15) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0xedcb; + *pB = 0x1234; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_0.c new file mode 100644 index 000000000..0680d4f03 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_0.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "bp 32532,#0" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!SFRA.b0) + { + if (!SFRB.b0) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_3.c new file mode 100644 index 000000000..17f07f907 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_3.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "bp 32532,#3" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!SFRA.b3) + { + if (!SFRB.b3) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_7.c new file mode 100644 index 000000000..2c1cab89c --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_7.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b r., *32532" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!SFRA.b7) + { + if (!SFRB.b7) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_8.c new file mode 100644 index 000000000..2353cad4e --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_8.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "bp 32533,#0" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!SFRA.b8) + { + if (!SFRB.b8) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_b.c b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_b.c new file mode 100644 index 000000000..123cb0605 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_b.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "bp 32533,#3" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!SFRA.b11) + { + if (!SFRB.b11) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_f.c new file mode 100644 index 000000000..daf5090d2 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_f.c @@ -0,0 +1,49 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b r., *32533" } } */ + +typedef struct +{ + unsigned short b0:1; + unsigned short b1:1; + unsigned short b2:1; + unsigned short b3:1; + unsigned short b4:1; + unsigned short b5:1; + unsigned short b6:1; + unsigned short b7:1; + unsigned short b8:1; + unsigned short b9:1; + unsigned short b10:1; + unsigned short b11:1; + unsigned short b12:1; + unsigned short b13:1; + unsigned short b14:1; + unsigned short b15:1; +} BitField; + +#define SFRA (*((volatile BitField*)0x7f14)) +unsigned short *pA = (unsigned short *) 0x7f14; +#define SFRB (*((volatile BitField*)0x7f10)) +unsigned short *pB = (unsigned short *) 0x7f10; + +char * +Do (void) +{ + if (!SFRA.b15) + { + if (!SFRB.b15) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + *pA = 0x1234; + *pB = 0xedcb; + return Do ()[0] == 'F'; +} |