aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
committerBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
commit1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch)
treec607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr
parent283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff)
downloadtoolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/01_const_to_sfrb.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/02_const_to_sfrw.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/03_var_to_sfrb.c21
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/04_var_to_sfrw.c21
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/05_sfrb_to_var.c21
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/06_sfrw_to_var.c21
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_0.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_7.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_0.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_7.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_0.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_3.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_7.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_0.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_3.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_7.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_0.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_3.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_7.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_8.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_b.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_f.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_0.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_3.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_7.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_8.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_b.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_f.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_0.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_3.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_7.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_8.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_b.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_f.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_0.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_3.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_7.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_8.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_b.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_f.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_0.c31
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_7.c31
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_0.c31
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_7.c31
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_0.c41
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_3.c41
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_7.c41
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_0.c41
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_3.c41
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_7.c41
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_0.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_7.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_8.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_f.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_0.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_7.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_8.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_f.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_0.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_3.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_7.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_8.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_b.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_f.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_0.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_3.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_7.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_8.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_b.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_f.c49
70 files changed, 2218 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/01_const_to_sfrb.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/01_const_to_sfrb.c
new file mode 100644
index 000000000..96e4adcfb
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/02_const_to_sfrw.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/02_const_to_sfrw.c
new file mode 100644
index 000000000..930ba4d96
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/03_var_to_sfrb.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/03_var_to_sfrb.c
new file mode 100644
index 000000000..8c4b1f1c7
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/04_var_to_sfrw.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/04_var_to_sfrw.c
new file mode 100644
index 000000000..c8d4a0e66
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/05_sfrb_to_var.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/05_sfrb_to_var.c
new file mode 100644
index 000000000..9471e295a
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/06_sfrw_to_var.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/06_sfrw_to_var.c
new file mode 100644
index 000000000..39cbab5c3
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_0.c
new file mode 100644
index 000000000..644afb59c
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/10_set_sfrb_bit_7.c
new file mode 100644
index 000000000..90cd3c83f
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_0.c
new file mode 100644
index 000000000..59d6153ed
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/11_clr_sfrb_bit_7.c
new file mode 100644
index 000000000..0cb7e1761
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_0.c
new file mode 100644
index 000000000..54b0b1f6d
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_3.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_3.c
new file mode 100644
index 000000000..4a575cc99
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/12_if1_sfrb_bit_7.c
new file mode 100644
index 000000000..747cbdd94
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_0.c
new file mode 100644
index 000000000..d14969206
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_3.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_3.c
new file mode 100644
index 000000000..be6112cf1
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/13_if0_sfrb_bit_7.c
new file mode 100644
index 000000000..12e68cd5b
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_0.c
new file mode 100644
index 000000000..00f4f78cc
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_3.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_3.c
new file mode 100644
index 000000000..b5741fc48
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_7.c
new file mode 100644
index 000000000..ffcad45b2
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_8.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_8.c
new file mode 100644
index 000000000..3f19329f2
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_b.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_b.c
new file mode 100644
index 000000000..b5e8bb9e2
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_f.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/14_set_sfrw_bit_f.c
new file mode 100644
index 000000000..767e95ff4
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_0.c
new file mode 100644
index 000000000..fcabe0994
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_3.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_3.c
new file mode 100644
index 000000000..26281be87
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_7.c
new file mode 100644
index 000000000..15ff063f4
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_8.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_8.c
new file mode 100644
index 000000000..c44817a73
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_b.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_b.c
new file mode 100644
index 000000000..9f1c3a5e7
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_f.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/15_clr_sfrw_bit_f.c
new file mode 100644
index 000000000..46eef43c4
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_0.c
new file mode 100644
index 000000000..287dd7a83
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_3.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_3.c
new file mode 100644
index 000000000..719fa58df
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_7.c
new file mode 100644
index 000000000..1b361c5fe
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_8.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_8.c
new file mode 100644
index 000000000..c8a3ba7cb
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_b.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_b.c
new file mode 100644
index 000000000..a0f5742c1
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_f.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/16_if1_sfrw_bit_f.c
new file mode 100644
index 000000000..5e91bb23e
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_0.c
new file mode 100644
index 000000000..ac5d87fe3
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_3.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_3.c
new file mode 100644
index 000000000..fa77f1bd1
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_7.c
new file mode 100644
index 000000000..cb331f034
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_8.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_8.c
new file mode 100644
index 000000000..105bf4d8d
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_b.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_b.c
new file mode 100644
index 000000000..768cfb92b
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_f.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/17_if0_sfrw_bit_f.c
new file mode 100644
index 000000000..533a3c61a
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_0.c
new file mode 100644
index 000000000..3879ed438
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/20_set_sfrb_bitfield_7.c
new file mode 100644
index 000000000..1b7bb8777
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_0.c
new file mode 100644
index 000000000..6f73231c7
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/21_clr_sfrb_bitfield_7.c
new file mode 100644
index 000000000..10063e492
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_0.c
new file mode 100644
index 000000000..bb8489b6c
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_3.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_3.c
new file mode 100644
index 000000000..96b441c04
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/22_if1_sfrb_bitfield_7.c
new file mode 100644
index 000000000..ad7bebdc6
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_0.c
new file mode 100644
index 000000000..dfa59a939
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_3.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_3.c
new file mode 100644
index 000000000..c311877c7
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/23_if0_sfrb_bitfield_7.c
new file mode 100644
index 000000000..2e4eea990
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_0.c
new file mode 100644
index 000000000..d2351681c
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_7.c
new file mode 100644
index 000000000..6f1cf87df
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_8.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_8.c
new file mode 100644
index 000000000..9de4c0def
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_f.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/24_set_sfrw_bitfield_f.c
new file mode 100644
index 000000000..e89757fb6
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_0.c
new file mode 100644
index 000000000..5acd858fc
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_7.c
new file mode 100644
index 000000000..112714e99
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_8.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_8.c
new file mode 100644
index 000000000..015f9bc15
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_f.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/25_clr_sfrw_bitfield_f.c
new file mode 100644
index 000000000..0c85ffaa9
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_0.c
new file mode 100644
index 000000000..d4861b21b
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_3.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_3.c
new file mode 100644
index 000000000..5318305db
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_7.c
new file mode 100644
index 000000000..85b86a0e9
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_8.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_8.c
new file mode 100644
index 000000000..65412e3f5
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_b.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_b.c
new file mode 100644
index 000000000..951db3f2f
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_f.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/26_if1_sfrw_bitfield_f.c
new file mode 100644
index 000000000..b51daa862
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_0.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_0.c
new file mode 100644
index 000000000..0680d4f03
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_3.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_3.c
new file mode 100644
index 000000000..17f07f907
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_7.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_7.c
new file mode 100644
index 000000000..2c1cab89c
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_8.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_8.c
new file mode 100644
index 000000000..2353cad4e
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_b.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_b.c
new file mode 100644
index 000000000..123cb0605
--- /dev/null
+++ b/gcc-4.9/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-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_f.c b/gcc-4.9/gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_f.c
new file mode 100644
index 000000000..daf5090d2
--- /dev/null
+++ b/gcc-4.9/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';
+}