1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; 3; Test that vector compare / select combinations do not produce any 4; unnecessary pack /unpack / shift instructions. 5; 6; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s 7 8 9define <2 x i8> @fun0(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4) { 10; CHECK-LABEL: fun0: 11; CHECK: # BB#0: 12; CHECK-NEXT: vceqb %v0, %v24, %v26 13; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 14; CHECK-NEXT: br %r14 15 %cmp = icmp eq <2 x i8> %val1, %val2 16 %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4 17 ret <2 x i8> %sel 18} 19 20define <2 x i16> @fun1(<2 x i8> %val1, <2 x i8> %val2, <2 x i16> %val3, <2 x i16> %val4) { 21; CHECK-LABEL: fun1: 22; CHECK: # BB#0: 23; CHECK-NEXT: vceqb %v0, %v24, %v26 24; CHECK-NEXT: vuphb %v0, %v0 25; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 26; CHECK-NEXT: br %r14 27 %cmp = icmp eq <2 x i8> %val1, %val2 28 %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4 29 ret <2 x i16> %sel 30} 31 32define <2 x i32> @fun2(<2 x i8> %val1, <2 x i8> %val2, <2 x i32> %val3, <2 x i32> %val4) { 33; CHECK-LABEL: fun2: 34; CHECK: # BB#0: 35; CHECK-NEXT: vceqb %v0, %v24, %v26 36; CHECK-NEXT: vuphb %v0, %v0 37; CHECK-NEXT: vuphh %v0, %v0 38; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 39; CHECK-NEXT: br %r14 40 %cmp = icmp eq <2 x i8> %val1, %val2 41 %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4 42 ret <2 x i32> %sel 43} 44 45define <2 x i64> @fun3(<2 x i8> %val1, <2 x i8> %val2, <2 x i64> %val3, <2 x i64> %val4) { 46; CHECK-LABEL: fun3: 47; CHECK: # BB#0: 48; CHECK-NEXT: vceqb %v0, %v24, %v26 49; CHECK-NEXT: vuphb %v0, %v0 50; CHECK-NEXT: vuphh %v0, %v0 51; CHECK-NEXT: vuphf %v0, %v0 52; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 53; CHECK-NEXT: br %r14 54 %cmp = icmp eq <2 x i8> %val1, %val2 55 %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4 56 ret <2 x i64> %sel 57} 58 59define <2 x float> @fun4(<2 x i8> %val1, <2 x i8> %val2, <2 x float> %val3, <2 x float> %val4) { 60; CHECK-LABEL: fun4: 61; CHECK: # BB#0: 62; CHECK-NEXT: vceqb %v0, %v24, %v26 63; CHECK-NEXT: vuphb %v0, %v0 64; CHECK-NEXT: vuphh %v0, %v0 65; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 66; CHECK-NEXT: br %r14 67 %cmp = icmp eq <2 x i8> %val1, %val2 68 %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4 69 ret <2 x float> %sel 70} 71 72define <2 x double> @fun5(<2 x i8> %val1, <2 x i8> %val2, <2 x double> %val3, <2 x double> %val4) { 73; CHECK-LABEL: fun5: 74; CHECK: # BB#0: 75; CHECK-NEXT: vceqb %v0, %v24, %v26 76; CHECK-NEXT: vuphb %v0, %v0 77; CHECK-NEXT: vuphh %v0, %v0 78; CHECK-NEXT: vuphf %v0, %v0 79; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 80; CHECK-NEXT: br %r14 81 %cmp = icmp eq <2 x i8> %val1, %val2 82 %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4 83 ret <2 x double> %sel 84} 85 86define <2 x i8> @fun6(<2 x i16> %val1, <2 x i16> %val2, <2 x i8> %val3, <2 x i8> %val4) { 87; CHECK-LABEL: fun6: 88; CHECK: # BB#0: 89; CHECK-NEXT: vceqh %v0, %v24, %v26 90; CHECK-NEXT: vpkh %v0, %v0, %v0 91; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 92; CHECK-NEXT: br %r14 93 %cmp = icmp eq <2 x i16> %val1, %val2 94 %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4 95 ret <2 x i8> %sel 96} 97 98define <2 x i16> @fun7(<2 x i16> %val1, <2 x i16> %val2, <2 x i16> %val3, <2 x i16> %val4) { 99; CHECK-LABEL: fun7: 100; CHECK: # BB#0: 101; CHECK-NEXT: vceqh %v0, %v24, %v26 102; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 103; CHECK-NEXT: br %r14 104 %cmp = icmp eq <2 x i16> %val1, %val2 105 %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4 106 ret <2 x i16> %sel 107} 108 109define <2 x i32> @fun8(<2 x i16> %val1, <2 x i16> %val2, <2 x i32> %val3, <2 x i32> %val4) { 110; CHECK-LABEL: fun8: 111; CHECK: # BB#0: 112; CHECK-NEXT: vceqh %v0, %v24, %v26 113; CHECK-NEXT: vuphh %v0, %v0 114; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 115; CHECK-NEXT: br %r14 116 %cmp = icmp eq <2 x i16> %val1, %val2 117 %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4 118 ret <2 x i32> %sel 119} 120 121define <2 x i64> @fun9(<2 x i16> %val1, <2 x i16> %val2, <2 x i64> %val3, <2 x i64> %val4) { 122; CHECK-LABEL: fun9: 123; CHECK: # BB#0: 124; CHECK-NEXT: vceqh %v0, %v24, %v26 125; CHECK-NEXT: vuphh %v0, %v0 126; CHECK-NEXT: vuphf %v0, %v0 127; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 128; CHECK-NEXT: br %r14 129 %cmp = icmp eq <2 x i16> %val1, %val2 130 %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4 131 ret <2 x i64> %sel 132} 133 134define <2 x float> @fun10(<2 x i16> %val1, <2 x i16> %val2, <2 x float> %val3, <2 x float> %val4) { 135; CHECK-LABEL: fun10: 136; CHECK: # BB#0: 137; CHECK-NEXT: vceqh %v0, %v24, %v26 138; CHECK-NEXT: vuphh %v0, %v0 139; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 140; CHECK-NEXT: br %r14 141 %cmp = icmp eq <2 x i16> %val1, %val2 142 %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4 143 ret <2 x float> %sel 144} 145 146define <2 x double> @fun11(<2 x i16> %val1, <2 x i16> %val2, <2 x double> %val3, <2 x double> %val4) { 147; CHECK-LABEL: fun11: 148; CHECK: # BB#0: 149; CHECK-NEXT: vceqh %v0, %v24, %v26 150; CHECK-NEXT: vuphh %v0, %v0 151; CHECK-NEXT: vuphf %v0, %v0 152; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 153; CHECK-NEXT: br %r14 154 %cmp = icmp eq <2 x i16> %val1, %val2 155 %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4 156 ret <2 x double> %sel 157} 158 159define <2 x i8> @fun12(<2 x i32> %val1, <2 x i32> %val2, <2 x i8> %val3, <2 x i8> %val4) { 160; CHECK-LABEL: fun12: 161; CHECK: # BB#0: 162; CHECK-NEXT: larl %r1, .LCPI12_0 163; CHECK-NEXT: vl %v1, 0(%r1) 164; CHECK-NEXT: vceqf %v0, %v24, %v26 165; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 166; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 167; CHECK-NEXT: br %r14 168 %cmp = icmp eq <2 x i32> %val1, %val2 169 %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4 170 ret <2 x i8> %sel 171} 172 173define <2 x i16> @fun13(<2 x i32> %val1, <2 x i32> %val2, <2 x i16> %val3, <2 x i16> %val4) { 174; CHECK-LABEL: fun13: 175; CHECK: # BB#0: 176; CHECK-NEXT: vceqf %v0, %v24, %v26 177; CHECK-NEXT: vpkf %v0, %v0, %v0 178; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 179; CHECK-NEXT: br %r14 180 %cmp = icmp eq <2 x i32> %val1, %val2 181 %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4 182 ret <2 x i16> %sel 183} 184 185define <2 x i32> @fun14(<2 x i32> %val1, <2 x i32> %val2, <2 x i32> %val3, <2 x i32> %val4) { 186; CHECK-LABEL: fun14: 187; CHECK: # BB#0: 188; CHECK-NEXT: vceqf %v0, %v24, %v26 189; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 190; CHECK-NEXT: br %r14 191 %cmp = icmp eq <2 x i32> %val1, %val2 192 %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4 193 ret <2 x i32> %sel 194} 195 196define <2 x i64> @fun15(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4) { 197; CHECK-LABEL: fun15: 198; CHECK: # BB#0: 199; CHECK-NEXT: vceqf %v0, %v24, %v26 200; CHECK-NEXT: vuphf %v0, %v0 201; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 202; CHECK-NEXT: br %r14 203 %cmp = icmp eq <2 x i32> %val1, %val2 204 %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4 205 ret <2 x i64> %sel 206} 207 208define <2 x float> @fun16(<2 x i32> %val1, <2 x i32> %val2, <2 x float> %val3, <2 x float> %val4) { 209; CHECK-LABEL: fun16: 210; CHECK: # BB#0: 211; CHECK-NEXT: vceqf %v0, %v24, %v26 212; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 213; CHECK-NEXT: br %r14 214 %cmp = icmp eq <2 x i32> %val1, %val2 215 %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4 216 ret <2 x float> %sel 217} 218 219define <2 x double> @fun17(<2 x i32> %val1, <2 x i32> %val2, <2 x double> %val3, <2 x double> %val4) { 220; CHECK-LABEL: fun17: 221; CHECK: # BB#0: 222; CHECK-NEXT: vceqf %v0, %v24, %v26 223; CHECK-NEXT: vuphf %v0, %v0 224; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 225; CHECK-NEXT: br %r14 226 %cmp = icmp eq <2 x i32> %val1, %val2 227 %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4 228 ret <2 x double> %sel 229} 230 231define <2 x i8> @fun18(<2 x i64> %val1, <2 x i64> %val2, <2 x i8> %val3, <2 x i8> %val4) { 232; CHECK-LABEL: fun18: 233; CHECK: # BB#0: 234; CHECK-NEXT: vceqg %v0, %v24, %v26 235; CHECK-NEXT: vrepih %v1, 1807 236; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 237; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 238; CHECK-NEXT: br %r14 239 %cmp = icmp eq <2 x i64> %val1, %val2 240 %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4 241 ret <2 x i8> %sel 242} 243 244define <2 x i16> @fun19(<2 x i64> %val1, <2 x i64> %val2, <2 x i16> %val3, <2 x i16> %val4) { 245; CHECK-LABEL: fun19: 246; CHECK: # BB#0: 247; CHECK-NEXT: larl %r1, .LCPI19_0 248; CHECK-NEXT: vl %v1, 0(%r1) 249; CHECK-NEXT: vceqg %v0, %v24, %v26 250; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 251; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 252; CHECK-NEXT: br %r14 253 %cmp = icmp eq <2 x i64> %val1, %val2 254 %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4 255 ret <2 x i16> %sel 256} 257 258define <2 x i32> @fun20(<2 x i64> %val1, <2 x i64> %val2, <2 x i32> %val3, <2 x i32> %val4) { 259; CHECK-LABEL: fun20: 260; CHECK: # BB#0: 261; CHECK-NEXT: vceqg %v0, %v24, %v26 262; CHECK-NEXT: vpkg %v0, %v0, %v0 263; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 264; CHECK-NEXT: br %r14 265 %cmp = icmp eq <2 x i64> %val1, %val2 266 %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4 267 ret <2 x i32> %sel 268} 269 270define <2 x i64> @fun21(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4) { 271; CHECK-LABEL: fun21: 272; CHECK: # BB#0: 273; CHECK-NEXT: vceqg %v0, %v24, %v26 274; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 275; CHECK-NEXT: br %r14 276 %cmp = icmp eq <2 x i64> %val1, %val2 277 %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4 278 ret <2 x i64> %sel 279} 280 281define <2 x float> @fun22(<2 x i64> %val1, <2 x i64> %val2, <2 x float> %val3, <2 x float> %val4) { 282; CHECK-LABEL: fun22: 283; CHECK: # BB#0: 284; CHECK-NEXT: vceqg %v0, %v24, %v26 285; CHECK-NEXT: vpkg %v0, %v0, %v0 286; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 287; CHECK-NEXT: br %r14 288 %cmp = icmp eq <2 x i64> %val1, %val2 289 %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4 290 ret <2 x float> %sel 291} 292 293define <2 x double> @fun23(<2 x i64> %val1, <2 x i64> %val2, <2 x double> %val3, <2 x double> %val4) { 294; CHECK-LABEL: fun23: 295; CHECK: # BB#0: 296; CHECK-NEXT: vceqg %v0, %v24, %v26 297; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 298; CHECK-NEXT: br %r14 299 %cmp = icmp eq <2 x i64> %val1, %val2 300 %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4 301 ret <2 x double> %sel 302} 303 304define <4 x i8> @fun24(<4 x i8> %val1, <4 x i8> %val2, <4 x i8> %val3, <4 x i8> %val4) { 305; CHECK-LABEL: fun24: 306; CHECK: # BB#0: 307; CHECK-NEXT: vceqb %v0, %v24, %v26 308; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 309; CHECK-NEXT: br %r14 310 %cmp = icmp eq <4 x i8> %val1, %val2 311 %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4 312 ret <4 x i8> %sel 313} 314 315define <4 x i16> @fun25(<4 x i8> %val1, <4 x i8> %val2, <4 x i16> %val3, <4 x i16> %val4) { 316; CHECK-LABEL: fun25: 317; CHECK: # BB#0: 318; CHECK-NEXT: vceqb %v0, %v24, %v26 319; CHECK-NEXT: vuphb %v0, %v0 320; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 321; CHECK-NEXT: br %r14 322 %cmp = icmp eq <4 x i8> %val1, %val2 323 %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4 324 ret <4 x i16> %sel 325} 326 327define <4 x i32> @fun26(<4 x i8> %val1, <4 x i8> %val2, <4 x i32> %val3, <4 x i32> %val4) { 328; CHECK-LABEL: fun26: 329; CHECK: # BB#0: 330; CHECK-NEXT: vceqb %v0, %v24, %v26 331; CHECK-NEXT: vuphb %v0, %v0 332; CHECK-NEXT: vuphh %v0, %v0 333; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 334; CHECK-NEXT: br %r14 335 %cmp = icmp eq <4 x i8> %val1, %val2 336 %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4 337 ret <4 x i32> %sel 338} 339 340define <4 x i64> @fun27(<4 x i8> %val1, <4 x i8> %val2, <4 x i64> %val3, <4 x i64> %val4) { 341; CHECK-LABEL: fun27: 342; CHECK: # BB#0: 343; CHECK-NEXT: vceqb %v0, %v24, %v26 344; CHECK-NEXT: vuphb %v1, %v0 345; CHECK-NEXT: vpkf %v0, %v0, %v0 346; CHECK-NEXT: vuphb %v0, %v0 347; CHECK-NEXT: vuphh %v1, %v1 348; CHECK-NEXT: vuphh %v0, %v0 349; CHECK-NEXT: vuphf %v1, %v1 350; CHECK-NEXT: vuphf %v0, %v0 351; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 352; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 353; CHECK-NEXT: br %r14 354 %cmp = icmp eq <4 x i8> %val1, %val2 355 %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4 356 ret <4 x i64> %sel 357} 358 359define <4 x float> @fun28(<4 x i8> %val1, <4 x i8> %val2, <4 x float> %val3, <4 x float> %val4) { 360; CHECK-LABEL: fun28: 361; CHECK: # BB#0: 362; CHECK-NEXT: vceqb %v0, %v24, %v26 363; CHECK-NEXT: vuphb %v0, %v0 364; CHECK-NEXT: vuphh %v0, %v0 365; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 366; CHECK-NEXT: br %r14 367 %cmp = icmp eq <4 x i8> %val1, %val2 368 %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 369 ret <4 x float> %sel 370} 371 372define <4 x double> @fun29(<4 x i8> %val1, <4 x i8> %val2, <4 x double> %val3, <4 x double> %val4) { 373; CHECK-LABEL: fun29: 374; CHECK: # BB#0: 375; CHECK-NEXT: vceqb %v0, %v24, %v26 376; CHECK-NEXT: vuphb %v1, %v0 377; CHECK-NEXT: vpkf %v0, %v0, %v0 378; CHECK-NEXT: vuphb %v0, %v0 379; CHECK-NEXT: vuphh %v1, %v1 380; CHECK-NEXT: vuphh %v0, %v0 381; CHECK-NEXT: vuphf %v1, %v1 382; CHECK-NEXT: vuphf %v0, %v0 383; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 384; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 385; CHECK-NEXT: br %r14 386 %cmp = icmp eq <4 x i8> %val1, %val2 387 %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4 388 ret <4 x double> %sel 389} 390 391define <4 x i8> @fun30(<4 x i16> %val1, <4 x i16> %val2, <4 x i8> %val3, <4 x i8> %val4) { 392; CHECK-LABEL: fun30: 393; CHECK: # BB#0: 394; CHECK-NEXT: vceqh %v0, %v24, %v26 395; CHECK-NEXT: vpkh %v0, %v0, %v0 396; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 397; CHECK-NEXT: br %r14 398 %cmp = icmp eq <4 x i16> %val1, %val2 399 %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4 400 ret <4 x i8> %sel 401} 402 403define <4 x i16> @fun31(<4 x i16> %val1, <4 x i16> %val2, <4 x i16> %val3, <4 x i16> %val4) { 404; CHECK-LABEL: fun31: 405; CHECK: # BB#0: 406; CHECK-NEXT: vceqh %v0, %v24, %v26 407; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 408; CHECK-NEXT: br %r14 409 %cmp = icmp eq <4 x i16> %val1, %val2 410 %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4 411 ret <4 x i16> %sel 412} 413 414define <4 x i32> @fun32(<4 x i16> %val1, <4 x i16> %val2, <4 x i32> %val3, <4 x i32> %val4) { 415; CHECK-LABEL: fun32: 416; CHECK: # BB#0: 417; CHECK-NEXT: vceqh %v0, %v24, %v26 418; CHECK-NEXT: vuphh %v0, %v0 419; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 420; CHECK-NEXT: br %r14 421 %cmp = icmp eq <4 x i16> %val1, %val2 422 %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4 423 ret <4 x i32> %sel 424} 425 426define <4 x i64> @fun33(<4 x i16> %val1, <4 x i16> %val2, <4 x i64> %val3, <4 x i64> %val4) { 427; CHECK-LABEL: fun33: 428; CHECK: # BB#0: 429; CHECK-NEXT: vceqh %v0, %v24, %v26 430; CHECK-NEXT: vuphh %v1, %v0 431; CHECK-NEXT: vpkg %v0, %v0, %v0 432; CHECK-NEXT: vuphh %v0, %v0 433; CHECK-NEXT: vuphf %v1, %v1 434; CHECK-NEXT: vuphf %v0, %v0 435; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 436; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 437; CHECK-NEXT: br %r14 438 %cmp = icmp eq <4 x i16> %val1, %val2 439 %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4 440 ret <4 x i64> %sel 441} 442 443define <4 x float> @fun34(<4 x i16> %val1, <4 x i16> %val2, <4 x float> %val3, <4 x float> %val4) { 444; CHECK-LABEL: fun34: 445; CHECK: # BB#0: 446; CHECK-NEXT: vceqh %v0, %v24, %v26 447; CHECK-NEXT: vuphh %v0, %v0 448; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 449; CHECK-NEXT: br %r14 450 %cmp = icmp eq <4 x i16> %val1, %val2 451 %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 452 ret <4 x float> %sel 453} 454 455define <4 x double> @fun35(<4 x i16> %val1, <4 x i16> %val2, <4 x double> %val3, <4 x double> %val4) { 456; CHECK-LABEL: fun35: 457; CHECK: # BB#0: 458; CHECK-NEXT: vceqh %v0, %v24, %v26 459; CHECK-NEXT: vuphh %v1, %v0 460; CHECK-NEXT: vpkg %v0, %v0, %v0 461; CHECK-NEXT: vuphh %v0, %v0 462; CHECK-NEXT: vuphf %v1, %v1 463; CHECK-NEXT: vuphf %v0, %v0 464; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 465; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 466; CHECK-NEXT: br %r14 467 %cmp = icmp eq <4 x i16> %val1, %val2 468 %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4 469 ret <4 x double> %sel 470} 471 472define <4 x i8> @fun36(<4 x i32> %val1, <4 x i32> %val2, <4 x i8> %val3, <4 x i8> %val4) { 473; CHECK-LABEL: fun36: 474; CHECK: # BB#0: 475; CHECK-NEXT: larl %r1, .LCPI36_0 476; CHECK-NEXT: vl %v1, 0(%r1) 477; CHECK-NEXT: vceqf %v0, %v24, %v26 478; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 479; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 480; CHECK-NEXT: br %r14 481 %cmp = icmp eq <4 x i32> %val1, %val2 482 %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4 483 ret <4 x i8> %sel 484} 485 486define <4 x i16> @fun37(<4 x i32> %val1, <4 x i32> %val2, <4 x i16> %val3, <4 x i16> %val4) { 487; CHECK-LABEL: fun37: 488; CHECK: # BB#0: 489; CHECK-NEXT: vceqf %v0, %v24, %v26 490; CHECK-NEXT: vpkf %v0, %v0, %v0 491; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 492; CHECK-NEXT: br %r14 493 %cmp = icmp eq <4 x i32> %val1, %val2 494 %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4 495 ret <4 x i16> %sel 496} 497 498define <4 x i32> @fun38(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3, <4 x i32> %val4) { 499; CHECK-LABEL: fun38: 500; CHECK: # BB#0: 501; CHECK-NEXT: vceqf %v0, %v24, %v26 502; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 503; CHECK-NEXT: br %r14 504 %cmp = icmp eq <4 x i32> %val1, %val2 505 %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4 506 ret <4 x i32> %sel 507} 508 509define <4 x i64> @fun39(<4 x i32> %val1, <4 x i32> %val2, <4 x i64> %val3, <4 x i64> %val4) { 510; CHECK-LABEL: fun39: 511; CHECK: # BB#0: 512; CHECK-NEXT: vceqf %v0, %v24, %v26 513; CHECK-NEXT: vuphf %v1, %v0 514; CHECK-NEXT: vmrlg %v0, %v0, %v0 515; CHECK-NEXT: vuphf %v0, %v0 516; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 517; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 518; CHECK-NEXT: br %r14 519 %cmp = icmp eq <4 x i32> %val1, %val2 520 %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4 521 ret <4 x i64> %sel 522} 523 524define <4 x float> @fun40(<4 x i32> %val1, <4 x i32> %val2, <4 x float> %val3, <4 x float> %val4) { 525; CHECK-LABEL: fun40: 526; CHECK: # BB#0: 527; CHECK-NEXT: vceqf %v0, %v24, %v26 528; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 529; CHECK-NEXT: br %r14 530 %cmp = icmp eq <4 x i32> %val1, %val2 531 %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 532 ret <4 x float> %sel 533} 534 535define <4 x double> @fun41(<4 x i32> %val1, <4 x i32> %val2, <4 x double> %val3, <4 x double> %val4) { 536; CHECK-LABEL: fun41: 537; CHECK: # BB#0: 538; CHECK-NEXT: vceqf %v0, %v24, %v26 539; CHECK-NEXT: vuphf %v1, %v0 540; CHECK-NEXT: vmrlg %v0, %v0, %v0 541; CHECK-NEXT: vuphf %v0, %v0 542; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 543; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 544; CHECK-NEXT: br %r14 545 %cmp = icmp eq <4 x i32> %val1, %val2 546 %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4 547 ret <4 x double> %sel 548} 549 550define <4 x i8> @fun42(<4 x i64> %val1, <4 x i64> %val2, <4 x i8> %val3, <4 x i8> %val4) { 551; CHECK-LABEL: fun42: 552; CHECK: # BB#0: 553; CHECK-NEXT: larl %r1, .LCPI42_0 554; CHECK-NEXT: vl %v2, 0(%r1) 555; CHECK-NEXT: vceqg %v0, %v26, %v30 556; CHECK-NEXT: vceqg %v1, %v24, %v28 557; CHECK-NEXT: vperm %v0, %v1, %v0, %v2 558; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 559; CHECK-NEXT: br %r14 560 %cmp = icmp eq <4 x i64> %val1, %val2 561 %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4 562 ret <4 x i8> %sel 563} 564 565define <4 x i16> @fun43(<4 x i64> %val1, <4 x i64> %val2, <4 x i16> %val3, <4 x i16> %val4) { 566; CHECK-LABEL: fun43: 567; CHECK: # BB#0: 568; CHECK-NEXT: larl %r1, .LCPI43_0 569; CHECK-NEXT: vl %v2, 0(%r1) 570; CHECK-NEXT: vceqg %v0, %v26, %v30 571; CHECK-NEXT: vceqg %v1, %v24, %v28 572; CHECK-NEXT: vperm %v0, %v1, %v0, %v2 573; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 574; CHECK-NEXT: br %r14 575 %cmp = icmp eq <4 x i64> %val1, %val2 576 %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4 577 ret <4 x i16> %sel 578} 579 580define <4 x i32> @fun44(<4 x i64> %val1, <4 x i64> %val2, <4 x i32> %val3, <4 x i32> %val4) { 581; CHECK-LABEL: fun44: 582; CHECK: # BB#0: 583; CHECK-NEXT: vceqg %v0, %v26, %v30 584; CHECK-NEXT: vceqg %v1, %v24, %v28 585; CHECK-NEXT: vpkg %v0, %v1, %v0 586; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 587; CHECK-NEXT: br %r14 588 %cmp = icmp eq <4 x i64> %val1, %val2 589 %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4 590 ret <4 x i32> %sel 591} 592 593define <4 x i64> @fun45(<4 x i64> %val1, <4 x i64> %val2, <4 x i64> %val3, <4 x i64> %val4) { 594; CHECK-LABEL: fun45: 595; CHECK: # BB#0: 596; CHECK-NEXT: vceqg %v0, %v24, %v28 597; CHECK-NEXT: vsel %v24, %v25, %v29, %v0 598; CHECK-NEXT: vceqg %v0, %v26, %v30 599; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 600; CHECK-NEXT: br %r14 601 %cmp = icmp eq <4 x i64> %val1, %val2 602 %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4 603 ret <4 x i64> %sel 604} 605 606define <4 x float> @fun46(<4 x i64> %val1, <4 x i64> %val2, <4 x float> %val3, <4 x float> %val4) { 607; CHECK-LABEL: fun46: 608; CHECK: # BB#0: 609; CHECK-NEXT: vceqg %v0, %v26, %v30 610; CHECK-NEXT: vceqg %v1, %v24, %v28 611; CHECK-NEXT: vpkg %v0, %v1, %v0 612; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 613; CHECK-NEXT: br %r14 614 %cmp = icmp eq <4 x i64> %val1, %val2 615 %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 616 ret <4 x float> %sel 617} 618 619define <4 x double> @fun47(<4 x i64> %val1, <4 x i64> %val2, <4 x double> %val3, <4 x double> %val4) { 620; CHECK-LABEL: fun47: 621; CHECK: # BB#0: 622; CHECK-NEXT: vceqg %v0, %v24, %v28 623; CHECK-NEXT: vsel %v24, %v25, %v29, %v0 624; CHECK-NEXT: vceqg %v0, %v26, %v30 625; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 626; CHECK-NEXT: br %r14 627 %cmp = icmp eq <4 x i64> %val1, %val2 628 %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4 629 ret <4 x double> %sel 630} 631 632define <8 x i8> @fun48(<8 x i8> %val1, <8 x i8> %val2, <8 x i8> %val3, <8 x i8> %val4) { 633; CHECK-LABEL: fun48: 634; CHECK: # BB#0: 635; CHECK-NEXT: vceqb %v0, %v24, %v26 636; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 637; CHECK-NEXT: br %r14 638 %cmp = icmp eq <8 x i8> %val1, %val2 639 %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4 640 ret <8 x i8> %sel 641} 642 643define <8 x i16> @fun49(<8 x i8> %val1, <8 x i8> %val2, <8 x i16> %val3, <8 x i16> %val4) { 644; CHECK-LABEL: fun49: 645; CHECK: # BB#0: 646; CHECK-NEXT: vceqb %v0, %v24, %v26 647; CHECK-NEXT: vuphb %v0, %v0 648; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 649; CHECK-NEXT: br %r14 650 %cmp = icmp eq <8 x i8> %val1, %val2 651 %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4 652 ret <8 x i16> %sel 653} 654 655define <8 x i32> @fun50(<8 x i8> %val1, <8 x i8> %val2, <8 x i32> %val3, <8 x i32> %val4) { 656; CHECK-LABEL: fun50: 657; CHECK: # BB#0: 658; CHECK-NEXT: vceqb %v0, %v24, %v26 659; CHECK-NEXT: vuphb %v1, %v0 660; CHECK-NEXT: vpkg %v0, %v0, %v0 661; CHECK-NEXT: vuphb %v0, %v0 662; CHECK-NEXT: vuphh %v1, %v1 663; CHECK-NEXT: vuphh %v0, %v0 664; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 665; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 666; CHECK-NEXT: br %r14 667 %cmp = icmp eq <8 x i8> %val1, %val2 668 %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4 669 ret <8 x i32> %sel 670} 671 672define <8 x i64> @fun51(<8 x i8> %val1, <8 x i8> %val2, <8 x i64> %val3, <8 x i64> %val4) { 673; CHECK-LABEL: fun51: 674; CHECK: # BB#0: 675; CHECK-NEXT: vceqb %v0, %v24, %v26 676; CHECK-NEXT: vuphb %v1, %v0 677; CHECK-NEXT: vuphh %v1, %v1 678; CHECK-NEXT: vuphf %v1, %v1 679; CHECK-NEXT: vsel %v24, %v28, %v29, %v1 680; CHECK-NEXT: vpkf %v1, %v0, %v0 681; CHECK-NEXT: vuphb %v1, %v1 682; CHECK-NEXT: vuphh %v1, %v1 683; CHECK-NEXT: vuphf %v1, %v1 684; CHECK-NEXT: vsel %v26, %v30, %v31, %v1 685; CHECK-NEXT: vpkg %v1, %v0, %v0 686; CHECK-NEXT: vuphb %v1, %v1 687; CHECK-NEXT: vsldb %v0, %v0, %v0, 6 688; CHECK-NEXT: vl %v2, 160(%r15) 689; CHECK-NEXT: vuphh %v1, %v1 690; CHECK-NEXT: vuphb %v0, %v0 691; CHECK-NEXT: vuphf %v1, %v1 692; CHECK-NEXT: vuphh %v0, %v0 693; CHECK-NEXT: vsel %v28, %v25, %v2, %v1 694; CHECK-NEXT: vl %v1, 176(%r15) 695; CHECK-NEXT: vuphf %v0, %v0 696; CHECK-NEXT: vsel %v30, %v27, %v1, %v0 697; CHECK-NEXT: br %r14 698 %cmp = icmp eq <8 x i8> %val1, %val2 699 %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4 700 ret <8 x i64> %sel 701} 702 703define <8 x float> @fun52(<8 x i8> %val1, <8 x i8> %val2, <8 x float> %val3, <8 x float> %val4) { 704; CHECK-LABEL: fun52: 705; CHECK: # BB#0: 706; CHECK-NEXT: vceqb %v0, %v24, %v26 707; CHECK-NEXT: vuphb %v1, %v0 708; CHECK-NEXT: vpkg %v0, %v0, %v0 709; CHECK-NEXT: vuphb %v0, %v0 710; CHECK-NEXT: vuphh %v1, %v1 711; CHECK-NEXT: vuphh %v0, %v0 712; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 713; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 714; CHECK-NEXT: br %r14 715 %cmp = icmp eq <8 x i8> %val1, %val2 716 %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4 717 ret <8 x float> %sel 718} 719 720define <8 x double> @fun53(<8 x i8> %val1, <8 x i8> %val2, <8 x double> %val3, <8 x double> %val4) { 721; CHECK-LABEL: fun53: 722; CHECK: # BB#0: 723; CHECK-NEXT: vceqb %v0, %v24, %v26 724; CHECK-NEXT: vuphb %v1, %v0 725; CHECK-NEXT: vuphh %v1, %v1 726; CHECK-NEXT: vuphf %v1, %v1 727; CHECK-NEXT: vsel %v24, %v28, %v29, %v1 728; CHECK-NEXT: vpkf %v1, %v0, %v0 729; CHECK-NEXT: vuphb %v1, %v1 730; CHECK-NEXT: vuphh %v1, %v1 731; CHECK-NEXT: vuphf %v1, %v1 732; CHECK-NEXT: vsel %v26, %v30, %v31, %v1 733; CHECK-NEXT: vpkg %v1, %v0, %v0 734; CHECK-NEXT: vuphb %v1, %v1 735; CHECK-NEXT: vsldb %v0, %v0, %v0, 6 736; CHECK-NEXT: vl %v2, 160(%r15) 737; CHECK-NEXT: vuphh %v1, %v1 738; CHECK-NEXT: vuphb %v0, %v0 739; CHECK-NEXT: vuphf %v1, %v1 740; CHECK-NEXT: vuphh %v0, %v0 741; CHECK-NEXT: vsel %v28, %v25, %v2, %v1 742; CHECK-NEXT: vl %v1, 176(%r15) 743; CHECK-NEXT: vuphf %v0, %v0 744; CHECK-NEXT: vsel %v30, %v27, %v1, %v0 745; CHECK-NEXT: br %r14 746 %cmp = icmp eq <8 x i8> %val1, %val2 747 %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4 748 ret <8 x double> %sel 749} 750 751define <8 x i8> @fun54(<8 x i16> %val1, <8 x i16> %val2, <8 x i8> %val3, <8 x i8> %val4) { 752; CHECK-LABEL: fun54: 753; CHECK: # BB#0: 754; CHECK-NEXT: vceqh %v0, %v24, %v26 755; CHECK-NEXT: vpkh %v0, %v0, %v0 756; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 757; CHECK-NEXT: br %r14 758 %cmp = icmp eq <8 x i16> %val1, %val2 759 %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4 760 ret <8 x i8> %sel 761} 762 763define <8 x i16> @fun55(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4) { 764; CHECK-LABEL: fun55: 765; CHECK: # BB#0: 766; CHECK-NEXT: vceqh %v0, %v24, %v26 767; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 768; CHECK-NEXT: br %r14 769 %cmp = icmp eq <8 x i16> %val1, %val2 770 %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4 771 ret <8 x i16> %sel 772} 773 774define <8 x i32> @fun56(<8 x i16> %val1, <8 x i16> %val2, <8 x i32> %val3, <8 x i32> %val4) { 775; CHECK-LABEL: fun56: 776; CHECK: # BB#0: 777; CHECK-NEXT: vceqh %v0, %v24, %v26 778; CHECK-NEXT: vuphh %v1, %v0 779; CHECK-NEXT: vmrlg %v0, %v0, %v0 780; CHECK-NEXT: vuphh %v0, %v0 781; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 782; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 783; CHECK-NEXT: br %r14 784 %cmp = icmp eq <8 x i16> %val1, %val2 785 %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4 786 ret <8 x i32> %sel 787} 788 789define <8 x i64> @fun57(<8 x i16> %val1, <8 x i16> %val2, <8 x i64> %val3, <8 x i64> %val4) { 790; CHECK-LABEL: fun57: 791; CHECK: # BB#0: 792; CHECK-NEXT: vceqh %v0, %v24, %v26 793; CHECK-NEXT: vuphh %v1, %v0 794; CHECK-NEXT: vuphf %v1, %v1 795; CHECK-NEXT: vsel %v24, %v28, %v29, %v1 796; CHECK-NEXT: vpkg %v1, %v0, %v0 797; CHECK-NEXT: vuphh %v1, %v1 798; CHECK-NEXT: vuphf %v1, %v1 799; CHECK-NEXT: vsel %v26, %v30, %v31, %v1 800; CHECK-NEXT: vmrlg %v1, %v0, %v0 801; CHECK-NEXT: vuphh %v1, %v1 802; CHECK-NEXT: vsldb %v0, %v0, %v0, 12 803; CHECK-NEXT: vl %v2, 160(%r15) 804; CHECK-NEXT: vuphf %v1, %v1 805; CHECK-NEXT: vuphh %v0, %v0 806; CHECK-NEXT: vsel %v28, %v25, %v2, %v1 807; CHECK-NEXT: vl %v1, 176(%r15) 808; CHECK-NEXT: vuphf %v0, %v0 809; CHECK-NEXT: vsel %v30, %v27, %v1, %v0 810; CHECK-NEXT: br %r14 811 %cmp = icmp eq <8 x i16> %val1, %val2 812 %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4 813 ret <8 x i64> %sel 814} 815 816define <8 x float> @fun58(<8 x i16> %val1, <8 x i16> %val2, <8 x float> %val3, <8 x float> %val4) { 817; CHECK-LABEL: fun58: 818; CHECK: # BB#0: 819; CHECK-NEXT: vceqh %v0, %v24, %v26 820; CHECK-NEXT: vuphh %v1, %v0 821; CHECK-NEXT: vmrlg %v0, %v0, %v0 822; CHECK-NEXT: vuphh %v0, %v0 823; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 824; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 825; CHECK-NEXT: br %r14 826 %cmp = icmp eq <8 x i16> %val1, %val2 827 %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4 828 ret <8 x float> %sel 829} 830 831define <8 x double> @fun59(<8 x i16> %val1, <8 x i16> %val2, <8 x double> %val3, <8 x double> %val4) { 832; CHECK-LABEL: fun59: 833; CHECK: # BB#0: 834; CHECK-NEXT: vceqh %v0, %v24, %v26 835; CHECK-NEXT: vuphh %v1, %v0 836; CHECK-NEXT: vuphf %v1, %v1 837; CHECK-NEXT: vsel %v24, %v28, %v29, %v1 838; CHECK-NEXT: vpkg %v1, %v0, %v0 839; CHECK-NEXT: vuphh %v1, %v1 840; CHECK-NEXT: vuphf %v1, %v1 841; CHECK-NEXT: vsel %v26, %v30, %v31, %v1 842; CHECK-NEXT: vmrlg %v1, %v0, %v0 843; CHECK-NEXT: vuphh %v1, %v1 844; CHECK-NEXT: vsldb %v0, %v0, %v0, 12 845; CHECK-NEXT: vl %v2, 160(%r15) 846; CHECK-NEXT: vuphf %v1, %v1 847; CHECK-NEXT: vuphh %v0, %v0 848; CHECK-NEXT: vsel %v28, %v25, %v2, %v1 849; CHECK-NEXT: vl %v1, 176(%r15) 850; CHECK-NEXT: vuphf %v0, %v0 851; CHECK-NEXT: vsel %v30, %v27, %v1, %v0 852; CHECK-NEXT: br %r14 853 %cmp = icmp eq <8 x i16> %val1, %val2 854 %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4 855 ret <8 x double> %sel 856} 857 858define <8 x i8> @fun60(<8 x i32> %val1, <8 x i32> %val2, <8 x i8> %val3, <8 x i8> %val4) { 859; CHECK-LABEL: fun60: 860; CHECK: # BB#0: 861; CHECK-NEXT: larl %r1, .LCPI60_0 862; CHECK-NEXT: vl %v2, 0(%r1) 863; CHECK-NEXT: vceqf %v0, %v26, %v30 864; CHECK-NEXT: vceqf %v1, %v24, %v28 865; CHECK-NEXT: vperm %v0, %v1, %v0, %v2 866; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 867; CHECK-NEXT: br %r14 868 %cmp = icmp eq <8 x i32> %val1, %val2 869 %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4 870 ret <8 x i8> %sel 871} 872 873define <8 x i16> @fun61(<8 x i32> %val1, <8 x i32> %val2, <8 x i16> %val3, <8 x i16> %val4) { 874; CHECK-LABEL: fun61: 875; CHECK: # BB#0: 876; CHECK-NEXT: vceqf %v0, %v26, %v30 877; CHECK-NEXT: vceqf %v1, %v24, %v28 878; CHECK-NEXT: vpkf %v0, %v1, %v0 879; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 880; CHECK-NEXT: br %r14 881 %cmp = icmp eq <8 x i32> %val1, %val2 882 %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4 883 ret <8 x i16> %sel 884} 885 886define <8 x i32> @fun62(<8 x i32> %val1, <8 x i32> %val2, <8 x i32> %val3, <8 x i32> %val4) { 887; CHECK-LABEL: fun62: 888; CHECK: # BB#0: 889; CHECK-NEXT: vceqf %v0, %v24, %v28 890; CHECK-NEXT: vsel %v24, %v25, %v29, %v0 891; CHECK-NEXT: vceqf %v0, %v26, %v30 892; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 893; CHECK-NEXT: br %r14 894 %cmp = icmp eq <8 x i32> %val1, %val2 895 %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4 896 ret <8 x i32> %sel 897} 898 899define <8 x i64> @fun63(<8 x i32> %val1, <8 x i32> %val2, <8 x i64> %val3, <8 x i64> %val4) { 900; CHECK-LABEL: fun63: 901; CHECK: # BB#0: 902; CHECK-NEXT: vceqf %v0, %v24, %v28 903; CHECK-NEXT: vl %v2, 160(%r15) 904; CHECK-NEXT: vuphf %v1, %v0 905; CHECK-NEXT: vsel %v24, %v25, %v2, %v1 906; CHECK-NEXT: vceqf %v1, %v26, %v30 907; CHECK-NEXT: vl %v3, 192(%r15) 908; CHECK-NEXT: vuphf %v2, %v1 909; CHECK-NEXT: vmrlg %v0, %v0, %v0 910; CHECK-NEXT: vsel %v28, %v29, %v3, %v2 911; CHECK-NEXT: vl %v2, 176(%r15) 912; CHECK-NEXT: vuphf %v0, %v0 913; CHECK-NEXT: vsel %v26, %v27, %v2, %v0 914; CHECK-NEXT: vmrlg %v0, %v1, %v1 915; CHECK-NEXT: vl %v1, 208(%r15) 916; CHECK-NEXT: vuphf %v0, %v0 917; CHECK-NEXT: vsel %v30, %v31, %v1, %v0 918; CHECK-NEXT: br %r14 919 %cmp = icmp eq <8 x i32> %val1, %val2 920 %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4 921 ret <8 x i64> %sel 922} 923 924define <8 x float> @fun64(<8 x i32> %val1, <8 x i32> %val2, <8 x float> %val3, <8 x float> %val4) { 925; CHECK-LABEL: fun64: 926; CHECK: # BB#0: 927; CHECK-NEXT: vceqf %v0, %v24, %v28 928; CHECK-NEXT: vsel %v24, %v25, %v29, %v0 929; CHECK-NEXT: vceqf %v0, %v26, %v30 930; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 931; CHECK-NEXT: br %r14 932 %cmp = icmp eq <8 x i32> %val1, %val2 933 %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4 934 ret <8 x float> %sel 935} 936 937define <8 x double> @fun65(<8 x i32> %val1, <8 x i32> %val2, <8 x double> %val3, <8 x double> %val4) { 938; CHECK-LABEL: fun65: 939; CHECK: # BB#0: 940; CHECK-NEXT: vceqf %v0, %v24, %v28 941; CHECK-NEXT: vl %v2, 160(%r15) 942; CHECK-NEXT: vuphf %v1, %v0 943; CHECK-NEXT: vsel %v24, %v25, %v2, %v1 944; CHECK-NEXT: vceqf %v1, %v26, %v30 945; CHECK-NEXT: vl %v3, 192(%r15) 946; CHECK-NEXT: vuphf %v2, %v1 947; CHECK-NEXT: vmrlg %v0, %v0, %v0 948; CHECK-NEXT: vsel %v28, %v29, %v3, %v2 949; CHECK-NEXT: vl %v2, 176(%r15) 950; CHECK-NEXT: vuphf %v0, %v0 951; CHECK-NEXT: vsel %v26, %v27, %v2, %v0 952; CHECK-NEXT: vmrlg %v0, %v1, %v1 953; CHECK-NEXT: vl %v1, 208(%r15) 954; CHECK-NEXT: vuphf %v0, %v0 955; CHECK-NEXT: vsel %v30, %v31, %v1, %v0 956; CHECK-NEXT: br %r14 957 %cmp = icmp eq <8 x i32> %val1, %val2 958 %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4 959 ret <8 x double> %sel 960} 961 962define <8 x i8> @fun66(<8 x i64> %val1, <8 x i64> %val2, <8 x i8> %val3, <8 x i8> %val4) { 963; CHECK-LABEL: fun66: 964; CHECK: # BB#0: 965; CHECK-NEXT: vceqg %v0, %v30, %v31 966; CHECK-NEXT: vceqg %v1, %v28, %v29 967; CHECK-NEXT: vpkg %v0, %v1, %v0 968; CHECK-NEXT: vceqg %v1, %v26, %v27 969; CHECK-NEXT: vceqg %v2, %v24, %v25 970; CHECK-NEXT: larl %r1, .LCPI66_0 971; CHECK-NEXT: vpkg %v1, %v2, %v1 972; CHECK-NEXT: vl %v2, 0(%r1) 973; CHECK-NEXT: vperm %v0, %v1, %v0, %v2 974; CHECK-NEXT: vlrepg %v1, 168(%r15) 975; CHECK-NEXT: vlrepg %v2, 160(%r15) 976; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 977; CHECK-NEXT: br %r14 978 %cmp = icmp eq <8 x i64> %val1, %val2 979 %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4 980 ret <8 x i8> %sel 981} 982 983define <8 x i16> @fun67(<8 x i64> %val1, <8 x i64> %val2, <8 x i16> %val3, <8 x i16> %val4) { 984; CHECK-LABEL: fun67: 985; CHECK: # BB#0: 986; CHECK-NEXT: vceqg %v0, %v30, %v31 987; CHECK-NEXT: vceqg %v1, %v28, %v29 988; CHECK-NEXT: vpkg %v0, %v1, %v0 989; CHECK-NEXT: vceqg %v1, %v26, %v27 990; CHECK-NEXT: vceqg %v2, %v24, %v25 991; CHECK-NEXT: vpkg %v1, %v2, %v1 992; CHECK-NEXT: vpkf %v0, %v1, %v0 993; CHECK-NEXT: vl %v1, 176(%r15) 994; CHECK-NEXT: vl %v2, 160(%r15) 995; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 996; CHECK-NEXT: br %r14 997 %cmp = icmp eq <8 x i64> %val1, %val2 998 %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4 999 ret <8 x i16> %sel 1000} 1001 1002define <8 x i32> @fun68(<8 x i64> %val1, <8 x i64> %val2, <8 x i32> %val3, <8 x i32> %val4) { 1003; CHECK-LABEL: fun68: 1004; CHECK: # BB#0: 1005; CHECK-NEXT: vceqg %v0, %v26, %v27 1006; CHECK-NEXT: vceqg %v1, %v24, %v25 1007; CHECK-NEXT: vpkg %v0, %v1, %v0 1008; CHECK-NEXT: vl %v1, 192(%r15) 1009; CHECK-NEXT: vl %v2, 160(%r15) 1010; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1011; CHECK-NEXT: vceqg %v0, %v30, %v31 1012; CHECK-NEXT: vceqg %v1, %v28, %v29 1013; CHECK-NEXT: vpkg %v0, %v1, %v0 1014; CHECK-NEXT: vl %v1, 208(%r15) 1015; CHECK-NEXT: vl %v2, 176(%r15) 1016; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1017; CHECK-NEXT: br %r14 1018 %cmp = icmp eq <8 x i64> %val1, %val2 1019 %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4 1020 ret <8 x i32> %sel 1021} 1022 1023define <8 x i64> @fun69(<8 x i64> %val1, <8 x i64> %val2, <8 x i64> %val3, <8 x i64> %val4) { 1024; CHECK-LABEL: fun69: 1025; CHECK: # BB#0: 1026; CHECK-NEXT: vl %v1, 224(%r15) 1027; CHECK-NEXT: vl %v2, 160(%r15) 1028; CHECK-NEXT: vceqg %v0, %v24, %v25 1029; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1030; CHECK-NEXT: vl %v1, 240(%r15) 1031; CHECK-NEXT: vl %v2, 176(%r15) 1032; CHECK-NEXT: vceqg %v0, %v26, %v27 1033; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1034; CHECK-NEXT: vl %v1, 256(%r15) 1035; CHECK-NEXT: vl %v2, 192(%r15) 1036; CHECK-NEXT: vceqg %v0, %v28, %v29 1037; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 1038; CHECK-NEXT: vl %v1, 272(%r15) 1039; CHECK-NEXT: vl %v2, 208(%r15) 1040; CHECK-NEXT: vceqg %v0, %v30, %v31 1041; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1042; CHECK-NEXT: br %r14 1043 %cmp = icmp eq <8 x i64> %val1, %val2 1044 %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4 1045 ret <8 x i64> %sel 1046} 1047 1048define <8 x float> @fun70(<8 x i64> %val1, <8 x i64> %val2, <8 x float> %val3, <8 x float> %val4) { 1049; CHECK-LABEL: fun70: 1050; CHECK: # BB#0: 1051; CHECK-NEXT: vceqg %v0, %v26, %v27 1052; CHECK-NEXT: vceqg %v1, %v24, %v25 1053; CHECK-NEXT: vpkg %v0, %v1, %v0 1054; CHECK-NEXT: vl %v1, 192(%r15) 1055; CHECK-NEXT: vl %v2, 160(%r15) 1056; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1057; CHECK-NEXT: vceqg %v0, %v30, %v31 1058; CHECK-NEXT: vceqg %v1, %v28, %v29 1059; CHECK-NEXT: vpkg %v0, %v1, %v0 1060; CHECK-NEXT: vl %v1, 208(%r15) 1061; CHECK-NEXT: vl %v2, 176(%r15) 1062; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1063; CHECK-NEXT: br %r14 1064 %cmp = icmp eq <8 x i64> %val1, %val2 1065 %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4 1066 ret <8 x float> %sel 1067} 1068 1069define <8 x double> @fun71(<8 x i64> %val1, <8 x i64> %val2, <8 x double> %val3, <8 x double> %val4) { 1070; CHECK-LABEL: fun71: 1071; CHECK: # BB#0: 1072; CHECK-NEXT: vl %v1, 224(%r15) 1073; CHECK-NEXT: vl %v2, 160(%r15) 1074; CHECK-NEXT: vceqg %v0, %v24, %v25 1075; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1076; CHECK-NEXT: vl %v1, 240(%r15) 1077; CHECK-NEXT: vl %v2, 176(%r15) 1078; CHECK-NEXT: vceqg %v0, %v26, %v27 1079; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1080; CHECK-NEXT: vl %v1, 256(%r15) 1081; CHECK-NEXT: vl %v2, 192(%r15) 1082; CHECK-NEXT: vceqg %v0, %v28, %v29 1083; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 1084; CHECK-NEXT: vl %v1, 272(%r15) 1085; CHECK-NEXT: vl %v2, 208(%r15) 1086; CHECK-NEXT: vceqg %v0, %v30, %v31 1087; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1088; CHECK-NEXT: br %r14 1089 %cmp = icmp eq <8 x i64> %val1, %val2 1090 %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4 1091 ret <8 x double> %sel 1092} 1093 1094define <16 x i8> @fun72(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3, <16 x i8> %val4) { 1095; CHECK-LABEL: fun72: 1096; CHECK: # BB#0: 1097; CHECK-NEXT: vceqb %v0, %v24, %v26 1098; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 1099; CHECK-NEXT: br %r14 1100 %cmp = icmp eq <16 x i8> %val1, %val2 1101 %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4 1102 ret <16 x i8> %sel 1103} 1104 1105define <16 x i16> @fun73(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4) { 1106; CHECK-LABEL: fun73: 1107; CHECK: # BB#0: 1108; CHECK-NEXT: vceqb %v0, %v24, %v26 1109; CHECK-NEXT: vuphb %v1, %v0 1110; CHECK-NEXT: vmrlg %v0, %v0, %v0 1111; CHECK-NEXT: vuphb %v0, %v0 1112; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 1113; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 1114; CHECK-NEXT: br %r14 1115 %cmp = icmp eq <16 x i8> %val1, %val2 1116 %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4 1117 ret <16 x i16> %sel 1118} 1119 1120define <16 x i32> @fun74(<16 x i8> %val1, <16 x i8> %val2, <16 x i32> %val3, <16 x i32> %val4) { 1121; CHECK-LABEL: fun74: 1122; CHECK: # BB#0: 1123; CHECK-NEXT: vceqb %v0, %v24, %v26 1124; CHECK-NEXT: vuphb %v1, %v0 1125; CHECK-NEXT: vuphh %v1, %v1 1126; CHECK-NEXT: vsel %v24, %v28, %v29, %v1 1127; CHECK-NEXT: vpkg %v1, %v0, %v0 1128; CHECK-NEXT: vuphb %v1, %v1 1129; CHECK-NEXT: vuphh %v1, %v1 1130; CHECK-NEXT: vsel %v26, %v30, %v31, %v1 1131; CHECK-NEXT: vmrlg %v1, %v0, %v0 1132; CHECK-NEXT: vuphb %v1, %v1 1133; CHECK-NEXT: vsldb %v0, %v0, %v0, 12 1134; CHECK-NEXT: vl %v2, 160(%r15) 1135; CHECK-NEXT: vuphh %v1, %v1 1136; CHECK-NEXT: vuphb %v0, %v0 1137; CHECK-NEXT: vsel %v28, %v25, %v2, %v1 1138; CHECK-NEXT: vl %v1, 176(%r15) 1139; CHECK-NEXT: vuphh %v0, %v0 1140; CHECK-NEXT: vsel %v30, %v27, %v1, %v0 1141; CHECK-NEXT: br %r14 1142 %cmp = icmp eq <16 x i8> %val1, %val2 1143 %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4 1144 ret <16 x i32> %sel 1145} 1146 1147define <16 x i64> @fun75(<16 x i8> %val1, <16 x i8> %val2, <16 x i64> %val3, <16 x i64> %val4) { 1148; CHECK-LABEL: fun75: 1149; CHECK: # BB#0: 1150; CHECK-NEXT: vceqb %v0, %v24, %v26 1151; CHECK-NEXT: vuphb %v1, %v0 1152; CHECK-NEXT: vuphh %v1, %v1 1153; CHECK-NEXT: vl %v2, 192(%r15) 1154; CHECK-NEXT: vuphf %v1, %v1 1155; CHECK-NEXT: vsel %v24, %v28, %v2, %v1 1156; CHECK-NEXT: vpkf %v1, %v0, %v0 1157; CHECK-NEXT: vuphb %v1, %v1 1158; CHECK-NEXT: vuphh %v1, %v1 1159; CHECK-NEXT: vl %v2, 208(%r15) 1160; CHECK-NEXT: vuphf %v1, %v1 1161; CHECK-NEXT: vsel %v26, %v30, %v2, %v1 1162; CHECK-NEXT: vpkg %v1, %v0, %v0 1163; CHECK-NEXT: vuphb %v1, %v1 1164; CHECK-NEXT: vuphh %v1, %v1 1165; CHECK-NEXT: vl %v2, 224(%r15) 1166; CHECK-NEXT: vuphf %v1, %v1 1167; CHECK-NEXT: vl %v3, 160(%r15) 1168; CHECK-NEXT: vsel %v28, %v25, %v2, %v1 1169; CHECK-NEXT: vl %v2, 240(%r15) 1170; CHECK-NEXT: vsldb %v1, %v0, %v0, 6 1171; CHECK-NEXT: vuphb %v1, %v1 1172; CHECK-NEXT: vuphh %v1, %v1 1173; CHECK-NEXT: vuphf %v1, %v1 1174; CHECK-NEXT: vsel %v30, %v27, %v2, %v1 1175; CHECK-NEXT: vl %v2, 256(%r15) 1176; CHECK-NEXT: vmrlg %v1, %v0, %v0 1177; CHECK-NEXT: vuphb %v1, %v1 1178; CHECK-NEXT: vuphh %v1, %v1 1179; CHECK-NEXT: vuphf %v1, %v1 1180; CHECK-NEXT: vsel %v25, %v29, %v2, %v1 1181; CHECK-NEXT: vl %v2, 272(%r15) 1182; CHECK-NEXT: vsldb %v1, %v0, %v0, 10 1183; CHECK-NEXT: vuphb %v1, %v1 1184; CHECK-NEXT: vuphh %v1, %v1 1185; CHECK-NEXT: vuphf %v1, %v1 1186; CHECK-NEXT: vsel %v27, %v31, %v2, %v1 1187; CHECK-NEXT: vl %v2, 288(%r15) 1188; CHECK-NEXT: vsldb %v1, %v0, %v0, 12 1189; CHECK-NEXT: vuphb %v1, %v1 1190; CHECK-NEXT: vsldb %v0, %v0, %v0, 14 1191; CHECK-NEXT: vuphh %v1, %v1 1192; CHECK-NEXT: vuphb %v0, %v0 1193; CHECK-NEXT: vuphf %v1, %v1 1194; CHECK-NEXT: vuphh %v0, %v0 1195; CHECK-NEXT: vsel %v29, %v3, %v2, %v1 1196; CHECK-NEXT: vl %v1, 304(%r15) 1197; CHECK-NEXT: vl %v2, 176(%r15) 1198; CHECK-NEXT: vuphf %v0, %v0 1199; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 1200; CHECK-NEXT: br %r14 1201 %cmp = icmp eq <16 x i8> %val1, %val2 1202 %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4 1203 ret <16 x i64> %sel 1204} 1205 1206define <16 x float> @fun76(<16 x i8> %val1, <16 x i8> %val2, <16 x float> %val3, <16 x float> %val4) { 1207; CHECK-LABEL: fun76: 1208; CHECK: # BB#0: 1209; CHECK-NEXT: vceqb %v0, %v24, %v26 1210; CHECK-NEXT: vuphb %v1, %v0 1211; CHECK-NEXT: vuphh %v1, %v1 1212; CHECK-NEXT: vsel %v24, %v28, %v29, %v1 1213; CHECK-NEXT: vpkg %v1, %v0, %v0 1214; CHECK-NEXT: vuphb %v1, %v1 1215; CHECK-NEXT: vuphh %v1, %v1 1216; CHECK-NEXT: vsel %v26, %v30, %v31, %v1 1217; CHECK-NEXT: vmrlg %v1, %v0, %v0 1218; CHECK-NEXT: vuphb %v1, %v1 1219; CHECK-NEXT: vsldb %v0, %v0, %v0, 12 1220; CHECK-NEXT: vl %v2, 160(%r15) 1221; CHECK-NEXT: vuphh %v1, %v1 1222; CHECK-NEXT: vuphb %v0, %v0 1223; CHECK-NEXT: vsel %v28, %v25, %v2, %v1 1224; CHECK-NEXT: vl %v1, 176(%r15) 1225; CHECK-NEXT: vuphh %v0, %v0 1226; CHECK-NEXT: vsel %v30, %v27, %v1, %v0 1227; CHECK-NEXT: br %r14 1228 %cmp = icmp eq <16 x i8> %val1, %val2 1229 %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4 1230 ret <16 x float> %sel 1231} 1232 1233define <16 x double> @fun77(<16 x i8> %val1, <16 x i8> %val2, <16 x double> %val3, <16 x double> %val4) { 1234; CHECK-LABEL: fun77: 1235; CHECK: # BB#0: 1236; CHECK-NEXT: vceqb %v0, %v24, %v26 1237; CHECK-NEXT: vuphb %v1, %v0 1238; CHECK-NEXT: vuphh %v1, %v1 1239; CHECK-NEXT: vl %v2, 192(%r15) 1240; CHECK-NEXT: vuphf %v1, %v1 1241; CHECK-NEXT: vsel %v24, %v28, %v2, %v1 1242; CHECK-NEXT: vpkf %v1, %v0, %v0 1243; CHECK-NEXT: vuphb %v1, %v1 1244; CHECK-NEXT: vuphh %v1, %v1 1245; CHECK-NEXT: vl %v2, 208(%r15) 1246; CHECK-NEXT: vuphf %v1, %v1 1247; CHECK-NEXT: vsel %v26, %v30, %v2, %v1 1248; CHECK-NEXT: vpkg %v1, %v0, %v0 1249; CHECK-NEXT: vuphb %v1, %v1 1250; CHECK-NEXT: vuphh %v1, %v1 1251; CHECK-NEXT: vl %v2, 224(%r15) 1252; CHECK-NEXT: vuphf %v1, %v1 1253; CHECK-NEXT: vl %v3, 160(%r15) 1254; CHECK-NEXT: vsel %v28, %v25, %v2, %v1 1255; CHECK-NEXT: vl %v2, 240(%r15) 1256; CHECK-NEXT: vsldb %v1, %v0, %v0, 6 1257; CHECK-NEXT: vuphb %v1, %v1 1258; CHECK-NEXT: vuphh %v1, %v1 1259; CHECK-NEXT: vuphf %v1, %v1 1260; CHECK-NEXT: vsel %v30, %v27, %v2, %v1 1261; CHECK-NEXT: vl %v2, 256(%r15) 1262; CHECK-NEXT: vmrlg %v1, %v0, %v0 1263; CHECK-NEXT: vuphb %v1, %v1 1264; CHECK-NEXT: vuphh %v1, %v1 1265; CHECK-NEXT: vuphf %v1, %v1 1266; CHECK-NEXT: vsel %v25, %v29, %v2, %v1 1267; CHECK-NEXT: vl %v2, 272(%r15) 1268; CHECK-NEXT: vsldb %v1, %v0, %v0, 10 1269; CHECK-NEXT: vuphb %v1, %v1 1270; CHECK-NEXT: vuphh %v1, %v1 1271; CHECK-NEXT: vuphf %v1, %v1 1272; CHECK-NEXT: vsel %v27, %v31, %v2, %v1 1273; CHECK-NEXT: vl %v2, 288(%r15) 1274; CHECK-NEXT: vsldb %v1, %v0, %v0, 12 1275; CHECK-NEXT: vuphb %v1, %v1 1276; CHECK-NEXT: vsldb %v0, %v0, %v0, 14 1277; CHECK-NEXT: vuphh %v1, %v1 1278; CHECK-NEXT: vuphb %v0, %v0 1279; CHECK-NEXT: vuphf %v1, %v1 1280; CHECK-NEXT: vuphh %v0, %v0 1281; CHECK-NEXT: vsel %v29, %v3, %v2, %v1 1282; CHECK-NEXT: vl %v1, 304(%r15) 1283; CHECK-NEXT: vl %v2, 176(%r15) 1284; CHECK-NEXT: vuphf %v0, %v0 1285; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 1286; CHECK-NEXT: br %r14 1287 %cmp = icmp eq <16 x i8> %val1, %val2 1288 %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4 1289 ret <16 x double> %sel 1290} 1291 1292define <16 x i8> @fun78(<16 x i16> %val1, <16 x i16> %val2, <16 x i8> %val3, <16 x i8> %val4) { 1293; CHECK-LABEL: fun78: 1294; CHECK: # BB#0: 1295; CHECK-NEXT: vceqh %v0, %v26, %v30 1296; CHECK-NEXT: vceqh %v1, %v24, %v28 1297; CHECK-NEXT: vpkh %v0, %v1, %v0 1298; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 1299; CHECK-NEXT: br %r14 1300 %cmp = icmp eq <16 x i16> %val1, %val2 1301 %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4 1302 ret <16 x i8> %sel 1303} 1304 1305define <16 x i16> @fun79(<16 x i16> %val1, <16 x i16> %val2, <16 x i16> %val3, <16 x i16> %val4) { 1306; CHECK-LABEL: fun79: 1307; CHECK: # BB#0: 1308; CHECK-NEXT: vceqh %v0, %v24, %v28 1309; CHECK-NEXT: vsel %v24, %v25, %v29, %v0 1310; CHECK-NEXT: vceqh %v0, %v26, %v30 1311; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 1312; CHECK-NEXT: br %r14 1313 %cmp = icmp eq <16 x i16> %val1, %val2 1314 %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4 1315 ret <16 x i16> %sel 1316} 1317 1318define <16 x i32> @fun80(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4) { 1319; CHECK-LABEL: fun80: 1320; CHECK: # BB#0: 1321; CHECK-NEXT: vceqh %v0, %v24, %v28 1322; CHECK-NEXT: vl %v2, 160(%r15) 1323; CHECK-NEXT: vuphh %v1, %v0 1324; CHECK-NEXT: vsel %v24, %v25, %v2, %v1 1325; CHECK-NEXT: vceqh %v1, %v26, %v30 1326; CHECK-NEXT: vl %v3, 192(%r15) 1327; CHECK-NEXT: vuphh %v2, %v1 1328; CHECK-NEXT: vmrlg %v0, %v0, %v0 1329; CHECK-NEXT: vsel %v28, %v29, %v3, %v2 1330; CHECK-NEXT: vl %v2, 176(%r15) 1331; CHECK-NEXT: vuphh %v0, %v0 1332; CHECK-NEXT: vsel %v26, %v27, %v2, %v0 1333; CHECK-NEXT: vmrlg %v0, %v1, %v1 1334; CHECK-NEXT: vl %v1, 208(%r15) 1335; CHECK-NEXT: vuphh %v0, %v0 1336; CHECK-NEXT: vsel %v30, %v31, %v1, %v0 1337; CHECK-NEXT: br %r14 1338 %cmp = icmp eq <16 x i16> %val1, %val2 1339 %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4 1340 ret <16 x i32> %sel 1341} 1342 1343define <16 x i64> @fun81(<16 x i16> %val1, <16 x i16> %val2, <16 x i64> %val3, <16 x i64> %val4) { 1344; CHECK-LABEL: fun81: 1345; CHECK: # BB#0: 1346; CHECK-NEXT: vceqh %v0, %v24, %v28 1347; CHECK-NEXT: vuphh %v1, %v0 1348; CHECK-NEXT: vl %v2, 224(%r15) 1349; CHECK-NEXT: vuphf %v1, %v1 1350; CHECK-NEXT: vsel %v24, %v25, %v2, %v1 1351; CHECK-NEXT: vceqh %v1, %v26, %v30 1352; CHECK-NEXT: vuphh %v2, %v1 1353; CHECK-NEXT: vl %v3, 288(%r15) 1354; CHECK-NEXT: vl %v4, 160(%r15) 1355; CHECK-NEXT: vuphf %v2, %v2 1356; CHECK-NEXT: vsel %v25, %v4, %v3, %v2 1357; CHECK-NEXT: vpkg %v2, %v0, %v0 1358; CHECK-NEXT: vuphh %v2, %v2 1359; CHECK-NEXT: vl %v3, 240(%r15) 1360; CHECK-NEXT: vuphf %v2, %v2 1361; CHECK-NEXT: vsel %v26, %v27, %v3, %v2 1362; CHECK-NEXT: vmrlg %v2, %v0, %v0 1363; CHECK-NEXT: vuphh %v2, %v2 1364; CHECK-NEXT: vsldb %v0, %v0, %v0, 12 1365; CHECK-NEXT: vl %v3, 256(%r15) 1366; CHECK-NEXT: vuphf %v2, %v2 1367; CHECK-NEXT: vuphh %v0, %v0 1368; CHECK-NEXT: vsel %v28, %v29, %v3, %v2 1369; CHECK-NEXT: vl %v2, 272(%r15) 1370; CHECK-NEXT: vl %v3, 176(%r15) 1371; CHECK-NEXT: vuphf %v0, %v0 1372; CHECK-NEXT: vsel %v30, %v31, %v2, %v0 1373; CHECK-NEXT: vl %v2, 304(%r15) 1374; CHECK-NEXT: vpkg %v0, %v1, %v1 1375; CHECK-NEXT: vuphh %v0, %v0 1376; CHECK-NEXT: vuphf %v0, %v0 1377; CHECK-NEXT: vsel %v27, %v3, %v2, %v0 1378; CHECK-NEXT: vl %v2, 320(%r15) 1379; CHECK-NEXT: vl %v3, 192(%r15) 1380; CHECK-NEXT: vmrlg %v0, %v1, %v1 1381; CHECK-NEXT: vuphh %v0, %v0 1382; CHECK-NEXT: vuphf %v0, %v0 1383; CHECK-NEXT: vsel %v29, %v3, %v2, %v0 1384; CHECK-NEXT: vl %v2, 208(%r15) 1385; CHECK-NEXT: vsldb %v0, %v1, %v1, 12 1386; CHECK-NEXT: vl %v1, 336(%r15) 1387; CHECK-NEXT: vuphh %v0, %v0 1388; CHECK-NEXT: vuphf %v0, %v0 1389; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 1390; CHECK-NEXT: br %r14 1391 %cmp = icmp eq <16 x i16> %val1, %val2 1392 %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4 1393 ret <16 x i64> %sel 1394} 1395 1396define <16 x float> @fun82(<16 x i16> %val1, <16 x i16> %val2, <16 x float> %val3, <16 x float> %val4) { 1397; CHECK-LABEL: fun82: 1398; CHECK: # BB#0: 1399; CHECK-NEXT: vceqh %v0, %v24, %v28 1400; CHECK-NEXT: vl %v2, 160(%r15) 1401; CHECK-NEXT: vuphh %v1, %v0 1402; CHECK-NEXT: vsel %v24, %v25, %v2, %v1 1403; CHECK-NEXT: vceqh %v1, %v26, %v30 1404; CHECK-NEXT: vl %v3, 192(%r15) 1405; CHECK-NEXT: vuphh %v2, %v1 1406; CHECK-NEXT: vmrlg %v0, %v0, %v0 1407; CHECK-NEXT: vsel %v28, %v29, %v3, %v2 1408; CHECK-NEXT: vl %v2, 176(%r15) 1409; CHECK-NEXT: vuphh %v0, %v0 1410; CHECK-NEXT: vsel %v26, %v27, %v2, %v0 1411; CHECK-NEXT: vmrlg %v0, %v1, %v1 1412; CHECK-NEXT: vl %v1, 208(%r15) 1413; CHECK-NEXT: vuphh %v0, %v0 1414; CHECK-NEXT: vsel %v30, %v31, %v1, %v0 1415; CHECK-NEXT: br %r14 1416 %cmp = icmp eq <16 x i16> %val1, %val2 1417 %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4 1418 ret <16 x float> %sel 1419} 1420 1421define <16 x double> @fun83(<16 x i16> %val1, <16 x i16> %val2, <16 x double> %val3, <16 x double> %val4) { 1422; CHECK-LABEL: fun83: 1423; CHECK: # BB#0: 1424; CHECK-NEXT: vceqh %v0, %v24, %v28 1425; CHECK-NEXT: vuphh %v1, %v0 1426; CHECK-NEXT: vl %v2, 224(%r15) 1427; CHECK-NEXT: vuphf %v1, %v1 1428; CHECK-NEXT: vsel %v24, %v25, %v2, %v1 1429; CHECK-NEXT: vceqh %v1, %v26, %v30 1430; CHECK-NEXT: vuphh %v2, %v1 1431; CHECK-NEXT: vl %v3, 288(%r15) 1432; CHECK-NEXT: vl %v4, 160(%r15) 1433; CHECK-NEXT: vuphf %v2, %v2 1434; CHECK-NEXT: vsel %v25, %v4, %v3, %v2 1435; CHECK-NEXT: vpkg %v2, %v0, %v0 1436; CHECK-NEXT: vuphh %v2, %v2 1437; CHECK-NEXT: vl %v3, 240(%r15) 1438; CHECK-NEXT: vuphf %v2, %v2 1439; CHECK-NEXT: vsel %v26, %v27, %v3, %v2 1440; CHECK-NEXT: vmrlg %v2, %v0, %v0 1441; CHECK-NEXT: vuphh %v2, %v2 1442; CHECK-NEXT: vsldb %v0, %v0, %v0, 12 1443; CHECK-NEXT: vl %v3, 256(%r15) 1444; CHECK-NEXT: vuphf %v2, %v2 1445; CHECK-NEXT: vuphh %v0, %v0 1446; CHECK-NEXT: vsel %v28, %v29, %v3, %v2 1447; CHECK-NEXT: vl %v2, 272(%r15) 1448; CHECK-NEXT: vl %v3, 176(%r15) 1449; CHECK-NEXT: vuphf %v0, %v0 1450; CHECK-NEXT: vsel %v30, %v31, %v2, %v0 1451; CHECK-NEXT: vl %v2, 304(%r15) 1452; CHECK-NEXT: vpkg %v0, %v1, %v1 1453; CHECK-NEXT: vuphh %v0, %v0 1454; CHECK-NEXT: vuphf %v0, %v0 1455; CHECK-NEXT: vsel %v27, %v3, %v2, %v0 1456; CHECK-NEXT: vl %v2, 320(%r15) 1457; CHECK-NEXT: vl %v3, 192(%r15) 1458; CHECK-NEXT: vmrlg %v0, %v1, %v1 1459; CHECK-NEXT: vuphh %v0, %v0 1460; CHECK-NEXT: vuphf %v0, %v0 1461; CHECK-NEXT: vsel %v29, %v3, %v2, %v0 1462; CHECK-NEXT: vl %v2, 208(%r15) 1463; CHECK-NEXT: vsldb %v0, %v1, %v1, 12 1464; CHECK-NEXT: vl %v1, 336(%r15) 1465; CHECK-NEXT: vuphh %v0, %v0 1466; CHECK-NEXT: vuphf %v0, %v0 1467; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 1468; CHECK-NEXT: br %r14 1469 %cmp = icmp eq <16 x i16> %val1, %val2 1470 %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4 1471 ret <16 x double> %sel 1472} 1473 1474define <16 x i8> @fun84(<16 x i32> %val1, <16 x i32> %val2, <16 x i8> %val3, <16 x i8> %val4) { 1475; CHECK-LABEL: fun84: 1476; CHECK: # BB#0: 1477; CHECK-NEXT: vceqf %v0, %v30, %v31 1478; CHECK-NEXT: vceqf %v1, %v28, %v29 1479; CHECK-NEXT: vpkf %v0, %v1, %v0 1480; CHECK-NEXT: vceqf %v1, %v26, %v27 1481; CHECK-NEXT: vceqf %v2, %v24, %v25 1482; CHECK-NEXT: vpkf %v1, %v2, %v1 1483; CHECK-NEXT: vpkh %v0, %v1, %v0 1484; CHECK-NEXT: vl %v1, 176(%r15) 1485; CHECK-NEXT: vl %v2, 160(%r15) 1486; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1487; CHECK-NEXT: br %r14 1488 %cmp = icmp eq <16 x i32> %val1, %val2 1489 %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4 1490 ret <16 x i8> %sel 1491} 1492 1493define <16 x i16> @fun85(<16 x i32> %val1, <16 x i32> %val2, <16 x i16> %val3, <16 x i16> %val4) { 1494; CHECK-LABEL: fun85: 1495; CHECK: # BB#0: 1496; CHECK-NEXT: vceqf %v0, %v26, %v27 1497; CHECK-NEXT: vceqf %v1, %v24, %v25 1498; CHECK-NEXT: vpkf %v0, %v1, %v0 1499; CHECK-NEXT: vl %v1, 192(%r15) 1500; CHECK-NEXT: vl %v2, 160(%r15) 1501; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1502; CHECK-NEXT: vceqf %v0, %v30, %v31 1503; CHECK-NEXT: vceqf %v1, %v28, %v29 1504; CHECK-NEXT: vpkf %v0, %v1, %v0 1505; CHECK-NEXT: vl %v1, 208(%r15) 1506; CHECK-NEXT: vl %v2, 176(%r15) 1507; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1508; CHECK-NEXT: br %r14 1509 %cmp = icmp eq <16 x i32> %val1, %val2 1510 %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4 1511 ret <16 x i16> %sel 1512} 1513 1514define <16 x i32> @fun86(<16 x i32> %val1, <16 x i32> %val2, <16 x i32> %val3, <16 x i32> %val4) { 1515; CHECK-LABEL: fun86: 1516; CHECK: # BB#0: 1517; CHECK-NEXT: vl %v1, 224(%r15) 1518; CHECK-NEXT: vl %v2, 160(%r15) 1519; CHECK-NEXT: vceqf %v0, %v24, %v25 1520; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1521; CHECK-NEXT: vl %v1, 240(%r15) 1522; CHECK-NEXT: vl %v2, 176(%r15) 1523; CHECK-NEXT: vceqf %v0, %v26, %v27 1524; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1525; CHECK-NEXT: vl %v1, 256(%r15) 1526; CHECK-NEXT: vl %v2, 192(%r15) 1527; CHECK-NEXT: vceqf %v0, %v28, %v29 1528; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 1529; CHECK-NEXT: vl %v1, 272(%r15) 1530; CHECK-NEXT: vl %v2, 208(%r15) 1531; CHECK-NEXT: vceqf %v0, %v30, %v31 1532; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1533; CHECK-NEXT: br %r14 1534 %cmp = icmp eq <16 x i32> %val1, %val2 1535 %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4 1536 ret <16 x i32> %sel 1537} 1538 1539define <16 x i64> @fun87(<16 x i32> %val1, <16 x i32> %val2, <16 x i64> %val3, <16 x i64> %val4) { 1540; CHECK-LABEL: fun87: 1541; CHECK: # BB#0: 1542; CHECK-NEXT: vceqf %v1, %v24, %v25 1543; CHECK-NEXT: vl %v2, 288(%r15) 1544; CHECK-NEXT: vl %v3, 160(%r15) 1545; CHECK-NEXT: vuphf %v0, %v1 1546; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 1547; CHECK-NEXT: vceqf %v2, %v26, %v27 1548; CHECK-NEXT: vl %v3, 320(%r15) 1549; CHECK-NEXT: vl %v4, 192(%r15) 1550; CHECK-NEXT: vuphf %v0, %v2 1551; CHECK-NEXT: vsel %v0, %v4, %v3, %v0 1552; CHECK-NEXT: vceqf %v3, %v28, %v29 1553; CHECK-NEXT: vl %v5, 352(%r15) 1554; CHECK-NEXT: vl %v6, 224(%r15) 1555; CHECK-NEXT: vuphf %v4, %v3 1556; CHECK-NEXT: vsel %v25, %v6, %v5, %v4 1557; CHECK-NEXT: vceqf %v4, %v30, %v31 1558; CHECK-NEXT: vl %v6, 384(%r15) 1559; CHECK-NEXT: vl %v7, 256(%r15) 1560; CHECK-NEXT: vuphf %v5, %v4 1561; CHECK-NEXT: vmrlg %v1, %v1, %v1 1562; CHECK-NEXT: vsel %v29, %v7, %v6, %v5 1563; CHECK-NEXT: vl %v5, 304(%r15) 1564; CHECK-NEXT: vl %v6, 176(%r15) 1565; CHECK-NEXT: vuphf %v1, %v1 1566; CHECK-NEXT: vsel %v26, %v6, %v5, %v1 1567; CHECK-NEXT: vmrlg %v1, %v2, %v2 1568; CHECK-NEXT: vl %v2, 336(%r15) 1569; CHECK-NEXT: vl %v5, 208(%r15) 1570; CHECK-NEXT: vuphf %v1, %v1 1571; CHECK-NEXT: vsel %v30, %v5, %v2, %v1 1572; CHECK-NEXT: vmrlg %v1, %v3, %v3 1573; CHECK-NEXT: vl %v2, 368(%r15) 1574; CHECK-NEXT: vl %v3, 240(%r15) 1575; CHECK-NEXT: vuphf %v1, %v1 1576; CHECK-NEXT: vlr %v28, %v0 1577; CHECK-NEXT: vsel %v27, %v3, %v2, %v1 1578; CHECK-NEXT: vl %v2, 400(%r15) 1579; CHECK-NEXT: vl %v3, 272(%r15) 1580; CHECK-NEXT: vmrlg %v1, %v4, %v4 1581; CHECK-NEXT: vuphf %v1, %v1 1582; CHECK-NEXT: vsel %v31, %v3, %v2, %v1 1583; CHECK-NEXT: br %r14 1584 %cmp = icmp eq <16 x i32> %val1, %val2 1585 %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4 1586 ret <16 x i64> %sel 1587} 1588 1589define <16 x float> @fun88(<16 x i32> %val1, <16 x i32> %val2, <16 x float> %val3, <16 x float> %val4) { 1590; CHECK-LABEL: fun88: 1591; CHECK: # BB#0: 1592; CHECK-NEXT: vl %v1, 224(%r15) 1593; CHECK-NEXT: vl %v2, 160(%r15) 1594; CHECK-NEXT: vceqf %v0, %v24, %v25 1595; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1596; CHECK-NEXT: vl %v1, 240(%r15) 1597; CHECK-NEXT: vl %v2, 176(%r15) 1598; CHECK-NEXT: vceqf %v0, %v26, %v27 1599; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1600; CHECK-NEXT: vl %v1, 256(%r15) 1601; CHECK-NEXT: vl %v2, 192(%r15) 1602; CHECK-NEXT: vceqf %v0, %v28, %v29 1603; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 1604; CHECK-NEXT: vl %v1, 272(%r15) 1605; CHECK-NEXT: vl %v2, 208(%r15) 1606; CHECK-NEXT: vceqf %v0, %v30, %v31 1607; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1608; CHECK-NEXT: br %r14 1609 %cmp = icmp eq <16 x i32> %val1, %val2 1610 %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4 1611 ret <16 x float> %sel 1612} 1613 1614define <16 x double> @fun89(<16 x i32> %val1, <16 x i32> %val2, <16 x double> %val3, <16 x double> %val4) { 1615; CHECK-LABEL: fun89: 1616; CHECK: # BB#0: 1617; CHECK-NEXT: vceqf %v1, %v24, %v25 1618; CHECK-NEXT: vl %v2, 288(%r15) 1619; CHECK-NEXT: vl %v3, 160(%r15) 1620; CHECK-NEXT: vuphf %v0, %v1 1621; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 1622; CHECK-NEXT: vceqf %v2, %v26, %v27 1623; CHECK-NEXT: vl %v3, 320(%r15) 1624; CHECK-NEXT: vl %v4, 192(%r15) 1625; CHECK-NEXT: vuphf %v0, %v2 1626; CHECK-NEXT: vsel %v0, %v4, %v3, %v0 1627; CHECK-NEXT: vceqf %v3, %v28, %v29 1628; CHECK-NEXT: vl %v5, 352(%r15) 1629; CHECK-NEXT: vl %v6, 224(%r15) 1630; CHECK-NEXT: vuphf %v4, %v3 1631; CHECK-NEXT: vsel %v25, %v6, %v5, %v4 1632; CHECK-NEXT: vceqf %v4, %v30, %v31 1633; CHECK-NEXT: vl %v6, 384(%r15) 1634; CHECK-NEXT: vl %v7, 256(%r15) 1635; CHECK-NEXT: vuphf %v5, %v4 1636; CHECK-NEXT: vmrlg %v1, %v1, %v1 1637; CHECK-NEXT: vsel %v29, %v7, %v6, %v5 1638; CHECK-NEXT: vl %v5, 304(%r15) 1639; CHECK-NEXT: vl %v6, 176(%r15) 1640; CHECK-NEXT: vuphf %v1, %v1 1641; CHECK-NEXT: vsel %v26, %v6, %v5, %v1 1642; CHECK-NEXT: vmrlg %v1, %v2, %v2 1643; CHECK-NEXT: vl %v2, 336(%r15) 1644; CHECK-NEXT: vl %v5, 208(%r15) 1645; CHECK-NEXT: vuphf %v1, %v1 1646; CHECK-NEXT: vsel %v30, %v5, %v2, %v1 1647; CHECK-NEXT: vmrlg %v1, %v3, %v3 1648; CHECK-NEXT: vl %v2, 368(%r15) 1649; CHECK-NEXT: vl %v3, 240(%r15) 1650; CHECK-NEXT: vuphf %v1, %v1 1651; CHECK-NEXT: vlr %v28, %v0 1652; CHECK-NEXT: vsel %v27, %v3, %v2, %v1 1653; CHECK-NEXT: vl %v2, 400(%r15) 1654; CHECK-NEXT: vl %v3, 272(%r15) 1655; CHECK-NEXT: vmrlg %v1, %v4, %v4 1656; CHECK-NEXT: vuphf %v1, %v1 1657; CHECK-NEXT: vsel %v31, %v3, %v2, %v1 1658; CHECK-NEXT: br %r14 1659 %cmp = icmp eq <16 x i32> %val1, %val2 1660 %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4 1661 ret <16 x double> %sel 1662} 1663 1664define <16 x i8> @fun90(<16 x i64> %val1, <16 x i64> %val2, <16 x i8> %val3, <16 x i8> %val4) { 1665; CHECK-LABEL: fun90: 1666; CHECK: # BB#0: 1667; CHECK-NEXT: vl %v0, 272(%r15) 1668; CHECK-NEXT: vl %v1, 256(%r15) 1669; CHECK-NEXT: vceqg %v0, %v31, %v0 1670; CHECK-NEXT: vceqg %v1, %v29, %v1 1671; CHECK-NEXT: vpkg %v0, %v1, %v0 1672; CHECK-NEXT: vl %v1, 240(%r15) 1673; CHECK-NEXT: vl %v2, 224(%r15) 1674; CHECK-NEXT: vceqg %v1, %v27, %v1 1675; CHECK-NEXT: vceqg %v2, %v25, %v2 1676; CHECK-NEXT: vpkg %v1, %v2, %v1 1677; CHECK-NEXT: vpkf %v0, %v1, %v0 1678; CHECK-NEXT: vl %v1, 208(%r15) 1679; CHECK-NEXT: vl %v2, 192(%r15) 1680; CHECK-NEXT: vceqg %v1, %v30, %v1 1681; CHECK-NEXT: vceqg %v2, %v28, %v2 1682; CHECK-NEXT: vpkg %v1, %v2, %v1 1683; CHECK-NEXT: vl %v2, 176(%r15) 1684; CHECK-NEXT: vl %v3, 160(%r15) 1685; CHECK-NEXT: vceqg %v2, %v26, %v2 1686; CHECK-NEXT: vceqg %v3, %v24, %v3 1687; CHECK-NEXT: vpkg %v2, %v3, %v2 1688; CHECK-NEXT: vpkf %v1, %v2, %v1 1689; CHECK-NEXT: vpkh %v0, %v1, %v0 1690; CHECK-NEXT: vl %v1, 304(%r15) 1691; CHECK-NEXT: vl %v2, 288(%r15) 1692; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1693; CHECK-NEXT: br %r14 1694 %cmp = icmp eq <16 x i64> %val1, %val2 1695 %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4 1696 ret <16 x i8> %sel 1697} 1698 1699define <16 x i16> @fun91(<16 x i64> %val1, <16 x i64> %val2, <16 x i16> %val3, <16 x i16> %val4) { 1700; CHECK-LABEL: fun91: 1701; CHECK: # BB#0: 1702; CHECK-NEXT: vl %v0, 208(%r15) 1703; CHECK-NEXT: vl %v1, 192(%r15) 1704; CHECK-NEXT: vceqg %v0, %v30, %v0 1705; CHECK-NEXT: vceqg %v1, %v28, %v1 1706; CHECK-NEXT: vpkg %v0, %v1, %v0 1707; CHECK-NEXT: vl %v1, 176(%r15) 1708; CHECK-NEXT: vl %v2, 160(%r15) 1709; CHECK-NEXT: vceqg %v1, %v26, %v1 1710; CHECK-NEXT: vceqg %v2, %v24, %v2 1711; CHECK-NEXT: vpkg %v1, %v2, %v1 1712; CHECK-NEXT: vpkf %v0, %v1, %v0 1713; CHECK-NEXT: vl %v1, 320(%r15) 1714; CHECK-NEXT: vl %v2, 288(%r15) 1715; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1716; CHECK-NEXT: vl %v0, 272(%r15) 1717; CHECK-NEXT: vl %v1, 256(%r15) 1718; CHECK-NEXT: vceqg %v0, %v31, %v0 1719; CHECK-NEXT: vceqg %v1, %v29, %v1 1720; CHECK-NEXT: vpkg %v0, %v1, %v0 1721; CHECK-NEXT: vl %v1, 240(%r15) 1722; CHECK-NEXT: vl %v2, 224(%r15) 1723; CHECK-NEXT: vceqg %v1, %v27, %v1 1724; CHECK-NEXT: vceqg %v2, %v25, %v2 1725; CHECK-NEXT: vpkg %v1, %v2, %v1 1726; CHECK-NEXT: vpkf %v0, %v1, %v0 1727; CHECK-NEXT: vl %v1, 336(%r15) 1728; CHECK-NEXT: vl %v2, 304(%r15) 1729; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1730; CHECK-NEXT: br %r14 1731 %cmp = icmp eq <16 x i64> %val1, %val2 1732 %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4 1733 ret <16 x i16> %sel 1734} 1735 1736define <16 x i32> @fun92(<16 x i64> %val1, <16 x i64> %val2, <16 x i32> %val3, <16 x i32> %val4) { 1737; CHECK-LABEL: fun92: 1738; CHECK: # BB#0: 1739; CHECK-NEXT: vl %v0, 176(%r15) 1740; CHECK-NEXT: vl %v1, 160(%r15) 1741; CHECK-NEXT: vceqg %v0, %v26, %v0 1742; CHECK-NEXT: vceqg %v1, %v24, %v1 1743; CHECK-NEXT: vpkg %v0, %v1, %v0 1744; CHECK-NEXT: vl %v1, 352(%r15) 1745; CHECK-NEXT: vl %v2, 288(%r15) 1746; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1747; CHECK-NEXT: vl %v0, 208(%r15) 1748; CHECK-NEXT: vl %v1, 192(%r15) 1749; CHECK-NEXT: vceqg %v0, %v30, %v0 1750; CHECK-NEXT: vceqg %v1, %v28, %v1 1751; CHECK-NEXT: vpkg %v0, %v1, %v0 1752; CHECK-NEXT: vl %v1, 368(%r15) 1753; CHECK-NEXT: vl %v2, 304(%r15) 1754; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1755; CHECK-NEXT: vl %v0, 240(%r15) 1756; CHECK-NEXT: vl %v1, 224(%r15) 1757; CHECK-NEXT: vceqg %v0, %v27, %v0 1758; CHECK-NEXT: vceqg %v1, %v25, %v1 1759; CHECK-NEXT: vpkg %v0, %v1, %v0 1760; CHECK-NEXT: vl %v1, 384(%r15) 1761; CHECK-NEXT: vl %v2, 320(%r15) 1762; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 1763; CHECK-NEXT: vl %v0, 272(%r15) 1764; CHECK-NEXT: vl %v1, 256(%r15) 1765; CHECK-NEXT: vceqg %v0, %v31, %v0 1766; CHECK-NEXT: vceqg %v1, %v29, %v1 1767; CHECK-NEXT: vpkg %v0, %v1, %v0 1768; CHECK-NEXT: vl %v1, 400(%r15) 1769; CHECK-NEXT: vl %v2, 336(%r15) 1770; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1771; CHECK-NEXT: br %r14 1772 %cmp = icmp eq <16 x i64> %val1, %val2 1773 %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4 1774 ret <16 x i32> %sel 1775} 1776 1777define <16 x i64> @fun93(<16 x i64> %val1, <16 x i64> %val2, <16 x i64> %val3, <16 x i64> %val4) { 1778; CHECK-LABEL: fun93: 1779; CHECK: # BB#0: 1780; CHECK-NEXT: vl %v0, 160(%r15) 1781; CHECK-NEXT: vl %v1, 416(%r15) 1782; CHECK-NEXT: vl %v2, 288(%r15) 1783; CHECK-NEXT: vceqg %v0, %v24, %v0 1784; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1785; CHECK-NEXT: vl %v0, 176(%r15) 1786; CHECK-NEXT: vl %v1, 432(%r15) 1787; CHECK-NEXT: vl %v2, 304(%r15) 1788; CHECK-NEXT: vceqg %v0, %v26, %v0 1789; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1790; CHECK-NEXT: vl %v0, 192(%r15) 1791; CHECK-NEXT: vl %v1, 448(%r15) 1792; CHECK-NEXT: vl %v2, 320(%r15) 1793; CHECK-NEXT: vceqg %v0, %v28, %v0 1794; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 1795; CHECK-NEXT: vl %v0, 208(%r15) 1796; CHECK-NEXT: vl %v1, 464(%r15) 1797; CHECK-NEXT: vl %v2, 336(%r15) 1798; CHECK-NEXT: vceqg %v0, %v30, %v0 1799; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1800; CHECK-NEXT: vl %v0, 224(%r15) 1801; CHECK-NEXT: vl %v1, 480(%r15) 1802; CHECK-NEXT: vl %v2, 352(%r15) 1803; CHECK-NEXT: vceqg %v0, %v25, %v0 1804; CHECK-NEXT: vsel %v25, %v2, %v1, %v0 1805; CHECK-NEXT: vl %v0, 240(%r15) 1806; CHECK-NEXT: vl %v1, 496(%r15) 1807; CHECK-NEXT: vl %v2, 368(%r15) 1808; CHECK-NEXT: vceqg %v0, %v27, %v0 1809; CHECK-NEXT: vsel %v27, %v2, %v1, %v0 1810; CHECK-NEXT: vl %v0, 256(%r15) 1811; CHECK-NEXT: vceqg %v0, %v29, %v0 1812; CHECK-NEXT: vl %v1, 512(%r15) 1813; CHECK-NEXT: vl %v2, 384(%r15) 1814; CHECK-NEXT: vsel %v29, %v2, %v1, %v0 1815; CHECK-NEXT: vl %v0, 272(%r15) 1816; CHECK-NEXT: vceqg %v0, %v31, %v0 1817; CHECK-NEXT: vl %v1, 528(%r15) 1818; CHECK-NEXT: vl %v2, 400(%r15) 1819; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 1820; CHECK-NEXT: br %r14 1821 %cmp = icmp eq <16 x i64> %val1, %val2 1822 %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4 1823 ret <16 x i64> %sel 1824} 1825 1826define <16 x float> @fun94(<16 x i64> %val1, <16 x i64> %val2, <16 x float> %val3, <16 x float> %val4) { 1827; CHECK-LABEL: fun94: 1828; CHECK: # BB#0: 1829; CHECK-NEXT: vl %v0, 176(%r15) 1830; CHECK-NEXT: vl %v1, 160(%r15) 1831; CHECK-NEXT: vceqg %v0, %v26, %v0 1832; CHECK-NEXT: vceqg %v1, %v24, %v1 1833; CHECK-NEXT: vpkg %v0, %v1, %v0 1834; CHECK-NEXT: vl %v1, 352(%r15) 1835; CHECK-NEXT: vl %v2, 288(%r15) 1836; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1837; CHECK-NEXT: vl %v0, 208(%r15) 1838; CHECK-NEXT: vl %v1, 192(%r15) 1839; CHECK-NEXT: vceqg %v0, %v30, %v0 1840; CHECK-NEXT: vceqg %v1, %v28, %v1 1841; CHECK-NEXT: vpkg %v0, %v1, %v0 1842; CHECK-NEXT: vl %v1, 368(%r15) 1843; CHECK-NEXT: vl %v2, 304(%r15) 1844; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1845; CHECK-NEXT: vl %v0, 240(%r15) 1846; CHECK-NEXT: vl %v1, 224(%r15) 1847; CHECK-NEXT: vceqg %v0, %v27, %v0 1848; CHECK-NEXT: vceqg %v1, %v25, %v1 1849; CHECK-NEXT: vpkg %v0, %v1, %v0 1850; CHECK-NEXT: vl %v1, 384(%r15) 1851; CHECK-NEXT: vl %v2, 320(%r15) 1852; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 1853; CHECK-NEXT: vl %v0, 272(%r15) 1854; CHECK-NEXT: vl %v1, 256(%r15) 1855; CHECK-NEXT: vceqg %v0, %v31, %v0 1856; CHECK-NEXT: vceqg %v1, %v29, %v1 1857; CHECK-NEXT: vpkg %v0, %v1, %v0 1858; CHECK-NEXT: vl %v1, 400(%r15) 1859; CHECK-NEXT: vl %v2, 336(%r15) 1860; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1861; CHECK-NEXT: br %r14 1862 %cmp = icmp eq <16 x i64> %val1, %val2 1863 %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4 1864 ret <16 x float> %sel 1865} 1866 1867define <16 x double> @fun95(<16 x i64> %val1, <16 x i64> %val2, <16 x double> %val3, <16 x double> %val4) { 1868; CHECK-LABEL: fun95: 1869; CHECK: # BB#0: 1870; CHECK-NEXT: vl %v0, 160(%r15) 1871; CHECK-NEXT: vl %v1, 416(%r15) 1872; CHECK-NEXT: vl %v2, 288(%r15) 1873; CHECK-NEXT: vceqg %v0, %v24, %v0 1874; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 1875; CHECK-NEXT: vl %v0, 176(%r15) 1876; CHECK-NEXT: vl %v1, 432(%r15) 1877; CHECK-NEXT: vl %v2, 304(%r15) 1878; CHECK-NEXT: vceqg %v0, %v26, %v0 1879; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 1880; CHECK-NEXT: vl %v0, 192(%r15) 1881; CHECK-NEXT: vl %v1, 448(%r15) 1882; CHECK-NEXT: vl %v2, 320(%r15) 1883; CHECK-NEXT: vceqg %v0, %v28, %v0 1884; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 1885; CHECK-NEXT: vl %v0, 208(%r15) 1886; CHECK-NEXT: vl %v1, 464(%r15) 1887; CHECK-NEXT: vl %v2, 336(%r15) 1888; CHECK-NEXT: vceqg %v0, %v30, %v0 1889; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 1890; CHECK-NEXT: vl %v0, 224(%r15) 1891; CHECK-NEXT: vl %v1, 480(%r15) 1892; CHECK-NEXT: vl %v2, 352(%r15) 1893; CHECK-NEXT: vceqg %v0, %v25, %v0 1894; CHECK-NEXT: vsel %v25, %v2, %v1, %v0 1895; CHECK-NEXT: vl %v0, 240(%r15) 1896; CHECK-NEXT: vl %v1, 496(%r15) 1897; CHECK-NEXT: vl %v2, 368(%r15) 1898; CHECK-NEXT: vceqg %v0, %v27, %v0 1899; CHECK-NEXT: vsel %v27, %v2, %v1, %v0 1900; CHECK-NEXT: vl %v0, 256(%r15) 1901; CHECK-NEXT: vceqg %v0, %v29, %v0 1902; CHECK-NEXT: vl %v1, 512(%r15) 1903; CHECK-NEXT: vl %v2, 384(%r15) 1904; CHECK-NEXT: vsel %v29, %v2, %v1, %v0 1905; CHECK-NEXT: vl %v0, 272(%r15) 1906; CHECK-NEXT: vceqg %v0, %v31, %v0 1907; CHECK-NEXT: vl %v1, 528(%r15) 1908; CHECK-NEXT: vl %v2, 400(%r15) 1909; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 1910; CHECK-NEXT: br %r14 1911 %cmp = icmp eq <16 x i64> %val1, %val2 1912 %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4 1913 ret <16 x double> %sel 1914} 1915 1916define <2 x i8> @fun96(<2 x float> %val1, <2 x float> %val2, <2 x i8> %val3, <2 x i8> %val4) { 1917; CHECK-LABEL: fun96: 1918; CHECK: # BB#0: 1919; CHECK-NEXT: vmrlf %v0, %v26, %v26 1920; CHECK-NEXT: vmrlf %v1, %v24, %v24 1921; CHECK-NEXT: vldeb %v0, %v0 1922; CHECK-NEXT: vldeb %v1, %v1 1923; CHECK-NEXT: vfchdb %v0, %v1, %v0 1924; CHECK-NEXT: vmrhf %v1, %v26, %v26 1925; CHECK-NEXT: vmrhf %v2, %v24, %v24 1926; CHECK-NEXT: vldeb %v1, %v1 1927; CHECK-NEXT: larl %r1, .LCPI96_0 1928; CHECK-NEXT: vldeb %v2, %v2 1929; CHECK-NEXT: vfchdb %v1, %v2, %v1 1930; CHECK-NEXT: vpkg %v0, %v1, %v0 1931; CHECK-NEXT: vl %v1, 0(%r1) 1932; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 1933; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 1934; CHECK-NEXT: br %r14 1935 %cmp = fcmp ogt <2 x float> %val1, %val2 1936 %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4 1937 ret <2 x i8> %sel 1938} 1939 1940define <2 x i16> @fun97(<2 x float> %val1, <2 x float> %val2, <2 x i16> %val3, <2 x i16> %val4) { 1941; CHECK-LABEL: fun97: 1942; CHECK: # BB#0: 1943; CHECK-NEXT: vmrlf %v0, %v26, %v26 1944; CHECK-NEXT: vmrlf %v1, %v24, %v24 1945; CHECK-NEXT: vldeb %v0, %v0 1946; CHECK-NEXT: vldeb %v1, %v1 1947; CHECK-NEXT: vfchdb %v0, %v1, %v0 1948; CHECK-NEXT: vmrhf %v1, %v26, %v26 1949; CHECK-NEXT: vmrhf %v2, %v24, %v24 1950; CHECK-NEXT: vldeb %v1, %v1 1951; CHECK-NEXT: vldeb %v2, %v2 1952; CHECK-NEXT: vfchdb %v1, %v2, %v1 1953; CHECK-NEXT: vpkg %v0, %v1, %v0 1954; CHECK-NEXT: vpkf %v0, %v0, %v0 1955; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 1956; CHECK-NEXT: br %r14 1957 %cmp = fcmp ogt <2 x float> %val1, %val2 1958 %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4 1959 ret <2 x i16> %sel 1960} 1961 1962define <2 x i32> @fun98(<2 x float> %val1, <2 x float> %val2, <2 x i32> %val3, <2 x i32> %val4) { 1963; CHECK-LABEL: fun98: 1964; CHECK: # BB#0: 1965; CHECK-NEXT: vmrlf %v0, %v26, %v26 1966; CHECK-NEXT: vmrlf %v1, %v24, %v24 1967; CHECK-NEXT: vldeb %v0, %v0 1968; CHECK-NEXT: vldeb %v1, %v1 1969; CHECK-NEXT: vfchdb %v0, %v1, %v0 1970; CHECK-NEXT: vmrhf %v1, %v26, %v26 1971; CHECK-NEXT: vmrhf %v2, %v24, %v24 1972; CHECK-NEXT: vldeb %v1, %v1 1973; CHECK-NEXT: vldeb %v2, %v2 1974; CHECK-NEXT: vfchdb %v1, %v2, %v1 1975; CHECK-NEXT: vpkg %v0, %v1, %v0 1976; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 1977; CHECK-NEXT: br %r14 1978 %cmp = fcmp ogt <2 x float> %val1, %val2 1979 %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4 1980 ret <2 x i32> %sel 1981} 1982 1983define <2 x i64> @fun99(<2 x float> %val1, <2 x float> %val2, <2 x i64> %val3, <2 x i64> %val4) { 1984; CHECK-LABEL: fun99: 1985; CHECK: # BB#0: 1986; CHECK-NEXT: vmrlf %v0, %v26, %v26 1987; CHECK-NEXT: vmrlf %v1, %v24, %v24 1988; CHECK-NEXT: vldeb %v0, %v0 1989; CHECK-NEXT: vldeb %v1, %v1 1990; CHECK-NEXT: vfchdb %v0, %v1, %v0 1991; CHECK-NEXT: vmrhf %v1, %v26, %v26 1992; CHECK-NEXT: vmrhf %v2, %v24, %v24 1993; CHECK-NEXT: vldeb %v1, %v1 1994; CHECK-NEXT: vldeb %v2, %v2 1995; CHECK-NEXT: vfchdb %v1, %v2, %v1 1996; CHECK-NEXT: vpkg %v0, %v1, %v0 1997; CHECK-NEXT: vuphf %v0, %v0 1998; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 1999; CHECK-NEXT: br %r14 2000 %cmp = fcmp ogt <2 x float> %val1, %val2 2001 %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4 2002 ret <2 x i64> %sel 2003} 2004 2005define <2 x float> @fun100(<2 x float> %val1, <2 x float> %val2, <2 x float> %val3, <2 x float> %val4) { 2006; CHECK-LABEL: fun100: 2007; CHECK: # BB#0: 2008; CHECK-NEXT: vmrlf %v0, %v26, %v26 2009; CHECK-NEXT: vmrlf %v1, %v24, %v24 2010; CHECK-NEXT: vldeb %v0, %v0 2011; CHECK-NEXT: vldeb %v1, %v1 2012; CHECK-NEXT: vfchdb %v0, %v1, %v0 2013; CHECK-NEXT: vmrhf %v1, %v26, %v26 2014; CHECK-NEXT: vmrhf %v2, %v24, %v24 2015; CHECK-NEXT: vldeb %v1, %v1 2016; CHECK-NEXT: vldeb %v2, %v2 2017; CHECK-NEXT: vfchdb %v1, %v2, %v1 2018; CHECK-NEXT: vpkg %v0, %v1, %v0 2019; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2020; CHECK-NEXT: br %r14 2021 %cmp = fcmp ogt <2 x float> %val1, %val2 2022 %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4 2023 ret <2 x float> %sel 2024} 2025 2026define <2 x double> @fun101(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4) { 2027; CHECK-LABEL: fun101: 2028; CHECK: # BB#0: 2029; CHECK-NEXT: vmrlf %v0, %v26, %v26 2030; CHECK-NEXT: vmrlf %v1, %v24, %v24 2031; CHECK-NEXT: vldeb %v0, %v0 2032; CHECK-NEXT: vldeb %v1, %v1 2033; CHECK-NEXT: vfchdb %v0, %v1, %v0 2034; CHECK-NEXT: vmrhf %v1, %v26, %v26 2035; CHECK-NEXT: vmrhf %v2, %v24, %v24 2036; CHECK-NEXT: vldeb %v1, %v1 2037; CHECK-NEXT: vldeb %v2, %v2 2038; CHECK-NEXT: vfchdb %v1, %v2, %v1 2039; CHECK-NEXT: vpkg %v0, %v1, %v0 2040; CHECK-NEXT: vuphf %v0, %v0 2041; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2042; CHECK-NEXT: br %r14 2043 %cmp = fcmp ogt <2 x float> %val1, %val2 2044 %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4 2045 ret <2 x double> %sel 2046} 2047 2048define <2 x i8> @fun102(<2 x double> %val1, <2 x double> %val2, <2 x i8> %val3, <2 x i8> %val4) { 2049; CHECK-LABEL: fun102: 2050; CHECK: # BB#0: 2051; CHECK-NEXT: vfchdb %v0, %v24, %v26 2052; CHECK-NEXT: vrepih %v1, 1807 2053; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 2054; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2055; CHECK-NEXT: br %r14 2056 %cmp = fcmp ogt <2 x double> %val1, %val2 2057 %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4 2058 ret <2 x i8> %sel 2059} 2060 2061define <2 x i16> @fun103(<2 x double> %val1, <2 x double> %val2, <2 x i16> %val3, <2 x i16> %val4) { 2062; CHECK-LABEL: fun103: 2063; CHECK: # BB#0: 2064; CHECK-NEXT: larl %r1, .LCPI103_0 2065; CHECK-NEXT: vl %v1, 0(%r1) 2066; CHECK-NEXT: vfchdb %v0, %v24, %v26 2067; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 2068; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2069; CHECK-NEXT: br %r14 2070 %cmp = fcmp ogt <2 x double> %val1, %val2 2071 %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4 2072 ret <2 x i16> %sel 2073} 2074 2075define <2 x i32> @fun104(<2 x double> %val1, <2 x double> %val2, <2 x i32> %val3, <2 x i32> %val4) { 2076; CHECK-LABEL: fun104: 2077; CHECK: # BB#0: 2078; CHECK-NEXT: vfchdb %v0, %v24, %v26 2079; CHECK-NEXT: vpkg %v0, %v0, %v0 2080; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2081; CHECK-NEXT: br %r14 2082 %cmp = fcmp ogt <2 x double> %val1, %val2 2083 %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4 2084 ret <2 x i32> %sel 2085} 2086 2087define <2 x i64> @fun105(<2 x double> %val1, <2 x double> %val2, <2 x i64> %val3, <2 x i64> %val4) { 2088; CHECK-LABEL: fun105: 2089; CHECK: # BB#0: 2090; CHECK-NEXT: vfchdb %v0, %v24, %v26 2091; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2092; CHECK-NEXT: br %r14 2093 %cmp = fcmp ogt <2 x double> %val1, %val2 2094 %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4 2095 ret <2 x i64> %sel 2096} 2097 2098define <2 x float> @fun106(<2 x double> %val1, <2 x double> %val2, <2 x float> %val3, <2 x float> %val4) { 2099; CHECK-LABEL: fun106: 2100; CHECK: # BB#0: 2101; CHECK-NEXT: vfchdb %v0, %v24, %v26 2102; CHECK-NEXT: vpkg %v0, %v0, %v0 2103; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2104; CHECK-NEXT: br %r14 2105 %cmp = fcmp ogt <2 x double> %val1, %val2 2106 %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4 2107 ret <2 x float> %sel 2108} 2109 2110define <2 x double> @fun107(<2 x double> %val1, <2 x double> %val2, <2 x double> %val3, <2 x double> %val4) { 2111; CHECK-LABEL: fun107: 2112; CHECK: # BB#0: 2113; CHECK-NEXT: vfchdb %v0, %v24, %v26 2114; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2115; CHECK-NEXT: br %r14 2116 %cmp = fcmp ogt <2 x double> %val1, %val2 2117 %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4 2118 ret <2 x double> %sel 2119} 2120 2121define <4 x i8> @fun108(<4 x float> %val1, <4 x float> %val2, <4 x i8> %val3, <4 x i8> %val4) { 2122; CHECK-LABEL: fun108: 2123; CHECK: # BB#0: 2124; CHECK-NEXT: vmrlf %v0, %v26, %v26 2125; CHECK-NEXT: vmrlf %v1, %v24, %v24 2126; CHECK-NEXT: vldeb %v0, %v0 2127; CHECK-NEXT: vldeb %v1, %v1 2128; CHECK-NEXT: vfchdb %v0, %v1, %v0 2129; CHECK-NEXT: vmrhf %v1, %v26, %v26 2130; CHECK-NEXT: vmrhf %v2, %v24, %v24 2131; CHECK-NEXT: vldeb %v1, %v1 2132; CHECK-NEXT: larl %r1, .LCPI108_0 2133; CHECK-NEXT: vldeb %v2, %v2 2134; CHECK-NEXT: vfchdb %v1, %v2, %v1 2135; CHECK-NEXT: vpkg %v0, %v1, %v0 2136; CHECK-NEXT: vl %v1, 0(%r1) 2137; CHECK-NEXT: vperm %v0, %v0, %v0, %v1 2138; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2139; CHECK-NEXT: br %r14 2140 %cmp = fcmp ogt <4 x float> %val1, %val2 2141 %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4 2142 ret <4 x i8> %sel 2143} 2144 2145define <4 x i16> @fun109(<4 x float> %val1, <4 x float> %val2, <4 x i16> %val3, <4 x i16> %val4) { 2146; CHECK-LABEL: fun109: 2147; CHECK: # BB#0: 2148; CHECK-NEXT: vmrlf %v0, %v26, %v26 2149; CHECK-NEXT: vmrlf %v1, %v24, %v24 2150; CHECK-NEXT: vldeb %v0, %v0 2151; CHECK-NEXT: vldeb %v1, %v1 2152; CHECK-NEXT: vfchdb %v0, %v1, %v0 2153; CHECK-NEXT: vmrhf %v1, %v26, %v26 2154; CHECK-NEXT: vmrhf %v2, %v24, %v24 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: vpkf %v0, %v0, %v0 2160; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2161; CHECK-NEXT: br %r14 2162 %cmp = fcmp ogt <4 x float> %val1, %val2 2163 %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4 2164 ret <4 x i16> %sel 2165} 2166 2167define <4 x i32> @fun110(<4 x float> %val1, <4 x float> %val2, <4 x i32> %val3, <4 x i32> %val4) { 2168; CHECK-LABEL: fun110: 2169; CHECK: # BB#0: 2170; CHECK-NEXT: vmrlf %v0, %v26, %v26 2171; CHECK-NEXT: vmrlf %v1, %v24, %v24 2172; CHECK-NEXT: vldeb %v0, %v0 2173; CHECK-NEXT: vldeb %v1, %v1 2174; CHECK-NEXT: vfchdb %v0, %v1, %v0 2175; CHECK-NEXT: vmrhf %v1, %v26, %v26 2176; CHECK-NEXT: vmrhf %v2, %v24, %v24 2177; CHECK-NEXT: vldeb %v1, %v1 2178; CHECK-NEXT: vldeb %v2, %v2 2179; CHECK-NEXT: vfchdb %v1, %v2, %v1 2180; CHECK-NEXT: vpkg %v0, %v1, %v0 2181; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2182; CHECK-NEXT: br %r14 2183 %cmp = fcmp ogt <4 x float> %val1, %val2 2184 %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4 2185 ret <4 x i32> %sel 2186} 2187 2188define <4 x i64> @fun111(<4 x float> %val1, <4 x float> %val2, <4 x i64> %val3, <4 x i64> %val4) { 2189; CHECK-LABEL: fun111: 2190; CHECK: # BB#0: 2191; CHECK-NEXT: vmrlf %v0, %v26, %v26 2192; CHECK-NEXT: vmrlf %v1, %v24, %v24 2193; CHECK-NEXT: vldeb %v0, %v0 2194; CHECK-NEXT: vldeb %v1, %v1 2195; CHECK-NEXT: vfchdb %v0, %v1, %v0 2196; CHECK-NEXT: vmrhf %v1, %v26, %v26 2197; CHECK-NEXT: vmrhf %v2, %v24, %v24 2198; CHECK-NEXT: vldeb %v1, %v1 2199; CHECK-NEXT: vldeb %v2, %v2 2200; CHECK-NEXT: vfchdb %v1, %v2, %v1 2201; CHECK-NEXT: vpkg %v0, %v1, %v0 2202; CHECK-NEXT: vuphf %v1, %v0 2203; CHECK-NEXT: vmrlg %v0, %v0, %v0 2204; CHECK-NEXT: vuphf %v0, %v0 2205; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 2206; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 2207; CHECK-NEXT: br %r14 2208 %cmp = fcmp ogt <4 x float> %val1, %val2 2209 %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4 2210 ret <4 x i64> %sel 2211} 2212 2213define <4 x float> @fun112(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4) { 2214; CHECK-LABEL: fun112: 2215; CHECK: # BB#0: 2216; CHECK-NEXT: vmrlf %v0, %v26, %v26 2217; CHECK-NEXT: vmrlf %v1, %v24, %v24 2218; CHECK-NEXT: vldeb %v0, %v0 2219; CHECK-NEXT: vldeb %v1, %v1 2220; CHECK-NEXT: vfchdb %v0, %v1, %v0 2221; CHECK-NEXT: vmrhf %v1, %v26, %v26 2222; CHECK-NEXT: vmrhf %v2, %v24, %v24 2223; CHECK-NEXT: vldeb %v1, %v1 2224; CHECK-NEXT: vldeb %v2, %v2 2225; CHECK-NEXT: vfchdb %v1, %v2, %v1 2226; CHECK-NEXT: vpkg %v0, %v1, %v0 2227; CHECK-NEXT: vsel %v24, %v28, %v30, %v0 2228; CHECK-NEXT: br %r14 2229 %cmp = fcmp ogt <4 x float> %val1, %val2 2230 %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 2231 ret <4 x float> %sel 2232} 2233 2234define <4 x double> @fun113(<4 x float> %val1, <4 x float> %val2, <4 x double> %val3, <4 x double> %val4) { 2235; CHECK-LABEL: fun113: 2236; CHECK: # BB#0: 2237; CHECK-NEXT: vmrlf %v0, %v26, %v26 2238; CHECK-NEXT: vmrlf %v1, %v24, %v24 2239; CHECK-NEXT: vldeb %v0, %v0 2240; CHECK-NEXT: vldeb %v1, %v1 2241; CHECK-NEXT: vfchdb %v0, %v1, %v0 2242; CHECK-NEXT: vmrhf %v1, %v26, %v26 2243; CHECK-NEXT: vmrhf %v2, %v24, %v24 2244; CHECK-NEXT: vldeb %v1, %v1 2245; CHECK-NEXT: vldeb %v2, %v2 2246; CHECK-NEXT: vfchdb %v1, %v2, %v1 2247; CHECK-NEXT: vpkg %v0, %v1, %v0 2248; CHECK-NEXT: vuphf %v1, %v0 2249; CHECK-NEXT: vmrlg %v0, %v0, %v0 2250; CHECK-NEXT: vuphf %v0, %v0 2251; CHECK-NEXT: vsel %v24, %v28, %v25, %v1 2252; CHECK-NEXT: vsel %v26, %v30, %v27, %v0 2253; CHECK-NEXT: br %r14 2254 %cmp = fcmp ogt <4 x float> %val1, %val2 2255 %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4 2256 ret <4 x double> %sel 2257} 2258 2259define <4 x i8> @fun114(<4 x double> %val1, <4 x double> %val2, <4 x i8> %val3, <4 x i8> %val4) { 2260; CHECK-LABEL: fun114: 2261; CHECK: # BB#0: 2262; CHECK-NEXT: larl %r1, .LCPI114_0 2263; CHECK-NEXT: vl %v2, 0(%r1) 2264; CHECK-NEXT: vfchdb %v0, %v26, %v30 2265; CHECK-NEXT: vfchdb %v1, %v24, %v28 2266; CHECK-NEXT: vperm %v0, %v1, %v0, %v2 2267; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2268; CHECK-NEXT: br %r14 2269 %cmp = fcmp ogt <4 x double> %val1, %val2 2270 %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4 2271 ret <4 x i8> %sel 2272} 2273 2274define <4 x i16> @fun115(<4 x double> %val1, <4 x double> %val2, <4 x i16> %val3, <4 x i16> %val4) { 2275; CHECK-LABEL: fun115: 2276; CHECK: # BB#0: 2277; CHECK-NEXT: larl %r1, .LCPI115_0 2278; CHECK-NEXT: vl %v2, 0(%r1) 2279; CHECK-NEXT: vfchdb %v0, %v26, %v30 2280; CHECK-NEXT: vfchdb %v1, %v24, %v28 2281; CHECK-NEXT: vperm %v0, %v1, %v0, %v2 2282; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2283; CHECK-NEXT: br %r14 2284 %cmp = fcmp ogt <4 x double> %val1, %val2 2285 %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4 2286 ret <4 x i16> %sel 2287} 2288 2289define <4 x i32> @fun116(<4 x double> %val1, <4 x double> %val2, <4 x i32> %val3, <4 x i32> %val4) { 2290; CHECK-LABEL: fun116: 2291; CHECK: # BB#0: 2292; CHECK-NEXT: vfchdb %v0, %v26, %v30 2293; CHECK-NEXT: vfchdb %v1, %v24, %v28 2294; CHECK-NEXT: vpkg %v0, %v1, %v0 2295; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2296; CHECK-NEXT: br %r14 2297 %cmp = fcmp ogt <4 x double> %val1, %val2 2298 %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4 2299 ret <4 x i32> %sel 2300} 2301 2302define <4 x i64> @fun117(<4 x double> %val1, <4 x double> %val2, <4 x i64> %val3, <4 x i64> %val4) { 2303; CHECK-LABEL: fun117: 2304; CHECK: # BB#0: 2305; CHECK-NEXT: vfchdb %v0, %v24, %v28 2306; CHECK-NEXT: vsel %v24, %v25, %v29, %v0 2307; CHECK-NEXT: vfchdb %v0, %v26, %v30 2308; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 2309; CHECK-NEXT: br %r14 2310 %cmp = fcmp ogt <4 x double> %val1, %val2 2311 %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4 2312 ret <4 x i64> %sel 2313} 2314 2315define <4 x float> @fun118(<4 x double> %val1, <4 x double> %val2, <4 x float> %val3, <4 x float> %val4) { 2316; CHECK-LABEL: fun118: 2317; CHECK: # BB#0: 2318; CHECK-NEXT: vfchdb %v0, %v26, %v30 2319; CHECK-NEXT: vfchdb %v1, %v24, %v28 2320; CHECK-NEXT: vpkg %v0, %v1, %v0 2321; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2322; CHECK-NEXT: br %r14 2323 %cmp = fcmp ogt <4 x double> %val1, %val2 2324 %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 2325 ret <4 x float> %sel 2326} 2327 2328define <4 x double> @fun119(<4 x double> %val1, <4 x double> %val2, <4 x double> %val3, <4 x double> %val4) { 2329; CHECK-LABEL: fun119: 2330; CHECK: # BB#0: 2331; CHECK-NEXT: vfchdb %v0, %v24, %v28 2332; CHECK-NEXT: vsel %v24, %v25, %v29, %v0 2333; CHECK-NEXT: vfchdb %v0, %v26, %v30 2334; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 2335; CHECK-NEXT: br %r14 2336 %cmp = fcmp ogt <4 x double> %val1, %val2 2337 %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4 2338 ret <4 x double> %sel 2339} 2340 2341define <8 x i8> @fun120(<8 x float> %val1, <8 x float> %val2, <8 x i8> %val3, <8 x i8> %val4) { 2342; CHECK-LABEL: fun120: 2343; CHECK: # BB#0: 2344; CHECK-NEXT: vmrlf %v0, %v30, %v30 2345; CHECK-NEXT: vmrlf %v1, %v26, %v26 2346; CHECK-NEXT: vldeb %v0, %v0 2347; CHECK-NEXT: vldeb %v1, %v1 2348; CHECK-NEXT: vfchdb %v0, %v1, %v0 2349; CHECK-NEXT: vmrhf %v1, %v30, %v30 2350; CHECK-NEXT: vmrhf %v2, %v26, %v26 2351; CHECK-NEXT: vldeb %v1, %v1 2352; CHECK-NEXT: larl %r1, .LCPI120_0 2353; CHECK-NEXT: vldeb %v2, %v2 2354; CHECK-NEXT: vfchdb %v1, %v2, %v1 2355; CHECK-NEXT: vpkg %v0, %v1, %v0 2356; CHECK-NEXT: vmrlf %v1, %v28, %v28 2357; CHECK-NEXT: vmrlf %v2, %v24, %v24 2358; CHECK-NEXT: vmrhf %v3, %v24, %v24 2359; CHECK-NEXT: vldeb %v1, %v1 2360; CHECK-NEXT: vldeb %v2, %v2 2361; CHECK-NEXT: vfchdb %v1, %v2, %v1 2362; CHECK-NEXT: vmrhf %v2, %v28, %v28 2363; CHECK-NEXT: vldeb %v2, %v2 2364; CHECK-NEXT: vldeb %v3, %v3 2365; CHECK-NEXT: vfchdb %v2, %v3, %v2 2366; CHECK-NEXT: vpkg %v1, %v2, %v1 2367; CHECK-NEXT: vl %v2, 0(%r1) 2368; CHECK-NEXT: vperm %v0, %v1, %v0, %v2 2369; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2370; CHECK-NEXT: br %r14 2371 %cmp = fcmp ogt <8 x float> %val1, %val2 2372 %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4 2373 ret <8 x i8> %sel 2374} 2375 2376define <8 x i16> @fun121(<8 x float> %val1, <8 x float> %val2, <8 x i16> %val3, <8 x i16> %val4) { 2377; CHECK-LABEL: fun121: 2378; CHECK: # BB#0: 2379; CHECK-NEXT: vmrlf %v0, %v30, %v30 2380; CHECK-NEXT: vmrlf %v1, %v26, %v26 2381; CHECK-NEXT: vldeb %v0, %v0 2382; CHECK-NEXT: vldeb %v1, %v1 2383; CHECK-NEXT: vfchdb %v0, %v1, %v0 2384; CHECK-NEXT: vmrhf %v1, %v30, %v30 2385; CHECK-NEXT: vmrhf %v2, %v26, %v26 2386; CHECK-NEXT: vldeb %v1, %v1 2387; CHECK-NEXT: vmrhf %v3, %v24, %v24 2388; CHECK-NEXT: vldeb %v2, %v2 2389; CHECK-NEXT: vfchdb %v1, %v2, %v1 2390; CHECK-NEXT: vpkg %v0, %v1, %v0 2391; CHECK-NEXT: vmrlf %v1, %v28, %v28 2392; CHECK-NEXT: vmrlf %v2, %v24, %v24 2393; CHECK-NEXT: vldeb %v1, %v1 2394; CHECK-NEXT: vldeb %v2, %v2 2395; CHECK-NEXT: vfchdb %v1, %v2, %v1 2396; CHECK-NEXT: vmrhf %v2, %v28, %v28 2397; CHECK-NEXT: vldeb %v2, %v2 2398; CHECK-NEXT: vldeb %v3, %v3 2399; CHECK-NEXT: vfchdb %v2, %v3, %v2 2400; CHECK-NEXT: vpkg %v1, %v2, %v1 2401; CHECK-NEXT: vpkf %v0, %v1, %v0 2402; CHECK-NEXT: vsel %v24, %v25, %v27, %v0 2403; CHECK-NEXT: br %r14 2404 %cmp = fcmp ogt <8 x float> %val1, %val2 2405 %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4 2406 ret <8 x i16> %sel 2407} 2408 2409define <8 x i32> @fun122(<8 x float> %val1, <8 x float> %val2, <8 x i32> %val3, <8 x i32> %val4) { 2410; CHECK-LABEL: fun122: 2411; CHECK: # BB#0: 2412; CHECK-NEXT: vmrlf %v0, %v28, %v28 2413; CHECK-NEXT: vmrlf %v1, %v24, %v24 2414; CHECK-NEXT: vldeb %v0, %v0 2415; CHECK-NEXT: vldeb %v1, %v1 2416; CHECK-NEXT: vfchdb %v0, %v1, %v0 2417; CHECK-NEXT: vmrhf %v1, %v28, %v28 2418; CHECK-NEXT: vmrhf %v2, %v24, %v24 2419; CHECK-NEXT: vldeb %v1, %v1 2420; CHECK-NEXT: vldeb %v2, %v2 2421; CHECK-NEXT: vfchdb %v1, %v2, %v1 2422; CHECK-NEXT: vpkg %v0, %v1, %v0 2423; CHECK-NEXT: vsel %v24, %v25, %v29, %v0 2424; CHECK-NEXT: vmrlf %v0, %v30, %v30 2425; CHECK-NEXT: vmrlf %v1, %v26, %v26 2426; CHECK-NEXT: vmrhf %v2, %v26, %v26 2427; CHECK-NEXT: vldeb %v0, %v0 2428; CHECK-NEXT: vldeb %v1, %v1 2429; CHECK-NEXT: vfchdb %v0, %v1, %v0 2430; CHECK-NEXT: vmrhf %v1, %v30, %v30 2431; CHECK-NEXT: vldeb %v1, %v1 2432; CHECK-NEXT: vldeb %v2, %v2 2433; CHECK-NEXT: vfchdb %v1, %v2, %v1 2434; CHECK-NEXT: vpkg %v0, %v1, %v0 2435; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 2436; CHECK-NEXT: br %r14 2437 %cmp = fcmp ogt <8 x float> %val1, %val2 2438 %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4 2439 ret <8 x i32> %sel 2440} 2441 2442define <8 x i64> @fun123(<8 x float> %val1, <8 x float> %val2, <8 x i64> %val3, <8 x i64> %val4) { 2443; CHECK-LABEL: fun123: 2444; CHECK: # BB#0: 2445; CHECK-NEXT: vmrlf %v0, %v28, %v28 2446; CHECK-NEXT: vmrlf %v1, %v24, %v24 2447; CHECK-NEXT: vldeb %v0, %v0 2448; CHECK-NEXT: vldeb %v1, %v1 2449; CHECK-NEXT: vfchdb %v0, %v1, %v0 2450; CHECK-NEXT: vmrhf %v1, %v28, %v28 2451; CHECK-NEXT: vmrhf %v2, %v24, %v24 2452; CHECK-NEXT: vldeb %v1, %v1 2453; CHECK-NEXT: vmrhf %v3, %v26, %v26 2454; CHECK-NEXT: vldeb %v2, %v2 2455; CHECK-NEXT: vfchdb %v1, %v2, %v1 2456; CHECK-NEXT: vl %v2, 160(%r15) 2457; CHECK-NEXT: vpkg %v0, %v1, %v0 2458; CHECK-NEXT: vuphf %v1, %v0 2459; CHECK-NEXT: vsel %v24, %v25, %v2, %v1 2460; CHECK-NEXT: vmrlf %v1, %v30, %v30 2461; CHECK-NEXT: vmrlf %v2, %v26, %v26 2462; CHECK-NEXT: vmrlg %v0, %v0, %v0 2463; CHECK-NEXT: vuphf %v0, %v0 2464; CHECK-NEXT: vldeb %v1, %v1 2465; CHECK-NEXT: vldeb %v2, %v2 2466; CHECK-NEXT: vfchdb %v1, %v2, %v1 2467; CHECK-NEXT: vmrhf %v2, %v30, %v30 2468; CHECK-NEXT: vldeb %v2, %v2 2469; CHECK-NEXT: vldeb %v3, %v3 2470; CHECK-NEXT: vfchdb %v2, %v3, %v2 2471; CHECK-NEXT: vl %v3, 192(%r15) 2472; CHECK-NEXT: vpkg %v1, %v2, %v1 2473; CHECK-NEXT: vuphf %v2, %v1 2474; CHECK-NEXT: vsel %v28, %v29, %v3, %v2 2475; CHECK-NEXT: vl %v2, 176(%r15) 2476; CHECK-NEXT: vsel %v26, %v27, %v2, %v0 2477; CHECK-NEXT: vmrlg %v0, %v1, %v1 2478; CHECK-NEXT: vl %v1, 208(%r15) 2479; CHECK-NEXT: vuphf %v0, %v0 2480; CHECK-NEXT: vsel %v30, %v31, %v1, %v0 2481; CHECK-NEXT: br %r14 2482 %cmp = fcmp ogt <8 x float> %val1, %val2 2483 %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4 2484 ret <8 x i64> %sel 2485} 2486 2487define <8 x float> @fun124(<8 x float> %val1, <8 x float> %val2, <8 x float> %val3, <8 x float> %val4) { 2488; CHECK-LABEL: fun124: 2489; CHECK: # BB#0: 2490; CHECK-NEXT: vmrlf %v0, %v28, %v28 2491; CHECK-NEXT: vmrlf %v1, %v24, %v24 2492; CHECK-NEXT: vldeb %v0, %v0 2493; CHECK-NEXT: vldeb %v1, %v1 2494; CHECK-NEXT: vfchdb %v0, %v1, %v0 2495; CHECK-NEXT: vmrhf %v1, %v28, %v28 2496; CHECK-NEXT: vmrhf %v2, %v24, %v24 2497; CHECK-NEXT: vldeb %v1, %v1 2498; CHECK-NEXT: vldeb %v2, %v2 2499; CHECK-NEXT: vfchdb %v1, %v2, %v1 2500; CHECK-NEXT: vpkg %v0, %v1, %v0 2501; CHECK-NEXT: vsel %v24, %v25, %v29, %v0 2502; CHECK-NEXT: vmrlf %v0, %v30, %v30 2503; CHECK-NEXT: vmrlf %v1, %v26, %v26 2504; CHECK-NEXT: vmrhf %v2, %v26, %v26 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: vldeb %v1, %v1 2510; CHECK-NEXT: vldeb %v2, %v2 2511; CHECK-NEXT: vfchdb %v1, %v2, %v1 2512; CHECK-NEXT: vpkg %v0, %v1, %v0 2513; CHECK-NEXT: vsel %v26, %v27, %v31, %v0 2514; CHECK-NEXT: br %r14 2515 %cmp = fcmp ogt <8 x float> %val1, %val2 2516 %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4 2517 ret <8 x float> %sel 2518} 2519 2520define <8 x double> @fun125(<8 x float> %val1, <8 x float> %val2, <8 x double> %val3, <8 x double> %val4) { 2521; CHECK-LABEL: fun125: 2522; CHECK: # BB#0: 2523; CHECK-NEXT: vmrlf %v0, %v28, %v28 2524; CHECK-NEXT: vmrlf %v1, %v24, %v24 2525; CHECK-NEXT: vldeb %v0, %v0 2526; CHECK-NEXT: vldeb %v1, %v1 2527; CHECK-NEXT: vfchdb %v0, %v1, %v0 2528; CHECK-NEXT: vmrhf %v1, %v28, %v28 2529; CHECK-NEXT: vmrhf %v2, %v24, %v24 2530; CHECK-NEXT: vldeb %v1, %v1 2531; CHECK-NEXT: vmrhf %v3, %v26, %v26 2532; CHECK-NEXT: vldeb %v2, %v2 2533; CHECK-NEXT: vfchdb %v1, %v2, %v1 2534; CHECK-NEXT: vl %v2, 160(%r15) 2535; CHECK-NEXT: vpkg %v0, %v1, %v0 2536; CHECK-NEXT: vuphf %v1, %v0 2537; CHECK-NEXT: vsel %v24, %v25, %v2, %v1 2538; CHECK-NEXT: vmrlf %v1, %v30, %v30 2539; CHECK-NEXT: vmrlf %v2, %v26, %v26 2540; CHECK-NEXT: vmrlg %v0, %v0, %v0 2541; CHECK-NEXT: vuphf %v0, %v0 2542; CHECK-NEXT: vldeb %v1, %v1 2543; CHECK-NEXT: vldeb %v2, %v2 2544; CHECK-NEXT: vfchdb %v1, %v2, %v1 2545; CHECK-NEXT: vmrhf %v2, %v30, %v30 2546; CHECK-NEXT: vldeb %v2, %v2 2547; CHECK-NEXT: vldeb %v3, %v3 2548; CHECK-NEXT: vfchdb %v2, %v3, %v2 2549; CHECK-NEXT: vl %v3, 192(%r15) 2550; CHECK-NEXT: vpkg %v1, %v2, %v1 2551; CHECK-NEXT: vuphf %v2, %v1 2552; CHECK-NEXT: vsel %v28, %v29, %v3, %v2 2553; CHECK-NEXT: vl %v2, 176(%r15) 2554; CHECK-NEXT: vsel %v26, %v27, %v2, %v0 2555; CHECK-NEXT: vmrlg %v0, %v1, %v1 2556; CHECK-NEXT: vl %v1, 208(%r15) 2557; CHECK-NEXT: vuphf %v0, %v0 2558; CHECK-NEXT: vsel %v30, %v31, %v1, %v0 2559; CHECK-NEXT: br %r14 2560 %cmp = fcmp ogt <8 x float> %val1, %val2 2561 %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4 2562 ret <8 x double> %sel 2563} 2564 2565define <8 x i8> @fun126(<8 x double> %val1, <8 x double> %val2, <8 x i8> %val3, <8 x i8> %val4) { 2566; CHECK-LABEL: fun126: 2567; CHECK: # BB#0: 2568; CHECK-NEXT: vfchdb %v0, %v30, %v31 2569; CHECK-NEXT: vfchdb %v1, %v28, %v29 2570; CHECK-NEXT: vpkg %v0, %v1, %v0 2571; CHECK-NEXT: vfchdb %v1, %v26, %v27 2572; CHECK-NEXT: vfchdb %v2, %v24, %v25 2573; CHECK-NEXT: larl %r1, .LCPI126_0 2574; CHECK-NEXT: vpkg %v1, %v2, %v1 2575; CHECK-NEXT: vl %v2, 0(%r1) 2576; CHECK-NEXT: vperm %v0, %v1, %v0, %v2 2577; CHECK-NEXT: vlrepg %v1, 168(%r15) 2578; CHECK-NEXT: vlrepg %v2, 160(%r15) 2579; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2580; CHECK-NEXT: br %r14 2581 %cmp = fcmp ogt <8 x double> %val1, %val2 2582 %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4 2583 ret <8 x i8> %sel 2584} 2585 2586define <8 x i16> @fun127(<8 x double> %val1, <8 x double> %val2, <8 x i16> %val3, <8 x i16> %val4) { 2587; CHECK-LABEL: fun127: 2588; CHECK: # BB#0: 2589; CHECK-NEXT: vfchdb %v0, %v30, %v31 2590; CHECK-NEXT: vfchdb %v1, %v28, %v29 2591; CHECK-NEXT: vpkg %v0, %v1, %v0 2592; CHECK-NEXT: vfchdb %v1, %v26, %v27 2593; CHECK-NEXT: vfchdb %v2, %v24, %v25 2594; CHECK-NEXT: vpkg %v1, %v2, %v1 2595; CHECK-NEXT: vpkf %v0, %v1, %v0 2596; CHECK-NEXT: vl %v1, 176(%r15) 2597; CHECK-NEXT: vl %v2, 160(%r15) 2598; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2599; CHECK-NEXT: br %r14 2600 %cmp = fcmp ogt <8 x double> %val1, %val2 2601 %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4 2602 ret <8 x i16> %sel 2603} 2604 2605define <8 x i32> @fun128(<8 x double> %val1, <8 x double> %val2, <8 x i32> %val3, <8 x i32> %val4) { 2606; CHECK-LABEL: fun128: 2607; CHECK: # BB#0: 2608; CHECK-NEXT: vfchdb %v0, %v26, %v27 2609; CHECK-NEXT: vfchdb %v1, %v24, %v25 2610; CHECK-NEXT: vpkg %v0, %v1, %v0 2611; CHECK-NEXT: vl %v1, 192(%r15) 2612; CHECK-NEXT: vl %v2, 160(%r15) 2613; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2614; CHECK-NEXT: vfchdb %v0, %v30, %v31 2615; CHECK-NEXT: vfchdb %v1, %v28, %v29 2616; CHECK-NEXT: vpkg %v0, %v1, %v0 2617; CHECK-NEXT: vl %v1, 208(%r15) 2618; CHECK-NEXT: vl %v2, 176(%r15) 2619; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 2620; CHECK-NEXT: br %r14 2621 %cmp = fcmp ogt <8 x double> %val1, %val2 2622 %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4 2623 ret <8 x i32> %sel 2624} 2625 2626define <8 x i64> @fun129(<8 x double> %val1, <8 x double> %val2, <8 x i64> %val3, <8 x i64> %val4) { 2627; CHECK-LABEL: fun129: 2628; CHECK: # BB#0: 2629; CHECK-NEXT: vl %v1, 224(%r15) 2630; CHECK-NEXT: vl %v2, 160(%r15) 2631; CHECK-NEXT: vfchdb %v0, %v24, %v25 2632; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2633; CHECK-NEXT: vl %v1, 240(%r15) 2634; CHECK-NEXT: vl %v2, 176(%r15) 2635; CHECK-NEXT: vfchdb %v0, %v26, %v27 2636; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 2637; CHECK-NEXT: vl %v1, 256(%r15) 2638; CHECK-NEXT: vl %v2, 192(%r15) 2639; CHECK-NEXT: vfchdb %v0, %v28, %v29 2640; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 2641; CHECK-NEXT: vl %v1, 272(%r15) 2642; CHECK-NEXT: vl %v2, 208(%r15) 2643; CHECK-NEXT: vfchdb %v0, %v30, %v31 2644; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 2645; CHECK-NEXT: br %r14 2646 %cmp = fcmp ogt <8 x double> %val1, %val2 2647 %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4 2648 ret <8 x i64> %sel 2649} 2650 2651define <8 x float> @fun130(<8 x double> %val1, <8 x double> %val2, <8 x float> %val3, <8 x float> %val4) { 2652; CHECK-LABEL: fun130: 2653; CHECK: # BB#0: 2654; CHECK-NEXT: vfchdb %v0, %v26, %v27 2655; CHECK-NEXT: vfchdb %v1, %v24, %v25 2656; CHECK-NEXT: vpkg %v0, %v1, %v0 2657; CHECK-NEXT: vl %v1, 192(%r15) 2658; CHECK-NEXT: vl %v2, 160(%r15) 2659; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2660; CHECK-NEXT: vfchdb %v0, %v30, %v31 2661; CHECK-NEXT: vfchdb %v1, %v28, %v29 2662; CHECK-NEXT: vpkg %v0, %v1, %v0 2663; CHECK-NEXT: vl %v1, 208(%r15) 2664; CHECK-NEXT: vl %v2, 176(%r15) 2665; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 2666; CHECK-NEXT: br %r14 2667 %cmp = fcmp ogt <8 x double> %val1, %val2 2668 %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4 2669 ret <8 x float> %sel 2670} 2671 2672define <8 x double> @fun131(<8 x double> %val1, <8 x double> %val2, <8 x double> %val3, <8 x double> %val4) { 2673; CHECK-LABEL: fun131: 2674; CHECK: # BB#0: 2675; CHECK-NEXT: vl %v1, 224(%r15) 2676; CHECK-NEXT: vl %v2, 160(%r15) 2677; CHECK-NEXT: vfchdb %v0, %v24, %v25 2678; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2679; CHECK-NEXT: vl %v1, 240(%r15) 2680; CHECK-NEXT: vl %v2, 176(%r15) 2681; CHECK-NEXT: vfchdb %v0, %v26, %v27 2682; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 2683; CHECK-NEXT: vl %v1, 256(%r15) 2684; CHECK-NEXT: vl %v2, 192(%r15) 2685; CHECK-NEXT: vfchdb %v0, %v28, %v29 2686; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 2687; CHECK-NEXT: vl %v1, 272(%r15) 2688; CHECK-NEXT: vl %v2, 208(%r15) 2689; CHECK-NEXT: vfchdb %v0, %v30, %v31 2690; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 2691; CHECK-NEXT: br %r14 2692 %cmp = fcmp ogt <8 x double> %val1, %val2 2693 %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4 2694 ret <8 x double> %sel 2695} 2696 2697define <16 x i8> @fun132(<16 x float> %val1, <16 x float> %val2, <16 x i8> %val3, <16 x i8> %val4) { 2698; CHECK-LABEL: fun132: 2699; CHECK: # BB#0: 2700; CHECK-NEXT: vmrlf %v0, %v31, %v31 2701; CHECK-NEXT: vmrlf %v1, %v30, %v30 2702; CHECK-NEXT: vldeb %v0, %v0 2703; CHECK-NEXT: vldeb %v1, %v1 2704; CHECK-NEXT: vfchdb %v0, %v1, %v0 2705; CHECK-NEXT: vmrhf %v1, %v31, %v31 2706; CHECK-NEXT: vmrhf %v2, %v30, %v30 2707; CHECK-NEXT: vldeb %v1, %v1 2708; CHECK-NEXT: vmrhf %v3, %v28, %v28 2709; CHECK-NEXT: vmrhf %v4, %v24, %v24 2710; CHECK-NEXT: vldeb %v2, %v2 2711; CHECK-NEXT: vfchdb %v1, %v2, %v1 2712; CHECK-NEXT: vpkg %v0, %v1, %v0 2713; CHECK-NEXT: vmrlf %v1, %v29, %v29 2714; CHECK-NEXT: vmrlf %v2, %v28, %v28 2715; CHECK-NEXT: vldeb %v1, %v1 2716; CHECK-NEXT: vldeb %v2, %v2 2717; CHECK-NEXT: vfchdb %v1, %v2, %v1 2718; CHECK-NEXT: vmrhf %v2, %v29, %v29 2719; CHECK-NEXT: vldeb %v2, %v2 2720; CHECK-NEXT: vldeb %v3, %v3 2721; CHECK-NEXT: vfchdb %v2, %v3, %v2 2722; CHECK-NEXT: vpkg %v1, %v2, %v1 2723; CHECK-NEXT: vpkf %v0, %v1, %v0 2724; CHECK-NEXT: vmrlf %v1, %v27, %v27 2725; CHECK-NEXT: vmrlf %v2, %v26, %v26 2726; CHECK-NEXT: vmrhf %v3, %v26, %v26 2727; CHECK-NEXT: vldeb %v1, %v1 2728; CHECK-NEXT: vldeb %v2, %v2 2729; CHECK-NEXT: vfchdb %v1, %v2, %v1 2730; CHECK-NEXT: vmrhf %v2, %v27, %v27 2731; CHECK-NEXT: vldeb %v2, %v2 2732; CHECK-NEXT: vldeb %v3, %v3 2733; CHECK-NEXT: vfchdb %v2, %v3, %v2 2734; CHECK-NEXT: vpkg %v1, %v2, %v1 2735; CHECK-NEXT: vmrlf %v2, %v25, %v25 2736; CHECK-NEXT: vmrlf %v3, %v24, %v24 2737; CHECK-NEXT: vldeb %v2, %v2 2738; CHECK-NEXT: vldeb %v3, %v3 2739; CHECK-NEXT: vfchdb %v2, %v3, %v2 2740; CHECK-NEXT: vmrhf %v3, %v25, %v25 2741; CHECK-NEXT: vldeb %v3, %v3 2742; CHECK-NEXT: vldeb %v4, %v4 2743; CHECK-NEXT: vfchdb %v3, %v4, %v3 2744; CHECK-NEXT: vpkg %v2, %v3, %v2 2745; CHECK-NEXT: vpkf %v1, %v2, %v1 2746; CHECK-NEXT: vl %v2, 160(%r15) 2747; CHECK-NEXT: vpkh %v0, %v1, %v0 2748; CHECK-NEXT: vl %v1, 176(%r15) 2749; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2750; CHECK-NEXT: br %r14 2751 %cmp = fcmp ogt <16 x float> %val1, %val2 2752 %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4 2753 ret <16 x i8> %sel 2754} 2755 2756define <16 x i16> @fun133(<16 x float> %val1, <16 x float> %val2, <16 x i16> %val3, <16 x i16> %val4) { 2757; CHECK-LABEL: fun133: 2758; CHECK: # BB#0: 2759; CHECK-NEXT: vmrlf %v0, %v27, %v27 2760; CHECK-NEXT: vmrlf %v1, %v26, %v26 2761; CHECK-NEXT: vldeb %v0, %v0 2762; CHECK-NEXT: vldeb %v1, %v1 2763; CHECK-NEXT: vfchdb %v0, %v1, %v0 2764; CHECK-NEXT: vmrhf %v1, %v27, %v27 2765; CHECK-NEXT: vmrhf %v2, %v26, %v26 2766; CHECK-NEXT: vldeb %v1, %v1 2767; CHECK-NEXT: vmrhf %v3, %v24, %v24 2768; CHECK-NEXT: vldeb %v2, %v2 2769; CHECK-NEXT: vfchdb %v1, %v2, %v1 2770; CHECK-NEXT: vpkg %v0, %v1, %v0 2771; CHECK-NEXT: vmrlf %v1, %v25, %v25 2772; CHECK-NEXT: vmrlf %v2, %v24, %v24 2773; CHECK-NEXT: vldeb %v1, %v1 2774; CHECK-NEXT: vldeb %v2, %v2 2775; CHECK-NEXT: vfchdb %v1, %v2, %v1 2776; CHECK-NEXT: vmrhf %v2, %v25, %v25 2777; CHECK-NEXT: vldeb %v2, %v2 2778; CHECK-NEXT: vldeb %v3, %v3 2779; CHECK-NEXT: vfchdb %v2, %v3, %v2 2780; CHECK-NEXT: vpkg %v1, %v2, %v1 2781; CHECK-NEXT: vl %v2, 160(%r15) 2782; CHECK-NEXT: vpkf %v0, %v1, %v0 2783; CHECK-NEXT: vl %v1, 192(%r15) 2784; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2785; CHECK-NEXT: vmrlf %v0, %v31, %v31 2786; CHECK-NEXT: vmrlf %v1, %v30, %v30 2787; CHECK-NEXT: vmrhf %v2, %v30, %v30 2788; CHECK-NEXT: vmrhf %v3, %v28, %v28 2789; CHECK-NEXT: vldeb %v0, %v0 2790; CHECK-NEXT: vldeb %v1, %v1 2791; CHECK-NEXT: vfchdb %v0, %v1, %v0 2792; CHECK-NEXT: vmrhf %v1, %v31, %v31 2793; CHECK-NEXT: vldeb %v1, %v1 2794; CHECK-NEXT: vldeb %v2, %v2 2795; CHECK-NEXT: vfchdb %v1, %v2, %v1 2796; CHECK-NEXT: vpkg %v0, %v1, %v0 2797; CHECK-NEXT: vmrlf %v1, %v29, %v29 2798; CHECK-NEXT: vmrlf %v2, %v28, %v28 2799; CHECK-NEXT: vldeb %v1, %v1 2800; CHECK-NEXT: vldeb %v2, %v2 2801; CHECK-NEXT: vfchdb %v1, %v2, %v1 2802; CHECK-NEXT: vmrhf %v2, %v29, %v29 2803; CHECK-NEXT: vldeb %v2, %v2 2804; CHECK-NEXT: vldeb %v3, %v3 2805; CHECK-NEXT: vfchdb %v2, %v3, %v2 2806; CHECK-NEXT: vpkg %v1, %v2, %v1 2807; CHECK-NEXT: vl %v2, 176(%r15) 2808; CHECK-NEXT: vpkf %v0, %v1, %v0 2809; CHECK-NEXT: vl %v1, 208(%r15) 2810; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 2811; CHECK-NEXT: br %r14 2812 %cmp = fcmp ogt <16 x float> %val1, %val2 2813 %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4 2814 ret <16 x i16> %sel 2815} 2816 2817define <16 x i32> @fun134(<16 x float> %val1, <16 x float> %val2, <16 x i32> %val3, <16 x i32> %val4) { 2818; CHECK-LABEL: fun134: 2819; CHECK: # BB#0: 2820; CHECK-NEXT: vmrlf %v0, %v25, %v25 2821; CHECK-NEXT: vmrlf %v1, %v24, %v24 2822; CHECK-NEXT: vldeb %v0, %v0 2823; CHECK-NEXT: vldeb %v1, %v1 2824; CHECK-NEXT: vfchdb %v0, %v1, %v0 2825; CHECK-NEXT: vmrhf %v1, %v25, %v25 2826; CHECK-NEXT: vmrhf %v2, %v24, %v24 2827; CHECK-NEXT: vldeb %v1, %v1 2828; CHECK-NEXT: vldeb %v2, %v2 2829; CHECK-NEXT: vfchdb %v1, %v2, %v1 2830; CHECK-NEXT: vl %v2, 160(%r15) 2831; CHECK-NEXT: vpkg %v0, %v1, %v0 2832; CHECK-NEXT: vl %v1, 224(%r15) 2833; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2834; CHECK-NEXT: vmrlf %v0, %v27, %v27 2835; CHECK-NEXT: vmrlf %v1, %v26, %v26 2836; CHECK-NEXT: vmrhf %v2, %v26, %v26 2837; CHECK-NEXT: vldeb %v0, %v0 2838; CHECK-NEXT: vldeb %v1, %v1 2839; CHECK-NEXT: vfchdb %v0, %v1, %v0 2840; CHECK-NEXT: vmrhf %v1, %v27, %v27 2841; CHECK-NEXT: vldeb %v1, %v1 2842; CHECK-NEXT: vldeb %v2, %v2 2843; CHECK-NEXT: vfchdb %v1, %v2, %v1 2844; CHECK-NEXT: vl %v2, 176(%r15) 2845; CHECK-NEXT: vpkg %v0, %v1, %v0 2846; CHECK-NEXT: vl %v1, 240(%r15) 2847; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 2848; CHECK-NEXT: vmrlf %v0, %v29, %v29 2849; CHECK-NEXT: vmrlf %v1, %v28, %v28 2850; CHECK-NEXT: vmrhf %v2, %v28, %v28 2851; CHECK-NEXT: vldeb %v0, %v0 2852; CHECK-NEXT: vldeb %v1, %v1 2853; CHECK-NEXT: vfchdb %v0, %v1, %v0 2854; CHECK-NEXT: vmrhf %v1, %v29, %v29 2855; CHECK-NEXT: vldeb %v1, %v1 2856; CHECK-NEXT: vldeb %v2, %v2 2857; CHECK-NEXT: vfchdb %v1, %v2, %v1 2858; CHECK-NEXT: vl %v2, 192(%r15) 2859; CHECK-NEXT: vpkg %v0, %v1, %v0 2860; CHECK-NEXT: vl %v1, 256(%r15) 2861; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 2862; CHECK-NEXT: vmrlf %v0, %v31, %v31 2863; CHECK-NEXT: vmrlf %v1, %v30, %v30 2864; CHECK-NEXT: vmrhf %v2, %v30, %v30 2865; CHECK-NEXT: vldeb %v0, %v0 2866; CHECK-NEXT: vldeb %v1, %v1 2867; CHECK-NEXT: vfchdb %v0, %v1, %v0 2868; CHECK-NEXT: vmrhf %v1, %v31, %v31 2869; CHECK-NEXT: vldeb %v1, %v1 2870; CHECK-NEXT: vldeb %v2, %v2 2871; CHECK-NEXT: vfchdb %v1, %v2, %v1 2872; CHECK-NEXT: vl %v2, 208(%r15) 2873; CHECK-NEXT: vpkg %v0, %v1, %v0 2874; CHECK-NEXT: vl %v1, 272(%r15) 2875; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 2876; CHECK-NEXT: br %r14 2877 %cmp = fcmp ogt <16 x float> %val1, %val2 2878 %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4 2879 ret <16 x i32> %sel 2880} 2881 2882define <16 x i64> @fun135(<16 x float> %val1, <16 x float> %val2, <16 x i64> %val3, <16 x i64> %val4) { 2883; CHECK-LABEL: fun135: 2884; CHECK: # BB#0: 2885; CHECK-NEXT: vmrlf %v0, %v25, %v25 2886; CHECK-NEXT: vmrlf %v1, %v24, %v24 2887; CHECK-NEXT: vldeb %v0, %v0 2888; CHECK-NEXT: vldeb %v1, %v1 2889; CHECK-NEXT: vfchdb %v0, %v1, %v0 2890; CHECK-NEXT: vmrhf %v1, %v25, %v25 2891; CHECK-NEXT: vmrhf %v2, %v24, %v24 2892; CHECK-NEXT: vldeb %v1, %v1 2893; CHECK-NEXT: vl %v3, 160(%r15) 2894; CHECK-NEXT: vldeb %v2, %v2 2895; CHECK-NEXT: vl %v4, 192(%r15) 2896; CHECK-NEXT: vl %v6, 224(%r15) 2897; CHECK-NEXT: vl %v7, 256(%r15) 2898; CHECK-NEXT: vfchdb %v1, %v2, %v1 2899; CHECK-NEXT: vl %v2, 288(%r15) 2900; CHECK-NEXT: vpkg %v1, %v1, %v0 2901; CHECK-NEXT: vuphf %v0, %v1 2902; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 2903; CHECK-NEXT: vmrlf %v0, %v27, %v27 2904; CHECK-NEXT: vmrlf %v2, %v26, %v26 2905; CHECK-NEXT: vmrhf %v3, %v26, %v26 2906; CHECK-NEXT: vmrhf %v5, %v28, %v28 2907; CHECK-NEXT: vmrlg %v1, %v1, %v1 2908; CHECK-NEXT: vuphf %v1, %v1 2909; CHECK-NEXT: vldeb %v0, %v0 2910; CHECK-NEXT: vldeb %v2, %v2 2911; CHECK-NEXT: vfchdb %v0, %v2, %v0 2912; CHECK-NEXT: vmrhf %v2, %v27, %v27 2913; CHECK-NEXT: vldeb %v2, %v2 2914; CHECK-NEXT: vldeb %v3, %v3 2915; CHECK-NEXT: vfchdb %v2, %v3, %v2 2916; CHECK-NEXT: vl %v3, 320(%r15) 2917; CHECK-NEXT: vpkg %v2, %v2, %v0 2918; CHECK-NEXT: vuphf %v0, %v2 2919; CHECK-NEXT: vsel %v0, %v4, %v3, %v0 2920; CHECK-NEXT: vmrlf %v3, %v29, %v29 2921; CHECK-NEXT: vmrlf %v4, %v28, %v28 2922; CHECK-NEXT: vlr %v28, %v0 2923; CHECK-NEXT: vldeb %v3, %v3 2924; CHECK-NEXT: vldeb %v4, %v4 2925; CHECK-NEXT: vfchdb %v3, %v4, %v3 2926; CHECK-NEXT: vmrhf %v4, %v29, %v29 2927; CHECK-NEXT: vldeb %v4, %v4 2928; CHECK-NEXT: vldeb %v5, %v5 2929; CHECK-NEXT: vfchdb %v4, %v5, %v4 2930; CHECK-NEXT: vl %v5, 352(%r15) 2931; CHECK-NEXT: vpkg %v3, %v4, %v3 2932; CHECK-NEXT: vuphf %v4, %v3 2933; CHECK-NEXT: vsel %v25, %v6, %v5, %v4 2934; CHECK-NEXT: vmrlf %v4, %v31, %v31 2935; CHECK-NEXT: vmrlf %v5, %v30, %v30 2936; CHECK-NEXT: vmrhf %v6, %v30, %v30 2937; CHECK-NEXT: vldeb %v4, %v4 2938; CHECK-NEXT: vldeb %v5, %v5 2939; CHECK-NEXT: vfchdb %v4, %v5, %v4 2940; CHECK-NEXT: vmrhf %v5, %v31, %v31 2941; CHECK-NEXT: vldeb %v5, %v5 2942; CHECK-NEXT: vldeb %v6, %v6 2943; CHECK-NEXT: vfchdb %v5, %v6, %v5 2944; CHECK-NEXT: vl %v6, 384(%r15) 2945; CHECK-NEXT: vpkg %v4, %v5, %v4 2946; CHECK-NEXT: vuphf %v5, %v4 2947; CHECK-NEXT: vsel %v29, %v7, %v6, %v5 2948; CHECK-NEXT: vl %v5, 304(%r15) 2949; CHECK-NEXT: vl %v6, 176(%r15) 2950; CHECK-NEXT: vsel %v26, %v6, %v5, %v1 2951; CHECK-NEXT: vl %v5, 208(%r15) 2952; CHECK-NEXT: vmrlg %v1, %v2, %v2 2953; CHECK-NEXT: vl %v2, 336(%r15) 2954; CHECK-NEXT: vuphf %v1, %v1 2955; CHECK-NEXT: vsel %v30, %v5, %v2, %v1 2956; CHECK-NEXT: vl %v2, 368(%r15) 2957; CHECK-NEXT: vmrlg %v1, %v3, %v3 2958; CHECK-NEXT: vl %v3, 240(%r15) 2959; CHECK-NEXT: vuphf %v1, %v1 2960; CHECK-NEXT: vsel %v27, %v3, %v2, %v1 2961; CHECK-NEXT: vl %v2, 400(%r15) 2962; CHECK-NEXT: vl %v3, 272(%r15) 2963; CHECK-NEXT: vmrlg %v1, %v4, %v4 2964; CHECK-NEXT: vuphf %v1, %v1 2965; CHECK-NEXT: vsel %v31, %v3, %v2, %v1 2966; CHECK-NEXT: br %r14 2967 %cmp = fcmp ogt <16 x float> %val1, %val2 2968 %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4 2969 ret <16 x i64> %sel 2970} 2971 2972define <16 x float> @fun136(<16 x float> %val1, <16 x float> %val2, <16 x float> %val3, <16 x float> %val4) { 2973; CHECK-LABEL: fun136: 2974; CHECK: # BB#0: 2975; CHECK-NEXT: vmrlf %v0, %v25, %v25 2976; CHECK-NEXT: vmrlf %v1, %v24, %v24 2977; CHECK-NEXT: vldeb %v0, %v0 2978; CHECK-NEXT: vldeb %v1, %v1 2979; CHECK-NEXT: vfchdb %v0, %v1, %v0 2980; CHECK-NEXT: vmrhf %v1, %v25, %v25 2981; CHECK-NEXT: vmrhf %v2, %v24, %v24 2982; CHECK-NEXT: vldeb %v1, %v1 2983; CHECK-NEXT: vldeb %v2, %v2 2984; CHECK-NEXT: vfchdb %v1, %v2, %v1 2985; CHECK-NEXT: vl %v2, 160(%r15) 2986; CHECK-NEXT: vpkg %v0, %v1, %v0 2987; CHECK-NEXT: vl %v1, 224(%r15) 2988; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 2989; CHECK-NEXT: vmrlf %v0, %v27, %v27 2990; CHECK-NEXT: vmrlf %v1, %v26, %v26 2991; CHECK-NEXT: vmrhf %v2, %v26, %v26 2992; CHECK-NEXT: vldeb %v0, %v0 2993; CHECK-NEXT: vldeb %v1, %v1 2994; CHECK-NEXT: vfchdb %v0, %v1, %v0 2995; CHECK-NEXT: vmrhf %v1, %v27, %v27 2996; CHECK-NEXT: vldeb %v1, %v1 2997; CHECK-NEXT: vldeb %v2, %v2 2998; CHECK-NEXT: vfchdb %v1, %v2, %v1 2999; CHECK-NEXT: vl %v2, 176(%r15) 3000; CHECK-NEXT: vpkg %v0, %v1, %v0 3001; CHECK-NEXT: vl %v1, 240(%r15) 3002; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 3003; CHECK-NEXT: vmrlf %v0, %v29, %v29 3004; CHECK-NEXT: vmrlf %v1, %v28, %v28 3005; CHECK-NEXT: vmrhf %v2, %v28, %v28 3006; CHECK-NEXT: vldeb %v0, %v0 3007; CHECK-NEXT: vldeb %v1, %v1 3008; CHECK-NEXT: vfchdb %v0, %v1, %v0 3009; CHECK-NEXT: vmrhf %v1, %v29, %v29 3010; CHECK-NEXT: vldeb %v1, %v1 3011; CHECK-NEXT: vldeb %v2, %v2 3012; CHECK-NEXT: vfchdb %v1, %v2, %v1 3013; CHECK-NEXT: vl %v2, 192(%r15) 3014; CHECK-NEXT: vpkg %v0, %v1, %v0 3015; CHECK-NEXT: vl %v1, 256(%r15) 3016; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 3017; CHECK-NEXT: vmrlf %v0, %v31, %v31 3018; CHECK-NEXT: vmrlf %v1, %v30, %v30 3019; CHECK-NEXT: vmrhf %v2, %v30, %v30 3020; CHECK-NEXT: vldeb %v0, %v0 3021; CHECK-NEXT: vldeb %v1, %v1 3022; CHECK-NEXT: vfchdb %v0, %v1, %v0 3023; CHECK-NEXT: vmrhf %v1, %v31, %v31 3024; CHECK-NEXT: vldeb %v1, %v1 3025; CHECK-NEXT: vldeb %v2, %v2 3026; CHECK-NEXT: vfchdb %v1, %v2, %v1 3027; CHECK-NEXT: vl %v2, 208(%r15) 3028; CHECK-NEXT: vpkg %v0, %v1, %v0 3029; CHECK-NEXT: vl %v1, 272(%r15) 3030; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3031; CHECK-NEXT: br %r14 3032 %cmp = fcmp ogt <16 x float> %val1, %val2 3033 %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4 3034 ret <16 x float> %sel 3035} 3036 3037define <16 x double> @fun137(<16 x float> %val1, <16 x float> %val2, <16 x double> %val3, <16 x double> %val4) { 3038; CHECK-LABEL: fun137: 3039; CHECK: # BB#0: 3040; CHECK-NEXT: vmrlf %v0, %v25, %v25 3041; CHECK-NEXT: vmrlf %v1, %v24, %v24 3042; CHECK-NEXT: vldeb %v0, %v0 3043; CHECK-NEXT: vldeb %v1, %v1 3044; CHECK-NEXT: vfchdb %v0, %v1, %v0 3045; CHECK-NEXT: vmrhf %v1, %v25, %v25 3046; CHECK-NEXT: vmrhf %v2, %v24, %v24 3047; CHECK-NEXT: vldeb %v1, %v1 3048; CHECK-NEXT: vl %v3, 160(%r15) 3049; CHECK-NEXT: vldeb %v2, %v2 3050; CHECK-NEXT: vl %v4, 192(%r15) 3051; CHECK-NEXT: vl %v6, 224(%r15) 3052; CHECK-NEXT: vl %v7, 256(%r15) 3053; CHECK-NEXT: vfchdb %v1, %v2, %v1 3054; CHECK-NEXT: vl %v2, 288(%r15) 3055; CHECK-NEXT: vpkg %v1, %v1, %v0 3056; CHECK-NEXT: vuphf %v0, %v1 3057; CHECK-NEXT: vsel %v24, %v3, %v2, %v0 3058; CHECK-NEXT: vmrlf %v0, %v27, %v27 3059; CHECK-NEXT: vmrlf %v2, %v26, %v26 3060; CHECK-NEXT: vmrhf %v3, %v26, %v26 3061; CHECK-NEXT: vmrhf %v5, %v28, %v28 3062; CHECK-NEXT: vmrlg %v1, %v1, %v1 3063; CHECK-NEXT: vuphf %v1, %v1 3064; CHECK-NEXT: vldeb %v0, %v0 3065; CHECK-NEXT: vldeb %v2, %v2 3066; CHECK-NEXT: vfchdb %v0, %v2, %v0 3067; CHECK-NEXT: vmrhf %v2, %v27, %v27 3068; CHECK-NEXT: vldeb %v2, %v2 3069; CHECK-NEXT: vldeb %v3, %v3 3070; CHECK-NEXT: vfchdb %v2, %v3, %v2 3071; CHECK-NEXT: vl %v3, 320(%r15) 3072; CHECK-NEXT: vpkg %v2, %v2, %v0 3073; CHECK-NEXT: vuphf %v0, %v2 3074; CHECK-NEXT: vsel %v0, %v4, %v3, %v0 3075; CHECK-NEXT: vmrlf %v3, %v29, %v29 3076; CHECK-NEXT: vmrlf %v4, %v28, %v28 3077; CHECK-NEXT: vlr %v28, %v0 3078; CHECK-NEXT: vldeb %v3, %v3 3079; CHECK-NEXT: vldeb %v4, %v4 3080; CHECK-NEXT: vfchdb %v3, %v4, %v3 3081; CHECK-NEXT: vmrhf %v4, %v29, %v29 3082; CHECK-NEXT: vldeb %v4, %v4 3083; CHECK-NEXT: vldeb %v5, %v5 3084; CHECK-NEXT: vfchdb %v4, %v5, %v4 3085; CHECK-NEXT: vl %v5, 352(%r15) 3086; CHECK-NEXT: vpkg %v3, %v4, %v3 3087; CHECK-NEXT: vuphf %v4, %v3 3088; CHECK-NEXT: vsel %v25, %v6, %v5, %v4 3089; CHECK-NEXT: vmrlf %v4, %v31, %v31 3090; CHECK-NEXT: vmrlf %v5, %v30, %v30 3091; CHECK-NEXT: vmrhf %v6, %v30, %v30 3092; CHECK-NEXT: vldeb %v4, %v4 3093; CHECK-NEXT: vldeb %v5, %v5 3094; CHECK-NEXT: vfchdb %v4, %v5, %v4 3095; CHECK-NEXT: vmrhf %v5, %v31, %v31 3096; CHECK-NEXT: vldeb %v5, %v5 3097; CHECK-NEXT: vldeb %v6, %v6 3098; CHECK-NEXT: vfchdb %v5, %v6, %v5 3099; CHECK-NEXT: vl %v6, 384(%r15) 3100; CHECK-NEXT: vpkg %v4, %v5, %v4 3101; CHECK-NEXT: vuphf %v5, %v4 3102; CHECK-NEXT: vsel %v29, %v7, %v6, %v5 3103; CHECK-NEXT: vl %v5, 304(%r15) 3104; CHECK-NEXT: vl %v6, 176(%r15) 3105; CHECK-NEXT: vsel %v26, %v6, %v5, %v1 3106; CHECK-NEXT: vl %v5, 208(%r15) 3107; CHECK-NEXT: vmrlg %v1, %v2, %v2 3108; CHECK-NEXT: vl %v2, 336(%r15) 3109; CHECK-NEXT: vuphf %v1, %v1 3110; CHECK-NEXT: vsel %v30, %v5, %v2, %v1 3111; CHECK-NEXT: vl %v2, 368(%r15) 3112; CHECK-NEXT: vmrlg %v1, %v3, %v3 3113; CHECK-NEXT: vl %v3, 240(%r15) 3114; CHECK-NEXT: vuphf %v1, %v1 3115; CHECK-NEXT: vsel %v27, %v3, %v2, %v1 3116; CHECK-NEXT: vl %v2, 400(%r15) 3117; CHECK-NEXT: vl %v3, 272(%r15) 3118; CHECK-NEXT: vmrlg %v1, %v4, %v4 3119; CHECK-NEXT: vuphf %v1, %v1 3120; CHECK-NEXT: vsel %v31, %v3, %v2, %v1 3121; CHECK-NEXT: br %r14 3122 %cmp = fcmp ogt <16 x float> %val1, %val2 3123 %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4 3124 ret <16 x double> %sel 3125} 3126 3127define <16 x i8> @fun138(<16 x double> %val1, <16 x double> %val2, <16 x i8> %val3, <16 x i8> %val4) { 3128; CHECK-LABEL: fun138: 3129; CHECK: # BB#0: 3130; CHECK-NEXT: vl %v0, 272(%r15) 3131; CHECK-NEXT: vl %v1, 256(%r15) 3132; CHECK-NEXT: vfchdb %v0, %v31, %v0 3133; CHECK-NEXT: vfchdb %v1, %v29, %v1 3134; CHECK-NEXT: vpkg %v0, %v1, %v0 3135; CHECK-NEXT: vl %v1, 240(%r15) 3136; CHECK-NEXT: vl %v2, 224(%r15) 3137; CHECK-NEXT: vfchdb %v1, %v27, %v1 3138; CHECK-NEXT: vfchdb %v2, %v25, %v2 3139; CHECK-NEXT: vpkg %v1, %v2, %v1 3140; CHECK-NEXT: vpkf %v0, %v1, %v0 3141; CHECK-NEXT: vl %v1, 208(%r15) 3142; CHECK-NEXT: vl %v2, 192(%r15) 3143; CHECK-NEXT: vfchdb %v1, %v30, %v1 3144; CHECK-NEXT: vfchdb %v2, %v28, %v2 3145; CHECK-NEXT: vpkg %v1, %v2, %v1 3146; CHECK-NEXT: vl %v2, 176(%r15) 3147; CHECK-NEXT: vl %v3, 160(%r15) 3148; CHECK-NEXT: vfchdb %v2, %v26, %v2 3149; CHECK-NEXT: vfchdb %v3, %v24, %v3 3150; CHECK-NEXT: vpkg %v2, %v3, %v2 3151; CHECK-NEXT: vpkf %v1, %v2, %v1 3152; CHECK-NEXT: vpkh %v0, %v1, %v0 3153; CHECK-NEXT: vl %v1, 304(%r15) 3154; CHECK-NEXT: vl %v2, 288(%r15) 3155; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 3156; CHECK-NEXT: br %r14 3157 %cmp = fcmp ogt <16 x double> %val1, %val2 3158 %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4 3159 ret <16 x i8> %sel 3160} 3161 3162define <16 x i16> @fun139(<16 x double> %val1, <16 x double> %val2, <16 x i16> %val3, <16 x i16> %val4) { 3163; CHECK-LABEL: fun139: 3164; CHECK: # BB#0: 3165; CHECK-NEXT: vl %v0, 208(%r15) 3166; CHECK-NEXT: vl %v1, 192(%r15) 3167; CHECK-NEXT: vfchdb %v0, %v30, %v0 3168; CHECK-NEXT: vfchdb %v1, %v28, %v1 3169; CHECK-NEXT: vpkg %v0, %v1, %v0 3170; CHECK-NEXT: vl %v1, 176(%r15) 3171; CHECK-NEXT: vl %v2, 160(%r15) 3172; CHECK-NEXT: vfchdb %v1, %v26, %v1 3173; CHECK-NEXT: vfchdb %v2, %v24, %v2 3174; CHECK-NEXT: vpkg %v1, %v2, %v1 3175; CHECK-NEXT: vpkf %v0, %v1, %v0 3176; CHECK-NEXT: vl %v1, 320(%r15) 3177; CHECK-NEXT: vl %v2, 288(%r15) 3178; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 3179; CHECK-NEXT: vl %v0, 272(%r15) 3180; CHECK-NEXT: vl %v1, 256(%r15) 3181; CHECK-NEXT: vfchdb %v0, %v31, %v0 3182; CHECK-NEXT: vfchdb %v1, %v29, %v1 3183; CHECK-NEXT: vpkg %v0, %v1, %v0 3184; CHECK-NEXT: vl %v1, 240(%r15) 3185; CHECK-NEXT: vl %v2, 224(%r15) 3186; CHECK-NEXT: vfchdb %v1, %v27, %v1 3187; CHECK-NEXT: vfchdb %v2, %v25, %v2 3188; CHECK-NEXT: vpkg %v1, %v2, %v1 3189; CHECK-NEXT: vpkf %v0, %v1, %v0 3190; CHECK-NEXT: vl %v1, 336(%r15) 3191; CHECK-NEXT: vl %v2, 304(%r15) 3192; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 3193; CHECK-NEXT: br %r14 3194 %cmp = fcmp ogt <16 x double> %val1, %val2 3195 %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4 3196 ret <16 x i16> %sel 3197} 3198 3199define <16 x i32> @fun140(<16 x double> %val1, <16 x double> %val2, <16 x i32> %val3, <16 x i32> %val4) { 3200; CHECK-LABEL: fun140: 3201; CHECK: # BB#0: 3202; CHECK-NEXT: vl %v0, 176(%r15) 3203; CHECK-NEXT: vl %v1, 160(%r15) 3204; CHECK-NEXT: vfchdb %v0, %v26, %v0 3205; CHECK-NEXT: vfchdb %v1, %v24, %v1 3206; CHECK-NEXT: vpkg %v0, %v1, %v0 3207; CHECK-NEXT: vl %v1, 352(%r15) 3208; CHECK-NEXT: vl %v2, 288(%r15) 3209; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 3210; CHECK-NEXT: vl %v0, 208(%r15) 3211; CHECK-NEXT: vl %v1, 192(%r15) 3212; CHECK-NEXT: vfchdb %v0, %v30, %v0 3213; CHECK-NEXT: vfchdb %v1, %v28, %v1 3214; CHECK-NEXT: vpkg %v0, %v1, %v0 3215; CHECK-NEXT: vl %v1, 368(%r15) 3216; CHECK-NEXT: vl %v2, 304(%r15) 3217; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 3218; CHECK-NEXT: vl %v0, 240(%r15) 3219; CHECK-NEXT: vl %v1, 224(%r15) 3220; CHECK-NEXT: vfchdb %v0, %v27, %v0 3221; CHECK-NEXT: vfchdb %v1, %v25, %v1 3222; CHECK-NEXT: vpkg %v0, %v1, %v0 3223; CHECK-NEXT: vl %v1, 384(%r15) 3224; CHECK-NEXT: vl %v2, 320(%r15) 3225; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 3226; CHECK-NEXT: vl %v0, 272(%r15) 3227; CHECK-NEXT: vl %v1, 256(%r15) 3228; CHECK-NEXT: vfchdb %v0, %v31, %v0 3229; CHECK-NEXT: vfchdb %v1, %v29, %v1 3230; CHECK-NEXT: vpkg %v0, %v1, %v0 3231; CHECK-NEXT: vl %v1, 400(%r15) 3232; CHECK-NEXT: vl %v2, 336(%r15) 3233; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3234; CHECK-NEXT: br %r14 3235 %cmp = fcmp ogt <16 x double> %val1, %val2 3236 %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4 3237 ret <16 x i32> %sel 3238} 3239 3240define <16 x i64> @fun141(<16 x double> %val1, <16 x double> %val2, <16 x i64> %val3, <16 x i64> %val4) { 3241; CHECK-LABEL: fun141: 3242; CHECK: # BB#0: 3243; CHECK-NEXT: vl %v0, 160(%r15) 3244; CHECK-NEXT: vl %v1, 416(%r15) 3245; CHECK-NEXT: vl %v2, 288(%r15) 3246; CHECK-NEXT: vfchdb %v0, %v24, %v0 3247; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 3248; CHECK-NEXT: vl %v0, 176(%r15) 3249; CHECK-NEXT: vl %v1, 432(%r15) 3250; CHECK-NEXT: vl %v2, 304(%r15) 3251; CHECK-NEXT: vfchdb %v0, %v26, %v0 3252; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 3253; CHECK-NEXT: vl %v0, 192(%r15) 3254; CHECK-NEXT: vl %v1, 448(%r15) 3255; CHECK-NEXT: vl %v2, 320(%r15) 3256; CHECK-NEXT: vfchdb %v0, %v28, %v0 3257; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 3258; CHECK-NEXT: vl %v0, 208(%r15) 3259; CHECK-NEXT: vl %v1, 464(%r15) 3260; CHECK-NEXT: vl %v2, 336(%r15) 3261; CHECK-NEXT: vfchdb %v0, %v30, %v0 3262; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3263; CHECK-NEXT: vl %v0, 224(%r15) 3264; CHECK-NEXT: vl %v1, 480(%r15) 3265; CHECK-NEXT: vl %v2, 352(%r15) 3266; CHECK-NEXT: vfchdb %v0, %v25, %v0 3267; CHECK-NEXT: vsel %v25, %v2, %v1, %v0 3268; CHECK-NEXT: vl %v0, 240(%r15) 3269; CHECK-NEXT: vl %v1, 496(%r15) 3270; CHECK-NEXT: vl %v2, 368(%r15) 3271; CHECK-NEXT: vfchdb %v0, %v27, %v0 3272; CHECK-NEXT: vsel %v27, %v2, %v1, %v0 3273; CHECK-NEXT: vl %v0, 256(%r15) 3274; CHECK-NEXT: vfchdb %v0, %v29, %v0 3275; CHECK-NEXT: vl %v1, 512(%r15) 3276; CHECK-NEXT: vl %v2, 384(%r15) 3277; CHECK-NEXT: vsel %v29, %v2, %v1, %v0 3278; CHECK-NEXT: vl %v0, 272(%r15) 3279; CHECK-NEXT: vfchdb %v0, %v31, %v0 3280; CHECK-NEXT: vl %v1, 528(%r15) 3281; CHECK-NEXT: vl %v2, 400(%r15) 3282; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 3283; CHECK-NEXT: br %r14 3284 %cmp = fcmp ogt <16 x double> %val1, %val2 3285 %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4 3286 ret <16 x i64> %sel 3287} 3288 3289define <16 x float> @fun142(<16 x double> %val1, <16 x double> %val2, <16 x float> %val3, <16 x float> %val4) { 3290; CHECK-LABEL: fun142: 3291; CHECK: # BB#0: 3292; CHECK-NEXT: vl %v0, 176(%r15) 3293; CHECK-NEXT: vl %v1, 160(%r15) 3294; CHECK-NEXT: vfchdb %v0, %v26, %v0 3295; CHECK-NEXT: vfchdb %v1, %v24, %v1 3296; CHECK-NEXT: vpkg %v0, %v1, %v0 3297; CHECK-NEXT: vl %v1, 352(%r15) 3298; CHECK-NEXT: vl %v2, 288(%r15) 3299; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 3300; CHECK-NEXT: vl %v0, 208(%r15) 3301; CHECK-NEXT: vl %v1, 192(%r15) 3302; CHECK-NEXT: vfchdb %v0, %v30, %v0 3303; CHECK-NEXT: vfchdb %v1, %v28, %v1 3304; CHECK-NEXT: vpkg %v0, %v1, %v0 3305; CHECK-NEXT: vl %v1, 368(%r15) 3306; CHECK-NEXT: vl %v2, 304(%r15) 3307; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 3308; CHECK-NEXT: vl %v0, 240(%r15) 3309; CHECK-NEXT: vl %v1, 224(%r15) 3310; CHECK-NEXT: vfchdb %v0, %v27, %v0 3311; CHECK-NEXT: vfchdb %v1, %v25, %v1 3312; CHECK-NEXT: vpkg %v0, %v1, %v0 3313; CHECK-NEXT: vl %v1, 384(%r15) 3314; CHECK-NEXT: vl %v2, 320(%r15) 3315; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 3316; CHECK-NEXT: vl %v0, 272(%r15) 3317; CHECK-NEXT: vl %v1, 256(%r15) 3318; CHECK-NEXT: vfchdb %v0, %v31, %v0 3319; CHECK-NEXT: vfchdb %v1, %v29, %v1 3320; CHECK-NEXT: vpkg %v0, %v1, %v0 3321; CHECK-NEXT: vl %v1, 400(%r15) 3322; CHECK-NEXT: vl %v2, 336(%r15) 3323; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3324; CHECK-NEXT: br %r14 3325 %cmp = fcmp ogt <16 x double> %val1, %val2 3326 %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4 3327 ret <16 x float> %sel 3328} 3329 3330define <16 x double> @fun143(<16 x double> %val1, <16 x double> %val2, <16 x double> %val3, <16 x double> %val4) { 3331; CHECK-LABEL: fun143: 3332; CHECK: # BB#0: 3333; CHECK-NEXT: vl %v0, 160(%r15) 3334; CHECK-NEXT: vl %v1, 416(%r15) 3335; CHECK-NEXT: vl %v2, 288(%r15) 3336; CHECK-NEXT: vfchdb %v0, %v24, %v0 3337; CHECK-NEXT: vsel %v24, %v2, %v1, %v0 3338; CHECK-NEXT: vl %v0, 176(%r15) 3339; CHECK-NEXT: vl %v1, 432(%r15) 3340; CHECK-NEXT: vl %v2, 304(%r15) 3341; CHECK-NEXT: vfchdb %v0, %v26, %v0 3342; CHECK-NEXT: vsel %v26, %v2, %v1, %v0 3343; CHECK-NEXT: vl %v0, 192(%r15) 3344; CHECK-NEXT: vl %v1, 448(%r15) 3345; CHECK-NEXT: vl %v2, 320(%r15) 3346; CHECK-NEXT: vfchdb %v0, %v28, %v0 3347; CHECK-NEXT: vsel %v28, %v2, %v1, %v0 3348; CHECK-NEXT: vl %v0, 208(%r15) 3349; CHECK-NEXT: vl %v1, 464(%r15) 3350; CHECK-NEXT: vl %v2, 336(%r15) 3351; CHECK-NEXT: vfchdb %v0, %v30, %v0 3352; CHECK-NEXT: vsel %v30, %v2, %v1, %v0 3353; CHECK-NEXT: vl %v0, 224(%r15) 3354; CHECK-NEXT: vl %v1, 480(%r15) 3355; CHECK-NEXT: vl %v2, 352(%r15) 3356; CHECK-NEXT: vfchdb %v0, %v25, %v0 3357; CHECK-NEXT: vsel %v25, %v2, %v1, %v0 3358; CHECK-NEXT: vl %v0, 240(%r15) 3359; CHECK-NEXT: vl %v1, 496(%r15) 3360; CHECK-NEXT: vl %v2, 368(%r15) 3361; CHECK-NEXT: vfchdb %v0, %v27, %v0 3362; CHECK-NEXT: vsel %v27, %v2, %v1, %v0 3363; CHECK-NEXT: vl %v0, 256(%r15) 3364; CHECK-NEXT: vfchdb %v0, %v29, %v0 3365; CHECK-NEXT: vl %v1, 512(%r15) 3366; CHECK-NEXT: vl %v2, 384(%r15) 3367; CHECK-NEXT: vsel %v29, %v2, %v1, %v0 3368; CHECK-NEXT: vl %v0, 272(%r15) 3369; CHECK-NEXT: vfchdb %v0, %v31, %v0 3370; CHECK-NEXT: vl %v1, 528(%r15) 3371; CHECK-NEXT: vl %v2, 400(%r15) 3372; CHECK-NEXT: vsel %v31, %v2, %v1, %v0 3373; CHECK-NEXT: br %r14 3374 %cmp = fcmp ogt <16 x double> %val1, %val2 3375 %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4 3376 ret <16 x double> %sel 3377} 3378 3379