1; RUN: llc < %s -march=cellspu > %t1.s 2; RUN: grep selb %t1.s | count 56 3 4target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" 5target triple = "spu" 6 7;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 8; v2i64 9;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 10 11; (or (and rC, rB), (and (not rC), rA)) 12define <2 x i64> @selectbits_v2i64_01(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) { 13 %C = and <2 x i64> %rC, %rB 14 %A = xor <2 x i64> %rC, < i64 -1, i64 -1 > 15 %B = and <2 x i64> %A, %rA 16 %D = or <2 x i64> %C, %B 17 ret <2 x i64> %D 18} 19 20; (or (and rB, rC), (and (not rC), rA)) 21define <2 x i64> @selectbits_v2i64_02(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) { 22 %C = and <2 x i64> %rB, %rC 23 %A = xor <2 x i64> %rC, < i64 -1, i64 -1 > 24 %B = and <2 x i64> %A, %rA 25 %D = or <2 x i64> %C, %B 26 ret <2 x i64> %D 27} 28 29; (or (and (not rC), rA), (and rB, rC)) 30define <2 x i64> @selectbits_v2i64_03(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) { 31 %A = xor <2 x i64> %rC, < i64 -1, i64 -1 > 32 %B = and <2 x i64> %A, %rA 33 %C = and <2 x i64> %rB, %rC 34 %D = or <2 x i64> %C, %B 35 ret <2 x i64> %D 36} 37 38; (or (and (not rC), rA), (and rC, rB)) 39define <2 x i64> @selectbits_v2i64_04(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) { 40 %A = xor <2 x i64> %rC, < i64 -1, i64 -1 > 41 %B = and <2 x i64> %A, %rA 42 %C = and <2 x i64> %rC, %rB 43 %D = or <2 x i64> %C, %B 44 ret <2 x i64> %D 45} 46 47; (or (and rC, rB), (and rA, (not rC))) 48define <2 x i64> @selectbits_v2i64_05(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) { 49 %C = and <2 x i64> %rC, %rB 50 %A = xor <2 x i64> %rC, < i64 -1, i64 -1 > 51 %B = and <2 x i64> %rA, %A 52 %D = or <2 x i64> %C, %B 53 ret <2 x i64> %D 54} 55 56; (or (and rB, rC), (and rA, (not rC))) 57define <2 x i64> @selectbits_v2i64_06(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) { 58 %C = and <2 x i64> %rB, %rC 59 %A = xor <2 x i64> %rC, < i64 -1, i64 -1 > 60 %B = and <2 x i64> %rA, %A 61 %D = or <2 x i64> %C, %B 62 ret <2 x i64> %D 63} 64 65; (or (and rA, (not rC)), (and rB, rC)) 66define <2 x i64> @selectbits_v2i64_07(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) { 67 %A = xor <2 x i64> %rC, < i64 -1, i64 -1 > 68 %B = and <2 x i64> %rA, %A 69 %C = and <2 x i64> %rB, %rC 70 %D = or <2 x i64> %C, %B 71 ret <2 x i64> %D 72} 73 74; (or (and rA, (not rC)), (and rC, rB)) 75define <2 x i64> @selectbits_v2i64_08(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) { 76 %A = xor <2 x i64> %rC, < i64 -1, i64 -1 > 77 %B = and <2 x i64> %rA, %A 78 %C = and <2 x i64> %rC, %rB 79 %D = or <2 x i64> %C, %B 80 ret <2 x i64> %D 81} 82 83;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 84; v4i32 85;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 86 87; (or (and rC, rB), (and (not rC), rA)) 88define <4 x i32> @selectbits_v4i32_01(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) { 89 %C = and <4 x i32> %rC, %rB 90 %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1 > 91 %B = and <4 x i32> %A, %rA 92 %D = or <4 x i32> %C, %B 93 ret <4 x i32> %D 94} 95 96; (or (and rB, rC), (and (not rC), rA)) 97define <4 x i32> @selectbits_v4i32_02(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) { 98 %C = and <4 x i32> %rB, %rC 99 %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1 > 100 %B = and <4 x i32> %A, %rA 101 %D = or <4 x i32> %C, %B 102 ret <4 x i32> %D 103} 104 105; (or (and (not rC), rA), (and rB, rC)) 106define <4 x i32> @selectbits_v4i32_03(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) { 107 %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1 > 108 %B = and <4 x i32> %A, %rA 109 %C = and <4 x i32> %rB, %rC 110 %D = or <4 x i32> %C, %B 111 ret <4 x i32> %D 112} 113 114; (or (and (not rC), rA), (and rC, rB)) 115define <4 x i32> @selectbits_v4i32_04(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) { 116 %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1> 117 %B = and <4 x i32> %A, %rA 118 %C = and <4 x i32> %rC, %rB 119 %D = or <4 x i32> %C, %B 120 ret <4 x i32> %D 121} 122 123; (or (and rC, rB), (and rA, (not rC))) 124define <4 x i32> @selectbits_v4i32_05(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) { 125 %C = and <4 x i32> %rC, %rB 126 %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1> 127 %B = and <4 x i32> %rA, %A 128 %D = or <4 x i32> %C, %B 129 ret <4 x i32> %D 130} 131 132; (or (and rB, rC), (and rA, (not rC))) 133define <4 x i32> @selectbits_v4i32_06(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) { 134 %C = and <4 x i32> %rB, %rC 135 %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1> 136 %B = and <4 x i32> %rA, %A 137 %D = or <4 x i32> %C, %B 138 ret <4 x i32> %D 139} 140 141; (or (and rA, (not rC)), (and rB, rC)) 142define <4 x i32> @selectbits_v4i32_07(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) { 143 %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1> 144 %B = and <4 x i32> %rA, %A 145 %C = and <4 x i32> %rB, %rC 146 %D = or <4 x i32> %C, %B 147 ret <4 x i32> %D 148} 149 150; (or (and rA, (not rC)), (and rC, rB)) 151define <4 x i32> @selectbits_v4i32_08(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) { 152 %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1> 153 %B = and <4 x i32> %rA, %A 154 %C = and <4 x i32> %rC, %rB 155 %D = or <4 x i32> %C, %B 156 ret <4 x i32> %D 157} 158 159;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 160; v8i16 161;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 162 163; (or (and rC, rB), (and (not rC), rA)) 164define <8 x i16> @selectbits_v8i16_01(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) { 165 %C = and <8 x i16> %rC, %rB 166 %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1, 167 i16 -1, i16 -1, i16 -1, i16 -1 > 168 %B = and <8 x i16> %A, %rA 169 %D = or <8 x i16> %C, %B 170 ret <8 x i16> %D 171} 172 173; (or (and rB, rC), (and (not rC), rA)) 174define <8 x i16> @selectbits_v8i16_02(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) { 175 %C = and <8 x i16> %rB, %rC 176 %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1, 177 i16 -1, i16 -1, i16 -1, i16 -1 > 178 %B = and <8 x i16> %A, %rA 179 %D = or <8 x i16> %C, %B 180 ret <8 x i16> %D 181} 182 183; (or (and (not rC), rA), (and rB, rC)) 184define <8 x i16> @selectbits_v8i16_03(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) { 185 %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1, 186 i16 -1, i16 -1, i16 -1, i16 -1 > 187 %B = and <8 x i16> %A, %rA 188 %C = and <8 x i16> %rB, %rC 189 %D = or <8 x i16> %C, %B 190 ret <8 x i16> %D 191} 192 193; (or (and (not rC), rA), (and rC, rB)) 194define <8 x i16> @selectbits_v8i16_04(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) { 195 %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1, 196 i16 -1, i16 -1, i16 -1, i16 -1 > 197 %B = and <8 x i16> %A, %rA 198 %C = and <8 x i16> %rC, %rB 199 %D = or <8 x i16> %C, %B 200 ret <8 x i16> %D 201} 202 203; (or (and rC, rB), (and rA, (not rC))) 204define <8 x i16> @selectbits_v8i16_05(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) { 205 %C = and <8 x i16> %rC, %rB 206 %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1, 207 i16 -1, i16 -1, i16 -1, i16 -1 > 208 %B = and <8 x i16> %rA, %A 209 %D = or <8 x i16> %C, %B 210 ret <8 x i16> %D 211} 212 213; (or (and rB, rC), (and rA, (not rC))) 214define <8 x i16> @selectbits_v8i16_06(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) { 215 %C = and <8 x i16> %rB, %rC 216 %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1, 217 i16 -1, i16 -1, i16 -1, i16 -1 > 218 %B = and <8 x i16> %rA, %A 219 %D = or <8 x i16> %C, %B 220 ret <8 x i16> %D 221} 222 223; (or (and rA, (not rC)), (and rB, rC)) 224define <8 x i16> @selectbits_v8i16_07(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) { 225 %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1, 226 i16 -1, i16 -1, i16 -1, i16 -1 > 227 %B = and <8 x i16> %rA, %A 228 %C = and <8 x i16> %rB, %rC 229 %D = or <8 x i16> %C, %B 230 ret <8 x i16> %D 231} 232 233; (or (and rA, (not rC)), (and rC, rB)) 234define <8 x i16> @selectbits_v8i16_08(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) { 235 %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1, 236 i16 -1, i16 -1, i16 -1, i16 -1 > 237 %B = and <8 x i16> %rA, %A 238 %C = and <8 x i16> %rC, %rB 239 %D = or <8 x i16> %C, %B 240 ret <8 x i16> %D 241} 242 243;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 244; v16i8 245;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 246 247; (or (and rC, rB), (and (not rC), rA)) 248define <16 x i8> @selectbits_v16i8_01(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) { 249 %C = and <16 x i8> %rC, %rB 250 %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1, 251 i8 -1, i8 -1, i8 -1, i8 -1, 252 i8 -1, i8 -1, i8 -1, i8 -1, 253 i8 -1, i8 -1, i8 -1, i8 -1 > 254 %B = and <16 x i8> %A, %rA 255 %D = or <16 x i8> %C, %B 256 ret <16 x i8> %D 257} 258 259; (or (and rB, rC), (and (not rC), rA)) 260define <16 x i8> @selectbits_v16i8_02(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) { 261 %C = and <16 x i8> %rB, %rC 262 %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1, 263 i8 -1, i8 -1, i8 -1, i8 -1, 264 i8 -1, i8 -1, i8 -1, i8 -1, 265 i8 -1, i8 -1, i8 -1, i8 -1 > 266 %B = and <16 x i8> %A, %rA 267 %D = or <16 x i8> %C, %B 268 ret <16 x i8> %D 269} 270 271; (or (and (not rC), rA), (and rB, rC)) 272define <16 x i8> @selectbits_v16i8_03(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) { 273 %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1, 274 i8 -1, i8 -1, i8 -1, i8 -1, 275 i8 -1, i8 -1, i8 -1, i8 -1, 276 i8 -1, i8 -1, i8 -1, i8 -1 > 277 %B = and <16 x i8> %A, %rA 278 %C = and <16 x i8> %rB, %rC 279 %D = or <16 x i8> %C, %B 280 ret <16 x i8> %D 281} 282 283; (or (and (not rC), rA), (and rC, rB)) 284define <16 x i8> @selectbits_v16i8_04(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) { 285 %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1, 286 i8 -1, i8 -1, i8 -1, i8 -1, 287 i8 -1, i8 -1, i8 -1, i8 -1, 288 i8 -1, i8 -1, i8 -1, i8 -1 > 289 %B = and <16 x i8> %A, %rA 290 %C = and <16 x i8> %rC, %rB 291 %D = or <16 x i8> %C, %B 292 ret <16 x i8> %D 293} 294 295; (or (and rC, rB), (and rA, (not rC))) 296define <16 x i8> @selectbits_v16i8_05(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) { 297 %C = and <16 x i8> %rC, %rB 298 %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1, 299 i8 -1, i8 -1, i8 -1, i8 -1, 300 i8 -1, i8 -1, i8 -1, i8 -1, 301 i8 -1, i8 -1, i8 -1, i8 -1 > 302 %B = and <16 x i8> %rA, %A 303 %D = or <16 x i8> %C, %B 304 ret <16 x i8> %D 305} 306 307; (or (and rB, rC), (and rA, (not rC))) 308define <16 x i8> @selectbits_v16i8_06(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) { 309 %C = and <16 x i8> %rB, %rC 310 %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1, 311 i8 -1, i8 -1, i8 -1, i8 -1, 312 i8 -1, i8 -1, i8 -1, i8 -1, 313 i8 -1, i8 -1, i8 -1, i8 -1 > 314 %B = and <16 x i8> %rA, %A 315 %D = or <16 x i8> %C, %B 316 ret <16 x i8> %D 317} 318 319; (or (and rA, (not rC)), (and rB, rC)) 320define <16 x i8> @selectbits_v16i8_07(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) { 321 %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1, 322 i8 -1, i8 -1, i8 -1, i8 -1, 323 i8 -1, i8 -1, i8 -1, i8 -1, 324 i8 -1, i8 -1, i8 -1, i8 -1 > 325 %B = and <16 x i8> %rA, %A 326 %C = and <16 x i8> %rB, %rC 327 %D = or <16 x i8> %C, %B 328 ret <16 x i8> %D 329} 330 331; (or (and rA, (not rC)), (and rC, rB)) 332define <16 x i8> @selectbits_v16i8_08(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) { 333 %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1, 334 i8 -1, i8 -1, i8 -1, i8 -1, 335 i8 -1, i8 -1, i8 -1, i8 -1, 336 i8 -1, i8 -1, i8 -1, i8 -1 > 337 %B = and <16 x i8> %rA, %A 338 %C = and <16 x i8> %rC, %rB 339 %D = or <16 x i8> %C, %B 340 ret <16 x i8> %D 341} 342 343;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 344; i32 345;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 346 347; (or (and rC, rB), (and (not rC), rA)) 348define i32 @selectbits_i32_01(i32 %rA, i32 %rB, i32 %rC) { 349 %C = and i32 %rC, %rB 350 %A = xor i32 %rC, -1 351 %B = and i32 %A, %rA 352 %D = or i32 %C, %B 353 ret i32 %D 354} 355 356; (or (and rB, rC), (and (not rC), rA)) 357define i32 @selectbits_i32_02(i32 %rA, i32 %rB, i32 %rC) { 358 %C = and i32 %rB, %rC 359 %A = xor i32 %rC, -1 360 %B = and i32 %A, %rA 361 %D = or i32 %C, %B 362 ret i32 %D 363} 364 365; (or (and (not rC), rA), (and rB, rC)) 366define i32 @selectbits_i32_03(i32 %rA, i32 %rB, i32 %rC) { 367 %A = xor i32 %rC, -1 368 %B = and i32 %A, %rA 369 %C = and i32 %rB, %rC 370 %D = or i32 %C, %B 371 ret i32 %D 372} 373 374; (or (and (not rC), rA), (and rC, rB)) 375define i32 @selectbits_i32_04(i32 %rA, i32 %rB, i32 %rC) { 376 %A = xor i32 %rC, -1 377 %B = and i32 %A, %rA 378 %C = and i32 %rC, %rB 379 %D = or i32 %C, %B 380 ret i32 %D 381} 382 383; (or (and rC, rB), (and rA, (not rC))) 384define i32 @selectbits_i32_05(i32 %rA, i32 %rB, i32 %rC) { 385 %C = and i32 %rC, %rB 386 %A = xor i32 %rC, -1 387 %B = and i32 %rA, %A 388 %D = or i32 %C, %B 389 ret i32 %D 390} 391 392; (or (and rB, rC), (and rA, (not rC))) 393define i32 @selectbits_i32_06(i32 %rA, i32 %rB, i32 %rC) { 394 %C = and i32 %rB, %rC 395 %A = xor i32 %rC, -1 396 %B = and i32 %rA, %A 397 %D = or i32 %C, %B 398 ret i32 %D 399} 400 401; (or (and rA, (not rC)), (and rB, rC)) 402define i32 @selectbits_i32_07(i32 %rA, i32 %rB, i32 %rC) { 403 %A = xor i32 %rC, -1 404 %B = and i32 %rA, %A 405 %C = and i32 %rB, %rC 406 %D = or i32 %C, %B 407 ret i32 %D 408} 409 410; (or (and rA, (not rC)), (and rC, rB)) 411define i32 @selectbits_i32_08(i32 %rA, i32 %rB, i32 %rC) { 412 %A = xor i32 %rC, -1 413 %B = and i32 %rA, %A 414 %C = and i32 %rC, %rB 415 %D = or i32 %C, %B 416 ret i32 %D 417} 418 419;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 420; i16 421;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 422 423; (or (and rC, rB), (and (not rC), rA)) 424define i16 @selectbits_i16_01(i16 %rA, i16 %rB, i16 %rC) { 425 %C = and i16 %rC, %rB 426 %A = xor i16 %rC, -1 427 %B = and i16 %A, %rA 428 %D = or i16 %C, %B 429 ret i16 %D 430} 431 432; (or (and rB, rC), (and (not rC), rA)) 433define i16 @selectbits_i16_02(i16 %rA, i16 %rB, i16 %rC) { 434 %C = and i16 %rB, %rC 435 %A = xor i16 %rC, -1 436 %B = and i16 %A, %rA 437 %D = or i16 %C, %B 438 ret i16 %D 439} 440 441; (or (and (not rC), rA), (and rB, rC)) 442define i16 @selectbits_i16_03(i16 %rA, i16 %rB, i16 %rC) { 443 %A = xor i16 %rC, -1 444 %B = and i16 %A, %rA 445 %C = and i16 %rB, %rC 446 %D = or i16 %C, %B 447 ret i16 %D 448} 449 450; (or (and (not rC), rA), (and rC, rB)) 451define i16 @selectbits_i16_04(i16 %rA, i16 %rB, i16 %rC) { 452 %A = xor i16 %rC, -1 453 %B = and i16 %A, %rA 454 %C = and i16 %rC, %rB 455 %D = or i16 %C, %B 456 ret i16 %D 457} 458 459; (or (and rC, rB), (and rA, (not rC))) 460define i16 @selectbits_i16_05(i16 %rA, i16 %rB, i16 %rC) { 461 %C = and i16 %rC, %rB 462 %A = xor i16 %rC, -1 463 %B = and i16 %rA, %A 464 %D = or i16 %C, %B 465 ret i16 %D 466} 467 468; (or (and rB, rC), (and rA, (not rC))) 469define i16 @selectbits_i16_06(i16 %rA, i16 %rB, i16 %rC) { 470 %C = and i16 %rB, %rC 471 %A = xor i16 %rC, -1 472 %B = and i16 %rA, %A 473 %D = or i16 %C, %B 474 ret i16 %D 475} 476 477; (or (and rA, (not rC)), (and rB, rC)) 478define i16 @selectbits_i16_07(i16 %rA, i16 %rB, i16 %rC) { 479 %A = xor i16 %rC, -1 480 %B = and i16 %rA, %A 481 %C = and i16 %rB, %rC 482 %D = or i16 %C, %B 483 ret i16 %D 484} 485 486; (or (and rA, (not rC)), (and rC, rB)) 487define i16 @selectbits_i16_08(i16 %rA, i16 %rB, i16 %rC) { 488 %A = xor i16 %rC, -1 489 %B = and i16 %rA, %A 490 %C = and i16 %rC, %rB 491 %D = or i16 %C, %B 492 ret i16 %D 493} 494 495;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 496; i8 497;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 498 499; (or (and rC, rB), (and (not rC), rA)) 500define i8 @selectbits_i8_01(i8 %rA, i8 %rB, i8 %rC) { 501 %C = and i8 %rC, %rB 502 %A = xor i8 %rC, -1 503 %B = and i8 %A, %rA 504 %D = or i8 %C, %B 505 ret i8 %D 506} 507 508; (or (and rB, rC), (and (not rC), rA)) 509define i8 @selectbits_i8_02(i8 %rA, i8 %rB, i8 %rC) { 510 %C = and i8 %rB, %rC 511 %A = xor i8 %rC, -1 512 %B = and i8 %A, %rA 513 %D = or i8 %C, %B 514 ret i8 %D 515} 516 517; (or (and (not rC), rA), (and rB, rC)) 518define i8 @selectbits_i8_03(i8 %rA, i8 %rB, i8 %rC) { 519 %A = xor i8 %rC, -1 520 %B = and i8 %A, %rA 521 %C = and i8 %rB, %rC 522 %D = or i8 %C, %B 523 ret i8 %D 524} 525 526; (or (and (not rC), rA), (and rC, rB)) 527define i8 @selectbits_i8_04(i8 %rA, i8 %rB, i8 %rC) { 528 %A = xor i8 %rC, -1 529 %B = and i8 %A, %rA 530 %C = and i8 %rC, %rB 531 %D = or i8 %C, %B 532 ret i8 %D 533} 534 535; (or (and rC, rB), (and rA, (not rC))) 536define i8 @selectbits_i8_05(i8 %rA, i8 %rB, i8 %rC) { 537 %C = and i8 %rC, %rB 538 %A = xor i8 %rC, -1 539 %B = and i8 %rA, %A 540 %D = or i8 %C, %B 541 ret i8 %D 542} 543 544; (or (and rB, rC), (and rA, (not rC))) 545define i8 @selectbits_i8_06(i8 %rA, i8 %rB, i8 %rC) { 546 %C = and i8 %rB, %rC 547 %A = xor i8 %rC, -1 548 %B = and i8 %rA, %A 549 %D = or i8 %C, %B 550 ret i8 %D 551} 552 553; (or (and rA, (not rC)), (and rB, rC)) 554define i8 @selectbits_i8_07(i8 %rA, i8 %rB, i8 %rC) { 555 %A = xor i8 %rC, -1 556 %B = and i8 %rA, %A 557 %C = and i8 %rB, %rC 558 %D = or i8 %C, %B 559 ret i8 %D 560} 561 562; (or (and rA, (not rC)), (and rC, rB)) 563define i8 @selectbits_i8_08(i8 %rA, i8 %rB, i8 %rC) { 564 %A = xor i8 %rC, -1 565 %B = and i8 %rA, %A 566 %C = and i8 %rC, %rB 567 %D = or i8 %C, %B 568 ret i8 %D 569} 570