1 /* { dg-do compile } */ 2 /* { dg-require-effective-target vect_int } */ 3 4 typedef unsigned long long UInt64; 5 6 typedef struct struct128 7 { 8 UInt64 uint64_lower; 9 UInt64 uint64_upper; 10 } 11 STRUCT_128; 12 13 typedef union uint128_bitmap 14 { 15 STRUCT_128 uint128; 16 17 struct 18 { 19 UInt64 b00 : 1; 20 UInt64 b01 : 1; 21 UInt64 b02 : 1; 22 UInt64 b03 : 1; 23 UInt64 b04 : 1; 24 UInt64 b05 : 1; 25 UInt64 b06 : 1; 26 UInt64 b07 : 1; 27 UInt64 b08 : 1; 28 UInt64 b09 : 1; 29 UInt64 b10 : 1; 30 UInt64 b11 : 1; 31 UInt64 b12 : 1; 32 UInt64 b13 : 1; 33 UInt64 b14 : 1; 34 UInt64 b15 : 1; 35 UInt64 b16 : 1; 36 UInt64 b17 : 1; 37 UInt64 b18 : 1; 38 UInt64 b19 : 1; 39 UInt64 b20 : 1; 40 UInt64 b21 : 1; 41 UInt64 b22 : 1; 42 UInt64 b23 : 1; 43 UInt64 b24 : 1; 44 UInt64 b25 : 1; 45 UInt64 b26 : 1; 46 UInt64 b27 : 1; 47 UInt64 b28 : 1; 48 UInt64 b29 : 1; 49 UInt64 b30 : 1; 50 UInt64 b31 : 1; 51 UInt64 b32 : 1; 52 UInt64 b33 : 1; 53 UInt64 b34 : 1; 54 UInt64 b35 : 1; 55 UInt64 b36 : 1; 56 UInt64 b37 : 1; 57 UInt64 b38 : 1; 58 UInt64 b39 : 1; 59 UInt64 b40 : 1; 60 UInt64 b41 : 1; 61 UInt64 b42 : 1; 62 UInt64 b43 : 1; 63 UInt64 b44 : 1; 64 UInt64 b45 : 1; 65 UInt64 b46 : 1; 66 UInt64 b47 : 1; 67 UInt64 b48 : 1; 68 UInt64 b49 : 1; 69 UInt64 b50 : 1; 70 UInt64 b51 : 1; 71 UInt64 b52 : 1; 72 UInt64 b53 : 1; 73 UInt64 b54 : 1; 74 UInt64 b55 : 1; 75 UInt64 b56 : 1; 76 UInt64 b57 : 1; 77 UInt64 b58 : 1; 78 UInt64 b59 : 1; 79 UInt64 b60 : 1; 80 UInt64 b61 : 1; 81 UInt64 b62 : 1; 82 UInt64 b63 : 1; 83 UInt64 b64 : 1; 84 UInt64 b65 : 1; 85 UInt64 b66 : 1; 86 UInt64 b67 : 1; 87 UInt64 b68 : 1; 88 UInt64 b69 : 1; 89 UInt64 b70 : 1; 90 UInt64 b71 : 1; 91 UInt64 b72 : 1; 92 UInt64 b73 : 1; 93 UInt64 b74 : 1; 94 UInt64 b75 : 1; 95 UInt64 b76 : 1; 96 UInt64 b77 : 1; 97 UInt64 b78 : 1; 98 UInt64 b79 : 1; 99 UInt64 b80 : 1; 100 UInt64 b81 : 1; 101 UInt64 b82 : 1; 102 UInt64 b83 : 1; 103 UInt64 b84 : 1; 104 UInt64 b85 : 1; 105 UInt64 b86 : 1; 106 UInt64 b87 : 1; 107 UInt64 b88 : 1; 108 UInt64 b89 : 1; 109 UInt64 b90 : 1; 110 UInt64 b91 : 1; 111 UInt64 b92 : 1; 112 UInt64 b93 : 1; 113 UInt64 b94 : 1; 114 UInt64 b95 : 1; 115 UInt64 b96 : 1; 116 UInt64 b97 : 1; 117 UInt64 b98 : 1; 118 UInt64 b99 : 1; 119 UInt64 b100 : 1; 120 UInt64 b101 : 1; 121 UInt64 b102 : 1; 122 UInt64 b103 : 1; 123 UInt64 b104 : 1; 124 UInt64 b105 : 1; 125 UInt64 b106 : 1; 126 UInt64 b107 : 1; 127 UInt64 b108 : 1; 128 UInt64 b109 : 1; 129 UInt64 b110 : 1; 130 UInt64 b111 : 1; 131 UInt64 b112 : 1; 132 UInt64 b113 : 1; 133 UInt64 b114 : 1; 134 UInt64 b115 : 1; 135 UInt64 b116 : 1; 136 UInt64 b117 : 1; 137 UInt64 b118 : 1; 138 UInt64 b119 : 1; 139 UInt64 b120 : 1; 140 UInt64 b121 : 1; 141 UInt64 b122 : 1; 142 UInt64 b123 : 1; 143 UInt64 b124 : 1; 144 UInt64 b125 : 1; 145 UInt64 b126 : 1; 146 UInt64 b127 : 1; 147 } 148 bitmap; 149 } 150 UInt128_BITMAP; 151 152 UInt128_BITMAP V; 153 shift(unsigned char t)154void shift(unsigned char t) 155 { 156 V.uint128.uint64_lower = (V.uint128.uint64_lower >> 1); 157 V.bitmap.b63 = V.bitmap.b64; 158 V.uint128.uint64_upper = (V.uint128.uint64_upper >> 1); 159 160 V.bitmap.b96 = t; 161 } 162 163 /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ 164 165