diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 468fb31620c4..b832863158c0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,104 @@ +2004-12-08 Nick Clifton + + * gcc.target/xstormy16/bss_below100: New directory containing tests. + * gcc.target/xstormy16/data_below100: Likewise. + * gcc.target/xstormy16/sfr: Likewise. + * gcc.target/xstormy16/below100.S: New test source file. + * gcc.target/xstormy16/below100.ld: New test linker script. + * gcc.target/xstormy16/xstormy16.exp: Run the new tests. + * gcc.target/xstormy16/below_100.c: Fix scan to allow for bn or + bp instructions. + * gcc.target/xstormy16/bp.c: Likewise. + + * gcc.target/xstormy16/bss_below100: New files: + 01_const_to_b100b.c, 02_const_to_b100w.c, 03_var_to_b100b.c, + 04_var_to_b100w.c, 05_b100b_to_var.c, 06_b100w_to_var.c, + 10_set_b100b_bit_0.c, 10_set_b100b_bit_7.c, 11_clr_b100b_bit_0.c, + 11_clr_b100b_bit_7.c, 12_if1_b100b_bit_0.c, 12_if1_b100b_bit_3.c, + 12_if1_b100b_bit_7.c, 13_if0_b100b_bit_0.c, 13_if0_b100b_bit_3.c, + 13_if0_b100b_bit_7.c, 14_set_b100w_bit_0.c, 14_set_b100w_bit_7.c, + 14_set_b100w_bit_8.c, 14_set_b100w_bit_f.c, 15_clr_b100w_bit_0.c, + 15_clr_b100w_bit_7.c, 15_clr_b100w_bit_8.c, 15_clr_b100w_bit_f.c, + 16_if1_b100w_bit_0.c, 16_if1_b100w_bit_3.c, 16_if1_b100w_bit_7.c, + 16_if1_b100w_bit_8.c, 16_if1_b100w_bit_b.c, 16_if1_b100w_bit_f.c, + 17_if0_b100w_bit_0.c, 17_if0_b100w_bit_3.c, 17_if0_b100w_bit_7.c, + 17_if0_b100w_bit_8.c, 17_if0_b100w_bit_b.c, 17_if0_b100w_bit_f.c, + 20_set_b100b_bitfield_0.c, 20_set_b100b_bitfield_7.c, + 21_clr_b100b_bitfield_0.c, 21_clr_b100b_bitfield_7.c, + 22_if1_b100b_bitfield_0.c, 22_if1_b100b_bitfield_3.c, + 22_if1_b100b_bitfield_7.c, 23_if0_b100b_bitfield_0.c, + 23_if0_b100b_bitfield_3.c, 23_if0_b100b_bitfield_7.c, + 24_set_b100w_bitfield_0.c, 24_set_b100w_bitfield_7.c, + 24_set_b100w_bitfield_8.c, 24_set_b100w_bitfield_f.c, + 25_clr_b100w_bitfield_0.c, 25_clr_b100w_bitfield_7.c, + 25_clr_b100w_bitfield_8.c, 25_clr_b100w_bitfield_f.c, + 26_if1_b100w_bitfield_0.c, 26_if1_b100w_bitfield_3.c, + 26_if1_b100w_bitfield_7.c, 26_if1_b100w_bitfield_8.c, + 26_if1_b100w_bitfield_b.c, 26_if1_b100w_bitfield_f.c, + 27_if0_b100w_bitfield_0.c, 27_if0_b100w_bitfield_3.c, + 27_if0_b100w_bitfield_7.c, 27_if0_b100w_bitfield_8.c, + 27_if0_b100w_bitfield_b.c, 27_if0_b100w_bitfield_f.c + + * gcc.target/xstormy16/data_below100: New files: + 01_const_to_b100b.c, 02_const_to_b100w.c, 03_var_to_b100b.c, + 04_var_to_b100w.c, 05_b100b_to_var.c, 06_b100w_to_var.c, + 10_set_b100b_bit_0.c, 10_set_b100b_bit_7.c, 11_clr_b100b_bit_0.c, + 11_clr_b100b_bit_7.c, 12_if1_b100b_bit_0.c, 12_if1_b100b_bit_3.c, + 12_if1_b100b_bit_7.c, 13_if0_b100b_bit_0.c, 13_if0_b100b_bit_3.c, + 13_if0_b100b_bit_7.c, 14_set_b100w_bit_0.c, 14_set_b100w_bit_7.c, + 14_set_b100w_bit_8.c, 14_set_b100w_bit_f.c, 15_clr_b100w_bit_0.c, + 15_clr_b100w_bit_7.c, 15_clr_b100w_bit_8.c, 15_clr_b100w_bit_f.c, + 16_if1_b100w_bit_0.c, 16_if1_b100w_bit_3.c, 16_if1_b100w_bit_7.c, + 16_if1_b100w_bit_8.c, 16_if1_b100w_bit_b.c, 16_if1_b100w_bit_f.c, + 17_if0_b100w_bit_0.c, 17_if0_b100w_bit_3.c, 17_if0_b100w_bit_7.c, + 17_if0_b100w_bit_8.c, 17_if0_b100w_bit_b.c, 17_if0_b100w_bit_f.c, + 20_set_b100b_bitfield_0.c, 20_set_b100b_bitfield_7.c, + 21_clr_b100b_bitfield_0.c, 21_clr_b100b_bitfield_7.c, + 22_if1_b100b_bitfield_0.c, 22_if1_b100b_bitfield_3.c, + 22_if1_b100b_bitfield_7.c, 23_if0_b100b_bitfield_0.c, + 23_if0_b100b_bitfield_3.c, 23_if0_b100b_bitfield_7.c, + 24_set_b100w_bitfield_0.c, 24_set_b100w_bitfield_7.c, + 24_set_b100w_bitfield_8.c, 24_set_b100w_bitfield_f.c, + 25_clr_b100w_bitfield_0.c, 25_clr_b100w_bitfield_7.c, + 25_clr_b100w_bitfield_8.c, 25_clr_b100w_bitfield_f.c, + 26_if1_b100w_bitfield_0.c, 26_if1_b100w_bitfield_3.c, + 26_if1_b100w_bitfield_7.c, 26_if1_b100w_bitfield_8.c, + 26_if1_b100w_bitfield_b.c, 26_if1_b100w_bitfield_f.c, + 27_if0_b100w_bitfield_0.c, 27_if0_b100w_bitfield_3.c, + 27_if0_b100w_bitfield_7.c, 27_if0_b100w_bitfield_8.c, + 27_if0_b100w_bitfield_b.c, 27_if0_b100w_bitfield_f.c + + * gcc.target/xstormy16/sfr: New files: + 01_const_to_sfrb.c, 02_const_to_sfrw.c, 03_var_to_sfrb.c, + 04_var_to_sfrw.c, 05_sfrb_to_var.c, 06_sfrw_to_var.c, + 10_set_sfrb_bit_0.c, 10_set_sfrb_bit_7.c, 11_clr_sfrb_bit_0.c, + 11_clr_sfrb_bit_7.c, 12_if1_sfrb_bit_0.c, 12_if1_sfrb_bit_3.c, + 12_if1_sfrb_bit_7.c, 13_if0_sfrb_bit_0.c, 13_if0_sfrb_bit_3.c, + 13_if0_sfrb_bit_7.c, 14_set_sfrw_bit_0.c, 14_set_sfrw_bit_3.c, + 14_set_sfrw_bit_7.c, 14_set_sfrw_bit_8.c, 14_set_sfrw_bit_b.c, + 14_set_sfrw_bit_f.c, 15_clr_sfrw_bit_0.c, 15_clr_sfrw_bit_3.c, + 15_clr_sfrw_bit_7.c, 15_clr_sfrw_bit_8.c, 15_clr_sfrw_bit_b.c, + 15_clr_sfrw_bit_f.c, 16_if1_sfrw_bit_0.c, 16_if1_sfrw_bit_3.c, + 16_if1_sfrw_bit_7.c, 16_if1_sfrw_bit_8.c, 16_if1_sfrw_bit_b.c, + 16_if1_sfrw_bit_f.c, 17_if0_sfrw_bit_0.c, 17_if0_sfrw_bit_3.c, + 17_if0_sfrw_bit_7.c, 17_if0_sfrw_bit_8.c, 17_if0_sfrw_bit_b.c, + 17_if0_sfrw_bit_f.c, 20_set_sfrb_bitfield_0.c, + 20_set_sfrb_bitfield_7.c, 21_clr_sfrb_bitfield_0.c, + 21_clr_sfrb_bitfield_7.c, 22_if1_sfrb_bitfield_0.c, + 22_if1_sfrb_bitfield_3.c, 22_if1_sfrb_bitfield_7.c, + 23_if0_sfrb_bitfield_0.c, 23_if0_sfrb_bitfield_3.c, + 23_if0_sfrb_bitfield_7.c, 24_set_sfrw_bitfield_0.c, + 24_set_sfrw_bitfield_7.c, 24_set_sfrw_bitfield_8.c, + 24_set_sfrw_bitfield_f.c, 25_clr_sfrw_bitfield_0.c, + 25_clr_sfrw_bitfield_7.c, 25_clr_sfrw_bitfield_8.c, + 25_clr_sfrw_bitfield_f.c, 26_if1_sfrw_bitfield_0.c, + 26_if1_sfrw_bitfield_3.c, 26_if1_sfrw_bitfield_7.c, + 26_if1_sfrw_bitfield_8.c, 26_if1_sfrw_bitfield_b.c, + 26_if1_sfrw_bitfield_f.c, 27_if0_sfrw_bitfield_0.c, + 27_if0_sfrw_bitfield_3.c, 27_if0_sfrw_bitfield_7.c, + 27_if0_sfrw_bitfield_8.c, 27_if0_sfrw_bitfield_b.c, + 27_if0_sfrw_bitfield_f.c + 2004-12-08 Kriang Lerdsuwanakij PR c++/18100 diff --git a/gcc/testsuite/gcc.target/xstormy16/below100.S b/gcc/testsuite/gcc.target/xstormy16/below100.S new file mode 100644 index 000000000000..25f9bc8caf9d --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/below100.S @@ -0,0 +1,188 @@ +/****************************************************************** +*** *** +*** crt0 for __BELOW100__ attribute test with SID *** +*** *** +******************************************************************/ + + /*************************************/ + /** Interrupt vectors at 0x8000 **/ + /*************************************/ + .section .int_vec,"ax" + .global _start + .align 1 +_start: + jmpf _int_reset + //jmpf _int_basetimer + //jmpf _int_timer0 + //jmpf _int_timer1 + //jmpf _int_irq_4 + //jmpf _int_irq_5 + //jmpf _int_port0 + //jmpf _int_port1 + //jmpf _int_irq_8 + //jmpf _int_irq_9 + //jmpf _int_irq_a + //jmpf _int_irq_b + //jmpf _int_irq_c + //jmpf _int_irq_d + //jmpf _int_irq_e + //jmpf _int_irq_f + /*************************************/ + /** reset code **/ + /*************************************/ + .text +_int_reset: + /*************************************/ + /** setup stack pointer **/ + /*************************************/ + mov sp,#__stack + /*************************************/ + /** zero .bss section **/ + /*************************************/ + mov r0,#__bss_start + mov r1,#__bss_end + mov r2,#0 +1: mov.w (r0++),r2 + blt r0,r1,1b + /*************************************/ + /** copy inital value for .data **/ + /*************************************/ + mov r1,#__data_start + mov r3,#__data_end + mov r0,#@lo(__rdata) + mov r8,#@hi(__rdata) +2: movf.w r2,(r0++) + bnz r0,#0,3f + add r8,#1 +3: mov.w (r1++),r2 + blt r1,r3,2b + /*************************************/ + /** call hardware init routine **/ + /*************************************/ + callf _hwinit + /*************************************/ + /** call initializaton routines **/ + /*************************************/ + callf _init + /*************************************/ + /** setup fini routines to be **/ + /** called from exit **/ + /*************************************/ + mov r2,#@fptr(_fini) + callf atexit + /*************************************/ + /** call main() with empty **/ + /** argc/argv/envp **/ + /*************************************/ + mov r2,#0 + mov r3,#0 + mov r4,#0 + callf main + /*************************************/ + /** return from main() **/ + /*************************************/ + callf exit + /*************************************/ + /** should never reach this code **/ + /*************************************/ + jmpf _start + /*************************************/ + /** default h/w initialize routine **/ + /** and default _init/_finit for **/ + /** -nostartfiles option **/ + /*************************************/ + .globl _hwinit + .weak _hwinit +_hwinit: + .globl _init + .weak _init +_init: + .globl _fini + .weak _fini +_fini: + ret + +/****************************************************************** +******************************************************************* +*** *** +*** Chip information data for LC59_32K *** +*** Written by T.Matsukawa *** +*** *** +******************************************************************* +******************************************************************/ + + /*************************************/ + /** Define convenient macros **/ + /*************************************/ +#define BCD(x) (((x)/10)%10)*0x10+((x)%10) +#define BCD4(x) BCD((x)/100),BCD(x) +#define BCD6(x) BCD((x)/10000),BCD((x)/100),BCD(x) + /*************************************/ + /** Define memory sizes **/ + /*************************************/ +#define RAM_SIZE 0x7E00 +#define ROM_SIZE 0x78000 +#define VRAM_SIZE 0x0000 +#define VRAM_ROW 0 +#define VRAM_COLUMN 0 +#define CGROM_SIZE 0x0000 +#define PROTECT_SIZE 0x0000 + + /*************************************/ + /** section ".chip_info" **/ + /*************************************/ + .section .chip_info,"a" + .space 0xb8,0x00 + /*************************************/ + /** B8-BB : User option address **/ + /*************************************/ + .word 0x00000 + .global __reset_vector +#if 0x00000==0 + .equ __reset_vector,0x08000 +#else + .equ __reset_vector,0x00000 +#endif + /*************************************/ + /** BC-BF : Flash Protect address **/ + /*************************************/ +#if PROTECT_SIZE==0 + .word 0x00000000 +#else + .word 0x08000+ROM_SIZE-PROTECT_SIZE +#endif + /*************************************/ + /** C0-CF : Fixed string **/ + /*************************************/ + .ascii "CHIPINFORMATION" +1: .space (0xd0-1b),0x00 + /*************************************/ + /** D0-DF : Chipname **/ + /*************************************/ + .ascii "LC59_32K" +2: .space (0xe0-2b),0x00 + /*************************************/ + /** E0-E1 : Format version(BCD4) **/ + /*************************************/ + .byte 0x10, 0x00 + .space 6, 0x00 + /*************************************/ + /** E8-F5 : Memory sizes **/ + /*************************************/ + .byte BCD4(ROM_SIZE/1024) + .byte BCD6(RAM_SIZE) + .byte BCD6(VRAM_SIZE) + .byte BCD4(VRAM_ROW) + .byte BCD4(VRAM_COLUMN) + .byte BCD4(CGROM_SIZE/1024) + .space 3, 0x00 + /*************************************/ + /** F9 : Package type **/ + /*************************************/ + .byte 0xff + .space 6, 0x00 + + /*************************************/ + /** In order to link BIOS in library**/ + /*************************************/ + .equ dummy,__bios_entry diff --git a/gcc/testsuite/gcc.target/xstormy16/below100.ld b/gcc/testsuite/gcc.target/xstormy16/below100.ld new file mode 100644 index 000000000000..91c3e43f70f8 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/below100.ld @@ -0,0 +1,192 @@ +/****************************************************************** +******************************************************************* +*** *** +*** Linker script for xstormy16-elf-gcc *** +*** For SID RAM=0x7E00 *** +*** ROM=0x78000 *** +*** *** +******************************************************************* +******************************************************************/ + +OUTPUT_FORMAT("elf32-xstormy16", "elf32-xstormy16", "elf32-xstormy16") +OUTPUT_ARCH(xstormy16) +ENTRY(_start) +SEARCH_DIR( . ) +GROUP(-lc -lsim -lgcc) +PROVIDE( __target_package = 0xff); + +__malloc_start = 0x7E00; + +MEMORY +{ + RAM (w) : ORIGIN = 0x00000, LENGTH = 0x07E00 + CHIP (r) : ORIGIN = 0x07f00, LENGTH = 0x00100 + ROM (!w) : ORIGIN = 0x08000, LENGTH = 0x78000 +} + +SECTIONS +{ + /* Zero initialized data with the below100 attribute. */ + .bss_below100 : { + SHORT(0) + __bss_start = .; + *(.bss_below100) + *(.bss_below100.*) + . = ALIGN(2); + } > RAM + + /* Non-zero initialized data with the below100 attribute. */ + .data_below100 : AT ( __rdata ) { + __data_start = . ; + *(.data_0) + *(.data_below100) + *(.data_below100.*) + . = ALIGN(2); + } > RAM = 0 + + /* Normal non-zero initialized data. */ + .data : AT ( __rdata + SIZEOF(.data_below100) ) { + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + SORT(CONSTRUCTORS) + . = ALIGN(2); + __data_end = . ; + } > RAM =0 + + /* Normal zero initialized data. */ + .bss : AT (LOADADDR(.data) + SIZEOF(.data)) { + *(.dynbss) + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(2); + __bss_end = .; + } > RAM + + /* The top of stack. */ + __stack = .; + + /* Target chip info. */ + .chip_info : { + KEEP(*(.chip_info)) + } > CHIP =0 + + /* Reset and interrupt vectors at 8000. */ + .int_vec : { + KEEP(*(.int_vec)) + } > ROM =0 + + /* Read only data. */ + .rodata : { + *(.rodata) + *(.rodata.*) + *(.gnu.linkonce.r.*) + } > ROM =0 + + /* C++ Construcrtors and destructors. */ + .ctors : { + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } > ROM =0 + + .dtors : { + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } > ROM =0 + + /* Pointer lookup table.. */ + .plt : { + *(.plt) + } > ROM =0 + + /* Other information. */ + .jcr : { + KEEP (*(.jcr)) + } > ROM =0 + + .eh_frame : { + KEEP (*(.eh_frame)) + } > ROM =0 + + .gcc_except_table : { + KEEP (*(.gcc_except_table)) + } > ROM =0 + + /* Initialization values for data. */ + .data_init (NOLOAD) : { + __rdata = .; + . += SIZEOF(.data_below100); + . += SIZEOF(.data); + . += SIZEOF(.bss); + } > ROM + + /* Executable code. */ + .text : { + *(.text) + *(.text.*) + *(.stub) + *(.gnu.warning) + *(.gnu.linkonce.t.*) + } > ROM =0 + + /* Startup/finish code. */ + .init : { + KEEP (*crti.o(.init)) + KEEP (*(EXCLUDE_FILE (*crtn.o ) .init)) + KEEP (*(SORT(.init.*))) + KEEP (*(.init)) + } > ROM =0 + + .fini : { + KEEP (*crti.o(.fini)) + KEEP (*(EXCLUDE_FILE (*crtn.o ) .fini)) + KEEP (*(SORT(.fini.*))) + KEEP (*(.fini)) + } > ROM =0 + + /* Stab debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + + /* DWARF debug sections. */ + /* Symbols in the DWARF debugging sections are relative to + the beginning of the section so we begin them at 0. */ + + /* DWARF 1. */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + + /* GNU DWARF 1 extensions. */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + + /* DWARF 1.1 and DWARF 2. */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + + /* DWARF 2. */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + + /* SGI/MIPS DWARF 2 extensions. */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/gcc/testsuite/gcc.target/xstormy16/below_100.c b/gcc/testsuite/gcc.target/xstormy16/below_100.c index dfa7e3bc92b1..9433f2ad8975 100644 --- a/gcc/testsuite/gcc.target/xstormy16/below_100.c +++ b/gcc/testsuite/gcc.target/xstormy16/below_100.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2" } */ /* { dg-final { scan-assembler "bn " } } */ -/* { dg-final { scan-assembler "bp " } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ unsigned short a_below __attribute__((__BELOW100__)); unsigned short b_below __attribute__((__BELOW100__)); diff --git a/gcc/testsuite/gcc.target/xstormy16/bp.c b/gcc/testsuite/gcc.target/xstormy16/bp.c index 5cab932d3db9..26ca6a3b4ad1 100644 --- a/gcc/testsuite/gcc.target/xstormy16/bp.c +++ b/gcc/testsuite/gcc.target/xstormy16/bp.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2" } */ -/* { dg-final { scan-assembler "bp " } } */ +/* { dg-final { scan-assembler "b\[np\] " } } */ #define a_val (*((volatile unsigned char *) 0x7f14)) #define b_val (*((volatile unsigned char *) 0x7f10)) @@ -30,5 +30,3 @@ bar (void) return foo (); } - - diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/01_const_to_b100b.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/01_const_to_b100b.c new file mode 100644 index 000000000000..2b4438c4c33a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/01_const_to_b100b.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b B100,#18" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)); +unsigned char *p = &B100; + +void +Do (void) +{ + B100 = 0x12; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0x12) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/02_const_to_b100w.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/02_const_to_b100w.c new file mode 100644 index 000000000000..d011ffd664e5 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/02_const_to_b100w.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w B100,#4660" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +void +Do (void) +{ + B100 = 0x1234; +} + +int +main (void) +{ + *p = 0x9876; + Do (); + return (*p == 0x1234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/03_var_to_b100b.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/03_var_to_b100b.c new file mode 100644 index 000000000000..bcc99118966d --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/03_var_to_b100b.c @@ -0,0 +1,22 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b B100,r" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)); +unsigned char *p = &B100; + +unsigned char yData = 0x12; + +void +Do (void) +{ + B100 = yData; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0x12) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/04_var_to_b100w.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/04_var_to_b100w.c new file mode 100644 index 000000000000..ab4748871ad0 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/04_var_to_b100w.c @@ -0,0 +1,22 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w B100,r" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +unsigned short wData = 0x1234; + +void +Do (void) +{ + B100 = wData; +} + +int +main (void) +{ + *p = 0x9876; + Do (); + return (*p == 0x1234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/05_b100b_to_var.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/05_b100b_to_var.c new file mode 100644 index 000000000000..e5f57e80325e --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/05_b100b_to_var.c @@ -0,0 +1,22 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b r., *B100" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)); +unsigned char *p = &B100; + +unsigned char yData = 0x12; + +void +Do (void) +{ + yData = B100; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (yData == 0x34) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/06_b100w_to_var.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/06_b100w_to_var.c new file mode 100644 index 000000000000..b19d9bcf4182 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/06_b100w_to_var.c @@ -0,0 +1,22 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,B100" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +unsigned short wData = 0x1234; + +void +Do (void) +{ + wData = B100; +} + +int +main (void) +{ + *p = 0x3456; + Do (); + return (wData == 0x3456) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/10_set_b100b_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/10_set_b100b_bit_0.c new file mode 100644 index 000000000000..f0965f1107d4 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/10_set_b100b_bit_0.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)); +unsigned char *p = &B100; + +void +Do (void) +{ + B100 |= 0x01; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0x35) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/10_set_b100b_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/10_set_b100b_bit_7.c new file mode 100644 index 000000000000..8b14c43083c5 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/10_set_b100b_bit_7.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)); +unsigned char *p = &B100; + +void +Do (void) +{ + B100 |= 0x80; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0xb4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/11_clr_b100b_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/11_clr_b100b_bit_0.c new file mode 100644 index 000000000000..79c265a24347 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/11_clr_b100b_bit_0.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)); +unsigned char *p = &B100; + +void +Do (void) +{ + B100 &= ~0x01; +} + +int +main (void) +{ + *p = 0xcb; + Do (); + return (*p == 0xca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/11_clr_b100b_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/11_clr_b100b_bit_7.c new file mode 100644 index 000000000000..d40e68f55e6d --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/11_clr_b100b_bit_7.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)); +unsigned char *p = &B100; + +void +Do (void) +{ + B100 &= ~0x80; +} + +int +main (void) +{ + *p = 0xcb; + Do (); + return (*p == 0x4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/12_if1_b100b_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/12_if1_b100b_bit_0.c new file mode 100644 index 000000000000..26b3711ea055 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/12_if1_b100b_bit_0.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x01) + { + if (B100B & 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/bss_below100/12_if1_b100b_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/12_if1_b100b_bit_3.c new file mode 100644 index 000000000000..865ec549bd23 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/12_if1_b100b_bit_3.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x08) + { + if (B100B & 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/bss_below100/12_if1_b100b_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/12_if1_b100b_bit_7.c new file mode 100644 index 000000000000..efbe1243cc88 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/12_if1_b100b_bit_7.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x80) + { + if (B100B & 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/bss_below100/13_if0_b100b_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/13_if0_b100b_bit_0.c new file mode 100644 index 000000000000..81873954c1fa --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/13_if0_b100b_bit_0.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x01)) + { + if (!(B100B & 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/bss_below100/13_if0_b100b_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/13_if0_b100b_bit_3.c new file mode 100644 index 000000000000..3fc566aa98f3 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/13_if0_b100b_bit_3.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x08)) + { + if (!(B100B & 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/bss_below100/13_if0_b100b_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/13_if0_b100b_bit_7.c new file mode 100644 index 000000000000..bc90eaf953e1 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/13_if0_b100b_bit_7.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x80)) + { + if (!(B100B & 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/bss_below100/14_set_b100w_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_0.c new file mode 100644 index 000000000000..9164d05df3ce --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_0.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +void +Do (void) +{ + B100 |= 0x0001; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x1235) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_7.c new file mode 100644 index 000000000000..848c3241f140 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_7.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +void +Do (void) +{ + B100 |= 0x0080; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x12b4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_8.c new file mode 100644 index 000000000000..f843d12af4dd --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_8.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100\\+1,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +void +Do (void) +{ + B100 |= 0x0100; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x1334) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_f.c new file mode 100644 index 000000000000..bba6dc9f48f8 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/14_set_b100w_bit_f.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100\\+1,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +void +Do (void) +{ + B100 |= 0x8000; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x9234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_0.c new file mode 100644 index 000000000000..634f2fc651cb --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_0.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +void +Do (void) +{ + B100 &= ~0x0001; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xedca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_7.c new file mode 100644 index 000000000000..4b7d1bd7247d --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_7.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +void +Do (void) +{ + B100 &= ~0x0080; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xed4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_8.c new file mode 100644 index 000000000000..1c5d4c402448 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_8.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100\\+1,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +void +Do (void) +{ + B100 &= ~0x0100; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xeccb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_f.c new file mode 100644 index 000000000000..5140c6caf856 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/15_clr_b100w_bit_f.c @@ -0,0 +1,20 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100\\+1,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)); +unsigned short *p = &B100; + +void +Do (void) +{ + B100 &= ~0x8000; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0x6dcb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_0.c new file mode 100644 index 000000000000..fb6a1ba318b9 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_0.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x0001) + { + if (B100B & 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/bss_below100/16_if1_b100w_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_3.c new file mode 100644 index 000000000000..c62462914539 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_3.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x0008) + { + if (B100B & 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/bss_below100/16_if1_b100w_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_7.c new file mode 100644 index 000000000000..d1c3fbf569a7 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_7.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x0080) + { + if (B100B & 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/bss_below100/16_if1_b100w_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_8.c new file mode 100644 index 000000000000..b10454203577 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_8.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x0100) + { + if (B100B & 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/bss_below100/16_if1_b100w_bit_b.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_b.c new file mode 100644 index 000000000000..8fbded125c8e --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_b.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x0800) + { + if (B100B & 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/bss_below100/16_if1_b100w_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_f.c new file mode 100644 index 000000000000..ae97d96a809e --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/16_if1_b100w_bit_f.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x8000) + { + if (B100B & 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/bss_below100/17_if0_b100w_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_0.c new file mode 100644 index 000000000000..07c6e94d57d1 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_0.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x0001)) + { + if (!(B100B & 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/bss_below100/17_if0_b100w_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_3.c new file mode 100644 index 000000000000..f2dd3fba6ac4 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_3.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x0008)) + { + if (!(B100B & 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/bss_below100/17_if0_b100w_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_7.c new file mode 100644 index 000000000000..af6eb6e1783b --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_7.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x0080)) + { + if (!(B100B & 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/bss_below100/17_if0_b100w_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_8.c new file mode 100644 index 000000000000..d50f8f82b77b --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_8.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x0100)) + { + if (!(B100B & 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/bss_below100/17_if0_b100w_bit_b.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_b.c new file mode 100644 index 000000000000..28d5a39bb621 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_b.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x0800)) + { + if (!(B100B & 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/bss_below100/17_if0_b100w_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_f.c new file mode 100644 index 000000000000..6a3f7025fbc9 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/17_if0_b100w_bit_f.c @@ -0,0 +1,31 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x8000)) + { + if (!(B100B & 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/bss_below100/20_set_b100b_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/20_set_b100b_bitfield_0.c new file mode 100644 index 000000000000..240e472991f3 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/20_set_b100b_bitfield_0.c @@ -0,0 +1,32 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned char *p = (unsigned char *) &B100; + +void +Do (void) +{ + B100.b0 = 1; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0x35) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/20_set_b100b_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/20_set_b100b_bitfield_7.c new file mode 100644 index 000000000000..674e51a6469e --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/20_set_b100b_bitfield_7.c @@ -0,0 +1,32 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned char *p = (unsigned char *) &B100; + +void +Do (void) +{ + B100.b7 = 1; +} + +int +main (void) +{ + *p = 0x34; + Do (); + return (*p == 0xb4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/21_clr_b100b_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/21_clr_b100b_bitfield_0.c new file mode 100644 index 000000000000..3846a96d2181 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/21_clr_b100b_bitfield_0.c @@ -0,0 +1,32 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned char *p = (unsigned char *) &B100; + +void +Do (void) +{ + B100.b0 = 0; +} + +int +main (void) +{ + *p = 0xcb; + Do (); + return (*p == 0xca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/21_clr_b100b_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/21_clr_b100b_bitfield_7.c new file mode 100644 index 000000000000..10174576f2d1 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/21_clr_b100b_bitfield_7.c @@ -0,0 +1,32 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned char *p = (unsigned char *) &B100; + +void +Do (void) +{ + B100.b7 = 0; +} + +int +main (void) +{ + *p = 0xcb; + Do (); + return (*p == 0x4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/22_if1_b100b_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/22_if1_b100b_bitfield_0.c new file mode 100644 index 000000000000..9c4135776adb --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/22_if1_b100b_bitfield_0.c @@ -0,0 +1,43 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (B100A.b0) + { + if (B100B.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/bss_below100/22_if1_b100b_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/22_if1_b100b_bitfield_3.c new file mode 100644 index 000000000000..86f0f22f1372 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/22_if1_b100b_bitfield_3.c @@ -0,0 +1,43 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (B100A.b3) + { + if (B100B.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/bss_below100/22_if1_b100b_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/22_if1_b100b_bitfield_7.c new file mode 100644 index 000000000000..0df2f55dde08 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/22_if1_b100b_bitfield_7.c @@ -0,0 +1,43 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (B100A.b7) + { + if (B100B.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/bss_below100/23_if0_b100b_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/23_if0_b100b_bitfield_0.c new file mode 100644 index 000000000000..9acd8a6f9e31 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/23_if0_b100b_bitfield_0.c @@ -0,0 +1,43 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (!B100A.b0) + { + if (!B100B.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/bss_below100/23_if0_b100b_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/23_if0_b100b_bitfield_3.c new file mode 100644 index 000000000000..3ddbc1a103c8 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/23_if0_b100b_bitfield_3.c @@ -0,0 +1,43 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (!B100A.b3) + { + if (!B100B.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/bss_below100/23_if0_b100b_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/23_if0_b100b_bitfield_7.c new file mode 100644 index 000000000000..3c0802e1e381 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/23_if0_b100b_bitfield_7.c @@ -0,0 +1,43 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (!B100A.b7) + { + if (!B100B.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/bss_below100/24_set_b100w_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_0.c new file mode 100644 index 000000000000..d2fb58096432 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_0.c @@ -0,0 +1,40 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b0 = 1; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x1235) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_7.c new file mode 100644 index 000000000000..14825344076a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_7.c @@ -0,0 +1,40 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b7 = 1; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x12b4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_8.c new file mode 100644 index 000000000000..ce495b3ecdbb --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_8.c @@ -0,0 +1,40 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b8 = 1; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x1334) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_f.c new file mode 100644 index 000000000000..057f2d0231f6 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/24_set_b100w_bitfield_f.c @@ -0,0 +1,40 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b15 = 1; +} + +int +main (void) +{ + *p = 0x1234; + Do (); + return (*p == 0x9234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_0.c new file mode 100644 index 000000000000..f32a16bd9389 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_0.c @@ -0,0 +1,40 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b0 = 0; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xedca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_7.c new file mode 100644 index 000000000000..b123c5e3ef2a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_7.c @@ -0,0 +1,40 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b7 = 0; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xed4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_8.c new file mode 100644 index 000000000000..ed923a1d0ada --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_8.c @@ -0,0 +1,40 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b8 = 0; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0xeccb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_f.c new file mode 100644 index 000000000000..2e0411519856 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/25_clr_b100w_bitfield_f.c @@ -0,0 +1,40 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)); +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b15 = 0; +} + +int +main (void) +{ + *p = 0xedcb; + Do (); + return (*p == 0x6dcb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_0.c new file mode 100644 index 000000000000..223de1284e8d --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_0.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b0) + { + if (B100B.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/bss_below100/26_if1_b100w_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_3.c new file mode 100644 index 000000000000..83b0a8a1525a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_3.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b3) + { + if (B100B.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/bss_below100/26_if1_b100w_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_7.c new file mode 100644 index 000000000000..89e71b89f765 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_7.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b7) + { + if (B100B.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/bss_below100/26_if1_b100w_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_8.c new file mode 100644 index 000000000000..044541bfe87c --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_8.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b8) + { + if (B100B.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/bss_below100/26_if1_b100w_bitfield_b.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_b.c new file mode 100644 index 000000000000..e36934f8d620 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_b.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b11) + { + if (B100B.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/bss_below100/26_if1_b100w_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_f.c new file mode 100644 index 000000000000..90d0bbd9bb15 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/26_if1_b100w_bitfield_f.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b15) + { + if (B100B.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/bss_below100/27_if0_b100w_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_0.c new file mode 100644 index 000000000000..a81359ca32c5 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_0.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b0) + { + if (!B100B.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/bss_below100/27_if0_b100w_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_3.c new file mode 100644 index 000000000000..d9eff1abb153 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_3.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b3) + { + if (!B100B.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/bss_below100/27_if0_b100w_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_7.c new file mode 100644 index 000000000000..1d643ea0217b --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_7.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b7) + { + if (!B100B.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/bss_below100/27_if0_b100w_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_8.c new file mode 100644 index 000000000000..5a2b67863f42 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_8.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b8) + { + if (!B100B.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/bss_below100/27_if0_b100w_bitfield_b.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_b.c new file mode 100644 index 000000000000..87f760b22200 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_b.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b11) + { + if (!B100B.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/bss_below100/27_if0_b100w_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_f.c new file mode 100644 index 000000000000..1950ca27cdfa --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bss_below100/27_if0_b100w_bitfield_f.c @@ -0,0 +1,51 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)); +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)); +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b15) + { + if (!B100B.b15) + 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/data_below100/01_const_to_b100b.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/01_const_to_b100b.c new file mode 100644 index 000000000000..0ffc4bad8dca --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/01_const_to_b100b.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b B100,#18" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *p = &B100; + +void +Do (void) +{ + B100 = 0x12; +} + +int +main (void) +{ + Do (); + return (*p == 0x12) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/02_const_to_b100w.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/02_const_to_b100w.c new file mode 100644 index 000000000000..e2ad793c9e50 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/02_const_to_b100w.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w B100,#4660" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0x9876; +unsigned short *p = &B100; + +void +Do (void) +{ + B100 = 0x1234; +} + +int +main (void) +{ + Do (); + return (*p == 0x1234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/03_var_to_b100b.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/03_var_to_b100b.c new file mode 100644 index 000000000000..f78d18ab93b5 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/03_var_to_b100b.c @@ -0,0 +1,21 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b B100,r" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *p = &B100; + +unsigned char yData = 0x12; + +void +Do (void) +{ + B100 = yData; +} + +int +main (void) +{ + Do (); + return (*p == 0x12) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/04_var_to_b100w.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/04_var_to_b100w.c new file mode 100644 index 000000000000..b9f3c55cda46 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/04_var_to_b100w.c @@ -0,0 +1,21 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w B100,r" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0x9876; +unsigned short *p = &B100; + +unsigned short wData = 0x1234; + +void +Do (void) +{ + B100 = wData; +} + +int +main (void) +{ + Do (); + return (*p == 0x1234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/05_b100b_to_var.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/05_b100b_to_var.c new file mode 100644 index 000000000000..b2a0bd04c31c --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/05_b100b_to_var.c @@ -0,0 +1,21 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.b r., *B100" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *p = &B100; + +unsigned char yData = 0x12; + +void +Do (void) +{ + yData = B100; +} + +int +main (void) +{ + Do (); + return (yData == 0x34) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/06_b100w_to_var.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/06_b100w_to_var.c new file mode 100644 index 000000000000..50a6dd2a1eab --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/06_b100w_to_var.c @@ -0,0 +1,21 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "mov.w r.,B100" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0x3456; +unsigned short *p = &B100; + +unsigned short wData = 0x1234; + +void +Do (void) +{ + wData = B100; +} + +int +main (void) +{ + Do (); + return (wData == 0x3456) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/10_set_b100b_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/10_set_b100b_bit_0.c new file mode 100644 index 000000000000..f81d26a3c2d0 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/10_set_b100b_bit_0.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *p = &B100; + +void +Do (void) +{ + B100 |= 0x01; +} + +int +main (void) +{ + Do (); + return (*p == 0x35) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/10_set_b100b_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/10_set_b100b_bit_7.c new file mode 100644 index 000000000000..2c519132e31c --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/10_set_b100b_bit_7.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *p = &B100; + +void +Do (void) +{ + B100 |= 0x80; +} + +int +main (void) +{ + Do (); + return (*p == 0xb4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/11_clr_b100b_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/11_clr_b100b_bit_0.c new file mode 100644 index 000000000000..500f9baf4113 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/11_clr_b100b_bit_0.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)) = 0xcb; +unsigned char *p = &B100; + +void +Do (void) +{ + B100 &= ~0x01; +} + +int +main (void) +{ + Do (); + return (*p == 0xca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/11_clr_b100b_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/11_clr_b100b_bit_7.c new file mode 100644 index 000000000000..7c71f678974b --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/11_clr_b100b_bit_7.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100 __attribute__ ((__BELOW100__)) = 0xcb; +unsigned char *p = &B100; + +void +Do (void) +{ + B100 &= ~0x80; +} + +int +main (void) +{ + Do (); + return (*p == 0x4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/12_if1_b100b_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/12_if1_b100b_bit_0.c new file mode 100644 index 000000000000..10dee7151170 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/12_if1_b100b_bit_0.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)) = 0xcb; +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x01) + { + if (B100B & 0x01) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/12_if1_b100b_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/12_if1_b100b_bit_3.c new file mode 100644 index 000000000000..b36612409c81 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/12_if1_b100b_bit_3.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)) = 0xcb; +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x08) + { + if (B100B & 0x08) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/12_if1_b100b_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/12_if1_b100b_bit_7.c new file mode 100644 index 000000000000..9906a663c420 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/12_if1_b100b_bit_7.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)) = 0xcb; +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x80) + { + if (B100B & 0x80) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/13_if0_b100b_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/13_if0_b100b_bit_0.c new file mode 100644 index 000000000000..04cc929138b1 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/13_if0_b100b_bit_0.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)) = 0xcb; +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x01)) + { + if (!(B100B & 0x01)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/13_if0_b100b_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/13_if0_b100b_bit_3.c new file mode 100644 index 000000000000..cbda60c274e8 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/13_if0_b100b_bit_3.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)) = 0xcb; +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x08)) + { + if (!(B100B & 0x08)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/13_if0_b100b_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/13_if0_b100b_bit_7.c new file mode 100644 index 000000000000..49143469dee7 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/13_if0_b100b_bit_7.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned char B100A __attribute__ ((__BELOW100__)) = 0x34; +unsigned char *pA = &B100A; +unsigned char B100B __attribute__ ((__BELOW100__)) = 0xcb; +unsigned char *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x80)) + { + if (!(B100B & 0x80)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_0.c new file mode 100644 index 000000000000..acce9e1d9fb4 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_0.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *p = &B100; + +void +Do (void) +{ + B100 |= 0x0001; +} + +int +main (void) +{ + Do (); + return (*p == 0x1235) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_7.c new file mode 100644 index 000000000000..35fe30f5d9cc --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_7.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *p = &B100; + +void +Do (void) +{ + B100 |= 0x0080; +} + +int +main (void) +{ + Do (); + return (*p == 0x12b4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_8.c new file mode 100644 index 000000000000..cc337fc0426e --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_8.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100\\+1,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *p = &B100; + +void +Do (void) +{ + B100 |= 0x0100; +} + +int +main (void) +{ + Do (); + return (*p == 0x1334) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_f.c new file mode 100644 index 000000000000..1fce8df53b32 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/14_set_b100w_bit_f.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100\\+1,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *p = &B100; + +void +Do (void) +{ + B100 |= 0x8000; +} + +int +main (void) +{ + Do (); + return (*p == 0x9234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_0.c new file mode 100644 index 000000000000..7c1c9b3e74d5 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_0.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *p = &B100; + +void +Do (void) +{ + B100 &= ~0x0001; +} + +int +main (void) +{ + Do (); + return (*p == 0xedca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_7.c new file mode 100644 index 000000000000..fd707dc789d5 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_7.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *p = &B100; + +void +Do (void) +{ + B100 &= ~0x0080; +} + +int +main (void) +{ + Do (); + return (*p == 0xed4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_8.c new file mode 100644 index 000000000000..7788de60bd9a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_8.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100\\+1,#0" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *p = &B100; + +void +Do (void) +{ + B100 &= ~0x0100; +} + +int +main (void) +{ + Do (); + return (*p == 0xeccb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_f.c new file mode 100644 index 000000000000..8046ee3708ae --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/15_clr_b100w_bit_f.c @@ -0,0 +1,19 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100\\+1,#7" } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100 __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *p = &B100; + +void +Do (void) +{ + B100 &= ~0x8000; +} + +int +main (void) +{ + Do (); + return (*p == 0x6dcb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_0.c new file mode 100644 index 000000000000..a5df453aef4b --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_0.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x0001) + { + if (B100B & 0x0001) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_3.c new file mode 100644 index 000000000000..8ff76e19d1b0 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_3.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x0008) + { + if (B100B & 0x0008) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_7.c new file mode 100644 index 000000000000..8f542f31aa86 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_7.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x0080) + { + if (B100B & 0x0080) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_8.c new file mode 100644 index 000000000000..727104cb251c --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_8.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x0100) + { + if (B100B & 0x0100) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_b.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_b.c new file mode 100644 index 000000000000..74fd66961722 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_b.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x0800) + { + if (B100B & 0x0800) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_f.c new file mode 100644 index 000000000000..79b3839d8986 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/16_if1_b100w_bit_f.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (B100A & 0x8000) + { + if (B100B & 0x8000) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_0.c new file mode 100644 index 000000000000..94dc08884c9e --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_0.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x0001)) + { + if (!(B100B & 0x0001)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_3.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_3.c new file mode 100644 index 000000000000..7bc005dbad48 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_3.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x0008)) + { + if (!(B100B & 0x0008)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_7.c new file mode 100644 index 000000000000..64fcdc251cba --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_7.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x0080)) + { + if (!(B100B & 0x0080)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_8.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_8.c new file mode 100644 index 000000000000..6a118126e815 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_8.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x0100)) + { + if (!(B100B & 0x0100)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_b.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_b.c new file mode 100644 index 000000000000..59a2f3578ffb --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_b.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x0800)) + { + if (!(B100B & 0x0800)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_f.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_f.c new file mode 100644 index 000000000000..3b271902bf9a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/17_if0_b100w_bit_f.c @@ -0,0 +1,29 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */ + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234; +unsigned short *pA = &B100A; +unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb; +unsigned short *pB = &B100B; + +char * +Do (void) +{ + if (!(B100A & 0x8000)) + { + if (!(B100B & 0x8000)) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/20_set_b100b_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/20_set_b100b_bitfield_0.c new file mode 100644 index 000000000000..fef1f2ed45d0 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/20_set_b100b_bitfield_0.c @@ -0,0 +1,33 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0}; +unsigned char *p = (unsigned char *) &B100; + +void +Do (void) +{ + B100.b0 = 1; +} + +int +main (void) +{ + Do (); + return (*p == 0x35) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/20_set_b100b_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/20_set_b100b_bitfield_7.c new file mode 100644 index 000000000000..b3900ca82ffc --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/20_set_b100b_bitfield_7.c @@ -0,0 +1,33 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0}; +unsigned char *p = (unsigned char *) &B100; + +void +Do (void) +{ + B100.b7 = 1; +} + +int +main (void) +{ + Do (); + return (*p == 0xb4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/21_clr_b100b_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/21_clr_b100b_bitfield_0.c new file mode 100644 index 000000000000..6106f3860586 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/21_clr_b100b_bitfield_0.c @@ -0,0 +1,33 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1}; +unsigned char *p = (unsigned char *) &B100; + +void +Do (void) +{ + B100.b0 = 0; +} + +int +main (void) +{ + Do (); + return (*p == 0xca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/21_clr_b100b_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/21_clr_b100b_bitfield_7.c new file mode 100644 index 000000000000..414eec653f48 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/21_clr_b100b_bitfield_7.c @@ -0,0 +1,33 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1}; +unsigned char *p = (unsigned char *) &B100; + +void +Do (void) +{ + B100.b7 = 0; +} + +int +main (void) +{ + Do (); + return (*p == 0x4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/22_if1_b100b_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/22_if1_b100b_bitfield_0.c new file mode 100644 index 000000000000..b950c518418f --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/22_if1_b100b_bitfield_0.c @@ -0,0 +1,45 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1}; +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0}; +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (B100A.b0) + { + if (B100B.b0) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/22_if1_b100b_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/22_if1_b100b_bitfield_3.c new file mode 100644 index 000000000000..b9da6a5e6528 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/22_if1_b100b_bitfield_3.c @@ -0,0 +1,45 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1}; +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0}; +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (B100A.b3) + { + if (B100B.b3) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/22_if1_b100b_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/22_if1_b100b_bitfield_7.c new file mode 100644 index 000000000000..667e892ea554 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/22_if1_b100b_bitfield_7.c @@ -0,0 +1,45 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1}; +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0}; +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (B100A.b7) + { + if (B100B.b7) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/23_if0_b100b_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/23_if0_b100b_bitfield_0.c new file mode 100644 index 000000000000..ebb63f74c9e3 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/23_if0_b100b_bitfield_0.c @@ -0,0 +1,45 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0}; +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1}; +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (!B100A.b0) + { + if (!B100B.b0) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/23_if0_b100b_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/23_if0_b100b_bitfield_3.c new file mode 100644 index 000000000000..a16768e40ccd --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/23_if0_b100b_bitfield_3.c @@ -0,0 +1,45 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */ + +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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0}; +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1}; +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (!B100A.b3) + { + if (!B100B.b3) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/23_if0_b100b_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/23_if0_b100b_bitfield_7.c new file mode 100644 index 000000000000..6f6d181e5717 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/23_if0_b100b_bitfield_7.c @@ -0,0 +1,45 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0}; +unsigned char *pA = (unsigned char *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1}; +unsigned char *pB = (unsigned char *) &B100B; + +char * +Do (void) +{ + if (!B100A.b7) + { + if (!B100B.b7) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_0.c new file mode 100644 index 000000000000..7ac5028af940 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_0.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b0 = 1; +} + +int +main (void) +{ + Do (); + return (*p == 0x1235) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_7.c new file mode 100644 index 000000000000..8ba664bedaf8 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_7.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b7 = 1; +} + +int +main (void) +{ + Do (); + return (*p == 0x12b4) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_8.c new file mode 100644 index 000000000000..2a43500c188a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_8.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b8 = 1; +} + +int +main (void) +{ + Do (); + return (*p == 0x1334) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_f.c new file mode 100644 index 000000000000..9ae5ce48b254 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/24_set_b100w_bitfield_f.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "set1 B100\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b15 = 1; +} + +int +main (void) +{ + Do (); + return (*p == 0x9234) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_0.c new file mode 100644 index 000000000000..94fdf696995a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_0.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b0 = 0; +} + +int +main (void) +{ + Do (); + return (*p == 0xedca) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_7.c new file mode 100644 index 000000000000..25f11a603c64 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_7.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b7 = 0; +} + +int +main (void) +{ + Do (); + return (*p == 0xed4b) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_8.c new file mode 100644 index 000000000000..d065be146597 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_8.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b8 = 0; +} + +int +main (void) +{ + Do (); + return (*p == 0xeccb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_f.c new file mode 100644 index 000000000000..4fbe7145555f --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/25_clr_b100w_bitfield_f.c @@ -0,0 +1,41 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "clr1 B100\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100 __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *p = (unsigned short *) &B100; + +void +Do (void) +{ + B100.b15 = 0; +} + +int +main (void) +{ + Do (); + return (*p == 0x6dcb) ? 0 : 1; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_0.c new file mode 100644 index 000000000000..054c0f51e01f --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_0.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b0) + { + if (B100B.b0) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_3.c new file mode 100644 index 000000000000..75ef36b3469f --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_3.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b3) + { + if (B100B.b3) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_7.c new file mode 100644 index 000000000000..45df6371c09a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_7.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b7) + { + if (B100B.b7) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_8.c new file mode 100644 index 000000000000..187a47761683 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_8.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b8) + { + if (B100B.b8) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_b.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_b.c new file mode 100644 index 000000000000..8cf4cfd53a48 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_b.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b11) + { + if (B100B.b11) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_f.c new file mode 100644 index 000000000000..235cef7d2502 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/26_if1_b100w_bitfield_f.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (B100A.b15) + { + if (B100B.b15) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_0.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_0.c new file mode 100644 index 000000000000..bb80aca8158a --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_0.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b0) + { + if (!B100B.b0) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_3.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_3.c new file mode 100644 index 000000000000..5be55642680b --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_3.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b3) + { + if (!B100B.b3) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_7.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_7.c new file mode 100644 index 000000000000..0725b554219d --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_7.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b7) + { + if (!B100B.b7) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_8.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_8.c new file mode 100644 index 000000000000..2ad3642f845d --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_8.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b8) + { + if (!B100B.b8) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_b.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_b.c new file mode 100644 index 000000000000..e9af02f8e4de --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_b.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b11) + { + if (!B100B.b11) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_f.c b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_f.c new file mode 100644 index 000000000000..a13ec8c2cd41 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/data_below100/27_if0_b100w_bitfield_f.c @@ -0,0 +1,53 @@ +/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */ +/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */ +/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#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; + +char acDummy[0xf0] __attribute__ ((__BELOW100__)); +BitField B100A __attribute__ ((__BELOW100__)) = +{ +0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}; +unsigned short *pA = (unsigned short *) &B100A; +BitField B100B __attribute__ ((__BELOW100__)) = +{ +1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1}; +unsigned short *pB = (unsigned short *) &B100B; + +char * +Do (void) +{ + if (!B100A.b15) + { + if (!B100B.b15) + return "Fail"; + else + return "Success"; + } + else + return "Fail"; +} + +int +main (void) +{ + return Do ()[0] == 'F'; +} 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 000000000000..96e4adcfb630 --- /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 000000000000..930ba4d967c7 --- /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 000000000000..8c4b1f1c7352 --- /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 000000000000..c8d4a0e66606 --- /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 000000000000..9471e295a7f8 --- /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 000000000000..39cbab5c3e93 --- /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 000000000000..644afb59c0da --- /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 000000000000..90cd3c83f8ab --- /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 000000000000..59d6153edd60 --- /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 000000000000..0cb7e1761c99 --- /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 000000000000..54b0b1f6dc28 --- /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 000000000000..4a575cc99056 --- /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 000000000000..747cbdd94872 --- /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 000000000000..d149692064cd --- /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 000000000000..be6112cf1193 --- /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 000000000000..12e68cd5b27e --- /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 000000000000..00f4f78cc953 --- /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 000000000000..b5741fc485fd --- /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 000000000000..ffcad45b2a7d --- /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 000000000000..3f19329f2854 --- /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 000000000000..b5e8bb9e270d --- /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 000000000000..767e95ff4812 --- /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 000000000000..fcabe09948e6 --- /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 000000000000..26281be8761c --- /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 000000000000..15ff063f42aa --- /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 000000000000..c44817a7306f --- /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 000000000000..9f1c3a5e7bdd --- /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 000000000000..46eef43c4544 --- /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 000000000000..287dd7a832bd --- /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 000000000000..719fa58dfd9b --- /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 000000000000..1b361c5feee9 --- /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 000000000000..c8a3ba7cb941 --- /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 000000000000..a0f5742c1a2c --- /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 000000000000..5e91bb23e6b6 --- /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 000000000000..ac5d87fe31d0 --- /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 000000000000..fa77f1bd1e65 --- /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 000000000000..cb331f034358 --- /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 000000000000..105bf4d8d8fe --- /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 000000000000..768cfb92b897 --- /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 000000000000..533a3c61ace5 --- /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 000000000000..3879ed43889a --- /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 000000000000..1b7bb8777692 --- /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 000000000000..6f73231c7bce --- /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 000000000000..10063e49286d --- /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 000000000000..bb8489b6c3b1 --- /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 000000000000..96b441c04dbd --- /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 000000000000..ad7bebdc6a65 --- /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 000000000000..dfa59a939d97 --- /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 000000000000..c311877c761b --- /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 000000000000..2e4eea99095c --- /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 000000000000..d2351681ce3c --- /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 000000000000..6f1cf87df6e7 --- /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 000000000000..9de4c0def784 --- /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 000000000000..e89757fb6ee1 --- /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 000000000000..5acd858fc2dc --- /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 000000000000..112714e99ab3 --- /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 000000000000..015f9bc15dbc --- /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 000000000000..0c85ffaa9b67 --- /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 000000000000..d4861b21bdad --- /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 000000000000..5318305dbdf8 --- /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 000000000000..85b86a0e97bb --- /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 000000000000..65412e3f567c --- /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 000000000000..951db3f2fbd1 --- /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 000000000000..b51daa862025 --- /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 000000000000..0680d4f03b77 --- /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 000000000000..17f07f907b02 --- /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 000000000000..2c1cab89c565 --- /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 000000000000..2353cad4efa3 --- /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 000000000000..123cb0605900 --- /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 000000000000..daf5090d228c --- /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'; +} diff --git a/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp b/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp index 2961cf1b8812..49d32ec249de 100644 --- a/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp +++ b/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp @@ -6,18 +6,37 @@ if {![istarget xstormy16-*-*]} { load_lib gcc-dg.exp -# If a testcase doesn't have special options, use these. -global DEFAULT_CFLAGS -if ![info exists DEFAULT_CFLAGS] then { - set DEFAULT_CFLAGS " -ansi -pedantic-errors" -} - # Initialize `dg'. dg-init +# Assemble the below100.S file which contains +# support code for the rest of the tests. +set old-dg-do-what-default "${dg-do-what-default}" +set dg-do-what-default assemble +dg-test -keep-output "$srcdir/$subdir/below100.S" "" "" +set dg-do-what-default run + + # Main loop. -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ - "" $DEFAULT_CFLAGS +foreach testcase [lsort [find $srcdir/$subdir *.c]] { + global test_counts; + + set base "[file rootname [file tail $testcase]]" + + if ![runtest_file_p $runtests $testcase] { + continue + } + + set fails_before $test_counts(FAIL,count) + dg-test $testcase "--save-temps -fno-inline-functions -L$srcdir/$subdir" "" + set fails_after $test_counts(FAIL,count) + + if { $fails_before == $fails_after } { + catch "exec rm -f $base.i $base.s $base.o" + } +} + +set dg-do-what-default "${old-dg-do-what-default}" # All done. dg-finish