| /* PR tree-optimization/51581 */ |
| |
| #include "tree-vect.h" |
| |
| short int a[16], b[16]; |
| unsigned short int c[16], d[16]; |
| |
| void |
| f1 (void) |
| { |
| a[0] = b[0] / 8; |
| a[1] = b[1] / 8; |
| a[2] = b[2] / 8; |
| a[3] = b[3] / 8; |
| a[4] = b[4] / 8; |
| a[5] = b[5] / 8; |
| a[6] = b[6] / 8; |
| a[7] = b[7] / 8; |
| a[8] = b[8] / 8; |
| a[9] = b[9] / 8; |
| a[10] = b[10] / 8; |
| a[11] = b[11] / 8; |
| a[12] = b[12] / 8; |
| a[13] = b[13] / 8; |
| a[14] = b[14] / 8; |
| a[15] = b[15] / 8; |
| } |
| |
| void |
| f2 (void) |
| { |
| c[0] = d[0] / 3; |
| c[1] = d[1] / 3; |
| c[2] = d[2] / 3; |
| c[3] = d[3] / 3; |
| c[4] = d[4] / 3; |
| c[5] = d[5] / 3; |
| c[6] = d[6] / 3; |
| c[7] = d[7] / 3; |
| c[8] = d[8] / 3; |
| c[9] = d[9] / 3; |
| c[10] = d[10] / 3; |
| c[11] = d[11] / 3; |
| c[12] = d[12] / 3; |
| c[13] = d[13] / 3; |
| c[14] = d[14] / 3; |
| c[15] = d[15] / 3; |
| } |
| |
| void |
| f3 (void) |
| { |
| a[0] = b[0] / 8; |
| a[1] = b[1] / 4; |
| a[2] = b[2] / 8; |
| a[3] = b[3] / 4; |
| a[4] = b[4] / 8; |
| a[5] = b[5] / 4; |
| a[6] = b[6] / 8; |
| a[7] = b[7] / 4; |
| a[8] = b[8] / 8; |
| a[9] = b[9] / 4; |
| a[10] = b[10] / 8; |
| a[11] = b[11] / 4; |
| a[12] = b[12] / 8; |
| a[13] = b[13] / 4; |
| a[14] = b[14] / 8; |
| a[15] = b[15] / 4; |
| } |
| |
| void |
| f4 (void) |
| { |
| c[0] = d[0] / 3; |
| c[1] = d[1] / 5; |
| c[2] = d[2] / 3; |
| c[3] = d[3] / 5; |
| c[4] = d[4] / 3; |
| c[5] = d[5] / 5; |
| c[6] = d[6] / 3; |
| c[7] = d[7] / 5; |
| c[8] = d[8] / 3; |
| c[9] = d[9] / 5; |
| c[10] = d[10] / 3; |
| c[11] = d[11] / 5; |
| c[12] = d[12] / 3; |
| c[13] = d[13] / 5; |
| c[14] = d[14] / 3; |
| c[15] = d[15] / 5; |
| } |
| |
| void |
| f5 (void) |
| { |
| a[0] = b[0] / 14; |
| a[1] = b[1] / 15; |
| a[2] = b[2] / 14; |
| a[3] = b[3] / 15; |
| a[4] = b[4] / 14; |
| a[5] = b[5] / 15; |
| a[6] = b[6] / 14; |
| a[7] = b[7] / 15; |
| a[8] = b[8] / 14; |
| a[9] = b[9] / 15; |
| a[10] = b[10] / 14; |
| a[11] = b[11] / 15; |
| a[12] = b[12] / 14; |
| a[13] = b[13] / 15; |
| a[14] = b[14] / 14; |
| a[15] = b[15] / 15; |
| } |
| |
| void |
| f6 (void) |
| { |
| c[0] = d[0] / 6; |
| c[1] = d[1] / 5; |
| c[2] = d[2] / 6; |
| c[3] = d[3] / 5; |
| c[4] = d[4] / 6; |
| c[5] = d[5] / 5; |
| c[6] = d[6] / 13; |
| c[7] = d[7] / 5; |
| c[8] = d[8] / 6; |
| c[9] = d[9] / 5; |
| c[10] = d[10] / 6; |
| c[11] = d[11] / 5; |
| c[12] = d[12] / 6; |
| c[13] = d[13] / 5; |
| c[14] = d[14] / 13; |
| c[15] = d[15] / 5; |
| } |
| |
| int |
| main () |
| { |
| int i; |
| check_vect (); |
| asm (""); |
| for (i = 0; i < 16; i++) |
| { |
| asm (""); |
| b[i] = i - 8; |
| d[i] = i - 8; |
| } |
| f1 (); |
| f2 (); |
| for (i = 0; i < 16; i++) |
| if (a[i] != b[i] / 8 || c[i] != d[i] / 3) |
| abort (); |
| f3 (); |
| f4 (); |
| for (i = 0; i < 16; i+= 2) |
| if (a[i] != b[i] / 8 || a[i + 1] != b[i + 1] / 4 |
| || c[i] != d[i] / 3 || c[i + 1] != d[i + 1] / 5) |
| abort (); |
| f5 (); |
| f6 (); |
| for (i = 0; i < 16; i+= 2) |
| if (a[i] != b[i] / 14 || a[i + 1] != b[i + 1] / 15 |
| || c[i] != d[i] / ((i & 7) == 6 ? 13 : 6) || c[i + 1] != d[i + 1] / 5) |
| abort (); |
| return 0; |
| } |
| |