* config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
[official-gcc.git] / gcc / testsuite / gcc.target / sh / sh2a-bor.c
blob648e7661302f4f31927646ca90e6660cbed70e04
1 /* Testcase to check generation of a SH2A specific instruction for
2 "BOR.B #imm3, @(disp12, Rn)". */
3 /* { dg-do compile { target { sh2a } } } */
4 /* { dg-options "-O1 -mbitops" } */
5 /* { dg-final { scan-assembler "bor.b"} } */
7 volatile struct
9 union
11 unsigned char BYTE;
12 struct
14 unsigned char BIT7:1;
15 unsigned char BIT6:1;
16 unsigned char BIT5:1;
17 unsigned char BIT4:1;
18 unsigned char BIT3:1;
19 unsigned char BIT2:1;
20 unsigned char BIT1:1;
21 unsigned char BIT0:1;
23 BIT;
25 ICR0;
27 USRSTR;
29 volatile union t_IOR
31 unsigned short WORD;
32 struct
34 unsigned char IOR15:1;
35 unsigned char IOR14:1;
36 unsigned char IOR13:1;
37 unsigned char IOR12:1;
38 unsigned char IOR11:1;
39 unsigned char IOR10:1;
40 unsigned char IOR9:1;
41 unsigned char IOR8:1;
42 unsigned char IOR7:1;
43 unsigned char IOR6:1;
44 unsigned char IOR5:1;
45 unsigned char IOR4:1;
46 unsigned char IOR3:1;
47 unsigned char IOR2:1;
48 unsigned char IOR1:1;
49 unsigned char IOR0:1;
51 BIT;
53 PORT;
55 int
56 main ()
58 volatile unsigned char a;
60 /* Instruction generated is BOR.B #imm3, @(disp12, Rn) */
61 USRSTR.ICR0.BIT.BIT3 = USRSTR.ICR0.BIT.BIT4 | USRSTR.ICR0.BIT.BIT1;
62 USRSTR.ICR0.BIT.BIT2 = USRSTR.ICR0.BIT.BIT6 | USRSTR.ICR0.BIT.BIT6;
63 USRSTR.ICR0.BIT.BIT4 = USRSTR.ICR0.BIT.BIT2 | USRSTR.ICR0.BIT.BIT4;
64 USRSTR.ICR0.BIT.BIT6 = USRSTR.ICR0.BIT.BIT1 | USRSTR.ICR0.BIT.BIT3;
66 a = USRSTR.ICR0.BIT.BIT0 | USRSTR.ICR0.BIT.BIT1;
67 a = USRSTR.ICR0.BIT.BIT5 | USRSTR.ICR0.BIT.BIT7;
68 a = USRSTR.ICR0.BIT.BIT2 | USRSTR.ICR0.BIT.BIT6;
70 PORT.BIT.IOR13 = PORT.BIT.IOR0 | USRSTR.ICR0.BIT.BIT7;
71 PORT.BIT.IOR15 = PORT.BIT.IOR6 | USRSTR.ICR0.BIT.BIT2;
72 PORT.BIT.IOR3 = PORT.BIT.IOR2 | USRSTR.ICR0.BIT.BIT5;
73 PORT.BIT.IOR1 = PORT.BIT.IOR13 | USRSTR.ICR0.BIT.BIT1;
75 PORT.BIT.IOR1 = PORT.BIT.IOR2 | USRSTR.ICR0.BIT.BIT1;
76 PORT.BIT.IOR11 = PORT.BIT.IOR9 | USRSTR.ICR0.BIT.BIT2;
77 PORT.BIT.IOR8 = PORT.BIT.IOR14 | USRSTR.ICR0.BIT.BIT5;
79 PORT.BIT.IOR10 |= USRSTR.ICR0.BIT.BIT1;
80 PORT.BIT.IOR1 |= USRSTR.ICR0.BIT.BIT2;
81 PORT.BIT.IOR5 |= USRSTR.ICR0.BIT.BIT5;
82 PORT.BIT.IOR14 |= USRSTR.ICR0.BIT.BIT4;
84 /* Instruction generated on using size optimization option "-Os". */
85 a = a & USRSTR.ICR0.BIT.BIT1;
86 a = a & USRSTR.ICR0.BIT.BIT4;
87 a = a & USRSTR.ICR0.BIT.BIT0;
89 return 0;