1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; 3; Test that a vector select with a logic combination of two compares do not 4; produce any unnecessary pack, unpack or shift instructions. 5; And, Or and Xor are tested. 6; 7; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s 8 9 10define <2 x i8> @fun0(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i8> %val5, <2 x i8> %val6) { 11; CHECK-LABEL: fun0: 12; CHECK: # BB#0: 13; CHECK-NEXT: vceqb %v0, %v28, %v30 14; CHECK-NEXT: vceqb %v1, %v24, %v26 15; CHECK-NEXT: vn %v0, %v1, %v0 16; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 17; CHECK-NEXT: br %r14 18 %cmp0 = icmp eq <2 x i8> %val1, %val2 19 %cmp1 = icmp eq <2 x i8> %val3, %val4 20 %and = and <2 x i1> %cmp0, %cmp1 21 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 22 ret <2 x i8> %sel 23} 24 25define <2 x i16> @fun1(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i16> %val5, <2 x i16> %val6) { 26; CHECK-LABEL: fun1: 27; CHECK: # BB#0: 28; CHECK-NEXT: vceqb %v0, %v28, %v30 29; CHECK-NEXT: vceqb %v1, %v24, %v26 30; CHECK-NEXT: vn %v0, %v1, %v0 31; CHECK-NEXT: vuphb %v0, %v0 32; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 33; CHECK-NEXT: br %r14 34 %cmp0 = icmp eq <2 x i8> %val1, %val2 35 %cmp1 = icmp eq <2 x i8> %val3, %val4 36 %and = and <2 x i1> %cmp0, %cmp1 37 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 38 ret <2 x i16> %sel 39} 40 41define <2 x i8> @fun2(<2 x i8> %val1, <2 x i8> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) { 42; CHECK-LABEL: fun2: 43; CHECK: # BB#0: 44; CHECK-NEXT: vceqh %v1, %v28, %v30 45; CHECK-NEXT: vceqb %v0, %v24, %v26 46; CHECK-NEXT: vpkh %v1, %v1, %v1 47; CHECK-NEXT: vn %v0, %v0, %v1 48; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 49; CHECK-NEXT: br %r14 50 %cmp0 = icmp eq <2 x i8> %val1, %val2 51 %cmp1 = icmp eq <2 x i16> %val3, %val4 52 %and = and <2 x i1> %cmp0, %cmp1 53 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 54 ret <2 x i8> %sel 55} 56 57define <2 x i32> @fun3(<2 x i8> %val1, <2 x i8> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) { 58; CHECK-LABEL: fun3: 59; CHECK: # BB#0: 60; CHECK-NEXT: vceqb %v1, %v24, %v26 61; CHECK-NEXT: vuphb %v1, %v1 62; CHECK-NEXT: vceqf %v0, %v28, %v30 63; CHECK-NEXT: vuphh %v1, %v1 64; CHECK-NEXT: vn %v0, %v1, %v0 65; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 66; CHECK-NEXT: br %r14 67 %cmp0 = icmp eq <2 x i8> %val1, %val2 68 %cmp1 = icmp eq <2 x i32> %val3, %val4 69 %and = and <2 x i1> %cmp0, %cmp1 70 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 71 ret <2 x i32> %sel 72} 73 74define <2 x i32> @fun4(<2 x i8> %val1, <2 x i8> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i32> %val5, <2 x i32> %val6) { 75; CHECK-LABEL: fun4: 76; CHECK: # BB#0: 77; CHECK-NEXT: vceqb %v1, %v24, %v26 78; CHECK-NEXT: vceqg %v0, %v28, %v30 79; CHECK-NEXT: vuphb %v1, %v1 80; CHECK-NEXT: vpkg %v0, %v0, %v0 81; CHECK-NEXT: vuphh %v1, %v1 82; CHECK-NEXT: vn %v0, %v1, %v0 83; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 84; CHECK-NEXT: br %r14 85 %cmp0 = icmp eq <2 x i8> %val1, %val2 86 %cmp1 = icmp eq <2 x i64> %val3, %val4 87 %and = and <2 x i1> %cmp0, %cmp1 88 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 89 ret <2 x i32> %sel 90} 91 92define <2 x i16> @fun5(<2 x i8> %val1, <2 x i8> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) { 93; CHECK-LABEL: fun5: 94; CHECK: # BB#0: 95; CHECK-NEXT: vmrlf %v0, %v30, %v30 96; CHECK-NEXT: vmrlf %v1, %v28, %v28 97; CHECK-NEXT: vldeb %v0, %v0 98; CHECK-NEXT: vldeb %v1, %v1 99; CHECK-NEXT: vfchdb %v0, %v1, %v0 100; CHECK-NEXT: vmrhf %v1, %v30, %v30 101; CHECK-NEXT: vmrhf %v2, %v28, %v28 102; CHECK-NEXT: vldeb %v1, %v1 103; CHECK-NEXT: vldeb %v2, %v2 104; CHECK-NEXT: vfchdb %v1, %v2, %v1 105; CHECK-NEXT: vpkg %v0, %v1, %v0 106; CHECK-NEXT: vceqb %v1, %v24, %v26 107; CHECK-NEXT: vpkf %v0, %v0, %v0 108; CHECK-NEXT: vuphb %v1, %v1 109; CHECK-NEXT: vn %v0, %v1, %v0 110; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 111; CHECK-NEXT: br %r14 112 %cmp0 = icmp eq <2 x i8> %val1, %val2 113 %cmp1 = fcmp ogt <2 x float> %val3, %val4 114 %and = and <2 x i1> %cmp0, %cmp1 115 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 116 ret <2 x i16> %sel 117} 118 119define <2 x i64> @fun6(<2 x i8> %val1, <2 x i8> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i64> %val5, <2 x i64> %val6) { 120; CHECK-LABEL: fun6: 121; CHECK: # BB#0: 122; CHECK-NEXT: vceqb %v1, %v24, %v26 123; CHECK-NEXT: vuphb %v1, %v1 124; CHECK-NEXT: vuphh %v1, %v1 125; CHECK-NEXT: vfchdb %v0, %v28, %v30 126; CHECK-NEXT: vuphf %v1, %v1 127; CHECK-NEXT: vn %v0, %v1, %v0 128; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 129; CHECK-NEXT: br %r14 130 %cmp0 = icmp eq <2 x i8> %val1, %val2 131 %cmp1 = fcmp ogt <2 x double> %val3, %val4 132 %and = and <2 x i1> %cmp0, %cmp1 133 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 134 ret <2 x i64> %sel 135} 136 137define <2 x i8> @fun7(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) { 138; CHECK-LABEL: fun7: 139; CHECK: # BB#0: 140; CHECK-NEXT: vceqh %v0, %v28, %v30 141; CHECK-NEXT: vceqh %v1, %v24, %v26 142; CHECK-NEXT: vn %v0, %v1, %v0 143; CHECK-NEXT: vpkh %v0, %v0, %v0 144; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 145; CHECK-NEXT: br %r14 146 %cmp0 = icmp eq <2 x i16> %val1, %val2 147 %cmp1 = icmp eq <2 x i16> %val3, %val4 148 %and = and <2 x i1> %cmp0, %cmp1 149 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 150 ret <2 x i8> %sel 151} 152 153define <2 x i16> @fun8(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i16> %val5, <2 x i16> %val6) { 154; CHECK-LABEL: fun8: 155; CHECK: # BB#0: 156; CHECK-NEXT: vceqh %v0, %v28, %v30 157; CHECK-NEXT: vceqh %v1, %v24, %v26 158; CHECK-NEXT: vn %v0, %v1, %v0 159; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 160; CHECK-NEXT: br %r14 161 %cmp0 = icmp eq <2 x i16> %val1, %val2 162 %cmp1 = icmp eq <2 x i16> %val3, %val4 163 %and = and <2 x i1> %cmp0, %cmp1 164 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 165 ret <2 x i16> %sel 166} 167 168define <2 x i32> @fun9(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i32> %val5, <2 x i32> %val6) { 169; CHECK-LABEL: fun9: 170; CHECK: # BB#0: 171; CHECK-NEXT: vceqh %v0, %v28, %v30 172; CHECK-NEXT: vceqh %v1, %v24, %v26 173; CHECK-NEXT: vn %v0, %v1, %v0 174; CHECK-NEXT: vuphh %v0, %v0 175; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 176; CHECK-NEXT: br %r14 177 %cmp0 = icmp eq <2 x i16> %val1, %val2 178 %cmp1 = icmp eq <2 x i16> %val3, %val4 179 %and = and <2 x i1> %cmp0, %cmp1 180 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 181 ret <2 x i32> %sel 182} 183 184define <2 x i8> @fun10(<2 x i16> %val1, <2 x i16> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i8> %val5, <2 x i8> %val6) { 185; CHECK-LABEL: fun10: 186; CHECK: # BB#0: 187; CHECK-NEXT: vceqf %v1, %v28, %v30 188; CHECK-NEXT: vceqh %v0, %v24, %v26 189; CHECK-NEXT: vpkf %v1, %v1, %v1 190; CHECK-NEXT: vn %v0, %v0, %v1 191; CHECK-NEXT: vpkh %v0, %v0, %v0 192; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 193; CHECK-NEXT: br %r14 194 %cmp0 = icmp eq <2 x i16> %val1, %val2 195 %cmp1 = icmp eq <2 x i32> %val3, %val4 196 %and = and <2 x i1> %cmp0, %cmp1 197 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 198 ret <2 x i8> %sel 199} 200 201define <2 x i8> @fun11(<2 x i16> %val1, <2 x i16> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i8> %val5, <2 x i8> %val6) { 202; CHECK-LABEL: fun11: 203; CHECK: # BB#0: 204; CHECK-NEXT: larl %r1, .LCPI11_0 205; CHECK-NEXT: vl %v1, 0(%r1) 206; CHECK-NEXT: vceqg %v0, %v28, %v30 207; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 208; CHECK-NEXT: vceqh %v1, %v24, %v26 209; CHECK-NEXT: vn %v0, %v1, %v0 210; CHECK-NEXT: vpkh %v0, %v0, %v0 211; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 212; CHECK-NEXT: br %r14 213 %cmp0 = icmp eq <2 x i16> %val1, %val2 214 %cmp1 = icmp eq <2 x i64> %val3, %val4 215 %and = and <2 x i1> %cmp0, %cmp1 216 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 217 ret <2 x i8> %sel 218} 219 220define <2 x double> @fun12(<2 x i16> %val1, <2 x i16> %val2, <2 x float> %val3, <2 x float> %val4, <2 x double> %val5, <2 x double> %val6) { 221; CHECK-LABEL: fun12: 222; CHECK: # BB#0: 223; CHECK-NEXT: vmrlf %v0, %v30, %v30 224; CHECK-NEXT: vmrlf %v1, %v28, %v28 225; CHECK-NEXT: vldeb %v0, %v0 226; CHECK-NEXT: vldeb %v1, %v1 227; CHECK-NEXT: vfchdb %v0, %v1, %v0 228; CHECK-NEXT: vmrhf %v1, %v30, %v30 229; CHECK-NEXT: vmrhf %v2, %v28, %v28 230; CHECK-NEXT: vldeb %v1, %v1 231; CHECK-NEXT: vldeb %v2, %v2 232; CHECK-NEXT: vfchdb %v1, %v2, %v1 233; CHECK-NEXT: vpkg %v0, %v1, %v0 234; CHECK-NEXT: vceqh %v1, %v24, %v26 235; CHECK-NEXT: vuphh %v1, %v1 236; CHECK-NEXT: vn %v0, %v1, %v0 237; CHECK-NEXT: vuphf %v0, %v0 238; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 239; CHECK-NEXT: br %r14 240 %cmp0 = icmp eq <2 x i16> %val1, %val2 241 %cmp1 = fcmp ogt <2 x float> %val3, %val4 242 %and = and <2 x i1> %cmp0, %cmp1 243 %sel = select <2 x i1> %and, <2 x double> %val5, <2 x double> %val6 244 ret <2 x double> %sel 245} 246 247define <2 x i16> @fun13(<2 x i16> %val1, <2 x i16> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) { 248; CHECK-LABEL: fun13: 249; CHECK: # BB#0: 250; CHECK-NEXT: larl %r1, .LCPI13_0 251; CHECK-NEXT: vl %v1, 0(%r1) 252; CHECK-NEXT: vfchdb %v0, %v28, %v30 253; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 254; CHECK-NEXT: vceqh %v1, %v24, %v26 255; CHECK-NEXT: vn %v0, %v1, %v0 256; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 257; CHECK-NEXT: br %r14 258 %cmp0 = icmp eq <2 x i16> %val1, %val2 259 %cmp1 = fcmp ogt <2 x double> %val3, %val4 260 %and = and <2 x i1> %cmp0, %cmp1 261 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 262 ret <2 x i16> %sel 263} 264 265define <2 x i16> @fun14(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i16> %val5, <2 x i16> %val6) { 266; CHECK-LABEL: fun14: 267; CHECK: # BB#0: 268; CHECK-NEXT: vceqf %v0, %v28, %v30 269; CHECK-NEXT: vceqf %v1, %v24, %v26 270; CHECK-NEXT: vn %v0, %v1, %v0 271; CHECK-NEXT: vpkf %v0, %v0, %v0 272; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 273; CHECK-NEXT: br %r14 274 %cmp0 = icmp eq <2 x i32> %val1, %val2 275 %cmp1 = icmp eq <2 x i32> %val3, %val4 276 %and = and <2 x i1> %cmp0, %cmp1 277 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 278 ret <2 x i16> %sel 279} 280 281define <2 x i32> @fun15(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) { 282; CHECK-LABEL: fun15: 283; CHECK: # BB#0: 284; CHECK-NEXT: vceqf %v0, %v28, %v30 285; CHECK-NEXT: vceqf %v1, %v24, %v26 286; CHECK-NEXT: vn %v0, %v1, %v0 287; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 288; CHECK-NEXT: br %r14 289 %cmp0 = icmp eq <2 x i32> %val1, %val2 290 %cmp1 = icmp eq <2 x i32> %val3, %val4 291 %and = and <2 x i1> %cmp0, %cmp1 292 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 293 ret <2 x i32> %sel 294} 295 296define <2 x i64> @fun16(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i64> %val5, <2 x i64> %val6) { 297; CHECK-LABEL: fun16: 298; CHECK: # BB#0: 299; CHECK-NEXT: vceqf %v0, %v28, %v30 300; CHECK-NEXT: vceqf %v1, %v24, %v26 301; CHECK-NEXT: vn %v0, %v1, %v0 302; CHECK-NEXT: vuphf %v0, %v0 303; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 304; CHECK-NEXT: br %r14 305 %cmp0 = icmp eq <2 x i32> %val1, %val2 306 %cmp1 = icmp eq <2 x i32> %val3, %val4 307 %and = and <2 x i1> %cmp0, %cmp1 308 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 309 ret <2 x i64> %sel 310} 311 312define <2 x i64> @fun17(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) { 313; CHECK-LABEL: fun17: 314; CHECK: # BB#0: 315; CHECK-NEXT: vceqf %v1, %v24, %v26 316; CHECK-NEXT: vceqg %v0, %v28, %v30 317; CHECK-NEXT: vuphf %v1, %v1 318; CHECK-NEXT: vn %v0, %v1, %v0 319; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 320; CHECK-NEXT: br %r14 321 %cmp0 = icmp eq <2 x i32> %val1, %val2 322 %cmp1 = icmp eq <2 x i64> %val3, %val4 323 %and = and <2 x i1> %cmp0, %cmp1 324 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 325 ret <2 x i64> %sel 326} 327 328define <2 x i16> @fun18(<2 x i32> %val1, <2 x i32> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) { 329; CHECK-LABEL: fun18: 330; CHECK: # BB#0: 331; CHECK-NEXT: vmrlf %v0, %v30, %v30 332; CHECK-NEXT: vmrlf %v1, %v28, %v28 333; CHECK-NEXT: vldeb %v0, %v0 334; CHECK-NEXT: vldeb %v1, %v1 335; CHECK-NEXT: vfchdb %v0, %v1, %v0 336; CHECK-NEXT: vmrhf %v1, %v30, %v30 337; CHECK-NEXT: vmrhf %v2, %v28, %v28 338; CHECK-NEXT: vldeb %v1, %v1 339; CHECK-NEXT: vldeb %v2, %v2 340; CHECK-NEXT: vfchdb %v1, %v2, %v1 341; CHECK-NEXT: vpkg %v0, %v1, %v0 342; CHECK-NEXT: vceqf %v1, %v24, %v26 343; CHECK-NEXT: vn %v0, %v1, %v0 344; CHECK-NEXT: vpkf %v0, %v0, %v0 345; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 346; CHECK-NEXT: br %r14 347 %cmp0 = icmp eq <2 x i32> %val1, %val2 348 %cmp1 = fcmp ogt <2 x float> %val3, %val4 349 %and = and <2 x i1> %cmp0, %cmp1 350 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 351 ret <2 x i16> %sel 352} 353 354define <2 x float> @fun19(<2 x i32> %val1, <2 x i32> %val2, <2 x double> %val3, <2 x double> %val4, <2 x float> %val5, <2 x float> %val6) { 355; CHECK-LABEL: fun19: 356; CHECK: # BB#0: 357; CHECK-NEXT: vfchdb %v1, %v28, %v30 358; CHECK-NEXT: vceqf %v0, %v24, %v26 359; CHECK-NEXT: vpkg %v1, %v1, %v1 360; CHECK-NEXT: vn %v0, %v0, %v1 361; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 362; CHECK-NEXT: br %r14 363 %cmp0 = icmp eq <2 x i32> %val1, %val2 364 %cmp1 = fcmp ogt <2 x double> %val3, %val4 365 %and = and <2 x i1> %cmp0, %cmp1 366 %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6 367 ret <2 x float> %sel 368} 369 370define <2 x i16> @fun20(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i16> %val5, <2 x i16> %val6) { 371; CHECK-LABEL: fun20: 372; CHECK: # BB#0: 373; CHECK-NEXT: vceqg %v0, %v28, %v30 374; CHECK-NEXT: vceqg %v1, %v24, %v26 375; CHECK-NEXT: larl %r1, .LCPI20_0 376; CHECK-NEXT: vn %v0, %v1, %v0 377; CHECK-NEXT: vl %v1, 0(%r1) 378; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 379; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 380; CHECK-NEXT: br %r14 381 %cmp0 = icmp eq <2 x i64> %val1, %val2 382 %cmp1 = icmp eq <2 x i64> %val3, %val4 383 %and = and <2 x i1> %cmp0, %cmp1 384 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 385 ret <2 x i16> %sel 386} 387 388define <2 x i64> @fun21(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) { 389; CHECK-LABEL: fun21: 390; CHECK: # BB#0: 391; CHECK-NEXT: vceqg %v0, %v28, %v30 392; CHECK-NEXT: vceqg %v1, %v24, %v26 393; CHECK-NEXT: vn %v0, %v1, %v0 394; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 395; CHECK-NEXT: br %r14 396 %cmp0 = icmp eq <2 x i64> %val1, %val2 397 %cmp1 = icmp eq <2 x i64> %val3, %val4 398 %and = and <2 x i1> %cmp0, %cmp1 399 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 400 ret <2 x i64> %sel 401} 402 403define <2 x i64> @fun22(<2 x i64> %val1, <2 x i64> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i64> %val5, <2 x i64> %val6) { 404; CHECK-LABEL: fun22: 405; CHECK: # BB#0: 406; CHECK-NEXT: vmrlf %v0, %v30, %v30 407; CHECK-NEXT: vmrlf %v1, %v28, %v28 408; CHECK-NEXT: vldeb %v0, %v0 409; CHECK-NEXT: vldeb %v1, %v1 410; CHECK-NEXT: vfchdb %v0, %v1, %v0 411; CHECK-NEXT: vmrhf %v1, %v30, %v30 412; CHECK-NEXT: vmrhf %v2, %v28, %v28 413; CHECK-NEXT: vldeb %v1, %v1 414; CHECK-NEXT: vldeb %v2, %v2 415; CHECK-NEXT: vfchdb %v1, %v2, %v1 416; CHECK-NEXT: vpkg %v0, %v1, %v0 417; CHECK-NEXT: vuphf %v0, %v0 418; CHECK-NEXT: vceqg %v1, %v24, %v26 419; CHECK-NEXT: vn %v0, %v1, %v0 420; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 421; CHECK-NEXT: br %r14 422 %cmp0 = icmp eq <2 x i64> %val1, %val2 423 %cmp1 = fcmp ogt <2 x float> %val3, %val4 424 %and = and <2 x i1> %cmp0, %cmp1 425 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 426 ret <2 x i64> %sel 427} 428 429define <2 x i16> @fun23(<2 x i64> %val1, <2 x i64> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) { 430; CHECK-LABEL: fun23: 431; CHECK: # BB#0: 432; CHECK-NEXT: vfchdb %v0, %v28, %v30 433; CHECK-NEXT: vceqg %v1, %v24, %v26 434; CHECK-NEXT: larl %r1, .LCPI23_0 435; CHECK-NEXT: vn %v0, %v1, %v0 436; CHECK-NEXT: vl %v1, 0(%r1) 437; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 438; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 439; CHECK-NEXT: br %r14 440 %cmp0 = icmp eq <2 x i64> %val1, %val2 441 %cmp1 = fcmp ogt <2 x double> %val3, %val4 442 %and = and <2 x i1> %cmp0, %cmp1 443 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 444 ret <2 x i16> %sel 445} 446 447define <2 x float> @fun24(<2 x float> %val1, <2 x float> %val2, <2 x float> %val3, <2 x float> %val4, <2 x float> %val5, <2 x float> %val6) { 448; CHECK-LABEL: fun24: 449; CHECK: # BB#0: 450; CHECK-NEXT: vmrlf %v0, %v30, %v30 451; CHECK-NEXT: vmrlf %v1, %v28, %v28 452; CHECK-NEXT: vldeb %v0, %v0 453; CHECK-NEXT: vldeb %v1, %v1 454; CHECK-NEXT: vfchdb %v0, %v1, %v0 455; CHECK-NEXT: vmrhf %v1, %v30, %v30 456; CHECK-NEXT: vmrhf %v2, %v28, %v28 457; CHECK-NEXT: vldeb %v1, %v1 458; CHECK-NEXT: vmrhf %v3, %v24, %v24 459; CHECK-NEXT: vldeb %v2, %v2 460; CHECK-NEXT: vfchdb %v1, %v2, %v1 461; CHECK-NEXT: vpkg %v0, %v1, %v0 462; CHECK-NEXT: vmrlf %v1, %v26, %v26 463; CHECK-NEXT: vmrlf %v2, %v24, %v24 464; CHECK-NEXT: vldeb %v1, %v1 465; CHECK-NEXT: vldeb %v2, %v2 466; CHECK-NEXT: vfchdb %v1, %v2, %v1 467; CHECK-NEXT: vmrhf %v2, %v26, %v26 468; CHECK-NEXT: vldeb %v2, %v2 469; CHECK-NEXT: vldeb %v3, %v3 470; CHECK-NEXT: vfchdb %v2, %v3, %v2 471; CHECK-NEXT: vpkg %v1, %v2, %v1 472; CHECK-NEXT: vn %v0, %v1, %v0 473; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 474; CHECK-NEXT: br %r14 475 %cmp0 = fcmp ogt <2 x float> %val1, %val2 476 %cmp1 = fcmp ogt <2 x float> %val3, %val4 477 %and = and <2 x i1> %cmp0, %cmp1 478 %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6 479 ret <2 x float> %sel 480} 481 482define <2 x i32> @fun25(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i32> %val5, <2 x i32> %val6) { 483; CHECK-LABEL: fun25: 484; CHECK: # BB#0: 485; CHECK-NEXT: vmrlf %v0, %v26, %v26 486; CHECK-NEXT: vmrlf %v1, %v24, %v24 487; CHECK-NEXT: vldeb %v0, %v0 488; CHECK-NEXT: vldeb %v1, %v1 489; CHECK-NEXT: vfchdb %v0, %v1, %v0 490; CHECK-NEXT: vmrhf %v1, %v26, %v26 491; CHECK-NEXT: vmrhf %v2, %v24, %v24 492; CHECK-NEXT: vldeb %v1, %v1 493; CHECK-NEXT: vldeb %v2, %v2 494; CHECK-NEXT: vfchdb %v1, %v2, %v1 495; CHECK-NEXT: vpkg %v0, %v1, %v0 496; CHECK-NEXT: vfchdb %v1, %v28, %v30 497; CHECK-NEXT: vpkg %v1, %v1, %v1 498; CHECK-NEXT: vn %v0, %v0, %v1 499; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 500; CHECK-NEXT: br %r14 501 %cmp0 = fcmp ogt <2 x float> %val1, %val2 502 %cmp1 = fcmp ogt <2 x double> %val3, %val4 503 %and = and <2 x i1> %cmp0, %cmp1 504 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 505 ret <2 x i32> %sel 506} 507 508define <4 x i16> @fun26(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i16> %val5, <4 x i16> %val6) { 509; CHECK-LABEL: fun26: 510; CHECK: # BB#0: 511; CHECK-NEXT: vceqf %v0, %v28, %v30 512; CHECK-NEXT: vceqf %v1, %v24, %v26 513; CHECK-NEXT: vn %v0, %v1, %v0 514; CHECK-NEXT: vpkf %v0, %v0, %v0 515; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 516; CHECK-NEXT: br %r14 517 %cmp0 = icmp eq <4 x i32> %val1, %val2 518 %cmp1 = icmp eq <4 x i32> %val3, %val4 519 %and = and <4 x i1> %cmp0, %cmp1 520 %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6 521 ret <4 x i16> %sel 522} 523 524define <4 x i32> @fun27(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i32> %val5, <4 x i32> %val6) { 525; CHECK-LABEL: fun27: 526; CHECK: # BB#0: 527; CHECK-NEXT: vceqf %v0, %v28, %v30 528; CHECK-NEXT: vceqf %v1, %v24, %v26 529; CHECK-NEXT: vn %v0, %v1, %v0 530; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 531; CHECK-NEXT: br %r14 532 %cmp0 = icmp eq <4 x i32> %val1, %val2 533 %cmp1 = icmp eq <4 x i32> %val3, %val4 534 %and = and <4 x i1> %cmp0, %cmp1 535 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 536 ret <4 x i32> %sel 537} 538 539define <4 x i64> @fun28(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i64> %val5, <4 x i64> %val6) { 540; CHECK-LABEL: fun28: 541; CHECK: # BB#0: 542; CHECK-NEXT: vceqf %v0, %v28, %v30 543; CHECK-NEXT: vceqf %v1, %v24, %v26 544; CHECK-NEXT: vn %v0, %v1, %v0 545; CHECK-NEXT: vuphf %v1, %v0 546; CHECK-NEXT: vmrlg %v0, %v0, %v0 547; CHECK-NEXT: vuphf %v0, %v0 548; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 549; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 550; CHECK-NEXT: br %r14 551 %cmp0 = icmp eq <4 x i32> %val1, %val2 552 %cmp1 = icmp eq <4 x i32> %val3, %val4 553 %and = and <4 x i1> %cmp0, %cmp1 554 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 555 ret <4 x i64> %sel 556} 557 558define <4 x i32> @fun29(<4 x i32> %val1, <4 x i32> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) { 559; CHECK-LABEL: fun29: 560; CHECK: # BB#0: 561; CHECK-NEXT: vceqg %v0, %v30, %v27 562; CHECK-NEXT: vceqg %v1, %v28, %v25 563; CHECK-NEXT: vpkg %v0, %v1, %v0 564; CHECK-NEXT: vceqf %v1, %v24, %v26 565; CHECK-NEXT: vn %v0, %v1, %v0 566; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 567; CHECK-NEXT: br %r14 568 %cmp0 = icmp eq <4 x i32> %val1, %val2 569 %cmp1 = icmp eq <4 x i64> %val3, %val4 570 %and = and <4 x i1> %cmp0, %cmp1 571 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 572 ret <4 x i32> %sel 573} 574 575define <4 x i16> @fun30(<4 x i32> %val1, <4 x i32> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) { 576; CHECK-LABEL: fun30: 577; CHECK: # BB#0: 578; CHECK-NEXT: vmrlf %v0, %v30, %v30 579; CHECK-NEXT: vmrlf %v1, %v28, %v28 580; CHECK-NEXT: vldeb %v0, %v0 581; CHECK-NEXT: vldeb %v1, %v1 582; CHECK-NEXT: vfchdb %v0, %v1, %v0 583; CHECK-NEXT: vmrhf %v1, %v30, %v30 584; CHECK-NEXT: vmrhf %v2, %v28, %v28 585; CHECK-NEXT: vldeb %v1, %v1 586; CHECK-NEXT: vldeb %v2, %v2 587; CHECK-NEXT: vfchdb %v1, %v2, %v1 588; CHECK-NEXT: vpkg %v0, %v1, %v0 589; CHECK-NEXT: vceqf %v1, %v24, %v26 590; CHECK-NEXT: vn %v0, %v1, %v0 591; CHECK-NEXT: vpkf %v0, %v0, %v0 592; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 593; CHECK-NEXT: br %r14 594 %cmp0 = icmp eq <4 x i32> %val1, %val2 595 %cmp1 = fcmp ogt <4 x float> %val3, %val4 596 %and = and <4 x i1> %cmp0, %cmp1 597 %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6 598 ret <4 x i16> %sel 599} 600 601define <4 x i8> @fun31(<4 x i32> %val1, <4 x i32> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) { 602; CHECK-LABEL: fun31: 603; CHECK: # BB#0: 604; CHECK-NEXT: vfchdb %v0, %v30, %v27 605; CHECK-NEXT: vfchdb %v1, %v28, %v25 606; CHECK-NEXT: vpkg %v0, %v1, %v0 607; CHECK-NEXT: vceqf %v1, %v24, %v26 608; CHECK-NEXT: larl %r1, .LCPI31_0 609; CHECK-NEXT: vn %v0, %v1, %v0 610; CHECK-NEXT: vl %v1, 0(%r1) 611; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 612; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 613; CHECK-NEXT: br %r14 614 %cmp0 = icmp eq <4 x i32> %val1, %val2 615 %cmp1 = fcmp ogt <4 x double> %val3, %val4 616 %and = and <4 x i1> %cmp0, %cmp1 617 %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6 618 ret <4 x i8> %sel 619} 620 621define <4 x i32> @fun32(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) { 622; CHECK-LABEL: fun32: 623; CHECK: # BB#0: 624; CHECK-NEXT: vceqg %v0, %v27, %v31 625; CHECK-NEXT: vceqg %v1, %v26, %v30 626; CHECK-NEXT: vn %v0, %v1, %v0 627; CHECK-NEXT: vceqg %v1, %v25, %v29 628; CHECK-NEXT: vceqg %v2, %v24, %v28 629; CHECK-NEXT: vn %v1, %v2, %v1 630; CHECK-NEXT: vpkg %v0, %v1, %v0 631; CHECK-NEXT: vl %v1, 176(%r15) 632; CHECK-NEXT: vl %v2, 160(%r15) 633; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 634; CHECK-NEXT: br %r14 635 %cmp0 = icmp eq <4 x i64> %val1, %val2 636 %cmp1 = icmp eq <4 x i64> %val3, %val4 637 %and = and <4 x i1> %cmp0, %cmp1 638 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 639 ret <4 x i32> %sel 640} 641 642define <4 x i64> @fun33(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i64> %val5, <4 x i64> %val6) { 643; CHECK-LABEL: fun33: 644; CHECK: # BB#0: 645; CHECK-NEXT: vceqg %v0, %v25, %v29 646; CHECK-NEXT: vceqg %v1, %v24, %v28 647; CHECK-NEXT: vn %v0, %v1, %v0 648; CHECK-NEXT: vl %v1, 192(%r15) 649; CHECK-NEXT: vl %v2, 160(%r15) 650; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 651; CHECK-NEXT: vceqg %v0, %v27, %v31 652; CHECK-NEXT: vceqg %v1, %v26, %v30 653; CHECK-NEXT: vn %v0, %v1, %v0 654; CHECK-NEXT: vl %v1, 208(%r15) 655; CHECK-NEXT: vl %v2, 176(%r15) 656; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 657; CHECK-NEXT: br %r14 658 %cmp0 = icmp eq <4 x i64> %val1, %val2 659 %cmp1 = icmp eq <4 x i64> %val3, %val4 660 %and = and <4 x i1> %cmp0, %cmp1 661 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 662 ret <4 x i64> %sel 663} 664 665define <4 x i64> @fun34(<4 x i64> %val1, <4 x i64> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i64> %val5, <4 x i64> %val6) { 666; CHECK-LABEL: fun34: 667; CHECK: # BB#0: 668; CHECK-NEXT: vmrlf %v0, %v27, %v27 669; CHECK-NEXT: vmrlf %v1, %v25, %v25 670; CHECK-NEXT: vldeb %v0, %v0 671; CHECK-NEXT: vldeb %v1, %v1 672; CHECK-NEXT: vfchdb %v0, %v1, %v0 673; CHECK-NEXT: vmrhf %v1, %v27, %v27 674; CHECK-NEXT: vmrhf %v2, %v25, %v25 675; CHECK-NEXT: vldeb %v1, %v1 676; CHECK-NEXT: vldeb %v2, %v2 677; CHECK-NEXT: vfchdb %v1, %v2, %v1 678; CHECK-NEXT: vpkg %v0, %v1, %v0 679; CHECK-NEXT: vuphf %v1, %v0 680; CHECK-NEXT: vceqg %v2, %v24, %v28 681; CHECK-NEXT: vn %v1, %v2, %v1 682; CHECK-NEXT: vl %v2, 160(%r15) 683; CHECK-NEXT: vmrlg %v0, %v0, %v0 684; CHECK-NEXT: vsel %v24, %v29, %v2, %v1 685; CHECK-NEXT: vuphf %v0, %v0 686; CHECK-NEXT: vceqg %v1, %v26, %v30 687; CHECK-NEXT: vn %v0, %v1, %v0 688; CHECK-NEXT: vl %v1, 176(%r15) 689; CHECK-NEXT: vsel %v26, %v31, %v1, %v0 690; CHECK-NEXT: br %r14 691 %cmp0 = icmp eq <4 x i64> %val1, %val2 692 %cmp1 = fcmp ogt <4 x float> %val3, %val4 693 %and = and <4 x i1> %cmp0, %cmp1 694 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 695 ret <4 x i64> %sel 696} 697 698define <4 x float> @fun35(<4 x i64> %val1, <4 x i64> %val2, <4 x double> %val3, <4 x double> %val4, <4 x float> %val5, <4 x float> %val6) { 699; CHECK-LABEL: fun35: 700; CHECK: # BB#0: 701; CHECK-NEXT: vfchdb %v0, %v27, %v31 702; CHECK-NEXT: vceqg %v1, %v26, %v30 703; CHECK-NEXT: vn %v0, %v1, %v0 704; CHECK-NEXT: vfchdb %v1, %v25, %v29 705; CHECK-NEXT: vceqg %v2, %v24, %v28 706; CHECK-NEXT: vn %v1, %v2, %v1 707; CHECK-NEXT: vpkg %v0, %v1, %v0 708; CHECK-NEXT: vl %v1, 176(%r15) 709; CHECK-NEXT: vl %v2, 160(%r15) 710; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 711; CHECK-NEXT: br %r14 712 %cmp0 = icmp eq <4 x i64> %val1, %val2 713 %cmp1 = fcmp ogt <4 x double> %val3, %val4 714 %and = and <4 x i1> %cmp0, %cmp1 715 %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6 716 ret <4 x float> %sel 717} 718 719define <4 x i16> @fun36(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) { 720; CHECK-LABEL: fun36: 721; CHECK: # BB#0: 722; CHECK-NEXT: vmrlf %v0, %v30, %v30 723; CHECK-NEXT: vmrlf %v1, %v28, %v28 724; CHECK-NEXT: vldeb %v0, %v0 725; CHECK-NEXT: vldeb %v1, %v1 726; CHECK-NEXT: vfchdb %v0, %v1, %v0 727; CHECK-NEXT: vmrhf %v1, %v30, %v30 728; CHECK-NEXT: vmrhf %v2, %v28, %v28 729; CHECK-NEXT: vldeb %v1, %v1 730; CHECK-NEXT: vmrhf %v3, %v24, %v24 731; CHECK-NEXT: vldeb %v2, %v2 732; CHECK-NEXT: vfchdb %v1, %v2, %v1 733; CHECK-NEXT: vpkg %v0, %v1, %v0 734; CHECK-NEXT: vmrlf %v1, %v26, %v26 735; CHECK-NEXT: vmrlf %v2, %v24, %v24 736; CHECK-NEXT: vldeb %v1, %v1 737; CHECK-NEXT: vldeb %v2, %v2 738; CHECK-NEXT: vfchdb %v1, %v2, %v1 739; CHECK-NEXT: vmrhf %v2, %v26, %v26 740; CHECK-NEXT: vldeb %v2, %v2 741; CHECK-NEXT: vldeb %v3, %v3 742; CHECK-NEXT: vfchdb %v2, %v3, %v2 743; CHECK-NEXT: vpkg %v1, %v2, %v1 744; CHECK-NEXT: vn %v0, %v1, %v0 745; CHECK-NEXT: vpkf %v0, %v0, %v0 746; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 747; CHECK-NEXT: br %r14 748 %cmp0 = fcmp ogt <4 x float> %val1, %val2 749 %cmp1 = fcmp ogt <4 x float> %val3, %val4 750 %and = and <4 x i1> %cmp0, %cmp1 751 %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6 752 ret <4 x i16> %sel 753} 754 755define <4 x float> @fun37(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x float> %val5, <4 x float> %val6) { 756; CHECK-LABEL: fun37: 757; CHECK: # BB#0: 758; CHECK-NEXT: vmrlf %v0, %v30, %v30 759; CHECK-NEXT: vmrlf %v1, %v28, %v28 760; CHECK-NEXT: vldeb %v0, %v0 761; CHECK-NEXT: vldeb %v1, %v1 762; CHECK-NEXT: vfchdb %v0, %v1, %v0 763; CHECK-NEXT: vmrhf %v1, %v30, %v30 764; CHECK-NEXT: vmrhf %v2, %v28, %v28 765; CHECK-NEXT: vldeb %v1, %v1 766; CHECK-NEXT: vmrhf %v3, %v24, %v24 767; CHECK-NEXT: vldeb %v2, %v2 768; CHECK-NEXT: vfchdb %v1, %v2, %v1 769; CHECK-NEXT: vpkg %v0, %v1, %v0 770; CHECK-NEXT: vmrlf %v1, %v26, %v26 771; CHECK-NEXT: vmrlf %v2, %v24, %v24 772; CHECK-NEXT: vldeb %v1, %v1 773; CHECK-NEXT: vldeb %v2, %v2 774; CHECK-NEXT: vfchdb %v1, %v2, %v1 775; CHECK-NEXT: vmrhf %v2, %v26, %v26 776; CHECK-NEXT: vldeb %v2, %v2 777; CHECK-NEXT: vldeb %v3, %v3 778; CHECK-NEXT: vfchdb %v2, %v3, %v2 779; CHECK-NEXT: vpkg %v1, %v2, %v1 780; CHECK-NEXT: vn %v0, %v1, %v0 781; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 782; CHECK-NEXT: br %r14 783 %cmp0 = fcmp ogt <4 x float> %val1, %val2 784 %cmp1 = fcmp ogt <4 x float> %val3, %val4 785 %and = and <4 x i1> %cmp0, %cmp1 786 %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6 787 ret <4 x float> %sel 788} 789 790define <4 x double> @fun38(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x double> %val5, <4 x double> %val6) { 791; CHECK-LABEL: fun38: 792; CHECK: # BB#0: 793; CHECK-NEXT: vmrlf %v0, %v30, %v30 794; CHECK-NEXT: vmrlf %v1, %v28, %v28 795; CHECK-NEXT: vldeb %v0, %v0 796; CHECK-NEXT: vldeb %v1, %v1 797; CHECK-NEXT: vfchdb %v0, %v1, %v0 798; CHECK-NEXT: vmrhf %v1, %v30, %v30 799; CHECK-NEXT: vmrhf %v2, %v28, %v28 800; CHECK-NEXT: vldeb %v1, %v1 801; CHECK-NEXT: vmrhf %v3, %v24, %v24 802; CHECK-NEXT: vldeb %v2, %v2 803; CHECK-NEXT: vfchdb %v1, %v2, %v1 804; CHECK-NEXT: vpkg %v0, %v1, %v0 805; CHECK-NEXT: vmrlf %v1, %v26, %v26 806; CHECK-NEXT: vmrlf %v2, %v24, %v24 807; CHECK-NEXT: vldeb %v1, %v1 808; CHECK-NEXT: vldeb %v2, %v2 809; CHECK-NEXT: vfchdb %v1, %v2, %v1 810; CHECK-NEXT: vmrhf %v2, %v26, %v26 811; CHECK-NEXT: vldeb %v2, %v2 812; CHECK-NEXT: vldeb %v3, %v3 813; CHECK-NEXT: vfchdb %v2, %v3, %v2 814; CHECK-NEXT: vpkg %v1, %v2, %v1 815; CHECK-NEXT: vn %v0, %v1, %v0 816; CHECK-NEXT: vuphf %v1, %v0 817; CHECK-NEXT: vmrlg %v0, %v0, %v0 818; CHECK-NEXT: vuphf %v0, %v0 819; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 820; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 821; CHECK-NEXT: br %r14 822 %cmp0 = fcmp ogt <4 x float> %val1, %val2 823 %cmp1 = fcmp ogt <4 x float> %val3, %val4 824 %and = and <4 x i1> %cmp0, %cmp1 825 %sel = select <4 x i1> %and, <4 x double> %val5, <4 x double> %val6 826 ret <4 x double> %sel 827} 828 829define <4 x i8> @fun39(<4 x float> %val1, <4 x float> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) { 830; CHECK-LABEL: fun39: 831; CHECK: # BB#0: 832; CHECK-NEXT: vfchdb %v0, %v30, %v27 833; CHECK-NEXT: vfchdb %v1, %v28, %v25 834; CHECK-NEXT: vpkg %v0, %v1, %v0 835; CHECK-NEXT: vmrlf %v1, %v26, %v26 836; CHECK-NEXT: vmrlf %v2, %v24, %v24 837; CHECK-NEXT: vldeb %v1, %v1 838; CHECK-NEXT: vldeb %v2, %v2 839; CHECK-NEXT: vfchdb %v1, %v2, %v1 840; CHECK-NEXT: vmrhf %v2, %v26, %v26 841; CHECK-NEXT: vmrhf %v3, %v24, %v24 842; CHECK-NEXT: larl %r1, .LCPI39_0 843; CHECK-NEXT: vldeb %v2, %v2 844; CHECK-NEXT: vldeb %v3, %v3 845; CHECK-NEXT: vfchdb %v2, %v3, %v2 846; CHECK-NEXT: vpkg %v1, %v2, %v1 847; CHECK-NEXT: vn %v0, %v1, %v0 848; CHECK-NEXT: vl %v1, 0(%r1) 849; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 850; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 851; CHECK-NEXT: br %r14 852 %cmp0 = fcmp ogt <4 x float> %val1, %val2 853 %cmp1 = fcmp ogt <4 x double> %val3, %val4 854 %and = and <4 x i1> %cmp0, %cmp1 855 %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6 856 ret <4 x i8> %sel 857} 858 859define <8 x i8> @fun40(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i8> %val5, <8 x i8> %val6) { 860; CHECK-LABEL: fun40: 861; CHECK: # BB#0: 862; CHECK-NEXT: vceqh %v0, %v28, %v30 863; CHECK-NEXT: vceqh %v1, %v24, %v26 864; CHECK-NEXT: vn %v0, %v1, %v0 865; CHECK-NEXT: vpkh %v0, %v0, %v0 866; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 867; CHECK-NEXT: br %r14 868 %cmp0 = icmp eq <8 x i16> %val1, %val2 869 %cmp1 = icmp eq <8 x i16> %val3, %val4 870 %and = and <8 x i1> %cmp0, %cmp1 871 %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6 872 ret <8 x i8> %sel 873} 874 875define <8 x i16> @fun41(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i16> %val5, <8 x i16> %val6) { 876; CHECK-LABEL: fun41: 877; CHECK: # BB#0: 878; CHECK-NEXT: vceqh %v0, %v28, %v30 879; CHECK-NEXT: vceqh %v1, %v24, %v26 880; CHECK-NEXT: vn %v0, %v1, %v0 881; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 882; CHECK-NEXT: br %r14 883 %cmp0 = icmp eq <8 x i16> %val1, %val2 884 %cmp1 = icmp eq <8 x i16> %val3, %val4 885 %and = and <8 x i1> %cmp0, %cmp1 886 %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6 887 ret <8 x i16> %sel 888} 889 890define <8 x i32> @fun42(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i32> %val5, <8 x i32> %val6) { 891; CHECK-LABEL: fun42: 892; CHECK: # BB#0: 893; CHECK-NEXT: vceqh %v0, %v28, %v30 894; CHECK-NEXT: vceqh %v1, %v24, %v26 895; CHECK-NEXT: vn %v0, %v1, %v0 896; CHECK-NEXT: vuphh %v1, %v0 897; CHECK-NEXT: vmrlg %v0, %v0, %v0 898; CHECK-NEXT: vuphh %v0, %v0 899; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 900; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 901; CHECK-NEXT: br %r14 902 %cmp0 = icmp eq <8 x i16> %val1, %val2 903 %cmp1 = icmp eq <8 x i16> %val3, %val4 904 %and = and <8 x i1> %cmp0, %cmp1 905 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 906 ret <8 x i32> %sel 907} 908 909define <8 x i64> @fun43(<8 x i16> %val1, <8 x i16> %val2, <8 x i32> %val3, <8 x i32> %val4, <8 x i64> %val5, <8 x i64> %val6) { 910; CHECK-LABEL: fun43: 911; CHECK: # BB#0: 912; CHECK-NEXT: vceqh %v1, %v24, %v26 913; CHECK-NEXT: vceqf %v0, %v28, %v25 914; CHECK-NEXT: vuphh %v2, %v1 915; CHECK-NEXT: vn %v0, %v2, %v0 916; CHECK-NEXT: vl %v3, 192(%r15) 917; CHECK-NEXT: vuphf %v2, %v0 918; CHECK-NEXT: vmrlg %v0, %v0, %v0 919; CHECK-NEXT: vsel %v24, %v29, %v3, %v2 920; CHECK-NEXT: vl %v2, 208(%r15) 921; CHECK-NEXT: vuphf %v0, %v0 922; CHECK-NEXT: vmrlg %v1, %v1, %v1 923; CHECK-NEXT: vsel %v26, %v31, %v2, %v0 924; CHECK-NEXT: vceqf %v0, %v30, %v27 925; CHECK-NEXT: vuphh %v1, %v1 926; CHECK-NEXT: vn %v0, %v1, %v0 927; CHECK-NEXT: vl %v2, 224(%r15) 928; CHECK-NEXT: vl %v3, 160(%r15) 929; CHECK-NEXT: vuphf %v1, %v0 930; CHECK-NEXT: vmrlg %v0, %v0, %v0 931; CHECK-NEXT: vsel %v28, %v3, %v2, %v1 932; CHECK-NEXT: vl %v1, 240(%r15) 933; CHECK-NEXT: vl %v2, 176(%r15) 934; CHECK-NEXT: vuphf %v0, %v0 935; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 936; CHECK-NEXT: br %r14 937 %cmp0 = icmp eq <8 x i16> %val1, %val2 938 %cmp1 = icmp eq <8 x i32> %val3, %val4 939 %and = and <8 x i1> %cmp0, %cmp1 940 %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6 941 ret <8 x i64> %sel 942} 943 944define <8 x i8> @fun44(<8 x i16> %val1, <8 x i16> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i8> %val5, <8 x i8> %val6) { 945; CHECK-LABEL: fun44: 946; CHECK: # BB#0: 947; CHECK-NEXT: vl %v0, 176(%r15) 948; CHECK-NEXT: vl %v1, 160(%r15) 949; CHECK-NEXT: vceqg %v0, %v27, %v0 950; CHECK-NEXT: vceqg %v1, %v25, %v1 951; CHECK-NEXT: vpkg %v0, %v1, %v0 952; CHECK-NEXT: vceqg %v1, %v30, %v31 953; CHECK-NEXT: vceqg %v2, %v28, %v29 954; CHECK-NEXT: vpkg %v1, %v2, %v1 955; CHECK-NEXT: vpkf %v0, %v1, %v0 956; CHECK-NEXT: vceqh %v1, %v24, %v26 957; CHECK-NEXT: vn %v0, %v1, %v0 958; CHECK-NEXT: vlrepg %v1, 200(%r15) 959; CHECK-NEXT: vlrepg %v2, 192(%r15) 960; CHECK-NEXT: vpkh %v0, %v0, %v0 961; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 962; CHECK-NEXT: br %r14 963 %cmp0 = icmp eq <8 x i16> %val1, %val2 964 %cmp1 = icmp eq <8 x i64> %val3, %val4 965 %and = and <8 x i1> %cmp0, %cmp1 966 %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6 967 ret <8 x i8> %sel 968} 969 970define <8 x i16> @fun45(<8 x i16> %val1, <8 x i16> %val2, <8 x float> %val3, <8 x float> %val4, <8 x i16> %val5, <8 x i16> %val6) { 971; CHECK-LABEL: fun45: 972; CHECK: # BB#0: 973; CHECK-NEXT: vmrlf %v0, %v27, %v27 974; CHECK-NEXT: vmrlf %v1, %v30, %v30 975; CHECK-NEXT: vldeb %v0, %v0 976; CHECK-NEXT: vldeb %v1, %v1 977; CHECK-NEXT: vfchdb %v0, %v1, %v0 978; CHECK-NEXT: vmrhf %v1, %v27, %v27 979; CHECK-NEXT: vmrhf %v2, %v30, %v30 980; CHECK-NEXT: vldeb %v1, %v1 981; CHECK-NEXT: vmrhf %v3, %v28, %v28 982; CHECK-NEXT: vldeb %v2, %v2 983; CHECK-NEXT: vfchdb %v1, %v2, %v1 984; CHECK-NEXT: vpkg %v0, %v1, %v0 985; CHECK-NEXT: vmrlf %v1, %v25, %v25 986; CHECK-NEXT: vmrlf %v2, %v28, %v28 987; CHECK-NEXT: vldeb %v1, %v1 988; CHECK-NEXT: vldeb %v2, %v2 989; CHECK-NEXT: vfchdb %v1, %v2, %v1 990; CHECK-NEXT: vmrhf %v2, %v25, %v25 991; CHECK-NEXT: vldeb %v2, %v2 992; CHECK-NEXT: vldeb %v3, %v3 993; CHECK-NEXT: vfchdb %v2, %v3, %v2 994; CHECK-NEXT: vpkg %v1, %v2, %v1 995; CHECK-NEXT: vpkf %v0, %v1, %v0 996; CHECK-NEXT: vceqh %v1, %v24, %v26 997; CHECK-NEXT: vn %v0, %v1, %v0 998; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 999; CHECK-NEXT: br %r14 1000 %cmp0 = icmp eq <8 x i16> %val1, %val2 1001 %cmp1 = fcmp ogt <8 x float> %val3, %val4 1002 %and = and <8 x i1> %cmp0, %cmp1 1003 %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6 1004 ret <8 x i16> %sel 1005} 1006 1007define <8 x i32> @fun46(<8 x i16> %val1, <8 x i16> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i32> %val5, <8 x i32> %val6) { 1008; CHECK-LABEL: fun46: 1009; CHECK: # BB#0: 1010; CHECK-NEXT: vfchdb %v0, %v30, %v31 1011; CHECK-NEXT: vfchdb %v1, %v28, %v29 1012; CHECK-NEXT: vpkg %v0, %v1, %v0 1013; CHECK-NEXT: vceqh %v1, %v24, %v26 1014; CHECK-NEXT: vuphh %v2, %v1 1015; CHECK-NEXT: vn %v0, %v2, %v0 1016; CHECK-NEXT: vl %v2, 224(%r15) 1017; CHECK-NEXT: vl %v3, 192(%r15) 1018; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 1019; CHECK-NEXT: vl %v0, 176(%r15) 1020; CHECK-NEXT: vl %v2, 160(%r15) 1021; CHECK-NEXT: vfchdb %v0, %v27, %v0 1022; CHECK-NEXT: vfchdb %v2, %v25, %v2 1023; CHECK-NEXT: vmrlg %v1, %v1, %v1 1024; CHECK-NEXT: vpkg %v0, %v2, %v0 1025; CHECK-NEXT: vuphh %v1, %v1 1026; CHECK-NEXT: vn %v0, %v1, %v0 1027; CHECK-NEXT: vl %v1, 240(%r15) 1028; CHECK-NEXT: vl %v2, 208(%r15) 1029; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1030; CHECK-NEXT: br %r14 1031 %cmp0 = icmp eq <8 x i16> %val1, %val2 1032 %cmp1 = fcmp ogt <8 x double> %val3, %val4 1033 %and = and <8 x i1> %cmp0, %cmp1 1034 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 1035 ret <8 x i32> %sel 1036} 1037 1038define <8 x i32> @fun47(<8 x i32> %val1, <8 x i32> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i32> %val5, <8 x i32> %val6) { 1039; CHECK-LABEL: fun47: 1040; CHECK: # BB#0: 1041; CHECK-NEXT: vl %v0, 176(%r15) 1042; CHECK-NEXT: vl %v1, 160(%r15) 1043; CHECK-NEXT: vceqg %v0, %v27, %v0 1044; CHECK-NEXT: vceqg %v1, %v25, %v1 1045; CHECK-NEXT: vpkg %v0, %v1, %v0 1046; CHECK-NEXT: vceqf %v1, %v24, %v28 1047; CHECK-NEXT: vn %v0, %v1, %v0 1048; CHECK-NEXT: vl %v1, 256(%r15) 1049; CHECK-NEXT: vl %v2, 224(%r15) 1050; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1051; CHECK-NEXT: vl %v0, 208(%r15) 1052; CHECK-NEXT: vl %v1, 192(%r15) 1053; CHECK-NEXT: vceqg %v0, %v31, %v0 1054; CHECK-NEXT: vceqg %v1, %v29, %v1 1055; CHECK-NEXT: vpkg %v0, %v1, %v0 1056; CHECK-NEXT: vceqf %v1, %v26, %v30 1057; CHECK-NEXT: vn %v0, %v1, %v0 1058; CHECK-NEXT: vl %v1, 272(%r15) 1059; CHECK-NEXT: vl %v2, 240(%r15) 1060; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1061; CHECK-NEXT: br %r14 1062 %cmp0 = icmp eq <8 x i32> %val1, %val2 1063 %cmp1 = icmp eq <8 x i64> %val3, %val4 1064 %and = and <8 x i1> %cmp0, %cmp1 1065 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 1066 ret <8 x i32> %sel 1067} 1068 1069define <8 x double> @fun48(<8 x i32> %val1, <8 x i32> %val2, <8 x float> %val3, <8 x float> %val4, <8 x double> %val5, <8 x double> %val6) { 1070; CHECK-LABEL: fun48: 1071; CHECK: # BB#0: 1072; CHECK-NEXT: vmrlf %v0, %v29, %v29 1073; CHECK-NEXT: vmrlf %v1, %v25, %v25 1074; CHECK-NEXT: vldeb %v0, %v0 1075; CHECK-NEXT: vldeb %v1, %v1 1076; CHECK-NEXT: vfchdb %v0, %v1, %v0 1077; CHECK-NEXT: vmrhf %v1, %v29, %v29 1078; CHECK-NEXT: vmrhf %v2, %v25, %v25 1079; CHECK-NEXT: vldeb %v1, %v1 1080; CHECK-NEXT: vl %v3, 160(%r15) 1081; CHECK-NEXT: vldeb %v2, %v2 1082; CHECK-NEXT: vl %v4, 192(%r15) 1083; CHECK-NEXT: vfchdb %v1, %v2, %v1 1084; CHECK-NEXT: vl %v2, 224(%r15) 1085; CHECK-NEXT: vpkg %v0, %v1, %v0 1086; CHECK-NEXT: vceqf %v1, %v24, %v28 1087; CHECK-NEXT: vn %v0, %v1, %v0 1088; CHECK-NEXT: vuphf %v1, %v0 1089; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 1090; CHECK-NEXT: vmrlf %v1, %v31, %v31 1091; CHECK-NEXT: vmrlf %v2, %v27, %v27 1092; CHECK-NEXT: vmrhf %v3, %v27, %v27 1093; CHECK-NEXT: vmrlg %v0, %v0, %v0 1094; CHECK-NEXT: vuphf %v0, %v0 1095; CHECK-NEXT: vldeb %v1, %v1 1096; CHECK-NEXT: vldeb %v2, %v2 1097; CHECK-NEXT: vfchdb %v1, %v2, %v1 1098; CHECK-NEXT: vmrhf %v2, %v31, %v31 1099; CHECK-NEXT: vldeb %v2, %v2 1100; CHECK-NEXT: vldeb %v3, %v3 1101; CHECK-NEXT: vfchdb %v2, %v3, %v2 1102; CHECK-NEXT: vl %v3, 256(%r15) 1103; CHECK-NEXT: vpkg %v1, %v2, %v1 1104; CHECK-NEXT: vceqf %v2, %v26, %v30 1105; CHECK-NEXT: vn %v1, %v2, %v1 1106; CHECK-NEXT: vuphf %v2, %v1 1107; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 1108; CHECK-NEXT: vl %v2, 240(%r15) 1109; CHECK-NEXT: vl %v3, 176(%r15) 1110; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 1111; CHECK-NEXT: vl %v2, 208(%r15) 1112; CHECK-NEXT: vmrlg %v0, %v1, %v1 1113; CHECK-NEXT: vl %v1, 272(%r15) 1114; CHECK-NEXT: vuphf %v0, %v0 1115; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1116; CHECK-NEXT: br %r14 1117 %cmp0 = icmp eq <8 x i32> %val1, %val2 1118 %cmp1 = fcmp ogt <8 x float> %val3, %val4 1119 %and = and <8 x i1> %cmp0, %cmp1 1120 %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6 1121 ret <8 x double> %sel 1122} 1123 1124define <8 x double> @fun49(<8 x i32> %val1, <8 x i32> %val2, <8 x double> %val3, <8 x double> %val4, <8 x double> %val5, <8 x double> %val6) { 1125; CHECK-LABEL: fun49: 1126; CHECK: # BB#0: 1127; CHECK-NEXT: vl %v0, 160(%r15) 1128; CHECK-NEXT: vceqf %v1, %v24, %v28 1129; CHECK-NEXT: vfchdb %v0, %v25, %v0 1130; CHECK-NEXT: vuphf %v2, %v1 1131; CHECK-NEXT: vn %v0, %v2, %v0 1132; CHECK-NEXT: vl %v2, 288(%r15) 1133; CHECK-NEXT: vl %v3, 224(%r15) 1134; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 1135; CHECK-NEXT: vl %v0, 192(%r15) 1136; CHECK-NEXT: vceqf %v2, %v26, %v30 1137; CHECK-NEXT: vfchdb %v0, %v29, %v0 1138; CHECK-NEXT: vuphf %v3, %v2 1139; CHECK-NEXT: vn %v0, %v3, %v0 1140; CHECK-NEXT: vl %v3, 320(%r15) 1141; CHECK-NEXT: vl %v4, 256(%r15) 1142; CHECK-NEXT: vsel %v28, %v4, %v3, %v0 1143; CHECK-NEXT: vl %v0, 176(%r15) 1144; CHECK-NEXT: vmrlg %v1, %v1, %v1 1145; CHECK-NEXT: vfchdb %v0, %v27, %v0 1146; CHECK-NEXT: vuphf %v1, %v1 1147; CHECK-NEXT: vn %v0, %v1, %v0 1148; CHECK-NEXT: vl %v1, 304(%r15) 1149; CHECK-NEXT: vl %v3, 240(%r15) 1150; CHECK-NEXT: vsel %v26, %v3, %v1, %v0 1151; CHECK-NEXT: vl %v0, 208(%r15) 1152; CHECK-NEXT: vmrlg %v1, %v2, %v2 1153; CHECK-NEXT: vfchdb %v0, %v31, %v0 1154; CHECK-NEXT: vuphf %v1, %v1 1155; CHECK-NEXT: vl %v2, 272(%r15) 1156; CHECK-NEXT: vn %v0, %v1, %v0 1157; CHECK-NEXT: vl %v1, 336(%r15) 1158; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1159; CHECK-NEXT: br %r14 1160 %cmp0 = icmp eq <8 x i32> %val1, %val2 1161 %cmp1 = fcmp ogt <8 x double> %val3, %val4 1162 %and = and <8 x i1> %cmp0, %cmp1 1163 %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6 1164 ret <8 x double> %sel 1165} 1166 1167define <8 x i64> @fun50(<8 x float> %val1, <8 x float> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i64> %val5, <8 x i64> %val6) { 1168; CHECK-LABEL: fun50: 1169; CHECK: # BB#0: 1170; CHECK-NEXT: vmrlf %v0, %v28, %v28 1171; CHECK-NEXT: vmrlf %v1, %v24, %v24 1172; CHECK-NEXT: vldeb %v0, %v0 1173; CHECK-NEXT: vldeb %v1, %v1 1174; CHECK-NEXT: vfchdb %v0, %v1, %v0 1175; CHECK-NEXT: vmrhf %v1, %v28, %v28 1176; CHECK-NEXT: vmrhf %v2, %v24, %v24 1177; CHECK-NEXT: vldeb %v1, %v1 1178; CHECK-NEXT: vl %v3, 224(%r15) 1179; CHECK-NEXT: vldeb %v2, %v2 1180; CHECK-NEXT: vl %v4, 256(%r15) 1181; CHECK-NEXT: vfchdb %v1, %v2, %v1 1182; CHECK-NEXT: vl %v2, 160(%r15) 1183; CHECK-NEXT: vpkg %v0, %v1, %v0 1184; CHECK-NEXT: vuphf %v1, %v0 1185; CHECK-NEXT: vfchdb %v2, %v25, %v2 1186; CHECK-NEXT: vn %v1, %v1, %v2 1187; CHECK-NEXT: vl %v2, 288(%r15) 1188; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 1189; CHECK-NEXT: vmrlf %v1, %v30, %v30 1190; CHECK-NEXT: vmrlf %v2, %v26, %v26 1191; CHECK-NEXT: vmrhf %v3, %v26, %v26 1192; CHECK-NEXT: vmrlg %v0, %v0, %v0 1193; CHECK-NEXT: vuphf %v0, %v0 1194; CHECK-NEXT: vldeb %v1, %v1 1195; CHECK-NEXT: vldeb %v2, %v2 1196; CHECK-NEXT: vfchdb %v1, %v2, %v1 1197; CHECK-NEXT: vmrhf %v2, %v30, %v30 1198; CHECK-NEXT: vldeb %v2, %v2 1199; CHECK-NEXT: vldeb %v3, %v3 1200; CHECK-NEXT: vfchdb %v2, %v3, %v2 1201; CHECK-NEXT: vl %v3, 192(%r15) 1202; CHECK-NEXT: vpkg %v1, %v2, %v1 1203; CHECK-NEXT: vuphf %v2, %v1 1204; CHECK-NEXT: vfchdb %v3, %v29, %v3 1205; CHECK-NEXT: vn %v2, %v2, %v3 1206; CHECK-NEXT: vl %v3, 320(%r15) 1207; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 1208; CHECK-NEXT: vl %v2, 176(%r15) 1209; CHECK-NEXT: vl %v3, 240(%r15) 1210; CHECK-NEXT: vfchdb %v2, %v27, %v2 1211; CHECK-NEXT: vn %v0, %v0, %v2 1212; CHECK-NEXT: vl %v2, 304(%r15) 1213; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 1214; CHECK-NEXT: vl %v2, 272(%r15) 1215; CHECK-NEXT: vmrlg %v0, %v1, %v1 1216; CHECK-NEXT: vl %v1, 208(%r15) 1217; CHECK-NEXT: vuphf %v0, %v0 1218; CHECK-NEXT: vfchdb %v1, %v31, %v1 1219; CHECK-NEXT: vn %v0, %v0, %v1 1220; CHECK-NEXT: vl %v1, 336(%r15) 1221; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1222; CHECK-NEXT: br %r14 1223 %cmp0 = fcmp ogt <8 x float> %val1, %val2 1224 %cmp1 = fcmp ogt <8 x double> %val3, %val4 1225 %and = and <8 x i1> %cmp0, %cmp1 1226 %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6 1227 ret <8 x i64> %sel 1228} 1229 1230define <16 x i8> @fun51(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i8> %val5, <16 x i8> %val6) { 1231; CHECK-LABEL: fun51: 1232; CHECK: # BB#0: 1233; CHECK-NEXT: vceqb %v0, %v28, %v30 1234; CHECK-NEXT: vceqb %v1, %v24, %v26 1235; CHECK-NEXT: vn %v0, %v1, %v0 1236; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 1237; CHECK-NEXT: br %r14 1238 %cmp0 = icmp eq <16 x i8> %val1, %val2 1239 %cmp1 = icmp eq <16 x i8> %val3, %val4 1240 %and = and <16 x i1> %cmp0, %cmp1 1241 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 1242 ret <16 x i8> %sel 1243} 1244 1245define <16 x i16> @fun52(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i16> %val5, <16 x i16> %val6) { 1246; CHECK-LABEL: fun52: 1247; CHECK: # BB#0: 1248; CHECK-NEXT: vceqb %v0, %v28, %v30 1249; CHECK-NEXT: vceqb %v1, %v24, %v26 1250; CHECK-NEXT: vn %v0, %v1, %v0 1251; CHECK-NEXT: vuphb %v1, %v0 1252; CHECK-NEXT: vmrlg %v0, %v0, %v0 1253; CHECK-NEXT: vuphb %v0, %v0 1254; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 1255; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 1256; CHECK-NEXT: br %r14 1257 %cmp0 = icmp eq <16 x i8> %val1, %val2 1258 %cmp1 = icmp eq <16 x i8> %val3, %val4 1259 %and = and <16 x i1> %cmp0, %cmp1 1260 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 1261 ret <16 x i16> %sel 1262} 1263 1264define <16 x i64> @fun53(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i64> %val5, <16 x i64> %val6) { 1265; CHECK-LABEL: fun53: 1266; CHECK: # BB#0: 1267; CHECK-NEXT: vceqb %v1, %v24, %v26 1268; CHECK-NEXT: vceqh %v0, %v28, %v25 1269; CHECK-NEXT: vuphb %v2, %v1 1270; CHECK-NEXT: vn %v0, %v2, %v0 1271; CHECK-NEXT: vuphh %v2, %v0 1272; CHECK-NEXT: vl %v3, 256(%r15) 1273; CHECK-NEXT: vuphf %v2, %v2 1274; CHECK-NEXT: vsel %v24, %v29, %v3, %v2 1275; CHECK-NEXT: vpkg %v2, %v0, %v0 1276; CHECK-NEXT: vuphh %v2, %v2 1277; CHECK-NEXT: vl %v3, 272(%r15) 1278; CHECK-NEXT: vuphf %v2, %v2 1279; CHECK-NEXT: vsel %v26, %v31, %v3, %v2 1280; CHECK-NEXT: vmrlg %v2, %v0, %v0 1281; CHECK-NEXT: vuphh %v2, %v2 1282; CHECK-NEXT: vsldb %v0, %v0, %v0, 12 1283; CHECK-NEXT: vl %v3, 288(%r15) 1284; CHECK-NEXT: vl %v4, 160(%r15) 1285; CHECK-NEXT: vuphf %v2, %v2 1286; CHECK-NEXT: vuphh %v0, %v0 1287; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 1288; CHECK-NEXT: vl %v2, 304(%r15) 1289; CHECK-NEXT: vl %v3, 176(%r15) 1290; CHECK-NEXT: vl %v4, 192(%r15) 1291; CHECK-NEXT: vuphf %v0, %v0 1292; CHECK-NEXT: vmrlg %v1, %v1, %v1 1293; CHECK-NEXT: vsel %v0, %v3, %v2, %v0 1294; CHECK-NEXT: vl %v3, 320(%r15) 1295; CHECK-NEXT: vceqh %v2, %v30, %v27 1296; CHECK-NEXT: vlr %v30, %v0 1297; CHECK-NEXT: vuphb %v1, %v1 1298; CHECK-NEXT: vn %v1, %v1, %v2 1299; CHECK-NEXT: vuphh %v2, %v1 1300; CHECK-NEXT: vuphf %v2, %v2 1301; CHECK-NEXT: vsel %v25, %v4, %v3, %v2 1302; CHECK-NEXT: vl %v3, 336(%r15) 1303; CHECK-NEXT: vl %v4, 208(%r15) 1304; CHECK-NEXT: vpkg %v2, %v1, %v1 1305; CHECK-NEXT: vuphh %v2, %v2 1306; CHECK-NEXT: vuphf %v2, %v2 1307; CHECK-NEXT: vsel %v27, %v4, %v3, %v2 1308; CHECK-NEXT: vl %v3, 352(%r15) 1309; CHECK-NEXT: vl %v4, 224(%r15) 1310; CHECK-NEXT: vmrlg %v2, %v1, %v1 1311; CHECK-NEXT: vuphh %v2, %v2 1312; CHECK-NEXT: vsldb %v1, %v1, %v1, 12 1313; CHECK-NEXT: vuphf %v2, %v2 1314; CHECK-NEXT: vuphh %v1, %v1 1315; CHECK-NEXT: vsel %v29, %v4, %v3, %v2 1316; CHECK-NEXT: vl %v2, 368(%r15) 1317; CHECK-NEXT: vl %v3, 240(%r15) 1318; CHECK-NEXT: vuphf %v1, %v1 1319; CHECK-NEXT: vsel %v31, %v3, %v2, %v1 1320; CHECK-NEXT: br %r14 1321 %cmp0 = icmp eq <16 x i8> %val1, %val2 1322 %cmp1 = icmp eq <16 x i16> %val3, %val4 1323 %and = and <16 x i1> %cmp0, %cmp1 1324 %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6 1325 ret <16 x i64> %sel 1326} 1327 1328define <16 x i64> @fun54(<16 x i8> %val1, <16 x i8> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i64> %val5, <16 x i64> %val6) { 1329; CHECK-LABEL: fun54: 1330; CHECK: # BB#0: 1331; CHECK-NEXT: vceqb %v1, %v24, %v26 1332; CHECK-NEXT: vuphb %v2, %v1 1333; CHECK-NEXT: vceqf %v0, %v28, %v29 1334; CHECK-NEXT: vuphh %v2, %v2 1335; CHECK-NEXT: vn %v0, %v2, %v0 1336; CHECK-NEXT: vl %v3, 320(%r15) 1337; CHECK-NEXT: vl %v4, 192(%r15) 1338; CHECK-NEXT: vuphf %v2, %v0 1339; CHECK-NEXT: vmrlg %v0, %v0, %v0 1340; CHECK-NEXT: vsel %v24, %v4, %v3, %v2 1341; CHECK-NEXT: vl %v2, 336(%r15) 1342; CHECK-NEXT: vl %v3, 208(%r15) 1343; CHECK-NEXT: vuphf %v0, %v0 1344; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 1345; CHECK-NEXT: vpkg %v2, %v1, %v1 1346; CHECK-NEXT: vuphb %v2, %v2 1347; CHECK-NEXT: vceqf %v0, %v30, %v31 1348; CHECK-NEXT: vuphh %v2, %v2 1349; CHECK-NEXT: vn %v0, %v2, %v0 1350; CHECK-NEXT: vl %v3, 352(%r15) 1351; CHECK-NEXT: vl %v4, 224(%r15) 1352; CHECK-NEXT: vuphf %v2, %v0 1353; CHECK-NEXT: vl %v5, 256(%r15) 1354; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 1355; CHECK-NEXT: vl %v2, 160(%r15) 1356; CHECK-NEXT: vl %v4, 384(%r15) 1357; CHECK-NEXT: vmrlg %v3, %v1, %v1 1358; CHECK-NEXT: vuphb %v3, %v3 1359; CHECK-NEXT: vceqf %v2, %v25, %v2 1360; CHECK-NEXT: vuphh %v3, %v3 1361; CHECK-NEXT: vn %v2, %v3, %v2 1362; CHECK-NEXT: vuphf %v3, %v2 1363; CHECK-NEXT: vsldb %v1, %v1, %v1, 12 1364; CHECK-NEXT: vsel %v25, %v5, %v4, %v3 1365; CHECK-NEXT: vl %v3, 176(%r15) 1366; CHECK-NEXT: vl %v4, 416(%r15) 1367; CHECK-NEXT: vl %v5, 288(%r15) 1368; CHECK-NEXT: vuphb %v1, %v1 1369; CHECK-NEXT: vceqf %v3, %v27, %v3 1370; CHECK-NEXT: vuphh %v1, %v1 1371; CHECK-NEXT: vn %v1, %v1, %v3 1372; CHECK-NEXT: vuphf %v3, %v1 1373; CHECK-NEXT: vmrlg %v0, %v0, %v0 1374; CHECK-NEXT: vsel %v29, %v5, %v4, %v3 1375; CHECK-NEXT: vl %v3, 368(%r15) 1376; CHECK-NEXT: vl %v4, 240(%r15) 1377; CHECK-NEXT: vuphf %v0, %v0 1378; CHECK-NEXT: vsel %v30, %v4, %v3, %v0 1379; CHECK-NEXT: vl %v3, 272(%r15) 1380; CHECK-NEXT: vmrlg %v0, %v2, %v2 1381; CHECK-NEXT: vl %v2, 400(%r15) 1382; CHECK-NEXT: vuphf %v0, %v0 1383; CHECK-NEXT: vsel %v27, %v3, %v2, %v0 1384; CHECK-NEXT: vl %v2, 304(%r15) 1385; CHECK-NEXT: vmrlg %v0, %v1, %v1 1386; CHECK-NEXT: vl %v1, 432(%r15) 1387; CHECK-NEXT: vuphf %v0, %v0 1388; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 1389; CHECK-NEXT: br %r14 1390 %cmp0 = icmp eq <16 x i8> %val1, %val2 1391 %cmp1 = icmp eq <16 x i32> %val3, %val4 1392 %and = and <16 x i1> %cmp0, %cmp1 1393 %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6 1394 ret <16 x i64> %sel 1395} 1396 1397define <16 x i64> @fun55(<16 x i8> %val1, <16 x i8> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i64> %val5, <16 x i64> %val6) { 1398; CHECK-LABEL: fun55: 1399; CHECK: # BB#0: 1400; CHECK-NEXT: vl %v0, 192(%r15) 1401; CHECK-NEXT: vceqg %v1, %v28, %v0 1402; CHECK-NEXT: vceqb %v0, %v24, %v26 1403; CHECK-NEXT: vuphb %v2, %v0 1404; CHECK-NEXT: vuphh %v2, %v2 1405; CHECK-NEXT: vuphf %v2, %v2 1406; CHECK-NEXT: vn %v1, %v2, %v1 1407; CHECK-NEXT: vl %v2, 448(%r15) 1408; CHECK-NEXT: vl %v3, 320(%r15) 1409; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 1410; CHECK-NEXT: vpkf %v2, %v0, %v0 1411; CHECK-NEXT: vuphb %v2, %v2 1412; CHECK-NEXT: vl %v1, 208(%r15) 1413; CHECK-NEXT: vuphh %v2, %v2 1414; CHECK-NEXT: vceqg %v1, %v30, %v1 1415; CHECK-NEXT: vuphf %v2, %v2 1416; CHECK-NEXT: vn %v1, %v2, %v1 1417; CHECK-NEXT: vl %v2, 464(%r15) 1418; CHECK-NEXT: vl %v3, 336(%r15) 1419; CHECK-NEXT: vsel %v26, %v3, %v2, %v1 1420; CHECK-NEXT: vpkg %v2, %v0, %v0 1421; CHECK-NEXT: vuphb %v2, %v2 1422; CHECK-NEXT: vl %v1, 224(%r15) 1423; CHECK-NEXT: vl %v3, 352(%r15) 1424; CHECK-NEXT: vuphh %v2, %v2 1425; CHECK-NEXT: vceqg %v1, %v25, %v1 1426; CHECK-NEXT: vuphf %v2, %v2 1427; CHECK-NEXT: vn %v1, %v2, %v1 1428; CHECK-NEXT: vl %v2, 480(%r15) 1429; CHECK-NEXT: vsel %v28, %v3, %v2, %v1 1430; CHECK-NEXT: vl %v1, 240(%r15) 1431; CHECK-NEXT: vl %v3, 368(%r15) 1432; CHECK-NEXT: vsldb %v2, %v0, %v0, 6 1433; CHECK-NEXT: vuphb %v2, %v2 1434; CHECK-NEXT: vuphh %v2, %v2 1435; CHECK-NEXT: vceqg %v1, %v27, %v1 1436; CHECK-NEXT: vuphf %v2, %v2 1437; CHECK-NEXT: vn %v1, %v2, %v1 1438; CHECK-NEXT: vl %v2, 496(%r15) 1439; CHECK-NEXT: vsel %v30, %v3, %v2, %v1 1440; CHECK-NEXT: vl %v1, 256(%r15) 1441; CHECK-NEXT: vl %v3, 384(%r15) 1442; CHECK-NEXT: vmrlg %v2, %v0, %v0 1443; CHECK-NEXT: vuphb %v2, %v2 1444; CHECK-NEXT: vuphh %v2, %v2 1445; CHECK-NEXT: vceqg %v1, %v29, %v1 1446; CHECK-NEXT: vuphf %v2, %v2 1447; CHECK-NEXT: vn %v1, %v2, %v1 1448; CHECK-NEXT: vl %v2, 512(%r15) 1449; CHECK-NEXT: vsel %v25, %v3, %v2, %v1 1450; CHECK-NEXT: vl %v1, 272(%r15) 1451; CHECK-NEXT: vl %v3, 400(%r15) 1452; CHECK-NEXT: vsldb %v2, %v0, %v0, 10 1453; CHECK-NEXT: vuphb %v2, %v2 1454; CHECK-NEXT: vuphh %v2, %v2 1455; CHECK-NEXT: vceqg %v1, %v31, %v1 1456; CHECK-NEXT: vuphf %v2, %v2 1457; CHECK-NEXT: vn %v1, %v2, %v1 1458; CHECK-NEXT: vl %v2, 528(%r15) 1459; CHECK-NEXT: vsel %v27, %v3, %v2, %v1 1460; CHECK-NEXT: vl %v1, 288(%r15) 1461; CHECK-NEXT: vl %v2, 160(%r15) 1462; CHECK-NEXT: vl %v3, 416(%r15) 1463; CHECK-NEXT: vceqg %v1, %v2, %v1 1464; CHECK-NEXT: vsldb %v2, %v0, %v0, 12 1465; CHECK-NEXT: vuphb %v2, %v2 1466; CHECK-NEXT: vuphh %v2, %v2 1467; CHECK-NEXT: vuphf %v2, %v2 1468; CHECK-NEXT: vsldb %v0, %v0, %v0, 14 1469; CHECK-NEXT: vn %v1, %v2, %v1 1470; CHECK-NEXT: vl %v2, 544(%r15) 1471; CHECK-NEXT: vuphb %v0, %v0 1472; CHECK-NEXT: vsel %v29, %v3, %v2, %v1 1473; CHECK-NEXT: vl %v1, 304(%r15) 1474; CHECK-NEXT: vl %v2, 176(%r15) 1475; CHECK-NEXT: vuphh %v0, %v0 1476; CHECK-NEXT: vceqg %v1, %v2, %v1 1477; CHECK-NEXT: vl %v2, 432(%r15) 1478; CHECK-NEXT: vuphf %v0, %v0 1479; CHECK-NEXT: vn %v0, %v0, %v1 1480; CHECK-NEXT: vl %v1, 560(%r15) 1481; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 1482; CHECK-NEXT: br %r14 1483 %cmp0 = icmp eq <16 x i8> %val1, %val2 1484 %cmp1 = icmp eq <16 x i64> %val3, %val4 1485 %and = and <16 x i1> %cmp0, %cmp1 1486 %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6 1487 ret <16 x i64> %sel 1488} 1489 1490define <16 x i16> @fun56(<16 x i8> %val1, <16 x i8> %val2, <16 x float> %val3, <16 x float> %val4, <16 x i16> %val5, <16 x i16> %val6) { 1491; CHECK-LABEL: fun56: 1492; CHECK: # BB#0: 1493; CHECK-NEXT: vmrlf %v0, %v31, %v31 1494; CHECK-NEXT: vmrlf %v1, %v30, %v30 1495; CHECK-NEXT: vldeb %v0, %v0 1496; CHECK-NEXT: vldeb %v1, %v1 1497; CHECK-NEXT: vfchdb %v0, %v1, %v0 1498; CHECK-NEXT: vmrhf %v1, %v31, %v31 1499; CHECK-NEXT: vmrhf %v2, %v30, %v30 1500; CHECK-NEXT: vldeb %v1, %v1 1501; CHECK-NEXT: vmrhf %v3, %v28, %v28 1502; CHECK-NEXT: vmrlf %v4, %v25, %v25 1503; CHECK-NEXT: vldeb %v2, %v2 1504; CHECK-NEXT: vfchdb %v1, %v2, %v1 1505; CHECK-NEXT: vpkg %v0, %v1, %v0 1506; CHECK-NEXT: vmrlf %v1, %v29, %v29 1507; CHECK-NEXT: vmrlf %v2, %v28, %v28 1508; CHECK-NEXT: vldeb %v1, %v1 1509; CHECK-NEXT: vldeb %v2, %v2 1510; CHECK-NEXT: vfchdb %v1, %v2, %v1 1511; CHECK-NEXT: vmrhf %v2, %v29, %v29 1512; CHECK-NEXT: vldeb %v2, %v2 1513; CHECK-NEXT: vldeb %v3, %v3 1514; CHECK-NEXT: vfchdb %v2, %v3, %v2 1515; CHECK-NEXT: vl %v3, 192(%r15) 1516; CHECK-NEXT: vpkg %v1, %v2, %v1 1517; CHECK-NEXT: vpkf %v0, %v1, %v0 1518; CHECK-NEXT: vceqb %v1, %v24, %v26 1519; CHECK-NEXT: vuphb %v2, %v1 1520; CHECK-NEXT: vn %v0, %v2, %v0 1521; CHECK-NEXT: vl %v2, 224(%r15) 1522; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 1523; CHECK-NEXT: vl %v0, 176(%r15) 1524; CHECK-NEXT: vmrlf %v2, %v0, %v0 1525; CHECK-NEXT: vmrlf %v3, %v27, %v27 1526; CHECK-NEXT: vmrhf %v0, %v0, %v0 1527; CHECK-NEXT: vmrlg %v1, %v1, %v1 1528; CHECK-NEXT: vuphb %v1, %v1 1529; CHECK-NEXT: vldeb %v2, %v2 1530; CHECK-NEXT: vldeb %v3, %v3 1531; CHECK-NEXT: vfchdb %v2, %v3, %v2 1532; CHECK-NEXT: vmrhf %v3, %v27, %v27 1533; CHECK-NEXT: vldeb %v0, %v0 1534; CHECK-NEXT: vldeb %v3, %v3 1535; CHECK-NEXT: vfchdb %v0, %v3, %v0 1536; CHECK-NEXT: vpkg %v0, %v0, %v2 1537; CHECK-NEXT: vl %v2, 160(%r15) 1538; CHECK-NEXT: vmrlf %v3, %v2, %v2 1539; CHECK-NEXT: vmrhf %v2, %v2, %v2 1540; CHECK-NEXT: vldeb %v3, %v3 1541; CHECK-NEXT: vldeb %v4, %v4 1542; CHECK-NEXT: vfchdb %v3, %v4, %v3 1543; CHECK-NEXT: vmrhf %v4, %v25, %v25 1544; CHECK-NEXT: vldeb %v2, %v2 1545; CHECK-NEXT: vldeb %v4, %v4 1546; CHECK-NEXT: vfchdb %v2, %v4, %v2 1547; CHECK-NEXT: vpkg %v2, %v2, %v3 1548; CHECK-NEXT: vpkf %v0, %v2, %v0 1549; CHECK-NEXT: vl %v2, 208(%r15) 1550; CHECK-NEXT: vn %v0, %v1, %v0 1551; CHECK-NEXT: vl %v1, 240(%r15) 1552; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1553; CHECK-NEXT: br %r14 1554 %cmp0 = icmp eq <16 x i8> %val1, %val2 1555 %cmp1 = fcmp ogt <16 x float> %val3, %val4 1556 %and = and <16 x i1> %cmp0, %cmp1 1557 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 1558 ret <16 x i16> %sel 1559} 1560 1561define <16 x i8> @fun57(<16 x i8> %val1, <16 x i8> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i8> %val5, <16 x i8> %val6) { 1562; CHECK-LABEL: fun57: 1563; CHECK: # BB#0: 1564; CHECK-NEXT: vl %v0, 304(%r15) 1565; CHECK-NEXT: vl %v1, 176(%r15) 1566; CHECK-NEXT: vfchdb %v0, %v1, %v0 1567; CHECK-NEXT: vl %v1, 288(%r15) 1568; CHECK-NEXT: vl %v2, 160(%r15) 1569; CHECK-NEXT: vfchdb %v1, %v2, %v1 1570; CHECK-NEXT: vpkg %v0, %v1, %v0 1571; CHECK-NEXT: vl %v1, 272(%r15) 1572; CHECK-NEXT: vl %v2, 256(%r15) 1573; CHECK-NEXT: vfchdb %v1, %v31, %v1 1574; CHECK-NEXT: vfchdb %v2, %v29, %v2 1575; CHECK-NEXT: vpkg %v1, %v2, %v1 1576; CHECK-NEXT: vpkf %v0, %v1, %v0 1577; CHECK-NEXT: vl %v1, 240(%r15) 1578; CHECK-NEXT: vl %v2, 224(%r15) 1579; CHECK-NEXT: vfchdb %v1, %v27, %v1 1580; CHECK-NEXT: vfchdb %v2, %v25, %v2 1581; CHECK-NEXT: vpkg %v1, %v2, %v1 1582; CHECK-NEXT: vl %v2, 208(%r15) 1583; CHECK-NEXT: vl %v3, 192(%r15) 1584; CHECK-NEXT: vfchdb %v2, %v30, %v2 1585; CHECK-NEXT: vfchdb %v3, %v28, %v3 1586; CHECK-NEXT: vpkg %v2, %v3, %v2 1587; CHECK-NEXT: vpkf %v1, %v2, %v1 1588; CHECK-NEXT: vpkh %v0, %v1, %v0 1589; CHECK-NEXT: vceqb %v1, %v24, %v26 1590; CHECK-NEXT: vn %v0, %v1, %v0 1591; CHECK-NEXT: vl %v1, 336(%r15) 1592; CHECK-NEXT: vl %v2, 320(%r15) 1593; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1594; CHECK-NEXT: br %r14 1595 %cmp0 = icmp eq <16 x i8> %val1, %val2 1596 %cmp1 = fcmp ogt <16 x double> %val3, %val4 1597 %and = and <16 x i1> %cmp0, %cmp1 1598 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 1599 ret <16 x i8> %sel 1600} 1601 1602define <16 x i8> @fun58(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i8> %val5, <16 x i8> %val6) { 1603; CHECK-LABEL: fun58: 1604; CHECK: # BB#0: 1605; CHECK-NEXT: vceqh %v0, %v27, %v31 1606; CHECK-NEXT: vceqh %v1, %v26, %v30 1607; CHECK-NEXT: vn %v0, %v1, %v0 1608; CHECK-NEXT: vceqh %v1, %v25, %v29 1609; CHECK-NEXT: vceqh %v2, %v24, %v28 1610; CHECK-NEXT: vn %v1, %v2, %v1 1611; CHECK-NEXT: vpkh %v0, %v1, %v0 1612; CHECK-NEXT: vl %v1, 176(%r15) 1613; CHECK-NEXT: vl %v2, 160(%r15) 1614; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1615; CHECK-NEXT: br %r14 1616 %cmp0 = icmp eq <16 x i16> %val1, %val2 1617 %cmp1 = icmp eq <16 x i16> %val3, %val4 1618 %and = and <16 x i1> %cmp0, %cmp1 1619 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 1620 ret <16 x i8> %sel 1621} 1622 1623define <16 x i16> @fun59(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i16> %val5, <16 x i16> %val6) { 1624; CHECK-LABEL: fun59: 1625; CHECK: # BB#0: 1626; CHECK-NEXT: vceqh %v0, %v25, %v29 1627; CHECK-NEXT: vceqh %v1, %v24, %v28 1628; CHECK-NEXT: vn %v0, %v1, %v0 1629; CHECK-NEXT: vl %v1, 192(%r15) 1630; CHECK-NEXT: vl %v2, 160(%r15) 1631; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1632; CHECK-NEXT: vceqh %v0, %v27, %v31 1633; CHECK-NEXT: vceqh %v1, %v26, %v30 1634; CHECK-NEXT: vn %v0, %v1, %v0 1635; CHECK-NEXT: vl %v1, 208(%r15) 1636; CHECK-NEXT: vl %v2, 176(%r15) 1637; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1638; CHECK-NEXT: br %r14 1639 %cmp0 = icmp eq <16 x i16> %val1, %val2 1640 %cmp1 = icmp eq <16 x i16> %val3, %val4 1641 %and = and <16 x i1> %cmp0, %cmp1 1642 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 1643 ret <16 x i16> %sel 1644} 1645 1646define <16 x i32> @fun60(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i32> %val5, <16 x i32> %val6) { 1647; CHECK-LABEL: fun60: 1648; CHECK: # BB#0: 1649; CHECK-NEXT: vceqh %v0, %v25, %v29 1650; CHECK-NEXT: vceqh %v1, %v24, %v28 1651; CHECK-NEXT: vn %v0, %v1, %v0 1652; CHECK-NEXT: vl %v2, 224(%r15) 1653; CHECK-NEXT: vl %v3, 160(%r15) 1654; CHECK-NEXT: vuphh %v1, %v0 1655; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 1656; CHECK-NEXT: vceqh %v1, %v27, %v31 1657; CHECK-NEXT: vceqh %v2, %v26, %v30 1658; CHECK-NEXT: vn %v1, %v2, %v1 1659; CHECK-NEXT: vl %v3, 256(%r15) 1660; CHECK-NEXT: vl %v4, 192(%r15) 1661; CHECK-NEXT: vuphh %v2, %v1 1662; CHECK-NEXT: vmrlg %v0, %v0, %v0 1663; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 1664; CHECK-NEXT: vl %v2, 240(%r15) 1665; CHECK-NEXT: vl %v3, 176(%r15) 1666; CHECK-NEXT: vuphh %v0, %v0 1667; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 1668; CHECK-NEXT: vmrlg %v0, %v1, %v1 1669; CHECK-NEXT: vl %v1, 272(%r15) 1670; CHECK-NEXT: vl %v2, 208(%r15) 1671; CHECK-NEXT: vuphh %v0, %v0 1672; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1673; CHECK-NEXT: br %r14 1674 %cmp0 = icmp eq <16 x i16> %val1, %val2 1675 %cmp1 = icmp eq <16 x i16> %val3, %val4 1676 %and = and <16 x i1> %cmp0, %cmp1 1677 %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6 1678 ret <16 x i32> %sel 1679} 1680 1681define <16 x i8> @fun61(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i8> %val5, <16 x i8> %val6) { 1682; CHECK-LABEL: fun61: 1683; CHECK: # BB#0: 1684; CHECK-NEXT: vl %v0, 208(%r15) 1685; CHECK-NEXT: vl %v1, 192(%r15) 1686; CHECK-NEXT: vceqf %v0, %v31, %v0 1687; CHECK-NEXT: vceqf %v1, %v29, %v1 1688; CHECK-NEXT: vpkf %v0, %v1, %v0 1689; CHECK-NEXT: vceqh %v1, %v26, %v30 1690; CHECK-NEXT: vn %v0, %v1, %v0 1691; CHECK-NEXT: vl %v1, 176(%r15) 1692; CHECK-NEXT: vl %v2, 160(%r15) 1693; CHECK-NEXT: vceqf %v1, %v27, %v1 1694; CHECK-NEXT: vceqf %v2, %v25, %v2 1695; CHECK-NEXT: vpkf %v1, %v2, %v1 1696; CHECK-NEXT: vceqh %v2, %v24, %v28 1697; CHECK-NEXT: vn %v1, %v2, %v1 1698; CHECK-NEXT: vpkh %v0, %v1, %v0 1699; CHECK-NEXT: vl %v1, 240(%r15) 1700; CHECK-NEXT: vl %v2, 224(%r15) 1701; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1702; CHECK-NEXT: br %r14 1703 %cmp0 = icmp eq <16 x i16> %val1, %val2 1704 %cmp1 = icmp eq <16 x i32> %val3, %val4 1705 %and = and <16 x i1> %cmp0, %cmp1 1706 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 1707 ret <16 x i8> %sel 1708} 1709 1710define <16 x i32> @fun62(<16 x i16> %val1, <16 x i16> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i32> %val5, <16 x i32> %val6) { 1711; CHECK-LABEL: fun62: 1712; CHECK: # BB#0: 1713; CHECK-NEXT: vl %v0, 240(%r15) 1714; CHECK-NEXT: vl %v1, 224(%r15) 1715; CHECK-NEXT: vceqg %v0, %v27, %v0 1716; CHECK-NEXT: vceqg %v1, %v25, %v1 1717; CHECK-NEXT: vpkg %v0, %v1, %v0 1718; CHECK-NEXT: vceqh %v1, %v24, %v28 1719; CHECK-NEXT: vuphh %v2, %v1 1720; CHECK-NEXT: vn %v0, %v2, %v0 1721; CHECK-NEXT: vl %v2, 416(%r15) 1722; CHECK-NEXT: vl %v3, 352(%r15) 1723; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 1724; CHECK-NEXT: vl %v0, 304(%r15) 1725; CHECK-NEXT: vl %v2, 176(%r15) 1726; CHECK-NEXT: vceqg %v0, %v2, %v0 1727; CHECK-NEXT: vl %v2, 288(%r15) 1728; CHECK-NEXT: vl %v3, 160(%r15) 1729; CHECK-NEXT: vceqg %v2, %v3, %v2 1730; CHECK-NEXT: vpkg %v0, %v2, %v0 1731; CHECK-NEXT: vceqh %v2, %v26, %v30 1732; CHECK-NEXT: vuphh %v3, %v2 1733; CHECK-NEXT: vn %v0, %v3, %v0 1734; CHECK-NEXT: vl %v3, 448(%r15) 1735; CHECK-NEXT: vl %v4, 384(%r15) 1736; CHECK-NEXT: vsel %v28, %v4, %v3, %v0 1737; CHECK-NEXT: vl %v0, 272(%r15) 1738; CHECK-NEXT: vl %v3, 256(%r15) 1739; CHECK-NEXT: vceqg %v0, %v31, %v0 1740; CHECK-NEXT: vceqg %v3, %v29, %v3 1741; CHECK-NEXT: vmrlg %v1, %v1, %v1 1742; CHECK-NEXT: vpkg %v0, %v3, %v0 1743; CHECK-NEXT: vuphh %v1, %v1 1744; CHECK-NEXT: vl %v3, 368(%r15) 1745; CHECK-NEXT: vn %v0, %v1, %v0 1746; CHECK-NEXT: vl %v1, 432(%r15) 1747; CHECK-NEXT: vsel %v26, %v3, %v1, %v0 1748; CHECK-NEXT: vl %v0, 336(%r15) 1749; CHECK-NEXT: vl %v1, 208(%r15) 1750; CHECK-NEXT: vl %v3, 192(%r15) 1751; CHECK-NEXT: vceqg %v0, %v1, %v0 1752; CHECK-NEXT: vl %v1, 320(%r15) 1753; CHECK-NEXT: vceqg %v1, %v3, %v1 1754; CHECK-NEXT: vpkg %v0, %v1, %v0 1755; CHECK-NEXT: vmrlg %v1, %v2, %v2 1756; CHECK-NEXT: vl %v2, 400(%r15) 1757; CHECK-NEXT: vuphh %v1, %v1 1758; CHECK-NEXT: vn %v0, %v1, %v0 1759; CHECK-NEXT: vl %v1, 464(%r15) 1760; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1761; CHECK-NEXT: br %r14 1762 %cmp0 = icmp eq <16 x i16> %val1, %val2 1763 %cmp1 = icmp eq <16 x i64> %val3, %val4 1764 %and = and <16 x i1> %cmp0, %cmp1 1765 %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6 1766 ret <16 x i32> %sel 1767} 1768 1769define <16 x double> @fun63(<16 x i16> %val1, <16 x i16> %val2, <16 x float> %val3, <16 x float> %val4, <16 x double> %val5, <16 x double> %val6) { 1770; CHECK-LABEL: fun63: 1771; CHECK: # BB#0: 1772; CHECK-NEXT: vl %v0, 160(%r15) 1773; CHECK-NEXT: vmrlf %v1, %v0, %v0 1774; CHECK-NEXT: vmrlf %v2, %v25, %v25 1775; CHECK-NEXT: vldeb %v1, %v1 1776; CHECK-NEXT: vldeb %v2, %v2 1777; CHECK-NEXT: vfchdb %v1, %v2, %v1 1778; CHECK-NEXT: vmrhf %v0, %v0, %v0 1779; CHECK-NEXT: vmrhf %v2, %v25, %v25 1780; CHECK-NEXT: vldeb %v0, %v0 1781; CHECK-NEXT: vldeb %v2, %v2 1782; CHECK-NEXT: vl %v3, 352(%r15) 1783; CHECK-NEXT: vl %v4, 224(%r15) 1784; CHECK-NEXT: vl %v5, 416(%r15) 1785; CHECK-NEXT: vl %v6, 288(%r15) 1786; CHECK-NEXT: vfchdb %v0, %v2, %v0 1787; CHECK-NEXT: vpkg %v0, %v0, %v1 1788; CHECK-NEXT: vceqh %v1, %v24, %v28 1789; CHECK-NEXT: vuphh %v2, %v1 1790; CHECK-NEXT: vn %v0, %v2, %v0 1791; CHECK-NEXT: vuphf %v2, %v0 1792; CHECK-NEXT: vsel %v24, %v4, %v3, %v2 1793; CHECK-NEXT: vl %v2, 176(%r15) 1794; CHECK-NEXT: vmrlf %v3, %v2, %v2 1795; CHECK-NEXT: vmrlf %v4, %v27, %v27 1796; CHECK-NEXT: vmrhf %v2, %v2, %v2 1797; CHECK-NEXT: vmrlg %v1, %v1, %v1 1798; CHECK-NEXT: vuphh %v1, %v1 1799; CHECK-NEXT: vmrlg %v0, %v0, %v0 1800; CHECK-NEXT: vuphf %v0, %v0 1801; CHECK-NEXT: vldeb %v3, %v3 1802; CHECK-NEXT: vldeb %v4, %v4 1803; CHECK-NEXT: vfchdb %v3, %v4, %v3 1804; CHECK-NEXT: vmrhf %v4, %v27, %v27 1805; CHECK-NEXT: vldeb %v2, %v2 1806; CHECK-NEXT: vldeb %v4, %v4 1807; CHECK-NEXT: vfchdb %v2, %v4, %v2 1808; CHECK-NEXT: vl %v4, 256(%r15) 1809; CHECK-NEXT: vpkg %v2, %v2, %v3 1810; CHECK-NEXT: vl %v3, 384(%r15) 1811; CHECK-NEXT: vn %v1, %v1, %v2 1812; CHECK-NEXT: vuphf %v2, %v1 1813; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 1814; CHECK-NEXT: vl %v2, 192(%r15) 1815; CHECK-NEXT: vmrlf %v3, %v2, %v2 1816; CHECK-NEXT: vmrlf %v4, %v29, %v29 1817; CHECK-NEXT: vmrhf %v2, %v2, %v2 1818; CHECK-NEXT: vldeb %v3, %v3 1819; CHECK-NEXT: vldeb %v4, %v4 1820; CHECK-NEXT: vfchdb %v3, %v4, %v3 1821; CHECK-NEXT: vmrhf %v4, %v29, %v29 1822; CHECK-NEXT: vldeb %v2, %v2 1823; CHECK-NEXT: vldeb %v4, %v4 1824; CHECK-NEXT: vfchdb %v2, %v4, %v2 1825; CHECK-NEXT: vpkg %v2, %v2, %v3 1826; CHECK-NEXT: vceqh %v3, %v26, %v30 1827; CHECK-NEXT: vuphh %v4, %v3 1828; CHECK-NEXT: vn %v2, %v4, %v2 1829; CHECK-NEXT: vuphf %v4, %v2 1830; CHECK-NEXT: vsel %v25, %v6, %v5, %v4 1831; CHECK-NEXT: vl %v4, 208(%r15) 1832; CHECK-NEXT: vmrlf %v5, %v4, %v4 1833; CHECK-NEXT: vmrlf %v6, %v31, %v31 1834; CHECK-NEXT: vmrhf %v4, %v4, %v4 1835; CHECK-NEXT: vmrlg %v3, %v3, %v3 1836; CHECK-NEXT: vuphh %v3, %v3 1837; CHECK-NEXT: vldeb %v5, %v5 1838; CHECK-NEXT: vldeb %v6, %v6 1839; CHECK-NEXT: vfchdb %v5, %v6, %v5 1840; CHECK-NEXT: vmrhf %v6, %v31, %v31 1841; CHECK-NEXT: vldeb %v4, %v4 1842; CHECK-NEXT: vldeb %v6, %v6 1843; CHECK-NEXT: vfchdb %v4, %v6, %v4 1844; CHECK-NEXT: vl %v6, 320(%r15) 1845; CHECK-NEXT: vpkg %v4, %v4, %v5 1846; CHECK-NEXT: vl %v5, 448(%r15) 1847; CHECK-NEXT: vn %v3, %v3, %v4 1848; CHECK-NEXT: vuphf %v4, %v3 1849; CHECK-NEXT: vsel %v29, %v6, %v5, %v4 1850; CHECK-NEXT: vl %v4, 368(%r15) 1851; CHECK-NEXT: vl %v5, 240(%r15) 1852; CHECK-NEXT: vsel %v26, %v5, %v4, %v0 1853; CHECK-NEXT: vl %v4, 272(%r15) 1854; CHECK-NEXT: vmrlg %v0, %v1, %v1 1855; CHECK-NEXT: vl %v1, 400(%r15) 1856; CHECK-NEXT: vuphf %v0, %v0 1857; CHECK-NEXT: vsel %v30, %v4, %v1, %v0 1858; CHECK-NEXT: vl %v1, 432(%r15) 1859; CHECK-NEXT: vmrlg %v0, %v2, %v2 1860; CHECK-NEXT: vl %v2, 304(%r15) 1861; CHECK-NEXT: vuphf %v0, %v0 1862; CHECK-NEXT: vsel %v27, %v2, %v1, %v0 1863; CHECK-NEXT: vl %v1, 464(%r15) 1864; CHECK-NEXT: vl %v2, 336(%r15) 1865; CHECK-NEXT: vmrlg %v0, %v3, %v3 1866; CHECK-NEXT: vuphf %v0, %v0 1867; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 1868; CHECK-NEXT: br %r14 1869 %cmp0 = icmp eq <16 x i16> %val1, %val2 1870 %cmp1 = fcmp ogt <16 x float> %val3, %val4 1871 %and = and <16 x i1> %cmp0, %cmp1 1872 %sel = select <16 x i1> %and, <16 x double> %val5, <16 x double> %val6 1873 ret <16 x double> %sel 1874} 1875 1876define <16 x i32> @fun64(<16 x i16> %val1, <16 x i16> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i32> %val5, <16 x i32> %val6) { 1877; CHECK-LABEL: fun64: 1878; CHECK: # BB#0: 1879; CHECK-NEXT: vl %v0, 240(%r15) 1880; CHECK-NEXT: vl %v1, 224(%r15) 1881; CHECK-NEXT: vfchdb %v0, %v27, %v0 1882; CHECK-NEXT: vfchdb %v1, %v25, %v1 1883; CHECK-NEXT: vpkg %v0, %v1, %v0 1884; CHECK-NEXT: vceqh %v1, %v24, %v28 1885; CHECK-NEXT: vuphh %v2, %v1 1886; CHECK-NEXT: vn %v0, %v2, %v0 1887; CHECK-NEXT: vl %v2, 416(%r15) 1888; CHECK-NEXT: vl %v3, 352(%r15) 1889; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 1890; CHECK-NEXT: vl %v0, 304(%r15) 1891; CHECK-NEXT: vl %v2, 176(%r15) 1892; CHECK-NEXT: vfchdb %v0, %v2, %v0 1893; CHECK-NEXT: vl %v2, 288(%r15) 1894; CHECK-NEXT: vl %v3, 160(%r15) 1895; CHECK-NEXT: vfchdb %v2, %v3, %v2 1896; CHECK-NEXT: vpkg %v0, %v2, %v0 1897; CHECK-NEXT: vceqh %v2, %v26, %v30 1898; CHECK-NEXT: vuphh %v3, %v2 1899; CHECK-NEXT: vn %v0, %v3, %v0 1900; CHECK-NEXT: vl %v3, 448(%r15) 1901; CHECK-NEXT: vl %v4, 384(%r15) 1902; CHECK-NEXT: vsel %v28, %v4, %v3, %v0 1903; CHECK-NEXT: vl %v0, 272(%r15) 1904; CHECK-NEXT: vl %v3, 256(%r15) 1905; CHECK-NEXT: vfchdb %v0, %v31, %v0 1906; CHECK-NEXT: vfchdb %v3, %v29, %v3 1907; CHECK-NEXT: vmrlg %v1, %v1, %v1 1908; CHECK-NEXT: vpkg %v0, %v3, %v0 1909; CHECK-NEXT: vuphh %v1, %v1 1910; CHECK-NEXT: vl %v3, 368(%r15) 1911; CHECK-NEXT: vn %v0, %v1, %v0 1912; CHECK-NEXT: vl %v1, 432(%r15) 1913; CHECK-NEXT: vsel %v26, %v3, %v1, %v0 1914; CHECK-NEXT: vl %v0, 336(%r15) 1915; CHECK-NEXT: vl %v1, 208(%r15) 1916; CHECK-NEXT: vl %v3, 192(%r15) 1917; CHECK-NEXT: vfchdb %v0, %v1, %v0 1918; CHECK-NEXT: vl %v1, 320(%r15) 1919; CHECK-NEXT: vfchdb %v1, %v3, %v1 1920; CHECK-NEXT: vpkg %v0, %v1, %v0 1921; CHECK-NEXT: vmrlg %v1, %v2, %v2 1922; CHECK-NEXT: vl %v2, 400(%r15) 1923; CHECK-NEXT: vuphh %v1, %v1 1924; CHECK-NEXT: vn %v0, %v1, %v0 1925; CHECK-NEXT: vl %v1, 464(%r15) 1926; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1927; CHECK-NEXT: br %r14 1928 %cmp0 = icmp eq <16 x i16> %val1, %val2 1929 %cmp1 = fcmp ogt <16 x double> %val3, %val4 1930 %and = and <16 x i1> %cmp0, %cmp1 1931 %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6 1932 ret <16 x i32> %sel 1933} 1934 1935define <2 x i8> @fun65(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i8> %val5, <2 x i8> %val6) { 1936; CHECK-LABEL: fun65: 1937; CHECK: # BB#0: 1938; CHECK-NEXT: vceqb %v0, %v28, %v30 1939; CHECK-NEXT: vceqb %v1, %v24, %v26 1940; CHECK-NEXT: vo %v0, %v1, %v0 1941; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 1942; CHECK-NEXT: br %r14 1943 %cmp0 = icmp eq <2 x i8> %val1, %val2 1944 %cmp1 = icmp eq <2 x i8> %val3, %val4 1945 %and = or <2 x i1> %cmp0, %cmp1 1946 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 1947 ret <2 x i8> %sel 1948} 1949 1950define <2 x i16> @fun66(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i16> %val5, <2 x i16> %val6) { 1951; CHECK-LABEL: fun66: 1952; CHECK: # BB#0: 1953; CHECK-NEXT: vceqb %v0, %v28, %v30 1954; CHECK-NEXT: vceqb %v1, %v24, %v26 1955; CHECK-NEXT: vo %v0, %v1, %v0 1956; CHECK-NEXT: vuphb %v0, %v0 1957; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 1958; CHECK-NEXT: br %r14 1959 %cmp0 = icmp eq <2 x i8> %val1, %val2 1960 %cmp1 = icmp eq <2 x i8> %val3, %val4 1961 %and = or <2 x i1> %cmp0, %cmp1 1962 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 1963 ret <2 x i16> %sel 1964} 1965 1966define <2 x i8> @fun67(<2 x i8> %val1, <2 x i8> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) { 1967; CHECK-LABEL: fun67: 1968; CHECK: # BB#0: 1969; CHECK-NEXT: vceqh %v1, %v28, %v30 1970; CHECK-NEXT: vceqb %v0, %v24, %v26 1971; CHECK-NEXT: vpkh %v1, %v1, %v1 1972; CHECK-NEXT: vo %v0, %v0, %v1 1973; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 1974; CHECK-NEXT: br %r14 1975 %cmp0 = icmp eq <2 x i8> %val1, %val2 1976 %cmp1 = icmp eq <2 x i16> %val3, %val4 1977 %and = or <2 x i1> %cmp0, %cmp1 1978 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 1979 ret <2 x i8> %sel 1980} 1981 1982define <2 x i32> @fun68(<2 x i8> %val1, <2 x i8> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) { 1983; CHECK-LABEL: fun68: 1984; CHECK: # BB#0: 1985; CHECK-NEXT: vceqb %v1, %v24, %v26 1986; CHECK-NEXT: vuphb %v1, %v1 1987; CHECK-NEXT: vceqf %v0, %v28, %v30 1988; CHECK-NEXT: vuphh %v1, %v1 1989; CHECK-NEXT: vo %v0, %v1, %v0 1990; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 1991; CHECK-NEXT: br %r14 1992 %cmp0 = icmp eq <2 x i8> %val1, %val2 1993 %cmp1 = icmp eq <2 x i32> %val3, %val4 1994 %and = or <2 x i1> %cmp0, %cmp1 1995 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 1996 ret <2 x i32> %sel 1997} 1998 1999define <2 x i32> @fun69(<2 x i8> %val1, <2 x i8> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i32> %val5, <2 x i32> %val6) { 2000; CHECK-LABEL: fun69: 2001; CHECK: # BB#0: 2002; CHECK-NEXT: vceqb %v1, %v24, %v26 2003; CHECK-NEXT: vceqg %v0, %v28, %v30 2004; CHECK-NEXT: vuphb %v1, %v1 2005; CHECK-NEXT: vpkg %v0, %v0, %v0 2006; CHECK-NEXT: vuphh %v1, %v1 2007; CHECK-NEXT: vo %v0, %v1, %v0 2008; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2009; CHECK-NEXT: br %r14 2010 %cmp0 = icmp eq <2 x i8> %val1, %val2 2011 %cmp1 = icmp eq <2 x i64> %val3, %val4 2012 %and = or <2 x i1> %cmp0, %cmp1 2013 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 2014 ret <2 x i32> %sel 2015} 2016 2017define <2 x i16> @fun70(<2 x i8> %val1, <2 x i8> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) { 2018; CHECK-LABEL: fun70: 2019; CHECK: # BB#0: 2020; CHECK-NEXT: vmrlf %v0, %v30, %v30 2021; CHECK-NEXT: vmrlf %v1, %v28, %v28 2022; CHECK-NEXT: vldeb %v0, %v0 2023; CHECK-NEXT: vldeb %v1, %v1 2024; CHECK-NEXT: vfchdb %v0, %v1, %v0 2025; CHECK-NEXT: vmrhf %v1, %v30, %v30 2026; CHECK-NEXT: vmrhf %v2, %v28, %v28 2027; CHECK-NEXT: vldeb %v1, %v1 2028; CHECK-NEXT: vldeb %v2, %v2 2029; CHECK-NEXT: vfchdb %v1, %v2, %v1 2030; CHECK-NEXT: vpkg %v0, %v1, %v0 2031; CHECK-NEXT: vceqb %v1, %v24, %v26 2032; CHECK-NEXT: vpkf %v0, %v0, %v0 2033; CHECK-NEXT: vuphb %v1, %v1 2034; CHECK-NEXT: vo %v0, %v1, %v0 2035; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2036; CHECK-NEXT: br %r14 2037 %cmp0 = icmp eq <2 x i8> %val1, %val2 2038 %cmp1 = fcmp ogt <2 x float> %val3, %val4 2039 %and = or <2 x i1> %cmp0, %cmp1 2040 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 2041 ret <2 x i16> %sel 2042} 2043 2044define <2 x i64> @fun71(<2 x i8> %val1, <2 x i8> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i64> %val5, <2 x i64> %val6) { 2045; CHECK-LABEL: fun71: 2046; CHECK: # BB#0: 2047; CHECK-NEXT: vceqb %v1, %v24, %v26 2048; CHECK-NEXT: vuphb %v1, %v1 2049; CHECK-NEXT: vuphh %v1, %v1 2050; CHECK-NEXT: vfchdb %v0, %v28, %v30 2051; CHECK-NEXT: vuphf %v1, %v1 2052; CHECK-NEXT: vo %v0, %v1, %v0 2053; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2054; CHECK-NEXT: br %r14 2055 %cmp0 = icmp eq <2 x i8> %val1, %val2 2056 %cmp1 = fcmp ogt <2 x double> %val3, %val4 2057 %and = or <2 x i1> %cmp0, %cmp1 2058 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 2059 ret <2 x i64> %sel 2060} 2061 2062define <2 x i8> @fun72(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) { 2063; CHECK-LABEL: fun72: 2064; CHECK: # BB#0: 2065; CHECK-NEXT: vceqh %v0, %v28, %v30 2066; CHECK-NEXT: vceqh %v1, %v24, %v26 2067; CHECK-NEXT: vo %v0, %v1, %v0 2068; CHECK-NEXT: vpkh %v0, %v0, %v0 2069; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2070; CHECK-NEXT: br %r14 2071 %cmp0 = icmp eq <2 x i16> %val1, %val2 2072 %cmp1 = icmp eq <2 x i16> %val3, %val4 2073 %and = or <2 x i1> %cmp0, %cmp1 2074 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 2075 ret <2 x i8> %sel 2076} 2077 2078define <2 x i16> @fun73(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i16> %val5, <2 x i16> %val6) { 2079; CHECK-LABEL: fun73: 2080; CHECK: # BB#0: 2081; CHECK-NEXT: vceqh %v0, %v28, %v30 2082; CHECK-NEXT: vceqh %v1, %v24, %v26 2083; CHECK-NEXT: vo %v0, %v1, %v0 2084; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2085; CHECK-NEXT: br %r14 2086 %cmp0 = icmp eq <2 x i16> %val1, %val2 2087 %cmp1 = icmp eq <2 x i16> %val3, %val4 2088 %and = or <2 x i1> %cmp0, %cmp1 2089 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 2090 ret <2 x i16> %sel 2091} 2092 2093define <2 x i32> @fun74(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i32> %val5, <2 x i32> %val6) { 2094; CHECK-LABEL: fun74: 2095; CHECK: # BB#0: 2096; CHECK-NEXT: vceqh %v0, %v28, %v30 2097; CHECK-NEXT: vceqh %v1, %v24, %v26 2098; CHECK-NEXT: vo %v0, %v1, %v0 2099; CHECK-NEXT: vuphh %v0, %v0 2100; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2101; CHECK-NEXT: br %r14 2102 %cmp0 = icmp eq <2 x i16> %val1, %val2 2103 %cmp1 = icmp eq <2 x i16> %val3, %val4 2104 %and = or <2 x i1> %cmp0, %cmp1 2105 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 2106 ret <2 x i32> %sel 2107} 2108 2109define <2 x i8> @fun75(<2 x i16> %val1, <2 x i16> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i8> %val5, <2 x i8> %val6) { 2110; CHECK-LABEL: fun75: 2111; CHECK: # BB#0: 2112; CHECK-NEXT: vceqf %v1, %v28, %v30 2113; CHECK-NEXT: vceqh %v0, %v24, %v26 2114; CHECK-NEXT: vpkf %v1, %v1, %v1 2115; CHECK-NEXT: vo %v0, %v0, %v1 2116; CHECK-NEXT: vpkh %v0, %v0, %v0 2117; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2118; CHECK-NEXT: br %r14 2119 %cmp0 = icmp eq <2 x i16> %val1, %val2 2120 %cmp1 = icmp eq <2 x i32> %val3, %val4 2121 %and = or <2 x i1> %cmp0, %cmp1 2122 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 2123 ret <2 x i8> %sel 2124} 2125 2126define <2 x i8> @fun76(<2 x i16> %val1, <2 x i16> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i8> %val5, <2 x i8> %val6) { 2127; CHECK-LABEL: fun76: 2128; CHECK: # BB#0: 2129; CHECK-NEXT: larl %r1, .LCPI76_0 2130; CHECK-NEXT: vl %v1, 0(%r1) 2131; CHECK-NEXT: vceqg %v0, %v28, %v30 2132; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 2133; CHECK-NEXT: vceqh %v1, %v24, %v26 2134; CHECK-NEXT: vo %v0, %v1, %v0 2135; CHECK-NEXT: vpkh %v0, %v0, %v0 2136; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2137; CHECK-NEXT: br %r14 2138 %cmp0 = icmp eq <2 x i16> %val1, %val2 2139 %cmp1 = icmp eq <2 x i64> %val3, %val4 2140 %and = or <2 x i1> %cmp0, %cmp1 2141 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 2142 ret <2 x i8> %sel 2143} 2144 2145define <2 x double> @fun77(<2 x i16> %val1, <2 x i16> %val2, <2 x float> %val3, <2 x float> %val4, <2 x double> %val5, <2 x double> %val6) { 2146; CHECK-LABEL: fun77: 2147; CHECK: # BB#0: 2148; CHECK-NEXT: vmrlf %v0, %v30, %v30 2149; CHECK-NEXT: vmrlf %v1, %v28, %v28 2150; CHECK-NEXT: vldeb %v0, %v0 2151; CHECK-NEXT: vldeb %v1, %v1 2152; CHECK-NEXT: vfchdb %v0, %v1, %v0 2153; CHECK-NEXT: vmrhf %v1, %v30, %v30 2154; CHECK-NEXT: vmrhf %v2, %v28, %v28 2155; CHECK-NEXT: vldeb %v1, %v1 2156; CHECK-NEXT: vldeb %v2, %v2 2157; CHECK-NEXT: vfchdb %v1, %v2, %v1 2158; CHECK-NEXT: vpkg %v0, %v1, %v0 2159; CHECK-NEXT: vceqh %v1, %v24, %v26 2160; CHECK-NEXT: vuphh %v1, %v1 2161; CHECK-NEXT: vo %v0, %v1, %v0 2162; CHECK-NEXT: vuphf %v0, %v0 2163; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2164; CHECK-NEXT: br %r14 2165 %cmp0 = icmp eq <2 x i16> %val1, %val2 2166 %cmp1 = fcmp ogt <2 x float> %val3, %val4 2167 %and = or <2 x i1> %cmp0, %cmp1 2168 %sel = select <2 x i1> %and, <2 x double> %val5, <2 x double> %val6 2169 ret <2 x double> %sel 2170} 2171 2172define <2 x i16> @fun78(<2 x i16> %val1, <2 x i16> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) { 2173; CHECK-LABEL: fun78: 2174; CHECK: # BB#0: 2175; CHECK-NEXT: larl %r1, .LCPI78_0 2176; CHECK-NEXT: vl %v1, 0(%r1) 2177; CHECK-NEXT: vfchdb %v0, %v28, %v30 2178; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 2179; CHECK-NEXT: vceqh %v1, %v24, %v26 2180; CHECK-NEXT: vo %v0, %v1, %v0 2181; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2182; CHECK-NEXT: br %r14 2183 %cmp0 = icmp eq <2 x i16> %val1, %val2 2184 %cmp1 = fcmp ogt <2 x double> %val3, %val4 2185 %and = or <2 x i1> %cmp0, %cmp1 2186 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 2187 ret <2 x i16> %sel 2188} 2189 2190define <2 x i16> @fun79(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i16> %val5, <2 x i16> %val6) { 2191; CHECK-LABEL: fun79: 2192; CHECK: # BB#0: 2193; CHECK-NEXT: vceqf %v0, %v28, %v30 2194; CHECK-NEXT: vceqf %v1, %v24, %v26 2195; CHECK-NEXT: vo %v0, %v1, %v0 2196; CHECK-NEXT: vpkf %v0, %v0, %v0 2197; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2198; CHECK-NEXT: br %r14 2199 %cmp0 = icmp eq <2 x i32> %val1, %val2 2200 %cmp1 = icmp eq <2 x i32> %val3, %val4 2201 %and = or <2 x i1> %cmp0, %cmp1 2202 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 2203 ret <2 x i16> %sel 2204} 2205 2206define <2 x i32> @fun80(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) { 2207; CHECK-LABEL: fun80: 2208; CHECK: # BB#0: 2209; CHECK-NEXT: vceqf %v0, %v28, %v30 2210; CHECK-NEXT: vceqf %v1, %v24, %v26 2211; CHECK-NEXT: vo %v0, %v1, %v0 2212; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2213; CHECK-NEXT: br %r14 2214 %cmp0 = icmp eq <2 x i32> %val1, %val2 2215 %cmp1 = icmp eq <2 x i32> %val3, %val4 2216 %and = or <2 x i1> %cmp0, %cmp1 2217 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 2218 ret <2 x i32> %sel 2219} 2220 2221define <2 x i64> @fun81(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i64> %val5, <2 x i64> %val6) { 2222; CHECK-LABEL: fun81: 2223; CHECK: # BB#0: 2224; CHECK-NEXT: vceqf %v0, %v28, %v30 2225; CHECK-NEXT: vceqf %v1, %v24, %v26 2226; CHECK-NEXT: vo %v0, %v1, %v0 2227; CHECK-NEXT: vuphf %v0, %v0 2228; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2229; CHECK-NEXT: br %r14 2230 %cmp0 = icmp eq <2 x i32> %val1, %val2 2231 %cmp1 = icmp eq <2 x i32> %val3, %val4 2232 %and = or <2 x i1> %cmp0, %cmp1 2233 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 2234 ret <2 x i64> %sel 2235} 2236 2237define <2 x i64> @fun82(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) { 2238; CHECK-LABEL: fun82: 2239; CHECK: # BB#0: 2240; CHECK-NEXT: vceqf %v1, %v24, %v26 2241; CHECK-NEXT: vceqg %v0, %v28, %v30 2242; CHECK-NEXT: vuphf %v1, %v1 2243; CHECK-NEXT: vo %v0, %v1, %v0 2244; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2245; CHECK-NEXT: br %r14 2246 %cmp0 = icmp eq <2 x i32> %val1, %val2 2247 %cmp1 = icmp eq <2 x i64> %val3, %val4 2248 %and = or <2 x i1> %cmp0, %cmp1 2249 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 2250 ret <2 x i64> %sel 2251} 2252 2253define <2 x i16> @fun83(<2 x i32> %val1, <2 x i32> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) { 2254; CHECK-LABEL: fun83: 2255; CHECK: # BB#0: 2256; CHECK-NEXT: vmrlf %v0, %v30, %v30 2257; CHECK-NEXT: vmrlf %v1, %v28, %v28 2258; CHECK-NEXT: vldeb %v0, %v0 2259; CHECK-NEXT: vldeb %v1, %v1 2260; CHECK-NEXT: vfchdb %v0, %v1, %v0 2261; CHECK-NEXT: vmrhf %v1, %v30, %v30 2262; CHECK-NEXT: vmrhf %v2, %v28, %v28 2263; CHECK-NEXT: vldeb %v1, %v1 2264; CHECK-NEXT: vldeb %v2, %v2 2265; CHECK-NEXT: vfchdb %v1, %v2, %v1 2266; CHECK-NEXT: vpkg %v0, %v1, %v0 2267; CHECK-NEXT: vceqf %v1, %v24, %v26 2268; CHECK-NEXT: vo %v0, %v1, %v0 2269; CHECK-NEXT: vpkf %v0, %v0, %v0 2270; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2271; CHECK-NEXT: br %r14 2272 %cmp0 = icmp eq <2 x i32> %val1, %val2 2273 %cmp1 = fcmp ogt <2 x float> %val3, %val4 2274 %and = or <2 x i1> %cmp0, %cmp1 2275 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 2276 ret <2 x i16> %sel 2277} 2278 2279define <2 x float> @fun84(<2 x i32> %val1, <2 x i32> %val2, <2 x double> %val3, <2 x double> %val4, <2 x float> %val5, <2 x float> %val6) { 2280; CHECK-LABEL: fun84: 2281; CHECK: # BB#0: 2282; CHECK-NEXT: vfchdb %v1, %v28, %v30 2283; CHECK-NEXT: vceqf %v0, %v24, %v26 2284; CHECK-NEXT: vpkg %v1, %v1, %v1 2285; CHECK-NEXT: vo %v0, %v0, %v1 2286; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2287; CHECK-NEXT: br %r14 2288 %cmp0 = icmp eq <2 x i32> %val1, %val2 2289 %cmp1 = fcmp ogt <2 x double> %val3, %val4 2290 %and = or <2 x i1> %cmp0, %cmp1 2291 %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6 2292 ret <2 x float> %sel 2293} 2294 2295define <2 x i16> @fun85(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i16> %val5, <2 x i16> %val6) { 2296; CHECK-LABEL: fun85: 2297; CHECK: # BB#0: 2298; CHECK-NEXT: vceqg %v0, %v28, %v30 2299; CHECK-NEXT: vceqg %v1, %v24, %v26 2300; CHECK-NEXT: larl %r1, .LCPI85_0 2301; CHECK-NEXT: vo %v0, %v1, %v0 2302; CHECK-NEXT: vl %v1, 0(%r1) 2303; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 2304; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2305; CHECK-NEXT: br %r14 2306 %cmp0 = icmp eq <2 x i64> %val1, %val2 2307 %cmp1 = icmp eq <2 x i64> %val3, %val4 2308 %and = or <2 x i1> %cmp0, %cmp1 2309 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 2310 ret <2 x i16> %sel 2311} 2312 2313define <2 x i64> @fun86(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) { 2314; CHECK-LABEL: fun86: 2315; CHECK: # BB#0: 2316; CHECK-NEXT: vceqg %v0, %v28, %v30 2317; CHECK-NEXT: vceqg %v1, %v24, %v26 2318; CHECK-NEXT: vo %v0, %v1, %v0 2319; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2320; CHECK-NEXT: br %r14 2321 %cmp0 = icmp eq <2 x i64> %val1, %val2 2322 %cmp1 = icmp eq <2 x i64> %val3, %val4 2323 %and = or <2 x i1> %cmp0, %cmp1 2324 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 2325 ret <2 x i64> %sel 2326} 2327 2328define <2 x i64> @fun87(<2 x i64> %val1, <2 x i64> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i64> %val5, <2 x i64> %val6) { 2329; CHECK-LABEL: fun87: 2330; CHECK: # BB#0: 2331; CHECK-NEXT: vmrlf %v0, %v30, %v30 2332; CHECK-NEXT: vmrlf %v1, %v28, %v28 2333; CHECK-NEXT: vldeb %v0, %v0 2334; CHECK-NEXT: vldeb %v1, %v1 2335; CHECK-NEXT: vfchdb %v0, %v1, %v0 2336; CHECK-NEXT: vmrhf %v1, %v30, %v30 2337; CHECK-NEXT: vmrhf %v2, %v28, %v28 2338; CHECK-NEXT: vldeb %v1, %v1 2339; CHECK-NEXT: vldeb %v2, %v2 2340; CHECK-NEXT: vfchdb %v1, %v2, %v1 2341; CHECK-NEXT: vpkg %v0, %v1, %v0 2342; CHECK-NEXT: vuphf %v0, %v0 2343; CHECK-NEXT: vceqg %v1, %v24, %v26 2344; CHECK-NEXT: vo %v0, %v1, %v0 2345; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2346; CHECK-NEXT: br %r14 2347 %cmp0 = icmp eq <2 x i64> %val1, %val2 2348 %cmp1 = fcmp ogt <2 x float> %val3, %val4 2349 %and = or <2 x i1> %cmp0, %cmp1 2350 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 2351 ret <2 x i64> %sel 2352} 2353 2354define <2 x i16> @fun88(<2 x i64> %val1, <2 x i64> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) { 2355; CHECK-LABEL: fun88: 2356; CHECK: # BB#0: 2357; CHECK-NEXT: vfchdb %v0, %v28, %v30 2358; CHECK-NEXT: vceqg %v1, %v24, %v26 2359; CHECK-NEXT: larl %r1, .LCPI88_0 2360; CHECK-NEXT: vo %v0, %v1, %v0 2361; CHECK-NEXT: vl %v1, 0(%r1) 2362; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 2363; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2364; CHECK-NEXT: br %r14 2365 %cmp0 = icmp eq <2 x i64> %val1, %val2 2366 %cmp1 = fcmp ogt <2 x double> %val3, %val4 2367 %and = or <2 x i1> %cmp0, %cmp1 2368 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 2369 ret <2 x i16> %sel 2370} 2371 2372define <2 x float> @fun89(<2 x float> %val1, <2 x float> %val2, <2 x float> %val3, <2 x float> %val4, <2 x float> %val5, <2 x float> %val6) { 2373; CHECK-LABEL: fun89: 2374; CHECK: # BB#0: 2375; CHECK-NEXT: vmrlf %v0, %v30, %v30 2376; CHECK-NEXT: vmrlf %v1, %v28, %v28 2377; CHECK-NEXT: vldeb %v0, %v0 2378; CHECK-NEXT: vldeb %v1, %v1 2379; CHECK-NEXT: vfchdb %v0, %v1, %v0 2380; CHECK-NEXT: vmrhf %v1, %v30, %v30 2381; CHECK-NEXT: vmrhf %v2, %v28, %v28 2382; CHECK-NEXT: vldeb %v1, %v1 2383; CHECK-NEXT: vmrhf %v3, %v24, %v24 2384; CHECK-NEXT: vldeb %v2, %v2 2385; CHECK-NEXT: vfchdb %v1, %v2, %v1 2386; CHECK-NEXT: vpkg %v0, %v1, %v0 2387; CHECK-NEXT: vmrlf %v1, %v26, %v26 2388; CHECK-NEXT: vmrlf %v2, %v24, %v24 2389; CHECK-NEXT: vldeb %v1, %v1 2390; CHECK-NEXT: vldeb %v2, %v2 2391; CHECK-NEXT: vfchdb %v1, %v2, %v1 2392; CHECK-NEXT: vmrhf %v2, %v26, %v26 2393; CHECK-NEXT: vldeb %v2, %v2 2394; CHECK-NEXT: vldeb %v3, %v3 2395; CHECK-NEXT: vfchdb %v2, %v3, %v2 2396; CHECK-NEXT: vpkg %v1, %v2, %v1 2397; CHECK-NEXT: vo %v0, %v1, %v0 2398; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2399; CHECK-NEXT: br %r14 2400 %cmp0 = fcmp ogt <2 x float> %val1, %val2 2401 %cmp1 = fcmp ogt <2 x float> %val3, %val4 2402 %and = or <2 x i1> %cmp0, %cmp1 2403 %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6 2404 ret <2 x float> %sel 2405} 2406 2407define <2 x i32> @fun90(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i32> %val5, <2 x i32> %val6) { 2408; CHECK-LABEL: fun90: 2409; CHECK: # BB#0: 2410; CHECK-NEXT: vmrlf %v0, %v26, %v26 2411; CHECK-NEXT: vmrlf %v1, %v24, %v24 2412; CHECK-NEXT: vldeb %v0, %v0 2413; CHECK-NEXT: vldeb %v1, %v1 2414; CHECK-NEXT: vfchdb %v0, %v1, %v0 2415; CHECK-NEXT: vmrhf %v1, %v26, %v26 2416; CHECK-NEXT: vmrhf %v2, %v24, %v24 2417; CHECK-NEXT: vldeb %v1, %v1 2418; CHECK-NEXT: vldeb %v2, %v2 2419; CHECK-NEXT: vfchdb %v1, %v2, %v1 2420; CHECK-NEXT: vpkg %v0, %v1, %v0 2421; CHECK-NEXT: vfchdb %v1, %v28, %v30 2422; CHECK-NEXT: vpkg %v1, %v1, %v1 2423; CHECK-NEXT: vo %v0, %v0, %v1 2424; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2425; CHECK-NEXT: br %r14 2426 %cmp0 = fcmp ogt <2 x float> %val1, %val2 2427 %cmp1 = fcmp ogt <2 x double> %val3, %val4 2428 %and = or <2 x i1> %cmp0, %cmp1 2429 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 2430 ret <2 x i32> %sel 2431} 2432 2433define <4 x i16> @fun91(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i16> %val5, <4 x i16> %val6) { 2434; CHECK-LABEL: fun91: 2435; CHECK: # BB#0: 2436; CHECK-NEXT: vceqf %v0, %v28, %v30 2437; CHECK-NEXT: vceqf %v1, %v24, %v26 2438; CHECK-NEXT: vo %v0, %v1, %v0 2439; CHECK-NEXT: vpkf %v0, %v0, %v0 2440; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2441; CHECK-NEXT: br %r14 2442 %cmp0 = icmp eq <4 x i32> %val1, %val2 2443 %cmp1 = icmp eq <4 x i32> %val3, %val4 2444 %and = or <4 x i1> %cmp0, %cmp1 2445 %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6 2446 ret <4 x i16> %sel 2447} 2448 2449define <4 x i32> @fun92(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i32> %val5, <4 x i32> %val6) { 2450; CHECK-LABEL: fun92: 2451; CHECK: # BB#0: 2452; CHECK-NEXT: vceqf %v0, %v28, %v30 2453; CHECK-NEXT: vceqf %v1, %v24, %v26 2454; CHECK-NEXT: vo %v0, %v1, %v0 2455; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2456; CHECK-NEXT: br %r14 2457 %cmp0 = icmp eq <4 x i32> %val1, %val2 2458 %cmp1 = icmp eq <4 x i32> %val3, %val4 2459 %and = or <4 x i1> %cmp0, %cmp1 2460 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 2461 ret <4 x i32> %sel 2462} 2463 2464define <4 x i64> @fun93(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i64> %val5, <4 x i64> %val6) { 2465; CHECK-LABEL: fun93: 2466; CHECK: # BB#0: 2467; CHECK-NEXT: vceqf %v0, %v28, %v30 2468; CHECK-NEXT: vceqf %v1, %v24, %v26 2469; CHECK-NEXT: vo %v0, %v1, %v0 2470; CHECK-NEXT: vuphf %v1, %v0 2471; CHECK-NEXT: vmrlg %v0, %v0, %v0 2472; CHECK-NEXT: vuphf %v0, %v0 2473; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 2474; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 2475; CHECK-NEXT: br %r14 2476 %cmp0 = icmp eq <4 x i32> %val1, %val2 2477 %cmp1 = icmp eq <4 x i32> %val3, %val4 2478 %and = or <4 x i1> %cmp0, %cmp1 2479 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 2480 ret <4 x i64> %sel 2481} 2482 2483define <4 x i32> @fun94(<4 x i32> %val1, <4 x i32> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) { 2484; CHECK-LABEL: fun94: 2485; CHECK: # BB#0: 2486; CHECK-NEXT: vceqg %v0, %v30, %v27 2487; CHECK-NEXT: vceqg %v1, %v28, %v25 2488; CHECK-NEXT: vpkg %v0, %v1, %v0 2489; CHECK-NEXT: vceqf %v1, %v24, %v26 2490; CHECK-NEXT: vo %v0, %v1, %v0 2491; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 2492; CHECK-NEXT: br %r14 2493 %cmp0 = icmp eq <4 x i32> %val1, %val2 2494 %cmp1 = icmp eq <4 x i64> %val3, %val4 2495 %and = or <4 x i1> %cmp0, %cmp1 2496 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 2497 ret <4 x i32> %sel 2498} 2499 2500define <4 x i16> @fun95(<4 x i32> %val1, <4 x i32> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) { 2501; CHECK-LABEL: fun95: 2502; CHECK: # BB#0: 2503; CHECK-NEXT: vmrlf %v0, %v30, %v30 2504; CHECK-NEXT: vmrlf %v1, %v28, %v28 2505; CHECK-NEXT: vldeb %v0, %v0 2506; CHECK-NEXT: vldeb %v1, %v1 2507; CHECK-NEXT: vfchdb %v0, %v1, %v0 2508; CHECK-NEXT: vmrhf %v1, %v30, %v30 2509; CHECK-NEXT: vmrhf %v2, %v28, %v28 2510; CHECK-NEXT: vldeb %v1, %v1 2511; CHECK-NEXT: vldeb %v2, %v2 2512; CHECK-NEXT: vfchdb %v1, %v2, %v1 2513; CHECK-NEXT: vpkg %v0, %v1, %v0 2514; CHECK-NEXT: vceqf %v1, %v24, %v26 2515; CHECK-NEXT: vo %v0, %v1, %v0 2516; CHECK-NEXT: vpkf %v0, %v0, %v0 2517; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2518; CHECK-NEXT: br %r14 2519 %cmp0 = icmp eq <4 x i32> %val1, %val2 2520 %cmp1 = fcmp ogt <4 x float> %val3, %val4 2521 %and = or <4 x i1> %cmp0, %cmp1 2522 %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6 2523 ret <4 x i16> %sel 2524} 2525 2526define <4 x i8> @fun96(<4 x i32> %val1, <4 x i32> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) { 2527; CHECK-LABEL: fun96: 2528; CHECK: # BB#0: 2529; CHECK-NEXT: vfchdb %v0, %v30, %v27 2530; CHECK-NEXT: vfchdb %v1, %v28, %v25 2531; CHECK-NEXT: vpkg %v0, %v1, %v0 2532; CHECK-NEXT: vceqf %v1, %v24, %v26 2533; CHECK-NEXT: larl %r1, .LCPI96_0 2534; CHECK-NEXT: vo %v0, %v1, %v0 2535; CHECK-NEXT: vl %v1, 0(%r1) 2536; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 2537; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 2538; CHECK-NEXT: br %r14 2539 %cmp0 = icmp eq <4 x i32> %val1, %val2 2540 %cmp1 = fcmp ogt <4 x double> %val3, %val4 2541 %and = or <4 x i1> %cmp0, %cmp1 2542 %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6 2543 ret <4 x i8> %sel 2544} 2545 2546define <4 x i32> @fun97(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) { 2547; CHECK-LABEL: fun97: 2548; CHECK: # BB#0: 2549; CHECK-NEXT: vceqg %v0, %v27, %v31 2550; CHECK-NEXT: vceqg %v1, %v26, %v30 2551; CHECK-NEXT: vo %v0, %v1, %v0 2552; CHECK-NEXT: vceqg %v1, %v25, %v29 2553; CHECK-NEXT: vceqg %v2, %v24, %v28 2554; CHECK-NEXT: vo %v1, %v2, %v1 2555; CHECK-NEXT: vpkg %v0, %v1, %v0 2556; CHECK-NEXT: vl %v1, 176(%r15) 2557; CHECK-NEXT: vl %v2, 160(%r15) 2558; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2559; CHECK-NEXT: br %r14 2560 %cmp0 = icmp eq <4 x i64> %val1, %val2 2561 %cmp1 = icmp eq <4 x i64> %val3, %val4 2562 %and = or <4 x i1> %cmp0, %cmp1 2563 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 2564 ret <4 x i32> %sel 2565} 2566 2567define <4 x i64> @fun98(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i64> %val5, <4 x i64> %val6) { 2568; CHECK-LABEL: fun98: 2569; CHECK: # BB#0: 2570; CHECK-NEXT: vceqg %v0, %v25, %v29 2571; CHECK-NEXT: vceqg %v1, %v24, %v28 2572; CHECK-NEXT: vo %v0, %v1, %v0 2573; CHECK-NEXT: vl %v1, 192(%r15) 2574; CHECK-NEXT: vl %v2, 160(%r15) 2575; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2576; CHECK-NEXT: vceqg %v0, %v27, %v31 2577; CHECK-NEXT: vceqg %v1, %v26, %v30 2578; CHECK-NEXT: vo %v0, %v1, %v0 2579; CHECK-NEXT: vl %v1, 208(%r15) 2580; CHECK-NEXT: vl %v2, 176(%r15) 2581; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 2582; CHECK-NEXT: br %r14 2583 %cmp0 = icmp eq <4 x i64> %val1, %val2 2584 %cmp1 = icmp eq <4 x i64> %val3, %val4 2585 %and = or <4 x i1> %cmp0, %cmp1 2586 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 2587 ret <4 x i64> %sel 2588} 2589 2590define <4 x i64> @fun99(<4 x i64> %val1, <4 x i64> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i64> %val5, <4 x i64> %val6) { 2591; CHECK-LABEL: fun99: 2592; CHECK: # BB#0: 2593; CHECK-NEXT: vmrlf %v0, %v27, %v27 2594; CHECK-NEXT: vmrlf %v1, %v25, %v25 2595; CHECK-NEXT: vldeb %v0, %v0 2596; CHECK-NEXT: vldeb %v1, %v1 2597; CHECK-NEXT: vfchdb %v0, %v1, %v0 2598; CHECK-NEXT: vmrhf %v1, %v27, %v27 2599; CHECK-NEXT: vmrhf %v2, %v25, %v25 2600; CHECK-NEXT: vldeb %v1, %v1 2601; CHECK-NEXT: vldeb %v2, %v2 2602; CHECK-NEXT: vfchdb %v1, %v2, %v1 2603; CHECK-NEXT: vpkg %v0, %v1, %v0 2604; CHECK-NEXT: vuphf %v1, %v0 2605; CHECK-NEXT: vceqg %v2, %v24, %v28 2606; CHECK-NEXT: vo %v1, %v2, %v1 2607; CHECK-NEXT: vl %v2, 160(%r15) 2608; CHECK-NEXT: vmrlg %v0, %v0, %v0 2609; CHECK-NEXT: vsel %v24, %v29, %v2, %v1 2610; CHECK-NEXT: vuphf %v0, %v0 2611; CHECK-NEXT: vceqg %v1, %v26, %v30 2612; CHECK-NEXT: vo %v0, %v1, %v0 2613; CHECK-NEXT: vl %v1, 176(%r15) 2614; CHECK-NEXT: vsel %v26, %v31, %v1, %v0 2615; CHECK-NEXT: br %r14 2616 %cmp0 = icmp eq <4 x i64> %val1, %val2 2617 %cmp1 = fcmp ogt <4 x float> %val3, %val4 2618 %and = or <4 x i1> %cmp0, %cmp1 2619 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 2620 ret <4 x i64> %sel 2621} 2622 2623define <4 x float> @fun100(<4 x i64> %val1, <4 x i64> %val2, <4 x double> %val3, <4 x double> %val4, <4 x float> %val5, <4 x float> %val6) { 2624; CHECK-LABEL: fun100: 2625; CHECK: # BB#0: 2626; CHECK-NEXT: vfchdb %v0, %v27, %v31 2627; CHECK-NEXT: vceqg %v1, %v26, %v30 2628; CHECK-NEXT: vo %v0, %v1, %v0 2629; CHECK-NEXT: vfchdb %v1, %v25, %v29 2630; CHECK-NEXT: vceqg %v2, %v24, %v28 2631; CHECK-NEXT: vo %v1, %v2, %v1 2632; CHECK-NEXT: vpkg %v0, %v1, %v0 2633; CHECK-NEXT: vl %v1, 176(%r15) 2634; CHECK-NEXT: vl %v2, 160(%r15) 2635; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2636; CHECK-NEXT: br %r14 2637 %cmp0 = icmp eq <4 x i64> %val1, %val2 2638 %cmp1 = fcmp ogt <4 x double> %val3, %val4 2639 %and = or <4 x i1> %cmp0, %cmp1 2640 %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6 2641 ret <4 x float> %sel 2642} 2643 2644define <4 x i16> @fun101(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) { 2645; CHECK-LABEL: fun101: 2646; CHECK: # BB#0: 2647; CHECK-NEXT: vmrlf %v0, %v30, %v30 2648; CHECK-NEXT: vmrlf %v1, %v28, %v28 2649; CHECK-NEXT: vldeb %v0, %v0 2650; CHECK-NEXT: vldeb %v1, %v1 2651; CHECK-NEXT: vfchdb %v0, %v1, %v0 2652; CHECK-NEXT: vmrhf %v1, %v30, %v30 2653; CHECK-NEXT: vmrhf %v2, %v28, %v28 2654; CHECK-NEXT: vldeb %v1, %v1 2655; CHECK-NEXT: vmrhf %v3, %v24, %v24 2656; CHECK-NEXT: vldeb %v2, %v2 2657; CHECK-NEXT: vfchdb %v1, %v2, %v1 2658; CHECK-NEXT: vpkg %v0, %v1, %v0 2659; CHECK-NEXT: vmrlf %v1, %v26, %v26 2660; CHECK-NEXT: vmrlf %v2, %v24, %v24 2661; CHECK-NEXT: vldeb %v1, %v1 2662; CHECK-NEXT: vldeb %v2, %v2 2663; CHECK-NEXT: vfchdb %v1, %v2, %v1 2664; CHECK-NEXT: vmrhf %v2, %v26, %v26 2665; CHECK-NEXT: vldeb %v2, %v2 2666; CHECK-NEXT: vldeb %v3, %v3 2667; CHECK-NEXT: vfchdb %v2, %v3, %v2 2668; CHECK-NEXT: vpkg %v1, %v2, %v1 2669; CHECK-NEXT: vo %v0, %v1, %v0 2670; CHECK-NEXT: vpkf %v0, %v0, %v0 2671; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2672; CHECK-NEXT: br %r14 2673 %cmp0 = fcmp ogt <4 x float> %val1, %val2 2674 %cmp1 = fcmp ogt <4 x float> %val3, %val4 2675 %and = or <4 x i1> %cmp0, %cmp1 2676 %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6 2677 ret <4 x i16> %sel 2678} 2679 2680define <4 x float> @fun102(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x float> %val5, <4 x float> %val6) { 2681; CHECK-LABEL: fun102: 2682; CHECK: # BB#0: 2683; CHECK-NEXT: vmrlf %v0, %v30, %v30 2684; CHECK-NEXT: vmrlf %v1, %v28, %v28 2685; CHECK-NEXT: vldeb %v0, %v0 2686; CHECK-NEXT: vldeb %v1, %v1 2687; CHECK-NEXT: vfchdb %v0, %v1, %v0 2688; CHECK-NEXT: vmrhf %v1, %v30, %v30 2689; CHECK-NEXT: vmrhf %v2, %v28, %v28 2690; CHECK-NEXT: vldeb %v1, %v1 2691; CHECK-NEXT: vmrhf %v3, %v24, %v24 2692; CHECK-NEXT: vldeb %v2, %v2 2693; CHECK-NEXT: vfchdb %v1, %v2, %v1 2694; CHECK-NEXT: vpkg %v0, %v1, %v0 2695; CHECK-NEXT: vmrlf %v1, %v26, %v26 2696; CHECK-NEXT: vmrlf %v2, %v24, %v24 2697; CHECK-NEXT: vldeb %v1, %v1 2698; CHECK-NEXT: vldeb %v2, %v2 2699; CHECK-NEXT: vfchdb %v1, %v2, %v1 2700; CHECK-NEXT: vmrhf %v2, %v26, %v26 2701; CHECK-NEXT: vldeb %v2, %v2 2702; CHECK-NEXT: vldeb %v3, %v3 2703; CHECK-NEXT: vfchdb %v2, %v3, %v2 2704; CHECK-NEXT: vpkg %v1, %v2, %v1 2705; CHECK-NEXT: vo %v0, %v1, %v0 2706; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2707; CHECK-NEXT: br %r14 2708 %cmp0 = fcmp ogt <4 x float> %val1, %val2 2709 %cmp1 = fcmp ogt <4 x float> %val3, %val4 2710 %and = or <4 x i1> %cmp0, %cmp1 2711 %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6 2712 ret <4 x float> %sel 2713} 2714 2715define <4 x double> @fun103(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x double> %val5, <4 x double> %val6) { 2716; CHECK-LABEL: fun103: 2717; CHECK: # BB#0: 2718; CHECK-NEXT: vmrlf %v0, %v30, %v30 2719; CHECK-NEXT: vmrlf %v1, %v28, %v28 2720; CHECK-NEXT: vldeb %v0, %v0 2721; CHECK-NEXT: vldeb %v1, %v1 2722; CHECK-NEXT: vfchdb %v0, %v1, %v0 2723; CHECK-NEXT: vmrhf %v1, %v30, %v30 2724; CHECK-NEXT: vmrhf %v2, %v28, %v28 2725; CHECK-NEXT: vldeb %v1, %v1 2726; CHECK-NEXT: vmrhf %v3, %v24, %v24 2727; CHECK-NEXT: vldeb %v2, %v2 2728; CHECK-NEXT: vfchdb %v1, %v2, %v1 2729; CHECK-NEXT: vpkg %v0, %v1, %v0 2730; CHECK-NEXT: vmrlf %v1, %v26, %v26 2731; CHECK-NEXT: vmrlf %v2, %v24, %v24 2732; CHECK-NEXT: vldeb %v1, %v1 2733; CHECK-NEXT: vldeb %v2, %v2 2734; CHECK-NEXT: vfchdb %v1, %v2, %v1 2735; CHECK-NEXT: vmrhf %v2, %v26, %v26 2736; CHECK-NEXT: vldeb %v2, %v2 2737; CHECK-NEXT: vldeb %v3, %v3 2738; CHECK-NEXT: vfchdb %v2, %v3, %v2 2739; CHECK-NEXT: vpkg %v1, %v2, %v1 2740; CHECK-NEXT: vo %v0, %v1, %v0 2741; CHECK-NEXT: vuphf %v1, %v0 2742; CHECK-NEXT: vmrlg %v0, %v0, %v0 2743; CHECK-NEXT: vuphf %v0, %v0 2744; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 2745; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 2746; CHECK-NEXT: br %r14 2747 %cmp0 = fcmp ogt <4 x float> %val1, %val2 2748 %cmp1 = fcmp ogt <4 x float> %val3, %val4 2749 %and = or <4 x i1> %cmp0, %cmp1 2750 %sel = select <4 x i1> %and, <4 x double> %val5, <4 x double> %val6 2751 ret <4 x double> %sel 2752} 2753 2754define <4 x i8> @fun104(<4 x float> %val1, <4 x float> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) { 2755; CHECK-LABEL: fun104: 2756; CHECK: # BB#0: 2757; CHECK-NEXT: vfchdb %v0, %v30, %v27 2758; CHECK-NEXT: vfchdb %v1, %v28, %v25 2759; CHECK-NEXT: vpkg %v0, %v1, %v0 2760; CHECK-NEXT: vmrlf %v1, %v26, %v26 2761; CHECK-NEXT: vmrlf %v2, %v24, %v24 2762; CHECK-NEXT: vldeb %v1, %v1 2763; CHECK-NEXT: vldeb %v2, %v2 2764; CHECK-NEXT: vfchdb %v1, %v2, %v1 2765; CHECK-NEXT: vmrhf %v2, %v26, %v26 2766; CHECK-NEXT: vmrhf %v3, %v24, %v24 2767; CHECK-NEXT: larl %r1, .LCPI104_0 2768; CHECK-NEXT: vldeb %v2, %v2 2769; CHECK-NEXT: vldeb %v3, %v3 2770; CHECK-NEXT: vfchdb %v2, %v3, %v2 2771; CHECK-NEXT: vpkg %v1, %v2, %v1 2772; CHECK-NEXT: vo %v0, %v1, %v0 2773; CHECK-NEXT: vl %v1, 0(%r1) 2774; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 2775; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 2776; CHECK-NEXT: br %r14 2777 %cmp0 = fcmp ogt <4 x float> %val1, %val2 2778 %cmp1 = fcmp ogt <4 x double> %val3, %val4 2779 %and = or <4 x i1> %cmp0, %cmp1 2780 %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6 2781 ret <4 x i8> %sel 2782} 2783 2784define <8 x i8> @fun105(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i8> %val5, <8 x i8> %val6) { 2785; CHECK-LABEL: fun105: 2786; CHECK: # BB#0: 2787; CHECK-NEXT: vceqh %v0, %v28, %v30 2788; CHECK-NEXT: vceqh %v1, %v24, %v26 2789; CHECK-NEXT: vo %v0, %v1, %v0 2790; CHECK-NEXT: vpkh %v0, %v0, %v0 2791; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2792; CHECK-NEXT: br %r14 2793 %cmp0 = icmp eq <8 x i16> %val1, %val2 2794 %cmp1 = icmp eq <8 x i16> %val3, %val4 2795 %and = or <8 x i1> %cmp0, %cmp1 2796 %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6 2797 ret <8 x i8> %sel 2798} 2799 2800define <8 x i16> @fun106(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i16> %val5, <8 x i16> %val6) { 2801; CHECK-LABEL: fun106: 2802; CHECK: # BB#0: 2803; CHECK-NEXT: vceqh %v0, %v28, %v30 2804; CHECK-NEXT: vceqh %v1, %v24, %v26 2805; CHECK-NEXT: vo %v0, %v1, %v0 2806; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2807; CHECK-NEXT: br %r14 2808 %cmp0 = icmp eq <8 x i16> %val1, %val2 2809 %cmp1 = icmp eq <8 x i16> %val3, %val4 2810 %and = or <8 x i1> %cmp0, %cmp1 2811 %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6 2812 ret <8 x i16> %sel 2813} 2814 2815define <8 x i32> @fun107(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i32> %val5, <8 x i32> %val6) { 2816; CHECK-LABEL: fun107: 2817; CHECK: # BB#0: 2818; CHECK-NEXT: vceqh %v0, %v28, %v30 2819; CHECK-NEXT: vceqh %v1, %v24, %v26 2820; CHECK-NEXT: vo %v0, %v1, %v0 2821; CHECK-NEXT: vuphh %v1, %v0 2822; CHECK-NEXT: vmrlg %v0, %v0, %v0 2823; CHECK-NEXT: vuphh %v0, %v0 2824; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 2825; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 2826; CHECK-NEXT: br %r14 2827 %cmp0 = icmp eq <8 x i16> %val1, %val2 2828 %cmp1 = icmp eq <8 x i16> %val3, %val4 2829 %and = or <8 x i1> %cmp0, %cmp1 2830 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 2831 ret <8 x i32> %sel 2832} 2833 2834define <8 x i64> @fun108(<8 x i16> %val1, <8 x i16> %val2, <8 x i32> %val3, <8 x i32> %val4, <8 x i64> %val5, <8 x i64> %val6) { 2835; CHECK-LABEL: fun108: 2836; CHECK: # BB#0: 2837; CHECK-NEXT: vceqh %v1, %v24, %v26 2838; CHECK-NEXT: vceqf %v0, %v28, %v25 2839; CHECK-NEXT: vuphh %v2, %v1 2840; CHECK-NEXT: vo %v0, %v2, %v0 2841; CHECK-NEXT: vl %v3, 192(%r15) 2842; CHECK-NEXT: vuphf %v2, %v0 2843; CHECK-NEXT: vmrlg %v0, %v0, %v0 2844; CHECK-NEXT: vsel %v24, %v29, %v3, %v2 2845; CHECK-NEXT: vl %v2, 208(%r15) 2846; CHECK-NEXT: vuphf %v0, %v0 2847; CHECK-NEXT: vmrlg %v1, %v1, %v1 2848; CHECK-NEXT: vsel %v26, %v31, %v2, %v0 2849; CHECK-NEXT: vceqf %v0, %v30, %v27 2850; CHECK-NEXT: vuphh %v1, %v1 2851; CHECK-NEXT: vo %v0, %v1, %v0 2852; CHECK-NEXT: vl %v2, 224(%r15) 2853; CHECK-NEXT: vl %v3, 160(%r15) 2854; CHECK-NEXT: vuphf %v1, %v0 2855; CHECK-NEXT: vmrlg %v0, %v0, %v0 2856; CHECK-NEXT: vsel %v28, %v3, %v2, %v1 2857; CHECK-NEXT: vl %v1, 240(%r15) 2858; CHECK-NEXT: vl %v2, 176(%r15) 2859; CHECK-NEXT: vuphf %v0, %v0 2860; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 2861; CHECK-NEXT: br %r14 2862 %cmp0 = icmp eq <8 x i16> %val1, %val2 2863 %cmp1 = icmp eq <8 x i32> %val3, %val4 2864 %and = or <8 x i1> %cmp0, %cmp1 2865 %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6 2866 ret <8 x i64> %sel 2867} 2868 2869define <8 x i8> @fun109(<8 x i16> %val1, <8 x i16> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i8> %val5, <8 x i8> %val6) { 2870; CHECK-LABEL: fun109: 2871; CHECK: # BB#0: 2872; CHECK-NEXT: vl %v0, 176(%r15) 2873; CHECK-NEXT: vl %v1, 160(%r15) 2874; CHECK-NEXT: vceqg %v0, %v27, %v0 2875; CHECK-NEXT: vceqg %v1, %v25, %v1 2876; CHECK-NEXT: vpkg %v0, %v1, %v0 2877; CHECK-NEXT: vceqg %v1, %v30, %v31 2878; CHECK-NEXT: vceqg %v2, %v28, %v29 2879; CHECK-NEXT: vpkg %v1, %v2, %v1 2880; CHECK-NEXT: vpkf %v0, %v1, %v0 2881; CHECK-NEXT: vceqh %v1, %v24, %v26 2882; CHECK-NEXT: vo %v0, %v1, %v0 2883; CHECK-NEXT: vlrepg %v1, 200(%r15) 2884; CHECK-NEXT: vlrepg %v2, 192(%r15) 2885; CHECK-NEXT: vpkh %v0, %v0, %v0 2886; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2887; CHECK-NEXT: br %r14 2888 %cmp0 = icmp eq <8 x i16> %val1, %val2 2889 %cmp1 = icmp eq <8 x i64> %val3, %val4 2890 %and = or <8 x i1> %cmp0, %cmp1 2891 %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6 2892 ret <8 x i8> %sel 2893} 2894 2895define <8 x i16> @fun110(<8 x i16> %val1, <8 x i16> %val2, <8 x float> %val3, <8 x float> %val4, <8 x i16> %val5, <8 x i16> %val6) { 2896; CHECK-LABEL: fun110: 2897; CHECK: # BB#0: 2898; CHECK-NEXT: vmrlf %v0, %v27, %v27 2899; CHECK-NEXT: vmrlf %v1, %v30, %v30 2900; CHECK-NEXT: vldeb %v0, %v0 2901; CHECK-NEXT: vldeb %v1, %v1 2902; CHECK-NEXT: vfchdb %v0, %v1, %v0 2903; CHECK-NEXT: vmrhf %v1, %v27, %v27 2904; CHECK-NEXT: vmrhf %v2, %v30, %v30 2905; CHECK-NEXT: vldeb %v1, %v1 2906; CHECK-NEXT: vmrhf %v3, %v28, %v28 2907; CHECK-NEXT: vldeb %v2, %v2 2908; CHECK-NEXT: vfchdb %v1, %v2, %v1 2909; CHECK-NEXT: vpkg %v0, %v1, %v0 2910; CHECK-NEXT: vmrlf %v1, %v25, %v25 2911; CHECK-NEXT: vmrlf %v2, %v28, %v28 2912; CHECK-NEXT: vldeb %v1, %v1 2913; CHECK-NEXT: vldeb %v2, %v2 2914; CHECK-NEXT: vfchdb %v1, %v2, %v1 2915; CHECK-NEXT: vmrhf %v2, %v25, %v25 2916; CHECK-NEXT: vldeb %v2, %v2 2917; CHECK-NEXT: vldeb %v3, %v3 2918; CHECK-NEXT: vfchdb %v2, %v3, %v2 2919; CHECK-NEXT: vpkg %v1, %v2, %v1 2920; CHECK-NEXT: vpkf %v0, %v1, %v0 2921; CHECK-NEXT: vceqh %v1, %v24, %v26 2922; CHECK-NEXT: vo %v0, %v1, %v0 2923; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 2924; CHECK-NEXT: br %r14 2925 %cmp0 = icmp eq <8 x i16> %val1, %val2 2926 %cmp1 = fcmp ogt <8 x float> %val3, %val4 2927 %and = or <8 x i1> %cmp0, %cmp1 2928 %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6 2929 ret <8 x i16> %sel 2930} 2931 2932define <8 x i32> @fun111(<8 x i16> %val1, <8 x i16> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i32> %val5, <8 x i32> %val6) { 2933; CHECK-LABEL: fun111: 2934; CHECK: # BB#0: 2935; CHECK-NEXT: vfchdb %v0, %v30, %v31 2936; CHECK-NEXT: vfchdb %v1, %v28, %v29 2937; CHECK-NEXT: vpkg %v0, %v1, %v0 2938; CHECK-NEXT: vceqh %v1, %v24, %v26 2939; CHECK-NEXT: vuphh %v2, %v1 2940; CHECK-NEXT: vo %v0, %v2, %v0 2941; CHECK-NEXT: vl %v2, 224(%r15) 2942; CHECK-NEXT: vl %v3, 192(%r15) 2943; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 2944; CHECK-NEXT: vl %v0, 176(%r15) 2945; CHECK-NEXT: vl %v2, 160(%r15) 2946; CHECK-NEXT: vfchdb %v0, %v27, %v0 2947; CHECK-NEXT: vfchdb %v2, %v25, %v2 2948; CHECK-NEXT: vmrlg %v1, %v1, %v1 2949; CHECK-NEXT: vpkg %v0, %v2, %v0 2950; CHECK-NEXT: vuphh %v1, %v1 2951; CHECK-NEXT: vo %v0, %v1, %v0 2952; CHECK-NEXT: vl %v1, 240(%r15) 2953; CHECK-NEXT: vl %v2, 208(%r15) 2954; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 2955; CHECK-NEXT: br %r14 2956 %cmp0 = icmp eq <8 x i16> %val1, %val2 2957 %cmp1 = fcmp ogt <8 x double> %val3, %val4 2958 %and = or <8 x i1> %cmp0, %cmp1 2959 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 2960 ret <8 x i32> %sel 2961} 2962 2963define <8 x i32> @fun112(<8 x i32> %val1, <8 x i32> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i32> %val5, <8 x i32> %val6) { 2964; CHECK-LABEL: fun112: 2965; CHECK: # BB#0: 2966; CHECK-NEXT: vl %v0, 176(%r15) 2967; CHECK-NEXT: vl %v1, 160(%r15) 2968; CHECK-NEXT: vceqg %v0, %v27, %v0 2969; CHECK-NEXT: vceqg %v1, %v25, %v1 2970; CHECK-NEXT: vpkg %v0, %v1, %v0 2971; CHECK-NEXT: vceqf %v1, %v24, %v28 2972; CHECK-NEXT: vo %v0, %v1, %v0 2973; CHECK-NEXT: vl %v1, 256(%r15) 2974; CHECK-NEXT: vl %v2, 224(%r15) 2975; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2976; CHECK-NEXT: vl %v0, 208(%r15) 2977; CHECK-NEXT: vl %v1, 192(%r15) 2978; CHECK-NEXT: vceqg %v0, %v31, %v0 2979; CHECK-NEXT: vceqg %v1, %v29, %v1 2980; CHECK-NEXT: vpkg %v0, %v1, %v0 2981; CHECK-NEXT: vceqf %v1, %v26, %v30 2982; CHECK-NEXT: vo %v0, %v1, %v0 2983; CHECK-NEXT: vl %v1, 272(%r15) 2984; CHECK-NEXT: vl %v2, 240(%r15) 2985; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 2986; CHECK-NEXT: br %r14 2987 %cmp0 = icmp eq <8 x i32> %val1, %val2 2988 %cmp1 = icmp eq <8 x i64> %val3, %val4 2989 %and = or <8 x i1> %cmp0, %cmp1 2990 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 2991 ret <8 x i32> %sel 2992} 2993 2994define <8 x double> @fun113(<8 x i32> %val1, <8 x i32> %val2, <8 x float> %val3, <8 x float> %val4, <8 x double> %val5, <8 x double> %val6) { 2995; CHECK-LABEL: fun113: 2996; CHECK: # BB#0: 2997; CHECK-NEXT: vmrlf %v0, %v29, %v29 2998; CHECK-NEXT: vmrlf %v1, %v25, %v25 2999; CHECK-NEXT: vldeb %v0, %v0 3000; CHECK-NEXT: vldeb %v1, %v1 3001; CHECK-NEXT: vfchdb %v0, %v1, %v0 3002; CHECK-NEXT: vmrhf %v1, %v29, %v29 3003; CHECK-NEXT: vmrhf %v2, %v25, %v25 3004; CHECK-NEXT: vldeb %v1, %v1 3005; CHECK-NEXT: vl %v3, 160(%r15) 3006; CHECK-NEXT: vldeb %v2, %v2 3007; CHECK-NEXT: vl %v4, 192(%r15) 3008; CHECK-NEXT: vfchdb %v1, %v2, %v1 3009; CHECK-NEXT: vl %v2, 224(%r15) 3010; CHECK-NEXT: vpkg %v0, %v1, %v0 3011; CHECK-NEXT: vceqf %v1, %v24, %v28 3012; CHECK-NEXT: vo %v0, %v1, %v0 3013; CHECK-NEXT: vuphf %v1, %v0 3014; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 3015; CHECK-NEXT: vmrlf %v1, %v31, %v31 3016; CHECK-NEXT: vmrlf %v2, %v27, %v27 3017; CHECK-NEXT: vmrhf %v3, %v27, %v27 3018; CHECK-NEXT: vmrlg %v0, %v0, %v0 3019; CHECK-NEXT: vuphf %v0, %v0 3020; CHECK-NEXT: vldeb %v1, %v1 3021; CHECK-NEXT: vldeb %v2, %v2 3022; CHECK-NEXT: vfchdb %v1, %v2, %v1 3023; CHECK-NEXT: vmrhf %v2, %v31, %v31 3024; CHECK-NEXT: vldeb %v2, %v2 3025; CHECK-NEXT: vldeb %v3, %v3 3026; CHECK-NEXT: vfchdb %v2, %v3, %v2 3027; CHECK-NEXT: vl %v3, 256(%r15) 3028; CHECK-NEXT: vpkg %v1, %v2, %v1 3029; CHECK-NEXT: vceqf %v2, %v26, %v30 3030; CHECK-NEXT: vo %v1, %v2, %v1 3031; CHECK-NEXT: vuphf %v2, %v1 3032; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 3033; CHECK-NEXT: vl %v2, 240(%r15) 3034; CHECK-NEXT: vl %v3, 176(%r15) 3035; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 3036; CHECK-NEXT: vl %v2, 208(%r15) 3037; CHECK-NEXT: vmrlg %v0, %v1, %v1 3038; CHECK-NEXT: vl %v1, 272(%r15) 3039; CHECK-NEXT: vuphf %v0, %v0 3040; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3041; CHECK-NEXT: br %r14 3042 %cmp0 = icmp eq <8 x i32> %val1, %val2 3043 %cmp1 = fcmp ogt <8 x float> %val3, %val4 3044 %and = or <8 x i1> %cmp0, %cmp1 3045 %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6 3046 ret <8 x double> %sel 3047} 3048 3049define <8 x double> @fun114(<8 x i32> %val1, <8 x i32> %val2, <8 x double> %val3, <8 x double> %val4, <8 x double> %val5, <8 x double> %val6) { 3050; CHECK-LABEL: fun114: 3051; CHECK: # BB#0: 3052; CHECK-NEXT: vl %v0, 160(%r15) 3053; CHECK-NEXT: vceqf %v1, %v24, %v28 3054; CHECK-NEXT: vfchdb %v0, %v25, %v0 3055; CHECK-NEXT: vuphf %v2, %v1 3056; CHECK-NEXT: vo %v0, %v2, %v0 3057; CHECK-NEXT: vl %v2, 288(%r15) 3058; CHECK-NEXT: vl %v3, 224(%r15) 3059; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 3060; CHECK-NEXT: vl %v0, 192(%r15) 3061; CHECK-NEXT: vceqf %v2, %v26, %v30 3062; CHECK-NEXT: vfchdb %v0, %v29, %v0 3063; CHECK-NEXT: vuphf %v3, %v2 3064; CHECK-NEXT: vo %v0, %v3, %v0 3065; CHECK-NEXT: vl %v3, 320(%r15) 3066; CHECK-NEXT: vl %v4, 256(%r15) 3067; CHECK-NEXT: vsel %v28, %v4, %v3, %v0 3068; CHECK-NEXT: vl %v0, 176(%r15) 3069; CHECK-NEXT: vmrlg %v1, %v1, %v1 3070; CHECK-NEXT: vfchdb %v0, %v27, %v0 3071; CHECK-NEXT: vuphf %v1, %v1 3072; CHECK-NEXT: vo %v0, %v1, %v0 3073; CHECK-NEXT: vl %v1, 304(%r15) 3074; CHECK-NEXT: vl %v3, 240(%r15) 3075; CHECK-NEXT: vsel %v26, %v3, %v1, %v0 3076; CHECK-NEXT: vl %v0, 208(%r15) 3077; CHECK-NEXT: vmrlg %v1, %v2, %v2 3078; CHECK-NEXT: vfchdb %v0, %v31, %v0 3079; CHECK-NEXT: vuphf %v1, %v1 3080; CHECK-NEXT: vl %v2, 272(%r15) 3081; CHECK-NEXT: vo %v0, %v1, %v0 3082; CHECK-NEXT: vl %v1, 336(%r15) 3083; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3084; CHECK-NEXT: br %r14 3085 %cmp0 = icmp eq <8 x i32> %val1, %val2 3086 %cmp1 = fcmp ogt <8 x double> %val3, %val4 3087 %and = or <8 x i1> %cmp0, %cmp1 3088 %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6 3089 ret <8 x double> %sel 3090} 3091 3092define <8 x i64> @fun115(<8 x float> %val1, <8 x float> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i64> %val5, <8 x i64> %val6) { 3093; CHECK-LABEL: fun115: 3094; CHECK: # BB#0: 3095; CHECK-NEXT: vmrlf %v0, %v28, %v28 3096; CHECK-NEXT: vmrlf %v1, %v24, %v24 3097; CHECK-NEXT: vldeb %v0, %v0 3098; CHECK-NEXT: vldeb %v1, %v1 3099; CHECK-NEXT: vfchdb %v0, %v1, %v0 3100; CHECK-NEXT: vmrhf %v1, %v28, %v28 3101; CHECK-NEXT: vmrhf %v2, %v24, %v24 3102; CHECK-NEXT: vldeb %v1, %v1 3103; CHECK-NEXT: vl %v3, 224(%r15) 3104; CHECK-NEXT: vldeb %v2, %v2 3105; CHECK-NEXT: vl %v4, 256(%r15) 3106; CHECK-NEXT: vfchdb %v1, %v2, %v1 3107; CHECK-NEXT: vl %v2, 160(%r15) 3108; CHECK-NEXT: vpkg %v0, %v1, %v0 3109; CHECK-NEXT: vuphf %v1, %v0 3110; CHECK-NEXT: vfchdb %v2, %v25, %v2 3111; CHECK-NEXT: vo %v1, %v1, %v2 3112; CHECK-NEXT: vl %v2, 288(%r15) 3113; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 3114; CHECK-NEXT: vmrlf %v1, %v30, %v30 3115; CHECK-NEXT: vmrlf %v2, %v26, %v26 3116; CHECK-NEXT: vmrhf %v3, %v26, %v26 3117; CHECK-NEXT: vmrlg %v0, %v0, %v0 3118; CHECK-NEXT: vuphf %v0, %v0 3119; CHECK-NEXT: vldeb %v1, %v1 3120; CHECK-NEXT: vldeb %v2, %v2 3121; CHECK-NEXT: vfchdb %v1, %v2, %v1 3122; CHECK-NEXT: vmrhf %v2, %v30, %v30 3123; CHECK-NEXT: vldeb %v2, %v2 3124; CHECK-NEXT: vldeb %v3, %v3 3125; CHECK-NEXT: vfchdb %v2, %v3, %v2 3126; CHECK-NEXT: vl %v3, 192(%r15) 3127; CHECK-NEXT: vpkg %v1, %v2, %v1 3128; CHECK-NEXT: vuphf %v2, %v1 3129; CHECK-NEXT: vfchdb %v3, %v29, %v3 3130; CHECK-NEXT: vo %v2, %v2, %v3 3131; CHECK-NEXT: vl %v3, 320(%r15) 3132; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 3133; CHECK-NEXT: vl %v2, 176(%r15) 3134; CHECK-NEXT: vl %v3, 240(%r15) 3135; CHECK-NEXT: vfchdb %v2, %v27, %v2 3136; CHECK-NEXT: vo %v0, %v0, %v2 3137; CHECK-NEXT: vl %v2, 304(%r15) 3138; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 3139; CHECK-NEXT: vl %v2, 272(%r15) 3140; CHECK-NEXT: vmrlg %v0, %v1, %v1 3141; CHECK-NEXT: vl %v1, 208(%r15) 3142; CHECK-NEXT: vuphf %v0, %v0 3143; CHECK-NEXT: vfchdb %v1, %v31, %v1 3144; CHECK-NEXT: vo %v0, %v0, %v1 3145; CHECK-NEXT: vl %v1, 336(%r15) 3146; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3147; CHECK-NEXT: br %r14 3148 %cmp0 = fcmp ogt <8 x float> %val1, %val2 3149 %cmp1 = fcmp ogt <8 x double> %val3, %val4 3150 %and = or <8 x i1> %cmp0, %cmp1 3151 %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6 3152 ret <8 x i64> %sel 3153} 3154 3155define <16 x i8> @fun116(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i8> %val5, <16 x i8> %val6) { 3156; CHECK-LABEL: fun116: 3157; CHECK: # BB#0: 3158; CHECK-NEXT: vceqb %v0, %v28, %v30 3159; CHECK-NEXT: vceqb %v1, %v24, %v26 3160; CHECK-NEXT: vo %v0, %v1, %v0 3161; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 3162; CHECK-NEXT: br %r14 3163 %cmp0 = icmp eq <16 x i8> %val1, %val2 3164 %cmp1 = icmp eq <16 x i8> %val3, %val4 3165 %and = or <16 x i1> %cmp0, %cmp1 3166 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 3167 ret <16 x i8> %sel 3168} 3169 3170define <16 x i16> @fun117(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i16> %val5, <16 x i16> %val6) { 3171; CHECK-LABEL: fun117: 3172; CHECK: # BB#0: 3173; CHECK-NEXT: vceqb %v0, %v28, %v30 3174; CHECK-NEXT: vceqb %v1, %v24, %v26 3175; CHECK-NEXT: vo %v0, %v1, %v0 3176; CHECK-NEXT: vuphb %v1, %v0 3177; CHECK-NEXT: vmrlg %v0, %v0, %v0 3178; CHECK-NEXT: vuphb %v0, %v0 3179; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 3180; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 3181; CHECK-NEXT: br %r14 3182 %cmp0 = icmp eq <16 x i8> %val1, %val2 3183 %cmp1 = icmp eq <16 x i8> %val3, %val4 3184 %and = or <16 x i1> %cmp0, %cmp1 3185 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 3186 ret <16 x i16> %sel 3187} 3188 3189define <16 x i64> @fun118(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i64> %val5, <16 x i64> %val6) { 3190; CHECK-LABEL: fun118: 3191; CHECK: # BB#0: 3192; CHECK-NEXT: vceqb %v1, %v24, %v26 3193; CHECK-NEXT: vceqh %v0, %v28, %v25 3194; CHECK-NEXT: vuphb %v2, %v1 3195; CHECK-NEXT: vo %v0, %v2, %v0 3196; CHECK-NEXT: vuphh %v2, %v0 3197; CHECK-NEXT: vl %v3, 256(%r15) 3198; CHECK-NEXT: vuphf %v2, %v2 3199; CHECK-NEXT: vsel %v24, %v29, %v3, %v2 3200; CHECK-NEXT: vpkg %v2, %v0, %v0 3201; CHECK-NEXT: vuphh %v2, %v2 3202; CHECK-NEXT: vl %v3, 272(%r15) 3203; CHECK-NEXT: vuphf %v2, %v2 3204; CHECK-NEXT: vsel %v26, %v31, %v3, %v2 3205; CHECK-NEXT: vmrlg %v2, %v0, %v0 3206; CHECK-NEXT: vuphh %v2, %v2 3207; CHECK-NEXT: vsldb %v0, %v0, %v0, 12 3208; CHECK-NEXT: vl %v3, 288(%r15) 3209; CHECK-NEXT: vl %v4, 160(%r15) 3210; CHECK-NEXT: vuphf %v2, %v2 3211; CHECK-NEXT: vuphh %v0, %v0 3212; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 3213; CHECK-NEXT: vl %v2, 304(%r15) 3214; CHECK-NEXT: vl %v3, 176(%r15) 3215; CHECK-NEXT: vl %v4, 192(%r15) 3216; CHECK-NEXT: vuphf %v0, %v0 3217; CHECK-NEXT: vmrlg %v1, %v1, %v1 3218; CHECK-NEXT: vsel %v0, %v3, %v2, %v0 3219; CHECK-NEXT: vl %v3, 320(%r15) 3220; CHECK-NEXT: vceqh %v2, %v30, %v27 3221; CHECK-NEXT: vlr %v30, %v0 3222; CHECK-NEXT: vuphb %v1, %v1 3223; CHECK-NEXT: vo %v1, %v1, %v2 3224; CHECK-NEXT: vuphh %v2, %v1 3225; CHECK-NEXT: vuphf %v2, %v2 3226; CHECK-NEXT: vsel %v25, %v4, %v3, %v2 3227; CHECK-NEXT: vl %v3, 336(%r15) 3228; CHECK-NEXT: vl %v4, 208(%r15) 3229; CHECK-NEXT: vpkg %v2, %v1, %v1 3230; CHECK-NEXT: vuphh %v2, %v2 3231; CHECK-NEXT: vuphf %v2, %v2 3232; CHECK-NEXT: vsel %v27, %v4, %v3, %v2 3233; CHECK-NEXT: vl %v3, 352(%r15) 3234; CHECK-NEXT: vl %v4, 224(%r15) 3235; CHECK-NEXT: vmrlg %v2, %v1, %v1 3236; CHECK-NEXT: vuphh %v2, %v2 3237; CHECK-NEXT: vsldb %v1, %v1, %v1, 12 3238; CHECK-NEXT: vuphf %v2, %v2 3239; CHECK-NEXT: vuphh %v1, %v1 3240; CHECK-NEXT: vsel %v29, %v4, %v3, %v2 3241; CHECK-NEXT: vl %v2, 368(%r15) 3242; CHECK-NEXT: vl %v3, 240(%r15) 3243; CHECK-NEXT: vuphf %v1, %v1 3244; CHECK-NEXT: vsel %v31, %v3, %v2, %v1 3245; CHECK-NEXT: br %r14 3246 %cmp0 = icmp eq <16 x i8> %val1, %val2 3247 %cmp1 = icmp eq <16 x i16> %val3, %val4 3248 %and = or <16 x i1> %cmp0, %cmp1 3249 %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6 3250 ret <16 x i64> %sel 3251} 3252 3253define <16 x i64> @fun119(<16 x i8> %val1, <16 x i8> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i64> %val5, <16 x i64> %val6) { 3254; CHECK-LABEL: fun119: 3255; CHECK: # BB#0: 3256; CHECK-NEXT: vceqb %v1, %v24, %v26 3257; CHECK-NEXT: vuphb %v2, %v1 3258; CHECK-NEXT: vceqf %v0, %v28, %v29 3259; CHECK-NEXT: vuphh %v2, %v2 3260; CHECK-NEXT: vo %v0, %v2, %v0 3261; CHECK-NEXT: vl %v3, 320(%r15) 3262; CHECK-NEXT: vl %v4, 192(%r15) 3263; CHECK-NEXT: vuphf %v2, %v0 3264; CHECK-NEXT: vmrlg %v0, %v0, %v0 3265; CHECK-NEXT: vsel %v24, %v4, %v3, %v2 3266; CHECK-NEXT: vl %v2, 336(%r15) 3267; CHECK-NEXT: vl %v3, 208(%r15) 3268; CHECK-NEXT: vuphf %v0, %v0 3269; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 3270; CHECK-NEXT: vpkg %v2, %v1, %v1 3271; CHECK-NEXT: vuphb %v2, %v2 3272; CHECK-NEXT: vceqf %v0, %v30, %v31 3273; CHECK-NEXT: vuphh %v2, %v2 3274; CHECK-NEXT: vo %v0, %v2, %v0 3275; CHECK-NEXT: vl %v3, 352(%r15) 3276; CHECK-NEXT: vl %v4, 224(%r15) 3277; CHECK-NEXT: vuphf %v2, %v0 3278; CHECK-NEXT: vl %v5, 256(%r15) 3279; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 3280; CHECK-NEXT: vl %v2, 160(%r15) 3281; CHECK-NEXT: vl %v4, 384(%r15) 3282; CHECK-NEXT: vmrlg %v3, %v1, %v1 3283; CHECK-NEXT: vuphb %v3, %v3 3284; CHECK-NEXT: vceqf %v2, %v25, %v2 3285; CHECK-NEXT: vuphh %v3, %v3 3286; CHECK-NEXT: vo %v2, %v3, %v2 3287; CHECK-NEXT: vuphf %v3, %v2 3288; CHECK-NEXT: vsldb %v1, %v1, %v1, 12 3289; CHECK-NEXT: vsel %v25, %v5, %v4, %v3 3290; CHECK-NEXT: vl %v3, 176(%r15) 3291; CHECK-NEXT: vl %v4, 416(%r15) 3292; CHECK-NEXT: vl %v5, 288(%r15) 3293; CHECK-NEXT: vuphb %v1, %v1 3294; CHECK-NEXT: vceqf %v3, %v27, %v3 3295; CHECK-NEXT: vuphh %v1, %v1 3296; CHECK-NEXT: vo %v1, %v1, %v3 3297; CHECK-NEXT: vuphf %v3, %v1 3298; CHECK-NEXT: vmrlg %v0, %v0, %v0 3299; CHECK-NEXT: vsel %v29, %v5, %v4, %v3 3300; CHECK-NEXT: vl %v3, 368(%r15) 3301; CHECK-NEXT: vl %v4, 240(%r15) 3302; CHECK-NEXT: vuphf %v0, %v0 3303; CHECK-NEXT: vsel %v30, %v4, %v3, %v0 3304; CHECK-NEXT: vl %v3, 272(%r15) 3305; CHECK-NEXT: vmrlg %v0, %v2, %v2 3306; CHECK-NEXT: vl %v2, 400(%r15) 3307; CHECK-NEXT: vuphf %v0, %v0 3308; CHECK-NEXT: vsel %v27, %v3, %v2, %v0 3309; CHECK-NEXT: vl %v2, 304(%r15) 3310; CHECK-NEXT: vmrlg %v0, %v1, %v1 3311; CHECK-NEXT: vl %v1, 432(%r15) 3312; CHECK-NEXT: vuphf %v0, %v0 3313; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 3314; CHECK-NEXT: br %r14 3315 %cmp0 = icmp eq <16 x i8> %val1, %val2 3316 %cmp1 = icmp eq <16 x i32> %val3, %val4 3317 %and = or <16 x i1> %cmp0, %cmp1 3318 %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6 3319 ret <16 x i64> %sel 3320} 3321 3322define <16 x i64> @fun120(<16 x i8> %val1, <16 x i8> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i64> %val5, <16 x i64> %val6) { 3323; CHECK-LABEL: fun120: 3324; CHECK: # BB#0: 3325; CHECK-NEXT: vl %v0, 192(%r15) 3326; CHECK-NEXT: vceqg %v1, %v28, %v0 3327; CHECK-NEXT: vceqb %v0, %v24, %v26 3328; CHECK-NEXT: vuphb %v2, %v0 3329; CHECK-NEXT: vuphh %v2, %v2 3330; CHECK-NEXT: vuphf %v2, %v2 3331; CHECK-NEXT: vo %v1, %v2, %v1 3332; CHECK-NEXT: vl %v2, 448(%r15) 3333; CHECK-NEXT: vl %v3, 320(%r15) 3334; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 3335; CHECK-NEXT: vpkf %v2, %v0, %v0 3336; CHECK-NEXT: vuphb %v2, %v2 3337; CHECK-NEXT: vl %v1, 208(%r15) 3338; CHECK-NEXT: vuphh %v2, %v2 3339; CHECK-NEXT: vceqg %v1, %v30, %v1 3340; CHECK-NEXT: vuphf %v2, %v2 3341; CHECK-NEXT: vo %v1, %v2, %v1 3342; CHECK-NEXT: vl %v2, 464(%r15) 3343; CHECK-NEXT: vl %v3, 336(%r15) 3344; CHECK-NEXT: vsel %v26, %v3, %v2, %v1 3345; CHECK-NEXT: vpkg %v2, %v0, %v0 3346; CHECK-NEXT: vuphb %v2, %v2 3347; CHECK-NEXT: vl %v1, 224(%r15) 3348; CHECK-NEXT: vl %v3, 352(%r15) 3349; CHECK-NEXT: vuphh %v2, %v2 3350; CHECK-NEXT: vceqg %v1, %v25, %v1 3351; CHECK-NEXT: vuphf %v2, %v2 3352; CHECK-NEXT: vo %v1, %v2, %v1 3353; CHECK-NEXT: vl %v2, 480(%r15) 3354; CHECK-NEXT: vsel %v28, %v3, %v2, %v1 3355; CHECK-NEXT: vl %v1, 240(%r15) 3356; CHECK-NEXT: vl %v3, 368(%r15) 3357; CHECK-NEXT: vsldb %v2, %v0, %v0, 6 3358; CHECK-NEXT: vuphb %v2, %v2 3359; CHECK-NEXT: vuphh %v2, %v2 3360; CHECK-NEXT: vceqg %v1, %v27, %v1 3361; CHECK-NEXT: vuphf %v2, %v2 3362; CHECK-NEXT: vo %v1, %v2, %v1 3363; CHECK-NEXT: vl %v2, 496(%r15) 3364; CHECK-NEXT: vsel %v30, %v3, %v2, %v1 3365; CHECK-NEXT: vl %v1, 256(%r15) 3366; CHECK-NEXT: vl %v3, 384(%r15) 3367; CHECK-NEXT: vmrlg %v2, %v0, %v0 3368; CHECK-NEXT: vuphb %v2, %v2 3369; CHECK-NEXT: vuphh %v2, %v2 3370; CHECK-NEXT: vceqg %v1, %v29, %v1 3371; CHECK-NEXT: vuphf %v2, %v2 3372; CHECK-NEXT: vo %v1, %v2, %v1 3373; CHECK-NEXT: vl %v2, 512(%r15) 3374; CHECK-NEXT: vsel %v25, %v3, %v2, %v1 3375; CHECK-NEXT: vl %v1, 272(%r15) 3376; CHECK-NEXT: vl %v3, 400(%r15) 3377; CHECK-NEXT: vsldb %v2, %v0, %v0, 10 3378; CHECK-NEXT: vuphb %v2, %v2 3379; CHECK-NEXT: vuphh %v2, %v2 3380; CHECK-NEXT: vceqg %v1, %v31, %v1 3381; CHECK-NEXT: vuphf %v2, %v2 3382; CHECK-NEXT: vo %v1, %v2, %v1 3383; CHECK-NEXT: vl %v2, 528(%r15) 3384; CHECK-NEXT: vsel %v27, %v3, %v2, %v1 3385; CHECK-NEXT: vl %v1, 288(%r15) 3386; CHECK-NEXT: vl %v2, 160(%r15) 3387; CHECK-NEXT: vl %v3, 416(%r15) 3388; CHECK-NEXT: vceqg %v1, %v2, %v1 3389; CHECK-NEXT: vsldb %v2, %v0, %v0, 12 3390; CHECK-NEXT: vuphb %v2, %v2 3391; CHECK-NEXT: vuphh %v2, %v2 3392; CHECK-NEXT: vuphf %v2, %v2 3393; CHECK-NEXT: vsldb %v0, %v0, %v0, 14 3394; CHECK-NEXT: vo %v1, %v2, %v1 3395; CHECK-NEXT: vl %v2, 544(%r15) 3396; CHECK-NEXT: vuphb %v0, %v0 3397; CHECK-NEXT: vsel %v29, %v3, %v2, %v1 3398; CHECK-NEXT: vl %v1, 304(%r15) 3399; CHECK-NEXT: vl %v2, 176(%r15) 3400; CHECK-NEXT: vuphh %v0, %v0 3401; CHECK-NEXT: vceqg %v1, %v2, %v1 3402; CHECK-NEXT: vl %v2, 432(%r15) 3403; CHECK-NEXT: vuphf %v0, %v0 3404; CHECK-NEXT: vo %v0, %v0, %v1 3405; CHECK-NEXT: vl %v1, 560(%r15) 3406; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 3407; CHECK-NEXT: br %r14 3408 %cmp0 = icmp eq <16 x i8> %val1, %val2 3409 %cmp1 = icmp eq <16 x i64> %val3, %val4 3410 %and = or <16 x i1> %cmp0, %cmp1 3411 %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6 3412 ret <16 x i64> %sel 3413} 3414 3415define <16 x i16> @fun121(<16 x i8> %val1, <16 x i8> %val2, <16 x float> %val3, <16 x float> %val4, <16 x i16> %val5, <16 x i16> %val6) { 3416; CHECK-LABEL: fun121: 3417; CHECK: # BB#0: 3418; CHECK-NEXT: vmrlf %v0, %v31, %v31 3419; CHECK-NEXT: vmrlf %v1, %v30, %v30 3420; CHECK-NEXT: vldeb %v0, %v0 3421; CHECK-NEXT: vldeb %v1, %v1 3422; CHECK-NEXT: vfchdb %v0, %v1, %v0 3423; CHECK-NEXT: vmrhf %v1, %v31, %v31 3424; CHECK-NEXT: vmrhf %v2, %v30, %v30 3425; CHECK-NEXT: vldeb %v1, %v1 3426; CHECK-NEXT: vmrhf %v3, %v28, %v28 3427; CHECK-NEXT: vmrlf %v4, %v25, %v25 3428; CHECK-NEXT: vldeb %v2, %v2 3429; CHECK-NEXT: vfchdb %v1, %v2, %v1 3430; CHECK-NEXT: vpkg %v0, %v1, %v0 3431; CHECK-NEXT: vmrlf %v1, %v29, %v29 3432; CHECK-NEXT: vmrlf %v2, %v28, %v28 3433; CHECK-NEXT: vldeb %v1, %v1 3434; CHECK-NEXT: vldeb %v2, %v2 3435; CHECK-NEXT: vfchdb %v1, %v2, %v1 3436; CHECK-NEXT: vmrhf %v2, %v29, %v29 3437; CHECK-NEXT: vldeb %v2, %v2 3438; CHECK-NEXT: vldeb %v3, %v3 3439; CHECK-NEXT: vfchdb %v2, %v3, %v2 3440; CHECK-NEXT: vl %v3, 192(%r15) 3441; CHECK-NEXT: vpkg %v1, %v2, %v1 3442; CHECK-NEXT: vpkf %v0, %v1, %v0 3443; CHECK-NEXT: vceqb %v1, %v24, %v26 3444; CHECK-NEXT: vuphb %v2, %v1 3445; CHECK-NEXT: vo %v0, %v2, %v0 3446; CHECK-NEXT: vl %v2, 224(%r15) 3447; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 3448; CHECK-NEXT: vl %v0, 176(%r15) 3449; CHECK-NEXT: vmrlf %v2, %v0, %v0 3450; CHECK-NEXT: vmrlf %v3, %v27, %v27 3451; CHECK-NEXT: vmrhf %v0, %v0, %v0 3452; CHECK-NEXT: vmrlg %v1, %v1, %v1 3453; CHECK-NEXT: vuphb %v1, %v1 3454; CHECK-NEXT: vldeb %v2, %v2 3455; CHECK-NEXT: vldeb %v3, %v3 3456; CHECK-NEXT: vfchdb %v2, %v3, %v2 3457; CHECK-NEXT: vmrhf %v3, %v27, %v27 3458; CHECK-NEXT: vldeb %v0, %v0 3459; CHECK-NEXT: vldeb %v3, %v3 3460; CHECK-NEXT: vfchdb %v0, %v3, %v0 3461; CHECK-NEXT: vpkg %v0, %v0, %v2 3462; CHECK-NEXT: vl %v2, 160(%r15) 3463; CHECK-NEXT: vmrlf %v3, %v2, %v2 3464; CHECK-NEXT: vmrhf %v2, %v2, %v2 3465; CHECK-NEXT: vldeb %v3, %v3 3466; CHECK-NEXT: vldeb %v4, %v4 3467; CHECK-NEXT: vfchdb %v3, %v4, %v3 3468; CHECK-NEXT: vmrhf %v4, %v25, %v25 3469; CHECK-NEXT: vldeb %v2, %v2 3470; CHECK-NEXT: vldeb %v4, %v4 3471; CHECK-NEXT: vfchdb %v2, %v4, %v2 3472; CHECK-NEXT: vpkg %v2, %v2, %v3 3473; CHECK-NEXT: vpkf %v0, %v2, %v0 3474; CHECK-NEXT: vl %v2, 208(%r15) 3475; CHECK-NEXT: vo %v0, %v1, %v0 3476; CHECK-NEXT: vl %v1, 240(%r15) 3477; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 3478; CHECK-NEXT: br %r14 3479 %cmp0 = icmp eq <16 x i8> %val1, %val2 3480 %cmp1 = fcmp ogt <16 x float> %val3, %val4 3481 %and = or <16 x i1> %cmp0, %cmp1 3482 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 3483 ret <16 x i16> %sel 3484} 3485 3486define <16 x i8> @fun122(<16 x i8> %val1, <16 x i8> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i8> %val5, <16 x i8> %val6) { 3487; CHECK-LABEL: fun122: 3488; CHECK: # BB#0: 3489; CHECK-NEXT: vl %v0, 304(%r15) 3490; CHECK-NEXT: vl %v1, 176(%r15) 3491; CHECK-NEXT: vfchdb %v0, %v1, %v0 3492; CHECK-NEXT: vl %v1, 288(%r15) 3493; CHECK-NEXT: vl %v2, 160(%r15) 3494; CHECK-NEXT: vfchdb %v1, %v2, %v1 3495; CHECK-NEXT: vpkg %v0, %v1, %v0 3496; CHECK-NEXT: vl %v1, 272(%r15) 3497; CHECK-NEXT: vl %v2, 256(%r15) 3498; CHECK-NEXT: vfchdb %v1, %v31, %v1 3499; CHECK-NEXT: vfchdb %v2, %v29, %v2 3500; CHECK-NEXT: vpkg %v1, %v2, %v1 3501; CHECK-NEXT: vpkf %v0, %v1, %v0 3502; CHECK-NEXT: vl %v1, 240(%r15) 3503; CHECK-NEXT: vl %v2, 224(%r15) 3504; CHECK-NEXT: vfchdb %v1, %v27, %v1 3505; CHECK-NEXT: vfchdb %v2, %v25, %v2 3506; CHECK-NEXT: vpkg %v1, %v2, %v1 3507; CHECK-NEXT: vl %v2, 208(%r15) 3508; CHECK-NEXT: vl %v3, 192(%r15) 3509; CHECK-NEXT: vfchdb %v2, %v30, %v2 3510; CHECK-NEXT: vfchdb %v3, %v28, %v3 3511; CHECK-NEXT: vpkg %v2, %v3, %v2 3512; CHECK-NEXT: vpkf %v1, %v2, %v1 3513; CHECK-NEXT: vpkh %v0, %v1, %v0 3514; CHECK-NEXT: vceqb %v1, %v24, %v26 3515; CHECK-NEXT: vo %v0, %v1, %v0 3516; CHECK-NEXT: vl %v1, 336(%r15) 3517; CHECK-NEXT: vl %v2, 320(%r15) 3518; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 3519; CHECK-NEXT: br %r14 3520 %cmp0 = icmp eq <16 x i8> %val1, %val2 3521 %cmp1 = fcmp ogt <16 x double> %val3, %val4 3522 %and = or <16 x i1> %cmp0, %cmp1 3523 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 3524 ret <16 x i8> %sel 3525} 3526 3527define <16 x i8> @fun123(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i8> %val5, <16 x i8> %val6) { 3528; CHECK-LABEL: fun123: 3529; CHECK: # BB#0: 3530; CHECK-NEXT: vceqh %v0, %v27, %v31 3531; CHECK-NEXT: vceqh %v1, %v26, %v30 3532; CHECK-NEXT: vo %v0, %v1, %v0 3533; CHECK-NEXT: vceqh %v1, %v25, %v29 3534; CHECK-NEXT: vceqh %v2, %v24, %v28 3535; CHECK-NEXT: vo %v1, %v2, %v1 3536; CHECK-NEXT: vpkh %v0, %v1, %v0 3537; CHECK-NEXT: vl %v1, 176(%r15) 3538; CHECK-NEXT: vl %v2, 160(%r15) 3539; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 3540; CHECK-NEXT: br %r14 3541 %cmp0 = icmp eq <16 x i16> %val1, %val2 3542 %cmp1 = icmp eq <16 x i16> %val3, %val4 3543 %and = or <16 x i1> %cmp0, %cmp1 3544 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 3545 ret <16 x i8> %sel 3546} 3547 3548define <16 x i16> @fun124(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i16> %val5, <16 x i16> %val6) { 3549; CHECK-LABEL: fun124: 3550; CHECK: # BB#0: 3551; CHECK-NEXT: vceqh %v0, %v25, %v29 3552; CHECK-NEXT: vceqh %v1, %v24, %v28 3553; CHECK-NEXT: vo %v0, %v1, %v0 3554; CHECK-NEXT: vl %v1, 192(%r15) 3555; CHECK-NEXT: vl %v2, 160(%r15) 3556; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 3557; CHECK-NEXT: vceqh %v0, %v27, %v31 3558; CHECK-NEXT: vceqh %v1, %v26, %v30 3559; CHECK-NEXT: vo %v0, %v1, %v0 3560; CHECK-NEXT: vl %v1, 208(%r15) 3561; CHECK-NEXT: vl %v2, 176(%r15) 3562; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 3563; CHECK-NEXT: br %r14 3564 %cmp0 = icmp eq <16 x i16> %val1, %val2 3565 %cmp1 = icmp eq <16 x i16> %val3, %val4 3566 %and = or <16 x i1> %cmp0, %cmp1 3567 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 3568 ret <16 x i16> %sel 3569} 3570 3571define <16 x i32> @fun125(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i32> %val5, <16 x i32> %val6) { 3572; CHECK-LABEL: fun125: 3573; CHECK: # BB#0: 3574; CHECK-NEXT: vceqh %v0, %v25, %v29 3575; CHECK-NEXT: vceqh %v1, %v24, %v28 3576; CHECK-NEXT: vo %v0, %v1, %v0 3577; CHECK-NEXT: vl %v2, 224(%r15) 3578; CHECK-NEXT: vl %v3, 160(%r15) 3579; CHECK-NEXT: vuphh %v1, %v0 3580; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 3581; CHECK-NEXT: vceqh %v1, %v27, %v31 3582; CHECK-NEXT: vceqh %v2, %v26, %v30 3583; CHECK-NEXT: vo %v1, %v2, %v1 3584; CHECK-NEXT: vl %v3, 256(%r15) 3585; CHECK-NEXT: vl %v4, 192(%r15) 3586; CHECK-NEXT: vuphh %v2, %v1 3587; CHECK-NEXT: vmrlg %v0, %v0, %v0 3588; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 3589; CHECK-NEXT: vl %v2, 240(%r15) 3590; CHECK-NEXT: vl %v3, 176(%r15) 3591; CHECK-NEXT: vuphh %v0, %v0 3592; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 3593; CHECK-NEXT: vmrlg %v0, %v1, %v1 3594; CHECK-NEXT: vl %v1, 272(%r15) 3595; CHECK-NEXT: vl %v2, 208(%r15) 3596; CHECK-NEXT: vuphh %v0, %v0 3597; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3598; CHECK-NEXT: br %r14 3599 %cmp0 = icmp eq <16 x i16> %val1, %val2 3600 %cmp1 = icmp eq <16 x i16> %val3, %val4 3601 %and = or <16 x i1> %cmp0, %cmp1 3602 %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6 3603 ret <16 x i32> %sel 3604} 3605 3606define <16 x i8> @fun126(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i8> %val5, <16 x i8> %val6) { 3607; CHECK-LABEL: fun126: 3608; CHECK: # BB#0: 3609; CHECK-NEXT: vl %v0, 208(%r15) 3610; CHECK-NEXT: vl %v1, 192(%r15) 3611; CHECK-NEXT: vceqf %v0, %v31, %v0 3612; CHECK-NEXT: vceqf %v1, %v29, %v1 3613; CHECK-NEXT: vpkf %v0, %v1, %v0 3614; CHECK-NEXT: vceqh %v1, %v26, %v30 3615; CHECK-NEXT: vo %v0, %v1, %v0 3616; CHECK-NEXT: vl %v1, 176(%r15) 3617; CHECK-NEXT: vl %v2, 160(%r15) 3618; CHECK-NEXT: vceqf %v1, %v27, %v1 3619; CHECK-NEXT: vceqf %v2, %v25, %v2 3620; CHECK-NEXT: vpkf %v1, %v2, %v1 3621; CHECK-NEXT: vceqh %v2, %v24, %v28 3622; CHECK-NEXT: vo %v1, %v2, %v1 3623; CHECK-NEXT: vpkh %v0, %v1, %v0 3624; CHECK-NEXT: vl %v1, 240(%r15) 3625; CHECK-NEXT: vl %v2, 224(%r15) 3626; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 3627; CHECK-NEXT: br %r14 3628 %cmp0 = icmp eq <16 x i16> %val1, %val2 3629 %cmp1 = icmp eq <16 x i32> %val3, %val4 3630 %and = or <16 x i1> %cmp0, %cmp1 3631 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 3632 ret <16 x i8> %sel 3633} 3634 3635define <16 x i32> @fun127(<16 x i16> %val1, <16 x i16> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i32> %val5, <16 x i32> %val6) { 3636; CHECK-LABEL: fun127: 3637; CHECK: # BB#0: 3638; CHECK-NEXT: vl %v0, 240(%r15) 3639; CHECK-NEXT: vl %v1, 224(%r15) 3640; CHECK-NEXT: vceqg %v0, %v27, %v0 3641; CHECK-NEXT: vceqg %v1, %v25, %v1 3642; CHECK-NEXT: vpkg %v0, %v1, %v0 3643; CHECK-NEXT: vceqh %v1, %v24, %v28 3644; CHECK-NEXT: vuphh %v2, %v1 3645; CHECK-NEXT: vo %v0, %v2, %v0 3646; CHECK-NEXT: vl %v2, 416(%r15) 3647; CHECK-NEXT: vl %v3, 352(%r15) 3648; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 3649; CHECK-NEXT: vl %v0, 304(%r15) 3650; CHECK-NEXT: vl %v2, 176(%r15) 3651; CHECK-NEXT: vceqg %v0, %v2, %v0 3652; CHECK-NEXT: vl %v2, 288(%r15) 3653; CHECK-NEXT: vl %v3, 160(%r15) 3654; CHECK-NEXT: vceqg %v2, %v3, %v2 3655; CHECK-NEXT: vpkg %v0, %v2, %v0 3656; CHECK-NEXT: vceqh %v2, %v26, %v30 3657; CHECK-NEXT: vuphh %v3, %v2 3658; CHECK-NEXT: vo %v0, %v3, %v0 3659; CHECK-NEXT: vl %v3, 448(%r15) 3660; CHECK-NEXT: vl %v4, 384(%r15) 3661; CHECK-NEXT: vsel %v28, %v4, %v3, %v0 3662; CHECK-NEXT: vl %v0, 272(%r15) 3663; CHECK-NEXT: vl %v3, 256(%r15) 3664; CHECK-NEXT: vceqg %v0, %v31, %v0 3665; CHECK-NEXT: vceqg %v3, %v29, %v3 3666; CHECK-NEXT: vmrlg %v1, %v1, %v1 3667; CHECK-NEXT: vpkg %v0, %v3, %v0 3668; CHECK-NEXT: vuphh %v1, %v1 3669; CHECK-NEXT: vl %v3, 368(%r15) 3670; CHECK-NEXT: vo %v0, %v1, %v0 3671; CHECK-NEXT: vl %v1, 432(%r15) 3672; CHECK-NEXT: vsel %v26, %v3, %v1, %v0 3673; CHECK-NEXT: vl %v0, 336(%r15) 3674; CHECK-NEXT: vl %v1, 208(%r15) 3675; CHECK-NEXT: vl %v3, 192(%r15) 3676; CHECK-NEXT: vceqg %v0, %v1, %v0 3677; CHECK-NEXT: vl %v1, 320(%r15) 3678; CHECK-NEXT: vceqg %v1, %v3, %v1 3679; CHECK-NEXT: vpkg %v0, %v1, %v0 3680; CHECK-NEXT: vmrlg %v1, %v2, %v2 3681; CHECK-NEXT: vl %v2, 400(%r15) 3682; CHECK-NEXT: vuphh %v1, %v1 3683; CHECK-NEXT: vo %v0, %v1, %v0 3684; CHECK-NEXT: vl %v1, 464(%r15) 3685; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3686; CHECK-NEXT: br %r14 3687 %cmp0 = icmp eq <16 x i16> %val1, %val2 3688 %cmp1 = icmp eq <16 x i64> %val3, %val4 3689 %and = or <16 x i1> %cmp0, %cmp1 3690 %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6 3691 ret <16 x i32> %sel 3692} 3693 3694define <16 x double> @fun128(<16 x i16> %val1, <16 x i16> %val2, <16 x float> %val3, <16 x float> %val4, <16 x double> %val5, <16 x double> %val6) { 3695; CHECK-LABEL: fun128: 3696; CHECK: # BB#0: 3697; CHECK-NEXT: vl %v0, 160(%r15) 3698; CHECK-NEXT: vmrlf %v1, %v0, %v0 3699; CHECK-NEXT: vmrlf %v2, %v25, %v25 3700; CHECK-NEXT: vldeb %v1, %v1 3701; CHECK-NEXT: vldeb %v2, %v2 3702; CHECK-NEXT: vfchdb %v1, %v2, %v1 3703; CHECK-NEXT: vmrhf %v0, %v0, %v0 3704; CHECK-NEXT: vmrhf %v2, %v25, %v25 3705; CHECK-NEXT: vldeb %v0, %v0 3706; CHECK-NEXT: vldeb %v2, %v2 3707; CHECK-NEXT: vl %v3, 352(%r15) 3708; CHECK-NEXT: vl %v4, 224(%r15) 3709; CHECK-NEXT: vl %v5, 416(%r15) 3710; CHECK-NEXT: vl %v6, 288(%r15) 3711; CHECK-NEXT: vfchdb %v0, %v2, %v0 3712; CHECK-NEXT: vpkg %v0, %v0, %v1 3713; CHECK-NEXT: vceqh %v1, %v24, %v28 3714; CHECK-NEXT: vuphh %v2, %v1 3715; CHECK-NEXT: vo %v0, %v2, %v0 3716; CHECK-NEXT: vuphf %v2, %v0 3717; CHECK-NEXT: vsel %v24, %v4, %v3, %v2 3718; CHECK-NEXT: vl %v2, 176(%r15) 3719; CHECK-NEXT: vmrlf %v3, %v2, %v2 3720; CHECK-NEXT: vmrlf %v4, %v27, %v27 3721; CHECK-NEXT: vmrhf %v2, %v2, %v2 3722; CHECK-NEXT: vmrlg %v1, %v1, %v1 3723; CHECK-NEXT: vuphh %v1, %v1 3724; CHECK-NEXT: vmrlg %v0, %v0, %v0 3725; CHECK-NEXT: vuphf %v0, %v0 3726; CHECK-NEXT: vldeb %v3, %v3 3727; CHECK-NEXT: vldeb %v4, %v4 3728; CHECK-NEXT: vfchdb %v3, %v4, %v3 3729; CHECK-NEXT: vmrhf %v4, %v27, %v27 3730; CHECK-NEXT: vldeb %v2, %v2 3731; CHECK-NEXT: vldeb %v4, %v4 3732; CHECK-NEXT: vfchdb %v2, %v4, %v2 3733; CHECK-NEXT: vl %v4, 256(%r15) 3734; CHECK-NEXT: vpkg %v2, %v2, %v3 3735; CHECK-NEXT: vl %v3, 384(%r15) 3736; CHECK-NEXT: vo %v1, %v1, %v2 3737; CHECK-NEXT: vuphf %v2, %v1 3738; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 3739; CHECK-NEXT: vl %v2, 192(%r15) 3740; CHECK-NEXT: vmrlf %v3, %v2, %v2 3741; CHECK-NEXT: vmrlf %v4, %v29, %v29 3742; CHECK-NEXT: vmrhf %v2, %v2, %v2 3743; CHECK-NEXT: vldeb %v3, %v3 3744; CHECK-NEXT: vldeb %v4, %v4 3745; CHECK-NEXT: vfchdb %v3, %v4, %v3 3746; CHECK-NEXT: vmrhf %v4, %v29, %v29 3747; CHECK-NEXT: vldeb %v2, %v2 3748; CHECK-NEXT: vldeb %v4, %v4 3749; CHECK-NEXT: vfchdb %v2, %v4, %v2 3750; CHECK-NEXT: vpkg %v2, %v2, %v3 3751; CHECK-NEXT: vceqh %v3, %v26, %v30 3752; CHECK-NEXT: vuphh %v4, %v3 3753; CHECK-NEXT: vo %v2, %v4, %v2 3754; CHECK-NEXT: vuphf %v4, %v2 3755; CHECK-NEXT: vsel %v25, %v6, %v5, %v4 3756; CHECK-NEXT: vl %v4, 208(%r15) 3757; CHECK-NEXT: vmrlf %v5, %v4, %v4 3758; CHECK-NEXT: vmrlf %v6, %v31, %v31 3759; CHECK-NEXT: vmrhf %v4, %v4, %v4 3760; CHECK-NEXT: vmrlg %v3, %v3, %v3 3761; CHECK-NEXT: vuphh %v3, %v3 3762; CHECK-NEXT: vldeb %v5, %v5 3763; CHECK-NEXT: vldeb %v6, %v6 3764; CHECK-NEXT: vfchdb %v5, %v6, %v5 3765; CHECK-NEXT: vmrhf %v6, %v31, %v31 3766; CHECK-NEXT: vldeb %v4, %v4 3767; CHECK-NEXT: vldeb %v6, %v6 3768; CHECK-NEXT: vfchdb %v4, %v6, %v4 3769; CHECK-NEXT: vl %v6, 320(%r15) 3770; CHECK-NEXT: vpkg %v4, %v4, %v5 3771; CHECK-NEXT: vl %v5, 448(%r15) 3772; CHECK-NEXT: vo %v3, %v3, %v4 3773; CHECK-NEXT: vuphf %v4, %v3 3774; CHECK-NEXT: vsel %v29, %v6, %v5, %v4 3775; CHECK-NEXT: vl %v4, 368(%r15) 3776; CHECK-NEXT: vl %v5, 240(%r15) 3777; CHECK-NEXT: vsel %v26, %v5, %v4, %v0 3778; CHECK-NEXT: vl %v4, 272(%r15) 3779; CHECK-NEXT: vmrlg %v0, %v1, %v1 3780; CHECK-NEXT: vl %v1, 400(%r15) 3781; CHECK-NEXT: vuphf %v0, %v0 3782; CHECK-NEXT: vsel %v30, %v4, %v1, %v0 3783; CHECK-NEXT: vl %v1, 432(%r15) 3784; CHECK-NEXT: vmrlg %v0, %v2, %v2 3785; CHECK-NEXT: vl %v2, 304(%r15) 3786; CHECK-NEXT: vuphf %v0, %v0 3787; CHECK-NEXT: vsel %v27, %v2, %v1, %v0 3788; CHECK-NEXT: vl %v1, 464(%r15) 3789; CHECK-NEXT: vl %v2, 336(%r15) 3790; CHECK-NEXT: vmrlg %v0, %v3, %v3 3791; CHECK-NEXT: vuphf %v0, %v0 3792; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 3793; CHECK-NEXT: br %r14 3794 %cmp0 = icmp eq <16 x i16> %val1, %val2 3795 %cmp1 = fcmp ogt <16 x float> %val3, %val4 3796 %and = or <16 x i1> %cmp0, %cmp1 3797 %sel = select <16 x i1> %and, <16 x double> %val5, <16 x double> %val6 3798 ret <16 x double> %sel 3799} 3800 3801define <16 x i32> @fun129(<16 x i16> %val1, <16 x i16> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i32> %val5, <16 x i32> %val6) { 3802; CHECK-LABEL: fun129: 3803; CHECK: # BB#0: 3804; CHECK-NEXT: vl %v0, 240(%r15) 3805; CHECK-NEXT: vl %v1, 224(%r15) 3806; CHECK-NEXT: vfchdb %v0, %v27, %v0 3807; CHECK-NEXT: vfchdb %v1, %v25, %v1 3808; CHECK-NEXT: vpkg %v0, %v1, %v0 3809; CHECK-NEXT: vceqh %v1, %v24, %v28 3810; CHECK-NEXT: vuphh %v2, %v1 3811; CHECK-NEXT: vo %v0, %v2, %v0 3812; CHECK-NEXT: vl %v2, 416(%r15) 3813; CHECK-NEXT: vl %v3, 352(%r15) 3814; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 3815; CHECK-NEXT: vl %v0, 304(%r15) 3816; CHECK-NEXT: vl %v2, 176(%r15) 3817; CHECK-NEXT: vfchdb %v0, %v2, %v0 3818; CHECK-NEXT: vl %v2, 288(%r15) 3819; CHECK-NEXT: vl %v3, 160(%r15) 3820; CHECK-NEXT: vfchdb %v2, %v3, %v2 3821; CHECK-NEXT: vpkg %v0, %v2, %v0 3822; CHECK-NEXT: vceqh %v2, %v26, %v30 3823; CHECK-NEXT: vuphh %v3, %v2 3824; CHECK-NEXT: vo %v0, %v3, %v0 3825; CHECK-NEXT: vl %v3, 448(%r15) 3826; CHECK-NEXT: vl %v4, 384(%r15) 3827; CHECK-NEXT: vsel %v28, %v4, %v3, %v0 3828; CHECK-NEXT: vl %v0, 272(%r15) 3829; CHECK-NEXT: vl %v3, 256(%r15) 3830; CHECK-NEXT: vfchdb %v0, %v31, %v0 3831; CHECK-NEXT: vfchdb %v3, %v29, %v3 3832; CHECK-NEXT: vmrlg %v1, %v1, %v1 3833; CHECK-NEXT: vpkg %v0, %v3, %v0 3834; CHECK-NEXT: vuphh %v1, %v1 3835; CHECK-NEXT: vl %v3, 368(%r15) 3836; CHECK-NEXT: vo %v0, %v1, %v0 3837; CHECK-NEXT: vl %v1, 432(%r15) 3838; CHECK-NEXT: vsel %v26, %v3, %v1, %v0 3839; CHECK-NEXT: vl %v0, 336(%r15) 3840; CHECK-NEXT: vl %v1, 208(%r15) 3841; CHECK-NEXT: vl %v3, 192(%r15) 3842; CHECK-NEXT: vfchdb %v0, %v1, %v0 3843; CHECK-NEXT: vl %v1, 320(%r15) 3844; CHECK-NEXT: vfchdb %v1, %v3, %v1 3845; CHECK-NEXT: vpkg %v0, %v1, %v0 3846; CHECK-NEXT: vmrlg %v1, %v2, %v2 3847; CHECK-NEXT: vl %v2, 400(%r15) 3848; CHECK-NEXT: vuphh %v1, %v1 3849; CHECK-NEXT: vo %v0, %v1, %v0 3850; CHECK-NEXT: vl %v1, 464(%r15) 3851; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3852; CHECK-NEXT: br %r14 3853 %cmp0 = icmp eq <16 x i16> %val1, %val2 3854 %cmp1 = fcmp ogt <16 x double> %val3, %val4 3855 %and = or <16 x i1> %cmp0, %cmp1 3856 %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6 3857 ret <16 x i32> %sel 3858} 3859 3860define <2 x i8> @fun130(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i8> %val5, <2 x i8> %val6) { 3861; CHECK-LABEL: fun130: 3862; CHECK: # BB#0: 3863; CHECK-NEXT: vceqb %v0, %v28, %v30 3864; CHECK-NEXT: vceqb %v1, %v24, %v26 3865; CHECK-NEXT: vx %v0, %v1, %v0 3866; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 3867; CHECK-NEXT: br %r14 3868 %cmp0 = icmp eq <2 x i8> %val1, %val2 3869 %cmp1 = icmp eq <2 x i8> %val3, %val4 3870 %and = xor <2 x i1> %cmp0, %cmp1 3871 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 3872 ret <2 x i8> %sel 3873} 3874 3875define <2 x i16> @fun131(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i16> %val5, <2 x i16> %val6) { 3876; CHECK-LABEL: fun131: 3877; CHECK: # BB#0: 3878; CHECK-NEXT: vceqb %v0, %v28, %v30 3879; CHECK-NEXT: vceqb %v1, %v24, %v26 3880; CHECK-NEXT: vx %v0, %v1, %v0 3881; CHECK-NEXT: vuphb %v0, %v0 3882; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 3883; CHECK-NEXT: br %r14 3884 %cmp0 = icmp eq <2 x i8> %val1, %val2 3885 %cmp1 = icmp eq <2 x i8> %val3, %val4 3886 %and = xor <2 x i1> %cmp0, %cmp1 3887 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 3888 ret <2 x i16> %sel 3889} 3890 3891define <2 x i8> @fun132(<2 x i8> %val1, <2 x i8> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) { 3892; CHECK-LABEL: fun132: 3893; CHECK: # BB#0: 3894; CHECK-NEXT: vceqh %v1, %v28, %v30 3895; CHECK-NEXT: vceqb %v0, %v24, %v26 3896; CHECK-NEXT: vpkh %v1, %v1, %v1 3897; CHECK-NEXT: vx %v0, %v0, %v1 3898; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 3899; CHECK-NEXT: br %r14 3900 %cmp0 = icmp eq <2 x i8> %val1, %val2 3901 %cmp1 = icmp eq <2 x i16> %val3, %val4 3902 %and = xor <2 x i1> %cmp0, %cmp1 3903 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 3904 ret <2 x i8> %sel 3905} 3906 3907define <2 x i32> @fun133(<2 x i8> %val1, <2 x i8> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) { 3908; CHECK-LABEL: fun133: 3909; CHECK: # BB#0: 3910; CHECK-NEXT: vceqb %v1, %v24, %v26 3911; CHECK-NEXT: vuphb %v1, %v1 3912; CHECK-NEXT: vceqf %v0, %v28, %v30 3913; CHECK-NEXT: vuphh %v1, %v1 3914; CHECK-NEXT: vx %v0, %v1, %v0 3915; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 3916; CHECK-NEXT: br %r14 3917 %cmp0 = icmp eq <2 x i8> %val1, %val2 3918 %cmp1 = icmp eq <2 x i32> %val3, %val4 3919 %and = xor <2 x i1> %cmp0, %cmp1 3920 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 3921 ret <2 x i32> %sel 3922} 3923 3924define <2 x i32> @fun134(<2 x i8> %val1, <2 x i8> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i32> %val5, <2 x i32> %val6) { 3925; CHECK-LABEL: fun134: 3926; CHECK: # BB#0: 3927; CHECK-NEXT: vceqb %v1, %v24, %v26 3928; CHECK-NEXT: vceqg %v0, %v28, %v30 3929; CHECK-NEXT: vuphb %v1, %v1 3930; CHECK-NEXT: vpkg %v0, %v0, %v0 3931; CHECK-NEXT: vuphh %v1, %v1 3932; CHECK-NEXT: vx %v0, %v1, %v0 3933; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 3934; CHECK-NEXT: br %r14 3935 %cmp0 = icmp eq <2 x i8> %val1, %val2 3936 %cmp1 = icmp eq <2 x i64> %val3, %val4 3937 %and = xor <2 x i1> %cmp0, %cmp1 3938 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 3939 ret <2 x i32> %sel 3940} 3941 3942define <2 x i16> @fun135(<2 x i8> %val1, <2 x i8> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) { 3943; CHECK-LABEL: fun135: 3944; CHECK: # BB#0: 3945; CHECK-NEXT: vmrlf %v0, %v30, %v30 3946; CHECK-NEXT: vmrlf %v1, %v28, %v28 3947; CHECK-NEXT: vldeb %v0, %v0 3948; CHECK-NEXT: vldeb %v1, %v1 3949; CHECK-NEXT: vfchdb %v0, %v1, %v0 3950; CHECK-NEXT: vmrhf %v1, %v30, %v30 3951; CHECK-NEXT: vmrhf %v2, %v28, %v28 3952; CHECK-NEXT: vldeb %v1, %v1 3953; CHECK-NEXT: vldeb %v2, %v2 3954; CHECK-NEXT: vfchdb %v1, %v2, %v1 3955; CHECK-NEXT: vpkg %v0, %v1, %v0 3956; CHECK-NEXT: vceqb %v1, %v24, %v26 3957; CHECK-NEXT: vpkf %v0, %v0, %v0 3958; CHECK-NEXT: vuphb %v1, %v1 3959; CHECK-NEXT: vx %v0, %v1, %v0 3960; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 3961; CHECK-NEXT: br %r14 3962 %cmp0 = icmp eq <2 x i8> %val1, %val2 3963 %cmp1 = fcmp ogt <2 x float> %val3, %val4 3964 %and = xor <2 x i1> %cmp0, %cmp1 3965 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 3966 ret <2 x i16> %sel 3967} 3968 3969define <2 x i64> @fun136(<2 x i8> %val1, <2 x i8> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i64> %val5, <2 x i64> %val6) { 3970; CHECK-LABEL: fun136: 3971; CHECK: # BB#0: 3972; CHECK-NEXT: vceqb %v1, %v24, %v26 3973; CHECK-NEXT: vuphb %v1, %v1 3974; CHECK-NEXT: vuphh %v1, %v1 3975; CHECK-NEXT: vfchdb %v0, %v28, %v30 3976; CHECK-NEXT: vuphf %v1, %v1 3977; CHECK-NEXT: vx %v0, %v1, %v0 3978; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 3979; CHECK-NEXT: br %r14 3980 %cmp0 = icmp eq <2 x i8> %val1, %val2 3981 %cmp1 = fcmp ogt <2 x double> %val3, %val4 3982 %and = xor <2 x i1> %cmp0, %cmp1 3983 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 3984 ret <2 x i64> %sel 3985} 3986 3987define <2 x i8> @fun137(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i8> %val5, <2 x i8> %val6) { 3988; CHECK-LABEL: fun137: 3989; CHECK: # BB#0: 3990; CHECK-NEXT: vceqh %v0, %v28, %v30 3991; CHECK-NEXT: vceqh %v1, %v24, %v26 3992; CHECK-NEXT: vx %v0, %v1, %v0 3993; CHECK-NEXT: vpkh %v0, %v0, %v0 3994; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 3995; CHECK-NEXT: br %r14 3996 %cmp0 = icmp eq <2 x i16> %val1, %val2 3997 %cmp1 = icmp eq <2 x i16> %val3, %val4 3998 %and = xor <2 x i1> %cmp0, %cmp1 3999 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 4000 ret <2 x i8> %sel 4001} 4002 4003define <2 x i16> @fun138(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i16> %val5, <2 x i16> %val6) { 4004; CHECK-LABEL: fun138: 4005; CHECK: # BB#0: 4006; CHECK-NEXT: vceqh %v0, %v28, %v30 4007; CHECK-NEXT: vceqh %v1, %v24, %v26 4008; CHECK-NEXT: vx %v0, %v1, %v0 4009; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4010; CHECK-NEXT: br %r14 4011 %cmp0 = icmp eq <2 x i16> %val1, %val2 4012 %cmp1 = icmp eq <2 x i16> %val3, %val4 4013 %and = xor <2 x i1> %cmp0, %cmp1 4014 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 4015 ret <2 x i16> %sel 4016} 4017 4018define <2 x i32> @fun139(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4, <2 x i32> %val5, <2 x i32> %val6) { 4019; CHECK-LABEL: fun139: 4020; CHECK: # BB#0: 4021; CHECK-NEXT: vceqh %v0, %v28, %v30 4022; CHECK-NEXT: vceqh %v1, %v24, %v26 4023; CHECK-NEXT: vx %v0, %v1, %v0 4024; CHECK-NEXT: vuphh %v0, %v0 4025; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4026; CHECK-NEXT: br %r14 4027 %cmp0 = icmp eq <2 x i16> %val1, %val2 4028 %cmp1 = icmp eq <2 x i16> %val3, %val4 4029 %and = xor <2 x i1> %cmp0, %cmp1 4030 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 4031 ret <2 x i32> %sel 4032} 4033 4034define <2 x i8> @fun140(<2 x i16> %val1, <2 x i16> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i8> %val5, <2 x i8> %val6) { 4035; CHECK-LABEL: fun140: 4036; CHECK: # BB#0: 4037; CHECK-NEXT: vceqf %v1, %v28, %v30 4038; CHECK-NEXT: vceqh %v0, %v24, %v26 4039; CHECK-NEXT: vpkf %v1, %v1, %v1 4040; CHECK-NEXT: vx %v0, %v0, %v1 4041; CHECK-NEXT: vpkh %v0, %v0, %v0 4042; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4043; CHECK-NEXT: br %r14 4044 %cmp0 = icmp eq <2 x i16> %val1, %val2 4045 %cmp1 = icmp eq <2 x i32> %val3, %val4 4046 %and = xor <2 x i1> %cmp0, %cmp1 4047 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 4048 ret <2 x i8> %sel 4049} 4050 4051define <2 x i8> @fun141(<2 x i16> %val1, <2 x i16> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i8> %val5, <2 x i8> %val6) { 4052; CHECK-LABEL: fun141: 4053; CHECK: # BB#0: 4054; CHECK-NEXT: larl %r1, .LCPI141_0 4055; CHECK-NEXT: vl %v1, 0(%r1) 4056; CHECK-NEXT: vceqg %v0, %v28, %v30 4057; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 4058; CHECK-NEXT: vceqh %v1, %v24, %v26 4059; CHECK-NEXT: vx %v0, %v1, %v0 4060; CHECK-NEXT: vpkh %v0, %v0, %v0 4061; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4062; CHECK-NEXT: br %r14 4063 %cmp0 = icmp eq <2 x i16> %val1, %val2 4064 %cmp1 = icmp eq <2 x i64> %val3, %val4 4065 %and = xor <2 x i1> %cmp0, %cmp1 4066 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6 4067 ret <2 x i8> %sel 4068} 4069 4070define <2 x double> @fun142(<2 x i16> %val1, <2 x i16> %val2, <2 x float> %val3, <2 x float> %val4, <2 x double> %val5, <2 x double> %val6) { 4071; CHECK-LABEL: fun142: 4072; CHECK: # BB#0: 4073; CHECK-NEXT: vmrlf %v0, %v30, %v30 4074; CHECK-NEXT: vmrlf %v1, %v28, %v28 4075; CHECK-NEXT: vldeb %v0, %v0 4076; CHECK-NEXT: vldeb %v1, %v1 4077; CHECK-NEXT: vfchdb %v0, %v1, %v0 4078; CHECK-NEXT: vmrhf %v1, %v30, %v30 4079; CHECK-NEXT: vmrhf %v2, %v28, %v28 4080; CHECK-NEXT: vldeb %v1, %v1 4081; CHECK-NEXT: vldeb %v2, %v2 4082; CHECK-NEXT: vfchdb %v1, %v2, %v1 4083; CHECK-NEXT: vpkg %v0, %v1, %v0 4084; CHECK-NEXT: vceqh %v1, %v24, %v26 4085; CHECK-NEXT: vuphh %v1, %v1 4086; CHECK-NEXT: vx %v0, %v1, %v0 4087; CHECK-NEXT: vuphf %v0, %v0 4088; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4089; CHECK-NEXT: br %r14 4090 %cmp0 = icmp eq <2 x i16> %val1, %val2 4091 %cmp1 = fcmp ogt <2 x float> %val3, %val4 4092 %and = xor <2 x i1> %cmp0, %cmp1 4093 %sel = select <2 x i1> %and, <2 x double> %val5, <2 x double> %val6 4094 ret <2 x double> %sel 4095} 4096 4097define <2 x i16> @fun143(<2 x i16> %val1, <2 x i16> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) { 4098; CHECK-LABEL: fun143: 4099; CHECK: # BB#0: 4100; CHECK-NEXT: larl %r1, .LCPI143_0 4101; CHECK-NEXT: vl %v1, 0(%r1) 4102; CHECK-NEXT: vfchdb %v0, %v28, %v30 4103; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 4104; CHECK-NEXT: vceqh %v1, %v24, %v26 4105; CHECK-NEXT: vx %v0, %v1, %v0 4106; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4107; CHECK-NEXT: br %r14 4108 %cmp0 = icmp eq <2 x i16> %val1, %val2 4109 %cmp1 = fcmp ogt <2 x double> %val3, %val4 4110 %and = xor <2 x i1> %cmp0, %cmp1 4111 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 4112 ret <2 x i16> %sel 4113} 4114 4115define <2 x i16> @fun144(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i16> %val5, <2 x i16> %val6) { 4116; CHECK-LABEL: fun144: 4117; CHECK: # BB#0: 4118; CHECK-NEXT: vceqf %v0, %v28, %v30 4119; CHECK-NEXT: vceqf %v1, %v24, %v26 4120; CHECK-NEXT: vx %v0, %v1, %v0 4121; CHECK-NEXT: vpkf %v0, %v0, %v0 4122; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4123; CHECK-NEXT: br %r14 4124 %cmp0 = icmp eq <2 x i32> %val1, %val2 4125 %cmp1 = icmp eq <2 x i32> %val3, %val4 4126 %and = xor <2 x i1> %cmp0, %cmp1 4127 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 4128 ret <2 x i16> %sel 4129} 4130 4131define <2 x i32> @fun145(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i32> %val5, <2 x i32> %val6) { 4132; CHECK-LABEL: fun145: 4133; CHECK: # BB#0: 4134; CHECK-NEXT: vceqf %v0, %v28, %v30 4135; CHECK-NEXT: vceqf %v1, %v24, %v26 4136; CHECK-NEXT: vx %v0, %v1, %v0 4137; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4138; CHECK-NEXT: br %r14 4139 %cmp0 = icmp eq <2 x i32> %val1, %val2 4140 %cmp1 = icmp eq <2 x i32> %val3, %val4 4141 %and = xor <2 x i1> %cmp0, %cmp1 4142 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 4143 ret <2 x i32> %sel 4144} 4145 4146define <2 x i64> @fun146(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4, <2 x i64> %val5, <2 x i64> %val6) { 4147; CHECK-LABEL: fun146: 4148; CHECK: # BB#0: 4149; CHECK-NEXT: vceqf %v0, %v28, %v30 4150; CHECK-NEXT: vceqf %v1, %v24, %v26 4151; CHECK-NEXT: vx %v0, %v1, %v0 4152; CHECK-NEXT: vuphf %v0, %v0 4153; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4154; CHECK-NEXT: br %r14 4155 %cmp0 = icmp eq <2 x i32> %val1, %val2 4156 %cmp1 = icmp eq <2 x i32> %val3, %val4 4157 %and = xor <2 x i1> %cmp0, %cmp1 4158 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 4159 ret <2 x i64> %sel 4160} 4161 4162define <2 x i64> @fun147(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) { 4163; CHECK-LABEL: fun147: 4164; CHECK: # BB#0: 4165; CHECK-NEXT: vceqf %v1, %v24, %v26 4166; CHECK-NEXT: vceqg %v0, %v28, %v30 4167; CHECK-NEXT: vuphf %v1, %v1 4168; CHECK-NEXT: vx %v0, %v1, %v0 4169; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4170; CHECK-NEXT: br %r14 4171 %cmp0 = icmp eq <2 x i32> %val1, %val2 4172 %cmp1 = icmp eq <2 x i64> %val3, %val4 4173 %and = xor <2 x i1> %cmp0, %cmp1 4174 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 4175 ret <2 x i64> %sel 4176} 4177 4178define <2 x i16> @fun148(<2 x i32> %val1, <2 x i32> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i16> %val5, <2 x i16> %val6) { 4179; CHECK-LABEL: fun148: 4180; CHECK: # BB#0: 4181; CHECK-NEXT: vmrlf %v0, %v30, %v30 4182; CHECK-NEXT: vmrlf %v1, %v28, %v28 4183; CHECK-NEXT: vldeb %v0, %v0 4184; CHECK-NEXT: vldeb %v1, %v1 4185; CHECK-NEXT: vfchdb %v0, %v1, %v0 4186; CHECK-NEXT: vmrhf %v1, %v30, %v30 4187; CHECK-NEXT: vmrhf %v2, %v28, %v28 4188; CHECK-NEXT: vldeb %v1, %v1 4189; CHECK-NEXT: vldeb %v2, %v2 4190; CHECK-NEXT: vfchdb %v1, %v2, %v1 4191; CHECK-NEXT: vpkg %v0, %v1, %v0 4192; CHECK-NEXT: vceqf %v1, %v24, %v26 4193; CHECK-NEXT: vx %v0, %v1, %v0 4194; CHECK-NEXT: vpkf %v0, %v0, %v0 4195; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4196; CHECK-NEXT: br %r14 4197 %cmp0 = icmp eq <2 x i32> %val1, %val2 4198 %cmp1 = fcmp ogt <2 x float> %val3, %val4 4199 %and = xor <2 x i1> %cmp0, %cmp1 4200 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 4201 ret <2 x i16> %sel 4202} 4203 4204define <2 x float> @fun149(<2 x i32> %val1, <2 x i32> %val2, <2 x double> %val3, <2 x double> %val4, <2 x float> %val5, <2 x float> %val6) { 4205; CHECK-LABEL: fun149: 4206; CHECK: # BB#0: 4207; CHECK-NEXT: vfchdb %v1, %v28, %v30 4208; CHECK-NEXT: vceqf %v0, %v24, %v26 4209; CHECK-NEXT: vpkg %v1, %v1, %v1 4210; CHECK-NEXT: vx %v0, %v0, %v1 4211; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4212; CHECK-NEXT: br %r14 4213 %cmp0 = icmp eq <2 x i32> %val1, %val2 4214 %cmp1 = fcmp ogt <2 x double> %val3, %val4 4215 %and = xor <2 x i1> %cmp0, %cmp1 4216 %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6 4217 ret <2 x float> %sel 4218} 4219 4220define <2 x i16> @fun150(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i16> %val5, <2 x i16> %val6) { 4221; CHECK-LABEL: fun150: 4222; CHECK: # BB#0: 4223; CHECK-NEXT: vceqg %v0, %v28, %v30 4224; CHECK-NEXT: vceqg %v1, %v24, %v26 4225; CHECK-NEXT: larl %r1, .LCPI150_0 4226; CHECK-NEXT: vx %v0, %v1, %v0 4227; CHECK-NEXT: vl %v1, 0(%r1) 4228; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 4229; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4230; CHECK-NEXT: br %r14 4231 %cmp0 = icmp eq <2 x i64> %val1, %val2 4232 %cmp1 = icmp eq <2 x i64> %val3, %val4 4233 %and = xor <2 x i1> %cmp0, %cmp1 4234 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 4235 ret <2 x i16> %sel 4236} 4237 4238define <2 x i64> @fun151(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) { 4239; CHECK-LABEL: fun151: 4240; CHECK: # BB#0: 4241; CHECK-NEXT: vceqg %v0, %v28, %v30 4242; CHECK-NEXT: vceqg %v1, %v24, %v26 4243; CHECK-NEXT: vx %v0, %v1, %v0 4244; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4245; CHECK-NEXT: br %r14 4246 %cmp0 = icmp eq <2 x i64> %val1, %val2 4247 %cmp1 = icmp eq <2 x i64> %val3, %val4 4248 %and = xor <2 x i1> %cmp0, %cmp1 4249 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 4250 ret <2 x i64> %sel 4251} 4252 4253define <2 x i64> @fun152(<2 x i64> %val1, <2 x i64> %val2, <2 x float> %val3, <2 x float> %val4, <2 x i64> %val5, <2 x i64> %val6) { 4254; CHECK-LABEL: fun152: 4255; CHECK: # BB#0: 4256; CHECK-NEXT: vmrlf %v0, %v30, %v30 4257; CHECK-NEXT: vmrlf %v1, %v28, %v28 4258; CHECK-NEXT: vldeb %v0, %v0 4259; CHECK-NEXT: vldeb %v1, %v1 4260; CHECK-NEXT: vfchdb %v0, %v1, %v0 4261; CHECK-NEXT: vmrhf %v1, %v30, %v30 4262; CHECK-NEXT: vmrhf %v2, %v28, %v28 4263; CHECK-NEXT: vldeb %v1, %v1 4264; CHECK-NEXT: vldeb %v2, %v2 4265; CHECK-NEXT: vfchdb %v1, %v2, %v1 4266; CHECK-NEXT: vpkg %v0, %v1, %v0 4267; CHECK-NEXT: vuphf %v0, %v0 4268; CHECK-NEXT: vceqg %v1, %v24, %v26 4269; CHECK-NEXT: vx %v0, %v1, %v0 4270; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4271; CHECK-NEXT: br %r14 4272 %cmp0 = icmp eq <2 x i64> %val1, %val2 4273 %cmp1 = fcmp ogt <2 x float> %val3, %val4 4274 %and = xor <2 x i1> %cmp0, %cmp1 4275 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6 4276 ret <2 x i64> %sel 4277} 4278 4279define <2 x i16> @fun153(<2 x i64> %val1, <2 x i64> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i16> %val5, <2 x i16> %val6) { 4280; CHECK-LABEL: fun153: 4281; CHECK: # BB#0: 4282; CHECK-NEXT: vfchdb %v0, %v28, %v30 4283; CHECK-NEXT: vceqg %v1, %v24, %v26 4284; CHECK-NEXT: larl %r1, .LCPI153_0 4285; CHECK-NEXT: vx %v0, %v1, %v0 4286; CHECK-NEXT: vl %v1, 0(%r1) 4287; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 4288; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4289; CHECK-NEXT: br %r14 4290 %cmp0 = icmp eq <2 x i64> %val1, %val2 4291 %cmp1 = fcmp ogt <2 x double> %val3, %val4 4292 %and = xor <2 x i1> %cmp0, %cmp1 4293 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6 4294 ret <2 x i16> %sel 4295} 4296 4297define <2 x float> @fun154(<2 x float> %val1, <2 x float> %val2, <2 x float> %val3, <2 x float> %val4, <2 x float> %val5, <2 x float> %val6) { 4298; CHECK-LABEL: fun154: 4299; CHECK: # BB#0: 4300; CHECK-NEXT: vmrlf %v0, %v30, %v30 4301; CHECK-NEXT: vmrlf %v1, %v28, %v28 4302; CHECK-NEXT: vldeb %v0, %v0 4303; CHECK-NEXT: vldeb %v1, %v1 4304; CHECK-NEXT: vfchdb %v0, %v1, %v0 4305; CHECK-NEXT: vmrhf %v1, %v30, %v30 4306; CHECK-NEXT: vmrhf %v2, %v28, %v28 4307; CHECK-NEXT: vldeb %v1, %v1 4308; CHECK-NEXT: vmrhf %v3, %v24, %v24 4309; CHECK-NEXT: vldeb %v2, %v2 4310; CHECK-NEXT: vfchdb %v1, %v2, %v1 4311; CHECK-NEXT: vpkg %v0, %v1, %v0 4312; CHECK-NEXT: vmrlf %v1, %v26, %v26 4313; CHECK-NEXT: vmrlf %v2, %v24, %v24 4314; CHECK-NEXT: vldeb %v1, %v1 4315; CHECK-NEXT: vldeb %v2, %v2 4316; CHECK-NEXT: vfchdb %v1, %v2, %v1 4317; CHECK-NEXT: vmrhf %v2, %v26, %v26 4318; CHECK-NEXT: vldeb %v2, %v2 4319; CHECK-NEXT: vldeb %v3, %v3 4320; CHECK-NEXT: vfchdb %v2, %v3, %v2 4321; CHECK-NEXT: vpkg %v1, %v2, %v1 4322; CHECK-NEXT: vx %v0, %v1, %v0 4323; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4324; CHECK-NEXT: br %r14 4325 %cmp0 = fcmp ogt <2 x float> %val1, %val2 4326 %cmp1 = fcmp ogt <2 x float> %val3, %val4 4327 %and = xor <2 x i1> %cmp0, %cmp1 4328 %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6 4329 ret <2 x float> %sel 4330} 4331 4332define <2 x i32> @fun155(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4, <2 x i32> %val5, <2 x i32> %val6) { 4333; CHECK-LABEL: fun155: 4334; CHECK: # BB#0: 4335; CHECK-NEXT: vmrlf %v0, %v26, %v26 4336; CHECK-NEXT: vmrlf %v1, %v24, %v24 4337; CHECK-NEXT: vldeb %v0, %v0 4338; CHECK-NEXT: vldeb %v1, %v1 4339; CHECK-NEXT: vfchdb %v0, %v1, %v0 4340; CHECK-NEXT: vmrhf %v1, %v26, %v26 4341; CHECK-NEXT: vmrhf %v2, %v24, %v24 4342; CHECK-NEXT: vldeb %v1, %v1 4343; CHECK-NEXT: vldeb %v2, %v2 4344; CHECK-NEXT: vfchdb %v1, %v2, %v1 4345; CHECK-NEXT: vpkg %v0, %v1, %v0 4346; CHECK-NEXT: vfchdb %v1, %v28, %v30 4347; CHECK-NEXT: vpkg %v1, %v1, %v1 4348; CHECK-NEXT: vx %v0, %v0, %v1 4349; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4350; CHECK-NEXT: br %r14 4351 %cmp0 = fcmp ogt <2 x float> %val1, %val2 4352 %cmp1 = fcmp ogt <2 x double> %val3, %val4 4353 %and = xor <2 x i1> %cmp0, %cmp1 4354 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6 4355 ret <2 x i32> %sel 4356} 4357 4358define <4 x i16> @fun156(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i16> %val5, <4 x i16> %val6) { 4359; CHECK-LABEL: fun156: 4360; CHECK: # BB#0: 4361; CHECK-NEXT: vceqf %v0, %v28, %v30 4362; CHECK-NEXT: vceqf %v1, %v24, %v26 4363; CHECK-NEXT: vx %v0, %v1, %v0 4364; CHECK-NEXT: vpkf %v0, %v0, %v0 4365; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4366; CHECK-NEXT: br %r14 4367 %cmp0 = icmp eq <4 x i32> %val1, %val2 4368 %cmp1 = icmp eq <4 x i32> %val3, %val4 4369 %and = xor <4 x i1> %cmp0, %cmp1 4370 %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6 4371 ret <4 x i16> %sel 4372} 4373 4374define <4 x i32> @fun157(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i32> %val5, <4 x i32> %val6) { 4375; CHECK-LABEL: fun157: 4376; CHECK: # BB#0: 4377; CHECK-NEXT: vceqf %v0, %v28, %v30 4378; CHECK-NEXT: vceqf %v1, %v24, %v26 4379; CHECK-NEXT: vx %v0, %v1, %v0 4380; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4381; CHECK-NEXT: br %r14 4382 %cmp0 = icmp eq <4 x i32> %val1, %val2 4383 %cmp1 = icmp eq <4 x i32> %val3, %val4 4384 %and = xor <4 x i1> %cmp0, %cmp1 4385 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 4386 ret <4 x i32> %sel 4387} 4388 4389define <4 x i64> @fun158(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i64> %val5, <4 x i64> %val6) { 4390; CHECK-LABEL: fun158: 4391; CHECK: # BB#0: 4392; CHECK-NEXT: vceqf %v0, %v28, %v30 4393; CHECK-NEXT: vceqf %v1, %v24, %v26 4394; CHECK-NEXT: vx %v0, %v1, %v0 4395; CHECK-NEXT: vuphf %v1, %v0 4396; CHECK-NEXT: vmrlg %v0, %v0, %v0 4397; CHECK-NEXT: vuphf %v0, %v0 4398; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 4399; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 4400; CHECK-NEXT: br %r14 4401 %cmp0 = icmp eq <4 x i32> %val1, %val2 4402 %cmp1 = icmp eq <4 x i32> %val3, %val4 4403 %and = xor <4 x i1> %cmp0, %cmp1 4404 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 4405 ret <4 x i64> %sel 4406} 4407 4408define <4 x i32> @fun159(<4 x i32> %val1, <4 x i32> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) { 4409; CHECK-LABEL: fun159: 4410; CHECK: # BB#0: 4411; CHECK-NEXT: vceqg %v0, %v30, %v27 4412; CHECK-NEXT: vceqg %v1, %v28, %v25 4413; CHECK-NEXT: vpkg %v0, %v1, %v0 4414; CHECK-NEXT: vceqf %v1, %v24, %v26 4415; CHECK-NEXT: vx %v0, %v1, %v0 4416; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 4417; CHECK-NEXT: br %r14 4418 %cmp0 = icmp eq <4 x i32> %val1, %val2 4419 %cmp1 = icmp eq <4 x i64> %val3, %val4 4420 %and = xor <4 x i1> %cmp0, %cmp1 4421 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 4422 ret <4 x i32> %sel 4423} 4424 4425define <4 x i16> @fun160(<4 x i32> %val1, <4 x i32> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) { 4426; CHECK-LABEL: fun160: 4427; CHECK: # BB#0: 4428; CHECK-NEXT: vmrlf %v0, %v30, %v30 4429; CHECK-NEXT: vmrlf %v1, %v28, %v28 4430; CHECK-NEXT: vldeb %v0, %v0 4431; CHECK-NEXT: vldeb %v1, %v1 4432; CHECK-NEXT: vfchdb %v0, %v1, %v0 4433; CHECK-NEXT: vmrhf %v1, %v30, %v30 4434; CHECK-NEXT: vmrhf %v2, %v28, %v28 4435; CHECK-NEXT: vldeb %v1, %v1 4436; CHECK-NEXT: vldeb %v2, %v2 4437; CHECK-NEXT: vfchdb %v1, %v2, %v1 4438; CHECK-NEXT: vpkg %v0, %v1, %v0 4439; CHECK-NEXT: vceqf %v1, %v24, %v26 4440; CHECK-NEXT: vx %v0, %v1, %v0 4441; CHECK-NEXT: vpkf %v0, %v0, %v0 4442; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4443; CHECK-NEXT: br %r14 4444 %cmp0 = icmp eq <4 x i32> %val1, %val2 4445 %cmp1 = fcmp ogt <4 x float> %val3, %val4 4446 %and = xor <4 x i1> %cmp0, %cmp1 4447 %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6 4448 ret <4 x i16> %sel 4449} 4450 4451define <4 x i8> @fun161(<4 x i32> %val1, <4 x i32> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) { 4452; CHECK-LABEL: fun161: 4453; CHECK: # BB#0: 4454; CHECK-NEXT: vfchdb %v0, %v30, %v27 4455; CHECK-NEXT: vfchdb %v1, %v28, %v25 4456; CHECK-NEXT: vpkg %v0, %v1, %v0 4457; CHECK-NEXT: vceqf %v1, %v24, %v26 4458; CHECK-NEXT: larl %r1, .LCPI161_0 4459; CHECK-NEXT: vx %v0, %v1, %v0 4460; CHECK-NEXT: vl %v1, 0(%r1) 4461; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 4462; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 4463; CHECK-NEXT: br %r14 4464 %cmp0 = icmp eq <4 x i32> %val1, %val2 4465 %cmp1 = fcmp ogt <4 x double> %val3, %val4 4466 %and = xor <4 x i1> %cmp0, %cmp1 4467 %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6 4468 ret <4 x i8> %sel 4469} 4470 4471define <4 x i32> @fun162(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i32> %val5, <4 x i32> %val6) { 4472; CHECK-LABEL: fun162: 4473; CHECK: # BB#0: 4474; CHECK-NEXT: vceqg %v0, %v27, %v31 4475; CHECK-NEXT: vceqg %v1, %v26, %v30 4476; CHECK-NEXT: vx %v0, %v1, %v0 4477; CHECK-NEXT: vceqg %v1, %v25, %v29 4478; CHECK-NEXT: vceqg %v2, %v24, %v28 4479; CHECK-NEXT: vx %v1, %v2, %v1 4480; CHECK-NEXT: vpkg %v0, %v1, %v0 4481; CHECK-NEXT: vl %v1, 176(%r15) 4482; CHECK-NEXT: vl %v2, 160(%r15) 4483; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 4484; CHECK-NEXT: br %r14 4485 %cmp0 = icmp eq <4 x i64> %val1, %val2 4486 %cmp1 = icmp eq <4 x i64> %val3, %val4 4487 %and = xor <4 x i1> %cmp0, %cmp1 4488 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6 4489 ret <4 x i32> %sel 4490} 4491 4492define <4 x i64> @fun163(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4, <4 x i64> %val5, <4 x i64> %val6) { 4493; CHECK-LABEL: fun163: 4494; CHECK: # BB#0: 4495; CHECK-NEXT: vceqg %v0, %v25, %v29 4496; CHECK-NEXT: vceqg %v1, %v24, %v28 4497; CHECK-NEXT: vx %v0, %v1, %v0 4498; CHECK-NEXT: vl %v1, 192(%r15) 4499; CHECK-NEXT: vl %v2, 160(%r15) 4500; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 4501; CHECK-NEXT: vceqg %v0, %v27, %v31 4502; CHECK-NEXT: vceqg %v1, %v26, %v30 4503; CHECK-NEXT: vx %v0, %v1, %v0 4504; CHECK-NEXT: vl %v1, 208(%r15) 4505; CHECK-NEXT: vl %v2, 176(%r15) 4506; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 4507; CHECK-NEXT: br %r14 4508 %cmp0 = icmp eq <4 x i64> %val1, %val2 4509 %cmp1 = icmp eq <4 x i64> %val3, %val4 4510 %and = xor <4 x i1> %cmp0, %cmp1 4511 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 4512 ret <4 x i64> %sel 4513} 4514 4515define <4 x i64> @fun164(<4 x i64> %val1, <4 x i64> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i64> %val5, <4 x i64> %val6) { 4516; CHECK-LABEL: fun164: 4517; CHECK: # BB#0: 4518; CHECK-NEXT: vmrlf %v0, %v27, %v27 4519; CHECK-NEXT: vmrlf %v1, %v25, %v25 4520; CHECK-NEXT: vldeb %v0, %v0 4521; CHECK-NEXT: vldeb %v1, %v1 4522; CHECK-NEXT: vfchdb %v0, %v1, %v0 4523; CHECK-NEXT: vmrhf %v1, %v27, %v27 4524; CHECK-NEXT: vmrhf %v2, %v25, %v25 4525; CHECK-NEXT: vldeb %v1, %v1 4526; CHECK-NEXT: vldeb %v2, %v2 4527; CHECK-NEXT: vfchdb %v1, %v2, %v1 4528; CHECK-NEXT: vpkg %v0, %v1, %v0 4529; CHECK-NEXT: vuphf %v1, %v0 4530; CHECK-NEXT: vceqg %v2, %v24, %v28 4531; CHECK-NEXT: vx %v1, %v2, %v1 4532; CHECK-NEXT: vl %v2, 160(%r15) 4533; CHECK-NEXT: vmrlg %v0, %v0, %v0 4534; CHECK-NEXT: vsel %v24, %v29, %v2, %v1 4535; CHECK-NEXT: vuphf %v0, %v0 4536; CHECK-NEXT: vceqg %v1, %v26, %v30 4537; CHECK-NEXT: vx %v0, %v1, %v0 4538; CHECK-NEXT: vl %v1, 176(%r15) 4539; CHECK-NEXT: vsel %v26, %v31, %v1, %v0 4540; CHECK-NEXT: br %r14 4541 %cmp0 = icmp eq <4 x i64> %val1, %val2 4542 %cmp1 = fcmp ogt <4 x float> %val3, %val4 4543 %and = xor <4 x i1> %cmp0, %cmp1 4544 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6 4545 ret <4 x i64> %sel 4546} 4547 4548define <4 x float> @fun165(<4 x i64> %val1, <4 x i64> %val2, <4 x double> %val3, <4 x double> %val4, <4 x float> %val5, <4 x float> %val6) { 4549; CHECK-LABEL: fun165: 4550; CHECK: # BB#0: 4551; CHECK-NEXT: vfchdb %v0, %v27, %v31 4552; CHECK-NEXT: vceqg %v1, %v26, %v30 4553; CHECK-NEXT: vx %v0, %v1, %v0 4554; CHECK-NEXT: vfchdb %v1, %v25, %v29 4555; CHECK-NEXT: vceqg %v2, %v24, %v28 4556; CHECK-NEXT: vx %v1, %v2, %v1 4557; CHECK-NEXT: vpkg %v0, %v1, %v0 4558; CHECK-NEXT: vl %v1, 176(%r15) 4559; CHECK-NEXT: vl %v2, 160(%r15) 4560; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 4561; CHECK-NEXT: br %r14 4562 %cmp0 = icmp eq <4 x i64> %val1, %val2 4563 %cmp1 = fcmp ogt <4 x double> %val3, %val4 4564 %and = xor <4 x i1> %cmp0, %cmp1 4565 %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6 4566 ret <4 x float> %sel 4567} 4568 4569define <4 x i16> @fun166(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x i16> %val5, <4 x i16> %val6) { 4570; CHECK-LABEL: fun166: 4571; CHECK: # BB#0: 4572; CHECK-NEXT: vmrlf %v0, %v30, %v30 4573; CHECK-NEXT: vmrlf %v1, %v28, %v28 4574; CHECK-NEXT: vldeb %v0, %v0 4575; CHECK-NEXT: vldeb %v1, %v1 4576; CHECK-NEXT: vfchdb %v0, %v1, %v0 4577; CHECK-NEXT: vmrhf %v1, %v30, %v30 4578; CHECK-NEXT: vmrhf %v2, %v28, %v28 4579; CHECK-NEXT: vldeb %v1, %v1 4580; CHECK-NEXT: vmrhf %v3, %v24, %v24 4581; CHECK-NEXT: vldeb %v2, %v2 4582; CHECK-NEXT: vfchdb %v1, %v2, %v1 4583; CHECK-NEXT: vpkg %v0, %v1, %v0 4584; CHECK-NEXT: vmrlf %v1, %v26, %v26 4585; CHECK-NEXT: vmrlf %v2, %v24, %v24 4586; CHECK-NEXT: vldeb %v1, %v1 4587; CHECK-NEXT: vldeb %v2, %v2 4588; CHECK-NEXT: vfchdb %v1, %v2, %v1 4589; CHECK-NEXT: vmrhf %v2, %v26, %v26 4590; CHECK-NEXT: vldeb %v2, %v2 4591; CHECK-NEXT: vldeb %v3, %v3 4592; CHECK-NEXT: vfchdb %v2, %v3, %v2 4593; CHECK-NEXT: vpkg %v1, %v2, %v1 4594; CHECK-NEXT: vx %v0, %v1, %v0 4595; CHECK-NEXT: vpkf %v0, %v0, %v0 4596; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4597; CHECK-NEXT: br %r14 4598 %cmp0 = fcmp ogt <4 x float> %val1, %val2 4599 %cmp1 = fcmp ogt <4 x float> %val3, %val4 4600 %and = xor <4 x i1> %cmp0, %cmp1 4601 %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6 4602 ret <4 x i16> %sel 4603} 4604 4605define <4 x float> @fun167(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x float> %val5, <4 x float> %val6) { 4606; CHECK-LABEL: fun167: 4607; CHECK: # BB#0: 4608; CHECK-NEXT: vmrlf %v0, %v30, %v30 4609; CHECK-NEXT: vmrlf %v1, %v28, %v28 4610; CHECK-NEXT: vldeb %v0, %v0 4611; CHECK-NEXT: vldeb %v1, %v1 4612; CHECK-NEXT: vfchdb %v0, %v1, %v0 4613; CHECK-NEXT: vmrhf %v1, %v30, %v30 4614; CHECK-NEXT: vmrhf %v2, %v28, %v28 4615; CHECK-NEXT: vldeb %v1, %v1 4616; CHECK-NEXT: vmrhf %v3, %v24, %v24 4617; CHECK-NEXT: vldeb %v2, %v2 4618; CHECK-NEXT: vfchdb %v1, %v2, %v1 4619; CHECK-NEXT: vpkg %v0, %v1, %v0 4620; CHECK-NEXT: vmrlf %v1, %v26, %v26 4621; CHECK-NEXT: vmrlf %v2, %v24, %v24 4622; CHECK-NEXT: vldeb %v1, %v1 4623; CHECK-NEXT: vldeb %v2, %v2 4624; CHECK-NEXT: vfchdb %v1, %v2, %v1 4625; CHECK-NEXT: vmrhf %v2, %v26, %v26 4626; CHECK-NEXT: vldeb %v2, %v2 4627; CHECK-NEXT: vldeb %v3, %v3 4628; CHECK-NEXT: vfchdb %v2, %v3, %v2 4629; CHECK-NEXT: vpkg %v1, %v2, %v1 4630; CHECK-NEXT: vx %v0, %v1, %v0 4631; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4632; CHECK-NEXT: br %r14 4633 %cmp0 = fcmp ogt <4 x float> %val1, %val2 4634 %cmp1 = fcmp ogt <4 x float> %val3, %val4 4635 %and = xor <4 x i1> %cmp0, %cmp1 4636 %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6 4637 ret <4 x float> %sel 4638} 4639 4640define <4 x double> @fun168(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x double> %val5, <4 x double> %val6) { 4641; CHECK-LABEL: fun168: 4642; CHECK: # BB#0: 4643; CHECK-NEXT: vmrlf %v0, %v30, %v30 4644; CHECK-NEXT: vmrlf %v1, %v28, %v28 4645; CHECK-NEXT: vldeb %v0, %v0 4646; CHECK-NEXT: vldeb %v1, %v1 4647; CHECK-NEXT: vfchdb %v0, %v1, %v0 4648; CHECK-NEXT: vmrhf %v1, %v30, %v30 4649; CHECK-NEXT: vmrhf %v2, %v28, %v28 4650; CHECK-NEXT: vldeb %v1, %v1 4651; CHECK-NEXT: vmrhf %v3, %v24, %v24 4652; CHECK-NEXT: vldeb %v2, %v2 4653; CHECK-NEXT: vfchdb %v1, %v2, %v1 4654; CHECK-NEXT: vpkg %v0, %v1, %v0 4655; CHECK-NEXT: vmrlf %v1, %v26, %v26 4656; CHECK-NEXT: vmrlf %v2, %v24, %v24 4657; CHECK-NEXT: vldeb %v1, %v1 4658; CHECK-NEXT: vldeb %v2, %v2 4659; CHECK-NEXT: vfchdb %v1, %v2, %v1 4660; CHECK-NEXT: vmrhf %v2, %v26, %v26 4661; CHECK-NEXT: vldeb %v2, %v2 4662; CHECK-NEXT: vldeb %v3, %v3 4663; CHECK-NEXT: vfchdb %v2, %v3, %v2 4664; CHECK-NEXT: vpkg %v1, %v2, %v1 4665; CHECK-NEXT: vx %v0, %v1, %v0 4666; CHECK-NEXT: vuphf %v1, %v0 4667; CHECK-NEXT: vmrlg %v0, %v0, %v0 4668; CHECK-NEXT: vuphf %v0, %v0 4669; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 4670; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 4671; CHECK-NEXT: br %r14 4672 %cmp0 = fcmp ogt <4 x float> %val1, %val2 4673 %cmp1 = fcmp ogt <4 x float> %val3, %val4 4674 %and = xor <4 x i1> %cmp0, %cmp1 4675 %sel = select <4 x i1> %and, <4 x double> %val5, <4 x double> %val6 4676 ret <4 x double> %sel 4677} 4678 4679define <4 x i8> @fun169(<4 x float> %val1, <4 x float> %val2, <4 x double> %val3, <4 x double> %val4, <4 x i8> %val5, <4 x i8> %val6) { 4680; CHECK-LABEL: fun169: 4681; CHECK: # BB#0: 4682; CHECK-NEXT: vfchdb %v0, %v30, %v27 4683; CHECK-NEXT: vfchdb %v1, %v28, %v25 4684; CHECK-NEXT: vpkg %v0, %v1, %v0 4685; CHECK-NEXT: vmrlf %v1, %v26, %v26 4686; CHECK-NEXT: vmrlf %v2, %v24, %v24 4687; CHECK-NEXT: vldeb %v1, %v1 4688; CHECK-NEXT: vldeb %v2, %v2 4689; CHECK-NEXT: vfchdb %v1, %v2, %v1 4690; CHECK-NEXT: vmrhf %v2, %v26, %v26 4691; CHECK-NEXT: vmrhf %v3, %v24, %v24 4692; CHECK-NEXT: larl %r1, .LCPI169_0 4693; CHECK-NEXT: vldeb %v2, %v2 4694; CHECK-NEXT: vldeb %v3, %v3 4695; CHECK-NEXT: vfchdb %v2, %v3, %v2 4696; CHECK-NEXT: vpkg %v1, %v2, %v1 4697; CHECK-NEXT: vx %v0, %v1, %v0 4698; CHECK-NEXT: vl %v1, 0(%r1) 4699; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 4700; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 4701; CHECK-NEXT: br %r14 4702 %cmp0 = fcmp ogt <4 x float> %val1, %val2 4703 %cmp1 = fcmp ogt <4 x double> %val3, %val4 4704 %and = xor <4 x i1> %cmp0, %cmp1 4705 %sel = select <4 x i1> %and, <4 x i8> %val5, <4 x i8> %val6 4706 ret <4 x i8> %sel 4707} 4708 4709define <8 x i8> @fun170(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i8> %val5, <8 x i8> %val6) { 4710; CHECK-LABEL: fun170: 4711; CHECK: # BB#0: 4712; CHECK-NEXT: vceqh %v0, %v28, %v30 4713; CHECK-NEXT: vceqh %v1, %v24, %v26 4714; CHECK-NEXT: vx %v0, %v1, %v0 4715; CHECK-NEXT: vpkh %v0, %v0, %v0 4716; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4717; CHECK-NEXT: br %r14 4718 %cmp0 = icmp eq <8 x i16> %val1, %val2 4719 %cmp1 = icmp eq <8 x i16> %val3, %val4 4720 %and = xor <8 x i1> %cmp0, %cmp1 4721 %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6 4722 ret <8 x i8> %sel 4723} 4724 4725define <8 x i16> @fun171(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i16> %val5, <8 x i16> %val6) { 4726; CHECK-LABEL: fun171: 4727; CHECK: # BB#0: 4728; CHECK-NEXT: vceqh %v0, %v28, %v30 4729; CHECK-NEXT: vceqh %v1, %v24, %v26 4730; CHECK-NEXT: vx %v0, %v1, %v0 4731; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 4732; CHECK-NEXT: br %r14 4733 %cmp0 = icmp eq <8 x i16> %val1, %val2 4734 %cmp1 = icmp eq <8 x i16> %val3, %val4 4735 %and = xor <8 x i1> %cmp0, %cmp1 4736 %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6 4737 ret <8 x i16> %sel 4738} 4739 4740define <8 x i32> @fun172(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i32> %val5, <8 x i32> %val6) { 4741; CHECK-LABEL: fun172: 4742; CHECK: # BB#0: 4743; CHECK-NEXT: vceqh %v0, %v28, %v30 4744; CHECK-NEXT: vceqh %v1, %v24, %v26 4745; CHECK-NEXT: vx %v0, %v1, %v0 4746; CHECK-NEXT: vuphh %v1, %v0 4747; CHECK-NEXT: vmrlg %v0, %v0, %v0 4748; CHECK-NEXT: vuphh %v0, %v0 4749; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 4750; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 4751; CHECK-NEXT: br %r14 4752 %cmp0 = icmp eq <8 x i16> %val1, %val2 4753 %cmp1 = icmp eq <8 x i16> %val3, %val4 4754 %and = xor <8 x i1> %cmp0, %cmp1 4755 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 4756 ret <8 x i32> %sel 4757} 4758 4759define <8 x i64> @fun173(<8 x i16> %val1, <8 x i16> %val2, <8 x i32> %val3, <8 x i32> %val4, <8 x i64> %val5, <8 x i64> %val6) { 4760; CHECK-LABEL: fun173: 4761; CHECK: # BB#0: 4762; CHECK-NEXT: vceqh %v1, %v24, %v26 4763; CHECK-NEXT: vceqf %v0, %v28, %v25 4764; CHECK-NEXT: vuphh %v2, %v1 4765; CHECK-NEXT: vx %v0, %v2, %v0 4766; CHECK-NEXT: vl %v3, 192(%r15) 4767; CHECK-NEXT: vuphf %v2, %v0 4768; CHECK-NEXT: vmrlg %v0, %v0, %v0 4769; CHECK-NEXT: vsel %v24, %v29, %v3, %v2 4770; CHECK-NEXT: vl %v2, 208(%r15) 4771; CHECK-NEXT: vuphf %v0, %v0 4772; CHECK-NEXT: vmrlg %v1, %v1, %v1 4773; CHECK-NEXT: vsel %v26, %v31, %v2, %v0 4774; CHECK-NEXT: vceqf %v0, %v30, %v27 4775; CHECK-NEXT: vuphh %v1, %v1 4776; CHECK-NEXT: vx %v0, %v1, %v0 4777; CHECK-NEXT: vl %v2, 224(%r15) 4778; CHECK-NEXT: vl %v3, 160(%r15) 4779; CHECK-NEXT: vuphf %v1, %v0 4780; CHECK-NEXT: vmrlg %v0, %v0, %v0 4781; CHECK-NEXT: vsel %v28, %v3, %v2, %v1 4782; CHECK-NEXT: vl %v1, 240(%r15) 4783; CHECK-NEXT: vl %v2, 176(%r15) 4784; CHECK-NEXT: vuphf %v0, %v0 4785; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 4786; CHECK-NEXT: br %r14 4787 %cmp0 = icmp eq <8 x i16> %val1, %val2 4788 %cmp1 = icmp eq <8 x i32> %val3, %val4 4789 %and = xor <8 x i1> %cmp0, %cmp1 4790 %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6 4791 ret <8 x i64> %sel 4792} 4793 4794define <8 x i8> @fun174(<8 x i16> %val1, <8 x i16> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i8> %val5, <8 x i8> %val6) { 4795; CHECK-LABEL: fun174: 4796; CHECK: # BB#0: 4797; CHECK-NEXT: vl %v0, 176(%r15) 4798; CHECK-NEXT: vl %v1, 160(%r15) 4799; CHECK-NEXT: vceqg %v0, %v27, %v0 4800; CHECK-NEXT: vceqg %v1, %v25, %v1 4801; CHECK-NEXT: vpkg %v0, %v1, %v0 4802; CHECK-NEXT: vceqg %v1, %v30, %v31 4803; CHECK-NEXT: vceqg %v2, %v28, %v29 4804; CHECK-NEXT: vpkg %v1, %v2, %v1 4805; CHECK-NEXT: vpkf %v0, %v1, %v0 4806; CHECK-NEXT: vceqh %v1, %v24, %v26 4807; CHECK-NEXT: vx %v0, %v1, %v0 4808; CHECK-NEXT: vlrepg %v1, 200(%r15) 4809; CHECK-NEXT: vlrepg %v2, 192(%r15) 4810; CHECK-NEXT: vpkh %v0, %v0, %v0 4811; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 4812; CHECK-NEXT: br %r14 4813 %cmp0 = icmp eq <8 x i16> %val1, %val2 4814 %cmp1 = icmp eq <8 x i64> %val3, %val4 4815 %and = xor <8 x i1> %cmp0, %cmp1 4816 %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6 4817 ret <8 x i8> %sel 4818} 4819 4820define <8 x i16> @fun175(<8 x i16> %val1, <8 x i16> %val2, <8 x float> %val3, <8 x float> %val4, <8 x i16> %val5, <8 x i16> %val6) { 4821; CHECK-LABEL: fun175: 4822; CHECK: # BB#0: 4823; CHECK-NEXT: vmrlf %v0, %v27, %v27 4824; CHECK-NEXT: vmrlf %v1, %v30, %v30 4825; CHECK-NEXT: vldeb %v0, %v0 4826; CHECK-NEXT: vldeb %v1, %v1 4827; CHECK-NEXT: vfchdb %v0, %v1, %v0 4828; CHECK-NEXT: vmrhf %v1, %v27, %v27 4829; CHECK-NEXT: vmrhf %v2, %v30, %v30 4830; CHECK-NEXT: vldeb %v1, %v1 4831; CHECK-NEXT: vmrhf %v3, %v28, %v28 4832; CHECK-NEXT: vldeb %v2, %v2 4833; CHECK-NEXT: vfchdb %v1, %v2, %v1 4834; CHECK-NEXT: vpkg %v0, %v1, %v0 4835; CHECK-NEXT: vmrlf %v1, %v25, %v25 4836; CHECK-NEXT: vmrlf %v2, %v28, %v28 4837; CHECK-NEXT: vldeb %v1, %v1 4838; CHECK-NEXT: vldeb %v2, %v2 4839; CHECK-NEXT: vfchdb %v1, %v2, %v1 4840; CHECK-NEXT: vmrhf %v2, %v25, %v25 4841; CHECK-NEXT: vldeb %v2, %v2 4842; CHECK-NEXT: vldeb %v3, %v3 4843; CHECK-NEXT: vfchdb %v2, %v3, %v2 4844; CHECK-NEXT: vpkg %v1, %v2, %v1 4845; CHECK-NEXT: vpkf %v0, %v1, %v0 4846; CHECK-NEXT: vceqh %v1, %v24, %v26 4847; CHECK-NEXT: vx %v0, %v1, %v0 4848; CHECK-NEXT: vsel %v24, %v29, %v31, %v0 4849; CHECK-NEXT: br %r14 4850 %cmp0 = icmp eq <8 x i16> %val1, %val2 4851 %cmp1 = fcmp ogt <8 x float> %val3, %val4 4852 %and = xor <8 x i1> %cmp0, %cmp1 4853 %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6 4854 ret <8 x i16> %sel 4855} 4856 4857define <8 x i32> @fun176(<8 x i16> %val1, <8 x i16> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i32> %val5, <8 x i32> %val6) { 4858; CHECK-LABEL: fun176: 4859; CHECK: # BB#0: 4860; CHECK-NEXT: vfchdb %v0, %v30, %v31 4861; CHECK-NEXT: vfchdb %v1, %v28, %v29 4862; CHECK-NEXT: vpkg %v0, %v1, %v0 4863; CHECK-NEXT: vceqh %v1, %v24, %v26 4864; CHECK-NEXT: vuphh %v2, %v1 4865; CHECK-NEXT: vx %v0, %v2, %v0 4866; CHECK-NEXT: vl %v2, 224(%r15) 4867; CHECK-NEXT: vl %v3, 192(%r15) 4868; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 4869; CHECK-NEXT: vl %v0, 176(%r15) 4870; CHECK-NEXT: vl %v2, 160(%r15) 4871; CHECK-NEXT: vfchdb %v0, %v27, %v0 4872; CHECK-NEXT: vfchdb %v2, %v25, %v2 4873; CHECK-NEXT: vmrlg %v1, %v1, %v1 4874; CHECK-NEXT: vpkg %v0, %v2, %v0 4875; CHECK-NEXT: vuphh %v1, %v1 4876; CHECK-NEXT: vx %v0, %v1, %v0 4877; CHECK-NEXT: vl %v1, 240(%r15) 4878; CHECK-NEXT: vl %v2, 208(%r15) 4879; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 4880; CHECK-NEXT: br %r14 4881 %cmp0 = icmp eq <8 x i16> %val1, %val2 4882 %cmp1 = fcmp ogt <8 x double> %val3, %val4 4883 %and = xor <8 x i1> %cmp0, %cmp1 4884 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 4885 ret <8 x i32> %sel 4886} 4887 4888define <8 x i32> @fun177(<8 x i32> %val1, <8 x i32> %val2, <8 x i64> %val3, <8 x i64> %val4, <8 x i32> %val5, <8 x i32> %val6) { 4889; CHECK-LABEL: fun177: 4890; CHECK: # BB#0: 4891; CHECK-NEXT: vl %v0, 176(%r15) 4892; CHECK-NEXT: vl %v1, 160(%r15) 4893; CHECK-NEXT: vceqg %v0, %v27, %v0 4894; CHECK-NEXT: vceqg %v1, %v25, %v1 4895; CHECK-NEXT: vpkg %v0, %v1, %v0 4896; CHECK-NEXT: vceqf %v1, %v24, %v28 4897; CHECK-NEXT: vx %v0, %v1, %v0 4898; CHECK-NEXT: vl %v1, 256(%r15) 4899; CHECK-NEXT: vl %v2, 224(%r15) 4900; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 4901; CHECK-NEXT: vl %v0, 208(%r15) 4902; CHECK-NEXT: vl %v1, 192(%r15) 4903; CHECK-NEXT: vceqg %v0, %v31, %v0 4904; CHECK-NEXT: vceqg %v1, %v29, %v1 4905; CHECK-NEXT: vpkg %v0, %v1, %v0 4906; CHECK-NEXT: vceqf %v1, %v26, %v30 4907; CHECK-NEXT: vx %v0, %v1, %v0 4908; CHECK-NEXT: vl %v1, 272(%r15) 4909; CHECK-NEXT: vl %v2, 240(%r15) 4910; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 4911; CHECK-NEXT: br %r14 4912 %cmp0 = icmp eq <8 x i32> %val1, %val2 4913 %cmp1 = icmp eq <8 x i64> %val3, %val4 4914 %and = xor <8 x i1> %cmp0, %cmp1 4915 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6 4916 ret <8 x i32> %sel 4917} 4918 4919define <8 x double> @fun178(<8 x i32> %val1, <8 x i32> %val2, <8 x float> %val3, <8 x float> %val4, <8 x double> %val5, <8 x double> %val6) { 4920; CHECK-LABEL: fun178: 4921; CHECK: # BB#0: 4922; CHECK-NEXT: vmrlf %v0, %v29, %v29 4923; CHECK-NEXT: vmrlf %v1, %v25, %v25 4924; CHECK-NEXT: vldeb %v0, %v0 4925; CHECK-NEXT: vldeb %v1, %v1 4926; CHECK-NEXT: vfchdb %v0, %v1, %v0 4927; CHECK-NEXT: vmrhf %v1, %v29, %v29 4928; CHECK-NEXT: vmrhf %v2, %v25, %v25 4929; CHECK-NEXT: vldeb %v1, %v1 4930; CHECK-NEXT: vl %v3, 160(%r15) 4931; CHECK-NEXT: vldeb %v2, %v2 4932; CHECK-NEXT: vl %v4, 192(%r15) 4933; CHECK-NEXT: vfchdb %v1, %v2, %v1 4934; CHECK-NEXT: vl %v2, 224(%r15) 4935; CHECK-NEXT: vpkg %v0, %v1, %v0 4936; CHECK-NEXT: vceqf %v1, %v24, %v28 4937; CHECK-NEXT: vx %v0, %v1, %v0 4938; CHECK-NEXT: vuphf %v1, %v0 4939; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 4940; CHECK-NEXT: vmrlf %v1, %v31, %v31 4941; CHECK-NEXT: vmrlf %v2, %v27, %v27 4942; CHECK-NEXT: vmrhf %v3, %v27, %v27 4943; CHECK-NEXT: vmrlg %v0, %v0, %v0 4944; CHECK-NEXT: vuphf %v0, %v0 4945; CHECK-NEXT: vldeb %v1, %v1 4946; CHECK-NEXT: vldeb %v2, %v2 4947; CHECK-NEXT: vfchdb %v1, %v2, %v1 4948; CHECK-NEXT: vmrhf %v2, %v31, %v31 4949; CHECK-NEXT: vldeb %v2, %v2 4950; CHECK-NEXT: vldeb %v3, %v3 4951; CHECK-NEXT: vfchdb %v2, %v3, %v2 4952; CHECK-NEXT: vl %v3, 256(%r15) 4953; CHECK-NEXT: vpkg %v1, %v2, %v1 4954; CHECK-NEXT: vceqf %v2, %v26, %v30 4955; CHECK-NEXT: vx %v1, %v2, %v1 4956; CHECK-NEXT: vuphf %v2, %v1 4957; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 4958; CHECK-NEXT: vl %v2, 240(%r15) 4959; CHECK-NEXT: vl %v3, 176(%r15) 4960; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 4961; CHECK-NEXT: vl %v2, 208(%r15) 4962; CHECK-NEXT: vmrlg %v0, %v1, %v1 4963; CHECK-NEXT: vl %v1, 272(%r15) 4964; CHECK-NEXT: vuphf %v0, %v0 4965; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 4966; CHECK-NEXT: br %r14 4967 %cmp0 = icmp eq <8 x i32> %val1, %val2 4968 %cmp1 = fcmp ogt <8 x float> %val3, %val4 4969 %and = xor <8 x i1> %cmp0, %cmp1 4970 %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6 4971 ret <8 x double> %sel 4972} 4973 4974define <8 x double> @fun179(<8 x i32> %val1, <8 x i32> %val2, <8 x double> %val3, <8 x double> %val4, <8 x double> %val5, <8 x double> %val6) { 4975; CHECK-LABEL: fun179: 4976; CHECK: # BB#0: 4977; CHECK-NEXT: vl %v0, 160(%r15) 4978; CHECK-NEXT: vceqf %v1, %v24, %v28 4979; CHECK-NEXT: vfchdb %v0, %v25, %v0 4980; CHECK-NEXT: vuphf %v2, %v1 4981; CHECK-NEXT: vx %v0, %v2, %v0 4982; CHECK-NEXT: vl %v2, 288(%r15) 4983; CHECK-NEXT: vl %v3, 224(%r15) 4984; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 4985; CHECK-NEXT: vl %v0, 192(%r15) 4986; CHECK-NEXT: vceqf %v2, %v26, %v30 4987; CHECK-NEXT: vfchdb %v0, %v29, %v0 4988; CHECK-NEXT: vuphf %v3, %v2 4989; CHECK-NEXT: vx %v0, %v3, %v0 4990; CHECK-NEXT: vl %v3, 320(%r15) 4991; CHECK-NEXT: vl %v4, 256(%r15) 4992; CHECK-NEXT: vsel %v28, %v4, %v3, %v0 4993; CHECK-NEXT: vl %v0, 176(%r15) 4994; CHECK-NEXT: vmrlg %v1, %v1, %v1 4995; CHECK-NEXT: vfchdb %v0, %v27, %v0 4996; CHECK-NEXT: vuphf %v1, %v1 4997; CHECK-NEXT: vx %v0, %v1, %v0 4998; CHECK-NEXT: vl %v1, 304(%r15) 4999; CHECK-NEXT: vl %v3, 240(%r15) 5000; CHECK-NEXT: vsel %v26, %v3, %v1, %v0 5001; CHECK-NEXT: vl %v0, 208(%r15) 5002; CHECK-NEXT: vmrlg %v1, %v2, %v2 5003; CHECK-NEXT: vfchdb %v0, %v31, %v0 5004; CHECK-NEXT: vuphf %v1, %v1 5005; CHECK-NEXT: vl %v2, 272(%r15) 5006; CHECK-NEXT: vx %v0, %v1, %v0 5007; CHECK-NEXT: vl %v1, 336(%r15) 5008; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 5009; CHECK-NEXT: br %r14 5010 %cmp0 = icmp eq <8 x i32> %val1, %val2 5011 %cmp1 = fcmp ogt <8 x double> %val3, %val4 5012 %and = xor <8 x i1> %cmp0, %cmp1 5013 %sel = select <8 x i1> %and, <8 x double> %val5, <8 x double> %val6 5014 ret <8 x double> %sel 5015} 5016 5017define <8 x i64> @fun180(<8 x float> %val1, <8 x float> %val2, <8 x double> %val3, <8 x double> %val4, <8 x i64> %val5, <8 x i64> %val6) { 5018; CHECK-LABEL: fun180: 5019; CHECK: # BB#0: 5020; CHECK-NEXT: vmrlf %v0, %v28, %v28 5021; CHECK-NEXT: vmrlf %v1, %v24, %v24 5022; CHECK-NEXT: vldeb %v0, %v0 5023; CHECK-NEXT: vldeb %v1, %v1 5024; CHECK-NEXT: vfchdb %v0, %v1, %v0 5025; CHECK-NEXT: vmrhf %v1, %v28, %v28 5026; CHECK-NEXT: vmrhf %v2, %v24, %v24 5027; CHECK-NEXT: vldeb %v1, %v1 5028; CHECK-NEXT: vl %v3, 224(%r15) 5029; CHECK-NEXT: vldeb %v2, %v2 5030; CHECK-NEXT: vl %v4, 256(%r15) 5031; CHECK-NEXT: vfchdb %v1, %v2, %v1 5032; CHECK-NEXT: vl %v2, 160(%r15) 5033; CHECK-NEXT: vpkg %v0, %v1, %v0 5034; CHECK-NEXT: vuphf %v1, %v0 5035; CHECK-NEXT: vfchdb %v2, %v25, %v2 5036; CHECK-NEXT: vx %v1, %v1, %v2 5037; CHECK-NEXT: vl %v2, 288(%r15) 5038; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 5039; CHECK-NEXT: vmrlf %v1, %v30, %v30 5040; CHECK-NEXT: vmrlf %v2, %v26, %v26 5041; CHECK-NEXT: vmrhf %v3, %v26, %v26 5042; CHECK-NEXT: vmrlg %v0, %v0, %v0 5043; CHECK-NEXT: vuphf %v0, %v0 5044; CHECK-NEXT: vldeb %v1, %v1 5045; CHECK-NEXT: vldeb %v2, %v2 5046; CHECK-NEXT: vfchdb %v1, %v2, %v1 5047; CHECK-NEXT: vmrhf %v2, %v30, %v30 5048; CHECK-NEXT: vldeb %v2, %v2 5049; CHECK-NEXT: vldeb %v3, %v3 5050; CHECK-NEXT: vfchdb %v2, %v3, %v2 5051; CHECK-NEXT: vl %v3, 192(%r15) 5052; CHECK-NEXT: vpkg %v1, %v2, %v1 5053; CHECK-NEXT: vuphf %v2, %v1 5054; CHECK-NEXT: vfchdb %v3, %v29, %v3 5055; CHECK-NEXT: vx %v2, %v2, %v3 5056; CHECK-NEXT: vl %v3, 320(%r15) 5057; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 5058; CHECK-NEXT: vl %v2, 176(%r15) 5059; CHECK-NEXT: vl %v3, 240(%r15) 5060; CHECK-NEXT: vfchdb %v2, %v27, %v2 5061; CHECK-NEXT: vx %v0, %v0, %v2 5062; CHECK-NEXT: vl %v2, 304(%r15) 5063; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 5064; CHECK-NEXT: vl %v2, 272(%r15) 5065; CHECK-NEXT: vmrlg %v0, %v1, %v1 5066; CHECK-NEXT: vl %v1, 208(%r15) 5067; CHECK-NEXT: vuphf %v0, %v0 5068; CHECK-NEXT: vfchdb %v1, %v31, %v1 5069; CHECK-NEXT: vx %v0, %v0, %v1 5070; CHECK-NEXT: vl %v1, 336(%r15) 5071; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 5072; CHECK-NEXT: br %r14 5073 %cmp0 = fcmp ogt <8 x float> %val1, %val2 5074 %cmp1 = fcmp ogt <8 x double> %val3, %val4 5075 %and = xor <8 x i1> %cmp0, %cmp1 5076 %sel = select <8 x i1> %and, <8 x i64> %val5, <8 x i64> %val6 5077 ret <8 x i64> %sel 5078} 5079 5080define <16 x i8> @fun181(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i8> %val5, <16 x i8> %val6) { 5081; CHECK-LABEL: fun181: 5082; CHECK: # BB#0: 5083; CHECK-NEXT: vceqb %v0, %v28, %v30 5084; CHECK-NEXT: vceqb %v1, %v24, %v26 5085; CHECK-NEXT: vx %v0, %v1, %v0 5086; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 5087; CHECK-NEXT: br %r14 5088 %cmp0 = icmp eq <16 x i8> %val1, %val2 5089 %cmp1 = icmp eq <16 x i8> %val3, %val4 5090 %and = xor <16 x i1> %cmp0, %cmp1 5091 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 5092 ret <16 x i8> %sel 5093} 5094 5095define <16 x i16> @fun182(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4, <16 x i16> %val5, <16 x i16> %val6) { 5096; CHECK-LABEL: fun182: 5097; CHECK: # BB#0: 5098; CHECK-NEXT: vceqb %v0, %v28, %v30 5099; CHECK-NEXT: vceqb %v1, %v24, %v26 5100; CHECK-NEXT: vx %v0, %v1, %v0 5101; CHECK-NEXT: vuphb %v1, %v0 5102; CHECK-NEXT: vmrlg %v0, %v0, %v0 5103; CHECK-NEXT: vuphb %v0, %v0 5104; CHECK-NEXT: vsel %v24, %v25, %v29, %v1 5105; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 5106; CHECK-NEXT: br %r14 5107 %cmp0 = icmp eq <16 x i8> %val1, %val2 5108 %cmp1 = icmp eq <16 x i8> %val3, %val4 5109 %and = xor <16 x i1> %cmp0, %cmp1 5110 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 5111 ret <16 x i16> %sel 5112} 5113 5114define <16 x i64> @fun183(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i64> %val5, <16 x i64> %val6) { 5115; CHECK-LABEL: fun183: 5116; CHECK: # BB#0: 5117; CHECK-NEXT: vceqb %v1, %v24, %v26 5118; CHECK-NEXT: vceqh %v0, %v28, %v25 5119; CHECK-NEXT: vuphb %v2, %v1 5120; CHECK-NEXT: vx %v0, %v2, %v0 5121; CHECK-NEXT: vuphh %v2, %v0 5122; CHECK-NEXT: vl %v3, 256(%r15) 5123; CHECK-NEXT: vuphf %v2, %v2 5124; CHECK-NEXT: vsel %v24, %v29, %v3, %v2 5125; CHECK-NEXT: vpkg %v2, %v0, %v0 5126; CHECK-NEXT: vuphh %v2, %v2 5127; CHECK-NEXT: vl %v3, 272(%r15) 5128; CHECK-NEXT: vuphf %v2, %v2 5129; CHECK-NEXT: vsel %v26, %v31, %v3, %v2 5130; CHECK-NEXT: vmrlg %v2, %v0, %v0 5131; CHECK-NEXT: vuphh %v2, %v2 5132; CHECK-NEXT: vsldb %v0, %v0, %v0, 12 5133; CHECK-NEXT: vl %v3, 288(%r15) 5134; CHECK-NEXT: vl %v4, 160(%r15) 5135; CHECK-NEXT: vuphf %v2, %v2 5136; CHECK-NEXT: vuphh %v0, %v0 5137; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 5138; CHECK-NEXT: vl %v2, 304(%r15) 5139; CHECK-NEXT: vl %v3, 176(%r15) 5140; CHECK-NEXT: vl %v4, 192(%r15) 5141; CHECK-NEXT: vuphf %v0, %v0 5142; CHECK-NEXT: vmrlg %v1, %v1, %v1 5143; CHECK-NEXT: vsel %v0, %v3, %v2, %v0 5144; CHECK-NEXT: vl %v3, 320(%r15) 5145; CHECK-NEXT: vceqh %v2, %v30, %v27 5146; CHECK-NEXT: vlr %v30, %v0 5147; CHECK-NEXT: vuphb %v1, %v1 5148; CHECK-NEXT: vx %v1, %v1, %v2 5149; CHECK-NEXT: vuphh %v2, %v1 5150; CHECK-NEXT: vuphf %v2, %v2 5151; CHECK-NEXT: vsel %v25, %v4, %v3, %v2 5152; CHECK-NEXT: vl %v3, 336(%r15) 5153; CHECK-NEXT: vl %v4, 208(%r15) 5154; CHECK-NEXT: vpkg %v2, %v1, %v1 5155; CHECK-NEXT: vuphh %v2, %v2 5156; CHECK-NEXT: vuphf %v2, %v2 5157; CHECK-NEXT: vsel %v27, %v4, %v3, %v2 5158; CHECK-NEXT: vl %v3, 352(%r15) 5159; CHECK-NEXT: vl %v4, 224(%r15) 5160; CHECK-NEXT: vmrlg %v2, %v1, %v1 5161; CHECK-NEXT: vuphh %v2, %v2 5162; CHECK-NEXT: vsldb %v1, %v1, %v1, 12 5163; CHECK-NEXT: vuphf %v2, %v2 5164; CHECK-NEXT: vuphh %v1, %v1 5165; CHECK-NEXT: vsel %v29, %v4, %v3, %v2 5166; CHECK-NEXT: vl %v2, 368(%r15) 5167; CHECK-NEXT: vl %v3, 240(%r15) 5168; CHECK-NEXT: vuphf %v1, %v1 5169; CHECK-NEXT: vsel %v31, %v3, %v2, %v1 5170; CHECK-NEXT: br %r14 5171 %cmp0 = icmp eq <16 x i8> %val1, %val2 5172 %cmp1 = icmp eq <16 x i16> %val3, %val4 5173 %and = xor <16 x i1> %cmp0, %cmp1 5174 %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6 5175 ret <16 x i64> %sel 5176} 5177 5178define <16 x i64> @fun184(<16 x i8> %val1, <16 x i8> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i64> %val5, <16 x i64> %val6) { 5179; CHECK-LABEL: fun184: 5180; CHECK: # BB#0: 5181; CHECK-NEXT: vceqb %v1, %v24, %v26 5182; CHECK-NEXT: vuphb %v2, %v1 5183; CHECK-NEXT: vceqf %v0, %v28, %v29 5184; CHECK-NEXT: vuphh %v2, %v2 5185; CHECK-NEXT: vx %v0, %v2, %v0 5186; CHECK-NEXT: vl %v3, 320(%r15) 5187; CHECK-NEXT: vl %v4, 192(%r15) 5188; CHECK-NEXT: vuphf %v2, %v0 5189; CHECK-NEXT: vmrlg %v0, %v0, %v0 5190; CHECK-NEXT: vsel %v24, %v4, %v3, %v2 5191; CHECK-NEXT: vl %v2, 336(%r15) 5192; CHECK-NEXT: vl %v3, 208(%r15) 5193; CHECK-NEXT: vuphf %v0, %v0 5194; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 5195; CHECK-NEXT: vpkg %v2, %v1, %v1 5196; CHECK-NEXT: vuphb %v2, %v2 5197; CHECK-NEXT: vceqf %v0, %v30, %v31 5198; CHECK-NEXT: vuphh %v2, %v2 5199; CHECK-NEXT: vx %v0, %v2, %v0 5200; CHECK-NEXT: vl %v3, 352(%r15) 5201; CHECK-NEXT: vl %v4, 224(%r15) 5202; CHECK-NEXT: vuphf %v2, %v0 5203; CHECK-NEXT: vl %v5, 256(%r15) 5204; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 5205; CHECK-NEXT: vl %v2, 160(%r15) 5206; CHECK-NEXT: vl %v4, 384(%r15) 5207; CHECK-NEXT: vmrlg %v3, %v1, %v1 5208; CHECK-NEXT: vuphb %v3, %v3 5209; CHECK-NEXT: vceqf %v2, %v25, %v2 5210; CHECK-NEXT: vuphh %v3, %v3 5211; CHECK-NEXT: vx %v2, %v3, %v2 5212; CHECK-NEXT: vuphf %v3, %v2 5213; CHECK-NEXT: vsldb %v1, %v1, %v1, 12 5214; CHECK-NEXT: vsel %v25, %v5, %v4, %v3 5215; CHECK-NEXT: vl %v3, 176(%r15) 5216; CHECK-NEXT: vl %v4, 416(%r15) 5217; CHECK-NEXT: vl %v5, 288(%r15) 5218; CHECK-NEXT: vuphb %v1, %v1 5219; CHECK-NEXT: vceqf %v3, %v27, %v3 5220; CHECK-NEXT: vuphh %v1, %v1 5221; CHECK-NEXT: vx %v1, %v1, %v3 5222; CHECK-NEXT: vuphf %v3, %v1 5223; CHECK-NEXT: vmrlg %v0, %v0, %v0 5224; CHECK-NEXT: vsel %v29, %v5, %v4, %v3 5225; CHECK-NEXT: vl %v3, 368(%r15) 5226; CHECK-NEXT: vl %v4, 240(%r15) 5227; CHECK-NEXT: vuphf %v0, %v0 5228; CHECK-NEXT: vsel %v30, %v4, %v3, %v0 5229; CHECK-NEXT: vl %v3, 272(%r15) 5230; CHECK-NEXT: vmrlg %v0, %v2, %v2 5231; CHECK-NEXT: vl %v2, 400(%r15) 5232; CHECK-NEXT: vuphf %v0, %v0 5233; CHECK-NEXT: vsel %v27, %v3, %v2, %v0 5234; CHECK-NEXT: vl %v2, 304(%r15) 5235; CHECK-NEXT: vmrlg %v0, %v1, %v1 5236; CHECK-NEXT: vl %v1, 432(%r15) 5237; CHECK-NEXT: vuphf %v0, %v0 5238; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 5239; CHECK-NEXT: br %r14 5240 %cmp0 = icmp eq <16 x i8> %val1, %val2 5241 %cmp1 = icmp eq <16 x i32> %val3, %val4 5242 %and = xor <16 x i1> %cmp0, %cmp1 5243 %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6 5244 ret <16 x i64> %sel 5245} 5246 5247define <16 x i64> @fun185(<16 x i8> %val1, <16 x i8> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i64> %val5, <16 x i64> %val6) { 5248; CHECK-LABEL: fun185: 5249; CHECK: # BB#0: 5250; CHECK-NEXT: vl %v0, 192(%r15) 5251; CHECK-NEXT: vceqg %v1, %v28, %v0 5252; CHECK-NEXT: vceqb %v0, %v24, %v26 5253; CHECK-NEXT: vuphb %v2, %v0 5254; CHECK-NEXT: vuphh %v2, %v2 5255; CHECK-NEXT: vuphf %v2, %v2 5256; CHECK-NEXT: vx %v1, %v2, %v1 5257; CHECK-NEXT: vl %v2, 448(%r15) 5258; CHECK-NEXT: vl %v3, 320(%r15) 5259; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 5260; CHECK-NEXT: vpkf %v2, %v0, %v0 5261; CHECK-NEXT: vuphb %v2, %v2 5262; CHECK-NEXT: vl %v1, 208(%r15) 5263; CHECK-NEXT: vuphh %v2, %v2 5264; CHECK-NEXT: vceqg %v1, %v30, %v1 5265; CHECK-NEXT: vuphf %v2, %v2 5266; CHECK-NEXT: vx %v1, %v2, %v1 5267; CHECK-NEXT: vl %v2, 464(%r15) 5268; CHECK-NEXT: vl %v3, 336(%r15) 5269; CHECK-NEXT: vsel %v26, %v3, %v2, %v1 5270; CHECK-NEXT: vpkg %v2, %v0, %v0 5271; CHECK-NEXT: vuphb %v2, %v2 5272; CHECK-NEXT: vl %v1, 224(%r15) 5273; CHECK-NEXT: vl %v3, 352(%r15) 5274; CHECK-NEXT: vuphh %v2, %v2 5275; CHECK-NEXT: vceqg %v1, %v25, %v1 5276; CHECK-NEXT: vuphf %v2, %v2 5277; CHECK-NEXT: vx %v1, %v2, %v1 5278; CHECK-NEXT: vl %v2, 480(%r15) 5279; CHECK-NEXT: vsel %v28, %v3, %v2, %v1 5280; CHECK-NEXT: vl %v1, 240(%r15) 5281; CHECK-NEXT: vl %v3, 368(%r15) 5282; CHECK-NEXT: vsldb %v2, %v0, %v0, 6 5283; CHECK-NEXT: vuphb %v2, %v2 5284; CHECK-NEXT: vuphh %v2, %v2 5285; CHECK-NEXT: vceqg %v1, %v27, %v1 5286; CHECK-NEXT: vuphf %v2, %v2 5287; CHECK-NEXT: vx %v1, %v2, %v1 5288; CHECK-NEXT: vl %v2, 496(%r15) 5289; CHECK-NEXT: vsel %v30, %v3, %v2, %v1 5290; CHECK-NEXT: vl %v1, 256(%r15) 5291; CHECK-NEXT: vl %v3, 384(%r15) 5292; CHECK-NEXT: vmrlg %v2, %v0, %v0 5293; CHECK-NEXT: vuphb %v2, %v2 5294; CHECK-NEXT: vuphh %v2, %v2 5295; CHECK-NEXT: vceqg %v1, %v29, %v1 5296; CHECK-NEXT: vuphf %v2, %v2 5297; CHECK-NEXT: vx %v1, %v2, %v1 5298; CHECK-NEXT: vl %v2, 512(%r15) 5299; CHECK-NEXT: vsel %v25, %v3, %v2, %v1 5300; CHECK-NEXT: vl %v1, 272(%r15) 5301; CHECK-NEXT: vl %v3, 400(%r15) 5302; CHECK-NEXT: vsldb %v2, %v0, %v0, 10 5303; CHECK-NEXT: vuphb %v2, %v2 5304; CHECK-NEXT: vuphh %v2, %v2 5305; CHECK-NEXT: vceqg %v1, %v31, %v1 5306; CHECK-NEXT: vuphf %v2, %v2 5307; CHECK-NEXT: vx %v1, %v2, %v1 5308; CHECK-NEXT: vl %v2, 528(%r15) 5309; CHECK-NEXT: vsel %v27, %v3, %v2, %v1 5310; CHECK-NEXT: vl %v1, 288(%r15) 5311; CHECK-NEXT: vl %v2, 160(%r15) 5312; CHECK-NEXT: vl %v3, 416(%r15) 5313; CHECK-NEXT: vceqg %v1, %v2, %v1 5314; CHECK-NEXT: vsldb %v2, %v0, %v0, 12 5315; CHECK-NEXT: vuphb %v2, %v2 5316; CHECK-NEXT: vuphh %v2, %v2 5317; CHECK-NEXT: vuphf %v2, %v2 5318; CHECK-NEXT: vsldb %v0, %v0, %v0, 14 5319; CHECK-NEXT: vx %v1, %v2, %v1 5320; CHECK-NEXT: vl %v2, 544(%r15) 5321; CHECK-NEXT: vuphb %v0, %v0 5322; CHECK-NEXT: vsel %v29, %v3, %v2, %v1 5323; CHECK-NEXT: vl %v1, 304(%r15) 5324; CHECK-NEXT: vl %v2, 176(%r15) 5325; CHECK-NEXT: vuphh %v0, %v0 5326; CHECK-NEXT: vceqg %v1, %v2, %v1 5327; CHECK-NEXT: vl %v2, 432(%r15) 5328; CHECK-NEXT: vuphf %v0, %v0 5329; CHECK-NEXT: vx %v0, %v0, %v1 5330; CHECK-NEXT: vl %v1, 560(%r15) 5331; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 5332; CHECK-NEXT: br %r14 5333 %cmp0 = icmp eq <16 x i8> %val1, %val2 5334 %cmp1 = icmp eq <16 x i64> %val3, %val4 5335 %and = xor <16 x i1> %cmp0, %cmp1 5336 %sel = select <16 x i1> %and, <16 x i64> %val5, <16 x i64> %val6 5337 ret <16 x i64> %sel 5338} 5339 5340define <16 x i16> @fun186(<16 x i8> %val1, <16 x i8> %val2, <16 x float> %val3, <16 x float> %val4, <16 x i16> %val5, <16 x i16> %val6) { 5341; CHECK-LABEL: fun186: 5342; CHECK: # BB#0: 5343; CHECK-NEXT: vmrlf %v0, %v31, %v31 5344; CHECK-NEXT: vmrlf %v1, %v30, %v30 5345; CHECK-NEXT: vldeb %v0, %v0 5346; CHECK-NEXT: vldeb %v1, %v1 5347; CHECK-NEXT: vfchdb %v0, %v1, %v0 5348; CHECK-NEXT: vmrhf %v1, %v31, %v31 5349; CHECK-NEXT: vmrhf %v2, %v30, %v30 5350; CHECK-NEXT: vldeb %v1, %v1 5351; CHECK-NEXT: vmrhf %v3, %v28, %v28 5352; CHECK-NEXT: vmrlf %v4, %v25, %v25 5353; CHECK-NEXT: vldeb %v2, %v2 5354; CHECK-NEXT: vfchdb %v1, %v2, %v1 5355; CHECK-NEXT: vpkg %v0, %v1, %v0 5356; CHECK-NEXT: vmrlf %v1, %v29, %v29 5357; CHECK-NEXT: vmrlf %v2, %v28, %v28 5358; CHECK-NEXT: vldeb %v1, %v1 5359; CHECK-NEXT: vldeb %v2, %v2 5360; CHECK-NEXT: vfchdb %v1, %v2, %v1 5361; CHECK-NEXT: vmrhf %v2, %v29, %v29 5362; CHECK-NEXT: vldeb %v2, %v2 5363; CHECK-NEXT: vldeb %v3, %v3 5364; CHECK-NEXT: vfchdb %v2, %v3, %v2 5365; CHECK-NEXT: vl %v3, 192(%r15) 5366; CHECK-NEXT: vpkg %v1, %v2, %v1 5367; CHECK-NEXT: vpkf %v0, %v1, %v0 5368; CHECK-NEXT: vceqb %v1, %v24, %v26 5369; CHECK-NEXT: vuphb %v2, %v1 5370; CHECK-NEXT: vx %v0, %v2, %v0 5371; CHECK-NEXT: vl %v2, 224(%r15) 5372; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 5373; CHECK-NEXT: vl %v0, 176(%r15) 5374; CHECK-NEXT: vmrlf %v2, %v0, %v0 5375; CHECK-NEXT: vmrlf %v3, %v27, %v27 5376; CHECK-NEXT: vmrhf %v0, %v0, %v0 5377; CHECK-NEXT: vmrlg %v1, %v1, %v1 5378; CHECK-NEXT: vuphb %v1, %v1 5379; CHECK-NEXT: vldeb %v2, %v2 5380; CHECK-NEXT: vldeb %v3, %v3 5381; CHECK-NEXT: vfchdb %v2, %v3, %v2 5382; CHECK-NEXT: vmrhf %v3, %v27, %v27 5383; CHECK-NEXT: vldeb %v0, %v0 5384; CHECK-NEXT: vldeb %v3, %v3 5385; CHECK-NEXT: vfchdb %v0, %v3, %v0 5386; CHECK-NEXT: vpkg %v0, %v0, %v2 5387; CHECK-NEXT: vl %v2, 160(%r15) 5388; CHECK-NEXT: vmrlf %v3, %v2, %v2 5389; CHECK-NEXT: vmrhf %v2, %v2, %v2 5390; CHECK-NEXT: vldeb %v3, %v3 5391; CHECK-NEXT: vldeb %v4, %v4 5392; CHECK-NEXT: vfchdb %v3, %v4, %v3 5393; CHECK-NEXT: vmrhf %v4, %v25, %v25 5394; CHECK-NEXT: vldeb %v2, %v2 5395; CHECK-NEXT: vldeb %v4, %v4 5396; CHECK-NEXT: vfchdb %v2, %v4, %v2 5397; CHECK-NEXT: vpkg %v2, %v2, %v3 5398; CHECK-NEXT: vpkf %v0, %v2, %v0 5399; CHECK-NEXT: vl %v2, 208(%r15) 5400; CHECK-NEXT: vx %v0, %v1, %v0 5401; CHECK-NEXT: vl %v1, 240(%r15) 5402; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 5403; CHECK-NEXT: br %r14 5404 %cmp0 = icmp eq <16 x i8> %val1, %val2 5405 %cmp1 = fcmp ogt <16 x float> %val3, %val4 5406 %and = xor <16 x i1> %cmp0, %cmp1 5407 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 5408 ret <16 x i16> %sel 5409} 5410 5411define <16 x i8> @fun187(<16 x i8> %val1, <16 x i8> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i8> %val5, <16 x i8> %val6) { 5412; CHECK-LABEL: fun187: 5413; CHECK: # BB#0: 5414; CHECK-NEXT: vl %v0, 304(%r15) 5415; CHECK-NEXT: vl %v1, 176(%r15) 5416; CHECK-NEXT: vfchdb %v0, %v1, %v0 5417; CHECK-NEXT: vl %v1, 288(%r15) 5418; CHECK-NEXT: vl %v2, 160(%r15) 5419; CHECK-NEXT: vfchdb %v1, %v2, %v1 5420; CHECK-NEXT: vpkg %v0, %v1, %v0 5421; CHECK-NEXT: vl %v1, 272(%r15) 5422; CHECK-NEXT: vl %v2, 256(%r15) 5423; CHECK-NEXT: vfchdb %v1, %v31, %v1 5424; CHECK-NEXT: vfchdb %v2, %v29, %v2 5425; CHECK-NEXT: vpkg %v1, %v2, %v1 5426; CHECK-NEXT: vpkf %v0, %v1, %v0 5427; CHECK-NEXT: vl %v1, 240(%r15) 5428; CHECK-NEXT: vl %v2, 224(%r15) 5429; CHECK-NEXT: vfchdb %v1, %v27, %v1 5430; CHECK-NEXT: vfchdb %v2, %v25, %v2 5431; CHECK-NEXT: vpkg %v1, %v2, %v1 5432; CHECK-NEXT: vl %v2, 208(%r15) 5433; CHECK-NEXT: vl %v3, 192(%r15) 5434; CHECK-NEXT: vfchdb %v2, %v30, %v2 5435; CHECK-NEXT: vfchdb %v3, %v28, %v3 5436; CHECK-NEXT: vpkg %v2, %v3, %v2 5437; CHECK-NEXT: vpkf %v1, %v2, %v1 5438; CHECK-NEXT: vpkh %v0, %v1, %v0 5439; CHECK-NEXT: vceqb %v1, %v24, %v26 5440; CHECK-NEXT: vx %v0, %v1, %v0 5441; CHECK-NEXT: vl %v1, 336(%r15) 5442; CHECK-NEXT: vl %v2, 320(%r15) 5443; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 5444; CHECK-NEXT: br %r14 5445 %cmp0 = icmp eq <16 x i8> %val1, %val2 5446 %cmp1 = fcmp ogt <16 x double> %val3, %val4 5447 %and = xor <16 x i1> %cmp0, %cmp1 5448 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 5449 ret <16 x i8> %sel 5450} 5451 5452define <16 x i8> @fun188(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i8> %val5, <16 x i8> %val6) { 5453; CHECK-LABEL: fun188: 5454; CHECK: # BB#0: 5455; CHECK-NEXT: vceqh %v0, %v27, %v31 5456; CHECK-NEXT: vceqh %v1, %v26, %v30 5457; CHECK-NEXT: vx %v0, %v1, %v0 5458; CHECK-NEXT: vceqh %v1, %v25, %v29 5459; CHECK-NEXT: vceqh %v2, %v24, %v28 5460; CHECK-NEXT: vx %v1, %v2, %v1 5461; CHECK-NEXT: vpkh %v0, %v1, %v0 5462; CHECK-NEXT: vl %v1, 176(%r15) 5463; CHECK-NEXT: vl %v2, 160(%r15) 5464; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 5465; CHECK-NEXT: br %r14 5466 %cmp0 = icmp eq <16 x i16> %val1, %val2 5467 %cmp1 = icmp eq <16 x i16> %val3, %val4 5468 %and = xor <16 x i1> %cmp0, %cmp1 5469 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 5470 ret <16 x i8> %sel 5471} 5472 5473define <16 x i16> @fun189(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i16> %val5, <16 x i16> %val6) { 5474; CHECK-LABEL: fun189: 5475; CHECK: # BB#0: 5476; CHECK-NEXT: vceqh %v0, %v25, %v29 5477; CHECK-NEXT: vceqh %v1, %v24, %v28 5478; CHECK-NEXT: vx %v0, %v1, %v0 5479; CHECK-NEXT: vl %v1, 192(%r15) 5480; CHECK-NEXT: vl %v2, 160(%r15) 5481; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 5482; CHECK-NEXT: vceqh %v0, %v27, %v31 5483; CHECK-NEXT: vceqh %v1, %v26, %v30 5484; CHECK-NEXT: vx %v0, %v1, %v0 5485; CHECK-NEXT: vl %v1, 208(%r15) 5486; CHECK-NEXT: vl %v2, 176(%r15) 5487; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 5488; CHECK-NEXT: br %r14 5489 %cmp0 = icmp eq <16 x i16> %val1, %val2 5490 %cmp1 = icmp eq <16 x i16> %val3, %val4 5491 %and = xor <16 x i1> %cmp0, %cmp1 5492 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6 5493 ret <16 x i16> %sel 5494} 5495 5496define <16 x i32> @fun190(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i32> %val5, <16 x i32> %val6) { 5497; CHECK-LABEL: fun190: 5498; CHECK: # BB#0: 5499; CHECK-NEXT: vceqh %v0, %v25, %v29 5500; CHECK-NEXT: vceqh %v1, %v24, %v28 5501; CHECK-NEXT: vx %v0, %v1, %v0 5502; CHECK-NEXT: vl %v2, 224(%r15) 5503; CHECK-NEXT: vl %v3, 160(%r15) 5504; CHECK-NEXT: vuphh %v1, %v0 5505; CHECK-NEXT: vsel %v24, %v3, %v2, %v1 5506; CHECK-NEXT: vceqh %v1, %v27, %v31 5507; CHECK-NEXT: vceqh %v2, %v26, %v30 5508; CHECK-NEXT: vx %v1, %v2, %v1 5509; CHECK-NEXT: vl %v3, 256(%r15) 5510; CHECK-NEXT: vl %v4, 192(%r15) 5511; CHECK-NEXT: vuphh %v2, %v1 5512; CHECK-NEXT: vmrlg %v0, %v0, %v0 5513; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 5514; CHECK-NEXT: vl %v2, 240(%r15) 5515; CHECK-NEXT: vl %v3, 176(%r15) 5516; CHECK-NEXT: vuphh %v0, %v0 5517; CHECK-NEXT: vsel %v26, %v3, %v2, %v0 5518; CHECK-NEXT: vmrlg %v0, %v1, %v1 5519; CHECK-NEXT: vl %v1, 272(%r15) 5520; CHECK-NEXT: vl %v2, 208(%r15) 5521; CHECK-NEXT: vuphh %v0, %v0 5522; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 5523; CHECK-NEXT: br %r14 5524 %cmp0 = icmp eq <16 x i16> %val1, %val2 5525 %cmp1 = icmp eq <16 x i16> %val3, %val4 5526 %and = xor <16 x i1> %cmp0, %cmp1 5527 %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6 5528 ret <16 x i32> %sel 5529} 5530 5531define <16 x i8> @fun191(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i8> %val5, <16 x i8> %val6) { 5532; CHECK-LABEL: fun191: 5533; CHECK: # BB#0: 5534; CHECK-NEXT: vl %v0, 208(%r15) 5535; CHECK-NEXT: vl %v1, 192(%r15) 5536; CHECK-NEXT: vceqf %v0, %v31, %v0 5537; CHECK-NEXT: vceqf %v1, %v29, %v1 5538; CHECK-NEXT: vpkf %v0, %v1, %v0 5539; CHECK-NEXT: vceqh %v1, %v26, %v30 5540; CHECK-NEXT: vx %v0, %v1, %v0 5541; CHECK-NEXT: vl %v1, 176(%r15) 5542; CHECK-NEXT: vl %v2, 160(%r15) 5543; CHECK-NEXT: vceqf %v1, %v27, %v1 5544; CHECK-NEXT: vceqf %v2, %v25, %v2 5545; CHECK-NEXT: vpkf %v1, %v2, %v1 5546; CHECK-NEXT: vceqh %v2, %v24, %v28 5547; CHECK-NEXT: vx %v1, %v2, %v1 5548; CHECK-NEXT: vpkh %v0, %v1, %v0 5549; CHECK-NEXT: vl %v1, 240(%r15) 5550; CHECK-NEXT: vl %v2, 224(%r15) 5551; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 5552; CHECK-NEXT: br %r14 5553 %cmp0 = icmp eq <16 x i16> %val1, %val2 5554 %cmp1 = icmp eq <16 x i32> %val3, %val4 5555 %and = xor <16 x i1> %cmp0, %cmp1 5556 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6 5557 ret <16 x i8> %sel 5558} 5559 5560define <16 x i32> @fun192(<16 x i16> %val1, <16 x i16> %val2, <16 x i64> %val3, <16 x i64> %val4, <16 x i32> %val5, <16 x i32> %val6) { 5561; CHECK-LABEL: fun192: 5562; CHECK: # BB#0: 5563; CHECK-NEXT: vl %v0, 240(%r15) 5564; CHECK-NEXT: vl %v1, 224(%r15) 5565; CHECK-NEXT: vceqg %v0, %v27, %v0 5566; CHECK-NEXT: vceqg %v1, %v25, %v1 5567; CHECK-NEXT: vpkg %v0, %v1, %v0 5568; CHECK-NEXT: vceqh %v1, %v24, %v28 5569; CHECK-NEXT: vuphh %v2, %v1 5570; CHECK-NEXT: vx %v0, %v2, %v0 5571; CHECK-NEXT: vl %v2, 416(%r15) 5572; CHECK-NEXT: vl %v3, 352(%r15) 5573; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 5574; CHECK-NEXT: vl %v0, 304(%r15) 5575; CHECK-NEXT: vl %v2, 176(%r15) 5576; CHECK-NEXT: vceqg %v0, %v2, %v0 5577; CHECK-NEXT: vl %v2, 288(%r15) 5578; CHECK-NEXT: vl %v3, 160(%r15) 5579; CHECK-NEXT: vceqg %v2, %v3, %v2 5580; CHECK-NEXT: vpkg %v0, %v2, %v0 5581; CHECK-NEXT: vceqh %v2, %v26, %v30 5582; CHECK-NEXT: vuphh %v3, %v2 5583; CHECK-NEXT: vx %v0, %v3, %v0 5584; CHECK-NEXT: vl %v3, 448(%r15) 5585; CHECK-NEXT: vl %v4, 384(%r15) 5586; CHECK-NEXT: vsel %v28, %v4, %v3, %v0 5587; CHECK-NEXT: vl %v0, 272(%r15) 5588; CHECK-NEXT: vl %v3, 256(%r15) 5589; CHECK-NEXT: vceqg %v0, %v31, %v0 5590; CHECK-NEXT: vceqg %v3, %v29, %v3 5591; CHECK-NEXT: vmrlg %v1, %v1, %v1 5592; CHECK-NEXT: vpkg %v0, %v3, %v0 5593; CHECK-NEXT: vuphh %v1, %v1 5594; CHECK-NEXT: vl %v3, 368(%r15) 5595; CHECK-NEXT: vx %v0, %v1, %v0 5596; CHECK-NEXT: vl %v1, 432(%r15) 5597; CHECK-NEXT: vsel %v26, %v3, %v1, %v0 5598; CHECK-NEXT: vl %v0, 336(%r15) 5599; CHECK-NEXT: vl %v1, 208(%r15) 5600; CHECK-NEXT: vl %v3, 192(%r15) 5601; CHECK-NEXT: vceqg %v0, %v1, %v0 5602; CHECK-NEXT: vl %v1, 320(%r15) 5603; CHECK-NEXT: vceqg %v1, %v3, %v1 5604; CHECK-NEXT: vpkg %v0, %v1, %v0 5605; CHECK-NEXT: vmrlg %v1, %v2, %v2 5606; CHECK-NEXT: vl %v2, 400(%r15) 5607; CHECK-NEXT: vuphh %v1, %v1 5608; CHECK-NEXT: vx %v0, %v1, %v0 5609; CHECK-NEXT: vl %v1, 464(%r15) 5610; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 5611; CHECK-NEXT: br %r14 5612 %cmp0 = icmp eq <16 x i16> %val1, %val2 5613 %cmp1 = icmp eq <16 x i64> %val3, %val4 5614 %and = xor <16 x i1> %cmp0, %cmp1 5615 %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6 5616 ret <16 x i32> %sel 5617} 5618 5619define <16 x double> @fun193(<16 x i16> %val1, <16 x i16> %val2, <16 x float> %val3, <16 x float> %val4, <16 x double> %val5, <16 x double> %val6) { 5620; CHECK-LABEL: fun193: 5621; CHECK: # BB#0: 5622; CHECK-NEXT: vl %v0, 160(%r15) 5623; CHECK-NEXT: vmrlf %v1, %v0, %v0 5624; CHECK-NEXT: vmrlf %v2, %v25, %v25 5625; CHECK-NEXT: vldeb %v1, %v1 5626; CHECK-NEXT: vldeb %v2, %v2 5627; CHECK-NEXT: vfchdb %v1, %v2, %v1 5628; CHECK-NEXT: vmrhf %v0, %v0, %v0 5629; CHECK-NEXT: vmrhf %v2, %v25, %v25 5630; CHECK-NEXT: vldeb %v0, %v0 5631; CHECK-NEXT: vldeb %v2, %v2 5632; CHECK-NEXT: vl %v3, 352(%r15) 5633; CHECK-NEXT: vl %v4, 224(%r15) 5634; CHECK-NEXT: vl %v5, 416(%r15) 5635; CHECK-NEXT: vl %v6, 288(%r15) 5636; CHECK-NEXT: vfchdb %v0, %v2, %v0 5637; CHECK-NEXT: vpkg %v0, %v0, %v1 5638; CHECK-NEXT: vceqh %v1, %v24, %v28 5639; CHECK-NEXT: vuphh %v2, %v1 5640; CHECK-NEXT: vx %v0, %v2, %v0 5641; CHECK-NEXT: vuphf %v2, %v0 5642; CHECK-NEXT: vsel %v24, %v4, %v3, %v2 5643; CHECK-NEXT: vl %v2, 176(%r15) 5644; CHECK-NEXT: vmrlf %v3, %v2, %v2 5645; CHECK-NEXT: vmrlf %v4, %v27, %v27 5646; CHECK-NEXT: vmrhf %v2, %v2, %v2 5647; CHECK-NEXT: vmrlg %v1, %v1, %v1 5648; CHECK-NEXT: vuphh %v1, %v1 5649; CHECK-NEXT: vmrlg %v0, %v0, %v0 5650; CHECK-NEXT: vuphf %v0, %v0 5651; CHECK-NEXT: vldeb %v3, %v3 5652; CHECK-NEXT: vldeb %v4, %v4 5653; CHECK-NEXT: vfchdb %v3, %v4, %v3 5654; CHECK-NEXT: vmrhf %v4, %v27, %v27 5655; CHECK-NEXT: vldeb %v2, %v2 5656; CHECK-NEXT: vldeb %v4, %v4 5657; CHECK-NEXT: vfchdb %v2, %v4, %v2 5658; CHECK-NEXT: vl %v4, 256(%r15) 5659; CHECK-NEXT: vpkg %v2, %v2, %v3 5660; CHECK-NEXT: vl %v3, 384(%r15) 5661; CHECK-NEXT: vx %v1, %v1, %v2 5662; CHECK-NEXT: vuphf %v2, %v1 5663; CHECK-NEXT: vsel %v28, %v4, %v3, %v2 5664; CHECK-NEXT: vl %v2, 192(%r15) 5665; CHECK-NEXT: vmrlf %v3, %v2, %v2 5666; CHECK-NEXT: vmrlf %v4, %v29, %v29 5667; CHECK-NEXT: vmrhf %v2, %v2, %v2 5668; CHECK-NEXT: vldeb %v3, %v3 5669; CHECK-NEXT: vldeb %v4, %v4 5670; CHECK-NEXT: vfchdb %v3, %v4, %v3 5671; CHECK-NEXT: vmrhf %v4, %v29, %v29 5672; CHECK-NEXT: vldeb %v2, %v2 5673; CHECK-NEXT: vldeb %v4, %v4 5674; CHECK-NEXT: vfchdb %v2, %v4, %v2 5675; CHECK-NEXT: vpkg %v2, %v2, %v3 5676; CHECK-NEXT: vceqh %v3, %v26, %v30 5677; CHECK-NEXT: vuphh %v4, %v3 5678; CHECK-NEXT: vx %v2, %v4, %v2 5679; CHECK-NEXT: vuphf %v4, %v2 5680; CHECK-NEXT: vsel %v25, %v6, %v5, %v4 5681; CHECK-NEXT: vl %v4, 208(%r15) 5682; CHECK-NEXT: vmrlf %v5, %v4, %v4 5683; CHECK-NEXT: vmrlf %v6, %v31, %v31 5684; CHECK-NEXT: vmrhf %v4, %v4, %v4 5685; CHECK-NEXT: vmrlg %v3, %v3, %v3 5686; CHECK-NEXT: vuphh %v3, %v3 5687; CHECK-NEXT: vldeb %v5, %v5 5688; CHECK-NEXT: vldeb %v6, %v6 5689; CHECK-NEXT: vfchdb %v5, %v6, %v5 5690; CHECK-NEXT: vmrhf %v6, %v31, %v31 5691; CHECK-NEXT: vldeb %v4, %v4 5692; CHECK-NEXT: vldeb %v6, %v6 5693; CHECK-NEXT: vfchdb %v4, %v6, %v4 5694; CHECK-NEXT: vl %v6, 320(%r15) 5695; CHECK-NEXT: vpkg %v4, %v4, %v5 5696; CHECK-NEXT: vl %v5, 448(%r15) 5697; CHECK-NEXT: vx %v3, %v3, %v4 5698; CHECK-NEXT: vuphf %v4, %v3 5699; CHECK-NEXT: vsel %v29, %v6, %v5, %v4 5700; CHECK-NEXT: vl %v4, 368(%r15) 5701; CHECK-NEXT: vl %v5, 240(%r15) 5702; CHECK-NEXT: vsel %v26, %v5, %v4, %v0 5703; CHECK-NEXT: vl %v4, 272(%r15) 5704; CHECK-NEXT: vmrlg %v0, %v1, %v1 5705; CHECK-NEXT: vl %v1, 400(%r15) 5706; CHECK-NEXT: vuphf %v0, %v0 5707; CHECK-NEXT: vsel %v30, %v4, %v1, %v0 5708; CHECK-NEXT: vl %v1, 432(%r15) 5709; CHECK-NEXT: vmrlg %v0, %v2, %v2 5710; CHECK-NEXT: vl %v2, 304(%r15) 5711; CHECK-NEXT: vuphf %v0, %v0 5712; CHECK-NEXT: vsel %v27, %v2, %v1, %v0 5713; CHECK-NEXT: vl %v1, 464(%r15) 5714; CHECK-NEXT: vl %v2, 336(%r15) 5715; CHECK-NEXT: vmrlg %v0, %v3, %v3 5716; CHECK-NEXT: vuphf %v0, %v0 5717; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 5718; CHECK-NEXT: br %r14 5719 %cmp0 = icmp eq <16 x i16> %val1, %val2 5720 %cmp1 = fcmp ogt <16 x float> %val3, %val4 5721 %and = xor <16 x i1> %cmp0, %cmp1 5722 %sel = select <16 x i1> %and, <16 x double> %val5, <16 x double> %val6 5723 ret <16 x double> %sel 5724} 5725 5726define <16 x i32> @fun194(<16 x i16> %val1, <16 x i16> %val2, <16 x double> %val3, <16 x double> %val4, <16 x i32> %val5, <16 x i32> %val6) { 5727; CHECK-LABEL: fun194: 5728; CHECK: # BB#0: 5729; CHECK-NEXT: vl %v0, 240(%r15) 5730; CHECK-NEXT: vl %v1, 224(%r15) 5731; CHECK-NEXT: vfchdb %v0, %v27, %v0 5732; CHECK-NEXT: vfchdb %v1, %v25, %v1 5733; CHECK-NEXT: vpkg %v0, %v1, %v0 5734; CHECK-NEXT: vceqh %v1, %v24, %v28 5735; CHECK-NEXT: vuphh %v2, %v1 5736; CHECK-NEXT: vx %v0, %v2, %v0 5737; CHECK-NEXT: vl %v2, 416(%r15) 5738; CHECK-NEXT: vl %v3, 352(%r15) 5739; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 5740; CHECK-NEXT: vl %v0, 304(%r15) 5741; CHECK-NEXT: vl %v2, 176(%r15) 5742; CHECK-NEXT: vfchdb %v0, %v2, %v0 5743; CHECK-NEXT: vl %v2, 288(%r15) 5744; CHECK-NEXT: vl %v3, 160(%r15) 5745; CHECK-NEXT: vfchdb %v2, %v3, %v2 5746; CHECK-NEXT: vpkg %v0, %v2, %v0 5747; CHECK-NEXT: vceqh %v2, %v26, %v30 5748; CHECK-NEXT: vuphh %v3, %v2 5749; CHECK-NEXT: vx %v0, %v3, %v0 5750; CHECK-NEXT: vl %v3, 448(%r15) 5751; CHECK-NEXT: vl %v4, 384(%r15) 5752; CHECK-NEXT: vsel %v28, %v4, %v3, %v0 5753; CHECK-NEXT: vl %v0, 272(%r15) 5754; CHECK-NEXT: vl %v3, 256(%r15) 5755; CHECK-NEXT: vfchdb %v0, %v31, %v0 5756; CHECK-NEXT: vfchdb %v3, %v29, %v3 5757; CHECK-NEXT: vmrlg %v1, %v1, %v1 5758; CHECK-NEXT: vpkg %v0, %v3, %v0 5759; CHECK-NEXT: vuphh %v1, %v1 5760; CHECK-NEXT: vl %v3, 368(%r15) 5761; CHECK-NEXT: vx %v0, %v1, %v0 5762; CHECK-NEXT: vl %v1, 432(%r15) 5763; CHECK-NEXT: vsel %v26, %v3, %v1, %v0 5764; CHECK-NEXT: vl %v0, 336(%r15) 5765; CHECK-NEXT: vl %v1, 208(%r15) 5766; CHECK-NEXT: vl %v3, 192(%r15) 5767; CHECK-NEXT: vfchdb %v0, %v1, %v0 5768; CHECK-NEXT: vl %v1, 320(%r15) 5769; CHECK-NEXT: vfchdb %v1, %v3, %v1 5770; CHECK-NEXT: vpkg %v0, %v1, %v0 5771; CHECK-NEXT: vmrlg %v1, %v2, %v2 5772; CHECK-NEXT: vl %v2, 400(%r15) 5773; CHECK-NEXT: vuphh %v1, %v1 5774; CHECK-NEXT: vx %v0, %v1, %v0 5775; CHECK-NEXT: vl %v1, 464(%r15) 5776; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 5777; CHECK-NEXT: br %r14 5778 %cmp0 = icmp eq <16 x i16> %val1, %val2 5779 %cmp1 = fcmp ogt <16 x double> %val3, %val4 5780 %and = xor <16 x i1> %cmp0, %cmp1 5781 %sel = select <16 x i1> %and, <16 x i32> %val5, <16 x i32> %val6 5782 ret <16 x i32> %sel 5783} 5784 5785