1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr5 < %s | FileCheck %s --check-prefixes=ANYPWR,PWR5 3; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr6 < %s | FileCheck %s --check-prefixes=ANYPWR,PWR6 4; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 < %s | FileCheck %s --check-prefixes=ANYPWR,PWR7 5; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s --check-prefixes=ANYPWR,PWR8 6; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr9 < %s | FileCheck %s --check-prefixes=ANYPWR,PWR9 7 8 9define <16 x i8> @ugt_1_v16i8(<16 x i8> %0) { 10; PWR5-LABEL: ugt_1_v16i8: 11; PWR5: # %bb.0: 12; PWR5-NEXT: vspltisb 3, -1 13; PWR5-NEXT: vaddubm 3, 2, 3 14; PWR5-NEXT: vand 2, 2, 3 15; PWR5-NEXT: vxor 3, 3, 3 16; PWR5-NEXT: vcmpequb 2, 2, 3 17; PWR5-NEXT: vnot 2, 2 18; PWR5-NEXT: blr 19; 20; PWR6-LABEL: ugt_1_v16i8: 21; PWR6: # %bb.0: 22; PWR6-NEXT: vspltisb 3, -1 23; PWR6-NEXT: vaddubm 3, 2, 3 24; PWR6-NEXT: vand 2, 2, 3 25; PWR6-NEXT: vxor 3, 3, 3 26; PWR6-NEXT: vcmpequb 2, 2, 3 27; PWR6-NEXT: vnot 2, 2 28; PWR6-NEXT: blr 29; 30; PWR7-LABEL: ugt_1_v16i8: 31; PWR7: # %bb.0: 32; PWR7-NEXT: vspltisb 3, -1 33; PWR7-NEXT: vaddubm 3, 2, 3 34; PWR7-NEXT: xxland 34, 34, 35 35; PWR7-NEXT: xxlxor 35, 35, 35 36; PWR7-NEXT: vcmpequb 2, 2, 3 37; PWR7-NEXT: xxlnor 34, 34, 34 38; PWR7-NEXT: blr 39; 40; PWR8-LABEL: ugt_1_v16i8: 41; PWR8: # %bb.0: 42; PWR8-NEXT: vspltisb 3, 1 43; PWR8-NEXT: vpopcntb 2, 2 44; PWR8-NEXT: vcmpgtub 2, 2, 3 45; PWR8-NEXT: blr 46; 47; PWR9-LABEL: ugt_1_v16i8: 48; PWR9: # %bb.0: 49; PWR9-NEXT: xxspltib 35, 1 50; PWR9-NEXT: vpopcntb 2, 2 51; PWR9-NEXT: vcmpgtub 2, 2, 3 52; PWR9-NEXT: blr 53 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 54 %3 = icmp ugt <16 x i8> %2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 55 %4 = sext <16 x i1> %3 to <16 x i8> 56 ret <16 x i8> %4 57} 58 59define <16 x i8> @ult_2_v16i8(<16 x i8> %0) { 60; PWR5-LABEL: ult_2_v16i8: 61; PWR5: # %bb.0: 62; PWR5-NEXT: vspltisb 3, -1 63; PWR5-NEXT: vaddubm 3, 2, 3 64; PWR5-NEXT: vand 2, 2, 3 65; PWR5-NEXT: vxor 3, 3, 3 66; PWR5-NEXT: vcmpequb 2, 2, 3 67; PWR5-NEXT: blr 68; 69; PWR6-LABEL: ult_2_v16i8: 70; PWR6: # %bb.0: 71; PWR6-NEXT: vspltisb 3, -1 72; PWR6-NEXT: vaddubm 3, 2, 3 73; PWR6-NEXT: vand 2, 2, 3 74; PWR6-NEXT: vxor 3, 3, 3 75; PWR6-NEXT: vcmpequb 2, 2, 3 76; PWR6-NEXT: blr 77; 78; PWR7-LABEL: ult_2_v16i8: 79; PWR7: # %bb.0: 80; PWR7-NEXT: vspltisb 3, -1 81; PWR7-NEXT: vaddubm 3, 2, 3 82; PWR7-NEXT: xxland 34, 34, 35 83; PWR7-NEXT: xxlxor 35, 35, 35 84; PWR7-NEXT: vcmpequb 2, 2, 3 85; PWR7-NEXT: blr 86; 87; PWR8-LABEL: ult_2_v16i8: 88; PWR8: # %bb.0: 89; PWR8-NEXT: vspltisb 3, 2 90; PWR8-NEXT: vpopcntb 2, 2 91; PWR8-NEXT: vcmpgtub 2, 3, 2 92; PWR8-NEXT: blr 93; 94; PWR9-LABEL: ult_2_v16i8: 95; PWR9: # %bb.0: 96; PWR9-NEXT: xxspltib 35, 2 97; PWR9-NEXT: vpopcntb 2, 2 98; PWR9-NEXT: vcmpgtub 2, 3, 2 99; PWR9-NEXT: blr 100 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 101 %3 = icmp ult <16 x i8> %2, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2> 102 %4 = sext <16 x i1> %3 to <16 x i8> 103 ret <16 x i8> %4 104} 105 106define <16 x i8> @ugt_2_v16i8(<16 x i8> %0) { 107; PWR5-LABEL: ugt_2_v16i8: 108; PWR5: # %bb.0: 109; PWR5-NEXT: addis 3, 2, .LCPI2_0@toc@ha 110; PWR5-NEXT: vspltisb 3, 1 111; PWR5-NEXT: addi 3, 3, .LCPI2_0@toc@l 112; PWR5-NEXT: vsrb 3, 2, 3 113; PWR5-NEXT: lvx 4, 0, 3 114; PWR5-NEXT: addis 3, 2, .LCPI2_1@toc@ha 115; PWR5-NEXT: addi 3, 3, .LCPI2_1@toc@l 116; PWR5-NEXT: vspltisb 5, 2 117; PWR5-NEXT: vand 3, 3, 4 118; PWR5-NEXT: lvx 4, 0, 3 119; PWR5-NEXT: vsububm 2, 2, 3 120; PWR5-NEXT: vand 3, 2, 4 121; PWR5-NEXT: vsrb 2, 2, 5 122; PWR5-NEXT: vand 2, 2, 4 123; PWR5-NEXT: vspltisb 4, 4 124; PWR5-NEXT: vaddubm 2, 3, 2 125; PWR5-NEXT: vsrb 3, 2, 4 126; PWR5-NEXT: vspltisb 4, 15 127; PWR5-NEXT: vaddubm 2, 2, 3 128; PWR5-NEXT: vand 2, 2, 4 129; PWR5-NEXT: vcmpgtub 2, 2, 5 130; PWR5-NEXT: blr 131; 132; PWR6-LABEL: ugt_2_v16i8: 133; PWR6: # %bb.0: 134; PWR6-NEXT: addis 3, 2, .LCPI2_0@toc@ha 135; PWR6-NEXT: vspltisb 3, 1 136; PWR6-NEXT: addi 3, 3, .LCPI2_0@toc@l 137; PWR6-NEXT: vsrb 3, 2, 3 138; PWR6-NEXT: lvx 4, 0, 3 139; PWR6-NEXT: addis 3, 2, .LCPI2_1@toc@ha 140; PWR6-NEXT: addi 3, 3, .LCPI2_1@toc@l 141; PWR6-NEXT: vspltisb 5, 2 142; PWR6-NEXT: vand 3, 3, 4 143; PWR6-NEXT: lvx 4, 0, 3 144; PWR6-NEXT: vsububm 2, 2, 3 145; PWR6-NEXT: vand 3, 2, 4 146; PWR6-NEXT: vsrb 2, 2, 5 147; PWR6-NEXT: vand 2, 2, 4 148; PWR6-NEXT: vspltisb 4, 4 149; PWR6-NEXT: vaddubm 2, 3, 2 150; PWR6-NEXT: vsrb 3, 2, 4 151; PWR6-NEXT: vspltisb 4, 15 152; PWR6-NEXT: vaddubm 2, 2, 3 153; PWR6-NEXT: vand 2, 2, 4 154; PWR6-NEXT: vcmpgtub 2, 2, 5 155; PWR6-NEXT: blr 156; 157; PWR7-LABEL: ugt_2_v16i8: 158; PWR7: # %bb.0: 159; PWR7-NEXT: vspltisb 3, 1 160; PWR7-NEXT: addis 3, 2, .LCPI2_0@toc@ha 161; PWR7-NEXT: addi 3, 3, .LCPI2_0@toc@l 162; PWR7-NEXT: vspltisb 4, 2 163; PWR7-NEXT: lxvw4x 0, 0, 3 164; PWR7-NEXT: addis 3, 2, .LCPI2_1@toc@ha 165; PWR7-NEXT: vspltisb 5, 4 166; PWR7-NEXT: vsrb 3, 2, 3 167; PWR7-NEXT: addi 3, 3, .LCPI2_1@toc@l 168; PWR7-NEXT: xxland 35, 35, 0 169; PWR7-NEXT: lxvw4x 0, 0, 3 170; PWR7-NEXT: vsububm 2, 2, 3 171; PWR7-NEXT: vsrb 3, 2, 4 172; PWR7-NEXT: xxland 34, 34, 0 173; PWR7-NEXT: xxland 35, 35, 0 174; PWR7-NEXT: vaddubm 2, 2, 3 175; PWR7-NEXT: vsrb 3, 2, 5 176; PWR7-NEXT: vspltisb 5, 15 177; PWR7-NEXT: vaddubm 2, 2, 3 178; PWR7-NEXT: xxland 34, 34, 37 179; PWR7-NEXT: vcmpgtub 2, 2, 4 180; PWR7-NEXT: blr 181; 182; PWR8-LABEL: ugt_2_v16i8: 183; PWR8: # %bb.0: 184; PWR8-NEXT: vspltisb 3, 2 185; PWR8-NEXT: vpopcntb 2, 2 186; PWR8-NEXT: vcmpgtub 2, 2, 3 187; PWR8-NEXT: blr 188; 189; PWR9-LABEL: ugt_2_v16i8: 190; PWR9: # %bb.0: 191; PWR9-NEXT: xxspltib 35, 2 192; PWR9-NEXT: vpopcntb 2, 2 193; PWR9-NEXT: vcmpgtub 2, 2, 3 194; PWR9-NEXT: blr 195 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 196 %3 = icmp ugt <16 x i8> %2, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2> 197 %4 = sext <16 x i1> %3 to <16 x i8> 198 ret <16 x i8> %4 199} 200 201define <16 x i8> @ult_3_v16i8(<16 x i8> %0) { 202; PWR5-LABEL: ult_3_v16i8: 203; PWR5: # %bb.0: 204; PWR5-NEXT: addis 3, 2, .LCPI3_0@toc@ha 205; PWR5-NEXT: vspltisb 3, 1 206; PWR5-NEXT: addi 3, 3, .LCPI3_0@toc@l 207; PWR5-NEXT: vsrb 3, 2, 3 208; PWR5-NEXT: lvx 4, 0, 3 209; PWR5-NEXT: addis 3, 2, .LCPI3_1@toc@ha 210; PWR5-NEXT: addi 3, 3, .LCPI3_1@toc@l 211; PWR5-NEXT: vspltisb 5, 2 212; PWR5-NEXT: vand 3, 3, 4 213; PWR5-NEXT: lvx 4, 0, 3 214; PWR5-NEXT: vsububm 2, 2, 3 215; PWR5-NEXT: vand 3, 2, 4 216; PWR5-NEXT: vsrb 2, 2, 5 217; PWR5-NEXT: vand 2, 2, 4 218; PWR5-NEXT: vspltisb 4, 4 219; PWR5-NEXT: vaddubm 2, 3, 2 220; PWR5-NEXT: vsrb 3, 2, 4 221; PWR5-NEXT: vspltisb 4, 15 222; PWR5-NEXT: vaddubm 2, 2, 3 223; PWR5-NEXT: vspltisb 3, 3 224; PWR5-NEXT: vand 2, 2, 4 225; PWR5-NEXT: vcmpgtub 2, 3, 2 226; PWR5-NEXT: blr 227; 228; PWR6-LABEL: ult_3_v16i8: 229; PWR6: # %bb.0: 230; PWR6-NEXT: addis 3, 2, .LCPI3_0@toc@ha 231; PWR6-NEXT: vspltisb 3, 1 232; PWR6-NEXT: addi 3, 3, .LCPI3_0@toc@l 233; PWR6-NEXT: vsrb 3, 2, 3 234; PWR6-NEXT: lvx 4, 0, 3 235; PWR6-NEXT: addis 3, 2, .LCPI3_1@toc@ha 236; PWR6-NEXT: addi 3, 3, .LCPI3_1@toc@l 237; PWR6-NEXT: vspltisb 5, 2 238; PWR6-NEXT: vand 3, 3, 4 239; PWR6-NEXT: lvx 4, 0, 3 240; PWR6-NEXT: vsububm 2, 2, 3 241; PWR6-NEXT: vand 3, 2, 4 242; PWR6-NEXT: vsrb 2, 2, 5 243; PWR6-NEXT: vand 2, 2, 4 244; PWR6-NEXT: vspltisb 4, 4 245; PWR6-NEXT: vaddubm 2, 3, 2 246; PWR6-NEXT: vsrb 3, 2, 4 247; PWR6-NEXT: vspltisb 4, 15 248; PWR6-NEXT: vaddubm 2, 2, 3 249; PWR6-NEXT: vspltisb 3, 3 250; PWR6-NEXT: vand 2, 2, 4 251; PWR6-NEXT: vcmpgtub 2, 3, 2 252; PWR6-NEXT: blr 253; 254; PWR7-LABEL: ult_3_v16i8: 255; PWR7: # %bb.0: 256; PWR7-NEXT: vspltisb 3, 1 257; PWR7-NEXT: addis 3, 2, .LCPI3_0@toc@ha 258; PWR7-NEXT: addi 3, 3, .LCPI3_0@toc@l 259; PWR7-NEXT: vspltisb 4, 2 260; PWR7-NEXT: lxvw4x 0, 0, 3 261; PWR7-NEXT: addis 3, 2, .LCPI3_1@toc@ha 262; PWR7-NEXT: vsrb 3, 2, 3 263; PWR7-NEXT: addi 3, 3, .LCPI3_1@toc@l 264; PWR7-NEXT: xxland 35, 35, 0 265; PWR7-NEXT: lxvw4x 0, 0, 3 266; PWR7-NEXT: vsububm 2, 2, 3 267; PWR7-NEXT: vsrb 3, 2, 4 268; PWR7-NEXT: xxland 34, 34, 0 269; PWR7-NEXT: vspltisb 4, 4 270; PWR7-NEXT: xxland 35, 35, 0 271; PWR7-NEXT: vaddubm 2, 2, 3 272; PWR7-NEXT: vsrb 3, 2, 4 273; PWR7-NEXT: vspltisb 4, 15 274; PWR7-NEXT: vaddubm 2, 2, 3 275; PWR7-NEXT: vspltisb 3, 3 276; PWR7-NEXT: xxland 34, 34, 36 277; PWR7-NEXT: vcmpgtub 2, 3, 2 278; PWR7-NEXT: blr 279; 280; PWR8-LABEL: ult_3_v16i8: 281; PWR8: # %bb.0: 282; PWR8-NEXT: vspltisb 3, 3 283; PWR8-NEXT: vpopcntb 2, 2 284; PWR8-NEXT: vcmpgtub 2, 3, 2 285; PWR8-NEXT: blr 286; 287; PWR9-LABEL: ult_3_v16i8: 288; PWR9: # %bb.0: 289; PWR9-NEXT: xxspltib 35, 3 290; PWR9-NEXT: vpopcntb 2, 2 291; PWR9-NEXT: vcmpgtub 2, 3, 2 292; PWR9-NEXT: blr 293 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 294 %3 = icmp ult <16 x i8> %2, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3> 295 %4 = sext <16 x i1> %3 to <16 x i8> 296 ret <16 x i8> %4 297} 298 299define <16 x i8> @ugt_3_v16i8(<16 x i8> %0) { 300; PWR5-LABEL: ugt_3_v16i8: 301; PWR5: # %bb.0: 302; PWR5-NEXT: addis 3, 2, .LCPI4_0@toc@ha 303; PWR5-NEXT: vspltisb 3, 1 304; PWR5-NEXT: addi 3, 3, .LCPI4_0@toc@l 305; PWR5-NEXT: vsrb 3, 2, 3 306; PWR5-NEXT: lvx 4, 0, 3 307; PWR5-NEXT: addis 3, 2, .LCPI4_1@toc@ha 308; PWR5-NEXT: addi 3, 3, .LCPI4_1@toc@l 309; PWR5-NEXT: vspltisb 5, 2 310; PWR5-NEXT: vand 3, 3, 4 311; PWR5-NEXT: lvx 4, 0, 3 312; PWR5-NEXT: vsububm 2, 2, 3 313; PWR5-NEXT: vand 3, 2, 4 314; PWR5-NEXT: vsrb 2, 2, 5 315; PWR5-NEXT: vand 2, 2, 4 316; PWR5-NEXT: vspltisb 4, 4 317; PWR5-NEXT: vaddubm 2, 3, 2 318; PWR5-NEXT: vsrb 3, 2, 4 319; PWR5-NEXT: vspltisb 4, 15 320; PWR5-NEXT: vaddubm 2, 2, 3 321; PWR5-NEXT: vspltisb 3, 3 322; PWR5-NEXT: vand 2, 2, 4 323; PWR5-NEXT: vcmpgtub 2, 2, 3 324; PWR5-NEXT: blr 325; 326; PWR6-LABEL: ugt_3_v16i8: 327; PWR6: # %bb.0: 328; PWR6-NEXT: addis 3, 2, .LCPI4_0@toc@ha 329; PWR6-NEXT: vspltisb 3, 1 330; PWR6-NEXT: addi 3, 3, .LCPI4_0@toc@l 331; PWR6-NEXT: vsrb 3, 2, 3 332; PWR6-NEXT: lvx 4, 0, 3 333; PWR6-NEXT: addis 3, 2, .LCPI4_1@toc@ha 334; PWR6-NEXT: addi 3, 3, .LCPI4_1@toc@l 335; PWR6-NEXT: vspltisb 5, 2 336; PWR6-NEXT: vand 3, 3, 4 337; PWR6-NEXT: lvx 4, 0, 3 338; PWR6-NEXT: vsububm 2, 2, 3 339; PWR6-NEXT: vand 3, 2, 4 340; PWR6-NEXT: vsrb 2, 2, 5 341; PWR6-NEXT: vand 2, 2, 4 342; PWR6-NEXT: vspltisb 4, 4 343; PWR6-NEXT: vaddubm 2, 3, 2 344; PWR6-NEXT: vsrb 3, 2, 4 345; PWR6-NEXT: vspltisb 4, 15 346; PWR6-NEXT: vaddubm 2, 2, 3 347; PWR6-NEXT: vspltisb 3, 3 348; PWR6-NEXT: vand 2, 2, 4 349; PWR6-NEXT: vcmpgtub 2, 2, 3 350; PWR6-NEXT: blr 351; 352; PWR7-LABEL: ugt_3_v16i8: 353; PWR7: # %bb.0: 354; PWR7-NEXT: vspltisb 3, 1 355; PWR7-NEXT: addis 3, 2, .LCPI4_0@toc@ha 356; PWR7-NEXT: addi 3, 3, .LCPI4_0@toc@l 357; PWR7-NEXT: vspltisb 4, 2 358; PWR7-NEXT: lxvw4x 0, 0, 3 359; PWR7-NEXT: addis 3, 2, .LCPI4_1@toc@ha 360; PWR7-NEXT: vsrb 3, 2, 3 361; PWR7-NEXT: addi 3, 3, .LCPI4_1@toc@l 362; PWR7-NEXT: xxland 35, 35, 0 363; PWR7-NEXT: lxvw4x 0, 0, 3 364; PWR7-NEXT: vsububm 2, 2, 3 365; PWR7-NEXT: vsrb 3, 2, 4 366; PWR7-NEXT: xxland 34, 34, 0 367; PWR7-NEXT: vspltisb 4, 4 368; PWR7-NEXT: xxland 35, 35, 0 369; PWR7-NEXT: vaddubm 2, 2, 3 370; PWR7-NEXT: vsrb 3, 2, 4 371; PWR7-NEXT: vspltisb 4, 15 372; PWR7-NEXT: vaddubm 2, 2, 3 373; PWR7-NEXT: vspltisb 3, 3 374; PWR7-NEXT: xxland 34, 34, 36 375; PWR7-NEXT: vcmpgtub 2, 2, 3 376; PWR7-NEXT: blr 377; 378; PWR8-LABEL: ugt_3_v16i8: 379; PWR8: # %bb.0: 380; PWR8-NEXT: vspltisb 3, 3 381; PWR8-NEXT: vpopcntb 2, 2 382; PWR8-NEXT: vcmpgtub 2, 2, 3 383; PWR8-NEXT: blr 384; 385; PWR9-LABEL: ugt_3_v16i8: 386; PWR9: # %bb.0: 387; PWR9-NEXT: xxspltib 35, 3 388; PWR9-NEXT: vpopcntb 2, 2 389; PWR9-NEXT: vcmpgtub 2, 2, 3 390; PWR9-NEXT: blr 391 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 392 %3 = icmp ugt <16 x i8> %2, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3> 393 %4 = sext <16 x i1> %3 to <16 x i8> 394 ret <16 x i8> %4 395} 396 397define <16 x i8> @ult_4_v16i8(<16 x i8> %0) { 398; PWR5-LABEL: ult_4_v16i8: 399; PWR5: # %bb.0: 400; PWR5-NEXT: addis 3, 2, .LCPI5_0@toc@ha 401; PWR5-NEXT: vspltisb 3, 1 402; PWR5-NEXT: addi 3, 3, .LCPI5_0@toc@l 403; PWR5-NEXT: vsrb 3, 2, 3 404; PWR5-NEXT: lvx 4, 0, 3 405; PWR5-NEXT: addis 3, 2, .LCPI5_1@toc@ha 406; PWR5-NEXT: addi 3, 3, .LCPI5_1@toc@l 407; PWR5-NEXT: vspltisb 5, 2 408; PWR5-NEXT: vand 3, 3, 4 409; PWR5-NEXT: lvx 4, 0, 3 410; PWR5-NEXT: vsububm 2, 2, 3 411; PWR5-NEXT: vand 3, 2, 4 412; PWR5-NEXT: vsrb 2, 2, 5 413; PWR5-NEXT: vspltisb 5, 15 414; PWR5-NEXT: vand 2, 2, 4 415; PWR5-NEXT: vspltisb 4, 4 416; PWR5-NEXT: vaddubm 2, 3, 2 417; PWR5-NEXT: vsrb 3, 2, 4 418; PWR5-NEXT: vaddubm 2, 2, 3 419; PWR5-NEXT: vand 2, 2, 5 420; PWR5-NEXT: vcmpgtub 2, 4, 2 421; PWR5-NEXT: blr 422; 423; PWR6-LABEL: ult_4_v16i8: 424; PWR6: # %bb.0: 425; PWR6-NEXT: addis 3, 2, .LCPI5_0@toc@ha 426; PWR6-NEXT: vspltisb 3, 1 427; PWR6-NEXT: addi 3, 3, .LCPI5_0@toc@l 428; PWR6-NEXT: vsrb 3, 2, 3 429; PWR6-NEXT: lvx 4, 0, 3 430; PWR6-NEXT: addis 3, 2, .LCPI5_1@toc@ha 431; PWR6-NEXT: addi 3, 3, .LCPI5_1@toc@l 432; PWR6-NEXT: vspltisb 5, 2 433; PWR6-NEXT: vand 3, 3, 4 434; PWR6-NEXT: lvx 4, 0, 3 435; PWR6-NEXT: vsububm 2, 2, 3 436; PWR6-NEXT: vand 3, 2, 4 437; PWR6-NEXT: vsrb 2, 2, 5 438; PWR6-NEXT: vspltisb 5, 15 439; PWR6-NEXT: vand 2, 2, 4 440; PWR6-NEXT: vspltisb 4, 4 441; PWR6-NEXT: vaddubm 2, 3, 2 442; PWR6-NEXT: vsrb 3, 2, 4 443; PWR6-NEXT: vaddubm 2, 2, 3 444; PWR6-NEXT: vand 2, 2, 5 445; PWR6-NEXT: vcmpgtub 2, 4, 2 446; PWR6-NEXT: blr 447; 448; PWR7-LABEL: ult_4_v16i8: 449; PWR7: # %bb.0: 450; PWR7-NEXT: vspltisb 3, 1 451; PWR7-NEXT: addis 3, 2, .LCPI5_0@toc@ha 452; PWR7-NEXT: addi 3, 3, .LCPI5_0@toc@l 453; PWR7-NEXT: vspltisb 4, 2 454; PWR7-NEXT: lxvw4x 0, 0, 3 455; PWR7-NEXT: addis 3, 2, .LCPI5_1@toc@ha 456; PWR7-NEXT: vspltisb 5, 15 457; PWR7-NEXT: vsrb 3, 2, 3 458; PWR7-NEXT: addi 3, 3, .LCPI5_1@toc@l 459; PWR7-NEXT: xxland 35, 35, 0 460; PWR7-NEXT: lxvw4x 0, 0, 3 461; PWR7-NEXT: vsububm 2, 2, 3 462; PWR7-NEXT: vsrb 3, 2, 4 463; PWR7-NEXT: xxland 34, 34, 0 464; PWR7-NEXT: vspltisb 4, 4 465; PWR7-NEXT: xxland 35, 35, 0 466; PWR7-NEXT: vaddubm 2, 2, 3 467; PWR7-NEXT: vsrb 3, 2, 4 468; PWR7-NEXT: vaddubm 2, 2, 3 469; PWR7-NEXT: xxland 34, 34, 37 470; PWR7-NEXT: vcmpgtub 2, 4, 2 471; PWR7-NEXT: blr 472; 473; PWR8-LABEL: ult_4_v16i8: 474; PWR8: # %bb.0: 475; PWR8-NEXT: vspltisb 3, 4 476; PWR8-NEXT: vpopcntb 2, 2 477; PWR8-NEXT: vcmpgtub 2, 3, 2 478; PWR8-NEXT: blr 479; 480; PWR9-LABEL: ult_4_v16i8: 481; PWR9: # %bb.0: 482; PWR9-NEXT: xxspltib 35, 4 483; PWR9-NEXT: vpopcntb 2, 2 484; PWR9-NEXT: vcmpgtub 2, 3, 2 485; PWR9-NEXT: blr 486 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 487 %3 = icmp ult <16 x i8> %2, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4> 488 %4 = sext <16 x i1> %3 to <16 x i8> 489 ret <16 x i8> %4 490} 491 492define <16 x i8> @ugt_4_v16i8(<16 x i8> %0) { 493; PWR5-LABEL: ugt_4_v16i8: 494; PWR5: # %bb.0: 495; PWR5-NEXT: addis 3, 2, .LCPI6_0@toc@ha 496; PWR5-NEXT: vspltisb 3, 1 497; PWR5-NEXT: addi 3, 3, .LCPI6_0@toc@l 498; PWR5-NEXT: vsrb 3, 2, 3 499; PWR5-NEXT: lvx 4, 0, 3 500; PWR5-NEXT: addis 3, 2, .LCPI6_1@toc@ha 501; PWR5-NEXT: addi 3, 3, .LCPI6_1@toc@l 502; PWR5-NEXT: vspltisb 5, 2 503; PWR5-NEXT: vand 3, 3, 4 504; PWR5-NEXT: lvx 4, 0, 3 505; PWR5-NEXT: vsububm 2, 2, 3 506; PWR5-NEXT: vand 3, 2, 4 507; PWR5-NEXT: vsrb 2, 2, 5 508; PWR5-NEXT: vspltisb 5, 15 509; PWR5-NEXT: vand 2, 2, 4 510; PWR5-NEXT: vspltisb 4, 4 511; PWR5-NEXT: vaddubm 2, 3, 2 512; PWR5-NEXT: vsrb 3, 2, 4 513; PWR5-NEXT: vaddubm 2, 2, 3 514; PWR5-NEXT: vand 2, 2, 5 515; PWR5-NEXT: vcmpgtub 2, 2, 4 516; PWR5-NEXT: blr 517; 518; PWR6-LABEL: ugt_4_v16i8: 519; PWR6: # %bb.0: 520; PWR6-NEXT: addis 3, 2, .LCPI6_0@toc@ha 521; PWR6-NEXT: vspltisb 3, 1 522; PWR6-NEXT: addi 3, 3, .LCPI6_0@toc@l 523; PWR6-NEXT: vsrb 3, 2, 3 524; PWR6-NEXT: lvx 4, 0, 3 525; PWR6-NEXT: addis 3, 2, .LCPI6_1@toc@ha 526; PWR6-NEXT: addi 3, 3, .LCPI6_1@toc@l 527; PWR6-NEXT: vspltisb 5, 2 528; PWR6-NEXT: vand 3, 3, 4 529; PWR6-NEXT: lvx 4, 0, 3 530; PWR6-NEXT: vsububm 2, 2, 3 531; PWR6-NEXT: vand 3, 2, 4 532; PWR6-NEXT: vsrb 2, 2, 5 533; PWR6-NEXT: vspltisb 5, 15 534; PWR6-NEXT: vand 2, 2, 4 535; PWR6-NEXT: vspltisb 4, 4 536; PWR6-NEXT: vaddubm 2, 3, 2 537; PWR6-NEXT: vsrb 3, 2, 4 538; PWR6-NEXT: vaddubm 2, 2, 3 539; PWR6-NEXT: vand 2, 2, 5 540; PWR6-NEXT: vcmpgtub 2, 2, 4 541; PWR6-NEXT: blr 542; 543; PWR7-LABEL: ugt_4_v16i8: 544; PWR7: # %bb.0: 545; PWR7-NEXT: vspltisb 3, 1 546; PWR7-NEXT: addis 3, 2, .LCPI6_0@toc@ha 547; PWR7-NEXT: addi 3, 3, .LCPI6_0@toc@l 548; PWR7-NEXT: vspltisb 4, 2 549; PWR7-NEXT: lxvw4x 0, 0, 3 550; PWR7-NEXT: addis 3, 2, .LCPI6_1@toc@ha 551; PWR7-NEXT: vspltisb 5, 15 552; PWR7-NEXT: vsrb 3, 2, 3 553; PWR7-NEXT: addi 3, 3, .LCPI6_1@toc@l 554; PWR7-NEXT: xxland 35, 35, 0 555; PWR7-NEXT: lxvw4x 0, 0, 3 556; PWR7-NEXT: vsububm 2, 2, 3 557; PWR7-NEXT: vsrb 3, 2, 4 558; PWR7-NEXT: xxland 34, 34, 0 559; PWR7-NEXT: vspltisb 4, 4 560; PWR7-NEXT: xxland 35, 35, 0 561; PWR7-NEXT: vaddubm 2, 2, 3 562; PWR7-NEXT: vsrb 3, 2, 4 563; PWR7-NEXT: vaddubm 2, 2, 3 564; PWR7-NEXT: xxland 34, 34, 37 565; PWR7-NEXT: vcmpgtub 2, 2, 4 566; PWR7-NEXT: blr 567; 568; PWR8-LABEL: ugt_4_v16i8: 569; PWR8: # %bb.0: 570; PWR8-NEXT: vspltisb 3, 4 571; PWR8-NEXT: vpopcntb 2, 2 572; PWR8-NEXT: vcmpgtub 2, 2, 3 573; PWR8-NEXT: blr 574; 575; PWR9-LABEL: ugt_4_v16i8: 576; PWR9: # %bb.0: 577; PWR9-NEXT: xxspltib 35, 4 578; PWR9-NEXT: vpopcntb 2, 2 579; PWR9-NEXT: vcmpgtub 2, 2, 3 580; PWR9-NEXT: blr 581 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 582 %3 = icmp ugt <16 x i8> %2, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4> 583 %4 = sext <16 x i1> %3 to <16 x i8> 584 ret <16 x i8> %4 585} 586 587define <16 x i8> @ult_5_v16i8(<16 x i8> %0) { 588; PWR5-LABEL: ult_5_v16i8: 589; PWR5: # %bb.0: 590; PWR5-NEXT: addis 3, 2, .LCPI7_0@toc@ha 591; PWR5-NEXT: vspltisb 3, 1 592; PWR5-NEXT: addi 3, 3, .LCPI7_0@toc@l 593; PWR5-NEXT: vsrb 3, 2, 3 594; PWR5-NEXT: lvx 4, 0, 3 595; PWR5-NEXT: addis 3, 2, .LCPI7_1@toc@ha 596; PWR5-NEXT: addi 3, 3, .LCPI7_1@toc@l 597; PWR5-NEXT: vspltisb 5, 2 598; PWR5-NEXT: vand 3, 3, 4 599; PWR5-NEXT: lvx 4, 0, 3 600; PWR5-NEXT: vsububm 2, 2, 3 601; PWR5-NEXT: vand 3, 2, 4 602; PWR5-NEXT: vsrb 2, 2, 5 603; PWR5-NEXT: vand 2, 2, 4 604; PWR5-NEXT: vspltisb 4, 4 605; PWR5-NEXT: vaddubm 2, 3, 2 606; PWR5-NEXT: vsrb 3, 2, 4 607; PWR5-NEXT: vspltisb 4, 15 608; PWR5-NEXT: vaddubm 2, 2, 3 609; PWR5-NEXT: vspltisb 3, 5 610; PWR5-NEXT: vand 2, 2, 4 611; PWR5-NEXT: vcmpgtub 2, 3, 2 612; PWR5-NEXT: blr 613; 614; PWR6-LABEL: ult_5_v16i8: 615; PWR6: # %bb.0: 616; PWR6-NEXT: addis 3, 2, .LCPI7_0@toc@ha 617; PWR6-NEXT: vspltisb 3, 1 618; PWR6-NEXT: addi 3, 3, .LCPI7_0@toc@l 619; PWR6-NEXT: vsrb 3, 2, 3 620; PWR6-NEXT: lvx 4, 0, 3 621; PWR6-NEXT: addis 3, 2, .LCPI7_1@toc@ha 622; PWR6-NEXT: addi 3, 3, .LCPI7_1@toc@l 623; PWR6-NEXT: vspltisb 5, 2 624; PWR6-NEXT: vand 3, 3, 4 625; PWR6-NEXT: lvx 4, 0, 3 626; PWR6-NEXT: vsububm 2, 2, 3 627; PWR6-NEXT: vand 3, 2, 4 628; PWR6-NEXT: vsrb 2, 2, 5 629; PWR6-NEXT: vand 2, 2, 4 630; PWR6-NEXT: vspltisb 4, 4 631; PWR6-NEXT: vaddubm 2, 3, 2 632; PWR6-NEXT: vsrb 3, 2, 4 633; PWR6-NEXT: vspltisb 4, 15 634; PWR6-NEXT: vaddubm 2, 2, 3 635; PWR6-NEXT: vspltisb 3, 5 636; PWR6-NEXT: vand 2, 2, 4 637; PWR6-NEXT: vcmpgtub 2, 3, 2 638; PWR6-NEXT: blr 639; 640; PWR7-LABEL: ult_5_v16i8: 641; PWR7: # %bb.0: 642; PWR7-NEXT: vspltisb 3, 1 643; PWR7-NEXT: addis 3, 2, .LCPI7_0@toc@ha 644; PWR7-NEXT: addi 3, 3, .LCPI7_0@toc@l 645; PWR7-NEXT: vspltisb 4, 2 646; PWR7-NEXT: lxvw4x 0, 0, 3 647; PWR7-NEXT: addis 3, 2, .LCPI7_1@toc@ha 648; PWR7-NEXT: vsrb 3, 2, 3 649; PWR7-NEXT: addi 3, 3, .LCPI7_1@toc@l 650; PWR7-NEXT: xxland 35, 35, 0 651; PWR7-NEXT: lxvw4x 0, 0, 3 652; PWR7-NEXT: vsububm 2, 2, 3 653; PWR7-NEXT: vsrb 3, 2, 4 654; PWR7-NEXT: xxland 34, 34, 0 655; PWR7-NEXT: vspltisb 4, 4 656; PWR7-NEXT: xxland 35, 35, 0 657; PWR7-NEXT: vaddubm 2, 2, 3 658; PWR7-NEXT: vsrb 3, 2, 4 659; PWR7-NEXT: vspltisb 4, 15 660; PWR7-NEXT: vaddubm 2, 2, 3 661; PWR7-NEXT: vspltisb 3, 5 662; PWR7-NEXT: xxland 34, 34, 36 663; PWR7-NEXT: vcmpgtub 2, 3, 2 664; PWR7-NEXT: blr 665; 666; PWR8-LABEL: ult_5_v16i8: 667; PWR8: # %bb.0: 668; PWR8-NEXT: vspltisb 3, 5 669; PWR8-NEXT: vpopcntb 2, 2 670; PWR8-NEXT: vcmpgtub 2, 3, 2 671; PWR8-NEXT: blr 672; 673; PWR9-LABEL: ult_5_v16i8: 674; PWR9: # %bb.0: 675; PWR9-NEXT: xxspltib 35, 5 676; PWR9-NEXT: vpopcntb 2, 2 677; PWR9-NEXT: vcmpgtub 2, 3, 2 678; PWR9-NEXT: blr 679 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 680 %3 = icmp ult <16 x i8> %2, <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5> 681 %4 = sext <16 x i1> %3 to <16 x i8> 682 ret <16 x i8> %4 683} 684 685define <16 x i8> @ugt_5_v16i8(<16 x i8> %0) { 686; PWR5-LABEL: ugt_5_v16i8: 687; PWR5: # %bb.0: 688; PWR5-NEXT: addis 3, 2, .LCPI8_0@toc@ha 689; PWR5-NEXT: vspltisb 3, 1 690; PWR5-NEXT: addi 3, 3, .LCPI8_0@toc@l 691; PWR5-NEXT: vsrb 3, 2, 3 692; PWR5-NEXT: lvx 4, 0, 3 693; PWR5-NEXT: addis 3, 2, .LCPI8_1@toc@ha 694; PWR5-NEXT: addi 3, 3, .LCPI8_1@toc@l 695; PWR5-NEXT: vspltisb 5, 2 696; PWR5-NEXT: vand 3, 3, 4 697; PWR5-NEXT: lvx 4, 0, 3 698; PWR5-NEXT: vsububm 2, 2, 3 699; PWR5-NEXT: vand 3, 2, 4 700; PWR5-NEXT: vsrb 2, 2, 5 701; PWR5-NEXT: vand 2, 2, 4 702; PWR5-NEXT: vspltisb 4, 4 703; PWR5-NEXT: vaddubm 2, 3, 2 704; PWR5-NEXT: vsrb 3, 2, 4 705; PWR5-NEXT: vspltisb 4, 15 706; PWR5-NEXT: vaddubm 2, 2, 3 707; PWR5-NEXT: vspltisb 3, 5 708; PWR5-NEXT: vand 2, 2, 4 709; PWR5-NEXT: vcmpgtub 2, 2, 3 710; PWR5-NEXT: blr 711; 712; PWR6-LABEL: ugt_5_v16i8: 713; PWR6: # %bb.0: 714; PWR6-NEXT: addis 3, 2, .LCPI8_0@toc@ha 715; PWR6-NEXT: vspltisb 3, 1 716; PWR6-NEXT: addi 3, 3, .LCPI8_0@toc@l 717; PWR6-NEXT: vsrb 3, 2, 3 718; PWR6-NEXT: lvx 4, 0, 3 719; PWR6-NEXT: addis 3, 2, .LCPI8_1@toc@ha 720; PWR6-NEXT: addi 3, 3, .LCPI8_1@toc@l 721; PWR6-NEXT: vspltisb 5, 2 722; PWR6-NEXT: vand 3, 3, 4 723; PWR6-NEXT: lvx 4, 0, 3 724; PWR6-NEXT: vsububm 2, 2, 3 725; PWR6-NEXT: vand 3, 2, 4 726; PWR6-NEXT: vsrb 2, 2, 5 727; PWR6-NEXT: vand 2, 2, 4 728; PWR6-NEXT: vspltisb 4, 4 729; PWR6-NEXT: vaddubm 2, 3, 2 730; PWR6-NEXT: vsrb 3, 2, 4 731; PWR6-NEXT: vspltisb 4, 15 732; PWR6-NEXT: vaddubm 2, 2, 3 733; PWR6-NEXT: vspltisb 3, 5 734; PWR6-NEXT: vand 2, 2, 4 735; PWR6-NEXT: vcmpgtub 2, 2, 3 736; PWR6-NEXT: blr 737; 738; PWR7-LABEL: ugt_5_v16i8: 739; PWR7: # %bb.0: 740; PWR7-NEXT: vspltisb 3, 1 741; PWR7-NEXT: addis 3, 2, .LCPI8_0@toc@ha 742; PWR7-NEXT: addi 3, 3, .LCPI8_0@toc@l 743; PWR7-NEXT: vspltisb 4, 2 744; PWR7-NEXT: lxvw4x 0, 0, 3 745; PWR7-NEXT: addis 3, 2, .LCPI8_1@toc@ha 746; PWR7-NEXT: vsrb 3, 2, 3 747; PWR7-NEXT: addi 3, 3, .LCPI8_1@toc@l 748; PWR7-NEXT: xxland 35, 35, 0 749; PWR7-NEXT: lxvw4x 0, 0, 3 750; PWR7-NEXT: vsububm 2, 2, 3 751; PWR7-NEXT: vsrb 3, 2, 4 752; PWR7-NEXT: xxland 34, 34, 0 753; PWR7-NEXT: vspltisb 4, 4 754; PWR7-NEXT: xxland 35, 35, 0 755; PWR7-NEXT: vaddubm 2, 2, 3 756; PWR7-NEXT: vsrb 3, 2, 4 757; PWR7-NEXT: vspltisb 4, 15 758; PWR7-NEXT: vaddubm 2, 2, 3 759; PWR7-NEXT: vspltisb 3, 5 760; PWR7-NEXT: xxland 34, 34, 36 761; PWR7-NEXT: vcmpgtub 2, 2, 3 762; PWR7-NEXT: blr 763; 764; PWR8-LABEL: ugt_5_v16i8: 765; PWR8: # %bb.0: 766; PWR8-NEXT: vspltisb 3, 5 767; PWR8-NEXT: vpopcntb 2, 2 768; PWR8-NEXT: vcmpgtub 2, 2, 3 769; PWR8-NEXT: blr 770; 771; PWR9-LABEL: ugt_5_v16i8: 772; PWR9: # %bb.0: 773; PWR9-NEXT: xxspltib 35, 5 774; PWR9-NEXT: vpopcntb 2, 2 775; PWR9-NEXT: vcmpgtub 2, 2, 3 776; PWR9-NEXT: blr 777 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 778 %3 = icmp ugt <16 x i8> %2, <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5> 779 %4 = sext <16 x i1> %3 to <16 x i8> 780 ret <16 x i8> %4 781} 782 783define <16 x i8> @ult_6_v16i8(<16 x i8> %0) { 784; PWR5-LABEL: ult_6_v16i8: 785; PWR5: # %bb.0: 786; PWR5-NEXT: addis 3, 2, .LCPI9_0@toc@ha 787; PWR5-NEXT: vspltisb 3, 1 788; PWR5-NEXT: addi 3, 3, .LCPI9_0@toc@l 789; PWR5-NEXT: vsrb 3, 2, 3 790; PWR5-NEXT: lvx 4, 0, 3 791; PWR5-NEXT: addis 3, 2, .LCPI9_1@toc@ha 792; PWR5-NEXT: addi 3, 3, .LCPI9_1@toc@l 793; PWR5-NEXT: vspltisb 5, 2 794; PWR5-NEXT: vand 3, 3, 4 795; PWR5-NEXT: lvx 4, 0, 3 796; PWR5-NEXT: vsububm 2, 2, 3 797; PWR5-NEXT: vand 3, 2, 4 798; PWR5-NEXT: vsrb 2, 2, 5 799; PWR5-NEXT: vand 2, 2, 4 800; PWR5-NEXT: vspltisb 4, 4 801; PWR5-NEXT: vaddubm 2, 3, 2 802; PWR5-NEXT: vsrb 3, 2, 4 803; PWR5-NEXT: vspltisb 4, 15 804; PWR5-NEXT: vaddubm 2, 2, 3 805; PWR5-NEXT: vspltisb 3, 6 806; PWR5-NEXT: vand 2, 2, 4 807; PWR5-NEXT: vcmpgtub 2, 3, 2 808; PWR5-NEXT: blr 809; 810; PWR6-LABEL: ult_6_v16i8: 811; PWR6: # %bb.0: 812; PWR6-NEXT: addis 3, 2, .LCPI9_0@toc@ha 813; PWR6-NEXT: vspltisb 3, 1 814; PWR6-NEXT: addi 3, 3, .LCPI9_0@toc@l 815; PWR6-NEXT: vsrb 3, 2, 3 816; PWR6-NEXT: lvx 4, 0, 3 817; PWR6-NEXT: addis 3, 2, .LCPI9_1@toc@ha 818; PWR6-NEXT: addi 3, 3, .LCPI9_1@toc@l 819; PWR6-NEXT: vspltisb 5, 2 820; PWR6-NEXT: vand 3, 3, 4 821; PWR6-NEXT: lvx 4, 0, 3 822; PWR6-NEXT: vsububm 2, 2, 3 823; PWR6-NEXT: vand 3, 2, 4 824; PWR6-NEXT: vsrb 2, 2, 5 825; PWR6-NEXT: vand 2, 2, 4 826; PWR6-NEXT: vspltisb 4, 4 827; PWR6-NEXT: vaddubm 2, 3, 2 828; PWR6-NEXT: vsrb 3, 2, 4 829; PWR6-NEXT: vspltisb 4, 15 830; PWR6-NEXT: vaddubm 2, 2, 3 831; PWR6-NEXT: vspltisb 3, 6 832; PWR6-NEXT: vand 2, 2, 4 833; PWR6-NEXT: vcmpgtub 2, 3, 2 834; PWR6-NEXT: blr 835; 836; PWR7-LABEL: ult_6_v16i8: 837; PWR7: # %bb.0: 838; PWR7-NEXT: vspltisb 3, 1 839; PWR7-NEXT: addis 3, 2, .LCPI9_0@toc@ha 840; PWR7-NEXT: addi 3, 3, .LCPI9_0@toc@l 841; PWR7-NEXT: vspltisb 4, 2 842; PWR7-NEXT: lxvw4x 0, 0, 3 843; PWR7-NEXT: addis 3, 2, .LCPI9_1@toc@ha 844; PWR7-NEXT: vsrb 3, 2, 3 845; PWR7-NEXT: addi 3, 3, .LCPI9_1@toc@l 846; PWR7-NEXT: xxland 35, 35, 0 847; PWR7-NEXT: lxvw4x 0, 0, 3 848; PWR7-NEXT: vsububm 2, 2, 3 849; PWR7-NEXT: vsrb 3, 2, 4 850; PWR7-NEXT: xxland 34, 34, 0 851; PWR7-NEXT: vspltisb 4, 4 852; PWR7-NEXT: xxland 35, 35, 0 853; PWR7-NEXT: vaddubm 2, 2, 3 854; PWR7-NEXT: vsrb 3, 2, 4 855; PWR7-NEXT: vspltisb 4, 15 856; PWR7-NEXT: vaddubm 2, 2, 3 857; PWR7-NEXT: vspltisb 3, 6 858; PWR7-NEXT: xxland 34, 34, 36 859; PWR7-NEXT: vcmpgtub 2, 3, 2 860; PWR7-NEXT: blr 861; 862; PWR8-LABEL: ult_6_v16i8: 863; PWR8: # %bb.0: 864; PWR8-NEXT: vspltisb 3, 6 865; PWR8-NEXT: vpopcntb 2, 2 866; PWR8-NEXT: vcmpgtub 2, 3, 2 867; PWR8-NEXT: blr 868; 869; PWR9-LABEL: ult_6_v16i8: 870; PWR9: # %bb.0: 871; PWR9-NEXT: xxspltib 35, 6 872; PWR9-NEXT: vpopcntb 2, 2 873; PWR9-NEXT: vcmpgtub 2, 3, 2 874; PWR9-NEXT: blr 875 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 876 %3 = icmp ult <16 x i8> %2, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6> 877 %4 = sext <16 x i1> %3 to <16 x i8> 878 ret <16 x i8> %4 879} 880 881define <16 x i8> @ugt_6_v16i8(<16 x i8> %0) { 882; PWR5-LABEL: ugt_6_v16i8: 883; PWR5: # %bb.0: 884; PWR5-NEXT: addis 3, 2, .LCPI10_0@toc@ha 885; PWR5-NEXT: vspltisb 3, 1 886; PWR5-NEXT: addi 3, 3, .LCPI10_0@toc@l 887; PWR5-NEXT: vsrb 3, 2, 3 888; PWR5-NEXT: lvx 4, 0, 3 889; PWR5-NEXT: addis 3, 2, .LCPI10_1@toc@ha 890; PWR5-NEXT: addi 3, 3, .LCPI10_1@toc@l 891; PWR5-NEXT: vspltisb 5, 2 892; PWR5-NEXT: vand 3, 3, 4 893; PWR5-NEXT: lvx 4, 0, 3 894; PWR5-NEXT: vsububm 2, 2, 3 895; PWR5-NEXT: vand 3, 2, 4 896; PWR5-NEXT: vsrb 2, 2, 5 897; PWR5-NEXT: vand 2, 2, 4 898; PWR5-NEXT: vspltisb 4, 4 899; PWR5-NEXT: vaddubm 2, 3, 2 900; PWR5-NEXT: vsrb 3, 2, 4 901; PWR5-NEXT: vspltisb 4, 15 902; PWR5-NEXT: vaddubm 2, 2, 3 903; PWR5-NEXT: vspltisb 3, 6 904; PWR5-NEXT: vand 2, 2, 4 905; PWR5-NEXT: vcmpgtub 2, 2, 3 906; PWR5-NEXT: blr 907; 908; PWR6-LABEL: ugt_6_v16i8: 909; PWR6: # %bb.0: 910; PWR6-NEXT: addis 3, 2, .LCPI10_0@toc@ha 911; PWR6-NEXT: vspltisb 3, 1 912; PWR6-NEXT: addi 3, 3, .LCPI10_0@toc@l 913; PWR6-NEXT: vsrb 3, 2, 3 914; PWR6-NEXT: lvx 4, 0, 3 915; PWR6-NEXT: addis 3, 2, .LCPI10_1@toc@ha 916; PWR6-NEXT: addi 3, 3, .LCPI10_1@toc@l 917; PWR6-NEXT: vspltisb 5, 2 918; PWR6-NEXT: vand 3, 3, 4 919; PWR6-NEXT: lvx 4, 0, 3 920; PWR6-NEXT: vsububm 2, 2, 3 921; PWR6-NEXT: vand 3, 2, 4 922; PWR6-NEXT: vsrb 2, 2, 5 923; PWR6-NEXT: vand 2, 2, 4 924; PWR6-NEXT: vspltisb 4, 4 925; PWR6-NEXT: vaddubm 2, 3, 2 926; PWR6-NEXT: vsrb 3, 2, 4 927; PWR6-NEXT: vspltisb 4, 15 928; PWR6-NEXT: vaddubm 2, 2, 3 929; PWR6-NEXT: vspltisb 3, 6 930; PWR6-NEXT: vand 2, 2, 4 931; PWR6-NEXT: vcmpgtub 2, 2, 3 932; PWR6-NEXT: blr 933; 934; PWR7-LABEL: ugt_6_v16i8: 935; PWR7: # %bb.0: 936; PWR7-NEXT: vspltisb 3, 1 937; PWR7-NEXT: addis 3, 2, .LCPI10_0@toc@ha 938; PWR7-NEXT: addi 3, 3, .LCPI10_0@toc@l 939; PWR7-NEXT: vspltisb 4, 2 940; PWR7-NEXT: lxvw4x 0, 0, 3 941; PWR7-NEXT: addis 3, 2, .LCPI10_1@toc@ha 942; PWR7-NEXT: vsrb 3, 2, 3 943; PWR7-NEXT: addi 3, 3, .LCPI10_1@toc@l 944; PWR7-NEXT: xxland 35, 35, 0 945; PWR7-NEXT: lxvw4x 0, 0, 3 946; PWR7-NEXT: vsububm 2, 2, 3 947; PWR7-NEXT: vsrb 3, 2, 4 948; PWR7-NEXT: xxland 34, 34, 0 949; PWR7-NEXT: vspltisb 4, 4 950; PWR7-NEXT: xxland 35, 35, 0 951; PWR7-NEXT: vaddubm 2, 2, 3 952; PWR7-NEXT: vsrb 3, 2, 4 953; PWR7-NEXT: vspltisb 4, 15 954; PWR7-NEXT: vaddubm 2, 2, 3 955; PWR7-NEXT: vspltisb 3, 6 956; PWR7-NEXT: xxland 34, 34, 36 957; PWR7-NEXT: vcmpgtub 2, 2, 3 958; PWR7-NEXT: blr 959; 960; PWR8-LABEL: ugt_6_v16i8: 961; PWR8: # %bb.0: 962; PWR8-NEXT: vspltisb 3, 6 963; PWR8-NEXT: vpopcntb 2, 2 964; PWR8-NEXT: vcmpgtub 2, 2, 3 965; PWR8-NEXT: blr 966; 967; PWR9-LABEL: ugt_6_v16i8: 968; PWR9: # %bb.0: 969; PWR9-NEXT: xxspltib 35, 6 970; PWR9-NEXT: vpopcntb 2, 2 971; PWR9-NEXT: vcmpgtub 2, 2, 3 972; PWR9-NEXT: blr 973 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 974 %3 = icmp ugt <16 x i8> %2, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6> 975 %4 = sext <16 x i1> %3 to <16 x i8> 976 ret <16 x i8> %4 977} 978 979define <16 x i8> @ult_7_v16i8(<16 x i8> %0) { 980; PWR5-LABEL: ult_7_v16i8: 981; PWR5: # %bb.0: 982; PWR5-NEXT: addis 3, 2, .LCPI11_0@toc@ha 983; PWR5-NEXT: vspltisb 3, 1 984; PWR5-NEXT: addi 3, 3, .LCPI11_0@toc@l 985; PWR5-NEXT: vsrb 3, 2, 3 986; PWR5-NEXT: lvx 4, 0, 3 987; PWR5-NEXT: addis 3, 2, .LCPI11_1@toc@ha 988; PWR5-NEXT: addi 3, 3, .LCPI11_1@toc@l 989; PWR5-NEXT: vspltisb 5, 2 990; PWR5-NEXT: vand 3, 3, 4 991; PWR5-NEXT: lvx 4, 0, 3 992; PWR5-NEXT: vsububm 2, 2, 3 993; PWR5-NEXT: vand 3, 2, 4 994; PWR5-NEXT: vsrb 2, 2, 5 995; PWR5-NEXT: vand 2, 2, 4 996; PWR5-NEXT: vspltisb 4, 4 997; PWR5-NEXT: vaddubm 2, 3, 2 998; PWR5-NEXT: vsrb 3, 2, 4 999; PWR5-NEXT: vspltisb 4, 15 1000; PWR5-NEXT: vaddubm 2, 2, 3 1001; PWR5-NEXT: vspltisb 3, 7 1002; PWR5-NEXT: vand 2, 2, 4 1003; PWR5-NEXT: vcmpgtub 2, 3, 2 1004; PWR5-NEXT: blr 1005; 1006; PWR6-LABEL: ult_7_v16i8: 1007; PWR6: # %bb.0: 1008; PWR6-NEXT: addis 3, 2, .LCPI11_0@toc@ha 1009; PWR6-NEXT: vspltisb 3, 1 1010; PWR6-NEXT: addi 3, 3, .LCPI11_0@toc@l 1011; PWR6-NEXT: vsrb 3, 2, 3 1012; PWR6-NEXT: lvx 4, 0, 3 1013; PWR6-NEXT: addis 3, 2, .LCPI11_1@toc@ha 1014; PWR6-NEXT: addi 3, 3, .LCPI11_1@toc@l 1015; PWR6-NEXT: vspltisb 5, 2 1016; PWR6-NEXT: vand 3, 3, 4 1017; PWR6-NEXT: lvx 4, 0, 3 1018; PWR6-NEXT: vsububm 2, 2, 3 1019; PWR6-NEXT: vand 3, 2, 4 1020; PWR6-NEXT: vsrb 2, 2, 5 1021; PWR6-NEXT: vand 2, 2, 4 1022; PWR6-NEXT: vspltisb 4, 4 1023; PWR6-NEXT: vaddubm 2, 3, 2 1024; PWR6-NEXT: vsrb 3, 2, 4 1025; PWR6-NEXT: vspltisb 4, 15 1026; PWR6-NEXT: vaddubm 2, 2, 3 1027; PWR6-NEXT: vspltisb 3, 7 1028; PWR6-NEXT: vand 2, 2, 4 1029; PWR6-NEXT: vcmpgtub 2, 3, 2 1030; PWR6-NEXT: blr 1031; 1032; PWR7-LABEL: ult_7_v16i8: 1033; PWR7: # %bb.0: 1034; PWR7-NEXT: vspltisb 3, 1 1035; PWR7-NEXT: addis 3, 2, .LCPI11_0@toc@ha 1036; PWR7-NEXT: addi 3, 3, .LCPI11_0@toc@l 1037; PWR7-NEXT: vspltisb 4, 2 1038; PWR7-NEXT: lxvw4x 0, 0, 3 1039; PWR7-NEXT: addis 3, 2, .LCPI11_1@toc@ha 1040; PWR7-NEXT: vsrb 3, 2, 3 1041; PWR7-NEXT: addi 3, 3, .LCPI11_1@toc@l 1042; PWR7-NEXT: xxland 35, 35, 0 1043; PWR7-NEXT: lxvw4x 0, 0, 3 1044; PWR7-NEXT: vsububm 2, 2, 3 1045; PWR7-NEXT: vsrb 3, 2, 4 1046; PWR7-NEXT: xxland 34, 34, 0 1047; PWR7-NEXT: vspltisb 4, 4 1048; PWR7-NEXT: xxland 35, 35, 0 1049; PWR7-NEXT: vaddubm 2, 2, 3 1050; PWR7-NEXT: vsrb 3, 2, 4 1051; PWR7-NEXT: vspltisb 4, 15 1052; PWR7-NEXT: vaddubm 2, 2, 3 1053; PWR7-NEXT: vspltisb 3, 7 1054; PWR7-NEXT: xxland 34, 34, 36 1055; PWR7-NEXT: vcmpgtub 2, 3, 2 1056; PWR7-NEXT: blr 1057; 1058; PWR8-LABEL: ult_7_v16i8: 1059; PWR8: # %bb.0: 1060; PWR8-NEXT: vspltisb 3, 7 1061; PWR8-NEXT: vpopcntb 2, 2 1062; PWR8-NEXT: vcmpgtub 2, 3, 2 1063; PWR8-NEXT: blr 1064; 1065; PWR9-LABEL: ult_7_v16i8: 1066; PWR9: # %bb.0: 1067; PWR9-NEXT: xxspltib 35, 7 1068; PWR9-NEXT: vpopcntb 2, 2 1069; PWR9-NEXT: vcmpgtub 2, 3, 2 1070; PWR9-NEXT: blr 1071 %2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0) 1072 %3 = icmp ult <16 x i8> %2, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> 1073 %4 = sext <16 x i1> %3 to <16 x i8> 1074 ret <16 x i8> %4 1075} 1076 1077define <8 x i16> @ugt_1_v8i16(<8 x i16> %0) { 1078; PWR5-LABEL: ugt_1_v8i16: 1079; PWR5: # %bb.0: 1080; PWR5-NEXT: vspltisb 3, -1 1081; PWR5-NEXT: vadduhm 3, 2, 3 1082; PWR5-NEXT: vand 2, 2, 3 1083; PWR5-NEXT: vxor 3, 3, 3 1084; PWR5-NEXT: vcmpequh 2, 2, 3 1085; PWR5-NEXT: vnot 2, 2 1086; PWR5-NEXT: blr 1087; 1088; PWR6-LABEL: ugt_1_v8i16: 1089; PWR6: # %bb.0: 1090; PWR6-NEXT: vspltisb 3, -1 1091; PWR6-NEXT: vadduhm 3, 2, 3 1092; PWR6-NEXT: vand 2, 2, 3 1093; PWR6-NEXT: vxor 3, 3, 3 1094; PWR6-NEXT: vcmpequh 2, 2, 3 1095; PWR6-NEXT: vnot 2, 2 1096; PWR6-NEXT: blr 1097; 1098; PWR7-LABEL: ugt_1_v8i16: 1099; PWR7: # %bb.0: 1100; PWR7-NEXT: vspltisb 3, -1 1101; PWR7-NEXT: vadduhm 3, 2, 3 1102; PWR7-NEXT: xxland 34, 34, 35 1103; PWR7-NEXT: xxlxor 35, 35, 35 1104; PWR7-NEXT: vcmpequh 2, 2, 3 1105; PWR7-NEXT: xxlnor 34, 34, 34 1106; PWR7-NEXT: blr 1107; 1108; PWR8-LABEL: ugt_1_v8i16: 1109; PWR8: # %bb.0: 1110; PWR8-NEXT: vspltish 3, 1 1111; PWR8-NEXT: vpopcnth 2, 2 1112; PWR8-NEXT: vcmpgtuh 2, 2, 3 1113; PWR8-NEXT: blr 1114; 1115; PWR9-LABEL: ugt_1_v8i16: 1116; PWR9: # %bb.0: 1117; PWR9-NEXT: vspltish 3, 1 1118; PWR9-NEXT: vpopcnth 2, 2 1119; PWR9-NEXT: vcmpgtuh 2, 2, 3 1120; PWR9-NEXT: blr 1121 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 1122 %3 = icmp ugt <8 x i16> %2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 1123 %4 = sext <8 x i1> %3 to <8 x i16> 1124 ret <8 x i16> %4 1125} 1126 1127define <8 x i16> @ult_2_v8i16(<8 x i16> %0) { 1128; PWR5-LABEL: ult_2_v8i16: 1129; PWR5: # %bb.0: 1130; PWR5-NEXT: vspltisb 3, -1 1131; PWR5-NEXT: vadduhm 3, 2, 3 1132; PWR5-NEXT: vand 2, 2, 3 1133; PWR5-NEXT: vxor 3, 3, 3 1134; PWR5-NEXT: vcmpequh 2, 2, 3 1135; PWR5-NEXT: blr 1136; 1137; PWR6-LABEL: ult_2_v8i16: 1138; PWR6: # %bb.0: 1139; PWR6-NEXT: vspltisb 3, -1 1140; PWR6-NEXT: vadduhm 3, 2, 3 1141; PWR6-NEXT: vand 2, 2, 3 1142; PWR6-NEXT: vxor 3, 3, 3 1143; PWR6-NEXT: vcmpequh 2, 2, 3 1144; PWR6-NEXT: blr 1145; 1146; PWR7-LABEL: ult_2_v8i16: 1147; PWR7: # %bb.0: 1148; PWR7-NEXT: vspltisb 3, -1 1149; PWR7-NEXT: vadduhm 3, 2, 3 1150; PWR7-NEXT: xxland 34, 34, 35 1151; PWR7-NEXT: xxlxor 35, 35, 35 1152; PWR7-NEXT: vcmpequh 2, 2, 3 1153; PWR7-NEXT: blr 1154; 1155; PWR8-LABEL: ult_2_v8i16: 1156; PWR8: # %bb.0: 1157; PWR8-NEXT: vspltish 3, 2 1158; PWR8-NEXT: vpopcnth 2, 2 1159; PWR8-NEXT: vcmpgtuh 2, 3, 2 1160; PWR8-NEXT: blr 1161; 1162; PWR9-LABEL: ult_2_v8i16: 1163; PWR9: # %bb.0: 1164; PWR9-NEXT: vspltish 3, 2 1165; PWR9-NEXT: vpopcnth 2, 2 1166; PWR9-NEXT: vcmpgtuh 2, 3, 2 1167; PWR9-NEXT: blr 1168 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 1169 %3 = icmp ult <8 x i16> %2, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2> 1170 %4 = sext <8 x i1> %3 to <8 x i16> 1171 ret <8 x i16> %4 1172} 1173 1174define <8 x i16> @ugt_2_v8i16(<8 x i16> %0) { 1175; PWR5-LABEL: ugt_2_v8i16: 1176; PWR5: # %bb.0: 1177; PWR5-NEXT: addis 3, 2, .LCPI14_0@toc@ha 1178; PWR5-NEXT: vspltish 3, 1 1179; PWR5-NEXT: addi 3, 3, .LCPI14_0@toc@l 1180; PWR5-NEXT: vsrh 3, 2, 3 1181; PWR5-NEXT: lvx 4, 0, 3 1182; PWR5-NEXT: addis 3, 2, .LCPI14_1@toc@ha 1183; PWR5-NEXT: addi 3, 3, .LCPI14_1@toc@l 1184; PWR5-NEXT: vspltish 5, 2 1185; PWR5-NEXT: vand 3, 3, 4 1186; PWR5-NEXT: lvx 4, 0, 3 1187; PWR5-NEXT: vsubuhm 2, 2, 3 1188; PWR5-NEXT: vand 3, 2, 4 1189; PWR5-NEXT: vsrh 2, 2, 5 1190; PWR5-NEXT: vand 2, 2, 4 1191; PWR5-NEXT: vadduhm 2, 3, 2 1192; PWR5-NEXT: vspltish 3, 4 1193; PWR5-NEXT: vsrh 3, 2, 3 1194; PWR5-NEXT: vadduhm 2, 2, 3 1195; PWR5-NEXT: vspltisb 3, 15 1196; PWR5-NEXT: vxor 4, 4, 4 1197; PWR5-NEXT: vand 2, 2, 3 1198; PWR5-NEXT: vspltisb 3, 1 1199; PWR5-NEXT: vmladduhm 2, 2, 3, 4 1200; PWR5-NEXT: vspltish 3, 8 1201; PWR5-NEXT: vsrh 2, 2, 3 1202; PWR5-NEXT: vcmpgtuh 2, 2, 5 1203; PWR5-NEXT: blr 1204; 1205; PWR6-LABEL: ugt_2_v8i16: 1206; PWR6: # %bb.0: 1207; PWR6-NEXT: addis 3, 2, .LCPI14_0@toc@ha 1208; PWR6-NEXT: vspltish 3, 1 1209; PWR6-NEXT: addi 3, 3, .LCPI14_0@toc@l 1210; PWR6-NEXT: vsrh 3, 2, 3 1211; PWR6-NEXT: lvx 4, 0, 3 1212; PWR6-NEXT: addis 3, 2, .LCPI14_1@toc@ha 1213; PWR6-NEXT: addi 3, 3, .LCPI14_1@toc@l 1214; PWR6-NEXT: vspltish 5, 2 1215; PWR6-NEXT: vand 3, 3, 4 1216; PWR6-NEXT: lvx 4, 0, 3 1217; PWR6-NEXT: vsubuhm 2, 2, 3 1218; PWR6-NEXT: vand 3, 2, 4 1219; PWR6-NEXT: vsrh 2, 2, 5 1220; PWR6-NEXT: vand 2, 2, 4 1221; PWR6-NEXT: vadduhm 2, 3, 2 1222; PWR6-NEXT: vspltish 3, 4 1223; PWR6-NEXT: vsrh 3, 2, 3 1224; PWR6-NEXT: vadduhm 2, 2, 3 1225; PWR6-NEXT: vspltisb 3, 15 1226; PWR6-NEXT: vxor 4, 4, 4 1227; PWR6-NEXT: vand 2, 2, 3 1228; PWR6-NEXT: vspltisb 3, 1 1229; PWR6-NEXT: vmladduhm 2, 2, 3, 4 1230; PWR6-NEXT: vspltish 3, 8 1231; PWR6-NEXT: vsrh 2, 2, 3 1232; PWR6-NEXT: vcmpgtuh 2, 2, 5 1233; PWR6-NEXT: blr 1234; 1235; PWR7-LABEL: ugt_2_v8i16: 1236; PWR7: # %bb.0: 1237; PWR7-NEXT: vspltish 3, 1 1238; PWR7-NEXT: addis 3, 2, .LCPI14_0@toc@ha 1239; PWR7-NEXT: addi 3, 3, .LCPI14_0@toc@l 1240; PWR7-NEXT: vspltish 4, 2 1241; PWR7-NEXT: lxvw4x 0, 0, 3 1242; PWR7-NEXT: addis 3, 2, .LCPI14_1@toc@ha 1243; PWR7-NEXT: vspltish 5, 4 1244; PWR7-NEXT: vsrh 3, 2, 3 1245; PWR7-NEXT: addi 3, 3, .LCPI14_1@toc@l 1246; PWR7-NEXT: vspltisb 0, 15 1247; PWR7-NEXT: xxland 35, 35, 0 1248; PWR7-NEXT: lxvw4x 0, 0, 3 1249; PWR7-NEXT: vsubuhm 2, 2, 3 1250; PWR7-NEXT: vsrh 3, 2, 4 1251; PWR7-NEXT: xxland 34, 34, 0 1252; PWR7-NEXT: xxland 35, 35, 0 1253; PWR7-NEXT: vadduhm 2, 2, 3 1254; PWR7-NEXT: vsrh 3, 2, 5 1255; PWR7-NEXT: vxor 5, 5, 5 1256; PWR7-NEXT: vadduhm 2, 2, 3 1257; PWR7-NEXT: vspltisb 3, 1 1258; PWR7-NEXT: xxland 34, 34, 32 1259; PWR7-NEXT: vmladduhm 2, 2, 3, 5 1260; PWR7-NEXT: vspltish 3, 8 1261; PWR7-NEXT: vsrh 2, 2, 3 1262; PWR7-NEXT: vcmpgtuh 2, 2, 4 1263; PWR7-NEXT: blr 1264; 1265; PWR8-LABEL: ugt_2_v8i16: 1266; PWR8: # %bb.0: 1267; PWR8-NEXT: vspltish 3, 2 1268; PWR8-NEXT: vpopcnth 2, 2 1269; PWR8-NEXT: vcmpgtuh 2, 2, 3 1270; PWR8-NEXT: blr 1271; 1272; PWR9-LABEL: ugt_2_v8i16: 1273; PWR9: # %bb.0: 1274; PWR9-NEXT: vspltish 3, 2 1275; PWR9-NEXT: vpopcnth 2, 2 1276; PWR9-NEXT: vcmpgtuh 2, 2, 3 1277; PWR9-NEXT: blr 1278 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 1279 %3 = icmp ugt <8 x i16> %2, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2> 1280 %4 = sext <8 x i1> %3 to <8 x i16> 1281 ret <8 x i16> %4 1282} 1283 1284define <8 x i16> @ult_3_v8i16(<8 x i16> %0) { 1285; PWR5-LABEL: ult_3_v8i16: 1286; PWR5: # %bb.0: 1287; PWR5-NEXT: addis 3, 2, .LCPI15_0@toc@ha 1288; PWR5-NEXT: vspltish 4, 1 1289; PWR5-NEXT: vxor 3, 3, 3 1290; PWR5-NEXT: addi 3, 3, .LCPI15_0@toc@l 1291; PWR5-NEXT: lvx 5, 0, 3 1292; PWR5-NEXT: addis 3, 2, .LCPI15_1@toc@ha 1293; PWR5-NEXT: addi 3, 3, .LCPI15_1@toc@l 1294; PWR5-NEXT: vsrh 4, 2, 4 1295; PWR5-NEXT: vand 4, 4, 5 1296; PWR5-NEXT: vspltish 5, 2 1297; PWR5-NEXT: vsubuhm 2, 2, 4 1298; PWR5-NEXT: vsrh 4, 2, 5 1299; PWR5-NEXT: lvx 5, 0, 3 1300; PWR5-NEXT: vand 2, 2, 5 1301; PWR5-NEXT: vand 4, 4, 5 1302; PWR5-NEXT: vspltish 5, 4 1303; PWR5-NEXT: vadduhm 2, 2, 4 1304; PWR5-NEXT: vsrh 4, 2, 5 1305; PWR5-NEXT: vspltisb 5, 15 1306; PWR5-NEXT: vadduhm 2, 2, 4 1307; PWR5-NEXT: vspltisb 4, 1 1308; PWR5-NEXT: vand 2, 2, 5 1309; PWR5-NEXT: vmladduhm 2, 2, 4, 3 1310; PWR5-NEXT: vspltish 3, 8 1311; PWR5-NEXT: vsrh 2, 2, 3 1312; PWR5-NEXT: vspltish 3, 3 1313; PWR5-NEXT: vcmpgtuh 2, 3, 2 1314; PWR5-NEXT: blr 1315; 1316; PWR6-LABEL: ult_3_v8i16: 1317; PWR6: # %bb.0: 1318; PWR6-NEXT: addis 3, 2, .LCPI15_0@toc@ha 1319; PWR6-NEXT: vspltish 4, 1 1320; PWR6-NEXT: vxor 3, 3, 3 1321; PWR6-NEXT: addi 3, 3, .LCPI15_0@toc@l 1322; PWR6-NEXT: lvx 5, 0, 3 1323; PWR6-NEXT: addis 3, 2, .LCPI15_1@toc@ha 1324; PWR6-NEXT: addi 3, 3, .LCPI15_1@toc@l 1325; PWR6-NEXT: vsrh 4, 2, 4 1326; PWR6-NEXT: vand 4, 4, 5 1327; PWR6-NEXT: vspltish 5, 2 1328; PWR6-NEXT: vsubuhm 2, 2, 4 1329; PWR6-NEXT: vsrh 4, 2, 5 1330; PWR6-NEXT: lvx 5, 0, 3 1331; PWR6-NEXT: vand 2, 2, 5 1332; PWR6-NEXT: vand 4, 4, 5 1333; PWR6-NEXT: vspltish 5, 4 1334; PWR6-NEXT: vadduhm 2, 2, 4 1335; PWR6-NEXT: vsrh 4, 2, 5 1336; PWR6-NEXT: vspltisb 5, 15 1337; PWR6-NEXT: vadduhm 2, 2, 4 1338; PWR6-NEXT: vspltisb 4, 1 1339; PWR6-NEXT: vand 2, 2, 5 1340; PWR6-NEXT: vmladduhm 2, 2, 4, 3 1341; PWR6-NEXT: vspltish 3, 8 1342; PWR6-NEXT: vsrh 2, 2, 3 1343; PWR6-NEXT: vspltish 3, 3 1344; PWR6-NEXT: vcmpgtuh 2, 3, 2 1345; PWR6-NEXT: blr 1346; 1347; PWR7-LABEL: ult_3_v8i16: 1348; PWR7: # %bb.0: 1349; PWR7-NEXT: vspltish 3, 1 1350; PWR7-NEXT: addis 3, 2, .LCPI15_0@toc@ha 1351; PWR7-NEXT: addi 3, 3, .LCPI15_0@toc@l 1352; PWR7-NEXT: vspltish 4, 2 1353; PWR7-NEXT: lxvw4x 0, 0, 3 1354; PWR7-NEXT: addis 3, 2, .LCPI15_1@toc@ha 1355; PWR7-NEXT: vspltisb 5, 15 1356; PWR7-NEXT: vsrh 3, 2, 3 1357; PWR7-NEXT: addi 3, 3, .LCPI15_1@toc@l 1358; PWR7-NEXT: xxland 35, 35, 0 1359; PWR7-NEXT: lxvw4x 0, 0, 3 1360; PWR7-NEXT: vsubuhm 2, 2, 3 1361; PWR7-NEXT: vsrh 3, 2, 4 1362; PWR7-NEXT: xxland 34, 34, 0 1363; PWR7-NEXT: vspltish 4, 4 1364; PWR7-NEXT: xxland 35, 35, 0 1365; PWR7-NEXT: vadduhm 2, 2, 3 1366; PWR7-NEXT: vsrh 3, 2, 4 1367; PWR7-NEXT: vxor 4, 4, 4 1368; PWR7-NEXT: vadduhm 2, 2, 3 1369; PWR7-NEXT: vspltisb 3, 1 1370; PWR7-NEXT: xxland 34, 34, 37 1371; PWR7-NEXT: vmladduhm 2, 2, 3, 4 1372; PWR7-NEXT: vspltish 3, 8 1373; PWR7-NEXT: vsrh 2, 2, 3 1374; PWR7-NEXT: vspltish 3, 3 1375; PWR7-NEXT: vcmpgtuh 2, 3, 2 1376; PWR7-NEXT: blr 1377; 1378; PWR8-LABEL: ult_3_v8i16: 1379; PWR8: # %bb.0: 1380; PWR8-NEXT: vspltish 3, 3 1381; PWR8-NEXT: vpopcnth 2, 2 1382; PWR8-NEXT: vcmpgtuh 2, 3, 2 1383; PWR8-NEXT: blr 1384; 1385; PWR9-LABEL: ult_3_v8i16: 1386; PWR9: # %bb.0: 1387; PWR9-NEXT: vspltish 3, 3 1388; PWR9-NEXT: vpopcnth 2, 2 1389; PWR9-NEXT: vcmpgtuh 2, 3, 2 1390; PWR9-NEXT: blr 1391 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 1392 %3 = icmp ult <8 x i16> %2, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3> 1393 %4 = sext <8 x i1> %3 to <8 x i16> 1394 ret <8 x i16> %4 1395} 1396 1397define <8 x i16> @ugt_3_v8i16(<8 x i16> %0) { 1398; PWR5-LABEL: ugt_3_v8i16: 1399; PWR5: # %bb.0: 1400; PWR5-NEXT: addis 3, 2, .LCPI16_0@toc@ha 1401; PWR5-NEXT: vspltish 4, 1 1402; PWR5-NEXT: vxor 3, 3, 3 1403; PWR5-NEXT: addi 3, 3, .LCPI16_0@toc@l 1404; PWR5-NEXT: lvx 5, 0, 3 1405; PWR5-NEXT: addis 3, 2, .LCPI16_1@toc@ha 1406; PWR5-NEXT: addi 3, 3, .LCPI16_1@toc@l 1407; PWR5-NEXT: vsrh 4, 2, 4 1408; PWR5-NEXT: vand 4, 4, 5 1409; PWR5-NEXT: vspltish 5, 2 1410; PWR5-NEXT: vsubuhm 2, 2, 4 1411; PWR5-NEXT: vsrh 4, 2, 5 1412; PWR5-NEXT: lvx 5, 0, 3 1413; PWR5-NEXT: vand 2, 2, 5 1414; PWR5-NEXT: vand 4, 4, 5 1415; PWR5-NEXT: vspltish 5, 4 1416; PWR5-NEXT: vadduhm 2, 2, 4 1417; PWR5-NEXT: vsrh 4, 2, 5 1418; PWR5-NEXT: vspltisb 5, 15 1419; PWR5-NEXT: vadduhm 2, 2, 4 1420; PWR5-NEXT: vspltisb 4, 1 1421; PWR5-NEXT: vand 2, 2, 5 1422; PWR5-NEXT: vmladduhm 2, 2, 4, 3 1423; PWR5-NEXT: vspltish 3, 8 1424; PWR5-NEXT: vsrh 2, 2, 3 1425; PWR5-NEXT: vspltish 3, 3 1426; PWR5-NEXT: vcmpgtuh 2, 2, 3 1427; PWR5-NEXT: blr 1428; 1429; PWR6-LABEL: ugt_3_v8i16: 1430; PWR6: # %bb.0: 1431; PWR6-NEXT: addis 3, 2, .LCPI16_0@toc@ha 1432; PWR6-NEXT: vspltish 4, 1 1433; PWR6-NEXT: vxor 3, 3, 3 1434; PWR6-NEXT: addi 3, 3, .LCPI16_0@toc@l 1435; PWR6-NEXT: lvx 5, 0, 3 1436; PWR6-NEXT: addis 3, 2, .LCPI16_1@toc@ha 1437; PWR6-NEXT: addi 3, 3, .LCPI16_1@toc@l 1438; PWR6-NEXT: vsrh 4, 2, 4 1439; PWR6-NEXT: vand 4, 4, 5 1440; PWR6-NEXT: vspltish 5, 2 1441; PWR6-NEXT: vsubuhm 2, 2, 4 1442; PWR6-NEXT: vsrh 4, 2, 5 1443; PWR6-NEXT: lvx 5, 0, 3 1444; PWR6-NEXT: vand 2, 2, 5 1445; PWR6-NEXT: vand 4, 4, 5 1446; PWR6-NEXT: vspltish 5, 4 1447; PWR6-NEXT: vadduhm 2, 2, 4 1448; PWR6-NEXT: vsrh 4, 2, 5 1449; PWR6-NEXT: vspltisb 5, 15 1450; PWR6-NEXT: vadduhm 2, 2, 4 1451; PWR6-NEXT: vspltisb 4, 1 1452; PWR6-NEXT: vand 2, 2, 5 1453; PWR6-NEXT: vmladduhm 2, 2, 4, 3 1454; PWR6-NEXT: vspltish 3, 8 1455; PWR6-NEXT: vsrh 2, 2, 3 1456; PWR6-NEXT: vspltish 3, 3 1457; PWR6-NEXT: vcmpgtuh 2, 2, 3 1458; PWR6-NEXT: blr 1459; 1460; PWR7-LABEL: ugt_3_v8i16: 1461; PWR7: # %bb.0: 1462; PWR7-NEXT: vspltish 3, 1 1463; PWR7-NEXT: addis 3, 2, .LCPI16_0@toc@ha 1464; PWR7-NEXT: addi 3, 3, .LCPI16_0@toc@l 1465; PWR7-NEXT: vspltish 4, 2 1466; PWR7-NEXT: lxvw4x 0, 0, 3 1467; PWR7-NEXT: addis 3, 2, .LCPI16_1@toc@ha 1468; PWR7-NEXT: vspltisb 5, 15 1469; PWR7-NEXT: vsrh 3, 2, 3 1470; PWR7-NEXT: addi 3, 3, .LCPI16_1@toc@l 1471; PWR7-NEXT: xxland 35, 35, 0 1472; PWR7-NEXT: lxvw4x 0, 0, 3 1473; PWR7-NEXT: vsubuhm 2, 2, 3 1474; PWR7-NEXT: vsrh 3, 2, 4 1475; PWR7-NEXT: xxland 34, 34, 0 1476; PWR7-NEXT: vspltish 4, 4 1477; PWR7-NEXT: xxland 35, 35, 0 1478; PWR7-NEXT: vadduhm 2, 2, 3 1479; PWR7-NEXT: vsrh 3, 2, 4 1480; PWR7-NEXT: vxor 4, 4, 4 1481; PWR7-NEXT: vadduhm 2, 2, 3 1482; PWR7-NEXT: vspltisb 3, 1 1483; PWR7-NEXT: xxland 34, 34, 37 1484; PWR7-NEXT: vmladduhm 2, 2, 3, 4 1485; PWR7-NEXT: vspltish 3, 8 1486; PWR7-NEXT: vsrh 2, 2, 3 1487; PWR7-NEXT: vspltish 3, 3 1488; PWR7-NEXT: vcmpgtuh 2, 2, 3 1489; PWR7-NEXT: blr 1490; 1491; PWR8-LABEL: ugt_3_v8i16: 1492; PWR8: # %bb.0: 1493; PWR8-NEXT: vspltish 3, 3 1494; PWR8-NEXT: vpopcnth 2, 2 1495; PWR8-NEXT: vcmpgtuh 2, 2, 3 1496; PWR8-NEXT: blr 1497; 1498; PWR9-LABEL: ugt_3_v8i16: 1499; PWR9: # %bb.0: 1500; PWR9-NEXT: vspltish 3, 3 1501; PWR9-NEXT: vpopcnth 2, 2 1502; PWR9-NEXT: vcmpgtuh 2, 2, 3 1503; PWR9-NEXT: blr 1504 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 1505 %3 = icmp ugt <8 x i16> %2, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3> 1506 %4 = sext <8 x i1> %3 to <8 x i16> 1507 ret <8 x i16> %4 1508} 1509 1510define <8 x i16> @ult_4_v8i16(<8 x i16> %0) { 1511; PWR5-LABEL: ult_4_v8i16: 1512; PWR5: # %bb.0: 1513; PWR5-NEXT: addis 3, 2, .LCPI17_0@toc@ha 1514; PWR5-NEXT: vspltish 4, 1 1515; PWR5-NEXT: vxor 3, 3, 3 1516; PWR5-NEXT: addi 3, 3, .LCPI17_0@toc@l 1517; PWR5-NEXT: lvx 5, 0, 3 1518; PWR5-NEXT: addis 3, 2, .LCPI17_1@toc@ha 1519; PWR5-NEXT: addi 3, 3, .LCPI17_1@toc@l 1520; PWR5-NEXT: vsrh 4, 2, 4 1521; PWR5-NEXT: vand 4, 4, 5 1522; PWR5-NEXT: vspltish 5, 2 1523; PWR5-NEXT: vsubuhm 2, 2, 4 1524; PWR5-NEXT: vsrh 4, 2, 5 1525; PWR5-NEXT: lvx 5, 0, 3 1526; PWR5-NEXT: vand 2, 2, 5 1527; PWR5-NEXT: vand 4, 4, 5 1528; PWR5-NEXT: vspltish 5, 4 1529; PWR5-NEXT: vadduhm 2, 2, 4 1530; PWR5-NEXT: vsrh 4, 2, 5 1531; PWR5-NEXT: vadduhm 2, 2, 4 1532; PWR5-NEXT: vspltisb 4, 15 1533; PWR5-NEXT: vand 2, 2, 4 1534; PWR5-NEXT: vspltisb 4, 1 1535; PWR5-NEXT: vmladduhm 2, 2, 4, 3 1536; PWR5-NEXT: vspltish 3, 8 1537; PWR5-NEXT: vsrh 2, 2, 3 1538; PWR5-NEXT: vcmpgtuh 2, 5, 2 1539; PWR5-NEXT: blr 1540; 1541; PWR6-LABEL: ult_4_v8i16: 1542; PWR6: # %bb.0: 1543; PWR6-NEXT: addis 3, 2, .LCPI17_0@toc@ha 1544; PWR6-NEXT: vspltish 4, 1 1545; PWR6-NEXT: vxor 3, 3, 3 1546; PWR6-NEXT: addi 3, 3, .LCPI17_0@toc@l 1547; PWR6-NEXT: lvx 5, 0, 3 1548; PWR6-NEXT: addis 3, 2, .LCPI17_1@toc@ha 1549; PWR6-NEXT: addi 3, 3, .LCPI17_1@toc@l 1550; PWR6-NEXT: vsrh 4, 2, 4 1551; PWR6-NEXT: vand 4, 4, 5 1552; PWR6-NEXT: vspltish 5, 2 1553; PWR6-NEXT: vsubuhm 2, 2, 4 1554; PWR6-NEXT: vsrh 4, 2, 5 1555; PWR6-NEXT: lvx 5, 0, 3 1556; PWR6-NEXT: vand 2, 2, 5 1557; PWR6-NEXT: vand 4, 4, 5 1558; PWR6-NEXT: vspltish 5, 4 1559; PWR6-NEXT: vadduhm 2, 2, 4 1560; PWR6-NEXT: vsrh 4, 2, 5 1561; PWR6-NEXT: vadduhm 2, 2, 4 1562; PWR6-NEXT: vspltisb 4, 15 1563; PWR6-NEXT: vand 2, 2, 4 1564; PWR6-NEXT: vspltisb 4, 1 1565; PWR6-NEXT: vmladduhm 2, 2, 4, 3 1566; PWR6-NEXT: vspltish 3, 8 1567; PWR6-NEXT: vsrh 2, 2, 3 1568; PWR6-NEXT: vcmpgtuh 2, 5, 2 1569; PWR6-NEXT: blr 1570; 1571; PWR7-LABEL: ult_4_v8i16: 1572; PWR7: # %bb.0: 1573; PWR7-NEXT: vspltish 3, 1 1574; PWR7-NEXT: addis 3, 2, .LCPI17_0@toc@ha 1575; PWR7-NEXT: vxor 5, 5, 5 1576; PWR7-NEXT: addi 3, 3, .LCPI17_0@toc@l 1577; PWR7-NEXT: vspltish 4, 2 1578; PWR7-NEXT: lxvw4x 0, 0, 3 1579; PWR7-NEXT: addis 3, 2, .LCPI17_1@toc@ha 1580; PWR7-NEXT: vspltisb 0, 15 1581; PWR7-NEXT: vsrh 3, 2, 3 1582; PWR7-NEXT: addi 3, 3, .LCPI17_1@toc@l 1583; PWR7-NEXT: xxland 35, 35, 0 1584; PWR7-NEXT: lxvw4x 0, 0, 3 1585; PWR7-NEXT: vsubuhm 2, 2, 3 1586; PWR7-NEXT: vsrh 3, 2, 4 1587; PWR7-NEXT: xxland 34, 34, 0 1588; PWR7-NEXT: vspltish 4, 4 1589; PWR7-NEXT: xxland 35, 35, 0 1590; PWR7-NEXT: vadduhm 2, 2, 3 1591; PWR7-NEXT: vsrh 3, 2, 4 1592; PWR7-NEXT: vadduhm 2, 2, 3 1593; PWR7-NEXT: vspltisb 3, 1 1594; PWR7-NEXT: xxland 34, 34, 32 1595; PWR7-NEXT: vmladduhm 2, 2, 3, 5 1596; PWR7-NEXT: vspltish 3, 8 1597; PWR7-NEXT: vsrh 2, 2, 3 1598; PWR7-NEXT: vcmpgtuh 2, 4, 2 1599; PWR7-NEXT: blr 1600; 1601; PWR8-LABEL: ult_4_v8i16: 1602; PWR8: # %bb.0: 1603; PWR8-NEXT: vspltish 3, 4 1604; PWR8-NEXT: vpopcnth 2, 2 1605; PWR8-NEXT: vcmpgtuh 2, 3, 2 1606; PWR8-NEXT: blr 1607; 1608; PWR9-LABEL: ult_4_v8i16: 1609; PWR9: # %bb.0: 1610; PWR9-NEXT: vspltish 3, 4 1611; PWR9-NEXT: vpopcnth 2, 2 1612; PWR9-NEXT: vcmpgtuh 2, 3, 2 1613; PWR9-NEXT: blr 1614 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 1615 %3 = icmp ult <8 x i16> %2, <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4> 1616 %4 = sext <8 x i1> %3 to <8 x i16> 1617 ret <8 x i16> %4 1618} 1619 1620define <8 x i16> @ugt_4_v8i16(<8 x i16> %0) { 1621; PWR5-LABEL: ugt_4_v8i16: 1622; PWR5: # %bb.0: 1623; PWR5-NEXT: addis 3, 2, .LCPI18_0@toc@ha 1624; PWR5-NEXT: vspltish 4, 1 1625; PWR5-NEXT: vxor 3, 3, 3 1626; PWR5-NEXT: addi 3, 3, .LCPI18_0@toc@l 1627; PWR5-NEXT: lvx 5, 0, 3 1628; PWR5-NEXT: addis 3, 2, .LCPI18_1@toc@ha 1629; PWR5-NEXT: addi 3, 3, .LCPI18_1@toc@l 1630; PWR5-NEXT: vsrh 4, 2, 4 1631; PWR5-NEXT: vand 4, 4, 5 1632; PWR5-NEXT: vspltish 5, 2 1633; PWR5-NEXT: vsubuhm 2, 2, 4 1634; PWR5-NEXT: vsrh 4, 2, 5 1635; PWR5-NEXT: lvx 5, 0, 3 1636; PWR5-NEXT: vand 2, 2, 5 1637; PWR5-NEXT: vand 4, 4, 5 1638; PWR5-NEXT: vspltish 5, 4 1639; PWR5-NEXT: vadduhm 2, 2, 4 1640; PWR5-NEXT: vsrh 4, 2, 5 1641; PWR5-NEXT: vadduhm 2, 2, 4 1642; PWR5-NEXT: vspltisb 4, 15 1643; PWR5-NEXT: vand 2, 2, 4 1644; PWR5-NEXT: vspltisb 4, 1 1645; PWR5-NEXT: vmladduhm 2, 2, 4, 3 1646; PWR5-NEXT: vspltish 3, 8 1647; PWR5-NEXT: vsrh 2, 2, 3 1648; PWR5-NEXT: vcmpgtuh 2, 2, 5 1649; PWR5-NEXT: blr 1650; 1651; PWR6-LABEL: ugt_4_v8i16: 1652; PWR6: # %bb.0: 1653; PWR6-NEXT: addis 3, 2, .LCPI18_0@toc@ha 1654; PWR6-NEXT: vspltish 4, 1 1655; PWR6-NEXT: vxor 3, 3, 3 1656; PWR6-NEXT: addi 3, 3, .LCPI18_0@toc@l 1657; PWR6-NEXT: lvx 5, 0, 3 1658; PWR6-NEXT: addis 3, 2, .LCPI18_1@toc@ha 1659; PWR6-NEXT: addi 3, 3, .LCPI18_1@toc@l 1660; PWR6-NEXT: vsrh 4, 2, 4 1661; PWR6-NEXT: vand 4, 4, 5 1662; PWR6-NEXT: vspltish 5, 2 1663; PWR6-NEXT: vsubuhm 2, 2, 4 1664; PWR6-NEXT: vsrh 4, 2, 5 1665; PWR6-NEXT: lvx 5, 0, 3 1666; PWR6-NEXT: vand 2, 2, 5 1667; PWR6-NEXT: vand 4, 4, 5 1668; PWR6-NEXT: vspltish 5, 4 1669; PWR6-NEXT: vadduhm 2, 2, 4 1670; PWR6-NEXT: vsrh 4, 2, 5 1671; PWR6-NEXT: vadduhm 2, 2, 4 1672; PWR6-NEXT: vspltisb 4, 15 1673; PWR6-NEXT: vand 2, 2, 4 1674; PWR6-NEXT: vspltisb 4, 1 1675; PWR6-NEXT: vmladduhm 2, 2, 4, 3 1676; PWR6-NEXT: vspltish 3, 8 1677; PWR6-NEXT: vsrh 2, 2, 3 1678; PWR6-NEXT: vcmpgtuh 2, 2, 5 1679; PWR6-NEXT: blr 1680; 1681; PWR7-LABEL: ugt_4_v8i16: 1682; PWR7: # %bb.0: 1683; PWR7-NEXT: vspltish 3, 1 1684; PWR7-NEXT: addis 3, 2, .LCPI18_0@toc@ha 1685; PWR7-NEXT: vxor 5, 5, 5 1686; PWR7-NEXT: addi 3, 3, .LCPI18_0@toc@l 1687; PWR7-NEXT: vspltish 4, 2 1688; PWR7-NEXT: lxvw4x 0, 0, 3 1689; PWR7-NEXT: addis 3, 2, .LCPI18_1@toc@ha 1690; PWR7-NEXT: vspltisb 0, 15 1691; PWR7-NEXT: vsrh 3, 2, 3 1692; PWR7-NEXT: addi 3, 3, .LCPI18_1@toc@l 1693; PWR7-NEXT: xxland 35, 35, 0 1694; PWR7-NEXT: lxvw4x 0, 0, 3 1695; PWR7-NEXT: vsubuhm 2, 2, 3 1696; PWR7-NEXT: vsrh 3, 2, 4 1697; PWR7-NEXT: xxland 34, 34, 0 1698; PWR7-NEXT: vspltish 4, 4 1699; PWR7-NEXT: xxland 35, 35, 0 1700; PWR7-NEXT: vadduhm 2, 2, 3 1701; PWR7-NEXT: vsrh 3, 2, 4 1702; PWR7-NEXT: vadduhm 2, 2, 3 1703; PWR7-NEXT: vspltisb 3, 1 1704; PWR7-NEXT: xxland 34, 34, 32 1705; PWR7-NEXT: vmladduhm 2, 2, 3, 5 1706; PWR7-NEXT: vspltish 3, 8 1707; PWR7-NEXT: vsrh 2, 2, 3 1708; PWR7-NEXT: vcmpgtuh 2, 2, 4 1709; PWR7-NEXT: blr 1710; 1711; PWR8-LABEL: ugt_4_v8i16: 1712; PWR8: # %bb.0: 1713; PWR8-NEXT: vspltish 3, 4 1714; PWR8-NEXT: vpopcnth 2, 2 1715; PWR8-NEXT: vcmpgtuh 2, 2, 3 1716; PWR8-NEXT: blr 1717; 1718; PWR9-LABEL: ugt_4_v8i16: 1719; PWR9: # %bb.0: 1720; PWR9-NEXT: vspltish 3, 4 1721; PWR9-NEXT: vpopcnth 2, 2 1722; PWR9-NEXT: vcmpgtuh 2, 2, 3 1723; PWR9-NEXT: blr 1724 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 1725 %3 = icmp ugt <8 x i16> %2, <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4> 1726 %4 = sext <8 x i1> %3 to <8 x i16> 1727 ret <8 x i16> %4 1728} 1729 1730define <8 x i16> @ult_5_v8i16(<8 x i16> %0) { 1731; PWR5-LABEL: ult_5_v8i16: 1732; PWR5: # %bb.0: 1733; PWR5-NEXT: addis 3, 2, .LCPI19_0@toc@ha 1734; PWR5-NEXT: vspltish 4, 1 1735; PWR5-NEXT: vxor 3, 3, 3 1736; PWR5-NEXT: addi 3, 3, .LCPI19_0@toc@l 1737; PWR5-NEXT: lvx 5, 0, 3 1738; PWR5-NEXT: addis 3, 2, .LCPI19_1@toc@ha 1739; PWR5-NEXT: addi 3, 3, .LCPI19_1@toc@l 1740; PWR5-NEXT: vsrh 4, 2, 4 1741; PWR5-NEXT: vand 4, 4, 5 1742; PWR5-NEXT: vspltish 5, 2 1743; PWR5-NEXT: vsubuhm 2, 2, 4 1744; PWR5-NEXT: vsrh 4, 2, 5 1745; PWR5-NEXT: lvx 5, 0, 3 1746; PWR5-NEXT: vand 2, 2, 5 1747; PWR5-NEXT: vand 4, 4, 5 1748; PWR5-NEXT: vspltish 5, 4 1749; PWR5-NEXT: vadduhm 2, 2, 4 1750; PWR5-NEXT: vsrh 4, 2, 5 1751; PWR5-NEXT: vspltisb 5, 15 1752; PWR5-NEXT: vadduhm 2, 2, 4 1753; PWR5-NEXT: vspltisb 4, 1 1754; PWR5-NEXT: vand 2, 2, 5 1755; PWR5-NEXT: vmladduhm 2, 2, 4, 3 1756; PWR5-NEXT: vspltish 3, 8 1757; PWR5-NEXT: vsrh 2, 2, 3 1758; PWR5-NEXT: vspltish 3, 5 1759; PWR5-NEXT: vcmpgtuh 2, 3, 2 1760; PWR5-NEXT: blr 1761; 1762; PWR6-LABEL: ult_5_v8i16: 1763; PWR6: # %bb.0: 1764; PWR6-NEXT: addis 3, 2, .LCPI19_0@toc@ha 1765; PWR6-NEXT: vspltish 4, 1 1766; PWR6-NEXT: vxor 3, 3, 3 1767; PWR6-NEXT: addi 3, 3, .LCPI19_0@toc@l 1768; PWR6-NEXT: lvx 5, 0, 3 1769; PWR6-NEXT: addis 3, 2, .LCPI19_1@toc@ha 1770; PWR6-NEXT: addi 3, 3, .LCPI19_1@toc@l 1771; PWR6-NEXT: vsrh 4, 2, 4 1772; PWR6-NEXT: vand 4, 4, 5 1773; PWR6-NEXT: vspltish 5, 2 1774; PWR6-NEXT: vsubuhm 2, 2, 4 1775; PWR6-NEXT: vsrh 4, 2, 5 1776; PWR6-NEXT: lvx 5, 0, 3 1777; PWR6-NEXT: vand 2, 2, 5 1778; PWR6-NEXT: vand 4, 4, 5 1779; PWR6-NEXT: vspltish 5, 4 1780; PWR6-NEXT: vadduhm 2, 2, 4 1781; PWR6-NEXT: vsrh 4, 2, 5 1782; PWR6-NEXT: vspltisb 5, 15 1783; PWR6-NEXT: vadduhm 2, 2, 4 1784; PWR6-NEXT: vspltisb 4, 1 1785; PWR6-NEXT: vand 2, 2, 5 1786; PWR6-NEXT: vmladduhm 2, 2, 4, 3 1787; PWR6-NEXT: vspltish 3, 8 1788; PWR6-NEXT: vsrh 2, 2, 3 1789; PWR6-NEXT: vspltish 3, 5 1790; PWR6-NEXT: vcmpgtuh 2, 3, 2 1791; PWR6-NEXT: blr 1792; 1793; PWR7-LABEL: ult_5_v8i16: 1794; PWR7: # %bb.0: 1795; PWR7-NEXT: vspltish 3, 1 1796; PWR7-NEXT: addis 3, 2, .LCPI19_0@toc@ha 1797; PWR7-NEXT: addi 3, 3, .LCPI19_0@toc@l 1798; PWR7-NEXT: vspltish 4, 2 1799; PWR7-NEXT: lxvw4x 0, 0, 3 1800; PWR7-NEXT: addis 3, 2, .LCPI19_1@toc@ha 1801; PWR7-NEXT: vspltisb 5, 15 1802; PWR7-NEXT: vsrh 3, 2, 3 1803; PWR7-NEXT: addi 3, 3, .LCPI19_1@toc@l 1804; PWR7-NEXT: xxland 35, 35, 0 1805; PWR7-NEXT: lxvw4x 0, 0, 3 1806; PWR7-NEXT: vsubuhm 2, 2, 3 1807; PWR7-NEXT: vsrh 3, 2, 4 1808; PWR7-NEXT: xxland 34, 34, 0 1809; PWR7-NEXT: vspltish 4, 4 1810; PWR7-NEXT: xxland 35, 35, 0 1811; PWR7-NEXT: vadduhm 2, 2, 3 1812; PWR7-NEXT: vsrh 3, 2, 4 1813; PWR7-NEXT: vxor 4, 4, 4 1814; PWR7-NEXT: vadduhm 2, 2, 3 1815; PWR7-NEXT: vspltisb 3, 1 1816; PWR7-NEXT: xxland 34, 34, 37 1817; PWR7-NEXT: vmladduhm 2, 2, 3, 4 1818; PWR7-NEXT: vspltish 3, 8 1819; PWR7-NEXT: vsrh 2, 2, 3 1820; PWR7-NEXT: vspltish 3, 5 1821; PWR7-NEXT: vcmpgtuh 2, 3, 2 1822; PWR7-NEXT: blr 1823; 1824; PWR8-LABEL: ult_5_v8i16: 1825; PWR8: # %bb.0: 1826; PWR8-NEXT: vspltish 3, 5 1827; PWR8-NEXT: vpopcnth 2, 2 1828; PWR8-NEXT: vcmpgtuh 2, 3, 2 1829; PWR8-NEXT: blr 1830; 1831; PWR9-LABEL: ult_5_v8i16: 1832; PWR9: # %bb.0: 1833; PWR9-NEXT: vspltish 3, 5 1834; PWR9-NEXT: vpopcnth 2, 2 1835; PWR9-NEXT: vcmpgtuh 2, 3, 2 1836; PWR9-NEXT: blr 1837 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 1838 %3 = icmp ult <8 x i16> %2, <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5> 1839 %4 = sext <8 x i1> %3 to <8 x i16> 1840 ret <8 x i16> %4 1841} 1842 1843define <8 x i16> @ugt_5_v8i16(<8 x i16> %0) { 1844; PWR5-LABEL: ugt_5_v8i16: 1845; PWR5: # %bb.0: 1846; PWR5-NEXT: addis 3, 2, .LCPI20_0@toc@ha 1847; PWR5-NEXT: vspltish 4, 1 1848; PWR5-NEXT: vxor 3, 3, 3 1849; PWR5-NEXT: addi 3, 3, .LCPI20_0@toc@l 1850; PWR5-NEXT: lvx 5, 0, 3 1851; PWR5-NEXT: addis 3, 2, .LCPI20_1@toc@ha 1852; PWR5-NEXT: addi 3, 3, .LCPI20_1@toc@l 1853; PWR5-NEXT: vsrh 4, 2, 4 1854; PWR5-NEXT: vand 4, 4, 5 1855; PWR5-NEXT: vspltish 5, 2 1856; PWR5-NEXT: vsubuhm 2, 2, 4 1857; PWR5-NEXT: vsrh 4, 2, 5 1858; PWR5-NEXT: lvx 5, 0, 3 1859; PWR5-NEXT: vand 2, 2, 5 1860; PWR5-NEXT: vand 4, 4, 5 1861; PWR5-NEXT: vspltish 5, 4 1862; PWR5-NEXT: vadduhm 2, 2, 4 1863; PWR5-NEXT: vsrh 4, 2, 5 1864; PWR5-NEXT: vspltisb 5, 15 1865; PWR5-NEXT: vadduhm 2, 2, 4 1866; PWR5-NEXT: vspltisb 4, 1 1867; PWR5-NEXT: vand 2, 2, 5 1868; PWR5-NEXT: vmladduhm 2, 2, 4, 3 1869; PWR5-NEXT: vspltish 3, 8 1870; PWR5-NEXT: vsrh 2, 2, 3 1871; PWR5-NEXT: vspltish 3, 5 1872; PWR5-NEXT: vcmpgtuh 2, 2, 3 1873; PWR5-NEXT: blr 1874; 1875; PWR6-LABEL: ugt_5_v8i16: 1876; PWR6: # %bb.0: 1877; PWR6-NEXT: addis 3, 2, .LCPI20_0@toc@ha 1878; PWR6-NEXT: vspltish 4, 1 1879; PWR6-NEXT: vxor 3, 3, 3 1880; PWR6-NEXT: addi 3, 3, .LCPI20_0@toc@l 1881; PWR6-NEXT: lvx 5, 0, 3 1882; PWR6-NEXT: addis 3, 2, .LCPI20_1@toc@ha 1883; PWR6-NEXT: addi 3, 3, .LCPI20_1@toc@l 1884; PWR6-NEXT: vsrh 4, 2, 4 1885; PWR6-NEXT: vand 4, 4, 5 1886; PWR6-NEXT: vspltish 5, 2 1887; PWR6-NEXT: vsubuhm 2, 2, 4 1888; PWR6-NEXT: vsrh 4, 2, 5 1889; PWR6-NEXT: lvx 5, 0, 3 1890; PWR6-NEXT: vand 2, 2, 5 1891; PWR6-NEXT: vand 4, 4, 5 1892; PWR6-NEXT: vspltish 5, 4 1893; PWR6-NEXT: vadduhm 2, 2, 4 1894; PWR6-NEXT: vsrh 4, 2, 5 1895; PWR6-NEXT: vspltisb 5, 15 1896; PWR6-NEXT: vadduhm 2, 2, 4 1897; PWR6-NEXT: vspltisb 4, 1 1898; PWR6-NEXT: vand 2, 2, 5 1899; PWR6-NEXT: vmladduhm 2, 2, 4, 3 1900; PWR6-NEXT: vspltish 3, 8 1901; PWR6-NEXT: vsrh 2, 2, 3 1902; PWR6-NEXT: vspltish 3, 5 1903; PWR6-NEXT: vcmpgtuh 2, 2, 3 1904; PWR6-NEXT: blr 1905; 1906; PWR7-LABEL: ugt_5_v8i16: 1907; PWR7: # %bb.0: 1908; PWR7-NEXT: vspltish 3, 1 1909; PWR7-NEXT: addis 3, 2, .LCPI20_0@toc@ha 1910; PWR7-NEXT: addi 3, 3, .LCPI20_0@toc@l 1911; PWR7-NEXT: vspltish 4, 2 1912; PWR7-NEXT: lxvw4x 0, 0, 3 1913; PWR7-NEXT: addis 3, 2, .LCPI20_1@toc@ha 1914; PWR7-NEXT: vspltisb 5, 15 1915; PWR7-NEXT: vsrh 3, 2, 3 1916; PWR7-NEXT: addi 3, 3, .LCPI20_1@toc@l 1917; PWR7-NEXT: xxland 35, 35, 0 1918; PWR7-NEXT: lxvw4x 0, 0, 3 1919; PWR7-NEXT: vsubuhm 2, 2, 3 1920; PWR7-NEXT: vsrh 3, 2, 4 1921; PWR7-NEXT: xxland 34, 34, 0 1922; PWR7-NEXT: vspltish 4, 4 1923; PWR7-NEXT: xxland 35, 35, 0 1924; PWR7-NEXT: vadduhm 2, 2, 3 1925; PWR7-NEXT: vsrh 3, 2, 4 1926; PWR7-NEXT: vxor 4, 4, 4 1927; PWR7-NEXT: vadduhm 2, 2, 3 1928; PWR7-NEXT: vspltisb 3, 1 1929; PWR7-NEXT: xxland 34, 34, 37 1930; PWR7-NEXT: vmladduhm 2, 2, 3, 4 1931; PWR7-NEXT: vspltish 3, 8 1932; PWR7-NEXT: vsrh 2, 2, 3 1933; PWR7-NEXT: vspltish 3, 5 1934; PWR7-NEXT: vcmpgtuh 2, 2, 3 1935; PWR7-NEXT: blr 1936; 1937; PWR8-LABEL: ugt_5_v8i16: 1938; PWR8: # %bb.0: 1939; PWR8-NEXT: vspltish 3, 5 1940; PWR8-NEXT: vpopcnth 2, 2 1941; PWR8-NEXT: vcmpgtuh 2, 2, 3 1942; PWR8-NEXT: blr 1943; 1944; PWR9-LABEL: ugt_5_v8i16: 1945; PWR9: # %bb.0: 1946; PWR9-NEXT: vspltish 3, 5 1947; PWR9-NEXT: vpopcnth 2, 2 1948; PWR9-NEXT: vcmpgtuh 2, 2, 3 1949; PWR9-NEXT: blr 1950 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 1951 %3 = icmp ugt <8 x i16> %2, <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5> 1952 %4 = sext <8 x i1> %3 to <8 x i16> 1953 ret <8 x i16> %4 1954} 1955 1956define <8 x i16> @ult_6_v8i16(<8 x i16> %0) { 1957; PWR5-LABEL: ult_6_v8i16: 1958; PWR5: # %bb.0: 1959; PWR5-NEXT: addis 3, 2, .LCPI21_0@toc@ha 1960; PWR5-NEXT: vspltish 4, 1 1961; PWR5-NEXT: vxor 3, 3, 3 1962; PWR5-NEXT: addi 3, 3, .LCPI21_0@toc@l 1963; PWR5-NEXT: lvx 5, 0, 3 1964; PWR5-NEXT: addis 3, 2, .LCPI21_1@toc@ha 1965; PWR5-NEXT: addi 3, 3, .LCPI21_1@toc@l 1966; PWR5-NEXT: vsrh 4, 2, 4 1967; PWR5-NEXT: vand 4, 4, 5 1968; PWR5-NEXT: vspltish 5, 2 1969; PWR5-NEXT: vsubuhm 2, 2, 4 1970; PWR5-NEXT: vsrh 4, 2, 5 1971; PWR5-NEXT: lvx 5, 0, 3 1972; PWR5-NEXT: vand 2, 2, 5 1973; PWR5-NEXT: vand 4, 4, 5 1974; PWR5-NEXT: vspltish 5, 4 1975; PWR5-NEXT: vadduhm 2, 2, 4 1976; PWR5-NEXT: vsrh 4, 2, 5 1977; PWR5-NEXT: vspltisb 5, 15 1978; PWR5-NEXT: vadduhm 2, 2, 4 1979; PWR5-NEXT: vspltisb 4, 1 1980; PWR5-NEXT: vand 2, 2, 5 1981; PWR5-NEXT: vmladduhm 2, 2, 4, 3 1982; PWR5-NEXT: vspltish 3, 8 1983; PWR5-NEXT: vsrh 2, 2, 3 1984; PWR5-NEXT: vspltish 3, 6 1985; PWR5-NEXT: vcmpgtuh 2, 3, 2 1986; PWR5-NEXT: blr 1987; 1988; PWR6-LABEL: ult_6_v8i16: 1989; PWR6: # %bb.0: 1990; PWR6-NEXT: addis 3, 2, .LCPI21_0@toc@ha 1991; PWR6-NEXT: vspltish 4, 1 1992; PWR6-NEXT: vxor 3, 3, 3 1993; PWR6-NEXT: addi 3, 3, .LCPI21_0@toc@l 1994; PWR6-NEXT: lvx 5, 0, 3 1995; PWR6-NEXT: addis 3, 2, .LCPI21_1@toc@ha 1996; PWR6-NEXT: addi 3, 3, .LCPI21_1@toc@l 1997; PWR6-NEXT: vsrh 4, 2, 4 1998; PWR6-NEXT: vand 4, 4, 5 1999; PWR6-NEXT: vspltish 5, 2 2000; PWR6-NEXT: vsubuhm 2, 2, 4 2001; PWR6-NEXT: vsrh 4, 2, 5 2002; PWR6-NEXT: lvx 5, 0, 3 2003; PWR6-NEXT: vand 2, 2, 5 2004; PWR6-NEXT: vand 4, 4, 5 2005; PWR6-NEXT: vspltish 5, 4 2006; PWR6-NEXT: vadduhm 2, 2, 4 2007; PWR6-NEXT: vsrh 4, 2, 5 2008; PWR6-NEXT: vspltisb 5, 15 2009; PWR6-NEXT: vadduhm 2, 2, 4 2010; PWR6-NEXT: vspltisb 4, 1 2011; PWR6-NEXT: vand 2, 2, 5 2012; PWR6-NEXT: vmladduhm 2, 2, 4, 3 2013; PWR6-NEXT: vspltish 3, 8 2014; PWR6-NEXT: vsrh 2, 2, 3 2015; PWR6-NEXT: vspltish 3, 6 2016; PWR6-NEXT: vcmpgtuh 2, 3, 2 2017; PWR6-NEXT: blr 2018; 2019; PWR7-LABEL: ult_6_v8i16: 2020; PWR7: # %bb.0: 2021; PWR7-NEXT: vspltish 3, 1 2022; PWR7-NEXT: addis 3, 2, .LCPI21_0@toc@ha 2023; PWR7-NEXT: addi 3, 3, .LCPI21_0@toc@l 2024; PWR7-NEXT: vspltish 4, 2 2025; PWR7-NEXT: lxvw4x 0, 0, 3 2026; PWR7-NEXT: addis 3, 2, .LCPI21_1@toc@ha 2027; PWR7-NEXT: vspltisb 5, 15 2028; PWR7-NEXT: vsrh 3, 2, 3 2029; PWR7-NEXT: addi 3, 3, .LCPI21_1@toc@l 2030; PWR7-NEXT: xxland 35, 35, 0 2031; PWR7-NEXT: lxvw4x 0, 0, 3 2032; PWR7-NEXT: vsubuhm 2, 2, 3 2033; PWR7-NEXT: vsrh 3, 2, 4 2034; PWR7-NEXT: xxland 34, 34, 0 2035; PWR7-NEXT: vspltish 4, 4 2036; PWR7-NEXT: xxland 35, 35, 0 2037; PWR7-NEXT: vadduhm 2, 2, 3 2038; PWR7-NEXT: vsrh 3, 2, 4 2039; PWR7-NEXT: vxor 4, 4, 4 2040; PWR7-NEXT: vadduhm 2, 2, 3 2041; PWR7-NEXT: vspltisb 3, 1 2042; PWR7-NEXT: xxland 34, 34, 37 2043; PWR7-NEXT: vmladduhm 2, 2, 3, 4 2044; PWR7-NEXT: vspltish 3, 8 2045; PWR7-NEXT: vsrh 2, 2, 3 2046; PWR7-NEXT: vspltish 3, 6 2047; PWR7-NEXT: vcmpgtuh 2, 3, 2 2048; PWR7-NEXT: blr 2049; 2050; PWR8-LABEL: ult_6_v8i16: 2051; PWR8: # %bb.0: 2052; PWR8-NEXT: vspltish 3, 6 2053; PWR8-NEXT: vpopcnth 2, 2 2054; PWR8-NEXT: vcmpgtuh 2, 3, 2 2055; PWR8-NEXT: blr 2056; 2057; PWR9-LABEL: ult_6_v8i16: 2058; PWR9: # %bb.0: 2059; PWR9-NEXT: vspltish 3, 6 2060; PWR9-NEXT: vpopcnth 2, 2 2061; PWR9-NEXT: vcmpgtuh 2, 3, 2 2062; PWR9-NEXT: blr 2063 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 2064 %3 = icmp ult <8 x i16> %2, <i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6> 2065 %4 = sext <8 x i1> %3 to <8 x i16> 2066 ret <8 x i16> %4 2067} 2068 2069define <8 x i16> @ugt_6_v8i16(<8 x i16> %0) { 2070; PWR5-LABEL: ugt_6_v8i16: 2071; PWR5: # %bb.0: 2072; PWR5-NEXT: addis 3, 2, .LCPI22_0@toc@ha 2073; PWR5-NEXT: vspltish 4, 1 2074; PWR5-NEXT: vxor 3, 3, 3 2075; PWR5-NEXT: addi 3, 3, .LCPI22_0@toc@l 2076; PWR5-NEXT: lvx 5, 0, 3 2077; PWR5-NEXT: addis 3, 2, .LCPI22_1@toc@ha 2078; PWR5-NEXT: addi 3, 3, .LCPI22_1@toc@l 2079; PWR5-NEXT: vsrh 4, 2, 4 2080; PWR5-NEXT: vand 4, 4, 5 2081; PWR5-NEXT: vspltish 5, 2 2082; PWR5-NEXT: vsubuhm 2, 2, 4 2083; PWR5-NEXT: vsrh 4, 2, 5 2084; PWR5-NEXT: lvx 5, 0, 3 2085; PWR5-NEXT: vand 2, 2, 5 2086; PWR5-NEXT: vand 4, 4, 5 2087; PWR5-NEXT: vspltish 5, 4 2088; PWR5-NEXT: vadduhm 2, 2, 4 2089; PWR5-NEXT: vsrh 4, 2, 5 2090; PWR5-NEXT: vspltisb 5, 15 2091; PWR5-NEXT: vadduhm 2, 2, 4 2092; PWR5-NEXT: vspltisb 4, 1 2093; PWR5-NEXT: vand 2, 2, 5 2094; PWR5-NEXT: vmladduhm 2, 2, 4, 3 2095; PWR5-NEXT: vspltish 3, 8 2096; PWR5-NEXT: vsrh 2, 2, 3 2097; PWR5-NEXT: vspltish 3, 6 2098; PWR5-NEXT: vcmpgtuh 2, 2, 3 2099; PWR5-NEXT: blr 2100; 2101; PWR6-LABEL: ugt_6_v8i16: 2102; PWR6: # %bb.0: 2103; PWR6-NEXT: addis 3, 2, .LCPI22_0@toc@ha 2104; PWR6-NEXT: vspltish 4, 1 2105; PWR6-NEXT: vxor 3, 3, 3 2106; PWR6-NEXT: addi 3, 3, .LCPI22_0@toc@l 2107; PWR6-NEXT: lvx 5, 0, 3 2108; PWR6-NEXT: addis 3, 2, .LCPI22_1@toc@ha 2109; PWR6-NEXT: addi 3, 3, .LCPI22_1@toc@l 2110; PWR6-NEXT: vsrh 4, 2, 4 2111; PWR6-NEXT: vand 4, 4, 5 2112; PWR6-NEXT: vspltish 5, 2 2113; PWR6-NEXT: vsubuhm 2, 2, 4 2114; PWR6-NEXT: vsrh 4, 2, 5 2115; PWR6-NEXT: lvx 5, 0, 3 2116; PWR6-NEXT: vand 2, 2, 5 2117; PWR6-NEXT: vand 4, 4, 5 2118; PWR6-NEXT: vspltish 5, 4 2119; PWR6-NEXT: vadduhm 2, 2, 4 2120; PWR6-NEXT: vsrh 4, 2, 5 2121; PWR6-NEXT: vspltisb 5, 15 2122; PWR6-NEXT: vadduhm 2, 2, 4 2123; PWR6-NEXT: vspltisb 4, 1 2124; PWR6-NEXT: vand 2, 2, 5 2125; PWR6-NEXT: vmladduhm 2, 2, 4, 3 2126; PWR6-NEXT: vspltish 3, 8 2127; PWR6-NEXT: vsrh 2, 2, 3 2128; PWR6-NEXT: vspltish 3, 6 2129; PWR6-NEXT: vcmpgtuh 2, 2, 3 2130; PWR6-NEXT: blr 2131; 2132; PWR7-LABEL: ugt_6_v8i16: 2133; PWR7: # %bb.0: 2134; PWR7-NEXT: vspltish 3, 1 2135; PWR7-NEXT: addis 3, 2, .LCPI22_0@toc@ha 2136; PWR7-NEXT: addi 3, 3, .LCPI22_0@toc@l 2137; PWR7-NEXT: vspltish 4, 2 2138; PWR7-NEXT: lxvw4x 0, 0, 3 2139; PWR7-NEXT: addis 3, 2, .LCPI22_1@toc@ha 2140; PWR7-NEXT: vspltisb 5, 15 2141; PWR7-NEXT: vsrh 3, 2, 3 2142; PWR7-NEXT: addi 3, 3, .LCPI22_1@toc@l 2143; PWR7-NEXT: xxland 35, 35, 0 2144; PWR7-NEXT: lxvw4x 0, 0, 3 2145; PWR7-NEXT: vsubuhm 2, 2, 3 2146; PWR7-NEXT: vsrh 3, 2, 4 2147; PWR7-NEXT: xxland 34, 34, 0 2148; PWR7-NEXT: vspltish 4, 4 2149; PWR7-NEXT: xxland 35, 35, 0 2150; PWR7-NEXT: vadduhm 2, 2, 3 2151; PWR7-NEXT: vsrh 3, 2, 4 2152; PWR7-NEXT: vxor 4, 4, 4 2153; PWR7-NEXT: vadduhm 2, 2, 3 2154; PWR7-NEXT: vspltisb 3, 1 2155; PWR7-NEXT: xxland 34, 34, 37 2156; PWR7-NEXT: vmladduhm 2, 2, 3, 4 2157; PWR7-NEXT: vspltish 3, 8 2158; PWR7-NEXT: vsrh 2, 2, 3 2159; PWR7-NEXT: vspltish 3, 6 2160; PWR7-NEXT: vcmpgtuh 2, 2, 3 2161; PWR7-NEXT: blr 2162; 2163; PWR8-LABEL: ugt_6_v8i16: 2164; PWR8: # %bb.0: 2165; PWR8-NEXT: vspltish 3, 6 2166; PWR8-NEXT: vpopcnth 2, 2 2167; PWR8-NEXT: vcmpgtuh 2, 2, 3 2168; PWR8-NEXT: blr 2169; 2170; PWR9-LABEL: ugt_6_v8i16: 2171; PWR9: # %bb.0: 2172; PWR9-NEXT: vspltish 3, 6 2173; PWR9-NEXT: vpopcnth 2, 2 2174; PWR9-NEXT: vcmpgtuh 2, 2, 3 2175; PWR9-NEXT: blr 2176 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 2177 %3 = icmp ugt <8 x i16> %2, <i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6> 2178 %4 = sext <8 x i1> %3 to <8 x i16> 2179 ret <8 x i16> %4 2180} 2181 2182define <8 x i16> @ult_7_v8i16(<8 x i16> %0) { 2183; PWR5-LABEL: ult_7_v8i16: 2184; PWR5: # %bb.0: 2185; PWR5-NEXT: addis 3, 2, .LCPI23_0@toc@ha 2186; PWR5-NEXT: vspltish 4, 1 2187; PWR5-NEXT: vxor 3, 3, 3 2188; PWR5-NEXT: addi 3, 3, .LCPI23_0@toc@l 2189; PWR5-NEXT: lvx 5, 0, 3 2190; PWR5-NEXT: addis 3, 2, .LCPI23_1@toc@ha 2191; PWR5-NEXT: addi 3, 3, .LCPI23_1@toc@l 2192; PWR5-NEXT: vsrh 4, 2, 4 2193; PWR5-NEXT: vand 4, 4, 5 2194; PWR5-NEXT: vspltish 5, 2 2195; PWR5-NEXT: vsubuhm 2, 2, 4 2196; PWR5-NEXT: vsrh 4, 2, 5 2197; PWR5-NEXT: lvx 5, 0, 3 2198; PWR5-NEXT: vand 2, 2, 5 2199; PWR5-NEXT: vand 4, 4, 5 2200; PWR5-NEXT: vspltish 5, 4 2201; PWR5-NEXT: vadduhm 2, 2, 4 2202; PWR5-NEXT: vsrh 4, 2, 5 2203; PWR5-NEXT: vspltisb 5, 15 2204; PWR5-NEXT: vadduhm 2, 2, 4 2205; PWR5-NEXT: vspltisb 4, 1 2206; PWR5-NEXT: vand 2, 2, 5 2207; PWR5-NEXT: vmladduhm 2, 2, 4, 3 2208; PWR5-NEXT: vspltish 3, 8 2209; PWR5-NEXT: vsrh 2, 2, 3 2210; PWR5-NEXT: vspltish 3, 7 2211; PWR5-NEXT: vcmpgtuh 2, 3, 2 2212; PWR5-NEXT: blr 2213; 2214; PWR6-LABEL: ult_7_v8i16: 2215; PWR6: # %bb.0: 2216; PWR6-NEXT: addis 3, 2, .LCPI23_0@toc@ha 2217; PWR6-NEXT: vspltish 4, 1 2218; PWR6-NEXT: vxor 3, 3, 3 2219; PWR6-NEXT: addi 3, 3, .LCPI23_0@toc@l 2220; PWR6-NEXT: lvx 5, 0, 3 2221; PWR6-NEXT: addis 3, 2, .LCPI23_1@toc@ha 2222; PWR6-NEXT: addi 3, 3, .LCPI23_1@toc@l 2223; PWR6-NEXT: vsrh 4, 2, 4 2224; PWR6-NEXT: vand 4, 4, 5 2225; PWR6-NEXT: vspltish 5, 2 2226; PWR6-NEXT: vsubuhm 2, 2, 4 2227; PWR6-NEXT: vsrh 4, 2, 5 2228; PWR6-NEXT: lvx 5, 0, 3 2229; PWR6-NEXT: vand 2, 2, 5 2230; PWR6-NEXT: vand 4, 4, 5 2231; PWR6-NEXT: vspltish 5, 4 2232; PWR6-NEXT: vadduhm 2, 2, 4 2233; PWR6-NEXT: vsrh 4, 2, 5 2234; PWR6-NEXT: vspltisb 5, 15 2235; PWR6-NEXT: vadduhm 2, 2, 4 2236; PWR6-NEXT: vspltisb 4, 1 2237; PWR6-NEXT: vand 2, 2, 5 2238; PWR6-NEXT: vmladduhm 2, 2, 4, 3 2239; PWR6-NEXT: vspltish 3, 8 2240; PWR6-NEXT: vsrh 2, 2, 3 2241; PWR6-NEXT: vspltish 3, 7 2242; PWR6-NEXT: vcmpgtuh 2, 3, 2 2243; PWR6-NEXT: blr 2244; 2245; PWR7-LABEL: ult_7_v8i16: 2246; PWR7: # %bb.0: 2247; PWR7-NEXT: vspltish 3, 1 2248; PWR7-NEXT: addis 3, 2, .LCPI23_0@toc@ha 2249; PWR7-NEXT: addi 3, 3, .LCPI23_0@toc@l 2250; PWR7-NEXT: vspltish 4, 2 2251; PWR7-NEXT: lxvw4x 0, 0, 3 2252; PWR7-NEXT: addis 3, 2, .LCPI23_1@toc@ha 2253; PWR7-NEXT: vspltisb 5, 15 2254; PWR7-NEXT: vsrh 3, 2, 3 2255; PWR7-NEXT: addi 3, 3, .LCPI23_1@toc@l 2256; PWR7-NEXT: xxland 35, 35, 0 2257; PWR7-NEXT: lxvw4x 0, 0, 3 2258; PWR7-NEXT: vsubuhm 2, 2, 3 2259; PWR7-NEXT: vsrh 3, 2, 4 2260; PWR7-NEXT: xxland 34, 34, 0 2261; PWR7-NEXT: vspltish 4, 4 2262; PWR7-NEXT: xxland 35, 35, 0 2263; PWR7-NEXT: vadduhm 2, 2, 3 2264; PWR7-NEXT: vsrh 3, 2, 4 2265; PWR7-NEXT: vxor 4, 4, 4 2266; PWR7-NEXT: vadduhm 2, 2, 3 2267; PWR7-NEXT: vspltisb 3, 1 2268; PWR7-NEXT: xxland 34, 34, 37 2269; PWR7-NEXT: vmladduhm 2, 2, 3, 4 2270; PWR7-NEXT: vspltish 3, 8 2271; PWR7-NEXT: vsrh 2, 2, 3 2272; PWR7-NEXT: vspltish 3, 7 2273; PWR7-NEXT: vcmpgtuh 2, 3, 2 2274; PWR7-NEXT: blr 2275; 2276; PWR8-LABEL: ult_7_v8i16: 2277; PWR8: # %bb.0: 2278; PWR8-NEXT: vspltish 3, 7 2279; PWR8-NEXT: vpopcnth 2, 2 2280; PWR8-NEXT: vcmpgtuh 2, 3, 2 2281; PWR8-NEXT: blr 2282; 2283; PWR9-LABEL: ult_7_v8i16: 2284; PWR9: # %bb.0: 2285; PWR9-NEXT: vspltish 3, 7 2286; PWR9-NEXT: vpopcnth 2, 2 2287; PWR9-NEXT: vcmpgtuh 2, 3, 2 2288; PWR9-NEXT: blr 2289 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 2290 %3 = icmp ult <8 x i16> %2, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7> 2291 %4 = sext <8 x i1> %3 to <8 x i16> 2292 ret <8 x i16> %4 2293} 2294 2295define <8 x i16> @ugt_7_v8i16(<8 x i16> %0) { 2296; PWR5-LABEL: ugt_7_v8i16: 2297; PWR5: # %bb.0: 2298; PWR5-NEXT: addis 3, 2, .LCPI24_0@toc@ha 2299; PWR5-NEXT: vspltish 4, 1 2300; PWR5-NEXT: vxor 3, 3, 3 2301; PWR5-NEXT: addi 3, 3, .LCPI24_0@toc@l 2302; PWR5-NEXT: lvx 5, 0, 3 2303; PWR5-NEXT: addis 3, 2, .LCPI24_1@toc@ha 2304; PWR5-NEXT: addi 3, 3, .LCPI24_1@toc@l 2305; PWR5-NEXT: vsrh 4, 2, 4 2306; PWR5-NEXT: vand 4, 4, 5 2307; PWR5-NEXT: vspltish 5, 2 2308; PWR5-NEXT: vsubuhm 2, 2, 4 2309; PWR5-NEXT: vsrh 4, 2, 5 2310; PWR5-NEXT: lvx 5, 0, 3 2311; PWR5-NEXT: vand 2, 2, 5 2312; PWR5-NEXT: vand 4, 4, 5 2313; PWR5-NEXT: vspltish 5, 4 2314; PWR5-NEXT: vadduhm 2, 2, 4 2315; PWR5-NEXT: vsrh 4, 2, 5 2316; PWR5-NEXT: vspltisb 5, 15 2317; PWR5-NEXT: vadduhm 2, 2, 4 2318; PWR5-NEXT: vspltisb 4, 1 2319; PWR5-NEXT: vand 2, 2, 5 2320; PWR5-NEXT: vmladduhm 2, 2, 4, 3 2321; PWR5-NEXT: vspltish 3, 8 2322; PWR5-NEXT: vsrh 2, 2, 3 2323; PWR5-NEXT: vspltish 3, 7 2324; PWR5-NEXT: vcmpgtuh 2, 2, 3 2325; PWR5-NEXT: blr 2326; 2327; PWR6-LABEL: ugt_7_v8i16: 2328; PWR6: # %bb.0: 2329; PWR6-NEXT: addis 3, 2, .LCPI24_0@toc@ha 2330; PWR6-NEXT: vspltish 4, 1 2331; PWR6-NEXT: vxor 3, 3, 3 2332; PWR6-NEXT: addi 3, 3, .LCPI24_0@toc@l 2333; PWR6-NEXT: lvx 5, 0, 3 2334; PWR6-NEXT: addis 3, 2, .LCPI24_1@toc@ha 2335; PWR6-NEXT: addi 3, 3, .LCPI24_1@toc@l 2336; PWR6-NEXT: vsrh 4, 2, 4 2337; PWR6-NEXT: vand 4, 4, 5 2338; PWR6-NEXT: vspltish 5, 2 2339; PWR6-NEXT: vsubuhm 2, 2, 4 2340; PWR6-NEXT: vsrh 4, 2, 5 2341; PWR6-NEXT: lvx 5, 0, 3 2342; PWR6-NEXT: vand 2, 2, 5 2343; PWR6-NEXT: vand 4, 4, 5 2344; PWR6-NEXT: vspltish 5, 4 2345; PWR6-NEXT: vadduhm 2, 2, 4 2346; PWR6-NEXT: vsrh 4, 2, 5 2347; PWR6-NEXT: vspltisb 5, 15 2348; PWR6-NEXT: vadduhm 2, 2, 4 2349; PWR6-NEXT: vspltisb 4, 1 2350; PWR6-NEXT: vand 2, 2, 5 2351; PWR6-NEXT: vmladduhm 2, 2, 4, 3 2352; PWR6-NEXT: vspltish 3, 8 2353; PWR6-NEXT: vsrh 2, 2, 3 2354; PWR6-NEXT: vspltish 3, 7 2355; PWR6-NEXT: vcmpgtuh 2, 2, 3 2356; PWR6-NEXT: blr 2357; 2358; PWR7-LABEL: ugt_7_v8i16: 2359; PWR7: # %bb.0: 2360; PWR7-NEXT: vspltish 3, 1 2361; PWR7-NEXT: addis 3, 2, .LCPI24_0@toc@ha 2362; PWR7-NEXT: addi 3, 3, .LCPI24_0@toc@l 2363; PWR7-NEXT: vspltish 4, 2 2364; PWR7-NEXT: lxvw4x 0, 0, 3 2365; PWR7-NEXT: addis 3, 2, .LCPI24_1@toc@ha 2366; PWR7-NEXT: vspltisb 5, 15 2367; PWR7-NEXT: vsrh 3, 2, 3 2368; PWR7-NEXT: addi 3, 3, .LCPI24_1@toc@l 2369; PWR7-NEXT: xxland 35, 35, 0 2370; PWR7-NEXT: lxvw4x 0, 0, 3 2371; PWR7-NEXT: vsubuhm 2, 2, 3 2372; PWR7-NEXT: vsrh 3, 2, 4 2373; PWR7-NEXT: xxland 34, 34, 0 2374; PWR7-NEXT: vspltish 4, 4 2375; PWR7-NEXT: xxland 35, 35, 0 2376; PWR7-NEXT: vadduhm 2, 2, 3 2377; PWR7-NEXT: vsrh 3, 2, 4 2378; PWR7-NEXT: vxor 4, 4, 4 2379; PWR7-NEXT: vadduhm 2, 2, 3 2380; PWR7-NEXT: vspltisb 3, 1 2381; PWR7-NEXT: xxland 34, 34, 37 2382; PWR7-NEXT: vmladduhm 2, 2, 3, 4 2383; PWR7-NEXT: vspltish 3, 8 2384; PWR7-NEXT: vsrh 2, 2, 3 2385; PWR7-NEXT: vspltish 3, 7 2386; PWR7-NEXT: vcmpgtuh 2, 2, 3 2387; PWR7-NEXT: blr 2388; 2389; PWR8-LABEL: ugt_7_v8i16: 2390; PWR8: # %bb.0: 2391; PWR8-NEXT: vspltish 3, 7 2392; PWR8-NEXT: vpopcnth 2, 2 2393; PWR8-NEXT: vcmpgtuh 2, 2, 3 2394; PWR8-NEXT: blr 2395; 2396; PWR9-LABEL: ugt_7_v8i16: 2397; PWR9: # %bb.0: 2398; PWR9-NEXT: vspltish 3, 7 2399; PWR9-NEXT: vpopcnth 2, 2 2400; PWR9-NEXT: vcmpgtuh 2, 2, 3 2401; PWR9-NEXT: blr 2402 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 2403 %3 = icmp ugt <8 x i16> %2, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7> 2404 %4 = sext <8 x i1> %3 to <8 x i16> 2405 ret <8 x i16> %4 2406} 2407 2408define <8 x i16> @ult_8_v8i16(<8 x i16> %0) { 2409; PWR5-LABEL: ult_8_v8i16: 2410; PWR5: # %bb.0: 2411; PWR5-NEXT: addis 3, 2, .LCPI25_0@toc@ha 2412; PWR5-NEXT: vspltish 4, 1 2413; PWR5-NEXT: vxor 3, 3, 3 2414; PWR5-NEXT: addi 3, 3, .LCPI25_0@toc@l 2415; PWR5-NEXT: lvx 5, 0, 3 2416; PWR5-NEXT: addis 3, 2, .LCPI25_1@toc@ha 2417; PWR5-NEXT: addi 3, 3, .LCPI25_1@toc@l 2418; PWR5-NEXT: vsrh 4, 2, 4 2419; PWR5-NEXT: vand 4, 4, 5 2420; PWR5-NEXT: vspltish 5, 2 2421; PWR5-NEXT: vsubuhm 2, 2, 4 2422; PWR5-NEXT: vsrh 4, 2, 5 2423; PWR5-NEXT: lvx 5, 0, 3 2424; PWR5-NEXT: vand 2, 2, 5 2425; PWR5-NEXT: vand 4, 4, 5 2426; PWR5-NEXT: vspltish 5, 4 2427; PWR5-NEXT: vadduhm 2, 2, 4 2428; PWR5-NEXT: vsrh 4, 2, 5 2429; PWR5-NEXT: vspltisb 5, 15 2430; PWR5-NEXT: vadduhm 2, 2, 4 2431; PWR5-NEXT: vspltisb 4, 1 2432; PWR5-NEXT: vand 2, 2, 5 2433; PWR5-NEXT: vmladduhm 2, 2, 4, 3 2434; PWR5-NEXT: vspltish 3, 8 2435; PWR5-NEXT: vsrh 2, 2, 3 2436; PWR5-NEXT: vcmpgtuh 2, 3, 2 2437; PWR5-NEXT: blr 2438; 2439; PWR6-LABEL: ult_8_v8i16: 2440; PWR6: # %bb.0: 2441; PWR6-NEXT: addis 3, 2, .LCPI25_0@toc@ha 2442; PWR6-NEXT: vspltish 4, 1 2443; PWR6-NEXT: vxor 3, 3, 3 2444; PWR6-NEXT: addi 3, 3, .LCPI25_0@toc@l 2445; PWR6-NEXT: lvx 5, 0, 3 2446; PWR6-NEXT: addis 3, 2, .LCPI25_1@toc@ha 2447; PWR6-NEXT: addi 3, 3, .LCPI25_1@toc@l 2448; PWR6-NEXT: vsrh 4, 2, 4 2449; PWR6-NEXT: vand 4, 4, 5 2450; PWR6-NEXT: vspltish 5, 2 2451; PWR6-NEXT: vsubuhm 2, 2, 4 2452; PWR6-NEXT: vsrh 4, 2, 5 2453; PWR6-NEXT: lvx 5, 0, 3 2454; PWR6-NEXT: vand 2, 2, 5 2455; PWR6-NEXT: vand 4, 4, 5 2456; PWR6-NEXT: vspltish 5, 4 2457; PWR6-NEXT: vadduhm 2, 2, 4 2458; PWR6-NEXT: vsrh 4, 2, 5 2459; PWR6-NEXT: vspltisb 5, 15 2460; PWR6-NEXT: vadduhm 2, 2, 4 2461; PWR6-NEXT: vspltisb 4, 1 2462; PWR6-NEXT: vand 2, 2, 5 2463; PWR6-NEXT: vmladduhm 2, 2, 4, 3 2464; PWR6-NEXT: vspltish 3, 8 2465; PWR6-NEXT: vsrh 2, 2, 3 2466; PWR6-NEXT: vcmpgtuh 2, 3, 2 2467; PWR6-NEXT: blr 2468; 2469; PWR7-LABEL: ult_8_v8i16: 2470; PWR7: # %bb.0: 2471; PWR7-NEXT: vspltish 3, 1 2472; PWR7-NEXT: addis 3, 2, .LCPI25_0@toc@ha 2473; PWR7-NEXT: addi 3, 3, .LCPI25_0@toc@l 2474; PWR7-NEXT: vspltish 4, 2 2475; PWR7-NEXT: lxvw4x 0, 0, 3 2476; PWR7-NEXT: addis 3, 2, .LCPI25_1@toc@ha 2477; PWR7-NEXT: vspltisb 5, 15 2478; PWR7-NEXT: vsrh 3, 2, 3 2479; PWR7-NEXT: addi 3, 3, .LCPI25_1@toc@l 2480; PWR7-NEXT: xxland 35, 35, 0 2481; PWR7-NEXT: lxvw4x 0, 0, 3 2482; PWR7-NEXT: vsubuhm 2, 2, 3 2483; PWR7-NEXT: vsrh 3, 2, 4 2484; PWR7-NEXT: xxland 34, 34, 0 2485; PWR7-NEXT: vspltish 4, 4 2486; PWR7-NEXT: xxland 35, 35, 0 2487; PWR7-NEXT: vadduhm 2, 2, 3 2488; PWR7-NEXT: vsrh 3, 2, 4 2489; PWR7-NEXT: vxor 4, 4, 4 2490; PWR7-NEXT: vadduhm 2, 2, 3 2491; PWR7-NEXT: vspltisb 3, 1 2492; PWR7-NEXT: xxland 34, 34, 37 2493; PWR7-NEXT: vmladduhm 2, 2, 3, 4 2494; PWR7-NEXT: vspltish 3, 8 2495; PWR7-NEXT: vsrh 2, 2, 3 2496; PWR7-NEXT: vcmpgtuh 2, 3, 2 2497; PWR7-NEXT: blr 2498; 2499; PWR8-LABEL: ult_8_v8i16: 2500; PWR8: # %bb.0: 2501; PWR8-NEXT: vspltish 3, 8 2502; PWR8-NEXT: vpopcnth 2, 2 2503; PWR8-NEXT: vcmpgtuh 2, 3, 2 2504; PWR8-NEXT: blr 2505; 2506; PWR9-LABEL: ult_8_v8i16: 2507; PWR9: # %bb.0: 2508; PWR9-NEXT: vspltish 3, 8 2509; PWR9-NEXT: vpopcnth 2, 2 2510; PWR9-NEXT: vcmpgtuh 2, 3, 2 2511; PWR9-NEXT: blr 2512 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 2513 %3 = icmp ult <8 x i16> %2, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8> 2514 %4 = sext <8 x i1> %3 to <8 x i16> 2515 ret <8 x i16> %4 2516} 2517 2518define <8 x i16> @ugt_8_v8i16(<8 x i16> %0) { 2519; PWR5-LABEL: ugt_8_v8i16: 2520; PWR5: # %bb.0: 2521; PWR5-NEXT: addis 3, 2, .LCPI26_0@toc@ha 2522; PWR5-NEXT: vspltish 4, 1 2523; PWR5-NEXT: vxor 3, 3, 3 2524; PWR5-NEXT: addi 3, 3, .LCPI26_0@toc@l 2525; PWR5-NEXT: lvx 5, 0, 3 2526; PWR5-NEXT: addis 3, 2, .LCPI26_1@toc@ha 2527; PWR5-NEXT: addi 3, 3, .LCPI26_1@toc@l 2528; PWR5-NEXT: vsrh 4, 2, 4 2529; PWR5-NEXT: vand 4, 4, 5 2530; PWR5-NEXT: vspltish 5, 2 2531; PWR5-NEXT: vsubuhm 2, 2, 4 2532; PWR5-NEXT: vsrh 4, 2, 5 2533; PWR5-NEXT: lvx 5, 0, 3 2534; PWR5-NEXT: vand 2, 2, 5 2535; PWR5-NEXT: vand 4, 4, 5 2536; PWR5-NEXT: vspltish 5, 4 2537; PWR5-NEXT: vadduhm 2, 2, 4 2538; PWR5-NEXT: vsrh 4, 2, 5 2539; PWR5-NEXT: vspltisb 5, 15 2540; PWR5-NEXT: vadduhm 2, 2, 4 2541; PWR5-NEXT: vspltisb 4, 1 2542; PWR5-NEXT: vand 2, 2, 5 2543; PWR5-NEXT: vmladduhm 2, 2, 4, 3 2544; PWR5-NEXT: vspltish 3, 8 2545; PWR5-NEXT: vsrh 2, 2, 3 2546; PWR5-NEXT: vcmpgtuh 2, 2, 3 2547; PWR5-NEXT: blr 2548; 2549; PWR6-LABEL: ugt_8_v8i16: 2550; PWR6: # %bb.0: 2551; PWR6-NEXT: addis 3, 2, .LCPI26_0@toc@ha 2552; PWR6-NEXT: vspltish 4, 1 2553; PWR6-NEXT: vxor 3, 3, 3 2554; PWR6-NEXT: addi 3, 3, .LCPI26_0@toc@l 2555; PWR6-NEXT: lvx 5, 0, 3 2556; PWR6-NEXT: addis 3, 2, .LCPI26_1@toc@ha 2557; PWR6-NEXT: addi 3, 3, .LCPI26_1@toc@l 2558; PWR6-NEXT: vsrh 4, 2, 4 2559; PWR6-NEXT: vand 4, 4, 5 2560; PWR6-NEXT: vspltish 5, 2 2561; PWR6-NEXT: vsubuhm 2, 2, 4 2562; PWR6-NEXT: vsrh 4, 2, 5 2563; PWR6-NEXT: lvx 5, 0, 3 2564; PWR6-NEXT: vand 2, 2, 5 2565; PWR6-NEXT: vand 4, 4, 5 2566; PWR6-NEXT: vspltish 5, 4 2567; PWR6-NEXT: vadduhm 2, 2, 4 2568; PWR6-NEXT: vsrh 4, 2, 5 2569; PWR6-NEXT: vspltisb 5, 15 2570; PWR6-NEXT: vadduhm 2, 2, 4 2571; PWR6-NEXT: vspltisb 4, 1 2572; PWR6-NEXT: vand 2, 2, 5 2573; PWR6-NEXT: vmladduhm 2, 2, 4, 3 2574; PWR6-NEXT: vspltish 3, 8 2575; PWR6-NEXT: vsrh 2, 2, 3 2576; PWR6-NEXT: vcmpgtuh 2, 2, 3 2577; PWR6-NEXT: blr 2578; 2579; PWR7-LABEL: ugt_8_v8i16: 2580; PWR7: # %bb.0: 2581; PWR7-NEXT: vspltish 3, 1 2582; PWR7-NEXT: addis 3, 2, .LCPI26_0@toc@ha 2583; PWR7-NEXT: addi 3, 3, .LCPI26_0@toc@l 2584; PWR7-NEXT: vspltish 4, 2 2585; PWR7-NEXT: lxvw4x 0, 0, 3 2586; PWR7-NEXT: addis 3, 2, .LCPI26_1@toc@ha 2587; PWR7-NEXT: vspltisb 5, 15 2588; PWR7-NEXT: vsrh 3, 2, 3 2589; PWR7-NEXT: addi 3, 3, .LCPI26_1@toc@l 2590; PWR7-NEXT: xxland 35, 35, 0 2591; PWR7-NEXT: lxvw4x 0, 0, 3 2592; PWR7-NEXT: vsubuhm 2, 2, 3 2593; PWR7-NEXT: vsrh 3, 2, 4 2594; PWR7-NEXT: xxland 34, 34, 0 2595; PWR7-NEXT: vspltish 4, 4 2596; PWR7-NEXT: xxland 35, 35, 0 2597; PWR7-NEXT: vadduhm 2, 2, 3 2598; PWR7-NEXT: vsrh 3, 2, 4 2599; PWR7-NEXT: vxor 4, 4, 4 2600; PWR7-NEXT: vadduhm 2, 2, 3 2601; PWR7-NEXT: vspltisb 3, 1 2602; PWR7-NEXT: xxland 34, 34, 37 2603; PWR7-NEXT: vmladduhm 2, 2, 3, 4 2604; PWR7-NEXT: vspltish 3, 8 2605; PWR7-NEXT: vsrh 2, 2, 3 2606; PWR7-NEXT: vcmpgtuh 2, 2, 3 2607; PWR7-NEXT: blr 2608; 2609; PWR8-LABEL: ugt_8_v8i16: 2610; PWR8: # %bb.0: 2611; PWR8-NEXT: vspltish 3, 8 2612; PWR8-NEXT: vpopcnth 2, 2 2613; PWR8-NEXT: vcmpgtuh 2, 2, 3 2614; PWR8-NEXT: blr 2615; 2616; PWR9-LABEL: ugt_8_v8i16: 2617; PWR9: # %bb.0: 2618; PWR9-NEXT: vspltish 3, 8 2619; PWR9-NEXT: vpopcnth 2, 2 2620; PWR9-NEXT: vcmpgtuh 2, 2, 3 2621; PWR9-NEXT: blr 2622 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 2623 %3 = icmp ugt <8 x i16> %2, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8> 2624 %4 = sext <8 x i1> %3 to <8 x i16> 2625 ret <8 x i16> %4 2626} 2627 2628define <8 x i16> @ult_9_v8i16(<8 x i16> %0) { 2629; PWR5-LABEL: ult_9_v8i16: 2630; PWR5: # %bb.0: 2631; PWR5-NEXT: addis 3, 2, .LCPI27_0@toc@ha 2632; PWR5-NEXT: vspltish 4, 1 2633; PWR5-NEXT: vxor 3, 3, 3 2634; PWR5-NEXT: addi 3, 3, .LCPI27_0@toc@l 2635; PWR5-NEXT: lvx 5, 0, 3 2636; PWR5-NEXT: addis 3, 2, .LCPI27_1@toc@ha 2637; PWR5-NEXT: addi 3, 3, .LCPI27_1@toc@l 2638; PWR5-NEXT: vsrh 4, 2, 4 2639; PWR5-NEXT: vand 4, 4, 5 2640; PWR5-NEXT: vspltish 5, 2 2641; PWR5-NEXT: vsubuhm 2, 2, 4 2642; PWR5-NEXT: vsrh 4, 2, 5 2643; PWR5-NEXT: lvx 5, 0, 3 2644; PWR5-NEXT: vand 2, 2, 5 2645; PWR5-NEXT: vand 4, 4, 5 2646; PWR5-NEXT: vspltish 5, 4 2647; PWR5-NEXT: vadduhm 2, 2, 4 2648; PWR5-NEXT: vsrh 4, 2, 5 2649; PWR5-NEXT: vspltisb 5, 15 2650; PWR5-NEXT: vadduhm 2, 2, 4 2651; PWR5-NEXT: vspltisb 4, 1 2652; PWR5-NEXT: vand 2, 2, 5 2653; PWR5-NEXT: vmladduhm 2, 2, 4, 3 2654; PWR5-NEXT: vspltish 3, 8 2655; PWR5-NEXT: vsrh 2, 2, 3 2656; PWR5-NEXT: vspltish 3, 9 2657; PWR5-NEXT: vcmpgtuh 2, 3, 2 2658; PWR5-NEXT: blr 2659; 2660; PWR6-LABEL: ult_9_v8i16: 2661; PWR6: # %bb.0: 2662; PWR6-NEXT: addis 3, 2, .LCPI27_0@toc@ha 2663; PWR6-NEXT: vspltish 4, 1 2664; PWR6-NEXT: vxor 3, 3, 3 2665; PWR6-NEXT: addi 3, 3, .LCPI27_0@toc@l 2666; PWR6-NEXT: lvx 5, 0, 3 2667; PWR6-NEXT: addis 3, 2, .LCPI27_1@toc@ha 2668; PWR6-NEXT: addi 3, 3, .LCPI27_1@toc@l 2669; PWR6-NEXT: vsrh 4, 2, 4 2670; PWR6-NEXT: vand 4, 4, 5 2671; PWR6-NEXT: vspltish 5, 2 2672; PWR6-NEXT: vsubuhm 2, 2, 4 2673; PWR6-NEXT: vsrh 4, 2, 5 2674; PWR6-NEXT: lvx 5, 0, 3 2675; PWR6-NEXT: vand 2, 2, 5 2676; PWR6-NEXT: vand 4, 4, 5 2677; PWR6-NEXT: vspltish 5, 4 2678; PWR6-NEXT: vadduhm 2, 2, 4 2679; PWR6-NEXT: vsrh 4, 2, 5 2680; PWR6-NEXT: vspltisb 5, 15 2681; PWR6-NEXT: vadduhm 2, 2, 4 2682; PWR6-NEXT: vspltisb 4, 1 2683; PWR6-NEXT: vand 2, 2, 5 2684; PWR6-NEXT: vmladduhm 2, 2, 4, 3 2685; PWR6-NEXT: vspltish 3, 8 2686; PWR6-NEXT: vsrh 2, 2, 3 2687; PWR6-NEXT: vspltish 3, 9 2688; PWR6-NEXT: vcmpgtuh 2, 3, 2 2689; PWR6-NEXT: blr 2690; 2691; PWR7-LABEL: ult_9_v8i16: 2692; PWR7: # %bb.0: 2693; PWR7-NEXT: vspltish 3, 1 2694; PWR7-NEXT: addis 3, 2, .LCPI27_0@toc@ha 2695; PWR7-NEXT: addi 3, 3, .LCPI27_0@toc@l 2696; PWR7-NEXT: vspltish 4, 2 2697; PWR7-NEXT: lxvw4x 0, 0, 3 2698; PWR7-NEXT: addis 3, 2, .LCPI27_1@toc@ha 2699; PWR7-NEXT: vspltisb 5, 15 2700; PWR7-NEXT: vsrh 3, 2, 3 2701; PWR7-NEXT: addi 3, 3, .LCPI27_1@toc@l 2702; PWR7-NEXT: xxland 35, 35, 0 2703; PWR7-NEXT: lxvw4x 0, 0, 3 2704; PWR7-NEXT: vsubuhm 2, 2, 3 2705; PWR7-NEXT: vsrh 3, 2, 4 2706; PWR7-NEXT: xxland 34, 34, 0 2707; PWR7-NEXT: vspltish 4, 4 2708; PWR7-NEXT: xxland 35, 35, 0 2709; PWR7-NEXT: vadduhm 2, 2, 3 2710; PWR7-NEXT: vsrh 3, 2, 4 2711; PWR7-NEXT: vxor 4, 4, 4 2712; PWR7-NEXT: vadduhm 2, 2, 3 2713; PWR7-NEXT: vspltisb 3, 1 2714; PWR7-NEXT: xxland 34, 34, 37 2715; PWR7-NEXT: vmladduhm 2, 2, 3, 4 2716; PWR7-NEXT: vspltish 3, 8 2717; PWR7-NEXT: vsrh 2, 2, 3 2718; PWR7-NEXT: vspltish 3, 9 2719; PWR7-NEXT: vcmpgtuh 2, 3, 2 2720; PWR7-NEXT: blr 2721; 2722; PWR8-LABEL: ult_9_v8i16: 2723; PWR8: # %bb.0: 2724; PWR8-NEXT: vspltish 3, 9 2725; PWR8-NEXT: vpopcnth 2, 2 2726; PWR8-NEXT: vcmpgtuh 2, 3, 2 2727; PWR8-NEXT: blr 2728; 2729; PWR9-LABEL: ult_9_v8i16: 2730; PWR9: # %bb.0: 2731; PWR9-NEXT: vspltish 3, 9 2732; PWR9-NEXT: vpopcnth 2, 2 2733; PWR9-NEXT: vcmpgtuh 2, 3, 2 2734; PWR9-NEXT: blr 2735 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 2736 %3 = icmp ult <8 x i16> %2, <i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9> 2737 %4 = sext <8 x i1> %3 to <8 x i16> 2738 ret <8 x i16> %4 2739} 2740 2741define <8 x i16> @ugt_9_v8i16(<8 x i16> %0) { 2742; PWR5-LABEL: ugt_9_v8i16: 2743; PWR5: # %bb.0: 2744; PWR5-NEXT: addis 3, 2, .LCPI28_0@toc@ha 2745; PWR5-NEXT: vspltish 4, 1 2746; PWR5-NEXT: vxor 3, 3, 3 2747; PWR5-NEXT: addi 3, 3, .LCPI28_0@toc@l 2748; PWR5-NEXT: lvx 5, 0, 3 2749; PWR5-NEXT: addis 3, 2, .LCPI28_1@toc@ha 2750; PWR5-NEXT: addi 3, 3, .LCPI28_1@toc@l 2751; PWR5-NEXT: vsrh 4, 2, 4 2752; PWR5-NEXT: vand 4, 4, 5 2753; PWR5-NEXT: vspltish 5, 2 2754; PWR5-NEXT: vsubuhm 2, 2, 4 2755; PWR5-NEXT: vsrh 4, 2, 5 2756; PWR5-NEXT: lvx 5, 0, 3 2757; PWR5-NEXT: vand 2, 2, 5 2758; PWR5-NEXT: vand 4, 4, 5 2759; PWR5-NEXT: vspltish 5, 4 2760; PWR5-NEXT: vadduhm 2, 2, 4 2761; PWR5-NEXT: vsrh 4, 2, 5 2762; PWR5-NEXT: vspltisb 5, 15 2763; PWR5-NEXT: vadduhm 2, 2, 4 2764; PWR5-NEXT: vspltisb 4, 1 2765; PWR5-NEXT: vand 2, 2, 5 2766; PWR5-NEXT: vmladduhm 2, 2, 4, 3 2767; PWR5-NEXT: vspltish 3, 8 2768; PWR5-NEXT: vsrh 2, 2, 3 2769; PWR5-NEXT: vspltish 3, 9 2770; PWR5-NEXT: vcmpgtuh 2, 2, 3 2771; PWR5-NEXT: blr 2772; 2773; PWR6-LABEL: ugt_9_v8i16: 2774; PWR6: # %bb.0: 2775; PWR6-NEXT: addis 3, 2, .LCPI28_0@toc@ha 2776; PWR6-NEXT: vspltish 4, 1 2777; PWR6-NEXT: vxor 3, 3, 3 2778; PWR6-NEXT: addi 3, 3, .LCPI28_0@toc@l 2779; PWR6-NEXT: lvx 5, 0, 3 2780; PWR6-NEXT: addis 3, 2, .LCPI28_1@toc@ha 2781; PWR6-NEXT: addi 3, 3, .LCPI28_1@toc@l 2782; PWR6-NEXT: vsrh 4, 2, 4 2783; PWR6-NEXT: vand 4, 4, 5 2784; PWR6-NEXT: vspltish 5, 2 2785; PWR6-NEXT: vsubuhm 2, 2, 4 2786; PWR6-NEXT: vsrh 4, 2, 5 2787; PWR6-NEXT: lvx 5, 0, 3 2788; PWR6-NEXT: vand 2, 2, 5 2789; PWR6-NEXT: vand 4, 4, 5 2790; PWR6-NEXT: vspltish 5, 4 2791; PWR6-NEXT: vadduhm 2, 2, 4 2792; PWR6-NEXT: vsrh 4, 2, 5 2793; PWR6-NEXT: vspltisb 5, 15 2794; PWR6-NEXT: vadduhm 2, 2, 4 2795; PWR6-NEXT: vspltisb 4, 1 2796; PWR6-NEXT: vand 2, 2, 5 2797; PWR6-NEXT: vmladduhm 2, 2, 4, 3 2798; PWR6-NEXT: vspltish 3, 8 2799; PWR6-NEXT: vsrh 2, 2, 3 2800; PWR6-NEXT: vspltish 3, 9 2801; PWR6-NEXT: vcmpgtuh 2, 2, 3 2802; PWR6-NEXT: blr 2803; 2804; PWR7-LABEL: ugt_9_v8i16: 2805; PWR7: # %bb.0: 2806; PWR7-NEXT: vspltish 3, 1 2807; PWR7-NEXT: addis 3, 2, .LCPI28_0@toc@ha 2808; PWR7-NEXT: addi 3, 3, .LCPI28_0@toc@l 2809; PWR7-NEXT: vspltish 4, 2 2810; PWR7-NEXT: lxvw4x 0, 0, 3 2811; PWR7-NEXT: addis 3, 2, .LCPI28_1@toc@ha 2812; PWR7-NEXT: vspltisb 5, 15 2813; PWR7-NEXT: vsrh 3, 2, 3 2814; PWR7-NEXT: addi 3, 3, .LCPI28_1@toc@l 2815; PWR7-NEXT: xxland 35, 35, 0 2816; PWR7-NEXT: lxvw4x 0, 0, 3 2817; PWR7-NEXT: vsubuhm 2, 2, 3 2818; PWR7-NEXT: vsrh 3, 2, 4 2819; PWR7-NEXT: xxland 34, 34, 0 2820; PWR7-NEXT: vspltish 4, 4 2821; PWR7-NEXT: xxland 35, 35, 0 2822; PWR7-NEXT: vadduhm 2, 2, 3 2823; PWR7-NEXT: vsrh 3, 2, 4 2824; PWR7-NEXT: vxor 4, 4, 4 2825; PWR7-NEXT: vadduhm 2, 2, 3 2826; PWR7-NEXT: vspltisb 3, 1 2827; PWR7-NEXT: xxland 34, 34, 37 2828; PWR7-NEXT: vmladduhm 2, 2, 3, 4 2829; PWR7-NEXT: vspltish 3, 8 2830; PWR7-NEXT: vsrh 2, 2, 3 2831; PWR7-NEXT: vspltish 3, 9 2832; PWR7-NEXT: vcmpgtuh 2, 2, 3 2833; PWR7-NEXT: blr 2834; 2835; PWR8-LABEL: ugt_9_v8i16: 2836; PWR8: # %bb.0: 2837; PWR8-NEXT: vspltish 3, 9 2838; PWR8-NEXT: vpopcnth 2, 2 2839; PWR8-NEXT: vcmpgtuh 2, 2, 3 2840; PWR8-NEXT: blr 2841; 2842; PWR9-LABEL: ugt_9_v8i16: 2843; PWR9: # %bb.0: 2844; PWR9-NEXT: vspltish 3, 9 2845; PWR9-NEXT: vpopcnth 2, 2 2846; PWR9-NEXT: vcmpgtuh 2, 2, 3 2847; PWR9-NEXT: blr 2848 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 2849 %3 = icmp ugt <8 x i16> %2, <i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9> 2850 %4 = sext <8 x i1> %3 to <8 x i16> 2851 ret <8 x i16> %4 2852} 2853 2854define <8 x i16> @ult_10_v8i16(<8 x i16> %0) { 2855; PWR5-LABEL: ult_10_v8i16: 2856; PWR5: # %bb.0: 2857; PWR5-NEXT: addis 3, 2, .LCPI29_0@toc@ha 2858; PWR5-NEXT: vspltish 4, 1 2859; PWR5-NEXT: vxor 3, 3, 3 2860; PWR5-NEXT: addi 3, 3, .LCPI29_0@toc@l 2861; PWR5-NEXT: lvx 5, 0, 3 2862; PWR5-NEXT: addis 3, 2, .LCPI29_1@toc@ha 2863; PWR5-NEXT: addi 3, 3, .LCPI29_1@toc@l 2864; PWR5-NEXT: vsrh 4, 2, 4 2865; PWR5-NEXT: vand 4, 4, 5 2866; PWR5-NEXT: vspltish 5, 2 2867; PWR5-NEXT: vsubuhm 2, 2, 4 2868; PWR5-NEXT: vsrh 4, 2, 5 2869; PWR5-NEXT: lvx 5, 0, 3 2870; PWR5-NEXT: vand 2, 2, 5 2871; PWR5-NEXT: vand 4, 4, 5 2872; PWR5-NEXT: vspltish 5, 4 2873; PWR5-NEXT: vadduhm 2, 2, 4 2874; PWR5-NEXT: vsrh 4, 2, 5 2875; PWR5-NEXT: vspltisb 5, 15 2876; PWR5-NEXT: vadduhm 2, 2, 4 2877; PWR5-NEXT: vspltisb 4, 1 2878; PWR5-NEXT: vand 2, 2, 5 2879; PWR5-NEXT: vmladduhm 2, 2, 4, 3 2880; PWR5-NEXT: vspltish 3, 8 2881; PWR5-NEXT: vsrh 2, 2, 3 2882; PWR5-NEXT: vspltish 3, 10 2883; PWR5-NEXT: vcmpgtuh 2, 3, 2 2884; PWR5-NEXT: blr 2885; 2886; PWR6-LABEL: ult_10_v8i16: 2887; PWR6: # %bb.0: 2888; PWR6-NEXT: addis 3, 2, .LCPI29_0@toc@ha 2889; PWR6-NEXT: vspltish 4, 1 2890; PWR6-NEXT: vxor 3, 3, 3 2891; PWR6-NEXT: addi 3, 3, .LCPI29_0@toc@l 2892; PWR6-NEXT: lvx 5, 0, 3 2893; PWR6-NEXT: addis 3, 2, .LCPI29_1@toc@ha 2894; PWR6-NEXT: addi 3, 3, .LCPI29_1@toc@l 2895; PWR6-NEXT: vsrh 4, 2, 4 2896; PWR6-NEXT: vand 4, 4, 5 2897; PWR6-NEXT: vspltish 5, 2 2898; PWR6-NEXT: vsubuhm 2, 2, 4 2899; PWR6-NEXT: vsrh 4, 2, 5 2900; PWR6-NEXT: lvx 5, 0, 3 2901; PWR6-NEXT: vand 2, 2, 5 2902; PWR6-NEXT: vand 4, 4, 5 2903; PWR6-NEXT: vspltish 5, 4 2904; PWR6-NEXT: vadduhm 2, 2, 4 2905; PWR6-NEXT: vsrh 4, 2, 5 2906; PWR6-NEXT: vspltisb 5, 15 2907; PWR6-NEXT: vadduhm 2, 2, 4 2908; PWR6-NEXT: vspltisb 4, 1 2909; PWR6-NEXT: vand 2, 2, 5 2910; PWR6-NEXT: vmladduhm 2, 2, 4, 3 2911; PWR6-NEXT: vspltish 3, 8 2912; PWR6-NEXT: vsrh 2, 2, 3 2913; PWR6-NEXT: vspltish 3, 10 2914; PWR6-NEXT: vcmpgtuh 2, 3, 2 2915; PWR6-NEXT: blr 2916; 2917; PWR7-LABEL: ult_10_v8i16: 2918; PWR7: # %bb.0: 2919; PWR7-NEXT: vspltish 3, 1 2920; PWR7-NEXT: addis 3, 2, .LCPI29_0@toc@ha 2921; PWR7-NEXT: addi 3, 3, .LCPI29_0@toc@l 2922; PWR7-NEXT: vspltish 4, 2 2923; PWR7-NEXT: lxvw4x 0, 0, 3 2924; PWR7-NEXT: addis 3, 2, .LCPI29_1@toc@ha 2925; PWR7-NEXT: vspltisb 5, 15 2926; PWR7-NEXT: vsrh 3, 2, 3 2927; PWR7-NEXT: addi 3, 3, .LCPI29_1@toc@l 2928; PWR7-NEXT: xxland 35, 35, 0 2929; PWR7-NEXT: lxvw4x 0, 0, 3 2930; PWR7-NEXT: vsubuhm 2, 2, 3 2931; PWR7-NEXT: vsrh 3, 2, 4 2932; PWR7-NEXT: xxland 34, 34, 0 2933; PWR7-NEXT: vspltish 4, 4 2934; PWR7-NEXT: xxland 35, 35, 0 2935; PWR7-NEXT: vadduhm 2, 2, 3 2936; PWR7-NEXT: vsrh 3, 2, 4 2937; PWR7-NEXT: vxor 4, 4, 4 2938; PWR7-NEXT: vadduhm 2, 2, 3 2939; PWR7-NEXT: vspltisb 3, 1 2940; PWR7-NEXT: xxland 34, 34, 37 2941; PWR7-NEXT: vmladduhm 2, 2, 3, 4 2942; PWR7-NEXT: vspltish 3, 8 2943; PWR7-NEXT: vsrh 2, 2, 3 2944; PWR7-NEXT: vspltish 3, 10 2945; PWR7-NEXT: vcmpgtuh 2, 3, 2 2946; PWR7-NEXT: blr 2947; 2948; PWR8-LABEL: ult_10_v8i16: 2949; PWR8: # %bb.0: 2950; PWR8-NEXT: vspltish 3, 10 2951; PWR8-NEXT: vpopcnth 2, 2 2952; PWR8-NEXT: vcmpgtuh 2, 3, 2 2953; PWR8-NEXT: blr 2954; 2955; PWR9-LABEL: ult_10_v8i16: 2956; PWR9: # %bb.0: 2957; PWR9-NEXT: vspltish 3, 10 2958; PWR9-NEXT: vpopcnth 2, 2 2959; PWR9-NEXT: vcmpgtuh 2, 3, 2 2960; PWR9-NEXT: blr 2961 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 2962 %3 = icmp ult <8 x i16> %2, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10> 2963 %4 = sext <8 x i1> %3 to <8 x i16> 2964 ret <8 x i16> %4 2965} 2966 2967define <8 x i16> @ugt_10_v8i16(<8 x i16> %0) { 2968; PWR5-LABEL: ugt_10_v8i16: 2969; PWR5: # %bb.0: 2970; PWR5-NEXT: addis 3, 2, .LCPI30_0@toc@ha 2971; PWR5-NEXT: vspltish 4, 1 2972; PWR5-NEXT: vxor 3, 3, 3 2973; PWR5-NEXT: addi 3, 3, .LCPI30_0@toc@l 2974; PWR5-NEXT: lvx 5, 0, 3 2975; PWR5-NEXT: addis 3, 2, .LCPI30_1@toc@ha 2976; PWR5-NEXT: addi 3, 3, .LCPI30_1@toc@l 2977; PWR5-NEXT: vsrh 4, 2, 4 2978; PWR5-NEXT: vand 4, 4, 5 2979; PWR5-NEXT: vspltish 5, 2 2980; PWR5-NEXT: vsubuhm 2, 2, 4 2981; PWR5-NEXT: vsrh 4, 2, 5 2982; PWR5-NEXT: lvx 5, 0, 3 2983; PWR5-NEXT: vand 2, 2, 5 2984; PWR5-NEXT: vand 4, 4, 5 2985; PWR5-NEXT: vspltish 5, 4 2986; PWR5-NEXT: vadduhm 2, 2, 4 2987; PWR5-NEXT: vsrh 4, 2, 5 2988; PWR5-NEXT: vspltisb 5, 15 2989; PWR5-NEXT: vadduhm 2, 2, 4 2990; PWR5-NEXT: vspltisb 4, 1 2991; PWR5-NEXT: vand 2, 2, 5 2992; PWR5-NEXT: vmladduhm 2, 2, 4, 3 2993; PWR5-NEXT: vspltish 3, 8 2994; PWR5-NEXT: vsrh 2, 2, 3 2995; PWR5-NEXT: vspltish 3, 10 2996; PWR5-NEXT: vcmpgtuh 2, 2, 3 2997; PWR5-NEXT: blr 2998; 2999; PWR6-LABEL: ugt_10_v8i16: 3000; PWR6: # %bb.0: 3001; PWR6-NEXT: addis 3, 2, .LCPI30_0@toc@ha 3002; PWR6-NEXT: vspltish 4, 1 3003; PWR6-NEXT: vxor 3, 3, 3 3004; PWR6-NEXT: addi 3, 3, .LCPI30_0@toc@l 3005; PWR6-NEXT: lvx 5, 0, 3 3006; PWR6-NEXT: addis 3, 2, .LCPI30_1@toc@ha 3007; PWR6-NEXT: addi 3, 3, .LCPI30_1@toc@l 3008; PWR6-NEXT: vsrh 4, 2, 4 3009; PWR6-NEXT: vand 4, 4, 5 3010; PWR6-NEXT: vspltish 5, 2 3011; PWR6-NEXT: vsubuhm 2, 2, 4 3012; PWR6-NEXT: vsrh 4, 2, 5 3013; PWR6-NEXT: lvx 5, 0, 3 3014; PWR6-NEXT: vand 2, 2, 5 3015; PWR6-NEXT: vand 4, 4, 5 3016; PWR6-NEXT: vspltish 5, 4 3017; PWR6-NEXT: vadduhm 2, 2, 4 3018; PWR6-NEXT: vsrh 4, 2, 5 3019; PWR6-NEXT: vspltisb 5, 15 3020; PWR6-NEXT: vadduhm 2, 2, 4 3021; PWR6-NEXT: vspltisb 4, 1 3022; PWR6-NEXT: vand 2, 2, 5 3023; PWR6-NEXT: vmladduhm 2, 2, 4, 3 3024; PWR6-NEXT: vspltish 3, 8 3025; PWR6-NEXT: vsrh 2, 2, 3 3026; PWR6-NEXT: vspltish 3, 10 3027; PWR6-NEXT: vcmpgtuh 2, 2, 3 3028; PWR6-NEXT: blr 3029; 3030; PWR7-LABEL: ugt_10_v8i16: 3031; PWR7: # %bb.0: 3032; PWR7-NEXT: vspltish 3, 1 3033; PWR7-NEXT: addis 3, 2, .LCPI30_0@toc@ha 3034; PWR7-NEXT: addi 3, 3, .LCPI30_0@toc@l 3035; PWR7-NEXT: vspltish 4, 2 3036; PWR7-NEXT: lxvw4x 0, 0, 3 3037; PWR7-NEXT: addis 3, 2, .LCPI30_1@toc@ha 3038; PWR7-NEXT: vspltisb 5, 15 3039; PWR7-NEXT: vsrh 3, 2, 3 3040; PWR7-NEXT: addi 3, 3, .LCPI30_1@toc@l 3041; PWR7-NEXT: xxland 35, 35, 0 3042; PWR7-NEXT: lxvw4x 0, 0, 3 3043; PWR7-NEXT: vsubuhm 2, 2, 3 3044; PWR7-NEXT: vsrh 3, 2, 4 3045; PWR7-NEXT: xxland 34, 34, 0 3046; PWR7-NEXT: vspltish 4, 4 3047; PWR7-NEXT: xxland 35, 35, 0 3048; PWR7-NEXT: vadduhm 2, 2, 3 3049; PWR7-NEXT: vsrh 3, 2, 4 3050; PWR7-NEXT: vxor 4, 4, 4 3051; PWR7-NEXT: vadduhm 2, 2, 3 3052; PWR7-NEXT: vspltisb 3, 1 3053; PWR7-NEXT: xxland 34, 34, 37 3054; PWR7-NEXT: vmladduhm 2, 2, 3, 4 3055; PWR7-NEXT: vspltish 3, 8 3056; PWR7-NEXT: vsrh 2, 2, 3 3057; PWR7-NEXT: vspltish 3, 10 3058; PWR7-NEXT: vcmpgtuh 2, 2, 3 3059; PWR7-NEXT: blr 3060; 3061; PWR8-LABEL: ugt_10_v8i16: 3062; PWR8: # %bb.0: 3063; PWR8-NEXT: vspltish 3, 10 3064; PWR8-NEXT: vpopcnth 2, 2 3065; PWR8-NEXT: vcmpgtuh 2, 2, 3 3066; PWR8-NEXT: blr 3067; 3068; PWR9-LABEL: ugt_10_v8i16: 3069; PWR9: # %bb.0: 3070; PWR9-NEXT: vspltish 3, 10 3071; PWR9-NEXT: vpopcnth 2, 2 3072; PWR9-NEXT: vcmpgtuh 2, 2, 3 3073; PWR9-NEXT: blr 3074 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 3075 %3 = icmp ugt <8 x i16> %2, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10> 3076 %4 = sext <8 x i1> %3 to <8 x i16> 3077 ret <8 x i16> %4 3078} 3079 3080define <8 x i16> @ult_11_v8i16(<8 x i16> %0) { 3081; PWR5-LABEL: ult_11_v8i16: 3082; PWR5: # %bb.0: 3083; PWR5-NEXT: addis 3, 2, .LCPI31_0@toc@ha 3084; PWR5-NEXT: vspltish 4, 1 3085; PWR5-NEXT: vxor 3, 3, 3 3086; PWR5-NEXT: addi 3, 3, .LCPI31_0@toc@l 3087; PWR5-NEXT: lvx 5, 0, 3 3088; PWR5-NEXT: addis 3, 2, .LCPI31_1@toc@ha 3089; PWR5-NEXT: addi 3, 3, .LCPI31_1@toc@l 3090; PWR5-NEXT: vsrh 4, 2, 4 3091; PWR5-NEXT: vand 4, 4, 5 3092; PWR5-NEXT: vspltish 5, 2 3093; PWR5-NEXT: vsubuhm 2, 2, 4 3094; PWR5-NEXT: vsrh 4, 2, 5 3095; PWR5-NEXT: lvx 5, 0, 3 3096; PWR5-NEXT: vand 2, 2, 5 3097; PWR5-NEXT: vand 4, 4, 5 3098; PWR5-NEXT: vspltish 5, 4 3099; PWR5-NEXT: vadduhm 2, 2, 4 3100; PWR5-NEXT: vsrh 4, 2, 5 3101; PWR5-NEXT: vspltisb 5, 15 3102; PWR5-NEXT: vadduhm 2, 2, 4 3103; PWR5-NEXT: vspltisb 4, 1 3104; PWR5-NEXT: vand 2, 2, 5 3105; PWR5-NEXT: vmladduhm 2, 2, 4, 3 3106; PWR5-NEXT: vspltish 3, 8 3107; PWR5-NEXT: vsrh 2, 2, 3 3108; PWR5-NEXT: vspltish 3, 11 3109; PWR5-NEXT: vcmpgtuh 2, 3, 2 3110; PWR5-NEXT: blr 3111; 3112; PWR6-LABEL: ult_11_v8i16: 3113; PWR6: # %bb.0: 3114; PWR6-NEXT: addis 3, 2, .LCPI31_0@toc@ha 3115; PWR6-NEXT: vspltish 4, 1 3116; PWR6-NEXT: vxor 3, 3, 3 3117; PWR6-NEXT: addi 3, 3, .LCPI31_0@toc@l 3118; PWR6-NEXT: lvx 5, 0, 3 3119; PWR6-NEXT: addis 3, 2, .LCPI31_1@toc@ha 3120; PWR6-NEXT: addi 3, 3, .LCPI31_1@toc@l 3121; PWR6-NEXT: vsrh 4, 2, 4 3122; PWR6-NEXT: vand 4, 4, 5 3123; PWR6-NEXT: vspltish 5, 2 3124; PWR6-NEXT: vsubuhm 2, 2, 4 3125; PWR6-NEXT: vsrh 4, 2, 5 3126; PWR6-NEXT: lvx 5, 0, 3 3127; PWR6-NEXT: vand 2, 2, 5 3128; PWR6-NEXT: vand 4, 4, 5 3129; PWR6-NEXT: vspltish 5, 4 3130; PWR6-NEXT: vadduhm 2, 2, 4 3131; PWR6-NEXT: vsrh 4, 2, 5 3132; PWR6-NEXT: vspltisb 5, 15 3133; PWR6-NEXT: vadduhm 2, 2, 4 3134; PWR6-NEXT: vspltisb 4, 1 3135; PWR6-NEXT: vand 2, 2, 5 3136; PWR6-NEXT: vmladduhm 2, 2, 4, 3 3137; PWR6-NEXT: vspltish 3, 8 3138; PWR6-NEXT: vsrh 2, 2, 3 3139; PWR6-NEXT: vspltish 3, 11 3140; PWR6-NEXT: vcmpgtuh 2, 3, 2 3141; PWR6-NEXT: blr 3142; 3143; PWR7-LABEL: ult_11_v8i16: 3144; PWR7: # %bb.0: 3145; PWR7-NEXT: vspltish 3, 1 3146; PWR7-NEXT: addis 3, 2, .LCPI31_0@toc@ha 3147; PWR7-NEXT: addi 3, 3, .LCPI31_0@toc@l 3148; PWR7-NEXT: vspltish 4, 2 3149; PWR7-NEXT: lxvw4x 0, 0, 3 3150; PWR7-NEXT: addis 3, 2, .LCPI31_1@toc@ha 3151; PWR7-NEXT: vspltisb 5, 15 3152; PWR7-NEXT: vsrh 3, 2, 3 3153; PWR7-NEXT: addi 3, 3, .LCPI31_1@toc@l 3154; PWR7-NEXT: xxland 35, 35, 0 3155; PWR7-NEXT: lxvw4x 0, 0, 3 3156; PWR7-NEXT: vsubuhm 2, 2, 3 3157; PWR7-NEXT: vsrh 3, 2, 4 3158; PWR7-NEXT: xxland 34, 34, 0 3159; PWR7-NEXT: vspltish 4, 4 3160; PWR7-NEXT: xxland 35, 35, 0 3161; PWR7-NEXT: vadduhm 2, 2, 3 3162; PWR7-NEXT: vsrh 3, 2, 4 3163; PWR7-NEXT: vxor 4, 4, 4 3164; PWR7-NEXT: vadduhm 2, 2, 3 3165; PWR7-NEXT: vspltisb 3, 1 3166; PWR7-NEXT: xxland 34, 34, 37 3167; PWR7-NEXT: vmladduhm 2, 2, 3, 4 3168; PWR7-NEXT: vspltish 3, 8 3169; PWR7-NEXT: vsrh 2, 2, 3 3170; PWR7-NEXT: vspltish 3, 11 3171; PWR7-NEXT: vcmpgtuh 2, 3, 2 3172; PWR7-NEXT: blr 3173; 3174; PWR8-LABEL: ult_11_v8i16: 3175; PWR8: # %bb.0: 3176; PWR8-NEXT: vspltish 3, 11 3177; PWR8-NEXT: vpopcnth 2, 2 3178; PWR8-NEXT: vcmpgtuh 2, 3, 2 3179; PWR8-NEXT: blr 3180; 3181; PWR9-LABEL: ult_11_v8i16: 3182; PWR9: # %bb.0: 3183; PWR9-NEXT: vspltish 3, 11 3184; PWR9-NEXT: vpopcnth 2, 2 3185; PWR9-NEXT: vcmpgtuh 2, 3, 2 3186; PWR9-NEXT: blr 3187 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 3188 %3 = icmp ult <8 x i16> %2, <i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11> 3189 %4 = sext <8 x i1> %3 to <8 x i16> 3190 ret <8 x i16> %4 3191} 3192 3193define <8 x i16> @ugt_11_v8i16(<8 x i16> %0) { 3194; PWR5-LABEL: ugt_11_v8i16: 3195; PWR5: # %bb.0: 3196; PWR5-NEXT: addis 3, 2, .LCPI32_0@toc@ha 3197; PWR5-NEXT: vspltish 4, 1 3198; PWR5-NEXT: vxor 3, 3, 3 3199; PWR5-NEXT: addi 3, 3, .LCPI32_0@toc@l 3200; PWR5-NEXT: lvx 5, 0, 3 3201; PWR5-NEXT: addis 3, 2, .LCPI32_1@toc@ha 3202; PWR5-NEXT: addi 3, 3, .LCPI32_1@toc@l 3203; PWR5-NEXT: vsrh 4, 2, 4 3204; PWR5-NEXT: vand 4, 4, 5 3205; PWR5-NEXT: vspltish 5, 2 3206; PWR5-NEXT: vsubuhm 2, 2, 4 3207; PWR5-NEXT: vsrh 4, 2, 5 3208; PWR5-NEXT: lvx 5, 0, 3 3209; PWR5-NEXT: vand 2, 2, 5 3210; PWR5-NEXT: vand 4, 4, 5 3211; PWR5-NEXT: vspltish 5, 4 3212; PWR5-NEXT: vadduhm 2, 2, 4 3213; PWR5-NEXT: vsrh 4, 2, 5 3214; PWR5-NEXT: vspltisb 5, 15 3215; PWR5-NEXT: vadduhm 2, 2, 4 3216; PWR5-NEXT: vspltisb 4, 1 3217; PWR5-NEXT: vand 2, 2, 5 3218; PWR5-NEXT: vmladduhm 2, 2, 4, 3 3219; PWR5-NEXT: vspltish 3, 8 3220; PWR5-NEXT: vsrh 2, 2, 3 3221; PWR5-NEXT: vspltish 3, 11 3222; PWR5-NEXT: vcmpgtuh 2, 2, 3 3223; PWR5-NEXT: blr 3224; 3225; PWR6-LABEL: ugt_11_v8i16: 3226; PWR6: # %bb.0: 3227; PWR6-NEXT: addis 3, 2, .LCPI32_0@toc@ha 3228; PWR6-NEXT: vspltish 4, 1 3229; PWR6-NEXT: vxor 3, 3, 3 3230; PWR6-NEXT: addi 3, 3, .LCPI32_0@toc@l 3231; PWR6-NEXT: lvx 5, 0, 3 3232; PWR6-NEXT: addis 3, 2, .LCPI32_1@toc@ha 3233; PWR6-NEXT: addi 3, 3, .LCPI32_1@toc@l 3234; PWR6-NEXT: vsrh 4, 2, 4 3235; PWR6-NEXT: vand 4, 4, 5 3236; PWR6-NEXT: vspltish 5, 2 3237; PWR6-NEXT: vsubuhm 2, 2, 4 3238; PWR6-NEXT: vsrh 4, 2, 5 3239; PWR6-NEXT: lvx 5, 0, 3 3240; PWR6-NEXT: vand 2, 2, 5 3241; PWR6-NEXT: vand 4, 4, 5 3242; PWR6-NEXT: vspltish 5, 4 3243; PWR6-NEXT: vadduhm 2, 2, 4 3244; PWR6-NEXT: vsrh 4, 2, 5 3245; PWR6-NEXT: vspltisb 5, 15 3246; PWR6-NEXT: vadduhm 2, 2, 4 3247; PWR6-NEXT: vspltisb 4, 1 3248; PWR6-NEXT: vand 2, 2, 5 3249; PWR6-NEXT: vmladduhm 2, 2, 4, 3 3250; PWR6-NEXT: vspltish 3, 8 3251; PWR6-NEXT: vsrh 2, 2, 3 3252; PWR6-NEXT: vspltish 3, 11 3253; PWR6-NEXT: vcmpgtuh 2, 2, 3 3254; PWR6-NEXT: blr 3255; 3256; PWR7-LABEL: ugt_11_v8i16: 3257; PWR7: # %bb.0: 3258; PWR7-NEXT: vspltish 3, 1 3259; PWR7-NEXT: addis 3, 2, .LCPI32_0@toc@ha 3260; PWR7-NEXT: addi 3, 3, .LCPI32_0@toc@l 3261; PWR7-NEXT: vspltish 4, 2 3262; PWR7-NEXT: lxvw4x 0, 0, 3 3263; PWR7-NEXT: addis 3, 2, .LCPI32_1@toc@ha 3264; PWR7-NEXT: vspltisb 5, 15 3265; PWR7-NEXT: vsrh 3, 2, 3 3266; PWR7-NEXT: addi 3, 3, .LCPI32_1@toc@l 3267; PWR7-NEXT: xxland 35, 35, 0 3268; PWR7-NEXT: lxvw4x 0, 0, 3 3269; PWR7-NEXT: vsubuhm 2, 2, 3 3270; PWR7-NEXT: vsrh 3, 2, 4 3271; PWR7-NEXT: xxland 34, 34, 0 3272; PWR7-NEXT: vspltish 4, 4 3273; PWR7-NEXT: xxland 35, 35, 0 3274; PWR7-NEXT: vadduhm 2, 2, 3 3275; PWR7-NEXT: vsrh 3, 2, 4 3276; PWR7-NEXT: vxor 4, 4, 4 3277; PWR7-NEXT: vadduhm 2, 2, 3 3278; PWR7-NEXT: vspltisb 3, 1 3279; PWR7-NEXT: xxland 34, 34, 37 3280; PWR7-NEXT: vmladduhm 2, 2, 3, 4 3281; PWR7-NEXT: vspltish 3, 8 3282; PWR7-NEXT: vsrh 2, 2, 3 3283; PWR7-NEXT: vspltish 3, 11 3284; PWR7-NEXT: vcmpgtuh 2, 2, 3 3285; PWR7-NEXT: blr 3286; 3287; PWR8-LABEL: ugt_11_v8i16: 3288; PWR8: # %bb.0: 3289; PWR8-NEXT: vspltish 3, 11 3290; PWR8-NEXT: vpopcnth 2, 2 3291; PWR8-NEXT: vcmpgtuh 2, 2, 3 3292; PWR8-NEXT: blr 3293; 3294; PWR9-LABEL: ugt_11_v8i16: 3295; PWR9: # %bb.0: 3296; PWR9-NEXT: vspltish 3, 11 3297; PWR9-NEXT: vpopcnth 2, 2 3298; PWR9-NEXT: vcmpgtuh 2, 2, 3 3299; PWR9-NEXT: blr 3300 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 3301 %3 = icmp ugt <8 x i16> %2, <i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11> 3302 %4 = sext <8 x i1> %3 to <8 x i16> 3303 ret <8 x i16> %4 3304} 3305 3306define <8 x i16> @ult_12_v8i16(<8 x i16> %0) { 3307; PWR5-LABEL: ult_12_v8i16: 3308; PWR5: # %bb.0: 3309; PWR5-NEXT: addis 3, 2, .LCPI33_0@toc@ha 3310; PWR5-NEXT: vspltish 4, 1 3311; PWR5-NEXT: vxor 3, 3, 3 3312; PWR5-NEXT: addi 3, 3, .LCPI33_0@toc@l 3313; PWR5-NEXT: lvx 5, 0, 3 3314; PWR5-NEXT: addis 3, 2, .LCPI33_1@toc@ha 3315; PWR5-NEXT: addi 3, 3, .LCPI33_1@toc@l 3316; PWR5-NEXT: vsrh 4, 2, 4 3317; PWR5-NEXT: vand 4, 4, 5 3318; PWR5-NEXT: vspltish 5, 2 3319; PWR5-NEXT: vsubuhm 2, 2, 4 3320; PWR5-NEXT: vsrh 4, 2, 5 3321; PWR5-NEXT: lvx 5, 0, 3 3322; PWR5-NEXT: vand 2, 2, 5 3323; PWR5-NEXT: vand 4, 4, 5 3324; PWR5-NEXT: vspltish 5, 4 3325; PWR5-NEXT: vadduhm 2, 2, 4 3326; PWR5-NEXT: vsrh 4, 2, 5 3327; PWR5-NEXT: vspltisb 5, 15 3328; PWR5-NEXT: vadduhm 2, 2, 4 3329; PWR5-NEXT: vspltisb 4, 1 3330; PWR5-NEXT: vand 2, 2, 5 3331; PWR5-NEXT: vmladduhm 2, 2, 4, 3 3332; PWR5-NEXT: vspltish 3, 8 3333; PWR5-NEXT: vsrh 2, 2, 3 3334; PWR5-NEXT: vspltish 3, 12 3335; PWR5-NEXT: vcmpgtuh 2, 3, 2 3336; PWR5-NEXT: blr 3337; 3338; PWR6-LABEL: ult_12_v8i16: 3339; PWR6: # %bb.0: 3340; PWR6-NEXT: addis 3, 2, .LCPI33_0@toc@ha 3341; PWR6-NEXT: vspltish 4, 1 3342; PWR6-NEXT: vxor 3, 3, 3 3343; PWR6-NEXT: addi 3, 3, .LCPI33_0@toc@l 3344; PWR6-NEXT: lvx 5, 0, 3 3345; PWR6-NEXT: addis 3, 2, .LCPI33_1@toc@ha 3346; PWR6-NEXT: addi 3, 3, .LCPI33_1@toc@l 3347; PWR6-NEXT: vsrh 4, 2, 4 3348; PWR6-NEXT: vand 4, 4, 5 3349; PWR6-NEXT: vspltish 5, 2 3350; PWR6-NEXT: vsubuhm 2, 2, 4 3351; PWR6-NEXT: vsrh 4, 2, 5 3352; PWR6-NEXT: lvx 5, 0, 3 3353; PWR6-NEXT: vand 2, 2, 5 3354; PWR6-NEXT: vand 4, 4, 5 3355; PWR6-NEXT: vspltish 5, 4 3356; PWR6-NEXT: vadduhm 2, 2, 4 3357; PWR6-NEXT: vsrh 4, 2, 5 3358; PWR6-NEXT: vspltisb 5, 15 3359; PWR6-NEXT: vadduhm 2, 2, 4 3360; PWR6-NEXT: vspltisb 4, 1 3361; PWR6-NEXT: vand 2, 2, 5 3362; PWR6-NEXT: vmladduhm 2, 2, 4, 3 3363; PWR6-NEXT: vspltish 3, 8 3364; PWR6-NEXT: vsrh 2, 2, 3 3365; PWR6-NEXT: vspltish 3, 12 3366; PWR6-NEXT: vcmpgtuh 2, 3, 2 3367; PWR6-NEXT: blr 3368; 3369; PWR7-LABEL: ult_12_v8i16: 3370; PWR7: # %bb.0: 3371; PWR7-NEXT: vspltish 3, 1 3372; PWR7-NEXT: addis 3, 2, .LCPI33_0@toc@ha 3373; PWR7-NEXT: addi 3, 3, .LCPI33_0@toc@l 3374; PWR7-NEXT: vspltish 4, 2 3375; PWR7-NEXT: lxvw4x 0, 0, 3 3376; PWR7-NEXT: addis 3, 2, .LCPI33_1@toc@ha 3377; PWR7-NEXT: vspltisb 5, 15 3378; PWR7-NEXT: vsrh 3, 2, 3 3379; PWR7-NEXT: addi 3, 3, .LCPI33_1@toc@l 3380; PWR7-NEXT: xxland 35, 35, 0 3381; PWR7-NEXT: lxvw4x 0, 0, 3 3382; PWR7-NEXT: vsubuhm 2, 2, 3 3383; PWR7-NEXT: vsrh 3, 2, 4 3384; PWR7-NEXT: xxland 34, 34, 0 3385; PWR7-NEXT: vspltish 4, 4 3386; PWR7-NEXT: xxland 35, 35, 0 3387; PWR7-NEXT: vadduhm 2, 2, 3 3388; PWR7-NEXT: vsrh 3, 2, 4 3389; PWR7-NEXT: vxor 4, 4, 4 3390; PWR7-NEXT: vadduhm 2, 2, 3 3391; PWR7-NEXT: vspltisb 3, 1 3392; PWR7-NEXT: xxland 34, 34, 37 3393; PWR7-NEXT: vmladduhm 2, 2, 3, 4 3394; PWR7-NEXT: vspltish 3, 8 3395; PWR7-NEXT: vsrh 2, 2, 3 3396; PWR7-NEXT: vspltish 3, 12 3397; PWR7-NEXT: vcmpgtuh 2, 3, 2 3398; PWR7-NEXT: blr 3399; 3400; PWR8-LABEL: ult_12_v8i16: 3401; PWR8: # %bb.0: 3402; PWR8-NEXT: vspltish 3, 12 3403; PWR8-NEXT: vpopcnth 2, 2 3404; PWR8-NEXT: vcmpgtuh 2, 3, 2 3405; PWR8-NEXT: blr 3406; 3407; PWR9-LABEL: ult_12_v8i16: 3408; PWR9: # %bb.0: 3409; PWR9-NEXT: vspltish 3, 12 3410; PWR9-NEXT: vpopcnth 2, 2 3411; PWR9-NEXT: vcmpgtuh 2, 3, 2 3412; PWR9-NEXT: blr 3413 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 3414 %3 = icmp ult <8 x i16> %2, <i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12> 3415 %4 = sext <8 x i1> %3 to <8 x i16> 3416 ret <8 x i16> %4 3417} 3418 3419define <8 x i16> @ugt_12_v8i16(<8 x i16> %0) { 3420; PWR5-LABEL: ugt_12_v8i16: 3421; PWR5: # %bb.0: 3422; PWR5-NEXT: addis 3, 2, .LCPI34_0@toc@ha 3423; PWR5-NEXT: vspltish 4, 1 3424; PWR5-NEXT: vxor 3, 3, 3 3425; PWR5-NEXT: addi 3, 3, .LCPI34_0@toc@l 3426; PWR5-NEXT: lvx 5, 0, 3 3427; PWR5-NEXT: addis 3, 2, .LCPI34_1@toc@ha 3428; PWR5-NEXT: addi 3, 3, .LCPI34_1@toc@l 3429; PWR5-NEXT: vsrh 4, 2, 4 3430; PWR5-NEXT: vand 4, 4, 5 3431; PWR5-NEXT: vspltish 5, 2 3432; PWR5-NEXT: vsubuhm 2, 2, 4 3433; PWR5-NEXT: vsrh 4, 2, 5 3434; PWR5-NEXT: lvx 5, 0, 3 3435; PWR5-NEXT: vand 2, 2, 5 3436; PWR5-NEXT: vand 4, 4, 5 3437; PWR5-NEXT: vspltish 5, 4 3438; PWR5-NEXT: vadduhm 2, 2, 4 3439; PWR5-NEXT: vsrh 4, 2, 5 3440; PWR5-NEXT: vspltisb 5, 15 3441; PWR5-NEXT: vadduhm 2, 2, 4 3442; PWR5-NEXT: vspltisb 4, 1 3443; PWR5-NEXT: vand 2, 2, 5 3444; PWR5-NEXT: vmladduhm 2, 2, 4, 3 3445; PWR5-NEXT: vspltish 3, 8 3446; PWR5-NEXT: vsrh 2, 2, 3 3447; PWR5-NEXT: vspltish 3, 12 3448; PWR5-NEXT: vcmpgtuh 2, 2, 3 3449; PWR5-NEXT: blr 3450; 3451; PWR6-LABEL: ugt_12_v8i16: 3452; PWR6: # %bb.0: 3453; PWR6-NEXT: addis 3, 2, .LCPI34_0@toc@ha 3454; PWR6-NEXT: vspltish 4, 1 3455; PWR6-NEXT: vxor 3, 3, 3 3456; PWR6-NEXT: addi 3, 3, .LCPI34_0@toc@l 3457; PWR6-NEXT: lvx 5, 0, 3 3458; PWR6-NEXT: addis 3, 2, .LCPI34_1@toc@ha 3459; PWR6-NEXT: addi 3, 3, .LCPI34_1@toc@l 3460; PWR6-NEXT: vsrh 4, 2, 4 3461; PWR6-NEXT: vand 4, 4, 5 3462; PWR6-NEXT: vspltish 5, 2 3463; PWR6-NEXT: vsubuhm 2, 2, 4 3464; PWR6-NEXT: vsrh 4, 2, 5 3465; PWR6-NEXT: lvx 5, 0, 3 3466; PWR6-NEXT: vand 2, 2, 5 3467; PWR6-NEXT: vand 4, 4, 5 3468; PWR6-NEXT: vspltish 5, 4 3469; PWR6-NEXT: vadduhm 2, 2, 4 3470; PWR6-NEXT: vsrh 4, 2, 5 3471; PWR6-NEXT: vspltisb 5, 15 3472; PWR6-NEXT: vadduhm 2, 2, 4 3473; PWR6-NEXT: vspltisb 4, 1 3474; PWR6-NEXT: vand 2, 2, 5 3475; PWR6-NEXT: vmladduhm 2, 2, 4, 3 3476; PWR6-NEXT: vspltish 3, 8 3477; PWR6-NEXT: vsrh 2, 2, 3 3478; PWR6-NEXT: vspltish 3, 12 3479; PWR6-NEXT: vcmpgtuh 2, 2, 3 3480; PWR6-NEXT: blr 3481; 3482; PWR7-LABEL: ugt_12_v8i16: 3483; PWR7: # %bb.0: 3484; PWR7-NEXT: vspltish 3, 1 3485; PWR7-NEXT: addis 3, 2, .LCPI34_0@toc@ha 3486; PWR7-NEXT: addi 3, 3, .LCPI34_0@toc@l 3487; PWR7-NEXT: vspltish 4, 2 3488; PWR7-NEXT: lxvw4x 0, 0, 3 3489; PWR7-NEXT: addis 3, 2, .LCPI34_1@toc@ha 3490; PWR7-NEXT: vspltisb 5, 15 3491; PWR7-NEXT: vsrh 3, 2, 3 3492; PWR7-NEXT: addi 3, 3, .LCPI34_1@toc@l 3493; PWR7-NEXT: xxland 35, 35, 0 3494; PWR7-NEXT: lxvw4x 0, 0, 3 3495; PWR7-NEXT: vsubuhm 2, 2, 3 3496; PWR7-NEXT: vsrh 3, 2, 4 3497; PWR7-NEXT: xxland 34, 34, 0 3498; PWR7-NEXT: vspltish 4, 4 3499; PWR7-NEXT: xxland 35, 35, 0 3500; PWR7-NEXT: vadduhm 2, 2, 3 3501; PWR7-NEXT: vsrh 3, 2, 4 3502; PWR7-NEXT: vxor 4, 4, 4 3503; PWR7-NEXT: vadduhm 2, 2, 3 3504; PWR7-NEXT: vspltisb 3, 1 3505; PWR7-NEXT: xxland 34, 34, 37 3506; PWR7-NEXT: vmladduhm 2, 2, 3, 4 3507; PWR7-NEXT: vspltish 3, 8 3508; PWR7-NEXT: vsrh 2, 2, 3 3509; PWR7-NEXT: vspltish 3, 12 3510; PWR7-NEXT: vcmpgtuh 2, 2, 3 3511; PWR7-NEXT: blr 3512; 3513; PWR8-LABEL: ugt_12_v8i16: 3514; PWR8: # %bb.0: 3515; PWR8-NEXT: vspltish 3, 12 3516; PWR8-NEXT: vpopcnth 2, 2 3517; PWR8-NEXT: vcmpgtuh 2, 2, 3 3518; PWR8-NEXT: blr 3519; 3520; PWR9-LABEL: ugt_12_v8i16: 3521; PWR9: # %bb.0: 3522; PWR9-NEXT: vspltish 3, 12 3523; PWR9-NEXT: vpopcnth 2, 2 3524; PWR9-NEXT: vcmpgtuh 2, 2, 3 3525; PWR9-NEXT: blr 3526 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 3527 %3 = icmp ugt <8 x i16> %2, <i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12> 3528 %4 = sext <8 x i1> %3 to <8 x i16> 3529 ret <8 x i16> %4 3530} 3531 3532define <8 x i16> @ult_13_v8i16(<8 x i16> %0) { 3533; PWR5-LABEL: ult_13_v8i16: 3534; PWR5: # %bb.0: 3535; PWR5-NEXT: addis 3, 2, .LCPI35_0@toc@ha 3536; PWR5-NEXT: vspltish 4, 1 3537; PWR5-NEXT: vxor 3, 3, 3 3538; PWR5-NEXT: addi 3, 3, .LCPI35_0@toc@l 3539; PWR5-NEXT: lvx 5, 0, 3 3540; PWR5-NEXT: addis 3, 2, .LCPI35_1@toc@ha 3541; PWR5-NEXT: addi 3, 3, .LCPI35_1@toc@l 3542; PWR5-NEXT: vsrh 4, 2, 4 3543; PWR5-NEXT: vand 4, 4, 5 3544; PWR5-NEXT: vspltish 5, 2 3545; PWR5-NEXT: vsubuhm 2, 2, 4 3546; PWR5-NEXT: vsrh 4, 2, 5 3547; PWR5-NEXT: lvx 5, 0, 3 3548; PWR5-NEXT: vand 2, 2, 5 3549; PWR5-NEXT: vand 4, 4, 5 3550; PWR5-NEXT: vspltish 5, 4 3551; PWR5-NEXT: vadduhm 2, 2, 4 3552; PWR5-NEXT: vsrh 4, 2, 5 3553; PWR5-NEXT: vspltisb 5, 15 3554; PWR5-NEXT: vadduhm 2, 2, 4 3555; PWR5-NEXT: vspltisb 4, 1 3556; PWR5-NEXT: vand 2, 2, 5 3557; PWR5-NEXT: vmladduhm 2, 2, 4, 3 3558; PWR5-NEXT: vspltish 3, 8 3559; PWR5-NEXT: vsrh 2, 2, 3 3560; PWR5-NEXT: vspltish 3, 13 3561; PWR5-NEXT: vcmpgtuh 2, 3, 2 3562; PWR5-NEXT: blr 3563; 3564; PWR6-LABEL: ult_13_v8i16: 3565; PWR6: # %bb.0: 3566; PWR6-NEXT: addis 3, 2, .LCPI35_0@toc@ha 3567; PWR6-NEXT: vspltish 4, 1 3568; PWR6-NEXT: vxor 3, 3, 3 3569; PWR6-NEXT: addi 3, 3, .LCPI35_0@toc@l 3570; PWR6-NEXT: lvx 5, 0, 3 3571; PWR6-NEXT: addis 3, 2, .LCPI35_1@toc@ha 3572; PWR6-NEXT: addi 3, 3, .LCPI35_1@toc@l 3573; PWR6-NEXT: vsrh 4, 2, 4 3574; PWR6-NEXT: vand 4, 4, 5 3575; PWR6-NEXT: vspltish 5, 2 3576; PWR6-NEXT: vsubuhm 2, 2, 4 3577; PWR6-NEXT: vsrh 4, 2, 5 3578; PWR6-NEXT: lvx 5, 0, 3 3579; PWR6-NEXT: vand 2, 2, 5 3580; PWR6-NEXT: vand 4, 4, 5 3581; PWR6-NEXT: vspltish 5, 4 3582; PWR6-NEXT: vadduhm 2, 2, 4 3583; PWR6-NEXT: vsrh 4, 2, 5 3584; PWR6-NEXT: vspltisb 5, 15 3585; PWR6-NEXT: vadduhm 2, 2, 4 3586; PWR6-NEXT: vspltisb 4, 1 3587; PWR6-NEXT: vand 2, 2, 5 3588; PWR6-NEXT: vmladduhm 2, 2, 4, 3 3589; PWR6-NEXT: vspltish 3, 8 3590; PWR6-NEXT: vsrh 2, 2, 3 3591; PWR6-NEXT: vspltish 3, 13 3592; PWR6-NEXT: vcmpgtuh 2, 3, 2 3593; PWR6-NEXT: blr 3594; 3595; PWR7-LABEL: ult_13_v8i16: 3596; PWR7: # %bb.0: 3597; PWR7-NEXT: vspltish 3, 1 3598; PWR7-NEXT: addis 3, 2, .LCPI35_0@toc@ha 3599; PWR7-NEXT: addi 3, 3, .LCPI35_0@toc@l 3600; PWR7-NEXT: vspltish 4, 2 3601; PWR7-NEXT: lxvw4x 0, 0, 3 3602; PWR7-NEXT: addis 3, 2, .LCPI35_1@toc@ha 3603; PWR7-NEXT: vspltisb 5, 15 3604; PWR7-NEXT: vsrh 3, 2, 3 3605; PWR7-NEXT: addi 3, 3, .LCPI35_1@toc@l 3606; PWR7-NEXT: xxland 35, 35, 0 3607; PWR7-NEXT: lxvw4x 0, 0, 3 3608; PWR7-NEXT: vsubuhm 2, 2, 3 3609; PWR7-NEXT: vsrh 3, 2, 4 3610; PWR7-NEXT: xxland 34, 34, 0 3611; PWR7-NEXT: vspltish 4, 4 3612; PWR7-NEXT: xxland 35, 35, 0 3613; PWR7-NEXT: vadduhm 2, 2, 3 3614; PWR7-NEXT: vsrh 3, 2, 4 3615; PWR7-NEXT: vxor 4, 4, 4 3616; PWR7-NEXT: vadduhm 2, 2, 3 3617; PWR7-NEXT: vspltisb 3, 1 3618; PWR7-NEXT: xxland 34, 34, 37 3619; PWR7-NEXT: vmladduhm 2, 2, 3, 4 3620; PWR7-NEXT: vspltish 3, 8 3621; PWR7-NEXT: vsrh 2, 2, 3 3622; PWR7-NEXT: vspltish 3, 13 3623; PWR7-NEXT: vcmpgtuh 2, 3, 2 3624; PWR7-NEXT: blr 3625; 3626; PWR8-LABEL: ult_13_v8i16: 3627; PWR8: # %bb.0: 3628; PWR8-NEXT: vspltish 3, 13 3629; PWR8-NEXT: vpopcnth 2, 2 3630; PWR8-NEXT: vcmpgtuh 2, 3, 2 3631; PWR8-NEXT: blr 3632; 3633; PWR9-LABEL: ult_13_v8i16: 3634; PWR9: # %bb.0: 3635; PWR9-NEXT: vspltish 3, 13 3636; PWR9-NEXT: vpopcnth 2, 2 3637; PWR9-NEXT: vcmpgtuh 2, 3, 2 3638; PWR9-NEXT: blr 3639 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 3640 %3 = icmp ult <8 x i16> %2, <i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13> 3641 %4 = sext <8 x i1> %3 to <8 x i16> 3642 ret <8 x i16> %4 3643} 3644 3645define <8 x i16> @ugt_13_v8i16(<8 x i16> %0) { 3646; PWR5-LABEL: ugt_13_v8i16: 3647; PWR5: # %bb.0: 3648; PWR5-NEXT: addis 3, 2, .LCPI36_0@toc@ha 3649; PWR5-NEXT: vspltish 4, 1 3650; PWR5-NEXT: vxor 3, 3, 3 3651; PWR5-NEXT: addi 3, 3, .LCPI36_0@toc@l 3652; PWR5-NEXT: lvx 5, 0, 3 3653; PWR5-NEXT: addis 3, 2, .LCPI36_1@toc@ha 3654; PWR5-NEXT: addi 3, 3, .LCPI36_1@toc@l 3655; PWR5-NEXT: vsrh 4, 2, 4 3656; PWR5-NEXT: vand 4, 4, 5 3657; PWR5-NEXT: vspltish 5, 2 3658; PWR5-NEXT: vsubuhm 2, 2, 4 3659; PWR5-NEXT: vsrh 4, 2, 5 3660; PWR5-NEXT: lvx 5, 0, 3 3661; PWR5-NEXT: vand 2, 2, 5 3662; PWR5-NEXT: vand 4, 4, 5 3663; PWR5-NEXT: vspltish 5, 4 3664; PWR5-NEXT: vadduhm 2, 2, 4 3665; PWR5-NEXT: vsrh 4, 2, 5 3666; PWR5-NEXT: vspltisb 5, 15 3667; PWR5-NEXT: vadduhm 2, 2, 4 3668; PWR5-NEXT: vspltisb 4, 1 3669; PWR5-NEXT: vand 2, 2, 5 3670; PWR5-NEXT: vmladduhm 2, 2, 4, 3 3671; PWR5-NEXT: vspltish 3, 8 3672; PWR5-NEXT: vsrh 2, 2, 3 3673; PWR5-NEXT: vspltish 3, 13 3674; PWR5-NEXT: vcmpgtuh 2, 2, 3 3675; PWR5-NEXT: blr 3676; 3677; PWR6-LABEL: ugt_13_v8i16: 3678; PWR6: # %bb.0: 3679; PWR6-NEXT: addis 3, 2, .LCPI36_0@toc@ha 3680; PWR6-NEXT: vspltish 4, 1 3681; PWR6-NEXT: vxor 3, 3, 3 3682; PWR6-NEXT: addi 3, 3, .LCPI36_0@toc@l 3683; PWR6-NEXT: lvx 5, 0, 3 3684; PWR6-NEXT: addis 3, 2, .LCPI36_1@toc@ha 3685; PWR6-NEXT: addi 3, 3, .LCPI36_1@toc@l 3686; PWR6-NEXT: vsrh 4, 2, 4 3687; PWR6-NEXT: vand 4, 4, 5 3688; PWR6-NEXT: vspltish 5, 2 3689; PWR6-NEXT: vsubuhm 2, 2, 4 3690; PWR6-NEXT: vsrh 4, 2, 5 3691; PWR6-NEXT: lvx 5, 0, 3 3692; PWR6-NEXT: vand 2, 2, 5 3693; PWR6-NEXT: vand 4, 4, 5 3694; PWR6-NEXT: vspltish 5, 4 3695; PWR6-NEXT: vadduhm 2, 2, 4 3696; PWR6-NEXT: vsrh 4, 2, 5 3697; PWR6-NEXT: vspltisb 5, 15 3698; PWR6-NEXT: vadduhm 2, 2, 4 3699; PWR6-NEXT: vspltisb 4, 1 3700; PWR6-NEXT: vand 2, 2, 5 3701; PWR6-NEXT: vmladduhm 2, 2, 4, 3 3702; PWR6-NEXT: vspltish 3, 8 3703; PWR6-NEXT: vsrh 2, 2, 3 3704; PWR6-NEXT: vspltish 3, 13 3705; PWR6-NEXT: vcmpgtuh 2, 2, 3 3706; PWR6-NEXT: blr 3707; 3708; PWR7-LABEL: ugt_13_v8i16: 3709; PWR7: # %bb.0: 3710; PWR7-NEXT: vspltish 3, 1 3711; PWR7-NEXT: addis 3, 2, .LCPI36_0@toc@ha 3712; PWR7-NEXT: addi 3, 3, .LCPI36_0@toc@l 3713; PWR7-NEXT: vspltish 4, 2 3714; PWR7-NEXT: lxvw4x 0, 0, 3 3715; PWR7-NEXT: addis 3, 2, .LCPI36_1@toc@ha 3716; PWR7-NEXT: vspltisb 5, 15 3717; PWR7-NEXT: vsrh 3, 2, 3 3718; PWR7-NEXT: addi 3, 3, .LCPI36_1@toc@l 3719; PWR7-NEXT: xxland 35, 35, 0 3720; PWR7-NEXT: lxvw4x 0, 0, 3 3721; PWR7-NEXT: vsubuhm 2, 2, 3 3722; PWR7-NEXT: vsrh 3, 2, 4 3723; PWR7-NEXT: xxland 34, 34, 0 3724; PWR7-NEXT: vspltish 4, 4 3725; PWR7-NEXT: xxland 35, 35, 0 3726; PWR7-NEXT: vadduhm 2, 2, 3 3727; PWR7-NEXT: vsrh 3, 2, 4 3728; PWR7-NEXT: vxor 4, 4, 4 3729; PWR7-NEXT: vadduhm 2, 2, 3 3730; PWR7-NEXT: vspltisb 3, 1 3731; PWR7-NEXT: xxland 34, 34, 37 3732; PWR7-NEXT: vmladduhm 2, 2, 3, 4 3733; PWR7-NEXT: vspltish 3, 8 3734; PWR7-NEXT: vsrh 2, 2, 3 3735; PWR7-NEXT: vspltish 3, 13 3736; PWR7-NEXT: vcmpgtuh 2, 2, 3 3737; PWR7-NEXT: blr 3738; 3739; PWR8-LABEL: ugt_13_v8i16: 3740; PWR8: # %bb.0: 3741; PWR8-NEXT: vspltish 3, 13 3742; PWR8-NEXT: vpopcnth 2, 2 3743; PWR8-NEXT: vcmpgtuh 2, 2, 3 3744; PWR8-NEXT: blr 3745; 3746; PWR9-LABEL: ugt_13_v8i16: 3747; PWR9: # %bb.0: 3748; PWR9-NEXT: vspltish 3, 13 3749; PWR9-NEXT: vpopcnth 2, 2 3750; PWR9-NEXT: vcmpgtuh 2, 2, 3 3751; PWR9-NEXT: blr 3752 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 3753 %3 = icmp ugt <8 x i16> %2, <i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13> 3754 %4 = sext <8 x i1> %3 to <8 x i16> 3755 ret <8 x i16> %4 3756} 3757 3758define <8 x i16> @ult_14_v8i16(<8 x i16> %0) { 3759; PWR5-LABEL: ult_14_v8i16: 3760; PWR5: # %bb.0: 3761; PWR5-NEXT: addis 3, 2, .LCPI37_0@toc@ha 3762; PWR5-NEXT: vspltish 4, 1 3763; PWR5-NEXT: vxor 3, 3, 3 3764; PWR5-NEXT: addi 3, 3, .LCPI37_0@toc@l 3765; PWR5-NEXT: lvx 5, 0, 3 3766; PWR5-NEXT: addis 3, 2, .LCPI37_1@toc@ha 3767; PWR5-NEXT: addi 3, 3, .LCPI37_1@toc@l 3768; PWR5-NEXT: vsrh 4, 2, 4 3769; PWR5-NEXT: vand 4, 4, 5 3770; PWR5-NEXT: vspltish 5, 2 3771; PWR5-NEXT: vsubuhm 2, 2, 4 3772; PWR5-NEXT: vsrh 4, 2, 5 3773; PWR5-NEXT: lvx 5, 0, 3 3774; PWR5-NEXT: vand 2, 2, 5 3775; PWR5-NEXT: vand 4, 4, 5 3776; PWR5-NEXT: vspltish 5, 4 3777; PWR5-NEXT: vadduhm 2, 2, 4 3778; PWR5-NEXT: vsrh 4, 2, 5 3779; PWR5-NEXT: vspltisb 5, 15 3780; PWR5-NEXT: vadduhm 2, 2, 4 3781; PWR5-NEXT: vspltisb 4, 1 3782; PWR5-NEXT: vand 2, 2, 5 3783; PWR5-NEXT: vmladduhm 2, 2, 4, 3 3784; PWR5-NEXT: vspltish 3, 8 3785; PWR5-NEXT: vsrh 2, 2, 3 3786; PWR5-NEXT: vspltish 3, 14 3787; PWR5-NEXT: vcmpgtuh 2, 3, 2 3788; PWR5-NEXT: blr 3789; 3790; PWR6-LABEL: ult_14_v8i16: 3791; PWR6: # %bb.0: 3792; PWR6-NEXT: addis 3, 2, .LCPI37_0@toc@ha 3793; PWR6-NEXT: vspltish 4, 1 3794; PWR6-NEXT: vxor 3, 3, 3 3795; PWR6-NEXT: addi 3, 3, .LCPI37_0@toc@l 3796; PWR6-NEXT: lvx 5, 0, 3 3797; PWR6-NEXT: addis 3, 2, .LCPI37_1@toc@ha 3798; PWR6-NEXT: addi 3, 3, .LCPI37_1@toc@l 3799; PWR6-NEXT: vsrh 4, 2, 4 3800; PWR6-NEXT: vand 4, 4, 5 3801; PWR6-NEXT: vspltish 5, 2 3802; PWR6-NEXT: vsubuhm 2, 2, 4 3803; PWR6-NEXT: vsrh 4, 2, 5 3804; PWR6-NEXT: lvx 5, 0, 3 3805; PWR6-NEXT: vand 2, 2, 5 3806; PWR6-NEXT: vand 4, 4, 5 3807; PWR6-NEXT: vspltish 5, 4 3808; PWR6-NEXT: vadduhm 2, 2, 4 3809; PWR6-NEXT: vsrh 4, 2, 5 3810; PWR6-NEXT: vspltisb 5, 15 3811; PWR6-NEXT: vadduhm 2, 2, 4 3812; PWR6-NEXT: vspltisb 4, 1 3813; PWR6-NEXT: vand 2, 2, 5 3814; PWR6-NEXT: vmladduhm 2, 2, 4, 3 3815; PWR6-NEXT: vspltish 3, 8 3816; PWR6-NEXT: vsrh 2, 2, 3 3817; PWR6-NEXT: vspltish 3, 14 3818; PWR6-NEXT: vcmpgtuh 2, 3, 2 3819; PWR6-NEXT: blr 3820; 3821; PWR7-LABEL: ult_14_v8i16: 3822; PWR7: # %bb.0: 3823; PWR7-NEXT: vspltish 3, 1 3824; PWR7-NEXT: addis 3, 2, .LCPI37_0@toc@ha 3825; PWR7-NEXT: addi 3, 3, .LCPI37_0@toc@l 3826; PWR7-NEXT: vspltish 4, 2 3827; PWR7-NEXT: lxvw4x 0, 0, 3 3828; PWR7-NEXT: addis 3, 2, .LCPI37_1@toc@ha 3829; PWR7-NEXT: vspltisb 5, 15 3830; PWR7-NEXT: vsrh 3, 2, 3 3831; PWR7-NEXT: addi 3, 3, .LCPI37_1@toc@l 3832; PWR7-NEXT: xxland 35, 35, 0 3833; PWR7-NEXT: lxvw4x 0, 0, 3 3834; PWR7-NEXT: vsubuhm 2, 2, 3 3835; PWR7-NEXT: vsrh 3, 2, 4 3836; PWR7-NEXT: xxland 34, 34, 0 3837; PWR7-NEXT: vspltish 4, 4 3838; PWR7-NEXT: xxland 35, 35, 0 3839; PWR7-NEXT: vadduhm 2, 2, 3 3840; PWR7-NEXT: vsrh 3, 2, 4 3841; PWR7-NEXT: vxor 4, 4, 4 3842; PWR7-NEXT: vadduhm 2, 2, 3 3843; PWR7-NEXT: vspltisb 3, 1 3844; PWR7-NEXT: xxland 34, 34, 37 3845; PWR7-NEXT: vmladduhm 2, 2, 3, 4 3846; PWR7-NEXT: vspltish 3, 8 3847; PWR7-NEXT: vsrh 2, 2, 3 3848; PWR7-NEXT: vspltish 3, 14 3849; PWR7-NEXT: vcmpgtuh 2, 3, 2 3850; PWR7-NEXT: blr 3851; 3852; PWR8-LABEL: ult_14_v8i16: 3853; PWR8: # %bb.0: 3854; PWR8-NEXT: vspltish 3, 14 3855; PWR8-NEXT: vpopcnth 2, 2 3856; PWR8-NEXT: vcmpgtuh 2, 3, 2 3857; PWR8-NEXT: blr 3858; 3859; PWR9-LABEL: ult_14_v8i16: 3860; PWR9: # %bb.0: 3861; PWR9-NEXT: vspltish 3, 14 3862; PWR9-NEXT: vpopcnth 2, 2 3863; PWR9-NEXT: vcmpgtuh 2, 3, 2 3864; PWR9-NEXT: blr 3865 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 3866 %3 = icmp ult <8 x i16> %2, <i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14> 3867 %4 = sext <8 x i1> %3 to <8 x i16> 3868 ret <8 x i16> %4 3869} 3870 3871define <8 x i16> @ugt_14_v8i16(<8 x i16> %0) { 3872; PWR5-LABEL: ugt_14_v8i16: 3873; PWR5: # %bb.0: 3874; PWR5-NEXT: addis 3, 2, .LCPI38_0@toc@ha 3875; PWR5-NEXT: vspltish 4, 1 3876; PWR5-NEXT: vxor 3, 3, 3 3877; PWR5-NEXT: addi 3, 3, .LCPI38_0@toc@l 3878; PWR5-NEXT: lvx 5, 0, 3 3879; PWR5-NEXT: addis 3, 2, .LCPI38_1@toc@ha 3880; PWR5-NEXT: addi 3, 3, .LCPI38_1@toc@l 3881; PWR5-NEXT: vsrh 4, 2, 4 3882; PWR5-NEXT: vand 4, 4, 5 3883; PWR5-NEXT: vspltish 5, 2 3884; PWR5-NEXT: vsubuhm 2, 2, 4 3885; PWR5-NEXT: vsrh 4, 2, 5 3886; PWR5-NEXT: lvx 5, 0, 3 3887; PWR5-NEXT: vand 2, 2, 5 3888; PWR5-NEXT: vand 4, 4, 5 3889; PWR5-NEXT: vspltish 5, 4 3890; PWR5-NEXT: vadduhm 2, 2, 4 3891; PWR5-NEXT: vsrh 4, 2, 5 3892; PWR5-NEXT: vspltisb 5, 15 3893; PWR5-NEXT: vadduhm 2, 2, 4 3894; PWR5-NEXT: vspltisb 4, 1 3895; PWR5-NEXT: vand 2, 2, 5 3896; PWR5-NEXT: vmladduhm 2, 2, 4, 3 3897; PWR5-NEXT: vspltish 3, 8 3898; PWR5-NEXT: vsrh 2, 2, 3 3899; PWR5-NEXT: vspltish 3, 14 3900; PWR5-NEXT: vcmpgtuh 2, 2, 3 3901; PWR5-NEXT: blr 3902; 3903; PWR6-LABEL: ugt_14_v8i16: 3904; PWR6: # %bb.0: 3905; PWR6-NEXT: addis 3, 2, .LCPI38_0@toc@ha 3906; PWR6-NEXT: vspltish 4, 1 3907; PWR6-NEXT: vxor 3, 3, 3 3908; PWR6-NEXT: addi 3, 3, .LCPI38_0@toc@l 3909; PWR6-NEXT: lvx 5, 0, 3 3910; PWR6-NEXT: addis 3, 2, .LCPI38_1@toc@ha 3911; PWR6-NEXT: addi 3, 3, .LCPI38_1@toc@l 3912; PWR6-NEXT: vsrh 4, 2, 4 3913; PWR6-NEXT: vand 4, 4, 5 3914; PWR6-NEXT: vspltish 5, 2 3915; PWR6-NEXT: vsubuhm 2, 2, 4 3916; PWR6-NEXT: vsrh 4, 2, 5 3917; PWR6-NEXT: lvx 5, 0, 3 3918; PWR6-NEXT: vand 2, 2, 5 3919; PWR6-NEXT: vand 4, 4, 5 3920; PWR6-NEXT: vspltish 5, 4 3921; PWR6-NEXT: vadduhm 2, 2, 4 3922; PWR6-NEXT: vsrh 4, 2, 5 3923; PWR6-NEXT: vspltisb 5, 15 3924; PWR6-NEXT: vadduhm 2, 2, 4 3925; PWR6-NEXT: vspltisb 4, 1 3926; PWR6-NEXT: vand 2, 2, 5 3927; PWR6-NEXT: vmladduhm 2, 2, 4, 3 3928; PWR6-NEXT: vspltish 3, 8 3929; PWR6-NEXT: vsrh 2, 2, 3 3930; PWR6-NEXT: vspltish 3, 14 3931; PWR6-NEXT: vcmpgtuh 2, 2, 3 3932; PWR6-NEXT: blr 3933; 3934; PWR7-LABEL: ugt_14_v8i16: 3935; PWR7: # %bb.0: 3936; PWR7-NEXT: vspltish 3, 1 3937; PWR7-NEXT: addis 3, 2, .LCPI38_0@toc@ha 3938; PWR7-NEXT: addi 3, 3, .LCPI38_0@toc@l 3939; PWR7-NEXT: vspltish 4, 2 3940; PWR7-NEXT: lxvw4x 0, 0, 3 3941; PWR7-NEXT: addis 3, 2, .LCPI38_1@toc@ha 3942; PWR7-NEXT: vspltisb 5, 15 3943; PWR7-NEXT: vsrh 3, 2, 3 3944; PWR7-NEXT: addi 3, 3, .LCPI38_1@toc@l 3945; PWR7-NEXT: xxland 35, 35, 0 3946; PWR7-NEXT: lxvw4x 0, 0, 3 3947; PWR7-NEXT: vsubuhm 2, 2, 3 3948; PWR7-NEXT: vsrh 3, 2, 4 3949; PWR7-NEXT: xxland 34, 34, 0 3950; PWR7-NEXT: vspltish 4, 4 3951; PWR7-NEXT: xxland 35, 35, 0 3952; PWR7-NEXT: vadduhm 2, 2, 3 3953; PWR7-NEXT: vsrh 3, 2, 4 3954; PWR7-NEXT: vxor 4, 4, 4 3955; PWR7-NEXT: vadduhm 2, 2, 3 3956; PWR7-NEXT: vspltisb 3, 1 3957; PWR7-NEXT: xxland 34, 34, 37 3958; PWR7-NEXT: vmladduhm 2, 2, 3, 4 3959; PWR7-NEXT: vspltish 3, 8 3960; PWR7-NEXT: vsrh 2, 2, 3 3961; PWR7-NEXT: vspltish 3, 14 3962; PWR7-NEXT: vcmpgtuh 2, 2, 3 3963; PWR7-NEXT: blr 3964; 3965; PWR8-LABEL: ugt_14_v8i16: 3966; PWR8: # %bb.0: 3967; PWR8-NEXT: vspltish 3, 14 3968; PWR8-NEXT: vpopcnth 2, 2 3969; PWR8-NEXT: vcmpgtuh 2, 2, 3 3970; PWR8-NEXT: blr 3971; 3972; PWR9-LABEL: ugt_14_v8i16: 3973; PWR9: # %bb.0: 3974; PWR9-NEXT: vspltish 3, 14 3975; PWR9-NEXT: vpopcnth 2, 2 3976; PWR9-NEXT: vcmpgtuh 2, 2, 3 3977; PWR9-NEXT: blr 3978 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 3979 %3 = icmp ugt <8 x i16> %2, <i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14> 3980 %4 = sext <8 x i1> %3 to <8 x i16> 3981 ret <8 x i16> %4 3982} 3983 3984define <8 x i16> @ult_15_v8i16(<8 x i16> %0) { 3985; PWR5-LABEL: ult_15_v8i16: 3986; PWR5: # %bb.0: 3987; PWR5-NEXT: addis 3, 2, .LCPI39_0@toc@ha 3988; PWR5-NEXT: vspltish 4, 1 3989; PWR5-NEXT: vxor 3, 3, 3 3990; PWR5-NEXT: addi 3, 3, .LCPI39_0@toc@l 3991; PWR5-NEXT: lvx 5, 0, 3 3992; PWR5-NEXT: addis 3, 2, .LCPI39_1@toc@ha 3993; PWR5-NEXT: addi 3, 3, .LCPI39_1@toc@l 3994; PWR5-NEXT: vsrh 4, 2, 4 3995; PWR5-NEXT: vand 4, 4, 5 3996; PWR5-NEXT: vspltish 5, 2 3997; PWR5-NEXT: vsubuhm 2, 2, 4 3998; PWR5-NEXT: vsrh 4, 2, 5 3999; PWR5-NEXT: lvx 5, 0, 3 4000; PWR5-NEXT: vand 2, 2, 5 4001; PWR5-NEXT: vand 4, 4, 5 4002; PWR5-NEXT: vspltish 5, 4 4003; PWR5-NEXT: vadduhm 2, 2, 4 4004; PWR5-NEXT: vsrh 4, 2, 5 4005; PWR5-NEXT: vspltisb 5, 15 4006; PWR5-NEXT: vadduhm 2, 2, 4 4007; PWR5-NEXT: vspltisb 4, 1 4008; PWR5-NEXT: vand 2, 2, 5 4009; PWR5-NEXT: vmladduhm 2, 2, 4, 3 4010; PWR5-NEXT: vspltish 3, 8 4011; PWR5-NEXT: vsrh 2, 2, 3 4012; PWR5-NEXT: vspltish 3, 15 4013; PWR5-NEXT: vcmpgtuh 2, 3, 2 4014; PWR5-NEXT: blr 4015; 4016; PWR6-LABEL: ult_15_v8i16: 4017; PWR6: # %bb.0: 4018; PWR6-NEXT: addis 3, 2, .LCPI39_0@toc@ha 4019; PWR6-NEXT: vspltish 4, 1 4020; PWR6-NEXT: vxor 3, 3, 3 4021; PWR6-NEXT: addi 3, 3, .LCPI39_0@toc@l 4022; PWR6-NEXT: lvx 5, 0, 3 4023; PWR6-NEXT: addis 3, 2, .LCPI39_1@toc@ha 4024; PWR6-NEXT: addi 3, 3, .LCPI39_1@toc@l 4025; PWR6-NEXT: vsrh 4, 2, 4 4026; PWR6-NEXT: vand 4, 4, 5 4027; PWR6-NEXT: vspltish 5, 2 4028; PWR6-NEXT: vsubuhm 2, 2, 4 4029; PWR6-NEXT: vsrh 4, 2, 5 4030; PWR6-NEXT: lvx 5, 0, 3 4031; PWR6-NEXT: vand 2, 2, 5 4032; PWR6-NEXT: vand 4, 4, 5 4033; PWR6-NEXT: vspltish 5, 4 4034; PWR6-NEXT: vadduhm 2, 2, 4 4035; PWR6-NEXT: vsrh 4, 2, 5 4036; PWR6-NEXT: vspltisb 5, 15 4037; PWR6-NEXT: vadduhm 2, 2, 4 4038; PWR6-NEXT: vspltisb 4, 1 4039; PWR6-NEXT: vand 2, 2, 5 4040; PWR6-NEXT: vmladduhm 2, 2, 4, 3 4041; PWR6-NEXT: vspltish 3, 8 4042; PWR6-NEXT: vsrh 2, 2, 3 4043; PWR6-NEXT: vspltish 3, 15 4044; PWR6-NEXT: vcmpgtuh 2, 3, 2 4045; PWR6-NEXT: blr 4046; 4047; PWR7-LABEL: ult_15_v8i16: 4048; PWR7: # %bb.0: 4049; PWR7-NEXT: vspltish 3, 1 4050; PWR7-NEXT: addis 3, 2, .LCPI39_0@toc@ha 4051; PWR7-NEXT: addi 3, 3, .LCPI39_0@toc@l 4052; PWR7-NEXT: vspltish 4, 2 4053; PWR7-NEXT: lxvw4x 0, 0, 3 4054; PWR7-NEXT: addis 3, 2, .LCPI39_1@toc@ha 4055; PWR7-NEXT: vspltisb 5, 15 4056; PWR7-NEXT: vsrh 3, 2, 3 4057; PWR7-NEXT: addi 3, 3, .LCPI39_1@toc@l 4058; PWR7-NEXT: xxland 35, 35, 0 4059; PWR7-NEXT: lxvw4x 0, 0, 3 4060; PWR7-NEXT: vsubuhm 2, 2, 3 4061; PWR7-NEXT: vsrh 3, 2, 4 4062; PWR7-NEXT: xxland 34, 34, 0 4063; PWR7-NEXT: vspltish 4, 4 4064; PWR7-NEXT: xxland 35, 35, 0 4065; PWR7-NEXT: vadduhm 2, 2, 3 4066; PWR7-NEXT: vsrh 3, 2, 4 4067; PWR7-NEXT: vxor 4, 4, 4 4068; PWR7-NEXT: vadduhm 2, 2, 3 4069; PWR7-NEXT: vspltisb 3, 1 4070; PWR7-NEXT: xxland 34, 34, 37 4071; PWR7-NEXT: vmladduhm 2, 2, 3, 4 4072; PWR7-NEXT: vspltish 3, 8 4073; PWR7-NEXT: vsrh 2, 2, 3 4074; PWR7-NEXT: vspltish 3, 15 4075; PWR7-NEXT: vcmpgtuh 2, 3, 2 4076; PWR7-NEXT: blr 4077; 4078; PWR8-LABEL: ult_15_v8i16: 4079; PWR8: # %bb.0: 4080; PWR8-NEXT: vspltish 3, 15 4081; PWR8-NEXT: vpopcnth 2, 2 4082; PWR8-NEXT: vcmpgtuh 2, 3, 2 4083; PWR8-NEXT: blr 4084; 4085; PWR9-LABEL: ult_15_v8i16: 4086; PWR9: # %bb.0: 4087; PWR9-NEXT: vspltish 3, 15 4088; PWR9-NEXT: vpopcnth 2, 2 4089; PWR9-NEXT: vcmpgtuh 2, 3, 2 4090; PWR9-NEXT: blr 4091 %2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0) 4092 %3 = icmp ult <8 x i16> %2, <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15> 4093 %4 = sext <8 x i1> %3 to <8 x i16> 4094 ret <8 x i16> %4 4095} 4096 4097define <4 x i32> @ugt_1_v4i32(<4 x i32> %0) { 4098; PWR5-LABEL: ugt_1_v4i32: 4099; PWR5: # %bb.0: 4100; PWR5-NEXT: vspltisb 3, -1 4101; PWR5-NEXT: vadduwm 3, 2, 3 4102; PWR5-NEXT: vand 2, 2, 3 4103; PWR5-NEXT: vxor 3, 3, 3 4104; PWR5-NEXT: vcmpequw 2, 2, 3 4105; PWR5-NEXT: vnot 2, 2 4106; PWR5-NEXT: blr 4107; 4108; PWR6-LABEL: ugt_1_v4i32: 4109; PWR6: # %bb.0: 4110; PWR6-NEXT: vspltisb 3, -1 4111; PWR6-NEXT: vadduwm 3, 2, 3 4112; PWR6-NEXT: vand 2, 2, 3 4113; PWR6-NEXT: vxor 3, 3, 3 4114; PWR6-NEXT: vcmpequw 2, 2, 3 4115; PWR6-NEXT: vnot 2, 2 4116; PWR6-NEXT: blr 4117; 4118; PWR7-LABEL: ugt_1_v4i32: 4119; PWR7: # %bb.0: 4120; PWR7-NEXT: vspltisb 3, -1 4121; PWR7-NEXT: vadduwm 3, 2, 3 4122; PWR7-NEXT: xxland 34, 34, 35 4123; PWR7-NEXT: xxlxor 35, 35, 35 4124; PWR7-NEXT: vcmpequw 2, 2, 3 4125; PWR7-NEXT: xxlnor 34, 34, 34 4126; PWR7-NEXT: blr 4127; 4128; PWR8-LABEL: ugt_1_v4i32: 4129; PWR8: # %bb.0: 4130; PWR8-NEXT: vspltisw 3, 1 4131; PWR8-NEXT: vpopcntw 2, 2 4132; PWR8-NEXT: vcmpgtuw 2, 2, 3 4133; PWR8-NEXT: blr 4134; 4135; PWR9-LABEL: ugt_1_v4i32: 4136; PWR9: # %bb.0: 4137; PWR9-NEXT: vpopcntw 2, 2 4138; PWR9-NEXT: vspltisw 3, 1 4139; PWR9-NEXT: vcmpgtuw 2, 2, 3 4140; PWR9-NEXT: blr 4141 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 4142 %3 = icmp ugt <4 x i32> %2, <i32 1, i32 1, i32 1, i32 1> 4143 %4 = sext <4 x i1> %3 to <4 x i32> 4144 ret <4 x i32> %4 4145} 4146 4147define <4 x i32> @ult_2_v4i32(<4 x i32> %0) { 4148; PWR5-LABEL: ult_2_v4i32: 4149; PWR5: # %bb.0: 4150; PWR5-NEXT: vspltisb 3, -1 4151; PWR5-NEXT: vadduwm 3, 2, 3 4152; PWR5-NEXT: vand 2, 2, 3 4153; PWR5-NEXT: vxor 3, 3, 3 4154; PWR5-NEXT: vcmpequw 2, 2, 3 4155; PWR5-NEXT: blr 4156; 4157; PWR6-LABEL: ult_2_v4i32: 4158; PWR6: # %bb.0: 4159; PWR6-NEXT: vspltisb 3, -1 4160; PWR6-NEXT: vadduwm 3, 2, 3 4161; PWR6-NEXT: vand 2, 2, 3 4162; PWR6-NEXT: vxor 3, 3, 3 4163; PWR6-NEXT: vcmpequw 2, 2, 3 4164; PWR6-NEXT: blr 4165; 4166; PWR7-LABEL: ult_2_v4i32: 4167; PWR7: # %bb.0: 4168; PWR7-NEXT: vspltisb 3, -1 4169; PWR7-NEXT: vadduwm 3, 2, 3 4170; PWR7-NEXT: xxland 34, 34, 35 4171; PWR7-NEXT: xxlxor 35, 35, 35 4172; PWR7-NEXT: vcmpequw 2, 2, 3 4173; PWR7-NEXT: blr 4174; 4175; PWR8-LABEL: ult_2_v4i32: 4176; PWR8: # %bb.0: 4177; PWR8-NEXT: vspltisw 3, 2 4178; PWR8-NEXT: vpopcntw 2, 2 4179; PWR8-NEXT: vcmpgtuw 2, 3, 2 4180; PWR8-NEXT: blr 4181; 4182; PWR9-LABEL: ult_2_v4i32: 4183; PWR9: # %bb.0: 4184; PWR9-NEXT: vpopcntw 2, 2 4185; PWR9-NEXT: vspltisw 3, 2 4186; PWR9-NEXT: vcmpgtuw 2, 3, 2 4187; PWR9-NEXT: blr 4188 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 4189 %3 = icmp ult <4 x i32> %2, <i32 2, i32 2, i32 2, i32 2> 4190 %4 = sext <4 x i1> %3 to <4 x i32> 4191 ret <4 x i32> %4 4192} 4193 4194define <4 x i32> @ugt_2_v4i32(<4 x i32> %0) { 4195; PWR5-LABEL: ugt_2_v4i32: 4196; PWR5: # %bb.0: 4197; PWR5-NEXT: addis 3, 2, .LCPI42_0@toc@ha 4198; PWR5-NEXT: vspltisw 4, 1 4199; PWR5-NEXT: vxor 3, 3, 3 4200; PWR5-NEXT: addi 3, 3, .LCPI42_0@toc@l 4201; PWR5-NEXT: lvx 5, 0, 3 4202; PWR5-NEXT: addis 3, 2, .LCPI42_1@toc@ha 4203; PWR5-NEXT: addi 3, 3, .LCPI42_1@toc@l 4204; PWR5-NEXT: vspltisw 0, 2 4205; PWR5-NEXT: vsrw 4, 2, 4 4206; PWR5-NEXT: vand 4, 4, 5 4207; PWR5-NEXT: lvx 5, 0, 3 4208; PWR5-NEXT: vsubuwm 2, 2, 4 4209; PWR5-NEXT: vand 4, 2, 5 4210; PWR5-NEXT: vsrw 2, 2, 0 4211; PWR5-NEXT: vand 2, 2, 5 4212; PWR5-NEXT: vspltisw 5, 4 4213; PWR5-NEXT: vadduwm 2, 4, 2 4214; PWR5-NEXT: vsrw 4, 2, 5 4215; PWR5-NEXT: vspltisb 5, 15 4216; PWR5-NEXT: vadduwm 2, 2, 4 4217; PWR5-NEXT: vspltisb 4, 1 4218; PWR5-NEXT: vand 2, 2, 5 4219; PWR5-NEXT: vspltisw 5, -16 4220; PWR5-NEXT: vrlw 1, 4, 5 4221; PWR5-NEXT: vmulouh 4, 2, 4 4222; PWR5-NEXT: vmsumuhm 2, 2, 1, 3 4223; PWR5-NEXT: vspltisw 3, 12 4224; PWR5-NEXT: vadduwm 3, 3, 3 4225; PWR5-NEXT: vslw 2, 2, 5 4226; PWR5-NEXT: vadduwm 2, 4, 2 4227; PWR5-NEXT: vsrw 2, 2, 3 4228; PWR5-NEXT: vcmpgtuw 2, 2, 0 4229; PWR5-NEXT: blr 4230; 4231; PWR6-LABEL: ugt_2_v4i32: 4232; PWR6: # %bb.0: 4233; PWR6-NEXT: addis 3, 2, .LCPI42_0@toc@ha 4234; PWR6-NEXT: vspltisw 4, 1 4235; PWR6-NEXT: vxor 3, 3, 3 4236; PWR6-NEXT: addi 3, 3, .LCPI42_0@toc@l 4237; PWR6-NEXT: lvx 5, 0, 3 4238; PWR6-NEXT: addis 3, 2, .LCPI42_1@toc@ha 4239; PWR6-NEXT: addi 3, 3, .LCPI42_1@toc@l 4240; PWR6-NEXT: vspltisw 0, 2 4241; PWR6-NEXT: vsrw 4, 2, 4 4242; PWR6-NEXT: vand 4, 4, 5 4243; PWR6-NEXT: lvx 5, 0, 3 4244; PWR6-NEXT: vsubuwm 2, 2, 4 4245; PWR6-NEXT: vand 4, 2, 5 4246; PWR6-NEXT: vsrw 2, 2, 0 4247; PWR6-NEXT: vand 2, 2, 5 4248; PWR6-NEXT: vspltisw 5, 4 4249; PWR6-NEXT: vadduwm 2, 4, 2 4250; PWR6-NEXT: vsrw 4, 2, 5 4251; PWR6-NEXT: vspltisb 5, 15 4252; PWR6-NEXT: vadduwm 2, 2, 4 4253; PWR6-NEXT: vspltisb 4, 1 4254; PWR6-NEXT: vand 2, 2, 5 4255; PWR6-NEXT: vspltisw 5, -16 4256; PWR6-NEXT: vrlw 1, 4, 5 4257; PWR6-NEXT: vmulouh 4, 2, 4 4258; PWR6-NEXT: vmsumuhm 2, 2, 1, 3 4259; PWR6-NEXT: vspltisw 3, 12 4260; PWR6-NEXT: vadduwm 3, 3, 3 4261; PWR6-NEXT: vslw 2, 2, 5 4262; PWR6-NEXT: vadduwm 2, 4, 2 4263; PWR6-NEXT: vsrw 2, 2, 3 4264; PWR6-NEXT: vcmpgtuw 2, 2, 0 4265; PWR6-NEXT: blr 4266; 4267; PWR7-LABEL: ugt_2_v4i32: 4268; PWR7: # %bb.0: 4269; PWR7-NEXT: vspltisw 3, 1 4270; PWR7-NEXT: addis 3, 2, .LCPI42_0@toc@ha 4271; PWR7-NEXT: addi 3, 3, .LCPI42_0@toc@l 4272; PWR7-NEXT: vspltisw 4, 2 4273; PWR7-NEXT: lxvw4x 0, 0, 3 4274; PWR7-NEXT: addis 3, 2, .LCPI42_1@toc@ha 4275; PWR7-NEXT: vspltisw 5, 4 4276; PWR7-NEXT: vsrw 3, 2, 3 4277; PWR7-NEXT: addi 3, 3, .LCPI42_1@toc@l 4278; PWR7-NEXT: vspltisw 0, -16 4279; PWR7-NEXT: vspltisb 1, 15 4280; PWR7-NEXT: xxland 35, 35, 0 4281; PWR7-NEXT: lxvw4x 0, 0, 3 4282; PWR7-NEXT: vsubuwm 2, 2, 3 4283; PWR7-NEXT: vsrw 3, 2, 4 4284; PWR7-NEXT: xxland 34, 34, 0 4285; PWR7-NEXT: xxland 35, 35, 0 4286; PWR7-NEXT: vadduwm 2, 2, 3 4287; PWR7-NEXT: vsrw 3, 2, 5 4288; PWR7-NEXT: vspltisb 5, 1 4289; PWR7-NEXT: vrlw 6, 5, 0 4290; PWR7-NEXT: vadduwm 2, 2, 3 4291; PWR7-NEXT: xxlxor 35, 35, 35 4292; PWR7-NEXT: xxland 34, 34, 33 4293; PWR7-NEXT: vmsumuhm 3, 2, 6, 3 4294; PWR7-NEXT: vmulouh 2, 2, 5 4295; PWR7-NEXT: vspltisw 5, 12 4296; PWR7-NEXT: vslw 3, 3, 0 4297; PWR7-NEXT: vadduwm 2, 2, 3 4298; PWR7-NEXT: vadduwm 3, 5, 5 4299; PWR7-NEXT: vsrw 2, 2, 3 4300; PWR7-NEXT: vcmpgtuw 2, 2, 4 4301; PWR7-NEXT: blr 4302; 4303; PWR8-LABEL: ugt_2_v4i32: 4304; PWR8: # %bb.0: 4305; PWR8-NEXT: vspltisw 3, 2 4306; PWR8-NEXT: vpopcntw 2, 2 4307; PWR8-NEXT: vcmpgtuw 2, 2, 3 4308; PWR8-NEXT: blr 4309; 4310; PWR9-LABEL: ugt_2_v4i32: 4311; PWR9: # %bb.0: 4312; PWR9-NEXT: vpopcntw 2, 2 4313; PWR9-NEXT: vspltisw 3, 2 4314; PWR9-NEXT: vcmpgtuw 2, 2, 3 4315; PWR9-NEXT: blr 4316 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 4317 %3 = icmp ugt <4 x i32> %2, <i32 2, i32 2, i32 2, i32 2> 4318 %4 = sext <4 x i1> %3 to <4 x i32> 4319 ret <4 x i32> %4 4320} 4321 4322define <4 x i32> @ult_3_v4i32(<4 x i32> %0) { 4323; PWR5-LABEL: ult_3_v4i32: 4324; PWR5: # %bb.0: 4325; PWR5-NEXT: addis 3, 2, .LCPI43_0@toc@ha 4326; PWR5-NEXT: vspltisw 4, 1 4327; PWR5-NEXT: vxor 3, 3, 3 4328; PWR5-NEXT: addi 3, 3, .LCPI43_0@toc@l 4329; PWR5-NEXT: lvx 5, 0, 3 4330; PWR5-NEXT: addis 3, 2, .LCPI43_1@toc@ha 4331; PWR5-NEXT: addi 3, 3, .LCPI43_1@toc@l 4332; PWR5-NEXT: vspltisw 0, 2 4333; PWR5-NEXT: vsrw 4, 2, 4 4334; PWR5-NEXT: vand 4, 4, 5 4335; PWR5-NEXT: lvx 5, 0, 3 4336; PWR5-NEXT: vsubuwm 2, 2, 4 4337; PWR5-NEXT: vand 4, 2, 5 4338; PWR5-NEXT: vsrw 2, 2, 0 4339; PWR5-NEXT: vand 2, 2, 5 4340; PWR5-NEXT: vspltisw 5, 4 4341; PWR5-NEXT: vadduwm 2, 4, 2 4342; PWR5-NEXT: vsrw 4, 2, 5 4343; PWR5-NEXT: vspltisb 5, 15 4344; PWR5-NEXT: vadduwm 2, 2, 4 4345; PWR5-NEXT: vspltisb 4, 1 4346; PWR5-NEXT: vand 2, 2, 5 4347; PWR5-NEXT: vspltisw 5, -16 4348; PWR5-NEXT: vrlw 0, 4, 5 4349; PWR5-NEXT: vmulouh 4, 2, 4 4350; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 4351; PWR5-NEXT: vspltisw 3, 12 4352; PWR5-NEXT: vadduwm 3, 3, 3 4353; PWR5-NEXT: vslw 2, 2, 5 4354; PWR5-NEXT: vadduwm 2, 4, 2 4355; PWR5-NEXT: vsrw 2, 2, 3 4356; PWR5-NEXT: vspltisw 3, 3 4357; PWR5-NEXT: vcmpgtuw 2, 3, 2 4358; PWR5-NEXT: blr 4359; 4360; PWR6-LABEL: ult_3_v4i32: 4361; PWR6: # %bb.0: 4362; PWR6-NEXT: addis 3, 2, .LCPI43_0@toc@ha 4363; PWR6-NEXT: vspltisw 4, 1 4364; PWR6-NEXT: vxor 3, 3, 3 4365; PWR6-NEXT: addi 3, 3, .LCPI43_0@toc@l 4366; PWR6-NEXT: lvx 5, 0, 3 4367; PWR6-NEXT: addis 3, 2, .LCPI43_1@toc@ha 4368; PWR6-NEXT: addi 3, 3, .LCPI43_1@toc@l 4369; PWR6-NEXT: vspltisw 0, 2 4370; PWR6-NEXT: vsrw 4, 2, 4 4371; PWR6-NEXT: vand 4, 4, 5 4372; PWR6-NEXT: lvx 5, 0, 3 4373; PWR6-NEXT: vsubuwm 2, 2, 4 4374; PWR6-NEXT: vand 4, 2, 5 4375; PWR6-NEXT: vsrw 2, 2, 0 4376; PWR6-NEXT: vand 2, 2, 5 4377; PWR6-NEXT: vspltisw 5, 4 4378; PWR6-NEXT: vadduwm 2, 4, 2 4379; PWR6-NEXT: vsrw 4, 2, 5 4380; PWR6-NEXT: vspltisb 5, 15 4381; PWR6-NEXT: vadduwm 2, 2, 4 4382; PWR6-NEXT: vspltisb 4, 1 4383; PWR6-NEXT: vand 2, 2, 5 4384; PWR6-NEXT: vspltisw 5, -16 4385; PWR6-NEXT: vrlw 0, 4, 5 4386; PWR6-NEXT: vmulouh 4, 2, 4 4387; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 4388; PWR6-NEXT: vspltisw 3, 12 4389; PWR6-NEXT: vadduwm 3, 3, 3 4390; PWR6-NEXT: vslw 2, 2, 5 4391; PWR6-NEXT: vadduwm 2, 4, 2 4392; PWR6-NEXT: vsrw 2, 2, 3 4393; PWR6-NEXT: vspltisw 3, 3 4394; PWR6-NEXT: vcmpgtuw 2, 3, 2 4395; PWR6-NEXT: blr 4396; 4397; PWR7-LABEL: ult_3_v4i32: 4398; PWR7: # %bb.0: 4399; PWR7-NEXT: vspltisw 3, 1 4400; PWR7-NEXT: addis 3, 2, .LCPI43_0@toc@ha 4401; PWR7-NEXT: addi 3, 3, .LCPI43_0@toc@l 4402; PWR7-NEXT: vspltisw 4, 2 4403; PWR7-NEXT: lxvw4x 0, 0, 3 4404; PWR7-NEXT: addis 3, 2, .LCPI43_1@toc@ha 4405; PWR7-NEXT: vspltisw 5, -16 4406; PWR7-NEXT: vsrw 3, 2, 3 4407; PWR7-NEXT: addi 3, 3, .LCPI43_1@toc@l 4408; PWR7-NEXT: vspltisb 0, 15 4409; PWR7-NEXT: xxland 35, 35, 0 4410; PWR7-NEXT: lxvw4x 0, 0, 3 4411; PWR7-NEXT: vsubuwm 2, 2, 3 4412; PWR7-NEXT: vsrw 3, 2, 4 4413; PWR7-NEXT: xxland 34, 34, 0 4414; PWR7-NEXT: vspltisw 4, 4 4415; PWR7-NEXT: xxland 35, 35, 0 4416; PWR7-NEXT: vadduwm 2, 2, 3 4417; PWR7-NEXT: vsrw 3, 2, 4 4418; PWR7-NEXT: vspltisb 4, 1 4419; PWR7-NEXT: vrlw 1, 4, 5 4420; PWR7-NEXT: vadduwm 2, 2, 3 4421; PWR7-NEXT: xxlxor 35, 35, 35 4422; PWR7-NEXT: xxland 34, 34, 32 4423; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 4424; PWR7-NEXT: vmulouh 2, 2, 4 4425; PWR7-NEXT: vspltisw 4, 12 4426; PWR7-NEXT: vslw 3, 3, 5 4427; PWR7-NEXT: vadduwm 2, 2, 3 4428; PWR7-NEXT: vadduwm 3, 4, 4 4429; PWR7-NEXT: vsrw 2, 2, 3 4430; PWR7-NEXT: vspltisw 3, 3 4431; PWR7-NEXT: vcmpgtuw 2, 3, 2 4432; PWR7-NEXT: blr 4433; 4434; PWR8-LABEL: ult_3_v4i32: 4435; PWR8: # %bb.0: 4436; PWR8-NEXT: vspltisw 3, 3 4437; PWR8-NEXT: vpopcntw 2, 2 4438; PWR8-NEXT: vcmpgtuw 2, 3, 2 4439; PWR8-NEXT: blr 4440; 4441; PWR9-LABEL: ult_3_v4i32: 4442; PWR9: # %bb.0: 4443; PWR9-NEXT: vpopcntw 2, 2 4444; PWR9-NEXT: vspltisw 3, 3 4445; PWR9-NEXT: vcmpgtuw 2, 3, 2 4446; PWR9-NEXT: blr 4447 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 4448 %3 = icmp ult <4 x i32> %2, <i32 3, i32 3, i32 3, i32 3> 4449 %4 = sext <4 x i1> %3 to <4 x i32> 4450 ret <4 x i32> %4 4451} 4452 4453define <4 x i32> @ugt_3_v4i32(<4 x i32> %0) { 4454; PWR5-LABEL: ugt_3_v4i32: 4455; PWR5: # %bb.0: 4456; PWR5-NEXT: addis 3, 2, .LCPI44_0@toc@ha 4457; PWR5-NEXT: vspltisw 4, 1 4458; PWR5-NEXT: vxor 3, 3, 3 4459; PWR5-NEXT: addi 3, 3, .LCPI44_0@toc@l 4460; PWR5-NEXT: lvx 5, 0, 3 4461; PWR5-NEXT: addis 3, 2, .LCPI44_1@toc@ha 4462; PWR5-NEXT: addi 3, 3, .LCPI44_1@toc@l 4463; PWR5-NEXT: vspltisw 0, 2 4464; PWR5-NEXT: vsrw 4, 2, 4 4465; PWR5-NEXT: vand 4, 4, 5 4466; PWR5-NEXT: lvx 5, 0, 3 4467; PWR5-NEXT: vsubuwm 2, 2, 4 4468; PWR5-NEXT: vand 4, 2, 5 4469; PWR5-NEXT: vsrw 2, 2, 0 4470; PWR5-NEXT: vand 2, 2, 5 4471; PWR5-NEXT: vspltisw 5, 4 4472; PWR5-NEXT: vadduwm 2, 4, 2 4473; PWR5-NEXT: vsrw 4, 2, 5 4474; PWR5-NEXT: vspltisb 5, 15 4475; PWR5-NEXT: vadduwm 2, 2, 4 4476; PWR5-NEXT: vspltisb 4, 1 4477; PWR5-NEXT: vand 2, 2, 5 4478; PWR5-NEXT: vspltisw 5, -16 4479; PWR5-NEXT: vrlw 0, 4, 5 4480; PWR5-NEXT: vmulouh 4, 2, 4 4481; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 4482; PWR5-NEXT: vspltisw 3, 12 4483; PWR5-NEXT: vadduwm 3, 3, 3 4484; PWR5-NEXT: vslw 2, 2, 5 4485; PWR5-NEXT: vadduwm 2, 4, 2 4486; PWR5-NEXT: vsrw 2, 2, 3 4487; PWR5-NEXT: vspltisw 3, 3 4488; PWR5-NEXT: vcmpgtuw 2, 2, 3 4489; PWR5-NEXT: blr 4490; 4491; PWR6-LABEL: ugt_3_v4i32: 4492; PWR6: # %bb.0: 4493; PWR6-NEXT: addis 3, 2, .LCPI44_0@toc@ha 4494; PWR6-NEXT: vspltisw 4, 1 4495; PWR6-NEXT: vxor 3, 3, 3 4496; PWR6-NEXT: addi 3, 3, .LCPI44_0@toc@l 4497; PWR6-NEXT: lvx 5, 0, 3 4498; PWR6-NEXT: addis 3, 2, .LCPI44_1@toc@ha 4499; PWR6-NEXT: addi 3, 3, .LCPI44_1@toc@l 4500; PWR6-NEXT: vspltisw 0, 2 4501; PWR6-NEXT: vsrw 4, 2, 4 4502; PWR6-NEXT: vand 4, 4, 5 4503; PWR6-NEXT: lvx 5, 0, 3 4504; PWR6-NEXT: vsubuwm 2, 2, 4 4505; PWR6-NEXT: vand 4, 2, 5 4506; PWR6-NEXT: vsrw 2, 2, 0 4507; PWR6-NEXT: vand 2, 2, 5 4508; PWR6-NEXT: vspltisw 5, 4 4509; PWR6-NEXT: vadduwm 2, 4, 2 4510; PWR6-NEXT: vsrw 4, 2, 5 4511; PWR6-NEXT: vspltisb 5, 15 4512; PWR6-NEXT: vadduwm 2, 2, 4 4513; PWR6-NEXT: vspltisb 4, 1 4514; PWR6-NEXT: vand 2, 2, 5 4515; PWR6-NEXT: vspltisw 5, -16 4516; PWR6-NEXT: vrlw 0, 4, 5 4517; PWR6-NEXT: vmulouh 4, 2, 4 4518; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 4519; PWR6-NEXT: vspltisw 3, 12 4520; PWR6-NEXT: vadduwm 3, 3, 3 4521; PWR6-NEXT: vslw 2, 2, 5 4522; PWR6-NEXT: vadduwm 2, 4, 2 4523; PWR6-NEXT: vsrw 2, 2, 3 4524; PWR6-NEXT: vspltisw 3, 3 4525; PWR6-NEXT: vcmpgtuw 2, 2, 3 4526; PWR6-NEXT: blr 4527; 4528; PWR7-LABEL: ugt_3_v4i32: 4529; PWR7: # %bb.0: 4530; PWR7-NEXT: vspltisw 3, 1 4531; PWR7-NEXT: addis 3, 2, .LCPI44_0@toc@ha 4532; PWR7-NEXT: addi 3, 3, .LCPI44_0@toc@l 4533; PWR7-NEXT: vspltisw 4, 2 4534; PWR7-NEXT: lxvw4x 0, 0, 3 4535; PWR7-NEXT: addis 3, 2, .LCPI44_1@toc@ha 4536; PWR7-NEXT: vspltisw 5, -16 4537; PWR7-NEXT: vsrw 3, 2, 3 4538; PWR7-NEXT: addi 3, 3, .LCPI44_1@toc@l 4539; PWR7-NEXT: vspltisb 0, 15 4540; PWR7-NEXT: xxland 35, 35, 0 4541; PWR7-NEXT: lxvw4x 0, 0, 3 4542; PWR7-NEXT: vsubuwm 2, 2, 3 4543; PWR7-NEXT: vsrw 3, 2, 4 4544; PWR7-NEXT: xxland 34, 34, 0 4545; PWR7-NEXT: vspltisw 4, 4 4546; PWR7-NEXT: xxland 35, 35, 0 4547; PWR7-NEXT: vadduwm 2, 2, 3 4548; PWR7-NEXT: vsrw 3, 2, 4 4549; PWR7-NEXT: vspltisb 4, 1 4550; PWR7-NEXT: vrlw 1, 4, 5 4551; PWR7-NEXT: vadduwm 2, 2, 3 4552; PWR7-NEXT: xxlxor 35, 35, 35 4553; PWR7-NEXT: xxland 34, 34, 32 4554; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 4555; PWR7-NEXT: vmulouh 2, 2, 4 4556; PWR7-NEXT: vspltisw 4, 12 4557; PWR7-NEXT: vslw 3, 3, 5 4558; PWR7-NEXT: vadduwm 2, 2, 3 4559; PWR7-NEXT: vadduwm 3, 4, 4 4560; PWR7-NEXT: vsrw 2, 2, 3 4561; PWR7-NEXT: vspltisw 3, 3 4562; PWR7-NEXT: vcmpgtuw 2, 2, 3 4563; PWR7-NEXT: blr 4564; 4565; PWR8-LABEL: ugt_3_v4i32: 4566; PWR8: # %bb.0: 4567; PWR8-NEXT: vspltisw 3, 3 4568; PWR8-NEXT: vpopcntw 2, 2 4569; PWR8-NEXT: vcmpgtuw 2, 2, 3 4570; PWR8-NEXT: blr 4571; 4572; PWR9-LABEL: ugt_3_v4i32: 4573; PWR9: # %bb.0: 4574; PWR9-NEXT: vpopcntw 2, 2 4575; PWR9-NEXT: vspltisw 3, 3 4576; PWR9-NEXT: vcmpgtuw 2, 2, 3 4577; PWR9-NEXT: blr 4578 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 4579 %3 = icmp ugt <4 x i32> %2, <i32 3, i32 3, i32 3, i32 3> 4580 %4 = sext <4 x i1> %3 to <4 x i32> 4581 ret <4 x i32> %4 4582} 4583 4584define <4 x i32> @ult_4_v4i32(<4 x i32> %0) { 4585; PWR5-LABEL: ult_4_v4i32: 4586; PWR5: # %bb.0: 4587; PWR5-NEXT: addis 3, 2, .LCPI45_0@toc@ha 4588; PWR5-NEXT: vspltisw 4, 1 4589; PWR5-NEXT: vxor 3, 3, 3 4590; PWR5-NEXT: addi 3, 3, .LCPI45_0@toc@l 4591; PWR5-NEXT: lvx 5, 0, 3 4592; PWR5-NEXT: addis 3, 2, .LCPI45_1@toc@ha 4593; PWR5-NEXT: addi 3, 3, .LCPI45_1@toc@l 4594; PWR5-NEXT: vspltisw 0, 2 4595; PWR5-NEXT: vsrw 4, 2, 4 4596; PWR5-NEXT: vand 4, 4, 5 4597; PWR5-NEXT: lvx 5, 0, 3 4598; PWR5-NEXT: vsubuwm 2, 2, 4 4599; PWR5-NEXT: vand 4, 2, 5 4600; PWR5-NEXT: vsrw 2, 2, 0 4601; PWR5-NEXT: vspltisb 0, 15 4602; PWR5-NEXT: vand 2, 2, 5 4603; PWR5-NEXT: vspltisw 5, 4 4604; PWR5-NEXT: vadduwm 2, 4, 2 4605; PWR5-NEXT: vsrw 4, 2, 5 4606; PWR5-NEXT: vadduwm 2, 2, 4 4607; PWR5-NEXT: vspltisb 4, 1 4608; PWR5-NEXT: vand 2, 2, 0 4609; PWR5-NEXT: vspltisw 0, -16 4610; PWR5-NEXT: vrlw 1, 4, 0 4611; PWR5-NEXT: vmulouh 4, 2, 4 4612; PWR5-NEXT: vmsumuhm 2, 2, 1, 3 4613; PWR5-NEXT: vspltisw 3, 12 4614; PWR5-NEXT: vadduwm 3, 3, 3 4615; PWR5-NEXT: vslw 2, 2, 0 4616; PWR5-NEXT: vadduwm 2, 4, 2 4617; PWR5-NEXT: vsrw 2, 2, 3 4618; PWR5-NEXT: vcmpgtuw 2, 5, 2 4619; PWR5-NEXT: blr 4620; 4621; PWR6-LABEL: ult_4_v4i32: 4622; PWR6: # %bb.0: 4623; PWR6-NEXT: addis 3, 2, .LCPI45_0@toc@ha 4624; PWR6-NEXT: vspltisw 4, 1 4625; PWR6-NEXT: vxor 3, 3, 3 4626; PWR6-NEXT: addi 3, 3, .LCPI45_0@toc@l 4627; PWR6-NEXT: lvx 5, 0, 3 4628; PWR6-NEXT: addis 3, 2, .LCPI45_1@toc@ha 4629; PWR6-NEXT: addi 3, 3, .LCPI45_1@toc@l 4630; PWR6-NEXT: vspltisw 0, 2 4631; PWR6-NEXT: vsrw 4, 2, 4 4632; PWR6-NEXT: vand 4, 4, 5 4633; PWR6-NEXT: lvx 5, 0, 3 4634; PWR6-NEXT: vsubuwm 2, 2, 4 4635; PWR6-NEXT: vand 4, 2, 5 4636; PWR6-NEXT: vsrw 2, 2, 0 4637; PWR6-NEXT: vspltisb 0, 15 4638; PWR6-NEXT: vand 2, 2, 5 4639; PWR6-NEXT: vspltisw 5, 4 4640; PWR6-NEXT: vadduwm 2, 4, 2 4641; PWR6-NEXT: vsrw 4, 2, 5 4642; PWR6-NEXT: vadduwm 2, 2, 4 4643; PWR6-NEXT: vspltisb 4, 1 4644; PWR6-NEXT: vand 2, 2, 0 4645; PWR6-NEXT: vspltisw 0, -16 4646; PWR6-NEXT: vrlw 1, 4, 0 4647; PWR6-NEXT: vmulouh 4, 2, 4 4648; PWR6-NEXT: vmsumuhm 2, 2, 1, 3 4649; PWR6-NEXT: vspltisw 3, 12 4650; PWR6-NEXT: vadduwm 3, 3, 3 4651; PWR6-NEXT: vslw 2, 2, 0 4652; PWR6-NEXT: vadduwm 2, 4, 2 4653; PWR6-NEXT: vsrw 2, 2, 3 4654; PWR6-NEXT: vcmpgtuw 2, 5, 2 4655; PWR6-NEXT: blr 4656; 4657; PWR7-LABEL: ult_4_v4i32: 4658; PWR7: # %bb.0: 4659; PWR7-NEXT: vspltisw 3, 1 4660; PWR7-NEXT: addis 3, 2, .LCPI45_0@toc@ha 4661; PWR7-NEXT: addi 3, 3, .LCPI45_0@toc@l 4662; PWR7-NEXT: vspltisw 4, 2 4663; PWR7-NEXT: lxvw4x 0, 0, 3 4664; PWR7-NEXT: addis 3, 2, .LCPI45_1@toc@ha 4665; PWR7-NEXT: vspltisb 5, 1 4666; PWR7-NEXT: vsrw 3, 2, 3 4667; PWR7-NEXT: addi 3, 3, .LCPI45_1@toc@l 4668; PWR7-NEXT: vspltisw 0, -16 4669; PWR7-NEXT: vspltisb 1, 15 4670; PWR7-NEXT: vrlw 6, 5, 0 4671; PWR7-NEXT: xxland 35, 35, 0 4672; PWR7-NEXT: lxvw4x 0, 0, 3 4673; PWR7-NEXT: vsubuwm 2, 2, 3 4674; PWR7-NEXT: vsrw 3, 2, 4 4675; PWR7-NEXT: xxland 34, 34, 0 4676; PWR7-NEXT: vspltisw 4, 4 4677; PWR7-NEXT: xxland 35, 35, 0 4678; PWR7-NEXT: vadduwm 2, 2, 3 4679; PWR7-NEXT: vsrw 3, 2, 4 4680; PWR7-NEXT: vadduwm 2, 2, 3 4681; PWR7-NEXT: xxlxor 35, 35, 35 4682; PWR7-NEXT: xxland 34, 34, 33 4683; PWR7-NEXT: vmsumuhm 3, 2, 6, 3 4684; PWR7-NEXT: vmulouh 2, 2, 5 4685; PWR7-NEXT: vspltisw 5, 12 4686; PWR7-NEXT: vslw 3, 3, 0 4687; PWR7-NEXT: vadduwm 2, 2, 3 4688; PWR7-NEXT: vadduwm 3, 5, 5 4689; PWR7-NEXT: vsrw 2, 2, 3 4690; PWR7-NEXT: vcmpgtuw 2, 4, 2 4691; PWR7-NEXT: blr 4692; 4693; PWR8-LABEL: ult_4_v4i32: 4694; PWR8: # %bb.0: 4695; PWR8-NEXT: vspltisw 3, 4 4696; PWR8-NEXT: vpopcntw 2, 2 4697; PWR8-NEXT: vcmpgtuw 2, 3, 2 4698; PWR8-NEXT: blr 4699; 4700; PWR9-LABEL: ult_4_v4i32: 4701; PWR9: # %bb.0: 4702; PWR9-NEXT: vpopcntw 2, 2 4703; PWR9-NEXT: vspltisw 3, 4 4704; PWR9-NEXT: vcmpgtuw 2, 3, 2 4705; PWR9-NEXT: blr 4706 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 4707 %3 = icmp ult <4 x i32> %2, <i32 4, i32 4, i32 4, i32 4> 4708 %4 = sext <4 x i1> %3 to <4 x i32> 4709 ret <4 x i32> %4 4710} 4711 4712define <4 x i32> @ugt_4_v4i32(<4 x i32> %0) { 4713; PWR5-LABEL: ugt_4_v4i32: 4714; PWR5: # %bb.0: 4715; PWR5-NEXT: addis 3, 2, .LCPI46_0@toc@ha 4716; PWR5-NEXT: vspltisw 4, 1 4717; PWR5-NEXT: vxor 3, 3, 3 4718; PWR5-NEXT: addi 3, 3, .LCPI46_0@toc@l 4719; PWR5-NEXT: lvx 5, 0, 3 4720; PWR5-NEXT: addis 3, 2, .LCPI46_1@toc@ha 4721; PWR5-NEXT: addi 3, 3, .LCPI46_1@toc@l 4722; PWR5-NEXT: vspltisw 0, 2 4723; PWR5-NEXT: vsrw 4, 2, 4 4724; PWR5-NEXT: vand 4, 4, 5 4725; PWR5-NEXT: lvx 5, 0, 3 4726; PWR5-NEXT: vsubuwm 2, 2, 4 4727; PWR5-NEXT: vand 4, 2, 5 4728; PWR5-NEXT: vsrw 2, 2, 0 4729; PWR5-NEXT: vspltisb 0, 15 4730; PWR5-NEXT: vand 2, 2, 5 4731; PWR5-NEXT: vspltisw 5, 4 4732; PWR5-NEXT: vadduwm 2, 4, 2 4733; PWR5-NEXT: vsrw 4, 2, 5 4734; PWR5-NEXT: vadduwm 2, 2, 4 4735; PWR5-NEXT: vspltisb 4, 1 4736; PWR5-NEXT: vand 2, 2, 0 4737; PWR5-NEXT: vspltisw 0, -16 4738; PWR5-NEXT: vrlw 1, 4, 0 4739; PWR5-NEXT: vmulouh 4, 2, 4 4740; PWR5-NEXT: vmsumuhm 2, 2, 1, 3 4741; PWR5-NEXT: vspltisw 3, 12 4742; PWR5-NEXT: vadduwm 3, 3, 3 4743; PWR5-NEXT: vslw 2, 2, 0 4744; PWR5-NEXT: vadduwm 2, 4, 2 4745; PWR5-NEXT: vsrw 2, 2, 3 4746; PWR5-NEXT: vcmpgtuw 2, 2, 5 4747; PWR5-NEXT: blr 4748; 4749; PWR6-LABEL: ugt_4_v4i32: 4750; PWR6: # %bb.0: 4751; PWR6-NEXT: addis 3, 2, .LCPI46_0@toc@ha 4752; PWR6-NEXT: vspltisw 4, 1 4753; PWR6-NEXT: vxor 3, 3, 3 4754; PWR6-NEXT: addi 3, 3, .LCPI46_0@toc@l 4755; PWR6-NEXT: lvx 5, 0, 3 4756; PWR6-NEXT: addis 3, 2, .LCPI46_1@toc@ha 4757; PWR6-NEXT: addi 3, 3, .LCPI46_1@toc@l 4758; PWR6-NEXT: vspltisw 0, 2 4759; PWR6-NEXT: vsrw 4, 2, 4 4760; PWR6-NEXT: vand 4, 4, 5 4761; PWR6-NEXT: lvx 5, 0, 3 4762; PWR6-NEXT: vsubuwm 2, 2, 4 4763; PWR6-NEXT: vand 4, 2, 5 4764; PWR6-NEXT: vsrw 2, 2, 0 4765; PWR6-NEXT: vspltisb 0, 15 4766; PWR6-NEXT: vand 2, 2, 5 4767; PWR6-NEXT: vspltisw 5, 4 4768; PWR6-NEXT: vadduwm 2, 4, 2 4769; PWR6-NEXT: vsrw 4, 2, 5 4770; PWR6-NEXT: vadduwm 2, 2, 4 4771; PWR6-NEXT: vspltisb 4, 1 4772; PWR6-NEXT: vand 2, 2, 0 4773; PWR6-NEXT: vspltisw 0, -16 4774; PWR6-NEXT: vrlw 1, 4, 0 4775; PWR6-NEXT: vmulouh 4, 2, 4 4776; PWR6-NEXT: vmsumuhm 2, 2, 1, 3 4777; PWR6-NEXT: vspltisw 3, 12 4778; PWR6-NEXT: vadduwm 3, 3, 3 4779; PWR6-NEXT: vslw 2, 2, 0 4780; PWR6-NEXT: vadduwm 2, 4, 2 4781; PWR6-NEXT: vsrw 2, 2, 3 4782; PWR6-NEXT: vcmpgtuw 2, 2, 5 4783; PWR6-NEXT: blr 4784; 4785; PWR7-LABEL: ugt_4_v4i32: 4786; PWR7: # %bb.0: 4787; PWR7-NEXT: vspltisw 3, 1 4788; PWR7-NEXT: addis 3, 2, .LCPI46_0@toc@ha 4789; PWR7-NEXT: addi 3, 3, .LCPI46_0@toc@l 4790; PWR7-NEXT: vspltisw 4, 2 4791; PWR7-NEXT: lxvw4x 0, 0, 3 4792; PWR7-NEXT: addis 3, 2, .LCPI46_1@toc@ha 4793; PWR7-NEXT: vspltisb 5, 1 4794; PWR7-NEXT: vsrw 3, 2, 3 4795; PWR7-NEXT: addi 3, 3, .LCPI46_1@toc@l 4796; PWR7-NEXT: vspltisw 0, -16 4797; PWR7-NEXT: vspltisb 1, 15 4798; PWR7-NEXT: vrlw 6, 5, 0 4799; PWR7-NEXT: xxland 35, 35, 0 4800; PWR7-NEXT: lxvw4x 0, 0, 3 4801; PWR7-NEXT: vsubuwm 2, 2, 3 4802; PWR7-NEXT: vsrw 3, 2, 4 4803; PWR7-NEXT: xxland 34, 34, 0 4804; PWR7-NEXT: vspltisw 4, 4 4805; PWR7-NEXT: xxland 35, 35, 0 4806; PWR7-NEXT: vadduwm 2, 2, 3 4807; PWR7-NEXT: vsrw 3, 2, 4 4808; PWR7-NEXT: vadduwm 2, 2, 3 4809; PWR7-NEXT: xxlxor 35, 35, 35 4810; PWR7-NEXT: xxland 34, 34, 33 4811; PWR7-NEXT: vmsumuhm 3, 2, 6, 3 4812; PWR7-NEXT: vmulouh 2, 2, 5 4813; PWR7-NEXT: vspltisw 5, 12 4814; PWR7-NEXT: vslw 3, 3, 0 4815; PWR7-NEXT: vadduwm 2, 2, 3 4816; PWR7-NEXT: vadduwm 3, 5, 5 4817; PWR7-NEXT: vsrw 2, 2, 3 4818; PWR7-NEXT: vcmpgtuw 2, 2, 4 4819; PWR7-NEXT: blr 4820; 4821; PWR8-LABEL: ugt_4_v4i32: 4822; PWR8: # %bb.0: 4823; PWR8-NEXT: vspltisw 3, 4 4824; PWR8-NEXT: vpopcntw 2, 2 4825; PWR8-NEXT: vcmpgtuw 2, 2, 3 4826; PWR8-NEXT: blr 4827; 4828; PWR9-LABEL: ugt_4_v4i32: 4829; PWR9: # %bb.0: 4830; PWR9-NEXT: vpopcntw 2, 2 4831; PWR9-NEXT: vspltisw 3, 4 4832; PWR9-NEXT: vcmpgtuw 2, 2, 3 4833; PWR9-NEXT: blr 4834 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 4835 %3 = icmp ugt <4 x i32> %2, <i32 4, i32 4, i32 4, i32 4> 4836 %4 = sext <4 x i1> %3 to <4 x i32> 4837 ret <4 x i32> %4 4838} 4839 4840define <4 x i32> @ult_5_v4i32(<4 x i32> %0) { 4841; PWR5-LABEL: ult_5_v4i32: 4842; PWR5: # %bb.0: 4843; PWR5-NEXT: addis 3, 2, .LCPI47_0@toc@ha 4844; PWR5-NEXT: vspltisw 4, 1 4845; PWR5-NEXT: vxor 3, 3, 3 4846; PWR5-NEXT: addi 3, 3, .LCPI47_0@toc@l 4847; PWR5-NEXT: lvx 5, 0, 3 4848; PWR5-NEXT: addis 3, 2, .LCPI47_1@toc@ha 4849; PWR5-NEXT: addi 3, 3, .LCPI47_1@toc@l 4850; PWR5-NEXT: vspltisw 0, 2 4851; PWR5-NEXT: vsrw 4, 2, 4 4852; PWR5-NEXT: vand 4, 4, 5 4853; PWR5-NEXT: lvx 5, 0, 3 4854; PWR5-NEXT: vsubuwm 2, 2, 4 4855; PWR5-NEXT: vand 4, 2, 5 4856; PWR5-NEXT: vsrw 2, 2, 0 4857; PWR5-NEXT: vand 2, 2, 5 4858; PWR5-NEXT: vspltisw 5, 4 4859; PWR5-NEXT: vadduwm 2, 4, 2 4860; PWR5-NEXT: vsrw 4, 2, 5 4861; PWR5-NEXT: vspltisb 5, 15 4862; PWR5-NEXT: vadduwm 2, 2, 4 4863; PWR5-NEXT: vspltisb 4, 1 4864; PWR5-NEXT: vand 2, 2, 5 4865; PWR5-NEXT: vspltisw 5, -16 4866; PWR5-NEXT: vrlw 0, 4, 5 4867; PWR5-NEXT: vmulouh 4, 2, 4 4868; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 4869; PWR5-NEXT: vspltisw 3, 12 4870; PWR5-NEXT: vadduwm 3, 3, 3 4871; PWR5-NEXT: vslw 2, 2, 5 4872; PWR5-NEXT: vadduwm 2, 4, 2 4873; PWR5-NEXT: vsrw 2, 2, 3 4874; PWR5-NEXT: vspltisw 3, 5 4875; PWR5-NEXT: vcmpgtuw 2, 3, 2 4876; PWR5-NEXT: blr 4877; 4878; PWR6-LABEL: ult_5_v4i32: 4879; PWR6: # %bb.0: 4880; PWR6-NEXT: addis 3, 2, .LCPI47_0@toc@ha 4881; PWR6-NEXT: vspltisw 4, 1 4882; PWR6-NEXT: vxor 3, 3, 3 4883; PWR6-NEXT: addi 3, 3, .LCPI47_0@toc@l 4884; PWR6-NEXT: lvx 5, 0, 3 4885; PWR6-NEXT: addis 3, 2, .LCPI47_1@toc@ha 4886; PWR6-NEXT: addi 3, 3, .LCPI47_1@toc@l 4887; PWR6-NEXT: vspltisw 0, 2 4888; PWR6-NEXT: vsrw 4, 2, 4 4889; PWR6-NEXT: vand 4, 4, 5 4890; PWR6-NEXT: lvx 5, 0, 3 4891; PWR6-NEXT: vsubuwm 2, 2, 4 4892; PWR6-NEXT: vand 4, 2, 5 4893; PWR6-NEXT: vsrw 2, 2, 0 4894; PWR6-NEXT: vand 2, 2, 5 4895; PWR6-NEXT: vspltisw 5, 4 4896; PWR6-NEXT: vadduwm 2, 4, 2 4897; PWR6-NEXT: vsrw 4, 2, 5 4898; PWR6-NEXT: vspltisb 5, 15 4899; PWR6-NEXT: vadduwm 2, 2, 4 4900; PWR6-NEXT: vspltisb 4, 1 4901; PWR6-NEXT: vand 2, 2, 5 4902; PWR6-NEXT: vspltisw 5, -16 4903; PWR6-NEXT: vrlw 0, 4, 5 4904; PWR6-NEXT: vmulouh 4, 2, 4 4905; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 4906; PWR6-NEXT: vspltisw 3, 12 4907; PWR6-NEXT: vadduwm 3, 3, 3 4908; PWR6-NEXT: vslw 2, 2, 5 4909; PWR6-NEXT: vadduwm 2, 4, 2 4910; PWR6-NEXT: vsrw 2, 2, 3 4911; PWR6-NEXT: vspltisw 3, 5 4912; PWR6-NEXT: vcmpgtuw 2, 3, 2 4913; PWR6-NEXT: blr 4914; 4915; PWR7-LABEL: ult_5_v4i32: 4916; PWR7: # %bb.0: 4917; PWR7-NEXT: vspltisw 3, 1 4918; PWR7-NEXT: addis 3, 2, .LCPI47_0@toc@ha 4919; PWR7-NEXT: addi 3, 3, .LCPI47_0@toc@l 4920; PWR7-NEXT: vspltisw 4, 2 4921; PWR7-NEXT: lxvw4x 0, 0, 3 4922; PWR7-NEXT: addis 3, 2, .LCPI47_1@toc@ha 4923; PWR7-NEXT: vspltisw 5, -16 4924; PWR7-NEXT: vsrw 3, 2, 3 4925; PWR7-NEXT: addi 3, 3, .LCPI47_1@toc@l 4926; PWR7-NEXT: vspltisb 0, 15 4927; PWR7-NEXT: xxland 35, 35, 0 4928; PWR7-NEXT: lxvw4x 0, 0, 3 4929; PWR7-NEXT: vsubuwm 2, 2, 3 4930; PWR7-NEXT: vsrw 3, 2, 4 4931; PWR7-NEXT: xxland 34, 34, 0 4932; PWR7-NEXT: vspltisw 4, 4 4933; PWR7-NEXT: xxland 35, 35, 0 4934; PWR7-NEXT: vadduwm 2, 2, 3 4935; PWR7-NEXT: vsrw 3, 2, 4 4936; PWR7-NEXT: vspltisb 4, 1 4937; PWR7-NEXT: vrlw 1, 4, 5 4938; PWR7-NEXT: vadduwm 2, 2, 3 4939; PWR7-NEXT: xxlxor 35, 35, 35 4940; PWR7-NEXT: xxland 34, 34, 32 4941; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 4942; PWR7-NEXT: vmulouh 2, 2, 4 4943; PWR7-NEXT: vspltisw 4, 12 4944; PWR7-NEXT: vslw 3, 3, 5 4945; PWR7-NEXT: vadduwm 2, 2, 3 4946; PWR7-NEXT: vadduwm 3, 4, 4 4947; PWR7-NEXT: vsrw 2, 2, 3 4948; PWR7-NEXT: vspltisw 3, 5 4949; PWR7-NEXT: vcmpgtuw 2, 3, 2 4950; PWR7-NEXT: blr 4951; 4952; PWR8-LABEL: ult_5_v4i32: 4953; PWR8: # %bb.0: 4954; PWR8-NEXT: vspltisw 3, 5 4955; PWR8-NEXT: vpopcntw 2, 2 4956; PWR8-NEXT: vcmpgtuw 2, 3, 2 4957; PWR8-NEXT: blr 4958; 4959; PWR9-LABEL: ult_5_v4i32: 4960; PWR9: # %bb.0: 4961; PWR9-NEXT: vpopcntw 2, 2 4962; PWR9-NEXT: vspltisw 3, 5 4963; PWR9-NEXT: vcmpgtuw 2, 3, 2 4964; PWR9-NEXT: blr 4965 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 4966 %3 = icmp ult <4 x i32> %2, <i32 5, i32 5, i32 5, i32 5> 4967 %4 = sext <4 x i1> %3 to <4 x i32> 4968 ret <4 x i32> %4 4969} 4970 4971define <4 x i32> @ugt_5_v4i32(<4 x i32> %0) { 4972; PWR5-LABEL: ugt_5_v4i32: 4973; PWR5: # %bb.0: 4974; PWR5-NEXT: addis 3, 2, .LCPI48_0@toc@ha 4975; PWR5-NEXT: vspltisw 4, 1 4976; PWR5-NEXT: vxor 3, 3, 3 4977; PWR5-NEXT: addi 3, 3, .LCPI48_0@toc@l 4978; PWR5-NEXT: lvx 5, 0, 3 4979; PWR5-NEXT: addis 3, 2, .LCPI48_1@toc@ha 4980; PWR5-NEXT: addi 3, 3, .LCPI48_1@toc@l 4981; PWR5-NEXT: vspltisw 0, 2 4982; PWR5-NEXT: vsrw 4, 2, 4 4983; PWR5-NEXT: vand 4, 4, 5 4984; PWR5-NEXT: lvx 5, 0, 3 4985; PWR5-NEXT: vsubuwm 2, 2, 4 4986; PWR5-NEXT: vand 4, 2, 5 4987; PWR5-NEXT: vsrw 2, 2, 0 4988; PWR5-NEXT: vand 2, 2, 5 4989; PWR5-NEXT: vspltisw 5, 4 4990; PWR5-NEXT: vadduwm 2, 4, 2 4991; PWR5-NEXT: vsrw 4, 2, 5 4992; PWR5-NEXT: vspltisb 5, 15 4993; PWR5-NEXT: vadduwm 2, 2, 4 4994; PWR5-NEXT: vspltisb 4, 1 4995; PWR5-NEXT: vand 2, 2, 5 4996; PWR5-NEXT: vspltisw 5, -16 4997; PWR5-NEXT: vrlw 0, 4, 5 4998; PWR5-NEXT: vmulouh 4, 2, 4 4999; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 5000; PWR5-NEXT: vspltisw 3, 12 5001; PWR5-NEXT: vadduwm 3, 3, 3 5002; PWR5-NEXT: vslw 2, 2, 5 5003; PWR5-NEXT: vadduwm 2, 4, 2 5004; PWR5-NEXT: vsrw 2, 2, 3 5005; PWR5-NEXT: vspltisw 3, 5 5006; PWR5-NEXT: vcmpgtuw 2, 2, 3 5007; PWR5-NEXT: blr 5008; 5009; PWR6-LABEL: ugt_5_v4i32: 5010; PWR6: # %bb.0: 5011; PWR6-NEXT: addis 3, 2, .LCPI48_0@toc@ha 5012; PWR6-NEXT: vspltisw 4, 1 5013; PWR6-NEXT: vxor 3, 3, 3 5014; PWR6-NEXT: addi 3, 3, .LCPI48_0@toc@l 5015; PWR6-NEXT: lvx 5, 0, 3 5016; PWR6-NEXT: addis 3, 2, .LCPI48_1@toc@ha 5017; PWR6-NEXT: addi 3, 3, .LCPI48_1@toc@l 5018; PWR6-NEXT: vspltisw 0, 2 5019; PWR6-NEXT: vsrw 4, 2, 4 5020; PWR6-NEXT: vand 4, 4, 5 5021; PWR6-NEXT: lvx 5, 0, 3 5022; PWR6-NEXT: vsubuwm 2, 2, 4 5023; PWR6-NEXT: vand 4, 2, 5 5024; PWR6-NEXT: vsrw 2, 2, 0 5025; PWR6-NEXT: vand 2, 2, 5 5026; PWR6-NEXT: vspltisw 5, 4 5027; PWR6-NEXT: vadduwm 2, 4, 2 5028; PWR6-NEXT: vsrw 4, 2, 5 5029; PWR6-NEXT: vspltisb 5, 15 5030; PWR6-NEXT: vadduwm 2, 2, 4 5031; PWR6-NEXT: vspltisb 4, 1 5032; PWR6-NEXT: vand 2, 2, 5 5033; PWR6-NEXT: vspltisw 5, -16 5034; PWR6-NEXT: vrlw 0, 4, 5 5035; PWR6-NEXT: vmulouh 4, 2, 4 5036; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 5037; PWR6-NEXT: vspltisw 3, 12 5038; PWR6-NEXT: vadduwm 3, 3, 3 5039; PWR6-NEXT: vslw 2, 2, 5 5040; PWR6-NEXT: vadduwm 2, 4, 2 5041; PWR6-NEXT: vsrw 2, 2, 3 5042; PWR6-NEXT: vspltisw 3, 5 5043; PWR6-NEXT: vcmpgtuw 2, 2, 3 5044; PWR6-NEXT: blr 5045; 5046; PWR7-LABEL: ugt_5_v4i32: 5047; PWR7: # %bb.0: 5048; PWR7-NEXT: vspltisw 3, 1 5049; PWR7-NEXT: addis 3, 2, .LCPI48_0@toc@ha 5050; PWR7-NEXT: addi 3, 3, .LCPI48_0@toc@l 5051; PWR7-NEXT: vspltisw 4, 2 5052; PWR7-NEXT: lxvw4x 0, 0, 3 5053; PWR7-NEXT: addis 3, 2, .LCPI48_1@toc@ha 5054; PWR7-NEXT: vspltisw 5, -16 5055; PWR7-NEXT: vsrw 3, 2, 3 5056; PWR7-NEXT: addi 3, 3, .LCPI48_1@toc@l 5057; PWR7-NEXT: vspltisb 0, 15 5058; PWR7-NEXT: xxland 35, 35, 0 5059; PWR7-NEXT: lxvw4x 0, 0, 3 5060; PWR7-NEXT: vsubuwm 2, 2, 3 5061; PWR7-NEXT: vsrw 3, 2, 4 5062; PWR7-NEXT: xxland 34, 34, 0 5063; PWR7-NEXT: vspltisw 4, 4 5064; PWR7-NEXT: xxland 35, 35, 0 5065; PWR7-NEXT: vadduwm 2, 2, 3 5066; PWR7-NEXT: vsrw 3, 2, 4 5067; PWR7-NEXT: vspltisb 4, 1 5068; PWR7-NEXT: vrlw 1, 4, 5 5069; PWR7-NEXT: vadduwm 2, 2, 3 5070; PWR7-NEXT: xxlxor 35, 35, 35 5071; PWR7-NEXT: xxland 34, 34, 32 5072; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 5073; PWR7-NEXT: vmulouh 2, 2, 4 5074; PWR7-NEXT: vspltisw 4, 12 5075; PWR7-NEXT: vslw 3, 3, 5 5076; PWR7-NEXT: vadduwm 2, 2, 3 5077; PWR7-NEXT: vadduwm 3, 4, 4 5078; PWR7-NEXT: vsrw 2, 2, 3 5079; PWR7-NEXT: vspltisw 3, 5 5080; PWR7-NEXT: vcmpgtuw 2, 2, 3 5081; PWR7-NEXT: blr 5082; 5083; PWR8-LABEL: ugt_5_v4i32: 5084; PWR8: # %bb.0: 5085; PWR8-NEXT: vspltisw 3, 5 5086; PWR8-NEXT: vpopcntw 2, 2 5087; PWR8-NEXT: vcmpgtuw 2, 2, 3 5088; PWR8-NEXT: blr 5089; 5090; PWR9-LABEL: ugt_5_v4i32: 5091; PWR9: # %bb.0: 5092; PWR9-NEXT: vpopcntw 2, 2 5093; PWR9-NEXT: vspltisw 3, 5 5094; PWR9-NEXT: vcmpgtuw 2, 2, 3 5095; PWR9-NEXT: blr 5096 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 5097 %3 = icmp ugt <4 x i32> %2, <i32 5, i32 5, i32 5, i32 5> 5098 %4 = sext <4 x i1> %3 to <4 x i32> 5099 ret <4 x i32> %4 5100} 5101 5102define <4 x i32> @ult_6_v4i32(<4 x i32> %0) { 5103; PWR5-LABEL: ult_6_v4i32: 5104; PWR5: # %bb.0: 5105; PWR5-NEXT: addis 3, 2, .LCPI49_0@toc@ha 5106; PWR5-NEXT: vspltisw 4, 1 5107; PWR5-NEXT: vxor 3, 3, 3 5108; PWR5-NEXT: addi 3, 3, .LCPI49_0@toc@l 5109; PWR5-NEXT: lvx 5, 0, 3 5110; PWR5-NEXT: addis 3, 2, .LCPI49_1@toc@ha 5111; PWR5-NEXT: addi 3, 3, .LCPI49_1@toc@l 5112; PWR5-NEXT: vspltisw 0, 2 5113; PWR5-NEXT: vsrw 4, 2, 4 5114; PWR5-NEXT: vand 4, 4, 5 5115; PWR5-NEXT: lvx 5, 0, 3 5116; PWR5-NEXT: vsubuwm 2, 2, 4 5117; PWR5-NEXT: vand 4, 2, 5 5118; PWR5-NEXT: vsrw 2, 2, 0 5119; PWR5-NEXT: vand 2, 2, 5 5120; PWR5-NEXT: vspltisw 5, 4 5121; PWR5-NEXT: vadduwm 2, 4, 2 5122; PWR5-NEXT: vsrw 4, 2, 5 5123; PWR5-NEXT: vspltisb 5, 15 5124; PWR5-NEXT: vadduwm 2, 2, 4 5125; PWR5-NEXT: vspltisb 4, 1 5126; PWR5-NEXT: vand 2, 2, 5 5127; PWR5-NEXT: vspltisw 5, -16 5128; PWR5-NEXT: vrlw 0, 4, 5 5129; PWR5-NEXT: vmulouh 4, 2, 4 5130; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 5131; PWR5-NEXT: vspltisw 3, 12 5132; PWR5-NEXT: vadduwm 3, 3, 3 5133; PWR5-NEXT: vslw 2, 2, 5 5134; PWR5-NEXT: vadduwm 2, 4, 2 5135; PWR5-NEXT: vsrw 2, 2, 3 5136; PWR5-NEXT: vspltisw 3, 6 5137; PWR5-NEXT: vcmpgtuw 2, 3, 2 5138; PWR5-NEXT: blr 5139; 5140; PWR6-LABEL: ult_6_v4i32: 5141; PWR6: # %bb.0: 5142; PWR6-NEXT: addis 3, 2, .LCPI49_0@toc@ha 5143; PWR6-NEXT: vspltisw 4, 1 5144; PWR6-NEXT: vxor 3, 3, 3 5145; PWR6-NEXT: addi 3, 3, .LCPI49_0@toc@l 5146; PWR6-NEXT: lvx 5, 0, 3 5147; PWR6-NEXT: addis 3, 2, .LCPI49_1@toc@ha 5148; PWR6-NEXT: addi 3, 3, .LCPI49_1@toc@l 5149; PWR6-NEXT: vspltisw 0, 2 5150; PWR6-NEXT: vsrw 4, 2, 4 5151; PWR6-NEXT: vand 4, 4, 5 5152; PWR6-NEXT: lvx 5, 0, 3 5153; PWR6-NEXT: vsubuwm 2, 2, 4 5154; PWR6-NEXT: vand 4, 2, 5 5155; PWR6-NEXT: vsrw 2, 2, 0 5156; PWR6-NEXT: vand 2, 2, 5 5157; PWR6-NEXT: vspltisw 5, 4 5158; PWR6-NEXT: vadduwm 2, 4, 2 5159; PWR6-NEXT: vsrw 4, 2, 5 5160; PWR6-NEXT: vspltisb 5, 15 5161; PWR6-NEXT: vadduwm 2, 2, 4 5162; PWR6-NEXT: vspltisb 4, 1 5163; PWR6-NEXT: vand 2, 2, 5 5164; PWR6-NEXT: vspltisw 5, -16 5165; PWR6-NEXT: vrlw 0, 4, 5 5166; PWR6-NEXT: vmulouh 4, 2, 4 5167; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 5168; PWR6-NEXT: vspltisw 3, 12 5169; PWR6-NEXT: vadduwm 3, 3, 3 5170; PWR6-NEXT: vslw 2, 2, 5 5171; PWR6-NEXT: vadduwm 2, 4, 2 5172; PWR6-NEXT: vsrw 2, 2, 3 5173; PWR6-NEXT: vspltisw 3, 6 5174; PWR6-NEXT: vcmpgtuw 2, 3, 2 5175; PWR6-NEXT: blr 5176; 5177; PWR7-LABEL: ult_6_v4i32: 5178; PWR7: # %bb.0: 5179; PWR7-NEXT: vspltisw 3, 1 5180; PWR7-NEXT: addis 3, 2, .LCPI49_0@toc@ha 5181; PWR7-NEXT: addi 3, 3, .LCPI49_0@toc@l 5182; PWR7-NEXT: vspltisw 4, 2 5183; PWR7-NEXT: lxvw4x 0, 0, 3 5184; PWR7-NEXT: addis 3, 2, .LCPI49_1@toc@ha 5185; PWR7-NEXT: vspltisw 5, -16 5186; PWR7-NEXT: vsrw 3, 2, 3 5187; PWR7-NEXT: addi 3, 3, .LCPI49_1@toc@l 5188; PWR7-NEXT: vspltisb 0, 15 5189; PWR7-NEXT: xxland 35, 35, 0 5190; PWR7-NEXT: lxvw4x 0, 0, 3 5191; PWR7-NEXT: vsubuwm 2, 2, 3 5192; PWR7-NEXT: vsrw 3, 2, 4 5193; PWR7-NEXT: xxland 34, 34, 0 5194; PWR7-NEXT: vspltisw 4, 4 5195; PWR7-NEXT: xxland 35, 35, 0 5196; PWR7-NEXT: vadduwm 2, 2, 3 5197; PWR7-NEXT: vsrw 3, 2, 4 5198; PWR7-NEXT: vspltisb 4, 1 5199; PWR7-NEXT: vrlw 1, 4, 5 5200; PWR7-NEXT: vadduwm 2, 2, 3 5201; PWR7-NEXT: xxlxor 35, 35, 35 5202; PWR7-NEXT: xxland 34, 34, 32 5203; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 5204; PWR7-NEXT: vmulouh 2, 2, 4 5205; PWR7-NEXT: vspltisw 4, 12 5206; PWR7-NEXT: vslw 3, 3, 5 5207; PWR7-NEXT: vadduwm 2, 2, 3 5208; PWR7-NEXT: vadduwm 3, 4, 4 5209; PWR7-NEXT: vsrw 2, 2, 3 5210; PWR7-NEXT: vspltisw 3, 6 5211; PWR7-NEXT: vcmpgtuw 2, 3, 2 5212; PWR7-NEXT: blr 5213; 5214; PWR8-LABEL: ult_6_v4i32: 5215; PWR8: # %bb.0: 5216; PWR8-NEXT: vspltisw 3, 6 5217; PWR8-NEXT: vpopcntw 2, 2 5218; PWR8-NEXT: vcmpgtuw 2, 3, 2 5219; PWR8-NEXT: blr 5220; 5221; PWR9-LABEL: ult_6_v4i32: 5222; PWR9: # %bb.0: 5223; PWR9-NEXT: vpopcntw 2, 2 5224; PWR9-NEXT: vspltisw 3, 6 5225; PWR9-NEXT: vcmpgtuw 2, 3, 2 5226; PWR9-NEXT: blr 5227 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 5228 %3 = icmp ult <4 x i32> %2, <i32 6, i32 6, i32 6, i32 6> 5229 %4 = sext <4 x i1> %3 to <4 x i32> 5230 ret <4 x i32> %4 5231} 5232 5233define <4 x i32> @ugt_6_v4i32(<4 x i32> %0) { 5234; PWR5-LABEL: ugt_6_v4i32: 5235; PWR5: # %bb.0: 5236; PWR5-NEXT: addis 3, 2, .LCPI50_0@toc@ha 5237; PWR5-NEXT: vspltisw 4, 1 5238; PWR5-NEXT: vxor 3, 3, 3 5239; PWR5-NEXT: addi 3, 3, .LCPI50_0@toc@l 5240; PWR5-NEXT: lvx 5, 0, 3 5241; PWR5-NEXT: addis 3, 2, .LCPI50_1@toc@ha 5242; PWR5-NEXT: addi 3, 3, .LCPI50_1@toc@l 5243; PWR5-NEXT: vspltisw 0, 2 5244; PWR5-NEXT: vsrw 4, 2, 4 5245; PWR5-NEXT: vand 4, 4, 5 5246; PWR5-NEXT: lvx 5, 0, 3 5247; PWR5-NEXT: vsubuwm 2, 2, 4 5248; PWR5-NEXT: vand 4, 2, 5 5249; PWR5-NEXT: vsrw 2, 2, 0 5250; PWR5-NEXT: vand 2, 2, 5 5251; PWR5-NEXT: vspltisw 5, 4 5252; PWR5-NEXT: vadduwm 2, 4, 2 5253; PWR5-NEXT: vsrw 4, 2, 5 5254; PWR5-NEXT: vspltisb 5, 15 5255; PWR5-NEXT: vadduwm 2, 2, 4 5256; PWR5-NEXT: vspltisb 4, 1 5257; PWR5-NEXT: vand 2, 2, 5 5258; PWR5-NEXT: vspltisw 5, -16 5259; PWR5-NEXT: vrlw 0, 4, 5 5260; PWR5-NEXT: vmulouh 4, 2, 4 5261; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 5262; PWR5-NEXT: vspltisw 3, 12 5263; PWR5-NEXT: vadduwm 3, 3, 3 5264; PWR5-NEXT: vslw 2, 2, 5 5265; PWR5-NEXT: vadduwm 2, 4, 2 5266; PWR5-NEXT: vsrw 2, 2, 3 5267; PWR5-NEXT: vspltisw 3, 6 5268; PWR5-NEXT: vcmpgtuw 2, 2, 3 5269; PWR5-NEXT: blr 5270; 5271; PWR6-LABEL: ugt_6_v4i32: 5272; PWR6: # %bb.0: 5273; PWR6-NEXT: addis 3, 2, .LCPI50_0@toc@ha 5274; PWR6-NEXT: vspltisw 4, 1 5275; PWR6-NEXT: vxor 3, 3, 3 5276; PWR6-NEXT: addi 3, 3, .LCPI50_0@toc@l 5277; PWR6-NEXT: lvx 5, 0, 3 5278; PWR6-NEXT: addis 3, 2, .LCPI50_1@toc@ha 5279; PWR6-NEXT: addi 3, 3, .LCPI50_1@toc@l 5280; PWR6-NEXT: vspltisw 0, 2 5281; PWR6-NEXT: vsrw 4, 2, 4 5282; PWR6-NEXT: vand 4, 4, 5 5283; PWR6-NEXT: lvx 5, 0, 3 5284; PWR6-NEXT: vsubuwm 2, 2, 4 5285; PWR6-NEXT: vand 4, 2, 5 5286; PWR6-NEXT: vsrw 2, 2, 0 5287; PWR6-NEXT: vand 2, 2, 5 5288; PWR6-NEXT: vspltisw 5, 4 5289; PWR6-NEXT: vadduwm 2, 4, 2 5290; PWR6-NEXT: vsrw 4, 2, 5 5291; PWR6-NEXT: vspltisb 5, 15 5292; PWR6-NEXT: vadduwm 2, 2, 4 5293; PWR6-NEXT: vspltisb 4, 1 5294; PWR6-NEXT: vand 2, 2, 5 5295; PWR6-NEXT: vspltisw 5, -16 5296; PWR6-NEXT: vrlw 0, 4, 5 5297; PWR6-NEXT: vmulouh 4, 2, 4 5298; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 5299; PWR6-NEXT: vspltisw 3, 12 5300; PWR6-NEXT: vadduwm 3, 3, 3 5301; PWR6-NEXT: vslw 2, 2, 5 5302; PWR6-NEXT: vadduwm 2, 4, 2 5303; PWR6-NEXT: vsrw 2, 2, 3 5304; PWR6-NEXT: vspltisw 3, 6 5305; PWR6-NEXT: vcmpgtuw 2, 2, 3 5306; PWR6-NEXT: blr 5307; 5308; PWR7-LABEL: ugt_6_v4i32: 5309; PWR7: # %bb.0: 5310; PWR7-NEXT: vspltisw 3, 1 5311; PWR7-NEXT: addis 3, 2, .LCPI50_0@toc@ha 5312; PWR7-NEXT: addi 3, 3, .LCPI50_0@toc@l 5313; PWR7-NEXT: vspltisw 4, 2 5314; PWR7-NEXT: lxvw4x 0, 0, 3 5315; PWR7-NEXT: addis 3, 2, .LCPI50_1@toc@ha 5316; PWR7-NEXT: vspltisw 5, -16 5317; PWR7-NEXT: vsrw 3, 2, 3 5318; PWR7-NEXT: addi 3, 3, .LCPI50_1@toc@l 5319; PWR7-NEXT: vspltisb 0, 15 5320; PWR7-NEXT: xxland 35, 35, 0 5321; PWR7-NEXT: lxvw4x 0, 0, 3 5322; PWR7-NEXT: vsubuwm 2, 2, 3 5323; PWR7-NEXT: vsrw 3, 2, 4 5324; PWR7-NEXT: xxland 34, 34, 0 5325; PWR7-NEXT: vspltisw 4, 4 5326; PWR7-NEXT: xxland 35, 35, 0 5327; PWR7-NEXT: vadduwm 2, 2, 3 5328; PWR7-NEXT: vsrw 3, 2, 4 5329; PWR7-NEXT: vspltisb 4, 1 5330; PWR7-NEXT: vrlw 1, 4, 5 5331; PWR7-NEXT: vadduwm 2, 2, 3 5332; PWR7-NEXT: xxlxor 35, 35, 35 5333; PWR7-NEXT: xxland 34, 34, 32 5334; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 5335; PWR7-NEXT: vmulouh 2, 2, 4 5336; PWR7-NEXT: vspltisw 4, 12 5337; PWR7-NEXT: vslw 3, 3, 5 5338; PWR7-NEXT: vadduwm 2, 2, 3 5339; PWR7-NEXT: vadduwm 3, 4, 4 5340; PWR7-NEXT: vsrw 2, 2, 3 5341; PWR7-NEXT: vspltisw 3, 6 5342; PWR7-NEXT: vcmpgtuw 2, 2, 3 5343; PWR7-NEXT: blr 5344; 5345; PWR8-LABEL: ugt_6_v4i32: 5346; PWR8: # %bb.0: 5347; PWR8-NEXT: vspltisw 3, 6 5348; PWR8-NEXT: vpopcntw 2, 2 5349; PWR8-NEXT: vcmpgtuw 2, 2, 3 5350; PWR8-NEXT: blr 5351; 5352; PWR9-LABEL: ugt_6_v4i32: 5353; PWR9: # %bb.0: 5354; PWR9-NEXT: vpopcntw 2, 2 5355; PWR9-NEXT: vspltisw 3, 6 5356; PWR9-NEXT: vcmpgtuw 2, 2, 3 5357; PWR9-NEXT: blr 5358 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 5359 %3 = icmp ugt <4 x i32> %2, <i32 6, i32 6, i32 6, i32 6> 5360 %4 = sext <4 x i1> %3 to <4 x i32> 5361 ret <4 x i32> %4 5362} 5363 5364define <4 x i32> @ult_7_v4i32(<4 x i32> %0) { 5365; PWR5-LABEL: ult_7_v4i32: 5366; PWR5: # %bb.0: 5367; PWR5-NEXT: addis 3, 2, .LCPI51_0@toc@ha 5368; PWR5-NEXT: vspltisw 4, 1 5369; PWR5-NEXT: vxor 3, 3, 3 5370; PWR5-NEXT: addi 3, 3, .LCPI51_0@toc@l 5371; PWR5-NEXT: lvx 5, 0, 3 5372; PWR5-NEXT: addis 3, 2, .LCPI51_1@toc@ha 5373; PWR5-NEXT: addi 3, 3, .LCPI51_1@toc@l 5374; PWR5-NEXT: vspltisw 0, 2 5375; PWR5-NEXT: vsrw 4, 2, 4 5376; PWR5-NEXT: vand 4, 4, 5 5377; PWR5-NEXT: lvx 5, 0, 3 5378; PWR5-NEXT: vsubuwm 2, 2, 4 5379; PWR5-NEXT: vand 4, 2, 5 5380; PWR5-NEXT: vsrw 2, 2, 0 5381; PWR5-NEXT: vand 2, 2, 5 5382; PWR5-NEXT: vspltisw 5, 4 5383; PWR5-NEXT: vadduwm 2, 4, 2 5384; PWR5-NEXT: vsrw 4, 2, 5 5385; PWR5-NEXT: vspltisb 5, 15 5386; PWR5-NEXT: vadduwm 2, 2, 4 5387; PWR5-NEXT: vspltisb 4, 1 5388; PWR5-NEXT: vand 2, 2, 5 5389; PWR5-NEXT: vspltisw 5, -16 5390; PWR5-NEXT: vrlw 0, 4, 5 5391; PWR5-NEXT: vmulouh 4, 2, 4 5392; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 5393; PWR5-NEXT: vspltisw 3, 12 5394; PWR5-NEXT: vadduwm 3, 3, 3 5395; PWR5-NEXT: vslw 2, 2, 5 5396; PWR5-NEXT: vadduwm 2, 4, 2 5397; PWR5-NEXT: vsrw 2, 2, 3 5398; PWR5-NEXT: vspltisw 3, 7 5399; PWR5-NEXT: vcmpgtuw 2, 3, 2 5400; PWR5-NEXT: blr 5401; 5402; PWR6-LABEL: ult_7_v4i32: 5403; PWR6: # %bb.0: 5404; PWR6-NEXT: addis 3, 2, .LCPI51_0@toc@ha 5405; PWR6-NEXT: vspltisw 4, 1 5406; PWR6-NEXT: vxor 3, 3, 3 5407; PWR6-NEXT: addi 3, 3, .LCPI51_0@toc@l 5408; PWR6-NEXT: lvx 5, 0, 3 5409; PWR6-NEXT: addis 3, 2, .LCPI51_1@toc@ha 5410; PWR6-NEXT: addi 3, 3, .LCPI51_1@toc@l 5411; PWR6-NEXT: vspltisw 0, 2 5412; PWR6-NEXT: vsrw 4, 2, 4 5413; PWR6-NEXT: vand 4, 4, 5 5414; PWR6-NEXT: lvx 5, 0, 3 5415; PWR6-NEXT: vsubuwm 2, 2, 4 5416; PWR6-NEXT: vand 4, 2, 5 5417; PWR6-NEXT: vsrw 2, 2, 0 5418; PWR6-NEXT: vand 2, 2, 5 5419; PWR6-NEXT: vspltisw 5, 4 5420; PWR6-NEXT: vadduwm 2, 4, 2 5421; PWR6-NEXT: vsrw 4, 2, 5 5422; PWR6-NEXT: vspltisb 5, 15 5423; PWR6-NEXT: vadduwm 2, 2, 4 5424; PWR6-NEXT: vspltisb 4, 1 5425; PWR6-NEXT: vand 2, 2, 5 5426; PWR6-NEXT: vspltisw 5, -16 5427; PWR6-NEXT: vrlw 0, 4, 5 5428; PWR6-NEXT: vmulouh 4, 2, 4 5429; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 5430; PWR6-NEXT: vspltisw 3, 12 5431; PWR6-NEXT: vadduwm 3, 3, 3 5432; PWR6-NEXT: vslw 2, 2, 5 5433; PWR6-NEXT: vadduwm 2, 4, 2 5434; PWR6-NEXT: vsrw 2, 2, 3 5435; PWR6-NEXT: vspltisw 3, 7 5436; PWR6-NEXT: vcmpgtuw 2, 3, 2 5437; PWR6-NEXT: blr 5438; 5439; PWR7-LABEL: ult_7_v4i32: 5440; PWR7: # %bb.0: 5441; PWR7-NEXT: vspltisw 3, 1 5442; PWR7-NEXT: addis 3, 2, .LCPI51_0@toc@ha 5443; PWR7-NEXT: addi 3, 3, .LCPI51_0@toc@l 5444; PWR7-NEXT: vspltisw 4, 2 5445; PWR7-NEXT: lxvw4x 0, 0, 3 5446; PWR7-NEXT: addis 3, 2, .LCPI51_1@toc@ha 5447; PWR7-NEXT: vspltisw 5, -16 5448; PWR7-NEXT: vsrw 3, 2, 3 5449; PWR7-NEXT: addi 3, 3, .LCPI51_1@toc@l 5450; PWR7-NEXT: vspltisb 0, 15 5451; PWR7-NEXT: xxland 35, 35, 0 5452; PWR7-NEXT: lxvw4x 0, 0, 3 5453; PWR7-NEXT: vsubuwm 2, 2, 3 5454; PWR7-NEXT: vsrw 3, 2, 4 5455; PWR7-NEXT: xxland 34, 34, 0 5456; PWR7-NEXT: vspltisw 4, 4 5457; PWR7-NEXT: xxland 35, 35, 0 5458; PWR7-NEXT: vadduwm 2, 2, 3 5459; PWR7-NEXT: vsrw 3, 2, 4 5460; PWR7-NEXT: vspltisb 4, 1 5461; PWR7-NEXT: vrlw 1, 4, 5 5462; PWR7-NEXT: vadduwm 2, 2, 3 5463; PWR7-NEXT: xxlxor 35, 35, 35 5464; PWR7-NEXT: xxland 34, 34, 32 5465; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 5466; PWR7-NEXT: vmulouh 2, 2, 4 5467; PWR7-NEXT: vspltisw 4, 12 5468; PWR7-NEXT: vslw 3, 3, 5 5469; PWR7-NEXT: vadduwm 2, 2, 3 5470; PWR7-NEXT: vadduwm 3, 4, 4 5471; PWR7-NEXT: vsrw 2, 2, 3 5472; PWR7-NEXT: vspltisw 3, 7 5473; PWR7-NEXT: vcmpgtuw 2, 3, 2 5474; PWR7-NEXT: blr 5475; 5476; PWR8-LABEL: ult_7_v4i32: 5477; PWR8: # %bb.0: 5478; PWR8-NEXT: vspltisw 3, 7 5479; PWR8-NEXT: vpopcntw 2, 2 5480; PWR8-NEXT: vcmpgtuw 2, 3, 2 5481; PWR8-NEXT: blr 5482; 5483; PWR9-LABEL: ult_7_v4i32: 5484; PWR9: # %bb.0: 5485; PWR9-NEXT: vpopcntw 2, 2 5486; PWR9-NEXT: vspltisw 3, 7 5487; PWR9-NEXT: vcmpgtuw 2, 3, 2 5488; PWR9-NEXT: blr 5489 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 5490 %3 = icmp ult <4 x i32> %2, <i32 7, i32 7, i32 7, i32 7> 5491 %4 = sext <4 x i1> %3 to <4 x i32> 5492 ret <4 x i32> %4 5493} 5494 5495define <4 x i32> @ugt_7_v4i32(<4 x i32> %0) { 5496; PWR5-LABEL: ugt_7_v4i32: 5497; PWR5: # %bb.0: 5498; PWR5-NEXT: addis 3, 2, .LCPI52_0@toc@ha 5499; PWR5-NEXT: vspltisw 4, 1 5500; PWR5-NEXT: vxor 3, 3, 3 5501; PWR5-NEXT: addi 3, 3, .LCPI52_0@toc@l 5502; PWR5-NEXT: lvx 5, 0, 3 5503; PWR5-NEXT: addis 3, 2, .LCPI52_1@toc@ha 5504; PWR5-NEXT: addi 3, 3, .LCPI52_1@toc@l 5505; PWR5-NEXT: vspltisw 0, 2 5506; PWR5-NEXT: vsrw 4, 2, 4 5507; PWR5-NEXT: vand 4, 4, 5 5508; PWR5-NEXT: lvx 5, 0, 3 5509; PWR5-NEXT: vsubuwm 2, 2, 4 5510; PWR5-NEXT: vand 4, 2, 5 5511; PWR5-NEXT: vsrw 2, 2, 0 5512; PWR5-NEXT: vand 2, 2, 5 5513; PWR5-NEXT: vspltisw 5, 4 5514; PWR5-NEXT: vadduwm 2, 4, 2 5515; PWR5-NEXT: vsrw 4, 2, 5 5516; PWR5-NEXT: vspltisb 5, 15 5517; PWR5-NEXT: vadduwm 2, 2, 4 5518; PWR5-NEXT: vspltisb 4, 1 5519; PWR5-NEXT: vand 2, 2, 5 5520; PWR5-NEXT: vspltisw 5, -16 5521; PWR5-NEXT: vrlw 0, 4, 5 5522; PWR5-NEXT: vmulouh 4, 2, 4 5523; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 5524; PWR5-NEXT: vspltisw 3, 12 5525; PWR5-NEXT: vadduwm 3, 3, 3 5526; PWR5-NEXT: vslw 2, 2, 5 5527; PWR5-NEXT: vadduwm 2, 4, 2 5528; PWR5-NEXT: vsrw 2, 2, 3 5529; PWR5-NEXT: vspltisw 3, 7 5530; PWR5-NEXT: vcmpgtuw 2, 2, 3 5531; PWR5-NEXT: blr 5532; 5533; PWR6-LABEL: ugt_7_v4i32: 5534; PWR6: # %bb.0: 5535; PWR6-NEXT: addis 3, 2, .LCPI52_0@toc@ha 5536; PWR6-NEXT: vspltisw 4, 1 5537; PWR6-NEXT: vxor 3, 3, 3 5538; PWR6-NEXT: addi 3, 3, .LCPI52_0@toc@l 5539; PWR6-NEXT: lvx 5, 0, 3 5540; PWR6-NEXT: addis 3, 2, .LCPI52_1@toc@ha 5541; PWR6-NEXT: addi 3, 3, .LCPI52_1@toc@l 5542; PWR6-NEXT: vspltisw 0, 2 5543; PWR6-NEXT: vsrw 4, 2, 4 5544; PWR6-NEXT: vand 4, 4, 5 5545; PWR6-NEXT: lvx 5, 0, 3 5546; PWR6-NEXT: vsubuwm 2, 2, 4 5547; PWR6-NEXT: vand 4, 2, 5 5548; PWR6-NEXT: vsrw 2, 2, 0 5549; PWR6-NEXT: vand 2, 2, 5 5550; PWR6-NEXT: vspltisw 5, 4 5551; PWR6-NEXT: vadduwm 2, 4, 2 5552; PWR6-NEXT: vsrw 4, 2, 5 5553; PWR6-NEXT: vspltisb 5, 15 5554; PWR6-NEXT: vadduwm 2, 2, 4 5555; PWR6-NEXT: vspltisb 4, 1 5556; PWR6-NEXT: vand 2, 2, 5 5557; PWR6-NEXT: vspltisw 5, -16 5558; PWR6-NEXT: vrlw 0, 4, 5 5559; PWR6-NEXT: vmulouh 4, 2, 4 5560; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 5561; PWR6-NEXT: vspltisw 3, 12 5562; PWR6-NEXT: vadduwm 3, 3, 3 5563; PWR6-NEXT: vslw 2, 2, 5 5564; PWR6-NEXT: vadduwm 2, 4, 2 5565; PWR6-NEXT: vsrw 2, 2, 3 5566; PWR6-NEXT: vspltisw 3, 7 5567; PWR6-NEXT: vcmpgtuw 2, 2, 3 5568; PWR6-NEXT: blr 5569; 5570; PWR7-LABEL: ugt_7_v4i32: 5571; PWR7: # %bb.0: 5572; PWR7-NEXT: vspltisw 3, 1 5573; PWR7-NEXT: addis 3, 2, .LCPI52_0@toc@ha 5574; PWR7-NEXT: addi 3, 3, .LCPI52_0@toc@l 5575; PWR7-NEXT: vspltisw 4, 2 5576; PWR7-NEXT: lxvw4x 0, 0, 3 5577; PWR7-NEXT: addis 3, 2, .LCPI52_1@toc@ha 5578; PWR7-NEXT: vspltisw 5, -16 5579; PWR7-NEXT: vsrw 3, 2, 3 5580; PWR7-NEXT: addi 3, 3, .LCPI52_1@toc@l 5581; PWR7-NEXT: vspltisb 0, 15 5582; PWR7-NEXT: xxland 35, 35, 0 5583; PWR7-NEXT: lxvw4x 0, 0, 3 5584; PWR7-NEXT: vsubuwm 2, 2, 3 5585; PWR7-NEXT: vsrw 3, 2, 4 5586; PWR7-NEXT: xxland 34, 34, 0 5587; PWR7-NEXT: vspltisw 4, 4 5588; PWR7-NEXT: xxland 35, 35, 0 5589; PWR7-NEXT: vadduwm 2, 2, 3 5590; PWR7-NEXT: vsrw 3, 2, 4 5591; PWR7-NEXT: vspltisb 4, 1 5592; PWR7-NEXT: vrlw 1, 4, 5 5593; PWR7-NEXT: vadduwm 2, 2, 3 5594; PWR7-NEXT: xxlxor 35, 35, 35 5595; PWR7-NEXT: xxland 34, 34, 32 5596; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 5597; PWR7-NEXT: vmulouh 2, 2, 4 5598; PWR7-NEXT: vspltisw 4, 12 5599; PWR7-NEXT: vslw 3, 3, 5 5600; PWR7-NEXT: vadduwm 2, 2, 3 5601; PWR7-NEXT: vadduwm 3, 4, 4 5602; PWR7-NEXT: vsrw 2, 2, 3 5603; PWR7-NEXT: vspltisw 3, 7 5604; PWR7-NEXT: vcmpgtuw 2, 2, 3 5605; PWR7-NEXT: blr 5606; 5607; PWR8-LABEL: ugt_7_v4i32: 5608; PWR8: # %bb.0: 5609; PWR8-NEXT: vspltisw 3, 7 5610; PWR8-NEXT: vpopcntw 2, 2 5611; PWR8-NEXT: vcmpgtuw 2, 2, 3 5612; PWR8-NEXT: blr 5613; 5614; PWR9-LABEL: ugt_7_v4i32: 5615; PWR9: # %bb.0: 5616; PWR9-NEXT: vpopcntw 2, 2 5617; PWR9-NEXT: vspltisw 3, 7 5618; PWR9-NEXT: vcmpgtuw 2, 2, 3 5619; PWR9-NEXT: blr 5620 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 5621 %3 = icmp ugt <4 x i32> %2, <i32 7, i32 7, i32 7, i32 7> 5622 %4 = sext <4 x i1> %3 to <4 x i32> 5623 ret <4 x i32> %4 5624} 5625 5626define <4 x i32> @ult_8_v4i32(<4 x i32> %0) { 5627; PWR5-LABEL: ult_8_v4i32: 5628; PWR5: # %bb.0: 5629; PWR5-NEXT: addis 3, 2, .LCPI53_0@toc@ha 5630; PWR5-NEXT: vspltisw 4, 1 5631; PWR5-NEXT: vxor 3, 3, 3 5632; PWR5-NEXT: addi 3, 3, .LCPI53_0@toc@l 5633; PWR5-NEXT: lvx 5, 0, 3 5634; PWR5-NEXT: addis 3, 2, .LCPI53_1@toc@ha 5635; PWR5-NEXT: addi 3, 3, .LCPI53_1@toc@l 5636; PWR5-NEXT: vspltisw 0, 2 5637; PWR5-NEXT: vsrw 4, 2, 4 5638; PWR5-NEXT: vand 4, 4, 5 5639; PWR5-NEXT: lvx 5, 0, 3 5640; PWR5-NEXT: vsubuwm 2, 2, 4 5641; PWR5-NEXT: vand 4, 2, 5 5642; PWR5-NEXT: vsrw 2, 2, 0 5643; PWR5-NEXT: vand 2, 2, 5 5644; PWR5-NEXT: vspltisw 5, 4 5645; PWR5-NEXT: vadduwm 2, 4, 2 5646; PWR5-NEXT: vsrw 4, 2, 5 5647; PWR5-NEXT: vspltisb 5, 15 5648; PWR5-NEXT: vadduwm 2, 2, 4 5649; PWR5-NEXT: vspltisb 4, 1 5650; PWR5-NEXT: vand 2, 2, 5 5651; PWR5-NEXT: vspltisw 5, -16 5652; PWR5-NEXT: vrlw 0, 4, 5 5653; PWR5-NEXT: vmulouh 4, 2, 4 5654; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 5655; PWR5-NEXT: vspltisw 3, 12 5656; PWR5-NEXT: vadduwm 3, 3, 3 5657; PWR5-NEXT: vslw 2, 2, 5 5658; PWR5-NEXT: vadduwm 2, 4, 2 5659; PWR5-NEXT: vsrw 2, 2, 3 5660; PWR5-NEXT: vspltisw 3, 8 5661; PWR5-NEXT: vcmpgtuw 2, 3, 2 5662; PWR5-NEXT: blr 5663; 5664; PWR6-LABEL: ult_8_v4i32: 5665; PWR6: # %bb.0: 5666; PWR6-NEXT: addis 3, 2, .LCPI53_0@toc@ha 5667; PWR6-NEXT: vspltisw 4, 1 5668; PWR6-NEXT: vxor 3, 3, 3 5669; PWR6-NEXT: addi 3, 3, .LCPI53_0@toc@l 5670; PWR6-NEXT: lvx 5, 0, 3 5671; PWR6-NEXT: addis 3, 2, .LCPI53_1@toc@ha 5672; PWR6-NEXT: addi 3, 3, .LCPI53_1@toc@l 5673; PWR6-NEXT: vspltisw 0, 2 5674; PWR6-NEXT: vsrw 4, 2, 4 5675; PWR6-NEXT: vand 4, 4, 5 5676; PWR6-NEXT: lvx 5, 0, 3 5677; PWR6-NEXT: vsubuwm 2, 2, 4 5678; PWR6-NEXT: vand 4, 2, 5 5679; PWR6-NEXT: vsrw 2, 2, 0 5680; PWR6-NEXT: vand 2, 2, 5 5681; PWR6-NEXT: vspltisw 5, 4 5682; PWR6-NEXT: vadduwm 2, 4, 2 5683; PWR6-NEXT: vsrw 4, 2, 5 5684; PWR6-NEXT: vspltisb 5, 15 5685; PWR6-NEXT: vadduwm 2, 2, 4 5686; PWR6-NEXT: vspltisb 4, 1 5687; PWR6-NEXT: vand 2, 2, 5 5688; PWR6-NEXT: vspltisw 5, -16 5689; PWR6-NEXT: vrlw 0, 4, 5 5690; PWR6-NEXT: vmulouh 4, 2, 4 5691; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 5692; PWR6-NEXT: vspltisw 3, 12 5693; PWR6-NEXT: vadduwm 3, 3, 3 5694; PWR6-NEXT: vslw 2, 2, 5 5695; PWR6-NEXT: vadduwm 2, 4, 2 5696; PWR6-NEXT: vsrw 2, 2, 3 5697; PWR6-NEXT: vspltisw 3, 8 5698; PWR6-NEXT: vcmpgtuw 2, 3, 2 5699; PWR6-NEXT: blr 5700; 5701; PWR7-LABEL: ult_8_v4i32: 5702; PWR7: # %bb.0: 5703; PWR7-NEXT: vspltisw 3, 1 5704; PWR7-NEXT: addis 3, 2, .LCPI53_0@toc@ha 5705; PWR7-NEXT: addi 3, 3, .LCPI53_0@toc@l 5706; PWR7-NEXT: vspltisw 4, 2 5707; PWR7-NEXT: lxvw4x 0, 0, 3 5708; PWR7-NEXT: addis 3, 2, .LCPI53_1@toc@ha 5709; PWR7-NEXT: vspltisw 5, -16 5710; PWR7-NEXT: vsrw 3, 2, 3 5711; PWR7-NEXT: addi 3, 3, .LCPI53_1@toc@l 5712; PWR7-NEXT: vspltisb 0, 15 5713; PWR7-NEXT: xxland 35, 35, 0 5714; PWR7-NEXT: lxvw4x 0, 0, 3 5715; PWR7-NEXT: vsubuwm 2, 2, 3 5716; PWR7-NEXT: vsrw 3, 2, 4 5717; PWR7-NEXT: xxland 34, 34, 0 5718; PWR7-NEXT: vspltisw 4, 4 5719; PWR7-NEXT: xxland 35, 35, 0 5720; PWR7-NEXT: vadduwm 2, 2, 3 5721; PWR7-NEXT: vsrw 3, 2, 4 5722; PWR7-NEXT: vspltisb 4, 1 5723; PWR7-NEXT: vrlw 1, 4, 5 5724; PWR7-NEXT: vadduwm 2, 2, 3 5725; PWR7-NEXT: xxlxor 35, 35, 35 5726; PWR7-NEXT: xxland 34, 34, 32 5727; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 5728; PWR7-NEXT: vmulouh 2, 2, 4 5729; PWR7-NEXT: vspltisw 4, 12 5730; PWR7-NEXT: vslw 3, 3, 5 5731; PWR7-NEXT: vadduwm 2, 2, 3 5732; PWR7-NEXT: vadduwm 3, 4, 4 5733; PWR7-NEXT: vsrw 2, 2, 3 5734; PWR7-NEXT: vspltisw 3, 8 5735; PWR7-NEXT: vcmpgtuw 2, 3, 2 5736; PWR7-NEXT: blr 5737; 5738; PWR8-LABEL: ult_8_v4i32: 5739; PWR8: # %bb.0: 5740; PWR8-NEXT: vspltisw 3, 8 5741; PWR8-NEXT: vpopcntw 2, 2 5742; PWR8-NEXT: vcmpgtuw 2, 3, 2 5743; PWR8-NEXT: blr 5744; 5745; PWR9-LABEL: ult_8_v4i32: 5746; PWR9: # %bb.0: 5747; PWR9-NEXT: vpopcntw 2, 2 5748; PWR9-NEXT: vspltisw 3, 8 5749; PWR9-NEXT: vcmpgtuw 2, 3, 2 5750; PWR9-NEXT: blr 5751 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 5752 %3 = icmp ult <4 x i32> %2, <i32 8, i32 8, i32 8, i32 8> 5753 %4 = sext <4 x i1> %3 to <4 x i32> 5754 ret <4 x i32> %4 5755} 5756 5757define <4 x i32> @ugt_8_v4i32(<4 x i32> %0) { 5758; PWR5-LABEL: ugt_8_v4i32: 5759; PWR5: # %bb.0: 5760; PWR5-NEXT: addis 3, 2, .LCPI54_0@toc@ha 5761; PWR5-NEXT: vspltisw 4, 1 5762; PWR5-NEXT: vxor 3, 3, 3 5763; PWR5-NEXT: addi 3, 3, .LCPI54_0@toc@l 5764; PWR5-NEXT: lvx 5, 0, 3 5765; PWR5-NEXT: addis 3, 2, .LCPI54_1@toc@ha 5766; PWR5-NEXT: addi 3, 3, .LCPI54_1@toc@l 5767; PWR5-NEXT: vspltisw 0, 2 5768; PWR5-NEXT: vsrw 4, 2, 4 5769; PWR5-NEXT: vand 4, 4, 5 5770; PWR5-NEXT: lvx 5, 0, 3 5771; PWR5-NEXT: vsubuwm 2, 2, 4 5772; PWR5-NEXT: vand 4, 2, 5 5773; PWR5-NEXT: vsrw 2, 2, 0 5774; PWR5-NEXT: vand 2, 2, 5 5775; PWR5-NEXT: vspltisw 5, 4 5776; PWR5-NEXT: vadduwm 2, 4, 2 5777; PWR5-NEXT: vsrw 4, 2, 5 5778; PWR5-NEXT: vspltisb 5, 15 5779; PWR5-NEXT: vadduwm 2, 2, 4 5780; PWR5-NEXT: vspltisb 4, 1 5781; PWR5-NEXT: vand 2, 2, 5 5782; PWR5-NEXT: vspltisw 5, -16 5783; PWR5-NEXT: vrlw 0, 4, 5 5784; PWR5-NEXT: vmulouh 4, 2, 4 5785; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 5786; PWR5-NEXT: vspltisw 3, 12 5787; PWR5-NEXT: vadduwm 3, 3, 3 5788; PWR5-NEXT: vslw 2, 2, 5 5789; PWR5-NEXT: vadduwm 2, 4, 2 5790; PWR5-NEXT: vsrw 2, 2, 3 5791; PWR5-NEXT: vspltisw 3, 8 5792; PWR5-NEXT: vcmpgtuw 2, 2, 3 5793; PWR5-NEXT: blr 5794; 5795; PWR6-LABEL: ugt_8_v4i32: 5796; PWR6: # %bb.0: 5797; PWR6-NEXT: addis 3, 2, .LCPI54_0@toc@ha 5798; PWR6-NEXT: vspltisw 4, 1 5799; PWR6-NEXT: vxor 3, 3, 3 5800; PWR6-NEXT: addi 3, 3, .LCPI54_0@toc@l 5801; PWR6-NEXT: lvx 5, 0, 3 5802; PWR6-NEXT: addis 3, 2, .LCPI54_1@toc@ha 5803; PWR6-NEXT: addi 3, 3, .LCPI54_1@toc@l 5804; PWR6-NEXT: vspltisw 0, 2 5805; PWR6-NEXT: vsrw 4, 2, 4 5806; PWR6-NEXT: vand 4, 4, 5 5807; PWR6-NEXT: lvx 5, 0, 3 5808; PWR6-NEXT: vsubuwm 2, 2, 4 5809; PWR6-NEXT: vand 4, 2, 5 5810; PWR6-NEXT: vsrw 2, 2, 0 5811; PWR6-NEXT: vand 2, 2, 5 5812; PWR6-NEXT: vspltisw 5, 4 5813; PWR6-NEXT: vadduwm 2, 4, 2 5814; PWR6-NEXT: vsrw 4, 2, 5 5815; PWR6-NEXT: vspltisb 5, 15 5816; PWR6-NEXT: vadduwm 2, 2, 4 5817; PWR6-NEXT: vspltisb 4, 1 5818; PWR6-NEXT: vand 2, 2, 5 5819; PWR6-NEXT: vspltisw 5, -16 5820; PWR6-NEXT: vrlw 0, 4, 5 5821; PWR6-NEXT: vmulouh 4, 2, 4 5822; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 5823; PWR6-NEXT: vspltisw 3, 12 5824; PWR6-NEXT: vadduwm 3, 3, 3 5825; PWR6-NEXT: vslw 2, 2, 5 5826; PWR6-NEXT: vadduwm 2, 4, 2 5827; PWR6-NEXT: vsrw 2, 2, 3 5828; PWR6-NEXT: vspltisw 3, 8 5829; PWR6-NEXT: vcmpgtuw 2, 2, 3 5830; PWR6-NEXT: blr 5831; 5832; PWR7-LABEL: ugt_8_v4i32: 5833; PWR7: # %bb.0: 5834; PWR7-NEXT: vspltisw 3, 1 5835; PWR7-NEXT: addis 3, 2, .LCPI54_0@toc@ha 5836; PWR7-NEXT: addi 3, 3, .LCPI54_0@toc@l 5837; PWR7-NEXT: vspltisw 4, 2 5838; PWR7-NEXT: lxvw4x 0, 0, 3 5839; PWR7-NEXT: addis 3, 2, .LCPI54_1@toc@ha 5840; PWR7-NEXT: vspltisw 5, -16 5841; PWR7-NEXT: vsrw 3, 2, 3 5842; PWR7-NEXT: addi 3, 3, .LCPI54_1@toc@l 5843; PWR7-NEXT: vspltisb 0, 15 5844; PWR7-NEXT: xxland 35, 35, 0 5845; PWR7-NEXT: lxvw4x 0, 0, 3 5846; PWR7-NEXT: vsubuwm 2, 2, 3 5847; PWR7-NEXT: vsrw 3, 2, 4 5848; PWR7-NEXT: xxland 34, 34, 0 5849; PWR7-NEXT: vspltisw 4, 4 5850; PWR7-NEXT: xxland 35, 35, 0 5851; PWR7-NEXT: vadduwm 2, 2, 3 5852; PWR7-NEXT: vsrw 3, 2, 4 5853; PWR7-NEXT: vspltisb 4, 1 5854; PWR7-NEXT: vrlw 1, 4, 5 5855; PWR7-NEXT: vadduwm 2, 2, 3 5856; PWR7-NEXT: xxlxor 35, 35, 35 5857; PWR7-NEXT: xxland 34, 34, 32 5858; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 5859; PWR7-NEXT: vmulouh 2, 2, 4 5860; PWR7-NEXT: vspltisw 4, 12 5861; PWR7-NEXT: vslw 3, 3, 5 5862; PWR7-NEXT: vadduwm 2, 2, 3 5863; PWR7-NEXT: vadduwm 3, 4, 4 5864; PWR7-NEXT: vsrw 2, 2, 3 5865; PWR7-NEXT: vspltisw 3, 8 5866; PWR7-NEXT: vcmpgtuw 2, 2, 3 5867; PWR7-NEXT: blr 5868; 5869; PWR8-LABEL: ugt_8_v4i32: 5870; PWR8: # %bb.0: 5871; PWR8-NEXT: vspltisw 3, 8 5872; PWR8-NEXT: vpopcntw 2, 2 5873; PWR8-NEXT: vcmpgtuw 2, 2, 3 5874; PWR8-NEXT: blr 5875; 5876; PWR9-LABEL: ugt_8_v4i32: 5877; PWR9: # %bb.0: 5878; PWR9-NEXT: vpopcntw 2, 2 5879; PWR9-NEXT: vspltisw 3, 8 5880; PWR9-NEXT: vcmpgtuw 2, 2, 3 5881; PWR9-NEXT: blr 5882 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 5883 %3 = icmp ugt <4 x i32> %2, <i32 8, i32 8, i32 8, i32 8> 5884 %4 = sext <4 x i1> %3 to <4 x i32> 5885 ret <4 x i32> %4 5886} 5887 5888define <4 x i32> @ult_9_v4i32(<4 x i32> %0) { 5889; PWR5-LABEL: ult_9_v4i32: 5890; PWR5: # %bb.0: 5891; PWR5-NEXT: addis 3, 2, .LCPI55_0@toc@ha 5892; PWR5-NEXT: vspltisw 4, 1 5893; PWR5-NEXT: vxor 3, 3, 3 5894; PWR5-NEXT: addi 3, 3, .LCPI55_0@toc@l 5895; PWR5-NEXT: lvx 5, 0, 3 5896; PWR5-NEXT: addis 3, 2, .LCPI55_1@toc@ha 5897; PWR5-NEXT: addi 3, 3, .LCPI55_1@toc@l 5898; PWR5-NEXT: vspltisw 0, 2 5899; PWR5-NEXT: vsrw 4, 2, 4 5900; PWR5-NEXT: vand 4, 4, 5 5901; PWR5-NEXT: lvx 5, 0, 3 5902; PWR5-NEXT: vsubuwm 2, 2, 4 5903; PWR5-NEXT: vand 4, 2, 5 5904; PWR5-NEXT: vsrw 2, 2, 0 5905; PWR5-NEXT: vand 2, 2, 5 5906; PWR5-NEXT: vspltisw 5, 4 5907; PWR5-NEXT: vadduwm 2, 4, 2 5908; PWR5-NEXT: vsrw 4, 2, 5 5909; PWR5-NEXT: vspltisb 5, 15 5910; PWR5-NEXT: vadduwm 2, 2, 4 5911; PWR5-NEXT: vspltisb 4, 1 5912; PWR5-NEXT: vand 2, 2, 5 5913; PWR5-NEXT: vspltisw 5, -16 5914; PWR5-NEXT: vrlw 0, 4, 5 5915; PWR5-NEXT: vmulouh 4, 2, 4 5916; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 5917; PWR5-NEXT: vspltisw 3, 12 5918; PWR5-NEXT: vadduwm 3, 3, 3 5919; PWR5-NEXT: vslw 2, 2, 5 5920; PWR5-NEXT: vadduwm 2, 4, 2 5921; PWR5-NEXT: vsrw 2, 2, 3 5922; PWR5-NEXT: vspltisw 3, 9 5923; PWR5-NEXT: vcmpgtuw 2, 3, 2 5924; PWR5-NEXT: blr 5925; 5926; PWR6-LABEL: ult_9_v4i32: 5927; PWR6: # %bb.0: 5928; PWR6-NEXT: addis 3, 2, .LCPI55_0@toc@ha 5929; PWR6-NEXT: vspltisw 4, 1 5930; PWR6-NEXT: vxor 3, 3, 3 5931; PWR6-NEXT: addi 3, 3, .LCPI55_0@toc@l 5932; PWR6-NEXT: lvx 5, 0, 3 5933; PWR6-NEXT: addis 3, 2, .LCPI55_1@toc@ha 5934; PWR6-NEXT: addi 3, 3, .LCPI55_1@toc@l 5935; PWR6-NEXT: vspltisw 0, 2 5936; PWR6-NEXT: vsrw 4, 2, 4 5937; PWR6-NEXT: vand 4, 4, 5 5938; PWR6-NEXT: lvx 5, 0, 3 5939; PWR6-NEXT: vsubuwm 2, 2, 4 5940; PWR6-NEXT: vand 4, 2, 5 5941; PWR6-NEXT: vsrw 2, 2, 0 5942; PWR6-NEXT: vand 2, 2, 5 5943; PWR6-NEXT: vspltisw 5, 4 5944; PWR6-NEXT: vadduwm 2, 4, 2 5945; PWR6-NEXT: vsrw 4, 2, 5 5946; PWR6-NEXT: vspltisb 5, 15 5947; PWR6-NEXT: vadduwm 2, 2, 4 5948; PWR6-NEXT: vspltisb 4, 1 5949; PWR6-NEXT: vand 2, 2, 5 5950; PWR6-NEXT: vspltisw 5, -16 5951; PWR6-NEXT: vrlw 0, 4, 5 5952; PWR6-NEXT: vmulouh 4, 2, 4 5953; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 5954; PWR6-NEXT: vspltisw 3, 12 5955; PWR6-NEXT: vadduwm 3, 3, 3 5956; PWR6-NEXT: vslw 2, 2, 5 5957; PWR6-NEXT: vadduwm 2, 4, 2 5958; PWR6-NEXT: vsrw 2, 2, 3 5959; PWR6-NEXT: vspltisw 3, 9 5960; PWR6-NEXT: vcmpgtuw 2, 3, 2 5961; PWR6-NEXT: blr 5962; 5963; PWR7-LABEL: ult_9_v4i32: 5964; PWR7: # %bb.0: 5965; PWR7-NEXT: vspltisw 3, 1 5966; PWR7-NEXT: addis 3, 2, .LCPI55_0@toc@ha 5967; PWR7-NEXT: addi 3, 3, .LCPI55_0@toc@l 5968; PWR7-NEXT: vspltisw 4, 2 5969; PWR7-NEXT: lxvw4x 0, 0, 3 5970; PWR7-NEXT: addis 3, 2, .LCPI55_1@toc@ha 5971; PWR7-NEXT: vspltisw 5, -16 5972; PWR7-NEXT: vsrw 3, 2, 3 5973; PWR7-NEXT: addi 3, 3, .LCPI55_1@toc@l 5974; PWR7-NEXT: vspltisb 0, 15 5975; PWR7-NEXT: xxland 35, 35, 0 5976; PWR7-NEXT: lxvw4x 0, 0, 3 5977; PWR7-NEXT: vsubuwm 2, 2, 3 5978; PWR7-NEXT: vsrw 3, 2, 4 5979; PWR7-NEXT: xxland 34, 34, 0 5980; PWR7-NEXT: vspltisw 4, 4 5981; PWR7-NEXT: xxland 35, 35, 0 5982; PWR7-NEXT: vadduwm 2, 2, 3 5983; PWR7-NEXT: vsrw 3, 2, 4 5984; PWR7-NEXT: vspltisb 4, 1 5985; PWR7-NEXT: vrlw 1, 4, 5 5986; PWR7-NEXT: vadduwm 2, 2, 3 5987; PWR7-NEXT: xxlxor 35, 35, 35 5988; PWR7-NEXT: xxland 34, 34, 32 5989; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 5990; PWR7-NEXT: vmulouh 2, 2, 4 5991; PWR7-NEXT: vspltisw 4, 12 5992; PWR7-NEXT: vslw 3, 3, 5 5993; PWR7-NEXT: vadduwm 2, 2, 3 5994; PWR7-NEXT: vadduwm 3, 4, 4 5995; PWR7-NEXT: vsrw 2, 2, 3 5996; PWR7-NEXT: vspltisw 3, 9 5997; PWR7-NEXT: vcmpgtuw 2, 3, 2 5998; PWR7-NEXT: blr 5999; 6000; PWR8-LABEL: ult_9_v4i32: 6001; PWR8: # %bb.0: 6002; PWR8-NEXT: vspltisw 3, 9 6003; PWR8-NEXT: vpopcntw 2, 2 6004; PWR8-NEXT: vcmpgtuw 2, 3, 2 6005; PWR8-NEXT: blr 6006; 6007; PWR9-LABEL: ult_9_v4i32: 6008; PWR9: # %bb.0: 6009; PWR9-NEXT: vpopcntw 2, 2 6010; PWR9-NEXT: vspltisw 3, 9 6011; PWR9-NEXT: vcmpgtuw 2, 3, 2 6012; PWR9-NEXT: blr 6013 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 6014 %3 = icmp ult <4 x i32> %2, <i32 9, i32 9, i32 9, i32 9> 6015 %4 = sext <4 x i1> %3 to <4 x i32> 6016 ret <4 x i32> %4 6017} 6018 6019define <4 x i32> @ugt_9_v4i32(<4 x i32> %0) { 6020; PWR5-LABEL: ugt_9_v4i32: 6021; PWR5: # %bb.0: 6022; PWR5-NEXT: addis 3, 2, .LCPI56_0@toc@ha 6023; PWR5-NEXT: vspltisw 4, 1 6024; PWR5-NEXT: vxor 3, 3, 3 6025; PWR5-NEXT: addi 3, 3, .LCPI56_0@toc@l 6026; PWR5-NEXT: lvx 5, 0, 3 6027; PWR5-NEXT: addis 3, 2, .LCPI56_1@toc@ha 6028; PWR5-NEXT: addi 3, 3, .LCPI56_1@toc@l 6029; PWR5-NEXT: vspltisw 0, 2 6030; PWR5-NEXT: vsrw 4, 2, 4 6031; PWR5-NEXT: vand 4, 4, 5 6032; PWR5-NEXT: lvx 5, 0, 3 6033; PWR5-NEXT: vsubuwm 2, 2, 4 6034; PWR5-NEXT: vand 4, 2, 5 6035; PWR5-NEXT: vsrw 2, 2, 0 6036; PWR5-NEXT: vand 2, 2, 5 6037; PWR5-NEXT: vspltisw 5, 4 6038; PWR5-NEXT: vadduwm 2, 4, 2 6039; PWR5-NEXT: vsrw 4, 2, 5 6040; PWR5-NEXT: vspltisb 5, 15 6041; PWR5-NEXT: vadduwm 2, 2, 4 6042; PWR5-NEXT: vspltisb 4, 1 6043; PWR5-NEXT: vand 2, 2, 5 6044; PWR5-NEXT: vspltisw 5, -16 6045; PWR5-NEXT: vrlw 0, 4, 5 6046; PWR5-NEXT: vmulouh 4, 2, 4 6047; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 6048; PWR5-NEXT: vspltisw 3, 12 6049; PWR5-NEXT: vadduwm 3, 3, 3 6050; PWR5-NEXT: vslw 2, 2, 5 6051; PWR5-NEXT: vadduwm 2, 4, 2 6052; PWR5-NEXT: vsrw 2, 2, 3 6053; PWR5-NEXT: vspltisw 3, 9 6054; PWR5-NEXT: vcmpgtuw 2, 2, 3 6055; PWR5-NEXT: blr 6056; 6057; PWR6-LABEL: ugt_9_v4i32: 6058; PWR6: # %bb.0: 6059; PWR6-NEXT: addis 3, 2, .LCPI56_0@toc@ha 6060; PWR6-NEXT: vspltisw 4, 1 6061; PWR6-NEXT: vxor 3, 3, 3 6062; PWR6-NEXT: addi 3, 3, .LCPI56_0@toc@l 6063; PWR6-NEXT: lvx 5, 0, 3 6064; PWR6-NEXT: addis 3, 2, .LCPI56_1@toc@ha 6065; PWR6-NEXT: addi 3, 3, .LCPI56_1@toc@l 6066; PWR6-NEXT: vspltisw 0, 2 6067; PWR6-NEXT: vsrw 4, 2, 4 6068; PWR6-NEXT: vand 4, 4, 5 6069; PWR6-NEXT: lvx 5, 0, 3 6070; PWR6-NEXT: vsubuwm 2, 2, 4 6071; PWR6-NEXT: vand 4, 2, 5 6072; PWR6-NEXT: vsrw 2, 2, 0 6073; PWR6-NEXT: vand 2, 2, 5 6074; PWR6-NEXT: vspltisw 5, 4 6075; PWR6-NEXT: vadduwm 2, 4, 2 6076; PWR6-NEXT: vsrw 4, 2, 5 6077; PWR6-NEXT: vspltisb 5, 15 6078; PWR6-NEXT: vadduwm 2, 2, 4 6079; PWR6-NEXT: vspltisb 4, 1 6080; PWR6-NEXT: vand 2, 2, 5 6081; PWR6-NEXT: vspltisw 5, -16 6082; PWR6-NEXT: vrlw 0, 4, 5 6083; PWR6-NEXT: vmulouh 4, 2, 4 6084; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 6085; PWR6-NEXT: vspltisw 3, 12 6086; PWR6-NEXT: vadduwm 3, 3, 3 6087; PWR6-NEXT: vslw 2, 2, 5 6088; PWR6-NEXT: vadduwm 2, 4, 2 6089; PWR6-NEXT: vsrw 2, 2, 3 6090; PWR6-NEXT: vspltisw 3, 9 6091; PWR6-NEXT: vcmpgtuw 2, 2, 3 6092; PWR6-NEXT: blr 6093; 6094; PWR7-LABEL: ugt_9_v4i32: 6095; PWR7: # %bb.0: 6096; PWR7-NEXT: vspltisw 3, 1 6097; PWR7-NEXT: addis 3, 2, .LCPI56_0@toc@ha 6098; PWR7-NEXT: addi 3, 3, .LCPI56_0@toc@l 6099; PWR7-NEXT: vspltisw 4, 2 6100; PWR7-NEXT: lxvw4x 0, 0, 3 6101; PWR7-NEXT: addis 3, 2, .LCPI56_1@toc@ha 6102; PWR7-NEXT: vspltisw 5, -16 6103; PWR7-NEXT: vsrw 3, 2, 3 6104; PWR7-NEXT: addi 3, 3, .LCPI56_1@toc@l 6105; PWR7-NEXT: vspltisb 0, 15 6106; PWR7-NEXT: xxland 35, 35, 0 6107; PWR7-NEXT: lxvw4x 0, 0, 3 6108; PWR7-NEXT: vsubuwm 2, 2, 3 6109; PWR7-NEXT: vsrw 3, 2, 4 6110; PWR7-NEXT: xxland 34, 34, 0 6111; PWR7-NEXT: vspltisw 4, 4 6112; PWR7-NEXT: xxland 35, 35, 0 6113; PWR7-NEXT: vadduwm 2, 2, 3 6114; PWR7-NEXT: vsrw 3, 2, 4 6115; PWR7-NEXT: vspltisb 4, 1 6116; PWR7-NEXT: vrlw 1, 4, 5 6117; PWR7-NEXT: vadduwm 2, 2, 3 6118; PWR7-NEXT: xxlxor 35, 35, 35 6119; PWR7-NEXT: xxland 34, 34, 32 6120; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 6121; PWR7-NEXT: vmulouh 2, 2, 4 6122; PWR7-NEXT: vspltisw 4, 12 6123; PWR7-NEXT: vslw 3, 3, 5 6124; PWR7-NEXT: vadduwm 2, 2, 3 6125; PWR7-NEXT: vadduwm 3, 4, 4 6126; PWR7-NEXT: vsrw 2, 2, 3 6127; PWR7-NEXT: vspltisw 3, 9 6128; PWR7-NEXT: vcmpgtuw 2, 2, 3 6129; PWR7-NEXT: blr 6130; 6131; PWR8-LABEL: ugt_9_v4i32: 6132; PWR8: # %bb.0: 6133; PWR8-NEXT: vspltisw 3, 9 6134; PWR8-NEXT: vpopcntw 2, 2 6135; PWR8-NEXT: vcmpgtuw 2, 2, 3 6136; PWR8-NEXT: blr 6137; 6138; PWR9-LABEL: ugt_9_v4i32: 6139; PWR9: # %bb.0: 6140; PWR9-NEXT: vpopcntw 2, 2 6141; PWR9-NEXT: vspltisw 3, 9 6142; PWR9-NEXT: vcmpgtuw 2, 2, 3 6143; PWR9-NEXT: blr 6144 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 6145 %3 = icmp ugt <4 x i32> %2, <i32 9, i32 9, i32 9, i32 9> 6146 %4 = sext <4 x i1> %3 to <4 x i32> 6147 ret <4 x i32> %4 6148} 6149 6150define <4 x i32> @ult_10_v4i32(<4 x i32> %0) { 6151; PWR5-LABEL: ult_10_v4i32: 6152; PWR5: # %bb.0: 6153; PWR5-NEXT: addis 3, 2, .LCPI57_0@toc@ha 6154; PWR5-NEXT: vspltisw 4, 1 6155; PWR5-NEXT: vxor 3, 3, 3 6156; PWR5-NEXT: addi 3, 3, .LCPI57_0@toc@l 6157; PWR5-NEXT: lvx 5, 0, 3 6158; PWR5-NEXT: addis 3, 2, .LCPI57_1@toc@ha 6159; PWR5-NEXT: addi 3, 3, .LCPI57_1@toc@l 6160; PWR5-NEXT: vspltisw 0, 2 6161; PWR5-NEXT: vsrw 4, 2, 4 6162; PWR5-NEXT: vand 4, 4, 5 6163; PWR5-NEXT: lvx 5, 0, 3 6164; PWR5-NEXT: vsubuwm 2, 2, 4 6165; PWR5-NEXT: vand 4, 2, 5 6166; PWR5-NEXT: vsrw 2, 2, 0 6167; PWR5-NEXT: vand 2, 2, 5 6168; PWR5-NEXT: vspltisw 5, 4 6169; PWR5-NEXT: vadduwm 2, 4, 2 6170; PWR5-NEXT: vsrw 4, 2, 5 6171; PWR5-NEXT: vspltisb 5, 15 6172; PWR5-NEXT: vadduwm 2, 2, 4 6173; PWR5-NEXT: vspltisb 4, 1 6174; PWR5-NEXT: vand 2, 2, 5 6175; PWR5-NEXT: vspltisw 5, -16 6176; PWR5-NEXT: vrlw 0, 4, 5 6177; PWR5-NEXT: vmulouh 4, 2, 4 6178; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 6179; PWR5-NEXT: vspltisw 3, 12 6180; PWR5-NEXT: vadduwm 3, 3, 3 6181; PWR5-NEXT: vslw 2, 2, 5 6182; PWR5-NEXT: vadduwm 2, 4, 2 6183; PWR5-NEXT: vsrw 2, 2, 3 6184; PWR5-NEXT: vspltisw 3, 10 6185; PWR5-NEXT: vcmpgtuw 2, 3, 2 6186; PWR5-NEXT: blr 6187; 6188; PWR6-LABEL: ult_10_v4i32: 6189; PWR6: # %bb.0: 6190; PWR6-NEXT: addis 3, 2, .LCPI57_0@toc@ha 6191; PWR6-NEXT: vspltisw 4, 1 6192; PWR6-NEXT: vxor 3, 3, 3 6193; PWR6-NEXT: addi 3, 3, .LCPI57_0@toc@l 6194; PWR6-NEXT: lvx 5, 0, 3 6195; PWR6-NEXT: addis 3, 2, .LCPI57_1@toc@ha 6196; PWR6-NEXT: addi 3, 3, .LCPI57_1@toc@l 6197; PWR6-NEXT: vspltisw 0, 2 6198; PWR6-NEXT: vsrw 4, 2, 4 6199; PWR6-NEXT: vand 4, 4, 5 6200; PWR6-NEXT: lvx 5, 0, 3 6201; PWR6-NEXT: vsubuwm 2, 2, 4 6202; PWR6-NEXT: vand 4, 2, 5 6203; PWR6-NEXT: vsrw 2, 2, 0 6204; PWR6-NEXT: vand 2, 2, 5 6205; PWR6-NEXT: vspltisw 5, 4 6206; PWR6-NEXT: vadduwm 2, 4, 2 6207; PWR6-NEXT: vsrw 4, 2, 5 6208; PWR6-NEXT: vspltisb 5, 15 6209; PWR6-NEXT: vadduwm 2, 2, 4 6210; PWR6-NEXT: vspltisb 4, 1 6211; PWR6-NEXT: vand 2, 2, 5 6212; PWR6-NEXT: vspltisw 5, -16 6213; PWR6-NEXT: vrlw 0, 4, 5 6214; PWR6-NEXT: vmulouh 4, 2, 4 6215; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 6216; PWR6-NEXT: vspltisw 3, 12 6217; PWR6-NEXT: vadduwm 3, 3, 3 6218; PWR6-NEXT: vslw 2, 2, 5 6219; PWR6-NEXT: vadduwm 2, 4, 2 6220; PWR6-NEXT: vsrw 2, 2, 3 6221; PWR6-NEXT: vspltisw 3, 10 6222; PWR6-NEXT: vcmpgtuw 2, 3, 2 6223; PWR6-NEXT: blr 6224; 6225; PWR7-LABEL: ult_10_v4i32: 6226; PWR7: # %bb.0: 6227; PWR7-NEXT: vspltisw 3, 1 6228; PWR7-NEXT: addis 3, 2, .LCPI57_0@toc@ha 6229; PWR7-NEXT: addi 3, 3, .LCPI57_0@toc@l 6230; PWR7-NEXT: vspltisw 4, 2 6231; PWR7-NEXT: lxvw4x 0, 0, 3 6232; PWR7-NEXT: addis 3, 2, .LCPI57_1@toc@ha 6233; PWR7-NEXT: vspltisw 5, -16 6234; PWR7-NEXT: vsrw 3, 2, 3 6235; PWR7-NEXT: addi 3, 3, .LCPI57_1@toc@l 6236; PWR7-NEXT: vspltisb 0, 15 6237; PWR7-NEXT: xxland 35, 35, 0 6238; PWR7-NEXT: lxvw4x 0, 0, 3 6239; PWR7-NEXT: vsubuwm 2, 2, 3 6240; PWR7-NEXT: vsrw 3, 2, 4 6241; PWR7-NEXT: xxland 34, 34, 0 6242; PWR7-NEXT: vspltisw 4, 4 6243; PWR7-NEXT: xxland 35, 35, 0 6244; PWR7-NEXT: vadduwm 2, 2, 3 6245; PWR7-NEXT: vsrw 3, 2, 4 6246; PWR7-NEXT: vspltisb 4, 1 6247; PWR7-NEXT: vrlw 1, 4, 5 6248; PWR7-NEXT: vadduwm 2, 2, 3 6249; PWR7-NEXT: xxlxor 35, 35, 35 6250; PWR7-NEXT: xxland 34, 34, 32 6251; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 6252; PWR7-NEXT: vmulouh 2, 2, 4 6253; PWR7-NEXT: vspltisw 4, 12 6254; PWR7-NEXT: vslw 3, 3, 5 6255; PWR7-NEXT: vadduwm 2, 2, 3 6256; PWR7-NEXT: vadduwm 3, 4, 4 6257; PWR7-NEXT: vsrw 2, 2, 3 6258; PWR7-NEXT: vspltisw 3, 10 6259; PWR7-NEXT: vcmpgtuw 2, 3, 2 6260; PWR7-NEXT: blr 6261; 6262; PWR8-LABEL: ult_10_v4i32: 6263; PWR8: # %bb.0: 6264; PWR8-NEXT: vspltisw 3, 10 6265; PWR8-NEXT: vpopcntw 2, 2 6266; PWR8-NEXT: vcmpgtuw 2, 3, 2 6267; PWR8-NEXT: blr 6268; 6269; PWR9-LABEL: ult_10_v4i32: 6270; PWR9: # %bb.0: 6271; PWR9-NEXT: vpopcntw 2, 2 6272; PWR9-NEXT: vspltisw 3, 10 6273; PWR9-NEXT: vcmpgtuw 2, 3, 2 6274; PWR9-NEXT: blr 6275 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 6276 %3 = icmp ult <4 x i32> %2, <i32 10, i32 10, i32 10, i32 10> 6277 %4 = sext <4 x i1> %3 to <4 x i32> 6278 ret <4 x i32> %4 6279} 6280 6281define <4 x i32> @ugt_10_v4i32(<4 x i32> %0) { 6282; PWR5-LABEL: ugt_10_v4i32: 6283; PWR5: # %bb.0: 6284; PWR5-NEXT: addis 3, 2, .LCPI58_0@toc@ha 6285; PWR5-NEXT: vspltisw 4, 1 6286; PWR5-NEXT: vxor 3, 3, 3 6287; PWR5-NEXT: addi 3, 3, .LCPI58_0@toc@l 6288; PWR5-NEXT: lvx 5, 0, 3 6289; PWR5-NEXT: addis 3, 2, .LCPI58_1@toc@ha 6290; PWR5-NEXT: addi 3, 3, .LCPI58_1@toc@l 6291; PWR5-NEXT: vspltisw 0, 2 6292; PWR5-NEXT: vsrw 4, 2, 4 6293; PWR5-NEXT: vand 4, 4, 5 6294; PWR5-NEXT: lvx 5, 0, 3 6295; PWR5-NEXT: vsubuwm 2, 2, 4 6296; PWR5-NEXT: vand 4, 2, 5 6297; PWR5-NEXT: vsrw 2, 2, 0 6298; PWR5-NEXT: vand 2, 2, 5 6299; PWR5-NEXT: vspltisw 5, 4 6300; PWR5-NEXT: vadduwm 2, 4, 2 6301; PWR5-NEXT: vsrw 4, 2, 5 6302; PWR5-NEXT: vspltisb 5, 15 6303; PWR5-NEXT: vadduwm 2, 2, 4 6304; PWR5-NEXT: vspltisb 4, 1 6305; PWR5-NEXT: vand 2, 2, 5 6306; PWR5-NEXT: vspltisw 5, -16 6307; PWR5-NEXT: vrlw 0, 4, 5 6308; PWR5-NEXT: vmulouh 4, 2, 4 6309; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 6310; PWR5-NEXT: vspltisw 3, 12 6311; PWR5-NEXT: vadduwm 3, 3, 3 6312; PWR5-NEXT: vslw 2, 2, 5 6313; PWR5-NEXT: vadduwm 2, 4, 2 6314; PWR5-NEXT: vsrw 2, 2, 3 6315; PWR5-NEXT: vspltisw 3, 10 6316; PWR5-NEXT: vcmpgtuw 2, 2, 3 6317; PWR5-NEXT: blr 6318; 6319; PWR6-LABEL: ugt_10_v4i32: 6320; PWR6: # %bb.0: 6321; PWR6-NEXT: addis 3, 2, .LCPI58_0@toc@ha 6322; PWR6-NEXT: vspltisw 4, 1 6323; PWR6-NEXT: vxor 3, 3, 3 6324; PWR6-NEXT: addi 3, 3, .LCPI58_0@toc@l 6325; PWR6-NEXT: lvx 5, 0, 3 6326; PWR6-NEXT: addis 3, 2, .LCPI58_1@toc@ha 6327; PWR6-NEXT: addi 3, 3, .LCPI58_1@toc@l 6328; PWR6-NEXT: vspltisw 0, 2 6329; PWR6-NEXT: vsrw 4, 2, 4 6330; PWR6-NEXT: vand 4, 4, 5 6331; PWR6-NEXT: lvx 5, 0, 3 6332; PWR6-NEXT: vsubuwm 2, 2, 4 6333; PWR6-NEXT: vand 4, 2, 5 6334; PWR6-NEXT: vsrw 2, 2, 0 6335; PWR6-NEXT: vand 2, 2, 5 6336; PWR6-NEXT: vspltisw 5, 4 6337; PWR6-NEXT: vadduwm 2, 4, 2 6338; PWR6-NEXT: vsrw 4, 2, 5 6339; PWR6-NEXT: vspltisb 5, 15 6340; PWR6-NEXT: vadduwm 2, 2, 4 6341; PWR6-NEXT: vspltisb 4, 1 6342; PWR6-NEXT: vand 2, 2, 5 6343; PWR6-NEXT: vspltisw 5, -16 6344; PWR6-NEXT: vrlw 0, 4, 5 6345; PWR6-NEXT: vmulouh 4, 2, 4 6346; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 6347; PWR6-NEXT: vspltisw 3, 12 6348; PWR6-NEXT: vadduwm 3, 3, 3 6349; PWR6-NEXT: vslw 2, 2, 5 6350; PWR6-NEXT: vadduwm 2, 4, 2 6351; PWR6-NEXT: vsrw 2, 2, 3 6352; PWR6-NEXT: vspltisw 3, 10 6353; PWR6-NEXT: vcmpgtuw 2, 2, 3 6354; PWR6-NEXT: blr 6355; 6356; PWR7-LABEL: ugt_10_v4i32: 6357; PWR7: # %bb.0: 6358; PWR7-NEXT: vspltisw 3, 1 6359; PWR7-NEXT: addis 3, 2, .LCPI58_0@toc@ha 6360; PWR7-NEXT: addi 3, 3, .LCPI58_0@toc@l 6361; PWR7-NEXT: vspltisw 4, 2 6362; PWR7-NEXT: lxvw4x 0, 0, 3 6363; PWR7-NEXT: addis 3, 2, .LCPI58_1@toc@ha 6364; PWR7-NEXT: vspltisw 5, -16 6365; PWR7-NEXT: vsrw 3, 2, 3 6366; PWR7-NEXT: addi 3, 3, .LCPI58_1@toc@l 6367; PWR7-NEXT: vspltisb 0, 15 6368; PWR7-NEXT: xxland 35, 35, 0 6369; PWR7-NEXT: lxvw4x 0, 0, 3 6370; PWR7-NEXT: vsubuwm 2, 2, 3 6371; PWR7-NEXT: vsrw 3, 2, 4 6372; PWR7-NEXT: xxland 34, 34, 0 6373; PWR7-NEXT: vspltisw 4, 4 6374; PWR7-NEXT: xxland 35, 35, 0 6375; PWR7-NEXT: vadduwm 2, 2, 3 6376; PWR7-NEXT: vsrw 3, 2, 4 6377; PWR7-NEXT: vspltisb 4, 1 6378; PWR7-NEXT: vrlw 1, 4, 5 6379; PWR7-NEXT: vadduwm 2, 2, 3 6380; PWR7-NEXT: xxlxor 35, 35, 35 6381; PWR7-NEXT: xxland 34, 34, 32 6382; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 6383; PWR7-NEXT: vmulouh 2, 2, 4 6384; PWR7-NEXT: vspltisw 4, 12 6385; PWR7-NEXT: vslw 3, 3, 5 6386; PWR7-NEXT: vadduwm 2, 2, 3 6387; PWR7-NEXT: vadduwm 3, 4, 4 6388; PWR7-NEXT: vsrw 2, 2, 3 6389; PWR7-NEXT: vspltisw 3, 10 6390; PWR7-NEXT: vcmpgtuw 2, 2, 3 6391; PWR7-NEXT: blr 6392; 6393; PWR8-LABEL: ugt_10_v4i32: 6394; PWR8: # %bb.0: 6395; PWR8-NEXT: vspltisw 3, 10 6396; PWR8-NEXT: vpopcntw 2, 2 6397; PWR8-NEXT: vcmpgtuw 2, 2, 3 6398; PWR8-NEXT: blr 6399; 6400; PWR9-LABEL: ugt_10_v4i32: 6401; PWR9: # %bb.0: 6402; PWR9-NEXT: vpopcntw 2, 2 6403; PWR9-NEXT: vspltisw 3, 10 6404; PWR9-NEXT: vcmpgtuw 2, 2, 3 6405; PWR9-NEXT: blr 6406 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 6407 %3 = icmp ugt <4 x i32> %2, <i32 10, i32 10, i32 10, i32 10> 6408 %4 = sext <4 x i1> %3 to <4 x i32> 6409 ret <4 x i32> %4 6410} 6411 6412define <4 x i32> @ult_11_v4i32(<4 x i32> %0) { 6413; PWR5-LABEL: ult_11_v4i32: 6414; PWR5: # %bb.0: 6415; PWR5-NEXT: addis 3, 2, .LCPI59_0@toc@ha 6416; PWR5-NEXT: vspltisw 4, 1 6417; PWR5-NEXT: vxor 3, 3, 3 6418; PWR5-NEXT: addi 3, 3, .LCPI59_0@toc@l 6419; PWR5-NEXT: lvx 5, 0, 3 6420; PWR5-NEXT: addis 3, 2, .LCPI59_1@toc@ha 6421; PWR5-NEXT: addi 3, 3, .LCPI59_1@toc@l 6422; PWR5-NEXT: vspltisw 0, 2 6423; PWR5-NEXT: vsrw 4, 2, 4 6424; PWR5-NEXT: vand 4, 4, 5 6425; PWR5-NEXT: lvx 5, 0, 3 6426; PWR5-NEXT: vsubuwm 2, 2, 4 6427; PWR5-NEXT: vand 4, 2, 5 6428; PWR5-NEXT: vsrw 2, 2, 0 6429; PWR5-NEXT: vand 2, 2, 5 6430; PWR5-NEXT: vspltisw 5, 4 6431; PWR5-NEXT: vadduwm 2, 4, 2 6432; PWR5-NEXT: vsrw 4, 2, 5 6433; PWR5-NEXT: vspltisb 5, 15 6434; PWR5-NEXT: vadduwm 2, 2, 4 6435; PWR5-NEXT: vspltisb 4, 1 6436; PWR5-NEXT: vand 2, 2, 5 6437; PWR5-NEXT: vspltisw 5, -16 6438; PWR5-NEXT: vrlw 0, 4, 5 6439; PWR5-NEXT: vmulouh 4, 2, 4 6440; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 6441; PWR5-NEXT: vspltisw 3, 12 6442; PWR5-NEXT: vadduwm 3, 3, 3 6443; PWR5-NEXT: vslw 2, 2, 5 6444; PWR5-NEXT: vadduwm 2, 4, 2 6445; PWR5-NEXT: vsrw 2, 2, 3 6446; PWR5-NEXT: vspltisw 3, 11 6447; PWR5-NEXT: vcmpgtuw 2, 3, 2 6448; PWR5-NEXT: blr 6449; 6450; PWR6-LABEL: ult_11_v4i32: 6451; PWR6: # %bb.0: 6452; PWR6-NEXT: addis 3, 2, .LCPI59_0@toc@ha 6453; PWR6-NEXT: vspltisw 4, 1 6454; PWR6-NEXT: vxor 3, 3, 3 6455; PWR6-NEXT: addi 3, 3, .LCPI59_0@toc@l 6456; PWR6-NEXT: lvx 5, 0, 3 6457; PWR6-NEXT: addis 3, 2, .LCPI59_1@toc@ha 6458; PWR6-NEXT: addi 3, 3, .LCPI59_1@toc@l 6459; PWR6-NEXT: vspltisw 0, 2 6460; PWR6-NEXT: vsrw 4, 2, 4 6461; PWR6-NEXT: vand 4, 4, 5 6462; PWR6-NEXT: lvx 5, 0, 3 6463; PWR6-NEXT: vsubuwm 2, 2, 4 6464; PWR6-NEXT: vand 4, 2, 5 6465; PWR6-NEXT: vsrw 2, 2, 0 6466; PWR6-NEXT: vand 2, 2, 5 6467; PWR6-NEXT: vspltisw 5, 4 6468; PWR6-NEXT: vadduwm 2, 4, 2 6469; PWR6-NEXT: vsrw 4, 2, 5 6470; PWR6-NEXT: vspltisb 5, 15 6471; PWR6-NEXT: vadduwm 2, 2, 4 6472; PWR6-NEXT: vspltisb 4, 1 6473; PWR6-NEXT: vand 2, 2, 5 6474; PWR6-NEXT: vspltisw 5, -16 6475; PWR6-NEXT: vrlw 0, 4, 5 6476; PWR6-NEXT: vmulouh 4, 2, 4 6477; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 6478; PWR6-NEXT: vspltisw 3, 12 6479; PWR6-NEXT: vadduwm 3, 3, 3 6480; PWR6-NEXT: vslw 2, 2, 5 6481; PWR6-NEXT: vadduwm 2, 4, 2 6482; PWR6-NEXT: vsrw 2, 2, 3 6483; PWR6-NEXT: vspltisw 3, 11 6484; PWR6-NEXT: vcmpgtuw 2, 3, 2 6485; PWR6-NEXT: blr 6486; 6487; PWR7-LABEL: ult_11_v4i32: 6488; PWR7: # %bb.0: 6489; PWR7-NEXT: vspltisw 3, 1 6490; PWR7-NEXT: addis 3, 2, .LCPI59_0@toc@ha 6491; PWR7-NEXT: addi 3, 3, .LCPI59_0@toc@l 6492; PWR7-NEXT: vspltisw 4, 2 6493; PWR7-NEXT: lxvw4x 0, 0, 3 6494; PWR7-NEXT: addis 3, 2, .LCPI59_1@toc@ha 6495; PWR7-NEXT: vspltisw 5, -16 6496; PWR7-NEXT: vsrw 3, 2, 3 6497; PWR7-NEXT: addi 3, 3, .LCPI59_1@toc@l 6498; PWR7-NEXT: vspltisb 0, 15 6499; PWR7-NEXT: xxland 35, 35, 0 6500; PWR7-NEXT: lxvw4x 0, 0, 3 6501; PWR7-NEXT: vsubuwm 2, 2, 3 6502; PWR7-NEXT: vsrw 3, 2, 4 6503; PWR7-NEXT: xxland 34, 34, 0 6504; PWR7-NEXT: vspltisw 4, 4 6505; PWR7-NEXT: xxland 35, 35, 0 6506; PWR7-NEXT: vadduwm 2, 2, 3 6507; PWR7-NEXT: vsrw 3, 2, 4 6508; PWR7-NEXT: vspltisb 4, 1 6509; PWR7-NEXT: vrlw 1, 4, 5 6510; PWR7-NEXT: vadduwm 2, 2, 3 6511; PWR7-NEXT: xxlxor 35, 35, 35 6512; PWR7-NEXT: xxland 34, 34, 32 6513; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 6514; PWR7-NEXT: vmulouh 2, 2, 4 6515; PWR7-NEXT: vspltisw 4, 12 6516; PWR7-NEXT: vslw 3, 3, 5 6517; PWR7-NEXT: vadduwm 2, 2, 3 6518; PWR7-NEXT: vadduwm 3, 4, 4 6519; PWR7-NEXT: vsrw 2, 2, 3 6520; PWR7-NEXT: vspltisw 3, 11 6521; PWR7-NEXT: vcmpgtuw 2, 3, 2 6522; PWR7-NEXT: blr 6523; 6524; PWR8-LABEL: ult_11_v4i32: 6525; PWR8: # %bb.0: 6526; PWR8-NEXT: vspltisw 3, 11 6527; PWR8-NEXT: vpopcntw 2, 2 6528; PWR8-NEXT: vcmpgtuw 2, 3, 2 6529; PWR8-NEXT: blr 6530; 6531; PWR9-LABEL: ult_11_v4i32: 6532; PWR9: # %bb.0: 6533; PWR9-NEXT: vpopcntw 2, 2 6534; PWR9-NEXT: vspltisw 3, 11 6535; PWR9-NEXT: vcmpgtuw 2, 3, 2 6536; PWR9-NEXT: blr 6537 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 6538 %3 = icmp ult <4 x i32> %2, <i32 11, i32 11, i32 11, i32 11> 6539 %4 = sext <4 x i1> %3 to <4 x i32> 6540 ret <4 x i32> %4 6541} 6542 6543define <4 x i32> @ugt_11_v4i32(<4 x i32> %0) { 6544; PWR5-LABEL: ugt_11_v4i32: 6545; PWR5: # %bb.0: 6546; PWR5-NEXT: addis 3, 2, .LCPI60_0@toc@ha 6547; PWR5-NEXT: vspltisw 4, 1 6548; PWR5-NEXT: vxor 3, 3, 3 6549; PWR5-NEXT: addi 3, 3, .LCPI60_0@toc@l 6550; PWR5-NEXT: lvx 5, 0, 3 6551; PWR5-NEXT: addis 3, 2, .LCPI60_1@toc@ha 6552; PWR5-NEXT: addi 3, 3, .LCPI60_1@toc@l 6553; PWR5-NEXT: vspltisw 0, 2 6554; PWR5-NEXT: vsrw 4, 2, 4 6555; PWR5-NEXT: vand 4, 4, 5 6556; PWR5-NEXT: lvx 5, 0, 3 6557; PWR5-NEXT: vsubuwm 2, 2, 4 6558; PWR5-NEXT: vand 4, 2, 5 6559; PWR5-NEXT: vsrw 2, 2, 0 6560; PWR5-NEXT: vand 2, 2, 5 6561; PWR5-NEXT: vspltisw 5, 4 6562; PWR5-NEXT: vadduwm 2, 4, 2 6563; PWR5-NEXT: vsrw 4, 2, 5 6564; PWR5-NEXT: vspltisb 5, 15 6565; PWR5-NEXT: vadduwm 2, 2, 4 6566; PWR5-NEXT: vspltisb 4, 1 6567; PWR5-NEXT: vand 2, 2, 5 6568; PWR5-NEXT: vspltisw 5, -16 6569; PWR5-NEXT: vrlw 0, 4, 5 6570; PWR5-NEXT: vmulouh 4, 2, 4 6571; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 6572; PWR5-NEXT: vspltisw 3, 12 6573; PWR5-NEXT: vadduwm 3, 3, 3 6574; PWR5-NEXT: vslw 2, 2, 5 6575; PWR5-NEXT: vadduwm 2, 4, 2 6576; PWR5-NEXT: vsrw 2, 2, 3 6577; PWR5-NEXT: vspltisw 3, 11 6578; PWR5-NEXT: vcmpgtuw 2, 2, 3 6579; PWR5-NEXT: blr 6580; 6581; PWR6-LABEL: ugt_11_v4i32: 6582; PWR6: # %bb.0: 6583; PWR6-NEXT: addis 3, 2, .LCPI60_0@toc@ha 6584; PWR6-NEXT: vspltisw 4, 1 6585; PWR6-NEXT: vxor 3, 3, 3 6586; PWR6-NEXT: addi 3, 3, .LCPI60_0@toc@l 6587; PWR6-NEXT: lvx 5, 0, 3 6588; PWR6-NEXT: addis 3, 2, .LCPI60_1@toc@ha 6589; PWR6-NEXT: addi 3, 3, .LCPI60_1@toc@l 6590; PWR6-NEXT: vspltisw 0, 2 6591; PWR6-NEXT: vsrw 4, 2, 4 6592; PWR6-NEXT: vand 4, 4, 5 6593; PWR6-NEXT: lvx 5, 0, 3 6594; PWR6-NEXT: vsubuwm 2, 2, 4 6595; PWR6-NEXT: vand 4, 2, 5 6596; PWR6-NEXT: vsrw 2, 2, 0 6597; PWR6-NEXT: vand 2, 2, 5 6598; PWR6-NEXT: vspltisw 5, 4 6599; PWR6-NEXT: vadduwm 2, 4, 2 6600; PWR6-NEXT: vsrw 4, 2, 5 6601; PWR6-NEXT: vspltisb 5, 15 6602; PWR6-NEXT: vadduwm 2, 2, 4 6603; PWR6-NEXT: vspltisb 4, 1 6604; PWR6-NEXT: vand 2, 2, 5 6605; PWR6-NEXT: vspltisw 5, -16 6606; PWR6-NEXT: vrlw 0, 4, 5 6607; PWR6-NEXT: vmulouh 4, 2, 4 6608; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 6609; PWR6-NEXT: vspltisw 3, 12 6610; PWR6-NEXT: vadduwm 3, 3, 3 6611; PWR6-NEXT: vslw 2, 2, 5 6612; PWR6-NEXT: vadduwm 2, 4, 2 6613; PWR6-NEXT: vsrw 2, 2, 3 6614; PWR6-NEXT: vspltisw 3, 11 6615; PWR6-NEXT: vcmpgtuw 2, 2, 3 6616; PWR6-NEXT: blr 6617; 6618; PWR7-LABEL: ugt_11_v4i32: 6619; PWR7: # %bb.0: 6620; PWR7-NEXT: vspltisw 3, 1 6621; PWR7-NEXT: addis 3, 2, .LCPI60_0@toc@ha 6622; PWR7-NEXT: addi 3, 3, .LCPI60_0@toc@l 6623; PWR7-NEXT: vspltisw 4, 2 6624; PWR7-NEXT: lxvw4x 0, 0, 3 6625; PWR7-NEXT: addis 3, 2, .LCPI60_1@toc@ha 6626; PWR7-NEXT: vspltisw 5, -16 6627; PWR7-NEXT: vsrw 3, 2, 3 6628; PWR7-NEXT: addi 3, 3, .LCPI60_1@toc@l 6629; PWR7-NEXT: vspltisb 0, 15 6630; PWR7-NEXT: xxland 35, 35, 0 6631; PWR7-NEXT: lxvw4x 0, 0, 3 6632; PWR7-NEXT: vsubuwm 2, 2, 3 6633; PWR7-NEXT: vsrw 3, 2, 4 6634; PWR7-NEXT: xxland 34, 34, 0 6635; PWR7-NEXT: vspltisw 4, 4 6636; PWR7-NEXT: xxland 35, 35, 0 6637; PWR7-NEXT: vadduwm 2, 2, 3 6638; PWR7-NEXT: vsrw 3, 2, 4 6639; PWR7-NEXT: vspltisb 4, 1 6640; PWR7-NEXT: vrlw 1, 4, 5 6641; PWR7-NEXT: vadduwm 2, 2, 3 6642; PWR7-NEXT: xxlxor 35, 35, 35 6643; PWR7-NEXT: xxland 34, 34, 32 6644; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 6645; PWR7-NEXT: vmulouh 2, 2, 4 6646; PWR7-NEXT: vspltisw 4, 12 6647; PWR7-NEXT: vslw 3, 3, 5 6648; PWR7-NEXT: vadduwm 2, 2, 3 6649; PWR7-NEXT: vadduwm 3, 4, 4 6650; PWR7-NEXT: vsrw 2, 2, 3 6651; PWR7-NEXT: vspltisw 3, 11 6652; PWR7-NEXT: vcmpgtuw 2, 2, 3 6653; PWR7-NEXT: blr 6654; 6655; PWR8-LABEL: ugt_11_v4i32: 6656; PWR8: # %bb.0: 6657; PWR8-NEXT: vspltisw 3, 11 6658; PWR8-NEXT: vpopcntw 2, 2 6659; PWR8-NEXT: vcmpgtuw 2, 2, 3 6660; PWR8-NEXT: blr 6661; 6662; PWR9-LABEL: ugt_11_v4i32: 6663; PWR9: # %bb.0: 6664; PWR9-NEXT: vpopcntw 2, 2 6665; PWR9-NEXT: vspltisw 3, 11 6666; PWR9-NEXT: vcmpgtuw 2, 2, 3 6667; PWR9-NEXT: blr 6668 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 6669 %3 = icmp ugt <4 x i32> %2, <i32 11, i32 11, i32 11, i32 11> 6670 %4 = sext <4 x i1> %3 to <4 x i32> 6671 ret <4 x i32> %4 6672} 6673 6674define <4 x i32> @ult_12_v4i32(<4 x i32> %0) { 6675; PWR5-LABEL: ult_12_v4i32: 6676; PWR5: # %bb.0: 6677; PWR5-NEXT: addis 3, 2, .LCPI61_0@toc@ha 6678; PWR5-NEXT: vspltisw 4, 1 6679; PWR5-NEXT: vxor 3, 3, 3 6680; PWR5-NEXT: addi 3, 3, .LCPI61_0@toc@l 6681; PWR5-NEXT: lvx 5, 0, 3 6682; PWR5-NEXT: addis 3, 2, .LCPI61_1@toc@ha 6683; PWR5-NEXT: addi 3, 3, .LCPI61_1@toc@l 6684; PWR5-NEXT: vspltisw 0, 2 6685; PWR5-NEXT: vsrw 4, 2, 4 6686; PWR5-NEXT: vand 4, 4, 5 6687; PWR5-NEXT: lvx 5, 0, 3 6688; PWR5-NEXT: vsubuwm 2, 2, 4 6689; PWR5-NEXT: vand 4, 2, 5 6690; PWR5-NEXT: vsrw 2, 2, 0 6691; PWR5-NEXT: vand 2, 2, 5 6692; PWR5-NEXT: vspltisw 5, 4 6693; PWR5-NEXT: vadduwm 2, 4, 2 6694; PWR5-NEXT: vsrw 4, 2, 5 6695; PWR5-NEXT: vspltisb 5, 15 6696; PWR5-NEXT: vadduwm 2, 2, 4 6697; PWR5-NEXT: vspltisb 4, 1 6698; PWR5-NEXT: vand 2, 2, 5 6699; PWR5-NEXT: vspltisw 5, -16 6700; PWR5-NEXT: vrlw 0, 4, 5 6701; PWR5-NEXT: vmulouh 4, 2, 4 6702; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 6703; PWR5-NEXT: vspltisw 3, 12 6704; PWR5-NEXT: vslw 2, 2, 5 6705; PWR5-NEXT: vadduwm 5, 3, 3 6706; PWR5-NEXT: vadduwm 2, 4, 2 6707; PWR5-NEXT: vsrw 2, 2, 5 6708; PWR5-NEXT: vcmpgtuw 2, 3, 2 6709; PWR5-NEXT: blr 6710; 6711; PWR6-LABEL: ult_12_v4i32: 6712; PWR6: # %bb.0: 6713; PWR6-NEXT: addis 3, 2, .LCPI61_0@toc@ha 6714; PWR6-NEXT: vspltisw 4, 1 6715; PWR6-NEXT: vxor 3, 3, 3 6716; PWR6-NEXT: addi 3, 3, .LCPI61_0@toc@l 6717; PWR6-NEXT: lvx 5, 0, 3 6718; PWR6-NEXT: addis 3, 2, .LCPI61_1@toc@ha 6719; PWR6-NEXT: addi 3, 3, .LCPI61_1@toc@l 6720; PWR6-NEXT: vspltisw 0, 2 6721; PWR6-NEXT: vsrw 4, 2, 4 6722; PWR6-NEXT: vand 4, 4, 5 6723; PWR6-NEXT: lvx 5, 0, 3 6724; PWR6-NEXT: vsubuwm 2, 2, 4 6725; PWR6-NEXT: vand 4, 2, 5 6726; PWR6-NEXT: vsrw 2, 2, 0 6727; PWR6-NEXT: vand 2, 2, 5 6728; PWR6-NEXT: vspltisw 5, 4 6729; PWR6-NEXT: vadduwm 2, 4, 2 6730; PWR6-NEXT: vsrw 4, 2, 5 6731; PWR6-NEXT: vspltisb 5, 15 6732; PWR6-NEXT: vadduwm 2, 2, 4 6733; PWR6-NEXT: vspltisb 4, 1 6734; PWR6-NEXT: vand 2, 2, 5 6735; PWR6-NEXT: vspltisw 5, -16 6736; PWR6-NEXT: vrlw 0, 4, 5 6737; PWR6-NEXT: vmulouh 4, 2, 4 6738; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 6739; PWR6-NEXT: vspltisw 3, 12 6740; PWR6-NEXT: vslw 2, 2, 5 6741; PWR6-NEXT: vadduwm 5, 3, 3 6742; PWR6-NEXT: vadduwm 2, 4, 2 6743; PWR6-NEXT: vsrw 2, 2, 5 6744; PWR6-NEXT: vcmpgtuw 2, 3, 2 6745; PWR6-NEXT: blr 6746; 6747; PWR7-LABEL: ult_12_v4i32: 6748; PWR7: # %bb.0: 6749; PWR7-NEXT: vspltisw 3, 1 6750; PWR7-NEXT: addis 3, 2, .LCPI61_0@toc@ha 6751; PWR7-NEXT: addi 3, 3, .LCPI61_0@toc@l 6752; PWR7-NEXT: vspltisw 4, 2 6753; PWR7-NEXT: lxvw4x 0, 0, 3 6754; PWR7-NEXT: addis 3, 2, .LCPI61_1@toc@ha 6755; PWR7-NEXT: vspltisw 5, -16 6756; PWR7-NEXT: vsrw 3, 2, 3 6757; PWR7-NEXT: addi 3, 3, .LCPI61_1@toc@l 6758; PWR7-NEXT: vspltisb 0, 15 6759; PWR7-NEXT: xxland 35, 35, 0 6760; PWR7-NEXT: lxvw4x 0, 0, 3 6761; PWR7-NEXT: vsubuwm 2, 2, 3 6762; PWR7-NEXT: vsrw 3, 2, 4 6763; PWR7-NEXT: xxland 34, 34, 0 6764; PWR7-NEXT: vspltisw 4, 4 6765; PWR7-NEXT: xxland 35, 35, 0 6766; PWR7-NEXT: vadduwm 2, 2, 3 6767; PWR7-NEXT: vsrw 3, 2, 4 6768; PWR7-NEXT: vspltisb 4, 1 6769; PWR7-NEXT: vrlw 1, 4, 5 6770; PWR7-NEXT: vadduwm 2, 2, 3 6771; PWR7-NEXT: xxlxor 35, 35, 35 6772; PWR7-NEXT: xxland 34, 34, 32 6773; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 6774; PWR7-NEXT: vmulouh 2, 2, 4 6775; PWR7-NEXT: vspltisw 4, 12 6776; PWR7-NEXT: vslw 3, 3, 5 6777; PWR7-NEXT: vadduwm 2, 2, 3 6778; PWR7-NEXT: vadduwm 3, 4, 4 6779; PWR7-NEXT: vsrw 2, 2, 3 6780; PWR7-NEXT: vcmpgtuw 2, 4, 2 6781; PWR7-NEXT: blr 6782; 6783; PWR8-LABEL: ult_12_v4i32: 6784; PWR8: # %bb.0: 6785; PWR8-NEXT: vspltisw 3, 12 6786; PWR8-NEXT: vpopcntw 2, 2 6787; PWR8-NEXT: vcmpgtuw 2, 3, 2 6788; PWR8-NEXT: blr 6789; 6790; PWR9-LABEL: ult_12_v4i32: 6791; PWR9: # %bb.0: 6792; PWR9-NEXT: vpopcntw 2, 2 6793; PWR9-NEXT: vspltisw 3, 12 6794; PWR9-NEXT: vcmpgtuw 2, 3, 2 6795; PWR9-NEXT: blr 6796 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 6797 %3 = icmp ult <4 x i32> %2, <i32 12, i32 12, i32 12, i32 12> 6798 %4 = sext <4 x i1> %3 to <4 x i32> 6799 ret <4 x i32> %4 6800} 6801 6802define <4 x i32> @ugt_12_v4i32(<4 x i32> %0) { 6803; PWR5-LABEL: ugt_12_v4i32: 6804; PWR5: # %bb.0: 6805; PWR5-NEXT: addis 3, 2, .LCPI62_0@toc@ha 6806; PWR5-NEXT: vspltisw 4, 1 6807; PWR5-NEXT: vxor 3, 3, 3 6808; PWR5-NEXT: addi 3, 3, .LCPI62_0@toc@l 6809; PWR5-NEXT: lvx 5, 0, 3 6810; PWR5-NEXT: addis 3, 2, .LCPI62_1@toc@ha 6811; PWR5-NEXT: addi 3, 3, .LCPI62_1@toc@l 6812; PWR5-NEXT: vspltisw 0, 2 6813; PWR5-NEXT: vsrw 4, 2, 4 6814; PWR5-NEXT: vand 4, 4, 5 6815; PWR5-NEXT: lvx 5, 0, 3 6816; PWR5-NEXT: vsubuwm 2, 2, 4 6817; PWR5-NEXT: vand 4, 2, 5 6818; PWR5-NEXT: vsrw 2, 2, 0 6819; PWR5-NEXT: vand 2, 2, 5 6820; PWR5-NEXT: vspltisw 5, 4 6821; PWR5-NEXT: vadduwm 2, 4, 2 6822; PWR5-NEXT: vsrw 4, 2, 5 6823; PWR5-NEXT: vspltisb 5, 15 6824; PWR5-NEXT: vadduwm 2, 2, 4 6825; PWR5-NEXT: vspltisb 4, 1 6826; PWR5-NEXT: vand 2, 2, 5 6827; PWR5-NEXT: vspltisw 5, -16 6828; PWR5-NEXT: vrlw 0, 4, 5 6829; PWR5-NEXT: vmulouh 4, 2, 4 6830; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 6831; PWR5-NEXT: vspltisw 3, 12 6832; PWR5-NEXT: vslw 2, 2, 5 6833; PWR5-NEXT: vadduwm 5, 3, 3 6834; PWR5-NEXT: vadduwm 2, 4, 2 6835; PWR5-NEXT: vsrw 2, 2, 5 6836; PWR5-NEXT: vcmpgtuw 2, 2, 3 6837; PWR5-NEXT: blr 6838; 6839; PWR6-LABEL: ugt_12_v4i32: 6840; PWR6: # %bb.0: 6841; PWR6-NEXT: addis 3, 2, .LCPI62_0@toc@ha 6842; PWR6-NEXT: vspltisw 4, 1 6843; PWR6-NEXT: vxor 3, 3, 3 6844; PWR6-NEXT: addi 3, 3, .LCPI62_0@toc@l 6845; PWR6-NEXT: lvx 5, 0, 3 6846; PWR6-NEXT: addis 3, 2, .LCPI62_1@toc@ha 6847; PWR6-NEXT: addi 3, 3, .LCPI62_1@toc@l 6848; PWR6-NEXT: vspltisw 0, 2 6849; PWR6-NEXT: vsrw 4, 2, 4 6850; PWR6-NEXT: vand 4, 4, 5 6851; PWR6-NEXT: lvx 5, 0, 3 6852; PWR6-NEXT: vsubuwm 2, 2, 4 6853; PWR6-NEXT: vand 4, 2, 5 6854; PWR6-NEXT: vsrw 2, 2, 0 6855; PWR6-NEXT: vand 2, 2, 5 6856; PWR6-NEXT: vspltisw 5, 4 6857; PWR6-NEXT: vadduwm 2, 4, 2 6858; PWR6-NEXT: vsrw 4, 2, 5 6859; PWR6-NEXT: vspltisb 5, 15 6860; PWR6-NEXT: vadduwm 2, 2, 4 6861; PWR6-NEXT: vspltisb 4, 1 6862; PWR6-NEXT: vand 2, 2, 5 6863; PWR6-NEXT: vspltisw 5, -16 6864; PWR6-NEXT: vrlw 0, 4, 5 6865; PWR6-NEXT: vmulouh 4, 2, 4 6866; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 6867; PWR6-NEXT: vspltisw 3, 12 6868; PWR6-NEXT: vslw 2, 2, 5 6869; PWR6-NEXT: vadduwm 5, 3, 3 6870; PWR6-NEXT: vadduwm 2, 4, 2 6871; PWR6-NEXT: vsrw 2, 2, 5 6872; PWR6-NEXT: vcmpgtuw 2, 2, 3 6873; PWR6-NEXT: blr 6874; 6875; PWR7-LABEL: ugt_12_v4i32: 6876; PWR7: # %bb.0: 6877; PWR7-NEXT: vspltisw 3, 1 6878; PWR7-NEXT: addis 3, 2, .LCPI62_0@toc@ha 6879; PWR7-NEXT: addi 3, 3, .LCPI62_0@toc@l 6880; PWR7-NEXT: vspltisw 4, 2 6881; PWR7-NEXT: lxvw4x 0, 0, 3 6882; PWR7-NEXT: addis 3, 2, .LCPI62_1@toc@ha 6883; PWR7-NEXT: vspltisw 5, -16 6884; PWR7-NEXT: vsrw 3, 2, 3 6885; PWR7-NEXT: addi 3, 3, .LCPI62_1@toc@l 6886; PWR7-NEXT: vspltisb 0, 15 6887; PWR7-NEXT: xxland 35, 35, 0 6888; PWR7-NEXT: lxvw4x 0, 0, 3 6889; PWR7-NEXT: vsubuwm 2, 2, 3 6890; PWR7-NEXT: vsrw 3, 2, 4 6891; PWR7-NEXT: xxland 34, 34, 0 6892; PWR7-NEXT: vspltisw 4, 4 6893; PWR7-NEXT: xxland 35, 35, 0 6894; PWR7-NEXT: vadduwm 2, 2, 3 6895; PWR7-NEXT: vsrw 3, 2, 4 6896; PWR7-NEXT: vspltisb 4, 1 6897; PWR7-NEXT: vrlw 1, 4, 5 6898; PWR7-NEXT: vadduwm 2, 2, 3 6899; PWR7-NEXT: xxlxor 35, 35, 35 6900; PWR7-NEXT: xxland 34, 34, 32 6901; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 6902; PWR7-NEXT: vmulouh 2, 2, 4 6903; PWR7-NEXT: vspltisw 4, 12 6904; PWR7-NEXT: vslw 3, 3, 5 6905; PWR7-NEXT: vadduwm 2, 2, 3 6906; PWR7-NEXT: vadduwm 3, 4, 4 6907; PWR7-NEXT: vsrw 2, 2, 3 6908; PWR7-NEXT: vcmpgtuw 2, 2, 4 6909; PWR7-NEXT: blr 6910; 6911; PWR8-LABEL: ugt_12_v4i32: 6912; PWR8: # %bb.0: 6913; PWR8-NEXT: vspltisw 3, 12 6914; PWR8-NEXT: vpopcntw 2, 2 6915; PWR8-NEXT: vcmpgtuw 2, 2, 3 6916; PWR8-NEXT: blr 6917; 6918; PWR9-LABEL: ugt_12_v4i32: 6919; PWR9: # %bb.0: 6920; PWR9-NEXT: vpopcntw 2, 2 6921; PWR9-NEXT: vspltisw 3, 12 6922; PWR9-NEXT: vcmpgtuw 2, 2, 3 6923; PWR9-NEXT: blr 6924 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 6925 %3 = icmp ugt <4 x i32> %2, <i32 12, i32 12, i32 12, i32 12> 6926 %4 = sext <4 x i1> %3 to <4 x i32> 6927 ret <4 x i32> %4 6928} 6929 6930define <4 x i32> @ult_13_v4i32(<4 x i32> %0) { 6931; PWR5-LABEL: ult_13_v4i32: 6932; PWR5: # %bb.0: 6933; PWR5-NEXT: addis 3, 2, .LCPI63_0@toc@ha 6934; PWR5-NEXT: vspltisw 4, 1 6935; PWR5-NEXT: vxor 3, 3, 3 6936; PWR5-NEXT: addi 3, 3, .LCPI63_0@toc@l 6937; PWR5-NEXT: lvx 5, 0, 3 6938; PWR5-NEXT: addis 3, 2, .LCPI63_1@toc@ha 6939; PWR5-NEXT: addi 3, 3, .LCPI63_1@toc@l 6940; PWR5-NEXT: vspltisw 0, 2 6941; PWR5-NEXT: vsrw 4, 2, 4 6942; PWR5-NEXT: vand 4, 4, 5 6943; PWR5-NEXT: lvx 5, 0, 3 6944; PWR5-NEXT: vsubuwm 2, 2, 4 6945; PWR5-NEXT: vand 4, 2, 5 6946; PWR5-NEXT: vsrw 2, 2, 0 6947; PWR5-NEXT: vand 2, 2, 5 6948; PWR5-NEXT: vspltisw 5, 4 6949; PWR5-NEXT: vadduwm 2, 4, 2 6950; PWR5-NEXT: vsrw 4, 2, 5 6951; PWR5-NEXT: vspltisb 5, 15 6952; PWR5-NEXT: vadduwm 2, 2, 4 6953; PWR5-NEXT: vspltisb 4, 1 6954; PWR5-NEXT: vand 2, 2, 5 6955; PWR5-NEXT: vspltisw 5, -16 6956; PWR5-NEXT: vrlw 0, 4, 5 6957; PWR5-NEXT: vmulouh 4, 2, 4 6958; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 6959; PWR5-NEXT: vspltisw 3, 12 6960; PWR5-NEXT: vadduwm 3, 3, 3 6961; PWR5-NEXT: vslw 2, 2, 5 6962; PWR5-NEXT: vadduwm 2, 4, 2 6963; PWR5-NEXT: vsrw 2, 2, 3 6964; PWR5-NEXT: vspltisw 3, 13 6965; PWR5-NEXT: vcmpgtuw 2, 3, 2 6966; PWR5-NEXT: blr 6967; 6968; PWR6-LABEL: ult_13_v4i32: 6969; PWR6: # %bb.0: 6970; PWR6-NEXT: addis 3, 2, .LCPI63_0@toc@ha 6971; PWR6-NEXT: vspltisw 4, 1 6972; PWR6-NEXT: vxor 3, 3, 3 6973; PWR6-NEXT: addi 3, 3, .LCPI63_0@toc@l 6974; PWR6-NEXT: lvx 5, 0, 3 6975; PWR6-NEXT: addis 3, 2, .LCPI63_1@toc@ha 6976; PWR6-NEXT: addi 3, 3, .LCPI63_1@toc@l 6977; PWR6-NEXT: vspltisw 0, 2 6978; PWR6-NEXT: vsrw 4, 2, 4 6979; PWR6-NEXT: vand 4, 4, 5 6980; PWR6-NEXT: lvx 5, 0, 3 6981; PWR6-NEXT: vsubuwm 2, 2, 4 6982; PWR6-NEXT: vand 4, 2, 5 6983; PWR6-NEXT: vsrw 2, 2, 0 6984; PWR6-NEXT: vand 2, 2, 5 6985; PWR6-NEXT: vspltisw 5, 4 6986; PWR6-NEXT: vadduwm 2, 4, 2 6987; PWR6-NEXT: vsrw 4, 2, 5 6988; PWR6-NEXT: vspltisb 5, 15 6989; PWR6-NEXT: vadduwm 2, 2, 4 6990; PWR6-NEXT: vspltisb 4, 1 6991; PWR6-NEXT: vand 2, 2, 5 6992; PWR6-NEXT: vspltisw 5, -16 6993; PWR6-NEXT: vrlw 0, 4, 5 6994; PWR6-NEXT: vmulouh 4, 2, 4 6995; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 6996; PWR6-NEXT: vspltisw 3, 12 6997; PWR6-NEXT: vadduwm 3, 3, 3 6998; PWR6-NEXT: vslw 2, 2, 5 6999; PWR6-NEXT: vadduwm 2, 4, 2 7000; PWR6-NEXT: vsrw 2, 2, 3 7001; PWR6-NEXT: vspltisw 3, 13 7002; PWR6-NEXT: vcmpgtuw 2, 3, 2 7003; PWR6-NEXT: blr 7004; 7005; PWR7-LABEL: ult_13_v4i32: 7006; PWR7: # %bb.0: 7007; PWR7-NEXT: vspltisw 3, 1 7008; PWR7-NEXT: addis 3, 2, .LCPI63_0@toc@ha 7009; PWR7-NEXT: addi 3, 3, .LCPI63_0@toc@l 7010; PWR7-NEXT: vspltisw 4, 2 7011; PWR7-NEXT: lxvw4x 0, 0, 3 7012; PWR7-NEXT: addis 3, 2, .LCPI63_1@toc@ha 7013; PWR7-NEXT: vspltisw 5, -16 7014; PWR7-NEXT: vsrw 3, 2, 3 7015; PWR7-NEXT: addi 3, 3, .LCPI63_1@toc@l 7016; PWR7-NEXT: vspltisb 0, 15 7017; PWR7-NEXT: xxland 35, 35, 0 7018; PWR7-NEXT: lxvw4x 0, 0, 3 7019; PWR7-NEXT: vsubuwm 2, 2, 3 7020; PWR7-NEXT: vsrw 3, 2, 4 7021; PWR7-NEXT: xxland 34, 34, 0 7022; PWR7-NEXT: vspltisw 4, 4 7023; PWR7-NEXT: xxland 35, 35, 0 7024; PWR7-NEXT: vadduwm 2, 2, 3 7025; PWR7-NEXT: vsrw 3, 2, 4 7026; PWR7-NEXT: vspltisb 4, 1 7027; PWR7-NEXT: vrlw 1, 4, 5 7028; PWR7-NEXT: vadduwm 2, 2, 3 7029; PWR7-NEXT: xxlxor 35, 35, 35 7030; PWR7-NEXT: xxland 34, 34, 32 7031; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 7032; PWR7-NEXT: vmulouh 2, 2, 4 7033; PWR7-NEXT: vspltisw 4, 12 7034; PWR7-NEXT: vslw 3, 3, 5 7035; PWR7-NEXT: vadduwm 2, 2, 3 7036; PWR7-NEXT: vadduwm 3, 4, 4 7037; PWR7-NEXT: vsrw 2, 2, 3 7038; PWR7-NEXT: vspltisw 3, 13 7039; PWR7-NEXT: vcmpgtuw 2, 3, 2 7040; PWR7-NEXT: blr 7041; 7042; PWR8-LABEL: ult_13_v4i32: 7043; PWR8: # %bb.0: 7044; PWR8-NEXT: vspltisw 3, 13 7045; PWR8-NEXT: vpopcntw 2, 2 7046; PWR8-NEXT: vcmpgtuw 2, 3, 2 7047; PWR8-NEXT: blr 7048; 7049; PWR9-LABEL: ult_13_v4i32: 7050; PWR9: # %bb.0: 7051; PWR9-NEXT: vpopcntw 2, 2 7052; PWR9-NEXT: vspltisw 3, 13 7053; PWR9-NEXT: vcmpgtuw 2, 3, 2 7054; PWR9-NEXT: blr 7055 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 7056 %3 = icmp ult <4 x i32> %2, <i32 13, i32 13, i32 13, i32 13> 7057 %4 = sext <4 x i1> %3 to <4 x i32> 7058 ret <4 x i32> %4 7059} 7060 7061define <4 x i32> @ugt_13_v4i32(<4 x i32> %0) { 7062; PWR5-LABEL: ugt_13_v4i32: 7063; PWR5: # %bb.0: 7064; PWR5-NEXT: addis 3, 2, .LCPI64_0@toc@ha 7065; PWR5-NEXT: vspltisw 4, 1 7066; PWR5-NEXT: vxor 3, 3, 3 7067; PWR5-NEXT: addi 3, 3, .LCPI64_0@toc@l 7068; PWR5-NEXT: lvx 5, 0, 3 7069; PWR5-NEXT: addis 3, 2, .LCPI64_1@toc@ha 7070; PWR5-NEXT: addi 3, 3, .LCPI64_1@toc@l 7071; PWR5-NEXT: vspltisw 0, 2 7072; PWR5-NEXT: vsrw 4, 2, 4 7073; PWR5-NEXT: vand 4, 4, 5 7074; PWR5-NEXT: lvx 5, 0, 3 7075; PWR5-NEXT: vsubuwm 2, 2, 4 7076; PWR5-NEXT: vand 4, 2, 5 7077; PWR5-NEXT: vsrw 2, 2, 0 7078; PWR5-NEXT: vand 2, 2, 5 7079; PWR5-NEXT: vspltisw 5, 4 7080; PWR5-NEXT: vadduwm 2, 4, 2 7081; PWR5-NEXT: vsrw 4, 2, 5 7082; PWR5-NEXT: vspltisb 5, 15 7083; PWR5-NEXT: vadduwm 2, 2, 4 7084; PWR5-NEXT: vspltisb 4, 1 7085; PWR5-NEXT: vand 2, 2, 5 7086; PWR5-NEXT: vspltisw 5, -16 7087; PWR5-NEXT: vrlw 0, 4, 5 7088; PWR5-NEXT: vmulouh 4, 2, 4 7089; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 7090; PWR5-NEXT: vspltisw 3, 12 7091; PWR5-NEXT: vadduwm 3, 3, 3 7092; PWR5-NEXT: vslw 2, 2, 5 7093; PWR5-NEXT: vadduwm 2, 4, 2 7094; PWR5-NEXT: vsrw 2, 2, 3 7095; PWR5-NEXT: vspltisw 3, 13 7096; PWR5-NEXT: vcmpgtuw 2, 2, 3 7097; PWR5-NEXT: blr 7098; 7099; PWR6-LABEL: ugt_13_v4i32: 7100; PWR6: # %bb.0: 7101; PWR6-NEXT: addis 3, 2, .LCPI64_0@toc@ha 7102; PWR6-NEXT: vspltisw 4, 1 7103; PWR6-NEXT: vxor 3, 3, 3 7104; PWR6-NEXT: addi 3, 3, .LCPI64_0@toc@l 7105; PWR6-NEXT: lvx 5, 0, 3 7106; PWR6-NEXT: addis 3, 2, .LCPI64_1@toc@ha 7107; PWR6-NEXT: addi 3, 3, .LCPI64_1@toc@l 7108; PWR6-NEXT: vspltisw 0, 2 7109; PWR6-NEXT: vsrw 4, 2, 4 7110; PWR6-NEXT: vand 4, 4, 5 7111; PWR6-NEXT: lvx 5, 0, 3 7112; PWR6-NEXT: vsubuwm 2, 2, 4 7113; PWR6-NEXT: vand 4, 2, 5 7114; PWR6-NEXT: vsrw 2, 2, 0 7115; PWR6-NEXT: vand 2, 2, 5 7116; PWR6-NEXT: vspltisw 5, 4 7117; PWR6-NEXT: vadduwm 2, 4, 2 7118; PWR6-NEXT: vsrw 4, 2, 5 7119; PWR6-NEXT: vspltisb 5, 15 7120; PWR6-NEXT: vadduwm 2, 2, 4 7121; PWR6-NEXT: vspltisb 4, 1 7122; PWR6-NEXT: vand 2, 2, 5 7123; PWR6-NEXT: vspltisw 5, -16 7124; PWR6-NEXT: vrlw 0, 4, 5 7125; PWR6-NEXT: vmulouh 4, 2, 4 7126; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 7127; PWR6-NEXT: vspltisw 3, 12 7128; PWR6-NEXT: vadduwm 3, 3, 3 7129; PWR6-NEXT: vslw 2, 2, 5 7130; PWR6-NEXT: vadduwm 2, 4, 2 7131; PWR6-NEXT: vsrw 2, 2, 3 7132; PWR6-NEXT: vspltisw 3, 13 7133; PWR6-NEXT: vcmpgtuw 2, 2, 3 7134; PWR6-NEXT: blr 7135; 7136; PWR7-LABEL: ugt_13_v4i32: 7137; PWR7: # %bb.0: 7138; PWR7-NEXT: vspltisw 3, 1 7139; PWR7-NEXT: addis 3, 2, .LCPI64_0@toc@ha 7140; PWR7-NEXT: addi 3, 3, .LCPI64_0@toc@l 7141; PWR7-NEXT: vspltisw 4, 2 7142; PWR7-NEXT: lxvw4x 0, 0, 3 7143; PWR7-NEXT: addis 3, 2, .LCPI64_1@toc@ha 7144; PWR7-NEXT: vspltisw 5, -16 7145; PWR7-NEXT: vsrw 3, 2, 3 7146; PWR7-NEXT: addi 3, 3, .LCPI64_1@toc@l 7147; PWR7-NEXT: vspltisb 0, 15 7148; PWR7-NEXT: xxland 35, 35, 0 7149; PWR7-NEXT: lxvw4x 0, 0, 3 7150; PWR7-NEXT: vsubuwm 2, 2, 3 7151; PWR7-NEXT: vsrw 3, 2, 4 7152; PWR7-NEXT: xxland 34, 34, 0 7153; PWR7-NEXT: vspltisw 4, 4 7154; PWR7-NEXT: xxland 35, 35, 0 7155; PWR7-NEXT: vadduwm 2, 2, 3 7156; PWR7-NEXT: vsrw 3, 2, 4 7157; PWR7-NEXT: vspltisb 4, 1 7158; PWR7-NEXT: vrlw 1, 4, 5 7159; PWR7-NEXT: vadduwm 2, 2, 3 7160; PWR7-NEXT: xxlxor 35, 35, 35 7161; PWR7-NEXT: xxland 34, 34, 32 7162; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 7163; PWR7-NEXT: vmulouh 2, 2, 4 7164; PWR7-NEXT: vspltisw 4, 12 7165; PWR7-NEXT: vslw 3, 3, 5 7166; PWR7-NEXT: vadduwm 2, 2, 3 7167; PWR7-NEXT: vadduwm 3, 4, 4 7168; PWR7-NEXT: vsrw 2, 2, 3 7169; PWR7-NEXT: vspltisw 3, 13 7170; PWR7-NEXT: vcmpgtuw 2, 2, 3 7171; PWR7-NEXT: blr 7172; 7173; PWR8-LABEL: ugt_13_v4i32: 7174; PWR8: # %bb.0: 7175; PWR8-NEXT: vspltisw 3, 13 7176; PWR8-NEXT: vpopcntw 2, 2 7177; PWR8-NEXT: vcmpgtuw 2, 2, 3 7178; PWR8-NEXT: blr 7179; 7180; PWR9-LABEL: ugt_13_v4i32: 7181; PWR9: # %bb.0: 7182; PWR9-NEXT: vpopcntw 2, 2 7183; PWR9-NEXT: vspltisw 3, 13 7184; PWR9-NEXT: vcmpgtuw 2, 2, 3 7185; PWR9-NEXT: blr 7186 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 7187 %3 = icmp ugt <4 x i32> %2, <i32 13, i32 13, i32 13, i32 13> 7188 %4 = sext <4 x i1> %3 to <4 x i32> 7189 ret <4 x i32> %4 7190} 7191 7192define <4 x i32> @ult_14_v4i32(<4 x i32> %0) { 7193; PWR5-LABEL: ult_14_v4i32: 7194; PWR5: # %bb.0: 7195; PWR5-NEXT: addis 3, 2, .LCPI65_0@toc@ha 7196; PWR5-NEXT: vspltisw 4, 1 7197; PWR5-NEXT: vxor 3, 3, 3 7198; PWR5-NEXT: addi 3, 3, .LCPI65_0@toc@l 7199; PWR5-NEXT: lvx 5, 0, 3 7200; PWR5-NEXT: addis 3, 2, .LCPI65_1@toc@ha 7201; PWR5-NEXT: addi 3, 3, .LCPI65_1@toc@l 7202; PWR5-NEXT: vspltisw 0, 2 7203; PWR5-NEXT: vsrw 4, 2, 4 7204; PWR5-NEXT: vand 4, 4, 5 7205; PWR5-NEXT: lvx 5, 0, 3 7206; PWR5-NEXT: vsubuwm 2, 2, 4 7207; PWR5-NEXT: vand 4, 2, 5 7208; PWR5-NEXT: vsrw 2, 2, 0 7209; PWR5-NEXT: vand 2, 2, 5 7210; PWR5-NEXT: vspltisw 5, 4 7211; PWR5-NEXT: vadduwm 2, 4, 2 7212; PWR5-NEXT: vsrw 4, 2, 5 7213; PWR5-NEXT: vspltisb 5, 15 7214; PWR5-NEXT: vadduwm 2, 2, 4 7215; PWR5-NEXT: vspltisb 4, 1 7216; PWR5-NEXT: vand 2, 2, 5 7217; PWR5-NEXT: vspltisw 5, -16 7218; PWR5-NEXT: vrlw 0, 4, 5 7219; PWR5-NEXT: vmulouh 4, 2, 4 7220; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 7221; PWR5-NEXT: vspltisw 3, 12 7222; PWR5-NEXT: vadduwm 3, 3, 3 7223; PWR5-NEXT: vslw 2, 2, 5 7224; PWR5-NEXT: vadduwm 2, 4, 2 7225; PWR5-NEXT: vsrw 2, 2, 3 7226; PWR5-NEXT: vspltisw 3, 14 7227; PWR5-NEXT: vcmpgtuw 2, 3, 2 7228; PWR5-NEXT: blr 7229; 7230; PWR6-LABEL: ult_14_v4i32: 7231; PWR6: # %bb.0: 7232; PWR6-NEXT: addis 3, 2, .LCPI65_0@toc@ha 7233; PWR6-NEXT: vspltisw 4, 1 7234; PWR6-NEXT: vxor 3, 3, 3 7235; PWR6-NEXT: addi 3, 3, .LCPI65_0@toc@l 7236; PWR6-NEXT: lvx 5, 0, 3 7237; PWR6-NEXT: addis 3, 2, .LCPI65_1@toc@ha 7238; PWR6-NEXT: addi 3, 3, .LCPI65_1@toc@l 7239; PWR6-NEXT: vspltisw 0, 2 7240; PWR6-NEXT: vsrw 4, 2, 4 7241; PWR6-NEXT: vand 4, 4, 5 7242; PWR6-NEXT: lvx 5, 0, 3 7243; PWR6-NEXT: vsubuwm 2, 2, 4 7244; PWR6-NEXT: vand 4, 2, 5 7245; PWR6-NEXT: vsrw 2, 2, 0 7246; PWR6-NEXT: vand 2, 2, 5 7247; PWR6-NEXT: vspltisw 5, 4 7248; PWR6-NEXT: vadduwm 2, 4, 2 7249; PWR6-NEXT: vsrw 4, 2, 5 7250; PWR6-NEXT: vspltisb 5, 15 7251; PWR6-NEXT: vadduwm 2, 2, 4 7252; PWR6-NEXT: vspltisb 4, 1 7253; PWR6-NEXT: vand 2, 2, 5 7254; PWR6-NEXT: vspltisw 5, -16 7255; PWR6-NEXT: vrlw 0, 4, 5 7256; PWR6-NEXT: vmulouh 4, 2, 4 7257; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 7258; PWR6-NEXT: vspltisw 3, 12 7259; PWR6-NEXT: vadduwm 3, 3, 3 7260; PWR6-NEXT: vslw 2, 2, 5 7261; PWR6-NEXT: vadduwm 2, 4, 2 7262; PWR6-NEXT: vsrw 2, 2, 3 7263; PWR6-NEXT: vspltisw 3, 14 7264; PWR6-NEXT: vcmpgtuw 2, 3, 2 7265; PWR6-NEXT: blr 7266; 7267; PWR7-LABEL: ult_14_v4i32: 7268; PWR7: # %bb.0: 7269; PWR7-NEXT: vspltisw 3, 1 7270; PWR7-NEXT: addis 3, 2, .LCPI65_0@toc@ha 7271; PWR7-NEXT: addi 3, 3, .LCPI65_0@toc@l 7272; PWR7-NEXT: vspltisw 4, 2 7273; PWR7-NEXT: lxvw4x 0, 0, 3 7274; PWR7-NEXT: addis 3, 2, .LCPI65_1@toc@ha 7275; PWR7-NEXT: vspltisw 5, -16 7276; PWR7-NEXT: vsrw 3, 2, 3 7277; PWR7-NEXT: addi 3, 3, .LCPI65_1@toc@l 7278; PWR7-NEXT: vspltisb 0, 15 7279; PWR7-NEXT: xxland 35, 35, 0 7280; PWR7-NEXT: lxvw4x 0, 0, 3 7281; PWR7-NEXT: vsubuwm 2, 2, 3 7282; PWR7-NEXT: vsrw 3, 2, 4 7283; PWR7-NEXT: xxland 34, 34, 0 7284; PWR7-NEXT: vspltisw 4, 4 7285; PWR7-NEXT: xxland 35, 35, 0 7286; PWR7-NEXT: vadduwm 2, 2, 3 7287; PWR7-NEXT: vsrw 3, 2, 4 7288; PWR7-NEXT: vspltisb 4, 1 7289; PWR7-NEXT: vrlw 1, 4, 5 7290; PWR7-NEXT: vadduwm 2, 2, 3 7291; PWR7-NEXT: xxlxor 35, 35, 35 7292; PWR7-NEXT: xxland 34, 34, 32 7293; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 7294; PWR7-NEXT: vmulouh 2, 2, 4 7295; PWR7-NEXT: vspltisw 4, 12 7296; PWR7-NEXT: vslw 3, 3, 5 7297; PWR7-NEXT: vadduwm 2, 2, 3 7298; PWR7-NEXT: vadduwm 3, 4, 4 7299; PWR7-NEXT: vsrw 2, 2, 3 7300; PWR7-NEXT: vspltisw 3, 14 7301; PWR7-NEXT: vcmpgtuw 2, 3, 2 7302; PWR7-NEXT: blr 7303; 7304; PWR8-LABEL: ult_14_v4i32: 7305; PWR8: # %bb.0: 7306; PWR8-NEXT: vspltisw 3, 14 7307; PWR8-NEXT: vpopcntw 2, 2 7308; PWR8-NEXT: vcmpgtuw 2, 3, 2 7309; PWR8-NEXT: blr 7310; 7311; PWR9-LABEL: ult_14_v4i32: 7312; PWR9: # %bb.0: 7313; PWR9-NEXT: vpopcntw 2, 2 7314; PWR9-NEXT: vspltisw 3, 14 7315; PWR9-NEXT: vcmpgtuw 2, 3, 2 7316; PWR9-NEXT: blr 7317 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 7318 %3 = icmp ult <4 x i32> %2, <i32 14, i32 14, i32 14, i32 14> 7319 %4 = sext <4 x i1> %3 to <4 x i32> 7320 ret <4 x i32> %4 7321} 7322 7323define <4 x i32> @ugt_14_v4i32(<4 x i32> %0) { 7324; PWR5-LABEL: ugt_14_v4i32: 7325; PWR5: # %bb.0: 7326; PWR5-NEXT: addis 3, 2, .LCPI66_0@toc@ha 7327; PWR5-NEXT: vspltisw 4, 1 7328; PWR5-NEXT: vxor 3, 3, 3 7329; PWR5-NEXT: addi 3, 3, .LCPI66_0@toc@l 7330; PWR5-NEXT: lvx 5, 0, 3 7331; PWR5-NEXT: addis 3, 2, .LCPI66_1@toc@ha 7332; PWR5-NEXT: addi 3, 3, .LCPI66_1@toc@l 7333; PWR5-NEXT: vspltisw 0, 2 7334; PWR5-NEXT: vsrw 4, 2, 4 7335; PWR5-NEXT: vand 4, 4, 5 7336; PWR5-NEXT: lvx 5, 0, 3 7337; PWR5-NEXT: vsubuwm 2, 2, 4 7338; PWR5-NEXT: vand 4, 2, 5 7339; PWR5-NEXT: vsrw 2, 2, 0 7340; PWR5-NEXT: vand 2, 2, 5 7341; PWR5-NEXT: vspltisw 5, 4 7342; PWR5-NEXT: vadduwm 2, 4, 2 7343; PWR5-NEXT: vsrw 4, 2, 5 7344; PWR5-NEXT: vspltisb 5, 15 7345; PWR5-NEXT: vadduwm 2, 2, 4 7346; PWR5-NEXT: vspltisb 4, 1 7347; PWR5-NEXT: vand 2, 2, 5 7348; PWR5-NEXT: vspltisw 5, -16 7349; PWR5-NEXT: vrlw 0, 4, 5 7350; PWR5-NEXT: vmulouh 4, 2, 4 7351; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 7352; PWR5-NEXT: vspltisw 3, 12 7353; PWR5-NEXT: vadduwm 3, 3, 3 7354; PWR5-NEXT: vslw 2, 2, 5 7355; PWR5-NEXT: vadduwm 2, 4, 2 7356; PWR5-NEXT: vsrw 2, 2, 3 7357; PWR5-NEXT: vspltisw 3, 14 7358; PWR5-NEXT: vcmpgtuw 2, 2, 3 7359; PWR5-NEXT: blr 7360; 7361; PWR6-LABEL: ugt_14_v4i32: 7362; PWR6: # %bb.0: 7363; PWR6-NEXT: addis 3, 2, .LCPI66_0@toc@ha 7364; PWR6-NEXT: vspltisw 4, 1 7365; PWR6-NEXT: vxor 3, 3, 3 7366; PWR6-NEXT: addi 3, 3, .LCPI66_0@toc@l 7367; PWR6-NEXT: lvx 5, 0, 3 7368; PWR6-NEXT: addis 3, 2, .LCPI66_1@toc@ha 7369; PWR6-NEXT: addi 3, 3, .LCPI66_1@toc@l 7370; PWR6-NEXT: vspltisw 0, 2 7371; PWR6-NEXT: vsrw 4, 2, 4 7372; PWR6-NEXT: vand 4, 4, 5 7373; PWR6-NEXT: lvx 5, 0, 3 7374; PWR6-NEXT: vsubuwm 2, 2, 4 7375; PWR6-NEXT: vand 4, 2, 5 7376; PWR6-NEXT: vsrw 2, 2, 0 7377; PWR6-NEXT: vand 2, 2, 5 7378; PWR6-NEXT: vspltisw 5, 4 7379; PWR6-NEXT: vadduwm 2, 4, 2 7380; PWR6-NEXT: vsrw 4, 2, 5 7381; PWR6-NEXT: vspltisb 5, 15 7382; PWR6-NEXT: vadduwm 2, 2, 4 7383; PWR6-NEXT: vspltisb 4, 1 7384; PWR6-NEXT: vand 2, 2, 5 7385; PWR6-NEXT: vspltisw 5, -16 7386; PWR6-NEXT: vrlw 0, 4, 5 7387; PWR6-NEXT: vmulouh 4, 2, 4 7388; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 7389; PWR6-NEXT: vspltisw 3, 12 7390; PWR6-NEXT: vadduwm 3, 3, 3 7391; PWR6-NEXT: vslw 2, 2, 5 7392; PWR6-NEXT: vadduwm 2, 4, 2 7393; PWR6-NEXT: vsrw 2, 2, 3 7394; PWR6-NEXT: vspltisw 3, 14 7395; PWR6-NEXT: vcmpgtuw 2, 2, 3 7396; PWR6-NEXT: blr 7397; 7398; PWR7-LABEL: ugt_14_v4i32: 7399; PWR7: # %bb.0: 7400; PWR7-NEXT: vspltisw 3, 1 7401; PWR7-NEXT: addis 3, 2, .LCPI66_0@toc@ha 7402; PWR7-NEXT: addi 3, 3, .LCPI66_0@toc@l 7403; PWR7-NEXT: vspltisw 4, 2 7404; PWR7-NEXT: lxvw4x 0, 0, 3 7405; PWR7-NEXT: addis 3, 2, .LCPI66_1@toc@ha 7406; PWR7-NEXT: vspltisw 5, -16 7407; PWR7-NEXT: vsrw 3, 2, 3 7408; PWR7-NEXT: addi 3, 3, .LCPI66_1@toc@l 7409; PWR7-NEXT: vspltisb 0, 15 7410; PWR7-NEXT: xxland 35, 35, 0 7411; PWR7-NEXT: lxvw4x 0, 0, 3 7412; PWR7-NEXT: vsubuwm 2, 2, 3 7413; PWR7-NEXT: vsrw 3, 2, 4 7414; PWR7-NEXT: xxland 34, 34, 0 7415; PWR7-NEXT: vspltisw 4, 4 7416; PWR7-NEXT: xxland 35, 35, 0 7417; PWR7-NEXT: vadduwm 2, 2, 3 7418; PWR7-NEXT: vsrw 3, 2, 4 7419; PWR7-NEXT: vspltisb 4, 1 7420; PWR7-NEXT: vrlw 1, 4, 5 7421; PWR7-NEXT: vadduwm 2, 2, 3 7422; PWR7-NEXT: xxlxor 35, 35, 35 7423; PWR7-NEXT: xxland 34, 34, 32 7424; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 7425; PWR7-NEXT: vmulouh 2, 2, 4 7426; PWR7-NEXT: vspltisw 4, 12 7427; PWR7-NEXT: vslw 3, 3, 5 7428; PWR7-NEXT: vadduwm 2, 2, 3 7429; PWR7-NEXT: vadduwm 3, 4, 4 7430; PWR7-NEXT: vsrw 2, 2, 3 7431; PWR7-NEXT: vspltisw 3, 14 7432; PWR7-NEXT: vcmpgtuw 2, 2, 3 7433; PWR7-NEXT: blr 7434; 7435; PWR8-LABEL: ugt_14_v4i32: 7436; PWR8: # %bb.0: 7437; PWR8-NEXT: vspltisw 3, 14 7438; PWR8-NEXT: vpopcntw 2, 2 7439; PWR8-NEXT: vcmpgtuw 2, 2, 3 7440; PWR8-NEXT: blr 7441; 7442; PWR9-LABEL: ugt_14_v4i32: 7443; PWR9: # %bb.0: 7444; PWR9-NEXT: vpopcntw 2, 2 7445; PWR9-NEXT: vspltisw 3, 14 7446; PWR9-NEXT: vcmpgtuw 2, 2, 3 7447; PWR9-NEXT: blr 7448 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 7449 %3 = icmp ugt <4 x i32> %2, <i32 14, i32 14, i32 14, i32 14> 7450 %4 = sext <4 x i1> %3 to <4 x i32> 7451 ret <4 x i32> %4 7452} 7453 7454define <4 x i32> @ult_15_v4i32(<4 x i32> %0) { 7455; PWR5-LABEL: ult_15_v4i32: 7456; PWR5: # %bb.0: 7457; PWR5-NEXT: addis 3, 2, .LCPI67_0@toc@ha 7458; PWR5-NEXT: vspltisw 4, 1 7459; PWR5-NEXT: vxor 3, 3, 3 7460; PWR5-NEXT: addi 3, 3, .LCPI67_0@toc@l 7461; PWR5-NEXT: lvx 5, 0, 3 7462; PWR5-NEXT: addis 3, 2, .LCPI67_1@toc@ha 7463; PWR5-NEXT: addi 3, 3, .LCPI67_1@toc@l 7464; PWR5-NEXT: vspltisw 0, 2 7465; PWR5-NEXT: vsrw 4, 2, 4 7466; PWR5-NEXT: vand 4, 4, 5 7467; PWR5-NEXT: lvx 5, 0, 3 7468; PWR5-NEXT: vsubuwm 2, 2, 4 7469; PWR5-NEXT: vand 4, 2, 5 7470; PWR5-NEXT: vsrw 2, 2, 0 7471; PWR5-NEXT: vand 2, 2, 5 7472; PWR5-NEXT: vspltisw 5, 4 7473; PWR5-NEXT: vadduwm 2, 4, 2 7474; PWR5-NEXT: vsrw 4, 2, 5 7475; PWR5-NEXT: vspltisb 5, 15 7476; PWR5-NEXT: vadduwm 2, 2, 4 7477; PWR5-NEXT: vspltisb 4, 1 7478; PWR5-NEXT: vand 2, 2, 5 7479; PWR5-NEXT: vspltisw 5, -16 7480; PWR5-NEXT: vrlw 0, 4, 5 7481; PWR5-NEXT: vmulouh 4, 2, 4 7482; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 7483; PWR5-NEXT: vspltisw 3, 12 7484; PWR5-NEXT: vadduwm 3, 3, 3 7485; PWR5-NEXT: vslw 2, 2, 5 7486; PWR5-NEXT: vadduwm 2, 4, 2 7487; PWR5-NEXT: vsrw 2, 2, 3 7488; PWR5-NEXT: vspltisw 3, 15 7489; PWR5-NEXT: vcmpgtuw 2, 3, 2 7490; PWR5-NEXT: blr 7491; 7492; PWR6-LABEL: ult_15_v4i32: 7493; PWR6: # %bb.0: 7494; PWR6-NEXT: addis 3, 2, .LCPI67_0@toc@ha 7495; PWR6-NEXT: vspltisw 4, 1 7496; PWR6-NEXT: vxor 3, 3, 3 7497; PWR6-NEXT: addi 3, 3, .LCPI67_0@toc@l 7498; PWR6-NEXT: lvx 5, 0, 3 7499; PWR6-NEXT: addis 3, 2, .LCPI67_1@toc@ha 7500; PWR6-NEXT: addi 3, 3, .LCPI67_1@toc@l 7501; PWR6-NEXT: vspltisw 0, 2 7502; PWR6-NEXT: vsrw 4, 2, 4 7503; PWR6-NEXT: vand 4, 4, 5 7504; PWR6-NEXT: lvx 5, 0, 3 7505; PWR6-NEXT: vsubuwm 2, 2, 4 7506; PWR6-NEXT: vand 4, 2, 5 7507; PWR6-NEXT: vsrw 2, 2, 0 7508; PWR6-NEXT: vand 2, 2, 5 7509; PWR6-NEXT: vspltisw 5, 4 7510; PWR6-NEXT: vadduwm 2, 4, 2 7511; PWR6-NEXT: vsrw 4, 2, 5 7512; PWR6-NEXT: vspltisb 5, 15 7513; PWR6-NEXT: vadduwm 2, 2, 4 7514; PWR6-NEXT: vspltisb 4, 1 7515; PWR6-NEXT: vand 2, 2, 5 7516; PWR6-NEXT: vspltisw 5, -16 7517; PWR6-NEXT: vrlw 0, 4, 5 7518; PWR6-NEXT: vmulouh 4, 2, 4 7519; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 7520; PWR6-NEXT: vspltisw 3, 12 7521; PWR6-NEXT: vadduwm 3, 3, 3 7522; PWR6-NEXT: vslw 2, 2, 5 7523; PWR6-NEXT: vadduwm 2, 4, 2 7524; PWR6-NEXT: vsrw 2, 2, 3 7525; PWR6-NEXT: vspltisw 3, 15 7526; PWR6-NEXT: vcmpgtuw 2, 3, 2 7527; PWR6-NEXT: blr 7528; 7529; PWR7-LABEL: ult_15_v4i32: 7530; PWR7: # %bb.0: 7531; PWR7-NEXT: vspltisw 3, 1 7532; PWR7-NEXT: addis 3, 2, .LCPI67_0@toc@ha 7533; PWR7-NEXT: addi 3, 3, .LCPI67_0@toc@l 7534; PWR7-NEXT: vspltisw 4, 2 7535; PWR7-NEXT: lxvw4x 0, 0, 3 7536; PWR7-NEXT: addis 3, 2, .LCPI67_1@toc@ha 7537; PWR7-NEXT: vspltisw 5, -16 7538; PWR7-NEXT: vsrw 3, 2, 3 7539; PWR7-NEXT: addi 3, 3, .LCPI67_1@toc@l 7540; PWR7-NEXT: vspltisb 0, 15 7541; PWR7-NEXT: xxland 35, 35, 0 7542; PWR7-NEXT: lxvw4x 0, 0, 3 7543; PWR7-NEXT: vsubuwm 2, 2, 3 7544; PWR7-NEXT: vsrw 3, 2, 4 7545; PWR7-NEXT: xxland 34, 34, 0 7546; PWR7-NEXT: vspltisw 4, 4 7547; PWR7-NEXT: xxland 35, 35, 0 7548; PWR7-NEXT: vadduwm 2, 2, 3 7549; PWR7-NEXT: vsrw 3, 2, 4 7550; PWR7-NEXT: vspltisb 4, 1 7551; PWR7-NEXT: vrlw 1, 4, 5 7552; PWR7-NEXT: vadduwm 2, 2, 3 7553; PWR7-NEXT: xxlxor 35, 35, 35 7554; PWR7-NEXT: xxland 34, 34, 32 7555; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 7556; PWR7-NEXT: vmulouh 2, 2, 4 7557; PWR7-NEXT: vspltisw 4, 12 7558; PWR7-NEXT: vslw 3, 3, 5 7559; PWR7-NEXT: vadduwm 2, 2, 3 7560; PWR7-NEXT: vadduwm 3, 4, 4 7561; PWR7-NEXT: vsrw 2, 2, 3 7562; PWR7-NEXT: vspltisw 3, 15 7563; PWR7-NEXT: vcmpgtuw 2, 3, 2 7564; PWR7-NEXT: blr 7565; 7566; PWR8-LABEL: ult_15_v4i32: 7567; PWR8: # %bb.0: 7568; PWR8-NEXT: vspltisw 3, 15 7569; PWR8-NEXT: vpopcntw 2, 2 7570; PWR8-NEXT: vcmpgtuw 2, 3, 2 7571; PWR8-NEXT: blr 7572; 7573; PWR9-LABEL: ult_15_v4i32: 7574; PWR9: # %bb.0: 7575; PWR9-NEXT: vpopcntw 2, 2 7576; PWR9-NEXT: vspltisw 3, 15 7577; PWR9-NEXT: vcmpgtuw 2, 3, 2 7578; PWR9-NEXT: blr 7579 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 7580 %3 = icmp ult <4 x i32> %2, <i32 15, i32 15, i32 15, i32 15> 7581 %4 = sext <4 x i1> %3 to <4 x i32> 7582 ret <4 x i32> %4 7583} 7584 7585define <4 x i32> @ugt_15_v4i32(<4 x i32> %0) { 7586; PWR5-LABEL: ugt_15_v4i32: 7587; PWR5: # %bb.0: 7588; PWR5-NEXT: addis 3, 2, .LCPI68_0@toc@ha 7589; PWR5-NEXT: vspltisw 4, 1 7590; PWR5-NEXT: vxor 3, 3, 3 7591; PWR5-NEXT: addi 3, 3, .LCPI68_0@toc@l 7592; PWR5-NEXT: lvx 5, 0, 3 7593; PWR5-NEXT: addis 3, 2, .LCPI68_1@toc@ha 7594; PWR5-NEXT: addi 3, 3, .LCPI68_1@toc@l 7595; PWR5-NEXT: vspltisw 0, 2 7596; PWR5-NEXT: vsrw 4, 2, 4 7597; PWR5-NEXT: vand 4, 4, 5 7598; PWR5-NEXT: lvx 5, 0, 3 7599; PWR5-NEXT: vsubuwm 2, 2, 4 7600; PWR5-NEXT: vand 4, 2, 5 7601; PWR5-NEXT: vsrw 2, 2, 0 7602; PWR5-NEXT: vand 2, 2, 5 7603; PWR5-NEXT: vspltisw 5, 4 7604; PWR5-NEXT: vadduwm 2, 4, 2 7605; PWR5-NEXT: vsrw 4, 2, 5 7606; PWR5-NEXT: vspltisb 5, 15 7607; PWR5-NEXT: vadduwm 2, 2, 4 7608; PWR5-NEXT: vspltisb 4, 1 7609; PWR5-NEXT: vand 2, 2, 5 7610; PWR5-NEXT: vspltisw 5, -16 7611; PWR5-NEXT: vrlw 0, 4, 5 7612; PWR5-NEXT: vmulouh 4, 2, 4 7613; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 7614; PWR5-NEXT: vspltisw 3, 12 7615; PWR5-NEXT: vadduwm 3, 3, 3 7616; PWR5-NEXT: vslw 2, 2, 5 7617; PWR5-NEXT: vadduwm 2, 4, 2 7618; PWR5-NEXT: vsrw 2, 2, 3 7619; PWR5-NEXT: vspltisw 3, 15 7620; PWR5-NEXT: vcmpgtuw 2, 2, 3 7621; PWR5-NEXT: blr 7622; 7623; PWR6-LABEL: ugt_15_v4i32: 7624; PWR6: # %bb.0: 7625; PWR6-NEXT: addis 3, 2, .LCPI68_0@toc@ha 7626; PWR6-NEXT: vspltisw 4, 1 7627; PWR6-NEXT: vxor 3, 3, 3 7628; PWR6-NEXT: addi 3, 3, .LCPI68_0@toc@l 7629; PWR6-NEXT: lvx 5, 0, 3 7630; PWR6-NEXT: addis 3, 2, .LCPI68_1@toc@ha 7631; PWR6-NEXT: addi 3, 3, .LCPI68_1@toc@l 7632; PWR6-NEXT: vspltisw 0, 2 7633; PWR6-NEXT: vsrw 4, 2, 4 7634; PWR6-NEXT: vand 4, 4, 5 7635; PWR6-NEXT: lvx 5, 0, 3 7636; PWR6-NEXT: vsubuwm 2, 2, 4 7637; PWR6-NEXT: vand 4, 2, 5 7638; PWR6-NEXT: vsrw 2, 2, 0 7639; PWR6-NEXT: vand 2, 2, 5 7640; PWR6-NEXT: vspltisw 5, 4 7641; PWR6-NEXT: vadduwm 2, 4, 2 7642; PWR6-NEXT: vsrw 4, 2, 5 7643; PWR6-NEXT: vspltisb 5, 15 7644; PWR6-NEXT: vadduwm 2, 2, 4 7645; PWR6-NEXT: vspltisb 4, 1 7646; PWR6-NEXT: vand 2, 2, 5 7647; PWR6-NEXT: vspltisw 5, -16 7648; PWR6-NEXT: vrlw 0, 4, 5 7649; PWR6-NEXT: vmulouh 4, 2, 4 7650; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 7651; PWR6-NEXT: vspltisw 3, 12 7652; PWR6-NEXT: vadduwm 3, 3, 3 7653; PWR6-NEXT: vslw 2, 2, 5 7654; PWR6-NEXT: vadduwm 2, 4, 2 7655; PWR6-NEXT: vsrw 2, 2, 3 7656; PWR6-NEXT: vspltisw 3, 15 7657; PWR6-NEXT: vcmpgtuw 2, 2, 3 7658; PWR6-NEXT: blr 7659; 7660; PWR7-LABEL: ugt_15_v4i32: 7661; PWR7: # %bb.0: 7662; PWR7-NEXT: vspltisw 3, 1 7663; PWR7-NEXT: addis 3, 2, .LCPI68_0@toc@ha 7664; PWR7-NEXT: addi 3, 3, .LCPI68_0@toc@l 7665; PWR7-NEXT: vspltisw 4, 2 7666; PWR7-NEXT: lxvw4x 0, 0, 3 7667; PWR7-NEXT: addis 3, 2, .LCPI68_1@toc@ha 7668; PWR7-NEXT: vspltisw 5, -16 7669; PWR7-NEXT: vsrw 3, 2, 3 7670; PWR7-NEXT: addi 3, 3, .LCPI68_1@toc@l 7671; PWR7-NEXT: vspltisb 0, 15 7672; PWR7-NEXT: xxland 35, 35, 0 7673; PWR7-NEXT: lxvw4x 0, 0, 3 7674; PWR7-NEXT: vsubuwm 2, 2, 3 7675; PWR7-NEXT: vsrw 3, 2, 4 7676; PWR7-NEXT: xxland 34, 34, 0 7677; PWR7-NEXT: vspltisw 4, 4 7678; PWR7-NEXT: xxland 35, 35, 0 7679; PWR7-NEXT: vadduwm 2, 2, 3 7680; PWR7-NEXT: vsrw 3, 2, 4 7681; PWR7-NEXT: vspltisb 4, 1 7682; PWR7-NEXT: vrlw 1, 4, 5 7683; PWR7-NEXT: vadduwm 2, 2, 3 7684; PWR7-NEXT: xxlxor 35, 35, 35 7685; PWR7-NEXT: xxland 34, 34, 32 7686; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 7687; PWR7-NEXT: vmulouh 2, 2, 4 7688; PWR7-NEXT: vspltisw 4, 12 7689; PWR7-NEXT: vslw 3, 3, 5 7690; PWR7-NEXT: vadduwm 2, 2, 3 7691; PWR7-NEXT: vadduwm 3, 4, 4 7692; PWR7-NEXT: vsrw 2, 2, 3 7693; PWR7-NEXT: vspltisw 3, 15 7694; PWR7-NEXT: vcmpgtuw 2, 2, 3 7695; PWR7-NEXT: blr 7696; 7697; PWR8-LABEL: ugt_15_v4i32: 7698; PWR8: # %bb.0: 7699; PWR8-NEXT: vspltisw 3, 15 7700; PWR8-NEXT: vpopcntw 2, 2 7701; PWR8-NEXT: vcmpgtuw 2, 2, 3 7702; PWR8-NEXT: blr 7703; 7704; PWR9-LABEL: ugt_15_v4i32: 7705; PWR9: # %bb.0: 7706; PWR9-NEXT: vpopcntw 2, 2 7707; PWR9-NEXT: vspltisw 3, 15 7708; PWR9-NEXT: vcmpgtuw 2, 2, 3 7709; PWR9-NEXT: blr 7710 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 7711 %3 = icmp ugt <4 x i32> %2, <i32 15, i32 15, i32 15, i32 15> 7712 %4 = sext <4 x i1> %3 to <4 x i32> 7713 ret <4 x i32> %4 7714} 7715 7716define <4 x i32> @ult_16_v4i32(<4 x i32> %0) { 7717; PWR5-LABEL: ult_16_v4i32: 7718; PWR5: # %bb.0: 7719; PWR5-NEXT: addis 3, 2, .LCPI69_0@toc@ha 7720; PWR5-NEXT: vspltisw 4, 1 7721; PWR5-NEXT: vxor 3, 3, 3 7722; PWR5-NEXT: addi 3, 3, .LCPI69_0@toc@l 7723; PWR5-NEXT: lvx 5, 0, 3 7724; PWR5-NEXT: addis 3, 2, .LCPI69_1@toc@ha 7725; PWR5-NEXT: addi 3, 3, .LCPI69_1@toc@l 7726; PWR5-NEXT: vspltisw 0, 2 7727; PWR5-NEXT: vsrw 4, 2, 4 7728; PWR5-NEXT: vand 4, 4, 5 7729; PWR5-NEXT: lvx 5, 0, 3 7730; PWR5-NEXT: vsubuwm 2, 2, 4 7731; PWR5-NEXT: vand 4, 2, 5 7732; PWR5-NEXT: vsrw 2, 2, 0 7733; PWR5-NEXT: vand 2, 2, 5 7734; PWR5-NEXT: vspltisw 5, 4 7735; PWR5-NEXT: vadduwm 2, 4, 2 7736; PWR5-NEXT: vsrw 4, 2, 5 7737; PWR5-NEXT: vspltisb 5, 15 7738; PWR5-NEXT: vadduwm 2, 2, 4 7739; PWR5-NEXT: vspltisb 4, 1 7740; PWR5-NEXT: vand 2, 2, 5 7741; PWR5-NEXT: vspltisw 5, -16 7742; PWR5-NEXT: vrlw 0, 4, 5 7743; PWR5-NEXT: vmulouh 4, 2, 4 7744; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 7745; PWR5-NEXT: vspltisw 3, 12 7746; PWR5-NEXT: vadduwm 3, 3, 3 7747; PWR5-NEXT: vslw 2, 2, 5 7748; PWR5-NEXT: vadduwm 2, 4, 2 7749; PWR5-NEXT: vsrw 2, 2, 3 7750; PWR5-NEXT: vspltisw 3, 8 7751; PWR5-NEXT: vadduwm 3, 3, 3 7752; PWR5-NEXT: vcmpgtuw 2, 3, 2 7753; PWR5-NEXT: blr 7754; 7755; PWR6-LABEL: ult_16_v4i32: 7756; PWR6: # %bb.0: 7757; PWR6-NEXT: addis 3, 2, .LCPI69_0@toc@ha 7758; PWR6-NEXT: vspltisw 4, 1 7759; PWR6-NEXT: vxor 3, 3, 3 7760; PWR6-NEXT: addi 3, 3, .LCPI69_0@toc@l 7761; PWR6-NEXT: lvx 5, 0, 3 7762; PWR6-NEXT: addis 3, 2, .LCPI69_1@toc@ha 7763; PWR6-NEXT: addi 3, 3, .LCPI69_1@toc@l 7764; PWR6-NEXT: vspltisw 0, 2 7765; PWR6-NEXT: vsrw 4, 2, 4 7766; PWR6-NEXT: vand 4, 4, 5 7767; PWR6-NEXT: lvx 5, 0, 3 7768; PWR6-NEXT: vsubuwm 2, 2, 4 7769; PWR6-NEXT: vand 4, 2, 5 7770; PWR6-NEXT: vsrw 2, 2, 0 7771; PWR6-NEXT: vand 2, 2, 5 7772; PWR6-NEXT: vspltisw 5, 4 7773; PWR6-NEXT: vadduwm 2, 4, 2 7774; PWR6-NEXT: vsrw 4, 2, 5 7775; PWR6-NEXT: vspltisb 5, 15 7776; PWR6-NEXT: vadduwm 2, 2, 4 7777; PWR6-NEXT: vspltisb 4, 1 7778; PWR6-NEXT: vand 2, 2, 5 7779; PWR6-NEXT: vspltisw 5, -16 7780; PWR6-NEXT: vrlw 0, 4, 5 7781; PWR6-NEXT: vmulouh 4, 2, 4 7782; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 7783; PWR6-NEXT: vspltisw 3, 12 7784; PWR6-NEXT: vadduwm 3, 3, 3 7785; PWR6-NEXT: vslw 2, 2, 5 7786; PWR6-NEXT: vadduwm 2, 4, 2 7787; PWR6-NEXT: vsrw 2, 2, 3 7788; PWR6-NEXT: vspltisw 3, 8 7789; PWR6-NEXT: vadduwm 3, 3, 3 7790; PWR6-NEXT: vcmpgtuw 2, 3, 2 7791; PWR6-NEXT: blr 7792; 7793; PWR7-LABEL: ult_16_v4i32: 7794; PWR7: # %bb.0: 7795; PWR7-NEXT: vspltisw 3, 1 7796; PWR7-NEXT: addis 3, 2, .LCPI69_0@toc@ha 7797; PWR7-NEXT: addi 3, 3, .LCPI69_0@toc@l 7798; PWR7-NEXT: vspltisw 4, 2 7799; PWR7-NEXT: lxvw4x 0, 0, 3 7800; PWR7-NEXT: addis 3, 2, .LCPI69_1@toc@ha 7801; PWR7-NEXT: vspltisw 5, -16 7802; PWR7-NEXT: vsrw 3, 2, 3 7803; PWR7-NEXT: addi 3, 3, .LCPI69_1@toc@l 7804; PWR7-NEXT: vspltisb 0, 15 7805; PWR7-NEXT: xxland 35, 35, 0 7806; PWR7-NEXT: lxvw4x 0, 0, 3 7807; PWR7-NEXT: vsubuwm 2, 2, 3 7808; PWR7-NEXT: vsrw 3, 2, 4 7809; PWR7-NEXT: xxland 34, 34, 0 7810; PWR7-NEXT: vspltisw 4, 4 7811; PWR7-NEXT: xxland 35, 35, 0 7812; PWR7-NEXT: vadduwm 2, 2, 3 7813; PWR7-NEXT: vsrw 3, 2, 4 7814; PWR7-NEXT: vspltisb 4, 1 7815; PWR7-NEXT: vrlw 1, 4, 5 7816; PWR7-NEXT: vadduwm 2, 2, 3 7817; PWR7-NEXT: xxlxor 35, 35, 35 7818; PWR7-NEXT: xxland 34, 34, 32 7819; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 7820; PWR7-NEXT: vmulouh 2, 2, 4 7821; PWR7-NEXT: vspltisw 4, 12 7822; PWR7-NEXT: vslw 3, 3, 5 7823; PWR7-NEXT: vadduwm 2, 2, 3 7824; PWR7-NEXT: vadduwm 3, 4, 4 7825; PWR7-NEXT: vsrw 2, 2, 3 7826; PWR7-NEXT: vspltisw 3, 8 7827; PWR7-NEXT: vadduwm 3, 3, 3 7828; PWR7-NEXT: vcmpgtuw 2, 3, 2 7829; PWR7-NEXT: blr 7830; 7831; PWR8-LABEL: ult_16_v4i32: 7832; PWR8: # %bb.0: 7833; PWR8-NEXT: vspltisw 3, 8 7834; PWR8-NEXT: vpopcntw 2, 2 7835; PWR8-NEXT: vadduwm 3, 3, 3 7836; PWR8-NEXT: vcmpgtuw 2, 3, 2 7837; PWR8-NEXT: blr 7838; 7839; PWR9-LABEL: ult_16_v4i32: 7840; PWR9: # %bb.0: 7841; PWR9-NEXT: vspltisw 3, 8 7842; PWR9-NEXT: vpopcntw 2, 2 7843; PWR9-NEXT: vadduwm 3, 3, 3 7844; PWR9-NEXT: vcmpgtuw 2, 3, 2 7845; PWR9-NEXT: blr 7846 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 7847 %3 = icmp ult <4 x i32> %2, <i32 16, i32 16, i32 16, i32 16> 7848 %4 = sext <4 x i1> %3 to <4 x i32> 7849 ret <4 x i32> %4 7850} 7851 7852define <4 x i32> @ugt_16_v4i32(<4 x i32> %0) { 7853; PWR5-LABEL: ugt_16_v4i32: 7854; PWR5: # %bb.0: 7855; PWR5-NEXT: addis 3, 2, .LCPI70_0@toc@ha 7856; PWR5-NEXT: vspltisw 4, 1 7857; PWR5-NEXT: vxor 3, 3, 3 7858; PWR5-NEXT: addi 3, 3, .LCPI70_0@toc@l 7859; PWR5-NEXT: lvx 5, 0, 3 7860; PWR5-NEXT: addis 3, 2, .LCPI70_1@toc@ha 7861; PWR5-NEXT: addi 3, 3, .LCPI70_1@toc@l 7862; PWR5-NEXT: vspltisw 0, 2 7863; PWR5-NEXT: vsrw 4, 2, 4 7864; PWR5-NEXT: vand 4, 4, 5 7865; PWR5-NEXT: lvx 5, 0, 3 7866; PWR5-NEXT: vsubuwm 2, 2, 4 7867; PWR5-NEXT: vand 4, 2, 5 7868; PWR5-NEXT: vsrw 2, 2, 0 7869; PWR5-NEXT: vand 2, 2, 5 7870; PWR5-NEXT: vspltisw 5, 4 7871; PWR5-NEXT: vadduwm 2, 4, 2 7872; PWR5-NEXT: vsrw 4, 2, 5 7873; PWR5-NEXT: vspltisb 5, 15 7874; PWR5-NEXT: vadduwm 2, 2, 4 7875; PWR5-NEXT: vspltisb 4, 1 7876; PWR5-NEXT: vand 2, 2, 5 7877; PWR5-NEXT: vspltisw 5, -16 7878; PWR5-NEXT: vrlw 0, 4, 5 7879; PWR5-NEXT: vmulouh 4, 2, 4 7880; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 7881; PWR5-NEXT: vspltisw 3, 12 7882; PWR5-NEXT: vadduwm 3, 3, 3 7883; PWR5-NEXT: vslw 2, 2, 5 7884; PWR5-NEXT: vadduwm 2, 4, 2 7885; PWR5-NEXT: vsrw 2, 2, 3 7886; PWR5-NEXT: vspltisw 3, 8 7887; PWR5-NEXT: vadduwm 3, 3, 3 7888; PWR5-NEXT: vcmpgtuw 2, 2, 3 7889; PWR5-NEXT: blr 7890; 7891; PWR6-LABEL: ugt_16_v4i32: 7892; PWR6: # %bb.0: 7893; PWR6-NEXT: addis 3, 2, .LCPI70_0@toc@ha 7894; PWR6-NEXT: vspltisw 4, 1 7895; PWR6-NEXT: vxor 3, 3, 3 7896; PWR6-NEXT: addi 3, 3, .LCPI70_0@toc@l 7897; PWR6-NEXT: lvx 5, 0, 3 7898; PWR6-NEXT: addis 3, 2, .LCPI70_1@toc@ha 7899; PWR6-NEXT: addi 3, 3, .LCPI70_1@toc@l 7900; PWR6-NEXT: vspltisw 0, 2 7901; PWR6-NEXT: vsrw 4, 2, 4 7902; PWR6-NEXT: vand 4, 4, 5 7903; PWR6-NEXT: lvx 5, 0, 3 7904; PWR6-NEXT: vsubuwm 2, 2, 4 7905; PWR6-NEXT: vand 4, 2, 5 7906; PWR6-NEXT: vsrw 2, 2, 0 7907; PWR6-NEXT: vand 2, 2, 5 7908; PWR6-NEXT: vspltisw 5, 4 7909; PWR6-NEXT: vadduwm 2, 4, 2 7910; PWR6-NEXT: vsrw 4, 2, 5 7911; PWR6-NEXT: vspltisb 5, 15 7912; PWR6-NEXT: vadduwm 2, 2, 4 7913; PWR6-NEXT: vspltisb 4, 1 7914; PWR6-NEXT: vand 2, 2, 5 7915; PWR6-NEXT: vspltisw 5, -16 7916; PWR6-NEXT: vrlw 0, 4, 5 7917; PWR6-NEXT: vmulouh 4, 2, 4 7918; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 7919; PWR6-NEXT: vspltisw 3, 12 7920; PWR6-NEXT: vadduwm 3, 3, 3 7921; PWR6-NEXT: vslw 2, 2, 5 7922; PWR6-NEXT: vadduwm 2, 4, 2 7923; PWR6-NEXT: vsrw 2, 2, 3 7924; PWR6-NEXT: vspltisw 3, 8 7925; PWR6-NEXT: vadduwm 3, 3, 3 7926; PWR6-NEXT: vcmpgtuw 2, 2, 3 7927; PWR6-NEXT: blr 7928; 7929; PWR7-LABEL: ugt_16_v4i32: 7930; PWR7: # %bb.0: 7931; PWR7-NEXT: vspltisw 3, 1 7932; PWR7-NEXT: addis 3, 2, .LCPI70_0@toc@ha 7933; PWR7-NEXT: addi 3, 3, .LCPI70_0@toc@l 7934; PWR7-NEXT: vspltisw 4, 2 7935; PWR7-NEXT: lxvw4x 0, 0, 3 7936; PWR7-NEXT: addis 3, 2, .LCPI70_1@toc@ha 7937; PWR7-NEXT: vspltisw 5, -16 7938; PWR7-NEXT: vsrw 3, 2, 3 7939; PWR7-NEXT: addi 3, 3, .LCPI70_1@toc@l 7940; PWR7-NEXT: vspltisb 0, 15 7941; PWR7-NEXT: xxland 35, 35, 0 7942; PWR7-NEXT: lxvw4x 0, 0, 3 7943; PWR7-NEXT: vsubuwm 2, 2, 3 7944; PWR7-NEXT: vsrw 3, 2, 4 7945; PWR7-NEXT: xxland 34, 34, 0 7946; PWR7-NEXT: vspltisw 4, 4 7947; PWR7-NEXT: xxland 35, 35, 0 7948; PWR7-NEXT: vadduwm 2, 2, 3 7949; PWR7-NEXT: vsrw 3, 2, 4 7950; PWR7-NEXT: vspltisb 4, 1 7951; PWR7-NEXT: vrlw 1, 4, 5 7952; PWR7-NEXT: vadduwm 2, 2, 3 7953; PWR7-NEXT: xxlxor 35, 35, 35 7954; PWR7-NEXT: xxland 34, 34, 32 7955; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 7956; PWR7-NEXT: vmulouh 2, 2, 4 7957; PWR7-NEXT: vspltisw 4, 12 7958; PWR7-NEXT: vslw 3, 3, 5 7959; PWR7-NEXT: vadduwm 2, 2, 3 7960; PWR7-NEXT: vadduwm 3, 4, 4 7961; PWR7-NEXT: vsrw 2, 2, 3 7962; PWR7-NEXT: vspltisw 3, 8 7963; PWR7-NEXT: vadduwm 3, 3, 3 7964; PWR7-NEXT: vcmpgtuw 2, 2, 3 7965; PWR7-NEXT: blr 7966; 7967; PWR8-LABEL: ugt_16_v4i32: 7968; PWR8: # %bb.0: 7969; PWR8-NEXT: vspltisw 3, 8 7970; PWR8-NEXT: vpopcntw 2, 2 7971; PWR8-NEXT: vadduwm 3, 3, 3 7972; PWR8-NEXT: vcmpgtuw 2, 2, 3 7973; PWR8-NEXT: blr 7974; 7975; PWR9-LABEL: ugt_16_v4i32: 7976; PWR9: # %bb.0: 7977; PWR9-NEXT: vspltisw 3, 8 7978; PWR9-NEXT: vpopcntw 2, 2 7979; PWR9-NEXT: vadduwm 3, 3, 3 7980; PWR9-NEXT: vcmpgtuw 2, 2, 3 7981; PWR9-NEXT: blr 7982 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 7983 %3 = icmp ugt <4 x i32> %2, <i32 16, i32 16, i32 16, i32 16> 7984 %4 = sext <4 x i1> %3 to <4 x i32> 7985 ret <4 x i32> %4 7986} 7987 7988define <4 x i32> @ult_17_v4i32(<4 x i32> %0) { 7989; PWR5-LABEL: ult_17_v4i32: 7990; PWR5: # %bb.0: 7991; PWR5-NEXT: addis 3, 2, .LCPI71_0@toc@ha 7992; PWR5-NEXT: vspltisw 4, 1 7993; PWR5-NEXT: vxor 3, 3, 3 7994; PWR5-NEXT: addi 3, 3, .LCPI71_0@toc@l 7995; PWR5-NEXT: lvx 0, 0, 3 7996; PWR5-NEXT: addis 3, 2, .LCPI71_1@toc@ha 7997; PWR5-NEXT: addi 3, 3, .LCPI71_1@toc@l 7998; PWR5-NEXT: vspltisw 1, 2 7999; PWR5-NEXT: vsrw 5, 2, 4 8000; PWR5-NEXT: vand 5, 5, 0 8001; PWR5-NEXT: lvx 0, 0, 3 8002; PWR5-NEXT: vsubuwm 2, 2, 5 8003; PWR5-NEXT: vand 5, 2, 0 8004; PWR5-NEXT: vsrw 2, 2, 1 8005; PWR5-NEXT: vand 2, 2, 0 8006; PWR5-NEXT: vspltisw 0, 4 8007; PWR5-NEXT: vadduwm 2, 5, 2 8008; PWR5-NEXT: vsrw 5, 2, 0 8009; PWR5-NEXT: vspltisb 0, 15 8010; PWR5-NEXT: vadduwm 2, 2, 5 8011; PWR5-NEXT: vspltisb 5, 1 8012; PWR5-NEXT: vand 2, 2, 0 8013; PWR5-NEXT: vspltisw 0, -16 8014; PWR5-NEXT: vrlw 1, 5, 0 8015; PWR5-NEXT: vmulouh 5, 2, 5 8016; PWR5-NEXT: vmsumuhm 2, 2, 1, 3 8017; PWR5-NEXT: vspltisw 3, 12 8018; PWR5-NEXT: vadduwm 3, 3, 3 8019; PWR5-NEXT: vslw 2, 2, 0 8020; PWR5-NEXT: vadduwm 2, 5, 2 8021; PWR5-NEXT: vsrw 2, 2, 3 8022; PWR5-NEXT: vsubuwm 3, 4, 0 8023; PWR5-NEXT: vcmpgtuw 2, 3, 2 8024; PWR5-NEXT: blr 8025; 8026; PWR6-LABEL: ult_17_v4i32: 8027; PWR6: # %bb.0: 8028; PWR6-NEXT: addis 3, 2, .LCPI71_0@toc@ha 8029; PWR6-NEXT: vspltisw 4, 1 8030; PWR6-NEXT: vxor 3, 3, 3 8031; PWR6-NEXT: addi 3, 3, .LCPI71_0@toc@l 8032; PWR6-NEXT: lvx 0, 0, 3 8033; PWR6-NEXT: addis 3, 2, .LCPI71_1@toc@ha 8034; PWR6-NEXT: addi 3, 3, .LCPI71_1@toc@l 8035; PWR6-NEXT: vspltisw 1, 2 8036; PWR6-NEXT: vsrw 5, 2, 4 8037; PWR6-NEXT: vand 5, 5, 0 8038; PWR6-NEXT: lvx 0, 0, 3 8039; PWR6-NEXT: vsubuwm 2, 2, 5 8040; PWR6-NEXT: vand 5, 2, 0 8041; PWR6-NEXT: vsrw 2, 2, 1 8042; PWR6-NEXT: vand 2, 2, 0 8043; PWR6-NEXT: vspltisw 0, 4 8044; PWR6-NEXT: vadduwm 2, 5, 2 8045; PWR6-NEXT: vsrw 5, 2, 0 8046; PWR6-NEXT: vspltisb 0, 15 8047; PWR6-NEXT: vadduwm 2, 2, 5 8048; PWR6-NEXT: vspltisb 5, 1 8049; PWR6-NEXT: vand 2, 2, 0 8050; PWR6-NEXT: vspltisw 0, -16 8051; PWR6-NEXT: vrlw 1, 5, 0 8052; PWR6-NEXT: vmulouh 5, 2, 5 8053; PWR6-NEXT: vmsumuhm 2, 2, 1, 3 8054; PWR6-NEXT: vspltisw 3, 12 8055; PWR6-NEXT: vadduwm 3, 3, 3 8056; PWR6-NEXT: vslw 2, 2, 0 8057; PWR6-NEXT: vadduwm 2, 5, 2 8058; PWR6-NEXT: vsrw 2, 2, 3 8059; PWR6-NEXT: vsubuwm 3, 4, 0 8060; PWR6-NEXT: vcmpgtuw 2, 3, 2 8061; PWR6-NEXT: blr 8062; 8063; PWR7-LABEL: ult_17_v4i32: 8064; PWR7: # %bb.0: 8065; PWR7-NEXT: vspltisw 3, 1 8066; PWR7-NEXT: addis 3, 2, .LCPI71_0@toc@ha 8067; PWR7-NEXT: addi 3, 3, .LCPI71_0@toc@l 8068; PWR7-NEXT: vspltisw 5, 2 8069; PWR7-NEXT: lxvw4x 0, 0, 3 8070; PWR7-NEXT: addis 3, 2, .LCPI71_1@toc@ha 8071; PWR7-NEXT: vspltisw 0, -16 8072; PWR7-NEXT: vsrw 4, 2, 3 8073; PWR7-NEXT: addi 3, 3, .LCPI71_1@toc@l 8074; PWR7-NEXT: vspltisb 1, 15 8075; PWR7-NEXT: vsubuwm 3, 3, 0 8076; PWR7-NEXT: xxland 36, 36, 0 8077; PWR7-NEXT: lxvw4x 0, 0, 3 8078; PWR7-NEXT: vsubuwm 2, 2, 4 8079; PWR7-NEXT: vsrw 4, 2, 5 8080; PWR7-NEXT: xxland 34, 34, 0 8081; PWR7-NEXT: vspltisw 5, 4 8082; PWR7-NEXT: xxland 36, 36, 0 8083; PWR7-NEXT: vadduwm 2, 2, 4 8084; PWR7-NEXT: vsrw 4, 2, 5 8085; PWR7-NEXT: vspltisb 5, 1 8086; PWR7-NEXT: vrlw 6, 5, 0 8087; PWR7-NEXT: vadduwm 2, 2, 4 8088; PWR7-NEXT: xxlxor 36, 36, 36 8089; PWR7-NEXT: xxland 34, 34, 33 8090; PWR7-NEXT: vmsumuhm 4, 2, 6, 4 8091; PWR7-NEXT: vmulouh 2, 2, 5 8092; PWR7-NEXT: vspltisw 5, 12 8093; PWR7-NEXT: vslw 4, 4, 0 8094; PWR7-NEXT: vadduwm 2, 2, 4 8095; PWR7-NEXT: vadduwm 4, 5, 5 8096; PWR7-NEXT: vsrw 2, 2, 4 8097; PWR7-NEXT: vcmpgtuw 2, 3, 2 8098; PWR7-NEXT: blr 8099; 8100; PWR8-LABEL: ult_17_v4i32: 8101; PWR8: # %bb.0: 8102; PWR8-NEXT: vspltisw 3, -16 8103; PWR8-NEXT: vspltisw 4, 1 8104; PWR8-NEXT: vpopcntw 2, 2 8105; PWR8-NEXT: vsubuwm 3, 4, 3 8106; PWR8-NEXT: vcmpgtuw 2, 3, 2 8107; PWR8-NEXT: blr 8108; 8109; PWR9-LABEL: ult_17_v4i32: 8110; PWR9: # %bb.0: 8111; PWR9-NEXT: vspltisw 3, -16 8112; PWR9-NEXT: vspltisw 4, 1 8113; PWR9-NEXT: vpopcntw 2, 2 8114; PWR9-NEXT: vsubuwm 3, 4, 3 8115; PWR9-NEXT: vcmpgtuw 2, 3, 2 8116; PWR9-NEXT: blr 8117 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 8118 %3 = icmp ult <4 x i32> %2, <i32 17, i32 17, i32 17, i32 17> 8119 %4 = sext <4 x i1> %3 to <4 x i32> 8120 ret <4 x i32> %4 8121} 8122 8123define <4 x i32> @ugt_17_v4i32(<4 x i32> %0) { 8124; PWR5-LABEL: ugt_17_v4i32: 8125; PWR5: # %bb.0: 8126; PWR5-NEXT: addis 3, 2, .LCPI72_0@toc@ha 8127; PWR5-NEXT: vspltisw 4, 1 8128; PWR5-NEXT: vxor 3, 3, 3 8129; PWR5-NEXT: addi 3, 3, .LCPI72_0@toc@l 8130; PWR5-NEXT: lvx 0, 0, 3 8131; PWR5-NEXT: addis 3, 2, .LCPI72_1@toc@ha 8132; PWR5-NEXT: addi 3, 3, .LCPI72_1@toc@l 8133; PWR5-NEXT: vspltisw 1, 2 8134; PWR5-NEXT: vsrw 5, 2, 4 8135; PWR5-NEXT: vand 5, 5, 0 8136; PWR5-NEXT: lvx 0, 0, 3 8137; PWR5-NEXT: vsubuwm 2, 2, 5 8138; PWR5-NEXT: vand 5, 2, 0 8139; PWR5-NEXT: vsrw 2, 2, 1 8140; PWR5-NEXT: vand 2, 2, 0 8141; PWR5-NEXT: vspltisw 0, 4 8142; PWR5-NEXT: vadduwm 2, 5, 2 8143; PWR5-NEXT: vsrw 5, 2, 0 8144; PWR5-NEXT: vspltisb 0, 15 8145; PWR5-NEXT: vadduwm 2, 2, 5 8146; PWR5-NEXT: vspltisb 5, 1 8147; PWR5-NEXT: vand 2, 2, 0 8148; PWR5-NEXT: vspltisw 0, -16 8149; PWR5-NEXT: vrlw 1, 5, 0 8150; PWR5-NEXT: vmulouh 5, 2, 5 8151; PWR5-NEXT: vmsumuhm 2, 2, 1, 3 8152; PWR5-NEXT: vspltisw 3, 12 8153; PWR5-NEXT: vadduwm 3, 3, 3 8154; PWR5-NEXT: vslw 2, 2, 0 8155; PWR5-NEXT: vadduwm 2, 5, 2 8156; PWR5-NEXT: vsrw 2, 2, 3 8157; PWR5-NEXT: vsubuwm 3, 4, 0 8158; PWR5-NEXT: vcmpgtuw 2, 2, 3 8159; PWR5-NEXT: blr 8160; 8161; PWR6-LABEL: ugt_17_v4i32: 8162; PWR6: # %bb.0: 8163; PWR6-NEXT: addis 3, 2, .LCPI72_0@toc@ha 8164; PWR6-NEXT: vspltisw 4, 1 8165; PWR6-NEXT: vxor 3, 3, 3 8166; PWR6-NEXT: addi 3, 3, .LCPI72_0@toc@l 8167; PWR6-NEXT: lvx 0, 0, 3 8168; PWR6-NEXT: addis 3, 2, .LCPI72_1@toc@ha 8169; PWR6-NEXT: addi 3, 3, .LCPI72_1@toc@l 8170; PWR6-NEXT: vspltisw 1, 2 8171; PWR6-NEXT: vsrw 5, 2, 4 8172; PWR6-NEXT: vand 5, 5, 0 8173; PWR6-NEXT: lvx 0, 0, 3 8174; PWR6-NEXT: vsubuwm 2, 2, 5 8175; PWR6-NEXT: vand 5, 2, 0 8176; PWR6-NEXT: vsrw 2, 2, 1 8177; PWR6-NEXT: vand 2, 2, 0 8178; PWR6-NEXT: vspltisw 0, 4 8179; PWR6-NEXT: vadduwm 2, 5, 2 8180; PWR6-NEXT: vsrw 5, 2, 0 8181; PWR6-NEXT: vspltisb 0, 15 8182; PWR6-NEXT: vadduwm 2, 2, 5 8183; PWR6-NEXT: vspltisb 5, 1 8184; PWR6-NEXT: vand 2, 2, 0 8185; PWR6-NEXT: vspltisw 0, -16 8186; PWR6-NEXT: vrlw 1, 5, 0 8187; PWR6-NEXT: vmulouh 5, 2, 5 8188; PWR6-NEXT: vmsumuhm 2, 2, 1, 3 8189; PWR6-NEXT: vspltisw 3, 12 8190; PWR6-NEXT: vadduwm 3, 3, 3 8191; PWR6-NEXT: vslw 2, 2, 0 8192; PWR6-NEXT: vadduwm 2, 5, 2 8193; PWR6-NEXT: vsrw 2, 2, 3 8194; PWR6-NEXT: vsubuwm 3, 4, 0 8195; PWR6-NEXT: vcmpgtuw 2, 2, 3 8196; PWR6-NEXT: blr 8197; 8198; PWR7-LABEL: ugt_17_v4i32: 8199; PWR7: # %bb.0: 8200; PWR7-NEXT: vspltisw 3, 1 8201; PWR7-NEXT: addis 3, 2, .LCPI72_0@toc@ha 8202; PWR7-NEXT: addi 3, 3, .LCPI72_0@toc@l 8203; PWR7-NEXT: vspltisw 5, 2 8204; PWR7-NEXT: lxvw4x 0, 0, 3 8205; PWR7-NEXT: addis 3, 2, .LCPI72_1@toc@ha 8206; PWR7-NEXT: vspltisw 0, -16 8207; PWR7-NEXT: vsrw 4, 2, 3 8208; PWR7-NEXT: addi 3, 3, .LCPI72_1@toc@l 8209; PWR7-NEXT: vspltisb 1, 15 8210; PWR7-NEXT: vsubuwm 3, 3, 0 8211; PWR7-NEXT: xxland 36, 36, 0 8212; PWR7-NEXT: lxvw4x 0, 0, 3 8213; PWR7-NEXT: vsubuwm 2, 2, 4 8214; PWR7-NEXT: vsrw 4, 2, 5 8215; PWR7-NEXT: xxland 34, 34, 0 8216; PWR7-NEXT: vspltisw 5, 4 8217; PWR7-NEXT: xxland 36, 36, 0 8218; PWR7-NEXT: vadduwm 2, 2, 4 8219; PWR7-NEXT: vsrw 4, 2, 5 8220; PWR7-NEXT: vspltisb 5, 1 8221; PWR7-NEXT: vrlw 6, 5, 0 8222; PWR7-NEXT: vadduwm 2, 2, 4 8223; PWR7-NEXT: xxlxor 36, 36, 36 8224; PWR7-NEXT: xxland 34, 34, 33 8225; PWR7-NEXT: vmsumuhm 4, 2, 6, 4 8226; PWR7-NEXT: vmulouh 2, 2, 5 8227; PWR7-NEXT: vspltisw 5, 12 8228; PWR7-NEXT: vslw 4, 4, 0 8229; PWR7-NEXT: vadduwm 2, 2, 4 8230; PWR7-NEXT: vadduwm 4, 5, 5 8231; PWR7-NEXT: vsrw 2, 2, 4 8232; PWR7-NEXT: vcmpgtuw 2, 2, 3 8233; PWR7-NEXT: blr 8234; 8235; PWR8-LABEL: ugt_17_v4i32: 8236; PWR8: # %bb.0: 8237; PWR8-NEXT: vspltisw 3, -16 8238; PWR8-NEXT: vspltisw 4, 1 8239; PWR8-NEXT: vpopcntw 2, 2 8240; PWR8-NEXT: vsubuwm 3, 4, 3 8241; PWR8-NEXT: vcmpgtuw 2, 2, 3 8242; PWR8-NEXT: blr 8243; 8244; PWR9-LABEL: ugt_17_v4i32: 8245; PWR9: # %bb.0: 8246; PWR9-NEXT: vspltisw 3, -16 8247; PWR9-NEXT: vspltisw 4, 1 8248; PWR9-NEXT: vpopcntw 2, 2 8249; PWR9-NEXT: vsubuwm 3, 4, 3 8250; PWR9-NEXT: vcmpgtuw 2, 2, 3 8251; PWR9-NEXT: blr 8252 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 8253 %3 = icmp ugt <4 x i32> %2, <i32 17, i32 17, i32 17, i32 17> 8254 %4 = sext <4 x i1> %3 to <4 x i32> 8255 ret <4 x i32> %4 8256} 8257 8258define <4 x i32> @ult_18_v4i32(<4 x i32> %0) { 8259; PWR5-LABEL: ult_18_v4i32: 8260; PWR5: # %bb.0: 8261; PWR5-NEXT: addis 3, 2, .LCPI73_0@toc@ha 8262; PWR5-NEXT: vspltisw 4, 1 8263; PWR5-NEXT: vxor 3, 3, 3 8264; PWR5-NEXT: addi 3, 3, .LCPI73_0@toc@l 8265; PWR5-NEXT: lvx 5, 0, 3 8266; PWR5-NEXT: addis 3, 2, .LCPI73_1@toc@ha 8267; PWR5-NEXT: addi 3, 3, .LCPI73_1@toc@l 8268; PWR5-NEXT: vspltisw 0, 2 8269; PWR5-NEXT: vsrw 4, 2, 4 8270; PWR5-NEXT: vand 4, 4, 5 8271; PWR5-NEXT: lvx 5, 0, 3 8272; PWR5-NEXT: vsubuwm 2, 2, 4 8273; PWR5-NEXT: vand 4, 2, 5 8274; PWR5-NEXT: vsrw 2, 2, 0 8275; PWR5-NEXT: vand 2, 2, 5 8276; PWR5-NEXT: vspltisw 5, 4 8277; PWR5-NEXT: vadduwm 2, 4, 2 8278; PWR5-NEXT: vsrw 4, 2, 5 8279; PWR5-NEXT: vspltisb 5, 15 8280; PWR5-NEXT: vadduwm 2, 2, 4 8281; PWR5-NEXT: vspltisb 4, 1 8282; PWR5-NEXT: vand 2, 2, 5 8283; PWR5-NEXT: vspltisw 5, -16 8284; PWR5-NEXT: vrlw 0, 4, 5 8285; PWR5-NEXT: vmulouh 4, 2, 4 8286; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 8287; PWR5-NEXT: vspltisw 3, 12 8288; PWR5-NEXT: vadduwm 3, 3, 3 8289; PWR5-NEXT: vslw 2, 2, 5 8290; PWR5-NEXT: vadduwm 2, 4, 2 8291; PWR5-NEXT: vsrw 2, 2, 3 8292; PWR5-NEXT: vspltisw 3, 9 8293; PWR5-NEXT: vadduwm 3, 3, 3 8294; PWR5-NEXT: vcmpgtuw 2, 3, 2 8295; PWR5-NEXT: blr 8296; 8297; PWR6-LABEL: ult_18_v4i32: 8298; PWR6: # %bb.0: 8299; PWR6-NEXT: addis 3, 2, .LCPI73_0@toc@ha 8300; PWR6-NEXT: vspltisw 4, 1 8301; PWR6-NEXT: vxor 3, 3, 3 8302; PWR6-NEXT: addi 3, 3, .LCPI73_0@toc@l 8303; PWR6-NEXT: lvx 5, 0, 3 8304; PWR6-NEXT: addis 3, 2, .LCPI73_1@toc@ha 8305; PWR6-NEXT: addi 3, 3, .LCPI73_1@toc@l 8306; PWR6-NEXT: vspltisw 0, 2 8307; PWR6-NEXT: vsrw 4, 2, 4 8308; PWR6-NEXT: vand 4, 4, 5 8309; PWR6-NEXT: lvx 5, 0, 3 8310; PWR6-NEXT: vsubuwm 2, 2, 4 8311; PWR6-NEXT: vand 4, 2, 5 8312; PWR6-NEXT: vsrw 2, 2, 0 8313; PWR6-NEXT: vand 2, 2, 5 8314; PWR6-NEXT: vspltisw 5, 4 8315; PWR6-NEXT: vadduwm 2, 4, 2 8316; PWR6-NEXT: vsrw 4, 2, 5 8317; PWR6-NEXT: vspltisb 5, 15 8318; PWR6-NEXT: vadduwm 2, 2, 4 8319; PWR6-NEXT: vspltisb 4, 1 8320; PWR6-NEXT: vand 2, 2, 5 8321; PWR6-NEXT: vspltisw 5, -16 8322; PWR6-NEXT: vrlw 0, 4, 5 8323; PWR6-NEXT: vmulouh 4, 2, 4 8324; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 8325; PWR6-NEXT: vspltisw 3, 12 8326; PWR6-NEXT: vadduwm 3, 3, 3 8327; PWR6-NEXT: vslw 2, 2, 5 8328; PWR6-NEXT: vadduwm 2, 4, 2 8329; PWR6-NEXT: vsrw 2, 2, 3 8330; PWR6-NEXT: vspltisw 3, 9 8331; PWR6-NEXT: vadduwm 3, 3, 3 8332; PWR6-NEXT: vcmpgtuw 2, 3, 2 8333; PWR6-NEXT: blr 8334; 8335; PWR7-LABEL: ult_18_v4i32: 8336; PWR7: # %bb.0: 8337; PWR7-NEXT: vspltisw 3, 1 8338; PWR7-NEXT: addis 3, 2, .LCPI73_0@toc@ha 8339; PWR7-NEXT: addi 3, 3, .LCPI73_0@toc@l 8340; PWR7-NEXT: vspltisw 4, 2 8341; PWR7-NEXT: lxvw4x 0, 0, 3 8342; PWR7-NEXT: addis 3, 2, .LCPI73_1@toc@ha 8343; PWR7-NEXT: vspltisw 5, -16 8344; PWR7-NEXT: vsrw 3, 2, 3 8345; PWR7-NEXT: addi 3, 3, .LCPI73_1@toc@l 8346; PWR7-NEXT: vspltisb 0, 15 8347; PWR7-NEXT: xxland 35, 35, 0 8348; PWR7-NEXT: lxvw4x 0, 0, 3 8349; PWR7-NEXT: vsubuwm 2, 2, 3 8350; PWR7-NEXT: vsrw 3, 2, 4 8351; PWR7-NEXT: xxland 34, 34, 0 8352; PWR7-NEXT: vspltisw 4, 4 8353; PWR7-NEXT: xxland 35, 35, 0 8354; PWR7-NEXT: vadduwm 2, 2, 3 8355; PWR7-NEXT: vsrw 3, 2, 4 8356; PWR7-NEXT: vspltisb 4, 1 8357; PWR7-NEXT: vrlw 1, 4, 5 8358; PWR7-NEXT: vadduwm 2, 2, 3 8359; PWR7-NEXT: xxlxor 35, 35, 35 8360; PWR7-NEXT: xxland 34, 34, 32 8361; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 8362; PWR7-NEXT: vmulouh 2, 2, 4 8363; PWR7-NEXT: vspltisw 4, 12 8364; PWR7-NEXT: vslw 3, 3, 5 8365; PWR7-NEXT: vadduwm 2, 2, 3 8366; PWR7-NEXT: vadduwm 3, 4, 4 8367; PWR7-NEXT: vsrw 2, 2, 3 8368; PWR7-NEXT: vspltisw 3, 9 8369; PWR7-NEXT: vadduwm 3, 3, 3 8370; PWR7-NEXT: vcmpgtuw 2, 3, 2 8371; PWR7-NEXT: blr 8372; 8373; PWR8-LABEL: ult_18_v4i32: 8374; PWR8: # %bb.0: 8375; PWR8-NEXT: vspltisw 3, 9 8376; PWR8-NEXT: vpopcntw 2, 2 8377; PWR8-NEXT: vadduwm 3, 3, 3 8378; PWR8-NEXT: vcmpgtuw 2, 3, 2 8379; PWR8-NEXT: blr 8380; 8381; PWR9-LABEL: ult_18_v4i32: 8382; PWR9: # %bb.0: 8383; PWR9-NEXT: vspltisw 3, 9 8384; PWR9-NEXT: vpopcntw 2, 2 8385; PWR9-NEXT: vadduwm 3, 3, 3 8386; PWR9-NEXT: vcmpgtuw 2, 3, 2 8387; PWR9-NEXT: blr 8388 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 8389 %3 = icmp ult <4 x i32> %2, <i32 18, i32 18, i32 18, i32 18> 8390 %4 = sext <4 x i1> %3 to <4 x i32> 8391 ret <4 x i32> %4 8392} 8393 8394define <4 x i32> @ugt_18_v4i32(<4 x i32> %0) { 8395; PWR5-LABEL: ugt_18_v4i32: 8396; PWR5: # %bb.0: 8397; PWR5-NEXT: addis 3, 2, .LCPI74_0@toc@ha 8398; PWR5-NEXT: vspltisw 4, 1 8399; PWR5-NEXT: vxor 3, 3, 3 8400; PWR5-NEXT: addi 3, 3, .LCPI74_0@toc@l 8401; PWR5-NEXT: lvx 5, 0, 3 8402; PWR5-NEXT: addis 3, 2, .LCPI74_1@toc@ha 8403; PWR5-NEXT: addi 3, 3, .LCPI74_1@toc@l 8404; PWR5-NEXT: vspltisw 0, 2 8405; PWR5-NEXT: vsrw 4, 2, 4 8406; PWR5-NEXT: vand 4, 4, 5 8407; PWR5-NEXT: lvx 5, 0, 3 8408; PWR5-NEXT: vsubuwm 2, 2, 4 8409; PWR5-NEXT: vand 4, 2, 5 8410; PWR5-NEXT: vsrw 2, 2, 0 8411; PWR5-NEXT: vand 2, 2, 5 8412; PWR5-NEXT: vspltisw 5, 4 8413; PWR5-NEXT: vadduwm 2, 4, 2 8414; PWR5-NEXT: vsrw 4, 2, 5 8415; PWR5-NEXT: vspltisb 5, 15 8416; PWR5-NEXT: vadduwm 2, 2, 4 8417; PWR5-NEXT: vspltisb 4, 1 8418; PWR5-NEXT: vand 2, 2, 5 8419; PWR5-NEXT: vspltisw 5, -16 8420; PWR5-NEXT: vrlw 0, 4, 5 8421; PWR5-NEXT: vmulouh 4, 2, 4 8422; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 8423; PWR5-NEXT: vspltisw 3, 12 8424; PWR5-NEXT: vadduwm 3, 3, 3 8425; PWR5-NEXT: vslw 2, 2, 5 8426; PWR5-NEXT: vadduwm 2, 4, 2 8427; PWR5-NEXT: vsrw 2, 2, 3 8428; PWR5-NEXT: vspltisw 3, 9 8429; PWR5-NEXT: vadduwm 3, 3, 3 8430; PWR5-NEXT: vcmpgtuw 2, 2, 3 8431; PWR5-NEXT: blr 8432; 8433; PWR6-LABEL: ugt_18_v4i32: 8434; PWR6: # %bb.0: 8435; PWR6-NEXT: addis 3, 2, .LCPI74_0@toc@ha 8436; PWR6-NEXT: vspltisw 4, 1 8437; PWR6-NEXT: vxor 3, 3, 3 8438; PWR6-NEXT: addi 3, 3, .LCPI74_0@toc@l 8439; PWR6-NEXT: lvx 5, 0, 3 8440; PWR6-NEXT: addis 3, 2, .LCPI74_1@toc@ha 8441; PWR6-NEXT: addi 3, 3, .LCPI74_1@toc@l 8442; PWR6-NEXT: vspltisw 0, 2 8443; PWR6-NEXT: vsrw 4, 2, 4 8444; PWR6-NEXT: vand 4, 4, 5 8445; PWR6-NEXT: lvx 5, 0, 3 8446; PWR6-NEXT: vsubuwm 2, 2, 4 8447; PWR6-NEXT: vand 4, 2, 5 8448; PWR6-NEXT: vsrw 2, 2, 0 8449; PWR6-NEXT: vand 2, 2, 5 8450; PWR6-NEXT: vspltisw 5, 4 8451; PWR6-NEXT: vadduwm 2, 4, 2 8452; PWR6-NEXT: vsrw 4, 2, 5 8453; PWR6-NEXT: vspltisb 5, 15 8454; PWR6-NEXT: vadduwm 2, 2, 4 8455; PWR6-NEXT: vspltisb 4, 1 8456; PWR6-NEXT: vand 2, 2, 5 8457; PWR6-NEXT: vspltisw 5, -16 8458; PWR6-NEXT: vrlw 0, 4, 5 8459; PWR6-NEXT: vmulouh 4, 2, 4 8460; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 8461; PWR6-NEXT: vspltisw 3, 12 8462; PWR6-NEXT: vadduwm 3, 3, 3 8463; PWR6-NEXT: vslw 2, 2, 5 8464; PWR6-NEXT: vadduwm 2, 4, 2 8465; PWR6-NEXT: vsrw 2, 2, 3 8466; PWR6-NEXT: vspltisw 3, 9 8467; PWR6-NEXT: vadduwm 3, 3, 3 8468; PWR6-NEXT: vcmpgtuw 2, 2, 3 8469; PWR6-NEXT: blr 8470; 8471; PWR7-LABEL: ugt_18_v4i32: 8472; PWR7: # %bb.0: 8473; PWR7-NEXT: vspltisw 3, 1 8474; PWR7-NEXT: addis 3, 2, .LCPI74_0@toc@ha 8475; PWR7-NEXT: addi 3, 3, .LCPI74_0@toc@l 8476; PWR7-NEXT: vspltisw 4, 2 8477; PWR7-NEXT: lxvw4x 0, 0, 3 8478; PWR7-NEXT: addis 3, 2, .LCPI74_1@toc@ha 8479; PWR7-NEXT: vspltisw 5, -16 8480; PWR7-NEXT: vsrw 3, 2, 3 8481; PWR7-NEXT: addi 3, 3, .LCPI74_1@toc@l 8482; PWR7-NEXT: vspltisb 0, 15 8483; PWR7-NEXT: xxland 35, 35, 0 8484; PWR7-NEXT: lxvw4x 0, 0, 3 8485; PWR7-NEXT: vsubuwm 2, 2, 3 8486; PWR7-NEXT: vsrw 3, 2, 4 8487; PWR7-NEXT: xxland 34, 34, 0 8488; PWR7-NEXT: vspltisw 4, 4 8489; PWR7-NEXT: xxland 35, 35, 0 8490; PWR7-NEXT: vadduwm 2, 2, 3 8491; PWR7-NEXT: vsrw 3, 2, 4 8492; PWR7-NEXT: vspltisb 4, 1 8493; PWR7-NEXT: vrlw 1, 4, 5 8494; PWR7-NEXT: vadduwm 2, 2, 3 8495; PWR7-NEXT: xxlxor 35, 35, 35 8496; PWR7-NEXT: xxland 34, 34, 32 8497; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 8498; PWR7-NEXT: vmulouh 2, 2, 4 8499; PWR7-NEXT: vspltisw 4, 12 8500; PWR7-NEXT: vslw 3, 3, 5 8501; PWR7-NEXT: vadduwm 2, 2, 3 8502; PWR7-NEXT: vadduwm 3, 4, 4 8503; PWR7-NEXT: vsrw 2, 2, 3 8504; PWR7-NEXT: vspltisw 3, 9 8505; PWR7-NEXT: vadduwm 3, 3, 3 8506; PWR7-NEXT: vcmpgtuw 2, 2, 3 8507; PWR7-NEXT: blr 8508; 8509; PWR8-LABEL: ugt_18_v4i32: 8510; PWR8: # %bb.0: 8511; PWR8-NEXT: vspltisw 3, 9 8512; PWR8-NEXT: vpopcntw 2, 2 8513; PWR8-NEXT: vadduwm 3, 3, 3 8514; PWR8-NEXT: vcmpgtuw 2, 2, 3 8515; PWR8-NEXT: blr 8516; 8517; PWR9-LABEL: ugt_18_v4i32: 8518; PWR9: # %bb.0: 8519; PWR9-NEXT: vspltisw 3, 9 8520; PWR9-NEXT: vpopcntw 2, 2 8521; PWR9-NEXT: vadduwm 3, 3, 3 8522; PWR9-NEXT: vcmpgtuw 2, 2, 3 8523; PWR9-NEXT: blr 8524 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 8525 %3 = icmp ugt <4 x i32> %2, <i32 18, i32 18, i32 18, i32 18> 8526 %4 = sext <4 x i1> %3 to <4 x i32> 8527 ret <4 x i32> %4 8528} 8529 8530define <4 x i32> @ult_19_v4i32(<4 x i32> %0) { 8531; PWR5-LABEL: ult_19_v4i32: 8532; PWR5: # %bb.0: 8533; PWR5-NEXT: addis 3, 2, .LCPI75_0@toc@ha 8534; PWR5-NEXT: vspltisw 4, 1 8535; PWR5-NEXT: vxor 3, 3, 3 8536; PWR5-NEXT: addi 3, 3, .LCPI75_0@toc@l 8537; PWR5-NEXT: lvx 5, 0, 3 8538; PWR5-NEXT: addis 3, 2, .LCPI75_1@toc@ha 8539; PWR5-NEXT: addi 3, 3, .LCPI75_1@toc@l 8540; PWR5-NEXT: vspltisw 0, 2 8541; PWR5-NEXT: vsrw 4, 2, 4 8542; PWR5-NEXT: vand 4, 4, 5 8543; PWR5-NEXT: lvx 5, 0, 3 8544; PWR5-NEXT: vsubuwm 2, 2, 4 8545; PWR5-NEXT: vand 4, 2, 5 8546; PWR5-NEXT: vsrw 2, 2, 0 8547; PWR5-NEXT: vand 2, 2, 5 8548; PWR5-NEXT: vspltisw 5, 4 8549; PWR5-NEXT: vadduwm 2, 4, 2 8550; PWR5-NEXT: vsrw 4, 2, 5 8551; PWR5-NEXT: vspltisb 5, 15 8552; PWR5-NEXT: vadduwm 2, 2, 4 8553; PWR5-NEXT: vspltisb 4, 1 8554; PWR5-NEXT: vand 2, 2, 5 8555; PWR5-NEXT: vspltisw 5, -16 8556; PWR5-NEXT: vrlw 0, 4, 5 8557; PWR5-NEXT: vmulouh 4, 2, 4 8558; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 8559; PWR5-NEXT: vspltisw 3, 12 8560; PWR5-NEXT: vadduwm 3, 3, 3 8561; PWR5-NEXT: vslw 2, 2, 5 8562; PWR5-NEXT: vadduwm 2, 4, 2 8563; PWR5-NEXT: vsrw 2, 2, 3 8564; PWR5-NEXT: vspltisw 3, 3 8565; PWR5-NEXT: vsubuwm 3, 3, 5 8566; PWR5-NEXT: vcmpgtuw 2, 3, 2 8567; PWR5-NEXT: blr 8568; 8569; PWR6-LABEL: ult_19_v4i32: 8570; PWR6: # %bb.0: 8571; PWR6-NEXT: addis 3, 2, .LCPI75_0@toc@ha 8572; PWR6-NEXT: vspltisw 4, 1 8573; PWR6-NEXT: vxor 3, 3, 3 8574; PWR6-NEXT: addi 3, 3, .LCPI75_0@toc@l 8575; PWR6-NEXT: lvx 5, 0, 3 8576; PWR6-NEXT: addis 3, 2, .LCPI75_1@toc@ha 8577; PWR6-NEXT: addi 3, 3, .LCPI75_1@toc@l 8578; PWR6-NEXT: vspltisw 0, 2 8579; PWR6-NEXT: vsrw 4, 2, 4 8580; PWR6-NEXT: vand 4, 4, 5 8581; PWR6-NEXT: lvx 5, 0, 3 8582; PWR6-NEXT: vsubuwm 2, 2, 4 8583; PWR6-NEXT: vand 4, 2, 5 8584; PWR6-NEXT: vsrw 2, 2, 0 8585; PWR6-NEXT: vand 2, 2, 5 8586; PWR6-NEXT: vspltisw 5, 4 8587; PWR6-NEXT: vadduwm 2, 4, 2 8588; PWR6-NEXT: vsrw 4, 2, 5 8589; PWR6-NEXT: vspltisb 5, 15 8590; PWR6-NEXT: vadduwm 2, 2, 4 8591; PWR6-NEXT: vspltisb 4, 1 8592; PWR6-NEXT: vand 2, 2, 5 8593; PWR6-NEXT: vspltisw 5, -16 8594; PWR6-NEXT: vrlw 0, 4, 5 8595; PWR6-NEXT: vmulouh 4, 2, 4 8596; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 8597; PWR6-NEXT: vspltisw 3, 12 8598; PWR6-NEXT: vadduwm 3, 3, 3 8599; PWR6-NEXT: vslw 2, 2, 5 8600; PWR6-NEXT: vadduwm 2, 4, 2 8601; PWR6-NEXT: vsrw 2, 2, 3 8602; PWR6-NEXT: vspltisw 3, 3 8603; PWR6-NEXT: vsubuwm 3, 3, 5 8604; PWR6-NEXT: vcmpgtuw 2, 3, 2 8605; PWR6-NEXT: blr 8606; 8607; PWR7-LABEL: ult_19_v4i32: 8608; PWR7: # %bb.0: 8609; PWR7-NEXT: vspltisw 3, 1 8610; PWR7-NEXT: addis 3, 2, .LCPI75_0@toc@ha 8611; PWR7-NEXT: addi 3, 3, .LCPI75_0@toc@l 8612; PWR7-NEXT: vspltisw 4, 2 8613; PWR7-NEXT: lxvw4x 0, 0, 3 8614; PWR7-NEXT: addis 3, 2, .LCPI75_1@toc@ha 8615; PWR7-NEXT: vspltisw 5, -16 8616; PWR7-NEXT: vsrw 3, 2, 3 8617; PWR7-NEXT: addi 3, 3, .LCPI75_1@toc@l 8618; PWR7-NEXT: vspltisb 0, 15 8619; PWR7-NEXT: xxland 35, 35, 0 8620; PWR7-NEXT: lxvw4x 0, 0, 3 8621; PWR7-NEXT: vsubuwm 2, 2, 3 8622; PWR7-NEXT: vsrw 3, 2, 4 8623; PWR7-NEXT: xxland 34, 34, 0 8624; PWR7-NEXT: vspltisw 4, 4 8625; PWR7-NEXT: xxland 35, 35, 0 8626; PWR7-NEXT: vadduwm 2, 2, 3 8627; PWR7-NEXT: vsrw 3, 2, 4 8628; PWR7-NEXT: vspltisb 4, 1 8629; PWR7-NEXT: vrlw 1, 4, 5 8630; PWR7-NEXT: vadduwm 2, 2, 3 8631; PWR7-NEXT: xxlxor 35, 35, 35 8632; PWR7-NEXT: xxland 34, 34, 32 8633; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 8634; PWR7-NEXT: vmulouh 2, 2, 4 8635; PWR7-NEXT: vspltisw 4, 12 8636; PWR7-NEXT: vslw 3, 3, 5 8637; PWR7-NEXT: vadduwm 2, 2, 3 8638; PWR7-NEXT: vadduwm 3, 4, 4 8639; PWR7-NEXT: vsrw 2, 2, 3 8640; PWR7-NEXT: vspltisw 3, 3 8641; PWR7-NEXT: vsubuwm 3, 3, 5 8642; PWR7-NEXT: vcmpgtuw 2, 3, 2 8643; PWR7-NEXT: blr 8644; 8645; PWR8-LABEL: ult_19_v4i32: 8646; PWR8: # %bb.0: 8647; PWR8-NEXT: vspltisw 3, -16 8648; PWR8-NEXT: vspltisw 4, 3 8649; PWR8-NEXT: vpopcntw 2, 2 8650; PWR8-NEXT: vsubuwm 3, 4, 3 8651; PWR8-NEXT: vcmpgtuw 2, 3, 2 8652; PWR8-NEXT: blr 8653; 8654; PWR9-LABEL: ult_19_v4i32: 8655; PWR9: # %bb.0: 8656; PWR9-NEXT: vspltisw 3, -16 8657; PWR9-NEXT: vspltisw 4, 3 8658; PWR9-NEXT: vpopcntw 2, 2 8659; PWR9-NEXT: vsubuwm 3, 4, 3 8660; PWR9-NEXT: vcmpgtuw 2, 3, 2 8661; PWR9-NEXT: blr 8662 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 8663 %3 = icmp ult <4 x i32> %2, <i32 19, i32 19, i32 19, i32 19> 8664 %4 = sext <4 x i1> %3 to <4 x i32> 8665 ret <4 x i32> %4 8666} 8667 8668define <4 x i32> @ugt_19_v4i32(<4 x i32> %0) { 8669; PWR5-LABEL: ugt_19_v4i32: 8670; PWR5: # %bb.0: 8671; PWR5-NEXT: addis 3, 2, .LCPI76_0@toc@ha 8672; PWR5-NEXT: vspltisw 4, 1 8673; PWR5-NEXT: vxor 3, 3, 3 8674; PWR5-NEXT: addi 3, 3, .LCPI76_0@toc@l 8675; PWR5-NEXT: lvx 5, 0, 3 8676; PWR5-NEXT: addis 3, 2, .LCPI76_1@toc@ha 8677; PWR5-NEXT: addi 3, 3, .LCPI76_1@toc@l 8678; PWR5-NEXT: vspltisw 0, 2 8679; PWR5-NEXT: vsrw 4, 2, 4 8680; PWR5-NEXT: vand 4, 4, 5 8681; PWR5-NEXT: lvx 5, 0, 3 8682; PWR5-NEXT: vsubuwm 2, 2, 4 8683; PWR5-NEXT: vand 4, 2, 5 8684; PWR5-NEXT: vsrw 2, 2, 0 8685; PWR5-NEXT: vand 2, 2, 5 8686; PWR5-NEXT: vspltisw 5, 4 8687; PWR5-NEXT: vadduwm 2, 4, 2 8688; PWR5-NEXT: vsrw 4, 2, 5 8689; PWR5-NEXT: vspltisb 5, 15 8690; PWR5-NEXT: vadduwm 2, 2, 4 8691; PWR5-NEXT: vspltisb 4, 1 8692; PWR5-NEXT: vand 2, 2, 5 8693; PWR5-NEXT: vspltisw 5, -16 8694; PWR5-NEXT: vrlw 0, 4, 5 8695; PWR5-NEXT: vmulouh 4, 2, 4 8696; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 8697; PWR5-NEXT: vspltisw 3, 12 8698; PWR5-NEXT: vadduwm 3, 3, 3 8699; PWR5-NEXT: vslw 2, 2, 5 8700; PWR5-NEXT: vadduwm 2, 4, 2 8701; PWR5-NEXT: vsrw 2, 2, 3 8702; PWR5-NEXT: vspltisw 3, 3 8703; PWR5-NEXT: vsubuwm 3, 3, 5 8704; PWR5-NEXT: vcmpgtuw 2, 2, 3 8705; PWR5-NEXT: blr 8706; 8707; PWR6-LABEL: ugt_19_v4i32: 8708; PWR6: # %bb.0: 8709; PWR6-NEXT: addis 3, 2, .LCPI76_0@toc@ha 8710; PWR6-NEXT: vspltisw 4, 1 8711; PWR6-NEXT: vxor 3, 3, 3 8712; PWR6-NEXT: addi 3, 3, .LCPI76_0@toc@l 8713; PWR6-NEXT: lvx 5, 0, 3 8714; PWR6-NEXT: addis 3, 2, .LCPI76_1@toc@ha 8715; PWR6-NEXT: addi 3, 3, .LCPI76_1@toc@l 8716; PWR6-NEXT: vspltisw 0, 2 8717; PWR6-NEXT: vsrw 4, 2, 4 8718; PWR6-NEXT: vand 4, 4, 5 8719; PWR6-NEXT: lvx 5, 0, 3 8720; PWR6-NEXT: vsubuwm 2, 2, 4 8721; PWR6-NEXT: vand 4, 2, 5 8722; PWR6-NEXT: vsrw 2, 2, 0 8723; PWR6-NEXT: vand 2, 2, 5 8724; PWR6-NEXT: vspltisw 5, 4 8725; PWR6-NEXT: vadduwm 2, 4, 2 8726; PWR6-NEXT: vsrw 4, 2, 5 8727; PWR6-NEXT: vspltisb 5, 15 8728; PWR6-NEXT: vadduwm 2, 2, 4 8729; PWR6-NEXT: vspltisb 4, 1 8730; PWR6-NEXT: vand 2, 2, 5 8731; PWR6-NEXT: vspltisw 5, -16 8732; PWR6-NEXT: vrlw 0, 4, 5 8733; PWR6-NEXT: vmulouh 4, 2, 4 8734; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 8735; PWR6-NEXT: vspltisw 3, 12 8736; PWR6-NEXT: vadduwm 3, 3, 3 8737; PWR6-NEXT: vslw 2, 2, 5 8738; PWR6-NEXT: vadduwm 2, 4, 2 8739; PWR6-NEXT: vsrw 2, 2, 3 8740; PWR6-NEXT: vspltisw 3, 3 8741; PWR6-NEXT: vsubuwm 3, 3, 5 8742; PWR6-NEXT: vcmpgtuw 2, 2, 3 8743; PWR6-NEXT: blr 8744; 8745; PWR7-LABEL: ugt_19_v4i32: 8746; PWR7: # %bb.0: 8747; PWR7-NEXT: vspltisw 3, 1 8748; PWR7-NEXT: addis 3, 2, .LCPI76_0@toc@ha 8749; PWR7-NEXT: addi 3, 3, .LCPI76_0@toc@l 8750; PWR7-NEXT: vspltisw 4, 2 8751; PWR7-NEXT: lxvw4x 0, 0, 3 8752; PWR7-NEXT: addis 3, 2, .LCPI76_1@toc@ha 8753; PWR7-NEXT: vspltisw 5, -16 8754; PWR7-NEXT: vsrw 3, 2, 3 8755; PWR7-NEXT: addi 3, 3, .LCPI76_1@toc@l 8756; PWR7-NEXT: vspltisb 0, 15 8757; PWR7-NEXT: xxland 35, 35, 0 8758; PWR7-NEXT: lxvw4x 0, 0, 3 8759; PWR7-NEXT: vsubuwm 2, 2, 3 8760; PWR7-NEXT: vsrw 3, 2, 4 8761; PWR7-NEXT: xxland 34, 34, 0 8762; PWR7-NEXT: vspltisw 4, 4 8763; PWR7-NEXT: xxland 35, 35, 0 8764; PWR7-NEXT: vadduwm 2, 2, 3 8765; PWR7-NEXT: vsrw 3, 2, 4 8766; PWR7-NEXT: vspltisb 4, 1 8767; PWR7-NEXT: vrlw 1, 4, 5 8768; PWR7-NEXT: vadduwm 2, 2, 3 8769; PWR7-NEXT: xxlxor 35, 35, 35 8770; PWR7-NEXT: xxland 34, 34, 32 8771; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 8772; PWR7-NEXT: vmulouh 2, 2, 4 8773; PWR7-NEXT: vspltisw 4, 12 8774; PWR7-NEXT: vslw 3, 3, 5 8775; PWR7-NEXT: vadduwm 2, 2, 3 8776; PWR7-NEXT: vadduwm 3, 4, 4 8777; PWR7-NEXT: vsrw 2, 2, 3 8778; PWR7-NEXT: vspltisw 3, 3 8779; PWR7-NEXT: vsubuwm 3, 3, 5 8780; PWR7-NEXT: vcmpgtuw 2, 2, 3 8781; PWR7-NEXT: blr 8782; 8783; PWR8-LABEL: ugt_19_v4i32: 8784; PWR8: # %bb.0: 8785; PWR8-NEXT: vspltisw 3, -16 8786; PWR8-NEXT: vspltisw 4, 3 8787; PWR8-NEXT: vpopcntw 2, 2 8788; PWR8-NEXT: vsubuwm 3, 4, 3 8789; PWR8-NEXT: vcmpgtuw 2, 2, 3 8790; PWR8-NEXT: blr 8791; 8792; PWR9-LABEL: ugt_19_v4i32: 8793; PWR9: # %bb.0: 8794; PWR9-NEXT: vspltisw 3, -16 8795; PWR9-NEXT: vspltisw 4, 3 8796; PWR9-NEXT: vpopcntw 2, 2 8797; PWR9-NEXT: vsubuwm 3, 4, 3 8798; PWR9-NEXT: vcmpgtuw 2, 2, 3 8799; PWR9-NEXT: blr 8800 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 8801 %3 = icmp ugt <4 x i32> %2, <i32 19, i32 19, i32 19, i32 19> 8802 %4 = sext <4 x i1> %3 to <4 x i32> 8803 ret <4 x i32> %4 8804} 8805 8806define <4 x i32> @ult_20_v4i32(<4 x i32> %0) { 8807; PWR5-LABEL: ult_20_v4i32: 8808; PWR5: # %bb.0: 8809; PWR5-NEXT: addis 3, 2, .LCPI77_0@toc@ha 8810; PWR5-NEXT: vspltisw 4, 1 8811; PWR5-NEXT: vxor 3, 3, 3 8812; PWR5-NEXT: addi 3, 3, .LCPI77_0@toc@l 8813; PWR5-NEXT: lvx 5, 0, 3 8814; PWR5-NEXT: addis 3, 2, .LCPI77_1@toc@ha 8815; PWR5-NEXT: addi 3, 3, .LCPI77_1@toc@l 8816; PWR5-NEXT: vspltisw 0, 2 8817; PWR5-NEXT: vsrw 4, 2, 4 8818; PWR5-NEXT: vand 4, 4, 5 8819; PWR5-NEXT: lvx 5, 0, 3 8820; PWR5-NEXT: vsubuwm 2, 2, 4 8821; PWR5-NEXT: vand 4, 2, 5 8822; PWR5-NEXT: vsrw 2, 2, 0 8823; PWR5-NEXT: vand 2, 2, 5 8824; PWR5-NEXT: vspltisw 5, 4 8825; PWR5-NEXT: vadduwm 2, 4, 2 8826; PWR5-NEXT: vsrw 4, 2, 5 8827; PWR5-NEXT: vspltisb 5, 15 8828; PWR5-NEXT: vadduwm 2, 2, 4 8829; PWR5-NEXT: vspltisb 4, 1 8830; PWR5-NEXT: vand 2, 2, 5 8831; PWR5-NEXT: vspltisw 5, -16 8832; PWR5-NEXT: vrlw 0, 4, 5 8833; PWR5-NEXT: vmulouh 4, 2, 4 8834; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 8835; PWR5-NEXT: vspltisw 3, 12 8836; PWR5-NEXT: vadduwm 3, 3, 3 8837; PWR5-NEXT: vslw 2, 2, 5 8838; PWR5-NEXT: vadduwm 2, 4, 2 8839; PWR5-NEXT: vsrw 2, 2, 3 8840; PWR5-NEXT: vspltisw 3, 10 8841; PWR5-NEXT: vadduwm 3, 3, 3 8842; PWR5-NEXT: vcmpgtuw 2, 3, 2 8843; PWR5-NEXT: blr 8844; 8845; PWR6-LABEL: ult_20_v4i32: 8846; PWR6: # %bb.0: 8847; PWR6-NEXT: addis 3, 2, .LCPI77_0@toc@ha 8848; PWR6-NEXT: vspltisw 4, 1 8849; PWR6-NEXT: vxor 3, 3, 3 8850; PWR6-NEXT: addi 3, 3, .LCPI77_0@toc@l 8851; PWR6-NEXT: lvx 5, 0, 3 8852; PWR6-NEXT: addis 3, 2, .LCPI77_1@toc@ha 8853; PWR6-NEXT: addi 3, 3, .LCPI77_1@toc@l 8854; PWR6-NEXT: vspltisw 0, 2 8855; PWR6-NEXT: vsrw 4, 2, 4 8856; PWR6-NEXT: vand 4, 4, 5 8857; PWR6-NEXT: lvx 5, 0, 3 8858; PWR6-NEXT: vsubuwm 2, 2, 4 8859; PWR6-NEXT: vand 4, 2, 5 8860; PWR6-NEXT: vsrw 2, 2, 0 8861; PWR6-NEXT: vand 2, 2, 5 8862; PWR6-NEXT: vspltisw 5, 4 8863; PWR6-NEXT: vadduwm 2, 4, 2 8864; PWR6-NEXT: vsrw 4, 2, 5 8865; PWR6-NEXT: vspltisb 5, 15 8866; PWR6-NEXT: vadduwm 2, 2, 4 8867; PWR6-NEXT: vspltisb 4, 1 8868; PWR6-NEXT: vand 2, 2, 5 8869; PWR6-NEXT: vspltisw 5, -16 8870; PWR6-NEXT: vrlw 0, 4, 5 8871; PWR6-NEXT: vmulouh 4, 2, 4 8872; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 8873; PWR6-NEXT: vspltisw 3, 12 8874; PWR6-NEXT: vadduwm 3, 3, 3 8875; PWR6-NEXT: vslw 2, 2, 5 8876; PWR6-NEXT: vadduwm 2, 4, 2 8877; PWR6-NEXT: vsrw 2, 2, 3 8878; PWR6-NEXT: vspltisw 3, 10 8879; PWR6-NEXT: vadduwm 3, 3, 3 8880; PWR6-NEXT: vcmpgtuw 2, 3, 2 8881; PWR6-NEXT: blr 8882; 8883; PWR7-LABEL: ult_20_v4i32: 8884; PWR7: # %bb.0: 8885; PWR7-NEXT: vspltisw 3, 1 8886; PWR7-NEXT: addis 3, 2, .LCPI77_0@toc@ha 8887; PWR7-NEXT: addi 3, 3, .LCPI77_0@toc@l 8888; PWR7-NEXT: vspltisw 4, 2 8889; PWR7-NEXT: lxvw4x 0, 0, 3 8890; PWR7-NEXT: addis 3, 2, .LCPI77_1@toc@ha 8891; PWR7-NEXT: vspltisw 5, -16 8892; PWR7-NEXT: vsrw 3, 2, 3 8893; PWR7-NEXT: addi 3, 3, .LCPI77_1@toc@l 8894; PWR7-NEXT: vspltisb 0, 15 8895; PWR7-NEXT: xxland 35, 35, 0 8896; PWR7-NEXT: lxvw4x 0, 0, 3 8897; PWR7-NEXT: vsubuwm 2, 2, 3 8898; PWR7-NEXT: vsrw 3, 2, 4 8899; PWR7-NEXT: xxland 34, 34, 0 8900; PWR7-NEXT: vspltisw 4, 4 8901; PWR7-NEXT: xxland 35, 35, 0 8902; PWR7-NEXT: vadduwm 2, 2, 3 8903; PWR7-NEXT: vsrw 3, 2, 4 8904; PWR7-NEXT: vspltisb 4, 1 8905; PWR7-NEXT: vrlw 1, 4, 5 8906; PWR7-NEXT: vadduwm 2, 2, 3 8907; PWR7-NEXT: xxlxor 35, 35, 35 8908; PWR7-NEXT: xxland 34, 34, 32 8909; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 8910; PWR7-NEXT: vmulouh 2, 2, 4 8911; PWR7-NEXT: vspltisw 4, 12 8912; PWR7-NEXT: vslw 3, 3, 5 8913; PWR7-NEXT: vadduwm 2, 2, 3 8914; PWR7-NEXT: vadduwm 3, 4, 4 8915; PWR7-NEXT: vsrw 2, 2, 3 8916; PWR7-NEXT: vspltisw 3, 10 8917; PWR7-NEXT: vadduwm 3, 3, 3 8918; PWR7-NEXT: vcmpgtuw 2, 3, 2 8919; PWR7-NEXT: blr 8920; 8921; PWR8-LABEL: ult_20_v4i32: 8922; PWR8: # %bb.0: 8923; PWR8-NEXT: vspltisw 3, 10 8924; PWR8-NEXT: vpopcntw 2, 2 8925; PWR8-NEXT: vadduwm 3, 3, 3 8926; PWR8-NEXT: vcmpgtuw 2, 3, 2 8927; PWR8-NEXT: blr 8928; 8929; PWR9-LABEL: ult_20_v4i32: 8930; PWR9: # %bb.0: 8931; PWR9-NEXT: vspltisw 3, 10 8932; PWR9-NEXT: vpopcntw 2, 2 8933; PWR9-NEXT: vadduwm 3, 3, 3 8934; PWR9-NEXT: vcmpgtuw 2, 3, 2 8935; PWR9-NEXT: blr 8936 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 8937 %3 = icmp ult <4 x i32> %2, <i32 20, i32 20, i32 20, i32 20> 8938 %4 = sext <4 x i1> %3 to <4 x i32> 8939 ret <4 x i32> %4 8940} 8941 8942define <4 x i32> @ugt_20_v4i32(<4 x i32> %0) { 8943; PWR5-LABEL: ugt_20_v4i32: 8944; PWR5: # %bb.0: 8945; PWR5-NEXT: addis 3, 2, .LCPI78_0@toc@ha 8946; PWR5-NEXT: vspltisw 4, 1 8947; PWR5-NEXT: vxor 3, 3, 3 8948; PWR5-NEXT: addi 3, 3, .LCPI78_0@toc@l 8949; PWR5-NEXT: lvx 5, 0, 3 8950; PWR5-NEXT: addis 3, 2, .LCPI78_1@toc@ha 8951; PWR5-NEXT: addi 3, 3, .LCPI78_1@toc@l 8952; PWR5-NEXT: vspltisw 0, 2 8953; PWR5-NEXT: vsrw 4, 2, 4 8954; PWR5-NEXT: vand 4, 4, 5 8955; PWR5-NEXT: lvx 5, 0, 3 8956; PWR5-NEXT: vsubuwm 2, 2, 4 8957; PWR5-NEXT: vand 4, 2, 5 8958; PWR5-NEXT: vsrw 2, 2, 0 8959; PWR5-NEXT: vand 2, 2, 5 8960; PWR5-NEXT: vspltisw 5, 4 8961; PWR5-NEXT: vadduwm 2, 4, 2 8962; PWR5-NEXT: vsrw 4, 2, 5 8963; PWR5-NEXT: vspltisb 5, 15 8964; PWR5-NEXT: vadduwm 2, 2, 4 8965; PWR5-NEXT: vspltisb 4, 1 8966; PWR5-NEXT: vand 2, 2, 5 8967; PWR5-NEXT: vspltisw 5, -16 8968; PWR5-NEXT: vrlw 0, 4, 5 8969; PWR5-NEXT: vmulouh 4, 2, 4 8970; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 8971; PWR5-NEXT: vspltisw 3, 12 8972; PWR5-NEXT: vadduwm 3, 3, 3 8973; PWR5-NEXT: vslw 2, 2, 5 8974; PWR5-NEXT: vadduwm 2, 4, 2 8975; PWR5-NEXT: vsrw 2, 2, 3 8976; PWR5-NEXT: vspltisw 3, 10 8977; PWR5-NEXT: vadduwm 3, 3, 3 8978; PWR5-NEXT: vcmpgtuw 2, 2, 3 8979; PWR5-NEXT: blr 8980; 8981; PWR6-LABEL: ugt_20_v4i32: 8982; PWR6: # %bb.0: 8983; PWR6-NEXT: addis 3, 2, .LCPI78_0@toc@ha 8984; PWR6-NEXT: vspltisw 4, 1 8985; PWR6-NEXT: vxor 3, 3, 3 8986; PWR6-NEXT: addi 3, 3, .LCPI78_0@toc@l 8987; PWR6-NEXT: lvx 5, 0, 3 8988; PWR6-NEXT: addis 3, 2, .LCPI78_1@toc@ha 8989; PWR6-NEXT: addi 3, 3, .LCPI78_1@toc@l 8990; PWR6-NEXT: vspltisw 0, 2 8991; PWR6-NEXT: vsrw 4, 2, 4 8992; PWR6-NEXT: vand 4, 4, 5 8993; PWR6-NEXT: lvx 5, 0, 3 8994; PWR6-NEXT: vsubuwm 2, 2, 4 8995; PWR6-NEXT: vand 4, 2, 5 8996; PWR6-NEXT: vsrw 2, 2, 0 8997; PWR6-NEXT: vand 2, 2, 5 8998; PWR6-NEXT: vspltisw 5, 4 8999; PWR6-NEXT: vadduwm 2, 4, 2 9000; PWR6-NEXT: vsrw 4, 2, 5 9001; PWR6-NEXT: vspltisb 5, 15 9002; PWR6-NEXT: vadduwm 2, 2, 4 9003; PWR6-NEXT: vspltisb 4, 1 9004; PWR6-NEXT: vand 2, 2, 5 9005; PWR6-NEXT: vspltisw 5, -16 9006; PWR6-NEXT: vrlw 0, 4, 5 9007; PWR6-NEXT: vmulouh 4, 2, 4 9008; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 9009; PWR6-NEXT: vspltisw 3, 12 9010; PWR6-NEXT: vadduwm 3, 3, 3 9011; PWR6-NEXT: vslw 2, 2, 5 9012; PWR6-NEXT: vadduwm 2, 4, 2 9013; PWR6-NEXT: vsrw 2, 2, 3 9014; PWR6-NEXT: vspltisw 3, 10 9015; PWR6-NEXT: vadduwm 3, 3, 3 9016; PWR6-NEXT: vcmpgtuw 2, 2, 3 9017; PWR6-NEXT: blr 9018; 9019; PWR7-LABEL: ugt_20_v4i32: 9020; PWR7: # %bb.0: 9021; PWR7-NEXT: vspltisw 3, 1 9022; PWR7-NEXT: addis 3, 2, .LCPI78_0@toc@ha 9023; PWR7-NEXT: addi 3, 3, .LCPI78_0@toc@l 9024; PWR7-NEXT: vspltisw 4, 2 9025; PWR7-NEXT: lxvw4x 0, 0, 3 9026; PWR7-NEXT: addis 3, 2, .LCPI78_1@toc@ha 9027; PWR7-NEXT: vspltisw 5, -16 9028; PWR7-NEXT: vsrw 3, 2, 3 9029; PWR7-NEXT: addi 3, 3, .LCPI78_1@toc@l 9030; PWR7-NEXT: vspltisb 0, 15 9031; PWR7-NEXT: xxland 35, 35, 0 9032; PWR7-NEXT: lxvw4x 0, 0, 3 9033; PWR7-NEXT: vsubuwm 2, 2, 3 9034; PWR7-NEXT: vsrw 3, 2, 4 9035; PWR7-NEXT: xxland 34, 34, 0 9036; PWR7-NEXT: vspltisw 4, 4 9037; PWR7-NEXT: xxland 35, 35, 0 9038; PWR7-NEXT: vadduwm 2, 2, 3 9039; PWR7-NEXT: vsrw 3, 2, 4 9040; PWR7-NEXT: vspltisb 4, 1 9041; PWR7-NEXT: vrlw 1, 4, 5 9042; PWR7-NEXT: vadduwm 2, 2, 3 9043; PWR7-NEXT: xxlxor 35, 35, 35 9044; PWR7-NEXT: xxland 34, 34, 32 9045; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 9046; PWR7-NEXT: vmulouh 2, 2, 4 9047; PWR7-NEXT: vspltisw 4, 12 9048; PWR7-NEXT: vslw 3, 3, 5 9049; PWR7-NEXT: vadduwm 2, 2, 3 9050; PWR7-NEXT: vadduwm 3, 4, 4 9051; PWR7-NEXT: vsrw 2, 2, 3 9052; PWR7-NEXT: vspltisw 3, 10 9053; PWR7-NEXT: vadduwm 3, 3, 3 9054; PWR7-NEXT: vcmpgtuw 2, 2, 3 9055; PWR7-NEXT: blr 9056; 9057; PWR8-LABEL: ugt_20_v4i32: 9058; PWR8: # %bb.0: 9059; PWR8-NEXT: vspltisw 3, 10 9060; PWR8-NEXT: vpopcntw 2, 2 9061; PWR8-NEXT: vadduwm 3, 3, 3 9062; PWR8-NEXT: vcmpgtuw 2, 2, 3 9063; PWR8-NEXT: blr 9064; 9065; PWR9-LABEL: ugt_20_v4i32: 9066; PWR9: # %bb.0: 9067; PWR9-NEXT: vspltisw 3, 10 9068; PWR9-NEXT: vpopcntw 2, 2 9069; PWR9-NEXT: vadduwm 3, 3, 3 9070; PWR9-NEXT: vcmpgtuw 2, 2, 3 9071; PWR9-NEXT: blr 9072 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 9073 %3 = icmp ugt <4 x i32> %2, <i32 20, i32 20, i32 20, i32 20> 9074 %4 = sext <4 x i1> %3 to <4 x i32> 9075 ret <4 x i32> %4 9076} 9077 9078define <4 x i32> @ult_21_v4i32(<4 x i32> %0) { 9079; PWR5-LABEL: ult_21_v4i32: 9080; PWR5: # %bb.0: 9081; PWR5-NEXT: addis 3, 2, .LCPI79_0@toc@ha 9082; PWR5-NEXT: vspltisw 4, 1 9083; PWR5-NEXT: vxor 3, 3, 3 9084; PWR5-NEXT: addi 3, 3, .LCPI79_0@toc@l 9085; PWR5-NEXT: lvx 5, 0, 3 9086; PWR5-NEXT: addis 3, 2, .LCPI79_1@toc@ha 9087; PWR5-NEXT: addi 3, 3, .LCPI79_1@toc@l 9088; PWR5-NEXT: vspltisw 0, 2 9089; PWR5-NEXT: vsrw 4, 2, 4 9090; PWR5-NEXT: vand 4, 4, 5 9091; PWR5-NEXT: lvx 5, 0, 3 9092; PWR5-NEXT: vsubuwm 2, 2, 4 9093; PWR5-NEXT: vand 4, 2, 5 9094; PWR5-NEXT: vsrw 2, 2, 0 9095; PWR5-NEXT: vand 2, 2, 5 9096; PWR5-NEXT: vspltisw 5, 4 9097; PWR5-NEXT: vadduwm 2, 4, 2 9098; PWR5-NEXT: vsrw 4, 2, 5 9099; PWR5-NEXT: vspltisb 5, 15 9100; PWR5-NEXT: vadduwm 2, 2, 4 9101; PWR5-NEXT: vspltisb 4, 1 9102; PWR5-NEXT: vand 2, 2, 5 9103; PWR5-NEXT: vspltisw 5, -16 9104; PWR5-NEXT: vrlw 0, 4, 5 9105; PWR5-NEXT: vmulouh 4, 2, 4 9106; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 9107; PWR5-NEXT: vspltisw 3, 12 9108; PWR5-NEXT: vadduwm 3, 3, 3 9109; PWR5-NEXT: vslw 2, 2, 5 9110; PWR5-NEXT: vadduwm 2, 4, 2 9111; PWR5-NEXT: vsrw 2, 2, 3 9112; PWR5-NEXT: vspltisw 3, 5 9113; PWR5-NEXT: vsubuwm 3, 3, 5 9114; PWR5-NEXT: vcmpgtuw 2, 3, 2 9115; PWR5-NEXT: blr 9116; 9117; PWR6-LABEL: ult_21_v4i32: 9118; PWR6: # %bb.0: 9119; PWR6-NEXT: addis 3, 2, .LCPI79_0@toc@ha 9120; PWR6-NEXT: vspltisw 4, 1 9121; PWR6-NEXT: vxor 3, 3, 3 9122; PWR6-NEXT: addi 3, 3, .LCPI79_0@toc@l 9123; PWR6-NEXT: lvx 5, 0, 3 9124; PWR6-NEXT: addis 3, 2, .LCPI79_1@toc@ha 9125; PWR6-NEXT: addi 3, 3, .LCPI79_1@toc@l 9126; PWR6-NEXT: vspltisw 0, 2 9127; PWR6-NEXT: vsrw 4, 2, 4 9128; PWR6-NEXT: vand 4, 4, 5 9129; PWR6-NEXT: lvx 5, 0, 3 9130; PWR6-NEXT: vsubuwm 2, 2, 4 9131; PWR6-NEXT: vand 4, 2, 5 9132; PWR6-NEXT: vsrw 2, 2, 0 9133; PWR6-NEXT: vand 2, 2, 5 9134; PWR6-NEXT: vspltisw 5, 4 9135; PWR6-NEXT: vadduwm 2, 4, 2 9136; PWR6-NEXT: vsrw 4, 2, 5 9137; PWR6-NEXT: vspltisb 5, 15 9138; PWR6-NEXT: vadduwm 2, 2, 4 9139; PWR6-NEXT: vspltisb 4, 1 9140; PWR6-NEXT: vand 2, 2, 5 9141; PWR6-NEXT: vspltisw 5, -16 9142; PWR6-NEXT: vrlw 0, 4, 5 9143; PWR6-NEXT: vmulouh 4, 2, 4 9144; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 9145; PWR6-NEXT: vspltisw 3, 12 9146; PWR6-NEXT: vadduwm 3, 3, 3 9147; PWR6-NEXT: vslw 2, 2, 5 9148; PWR6-NEXT: vadduwm 2, 4, 2 9149; PWR6-NEXT: vsrw 2, 2, 3 9150; PWR6-NEXT: vspltisw 3, 5 9151; PWR6-NEXT: vsubuwm 3, 3, 5 9152; PWR6-NEXT: vcmpgtuw 2, 3, 2 9153; PWR6-NEXT: blr 9154; 9155; PWR7-LABEL: ult_21_v4i32: 9156; PWR7: # %bb.0: 9157; PWR7-NEXT: vspltisw 3, 1 9158; PWR7-NEXT: addis 3, 2, .LCPI79_0@toc@ha 9159; PWR7-NEXT: addi 3, 3, .LCPI79_0@toc@l 9160; PWR7-NEXT: vspltisw 4, 2 9161; PWR7-NEXT: lxvw4x 0, 0, 3 9162; PWR7-NEXT: addis 3, 2, .LCPI79_1@toc@ha 9163; PWR7-NEXT: vspltisw 5, -16 9164; PWR7-NEXT: vsrw 3, 2, 3 9165; PWR7-NEXT: addi 3, 3, .LCPI79_1@toc@l 9166; PWR7-NEXT: vspltisb 0, 15 9167; PWR7-NEXT: xxland 35, 35, 0 9168; PWR7-NEXT: lxvw4x 0, 0, 3 9169; PWR7-NEXT: vsubuwm 2, 2, 3 9170; PWR7-NEXT: vsrw 3, 2, 4 9171; PWR7-NEXT: xxland 34, 34, 0 9172; PWR7-NEXT: vspltisw 4, 4 9173; PWR7-NEXT: xxland 35, 35, 0 9174; PWR7-NEXT: vadduwm 2, 2, 3 9175; PWR7-NEXT: vsrw 3, 2, 4 9176; PWR7-NEXT: vspltisb 4, 1 9177; PWR7-NEXT: vrlw 1, 4, 5 9178; PWR7-NEXT: vadduwm 2, 2, 3 9179; PWR7-NEXT: xxlxor 35, 35, 35 9180; PWR7-NEXT: xxland 34, 34, 32 9181; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 9182; PWR7-NEXT: vmulouh 2, 2, 4 9183; PWR7-NEXT: vspltisw 4, 12 9184; PWR7-NEXT: vslw 3, 3, 5 9185; PWR7-NEXT: vadduwm 2, 2, 3 9186; PWR7-NEXT: vadduwm 3, 4, 4 9187; PWR7-NEXT: vsrw 2, 2, 3 9188; PWR7-NEXT: vspltisw 3, 5 9189; PWR7-NEXT: vsubuwm 3, 3, 5 9190; PWR7-NEXT: vcmpgtuw 2, 3, 2 9191; PWR7-NEXT: blr 9192; 9193; PWR8-LABEL: ult_21_v4i32: 9194; PWR8: # %bb.0: 9195; PWR8-NEXT: vspltisw 3, -16 9196; PWR8-NEXT: vspltisw 4, 5 9197; PWR8-NEXT: vpopcntw 2, 2 9198; PWR8-NEXT: vsubuwm 3, 4, 3 9199; PWR8-NEXT: vcmpgtuw 2, 3, 2 9200; PWR8-NEXT: blr 9201; 9202; PWR9-LABEL: ult_21_v4i32: 9203; PWR9: # %bb.0: 9204; PWR9-NEXT: vspltisw 3, -16 9205; PWR9-NEXT: vspltisw 4, 5 9206; PWR9-NEXT: vpopcntw 2, 2 9207; PWR9-NEXT: vsubuwm 3, 4, 3 9208; PWR9-NEXT: vcmpgtuw 2, 3, 2 9209; PWR9-NEXT: blr 9210 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 9211 %3 = icmp ult <4 x i32> %2, <i32 21, i32 21, i32 21, i32 21> 9212 %4 = sext <4 x i1> %3 to <4 x i32> 9213 ret <4 x i32> %4 9214} 9215 9216define <4 x i32> @ugt_21_v4i32(<4 x i32> %0) { 9217; PWR5-LABEL: ugt_21_v4i32: 9218; PWR5: # %bb.0: 9219; PWR5-NEXT: addis 3, 2, .LCPI80_0@toc@ha 9220; PWR5-NEXT: vspltisw 4, 1 9221; PWR5-NEXT: vxor 3, 3, 3 9222; PWR5-NEXT: addi 3, 3, .LCPI80_0@toc@l 9223; PWR5-NEXT: lvx 5, 0, 3 9224; PWR5-NEXT: addis 3, 2, .LCPI80_1@toc@ha 9225; PWR5-NEXT: addi 3, 3, .LCPI80_1@toc@l 9226; PWR5-NEXT: vspltisw 0, 2 9227; PWR5-NEXT: vsrw 4, 2, 4 9228; PWR5-NEXT: vand 4, 4, 5 9229; PWR5-NEXT: lvx 5, 0, 3 9230; PWR5-NEXT: vsubuwm 2, 2, 4 9231; PWR5-NEXT: vand 4, 2, 5 9232; PWR5-NEXT: vsrw 2, 2, 0 9233; PWR5-NEXT: vand 2, 2, 5 9234; PWR5-NEXT: vspltisw 5, 4 9235; PWR5-NEXT: vadduwm 2, 4, 2 9236; PWR5-NEXT: vsrw 4, 2, 5 9237; PWR5-NEXT: vspltisb 5, 15 9238; PWR5-NEXT: vadduwm 2, 2, 4 9239; PWR5-NEXT: vspltisb 4, 1 9240; PWR5-NEXT: vand 2, 2, 5 9241; PWR5-NEXT: vspltisw 5, -16 9242; PWR5-NEXT: vrlw 0, 4, 5 9243; PWR5-NEXT: vmulouh 4, 2, 4 9244; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 9245; PWR5-NEXT: vspltisw 3, 12 9246; PWR5-NEXT: vadduwm 3, 3, 3 9247; PWR5-NEXT: vslw 2, 2, 5 9248; PWR5-NEXT: vadduwm 2, 4, 2 9249; PWR5-NEXT: vsrw 2, 2, 3 9250; PWR5-NEXT: vspltisw 3, 5 9251; PWR5-NEXT: vsubuwm 3, 3, 5 9252; PWR5-NEXT: vcmpgtuw 2, 2, 3 9253; PWR5-NEXT: blr 9254; 9255; PWR6-LABEL: ugt_21_v4i32: 9256; PWR6: # %bb.0: 9257; PWR6-NEXT: addis 3, 2, .LCPI80_0@toc@ha 9258; PWR6-NEXT: vspltisw 4, 1 9259; PWR6-NEXT: vxor 3, 3, 3 9260; PWR6-NEXT: addi 3, 3, .LCPI80_0@toc@l 9261; PWR6-NEXT: lvx 5, 0, 3 9262; PWR6-NEXT: addis 3, 2, .LCPI80_1@toc@ha 9263; PWR6-NEXT: addi 3, 3, .LCPI80_1@toc@l 9264; PWR6-NEXT: vspltisw 0, 2 9265; PWR6-NEXT: vsrw 4, 2, 4 9266; PWR6-NEXT: vand 4, 4, 5 9267; PWR6-NEXT: lvx 5, 0, 3 9268; PWR6-NEXT: vsubuwm 2, 2, 4 9269; PWR6-NEXT: vand 4, 2, 5 9270; PWR6-NEXT: vsrw 2, 2, 0 9271; PWR6-NEXT: vand 2, 2, 5 9272; PWR6-NEXT: vspltisw 5, 4 9273; PWR6-NEXT: vadduwm 2, 4, 2 9274; PWR6-NEXT: vsrw 4, 2, 5 9275; PWR6-NEXT: vspltisb 5, 15 9276; PWR6-NEXT: vadduwm 2, 2, 4 9277; PWR6-NEXT: vspltisb 4, 1 9278; PWR6-NEXT: vand 2, 2, 5 9279; PWR6-NEXT: vspltisw 5, -16 9280; PWR6-NEXT: vrlw 0, 4, 5 9281; PWR6-NEXT: vmulouh 4, 2, 4 9282; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 9283; PWR6-NEXT: vspltisw 3, 12 9284; PWR6-NEXT: vadduwm 3, 3, 3 9285; PWR6-NEXT: vslw 2, 2, 5 9286; PWR6-NEXT: vadduwm 2, 4, 2 9287; PWR6-NEXT: vsrw 2, 2, 3 9288; PWR6-NEXT: vspltisw 3, 5 9289; PWR6-NEXT: vsubuwm 3, 3, 5 9290; PWR6-NEXT: vcmpgtuw 2, 2, 3 9291; PWR6-NEXT: blr 9292; 9293; PWR7-LABEL: ugt_21_v4i32: 9294; PWR7: # %bb.0: 9295; PWR7-NEXT: vspltisw 3, 1 9296; PWR7-NEXT: addis 3, 2, .LCPI80_0@toc@ha 9297; PWR7-NEXT: addi 3, 3, .LCPI80_0@toc@l 9298; PWR7-NEXT: vspltisw 4, 2 9299; PWR7-NEXT: lxvw4x 0, 0, 3 9300; PWR7-NEXT: addis 3, 2, .LCPI80_1@toc@ha 9301; PWR7-NEXT: vspltisw 5, -16 9302; PWR7-NEXT: vsrw 3, 2, 3 9303; PWR7-NEXT: addi 3, 3, .LCPI80_1@toc@l 9304; PWR7-NEXT: vspltisb 0, 15 9305; PWR7-NEXT: xxland 35, 35, 0 9306; PWR7-NEXT: lxvw4x 0, 0, 3 9307; PWR7-NEXT: vsubuwm 2, 2, 3 9308; PWR7-NEXT: vsrw 3, 2, 4 9309; PWR7-NEXT: xxland 34, 34, 0 9310; PWR7-NEXT: vspltisw 4, 4 9311; PWR7-NEXT: xxland 35, 35, 0 9312; PWR7-NEXT: vadduwm 2, 2, 3 9313; PWR7-NEXT: vsrw 3, 2, 4 9314; PWR7-NEXT: vspltisb 4, 1 9315; PWR7-NEXT: vrlw 1, 4, 5 9316; PWR7-NEXT: vadduwm 2, 2, 3 9317; PWR7-NEXT: xxlxor 35, 35, 35 9318; PWR7-NEXT: xxland 34, 34, 32 9319; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 9320; PWR7-NEXT: vmulouh 2, 2, 4 9321; PWR7-NEXT: vspltisw 4, 12 9322; PWR7-NEXT: vslw 3, 3, 5 9323; PWR7-NEXT: vadduwm 2, 2, 3 9324; PWR7-NEXT: vadduwm 3, 4, 4 9325; PWR7-NEXT: vsrw 2, 2, 3 9326; PWR7-NEXT: vspltisw 3, 5 9327; PWR7-NEXT: vsubuwm 3, 3, 5 9328; PWR7-NEXT: vcmpgtuw 2, 2, 3 9329; PWR7-NEXT: blr 9330; 9331; PWR8-LABEL: ugt_21_v4i32: 9332; PWR8: # %bb.0: 9333; PWR8-NEXT: vspltisw 3, -16 9334; PWR8-NEXT: vspltisw 4, 5 9335; PWR8-NEXT: vpopcntw 2, 2 9336; PWR8-NEXT: vsubuwm 3, 4, 3 9337; PWR8-NEXT: vcmpgtuw 2, 2, 3 9338; PWR8-NEXT: blr 9339; 9340; PWR9-LABEL: ugt_21_v4i32: 9341; PWR9: # %bb.0: 9342; PWR9-NEXT: vspltisw 3, -16 9343; PWR9-NEXT: vspltisw 4, 5 9344; PWR9-NEXT: vpopcntw 2, 2 9345; PWR9-NEXT: vsubuwm 3, 4, 3 9346; PWR9-NEXT: vcmpgtuw 2, 2, 3 9347; PWR9-NEXT: blr 9348 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 9349 %3 = icmp ugt <4 x i32> %2, <i32 21, i32 21, i32 21, i32 21> 9350 %4 = sext <4 x i1> %3 to <4 x i32> 9351 ret <4 x i32> %4 9352} 9353 9354define <4 x i32> @ult_22_v4i32(<4 x i32> %0) { 9355; PWR5-LABEL: ult_22_v4i32: 9356; PWR5: # %bb.0: 9357; PWR5-NEXT: addis 3, 2, .LCPI81_0@toc@ha 9358; PWR5-NEXT: vspltisw 4, 1 9359; PWR5-NEXT: vxor 3, 3, 3 9360; PWR5-NEXT: addi 3, 3, .LCPI81_0@toc@l 9361; PWR5-NEXT: lvx 5, 0, 3 9362; PWR5-NEXT: addis 3, 2, .LCPI81_1@toc@ha 9363; PWR5-NEXT: addi 3, 3, .LCPI81_1@toc@l 9364; PWR5-NEXT: vspltisw 0, 2 9365; PWR5-NEXT: vsrw 4, 2, 4 9366; PWR5-NEXT: vand 4, 4, 5 9367; PWR5-NEXT: lvx 5, 0, 3 9368; PWR5-NEXT: vsubuwm 2, 2, 4 9369; PWR5-NEXT: vand 4, 2, 5 9370; PWR5-NEXT: vsrw 2, 2, 0 9371; PWR5-NEXT: vand 2, 2, 5 9372; PWR5-NEXT: vspltisw 5, 4 9373; PWR5-NEXT: vadduwm 2, 4, 2 9374; PWR5-NEXT: vsrw 4, 2, 5 9375; PWR5-NEXT: vspltisb 5, 15 9376; PWR5-NEXT: vadduwm 2, 2, 4 9377; PWR5-NEXT: vspltisb 4, 1 9378; PWR5-NEXT: vand 2, 2, 5 9379; PWR5-NEXT: vspltisw 5, -16 9380; PWR5-NEXT: vrlw 0, 4, 5 9381; PWR5-NEXT: vmulouh 4, 2, 4 9382; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 9383; PWR5-NEXT: vspltisw 3, 12 9384; PWR5-NEXT: vadduwm 3, 3, 3 9385; PWR5-NEXT: vslw 2, 2, 5 9386; PWR5-NEXT: vadduwm 2, 4, 2 9387; PWR5-NEXT: vsrw 2, 2, 3 9388; PWR5-NEXT: vspltisw 3, 11 9389; PWR5-NEXT: vadduwm 3, 3, 3 9390; PWR5-NEXT: vcmpgtuw 2, 3, 2 9391; PWR5-NEXT: blr 9392; 9393; PWR6-LABEL: ult_22_v4i32: 9394; PWR6: # %bb.0: 9395; PWR6-NEXT: addis 3, 2, .LCPI81_0@toc@ha 9396; PWR6-NEXT: vspltisw 4, 1 9397; PWR6-NEXT: vxor 3, 3, 3 9398; PWR6-NEXT: addi 3, 3, .LCPI81_0@toc@l 9399; PWR6-NEXT: lvx 5, 0, 3 9400; PWR6-NEXT: addis 3, 2, .LCPI81_1@toc@ha 9401; PWR6-NEXT: addi 3, 3, .LCPI81_1@toc@l 9402; PWR6-NEXT: vspltisw 0, 2 9403; PWR6-NEXT: vsrw 4, 2, 4 9404; PWR6-NEXT: vand 4, 4, 5 9405; PWR6-NEXT: lvx 5, 0, 3 9406; PWR6-NEXT: vsubuwm 2, 2, 4 9407; PWR6-NEXT: vand 4, 2, 5 9408; PWR6-NEXT: vsrw 2, 2, 0 9409; PWR6-NEXT: vand 2, 2, 5 9410; PWR6-NEXT: vspltisw 5, 4 9411; PWR6-NEXT: vadduwm 2, 4, 2 9412; PWR6-NEXT: vsrw 4, 2, 5 9413; PWR6-NEXT: vspltisb 5, 15 9414; PWR6-NEXT: vadduwm 2, 2, 4 9415; PWR6-NEXT: vspltisb 4, 1 9416; PWR6-NEXT: vand 2, 2, 5 9417; PWR6-NEXT: vspltisw 5, -16 9418; PWR6-NEXT: vrlw 0, 4, 5 9419; PWR6-NEXT: vmulouh 4, 2, 4 9420; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 9421; PWR6-NEXT: vspltisw 3, 12 9422; PWR6-NEXT: vadduwm 3, 3, 3 9423; PWR6-NEXT: vslw 2, 2, 5 9424; PWR6-NEXT: vadduwm 2, 4, 2 9425; PWR6-NEXT: vsrw 2, 2, 3 9426; PWR6-NEXT: vspltisw 3, 11 9427; PWR6-NEXT: vadduwm 3, 3, 3 9428; PWR6-NEXT: vcmpgtuw 2, 3, 2 9429; PWR6-NEXT: blr 9430; 9431; PWR7-LABEL: ult_22_v4i32: 9432; PWR7: # %bb.0: 9433; PWR7-NEXT: vspltisw 3, 1 9434; PWR7-NEXT: addis 3, 2, .LCPI81_0@toc@ha 9435; PWR7-NEXT: addi 3, 3, .LCPI81_0@toc@l 9436; PWR7-NEXT: vspltisw 4, 2 9437; PWR7-NEXT: lxvw4x 0, 0, 3 9438; PWR7-NEXT: addis 3, 2, .LCPI81_1@toc@ha 9439; PWR7-NEXT: vspltisw 5, -16 9440; PWR7-NEXT: vsrw 3, 2, 3 9441; PWR7-NEXT: addi 3, 3, .LCPI81_1@toc@l 9442; PWR7-NEXT: vspltisb 0, 15 9443; PWR7-NEXT: xxland 35, 35, 0 9444; PWR7-NEXT: lxvw4x 0, 0, 3 9445; PWR7-NEXT: vsubuwm 2, 2, 3 9446; PWR7-NEXT: vsrw 3, 2, 4 9447; PWR7-NEXT: xxland 34, 34, 0 9448; PWR7-NEXT: vspltisw 4, 4 9449; PWR7-NEXT: xxland 35, 35, 0 9450; PWR7-NEXT: vadduwm 2, 2, 3 9451; PWR7-NEXT: vsrw 3, 2, 4 9452; PWR7-NEXT: vspltisb 4, 1 9453; PWR7-NEXT: vrlw 1, 4, 5 9454; PWR7-NEXT: vadduwm 2, 2, 3 9455; PWR7-NEXT: xxlxor 35, 35, 35 9456; PWR7-NEXT: xxland 34, 34, 32 9457; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 9458; PWR7-NEXT: vmulouh 2, 2, 4 9459; PWR7-NEXT: vspltisw 4, 12 9460; PWR7-NEXT: vslw 3, 3, 5 9461; PWR7-NEXT: vadduwm 2, 2, 3 9462; PWR7-NEXT: vadduwm 3, 4, 4 9463; PWR7-NEXT: vsrw 2, 2, 3 9464; PWR7-NEXT: vspltisw 3, 11 9465; PWR7-NEXT: vadduwm 3, 3, 3 9466; PWR7-NEXT: vcmpgtuw 2, 3, 2 9467; PWR7-NEXT: blr 9468; 9469; PWR8-LABEL: ult_22_v4i32: 9470; PWR8: # %bb.0: 9471; PWR8-NEXT: vspltisw 3, 11 9472; PWR8-NEXT: vpopcntw 2, 2 9473; PWR8-NEXT: vadduwm 3, 3, 3 9474; PWR8-NEXT: vcmpgtuw 2, 3, 2 9475; PWR8-NEXT: blr 9476; 9477; PWR9-LABEL: ult_22_v4i32: 9478; PWR9: # %bb.0: 9479; PWR9-NEXT: vspltisw 3, 11 9480; PWR9-NEXT: vpopcntw 2, 2 9481; PWR9-NEXT: vadduwm 3, 3, 3 9482; PWR9-NEXT: vcmpgtuw 2, 3, 2 9483; PWR9-NEXT: blr 9484 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 9485 %3 = icmp ult <4 x i32> %2, <i32 22, i32 22, i32 22, i32 22> 9486 %4 = sext <4 x i1> %3 to <4 x i32> 9487 ret <4 x i32> %4 9488} 9489 9490define <4 x i32> @ugt_22_v4i32(<4 x i32> %0) { 9491; PWR5-LABEL: ugt_22_v4i32: 9492; PWR5: # %bb.0: 9493; PWR5-NEXT: addis 3, 2, .LCPI82_0@toc@ha 9494; PWR5-NEXT: vspltisw 4, 1 9495; PWR5-NEXT: vxor 3, 3, 3 9496; PWR5-NEXT: addi 3, 3, .LCPI82_0@toc@l 9497; PWR5-NEXT: lvx 5, 0, 3 9498; PWR5-NEXT: addis 3, 2, .LCPI82_1@toc@ha 9499; PWR5-NEXT: addi 3, 3, .LCPI82_1@toc@l 9500; PWR5-NEXT: vspltisw 0, 2 9501; PWR5-NEXT: vsrw 4, 2, 4 9502; PWR5-NEXT: vand 4, 4, 5 9503; PWR5-NEXT: lvx 5, 0, 3 9504; PWR5-NEXT: vsubuwm 2, 2, 4 9505; PWR5-NEXT: vand 4, 2, 5 9506; PWR5-NEXT: vsrw 2, 2, 0 9507; PWR5-NEXT: vand 2, 2, 5 9508; PWR5-NEXT: vspltisw 5, 4 9509; PWR5-NEXT: vadduwm 2, 4, 2 9510; PWR5-NEXT: vsrw 4, 2, 5 9511; PWR5-NEXT: vspltisb 5, 15 9512; PWR5-NEXT: vadduwm 2, 2, 4 9513; PWR5-NEXT: vspltisb 4, 1 9514; PWR5-NEXT: vand 2, 2, 5 9515; PWR5-NEXT: vspltisw 5, -16 9516; PWR5-NEXT: vrlw 0, 4, 5 9517; PWR5-NEXT: vmulouh 4, 2, 4 9518; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 9519; PWR5-NEXT: vspltisw 3, 12 9520; PWR5-NEXT: vadduwm 3, 3, 3 9521; PWR5-NEXT: vslw 2, 2, 5 9522; PWR5-NEXT: vadduwm 2, 4, 2 9523; PWR5-NEXT: vsrw 2, 2, 3 9524; PWR5-NEXT: vspltisw 3, 11 9525; PWR5-NEXT: vadduwm 3, 3, 3 9526; PWR5-NEXT: vcmpgtuw 2, 2, 3 9527; PWR5-NEXT: blr 9528; 9529; PWR6-LABEL: ugt_22_v4i32: 9530; PWR6: # %bb.0: 9531; PWR6-NEXT: addis 3, 2, .LCPI82_0@toc@ha 9532; PWR6-NEXT: vspltisw 4, 1 9533; PWR6-NEXT: vxor 3, 3, 3 9534; PWR6-NEXT: addi 3, 3, .LCPI82_0@toc@l 9535; PWR6-NEXT: lvx 5, 0, 3 9536; PWR6-NEXT: addis 3, 2, .LCPI82_1@toc@ha 9537; PWR6-NEXT: addi 3, 3, .LCPI82_1@toc@l 9538; PWR6-NEXT: vspltisw 0, 2 9539; PWR6-NEXT: vsrw 4, 2, 4 9540; PWR6-NEXT: vand 4, 4, 5 9541; PWR6-NEXT: lvx 5, 0, 3 9542; PWR6-NEXT: vsubuwm 2, 2, 4 9543; PWR6-NEXT: vand 4, 2, 5 9544; PWR6-NEXT: vsrw 2, 2, 0 9545; PWR6-NEXT: vand 2, 2, 5 9546; PWR6-NEXT: vspltisw 5, 4 9547; PWR6-NEXT: vadduwm 2, 4, 2 9548; PWR6-NEXT: vsrw 4, 2, 5 9549; PWR6-NEXT: vspltisb 5, 15 9550; PWR6-NEXT: vadduwm 2, 2, 4 9551; PWR6-NEXT: vspltisb 4, 1 9552; PWR6-NEXT: vand 2, 2, 5 9553; PWR6-NEXT: vspltisw 5, -16 9554; PWR6-NEXT: vrlw 0, 4, 5 9555; PWR6-NEXT: vmulouh 4, 2, 4 9556; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 9557; PWR6-NEXT: vspltisw 3, 12 9558; PWR6-NEXT: vadduwm 3, 3, 3 9559; PWR6-NEXT: vslw 2, 2, 5 9560; PWR6-NEXT: vadduwm 2, 4, 2 9561; PWR6-NEXT: vsrw 2, 2, 3 9562; PWR6-NEXT: vspltisw 3, 11 9563; PWR6-NEXT: vadduwm 3, 3, 3 9564; PWR6-NEXT: vcmpgtuw 2, 2, 3 9565; PWR6-NEXT: blr 9566; 9567; PWR7-LABEL: ugt_22_v4i32: 9568; PWR7: # %bb.0: 9569; PWR7-NEXT: vspltisw 3, 1 9570; PWR7-NEXT: addis 3, 2, .LCPI82_0@toc@ha 9571; PWR7-NEXT: addi 3, 3, .LCPI82_0@toc@l 9572; PWR7-NEXT: vspltisw 4, 2 9573; PWR7-NEXT: lxvw4x 0, 0, 3 9574; PWR7-NEXT: addis 3, 2, .LCPI82_1@toc@ha 9575; PWR7-NEXT: vspltisw 5, -16 9576; PWR7-NEXT: vsrw 3, 2, 3 9577; PWR7-NEXT: addi 3, 3, .LCPI82_1@toc@l 9578; PWR7-NEXT: vspltisb 0, 15 9579; PWR7-NEXT: xxland 35, 35, 0 9580; PWR7-NEXT: lxvw4x 0, 0, 3 9581; PWR7-NEXT: vsubuwm 2, 2, 3 9582; PWR7-NEXT: vsrw 3, 2, 4 9583; PWR7-NEXT: xxland 34, 34, 0 9584; PWR7-NEXT: vspltisw 4, 4 9585; PWR7-NEXT: xxland 35, 35, 0 9586; PWR7-NEXT: vadduwm 2, 2, 3 9587; PWR7-NEXT: vsrw 3, 2, 4 9588; PWR7-NEXT: vspltisb 4, 1 9589; PWR7-NEXT: vrlw 1, 4, 5 9590; PWR7-NEXT: vadduwm 2, 2, 3 9591; PWR7-NEXT: xxlxor 35, 35, 35 9592; PWR7-NEXT: xxland 34, 34, 32 9593; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 9594; PWR7-NEXT: vmulouh 2, 2, 4 9595; PWR7-NEXT: vspltisw 4, 12 9596; PWR7-NEXT: vslw 3, 3, 5 9597; PWR7-NEXT: vadduwm 2, 2, 3 9598; PWR7-NEXT: vadduwm 3, 4, 4 9599; PWR7-NEXT: vsrw 2, 2, 3 9600; PWR7-NEXT: vspltisw 3, 11 9601; PWR7-NEXT: vadduwm 3, 3, 3 9602; PWR7-NEXT: vcmpgtuw 2, 2, 3 9603; PWR7-NEXT: blr 9604; 9605; PWR8-LABEL: ugt_22_v4i32: 9606; PWR8: # %bb.0: 9607; PWR8-NEXT: vspltisw 3, 11 9608; PWR8-NEXT: vpopcntw 2, 2 9609; PWR8-NEXT: vadduwm 3, 3, 3 9610; PWR8-NEXT: vcmpgtuw 2, 2, 3 9611; PWR8-NEXT: blr 9612; 9613; PWR9-LABEL: ugt_22_v4i32: 9614; PWR9: # %bb.0: 9615; PWR9-NEXT: vspltisw 3, 11 9616; PWR9-NEXT: vpopcntw 2, 2 9617; PWR9-NEXT: vadduwm 3, 3, 3 9618; PWR9-NEXT: vcmpgtuw 2, 2, 3 9619; PWR9-NEXT: blr 9620 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 9621 %3 = icmp ugt <4 x i32> %2, <i32 22, i32 22, i32 22, i32 22> 9622 %4 = sext <4 x i1> %3 to <4 x i32> 9623 ret <4 x i32> %4 9624} 9625 9626define <4 x i32> @ult_23_v4i32(<4 x i32> %0) { 9627; PWR5-LABEL: ult_23_v4i32: 9628; PWR5: # %bb.0: 9629; PWR5-NEXT: addis 3, 2, .LCPI83_0@toc@ha 9630; PWR5-NEXT: vspltisw 4, 1 9631; PWR5-NEXT: vxor 3, 3, 3 9632; PWR5-NEXT: addi 3, 3, .LCPI83_0@toc@l 9633; PWR5-NEXT: lvx 5, 0, 3 9634; PWR5-NEXT: addis 3, 2, .LCPI83_1@toc@ha 9635; PWR5-NEXT: addi 3, 3, .LCPI83_1@toc@l 9636; PWR5-NEXT: vspltisw 0, 2 9637; PWR5-NEXT: vsrw 4, 2, 4 9638; PWR5-NEXT: vand 4, 4, 5 9639; PWR5-NEXT: lvx 5, 0, 3 9640; PWR5-NEXT: vsubuwm 2, 2, 4 9641; PWR5-NEXT: vand 4, 2, 5 9642; PWR5-NEXT: vsrw 2, 2, 0 9643; PWR5-NEXT: vand 2, 2, 5 9644; PWR5-NEXT: vspltisw 5, 4 9645; PWR5-NEXT: vadduwm 2, 4, 2 9646; PWR5-NEXT: vsrw 4, 2, 5 9647; PWR5-NEXT: vspltisb 5, 15 9648; PWR5-NEXT: vadduwm 2, 2, 4 9649; PWR5-NEXT: vspltisb 4, 1 9650; PWR5-NEXT: vand 2, 2, 5 9651; PWR5-NEXT: vspltisw 5, -16 9652; PWR5-NEXT: vrlw 0, 4, 5 9653; PWR5-NEXT: vmulouh 4, 2, 4 9654; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 9655; PWR5-NEXT: vspltisw 3, 12 9656; PWR5-NEXT: vadduwm 3, 3, 3 9657; PWR5-NEXT: vslw 2, 2, 5 9658; PWR5-NEXT: vadduwm 2, 4, 2 9659; PWR5-NEXT: vsrw 2, 2, 3 9660; PWR5-NEXT: vspltisw 3, 7 9661; PWR5-NEXT: vsubuwm 3, 3, 5 9662; PWR5-NEXT: vcmpgtuw 2, 3, 2 9663; PWR5-NEXT: blr 9664; 9665; PWR6-LABEL: ult_23_v4i32: 9666; PWR6: # %bb.0: 9667; PWR6-NEXT: addis 3, 2, .LCPI83_0@toc@ha 9668; PWR6-NEXT: vspltisw 4, 1 9669; PWR6-NEXT: vxor 3, 3, 3 9670; PWR6-NEXT: addi 3, 3, .LCPI83_0@toc@l 9671; PWR6-NEXT: lvx 5, 0, 3 9672; PWR6-NEXT: addis 3, 2, .LCPI83_1@toc@ha 9673; PWR6-NEXT: addi 3, 3, .LCPI83_1@toc@l 9674; PWR6-NEXT: vspltisw 0, 2 9675; PWR6-NEXT: vsrw 4, 2, 4 9676; PWR6-NEXT: vand 4, 4, 5 9677; PWR6-NEXT: lvx 5, 0, 3 9678; PWR6-NEXT: vsubuwm 2, 2, 4 9679; PWR6-NEXT: vand 4, 2, 5 9680; PWR6-NEXT: vsrw 2, 2, 0 9681; PWR6-NEXT: vand 2, 2, 5 9682; PWR6-NEXT: vspltisw 5, 4 9683; PWR6-NEXT: vadduwm 2, 4, 2 9684; PWR6-NEXT: vsrw 4, 2, 5 9685; PWR6-NEXT: vspltisb 5, 15 9686; PWR6-NEXT: vadduwm 2, 2, 4 9687; PWR6-NEXT: vspltisb 4, 1 9688; PWR6-NEXT: vand 2, 2, 5 9689; PWR6-NEXT: vspltisw 5, -16 9690; PWR6-NEXT: vrlw 0, 4, 5 9691; PWR6-NEXT: vmulouh 4, 2, 4 9692; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 9693; PWR6-NEXT: vspltisw 3, 12 9694; PWR6-NEXT: vadduwm 3, 3, 3 9695; PWR6-NEXT: vslw 2, 2, 5 9696; PWR6-NEXT: vadduwm 2, 4, 2 9697; PWR6-NEXT: vsrw 2, 2, 3 9698; PWR6-NEXT: vspltisw 3, 7 9699; PWR6-NEXT: vsubuwm 3, 3, 5 9700; PWR6-NEXT: vcmpgtuw 2, 3, 2 9701; PWR6-NEXT: blr 9702; 9703; PWR7-LABEL: ult_23_v4i32: 9704; PWR7: # %bb.0: 9705; PWR7-NEXT: vspltisw 3, 1 9706; PWR7-NEXT: addis 3, 2, .LCPI83_0@toc@ha 9707; PWR7-NEXT: addi 3, 3, .LCPI83_0@toc@l 9708; PWR7-NEXT: vspltisw 4, 2 9709; PWR7-NEXT: lxvw4x 0, 0, 3 9710; PWR7-NEXT: addis 3, 2, .LCPI83_1@toc@ha 9711; PWR7-NEXT: vspltisw 5, -16 9712; PWR7-NEXT: vsrw 3, 2, 3 9713; PWR7-NEXT: addi 3, 3, .LCPI83_1@toc@l 9714; PWR7-NEXT: vspltisb 0, 15 9715; PWR7-NEXT: xxland 35, 35, 0 9716; PWR7-NEXT: lxvw4x 0, 0, 3 9717; PWR7-NEXT: vsubuwm 2, 2, 3 9718; PWR7-NEXT: vsrw 3, 2, 4 9719; PWR7-NEXT: xxland 34, 34, 0 9720; PWR7-NEXT: vspltisw 4, 4 9721; PWR7-NEXT: xxland 35, 35, 0 9722; PWR7-NEXT: vadduwm 2, 2, 3 9723; PWR7-NEXT: vsrw 3, 2, 4 9724; PWR7-NEXT: vspltisb 4, 1 9725; PWR7-NEXT: vrlw 1, 4, 5 9726; PWR7-NEXT: vadduwm 2, 2, 3 9727; PWR7-NEXT: xxlxor 35, 35, 35 9728; PWR7-NEXT: xxland 34, 34, 32 9729; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 9730; PWR7-NEXT: vmulouh 2, 2, 4 9731; PWR7-NEXT: vspltisw 4, 12 9732; PWR7-NEXT: vslw 3, 3, 5 9733; PWR7-NEXT: vadduwm 2, 2, 3 9734; PWR7-NEXT: vadduwm 3, 4, 4 9735; PWR7-NEXT: vsrw 2, 2, 3 9736; PWR7-NEXT: vspltisw 3, 7 9737; PWR7-NEXT: vsubuwm 3, 3, 5 9738; PWR7-NEXT: vcmpgtuw 2, 3, 2 9739; PWR7-NEXT: blr 9740; 9741; PWR8-LABEL: ult_23_v4i32: 9742; PWR8: # %bb.0: 9743; PWR8-NEXT: vspltisw 3, -16 9744; PWR8-NEXT: vspltisw 4, 7 9745; PWR8-NEXT: vpopcntw 2, 2 9746; PWR8-NEXT: vsubuwm 3, 4, 3 9747; PWR8-NEXT: vcmpgtuw 2, 3, 2 9748; PWR8-NEXT: blr 9749; 9750; PWR9-LABEL: ult_23_v4i32: 9751; PWR9: # %bb.0: 9752; PWR9-NEXT: vspltisw 3, -16 9753; PWR9-NEXT: vspltisw 4, 7 9754; PWR9-NEXT: vpopcntw 2, 2 9755; PWR9-NEXT: vsubuwm 3, 4, 3 9756; PWR9-NEXT: vcmpgtuw 2, 3, 2 9757; PWR9-NEXT: blr 9758 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 9759 %3 = icmp ult <4 x i32> %2, <i32 23, i32 23, i32 23, i32 23> 9760 %4 = sext <4 x i1> %3 to <4 x i32> 9761 ret <4 x i32> %4 9762} 9763 9764define <4 x i32> @ugt_23_v4i32(<4 x i32> %0) { 9765; PWR5-LABEL: ugt_23_v4i32: 9766; PWR5: # %bb.0: 9767; PWR5-NEXT: addis 3, 2, .LCPI84_0@toc@ha 9768; PWR5-NEXT: vspltisw 4, 1 9769; PWR5-NEXT: vxor 3, 3, 3 9770; PWR5-NEXT: addi 3, 3, .LCPI84_0@toc@l 9771; PWR5-NEXT: lvx 5, 0, 3 9772; PWR5-NEXT: addis 3, 2, .LCPI84_1@toc@ha 9773; PWR5-NEXT: addi 3, 3, .LCPI84_1@toc@l 9774; PWR5-NEXT: vspltisw 0, 2 9775; PWR5-NEXT: vsrw 4, 2, 4 9776; PWR5-NEXT: vand 4, 4, 5 9777; PWR5-NEXT: lvx 5, 0, 3 9778; PWR5-NEXT: vsubuwm 2, 2, 4 9779; PWR5-NEXT: vand 4, 2, 5 9780; PWR5-NEXT: vsrw 2, 2, 0 9781; PWR5-NEXT: vand 2, 2, 5 9782; PWR5-NEXT: vspltisw 5, 4 9783; PWR5-NEXT: vadduwm 2, 4, 2 9784; PWR5-NEXT: vsrw 4, 2, 5 9785; PWR5-NEXT: vspltisb 5, 15 9786; PWR5-NEXT: vadduwm 2, 2, 4 9787; PWR5-NEXT: vspltisb 4, 1 9788; PWR5-NEXT: vand 2, 2, 5 9789; PWR5-NEXT: vspltisw 5, -16 9790; PWR5-NEXT: vrlw 0, 4, 5 9791; PWR5-NEXT: vmulouh 4, 2, 4 9792; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 9793; PWR5-NEXT: vspltisw 3, 12 9794; PWR5-NEXT: vadduwm 3, 3, 3 9795; PWR5-NEXT: vslw 2, 2, 5 9796; PWR5-NEXT: vadduwm 2, 4, 2 9797; PWR5-NEXT: vsrw 2, 2, 3 9798; PWR5-NEXT: vspltisw 3, 7 9799; PWR5-NEXT: vsubuwm 3, 3, 5 9800; PWR5-NEXT: vcmpgtuw 2, 2, 3 9801; PWR5-NEXT: blr 9802; 9803; PWR6-LABEL: ugt_23_v4i32: 9804; PWR6: # %bb.0: 9805; PWR6-NEXT: addis 3, 2, .LCPI84_0@toc@ha 9806; PWR6-NEXT: vspltisw 4, 1 9807; PWR6-NEXT: vxor 3, 3, 3 9808; PWR6-NEXT: addi 3, 3, .LCPI84_0@toc@l 9809; PWR6-NEXT: lvx 5, 0, 3 9810; PWR6-NEXT: addis 3, 2, .LCPI84_1@toc@ha 9811; PWR6-NEXT: addi 3, 3, .LCPI84_1@toc@l 9812; PWR6-NEXT: vspltisw 0, 2 9813; PWR6-NEXT: vsrw 4, 2, 4 9814; PWR6-NEXT: vand 4, 4, 5 9815; PWR6-NEXT: lvx 5, 0, 3 9816; PWR6-NEXT: vsubuwm 2, 2, 4 9817; PWR6-NEXT: vand 4, 2, 5 9818; PWR6-NEXT: vsrw 2, 2, 0 9819; PWR6-NEXT: vand 2, 2, 5 9820; PWR6-NEXT: vspltisw 5, 4 9821; PWR6-NEXT: vadduwm 2, 4, 2 9822; PWR6-NEXT: vsrw 4, 2, 5 9823; PWR6-NEXT: vspltisb 5, 15 9824; PWR6-NEXT: vadduwm 2, 2, 4 9825; PWR6-NEXT: vspltisb 4, 1 9826; PWR6-NEXT: vand 2, 2, 5 9827; PWR6-NEXT: vspltisw 5, -16 9828; PWR6-NEXT: vrlw 0, 4, 5 9829; PWR6-NEXT: vmulouh 4, 2, 4 9830; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 9831; PWR6-NEXT: vspltisw 3, 12 9832; PWR6-NEXT: vadduwm 3, 3, 3 9833; PWR6-NEXT: vslw 2, 2, 5 9834; PWR6-NEXT: vadduwm 2, 4, 2 9835; PWR6-NEXT: vsrw 2, 2, 3 9836; PWR6-NEXT: vspltisw 3, 7 9837; PWR6-NEXT: vsubuwm 3, 3, 5 9838; PWR6-NEXT: vcmpgtuw 2, 2, 3 9839; PWR6-NEXT: blr 9840; 9841; PWR7-LABEL: ugt_23_v4i32: 9842; PWR7: # %bb.0: 9843; PWR7-NEXT: vspltisw 3, 1 9844; PWR7-NEXT: addis 3, 2, .LCPI84_0@toc@ha 9845; PWR7-NEXT: addi 3, 3, .LCPI84_0@toc@l 9846; PWR7-NEXT: vspltisw 4, 2 9847; PWR7-NEXT: lxvw4x 0, 0, 3 9848; PWR7-NEXT: addis 3, 2, .LCPI84_1@toc@ha 9849; PWR7-NEXT: vspltisw 5, -16 9850; PWR7-NEXT: vsrw 3, 2, 3 9851; PWR7-NEXT: addi 3, 3, .LCPI84_1@toc@l 9852; PWR7-NEXT: vspltisb 0, 15 9853; PWR7-NEXT: xxland 35, 35, 0 9854; PWR7-NEXT: lxvw4x 0, 0, 3 9855; PWR7-NEXT: vsubuwm 2, 2, 3 9856; PWR7-NEXT: vsrw 3, 2, 4 9857; PWR7-NEXT: xxland 34, 34, 0 9858; PWR7-NEXT: vspltisw 4, 4 9859; PWR7-NEXT: xxland 35, 35, 0 9860; PWR7-NEXT: vadduwm 2, 2, 3 9861; PWR7-NEXT: vsrw 3, 2, 4 9862; PWR7-NEXT: vspltisb 4, 1 9863; PWR7-NEXT: vrlw 1, 4, 5 9864; PWR7-NEXT: vadduwm 2, 2, 3 9865; PWR7-NEXT: xxlxor 35, 35, 35 9866; PWR7-NEXT: xxland 34, 34, 32 9867; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 9868; PWR7-NEXT: vmulouh 2, 2, 4 9869; PWR7-NEXT: vspltisw 4, 12 9870; PWR7-NEXT: vslw 3, 3, 5 9871; PWR7-NEXT: vadduwm 2, 2, 3 9872; PWR7-NEXT: vadduwm 3, 4, 4 9873; PWR7-NEXT: vsrw 2, 2, 3 9874; PWR7-NEXT: vspltisw 3, 7 9875; PWR7-NEXT: vsubuwm 3, 3, 5 9876; PWR7-NEXT: vcmpgtuw 2, 2, 3 9877; PWR7-NEXT: blr 9878; 9879; PWR8-LABEL: ugt_23_v4i32: 9880; PWR8: # %bb.0: 9881; PWR8-NEXT: vspltisw 3, -16 9882; PWR8-NEXT: vspltisw 4, 7 9883; PWR8-NEXT: vpopcntw 2, 2 9884; PWR8-NEXT: vsubuwm 3, 4, 3 9885; PWR8-NEXT: vcmpgtuw 2, 2, 3 9886; PWR8-NEXT: blr 9887; 9888; PWR9-LABEL: ugt_23_v4i32: 9889; PWR9: # %bb.0: 9890; PWR9-NEXT: vspltisw 3, -16 9891; PWR9-NEXT: vspltisw 4, 7 9892; PWR9-NEXT: vpopcntw 2, 2 9893; PWR9-NEXT: vsubuwm 3, 4, 3 9894; PWR9-NEXT: vcmpgtuw 2, 2, 3 9895; PWR9-NEXT: blr 9896 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 9897 %3 = icmp ugt <4 x i32> %2, <i32 23, i32 23, i32 23, i32 23> 9898 %4 = sext <4 x i1> %3 to <4 x i32> 9899 ret <4 x i32> %4 9900} 9901 9902define <4 x i32> @ult_24_v4i32(<4 x i32> %0) { 9903; PWR5-LABEL: ult_24_v4i32: 9904; PWR5: # %bb.0: 9905; PWR5-NEXT: addis 3, 2, .LCPI85_0@toc@ha 9906; PWR5-NEXT: vspltisw 4, 1 9907; PWR5-NEXT: vxor 3, 3, 3 9908; PWR5-NEXT: addi 3, 3, .LCPI85_0@toc@l 9909; PWR5-NEXT: lvx 5, 0, 3 9910; PWR5-NEXT: addis 3, 2, .LCPI85_1@toc@ha 9911; PWR5-NEXT: addi 3, 3, .LCPI85_1@toc@l 9912; PWR5-NEXT: vspltisw 0, 2 9913; PWR5-NEXT: vsrw 4, 2, 4 9914; PWR5-NEXT: vand 4, 4, 5 9915; PWR5-NEXT: lvx 5, 0, 3 9916; PWR5-NEXT: vsubuwm 2, 2, 4 9917; PWR5-NEXT: vand 4, 2, 5 9918; PWR5-NEXT: vsrw 2, 2, 0 9919; PWR5-NEXT: vand 2, 2, 5 9920; PWR5-NEXT: vspltisw 5, 4 9921; PWR5-NEXT: vadduwm 2, 4, 2 9922; PWR5-NEXT: vsrw 4, 2, 5 9923; PWR5-NEXT: vspltisb 5, 15 9924; PWR5-NEXT: vadduwm 2, 2, 4 9925; PWR5-NEXT: vspltisb 4, 1 9926; PWR5-NEXT: vand 2, 2, 5 9927; PWR5-NEXT: vspltisw 5, -16 9928; PWR5-NEXT: vrlw 0, 4, 5 9929; PWR5-NEXT: vmulouh 4, 2, 4 9930; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 9931; PWR5-NEXT: vspltisw 3, 12 9932; PWR5-NEXT: vadduwm 3, 3, 3 9933; PWR5-NEXT: vslw 2, 2, 5 9934; PWR5-NEXT: vadduwm 2, 4, 2 9935; PWR5-NEXT: vsrw 2, 2, 3 9936; PWR5-NEXT: vcmpgtuw 2, 3, 2 9937; PWR5-NEXT: blr 9938; 9939; PWR6-LABEL: ult_24_v4i32: 9940; PWR6: # %bb.0: 9941; PWR6-NEXT: addis 3, 2, .LCPI85_0@toc@ha 9942; PWR6-NEXT: vspltisw 4, 1 9943; PWR6-NEXT: vxor 3, 3, 3 9944; PWR6-NEXT: addi 3, 3, .LCPI85_0@toc@l 9945; PWR6-NEXT: lvx 5, 0, 3 9946; PWR6-NEXT: addis 3, 2, .LCPI85_1@toc@ha 9947; PWR6-NEXT: addi 3, 3, .LCPI85_1@toc@l 9948; PWR6-NEXT: vspltisw 0, 2 9949; PWR6-NEXT: vsrw 4, 2, 4 9950; PWR6-NEXT: vand 4, 4, 5 9951; PWR6-NEXT: lvx 5, 0, 3 9952; PWR6-NEXT: vsubuwm 2, 2, 4 9953; PWR6-NEXT: vand 4, 2, 5 9954; PWR6-NEXT: vsrw 2, 2, 0 9955; PWR6-NEXT: vand 2, 2, 5 9956; PWR6-NEXT: vspltisw 5, 4 9957; PWR6-NEXT: vadduwm 2, 4, 2 9958; PWR6-NEXT: vsrw 4, 2, 5 9959; PWR6-NEXT: vspltisb 5, 15 9960; PWR6-NEXT: vadduwm 2, 2, 4 9961; PWR6-NEXT: vspltisb 4, 1 9962; PWR6-NEXT: vand 2, 2, 5 9963; PWR6-NEXT: vspltisw 5, -16 9964; PWR6-NEXT: vrlw 0, 4, 5 9965; PWR6-NEXT: vmulouh 4, 2, 4 9966; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 9967; PWR6-NEXT: vspltisw 3, 12 9968; PWR6-NEXT: vadduwm 3, 3, 3 9969; PWR6-NEXT: vslw 2, 2, 5 9970; PWR6-NEXT: vadduwm 2, 4, 2 9971; PWR6-NEXT: vsrw 2, 2, 3 9972; PWR6-NEXT: vcmpgtuw 2, 3, 2 9973; PWR6-NEXT: blr 9974; 9975; PWR7-LABEL: ult_24_v4i32: 9976; PWR7: # %bb.0: 9977; PWR7-NEXT: vspltisw 3, 1 9978; PWR7-NEXT: addis 3, 2, .LCPI85_0@toc@ha 9979; PWR7-NEXT: addi 3, 3, .LCPI85_0@toc@l 9980; PWR7-NEXT: vspltisw 4, 2 9981; PWR7-NEXT: lxvw4x 0, 0, 3 9982; PWR7-NEXT: addis 3, 2, .LCPI85_1@toc@ha 9983; PWR7-NEXT: vspltisw 5, -16 9984; PWR7-NEXT: vsrw 3, 2, 3 9985; PWR7-NEXT: addi 3, 3, .LCPI85_1@toc@l 9986; PWR7-NEXT: vspltisb 0, 15 9987; PWR7-NEXT: xxland 35, 35, 0 9988; PWR7-NEXT: lxvw4x 0, 0, 3 9989; PWR7-NEXT: vsubuwm 2, 2, 3 9990; PWR7-NEXT: vsrw 3, 2, 4 9991; PWR7-NEXT: xxland 34, 34, 0 9992; PWR7-NEXT: vspltisw 4, 4 9993; PWR7-NEXT: xxland 35, 35, 0 9994; PWR7-NEXT: vadduwm 2, 2, 3 9995; PWR7-NEXT: vsrw 3, 2, 4 9996; PWR7-NEXT: vspltisb 4, 1 9997; PWR7-NEXT: vrlw 1, 4, 5 9998; PWR7-NEXT: vadduwm 2, 2, 3 9999; PWR7-NEXT: xxlxor 35, 35, 35 10000; PWR7-NEXT: xxland 34, 34, 32 10001; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 10002; PWR7-NEXT: vmulouh 2, 2, 4 10003; PWR7-NEXT: vspltisw 4, 12 10004; PWR7-NEXT: vslw 3, 3, 5 10005; PWR7-NEXT: vadduwm 2, 2, 3 10006; PWR7-NEXT: vadduwm 3, 4, 4 10007; PWR7-NEXT: vsrw 2, 2, 3 10008; PWR7-NEXT: vcmpgtuw 2, 3, 2 10009; PWR7-NEXT: blr 10010; 10011; PWR8-LABEL: ult_24_v4i32: 10012; PWR8: # %bb.0: 10013; PWR8-NEXT: vspltisw 3, 12 10014; PWR8-NEXT: vpopcntw 2, 2 10015; PWR8-NEXT: vadduwm 3, 3, 3 10016; PWR8-NEXT: vcmpgtuw 2, 3, 2 10017; PWR8-NEXT: blr 10018; 10019; PWR9-LABEL: ult_24_v4i32: 10020; PWR9: # %bb.0: 10021; PWR9-NEXT: vspltisw 3, 12 10022; PWR9-NEXT: vpopcntw 2, 2 10023; PWR9-NEXT: vadduwm 3, 3, 3 10024; PWR9-NEXT: vcmpgtuw 2, 3, 2 10025; PWR9-NEXT: blr 10026 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 10027 %3 = icmp ult <4 x i32> %2, <i32 24, i32 24, i32 24, i32 24> 10028 %4 = sext <4 x i1> %3 to <4 x i32> 10029 ret <4 x i32> %4 10030} 10031 10032define <4 x i32> @ugt_24_v4i32(<4 x i32> %0) { 10033; PWR5-LABEL: ugt_24_v4i32: 10034; PWR5: # %bb.0: 10035; PWR5-NEXT: addis 3, 2, .LCPI86_0@toc@ha 10036; PWR5-NEXT: vspltisw 4, 1 10037; PWR5-NEXT: vxor 3, 3, 3 10038; PWR5-NEXT: addi 3, 3, .LCPI86_0@toc@l 10039; PWR5-NEXT: lvx 5, 0, 3 10040; PWR5-NEXT: addis 3, 2, .LCPI86_1@toc@ha 10041; PWR5-NEXT: addi 3, 3, .LCPI86_1@toc@l 10042; PWR5-NEXT: vspltisw 0, 2 10043; PWR5-NEXT: vsrw 4, 2, 4 10044; PWR5-NEXT: vand 4, 4, 5 10045; PWR5-NEXT: lvx 5, 0, 3 10046; PWR5-NEXT: vsubuwm 2, 2, 4 10047; PWR5-NEXT: vand 4, 2, 5 10048; PWR5-NEXT: vsrw 2, 2, 0 10049; PWR5-NEXT: vand 2, 2, 5 10050; PWR5-NEXT: vspltisw 5, 4 10051; PWR5-NEXT: vadduwm 2, 4, 2 10052; PWR5-NEXT: vsrw 4, 2, 5 10053; PWR5-NEXT: vspltisb 5, 15 10054; PWR5-NEXT: vadduwm 2, 2, 4 10055; PWR5-NEXT: vspltisb 4, 1 10056; PWR5-NEXT: vand 2, 2, 5 10057; PWR5-NEXT: vspltisw 5, -16 10058; PWR5-NEXT: vrlw 0, 4, 5 10059; PWR5-NEXT: vmulouh 4, 2, 4 10060; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 10061; PWR5-NEXT: vspltisw 3, 12 10062; PWR5-NEXT: vadduwm 3, 3, 3 10063; PWR5-NEXT: vslw 2, 2, 5 10064; PWR5-NEXT: vadduwm 2, 4, 2 10065; PWR5-NEXT: vsrw 2, 2, 3 10066; PWR5-NEXT: vcmpgtuw 2, 2, 3 10067; PWR5-NEXT: blr 10068; 10069; PWR6-LABEL: ugt_24_v4i32: 10070; PWR6: # %bb.0: 10071; PWR6-NEXT: addis 3, 2, .LCPI86_0@toc@ha 10072; PWR6-NEXT: vspltisw 4, 1 10073; PWR6-NEXT: vxor 3, 3, 3 10074; PWR6-NEXT: addi 3, 3, .LCPI86_0@toc@l 10075; PWR6-NEXT: lvx 5, 0, 3 10076; PWR6-NEXT: addis 3, 2, .LCPI86_1@toc@ha 10077; PWR6-NEXT: addi 3, 3, .LCPI86_1@toc@l 10078; PWR6-NEXT: vspltisw 0, 2 10079; PWR6-NEXT: vsrw 4, 2, 4 10080; PWR6-NEXT: vand 4, 4, 5 10081; PWR6-NEXT: lvx 5, 0, 3 10082; PWR6-NEXT: vsubuwm 2, 2, 4 10083; PWR6-NEXT: vand 4, 2, 5 10084; PWR6-NEXT: vsrw 2, 2, 0 10085; PWR6-NEXT: vand 2, 2, 5 10086; PWR6-NEXT: vspltisw 5, 4 10087; PWR6-NEXT: vadduwm 2, 4, 2 10088; PWR6-NEXT: vsrw 4, 2, 5 10089; PWR6-NEXT: vspltisb 5, 15 10090; PWR6-NEXT: vadduwm 2, 2, 4 10091; PWR6-NEXT: vspltisb 4, 1 10092; PWR6-NEXT: vand 2, 2, 5 10093; PWR6-NEXT: vspltisw 5, -16 10094; PWR6-NEXT: vrlw 0, 4, 5 10095; PWR6-NEXT: vmulouh 4, 2, 4 10096; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 10097; PWR6-NEXT: vspltisw 3, 12 10098; PWR6-NEXT: vadduwm 3, 3, 3 10099; PWR6-NEXT: vslw 2, 2, 5 10100; PWR6-NEXT: vadduwm 2, 4, 2 10101; PWR6-NEXT: vsrw 2, 2, 3 10102; PWR6-NEXT: vcmpgtuw 2, 2, 3 10103; PWR6-NEXT: blr 10104; 10105; PWR7-LABEL: ugt_24_v4i32: 10106; PWR7: # %bb.0: 10107; PWR7-NEXT: vspltisw 3, 1 10108; PWR7-NEXT: addis 3, 2, .LCPI86_0@toc@ha 10109; PWR7-NEXT: addi 3, 3, .LCPI86_0@toc@l 10110; PWR7-NEXT: vspltisw 4, 2 10111; PWR7-NEXT: lxvw4x 0, 0, 3 10112; PWR7-NEXT: addis 3, 2, .LCPI86_1@toc@ha 10113; PWR7-NEXT: vspltisw 5, -16 10114; PWR7-NEXT: vsrw 3, 2, 3 10115; PWR7-NEXT: addi 3, 3, .LCPI86_1@toc@l 10116; PWR7-NEXT: vspltisb 0, 15 10117; PWR7-NEXT: xxland 35, 35, 0 10118; PWR7-NEXT: lxvw4x 0, 0, 3 10119; PWR7-NEXT: vsubuwm 2, 2, 3 10120; PWR7-NEXT: vsrw 3, 2, 4 10121; PWR7-NEXT: xxland 34, 34, 0 10122; PWR7-NEXT: vspltisw 4, 4 10123; PWR7-NEXT: xxland 35, 35, 0 10124; PWR7-NEXT: vadduwm 2, 2, 3 10125; PWR7-NEXT: vsrw 3, 2, 4 10126; PWR7-NEXT: vspltisb 4, 1 10127; PWR7-NEXT: vrlw 1, 4, 5 10128; PWR7-NEXT: vadduwm 2, 2, 3 10129; PWR7-NEXT: xxlxor 35, 35, 35 10130; PWR7-NEXT: xxland 34, 34, 32 10131; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 10132; PWR7-NEXT: vmulouh 2, 2, 4 10133; PWR7-NEXT: vspltisw 4, 12 10134; PWR7-NEXT: vslw 3, 3, 5 10135; PWR7-NEXT: vadduwm 2, 2, 3 10136; PWR7-NEXT: vadduwm 3, 4, 4 10137; PWR7-NEXT: vsrw 2, 2, 3 10138; PWR7-NEXT: vcmpgtuw 2, 2, 3 10139; PWR7-NEXT: blr 10140; 10141; PWR8-LABEL: ugt_24_v4i32: 10142; PWR8: # %bb.0: 10143; PWR8-NEXT: vspltisw 3, 12 10144; PWR8-NEXT: vpopcntw 2, 2 10145; PWR8-NEXT: vadduwm 3, 3, 3 10146; PWR8-NEXT: vcmpgtuw 2, 2, 3 10147; PWR8-NEXT: blr 10148; 10149; PWR9-LABEL: ugt_24_v4i32: 10150; PWR9: # %bb.0: 10151; PWR9-NEXT: vspltisw 3, 12 10152; PWR9-NEXT: vpopcntw 2, 2 10153; PWR9-NEXT: vadduwm 3, 3, 3 10154; PWR9-NEXT: vcmpgtuw 2, 2, 3 10155; PWR9-NEXT: blr 10156 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 10157 %3 = icmp ugt <4 x i32> %2, <i32 24, i32 24, i32 24, i32 24> 10158 %4 = sext <4 x i1> %3 to <4 x i32> 10159 ret <4 x i32> %4 10160} 10161 10162define <4 x i32> @ult_25_v4i32(<4 x i32> %0) { 10163; PWR5-LABEL: ult_25_v4i32: 10164; PWR5: # %bb.0: 10165; PWR5-NEXT: addis 3, 2, .LCPI87_0@toc@ha 10166; PWR5-NEXT: vspltisw 4, 1 10167; PWR5-NEXT: vxor 3, 3, 3 10168; PWR5-NEXT: addi 3, 3, .LCPI87_0@toc@l 10169; PWR5-NEXT: lvx 5, 0, 3 10170; PWR5-NEXT: addis 3, 2, .LCPI87_1@toc@ha 10171; PWR5-NEXT: addi 3, 3, .LCPI87_1@toc@l 10172; PWR5-NEXT: vspltisw 0, 2 10173; PWR5-NEXT: vsrw 4, 2, 4 10174; PWR5-NEXT: vand 4, 4, 5 10175; PWR5-NEXT: lvx 5, 0, 3 10176; PWR5-NEXT: vsubuwm 2, 2, 4 10177; PWR5-NEXT: vand 4, 2, 5 10178; PWR5-NEXT: vsrw 2, 2, 0 10179; PWR5-NEXT: vand 2, 2, 5 10180; PWR5-NEXT: vspltisw 5, 4 10181; PWR5-NEXT: vadduwm 2, 4, 2 10182; PWR5-NEXT: vsrw 4, 2, 5 10183; PWR5-NEXT: vspltisb 5, 15 10184; PWR5-NEXT: vadduwm 2, 2, 4 10185; PWR5-NEXT: vspltisb 4, 1 10186; PWR5-NEXT: vand 2, 2, 5 10187; PWR5-NEXT: vspltisw 5, -16 10188; PWR5-NEXT: vrlw 0, 4, 5 10189; PWR5-NEXT: vmulouh 4, 2, 4 10190; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 10191; PWR5-NEXT: vspltisw 3, 12 10192; PWR5-NEXT: vadduwm 3, 3, 3 10193; PWR5-NEXT: vslw 2, 2, 5 10194; PWR5-NEXT: vadduwm 2, 4, 2 10195; PWR5-NEXT: vsrw 2, 2, 3 10196; PWR5-NEXT: vspltisw 3, 9 10197; PWR5-NEXT: vsubuwm 3, 3, 5 10198; PWR5-NEXT: vcmpgtuw 2, 3, 2 10199; PWR5-NEXT: blr 10200; 10201; PWR6-LABEL: ult_25_v4i32: 10202; PWR6: # %bb.0: 10203; PWR6-NEXT: addis 3, 2, .LCPI87_0@toc@ha 10204; PWR6-NEXT: vspltisw 4, 1 10205; PWR6-NEXT: vxor 3, 3, 3 10206; PWR6-NEXT: addi 3, 3, .LCPI87_0@toc@l 10207; PWR6-NEXT: lvx 5, 0, 3 10208; PWR6-NEXT: addis 3, 2, .LCPI87_1@toc@ha 10209; PWR6-NEXT: addi 3, 3, .LCPI87_1@toc@l 10210; PWR6-NEXT: vspltisw 0, 2 10211; PWR6-NEXT: vsrw 4, 2, 4 10212; PWR6-NEXT: vand 4, 4, 5 10213; PWR6-NEXT: lvx 5, 0, 3 10214; PWR6-NEXT: vsubuwm 2, 2, 4 10215; PWR6-NEXT: vand 4, 2, 5 10216; PWR6-NEXT: vsrw 2, 2, 0 10217; PWR6-NEXT: vand 2, 2, 5 10218; PWR6-NEXT: vspltisw 5, 4 10219; PWR6-NEXT: vadduwm 2, 4, 2 10220; PWR6-NEXT: vsrw 4, 2, 5 10221; PWR6-NEXT: vspltisb 5, 15 10222; PWR6-NEXT: vadduwm 2, 2, 4 10223; PWR6-NEXT: vspltisb 4, 1 10224; PWR6-NEXT: vand 2, 2, 5 10225; PWR6-NEXT: vspltisw 5, -16 10226; PWR6-NEXT: vrlw 0, 4, 5 10227; PWR6-NEXT: vmulouh 4, 2, 4 10228; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 10229; PWR6-NEXT: vspltisw 3, 12 10230; PWR6-NEXT: vadduwm 3, 3, 3 10231; PWR6-NEXT: vslw 2, 2, 5 10232; PWR6-NEXT: vadduwm 2, 4, 2 10233; PWR6-NEXT: vsrw 2, 2, 3 10234; PWR6-NEXT: vspltisw 3, 9 10235; PWR6-NEXT: vsubuwm 3, 3, 5 10236; PWR6-NEXT: vcmpgtuw 2, 3, 2 10237; PWR6-NEXT: blr 10238; 10239; PWR7-LABEL: ult_25_v4i32: 10240; PWR7: # %bb.0: 10241; PWR7-NEXT: vspltisw 3, 1 10242; PWR7-NEXT: addis 3, 2, .LCPI87_0@toc@ha 10243; PWR7-NEXT: addi 3, 3, .LCPI87_0@toc@l 10244; PWR7-NEXT: vspltisw 4, 2 10245; PWR7-NEXT: lxvw4x 0, 0, 3 10246; PWR7-NEXT: addis 3, 2, .LCPI87_1@toc@ha 10247; PWR7-NEXT: vspltisw 5, -16 10248; PWR7-NEXT: vsrw 3, 2, 3 10249; PWR7-NEXT: addi 3, 3, .LCPI87_1@toc@l 10250; PWR7-NEXT: vspltisb 0, 15 10251; PWR7-NEXT: xxland 35, 35, 0 10252; PWR7-NEXT: lxvw4x 0, 0, 3 10253; PWR7-NEXT: vsubuwm 2, 2, 3 10254; PWR7-NEXT: vsrw 3, 2, 4 10255; PWR7-NEXT: xxland 34, 34, 0 10256; PWR7-NEXT: vspltisw 4, 4 10257; PWR7-NEXT: xxland 35, 35, 0 10258; PWR7-NEXT: vadduwm 2, 2, 3 10259; PWR7-NEXT: vsrw 3, 2, 4 10260; PWR7-NEXT: vspltisb 4, 1 10261; PWR7-NEXT: vrlw 1, 4, 5 10262; PWR7-NEXT: vadduwm 2, 2, 3 10263; PWR7-NEXT: xxlxor 35, 35, 35 10264; PWR7-NEXT: xxland 34, 34, 32 10265; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 10266; PWR7-NEXT: vmulouh 2, 2, 4 10267; PWR7-NEXT: vspltisw 4, 12 10268; PWR7-NEXT: vslw 3, 3, 5 10269; PWR7-NEXT: vadduwm 2, 2, 3 10270; PWR7-NEXT: vadduwm 3, 4, 4 10271; PWR7-NEXT: vsrw 2, 2, 3 10272; PWR7-NEXT: vspltisw 3, 9 10273; PWR7-NEXT: vsubuwm 3, 3, 5 10274; PWR7-NEXT: vcmpgtuw 2, 3, 2 10275; PWR7-NEXT: blr 10276; 10277; PWR8-LABEL: ult_25_v4i32: 10278; PWR8: # %bb.0: 10279; PWR8-NEXT: vspltisw 3, -16 10280; PWR8-NEXT: vspltisw 4, 9 10281; PWR8-NEXT: vpopcntw 2, 2 10282; PWR8-NEXT: vsubuwm 3, 4, 3 10283; PWR8-NEXT: vcmpgtuw 2, 3, 2 10284; PWR8-NEXT: blr 10285; 10286; PWR9-LABEL: ult_25_v4i32: 10287; PWR9: # %bb.0: 10288; PWR9-NEXT: vspltisw 3, -16 10289; PWR9-NEXT: vspltisw 4, 9 10290; PWR9-NEXT: vpopcntw 2, 2 10291; PWR9-NEXT: vsubuwm 3, 4, 3 10292; PWR9-NEXT: vcmpgtuw 2, 3, 2 10293; PWR9-NEXT: blr 10294 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 10295 %3 = icmp ult <4 x i32> %2, <i32 25, i32 25, i32 25, i32 25> 10296 %4 = sext <4 x i1> %3 to <4 x i32> 10297 ret <4 x i32> %4 10298} 10299 10300define <4 x i32> @ugt_25_v4i32(<4 x i32> %0) { 10301; PWR5-LABEL: ugt_25_v4i32: 10302; PWR5: # %bb.0: 10303; PWR5-NEXT: addis 3, 2, .LCPI88_0@toc@ha 10304; PWR5-NEXT: vspltisw 4, 1 10305; PWR5-NEXT: vxor 3, 3, 3 10306; PWR5-NEXT: addi 3, 3, .LCPI88_0@toc@l 10307; PWR5-NEXT: lvx 5, 0, 3 10308; PWR5-NEXT: addis 3, 2, .LCPI88_1@toc@ha 10309; PWR5-NEXT: addi 3, 3, .LCPI88_1@toc@l 10310; PWR5-NEXT: vspltisw 0, 2 10311; PWR5-NEXT: vsrw 4, 2, 4 10312; PWR5-NEXT: vand 4, 4, 5 10313; PWR5-NEXT: lvx 5, 0, 3 10314; PWR5-NEXT: vsubuwm 2, 2, 4 10315; PWR5-NEXT: vand 4, 2, 5 10316; PWR5-NEXT: vsrw 2, 2, 0 10317; PWR5-NEXT: vand 2, 2, 5 10318; PWR5-NEXT: vspltisw 5, 4 10319; PWR5-NEXT: vadduwm 2, 4, 2 10320; PWR5-NEXT: vsrw 4, 2, 5 10321; PWR5-NEXT: vspltisb 5, 15 10322; PWR5-NEXT: vadduwm 2, 2, 4 10323; PWR5-NEXT: vspltisb 4, 1 10324; PWR5-NEXT: vand 2, 2, 5 10325; PWR5-NEXT: vspltisw 5, -16 10326; PWR5-NEXT: vrlw 0, 4, 5 10327; PWR5-NEXT: vmulouh 4, 2, 4 10328; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 10329; PWR5-NEXT: vspltisw 3, 12 10330; PWR5-NEXT: vadduwm 3, 3, 3 10331; PWR5-NEXT: vslw 2, 2, 5 10332; PWR5-NEXT: vadduwm 2, 4, 2 10333; PWR5-NEXT: vsrw 2, 2, 3 10334; PWR5-NEXT: vspltisw 3, 9 10335; PWR5-NEXT: vsubuwm 3, 3, 5 10336; PWR5-NEXT: vcmpgtuw 2, 2, 3 10337; PWR5-NEXT: blr 10338; 10339; PWR6-LABEL: ugt_25_v4i32: 10340; PWR6: # %bb.0: 10341; PWR6-NEXT: addis 3, 2, .LCPI88_0@toc@ha 10342; PWR6-NEXT: vspltisw 4, 1 10343; PWR6-NEXT: vxor 3, 3, 3 10344; PWR6-NEXT: addi 3, 3, .LCPI88_0@toc@l 10345; PWR6-NEXT: lvx 5, 0, 3 10346; PWR6-NEXT: addis 3, 2, .LCPI88_1@toc@ha 10347; PWR6-NEXT: addi 3, 3, .LCPI88_1@toc@l 10348; PWR6-NEXT: vspltisw 0, 2 10349; PWR6-NEXT: vsrw 4, 2, 4 10350; PWR6-NEXT: vand 4, 4, 5 10351; PWR6-NEXT: lvx 5, 0, 3 10352; PWR6-NEXT: vsubuwm 2, 2, 4 10353; PWR6-NEXT: vand 4, 2, 5 10354; PWR6-NEXT: vsrw 2, 2, 0 10355; PWR6-NEXT: vand 2, 2, 5 10356; PWR6-NEXT: vspltisw 5, 4 10357; PWR6-NEXT: vadduwm 2, 4, 2 10358; PWR6-NEXT: vsrw 4, 2, 5 10359; PWR6-NEXT: vspltisb 5, 15 10360; PWR6-NEXT: vadduwm 2, 2, 4 10361; PWR6-NEXT: vspltisb 4, 1 10362; PWR6-NEXT: vand 2, 2, 5 10363; PWR6-NEXT: vspltisw 5, -16 10364; PWR6-NEXT: vrlw 0, 4, 5 10365; PWR6-NEXT: vmulouh 4, 2, 4 10366; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 10367; PWR6-NEXT: vspltisw 3, 12 10368; PWR6-NEXT: vadduwm 3, 3, 3 10369; PWR6-NEXT: vslw 2, 2, 5 10370; PWR6-NEXT: vadduwm 2, 4, 2 10371; PWR6-NEXT: vsrw 2, 2, 3 10372; PWR6-NEXT: vspltisw 3, 9 10373; PWR6-NEXT: vsubuwm 3, 3, 5 10374; PWR6-NEXT: vcmpgtuw 2, 2, 3 10375; PWR6-NEXT: blr 10376; 10377; PWR7-LABEL: ugt_25_v4i32: 10378; PWR7: # %bb.0: 10379; PWR7-NEXT: vspltisw 3, 1 10380; PWR7-NEXT: addis 3, 2, .LCPI88_0@toc@ha 10381; PWR7-NEXT: addi 3, 3, .LCPI88_0@toc@l 10382; PWR7-NEXT: vspltisw 4, 2 10383; PWR7-NEXT: lxvw4x 0, 0, 3 10384; PWR7-NEXT: addis 3, 2, .LCPI88_1@toc@ha 10385; PWR7-NEXT: vspltisw 5, -16 10386; PWR7-NEXT: vsrw 3, 2, 3 10387; PWR7-NEXT: addi 3, 3, .LCPI88_1@toc@l 10388; PWR7-NEXT: vspltisb 0, 15 10389; PWR7-NEXT: xxland 35, 35, 0 10390; PWR7-NEXT: lxvw4x 0, 0, 3 10391; PWR7-NEXT: vsubuwm 2, 2, 3 10392; PWR7-NEXT: vsrw 3, 2, 4 10393; PWR7-NEXT: xxland 34, 34, 0 10394; PWR7-NEXT: vspltisw 4, 4 10395; PWR7-NEXT: xxland 35, 35, 0 10396; PWR7-NEXT: vadduwm 2, 2, 3 10397; PWR7-NEXT: vsrw 3, 2, 4 10398; PWR7-NEXT: vspltisb 4, 1 10399; PWR7-NEXT: vrlw 1, 4, 5 10400; PWR7-NEXT: vadduwm 2, 2, 3 10401; PWR7-NEXT: xxlxor 35, 35, 35 10402; PWR7-NEXT: xxland 34, 34, 32 10403; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 10404; PWR7-NEXT: vmulouh 2, 2, 4 10405; PWR7-NEXT: vspltisw 4, 12 10406; PWR7-NEXT: vslw 3, 3, 5 10407; PWR7-NEXT: vadduwm 2, 2, 3 10408; PWR7-NEXT: vadduwm 3, 4, 4 10409; PWR7-NEXT: vsrw 2, 2, 3 10410; PWR7-NEXT: vspltisw 3, 9 10411; PWR7-NEXT: vsubuwm 3, 3, 5 10412; PWR7-NEXT: vcmpgtuw 2, 2, 3 10413; PWR7-NEXT: blr 10414; 10415; PWR8-LABEL: ugt_25_v4i32: 10416; PWR8: # %bb.0: 10417; PWR8-NEXT: vspltisw 3, -16 10418; PWR8-NEXT: vspltisw 4, 9 10419; PWR8-NEXT: vpopcntw 2, 2 10420; PWR8-NEXT: vsubuwm 3, 4, 3 10421; PWR8-NEXT: vcmpgtuw 2, 2, 3 10422; PWR8-NEXT: blr 10423; 10424; PWR9-LABEL: ugt_25_v4i32: 10425; PWR9: # %bb.0: 10426; PWR9-NEXT: vspltisw 3, -16 10427; PWR9-NEXT: vspltisw 4, 9 10428; PWR9-NEXT: vpopcntw 2, 2 10429; PWR9-NEXT: vsubuwm 3, 4, 3 10430; PWR9-NEXT: vcmpgtuw 2, 2, 3 10431; PWR9-NEXT: blr 10432 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 10433 %3 = icmp ugt <4 x i32> %2, <i32 25, i32 25, i32 25, i32 25> 10434 %4 = sext <4 x i1> %3 to <4 x i32> 10435 ret <4 x i32> %4 10436} 10437 10438define <4 x i32> @ult_26_v4i32(<4 x i32> %0) { 10439; PWR5-LABEL: ult_26_v4i32: 10440; PWR5: # %bb.0: 10441; PWR5-NEXT: addis 3, 2, .LCPI89_0@toc@ha 10442; PWR5-NEXT: vspltisw 4, 1 10443; PWR5-NEXT: vxor 3, 3, 3 10444; PWR5-NEXT: addi 3, 3, .LCPI89_0@toc@l 10445; PWR5-NEXT: lvx 5, 0, 3 10446; PWR5-NEXT: addis 3, 2, .LCPI89_1@toc@ha 10447; PWR5-NEXT: addi 3, 3, .LCPI89_1@toc@l 10448; PWR5-NEXT: vspltisw 0, 2 10449; PWR5-NEXT: vsrw 4, 2, 4 10450; PWR5-NEXT: vand 4, 4, 5 10451; PWR5-NEXT: lvx 5, 0, 3 10452; PWR5-NEXT: vsubuwm 2, 2, 4 10453; PWR5-NEXT: vand 4, 2, 5 10454; PWR5-NEXT: vsrw 2, 2, 0 10455; PWR5-NEXT: vand 2, 2, 5 10456; PWR5-NEXT: vspltisw 5, 4 10457; PWR5-NEXT: vadduwm 2, 4, 2 10458; PWR5-NEXT: vsrw 4, 2, 5 10459; PWR5-NEXT: vspltisb 5, 15 10460; PWR5-NEXT: vadduwm 2, 2, 4 10461; PWR5-NEXT: vspltisb 4, 1 10462; PWR5-NEXT: vand 2, 2, 5 10463; PWR5-NEXT: vspltisw 5, -16 10464; PWR5-NEXT: vrlw 0, 4, 5 10465; PWR5-NEXT: vmulouh 4, 2, 4 10466; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 10467; PWR5-NEXT: vspltisw 3, 12 10468; PWR5-NEXT: vadduwm 3, 3, 3 10469; PWR5-NEXT: vslw 2, 2, 5 10470; PWR5-NEXT: vadduwm 2, 4, 2 10471; PWR5-NEXT: vsrw 2, 2, 3 10472; PWR5-NEXT: vspltisw 3, 13 10473; PWR5-NEXT: vadduwm 3, 3, 3 10474; PWR5-NEXT: vcmpgtuw 2, 3, 2 10475; PWR5-NEXT: blr 10476; 10477; PWR6-LABEL: ult_26_v4i32: 10478; PWR6: # %bb.0: 10479; PWR6-NEXT: addis 3, 2, .LCPI89_0@toc@ha 10480; PWR6-NEXT: vspltisw 4, 1 10481; PWR6-NEXT: vxor 3, 3, 3 10482; PWR6-NEXT: addi 3, 3, .LCPI89_0@toc@l 10483; PWR6-NEXT: lvx 5, 0, 3 10484; PWR6-NEXT: addis 3, 2, .LCPI89_1@toc@ha 10485; PWR6-NEXT: addi 3, 3, .LCPI89_1@toc@l 10486; PWR6-NEXT: vspltisw 0, 2 10487; PWR6-NEXT: vsrw 4, 2, 4 10488; PWR6-NEXT: vand 4, 4, 5 10489; PWR6-NEXT: lvx 5, 0, 3 10490; PWR6-NEXT: vsubuwm 2, 2, 4 10491; PWR6-NEXT: vand 4, 2, 5 10492; PWR6-NEXT: vsrw 2, 2, 0 10493; PWR6-NEXT: vand 2, 2, 5 10494; PWR6-NEXT: vspltisw 5, 4 10495; PWR6-NEXT: vadduwm 2, 4, 2 10496; PWR6-NEXT: vsrw 4, 2, 5 10497; PWR6-NEXT: vspltisb 5, 15 10498; PWR6-NEXT: vadduwm 2, 2, 4 10499; PWR6-NEXT: vspltisb 4, 1 10500; PWR6-NEXT: vand 2, 2, 5 10501; PWR6-NEXT: vspltisw 5, -16 10502; PWR6-NEXT: vrlw 0, 4, 5 10503; PWR6-NEXT: vmulouh 4, 2, 4 10504; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 10505; PWR6-NEXT: vspltisw 3, 12 10506; PWR6-NEXT: vadduwm 3, 3, 3 10507; PWR6-NEXT: vslw 2, 2, 5 10508; PWR6-NEXT: vadduwm 2, 4, 2 10509; PWR6-NEXT: vsrw 2, 2, 3 10510; PWR6-NEXT: vspltisw 3, 13 10511; PWR6-NEXT: vadduwm 3, 3, 3 10512; PWR6-NEXT: vcmpgtuw 2, 3, 2 10513; PWR6-NEXT: blr 10514; 10515; PWR7-LABEL: ult_26_v4i32: 10516; PWR7: # %bb.0: 10517; PWR7-NEXT: vspltisw 3, 1 10518; PWR7-NEXT: addis 3, 2, .LCPI89_0@toc@ha 10519; PWR7-NEXT: addi 3, 3, .LCPI89_0@toc@l 10520; PWR7-NEXT: vspltisw 4, 2 10521; PWR7-NEXT: lxvw4x 0, 0, 3 10522; PWR7-NEXT: addis 3, 2, .LCPI89_1@toc@ha 10523; PWR7-NEXT: vspltisw 5, -16 10524; PWR7-NEXT: vsrw 3, 2, 3 10525; PWR7-NEXT: addi 3, 3, .LCPI89_1@toc@l 10526; PWR7-NEXT: vspltisb 0, 15 10527; PWR7-NEXT: xxland 35, 35, 0 10528; PWR7-NEXT: lxvw4x 0, 0, 3 10529; PWR7-NEXT: vsubuwm 2, 2, 3 10530; PWR7-NEXT: vsrw 3, 2, 4 10531; PWR7-NEXT: xxland 34, 34, 0 10532; PWR7-NEXT: vspltisw 4, 4 10533; PWR7-NEXT: xxland 35, 35, 0 10534; PWR7-NEXT: vadduwm 2, 2, 3 10535; PWR7-NEXT: vsrw 3, 2, 4 10536; PWR7-NEXT: vspltisb 4, 1 10537; PWR7-NEXT: vrlw 1, 4, 5 10538; PWR7-NEXT: vadduwm 2, 2, 3 10539; PWR7-NEXT: xxlxor 35, 35, 35 10540; PWR7-NEXT: xxland 34, 34, 32 10541; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 10542; PWR7-NEXT: vmulouh 2, 2, 4 10543; PWR7-NEXT: vspltisw 4, 12 10544; PWR7-NEXT: vslw 3, 3, 5 10545; PWR7-NEXT: vadduwm 2, 2, 3 10546; PWR7-NEXT: vadduwm 3, 4, 4 10547; PWR7-NEXT: vsrw 2, 2, 3 10548; PWR7-NEXT: vspltisw 3, 13 10549; PWR7-NEXT: vadduwm 3, 3, 3 10550; PWR7-NEXT: vcmpgtuw 2, 3, 2 10551; PWR7-NEXT: blr 10552; 10553; PWR8-LABEL: ult_26_v4i32: 10554; PWR8: # %bb.0: 10555; PWR8-NEXT: vspltisw 3, 13 10556; PWR8-NEXT: vpopcntw 2, 2 10557; PWR8-NEXT: vadduwm 3, 3, 3 10558; PWR8-NEXT: vcmpgtuw 2, 3, 2 10559; PWR8-NEXT: blr 10560; 10561; PWR9-LABEL: ult_26_v4i32: 10562; PWR9: # %bb.0: 10563; PWR9-NEXT: vspltisw 3, 13 10564; PWR9-NEXT: vpopcntw 2, 2 10565; PWR9-NEXT: vadduwm 3, 3, 3 10566; PWR9-NEXT: vcmpgtuw 2, 3, 2 10567; PWR9-NEXT: blr 10568 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 10569 %3 = icmp ult <4 x i32> %2, <i32 26, i32 26, i32 26, i32 26> 10570 %4 = sext <4 x i1> %3 to <4 x i32> 10571 ret <4 x i32> %4 10572} 10573 10574define <4 x i32> @ugt_26_v4i32(<4 x i32> %0) { 10575; PWR5-LABEL: ugt_26_v4i32: 10576; PWR5: # %bb.0: 10577; PWR5-NEXT: addis 3, 2, .LCPI90_0@toc@ha 10578; PWR5-NEXT: vspltisw 4, 1 10579; PWR5-NEXT: vxor 3, 3, 3 10580; PWR5-NEXT: addi 3, 3, .LCPI90_0@toc@l 10581; PWR5-NEXT: lvx 5, 0, 3 10582; PWR5-NEXT: addis 3, 2, .LCPI90_1@toc@ha 10583; PWR5-NEXT: addi 3, 3, .LCPI90_1@toc@l 10584; PWR5-NEXT: vspltisw 0, 2 10585; PWR5-NEXT: vsrw 4, 2, 4 10586; PWR5-NEXT: vand 4, 4, 5 10587; PWR5-NEXT: lvx 5, 0, 3 10588; PWR5-NEXT: vsubuwm 2, 2, 4 10589; PWR5-NEXT: vand 4, 2, 5 10590; PWR5-NEXT: vsrw 2, 2, 0 10591; PWR5-NEXT: vand 2, 2, 5 10592; PWR5-NEXT: vspltisw 5, 4 10593; PWR5-NEXT: vadduwm 2, 4, 2 10594; PWR5-NEXT: vsrw 4, 2, 5 10595; PWR5-NEXT: vspltisb 5, 15 10596; PWR5-NEXT: vadduwm 2, 2, 4 10597; PWR5-NEXT: vspltisb 4, 1 10598; PWR5-NEXT: vand 2, 2, 5 10599; PWR5-NEXT: vspltisw 5, -16 10600; PWR5-NEXT: vrlw 0, 4, 5 10601; PWR5-NEXT: vmulouh 4, 2, 4 10602; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 10603; PWR5-NEXT: vspltisw 3, 12 10604; PWR5-NEXT: vadduwm 3, 3, 3 10605; PWR5-NEXT: vslw 2, 2, 5 10606; PWR5-NEXT: vadduwm 2, 4, 2 10607; PWR5-NEXT: vsrw 2, 2, 3 10608; PWR5-NEXT: vspltisw 3, 13 10609; PWR5-NEXT: vadduwm 3, 3, 3 10610; PWR5-NEXT: vcmpgtuw 2, 2, 3 10611; PWR5-NEXT: blr 10612; 10613; PWR6-LABEL: ugt_26_v4i32: 10614; PWR6: # %bb.0: 10615; PWR6-NEXT: addis 3, 2, .LCPI90_0@toc@ha 10616; PWR6-NEXT: vspltisw 4, 1 10617; PWR6-NEXT: vxor 3, 3, 3 10618; PWR6-NEXT: addi 3, 3, .LCPI90_0@toc@l 10619; PWR6-NEXT: lvx 5, 0, 3 10620; PWR6-NEXT: addis 3, 2, .LCPI90_1@toc@ha 10621; PWR6-NEXT: addi 3, 3, .LCPI90_1@toc@l 10622; PWR6-NEXT: vspltisw 0, 2 10623; PWR6-NEXT: vsrw 4, 2, 4 10624; PWR6-NEXT: vand 4, 4, 5 10625; PWR6-NEXT: lvx 5, 0, 3 10626; PWR6-NEXT: vsubuwm 2, 2, 4 10627; PWR6-NEXT: vand 4, 2, 5 10628; PWR6-NEXT: vsrw 2, 2, 0 10629; PWR6-NEXT: vand 2, 2, 5 10630; PWR6-NEXT: vspltisw 5, 4 10631; PWR6-NEXT: vadduwm 2, 4, 2 10632; PWR6-NEXT: vsrw 4, 2, 5 10633; PWR6-NEXT: vspltisb 5, 15 10634; PWR6-NEXT: vadduwm 2, 2, 4 10635; PWR6-NEXT: vspltisb 4, 1 10636; PWR6-NEXT: vand 2, 2, 5 10637; PWR6-NEXT: vspltisw 5, -16 10638; PWR6-NEXT: vrlw 0, 4, 5 10639; PWR6-NEXT: vmulouh 4, 2, 4 10640; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 10641; PWR6-NEXT: vspltisw 3, 12 10642; PWR6-NEXT: vadduwm 3, 3, 3 10643; PWR6-NEXT: vslw 2, 2, 5 10644; PWR6-NEXT: vadduwm 2, 4, 2 10645; PWR6-NEXT: vsrw 2, 2, 3 10646; PWR6-NEXT: vspltisw 3, 13 10647; PWR6-NEXT: vadduwm 3, 3, 3 10648; PWR6-NEXT: vcmpgtuw 2, 2, 3 10649; PWR6-NEXT: blr 10650; 10651; PWR7-LABEL: ugt_26_v4i32: 10652; PWR7: # %bb.0: 10653; PWR7-NEXT: vspltisw 3, 1 10654; PWR7-NEXT: addis 3, 2, .LCPI90_0@toc@ha 10655; PWR7-NEXT: addi 3, 3, .LCPI90_0@toc@l 10656; PWR7-NEXT: vspltisw 4, 2 10657; PWR7-NEXT: lxvw4x 0, 0, 3 10658; PWR7-NEXT: addis 3, 2, .LCPI90_1@toc@ha 10659; PWR7-NEXT: vspltisw 5, -16 10660; PWR7-NEXT: vsrw 3, 2, 3 10661; PWR7-NEXT: addi 3, 3, .LCPI90_1@toc@l 10662; PWR7-NEXT: vspltisb 0, 15 10663; PWR7-NEXT: xxland 35, 35, 0 10664; PWR7-NEXT: lxvw4x 0, 0, 3 10665; PWR7-NEXT: vsubuwm 2, 2, 3 10666; PWR7-NEXT: vsrw 3, 2, 4 10667; PWR7-NEXT: xxland 34, 34, 0 10668; PWR7-NEXT: vspltisw 4, 4 10669; PWR7-NEXT: xxland 35, 35, 0 10670; PWR7-NEXT: vadduwm 2, 2, 3 10671; PWR7-NEXT: vsrw 3, 2, 4 10672; PWR7-NEXT: vspltisb 4, 1 10673; PWR7-NEXT: vrlw 1, 4, 5 10674; PWR7-NEXT: vadduwm 2, 2, 3 10675; PWR7-NEXT: xxlxor 35, 35, 35 10676; PWR7-NEXT: xxland 34, 34, 32 10677; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 10678; PWR7-NEXT: vmulouh 2, 2, 4 10679; PWR7-NEXT: vspltisw 4, 12 10680; PWR7-NEXT: vslw 3, 3, 5 10681; PWR7-NEXT: vadduwm 2, 2, 3 10682; PWR7-NEXT: vadduwm 3, 4, 4 10683; PWR7-NEXT: vsrw 2, 2, 3 10684; PWR7-NEXT: vspltisw 3, 13 10685; PWR7-NEXT: vadduwm 3, 3, 3 10686; PWR7-NEXT: vcmpgtuw 2, 2, 3 10687; PWR7-NEXT: blr 10688; 10689; PWR8-LABEL: ugt_26_v4i32: 10690; PWR8: # %bb.0: 10691; PWR8-NEXT: vspltisw 3, 13 10692; PWR8-NEXT: vpopcntw 2, 2 10693; PWR8-NEXT: vadduwm 3, 3, 3 10694; PWR8-NEXT: vcmpgtuw 2, 2, 3 10695; PWR8-NEXT: blr 10696; 10697; PWR9-LABEL: ugt_26_v4i32: 10698; PWR9: # %bb.0: 10699; PWR9-NEXT: vspltisw 3, 13 10700; PWR9-NEXT: vpopcntw 2, 2 10701; PWR9-NEXT: vadduwm 3, 3, 3 10702; PWR9-NEXT: vcmpgtuw 2, 2, 3 10703; PWR9-NEXT: blr 10704 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 10705 %3 = icmp ugt <4 x i32> %2, <i32 26, i32 26, i32 26, i32 26> 10706 %4 = sext <4 x i1> %3 to <4 x i32> 10707 ret <4 x i32> %4 10708} 10709 10710define <4 x i32> @ult_27_v4i32(<4 x i32> %0) { 10711; PWR5-LABEL: ult_27_v4i32: 10712; PWR5: # %bb.0: 10713; PWR5-NEXT: addis 3, 2, .LCPI91_0@toc@ha 10714; PWR5-NEXT: vspltisw 4, 1 10715; PWR5-NEXT: vxor 3, 3, 3 10716; PWR5-NEXT: addi 3, 3, .LCPI91_0@toc@l 10717; PWR5-NEXT: lvx 5, 0, 3 10718; PWR5-NEXT: addis 3, 2, .LCPI91_1@toc@ha 10719; PWR5-NEXT: addi 3, 3, .LCPI91_1@toc@l 10720; PWR5-NEXT: vspltisw 0, 2 10721; PWR5-NEXT: vsrw 4, 2, 4 10722; PWR5-NEXT: vand 4, 4, 5 10723; PWR5-NEXT: lvx 5, 0, 3 10724; PWR5-NEXT: vsubuwm 2, 2, 4 10725; PWR5-NEXT: vand 4, 2, 5 10726; PWR5-NEXT: vsrw 2, 2, 0 10727; PWR5-NEXT: vand 2, 2, 5 10728; PWR5-NEXT: vspltisw 5, 4 10729; PWR5-NEXT: vadduwm 2, 4, 2 10730; PWR5-NEXT: vsrw 4, 2, 5 10731; PWR5-NEXT: vspltisb 5, 15 10732; PWR5-NEXT: vadduwm 2, 2, 4 10733; PWR5-NEXT: vspltisb 4, 1 10734; PWR5-NEXT: vand 2, 2, 5 10735; PWR5-NEXT: vspltisw 5, -16 10736; PWR5-NEXT: vrlw 0, 4, 5 10737; PWR5-NEXT: vmulouh 4, 2, 4 10738; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 10739; PWR5-NEXT: vspltisw 3, 12 10740; PWR5-NEXT: vadduwm 3, 3, 3 10741; PWR5-NEXT: vslw 2, 2, 5 10742; PWR5-NEXT: vadduwm 2, 4, 2 10743; PWR5-NEXT: vsrw 2, 2, 3 10744; PWR5-NEXT: vspltisw 3, 11 10745; PWR5-NEXT: vsubuwm 3, 3, 5 10746; PWR5-NEXT: vcmpgtuw 2, 3, 2 10747; PWR5-NEXT: blr 10748; 10749; PWR6-LABEL: ult_27_v4i32: 10750; PWR6: # %bb.0: 10751; PWR6-NEXT: addis 3, 2, .LCPI91_0@toc@ha 10752; PWR6-NEXT: vspltisw 4, 1 10753; PWR6-NEXT: vxor 3, 3, 3 10754; PWR6-NEXT: addi 3, 3, .LCPI91_0@toc@l 10755; PWR6-NEXT: lvx 5, 0, 3 10756; PWR6-NEXT: addis 3, 2, .LCPI91_1@toc@ha 10757; PWR6-NEXT: addi 3, 3, .LCPI91_1@toc@l 10758; PWR6-NEXT: vspltisw 0, 2 10759; PWR6-NEXT: vsrw 4, 2, 4 10760; PWR6-NEXT: vand 4, 4, 5 10761; PWR6-NEXT: lvx 5, 0, 3 10762; PWR6-NEXT: vsubuwm 2, 2, 4 10763; PWR6-NEXT: vand 4, 2, 5 10764; PWR6-NEXT: vsrw 2, 2, 0 10765; PWR6-NEXT: vand 2, 2, 5 10766; PWR6-NEXT: vspltisw 5, 4 10767; PWR6-NEXT: vadduwm 2, 4, 2 10768; PWR6-NEXT: vsrw 4, 2, 5 10769; PWR6-NEXT: vspltisb 5, 15 10770; PWR6-NEXT: vadduwm 2, 2, 4 10771; PWR6-NEXT: vspltisb 4, 1 10772; PWR6-NEXT: vand 2, 2, 5 10773; PWR6-NEXT: vspltisw 5, -16 10774; PWR6-NEXT: vrlw 0, 4, 5 10775; PWR6-NEXT: vmulouh 4, 2, 4 10776; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 10777; PWR6-NEXT: vspltisw 3, 12 10778; PWR6-NEXT: vadduwm 3, 3, 3 10779; PWR6-NEXT: vslw 2, 2, 5 10780; PWR6-NEXT: vadduwm 2, 4, 2 10781; PWR6-NEXT: vsrw 2, 2, 3 10782; PWR6-NEXT: vspltisw 3, 11 10783; PWR6-NEXT: vsubuwm 3, 3, 5 10784; PWR6-NEXT: vcmpgtuw 2, 3, 2 10785; PWR6-NEXT: blr 10786; 10787; PWR7-LABEL: ult_27_v4i32: 10788; PWR7: # %bb.0: 10789; PWR7-NEXT: vspltisw 3, 1 10790; PWR7-NEXT: addis 3, 2, .LCPI91_0@toc@ha 10791; PWR7-NEXT: addi 3, 3, .LCPI91_0@toc@l 10792; PWR7-NEXT: vspltisw 4, 2 10793; PWR7-NEXT: lxvw4x 0, 0, 3 10794; PWR7-NEXT: addis 3, 2, .LCPI91_1@toc@ha 10795; PWR7-NEXT: vspltisw 5, -16 10796; PWR7-NEXT: vsrw 3, 2, 3 10797; PWR7-NEXT: addi 3, 3, .LCPI91_1@toc@l 10798; PWR7-NEXT: vspltisb 0, 15 10799; PWR7-NEXT: xxland 35, 35, 0 10800; PWR7-NEXT: lxvw4x 0, 0, 3 10801; PWR7-NEXT: vsubuwm 2, 2, 3 10802; PWR7-NEXT: vsrw 3, 2, 4 10803; PWR7-NEXT: xxland 34, 34, 0 10804; PWR7-NEXT: vspltisw 4, 4 10805; PWR7-NEXT: xxland 35, 35, 0 10806; PWR7-NEXT: vadduwm 2, 2, 3 10807; PWR7-NEXT: vsrw 3, 2, 4 10808; PWR7-NEXT: vspltisb 4, 1 10809; PWR7-NEXT: vrlw 1, 4, 5 10810; PWR7-NEXT: vadduwm 2, 2, 3 10811; PWR7-NEXT: xxlxor 35, 35, 35 10812; PWR7-NEXT: xxland 34, 34, 32 10813; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 10814; PWR7-NEXT: vmulouh 2, 2, 4 10815; PWR7-NEXT: vspltisw 4, 12 10816; PWR7-NEXT: vslw 3, 3, 5 10817; PWR7-NEXT: vadduwm 2, 2, 3 10818; PWR7-NEXT: vadduwm 3, 4, 4 10819; PWR7-NEXT: vsrw 2, 2, 3 10820; PWR7-NEXT: vspltisw 3, 11 10821; PWR7-NEXT: vsubuwm 3, 3, 5 10822; PWR7-NEXT: vcmpgtuw 2, 3, 2 10823; PWR7-NEXT: blr 10824; 10825; PWR8-LABEL: ult_27_v4i32: 10826; PWR8: # %bb.0: 10827; PWR8-NEXT: vspltisw 3, -16 10828; PWR8-NEXT: vspltisw 4, 11 10829; PWR8-NEXT: vpopcntw 2, 2 10830; PWR8-NEXT: vsubuwm 3, 4, 3 10831; PWR8-NEXT: vcmpgtuw 2, 3, 2 10832; PWR8-NEXT: blr 10833; 10834; PWR9-LABEL: ult_27_v4i32: 10835; PWR9: # %bb.0: 10836; PWR9-NEXT: vspltisw 3, -16 10837; PWR9-NEXT: vspltisw 4, 11 10838; PWR9-NEXT: vpopcntw 2, 2 10839; PWR9-NEXT: vsubuwm 3, 4, 3 10840; PWR9-NEXT: vcmpgtuw 2, 3, 2 10841; PWR9-NEXT: blr 10842 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 10843 %3 = icmp ult <4 x i32> %2, <i32 27, i32 27, i32 27, i32 27> 10844 %4 = sext <4 x i1> %3 to <4 x i32> 10845 ret <4 x i32> %4 10846} 10847 10848define <4 x i32> @ugt_27_v4i32(<4 x i32> %0) { 10849; PWR5-LABEL: ugt_27_v4i32: 10850; PWR5: # %bb.0: 10851; PWR5-NEXT: addis 3, 2, .LCPI92_0@toc@ha 10852; PWR5-NEXT: vspltisw 4, 1 10853; PWR5-NEXT: vxor 3, 3, 3 10854; PWR5-NEXT: addi 3, 3, .LCPI92_0@toc@l 10855; PWR5-NEXT: lvx 5, 0, 3 10856; PWR5-NEXT: addis 3, 2, .LCPI92_1@toc@ha 10857; PWR5-NEXT: addi 3, 3, .LCPI92_1@toc@l 10858; PWR5-NEXT: vspltisw 0, 2 10859; PWR5-NEXT: vsrw 4, 2, 4 10860; PWR5-NEXT: vand 4, 4, 5 10861; PWR5-NEXT: lvx 5, 0, 3 10862; PWR5-NEXT: vsubuwm 2, 2, 4 10863; PWR5-NEXT: vand 4, 2, 5 10864; PWR5-NEXT: vsrw 2, 2, 0 10865; PWR5-NEXT: vand 2, 2, 5 10866; PWR5-NEXT: vspltisw 5, 4 10867; PWR5-NEXT: vadduwm 2, 4, 2 10868; PWR5-NEXT: vsrw 4, 2, 5 10869; PWR5-NEXT: vspltisb 5, 15 10870; PWR5-NEXT: vadduwm 2, 2, 4 10871; PWR5-NEXT: vspltisb 4, 1 10872; PWR5-NEXT: vand 2, 2, 5 10873; PWR5-NEXT: vspltisw 5, -16 10874; PWR5-NEXT: vrlw 0, 4, 5 10875; PWR5-NEXT: vmulouh 4, 2, 4 10876; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 10877; PWR5-NEXT: vspltisw 3, 12 10878; PWR5-NEXT: vadduwm 3, 3, 3 10879; PWR5-NEXT: vslw 2, 2, 5 10880; PWR5-NEXT: vadduwm 2, 4, 2 10881; PWR5-NEXT: vsrw 2, 2, 3 10882; PWR5-NEXT: vspltisw 3, 11 10883; PWR5-NEXT: vsubuwm 3, 3, 5 10884; PWR5-NEXT: vcmpgtuw 2, 2, 3 10885; PWR5-NEXT: blr 10886; 10887; PWR6-LABEL: ugt_27_v4i32: 10888; PWR6: # %bb.0: 10889; PWR6-NEXT: addis 3, 2, .LCPI92_0@toc@ha 10890; PWR6-NEXT: vspltisw 4, 1 10891; PWR6-NEXT: vxor 3, 3, 3 10892; PWR6-NEXT: addi 3, 3, .LCPI92_0@toc@l 10893; PWR6-NEXT: lvx 5, 0, 3 10894; PWR6-NEXT: addis 3, 2, .LCPI92_1@toc@ha 10895; PWR6-NEXT: addi 3, 3, .LCPI92_1@toc@l 10896; PWR6-NEXT: vspltisw 0, 2 10897; PWR6-NEXT: vsrw 4, 2, 4 10898; PWR6-NEXT: vand 4, 4, 5 10899; PWR6-NEXT: lvx 5, 0, 3 10900; PWR6-NEXT: vsubuwm 2, 2, 4 10901; PWR6-NEXT: vand 4, 2, 5 10902; PWR6-NEXT: vsrw 2, 2, 0 10903; PWR6-NEXT: vand 2, 2, 5 10904; PWR6-NEXT: vspltisw 5, 4 10905; PWR6-NEXT: vadduwm 2, 4, 2 10906; PWR6-NEXT: vsrw 4, 2, 5 10907; PWR6-NEXT: vspltisb 5, 15 10908; PWR6-NEXT: vadduwm 2, 2, 4 10909; PWR6-NEXT: vspltisb 4, 1 10910; PWR6-NEXT: vand 2, 2, 5 10911; PWR6-NEXT: vspltisw 5, -16 10912; PWR6-NEXT: vrlw 0, 4, 5 10913; PWR6-NEXT: vmulouh 4, 2, 4 10914; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 10915; PWR6-NEXT: vspltisw 3, 12 10916; PWR6-NEXT: vadduwm 3, 3, 3 10917; PWR6-NEXT: vslw 2, 2, 5 10918; PWR6-NEXT: vadduwm 2, 4, 2 10919; PWR6-NEXT: vsrw 2, 2, 3 10920; PWR6-NEXT: vspltisw 3, 11 10921; PWR6-NEXT: vsubuwm 3, 3, 5 10922; PWR6-NEXT: vcmpgtuw 2, 2, 3 10923; PWR6-NEXT: blr 10924; 10925; PWR7-LABEL: ugt_27_v4i32: 10926; PWR7: # %bb.0: 10927; PWR7-NEXT: vspltisw 3, 1 10928; PWR7-NEXT: addis 3, 2, .LCPI92_0@toc@ha 10929; PWR7-NEXT: addi 3, 3, .LCPI92_0@toc@l 10930; PWR7-NEXT: vspltisw 4, 2 10931; PWR7-NEXT: lxvw4x 0, 0, 3 10932; PWR7-NEXT: addis 3, 2, .LCPI92_1@toc@ha 10933; PWR7-NEXT: vspltisw 5, -16 10934; PWR7-NEXT: vsrw 3, 2, 3 10935; PWR7-NEXT: addi 3, 3, .LCPI92_1@toc@l 10936; PWR7-NEXT: vspltisb 0, 15 10937; PWR7-NEXT: xxland 35, 35, 0 10938; PWR7-NEXT: lxvw4x 0, 0, 3 10939; PWR7-NEXT: vsubuwm 2, 2, 3 10940; PWR7-NEXT: vsrw 3, 2, 4 10941; PWR7-NEXT: xxland 34, 34, 0 10942; PWR7-NEXT: vspltisw 4, 4 10943; PWR7-NEXT: xxland 35, 35, 0 10944; PWR7-NEXT: vadduwm 2, 2, 3 10945; PWR7-NEXT: vsrw 3, 2, 4 10946; PWR7-NEXT: vspltisb 4, 1 10947; PWR7-NEXT: vrlw 1, 4, 5 10948; PWR7-NEXT: vadduwm 2, 2, 3 10949; PWR7-NEXT: xxlxor 35, 35, 35 10950; PWR7-NEXT: xxland 34, 34, 32 10951; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 10952; PWR7-NEXT: vmulouh 2, 2, 4 10953; PWR7-NEXT: vspltisw 4, 12 10954; PWR7-NEXT: vslw 3, 3, 5 10955; PWR7-NEXT: vadduwm 2, 2, 3 10956; PWR7-NEXT: vadduwm 3, 4, 4 10957; PWR7-NEXT: vsrw 2, 2, 3 10958; PWR7-NEXT: vspltisw 3, 11 10959; PWR7-NEXT: vsubuwm 3, 3, 5 10960; PWR7-NEXT: vcmpgtuw 2, 2, 3 10961; PWR7-NEXT: blr 10962; 10963; PWR8-LABEL: ugt_27_v4i32: 10964; PWR8: # %bb.0: 10965; PWR8-NEXT: vspltisw 3, -16 10966; PWR8-NEXT: vspltisw 4, 11 10967; PWR8-NEXT: vpopcntw 2, 2 10968; PWR8-NEXT: vsubuwm 3, 4, 3 10969; PWR8-NEXT: vcmpgtuw 2, 2, 3 10970; PWR8-NEXT: blr 10971; 10972; PWR9-LABEL: ugt_27_v4i32: 10973; PWR9: # %bb.0: 10974; PWR9-NEXT: vspltisw 3, -16 10975; PWR9-NEXT: vspltisw 4, 11 10976; PWR9-NEXT: vpopcntw 2, 2 10977; PWR9-NEXT: vsubuwm 3, 4, 3 10978; PWR9-NEXT: vcmpgtuw 2, 2, 3 10979; PWR9-NEXT: blr 10980 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 10981 %3 = icmp ugt <4 x i32> %2, <i32 27, i32 27, i32 27, i32 27> 10982 %4 = sext <4 x i1> %3 to <4 x i32> 10983 ret <4 x i32> %4 10984} 10985 10986define <4 x i32> @ult_28_v4i32(<4 x i32> %0) { 10987; PWR5-LABEL: ult_28_v4i32: 10988; PWR5: # %bb.0: 10989; PWR5-NEXT: addis 3, 2, .LCPI93_0@toc@ha 10990; PWR5-NEXT: vspltisw 4, 1 10991; PWR5-NEXT: vxor 3, 3, 3 10992; PWR5-NEXT: addi 3, 3, .LCPI93_0@toc@l 10993; PWR5-NEXT: lvx 5, 0, 3 10994; PWR5-NEXT: addis 3, 2, .LCPI93_1@toc@ha 10995; PWR5-NEXT: addi 3, 3, .LCPI93_1@toc@l 10996; PWR5-NEXT: vspltisw 0, 2 10997; PWR5-NEXT: vsrw 4, 2, 4 10998; PWR5-NEXT: vand 4, 4, 5 10999; PWR5-NEXT: lvx 5, 0, 3 11000; PWR5-NEXT: vsubuwm 2, 2, 4 11001; PWR5-NEXT: vand 4, 2, 5 11002; PWR5-NEXT: vsrw 2, 2, 0 11003; PWR5-NEXT: vand 2, 2, 5 11004; PWR5-NEXT: vspltisw 5, 4 11005; PWR5-NEXT: vadduwm 2, 4, 2 11006; PWR5-NEXT: vsrw 4, 2, 5 11007; PWR5-NEXT: vspltisb 5, 15 11008; PWR5-NEXT: vadduwm 2, 2, 4 11009; PWR5-NEXT: vspltisb 4, 1 11010; PWR5-NEXT: vand 2, 2, 5 11011; PWR5-NEXT: vspltisw 5, -16 11012; PWR5-NEXT: vrlw 0, 4, 5 11013; PWR5-NEXT: vmulouh 4, 2, 4 11014; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 11015; PWR5-NEXT: vspltisw 3, 12 11016; PWR5-NEXT: vadduwm 3, 3, 3 11017; PWR5-NEXT: vslw 2, 2, 5 11018; PWR5-NEXT: vadduwm 2, 4, 2 11019; PWR5-NEXT: vsrw 2, 2, 3 11020; PWR5-NEXT: vspltisw 3, 14 11021; PWR5-NEXT: vadduwm 3, 3, 3 11022; PWR5-NEXT: vcmpgtuw 2, 3, 2 11023; PWR5-NEXT: blr 11024; 11025; PWR6-LABEL: ult_28_v4i32: 11026; PWR6: # %bb.0: 11027; PWR6-NEXT: addis 3, 2, .LCPI93_0@toc@ha 11028; PWR6-NEXT: vspltisw 4, 1 11029; PWR6-NEXT: vxor 3, 3, 3 11030; PWR6-NEXT: addi 3, 3, .LCPI93_0@toc@l 11031; PWR6-NEXT: lvx 5, 0, 3 11032; PWR6-NEXT: addis 3, 2, .LCPI93_1@toc@ha 11033; PWR6-NEXT: addi 3, 3, .LCPI93_1@toc@l 11034; PWR6-NEXT: vspltisw 0, 2 11035; PWR6-NEXT: vsrw 4, 2, 4 11036; PWR6-NEXT: vand 4, 4, 5 11037; PWR6-NEXT: lvx 5, 0, 3 11038; PWR6-NEXT: vsubuwm 2, 2, 4 11039; PWR6-NEXT: vand 4, 2, 5 11040; PWR6-NEXT: vsrw 2, 2, 0 11041; PWR6-NEXT: vand 2, 2, 5 11042; PWR6-NEXT: vspltisw 5, 4 11043; PWR6-NEXT: vadduwm 2, 4, 2 11044; PWR6-NEXT: vsrw 4, 2, 5 11045; PWR6-NEXT: vspltisb 5, 15 11046; PWR6-NEXT: vadduwm 2, 2, 4 11047; PWR6-NEXT: vspltisb 4, 1 11048; PWR6-NEXT: vand 2, 2, 5 11049; PWR6-NEXT: vspltisw 5, -16 11050; PWR6-NEXT: vrlw 0, 4, 5 11051; PWR6-NEXT: vmulouh 4, 2, 4 11052; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 11053; PWR6-NEXT: vspltisw 3, 12 11054; PWR6-NEXT: vadduwm 3, 3, 3 11055; PWR6-NEXT: vslw 2, 2, 5 11056; PWR6-NEXT: vadduwm 2, 4, 2 11057; PWR6-NEXT: vsrw 2, 2, 3 11058; PWR6-NEXT: vspltisw 3, 14 11059; PWR6-NEXT: vadduwm 3, 3, 3 11060; PWR6-NEXT: vcmpgtuw 2, 3, 2 11061; PWR6-NEXT: blr 11062; 11063; PWR7-LABEL: ult_28_v4i32: 11064; PWR7: # %bb.0: 11065; PWR7-NEXT: vspltisw 3, 1 11066; PWR7-NEXT: addis 3, 2, .LCPI93_0@toc@ha 11067; PWR7-NEXT: addi 3, 3, .LCPI93_0@toc@l 11068; PWR7-NEXT: vspltisw 4, 2 11069; PWR7-NEXT: lxvw4x 0, 0, 3 11070; PWR7-NEXT: addis 3, 2, .LCPI93_1@toc@ha 11071; PWR7-NEXT: vspltisw 5, -16 11072; PWR7-NEXT: vsrw 3, 2, 3 11073; PWR7-NEXT: addi 3, 3, .LCPI93_1@toc@l 11074; PWR7-NEXT: vspltisb 0, 15 11075; PWR7-NEXT: xxland 35, 35, 0 11076; PWR7-NEXT: lxvw4x 0, 0, 3 11077; PWR7-NEXT: vsubuwm 2, 2, 3 11078; PWR7-NEXT: vsrw 3, 2, 4 11079; PWR7-NEXT: xxland 34, 34, 0 11080; PWR7-NEXT: vspltisw 4, 4 11081; PWR7-NEXT: xxland 35, 35, 0 11082; PWR7-NEXT: vadduwm 2, 2, 3 11083; PWR7-NEXT: vsrw 3, 2, 4 11084; PWR7-NEXT: vspltisb 4, 1 11085; PWR7-NEXT: vrlw 1, 4, 5 11086; PWR7-NEXT: vadduwm 2, 2, 3 11087; PWR7-NEXT: xxlxor 35, 35, 35 11088; PWR7-NEXT: xxland 34, 34, 32 11089; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 11090; PWR7-NEXT: vmulouh 2, 2, 4 11091; PWR7-NEXT: vspltisw 4, 12 11092; PWR7-NEXT: vslw 3, 3, 5 11093; PWR7-NEXT: vadduwm 2, 2, 3 11094; PWR7-NEXT: vadduwm 3, 4, 4 11095; PWR7-NEXT: vsrw 2, 2, 3 11096; PWR7-NEXT: vspltisw 3, 14 11097; PWR7-NEXT: vadduwm 3, 3, 3 11098; PWR7-NEXT: vcmpgtuw 2, 3, 2 11099; PWR7-NEXT: blr 11100; 11101; PWR8-LABEL: ult_28_v4i32: 11102; PWR8: # %bb.0: 11103; PWR8-NEXT: vspltisw 3, 14 11104; PWR8-NEXT: vpopcntw 2, 2 11105; PWR8-NEXT: vadduwm 3, 3, 3 11106; PWR8-NEXT: vcmpgtuw 2, 3, 2 11107; PWR8-NEXT: blr 11108; 11109; PWR9-LABEL: ult_28_v4i32: 11110; PWR9: # %bb.0: 11111; PWR9-NEXT: vspltisw 3, 14 11112; PWR9-NEXT: vpopcntw 2, 2 11113; PWR9-NEXT: vadduwm 3, 3, 3 11114; PWR9-NEXT: vcmpgtuw 2, 3, 2 11115; PWR9-NEXT: blr 11116 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 11117 %3 = icmp ult <4 x i32> %2, <i32 28, i32 28, i32 28, i32 28> 11118 %4 = sext <4 x i1> %3 to <4 x i32> 11119 ret <4 x i32> %4 11120} 11121 11122define <4 x i32> @ugt_28_v4i32(<4 x i32> %0) { 11123; PWR5-LABEL: ugt_28_v4i32: 11124; PWR5: # %bb.0: 11125; PWR5-NEXT: addis 3, 2, .LCPI94_0@toc@ha 11126; PWR5-NEXT: vspltisw 4, 1 11127; PWR5-NEXT: vxor 3, 3, 3 11128; PWR5-NEXT: addi 3, 3, .LCPI94_0@toc@l 11129; PWR5-NEXT: lvx 5, 0, 3 11130; PWR5-NEXT: addis 3, 2, .LCPI94_1@toc@ha 11131; PWR5-NEXT: addi 3, 3, .LCPI94_1@toc@l 11132; PWR5-NEXT: vspltisw 0, 2 11133; PWR5-NEXT: vsrw 4, 2, 4 11134; PWR5-NEXT: vand 4, 4, 5 11135; PWR5-NEXT: lvx 5, 0, 3 11136; PWR5-NEXT: vsubuwm 2, 2, 4 11137; PWR5-NEXT: vand 4, 2, 5 11138; PWR5-NEXT: vsrw 2, 2, 0 11139; PWR5-NEXT: vand 2, 2, 5 11140; PWR5-NEXT: vspltisw 5, 4 11141; PWR5-NEXT: vadduwm 2, 4, 2 11142; PWR5-NEXT: vsrw 4, 2, 5 11143; PWR5-NEXT: vspltisb 5, 15 11144; PWR5-NEXT: vadduwm 2, 2, 4 11145; PWR5-NEXT: vspltisb 4, 1 11146; PWR5-NEXT: vand 2, 2, 5 11147; PWR5-NEXT: vspltisw 5, -16 11148; PWR5-NEXT: vrlw 0, 4, 5 11149; PWR5-NEXT: vmulouh 4, 2, 4 11150; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 11151; PWR5-NEXT: vspltisw 3, 12 11152; PWR5-NEXT: vadduwm 3, 3, 3 11153; PWR5-NEXT: vslw 2, 2, 5 11154; PWR5-NEXT: vadduwm 2, 4, 2 11155; PWR5-NEXT: vsrw 2, 2, 3 11156; PWR5-NEXT: vspltisw 3, 14 11157; PWR5-NEXT: vadduwm 3, 3, 3 11158; PWR5-NEXT: vcmpgtuw 2, 2, 3 11159; PWR5-NEXT: blr 11160; 11161; PWR6-LABEL: ugt_28_v4i32: 11162; PWR6: # %bb.0: 11163; PWR6-NEXT: addis 3, 2, .LCPI94_0@toc@ha 11164; PWR6-NEXT: vspltisw 4, 1 11165; PWR6-NEXT: vxor 3, 3, 3 11166; PWR6-NEXT: addi 3, 3, .LCPI94_0@toc@l 11167; PWR6-NEXT: lvx 5, 0, 3 11168; PWR6-NEXT: addis 3, 2, .LCPI94_1@toc@ha 11169; PWR6-NEXT: addi 3, 3, .LCPI94_1@toc@l 11170; PWR6-NEXT: vspltisw 0, 2 11171; PWR6-NEXT: vsrw 4, 2, 4 11172; PWR6-NEXT: vand 4, 4, 5 11173; PWR6-NEXT: lvx 5, 0, 3 11174; PWR6-NEXT: vsubuwm 2, 2, 4 11175; PWR6-NEXT: vand 4, 2, 5 11176; PWR6-NEXT: vsrw 2, 2, 0 11177; PWR6-NEXT: vand 2, 2, 5 11178; PWR6-NEXT: vspltisw 5, 4 11179; PWR6-NEXT: vadduwm 2, 4, 2 11180; PWR6-NEXT: vsrw 4, 2, 5 11181; PWR6-NEXT: vspltisb 5, 15 11182; PWR6-NEXT: vadduwm 2, 2, 4 11183; PWR6-NEXT: vspltisb 4, 1 11184; PWR6-NEXT: vand 2, 2, 5 11185; PWR6-NEXT: vspltisw 5, -16 11186; PWR6-NEXT: vrlw 0, 4, 5 11187; PWR6-NEXT: vmulouh 4, 2, 4 11188; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 11189; PWR6-NEXT: vspltisw 3, 12 11190; PWR6-NEXT: vadduwm 3, 3, 3 11191; PWR6-NEXT: vslw 2, 2, 5 11192; PWR6-NEXT: vadduwm 2, 4, 2 11193; PWR6-NEXT: vsrw 2, 2, 3 11194; PWR6-NEXT: vspltisw 3, 14 11195; PWR6-NEXT: vadduwm 3, 3, 3 11196; PWR6-NEXT: vcmpgtuw 2, 2, 3 11197; PWR6-NEXT: blr 11198; 11199; PWR7-LABEL: ugt_28_v4i32: 11200; PWR7: # %bb.0: 11201; PWR7-NEXT: vspltisw 3, 1 11202; PWR7-NEXT: addis 3, 2, .LCPI94_0@toc@ha 11203; PWR7-NEXT: addi 3, 3, .LCPI94_0@toc@l 11204; PWR7-NEXT: vspltisw 4, 2 11205; PWR7-NEXT: lxvw4x 0, 0, 3 11206; PWR7-NEXT: addis 3, 2, .LCPI94_1@toc@ha 11207; PWR7-NEXT: vspltisw 5, -16 11208; PWR7-NEXT: vsrw 3, 2, 3 11209; PWR7-NEXT: addi 3, 3, .LCPI94_1@toc@l 11210; PWR7-NEXT: vspltisb 0, 15 11211; PWR7-NEXT: xxland 35, 35, 0 11212; PWR7-NEXT: lxvw4x 0, 0, 3 11213; PWR7-NEXT: vsubuwm 2, 2, 3 11214; PWR7-NEXT: vsrw 3, 2, 4 11215; PWR7-NEXT: xxland 34, 34, 0 11216; PWR7-NEXT: vspltisw 4, 4 11217; PWR7-NEXT: xxland 35, 35, 0 11218; PWR7-NEXT: vadduwm 2, 2, 3 11219; PWR7-NEXT: vsrw 3, 2, 4 11220; PWR7-NEXT: vspltisb 4, 1 11221; PWR7-NEXT: vrlw 1, 4, 5 11222; PWR7-NEXT: vadduwm 2, 2, 3 11223; PWR7-NEXT: xxlxor 35, 35, 35 11224; PWR7-NEXT: xxland 34, 34, 32 11225; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 11226; PWR7-NEXT: vmulouh 2, 2, 4 11227; PWR7-NEXT: vspltisw 4, 12 11228; PWR7-NEXT: vslw 3, 3, 5 11229; PWR7-NEXT: vadduwm 2, 2, 3 11230; PWR7-NEXT: vadduwm 3, 4, 4 11231; PWR7-NEXT: vsrw 2, 2, 3 11232; PWR7-NEXT: vspltisw 3, 14 11233; PWR7-NEXT: vadduwm 3, 3, 3 11234; PWR7-NEXT: vcmpgtuw 2, 2, 3 11235; PWR7-NEXT: blr 11236; 11237; PWR8-LABEL: ugt_28_v4i32: 11238; PWR8: # %bb.0: 11239; PWR8-NEXT: vspltisw 3, 14 11240; PWR8-NEXT: vpopcntw 2, 2 11241; PWR8-NEXT: vadduwm 3, 3, 3 11242; PWR8-NEXT: vcmpgtuw 2, 2, 3 11243; PWR8-NEXT: blr 11244; 11245; PWR9-LABEL: ugt_28_v4i32: 11246; PWR9: # %bb.0: 11247; PWR9-NEXT: vspltisw 3, 14 11248; PWR9-NEXT: vpopcntw 2, 2 11249; PWR9-NEXT: vadduwm 3, 3, 3 11250; PWR9-NEXT: vcmpgtuw 2, 2, 3 11251; PWR9-NEXT: blr 11252 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 11253 %3 = icmp ugt <4 x i32> %2, <i32 28, i32 28, i32 28, i32 28> 11254 %4 = sext <4 x i1> %3 to <4 x i32> 11255 ret <4 x i32> %4 11256} 11257 11258define <4 x i32> @ult_29_v4i32(<4 x i32> %0) { 11259; PWR5-LABEL: ult_29_v4i32: 11260; PWR5: # %bb.0: 11261; PWR5-NEXT: addis 3, 2, .LCPI95_0@toc@ha 11262; PWR5-NEXT: vspltisw 4, 1 11263; PWR5-NEXT: vxor 3, 3, 3 11264; PWR5-NEXT: addi 3, 3, .LCPI95_0@toc@l 11265; PWR5-NEXT: lvx 5, 0, 3 11266; PWR5-NEXT: addis 3, 2, .LCPI95_1@toc@ha 11267; PWR5-NEXT: addi 3, 3, .LCPI95_1@toc@l 11268; PWR5-NEXT: vspltisw 0, 2 11269; PWR5-NEXT: vsrw 4, 2, 4 11270; PWR5-NEXT: vand 4, 4, 5 11271; PWR5-NEXT: lvx 5, 0, 3 11272; PWR5-NEXT: vsubuwm 2, 2, 4 11273; PWR5-NEXT: vand 4, 2, 5 11274; PWR5-NEXT: vsrw 2, 2, 0 11275; PWR5-NEXT: vand 2, 2, 5 11276; PWR5-NEXT: vspltisw 5, 4 11277; PWR5-NEXT: vadduwm 2, 4, 2 11278; PWR5-NEXT: vsrw 4, 2, 5 11279; PWR5-NEXT: vspltisb 5, 15 11280; PWR5-NEXT: vadduwm 2, 2, 4 11281; PWR5-NEXT: vspltisb 4, 1 11282; PWR5-NEXT: vand 2, 2, 5 11283; PWR5-NEXT: vspltisw 5, -16 11284; PWR5-NEXT: vrlw 0, 4, 5 11285; PWR5-NEXT: vmulouh 4, 2, 4 11286; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 11287; PWR5-NEXT: vspltisw 3, 12 11288; PWR5-NEXT: vadduwm 3, 3, 3 11289; PWR5-NEXT: vslw 2, 2, 5 11290; PWR5-NEXT: vadduwm 2, 4, 2 11291; PWR5-NEXT: vsrw 2, 2, 3 11292; PWR5-NEXT: vspltisw 3, 13 11293; PWR5-NEXT: vsubuwm 3, 3, 5 11294; PWR5-NEXT: vcmpgtuw 2, 3, 2 11295; PWR5-NEXT: blr 11296; 11297; PWR6-LABEL: ult_29_v4i32: 11298; PWR6: # %bb.0: 11299; PWR6-NEXT: addis 3, 2, .LCPI95_0@toc@ha 11300; PWR6-NEXT: vspltisw 4, 1 11301; PWR6-NEXT: vxor 3, 3, 3 11302; PWR6-NEXT: addi 3, 3, .LCPI95_0@toc@l 11303; PWR6-NEXT: lvx 5, 0, 3 11304; PWR6-NEXT: addis 3, 2, .LCPI95_1@toc@ha 11305; PWR6-NEXT: addi 3, 3, .LCPI95_1@toc@l 11306; PWR6-NEXT: vspltisw 0, 2 11307; PWR6-NEXT: vsrw 4, 2, 4 11308; PWR6-NEXT: vand 4, 4, 5 11309; PWR6-NEXT: lvx 5, 0, 3 11310; PWR6-NEXT: vsubuwm 2, 2, 4 11311; PWR6-NEXT: vand 4, 2, 5 11312; PWR6-NEXT: vsrw 2, 2, 0 11313; PWR6-NEXT: vand 2, 2, 5 11314; PWR6-NEXT: vspltisw 5, 4 11315; PWR6-NEXT: vadduwm 2, 4, 2 11316; PWR6-NEXT: vsrw 4, 2, 5 11317; PWR6-NEXT: vspltisb 5, 15 11318; PWR6-NEXT: vadduwm 2, 2, 4 11319; PWR6-NEXT: vspltisb 4, 1 11320; PWR6-NEXT: vand 2, 2, 5 11321; PWR6-NEXT: vspltisw 5, -16 11322; PWR6-NEXT: vrlw 0, 4, 5 11323; PWR6-NEXT: vmulouh 4, 2, 4 11324; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 11325; PWR6-NEXT: vspltisw 3, 12 11326; PWR6-NEXT: vadduwm 3, 3, 3 11327; PWR6-NEXT: vslw 2, 2, 5 11328; PWR6-NEXT: vadduwm 2, 4, 2 11329; PWR6-NEXT: vsrw 2, 2, 3 11330; PWR6-NEXT: vspltisw 3, 13 11331; PWR6-NEXT: vsubuwm 3, 3, 5 11332; PWR6-NEXT: vcmpgtuw 2, 3, 2 11333; PWR6-NEXT: blr 11334; 11335; PWR7-LABEL: ult_29_v4i32: 11336; PWR7: # %bb.0: 11337; PWR7-NEXT: vspltisw 3, 1 11338; PWR7-NEXT: addis 3, 2, .LCPI95_0@toc@ha 11339; PWR7-NEXT: addi 3, 3, .LCPI95_0@toc@l 11340; PWR7-NEXT: vspltisw 4, 2 11341; PWR7-NEXT: lxvw4x 0, 0, 3 11342; PWR7-NEXT: addis 3, 2, .LCPI95_1@toc@ha 11343; PWR7-NEXT: vspltisw 5, -16 11344; PWR7-NEXT: vsrw 3, 2, 3 11345; PWR7-NEXT: addi 3, 3, .LCPI95_1@toc@l 11346; PWR7-NEXT: vspltisb 0, 15 11347; PWR7-NEXT: xxland 35, 35, 0 11348; PWR7-NEXT: lxvw4x 0, 0, 3 11349; PWR7-NEXT: vsubuwm 2, 2, 3 11350; PWR7-NEXT: vsrw 3, 2, 4 11351; PWR7-NEXT: xxland 34, 34, 0 11352; PWR7-NEXT: vspltisw 4, 4 11353; PWR7-NEXT: xxland 35, 35, 0 11354; PWR7-NEXT: vadduwm 2, 2, 3 11355; PWR7-NEXT: vsrw 3, 2, 4 11356; PWR7-NEXT: vspltisb 4, 1 11357; PWR7-NEXT: vrlw 1, 4, 5 11358; PWR7-NEXT: vadduwm 2, 2, 3 11359; PWR7-NEXT: xxlxor 35, 35, 35 11360; PWR7-NEXT: xxland 34, 34, 32 11361; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 11362; PWR7-NEXT: vmulouh 2, 2, 4 11363; PWR7-NEXT: vspltisw 4, 12 11364; PWR7-NEXT: vslw 3, 3, 5 11365; PWR7-NEXT: vadduwm 2, 2, 3 11366; PWR7-NEXT: vadduwm 3, 4, 4 11367; PWR7-NEXT: vsrw 2, 2, 3 11368; PWR7-NEXT: vspltisw 3, 13 11369; PWR7-NEXT: vsubuwm 3, 3, 5 11370; PWR7-NEXT: vcmpgtuw 2, 3, 2 11371; PWR7-NEXT: blr 11372; 11373; PWR8-LABEL: ult_29_v4i32: 11374; PWR8: # %bb.0: 11375; PWR8-NEXT: vspltisw 3, -16 11376; PWR8-NEXT: vspltisw 4, 13 11377; PWR8-NEXT: vpopcntw 2, 2 11378; PWR8-NEXT: vsubuwm 3, 4, 3 11379; PWR8-NEXT: vcmpgtuw 2, 3, 2 11380; PWR8-NEXT: blr 11381; 11382; PWR9-LABEL: ult_29_v4i32: 11383; PWR9: # %bb.0: 11384; PWR9-NEXT: vspltisw 3, -16 11385; PWR9-NEXT: vspltisw 4, 13 11386; PWR9-NEXT: vpopcntw 2, 2 11387; PWR9-NEXT: vsubuwm 3, 4, 3 11388; PWR9-NEXT: vcmpgtuw 2, 3, 2 11389; PWR9-NEXT: blr 11390 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 11391 %3 = icmp ult <4 x i32> %2, <i32 29, i32 29, i32 29, i32 29> 11392 %4 = sext <4 x i1> %3 to <4 x i32> 11393 ret <4 x i32> %4 11394} 11395 11396define <4 x i32> @ugt_29_v4i32(<4 x i32> %0) { 11397; PWR5-LABEL: ugt_29_v4i32: 11398; PWR5: # %bb.0: 11399; PWR5-NEXT: addis 3, 2, .LCPI96_0@toc@ha 11400; PWR5-NEXT: vspltisw 4, 1 11401; PWR5-NEXT: vxor 3, 3, 3 11402; PWR5-NEXT: addi 3, 3, .LCPI96_0@toc@l 11403; PWR5-NEXT: lvx 5, 0, 3 11404; PWR5-NEXT: addis 3, 2, .LCPI96_1@toc@ha 11405; PWR5-NEXT: addi 3, 3, .LCPI96_1@toc@l 11406; PWR5-NEXT: vspltisw 0, 2 11407; PWR5-NEXT: vsrw 4, 2, 4 11408; PWR5-NEXT: vand 4, 4, 5 11409; PWR5-NEXT: lvx 5, 0, 3 11410; PWR5-NEXT: vsubuwm 2, 2, 4 11411; PWR5-NEXT: vand 4, 2, 5 11412; PWR5-NEXT: vsrw 2, 2, 0 11413; PWR5-NEXT: vand 2, 2, 5 11414; PWR5-NEXT: vspltisw 5, 4 11415; PWR5-NEXT: vadduwm 2, 4, 2 11416; PWR5-NEXT: vsrw 4, 2, 5 11417; PWR5-NEXT: vspltisb 5, 15 11418; PWR5-NEXT: vadduwm 2, 2, 4 11419; PWR5-NEXT: vspltisb 4, 1 11420; PWR5-NEXT: vand 2, 2, 5 11421; PWR5-NEXT: vspltisw 5, -16 11422; PWR5-NEXT: vrlw 0, 4, 5 11423; PWR5-NEXT: vmulouh 4, 2, 4 11424; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 11425; PWR5-NEXT: vspltisw 3, 12 11426; PWR5-NEXT: vadduwm 3, 3, 3 11427; PWR5-NEXT: vslw 2, 2, 5 11428; PWR5-NEXT: vadduwm 2, 4, 2 11429; PWR5-NEXT: vsrw 2, 2, 3 11430; PWR5-NEXT: vspltisw 3, 13 11431; PWR5-NEXT: vsubuwm 3, 3, 5 11432; PWR5-NEXT: vcmpgtuw 2, 2, 3 11433; PWR5-NEXT: blr 11434; 11435; PWR6-LABEL: ugt_29_v4i32: 11436; PWR6: # %bb.0: 11437; PWR6-NEXT: addis 3, 2, .LCPI96_0@toc@ha 11438; PWR6-NEXT: vspltisw 4, 1 11439; PWR6-NEXT: vxor 3, 3, 3 11440; PWR6-NEXT: addi 3, 3, .LCPI96_0@toc@l 11441; PWR6-NEXT: lvx 5, 0, 3 11442; PWR6-NEXT: addis 3, 2, .LCPI96_1@toc@ha 11443; PWR6-NEXT: addi 3, 3, .LCPI96_1@toc@l 11444; PWR6-NEXT: vspltisw 0, 2 11445; PWR6-NEXT: vsrw 4, 2, 4 11446; PWR6-NEXT: vand 4, 4, 5 11447; PWR6-NEXT: lvx 5, 0, 3 11448; PWR6-NEXT: vsubuwm 2, 2, 4 11449; PWR6-NEXT: vand 4, 2, 5 11450; PWR6-NEXT: vsrw 2, 2, 0 11451; PWR6-NEXT: vand 2, 2, 5 11452; PWR6-NEXT: vspltisw 5, 4 11453; PWR6-NEXT: vadduwm 2, 4, 2 11454; PWR6-NEXT: vsrw 4, 2, 5 11455; PWR6-NEXT: vspltisb 5, 15 11456; PWR6-NEXT: vadduwm 2, 2, 4 11457; PWR6-NEXT: vspltisb 4, 1 11458; PWR6-NEXT: vand 2, 2, 5 11459; PWR6-NEXT: vspltisw 5, -16 11460; PWR6-NEXT: vrlw 0, 4, 5 11461; PWR6-NEXT: vmulouh 4, 2, 4 11462; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 11463; PWR6-NEXT: vspltisw 3, 12 11464; PWR6-NEXT: vadduwm 3, 3, 3 11465; PWR6-NEXT: vslw 2, 2, 5 11466; PWR6-NEXT: vadduwm 2, 4, 2 11467; PWR6-NEXT: vsrw 2, 2, 3 11468; PWR6-NEXT: vspltisw 3, 13 11469; PWR6-NEXT: vsubuwm 3, 3, 5 11470; PWR6-NEXT: vcmpgtuw 2, 2, 3 11471; PWR6-NEXT: blr 11472; 11473; PWR7-LABEL: ugt_29_v4i32: 11474; PWR7: # %bb.0: 11475; PWR7-NEXT: vspltisw 3, 1 11476; PWR7-NEXT: addis 3, 2, .LCPI96_0@toc@ha 11477; PWR7-NEXT: addi 3, 3, .LCPI96_0@toc@l 11478; PWR7-NEXT: vspltisw 4, 2 11479; PWR7-NEXT: lxvw4x 0, 0, 3 11480; PWR7-NEXT: addis 3, 2, .LCPI96_1@toc@ha 11481; PWR7-NEXT: vspltisw 5, -16 11482; PWR7-NEXT: vsrw 3, 2, 3 11483; PWR7-NEXT: addi 3, 3, .LCPI96_1@toc@l 11484; PWR7-NEXT: vspltisb 0, 15 11485; PWR7-NEXT: xxland 35, 35, 0 11486; PWR7-NEXT: lxvw4x 0, 0, 3 11487; PWR7-NEXT: vsubuwm 2, 2, 3 11488; PWR7-NEXT: vsrw 3, 2, 4 11489; PWR7-NEXT: xxland 34, 34, 0 11490; PWR7-NEXT: vspltisw 4, 4 11491; PWR7-NEXT: xxland 35, 35, 0 11492; PWR7-NEXT: vadduwm 2, 2, 3 11493; PWR7-NEXT: vsrw 3, 2, 4 11494; PWR7-NEXT: vspltisb 4, 1 11495; PWR7-NEXT: vrlw 1, 4, 5 11496; PWR7-NEXT: vadduwm 2, 2, 3 11497; PWR7-NEXT: xxlxor 35, 35, 35 11498; PWR7-NEXT: xxland 34, 34, 32 11499; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 11500; PWR7-NEXT: vmulouh 2, 2, 4 11501; PWR7-NEXT: vspltisw 4, 12 11502; PWR7-NEXT: vslw 3, 3, 5 11503; PWR7-NEXT: vadduwm 2, 2, 3 11504; PWR7-NEXT: vadduwm 3, 4, 4 11505; PWR7-NEXT: vsrw 2, 2, 3 11506; PWR7-NEXT: vspltisw 3, 13 11507; PWR7-NEXT: vsubuwm 3, 3, 5 11508; PWR7-NEXT: vcmpgtuw 2, 2, 3 11509; PWR7-NEXT: blr 11510; 11511; PWR8-LABEL: ugt_29_v4i32: 11512; PWR8: # %bb.0: 11513; PWR8-NEXT: vspltisw 3, -16 11514; PWR8-NEXT: vspltisw 4, 13 11515; PWR8-NEXT: vpopcntw 2, 2 11516; PWR8-NEXT: vsubuwm 3, 4, 3 11517; PWR8-NEXT: vcmpgtuw 2, 2, 3 11518; PWR8-NEXT: blr 11519; 11520; PWR9-LABEL: ugt_29_v4i32: 11521; PWR9: # %bb.0: 11522; PWR9-NEXT: vspltisw 3, -16 11523; PWR9-NEXT: vspltisw 4, 13 11524; PWR9-NEXT: vpopcntw 2, 2 11525; PWR9-NEXT: vsubuwm 3, 4, 3 11526; PWR9-NEXT: vcmpgtuw 2, 2, 3 11527; PWR9-NEXT: blr 11528 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 11529 %3 = icmp ugt <4 x i32> %2, <i32 29, i32 29, i32 29, i32 29> 11530 %4 = sext <4 x i1> %3 to <4 x i32> 11531 ret <4 x i32> %4 11532} 11533 11534define <4 x i32> @ult_30_v4i32(<4 x i32> %0) { 11535; PWR5-LABEL: ult_30_v4i32: 11536; PWR5: # %bb.0: 11537; PWR5-NEXT: addis 3, 2, .LCPI97_0@toc@ha 11538; PWR5-NEXT: vspltisw 4, 1 11539; PWR5-NEXT: vxor 3, 3, 3 11540; PWR5-NEXT: addi 3, 3, .LCPI97_0@toc@l 11541; PWR5-NEXT: lvx 5, 0, 3 11542; PWR5-NEXT: addis 3, 2, .LCPI97_1@toc@ha 11543; PWR5-NEXT: addi 3, 3, .LCPI97_1@toc@l 11544; PWR5-NEXT: vspltisw 0, 2 11545; PWR5-NEXT: vsrw 4, 2, 4 11546; PWR5-NEXT: vand 4, 4, 5 11547; PWR5-NEXT: lvx 5, 0, 3 11548; PWR5-NEXT: vsubuwm 2, 2, 4 11549; PWR5-NEXT: vand 4, 2, 5 11550; PWR5-NEXT: vsrw 2, 2, 0 11551; PWR5-NEXT: vand 2, 2, 5 11552; PWR5-NEXT: vspltisw 5, 4 11553; PWR5-NEXT: vadduwm 2, 4, 2 11554; PWR5-NEXT: vsrw 4, 2, 5 11555; PWR5-NEXT: vspltisb 5, 15 11556; PWR5-NEXT: vadduwm 2, 2, 4 11557; PWR5-NEXT: vspltisb 4, 1 11558; PWR5-NEXT: vand 2, 2, 5 11559; PWR5-NEXT: vspltisw 5, -16 11560; PWR5-NEXT: vrlw 0, 4, 5 11561; PWR5-NEXT: vmulouh 4, 2, 4 11562; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 11563; PWR5-NEXT: vspltisw 3, 12 11564; PWR5-NEXT: vadduwm 3, 3, 3 11565; PWR5-NEXT: vslw 2, 2, 5 11566; PWR5-NEXT: vadduwm 2, 4, 2 11567; PWR5-NEXT: vsrw 2, 2, 3 11568; PWR5-NEXT: vspltisw 3, 15 11569; PWR5-NEXT: vadduwm 3, 3, 3 11570; PWR5-NEXT: vcmpgtuw 2, 3, 2 11571; PWR5-NEXT: blr 11572; 11573; PWR6-LABEL: ult_30_v4i32: 11574; PWR6: # %bb.0: 11575; PWR6-NEXT: addis 3, 2, .LCPI97_0@toc@ha 11576; PWR6-NEXT: vspltisw 4, 1 11577; PWR6-NEXT: vxor 3, 3, 3 11578; PWR6-NEXT: addi 3, 3, .LCPI97_0@toc@l 11579; PWR6-NEXT: lvx 5, 0, 3 11580; PWR6-NEXT: addis 3, 2, .LCPI97_1@toc@ha 11581; PWR6-NEXT: addi 3, 3, .LCPI97_1@toc@l 11582; PWR6-NEXT: vspltisw 0, 2 11583; PWR6-NEXT: vsrw 4, 2, 4 11584; PWR6-NEXT: vand 4, 4, 5 11585; PWR6-NEXT: lvx 5, 0, 3 11586; PWR6-NEXT: vsubuwm 2, 2, 4 11587; PWR6-NEXT: vand 4, 2, 5 11588; PWR6-NEXT: vsrw 2, 2, 0 11589; PWR6-NEXT: vand 2, 2, 5 11590; PWR6-NEXT: vspltisw 5, 4 11591; PWR6-NEXT: vadduwm 2, 4, 2 11592; PWR6-NEXT: vsrw 4, 2, 5 11593; PWR6-NEXT: vspltisb 5, 15 11594; PWR6-NEXT: vadduwm 2, 2, 4 11595; PWR6-NEXT: vspltisb 4, 1 11596; PWR6-NEXT: vand 2, 2, 5 11597; PWR6-NEXT: vspltisw 5, -16 11598; PWR6-NEXT: vrlw 0, 4, 5 11599; PWR6-NEXT: vmulouh 4, 2, 4 11600; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 11601; PWR6-NEXT: vspltisw 3, 12 11602; PWR6-NEXT: vadduwm 3, 3, 3 11603; PWR6-NEXT: vslw 2, 2, 5 11604; PWR6-NEXT: vadduwm 2, 4, 2 11605; PWR6-NEXT: vsrw 2, 2, 3 11606; PWR6-NEXT: vspltisw 3, 15 11607; PWR6-NEXT: vadduwm 3, 3, 3 11608; PWR6-NEXT: vcmpgtuw 2, 3, 2 11609; PWR6-NEXT: blr 11610; 11611; PWR7-LABEL: ult_30_v4i32: 11612; PWR7: # %bb.0: 11613; PWR7-NEXT: vspltisw 3, 1 11614; PWR7-NEXT: addis 3, 2, .LCPI97_0@toc@ha 11615; PWR7-NEXT: addi 3, 3, .LCPI97_0@toc@l 11616; PWR7-NEXT: vspltisw 4, 2 11617; PWR7-NEXT: lxvw4x 0, 0, 3 11618; PWR7-NEXT: addis 3, 2, .LCPI97_1@toc@ha 11619; PWR7-NEXT: vspltisw 5, -16 11620; PWR7-NEXT: vsrw 3, 2, 3 11621; PWR7-NEXT: addi 3, 3, .LCPI97_1@toc@l 11622; PWR7-NEXT: vspltisb 0, 15 11623; PWR7-NEXT: xxland 35, 35, 0 11624; PWR7-NEXT: lxvw4x 0, 0, 3 11625; PWR7-NEXT: vsubuwm 2, 2, 3 11626; PWR7-NEXT: vsrw 3, 2, 4 11627; PWR7-NEXT: xxland 34, 34, 0 11628; PWR7-NEXT: vspltisw 4, 4 11629; PWR7-NEXT: xxland 35, 35, 0 11630; PWR7-NEXT: vadduwm 2, 2, 3 11631; PWR7-NEXT: vsrw 3, 2, 4 11632; PWR7-NEXT: vspltisb 4, 1 11633; PWR7-NEXT: vrlw 1, 4, 5 11634; PWR7-NEXT: vadduwm 2, 2, 3 11635; PWR7-NEXT: xxlxor 35, 35, 35 11636; PWR7-NEXT: xxland 34, 34, 32 11637; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 11638; PWR7-NEXT: vmulouh 2, 2, 4 11639; PWR7-NEXT: vspltisw 4, 12 11640; PWR7-NEXT: vslw 3, 3, 5 11641; PWR7-NEXT: vadduwm 2, 2, 3 11642; PWR7-NEXT: vadduwm 3, 4, 4 11643; PWR7-NEXT: vsrw 2, 2, 3 11644; PWR7-NEXT: vspltisw 3, 15 11645; PWR7-NEXT: vadduwm 3, 3, 3 11646; PWR7-NEXT: vcmpgtuw 2, 3, 2 11647; PWR7-NEXT: blr 11648; 11649; PWR8-LABEL: ult_30_v4i32: 11650; PWR8: # %bb.0: 11651; PWR8-NEXT: vspltisw 3, 15 11652; PWR8-NEXT: vpopcntw 2, 2 11653; PWR8-NEXT: vadduwm 3, 3, 3 11654; PWR8-NEXT: vcmpgtuw 2, 3, 2 11655; PWR8-NEXT: blr 11656; 11657; PWR9-LABEL: ult_30_v4i32: 11658; PWR9: # %bb.0: 11659; PWR9-NEXT: vspltisw 3, 15 11660; PWR9-NEXT: vpopcntw 2, 2 11661; PWR9-NEXT: vadduwm 3, 3, 3 11662; PWR9-NEXT: vcmpgtuw 2, 3, 2 11663; PWR9-NEXT: blr 11664 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 11665 %3 = icmp ult <4 x i32> %2, <i32 30, i32 30, i32 30, i32 30> 11666 %4 = sext <4 x i1> %3 to <4 x i32> 11667 ret <4 x i32> %4 11668} 11669 11670define <4 x i32> @ugt_30_v4i32(<4 x i32> %0) { 11671; PWR5-LABEL: ugt_30_v4i32: 11672; PWR5: # %bb.0: 11673; PWR5-NEXT: addis 3, 2, .LCPI98_0@toc@ha 11674; PWR5-NEXT: vspltisw 4, 1 11675; PWR5-NEXT: vxor 3, 3, 3 11676; PWR5-NEXT: addi 3, 3, .LCPI98_0@toc@l 11677; PWR5-NEXT: lvx 5, 0, 3 11678; PWR5-NEXT: addis 3, 2, .LCPI98_1@toc@ha 11679; PWR5-NEXT: addi 3, 3, .LCPI98_1@toc@l 11680; PWR5-NEXT: vspltisw 0, 2 11681; PWR5-NEXT: vsrw 4, 2, 4 11682; PWR5-NEXT: vand 4, 4, 5 11683; PWR5-NEXT: lvx 5, 0, 3 11684; PWR5-NEXT: vsubuwm 2, 2, 4 11685; PWR5-NEXT: vand 4, 2, 5 11686; PWR5-NEXT: vsrw 2, 2, 0 11687; PWR5-NEXT: vand 2, 2, 5 11688; PWR5-NEXT: vspltisw 5, 4 11689; PWR5-NEXT: vadduwm 2, 4, 2 11690; PWR5-NEXT: vsrw 4, 2, 5 11691; PWR5-NEXT: vspltisb 5, 15 11692; PWR5-NEXT: vadduwm 2, 2, 4 11693; PWR5-NEXT: vspltisb 4, 1 11694; PWR5-NEXT: vand 2, 2, 5 11695; PWR5-NEXT: vspltisw 5, -16 11696; PWR5-NEXT: vrlw 0, 4, 5 11697; PWR5-NEXT: vmulouh 4, 2, 4 11698; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 11699; PWR5-NEXT: vspltisw 3, 12 11700; PWR5-NEXT: vadduwm 3, 3, 3 11701; PWR5-NEXT: vslw 2, 2, 5 11702; PWR5-NEXT: vadduwm 2, 4, 2 11703; PWR5-NEXT: vsrw 2, 2, 3 11704; PWR5-NEXT: vspltisw 3, 15 11705; PWR5-NEXT: vadduwm 3, 3, 3 11706; PWR5-NEXT: vcmpgtuw 2, 2, 3 11707; PWR5-NEXT: blr 11708; 11709; PWR6-LABEL: ugt_30_v4i32: 11710; PWR6: # %bb.0: 11711; PWR6-NEXT: addis 3, 2, .LCPI98_0@toc@ha 11712; PWR6-NEXT: vspltisw 4, 1 11713; PWR6-NEXT: vxor 3, 3, 3 11714; PWR6-NEXT: addi 3, 3, .LCPI98_0@toc@l 11715; PWR6-NEXT: lvx 5, 0, 3 11716; PWR6-NEXT: addis 3, 2, .LCPI98_1@toc@ha 11717; PWR6-NEXT: addi 3, 3, .LCPI98_1@toc@l 11718; PWR6-NEXT: vspltisw 0, 2 11719; PWR6-NEXT: vsrw 4, 2, 4 11720; PWR6-NEXT: vand 4, 4, 5 11721; PWR6-NEXT: lvx 5, 0, 3 11722; PWR6-NEXT: vsubuwm 2, 2, 4 11723; PWR6-NEXT: vand 4, 2, 5 11724; PWR6-NEXT: vsrw 2, 2, 0 11725; PWR6-NEXT: vand 2, 2, 5 11726; PWR6-NEXT: vspltisw 5, 4 11727; PWR6-NEXT: vadduwm 2, 4, 2 11728; PWR6-NEXT: vsrw 4, 2, 5 11729; PWR6-NEXT: vspltisb 5, 15 11730; PWR6-NEXT: vadduwm 2, 2, 4 11731; PWR6-NEXT: vspltisb 4, 1 11732; PWR6-NEXT: vand 2, 2, 5 11733; PWR6-NEXT: vspltisw 5, -16 11734; PWR6-NEXT: vrlw 0, 4, 5 11735; PWR6-NEXT: vmulouh 4, 2, 4 11736; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 11737; PWR6-NEXT: vspltisw 3, 12 11738; PWR6-NEXT: vadduwm 3, 3, 3 11739; PWR6-NEXT: vslw 2, 2, 5 11740; PWR6-NEXT: vadduwm 2, 4, 2 11741; PWR6-NEXT: vsrw 2, 2, 3 11742; PWR6-NEXT: vspltisw 3, 15 11743; PWR6-NEXT: vadduwm 3, 3, 3 11744; PWR6-NEXT: vcmpgtuw 2, 2, 3 11745; PWR6-NEXT: blr 11746; 11747; PWR7-LABEL: ugt_30_v4i32: 11748; PWR7: # %bb.0: 11749; PWR7-NEXT: vspltisw 3, 1 11750; PWR7-NEXT: addis 3, 2, .LCPI98_0@toc@ha 11751; PWR7-NEXT: addi 3, 3, .LCPI98_0@toc@l 11752; PWR7-NEXT: vspltisw 4, 2 11753; PWR7-NEXT: lxvw4x 0, 0, 3 11754; PWR7-NEXT: addis 3, 2, .LCPI98_1@toc@ha 11755; PWR7-NEXT: vspltisw 5, -16 11756; PWR7-NEXT: vsrw 3, 2, 3 11757; PWR7-NEXT: addi 3, 3, .LCPI98_1@toc@l 11758; PWR7-NEXT: vspltisb 0, 15 11759; PWR7-NEXT: xxland 35, 35, 0 11760; PWR7-NEXT: lxvw4x 0, 0, 3 11761; PWR7-NEXT: vsubuwm 2, 2, 3 11762; PWR7-NEXT: vsrw 3, 2, 4 11763; PWR7-NEXT: xxland 34, 34, 0 11764; PWR7-NEXT: vspltisw 4, 4 11765; PWR7-NEXT: xxland 35, 35, 0 11766; PWR7-NEXT: vadduwm 2, 2, 3 11767; PWR7-NEXT: vsrw 3, 2, 4 11768; PWR7-NEXT: vspltisb 4, 1 11769; PWR7-NEXT: vrlw 1, 4, 5 11770; PWR7-NEXT: vadduwm 2, 2, 3 11771; PWR7-NEXT: xxlxor 35, 35, 35 11772; PWR7-NEXT: xxland 34, 34, 32 11773; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 11774; PWR7-NEXT: vmulouh 2, 2, 4 11775; PWR7-NEXT: vspltisw 4, 12 11776; PWR7-NEXT: vslw 3, 3, 5 11777; PWR7-NEXT: vadduwm 2, 2, 3 11778; PWR7-NEXT: vadduwm 3, 4, 4 11779; PWR7-NEXT: vsrw 2, 2, 3 11780; PWR7-NEXT: vspltisw 3, 15 11781; PWR7-NEXT: vadduwm 3, 3, 3 11782; PWR7-NEXT: vcmpgtuw 2, 2, 3 11783; PWR7-NEXT: blr 11784; 11785; PWR8-LABEL: ugt_30_v4i32: 11786; PWR8: # %bb.0: 11787; PWR8-NEXT: vspltisw 3, 15 11788; PWR8-NEXT: vpopcntw 2, 2 11789; PWR8-NEXT: vadduwm 3, 3, 3 11790; PWR8-NEXT: vcmpgtuw 2, 2, 3 11791; PWR8-NEXT: blr 11792; 11793; PWR9-LABEL: ugt_30_v4i32: 11794; PWR9: # %bb.0: 11795; PWR9-NEXT: vspltisw 3, 15 11796; PWR9-NEXT: vpopcntw 2, 2 11797; PWR9-NEXT: vadduwm 3, 3, 3 11798; PWR9-NEXT: vcmpgtuw 2, 2, 3 11799; PWR9-NEXT: blr 11800 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 11801 %3 = icmp ugt <4 x i32> %2, <i32 30, i32 30, i32 30, i32 30> 11802 %4 = sext <4 x i1> %3 to <4 x i32> 11803 ret <4 x i32> %4 11804} 11805 11806define <4 x i32> @ult_31_v4i32(<4 x i32> %0) { 11807; PWR5-LABEL: ult_31_v4i32: 11808; PWR5: # %bb.0: 11809; PWR5-NEXT: addis 3, 2, .LCPI99_0@toc@ha 11810; PWR5-NEXT: vspltisw 4, 1 11811; PWR5-NEXT: vxor 3, 3, 3 11812; PWR5-NEXT: addi 3, 3, .LCPI99_0@toc@l 11813; PWR5-NEXT: lvx 5, 0, 3 11814; PWR5-NEXT: addis 3, 2, .LCPI99_1@toc@ha 11815; PWR5-NEXT: addi 3, 3, .LCPI99_1@toc@l 11816; PWR5-NEXT: vspltisw 0, 2 11817; PWR5-NEXT: vsrw 4, 2, 4 11818; PWR5-NEXT: vand 4, 4, 5 11819; PWR5-NEXT: lvx 5, 0, 3 11820; PWR5-NEXT: vsubuwm 2, 2, 4 11821; PWR5-NEXT: vand 4, 2, 5 11822; PWR5-NEXT: vsrw 2, 2, 0 11823; PWR5-NEXT: vand 2, 2, 5 11824; PWR5-NEXT: vspltisw 5, 4 11825; PWR5-NEXT: vadduwm 2, 4, 2 11826; PWR5-NEXT: vsrw 4, 2, 5 11827; PWR5-NEXT: vspltisb 5, 15 11828; PWR5-NEXT: vadduwm 2, 2, 4 11829; PWR5-NEXT: vspltisb 4, 1 11830; PWR5-NEXT: vand 2, 2, 5 11831; PWR5-NEXT: vspltisw 5, -16 11832; PWR5-NEXT: vrlw 0, 4, 5 11833; PWR5-NEXT: vmulouh 4, 2, 4 11834; PWR5-NEXT: vmsumuhm 2, 2, 0, 3 11835; PWR5-NEXT: vspltisw 3, 12 11836; PWR5-NEXT: vadduwm 3, 3, 3 11837; PWR5-NEXT: vslw 2, 2, 5 11838; PWR5-NEXT: vadduwm 2, 4, 2 11839; PWR5-NEXT: vsrw 2, 2, 3 11840; PWR5-NEXT: vspltisw 3, 15 11841; PWR5-NEXT: vsubuwm 3, 3, 5 11842; PWR5-NEXT: vcmpgtuw 2, 3, 2 11843; PWR5-NEXT: blr 11844; 11845; PWR6-LABEL: ult_31_v4i32: 11846; PWR6: # %bb.0: 11847; PWR6-NEXT: addis 3, 2, .LCPI99_0@toc@ha 11848; PWR6-NEXT: vspltisw 4, 1 11849; PWR6-NEXT: vxor 3, 3, 3 11850; PWR6-NEXT: addi 3, 3, .LCPI99_0@toc@l 11851; PWR6-NEXT: lvx 5, 0, 3 11852; PWR6-NEXT: addis 3, 2, .LCPI99_1@toc@ha 11853; PWR6-NEXT: addi 3, 3, .LCPI99_1@toc@l 11854; PWR6-NEXT: vspltisw 0, 2 11855; PWR6-NEXT: vsrw 4, 2, 4 11856; PWR6-NEXT: vand 4, 4, 5 11857; PWR6-NEXT: lvx 5, 0, 3 11858; PWR6-NEXT: vsubuwm 2, 2, 4 11859; PWR6-NEXT: vand 4, 2, 5 11860; PWR6-NEXT: vsrw 2, 2, 0 11861; PWR6-NEXT: vand 2, 2, 5 11862; PWR6-NEXT: vspltisw 5, 4 11863; PWR6-NEXT: vadduwm 2, 4, 2 11864; PWR6-NEXT: vsrw 4, 2, 5 11865; PWR6-NEXT: vspltisb 5, 15 11866; PWR6-NEXT: vadduwm 2, 2, 4 11867; PWR6-NEXT: vspltisb 4, 1 11868; PWR6-NEXT: vand 2, 2, 5 11869; PWR6-NEXT: vspltisw 5, -16 11870; PWR6-NEXT: vrlw 0, 4, 5 11871; PWR6-NEXT: vmulouh 4, 2, 4 11872; PWR6-NEXT: vmsumuhm 2, 2, 0, 3 11873; PWR6-NEXT: vspltisw 3, 12 11874; PWR6-NEXT: vadduwm 3, 3, 3 11875; PWR6-NEXT: vslw 2, 2, 5 11876; PWR6-NEXT: vadduwm 2, 4, 2 11877; PWR6-NEXT: vsrw 2, 2, 3 11878; PWR6-NEXT: vspltisw 3, 15 11879; PWR6-NEXT: vsubuwm 3, 3, 5 11880; PWR6-NEXT: vcmpgtuw 2, 3, 2 11881; PWR6-NEXT: blr 11882; 11883; PWR7-LABEL: ult_31_v4i32: 11884; PWR7: # %bb.0: 11885; PWR7-NEXT: vspltisw 3, 1 11886; PWR7-NEXT: addis 3, 2, .LCPI99_0@toc@ha 11887; PWR7-NEXT: addi 3, 3, .LCPI99_0@toc@l 11888; PWR7-NEXT: vspltisw 4, 2 11889; PWR7-NEXT: lxvw4x 0, 0, 3 11890; PWR7-NEXT: addis 3, 2, .LCPI99_1@toc@ha 11891; PWR7-NEXT: vspltisw 5, -16 11892; PWR7-NEXT: vsrw 3, 2, 3 11893; PWR7-NEXT: addi 3, 3, .LCPI99_1@toc@l 11894; PWR7-NEXT: vspltisb 0, 15 11895; PWR7-NEXT: xxland 35, 35, 0 11896; PWR7-NEXT: lxvw4x 0, 0, 3 11897; PWR7-NEXT: vsubuwm 2, 2, 3 11898; PWR7-NEXT: vsrw 3, 2, 4 11899; PWR7-NEXT: xxland 34, 34, 0 11900; PWR7-NEXT: vspltisw 4, 4 11901; PWR7-NEXT: xxland 35, 35, 0 11902; PWR7-NEXT: vadduwm 2, 2, 3 11903; PWR7-NEXT: vsrw 3, 2, 4 11904; PWR7-NEXT: vspltisb 4, 1 11905; PWR7-NEXT: vrlw 1, 4, 5 11906; PWR7-NEXT: vadduwm 2, 2, 3 11907; PWR7-NEXT: xxlxor 35, 35, 35 11908; PWR7-NEXT: xxland 34, 34, 32 11909; PWR7-NEXT: vmsumuhm 3, 2, 1, 3 11910; PWR7-NEXT: vmulouh 2, 2, 4 11911; PWR7-NEXT: vspltisw 4, 12 11912; PWR7-NEXT: vslw 3, 3, 5 11913; PWR7-NEXT: vadduwm 2, 2, 3 11914; PWR7-NEXT: vadduwm 3, 4, 4 11915; PWR7-NEXT: vsrw 2, 2, 3 11916; PWR7-NEXT: vspltisw 3, 15 11917; PWR7-NEXT: vsubuwm 3, 3, 5 11918; PWR7-NEXT: vcmpgtuw 2, 3, 2 11919; PWR7-NEXT: blr 11920; 11921; PWR8-LABEL: ult_31_v4i32: 11922; PWR8: # %bb.0: 11923; PWR8-NEXT: vspltisw 3, -16 11924; PWR8-NEXT: vspltisw 4, 15 11925; PWR8-NEXT: vpopcntw 2, 2 11926; PWR8-NEXT: vsubuwm 3, 4, 3 11927; PWR8-NEXT: vcmpgtuw 2, 3, 2 11928; PWR8-NEXT: blr 11929; 11930; PWR9-LABEL: ult_31_v4i32: 11931; PWR9: # %bb.0: 11932; PWR9-NEXT: vspltisw 3, -16 11933; PWR9-NEXT: vspltisw 4, 15 11934; PWR9-NEXT: vpopcntw 2, 2 11935; PWR9-NEXT: vsubuwm 3, 4, 3 11936; PWR9-NEXT: vcmpgtuw 2, 3, 2 11937; PWR9-NEXT: blr 11938 %2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0) 11939 %3 = icmp ult <4 x i32> %2, <i32 31, i32 31, i32 31, i32 31> 11940 %4 = sext <4 x i1> %3 to <4 x i32> 11941 ret <4 x i32> %4 11942} 11943 11944define <2 x i64> @ugt_1_v2i64(<2 x i64> %0) { 11945; PWR5-LABEL: ugt_1_v2i64: 11946; PWR5: # %bb.0: 11947; PWR5-NEXT: addi 5, 3, -1 11948; PWR5-NEXT: and 3, 3, 5 11949; PWR5-NEXT: addi 5, 4, -1 11950; PWR5-NEXT: subfic 3, 3, 0 11951; PWR5-NEXT: subfe 3, 3, 3 11952; PWR5-NEXT: and 4, 4, 5 11953; PWR5-NEXT: subfic 4, 4, 0 11954; PWR5-NEXT: subfe 4, 4, 4 11955; PWR5-NEXT: blr 11956; 11957; PWR6-LABEL: ugt_1_v2i64: 11958; PWR6: # %bb.0: 11959; PWR6-NEXT: addi 5, 3, -1 11960; PWR6-NEXT: and 3, 3, 5 11961; PWR6-NEXT: addi 5, 4, -1 11962; PWR6-NEXT: subfic 3, 3, 0 11963; PWR6-NEXT: subfe 3, 3, 3 11964; PWR6-NEXT: and 4, 4, 5 11965; PWR6-NEXT: subfic 4, 4, 0 11966; PWR6-NEXT: subfe 4, 4, 4 11967; PWR6-NEXT: blr 11968; 11969; PWR7-LABEL: ugt_1_v2i64: 11970; PWR7: # %bb.0: 11971; PWR7-NEXT: addi 3, 1, -32 11972; PWR7-NEXT: stxvd2x 34, 0, 3 11973; PWR7-NEXT: ld 3, -24(1) 11974; PWR7-NEXT: addi 3, 3, -1 11975; PWR7-NEXT: std 3, -8(1) 11976; PWR7-NEXT: ld 3, -32(1) 11977; PWR7-NEXT: addi 3, 3, -1 11978; PWR7-NEXT: std 3, -16(1) 11979; PWR7-NEXT: addi 3, 1, -16 11980; PWR7-NEXT: lxvw4x 0, 0, 3 11981; PWR7-NEXT: addis 3, 2, .LCPI100_0@toc@ha 11982; PWR7-NEXT: addi 3, 3, .LCPI100_0@toc@l 11983; PWR7-NEXT: lxvw4x 35, 0, 3 11984; PWR7-NEXT: xxland 34, 34, 0 11985; PWR7-NEXT: vcmpequw 2, 2, 3 11986; PWR7-NEXT: xxlnor 34, 34, 34 11987; PWR7-NEXT: blr 11988; 11989; PWR8-LABEL: ugt_1_v2i64: 11990; PWR8: # %bb.0: 11991; PWR8-NEXT: addis 3, 2, .LCPI100_0@toc@ha 11992; PWR8-NEXT: vpopcntd 2, 2 11993; PWR8-NEXT: addi 3, 3, .LCPI100_0@toc@l 11994; PWR8-NEXT: lxvd2x 35, 0, 3 11995; PWR8-NEXT: vcmpgtud 2, 2, 3 11996; PWR8-NEXT: blr 11997; 11998; PWR9-LABEL: ugt_1_v2i64: 11999; PWR9: # %bb.0: 12000; PWR9-NEXT: addis 3, 2, .LCPI100_0@toc@ha 12001; PWR9-NEXT: vpopcntd 2, 2 12002; PWR9-NEXT: addi 3, 3, .LCPI100_0@toc@l 12003; PWR9-NEXT: lxvx 35, 0, 3 12004; PWR9-NEXT: vcmpgtud 2, 2, 3 12005; PWR9-NEXT: blr 12006 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12007 %3 = icmp ugt <2 x i64> %2, <i64 1, i64 1> 12008 %4 = sext <2 x i1> %3 to <2 x i64> 12009 ret <2 x i64> %4 12010} 12011 12012define <2 x i64> @ult_2_v2i64(<2 x i64> %0) { 12013; PWR5-LABEL: ult_2_v2i64: 12014; PWR5: # %bb.0: 12015; PWR5-NEXT: addi 5, 3, -1 12016; PWR5-NEXT: and 3, 3, 5 12017; PWR5-NEXT: addi 5, 4, -1 12018; PWR5-NEXT: addic 3, 3, -1 12019; PWR5-NEXT: subfe 3, 3, 3 12020; PWR5-NEXT: and 4, 4, 5 12021; PWR5-NEXT: addic 4, 4, -1 12022; PWR5-NEXT: subfe 4, 4, 4 12023; PWR5-NEXT: blr 12024; 12025; PWR6-LABEL: ult_2_v2i64: 12026; PWR6: # %bb.0: 12027; PWR6-NEXT: addi 5, 3, -1 12028; PWR6-NEXT: and 3, 3, 5 12029; PWR6-NEXT: addi 5, 4, -1 12030; PWR6-NEXT: addic 3, 3, -1 12031; PWR6-NEXT: subfe 3, 3, 3 12032; PWR6-NEXT: and 4, 4, 5 12033; PWR6-NEXT: addic 4, 4, -1 12034; PWR6-NEXT: subfe 4, 4, 4 12035; PWR6-NEXT: blr 12036; 12037; PWR7-LABEL: ult_2_v2i64: 12038; PWR7: # %bb.0: 12039; PWR7-NEXT: addi 3, 1, -32 12040; PWR7-NEXT: stxvd2x 34, 0, 3 12041; PWR7-NEXT: ld 3, -24(1) 12042; PWR7-NEXT: addi 3, 3, -1 12043; PWR7-NEXT: std 3, -8(1) 12044; PWR7-NEXT: ld 3, -32(1) 12045; PWR7-NEXT: addi 3, 3, -1 12046; PWR7-NEXT: std 3, -16(1) 12047; PWR7-NEXT: addi 3, 1, -16 12048; PWR7-NEXT: lxvw4x 0, 0, 3 12049; PWR7-NEXT: addis 3, 2, .LCPI101_0@toc@ha 12050; PWR7-NEXT: addi 3, 3, .LCPI101_0@toc@l 12051; PWR7-NEXT: lxvw4x 35, 0, 3 12052; PWR7-NEXT: xxland 34, 34, 0 12053; PWR7-NEXT: vcmpequw 2, 2, 3 12054; PWR7-NEXT: blr 12055; 12056; PWR8-LABEL: ult_2_v2i64: 12057; PWR8: # %bb.0: 12058; PWR8-NEXT: addis 3, 2, .LCPI101_0@toc@ha 12059; PWR8-NEXT: vpopcntd 2, 2 12060; PWR8-NEXT: addi 3, 3, .LCPI101_0@toc@l 12061; PWR8-NEXT: lxvd2x 35, 0, 3 12062; PWR8-NEXT: vcmpgtud 2, 3, 2 12063; PWR8-NEXT: blr 12064; 12065; PWR9-LABEL: ult_2_v2i64: 12066; PWR9: # %bb.0: 12067; PWR9-NEXT: addis 3, 2, .LCPI101_0@toc@ha 12068; PWR9-NEXT: vpopcntd 2, 2 12069; PWR9-NEXT: addi 3, 3, .LCPI101_0@toc@l 12070; PWR9-NEXT: lxvx 35, 0, 3 12071; PWR9-NEXT: vcmpgtud 2, 3, 2 12072; PWR9-NEXT: blr 12073 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12074 %3 = icmp ult <2 x i64> %2, <i64 2, i64 2> 12075 %4 = sext <2 x i1> %3 to <2 x i64> 12076 ret <2 x i64> %4 12077} 12078 12079define <2 x i64> @ugt_2_v2i64(<2 x i64> %0) { 12080; PWR5-LABEL: ugt_2_v2i64: 12081; PWR5: # %bb.0: 12082; PWR5-NEXT: lis 5, 21845 12083; PWR5-NEXT: lis 6, 13107 12084; PWR5-NEXT: ori 5, 5, 21845 12085; PWR5-NEXT: rotldi 8, 4, 63 12086; PWR5-NEXT: rotldi 9, 3, 63 12087; PWR5-NEXT: rldimi 5, 5, 32, 0 12088; PWR5-NEXT: and 8, 8, 5 12089; PWR5-NEXT: and 5, 9, 5 12090; PWR5-NEXT: ori 6, 6, 13107 12091; PWR5-NEXT: sub 3, 3, 5 12092; PWR5-NEXT: rldimi 6, 6, 32, 0 12093; PWR5-NEXT: sub 4, 4, 8 12094; PWR5-NEXT: and 8, 3, 6 12095; PWR5-NEXT: rotldi 3, 3, 62 12096; PWR5-NEXT: and 3, 3, 6 12097; PWR5-NEXT: lis 7, 3855 12098; PWR5-NEXT: and 5, 4, 6 12099; PWR5-NEXT: rotldi 4, 4, 62 12100; PWR5-NEXT: add 3, 8, 3 12101; PWR5-NEXT: lis 9, 257 12102; PWR5-NEXT: ori 7, 7, 3855 12103; PWR5-NEXT: and 4, 4, 6 12104; PWR5-NEXT: rldicl 6, 3, 60, 4 12105; PWR5-NEXT: ori 9, 9, 257 12106; PWR5-NEXT: rldimi 7, 7, 32, 0 12107; PWR5-NEXT: add 4, 5, 4 12108; PWR5-NEXT: add 3, 3, 6 12109; PWR5-NEXT: rldimi 9, 9, 32, 0 12110; PWR5-NEXT: rldicl 5, 4, 60, 4 12111; PWR5-NEXT: and 3, 3, 7 12112; PWR5-NEXT: add 4, 4, 5 12113; PWR5-NEXT: mulld 3, 3, 9 12114; PWR5-NEXT: and 4, 4, 7 12115; PWR5-NEXT: rldicl 3, 3, 8, 56 12116; PWR5-NEXT: mulld 4, 4, 9 12117; PWR5-NEXT: li 5, 2 12118; PWR5-NEXT: subfic 3, 3, 2 12119; PWR5-NEXT: rldicl 4, 4, 8, 56 12120; PWR5-NEXT: subfe 3, 5, 5 12121; PWR5-NEXT: subfic 4, 4, 2 12122; PWR5-NEXT: subfe 4, 5, 5 12123; PWR5-NEXT: blr 12124; 12125; PWR6-LABEL: ugt_2_v2i64: 12126; PWR6: # %bb.0: 12127; PWR6-NEXT: lis 5, 21845 12128; PWR6-NEXT: lis 6, 13107 12129; PWR6-NEXT: ori 5, 5, 21845 12130; PWR6-NEXT: rotldi 8, 4, 63 12131; PWR6-NEXT: rotldi 9, 3, 63 12132; PWR6-NEXT: rldimi 5, 5, 32, 0 12133; PWR6-NEXT: and 8, 8, 5 12134; PWR6-NEXT: and 5, 9, 5 12135; PWR6-NEXT: ori 6, 6, 13107 12136; PWR6-NEXT: sub 3, 3, 5 12137; PWR6-NEXT: rldimi 6, 6, 32, 0 12138; PWR6-NEXT: sub 4, 4, 8 12139; PWR6-NEXT: and 8, 3, 6 12140; PWR6-NEXT: rotldi 3, 3, 62 12141; PWR6-NEXT: and 3, 3, 6 12142; PWR6-NEXT: lis 7, 3855 12143; PWR6-NEXT: and 5, 4, 6 12144; PWR6-NEXT: rotldi 4, 4, 62 12145; PWR6-NEXT: add 3, 8, 3 12146; PWR6-NEXT: lis 9, 257 12147; PWR6-NEXT: ori 7, 7, 3855 12148; PWR6-NEXT: and 4, 4, 6 12149; PWR6-NEXT: rldicl 6, 3, 60, 4 12150; PWR6-NEXT: ori 9, 9, 257 12151; PWR6-NEXT: rldimi 7, 7, 32, 0 12152; PWR6-NEXT: add 4, 5, 4 12153; PWR6-NEXT: add 3, 3, 6 12154; PWR6-NEXT: rldimi 9, 9, 32, 0 12155; PWR6-NEXT: rldicl 5, 4, 60, 4 12156; PWR6-NEXT: and 3, 3, 7 12157; PWR6-NEXT: add 4, 4, 5 12158; PWR6-NEXT: mulld 3, 3, 9 12159; PWR6-NEXT: and 4, 4, 7 12160; PWR6-NEXT: rldicl 3, 3, 8, 56 12161; PWR6-NEXT: mulld 4, 4, 9 12162; PWR6-NEXT: li 5, 2 12163; PWR6-NEXT: subfic 3, 3, 2 12164; PWR6-NEXT: rldicl 4, 4, 8, 56 12165; PWR6-NEXT: subfe 3, 5, 5 12166; PWR6-NEXT: subfic 4, 4, 2 12167; PWR6-NEXT: subfe 4, 5, 5 12168; PWR6-NEXT: blr 12169; 12170; PWR7-LABEL: ugt_2_v2i64: 12171; PWR7: # %bb.0: 12172; PWR7-NEXT: addi 3, 1, -32 12173; PWR7-NEXT: li 5, 0 12174; PWR7-NEXT: li 6, -1 12175; PWR7-NEXT: stxvd2x 34, 0, 3 12176; PWR7-NEXT: ld 3, -24(1) 12177; PWR7-NEXT: ld 4, -32(1) 12178; PWR7-NEXT: popcntd 3, 3 12179; PWR7-NEXT: popcntd 4, 4 12180; PWR7-NEXT: cmpldi 3, 2 12181; PWR7-NEXT: iselgt 3, 6, 5 12182; PWR7-NEXT: cmpldi 4, 2 12183; PWR7-NEXT: iselgt 4, 6, 5 12184; PWR7-NEXT: std 3, -8(1) 12185; PWR7-NEXT: addi 3, 1, -16 12186; PWR7-NEXT: std 4, -16(1) 12187; PWR7-NEXT: lxvd2x 34, 0, 3 12188; PWR7-NEXT: blr 12189; 12190; PWR8-LABEL: ugt_2_v2i64: 12191; PWR8: # %bb.0: 12192; PWR8-NEXT: addis 3, 2, .LCPI102_0@toc@ha 12193; PWR8-NEXT: vpopcntd 2, 2 12194; PWR8-NEXT: addi 3, 3, .LCPI102_0@toc@l 12195; PWR8-NEXT: lxvd2x 35, 0, 3 12196; PWR8-NEXT: vcmpgtud 2, 2, 3 12197; PWR8-NEXT: blr 12198; 12199; PWR9-LABEL: ugt_2_v2i64: 12200; PWR9: # %bb.0: 12201; PWR9-NEXT: addis 3, 2, .LCPI102_0@toc@ha 12202; PWR9-NEXT: vpopcntd 2, 2 12203; PWR9-NEXT: addi 3, 3, .LCPI102_0@toc@l 12204; PWR9-NEXT: lxvx 35, 0, 3 12205; PWR9-NEXT: vcmpgtud 2, 2, 3 12206; PWR9-NEXT: blr 12207 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12208 %3 = icmp ugt <2 x i64> %2, <i64 2, i64 2> 12209 %4 = sext <2 x i1> %3 to <2 x i64> 12210 ret <2 x i64> %4 12211} 12212 12213define <2 x i64> @ult_3_v2i64(<2 x i64> %0) { 12214; PWR5-LABEL: ult_3_v2i64: 12215; PWR5: # %bb.0: 12216; PWR5-NEXT: lis 5, 21845 12217; PWR5-NEXT: lis 6, 13107 12218; PWR5-NEXT: ori 5, 5, 21845 12219; PWR5-NEXT: rotldi 8, 4, 63 12220; PWR5-NEXT: rotldi 9, 3, 63 12221; PWR5-NEXT: rldimi 5, 5, 32, 0 12222; PWR5-NEXT: and 8, 8, 5 12223; PWR5-NEXT: and 5, 9, 5 12224; PWR5-NEXT: ori 6, 6, 13107 12225; PWR5-NEXT: sub 3, 3, 5 12226; PWR5-NEXT: rldimi 6, 6, 32, 0 12227; PWR5-NEXT: sub 4, 4, 8 12228; PWR5-NEXT: and 8, 3, 6 12229; PWR5-NEXT: rotldi 3, 3, 62 12230; PWR5-NEXT: and 3, 3, 6 12231; PWR5-NEXT: lis 7, 3855 12232; PWR5-NEXT: and 5, 4, 6 12233; PWR5-NEXT: rotldi 4, 4, 62 12234; PWR5-NEXT: add 3, 8, 3 12235; PWR5-NEXT: lis 9, 257 12236; PWR5-NEXT: ori 7, 7, 3855 12237; PWR5-NEXT: and 4, 4, 6 12238; PWR5-NEXT: rldicl 6, 3, 60, 4 12239; PWR5-NEXT: ori 9, 9, 257 12240; PWR5-NEXT: rldimi 7, 7, 32, 0 12241; PWR5-NEXT: add 4, 5, 4 12242; PWR5-NEXT: add 3, 3, 6 12243; PWR5-NEXT: rldimi 9, 9, 32, 0 12244; PWR5-NEXT: rldicl 5, 4, 60, 4 12245; PWR5-NEXT: and 3, 3, 7 12246; PWR5-NEXT: add 4, 4, 5 12247; PWR5-NEXT: mulld 3, 3, 9 12248; PWR5-NEXT: and 4, 4, 7 12249; PWR5-NEXT: rldicl 3, 3, 8, 56 12250; PWR5-NEXT: li 5, 3 12251; PWR5-NEXT: mulld 4, 4, 9 12252; PWR5-NEXT: subc 6, 3, 5 12253; PWR5-NEXT: rldicl 4, 4, 8, 56 12254; PWR5-NEXT: subfe 3, 3, 3 12255; PWR5-NEXT: subc 5, 4, 5 12256; PWR5-NEXT: subfe 4, 4, 4 12257; PWR5-NEXT: blr 12258; 12259; PWR6-LABEL: ult_3_v2i64: 12260; PWR6: # %bb.0: 12261; PWR6-NEXT: lis 5, 21845 12262; PWR6-NEXT: lis 6, 13107 12263; PWR6-NEXT: ori 5, 5, 21845 12264; PWR6-NEXT: rotldi 8, 4, 63 12265; PWR6-NEXT: rotldi 9, 3, 63 12266; PWR6-NEXT: rldimi 5, 5, 32, 0 12267; PWR6-NEXT: and 8, 8, 5 12268; PWR6-NEXT: and 5, 9, 5 12269; PWR6-NEXT: ori 6, 6, 13107 12270; PWR6-NEXT: sub 3, 3, 5 12271; PWR6-NEXT: rldimi 6, 6, 32, 0 12272; PWR6-NEXT: sub 4, 4, 8 12273; PWR6-NEXT: and 8, 3, 6 12274; PWR6-NEXT: rotldi 3, 3, 62 12275; PWR6-NEXT: and 3, 3, 6 12276; PWR6-NEXT: lis 7, 3855 12277; PWR6-NEXT: and 5, 4, 6 12278; PWR6-NEXT: rotldi 4, 4, 62 12279; PWR6-NEXT: add 3, 8, 3 12280; PWR6-NEXT: lis 9, 257 12281; PWR6-NEXT: ori 7, 7, 3855 12282; PWR6-NEXT: and 4, 4, 6 12283; PWR6-NEXT: rldicl 6, 3, 60, 4 12284; PWR6-NEXT: ori 9, 9, 257 12285; PWR6-NEXT: rldimi 7, 7, 32, 0 12286; PWR6-NEXT: add 4, 5, 4 12287; PWR6-NEXT: add 3, 3, 6 12288; PWR6-NEXT: rldimi 9, 9, 32, 0 12289; PWR6-NEXT: rldicl 5, 4, 60, 4 12290; PWR6-NEXT: and 3, 3, 7 12291; PWR6-NEXT: add 4, 4, 5 12292; PWR6-NEXT: mulld 3, 3, 9 12293; PWR6-NEXT: and 4, 4, 7 12294; PWR6-NEXT: rldicl 3, 3, 8, 56 12295; PWR6-NEXT: li 5, 3 12296; PWR6-NEXT: mulld 4, 4, 9 12297; PWR6-NEXT: subc 6, 3, 5 12298; PWR6-NEXT: rldicl 4, 4, 8, 56 12299; PWR6-NEXT: subfe 3, 3, 3 12300; PWR6-NEXT: subc 5, 4, 5 12301; PWR6-NEXT: subfe 4, 4, 4 12302; PWR6-NEXT: blr 12303; 12304; PWR7-LABEL: ult_3_v2i64: 12305; PWR7: # %bb.0: 12306; PWR7-NEXT: addi 3, 1, -32 12307; PWR7-NEXT: li 5, 0 12308; PWR7-NEXT: li 6, -1 12309; PWR7-NEXT: stxvd2x 34, 0, 3 12310; PWR7-NEXT: ld 3, -24(1) 12311; PWR7-NEXT: ld 4, -32(1) 12312; PWR7-NEXT: popcntd 3, 3 12313; PWR7-NEXT: popcntd 4, 4 12314; PWR7-NEXT: cmpldi 3, 3 12315; PWR7-NEXT: isellt 3, 6, 5 12316; PWR7-NEXT: cmpldi 4, 3 12317; PWR7-NEXT: isellt 4, 6, 5 12318; PWR7-NEXT: std 3, -8(1) 12319; PWR7-NEXT: addi 3, 1, -16 12320; PWR7-NEXT: std 4, -16(1) 12321; PWR7-NEXT: lxvd2x 34, 0, 3 12322; PWR7-NEXT: blr 12323; 12324; PWR8-LABEL: ult_3_v2i64: 12325; PWR8: # %bb.0: 12326; PWR8-NEXT: addis 3, 2, .LCPI103_0@toc@ha 12327; PWR8-NEXT: vpopcntd 2, 2 12328; PWR8-NEXT: addi 3, 3, .LCPI103_0@toc@l 12329; PWR8-NEXT: lxvd2x 35, 0, 3 12330; PWR8-NEXT: vcmpgtud 2, 3, 2 12331; PWR8-NEXT: blr 12332; 12333; PWR9-LABEL: ult_3_v2i64: 12334; PWR9: # %bb.0: 12335; PWR9-NEXT: addis 3, 2, .LCPI103_0@toc@ha 12336; PWR9-NEXT: vpopcntd 2, 2 12337; PWR9-NEXT: addi 3, 3, .LCPI103_0@toc@l 12338; PWR9-NEXT: lxvx 35, 0, 3 12339; PWR9-NEXT: vcmpgtud 2, 3, 2 12340; PWR9-NEXT: blr 12341 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12342 %3 = icmp ult <2 x i64> %2, <i64 3, i64 3> 12343 %4 = sext <2 x i1> %3 to <2 x i64> 12344 ret <2 x i64> %4 12345} 12346 12347define <2 x i64> @ugt_3_v2i64(<2 x i64> %0) { 12348; PWR5-LABEL: ugt_3_v2i64: 12349; PWR5: # %bb.0: 12350; PWR5-NEXT: lis 5, 21845 12351; PWR5-NEXT: lis 6, 13107 12352; PWR5-NEXT: ori 5, 5, 21845 12353; PWR5-NEXT: rotldi 8, 4, 63 12354; PWR5-NEXT: rotldi 9, 3, 63 12355; PWR5-NEXT: rldimi 5, 5, 32, 0 12356; PWR5-NEXT: and 8, 8, 5 12357; PWR5-NEXT: and 5, 9, 5 12358; PWR5-NEXT: ori 6, 6, 13107 12359; PWR5-NEXT: sub 3, 3, 5 12360; PWR5-NEXT: rldimi 6, 6, 32, 0 12361; PWR5-NEXT: sub 4, 4, 8 12362; PWR5-NEXT: and 8, 3, 6 12363; PWR5-NEXT: rotldi 3, 3, 62 12364; PWR5-NEXT: and 3, 3, 6 12365; PWR5-NEXT: lis 7, 3855 12366; PWR5-NEXT: and 5, 4, 6 12367; PWR5-NEXT: rotldi 4, 4, 62 12368; PWR5-NEXT: add 3, 8, 3 12369; PWR5-NEXT: lis 9, 257 12370; PWR5-NEXT: ori 7, 7, 3855 12371; PWR5-NEXT: and 4, 4, 6 12372; PWR5-NEXT: rldicl 6, 3, 60, 4 12373; PWR5-NEXT: ori 9, 9, 257 12374; PWR5-NEXT: rldimi 7, 7, 32, 0 12375; PWR5-NEXT: add 4, 5, 4 12376; PWR5-NEXT: add 3, 3, 6 12377; PWR5-NEXT: rldimi 9, 9, 32, 0 12378; PWR5-NEXT: rldicl 5, 4, 60, 4 12379; PWR5-NEXT: and 3, 3, 7 12380; PWR5-NEXT: add 4, 4, 5 12381; PWR5-NEXT: mulld 3, 3, 9 12382; PWR5-NEXT: and 4, 4, 7 12383; PWR5-NEXT: rldicl 3, 3, 8, 56 12384; PWR5-NEXT: mulld 4, 4, 9 12385; PWR5-NEXT: li 5, 3 12386; PWR5-NEXT: subfic 3, 3, 3 12387; PWR5-NEXT: rldicl 4, 4, 8, 56 12388; PWR5-NEXT: subfe 3, 5, 5 12389; PWR5-NEXT: subfic 4, 4, 3 12390; PWR5-NEXT: subfe 4, 5, 5 12391; PWR5-NEXT: blr 12392; 12393; PWR6-LABEL: ugt_3_v2i64: 12394; PWR6: # %bb.0: 12395; PWR6-NEXT: lis 5, 21845 12396; PWR6-NEXT: lis 6, 13107 12397; PWR6-NEXT: ori 5, 5, 21845 12398; PWR6-NEXT: rotldi 8, 4, 63 12399; PWR6-NEXT: rotldi 9, 3, 63 12400; PWR6-NEXT: rldimi 5, 5, 32, 0 12401; PWR6-NEXT: and 8, 8, 5 12402; PWR6-NEXT: and 5, 9, 5 12403; PWR6-NEXT: ori 6, 6, 13107 12404; PWR6-NEXT: sub 3, 3, 5 12405; PWR6-NEXT: rldimi 6, 6, 32, 0 12406; PWR6-NEXT: sub 4, 4, 8 12407; PWR6-NEXT: and 8, 3, 6 12408; PWR6-NEXT: rotldi 3, 3, 62 12409; PWR6-NEXT: and 3, 3, 6 12410; PWR6-NEXT: lis 7, 3855 12411; PWR6-NEXT: and 5, 4, 6 12412; PWR6-NEXT: rotldi 4, 4, 62 12413; PWR6-NEXT: add 3, 8, 3 12414; PWR6-NEXT: lis 9, 257 12415; PWR6-NEXT: ori 7, 7, 3855 12416; PWR6-NEXT: and 4, 4, 6 12417; PWR6-NEXT: rldicl 6, 3, 60, 4 12418; PWR6-NEXT: ori 9, 9, 257 12419; PWR6-NEXT: rldimi 7, 7, 32, 0 12420; PWR6-NEXT: add 4, 5, 4 12421; PWR6-NEXT: add 3, 3, 6 12422; PWR6-NEXT: rldimi 9, 9, 32, 0 12423; PWR6-NEXT: rldicl 5, 4, 60, 4 12424; PWR6-NEXT: and 3, 3, 7 12425; PWR6-NEXT: add 4, 4, 5 12426; PWR6-NEXT: mulld 3, 3, 9 12427; PWR6-NEXT: and 4, 4, 7 12428; PWR6-NEXT: rldicl 3, 3, 8, 56 12429; PWR6-NEXT: mulld 4, 4, 9 12430; PWR6-NEXT: li 5, 3 12431; PWR6-NEXT: subfic 3, 3, 3 12432; PWR6-NEXT: rldicl 4, 4, 8, 56 12433; PWR6-NEXT: subfe 3, 5, 5 12434; PWR6-NEXT: subfic 4, 4, 3 12435; PWR6-NEXT: subfe 4, 5, 5 12436; PWR6-NEXT: blr 12437; 12438; PWR7-LABEL: ugt_3_v2i64: 12439; PWR7: # %bb.0: 12440; PWR7-NEXT: addi 3, 1, -32 12441; PWR7-NEXT: li 5, 0 12442; PWR7-NEXT: li 6, -1 12443; PWR7-NEXT: stxvd2x 34, 0, 3 12444; PWR7-NEXT: ld 3, -24(1) 12445; PWR7-NEXT: ld 4, -32(1) 12446; PWR7-NEXT: popcntd 3, 3 12447; PWR7-NEXT: popcntd 4, 4 12448; PWR7-NEXT: cmpldi 3, 3 12449; PWR7-NEXT: iselgt 3, 6, 5 12450; PWR7-NEXT: cmpldi 4, 3 12451; PWR7-NEXT: iselgt 4, 6, 5 12452; PWR7-NEXT: std 3, -8(1) 12453; PWR7-NEXT: addi 3, 1, -16 12454; PWR7-NEXT: std 4, -16(1) 12455; PWR7-NEXT: lxvd2x 34, 0, 3 12456; PWR7-NEXT: blr 12457; 12458; PWR8-LABEL: ugt_3_v2i64: 12459; PWR8: # %bb.0: 12460; PWR8-NEXT: addis 3, 2, .LCPI104_0@toc@ha 12461; PWR8-NEXT: vpopcntd 2, 2 12462; PWR8-NEXT: addi 3, 3, .LCPI104_0@toc@l 12463; PWR8-NEXT: lxvd2x 35, 0, 3 12464; PWR8-NEXT: vcmpgtud 2, 2, 3 12465; PWR8-NEXT: blr 12466; 12467; PWR9-LABEL: ugt_3_v2i64: 12468; PWR9: # %bb.0: 12469; PWR9-NEXT: addis 3, 2, .LCPI104_0@toc@ha 12470; PWR9-NEXT: vpopcntd 2, 2 12471; PWR9-NEXT: addi 3, 3, .LCPI104_0@toc@l 12472; PWR9-NEXT: lxvx 35, 0, 3 12473; PWR9-NEXT: vcmpgtud 2, 2, 3 12474; PWR9-NEXT: blr 12475 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12476 %3 = icmp ugt <2 x i64> %2, <i64 3, i64 3> 12477 %4 = sext <2 x i1> %3 to <2 x i64> 12478 ret <2 x i64> %4 12479} 12480 12481define <2 x i64> @ult_4_v2i64(<2 x i64> %0) { 12482; PWR5-LABEL: ult_4_v2i64: 12483; PWR5: # %bb.0: 12484; PWR5-NEXT: lis 5, 21845 12485; PWR5-NEXT: lis 6, 13107 12486; PWR5-NEXT: ori 5, 5, 21845 12487; PWR5-NEXT: rotldi 8, 4, 63 12488; PWR5-NEXT: rotldi 9, 3, 63 12489; PWR5-NEXT: rldimi 5, 5, 32, 0 12490; PWR5-NEXT: and 8, 8, 5 12491; PWR5-NEXT: and 5, 9, 5 12492; PWR5-NEXT: ori 6, 6, 13107 12493; PWR5-NEXT: sub 3, 3, 5 12494; PWR5-NEXT: rldimi 6, 6, 32, 0 12495; PWR5-NEXT: sub 4, 4, 8 12496; PWR5-NEXT: and 8, 3, 6 12497; PWR5-NEXT: rotldi 3, 3, 62 12498; PWR5-NEXT: and 3, 3, 6 12499; PWR5-NEXT: lis 7, 3855 12500; PWR5-NEXT: and 5, 4, 6 12501; PWR5-NEXT: rotldi 4, 4, 62 12502; PWR5-NEXT: add 3, 8, 3 12503; PWR5-NEXT: lis 9, 257 12504; PWR5-NEXT: ori 7, 7, 3855 12505; PWR5-NEXT: and 4, 4, 6 12506; PWR5-NEXT: rldicl 6, 3, 60, 4 12507; PWR5-NEXT: ori 9, 9, 257 12508; PWR5-NEXT: rldimi 7, 7, 32, 0 12509; PWR5-NEXT: add 4, 5, 4 12510; PWR5-NEXT: add 3, 3, 6 12511; PWR5-NEXT: rldimi 9, 9, 32, 0 12512; PWR5-NEXT: rldicl 5, 4, 60, 4 12513; PWR5-NEXT: and 3, 3, 7 12514; PWR5-NEXT: add 4, 4, 5 12515; PWR5-NEXT: mulld 3, 3, 9 12516; PWR5-NEXT: and 4, 4, 7 12517; PWR5-NEXT: rldicl 3, 3, 8, 56 12518; PWR5-NEXT: li 5, 4 12519; PWR5-NEXT: mulld 4, 4, 9 12520; PWR5-NEXT: subc 6, 3, 5 12521; PWR5-NEXT: rldicl 4, 4, 8, 56 12522; PWR5-NEXT: subfe 3, 3, 3 12523; PWR5-NEXT: subc 5, 4, 5 12524; PWR5-NEXT: subfe 4, 4, 4 12525; PWR5-NEXT: blr 12526; 12527; PWR6-LABEL: ult_4_v2i64: 12528; PWR6: # %bb.0: 12529; PWR6-NEXT: lis 5, 21845 12530; PWR6-NEXT: lis 6, 13107 12531; PWR6-NEXT: ori 5, 5, 21845 12532; PWR6-NEXT: rotldi 8, 4, 63 12533; PWR6-NEXT: rotldi 9, 3, 63 12534; PWR6-NEXT: rldimi 5, 5, 32, 0 12535; PWR6-NEXT: and 8, 8, 5 12536; PWR6-NEXT: and 5, 9, 5 12537; PWR6-NEXT: ori 6, 6, 13107 12538; PWR6-NEXT: sub 3, 3, 5 12539; PWR6-NEXT: rldimi 6, 6, 32, 0 12540; PWR6-NEXT: sub 4, 4, 8 12541; PWR6-NEXT: and 8, 3, 6 12542; PWR6-NEXT: rotldi 3, 3, 62 12543; PWR6-NEXT: and 3, 3, 6 12544; PWR6-NEXT: lis 7, 3855 12545; PWR6-NEXT: and 5, 4, 6 12546; PWR6-NEXT: rotldi 4, 4, 62 12547; PWR6-NEXT: add 3, 8, 3 12548; PWR6-NEXT: lis 9, 257 12549; PWR6-NEXT: ori 7, 7, 3855 12550; PWR6-NEXT: and 4, 4, 6 12551; PWR6-NEXT: rldicl 6, 3, 60, 4 12552; PWR6-NEXT: ori 9, 9, 257 12553; PWR6-NEXT: rldimi 7, 7, 32, 0 12554; PWR6-NEXT: add 4, 5, 4 12555; PWR6-NEXT: add 3, 3, 6 12556; PWR6-NEXT: rldimi 9, 9, 32, 0 12557; PWR6-NEXT: rldicl 5, 4, 60, 4 12558; PWR6-NEXT: and 3, 3, 7 12559; PWR6-NEXT: add 4, 4, 5 12560; PWR6-NEXT: mulld 3, 3, 9 12561; PWR6-NEXT: and 4, 4, 7 12562; PWR6-NEXT: rldicl 3, 3, 8, 56 12563; PWR6-NEXT: li 5, 4 12564; PWR6-NEXT: mulld 4, 4, 9 12565; PWR6-NEXT: subc 6, 3, 5 12566; PWR6-NEXT: rldicl 4, 4, 8, 56 12567; PWR6-NEXT: subfe 3, 3, 3 12568; PWR6-NEXT: subc 5, 4, 5 12569; PWR6-NEXT: subfe 4, 4, 4 12570; PWR6-NEXT: blr 12571; 12572; PWR7-LABEL: ult_4_v2i64: 12573; PWR7: # %bb.0: 12574; PWR7-NEXT: addi 3, 1, -32 12575; PWR7-NEXT: li 5, 0 12576; PWR7-NEXT: li 6, -1 12577; PWR7-NEXT: stxvd2x 34, 0, 3 12578; PWR7-NEXT: ld 3, -24(1) 12579; PWR7-NEXT: ld 4, -32(1) 12580; PWR7-NEXT: popcntd 3, 3 12581; PWR7-NEXT: popcntd 4, 4 12582; PWR7-NEXT: cmpldi 3, 4 12583; PWR7-NEXT: isellt 3, 6, 5 12584; PWR7-NEXT: cmpldi 4, 4 12585; PWR7-NEXT: isellt 4, 6, 5 12586; PWR7-NEXT: std 3, -8(1) 12587; PWR7-NEXT: addi 3, 1, -16 12588; PWR7-NEXT: std 4, -16(1) 12589; PWR7-NEXT: lxvd2x 34, 0, 3 12590; PWR7-NEXT: blr 12591; 12592; PWR8-LABEL: ult_4_v2i64: 12593; PWR8: # %bb.0: 12594; PWR8-NEXT: addis 3, 2, .LCPI105_0@toc@ha 12595; PWR8-NEXT: vpopcntd 2, 2 12596; PWR8-NEXT: addi 3, 3, .LCPI105_0@toc@l 12597; PWR8-NEXT: lxvd2x 35, 0, 3 12598; PWR8-NEXT: vcmpgtud 2, 3, 2 12599; PWR8-NEXT: blr 12600; 12601; PWR9-LABEL: ult_4_v2i64: 12602; PWR9: # %bb.0: 12603; PWR9-NEXT: addis 3, 2, .LCPI105_0@toc@ha 12604; PWR9-NEXT: vpopcntd 2, 2 12605; PWR9-NEXT: addi 3, 3, .LCPI105_0@toc@l 12606; PWR9-NEXT: lxvx 35, 0, 3 12607; PWR9-NEXT: vcmpgtud 2, 3, 2 12608; PWR9-NEXT: blr 12609 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12610 %3 = icmp ult <2 x i64> %2, <i64 4, i64 4> 12611 %4 = sext <2 x i1> %3 to <2 x i64> 12612 ret <2 x i64> %4 12613} 12614 12615define <2 x i64> @ugt_4_v2i64(<2 x i64> %0) { 12616; PWR5-LABEL: ugt_4_v2i64: 12617; PWR5: # %bb.0: 12618; PWR5-NEXT: lis 5, 21845 12619; PWR5-NEXT: lis 6, 13107 12620; PWR5-NEXT: ori 5, 5, 21845 12621; PWR5-NEXT: rotldi 8, 4, 63 12622; PWR5-NEXT: rotldi 9, 3, 63 12623; PWR5-NEXT: rldimi 5, 5, 32, 0 12624; PWR5-NEXT: and 8, 8, 5 12625; PWR5-NEXT: and 5, 9, 5 12626; PWR5-NEXT: ori 6, 6, 13107 12627; PWR5-NEXT: sub 3, 3, 5 12628; PWR5-NEXT: rldimi 6, 6, 32, 0 12629; PWR5-NEXT: sub 4, 4, 8 12630; PWR5-NEXT: and 8, 3, 6 12631; PWR5-NEXT: rotldi 3, 3, 62 12632; PWR5-NEXT: and 3, 3, 6 12633; PWR5-NEXT: lis 7, 3855 12634; PWR5-NEXT: and 5, 4, 6 12635; PWR5-NEXT: rotldi 4, 4, 62 12636; PWR5-NEXT: add 3, 8, 3 12637; PWR5-NEXT: lis 9, 257 12638; PWR5-NEXT: ori 7, 7, 3855 12639; PWR5-NEXT: and 4, 4, 6 12640; PWR5-NEXT: rldicl 6, 3, 60, 4 12641; PWR5-NEXT: ori 9, 9, 257 12642; PWR5-NEXT: rldimi 7, 7, 32, 0 12643; PWR5-NEXT: add 4, 5, 4 12644; PWR5-NEXT: add 3, 3, 6 12645; PWR5-NEXT: rldimi 9, 9, 32, 0 12646; PWR5-NEXT: rldicl 5, 4, 60, 4 12647; PWR5-NEXT: and 3, 3, 7 12648; PWR5-NEXT: add 4, 4, 5 12649; PWR5-NEXT: mulld 3, 3, 9 12650; PWR5-NEXT: and 4, 4, 7 12651; PWR5-NEXT: rldicl 3, 3, 8, 56 12652; PWR5-NEXT: mulld 4, 4, 9 12653; PWR5-NEXT: li 5, 4 12654; PWR5-NEXT: subfic 3, 3, 4 12655; PWR5-NEXT: rldicl 4, 4, 8, 56 12656; PWR5-NEXT: subfe 3, 5, 5 12657; PWR5-NEXT: subfic 4, 4, 4 12658; PWR5-NEXT: subfe 4, 5, 5 12659; PWR5-NEXT: blr 12660; 12661; PWR6-LABEL: ugt_4_v2i64: 12662; PWR6: # %bb.0: 12663; PWR6-NEXT: lis 5, 21845 12664; PWR6-NEXT: lis 6, 13107 12665; PWR6-NEXT: ori 5, 5, 21845 12666; PWR6-NEXT: rotldi 8, 4, 63 12667; PWR6-NEXT: rotldi 9, 3, 63 12668; PWR6-NEXT: rldimi 5, 5, 32, 0 12669; PWR6-NEXT: and 8, 8, 5 12670; PWR6-NEXT: and 5, 9, 5 12671; PWR6-NEXT: ori 6, 6, 13107 12672; PWR6-NEXT: sub 3, 3, 5 12673; PWR6-NEXT: rldimi 6, 6, 32, 0 12674; PWR6-NEXT: sub 4, 4, 8 12675; PWR6-NEXT: and 8, 3, 6 12676; PWR6-NEXT: rotldi 3, 3, 62 12677; PWR6-NEXT: and 3, 3, 6 12678; PWR6-NEXT: lis 7, 3855 12679; PWR6-NEXT: and 5, 4, 6 12680; PWR6-NEXT: rotldi 4, 4, 62 12681; PWR6-NEXT: add 3, 8, 3 12682; PWR6-NEXT: lis 9, 257 12683; PWR6-NEXT: ori 7, 7, 3855 12684; PWR6-NEXT: and 4, 4, 6 12685; PWR6-NEXT: rldicl 6, 3, 60, 4 12686; PWR6-NEXT: ori 9, 9, 257 12687; PWR6-NEXT: rldimi 7, 7, 32, 0 12688; PWR6-NEXT: add 4, 5, 4 12689; PWR6-NEXT: add 3, 3, 6 12690; PWR6-NEXT: rldimi 9, 9, 32, 0 12691; PWR6-NEXT: rldicl 5, 4, 60, 4 12692; PWR6-NEXT: and 3, 3, 7 12693; PWR6-NEXT: add 4, 4, 5 12694; PWR6-NEXT: mulld 3, 3, 9 12695; PWR6-NEXT: and 4, 4, 7 12696; PWR6-NEXT: rldicl 3, 3, 8, 56 12697; PWR6-NEXT: mulld 4, 4, 9 12698; PWR6-NEXT: li 5, 4 12699; PWR6-NEXT: subfic 3, 3, 4 12700; PWR6-NEXT: rldicl 4, 4, 8, 56 12701; PWR6-NEXT: subfe 3, 5, 5 12702; PWR6-NEXT: subfic 4, 4, 4 12703; PWR6-NEXT: subfe 4, 5, 5 12704; PWR6-NEXT: blr 12705; 12706; PWR7-LABEL: ugt_4_v2i64: 12707; PWR7: # %bb.0: 12708; PWR7-NEXT: addi 3, 1, -32 12709; PWR7-NEXT: li 5, 0 12710; PWR7-NEXT: li 6, -1 12711; PWR7-NEXT: stxvd2x 34, 0, 3 12712; PWR7-NEXT: ld 3, -24(1) 12713; PWR7-NEXT: ld 4, -32(1) 12714; PWR7-NEXT: popcntd 3, 3 12715; PWR7-NEXT: popcntd 4, 4 12716; PWR7-NEXT: cmpldi 3, 4 12717; PWR7-NEXT: iselgt 3, 6, 5 12718; PWR7-NEXT: cmpldi 4, 4 12719; PWR7-NEXT: iselgt 4, 6, 5 12720; PWR7-NEXT: std 3, -8(1) 12721; PWR7-NEXT: addi 3, 1, -16 12722; PWR7-NEXT: std 4, -16(1) 12723; PWR7-NEXT: lxvd2x 34, 0, 3 12724; PWR7-NEXT: blr 12725; 12726; PWR8-LABEL: ugt_4_v2i64: 12727; PWR8: # %bb.0: 12728; PWR8-NEXT: addis 3, 2, .LCPI106_0@toc@ha 12729; PWR8-NEXT: vpopcntd 2, 2 12730; PWR8-NEXT: addi 3, 3, .LCPI106_0@toc@l 12731; PWR8-NEXT: lxvd2x 35, 0, 3 12732; PWR8-NEXT: vcmpgtud 2, 2, 3 12733; PWR8-NEXT: blr 12734; 12735; PWR9-LABEL: ugt_4_v2i64: 12736; PWR9: # %bb.0: 12737; PWR9-NEXT: addis 3, 2, .LCPI106_0@toc@ha 12738; PWR9-NEXT: vpopcntd 2, 2 12739; PWR9-NEXT: addi 3, 3, .LCPI106_0@toc@l 12740; PWR9-NEXT: lxvx 35, 0, 3 12741; PWR9-NEXT: vcmpgtud 2, 2, 3 12742; PWR9-NEXT: blr 12743 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12744 %3 = icmp ugt <2 x i64> %2, <i64 4, i64 4> 12745 %4 = sext <2 x i1> %3 to <2 x i64> 12746 ret <2 x i64> %4 12747} 12748 12749define <2 x i64> @ult_5_v2i64(<2 x i64> %0) { 12750; PWR5-LABEL: ult_5_v2i64: 12751; PWR5: # %bb.0: 12752; PWR5-NEXT: lis 5, 21845 12753; PWR5-NEXT: lis 6, 13107 12754; PWR5-NEXT: ori 5, 5, 21845 12755; PWR5-NEXT: rotldi 8, 4, 63 12756; PWR5-NEXT: rotldi 9, 3, 63 12757; PWR5-NEXT: rldimi 5, 5, 32, 0 12758; PWR5-NEXT: and 8, 8, 5 12759; PWR5-NEXT: and 5, 9, 5 12760; PWR5-NEXT: ori 6, 6, 13107 12761; PWR5-NEXT: sub 3, 3, 5 12762; PWR5-NEXT: rldimi 6, 6, 32, 0 12763; PWR5-NEXT: sub 4, 4, 8 12764; PWR5-NEXT: and 8, 3, 6 12765; PWR5-NEXT: rotldi 3, 3, 62 12766; PWR5-NEXT: and 3, 3, 6 12767; PWR5-NEXT: lis 7, 3855 12768; PWR5-NEXT: and 5, 4, 6 12769; PWR5-NEXT: rotldi 4, 4, 62 12770; PWR5-NEXT: add 3, 8, 3 12771; PWR5-NEXT: lis 9, 257 12772; PWR5-NEXT: ori 7, 7, 3855 12773; PWR5-NEXT: and 4, 4, 6 12774; PWR5-NEXT: rldicl 6, 3, 60, 4 12775; PWR5-NEXT: ori 9, 9, 257 12776; PWR5-NEXT: rldimi 7, 7, 32, 0 12777; PWR5-NEXT: add 4, 5, 4 12778; PWR5-NEXT: add 3, 3, 6 12779; PWR5-NEXT: rldimi 9, 9, 32, 0 12780; PWR5-NEXT: rldicl 5, 4, 60, 4 12781; PWR5-NEXT: and 3, 3, 7 12782; PWR5-NEXT: add 4, 4, 5 12783; PWR5-NEXT: mulld 3, 3, 9 12784; PWR5-NEXT: and 4, 4, 7 12785; PWR5-NEXT: rldicl 3, 3, 8, 56 12786; PWR5-NEXT: li 5, 5 12787; PWR5-NEXT: mulld 4, 4, 9 12788; PWR5-NEXT: subc 6, 3, 5 12789; PWR5-NEXT: rldicl 4, 4, 8, 56 12790; PWR5-NEXT: subfe 3, 3, 3 12791; PWR5-NEXT: subc 5, 4, 5 12792; PWR5-NEXT: subfe 4, 4, 4 12793; PWR5-NEXT: blr 12794; 12795; PWR6-LABEL: ult_5_v2i64: 12796; PWR6: # %bb.0: 12797; PWR6-NEXT: lis 5, 21845 12798; PWR6-NEXT: lis 6, 13107 12799; PWR6-NEXT: ori 5, 5, 21845 12800; PWR6-NEXT: rotldi 8, 4, 63 12801; PWR6-NEXT: rotldi 9, 3, 63 12802; PWR6-NEXT: rldimi 5, 5, 32, 0 12803; PWR6-NEXT: and 8, 8, 5 12804; PWR6-NEXT: and 5, 9, 5 12805; PWR6-NEXT: ori 6, 6, 13107 12806; PWR6-NEXT: sub 3, 3, 5 12807; PWR6-NEXT: rldimi 6, 6, 32, 0 12808; PWR6-NEXT: sub 4, 4, 8 12809; PWR6-NEXT: and 8, 3, 6 12810; PWR6-NEXT: rotldi 3, 3, 62 12811; PWR6-NEXT: and 3, 3, 6 12812; PWR6-NEXT: lis 7, 3855 12813; PWR6-NEXT: and 5, 4, 6 12814; PWR6-NEXT: rotldi 4, 4, 62 12815; PWR6-NEXT: add 3, 8, 3 12816; PWR6-NEXT: lis 9, 257 12817; PWR6-NEXT: ori 7, 7, 3855 12818; PWR6-NEXT: and 4, 4, 6 12819; PWR6-NEXT: rldicl 6, 3, 60, 4 12820; PWR6-NEXT: ori 9, 9, 257 12821; PWR6-NEXT: rldimi 7, 7, 32, 0 12822; PWR6-NEXT: add 4, 5, 4 12823; PWR6-NEXT: add 3, 3, 6 12824; PWR6-NEXT: rldimi 9, 9, 32, 0 12825; PWR6-NEXT: rldicl 5, 4, 60, 4 12826; PWR6-NEXT: and 3, 3, 7 12827; PWR6-NEXT: add 4, 4, 5 12828; PWR6-NEXT: mulld 3, 3, 9 12829; PWR6-NEXT: and 4, 4, 7 12830; PWR6-NEXT: rldicl 3, 3, 8, 56 12831; PWR6-NEXT: li 5, 5 12832; PWR6-NEXT: mulld 4, 4, 9 12833; PWR6-NEXT: subc 6, 3, 5 12834; PWR6-NEXT: rldicl 4, 4, 8, 56 12835; PWR6-NEXT: subfe 3, 3, 3 12836; PWR6-NEXT: subc 5, 4, 5 12837; PWR6-NEXT: subfe 4, 4, 4 12838; PWR6-NEXT: blr 12839; 12840; PWR7-LABEL: ult_5_v2i64: 12841; PWR7: # %bb.0: 12842; PWR7-NEXT: addi 3, 1, -32 12843; PWR7-NEXT: li 5, 0 12844; PWR7-NEXT: li 6, -1 12845; PWR7-NEXT: stxvd2x 34, 0, 3 12846; PWR7-NEXT: ld 3, -24(1) 12847; PWR7-NEXT: ld 4, -32(1) 12848; PWR7-NEXT: popcntd 3, 3 12849; PWR7-NEXT: popcntd 4, 4 12850; PWR7-NEXT: cmpldi 3, 5 12851; PWR7-NEXT: isellt 3, 6, 5 12852; PWR7-NEXT: cmpldi 4, 5 12853; PWR7-NEXT: isellt 4, 6, 5 12854; PWR7-NEXT: std 3, -8(1) 12855; PWR7-NEXT: addi 3, 1, -16 12856; PWR7-NEXT: std 4, -16(1) 12857; PWR7-NEXT: lxvd2x 34, 0, 3 12858; PWR7-NEXT: blr 12859; 12860; PWR8-LABEL: ult_5_v2i64: 12861; PWR8: # %bb.0: 12862; PWR8-NEXT: addis 3, 2, .LCPI107_0@toc@ha 12863; PWR8-NEXT: vpopcntd 2, 2 12864; PWR8-NEXT: addi 3, 3, .LCPI107_0@toc@l 12865; PWR8-NEXT: lxvd2x 35, 0, 3 12866; PWR8-NEXT: vcmpgtud 2, 3, 2 12867; PWR8-NEXT: blr 12868; 12869; PWR9-LABEL: ult_5_v2i64: 12870; PWR9: # %bb.0: 12871; PWR9-NEXT: addis 3, 2, .LCPI107_0@toc@ha 12872; PWR9-NEXT: vpopcntd 2, 2 12873; PWR9-NEXT: addi 3, 3, .LCPI107_0@toc@l 12874; PWR9-NEXT: lxvx 35, 0, 3 12875; PWR9-NEXT: vcmpgtud 2, 3, 2 12876; PWR9-NEXT: blr 12877 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12878 %3 = icmp ult <2 x i64> %2, <i64 5, i64 5> 12879 %4 = sext <2 x i1> %3 to <2 x i64> 12880 ret <2 x i64> %4 12881} 12882 12883define <2 x i64> @ugt_5_v2i64(<2 x i64> %0) { 12884; PWR5-LABEL: ugt_5_v2i64: 12885; PWR5: # %bb.0: 12886; PWR5-NEXT: lis 5, 21845 12887; PWR5-NEXT: lis 6, 13107 12888; PWR5-NEXT: ori 5, 5, 21845 12889; PWR5-NEXT: rotldi 8, 4, 63 12890; PWR5-NEXT: rotldi 9, 3, 63 12891; PWR5-NEXT: rldimi 5, 5, 32, 0 12892; PWR5-NEXT: and 8, 8, 5 12893; PWR5-NEXT: and 5, 9, 5 12894; PWR5-NEXT: ori 6, 6, 13107 12895; PWR5-NEXT: sub 3, 3, 5 12896; PWR5-NEXT: rldimi 6, 6, 32, 0 12897; PWR5-NEXT: sub 4, 4, 8 12898; PWR5-NEXT: and 8, 3, 6 12899; PWR5-NEXT: rotldi 3, 3, 62 12900; PWR5-NEXT: and 3, 3, 6 12901; PWR5-NEXT: lis 7, 3855 12902; PWR5-NEXT: and 5, 4, 6 12903; PWR5-NEXT: rotldi 4, 4, 62 12904; PWR5-NEXT: add 3, 8, 3 12905; PWR5-NEXT: lis 9, 257 12906; PWR5-NEXT: ori 7, 7, 3855 12907; PWR5-NEXT: and 4, 4, 6 12908; PWR5-NEXT: rldicl 6, 3, 60, 4 12909; PWR5-NEXT: ori 9, 9, 257 12910; PWR5-NEXT: rldimi 7, 7, 32, 0 12911; PWR5-NEXT: add 4, 5, 4 12912; PWR5-NEXT: add 3, 3, 6 12913; PWR5-NEXT: rldimi 9, 9, 32, 0 12914; PWR5-NEXT: rldicl 5, 4, 60, 4 12915; PWR5-NEXT: and 3, 3, 7 12916; PWR5-NEXT: add 4, 4, 5 12917; PWR5-NEXT: mulld 3, 3, 9 12918; PWR5-NEXT: and 4, 4, 7 12919; PWR5-NEXT: rldicl 3, 3, 8, 56 12920; PWR5-NEXT: mulld 4, 4, 9 12921; PWR5-NEXT: li 5, 5 12922; PWR5-NEXT: subfic 3, 3, 5 12923; PWR5-NEXT: rldicl 4, 4, 8, 56 12924; PWR5-NEXT: subfe 3, 5, 5 12925; PWR5-NEXT: subfic 4, 4, 5 12926; PWR5-NEXT: subfe 4, 5, 5 12927; PWR5-NEXT: blr 12928; 12929; PWR6-LABEL: ugt_5_v2i64: 12930; PWR6: # %bb.0: 12931; PWR6-NEXT: lis 5, 21845 12932; PWR6-NEXT: lis 6, 13107 12933; PWR6-NEXT: ori 5, 5, 21845 12934; PWR6-NEXT: rotldi 8, 4, 63 12935; PWR6-NEXT: rotldi 9, 3, 63 12936; PWR6-NEXT: rldimi 5, 5, 32, 0 12937; PWR6-NEXT: and 8, 8, 5 12938; PWR6-NEXT: and 5, 9, 5 12939; PWR6-NEXT: ori 6, 6, 13107 12940; PWR6-NEXT: sub 3, 3, 5 12941; PWR6-NEXT: rldimi 6, 6, 32, 0 12942; PWR6-NEXT: sub 4, 4, 8 12943; PWR6-NEXT: and 8, 3, 6 12944; PWR6-NEXT: rotldi 3, 3, 62 12945; PWR6-NEXT: and 3, 3, 6 12946; PWR6-NEXT: lis 7, 3855 12947; PWR6-NEXT: and 5, 4, 6 12948; PWR6-NEXT: rotldi 4, 4, 62 12949; PWR6-NEXT: add 3, 8, 3 12950; PWR6-NEXT: lis 9, 257 12951; PWR6-NEXT: ori 7, 7, 3855 12952; PWR6-NEXT: and 4, 4, 6 12953; PWR6-NEXT: rldicl 6, 3, 60, 4 12954; PWR6-NEXT: ori 9, 9, 257 12955; PWR6-NEXT: rldimi 7, 7, 32, 0 12956; PWR6-NEXT: add 4, 5, 4 12957; PWR6-NEXT: add 3, 3, 6 12958; PWR6-NEXT: rldimi 9, 9, 32, 0 12959; PWR6-NEXT: rldicl 5, 4, 60, 4 12960; PWR6-NEXT: and 3, 3, 7 12961; PWR6-NEXT: add 4, 4, 5 12962; PWR6-NEXT: mulld 3, 3, 9 12963; PWR6-NEXT: and 4, 4, 7 12964; PWR6-NEXT: rldicl 3, 3, 8, 56 12965; PWR6-NEXT: mulld 4, 4, 9 12966; PWR6-NEXT: li 5, 5 12967; PWR6-NEXT: subfic 3, 3, 5 12968; PWR6-NEXT: rldicl 4, 4, 8, 56 12969; PWR6-NEXT: subfe 3, 5, 5 12970; PWR6-NEXT: subfic 4, 4, 5 12971; PWR6-NEXT: subfe 4, 5, 5 12972; PWR6-NEXT: blr 12973; 12974; PWR7-LABEL: ugt_5_v2i64: 12975; PWR7: # %bb.0: 12976; PWR7-NEXT: addi 3, 1, -32 12977; PWR7-NEXT: li 5, 0 12978; PWR7-NEXT: li 6, -1 12979; PWR7-NEXT: stxvd2x 34, 0, 3 12980; PWR7-NEXT: ld 3, -24(1) 12981; PWR7-NEXT: ld 4, -32(1) 12982; PWR7-NEXT: popcntd 3, 3 12983; PWR7-NEXT: popcntd 4, 4 12984; PWR7-NEXT: cmpldi 3, 5 12985; PWR7-NEXT: iselgt 3, 6, 5 12986; PWR7-NEXT: cmpldi 4, 5 12987; PWR7-NEXT: iselgt 4, 6, 5 12988; PWR7-NEXT: std 3, -8(1) 12989; PWR7-NEXT: addi 3, 1, -16 12990; PWR7-NEXT: std 4, -16(1) 12991; PWR7-NEXT: lxvd2x 34, 0, 3 12992; PWR7-NEXT: blr 12993; 12994; PWR8-LABEL: ugt_5_v2i64: 12995; PWR8: # %bb.0: 12996; PWR8-NEXT: addis 3, 2, .LCPI108_0@toc@ha 12997; PWR8-NEXT: vpopcntd 2, 2 12998; PWR8-NEXT: addi 3, 3, .LCPI108_0@toc@l 12999; PWR8-NEXT: lxvd2x 35, 0, 3 13000; PWR8-NEXT: vcmpgtud 2, 2, 3 13001; PWR8-NEXT: blr 13002; 13003; PWR9-LABEL: ugt_5_v2i64: 13004; PWR9: # %bb.0: 13005; PWR9-NEXT: addis 3, 2, .LCPI108_0@toc@ha 13006; PWR9-NEXT: vpopcntd 2, 2 13007; PWR9-NEXT: addi 3, 3, .LCPI108_0@toc@l 13008; PWR9-NEXT: lxvx 35, 0, 3 13009; PWR9-NEXT: vcmpgtud 2, 2, 3 13010; PWR9-NEXT: blr 13011 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13012 %3 = icmp ugt <2 x i64> %2, <i64 5, i64 5> 13013 %4 = sext <2 x i1> %3 to <2 x i64> 13014 ret <2 x i64> %4 13015} 13016 13017define <2 x i64> @ult_6_v2i64(<2 x i64> %0) { 13018; PWR5-LABEL: ult_6_v2i64: 13019; PWR5: # %bb.0: 13020; PWR5-NEXT: lis 5, 21845 13021; PWR5-NEXT: lis 6, 13107 13022; PWR5-NEXT: ori 5, 5, 21845 13023; PWR5-NEXT: rotldi 8, 4, 63 13024; PWR5-NEXT: rotldi 9, 3, 63 13025; PWR5-NEXT: rldimi 5, 5, 32, 0 13026; PWR5-NEXT: and 8, 8, 5 13027; PWR5-NEXT: and 5, 9, 5 13028; PWR5-NEXT: ori 6, 6, 13107 13029; PWR5-NEXT: sub 3, 3, 5 13030; PWR5-NEXT: rldimi 6, 6, 32, 0 13031; PWR5-NEXT: sub 4, 4, 8 13032; PWR5-NEXT: and 8, 3, 6 13033; PWR5-NEXT: rotldi 3, 3, 62 13034; PWR5-NEXT: and 3, 3, 6 13035; PWR5-NEXT: lis 7, 3855 13036; PWR5-NEXT: and 5, 4, 6 13037; PWR5-NEXT: rotldi 4, 4, 62 13038; PWR5-NEXT: add 3, 8, 3 13039; PWR5-NEXT: lis 9, 257 13040; PWR5-NEXT: ori 7, 7, 3855 13041; PWR5-NEXT: and 4, 4, 6 13042; PWR5-NEXT: rldicl 6, 3, 60, 4 13043; PWR5-NEXT: ori 9, 9, 257 13044; PWR5-NEXT: rldimi 7, 7, 32, 0 13045; PWR5-NEXT: add 4, 5, 4 13046; PWR5-NEXT: add 3, 3, 6 13047; PWR5-NEXT: rldimi 9, 9, 32, 0 13048; PWR5-NEXT: rldicl 5, 4, 60, 4 13049; PWR5-NEXT: and 3, 3, 7 13050; PWR5-NEXT: add 4, 4, 5 13051; PWR5-NEXT: mulld 3, 3, 9 13052; PWR5-NEXT: and 4, 4, 7 13053; PWR5-NEXT: rldicl 3, 3, 8, 56 13054; PWR5-NEXT: li 5, 6 13055; PWR5-NEXT: mulld 4, 4, 9 13056; PWR5-NEXT: subc 6, 3, 5 13057; PWR5-NEXT: rldicl 4, 4, 8, 56 13058; PWR5-NEXT: subfe 3, 3, 3 13059; PWR5-NEXT: subc 5, 4, 5 13060; PWR5-NEXT: subfe 4, 4, 4 13061; PWR5-NEXT: blr 13062; 13063; PWR6-LABEL: ult_6_v2i64: 13064; PWR6: # %bb.0: 13065; PWR6-NEXT: lis 5, 21845 13066; PWR6-NEXT: lis 6, 13107 13067; PWR6-NEXT: ori 5, 5, 21845 13068; PWR6-NEXT: rotldi 8, 4, 63 13069; PWR6-NEXT: rotldi 9, 3, 63 13070; PWR6-NEXT: rldimi 5, 5, 32, 0 13071; PWR6-NEXT: and 8, 8, 5 13072; PWR6-NEXT: and 5, 9, 5 13073; PWR6-NEXT: ori 6, 6, 13107 13074; PWR6-NEXT: sub 3, 3, 5 13075; PWR6-NEXT: rldimi 6, 6, 32, 0 13076; PWR6-NEXT: sub 4, 4, 8 13077; PWR6-NEXT: and 8, 3, 6 13078; PWR6-NEXT: rotldi 3, 3, 62 13079; PWR6-NEXT: and 3, 3, 6 13080; PWR6-NEXT: lis 7, 3855 13081; PWR6-NEXT: and 5, 4, 6 13082; PWR6-NEXT: rotldi 4, 4, 62 13083; PWR6-NEXT: add 3, 8, 3 13084; PWR6-NEXT: lis 9, 257 13085; PWR6-NEXT: ori 7, 7, 3855 13086; PWR6-NEXT: and 4, 4, 6 13087; PWR6-NEXT: rldicl 6, 3, 60, 4 13088; PWR6-NEXT: ori 9, 9, 257 13089; PWR6-NEXT: rldimi 7, 7, 32, 0 13090; PWR6-NEXT: add 4, 5, 4 13091; PWR6-NEXT: add 3, 3, 6 13092; PWR6-NEXT: rldimi 9, 9, 32, 0 13093; PWR6-NEXT: rldicl 5, 4, 60, 4 13094; PWR6-NEXT: and 3, 3, 7 13095; PWR6-NEXT: add 4, 4, 5 13096; PWR6-NEXT: mulld 3, 3, 9 13097; PWR6-NEXT: and 4, 4, 7 13098; PWR6-NEXT: rldicl 3, 3, 8, 56 13099; PWR6-NEXT: li 5, 6 13100; PWR6-NEXT: mulld 4, 4, 9 13101; PWR6-NEXT: subc 6, 3, 5 13102; PWR6-NEXT: rldicl 4, 4, 8, 56 13103; PWR6-NEXT: subfe 3, 3, 3 13104; PWR6-NEXT: subc 5, 4, 5 13105; PWR6-NEXT: subfe 4, 4, 4 13106; PWR6-NEXT: blr 13107; 13108; PWR7-LABEL: ult_6_v2i64: 13109; PWR7: # %bb.0: 13110; PWR7-NEXT: addi 3, 1, -32 13111; PWR7-NEXT: li 5, 0 13112; PWR7-NEXT: li 6, -1 13113; PWR7-NEXT: stxvd2x 34, 0, 3 13114; PWR7-NEXT: ld 3, -24(1) 13115; PWR7-NEXT: ld 4, -32(1) 13116; PWR7-NEXT: popcntd 3, 3 13117; PWR7-NEXT: popcntd 4, 4 13118; PWR7-NEXT: cmpldi 3, 6 13119; PWR7-NEXT: isellt 3, 6, 5 13120; PWR7-NEXT: cmpldi 4, 6 13121; PWR7-NEXT: isellt 4, 6, 5 13122; PWR7-NEXT: std 3, -8(1) 13123; PWR7-NEXT: addi 3, 1, -16 13124; PWR7-NEXT: std 4, -16(1) 13125; PWR7-NEXT: lxvd2x 34, 0, 3 13126; PWR7-NEXT: blr 13127; 13128; PWR8-LABEL: ult_6_v2i64: 13129; PWR8: # %bb.0: 13130; PWR8-NEXT: addis 3, 2, .LCPI109_0@toc@ha 13131; PWR8-NEXT: vpopcntd 2, 2 13132; PWR8-NEXT: addi 3, 3, .LCPI109_0@toc@l 13133; PWR8-NEXT: lxvd2x 35, 0, 3 13134; PWR8-NEXT: vcmpgtud 2, 3, 2 13135; PWR8-NEXT: blr 13136; 13137; PWR9-LABEL: ult_6_v2i64: 13138; PWR9: # %bb.0: 13139; PWR9-NEXT: addis 3, 2, .LCPI109_0@toc@ha 13140; PWR9-NEXT: vpopcntd 2, 2 13141; PWR9-NEXT: addi 3, 3, .LCPI109_0@toc@l 13142; PWR9-NEXT: lxvx 35, 0, 3 13143; PWR9-NEXT: vcmpgtud 2, 3, 2 13144; PWR9-NEXT: blr 13145 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13146 %3 = icmp ult <2 x i64> %2, <i64 6, i64 6> 13147 %4 = sext <2 x i1> %3 to <2 x i64> 13148 ret <2 x i64> %4 13149} 13150 13151define <2 x i64> @ugt_6_v2i64(<2 x i64> %0) { 13152; PWR5-LABEL: ugt_6_v2i64: 13153; PWR5: # %bb.0: 13154; PWR5-NEXT: lis 5, 21845 13155; PWR5-NEXT: lis 6, 13107 13156; PWR5-NEXT: ori 5, 5, 21845 13157; PWR5-NEXT: rotldi 8, 4, 63 13158; PWR5-NEXT: rotldi 9, 3, 63 13159; PWR5-NEXT: rldimi 5, 5, 32, 0 13160; PWR5-NEXT: and 8, 8, 5 13161; PWR5-NEXT: and 5, 9, 5 13162; PWR5-NEXT: ori 6, 6, 13107 13163; PWR5-NEXT: sub 3, 3, 5 13164; PWR5-NEXT: rldimi 6, 6, 32, 0 13165; PWR5-NEXT: sub 4, 4, 8 13166; PWR5-NEXT: and 8, 3, 6 13167; PWR5-NEXT: rotldi 3, 3, 62 13168; PWR5-NEXT: and 3, 3, 6 13169; PWR5-NEXT: lis 7, 3855 13170; PWR5-NEXT: and 5, 4, 6 13171; PWR5-NEXT: rotldi 4, 4, 62 13172; PWR5-NEXT: add 3, 8, 3 13173; PWR5-NEXT: lis 9, 257 13174; PWR5-NEXT: ori 7, 7, 3855 13175; PWR5-NEXT: and 4, 4, 6 13176; PWR5-NEXT: rldicl 6, 3, 60, 4 13177; PWR5-NEXT: ori 9, 9, 257 13178; PWR5-NEXT: rldimi 7, 7, 32, 0 13179; PWR5-NEXT: add 4, 5, 4 13180; PWR5-NEXT: add 3, 3, 6 13181; PWR5-NEXT: rldimi 9, 9, 32, 0 13182; PWR5-NEXT: rldicl 5, 4, 60, 4 13183; PWR5-NEXT: and 3, 3, 7 13184; PWR5-NEXT: add 4, 4, 5 13185; PWR5-NEXT: mulld 3, 3, 9 13186; PWR5-NEXT: and 4, 4, 7 13187; PWR5-NEXT: rldicl 3, 3, 8, 56 13188; PWR5-NEXT: mulld 4, 4, 9 13189; PWR5-NEXT: li 5, 6 13190; PWR5-NEXT: subfic 3, 3, 6 13191; PWR5-NEXT: rldicl 4, 4, 8, 56 13192; PWR5-NEXT: subfe 3, 5, 5 13193; PWR5-NEXT: subfic 4, 4, 6 13194; PWR5-NEXT: subfe 4, 5, 5 13195; PWR5-NEXT: blr 13196; 13197; PWR6-LABEL: ugt_6_v2i64: 13198; PWR6: # %bb.0: 13199; PWR6-NEXT: lis 5, 21845 13200; PWR6-NEXT: lis 6, 13107 13201; PWR6-NEXT: ori 5, 5, 21845 13202; PWR6-NEXT: rotldi 8, 4, 63 13203; PWR6-NEXT: rotldi 9, 3, 63 13204; PWR6-NEXT: rldimi 5, 5, 32, 0 13205; PWR6-NEXT: and 8, 8, 5 13206; PWR6-NEXT: and 5, 9, 5 13207; PWR6-NEXT: ori 6, 6, 13107 13208; PWR6-NEXT: sub 3, 3, 5 13209; PWR6-NEXT: rldimi 6, 6, 32, 0 13210; PWR6-NEXT: sub 4, 4, 8 13211; PWR6-NEXT: and 8, 3, 6 13212; PWR6-NEXT: rotldi 3, 3, 62 13213; PWR6-NEXT: and 3, 3, 6 13214; PWR6-NEXT: lis 7, 3855 13215; PWR6-NEXT: and 5, 4, 6 13216; PWR6-NEXT: rotldi 4, 4, 62 13217; PWR6-NEXT: add 3, 8, 3 13218; PWR6-NEXT: lis 9, 257 13219; PWR6-NEXT: ori 7, 7, 3855 13220; PWR6-NEXT: and 4, 4, 6 13221; PWR6-NEXT: rldicl 6, 3, 60, 4 13222; PWR6-NEXT: ori 9, 9, 257 13223; PWR6-NEXT: rldimi 7, 7, 32, 0 13224; PWR6-NEXT: add 4, 5, 4 13225; PWR6-NEXT: add 3, 3, 6 13226; PWR6-NEXT: rldimi 9, 9, 32, 0 13227; PWR6-NEXT: rldicl 5, 4, 60, 4 13228; PWR6-NEXT: and 3, 3, 7 13229; PWR6-NEXT: add 4, 4, 5 13230; PWR6-NEXT: mulld 3, 3, 9 13231; PWR6-NEXT: and 4, 4, 7 13232; PWR6-NEXT: rldicl 3, 3, 8, 56 13233; PWR6-NEXT: mulld 4, 4, 9 13234; PWR6-NEXT: li 5, 6 13235; PWR6-NEXT: subfic 3, 3, 6 13236; PWR6-NEXT: rldicl 4, 4, 8, 56 13237; PWR6-NEXT: subfe 3, 5, 5 13238; PWR6-NEXT: subfic 4, 4, 6 13239; PWR6-NEXT: subfe 4, 5, 5 13240; PWR6-NEXT: blr 13241; 13242; PWR7-LABEL: ugt_6_v2i64: 13243; PWR7: # %bb.0: 13244; PWR7-NEXT: addi 3, 1, -32 13245; PWR7-NEXT: li 5, 0 13246; PWR7-NEXT: li 6, -1 13247; PWR7-NEXT: stxvd2x 34, 0, 3 13248; PWR7-NEXT: ld 3, -24(1) 13249; PWR7-NEXT: ld 4, -32(1) 13250; PWR7-NEXT: popcntd 3, 3 13251; PWR7-NEXT: popcntd 4, 4 13252; PWR7-NEXT: cmpldi 3, 6 13253; PWR7-NEXT: iselgt 3, 6, 5 13254; PWR7-NEXT: cmpldi 4, 6 13255; PWR7-NEXT: iselgt 4, 6, 5 13256; PWR7-NEXT: std 3, -8(1) 13257; PWR7-NEXT: addi 3, 1, -16 13258; PWR7-NEXT: std 4, -16(1) 13259; PWR7-NEXT: lxvd2x 34, 0, 3 13260; PWR7-NEXT: blr 13261; 13262; PWR8-LABEL: ugt_6_v2i64: 13263; PWR8: # %bb.0: 13264; PWR8-NEXT: addis 3, 2, .LCPI110_0@toc@ha 13265; PWR8-NEXT: vpopcntd 2, 2 13266; PWR8-NEXT: addi 3, 3, .LCPI110_0@toc@l 13267; PWR8-NEXT: lxvd2x 35, 0, 3 13268; PWR8-NEXT: vcmpgtud 2, 2, 3 13269; PWR8-NEXT: blr 13270; 13271; PWR9-LABEL: ugt_6_v2i64: 13272; PWR9: # %bb.0: 13273; PWR9-NEXT: addis 3, 2, .LCPI110_0@toc@ha 13274; PWR9-NEXT: vpopcntd 2, 2 13275; PWR9-NEXT: addi 3, 3, .LCPI110_0@toc@l 13276; PWR9-NEXT: lxvx 35, 0, 3 13277; PWR9-NEXT: vcmpgtud 2, 2, 3 13278; PWR9-NEXT: blr 13279 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13280 %3 = icmp ugt <2 x i64> %2, <i64 6, i64 6> 13281 %4 = sext <2 x i1> %3 to <2 x i64> 13282 ret <2 x i64> %4 13283} 13284 13285define <2 x i64> @ult_7_v2i64(<2 x i64> %0) { 13286; PWR5-LABEL: ult_7_v2i64: 13287; PWR5: # %bb.0: 13288; PWR5-NEXT: lis 5, 21845 13289; PWR5-NEXT: lis 6, 13107 13290; PWR5-NEXT: ori 5, 5, 21845 13291; PWR5-NEXT: rotldi 8, 4, 63 13292; PWR5-NEXT: rotldi 9, 3, 63 13293; PWR5-NEXT: rldimi 5, 5, 32, 0 13294; PWR5-NEXT: and 8, 8, 5 13295; PWR5-NEXT: and 5, 9, 5 13296; PWR5-NEXT: ori 6, 6, 13107 13297; PWR5-NEXT: sub 3, 3, 5 13298; PWR5-NEXT: rldimi 6, 6, 32, 0 13299; PWR5-NEXT: sub 4, 4, 8 13300; PWR5-NEXT: and 8, 3, 6 13301; PWR5-NEXT: rotldi 3, 3, 62 13302; PWR5-NEXT: and 3, 3, 6 13303; PWR5-NEXT: lis 7, 3855 13304; PWR5-NEXT: and 5, 4, 6 13305; PWR5-NEXT: rotldi 4, 4, 62 13306; PWR5-NEXT: add 3, 8, 3 13307; PWR5-NEXT: lis 9, 257 13308; PWR5-NEXT: ori 7, 7, 3855 13309; PWR5-NEXT: and 4, 4, 6 13310; PWR5-NEXT: rldicl 6, 3, 60, 4 13311; PWR5-NEXT: ori 9, 9, 257 13312; PWR5-NEXT: rldimi 7, 7, 32, 0 13313; PWR5-NEXT: add 4, 5, 4 13314; PWR5-NEXT: add 3, 3, 6 13315; PWR5-NEXT: rldimi 9, 9, 32, 0 13316; PWR5-NEXT: rldicl 5, 4, 60, 4 13317; PWR5-NEXT: and 3, 3, 7 13318; PWR5-NEXT: add 4, 4, 5 13319; PWR5-NEXT: mulld 3, 3, 9 13320; PWR5-NEXT: and 4, 4, 7 13321; PWR5-NEXT: rldicl 3, 3, 8, 56 13322; PWR5-NEXT: li 5, 7 13323; PWR5-NEXT: mulld 4, 4, 9 13324; PWR5-NEXT: subc 6, 3, 5 13325; PWR5-NEXT: rldicl 4, 4, 8, 56 13326; PWR5-NEXT: subfe 3, 3, 3 13327; PWR5-NEXT: subc 5, 4, 5 13328; PWR5-NEXT: subfe 4, 4, 4 13329; PWR5-NEXT: blr 13330; 13331; PWR6-LABEL: ult_7_v2i64: 13332; PWR6: # %bb.0: 13333; PWR6-NEXT: lis 5, 21845 13334; PWR6-NEXT: lis 6, 13107 13335; PWR6-NEXT: ori 5, 5, 21845 13336; PWR6-NEXT: rotldi 8, 4, 63 13337; PWR6-NEXT: rotldi 9, 3, 63 13338; PWR6-NEXT: rldimi 5, 5, 32, 0 13339; PWR6-NEXT: and 8, 8, 5 13340; PWR6-NEXT: and 5, 9, 5 13341; PWR6-NEXT: ori 6, 6, 13107 13342; PWR6-NEXT: sub 3, 3, 5 13343; PWR6-NEXT: rldimi 6, 6, 32, 0 13344; PWR6-NEXT: sub 4, 4, 8 13345; PWR6-NEXT: and 8, 3, 6 13346; PWR6-NEXT: rotldi 3, 3, 62 13347; PWR6-NEXT: and 3, 3, 6 13348; PWR6-NEXT: lis 7, 3855 13349; PWR6-NEXT: and 5, 4, 6 13350; PWR6-NEXT: rotldi 4, 4, 62 13351; PWR6-NEXT: add 3, 8, 3 13352; PWR6-NEXT: lis 9, 257 13353; PWR6-NEXT: ori 7, 7, 3855 13354; PWR6-NEXT: and 4, 4, 6 13355; PWR6-NEXT: rldicl 6, 3, 60, 4 13356; PWR6-NEXT: ori 9, 9, 257 13357; PWR6-NEXT: rldimi 7, 7, 32, 0 13358; PWR6-NEXT: add 4, 5, 4 13359; PWR6-NEXT: add 3, 3, 6 13360; PWR6-NEXT: rldimi 9, 9, 32, 0 13361; PWR6-NEXT: rldicl 5, 4, 60, 4 13362; PWR6-NEXT: and 3, 3, 7 13363; PWR6-NEXT: add 4, 4, 5 13364; PWR6-NEXT: mulld 3, 3, 9 13365; PWR6-NEXT: and 4, 4, 7 13366; PWR6-NEXT: rldicl 3, 3, 8, 56 13367; PWR6-NEXT: li 5, 7 13368; PWR6-NEXT: mulld 4, 4, 9 13369; PWR6-NEXT: subc 6, 3, 5 13370; PWR6-NEXT: rldicl 4, 4, 8, 56 13371; PWR6-NEXT: subfe 3, 3, 3 13372; PWR6-NEXT: subc 5, 4, 5 13373; PWR6-NEXT: subfe 4, 4, 4 13374; PWR6-NEXT: blr 13375; 13376; PWR7-LABEL: ult_7_v2i64: 13377; PWR7: # %bb.0: 13378; PWR7-NEXT: addi 3, 1, -32 13379; PWR7-NEXT: li 5, 0 13380; PWR7-NEXT: li 6, -1 13381; PWR7-NEXT: stxvd2x 34, 0, 3 13382; PWR7-NEXT: ld 3, -24(1) 13383; PWR7-NEXT: ld 4, -32(1) 13384; PWR7-NEXT: popcntd 3, 3 13385; PWR7-NEXT: popcntd 4, 4 13386; PWR7-NEXT: cmpldi 3, 7 13387; PWR7-NEXT: isellt 3, 6, 5 13388; PWR7-NEXT: cmpldi 4, 7 13389; PWR7-NEXT: isellt 4, 6, 5 13390; PWR7-NEXT: std 3, -8(1) 13391; PWR7-NEXT: addi 3, 1, -16 13392; PWR7-NEXT: std 4, -16(1) 13393; PWR7-NEXT: lxvd2x 34, 0, 3 13394; PWR7-NEXT: blr 13395; 13396; PWR8-LABEL: ult_7_v2i64: 13397; PWR8: # %bb.0: 13398; PWR8-NEXT: addis 3, 2, .LCPI111_0@toc@ha 13399; PWR8-NEXT: vpopcntd 2, 2 13400; PWR8-NEXT: addi 3, 3, .LCPI111_0@toc@l 13401; PWR8-NEXT: lxvd2x 35, 0, 3 13402; PWR8-NEXT: vcmpgtud 2, 3, 2 13403; PWR8-NEXT: blr 13404; 13405; PWR9-LABEL: ult_7_v2i64: 13406; PWR9: # %bb.0: 13407; PWR9-NEXT: addis 3, 2, .LCPI111_0@toc@ha 13408; PWR9-NEXT: vpopcntd 2, 2 13409; PWR9-NEXT: addi 3, 3, .LCPI111_0@toc@l 13410; PWR9-NEXT: lxvx 35, 0, 3 13411; PWR9-NEXT: vcmpgtud 2, 3, 2 13412; PWR9-NEXT: blr 13413 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13414 %3 = icmp ult <2 x i64> %2, <i64 7, i64 7> 13415 %4 = sext <2 x i1> %3 to <2 x i64> 13416 ret <2 x i64> %4 13417} 13418 13419define <2 x i64> @ugt_7_v2i64(<2 x i64> %0) { 13420; PWR5-LABEL: ugt_7_v2i64: 13421; PWR5: # %bb.0: 13422; PWR5-NEXT: lis 5, 21845 13423; PWR5-NEXT: lis 6, 13107 13424; PWR5-NEXT: ori 5, 5, 21845 13425; PWR5-NEXT: rotldi 8, 4, 63 13426; PWR5-NEXT: rotldi 9, 3, 63 13427; PWR5-NEXT: rldimi 5, 5, 32, 0 13428; PWR5-NEXT: and 8, 8, 5 13429; PWR5-NEXT: and 5, 9, 5 13430; PWR5-NEXT: ori 6, 6, 13107 13431; PWR5-NEXT: sub 3, 3, 5 13432; PWR5-NEXT: rldimi 6, 6, 32, 0 13433; PWR5-NEXT: sub 4, 4, 8 13434; PWR5-NEXT: and 8, 3, 6 13435; PWR5-NEXT: rotldi 3, 3, 62 13436; PWR5-NEXT: and 3, 3, 6 13437; PWR5-NEXT: lis 7, 3855 13438; PWR5-NEXT: and 5, 4, 6 13439; PWR5-NEXT: rotldi 4, 4, 62 13440; PWR5-NEXT: add 3, 8, 3 13441; PWR5-NEXT: lis 9, 257 13442; PWR5-NEXT: ori 7, 7, 3855 13443; PWR5-NEXT: and 4, 4, 6 13444; PWR5-NEXT: rldicl 6, 3, 60, 4 13445; PWR5-NEXT: ori 9, 9, 257 13446; PWR5-NEXT: rldimi 7, 7, 32, 0 13447; PWR5-NEXT: add 4, 5, 4 13448; PWR5-NEXT: add 3, 3, 6 13449; PWR5-NEXT: rldimi 9, 9, 32, 0 13450; PWR5-NEXT: rldicl 5, 4, 60, 4 13451; PWR5-NEXT: and 3, 3, 7 13452; PWR5-NEXT: add 4, 4, 5 13453; PWR5-NEXT: mulld 3, 3, 9 13454; PWR5-NEXT: and 4, 4, 7 13455; PWR5-NEXT: rldicl 3, 3, 8, 56 13456; PWR5-NEXT: mulld 4, 4, 9 13457; PWR5-NEXT: li 5, 7 13458; PWR5-NEXT: subfic 3, 3, 7 13459; PWR5-NEXT: rldicl 4, 4, 8, 56 13460; PWR5-NEXT: subfe 3, 5, 5 13461; PWR5-NEXT: subfic 4, 4, 7 13462; PWR5-NEXT: subfe 4, 5, 5 13463; PWR5-NEXT: blr 13464; 13465; PWR6-LABEL: ugt_7_v2i64: 13466; PWR6: # %bb.0: 13467; PWR6-NEXT: lis 5, 21845 13468; PWR6-NEXT: lis 6, 13107 13469; PWR6-NEXT: ori 5, 5, 21845 13470; PWR6-NEXT: rotldi 8, 4, 63 13471; PWR6-NEXT: rotldi 9, 3, 63 13472; PWR6-NEXT: rldimi 5, 5, 32, 0 13473; PWR6-NEXT: and 8, 8, 5 13474; PWR6-NEXT: and 5, 9, 5 13475; PWR6-NEXT: ori 6, 6, 13107 13476; PWR6-NEXT: sub 3, 3, 5 13477; PWR6-NEXT: rldimi 6, 6, 32, 0 13478; PWR6-NEXT: sub 4, 4, 8 13479; PWR6-NEXT: and 8, 3, 6 13480; PWR6-NEXT: rotldi 3, 3, 62 13481; PWR6-NEXT: and 3, 3, 6 13482; PWR6-NEXT: lis 7, 3855 13483; PWR6-NEXT: and 5, 4, 6 13484; PWR6-NEXT: rotldi 4, 4, 62 13485; PWR6-NEXT: add 3, 8, 3 13486; PWR6-NEXT: lis 9, 257 13487; PWR6-NEXT: ori 7, 7, 3855 13488; PWR6-NEXT: and 4, 4, 6 13489; PWR6-NEXT: rldicl 6, 3, 60, 4 13490; PWR6-NEXT: ori 9, 9, 257 13491; PWR6-NEXT: rldimi 7, 7, 32, 0 13492; PWR6-NEXT: add 4, 5, 4 13493; PWR6-NEXT: add 3, 3, 6 13494; PWR6-NEXT: rldimi 9, 9, 32, 0 13495; PWR6-NEXT: rldicl 5, 4, 60, 4 13496; PWR6-NEXT: and 3, 3, 7 13497; PWR6-NEXT: add 4, 4, 5 13498; PWR6-NEXT: mulld 3, 3, 9 13499; PWR6-NEXT: and 4, 4, 7 13500; PWR6-NEXT: rldicl 3, 3, 8, 56 13501; PWR6-NEXT: mulld 4, 4, 9 13502; PWR6-NEXT: li 5, 7 13503; PWR6-NEXT: subfic 3, 3, 7 13504; PWR6-NEXT: rldicl 4, 4, 8, 56 13505; PWR6-NEXT: subfe 3, 5, 5 13506; PWR6-NEXT: subfic 4, 4, 7 13507; PWR6-NEXT: subfe 4, 5, 5 13508; PWR6-NEXT: blr 13509; 13510; PWR7-LABEL: ugt_7_v2i64: 13511; PWR7: # %bb.0: 13512; PWR7-NEXT: addi 3, 1, -32 13513; PWR7-NEXT: li 5, 0 13514; PWR7-NEXT: li 6, -1 13515; PWR7-NEXT: stxvd2x 34, 0, 3 13516; PWR7-NEXT: ld 3, -24(1) 13517; PWR7-NEXT: ld 4, -32(1) 13518; PWR7-NEXT: popcntd 3, 3 13519; PWR7-NEXT: popcntd 4, 4 13520; PWR7-NEXT: cmpldi 3, 7 13521; PWR7-NEXT: iselgt 3, 6, 5 13522; PWR7-NEXT: cmpldi 4, 7 13523; PWR7-NEXT: iselgt 4, 6, 5 13524; PWR7-NEXT: std 3, -8(1) 13525; PWR7-NEXT: addi 3, 1, -16 13526; PWR7-NEXT: std 4, -16(1) 13527; PWR7-NEXT: lxvd2x 34, 0, 3 13528; PWR7-NEXT: blr 13529; 13530; PWR8-LABEL: ugt_7_v2i64: 13531; PWR8: # %bb.0: 13532; PWR8-NEXT: addis 3, 2, .LCPI112_0@toc@ha 13533; PWR8-NEXT: vpopcntd 2, 2 13534; PWR8-NEXT: addi 3, 3, .LCPI112_0@toc@l 13535; PWR8-NEXT: lxvd2x 35, 0, 3 13536; PWR8-NEXT: vcmpgtud 2, 2, 3 13537; PWR8-NEXT: blr 13538; 13539; PWR9-LABEL: ugt_7_v2i64: 13540; PWR9: # %bb.0: 13541; PWR9-NEXT: addis 3, 2, .LCPI112_0@toc@ha 13542; PWR9-NEXT: vpopcntd 2, 2 13543; PWR9-NEXT: addi 3, 3, .LCPI112_0@toc@l 13544; PWR9-NEXT: lxvx 35, 0, 3 13545; PWR9-NEXT: vcmpgtud 2, 2, 3 13546; PWR9-NEXT: blr 13547 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13548 %3 = icmp ugt <2 x i64> %2, <i64 7, i64 7> 13549 %4 = sext <2 x i1> %3 to <2 x i64> 13550 ret <2 x i64> %4 13551} 13552 13553define <2 x i64> @ult_8_v2i64(<2 x i64> %0) { 13554; PWR5-LABEL: ult_8_v2i64: 13555; PWR5: # %bb.0: 13556; PWR5-NEXT: lis 5, 21845 13557; PWR5-NEXT: lis 6, 13107 13558; PWR5-NEXT: ori 5, 5, 21845 13559; PWR5-NEXT: rotldi 8, 4, 63 13560; PWR5-NEXT: rotldi 9, 3, 63 13561; PWR5-NEXT: rldimi 5, 5, 32, 0 13562; PWR5-NEXT: and 8, 8, 5 13563; PWR5-NEXT: and 5, 9, 5 13564; PWR5-NEXT: ori 6, 6, 13107 13565; PWR5-NEXT: sub 3, 3, 5 13566; PWR5-NEXT: rldimi 6, 6, 32, 0 13567; PWR5-NEXT: sub 4, 4, 8 13568; PWR5-NEXT: and 8, 3, 6 13569; PWR5-NEXT: rotldi 3, 3, 62 13570; PWR5-NEXT: and 3, 3, 6 13571; PWR5-NEXT: lis 7, 3855 13572; PWR5-NEXT: and 5, 4, 6 13573; PWR5-NEXT: rotldi 4, 4, 62 13574; PWR5-NEXT: add 3, 8, 3 13575; PWR5-NEXT: lis 9, 257 13576; PWR5-NEXT: ori 7, 7, 3855 13577; PWR5-NEXT: and 4, 4, 6 13578; PWR5-NEXT: rldicl 6, 3, 60, 4 13579; PWR5-NEXT: ori 9, 9, 257 13580; PWR5-NEXT: rldimi 7, 7, 32, 0 13581; PWR5-NEXT: add 4, 5, 4 13582; PWR5-NEXT: add 3, 3, 6 13583; PWR5-NEXT: rldimi 9, 9, 32, 0 13584; PWR5-NEXT: rldicl 5, 4, 60, 4 13585; PWR5-NEXT: and 3, 3, 7 13586; PWR5-NEXT: add 4, 4, 5 13587; PWR5-NEXT: mulld 3, 3, 9 13588; PWR5-NEXT: and 4, 4, 7 13589; PWR5-NEXT: rldicl 3, 3, 8, 56 13590; PWR5-NEXT: li 5, 8 13591; PWR5-NEXT: mulld 4, 4, 9 13592; PWR5-NEXT: subc 6, 3, 5 13593; PWR5-NEXT: rldicl 4, 4, 8, 56 13594; PWR5-NEXT: subfe 3, 3, 3 13595; PWR5-NEXT: subc 5, 4, 5 13596; PWR5-NEXT: subfe 4, 4, 4 13597; PWR5-NEXT: blr 13598; 13599; PWR6-LABEL: ult_8_v2i64: 13600; PWR6: # %bb.0: 13601; PWR6-NEXT: lis 5, 21845 13602; PWR6-NEXT: lis 6, 13107 13603; PWR6-NEXT: ori 5, 5, 21845 13604; PWR6-NEXT: rotldi 8, 4, 63 13605; PWR6-NEXT: rotldi 9, 3, 63 13606; PWR6-NEXT: rldimi 5, 5, 32, 0 13607; PWR6-NEXT: and 8, 8, 5 13608; PWR6-NEXT: and 5, 9, 5 13609; PWR6-NEXT: ori 6, 6, 13107 13610; PWR6-NEXT: sub 3, 3, 5 13611; PWR6-NEXT: rldimi 6, 6, 32, 0 13612; PWR6-NEXT: sub 4, 4, 8 13613; PWR6-NEXT: and 8, 3, 6 13614; PWR6-NEXT: rotldi 3, 3, 62 13615; PWR6-NEXT: and 3, 3, 6 13616; PWR6-NEXT: lis 7, 3855 13617; PWR6-NEXT: and 5, 4, 6 13618; PWR6-NEXT: rotldi 4, 4, 62 13619; PWR6-NEXT: add 3, 8, 3 13620; PWR6-NEXT: lis 9, 257 13621; PWR6-NEXT: ori 7, 7, 3855 13622; PWR6-NEXT: and 4, 4, 6 13623; PWR6-NEXT: rldicl 6, 3, 60, 4 13624; PWR6-NEXT: ori 9, 9, 257 13625; PWR6-NEXT: rldimi 7, 7, 32, 0 13626; PWR6-NEXT: add 4, 5, 4 13627; PWR6-NEXT: add 3, 3, 6 13628; PWR6-NEXT: rldimi 9, 9, 32, 0 13629; PWR6-NEXT: rldicl 5, 4, 60, 4 13630; PWR6-NEXT: and 3, 3, 7 13631; PWR6-NEXT: add 4, 4, 5 13632; PWR6-NEXT: mulld 3, 3, 9 13633; PWR6-NEXT: and 4, 4, 7 13634; PWR6-NEXT: rldicl 3, 3, 8, 56 13635; PWR6-NEXT: li 5, 8 13636; PWR6-NEXT: mulld 4, 4, 9 13637; PWR6-NEXT: subc 6, 3, 5 13638; PWR6-NEXT: rldicl 4, 4, 8, 56 13639; PWR6-NEXT: subfe 3, 3, 3 13640; PWR6-NEXT: subc 5, 4, 5 13641; PWR6-NEXT: subfe 4, 4, 4 13642; PWR6-NEXT: blr 13643; 13644; PWR7-LABEL: ult_8_v2i64: 13645; PWR7: # %bb.0: 13646; PWR7-NEXT: addi 3, 1, -32 13647; PWR7-NEXT: li 5, 0 13648; PWR7-NEXT: li 6, -1 13649; PWR7-NEXT: stxvd2x 34, 0, 3 13650; PWR7-NEXT: ld 3, -24(1) 13651; PWR7-NEXT: ld 4, -32(1) 13652; PWR7-NEXT: popcntd 3, 3 13653; PWR7-NEXT: popcntd 4, 4 13654; PWR7-NEXT: cmpldi 3, 8 13655; PWR7-NEXT: isellt 3, 6, 5 13656; PWR7-NEXT: cmpldi 4, 8 13657; PWR7-NEXT: isellt 4, 6, 5 13658; PWR7-NEXT: std 3, -8(1) 13659; PWR7-NEXT: addi 3, 1, -16 13660; PWR7-NEXT: std 4, -16(1) 13661; PWR7-NEXT: lxvd2x 34, 0, 3 13662; PWR7-NEXT: blr 13663; 13664; PWR8-LABEL: ult_8_v2i64: 13665; PWR8: # %bb.0: 13666; PWR8-NEXT: addis 3, 2, .LCPI113_0@toc@ha 13667; PWR8-NEXT: vpopcntd 2, 2 13668; PWR8-NEXT: addi 3, 3, .LCPI113_0@toc@l 13669; PWR8-NEXT: lxvd2x 35, 0, 3 13670; PWR8-NEXT: vcmpgtud 2, 3, 2 13671; PWR8-NEXT: blr 13672; 13673; PWR9-LABEL: ult_8_v2i64: 13674; PWR9: # %bb.0: 13675; PWR9-NEXT: addis 3, 2, .LCPI113_0@toc@ha 13676; PWR9-NEXT: vpopcntd 2, 2 13677; PWR9-NEXT: addi 3, 3, .LCPI113_0@toc@l 13678; PWR9-NEXT: lxvx 35, 0, 3 13679; PWR9-NEXT: vcmpgtud 2, 3, 2 13680; PWR9-NEXT: blr 13681 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13682 %3 = icmp ult <2 x i64> %2, <i64 8, i64 8> 13683 %4 = sext <2 x i1> %3 to <2 x i64> 13684 ret <2 x i64> %4 13685} 13686 13687define <2 x i64> @ugt_8_v2i64(<2 x i64> %0) { 13688; PWR5-LABEL: ugt_8_v2i64: 13689; PWR5: # %bb.0: 13690; PWR5-NEXT: lis 5, 21845 13691; PWR5-NEXT: lis 6, 13107 13692; PWR5-NEXT: ori 5, 5, 21845 13693; PWR5-NEXT: rotldi 8, 4, 63 13694; PWR5-NEXT: rotldi 9, 3, 63 13695; PWR5-NEXT: rldimi 5, 5, 32, 0 13696; PWR5-NEXT: and 8, 8, 5 13697; PWR5-NEXT: and 5, 9, 5 13698; PWR5-NEXT: ori 6, 6, 13107 13699; PWR5-NEXT: sub 3, 3, 5 13700; PWR5-NEXT: rldimi 6, 6, 32, 0 13701; PWR5-NEXT: sub 4, 4, 8 13702; PWR5-NEXT: and 8, 3, 6 13703; PWR5-NEXT: rotldi 3, 3, 62 13704; PWR5-NEXT: and 3, 3, 6 13705; PWR5-NEXT: lis 7, 3855 13706; PWR5-NEXT: and 5, 4, 6 13707; PWR5-NEXT: rotldi 4, 4, 62 13708; PWR5-NEXT: add 3, 8, 3 13709; PWR5-NEXT: lis 9, 257 13710; PWR5-NEXT: ori 7, 7, 3855 13711; PWR5-NEXT: and 4, 4, 6 13712; PWR5-NEXT: rldicl 6, 3, 60, 4 13713; PWR5-NEXT: ori 9, 9, 257 13714; PWR5-NEXT: rldimi 7, 7, 32, 0 13715; PWR5-NEXT: add 4, 5, 4 13716; PWR5-NEXT: add 3, 3, 6 13717; PWR5-NEXT: rldimi 9, 9, 32, 0 13718; PWR5-NEXT: rldicl 5, 4, 60, 4 13719; PWR5-NEXT: and 3, 3, 7 13720; PWR5-NEXT: add 4, 4, 5 13721; PWR5-NEXT: mulld 3, 3, 9 13722; PWR5-NEXT: and 4, 4, 7 13723; PWR5-NEXT: rldicl 3, 3, 8, 56 13724; PWR5-NEXT: mulld 4, 4, 9 13725; PWR5-NEXT: li 5, 8 13726; PWR5-NEXT: subfic 3, 3, 8 13727; PWR5-NEXT: rldicl 4, 4, 8, 56 13728; PWR5-NEXT: subfe 3, 5, 5 13729; PWR5-NEXT: subfic 4, 4, 8 13730; PWR5-NEXT: subfe 4, 5, 5 13731; PWR5-NEXT: blr 13732; 13733; PWR6-LABEL: ugt_8_v2i64: 13734; PWR6: # %bb.0: 13735; PWR6-NEXT: lis 5, 21845 13736; PWR6-NEXT: lis 6, 13107 13737; PWR6-NEXT: ori 5, 5, 21845 13738; PWR6-NEXT: rotldi 8, 4, 63 13739; PWR6-NEXT: rotldi 9, 3, 63 13740; PWR6-NEXT: rldimi 5, 5, 32, 0 13741; PWR6-NEXT: and 8, 8, 5 13742; PWR6-NEXT: and 5, 9, 5 13743; PWR6-NEXT: ori 6, 6, 13107 13744; PWR6-NEXT: sub 3, 3, 5 13745; PWR6-NEXT: rldimi 6, 6, 32, 0 13746; PWR6-NEXT: sub 4, 4, 8 13747; PWR6-NEXT: and 8, 3, 6 13748; PWR6-NEXT: rotldi 3, 3, 62 13749; PWR6-NEXT: and 3, 3, 6 13750; PWR6-NEXT: lis 7, 3855 13751; PWR6-NEXT: and 5, 4, 6 13752; PWR6-NEXT: rotldi 4, 4, 62 13753; PWR6-NEXT: add 3, 8, 3 13754; PWR6-NEXT: lis 9, 257 13755; PWR6-NEXT: ori 7, 7, 3855 13756; PWR6-NEXT: and 4, 4, 6 13757; PWR6-NEXT: rldicl 6, 3, 60, 4 13758; PWR6-NEXT: ori 9, 9, 257 13759; PWR6-NEXT: rldimi 7, 7, 32, 0 13760; PWR6-NEXT: add 4, 5, 4 13761; PWR6-NEXT: add 3, 3, 6 13762; PWR6-NEXT: rldimi 9, 9, 32, 0 13763; PWR6-NEXT: rldicl 5, 4, 60, 4 13764; PWR6-NEXT: and 3, 3, 7 13765; PWR6-NEXT: add 4, 4, 5 13766; PWR6-NEXT: mulld 3, 3, 9 13767; PWR6-NEXT: and 4, 4, 7 13768; PWR6-NEXT: rldicl 3, 3, 8, 56 13769; PWR6-NEXT: mulld 4, 4, 9 13770; PWR6-NEXT: li 5, 8 13771; PWR6-NEXT: subfic 3, 3, 8 13772; PWR6-NEXT: rldicl 4, 4, 8, 56 13773; PWR6-NEXT: subfe 3, 5, 5 13774; PWR6-NEXT: subfic 4, 4, 8 13775; PWR6-NEXT: subfe 4, 5, 5 13776; PWR6-NEXT: blr 13777; 13778; PWR7-LABEL: ugt_8_v2i64: 13779; PWR7: # %bb.0: 13780; PWR7-NEXT: addi 3, 1, -32 13781; PWR7-NEXT: li 5, 0 13782; PWR7-NEXT: li 6, -1 13783; PWR7-NEXT: stxvd2x 34, 0, 3 13784; PWR7-NEXT: ld 3, -24(1) 13785; PWR7-NEXT: ld 4, -32(1) 13786; PWR7-NEXT: popcntd 3, 3 13787; PWR7-NEXT: popcntd 4, 4 13788; PWR7-NEXT: cmpldi 3, 8 13789; PWR7-NEXT: iselgt 3, 6, 5 13790; PWR7-NEXT: cmpldi 4, 8 13791; PWR7-NEXT: iselgt 4, 6, 5 13792; PWR7-NEXT: std 3, -8(1) 13793; PWR7-NEXT: addi 3, 1, -16 13794; PWR7-NEXT: std 4, -16(1) 13795; PWR7-NEXT: lxvd2x 34, 0, 3 13796; PWR7-NEXT: blr 13797; 13798; PWR8-LABEL: ugt_8_v2i64: 13799; PWR8: # %bb.0: 13800; PWR8-NEXT: addis 3, 2, .LCPI114_0@toc@ha 13801; PWR8-NEXT: vpopcntd 2, 2 13802; PWR8-NEXT: addi 3, 3, .LCPI114_0@toc@l 13803; PWR8-NEXT: lxvd2x 35, 0, 3 13804; PWR8-NEXT: vcmpgtud 2, 2, 3 13805; PWR8-NEXT: blr 13806; 13807; PWR9-LABEL: ugt_8_v2i64: 13808; PWR9: # %bb.0: 13809; PWR9-NEXT: addis 3, 2, .LCPI114_0@toc@ha 13810; PWR9-NEXT: vpopcntd 2, 2 13811; PWR9-NEXT: addi 3, 3, .LCPI114_0@toc@l 13812; PWR9-NEXT: lxvx 35, 0, 3 13813; PWR9-NEXT: vcmpgtud 2, 2, 3 13814; PWR9-NEXT: blr 13815 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13816 %3 = icmp ugt <2 x i64> %2, <i64 8, i64 8> 13817 %4 = sext <2 x i1> %3 to <2 x i64> 13818 ret <2 x i64> %4 13819} 13820 13821define <2 x i64> @ult_9_v2i64(<2 x i64> %0) { 13822; PWR5-LABEL: ult_9_v2i64: 13823; PWR5: # %bb.0: 13824; PWR5-NEXT: lis 5, 21845 13825; PWR5-NEXT: lis 6, 13107 13826; PWR5-NEXT: ori 5, 5, 21845 13827; PWR5-NEXT: rotldi 8, 4, 63 13828; PWR5-NEXT: rotldi 9, 3, 63 13829; PWR5-NEXT: rldimi 5, 5, 32, 0 13830; PWR5-NEXT: and 8, 8, 5 13831; PWR5-NEXT: and 5, 9, 5 13832; PWR5-NEXT: ori 6, 6, 13107 13833; PWR5-NEXT: sub 3, 3, 5 13834; PWR5-NEXT: rldimi 6, 6, 32, 0 13835; PWR5-NEXT: sub 4, 4, 8 13836; PWR5-NEXT: and 8, 3, 6 13837; PWR5-NEXT: rotldi 3, 3, 62 13838; PWR5-NEXT: and 3, 3, 6 13839; PWR5-NEXT: lis 7, 3855 13840; PWR5-NEXT: and 5, 4, 6 13841; PWR5-NEXT: rotldi 4, 4, 62 13842; PWR5-NEXT: add 3, 8, 3 13843; PWR5-NEXT: lis 9, 257 13844; PWR5-NEXT: ori 7, 7, 3855 13845; PWR5-NEXT: and 4, 4, 6 13846; PWR5-NEXT: rldicl 6, 3, 60, 4 13847; PWR5-NEXT: ori 9, 9, 257 13848; PWR5-NEXT: rldimi 7, 7, 32, 0 13849; PWR5-NEXT: add 4, 5, 4 13850; PWR5-NEXT: add 3, 3, 6 13851; PWR5-NEXT: rldimi 9, 9, 32, 0 13852; PWR5-NEXT: rldicl 5, 4, 60, 4 13853; PWR5-NEXT: and 3, 3, 7 13854; PWR5-NEXT: add 4, 4, 5 13855; PWR5-NEXT: mulld 3, 3, 9 13856; PWR5-NEXT: and 4, 4, 7 13857; PWR5-NEXT: rldicl 3, 3, 8, 56 13858; PWR5-NEXT: li 5, 9 13859; PWR5-NEXT: mulld 4, 4, 9 13860; PWR5-NEXT: subc 6, 3, 5 13861; PWR5-NEXT: rldicl 4, 4, 8, 56 13862; PWR5-NEXT: subfe 3, 3, 3 13863; PWR5-NEXT: subc 5, 4, 5 13864; PWR5-NEXT: subfe 4, 4, 4 13865; PWR5-NEXT: blr 13866; 13867; PWR6-LABEL: ult_9_v2i64: 13868; PWR6: # %bb.0: 13869; PWR6-NEXT: lis 5, 21845 13870; PWR6-NEXT: lis 6, 13107 13871; PWR6-NEXT: ori 5, 5, 21845 13872; PWR6-NEXT: rotldi 8, 4, 63 13873; PWR6-NEXT: rotldi 9, 3, 63 13874; PWR6-NEXT: rldimi 5, 5, 32, 0 13875; PWR6-NEXT: and 8, 8, 5 13876; PWR6-NEXT: and 5, 9, 5 13877; PWR6-NEXT: ori 6, 6, 13107 13878; PWR6-NEXT: sub 3, 3, 5 13879; PWR6-NEXT: rldimi 6, 6, 32, 0 13880; PWR6-NEXT: sub 4, 4, 8 13881; PWR6-NEXT: and 8, 3, 6 13882; PWR6-NEXT: rotldi 3, 3, 62 13883; PWR6-NEXT: and 3, 3, 6 13884; PWR6-NEXT: lis 7, 3855 13885; PWR6-NEXT: and 5, 4, 6 13886; PWR6-NEXT: rotldi 4, 4, 62 13887; PWR6-NEXT: add 3, 8, 3 13888; PWR6-NEXT: lis 9, 257 13889; PWR6-NEXT: ori 7, 7, 3855 13890; PWR6-NEXT: and 4, 4, 6 13891; PWR6-NEXT: rldicl 6, 3, 60, 4 13892; PWR6-NEXT: ori 9, 9, 257 13893; PWR6-NEXT: rldimi 7, 7, 32, 0 13894; PWR6-NEXT: add 4, 5, 4 13895; PWR6-NEXT: add 3, 3, 6 13896; PWR6-NEXT: rldimi 9, 9, 32, 0 13897; PWR6-NEXT: rldicl 5, 4, 60, 4 13898; PWR6-NEXT: and 3, 3, 7 13899; PWR6-NEXT: add 4, 4, 5 13900; PWR6-NEXT: mulld 3, 3, 9 13901; PWR6-NEXT: and 4, 4, 7 13902; PWR6-NEXT: rldicl 3, 3, 8, 56 13903; PWR6-NEXT: li 5, 9 13904; PWR6-NEXT: mulld 4, 4, 9 13905; PWR6-NEXT: subc 6, 3, 5 13906; PWR6-NEXT: rldicl 4, 4, 8, 56 13907; PWR6-NEXT: subfe 3, 3, 3 13908; PWR6-NEXT: subc 5, 4, 5 13909; PWR6-NEXT: subfe 4, 4, 4 13910; PWR6-NEXT: blr 13911; 13912; PWR7-LABEL: ult_9_v2i64: 13913; PWR7: # %bb.0: 13914; PWR7-NEXT: addi 3, 1, -32 13915; PWR7-NEXT: li 5, 0 13916; PWR7-NEXT: li 6, -1 13917; PWR7-NEXT: stxvd2x 34, 0, 3 13918; PWR7-NEXT: ld 3, -24(1) 13919; PWR7-NEXT: ld 4, -32(1) 13920; PWR7-NEXT: popcntd 3, 3 13921; PWR7-NEXT: popcntd 4, 4 13922; PWR7-NEXT: cmpldi 3, 9 13923; PWR7-NEXT: isellt 3, 6, 5 13924; PWR7-NEXT: cmpldi 4, 9 13925; PWR7-NEXT: isellt 4, 6, 5 13926; PWR7-NEXT: std 3, -8(1) 13927; PWR7-NEXT: addi 3, 1, -16 13928; PWR7-NEXT: std 4, -16(1) 13929; PWR7-NEXT: lxvd2x 34, 0, 3 13930; PWR7-NEXT: blr 13931; 13932; PWR8-LABEL: ult_9_v2i64: 13933; PWR8: # %bb.0: 13934; PWR8-NEXT: addis 3, 2, .LCPI115_0@toc@ha 13935; PWR8-NEXT: vpopcntd 2, 2 13936; PWR8-NEXT: addi 3, 3, .LCPI115_0@toc@l 13937; PWR8-NEXT: lxvd2x 35, 0, 3 13938; PWR8-NEXT: vcmpgtud 2, 3, 2 13939; PWR8-NEXT: blr 13940; 13941; PWR9-LABEL: ult_9_v2i64: 13942; PWR9: # %bb.0: 13943; PWR9-NEXT: addis 3, 2, .LCPI115_0@toc@ha 13944; PWR9-NEXT: vpopcntd 2, 2 13945; PWR9-NEXT: addi 3, 3, .LCPI115_0@toc@l 13946; PWR9-NEXT: lxvx 35, 0, 3 13947; PWR9-NEXT: vcmpgtud 2, 3, 2 13948; PWR9-NEXT: blr 13949 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13950 %3 = icmp ult <2 x i64> %2, <i64 9, i64 9> 13951 %4 = sext <2 x i1> %3 to <2 x i64> 13952 ret <2 x i64> %4 13953} 13954 13955define <2 x i64> @ugt_9_v2i64(<2 x i64> %0) { 13956; PWR5-LABEL: ugt_9_v2i64: 13957; PWR5: # %bb.0: 13958; PWR5-NEXT: lis 5, 21845 13959; PWR5-NEXT: lis 6, 13107 13960; PWR5-NEXT: ori 5, 5, 21845 13961; PWR5-NEXT: rotldi 8, 4, 63 13962; PWR5-NEXT: rotldi 9, 3, 63 13963; PWR5-NEXT: rldimi 5, 5, 32, 0 13964; PWR5-NEXT: and 8, 8, 5 13965; PWR5-NEXT: and 5, 9, 5 13966; PWR5-NEXT: ori 6, 6, 13107 13967; PWR5-NEXT: sub 3, 3, 5 13968; PWR5-NEXT: rldimi 6, 6, 32, 0 13969; PWR5-NEXT: sub 4, 4, 8 13970; PWR5-NEXT: and 8, 3, 6 13971; PWR5-NEXT: rotldi 3, 3, 62 13972; PWR5-NEXT: and 3, 3, 6 13973; PWR5-NEXT: lis 7, 3855 13974; PWR5-NEXT: and 5, 4, 6 13975; PWR5-NEXT: rotldi 4, 4, 62 13976; PWR5-NEXT: add 3, 8, 3 13977; PWR5-NEXT: lis 9, 257 13978; PWR5-NEXT: ori 7, 7, 3855 13979; PWR5-NEXT: and 4, 4, 6 13980; PWR5-NEXT: rldicl 6, 3, 60, 4 13981; PWR5-NEXT: ori 9, 9, 257 13982; PWR5-NEXT: rldimi 7, 7, 32, 0 13983; PWR5-NEXT: add 4, 5, 4 13984; PWR5-NEXT: add 3, 3, 6 13985; PWR5-NEXT: rldimi 9, 9, 32, 0 13986; PWR5-NEXT: rldicl 5, 4, 60, 4 13987; PWR5-NEXT: and 3, 3, 7 13988; PWR5-NEXT: add 4, 4, 5 13989; PWR5-NEXT: mulld 3, 3, 9 13990; PWR5-NEXT: and 4, 4, 7 13991; PWR5-NEXT: rldicl 3, 3, 8, 56 13992; PWR5-NEXT: mulld 4, 4, 9 13993; PWR5-NEXT: li 5, 9 13994; PWR5-NEXT: subfic 3, 3, 9 13995; PWR5-NEXT: rldicl 4, 4, 8, 56 13996; PWR5-NEXT: subfe 3, 5, 5 13997; PWR5-NEXT: subfic 4, 4, 9 13998; PWR5-NEXT: subfe 4, 5, 5 13999; PWR5-NEXT: blr 14000; 14001; PWR6-LABEL: ugt_9_v2i64: 14002; PWR6: # %bb.0: 14003; PWR6-NEXT: lis 5, 21845 14004; PWR6-NEXT: lis 6, 13107 14005; PWR6-NEXT: ori 5, 5, 21845 14006; PWR6-NEXT: rotldi 8, 4, 63 14007; PWR6-NEXT: rotldi 9, 3, 63 14008; PWR6-NEXT: rldimi 5, 5, 32, 0 14009; PWR6-NEXT: and 8, 8, 5 14010; PWR6-NEXT: and 5, 9, 5 14011; PWR6-NEXT: ori 6, 6, 13107 14012; PWR6-NEXT: sub 3, 3, 5 14013; PWR6-NEXT: rldimi 6, 6, 32, 0 14014; PWR6-NEXT: sub 4, 4, 8 14015; PWR6-NEXT: and 8, 3, 6 14016; PWR6-NEXT: rotldi 3, 3, 62 14017; PWR6-NEXT: and 3, 3, 6 14018; PWR6-NEXT: lis 7, 3855 14019; PWR6-NEXT: and 5, 4, 6 14020; PWR6-NEXT: rotldi 4, 4, 62 14021; PWR6-NEXT: add 3, 8, 3 14022; PWR6-NEXT: lis 9, 257 14023; PWR6-NEXT: ori 7, 7, 3855 14024; PWR6-NEXT: and 4, 4, 6 14025; PWR6-NEXT: rldicl 6, 3, 60, 4 14026; PWR6-NEXT: ori 9, 9, 257 14027; PWR6-NEXT: rldimi 7, 7, 32, 0 14028; PWR6-NEXT: add 4, 5, 4 14029; PWR6-NEXT: add 3, 3, 6 14030; PWR6-NEXT: rldimi 9, 9, 32, 0 14031; PWR6-NEXT: rldicl 5, 4, 60, 4 14032; PWR6-NEXT: and 3, 3, 7 14033; PWR6-NEXT: add 4, 4, 5 14034; PWR6-NEXT: mulld 3, 3, 9 14035; PWR6-NEXT: and 4, 4, 7 14036; PWR6-NEXT: rldicl 3, 3, 8, 56 14037; PWR6-NEXT: mulld 4, 4, 9 14038; PWR6-NEXT: li 5, 9 14039; PWR6-NEXT: subfic 3, 3, 9 14040; PWR6-NEXT: rldicl 4, 4, 8, 56 14041; PWR6-NEXT: subfe 3, 5, 5 14042; PWR6-NEXT: subfic 4, 4, 9 14043; PWR6-NEXT: subfe 4, 5, 5 14044; PWR6-NEXT: blr 14045; 14046; PWR7-LABEL: ugt_9_v2i64: 14047; PWR7: # %bb.0: 14048; PWR7-NEXT: addi 3, 1, -32 14049; PWR7-NEXT: li 5, 0 14050; PWR7-NEXT: li 6, -1 14051; PWR7-NEXT: stxvd2x 34, 0, 3 14052; PWR7-NEXT: ld 3, -24(1) 14053; PWR7-NEXT: ld 4, -32(1) 14054; PWR7-NEXT: popcntd 3, 3 14055; PWR7-NEXT: popcntd 4, 4 14056; PWR7-NEXT: cmpldi 3, 9 14057; PWR7-NEXT: iselgt 3, 6, 5 14058; PWR7-NEXT: cmpldi 4, 9 14059; PWR7-NEXT: iselgt 4, 6, 5 14060; PWR7-NEXT: std 3, -8(1) 14061; PWR7-NEXT: addi 3, 1, -16 14062; PWR7-NEXT: std 4, -16(1) 14063; PWR7-NEXT: lxvd2x 34, 0, 3 14064; PWR7-NEXT: blr 14065; 14066; PWR8-LABEL: ugt_9_v2i64: 14067; PWR8: # %bb.0: 14068; PWR8-NEXT: addis 3, 2, .LCPI116_0@toc@ha 14069; PWR8-NEXT: vpopcntd 2, 2 14070; PWR8-NEXT: addi 3, 3, .LCPI116_0@toc@l 14071; PWR8-NEXT: lxvd2x 35, 0, 3 14072; PWR8-NEXT: vcmpgtud 2, 2, 3 14073; PWR8-NEXT: blr 14074; 14075; PWR9-LABEL: ugt_9_v2i64: 14076; PWR9: # %bb.0: 14077; PWR9-NEXT: addis 3, 2, .LCPI116_0@toc@ha 14078; PWR9-NEXT: vpopcntd 2, 2 14079; PWR9-NEXT: addi 3, 3, .LCPI116_0@toc@l 14080; PWR9-NEXT: lxvx 35, 0, 3 14081; PWR9-NEXT: vcmpgtud 2, 2, 3 14082; PWR9-NEXT: blr 14083 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14084 %3 = icmp ugt <2 x i64> %2, <i64 9, i64 9> 14085 %4 = sext <2 x i1> %3 to <2 x i64> 14086 ret <2 x i64> %4 14087} 14088 14089define <2 x i64> @ult_10_v2i64(<2 x i64> %0) { 14090; PWR5-LABEL: ult_10_v2i64: 14091; PWR5: # %bb.0: 14092; PWR5-NEXT: lis 5, 21845 14093; PWR5-NEXT: lis 6, 13107 14094; PWR5-NEXT: ori 5, 5, 21845 14095; PWR5-NEXT: rotldi 8, 4, 63 14096; PWR5-NEXT: rotldi 9, 3, 63 14097; PWR5-NEXT: rldimi 5, 5, 32, 0 14098; PWR5-NEXT: and 8, 8, 5 14099; PWR5-NEXT: and 5, 9, 5 14100; PWR5-NEXT: ori 6, 6, 13107 14101; PWR5-NEXT: sub 3, 3, 5 14102; PWR5-NEXT: rldimi 6, 6, 32, 0 14103; PWR5-NEXT: sub 4, 4, 8 14104; PWR5-NEXT: and 8, 3, 6 14105; PWR5-NEXT: rotldi 3, 3, 62 14106; PWR5-NEXT: and 3, 3, 6 14107; PWR5-NEXT: lis 7, 3855 14108; PWR5-NEXT: and 5, 4, 6 14109; PWR5-NEXT: rotldi 4, 4, 62 14110; PWR5-NEXT: add 3, 8, 3 14111; PWR5-NEXT: lis 9, 257 14112; PWR5-NEXT: ori 7, 7, 3855 14113; PWR5-NEXT: and 4, 4, 6 14114; PWR5-NEXT: rldicl 6, 3, 60, 4 14115; PWR5-NEXT: ori 9, 9, 257 14116; PWR5-NEXT: rldimi 7, 7, 32, 0 14117; PWR5-NEXT: add 4, 5, 4 14118; PWR5-NEXT: add 3, 3, 6 14119; PWR5-NEXT: rldimi 9, 9, 32, 0 14120; PWR5-NEXT: rldicl 5, 4, 60, 4 14121; PWR5-NEXT: and 3, 3, 7 14122; PWR5-NEXT: add 4, 4, 5 14123; PWR5-NEXT: mulld 3, 3, 9 14124; PWR5-NEXT: and 4, 4, 7 14125; PWR5-NEXT: rldicl 3, 3, 8, 56 14126; PWR5-NEXT: li 5, 10 14127; PWR5-NEXT: mulld 4, 4, 9 14128; PWR5-NEXT: subc 6, 3, 5 14129; PWR5-NEXT: rldicl 4, 4, 8, 56 14130; PWR5-NEXT: subfe 3, 3, 3 14131; PWR5-NEXT: subc 5, 4, 5 14132; PWR5-NEXT: subfe 4, 4, 4 14133; PWR5-NEXT: blr 14134; 14135; PWR6-LABEL: ult_10_v2i64: 14136; PWR6: # %bb.0: 14137; PWR6-NEXT: lis 5, 21845 14138; PWR6-NEXT: lis 6, 13107 14139; PWR6-NEXT: ori 5, 5, 21845 14140; PWR6-NEXT: rotldi 8, 4, 63 14141; PWR6-NEXT: rotldi 9, 3, 63 14142; PWR6-NEXT: rldimi 5, 5, 32, 0 14143; PWR6-NEXT: and 8, 8, 5 14144; PWR6-NEXT: and 5, 9, 5 14145; PWR6-NEXT: ori 6, 6, 13107 14146; PWR6-NEXT: sub 3, 3, 5 14147; PWR6-NEXT: rldimi 6, 6, 32, 0 14148; PWR6-NEXT: sub 4, 4, 8 14149; PWR6-NEXT: and 8, 3, 6 14150; PWR6-NEXT: rotldi 3, 3, 62 14151; PWR6-NEXT: and 3, 3, 6 14152; PWR6-NEXT: lis 7, 3855 14153; PWR6-NEXT: and 5, 4, 6 14154; PWR6-NEXT: rotldi 4, 4, 62 14155; PWR6-NEXT: add 3, 8, 3 14156; PWR6-NEXT: lis 9, 257 14157; PWR6-NEXT: ori 7, 7, 3855 14158; PWR6-NEXT: and 4, 4, 6 14159; PWR6-NEXT: rldicl 6, 3, 60, 4 14160; PWR6-NEXT: ori 9, 9, 257 14161; PWR6-NEXT: rldimi 7, 7, 32, 0 14162; PWR6-NEXT: add 4, 5, 4 14163; PWR6-NEXT: add 3, 3, 6 14164; PWR6-NEXT: rldimi 9, 9, 32, 0 14165; PWR6-NEXT: rldicl 5, 4, 60, 4 14166; PWR6-NEXT: and 3, 3, 7 14167; PWR6-NEXT: add 4, 4, 5 14168; PWR6-NEXT: mulld 3, 3, 9 14169; PWR6-NEXT: and 4, 4, 7 14170; PWR6-NEXT: rldicl 3, 3, 8, 56 14171; PWR6-NEXT: li 5, 10 14172; PWR6-NEXT: mulld 4, 4, 9 14173; PWR6-NEXT: subc 6, 3, 5 14174; PWR6-NEXT: rldicl 4, 4, 8, 56 14175; PWR6-NEXT: subfe 3, 3, 3 14176; PWR6-NEXT: subc 5, 4, 5 14177; PWR6-NEXT: subfe 4, 4, 4 14178; PWR6-NEXT: blr 14179; 14180; PWR7-LABEL: ult_10_v2i64: 14181; PWR7: # %bb.0: 14182; PWR7-NEXT: addi 3, 1, -32 14183; PWR7-NEXT: li 5, 0 14184; PWR7-NEXT: li 6, -1 14185; PWR7-NEXT: stxvd2x 34, 0, 3 14186; PWR7-NEXT: ld 3, -24(1) 14187; PWR7-NEXT: ld 4, -32(1) 14188; PWR7-NEXT: popcntd 3, 3 14189; PWR7-NEXT: popcntd 4, 4 14190; PWR7-NEXT: cmpldi 3, 10 14191; PWR7-NEXT: isellt 3, 6, 5 14192; PWR7-NEXT: cmpldi 4, 10 14193; PWR7-NEXT: isellt 4, 6, 5 14194; PWR7-NEXT: std 3, -8(1) 14195; PWR7-NEXT: addi 3, 1, -16 14196; PWR7-NEXT: std 4, -16(1) 14197; PWR7-NEXT: lxvd2x 34, 0, 3 14198; PWR7-NEXT: blr 14199; 14200; PWR8-LABEL: ult_10_v2i64: 14201; PWR8: # %bb.0: 14202; PWR8-NEXT: addis 3, 2, .LCPI117_0@toc@ha 14203; PWR8-NEXT: vpopcntd 2, 2 14204; PWR8-NEXT: addi 3, 3, .LCPI117_0@toc@l 14205; PWR8-NEXT: lxvd2x 35, 0, 3 14206; PWR8-NEXT: vcmpgtud 2, 3, 2 14207; PWR8-NEXT: blr 14208; 14209; PWR9-LABEL: ult_10_v2i64: 14210; PWR9: # %bb.0: 14211; PWR9-NEXT: addis 3, 2, .LCPI117_0@toc@ha 14212; PWR9-NEXT: vpopcntd 2, 2 14213; PWR9-NEXT: addi 3, 3, .LCPI117_0@toc@l 14214; PWR9-NEXT: lxvx 35, 0, 3 14215; PWR9-NEXT: vcmpgtud 2, 3, 2 14216; PWR9-NEXT: blr 14217 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14218 %3 = icmp ult <2 x i64> %2, <i64 10, i64 10> 14219 %4 = sext <2 x i1> %3 to <2 x i64> 14220 ret <2 x i64> %4 14221} 14222 14223define <2 x i64> @ugt_10_v2i64(<2 x i64> %0) { 14224; PWR5-LABEL: ugt_10_v2i64: 14225; PWR5: # %bb.0: 14226; PWR5-NEXT: lis 5, 21845 14227; PWR5-NEXT: lis 6, 13107 14228; PWR5-NEXT: ori 5, 5, 21845 14229; PWR5-NEXT: rotldi 8, 4, 63 14230; PWR5-NEXT: rotldi 9, 3, 63 14231; PWR5-NEXT: rldimi 5, 5, 32, 0 14232; PWR5-NEXT: and 8, 8, 5 14233; PWR5-NEXT: and 5, 9, 5 14234; PWR5-NEXT: ori 6, 6, 13107 14235; PWR5-NEXT: sub 3, 3, 5 14236; PWR5-NEXT: rldimi 6, 6, 32, 0 14237; PWR5-NEXT: sub 4, 4, 8 14238; PWR5-NEXT: and 8, 3, 6 14239; PWR5-NEXT: rotldi 3, 3, 62 14240; PWR5-NEXT: and 3, 3, 6 14241; PWR5-NEXT: lis 7, 3855 14242; PWR5-NEXT: and 5, 4, 6 14243; PWR5-NEXT: rotldi 4, 4, 62 14244; PWR5-NEXT: add 3, 8, 3 14245; PWR5-NEXT: lis 9, 257 14246; PWR5-NEXT: ori 7, 7, 3855 14247; PWR5-NEXT: and 4, 4, 6 14248; PWR5-NEXT: rldicl 6, 3, 60, 4 14249; PWR5-NEXT: ori 9, 9, 257 14250; PWR5-NEXT: rldimi 7, 7, 32, 0 14251; PWR5-NEXT: add 4, 5, 4 14252; PWR5-NEXT: add 3, 3, 6 14253; PWR5-NEXT: rldimi 9, 9, 32, 0 14254; PWR5-NEXT: rldicl 5, 4, 60, 4 14255; PWR5-NEXT: and 3, 3, 7 14256; PWR5-NEXT: add 4, 4, 5 14257; PWR5-NEXT: mulld 3, 3, 9 14258; PWR5-NEXT: and 4, 4, 7 14259; PWR5-NEXT: rldicl 3, 3, 8, 56 14260; PWR5-NEXT: mulld 4, 4, 9 14261; PWR5-NEXT: li 5, 10 14262; PWR5-NEXT: subfic 3, 3, 10 14263; PWR5-NEXT: rldicl 4, 4, 8, 56 14264; PWR5-NEXT: subfe 3, 5, 5 14265; PWR5-NEXT: subfic 4, 4, 10 14266; PWR5-NEXT: subfe 4, 5, 5 14267; PWR5-NEXT: blr 14268; 14269; PWR6-LABEL: ugt_10_v2i64: 14270; PWR6: # %bb.0: 14271; PWR6-NEXT: lis 5, 21845 14272; PWR6-NEXT: lis 6, 13107 14273; PWR6-NEXT: ori 5, 5, 21845 14274; PWR6-NEXT: rotldi 8, 4, 63 14275; PWR6-NEXT: rotldi 9, 3, 63 14276; PWR6-NEXT: rldimi 5, 5, 32, 0 14277; PWR6-NEXT: and 8, 8, 5 14278; PWR6-NEXT: and 5, 9, 5 14279; PWR6-NEXT: ori 6, 6, 13107 14280; PWR6-NEXT: sub 3, 3, 5 14281; PWR6-NEXT: rldimi 6, 6, 32, 0 14282; PWR6-NEXT: sub 4, 4, 8 14283; PWR6-NEXT: and 8, 3, 6 14284; PWR6-NEXT: rotldi 3, 3, 62 14285; PWR6-NEXT: and 3, 3, 6 14286; PWR6-NEXT: lis 7, 3855 14287; PWR6-NEXT: and 5, 4, 6 14288; PWR6-NEXT: rotldi 4, 4, 62 14289; PWR6-NEXT: add 3, 8, 3 14290; PWR6-NEXT: lis 9, 257 14291; PWR6-NEXT: ori 7, 7, 3855 14292; PWR6-NEXT: and 4, 4, 6 14293; PWR6-NEXT: rldicl 6, 3, 60, 4 14294; PWR6-NEXT: ori 9, 9, 257 14295; PWR6-NEXT: rldimi 7, 7, 32, 0 14296; PWR6-NEXT: add 4, 5, 4 14297; PWR6-NEXT: add 3, 3, 6 14298; PWR6-NEXT: rldimi 9, 9, 32, 0 14299; PWR6-NEXT: rldicl 5, 4, 60, 4 14300; PWR6-NEXT: and 3, 3, 7 14301; PWR6-NEXT: add 4, 4, 5 14302; PWR6-NEXT: mulld 3, 3, 9 14303; PWR6-NEXT: and 4, 4, 7 14304; PWR6-NEXT: rldicl 3, 3, 8, 56 14305; PWR6-NEXT: mulld 4, 4, 9 14306; PWR6-NEXT: li 5, 10 14307; PWR6-NEXT: subfic 3, 3, 10 14308; PWR6-NEXT: rldicl 4, 4, 8, 56 14309; PWR6-NEXT: subfe 3, 5, 5 14310; PWR6-NEXT: subfic 4, 4, 10 14311; PWR6-NEXT: subfe 4, 5, 5 14312; PWR6-NEXT: blr 14313; 14314; PWR7-LABEL: ugt_10_v2i64: 14315; PWR7: # %bb.0: 14316; PWR7-NEXT: addi 3, 1, -32 14317; PWR7-NEXT: li 5, 0 14318; PWR7-NEXT: li 6, -1 14319; PWR7-NEXT: stxvd2x 34, 0, 3 14320; PWR7-NEXT: ld 3, -24(1) 14321; PWR7-NEXT: ld 4, -32(1) 14322; PWR7-NEXT: popcntd 3, 3 14323; PWR7-NEXT: popcntd 4, 4 14324; PWR7-NEXT: cmpldi 3, 10 14325; PWR7-NEXT: iselgt 3, 6, 5 14326; PWR7-NEXT: cmpldi 4, 10 14327; PWR7-NEXT: iselgt 4, 6, 5 14328; PWR7-NEXT: std 3, -8(1) 14329; PWR7-NEXT: addi 3, 1, -16 14330; PWR7-NEXT: std 4, -16(1) 14331; PWR7-NEXT: lxvd2x 34, 0, 3 14332; PWR7-NEXT: blr 14333; 14334; PWR8-LABEL: ugt_10_v2i64: 14335; PWR8: # %bb.0: 14336; PWR8-NEXT: addis 3, 2, .LCPI118_0@toc@ha 14337; PWR8-NEXT: vpopcntd 2, 2 14338; PWR8-NEXT: addi 3, 3, .LCPI118_0@toc@l 14339; PWR8-NEXT: lxvd2x 35, 0, 3 14340; PWR8-NEXT: vcmpgtud 2, 2, 3 14341; PWR8-NEXT: blr 14342; 14343; PWR9-LABEL: ugt_10_v2i64: 14344; PWR9: # %bb.0: 14345; PWR9-NEXT: addis 3, 2, .LCPI118_0@toc@ha 14346; PWR9-NEXT: vpopcntd 2, 2 14347; PWR9-NEXT: addi 3, 3, .LCPI118_0@toc@l 14348; PWR9-NEXT: lxvx 35, 0, 3 14349; PWR9-NEXT: vcmpgtud 2, 2, 3 14350; PWR9-NEXT: blr 14351 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14352 %3 = icmp ugt <2 x i64> %2, <i64 10, i64 10> 14353 %4 = sext <2 x i1> %3 to <2 x i64> 14354 ret <2 x i64> %4 14355} 14356 14357define <2 x i64> @ult_11_v2i64(<2 x i64> %0) { 14358; PWR5-LABEL: ult_11_v2i64: 14359; PWR5: # %bb.0: 14360; PWR5-NEXT: lis 5, 21845 14361; PWR5-NEXT: lis 6, 13107 14362; PWR5-NEXT: ori 5, 5, 21845 14363; PWR5-NEXT: rotldi 8, 4, 63 14364; PWR5-NEXT: rotldi 9, 3, 63 14365; PWR5-NEXT: rldimi 5, 5, 32, 0 14366; PWR5-NEXT: and 8, 8, 5 14367; PWR5-NEXT: and 5, 9, 5 14368; PWR5-NEXT: ori 6, 6, 13107 14369; PWR5-NEXT: sub 3, 3, 5 14370; PWR5-NEXT: rldimi 6, 6, 32, 0 14371; PWR5-NEXT: sub 4, 4, 8 14372; PWR5-NEXT: and 8, 3, 6 14373; PWR5-NEXT: rotldi 3, 3, 62 14374; PWR5-NEXT: and 3, 3, 6 14375; PWR5-NEXT: lis 7, 3855 14376; PWR5-NEXT: and 5, 4, 6 14377; PWR5-NEXT: rotldi 4, 4, 62 14378; PWR5-NEXT: add 3, 8, 3 14379; PWR5-NEXT: lis 9, 257 14380; PWR5-NEXT: ori 7, 7, 3855 14381; PWR5-NEXT: and 4, 4, 6 14382; PWR5-NEXT: rldicl 6, 3, 60, 4 14383; PWR5-NEXT: ori 9, 9, 257 14384; PWR5-NEXT: rldimi 7, 7, 32, 0 14385; PWR5-NEXT: add 4, 5, 4 14386; PWR5-NEXT: add 3, 3, 6 14387; PWR5-NEXT: rldimi 9, 9, 32, 0 14388; PWR5-NEXT: rldicl 5, 4, 60, 4 14389; PWR5-NEXT: and 3, 3, 7 14390; PWR5-NEXT: add 4, 4, 5 14391; PWR5-NEXT: mulld 3, 3, 9 14392; PWR5-NEXT: and 4, 4, 7 14393; PWR5-NEXT: rldicl 3, 3, 8, 56 14394; PWR5-NEXT: li 5, 11 14395; PWR5-NEXT: mulld 4, 4, 9 14396; PWR5-NEXT: subc 6, 3, 5 14397; PWR5-NEXT: rldicl 4, 4, 8, 56 14398; PWR5-NEXT: subfe 3, 3, 3 14399; PWR5-NEXT: subc 5, 4, 5 14400; PWR5-NEXT: subfe 4, 4, 4 14401; PWR5-NEXT: blr 14402; 14403; PWR6-LABEL: ult_11_v2i64: 14404; PWR6: # %bb.0: 14405; PWR6-NEXT: lis 5, 21845 14406; PWR6-NEXT: lis 6, 13107 14407; PWR6-NEXT: ori 5, 5, 21845 14408; PWR6-NEXT: rotldi 8, 4, 63 14409; PWR6-NEXT: rotldi 9, 3, 63 14410; PWR6-NEXT: rldimi 5, 5, 32, 0 14411; PWR6-NEXT: and 8, 8, 5 14412; PWR6-NEXT: and 5, 9, 5 14413; PWR6-NEXT: ori 6, 6, 13107 14414; PWR6-NEXT: sub 3, 3, 5 14415; PWR6-NEXT: rldimi 6, 6, 32, 0 14416; PWR6-NEXT: sub 4, 4, 8 14417; PWR6-NEXT: and 8, 3, 6 14418; PWR6-NEXT: rotldi 3, 3, 62 14419; PWR6-NEXT: and 3, 3, 6 14420; PWR6-NEXT: lis 7, 3855 14421; PWR6-NEXT: and 5, 4, 6 14422; PWR6-NEXT: rotldi 4, 4, 62 14423; PWR6-NEXT: add 3, 8, 3 14424; PWR6-NEXT: lis 9, 257 14425; PWR6-NEXT: ori 7, 7, 3855 14426; PWR6-NEXT: and 4, 4, 6 14427; PWR6-NEXT: rldicl 6, 3, 60, 4 14428; PWR6-NEXT: ori 9, 9, 257 14429; PWR6-NEXT: rldimi 7, 7, 32, 0 14430; PWR6-NEXT: add 4, 5, 4 14431; PWR6-NEXT: add 3, 3, 6 14432; PWR6-NEXT: rldimi 9, 9, 32, 0 14433; PWR6-NEXT: rldicl 5, 4, 60, 4 14434; PWR6-NEXT: and 3, 3, 7 14435; PWR6-NEXT: add 4, 4, 5 14436; PWR6-NEXT: mulld 3, 3, 9 14437; PWR6-NEXT: and 4, 4, 7 14438; PWR6-NEXT: rldicl 3, 3, 8, 56 14439; PWR6-NEXT: li 5, 11 14440; PWR6-NEXT: mulld 4, 4, 9 14441; PWR6-NEXT: subc 6, 3, 5 14442; PWR6-NEXT: rldicl 4, 4, 8, 56 14443; PWR6-NEXT: subfe 3, 3, 3 14444; PWR6-NEXT: subc 5, 4, 5 14445; PWR6-NEXT: subfe 4, 4, 4 14446; PWR6-NEXT: blr 14447; 14448; PWR7-LABEL: ult_11_v2i64: 14449; PWR7: # %bb.0: 14450; PWR7-NEXT: addi 3, 1, -32 14451; PWR7-NEXT: li 5, 0 14452; PWR7-NEXT: li 6, -1 14453; PWR7-NEXT: stxvd2x 34, 0, 3 14454; PWR7-NEXT: ld 3, -24(1) 14455; PWR7-NEXT: ld 4, -32(1) 14456; PWR7-NEXT: popcntd 3, 3 14457; PWR7-NEXT: popcntd 4, 4 14458; PWR7-NEXT: cmpldi 3, 11 14459; PWR7-NEXT: isellt 3, 6, 5 14460; PWR7-NEXT: cmpldi 4, 11 14461; PWR7-NEXT: isellt 4, 6, 5 14462; PWR7-NEXT: std 3, -8(1) 14463; PWR7-NEXT: addi 3, 1, -16 14464; PWR7-NEXT: std 4, -16(1) 14465; PWR7-NEXT: lxvd2x 34, 0, 3 14466; PWR7-NEXT: blr 14467; 14468; PWR8-LABEL: ult_11_v2i64: 14469; PWR8: # %bb.0: 14470; PWR8-NEXT: addis 3, 2, .LCPI119_0@toc@ha 14471; PWR8-NEXT: vpopcntd 2, 2 14472; PWR8-NEXT: addi 3, 3, .LCPI119_0@toc@l 14473; PWR8-NEXT: lxvd2x 35, 0, 3 14474; PWR8-NEXT: vcmpgtud 2, 3, 2 14475; PWR8-NEXT: blr 14476; 14477; PWR9-LABEL: ult_11_v2i64: 14478; PWR9: # %bb.0: 14479; PWR9-NEXT: addis 3, 2, .LCPI119_0@toc@ha 14480; PWR9-NEXT: vpopcntd 2, 2 14481; PWR9-NEXT: addi 3, 3, .LCPI119_0@toc@l 14482; PWR9-NEXT: lxvx 35, 0, 3 14483; PWR9-NEXT: vcmpgtud 2, 3, 2 14484; PWR9-NEXT: blr 14485 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14486 %3 = icmp ult <2 x i64> %2, <i64 11, i64 11> 14487 %4 = sext <2 x i1> %3 to <2 x i64> 14488 ret <2 x i64> %4 14489} 14490 14491define <2 x i64> @ugt_11_v2i64(<2 x i64> %0) { 14492; PWR5-LABEL: ugt_11_v2i64: 14493; PWR5: # %bb.0: 14494; PWR5-NEXT: lis 5, 21845 14495; PWR5-NEXT: lis 6, 13107 14496; PWR5-NEXT: ori 5, 5, 21845 14497; PWR5-NEXT: rotldi 8, 4, 63 14498; PWR5-NEXT: rotldi 9, 3, 63 14499; PWR5-NEXT: rldimi 5, 5, 32, 0 14500; PWR5-NEXT: and 8, 8, 5 14501; PWR5-NEXT: and 5, 9, 5 14502; PWR5-NEXT: ori 6, 6, 13107 14503; PWR5-NEXT: sub 3, 3, 5 14504; PWR5-NEXT: rldimi 6, 6, 32, 0 14505; PWR5-NEXT: sub 4, 4, 8 14506; PWR5-NEXT: and 8, 3, 6 14507; PWR5-NEXT: rotldi 3, 3, 62 14508; PWR5-NEXT: and 3, 3, 6 14509; PWR5-NEXT: lis 7, 3855 14510; PWR5-NEXT: and 5, 4, 6 14511; PWR5-NEXT: rotldi 4, 4, 62 14512; PWR5-NEXT: add 3, 8, 3 14513; PWR5-NEXT: lis 9, 257 14514; PWR5-NEXT: ori 7, 7, 3855 14515; PWR5-NEXT: and 4, 4, 6 14516; PWR5-NEXT: rldicl 6, 3, 60, 4 14517; PWR5-NEXT: ori 9, 9, 257 14518; PWR5-NEXT: rldimi 7, 7, 32, 0 14519; PWR5-NEXT: add 4, 5, 4 14520; PWR5-NEXT: add 3, 3, 6 14521; PWR5-NEXT: rldimi 9, 9, 32, 0 14522; PWR5-NEXT: rldicl 5, 4, 60, 4 14523; PWR5-NEXT: and 3, 3, 7 14524; PWR5-NEXT: add 4, 4, 5 14525; PWR5-NEXT: mulld 3, 3, 9 14526; PWR5-NEXT: and 4, 4, 7 14527; PWR5-NEXT: rldicl 3, 3, 8, 56 14528; PWR5-NEXT: mulld 4, 4, 9 14529; PWR5-NEXT: li 5, 11 14530; PWR5-NEXT: subfic 3, 3, 11 14531; PWR5-NEXT: rldicl 4, 4, 8, 56 14532; PWR5-NEXT: subfe 3, 5, 5 14533; PWR5-NEXT: subfic 4, 4, 11 14534; PWR5-NEXT: subfe 4, 5, 5 14535; PWR5-NEXT: blr 14536; 14537; PWR6-LABEL: ugt_11_v2i64: 14538; PWR6: # %bb.0: 14539; PWR6-NEXT: lis 5, 21845 14540; PWR6-NEXT: lis 6, 13107 14541; PWR6-NEXT: ori 5, 5, 21845 14542; PWR6-NEXT: rotldi 8, 4, 63 14543; PWR6-NEXT: rotldi 9, 3, 63 14544; PWR6-NEXT: rldimi 5, 5, 32, 0 14545; PWR6-NEXT: and 8, 8, 5 14546; PWR6-NEXT: and 5, 9, 5 14547; PWR6-NEXT: ori 6, 6, 13107 14548; PWR6-NEXT: sub 3, 3, 5 14549; PWR6-NEXT: rldimi 6, 6, 32, 0 14550; PWR6-NEXT: sub 4, 4, 8 14551; PWR6-NEXT: and 8, 3, 6 14552; PWR6-NEXT: rotldi 3, 3, 62 14553; PWR6-NEXT: and 3, 3, 6 14554; PWR6-NEXT: lis 7, 3855 14555; PWR6-NEXT: and 5, 4, 6 14556; PWR6-NEXT: rotldi 4, 4, 62 14557; PWR6-NEXT: add 3, 8, 3 14558; PWR6-NEXT: lis 9, 257 14559; PWR6-NEXT: ori 7, 7, 3855 14560; PWR6-NEXT: and 4, 4, 6 14561; PWR6-NEXT: rldicl 6, 3, 60, 4 14562; PWR6-NEXT: ori 9, 9, 257 14563; PWR6-NEXT: rldimi 7, 7, 32, 0 14564; PWR6-NEXT: add 4, 5, 4 14565; PWR6-NEXT: add 3, 3, 6 14566; PWR6-NEXT: rldimi 9, 9, 32, 0 14567; PWR6-NEXT: rldicl 5, 4, 60, 4 14568; PWR6-NEXT: and 3, 3, 7 14569; PWR6-NEXT: add 4, 4, 5 14570; PWR6-NEXT: mulld 3, 3, 9 14571; PWR6-NEXT: and 4, 4, 7 14572; PWR6-NEXT: rldicl 3, 3, 8, 56 14573; PWR6-NEXT: mulld 4, 4, 9 14574; PWR6-NEXT: li 5, 11 14575; PWR6-NEXT: subfic 3, 3, 11 14576; PWR6-NEXT: rldicl 4, 4, 8, 56 14577; PWR6-NEXT: subfe 3, 5, 5 14578; PWR6-NEXT: subfic 4, 4, 11 14579; PWR6-NEXT: subfe 4, 5, 5 14580; PWR6-NEXT: blr 14581; 14582; PWR7-LABEL: ugt_11_v2i64: 14583; PWR7: # %bb.0: 14584; PWR7-NEXT: addi 3, 1, -32 14585; PWR7-NEXT: li 5, 0 14586; PWR7-NEXT: li 6, -1 14587; PWR7-NEXT: stxvd2x 34, 0, 3 14588; PWR7-NEXT: ld 3, -24(1) 14589; PWR7-NEXT: ld 4, -32(1) 14590; PWR7-NEXT: popcntd 3, 3 14591; PWR7-NEXT: popcntd 4, 4 14592; PWR7-NEXT: cmpldi 3, 11 14593; PWR7-NEXT: iselgt 3, 6, 5 14594; PWR7-NEXT: cmpldi 4, 11 14595; PWR7-NEXT: iselgt 4, 6, 5 14596; PWR7-NEXT: std 3, -8(1) 14597; PWR7-NEXT: addi 3, 1, -16 14598; PWR7-NEXT: std 4, -16(1) 14599; PWR7-NEXT: lxvd2x 34, 0, 3 14600; PWR7-NEXT: blr 14601; 14602; PWR8-LABEL: ugt_11_v2i64: 14603; PWR8: # %bb.0: 14604; PWR8-NEXT: addis 3, 2, .LCPI120_0@toc@ha 14605; PWR8-NEXT: vpopcntd 2, 2 14606; PWR8-NEXT: addi 3, 3, .LCPI120_0@toc@l 14607; PWR8-NEXT: lxvd2x 35, 0, 3 14608; PWR8-NEXT: vcmpgtud 2, 2, 3 14609; PWR8-NEXT: blr 14610; 14611; PWR9-LABEL: ugt_11_v2i64: 14612; PWR9: # %bb.0: 14613; PWR9-NEXT: addis 3, 2, .LCPI120_0@toc@ha 14614; PWR9-NEXT: vpopcntd 2, 2 14615; PWR9-NEXT: addi 3, 3, .LCPI120_0@toc@l 14616; PWR9-NEXT: lxvx 35, 0, 3 14617; PWR9-NEXT: vcmpgtud 2, 2, 3 14618; PWR9-NEXT: blr 14619 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14620 %3 = icmp ugt <2 x i64> %2, <i64 11, i64 11> 14621 %4 = sext <2 x i1> %3 to <2 x i64> 14622 ret <2 x i64> %4 14623} 14624 14625define <2 x i64> @ult_12_v2i64(<2 x i64> %0) { 14626; PWR5-LABEL: ult_12_v2i64: 14627; PWR5: # %bb.0: 14628; PWR5-NEXT: lis 5, 21845 14629; PWR5-NEXT: lis 6, 13107 14630; PWR5-NEXT: ori 5, 5, 21845 14631; PWR5-NEXT: rotldi 8, 4, 63 14632; PWR5-NEXT: rotldi 9, 3, 63 14633; PWR5-NEXT: rldimi 5, 5, 32, 0 14634; PWR5-NEXT: and 8, 8, 5 14635; PWR5-NEXT: and 5, 9, 5 14636; PWR5-NEXT: ori 6, 6, 13107 14637; PWR5-NEXT: sub 3, 3, 5 14638; PWR5-NEXT: rldimi 6, 6, 32, 0 14639; PWR5-NEXT: sub 4, 4, 8 14640; PWR5-NEXT: and 8, 3, 6 14641; PWR5-NEXT: rotldi 3, 3, 62 14642; PWR5-NEXT: and 3, 3, 6 14643; PWR5-NEXT: lis 7, 3855 14644; PWR5-NEXT: and 5, 4, 6 14645; PWR5-NEXT: rotldi 4, 4, 62 14646; PWR5-NEXT: add 3, 8, 3 14647; PWR5-NEXT: lis 9, 257 14648; PWR5-NEXT: ori 7, 7, 3855 14649; PWR5-NEXT: and 4, 4, 6 14650; PWR5-NEXT: rldicl 6, 3, 60, 4 14651; PWR5-NEXT: ori 9, 9, 257 14652; PWR5-NEXT: rldimi 7, 7, 32, 0 14653; PWR5-NEXT: add 4, 5, 4 14654; PWR5-NEXT: add 3, 3, 6 14655; PWR5-NEXT: rldimi 9, 9, 32, 0 14656; PWR5-NEXT: rldicl 5, 4, 60, 4 14657; PWR5-NEXT: and 3, 3, 7 14658; PWR5-NEXT: add 4, 4, 5 14659; PWR5-NEXT: mulld 3, 3, 9 14660; PWR5-NEXT: and 4, 4, 7 14661; PWR5-NEXT: rldicl 3, 3, 8, 56 14662; PWR5-NEXT: li 5, 12 14663; PWR5-NEXT: mulld 4, 4, 9 14664; PWR5-NEXT: subc 6, 3, 5 14665; PWR5-NEXT: rldicl 4, 4, 8, 56 14666; PWR5-NEXT: subfe 3, 3, 3 14667; PWR5-NEXT: subc 5, 4, 5 14668; PWR5-NEXT: subfe 4, 4, 4 14669; PWR5-NEXT: blr 14670; 14671; PWR6-LABEL: ult_12_v2i64: 14672; PWR6: # %bb.0: 14673; PWR6-NEXT: lis 5, 21845 14674; PWR6-NEXT: lis 6, 13107 14675; PWR6-NEXT: ori 5, 5, 21845 14676; PWR6-NEXT: rotldi 8, 4, 63 14677; PWR6-NEXT: rotldi 9, 3, 63 14678; PWR6-NEXT: rldimi 5, 5, 32, 0 14679; PWR6-NEXT: and 8, 8, 5 14680; PWR6-NEXT: and 5, 9, 5 14681; PWR6-NEXT: ori 6, 6, 13107 14682; PWR6-NEXT: sub 3, 3, 5 14683; PWR6-NEXT: rldimi 6, 6, 32, 0 14684; PWR6-NEXT: sub 4, 4, 8 14685; PWR6-NEXT: and 8, 3, 6 14686; PWR6-NEXT: rotldi 3, 3, 62 14687; PWR6-NEXT: and 3, 3, 6 14688; PWR6-NEXT: lis 7, 3855 14689; PWR6-NEXT: and 5, 4, 6 14690; PWR6-NEXT: rotldi 4, 4, 62 14691; PWR6-NEXT: add 3, 8, 3 14692; PWR6-NEXT: lis 9, 257 14693; PWR6-NEXT: ori 7, 7, 3855 14694; PWR6-NEXT: and 4, 4, 6 14695; PWR6-NEXT: rldicl 6, 3, 60, 4 14696; PWR6-NEXT: ori 9, 9, 257 14697; PWR6-NEXT: rldimi 7, 7, 32, 0 14698; PWR6-NEXT: add 4, 5, 4 14699; PWR6-NEXT: add 3, 3, 6 14700; PWR6-NEXT: rldimi 9, 9, 32, 0 14701; PWR6-NEXT: rldicl 5, 4, 60, 4 14702; PWR6-NEXT: and 3, 3, 7 14703; PWR6-NEXT: add 4, 4, 5 14704; PWR6-NEXT: mulld 3, 3, 9 14705; PWR6-NEXT: and 4, 4, 7 14706; PWR6-NEXT: rldicl 3, 3, 8, 56 14707; PWR6-NEXT: li 5, 12 14708; PWR6-NEXT: mulld 4, 4, 9 14709; PWR6-NEXT: subc 6, 3, 5 14710; PWR6-NEXT: rldicl 4, 4, 8, 56 14711; PWR6-NEXT: subfe 3, 3, 3 14712; PWR6-NEXT: subc 5, 4, 5 14713; PWR6-NEXT: subfe 4, 4, 4 14714; PWR6-NEXT: blr 14715; 14716; PWR7-LABEL: ult_12_v2i64: 14717; PWR7: # %bb.0: 14718; PWR7-NEXT: addi 3, 1, -32 14719; PWR7-NEXT: li 5, 0 14720; PWR7-NEXT: li 6, -1 14721; PWR7-NEXT: stxvd2x 34, 0, 3 14722; PWR7-NEXT: ld 3, -24(1) 14723; PWR7-NEXT: ld 4, -32(1) 14724; PWR7-NEXT: popcntd 3, 3 14725; PWR7-NEXT: popcntd 4, 4 14726; PWR7-NEXT: cmpldi 3, 12 14727; PWR7-NEXT: isellt 3, 6, 5 14728; PWR7-NEXT: cmpldi 4, 12 14729; PWR7-NEXT: isellt 4, 6, 5 14730; PWR7-NEXT: std 3, -8(1) 14731; PWR7-NEXT: addi 3, 1, -16 14732; PWR7-NEXT: std 4, -16(1) 14733; PWR7-NEXT: lxvd2x 34, 0, 3 14734; PWR7-NEXT: blr 14735; 14736; PWR8-LABEL: ult_12_v2i64: 14737; PWR8: # %bb.0: 14738; PWR8-NEXT: addis 3, 2, .LCPI121_0@toc@ha 14739; PWR8-NEXT: vpopcntd 2, 2 14740; PWR8-NEXT: addi 3, 3, .LCPI121_0@toc@l 14741; PWR8-NEXT: lxvd2x 35, 0, 3 14742; PWR8-NEXT: vcmpgtud 2, 3, 2 14743; PWR8-NEXT: blr 14744; 14745; PWR9-LABEL: ult_12_v2i64: 14746; PWR9: # %bb.0: 14747; PWR9-NEXT: addis 3, 2, .LCPI121_0@toc@ha 14748; PWR9-NEXT: vpopcntd 2, 2 14749; PWR9-NEXT: addi 3, 3, .LCPI121_0@toc@l 14750; PWR9-NEXT: lxvx 35, 0, 3 14751; PWR9-NEXT: vcmpgtud 2, 3, 2 14752; PWR9-NEXT: blr 14753 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14754 %3 = icmp ult <2 x i64> %2, <i64 12, i64 12> 14755 %4 = sext <2 x i1> %3 to <2 x i64> 14756 ret <2 x i64> %4 14757} 14758 14759define <2 x i64> @ugt_12_v2i64(<2 x i64> %0) { 14760; PWR5-LABEL: ugt_12_v2i64: 14761; PWR5: # %bb.0: 14762; PWR5-NEXT: lis 5, 21845 14763; PWR5-NEXT: lis 6, 13107 14764; PWR5-NEXT: ori 5, 5, 21845 14765; PWR5-NEXT: rotldi 8, 4, 63 14766; PWR5-NEXT: rotldi 9, 3, 63 14767; PWR5-NEXT: rldimi 5, 5, 32, 0 14768; PWR5-NEXT: and 8, 8, 5 14769; PWR5-NEXT: and 5, 9, 5 14770; PWR5-NEXT: ori 6, 6, 13107 14771; PWR5-NEXT: sub 3, 3, 5 14772; PWR5-NEXT: rldimi 6, 6, 32, 0 14773; PWR5-NEXT: sub 4, 4, 8 14774; PWR5-NEXT: and 8, 3, 6 14775; PWR5-NEXT: rotldi 3, 3, 62 14776; PWR5-NEXT: and 3, 3, 6 14777; PWR5-NEXT: lis 7, 3855 14778; PWR5-NEXT: and 5, 4, 6 14779; PWR5-NEXT: rotldi 4, 4, 62 14780; PWR5-NEXT: add 3, 8, 3 14781; PWR5-NEXT: lis 9, 257 14782; PWR5-NEXT: ori 7, 7, 3855 14783; PWR5-NEXT: and 4, 4, 6 14784; PWR5-NEXT: rldicl 6, 3, 60, 4 14785; PWR5-NEXT: ori 9, 9, 257 14786; PWR5-NEXT: rldimi 7, 7, 32, 0 14787; PWR5-NEXT: add 4, 5, 4 14788; PWR5-NEXT: add 3, 3, 6 14789; PWR5-NEXT: rldimi 9, 9, 32, 0 14790; PWR5-NEXT: rldicl 5, 4, 60, 4 14791; PWR5-NEXT: and 3, 3, 7 14792; PWR5-NEXT: add 4, 4, 5 14793; PWR5-NEXT: mulld 3, 3, 9 14794; PWR5-NEXT: and 4, 4, 7 14795; PWR5-NEXT: rldicl 3, 3, 8, 56 14796; PWR5-NEXT: mulld 4, 4, 9 14797; PWR5-NEXT: li 5, 12 14798; PWR5-NEXT: subfic 3, 3, 12 14799; PWR5-NEXT: rldicl 4, 4, 8, 56 14800; PWR5-NEXT: subfe 3, 5, 5 14801; PWR5-NEXT: subfic 4, 4, 12 14802; PWR5-NEXT: subfe 4, 5, 5 14803; PWR5-NEXT: blr 14804; 14805; PWR6-LABEL: ugt_12_v2i64: 14806; PWR6: # %bb.0: 14807; PWR6-NEXT: lis 5, 21845 14808; PWR6-NEXT: lis 6, 13107 14809; PWR6-NEXT: ori 5, 5, 21845 14810; PWR6-NEXT: rotldi 8, 4, 63 14811; PWR6-NEXT: rotldi 9, 3, 63 14812; PWR6-NEXT: rldimi 5, 5, 32, 0 14813; PWR6-NEXT: and 8, 8, 5 14814; PWR6-NEXT: and 5, 9, 5 14815; PWR6-NEXT: ori 6, 6, 13107 14816; PWR6-NEXT: sub 3, 3, 5 14817; PWR6-NEXT: rldimi 6, 6, 32, 0 14818; PWR6-NEXT: sub 4, 4, 8 14819; PWR6-NEXT: and 8, 3, 6 14820; PWR6-NEXT: rotldi 3, 3, 62 14821; PWR6-NEXT: and 3, 3, 6 14822; PWR6-NEXT: lis 7, 3855 14823; PWR6-NEXT: and 5, 4, 6 14824; PWR6-NEXT: rotldi 4, 4, 62 14825; PWR6-NEXT: add 3, 8, 3 14826; PWR6-NEXT: lis 9, 257 14827; PWR6-NEXT: ori 7, 7, 3855 14828; PWR6-NEXT: and 4, 4, 6 14829; PWR6-NEXT: rldicl 6, 3, 60, 4 14830; PWR6-NEXT: ori 9, 9, 257 14831; PWR6-NEXT: rldimi 7, 7, 32, 0 14832; PWR6-NEXT: add 4, 5, 4 14833; PWR6-NEXT: add 3, 3, 6 14834; PWR6-NEXT: rldimi 9, 9, 32, 0 14835; PWR6-NEXT: rldicl 5, 4, 60, 4 14836; PWR6-NEXT: and 3, 3, 7 14837; PWR6-NEXT: add 4, 4, 5 14838; PWR6-NEXT: mulld 3, 3, 9 14839; PWR6-NEXT: and 4, 4, 7 14840; PWR6-NEXT: rldicl 3, 3, 8, 56 14841; PWR6-NEXT: mulld 4, 4, 9 14842; PWR6-NEXT: li 5, 12 14843; PWR6-NEXT: subfic 3, 3, 12 14844; PWR6-NEXT: rldicl 4, 4, 8, 56 14845; PWR6-NEXT: subfe 3, 5, 5 14846; PWR6-NEXT: subfic 4, 4, 12 14847; PWR6-NEXT: subfe 4, 5, 5 14848; PWR6-NEXT: blr 14849; 14850; PWR7-LABEL: ugt_12_v2i64: 14851; PWR7: # %bb.0: 14852; PWR7-NEXT: addi 3, 1, -32 14853; PWR7-NEXT: li 5, 0 14854; PWR7-NEXT: li 6, -1 14855; PWR7-NEXT: stxvd2x 34, 0, 3 14856; PWR7-NEXT: ld 3, -24(1) 14857; PWR7-NEXT: ld 4, -32(1) 14858; PWR7-NEXT: popcntd 3, 3 14859; PWR7-NEXT: popcntd 4, 4 14860; PWR7-NEXT: cmpldi 3, 12 14861; PWR7-NEXT: iselgt 3, 6, 5 14862; PWR7-NEXT: cmpldi 4, 12 14863; PWR7-NEXT: iselgt 4, 6, 5 14864; PWR7-NEXT: std 3, -8(1) 14865; PWR7-NEXT: addi 3, 1, -16 14866; PWR7-NEXT: std 4, -16(1) 14867; PWR7-NEXT: lxvd2x 34, 0, 3 14868; PWR7-NEXT: blr 14869; 14870; PWR8-LABEL: ugt_12_v2i64: 14871; PWR8: # %bb.0: 14872; PWR8-NEXT: addis 3, 2, .LCPI122_0@toc@ha 14873; PWR8-NEXT: vpopcntd 2, 2 14874; PWR8-NEXT: addi 3, 3, .LCPI122_0@toc@l 14875; PWR8-NEXT: lxvd2x 35, 0, 3 14876; PWR8-NEXT: vcmpgtud 2, 2, 3 14877; PWR8-NEXT: blr 14878; 14879; PWR9-LABEL: ugt_12_v2i64: 14880; PWR9: # %bb.0: 14881; PWR9-NEXT: addis 3, 2, .LCPI122_0@toc@ha 14882; PWR9-NEXT: vpopcntd 2, 2 14883; PWR9-NEXT: addi 3, 3, .LCPI122_0@toc@l 14884; PWR9-NEXT: lxvx 35, 0, 3 14885; PWR9-NEXT: vcmpgtud 2, 2, 3 14886; PWR9-NEXT: blr 14887 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14888 %3 = icmp ugt <2 x i64> %2, <i64 12, i64 12> 14889 %4 = sext <2 x i1> %3 to <2 x i64> 14890 ret <2 x i64> %4 14891} 14892 14893define <2 x i64> @ult_13_v2i64(<2 x i64> %0) { 14894; PWR5-LABEL: ult_13_v2i64: 14895; PWR5: # %bb.0: 14896; PWR5-NEXT: lis 5, 21845 14897; PWR5-NEXT: lis 6, 13107 14898; PWR5-NEXT: ori 5, 5, 21845 14899; PWR5-NEXT: rotldi 8, 4, 63 14900; PWR5-NEXT: rotldi 9, 3, 63 14901; PWR5-NEXT: rldimi 5, 5, 32, 0 14902; PWR5-NEXT: and 8, 8, 5 14903; PWR5-NEXT: and 5, 9, 5 14904; PWR5-NEXT: ori 6, 6, 13107 14905; PWR5-NEXT: sub 3, 3, 5 14906; PWR5-NEXT: rldimi 6, 6, 32, 0 14907; PWR5-NEXT: sub 4, 4, 8 14908; PWR5-NEXT: and 8, 3, 6 14909; PWR5-NEXT: rotldi 3, 3, 62 14910; PWR5-NEXT: and 3, 3, 6 14911; PWR5-NEXT: lis 7, 3855 14912; PWR5-NEXT: and 5, 4, 6 14913; PWR5-NEXT: rotldi 4, 4, 62 14914; PWR5-NEXT: add 3, 8, 3 14915; PWR5-NEXT: lis 9, 257 14916; PWR5-NEXT: ori 7, 7, 3855 14917; PWR5-NEXT: and 4, 4, 6 14918; PWR5-NEXT: rldicl 6, 3, 60, 4 14919; PWR5-NEXT: ori 9, 9, 257 14920; PWR5-NEXT: rldimi 7, 7, 32, 0 14921; PWR5-NEXT: add 4, 5, 4 14922; PWR5-NEXT: add 3, 3, 6 14923; PWR5-NEXT: rldimi 9, 9, 32, 0 14924; PWR5-NEXT: rldicl 5, 4, 60, 4 14925; PWR5-NEXT: and 3, 3, 7 14926; PWR5-NEXT: add 4, 4, 5 14927; PWR5-NEXT: mulld 3, 3, 9 14928; PWR5-NEXT: and 4, 4, 7 14929; PWR5-NEXT: rldicl 3, 3, 8, 56 14930; PWR5-NEXT: li 5, 13 14931; PWR5-NEXT: mulld 4, 4, 9 14932; PWR5-NEXT: subc 6, 3, 5 14933; PWR5-NEXT: rldicl 4, 4, 8, 56 14934; PWR5-NEXT: subfe 3, 3, 3 14935; PWR5-NEXT: subc 5, 4, 5 14936; PWR5-NEXT: subfe 4, 4, 4 14937; PWR5-NEXT: blr 14938; 14939; PWR6-LABEL: ult_13_v2i64: 14940; PWR6: # %bb.0: 14941; PWR6-NEXT: lis 5, 21845 14942; PWR6-NEXT: lis 6, 13107 14943; PWR6-NEXT: ori 5, 5, 21845 14944; PWR6-NEXT: rotldi 8, 4, 63 14945; PWR6-NEXT: rotldi 9, 3, 63 14946; PWR6-NEXT: rldimi 5, 5, 32, 0 14947; PWR6-NEXT: and 8, 8, 5 14948; PWR6-NEXT: and 5, 9, 5 14949; PWR6-NEXT: ori 6, 6, 13107 14950; PWR6-NEXT: sub 3, 3, 5 14951; PWR6-NEXT: rldimi 6, 6, 32, 0 14952; PWR6-NEXT: sub 4, 4, 8 14953; PWR6-NEXT: and 8, 3, 6 14954; PWR6-NEXT: rotldi 3, 3, 62 14955; PWR6-NEXT: and 3, 3, 6 14956; PWR6-NEXT: lis 7, 3855 14957; PWR6-NEXT: and 5, 4, 6 14958; PWR6-NEXT: rotldi 4, 4, 62 14959; PWR6-NEXT: add 3, 8, 3 14960; PWR6-NEXT: lis 9, 257 14961; PWR6-NEXT: ori 7, 7, 3855 14962; PWR6-NEXT: and 4, 4, 6 14963; PWR6-NEXT: rldicl 6, 3, 60, 4 14964; PWR6-NEXT: ori 9, 9, 257 14965; PWR6-NEXT: rldimi 7, 7, 32, 0 14966; PWR6-NEXT: add 4, 5, 4 14967; PWR6-NEXT: add 3, 3, 6 14968; PWR6-NEXT: rldimi 9, 9, 32, 0 14969; PWR6-NEXT: rldicl 5, 4, 60, 4 14970; PWR6-NEXT: and 3, 3, 7 14971; PWR6-NEXT: add 4, 4, 5 14972; PWR6-NEXT: mulld 3, 3, 9 14973; PWR6-NEXT: and 4, 4, 7 14974; PWR6-NEXT: rldicl 3, 3, 8, 56 14975; PWR6-NEXT: li 5, 13 14976; PWR6-NEXT: mulld 4, 4, 9 14977; PWR6-NEXT: subc 6, 3, 5 14978; PWR6-NEXT: rldicl 4, 4, 8, 56 14979; PWR6-NEXT: subfe 3, 3, 3 14980; PWR6-NEXT: subc 5, 4, 5 14981; PWR6-NEXT: subfe 4, 4, 4 14982; PWR6-NEXT: blr 14983; 14984; PWR7-LABEL: ult_13_v2i64: 14985; PWR7: # %bb.0: 14986; PWR7-NEXT: addi 3, 1, -32 14987; PWR7-NEXT: li 5, 0 14988; PWR7-NEXT: li 6, -1 14989; PWR7-NEXT: stxvd2x 34, 0, 3 14990; PWR7-NEXT: ld 3, -24(1) 14991; PWR7-NEXT: ld 4, -32(1) 14992; PWR7-NEXT: popcntd 3, 3 14993; PWR7-NEXT: popcntd 4, 4 14994; PWR7-NEXT: cmpldi 3, 13 14995; PWR7-NEXT: isellt 3, 6, 5 14996; PWR7-NEXT: cmpldi 4, 13 14997; PWR7-NEXT: isellt 4, 6, 5 14998; PWR7-NEXT: std 3, -8(1) 14999; PWR7-NEXT: addi 3, 1, -16 15000; PWR7-NEXT: std 4, -16(1) 15001; PWR7-NEXT: lxvd2x 34, 0, 3 15002; PWR7-NEXT: blr 15003; 15004; PWR8-LABEL: ult_13_v2i64: 15005; PWR8: # %bb.0: 15006; PWR8-NEXT: addis 3, 2, .LCPI123_0@toc@ha 15007; PWR8-NEXT: vpopcntd 2, 2 15008; PWR8-NEXT: addi 3, 3, .LCPI123_0@toc@l 15009; PWR8-NEXT: lxvd2x 35, 0, 3 15010; PWR8-NEXT: vcmpgtud 2, 3, 2 15011; PWR8-NEXT: blr 15012; 15013; PWR9-LABEL: ult_13_v2i64: 15014; PWR9: # %bb.0: 15015; PWR9-NEXT: addis 3, 2, .LCPI123_0@toc@ha 15016; PWR9-NEXT: vpopcntd 2, 2 15017; PWR9-NEXT: addi 3, 3, .LCPI123_0@toc@l 15018; PWR9-NEXT: lxvx 35, 0, 3 15019; PWR9-NEXT: vcmpgtud 2, 3, 2 15020; PWR9-NEXT: blr 15021 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15022 %3 = icmp ult <2 x i64> %2, <i64 13, i64 13> 15023 %4 = sext <2 x i1> %3 to <2 x i64> 15024 ret <2 x i64> %4 15025} 15026 15027define <2 x i64> @ugt_13_v2i64(<2 x i64> %0) { 15028; PWR5-LABEL: ugt_13_v2i64: 15029; PWR5: # %bb.0: 15030; PWR5-NEXT: lis 5, 21845 15031; PWR5-NEXT: lis 6, 13107 15032; PWR5-NEXT: ori 5, 5, 21845 15033; PWR5-NEXT: rotldi 8, 4, 63 15034; PWR5-NEXT: rotldi 9, 3, 63 15035; PWR5-NEXT: rldimi 5, 5, 32, 0 15036; PWR5-NEXT: and 8, 8, 5 15037; PWR5-NEXT: and 5, 9, 5 15038; PWR5-NEXT: ori 6, 6, 13107 15039; PWR5-NEXT: sub 3, 3, 5 15040; PWR5-NEXT: rldimi 6, 6, 32, 0 15041; PWR5-NEXT: sub 4, 4, 8 15042; PWR5-NEXT: and 8, 3, 6 15043; PWR5-NEXT: rotldi 3, 3, 62 15044; PWR5-NEXT: and 3, 3, 6 15045; PWR5-NEXT: lis 7, 3855 15046; PWR5-NEXT: and 5, 4, 6 15047; PWR5-NEXT: rotldi 4, 4, 62 15048; PWR5-NEXT: add 3, 8, 3 15049; PWR5-NEXT: lis 9, 257 15050; PWR5-NEXT: ori 7, 7, 3855 15051; PWR5-NEXT: and 4, 4, 6 15052; PWR5-NEXT: rldicl 6, 3, 60, 4 15053; PWR5-NEXT: ori 9, 9, 257 15054; PWR5-NEXT: rldimi 7, 7, 32, 0 15055; PWR5-NEXT: add 4, 5, 4 15056; PWR5-NEXT: add 3, 3, 6 15057; PWR5-NEXT: rldimi 9, 9, 32, 0 15058; PWR5-NEXT: rldicl 5, 4, 60, 4 15059; PWR5-NEXT: and 3, 3, 7 15060; PWR5-NEXT: add 4, 4, 5 15061; PWR5-NEXT: mulld 3, 3, 9 15062; PWR5-NEXT: and 4, 4, 7 15063; PWR5-NEXT: rldicl 3, 3, 8, 56 15064; PWR5-NEXT: mulld 4, 4, 9 15065; PWR5-NEXT: li 5, 13 15066; PWR5-NEXT: subfic 3, 3, 13 15067; PWR5-NEXT: rldicl 4, 4, 8, 56 15068; PWR5-NEXT: subfe 3, 5, 5 15069; PWR5-NEXT: subfic 4, 4, 13 15070; PWR5-NEXT: subfe 4, 5, 5 15071; PWR5-NEXT: blr 15072; 15073; PWR6-LABEL: ugt_13_v2i64: 15074; PWR6: # %bb.0: 15075; PWR6-NEXT: lis 5, 21845 15076; PWR6-NEXT: lis 6, 13107 15077; PWR6-NEXT: ori 5, 5, 21845 15078; PWR6-NEXT: rotldi 8, 4, 63 15079; PWR6-NEXT: rotldi 9, 3, 63 15080; PWR6-NEXT: rldimi 5, 5, 32, 0 15081; PWR6-NEXT: and 8, 8, 5 15082; PWR6-NEXT: and 5, 9, 5 15083; PWR6-NEXT: ori 6, 6, 13107 15084; PWR6-NEXT: sub 3, 3, 5 15085; PWR6-NEXT: rldimi 6, 6, 32, 0 15086; PWR6-NEXT: sub 4, 4, 8 15087; PWR6-NEXT: and 8, 3, 6 15088; PWR6-NEXT: rotldi 3, 3, 62 15089; PWR6-NEXT: and 3, 3, 6 15090; PWR6-NEXT: lis 7, 3855 15091; PWR6-NEXT: and 5, 4, 6 15092; PWR6-NEXT: rotldi 4, 4, 62 15093; PWR6-NEXT: add 3, 8, 3 15094; PWR6-NEXT: lis 9, 257 15095; PWR6-NEXT: ori 7, 7, 3855 15096; PWR6-NEXT: and 4, 4, 6 15097; PWR6-NEXT: rldicl 6, 3, 60, 4 15098; PWR6-NEXT: ori 9, 9, 257 15099; PWR6-NEXT: rldimi 7, 7, 32, 0 15100; PWR6-NEXT: add 4, 5, 4 15101; PWR6-NEXT: add 3, 3, 6 15102; PWR6-NEXT: rldimi 9, 9, 32, 0 15103; PWR6-NEXT: rldicl 5, 4, 60, 4 15104; PWR6-NEXT: and 3, 3, 7 15105; PWR6-NEXT: add 4, 4, 5 15106; PWR6-NEXT: mulld 3, 3, 9 15107; PWR6-NEXT: and 4, 4, 7 15108; PWR6-NEXT: rldicl 3, 3, 8, 56 15109; PWR6-NEXT: mulld 4, 4, 9 15110; PWR6-NEXT: li 5, 13 15111; PWR6-NEXT: subfic 3, 3, 13 15112; PWR6-NEXT: rldicl 4, 4, 8, 56 15113; PWR6-NEXT: subfe 3, 5, 5 15114; PWR6-NEXT: subfic 4, 4, 13 15115; PWR6-NEXT: subfe 4, 5, 5 15116; PWR6-NEXT: blr 15117; 15118; PWR7-LABEL: ugt_13_v2i64: 15119; PWR7: # %bb.0: 15120; PWR7-NEXT: addi 3, 1, -32 15121; PWR7-NEXT: li 5, 0 15122; PWR7-NEXT: li 6, -1 15123; PWR7-NEXT: stxvd2x 34, 0, 3 15124; PWR7-NEXT: ld 3, -24(1) 15125; PWR7-NEXT: ld 4, -32(1) 15126; PWR7-NEXT: popcntd 3, 3 15127; PWR7-NEXT: popcntd 4, 4 15128; PWR7-NEXT: cmpldi 3, 13 15129; PWR7-NEXT: iselgt 3, 6, 5 15130; PWR7-NEXT: cmpldi 4, 13 15131; PWR7-NEXT: iselgt 4, 6, 5 15132; PWR7-NEXT: std 3, -8(1) 15133; PWR7-NEXT: addi 3, 1, -16 15134; PWR7-NEXT: std 4, -16(1) 15135; PWR7-NEXT: lxvd2x 34, 0, 3 15136; PWR7-NEXT: blr 15137; 15138; PWR8-LABEL: ugt_13_v2i64: 15139; PWR8: # %bb.0: 15140; PWR8-NEXT: addis 3, 2, .LCPI124_0@toc@ha 15141; PWR8-NEXT: vpopcntd 2, 2 15142; PWR8-NEXT: addi 3, 3, .LCPI124_0@toc@l 15143; PWR8-NEXT: lxvd2x 35, 0, 3 15144; PWR8-NEXT: vcmpgtud 2, 2, 3 15145; PWR8-NEXT: blr 15146; 15147; PWR9-LABEL: ugt_13_v2i64: 15148; PWR9: # %bb.0: 15149; PWR9-NEXT: addis 3, 2, .LCPI124_0@toc@ha 15150; PWR9-NEXT: vpopcntd 2, 2 15151; PWR9-NEXT: addi 3, 3, .LCPI124_0@toc@l 15152; PWR9-NEXT: lxvx 35, 0, 3 15153; PWR9-NEXT: vcmpgtud 2, 2, 3 15154; PWR9-NEXT: blr 15155 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15156 %3 = icmp ugt <2 x i64> %2, <i64 13, i64 13> 15157 %4 = sext <2 x i1> %3 to <2 x i64> 15158 ret <2 x i64> %4 15159} 15160 15161define <2 x i64> @ult_14_v2i64(<2 x i64> %0) { 15162; PWR5-LABEL: ult_14_v2i64: 15163; PWR5: # %bb.0: 15164; PWR5-NEXT: lis 5, 21845 15165; PWR5-NEXT: lis 6, 13107 15166; PWR5-NEXT: ori 5, 5, 21845 15167; PWR5-NEXT: rotldi 8, 4, 63 15168; PWR5-NEXT: rotldi 9, 3, 63 15169; PWR5-NEXT: rldimi 5, 5, 32, 0 15170; PWR5-NEXT: and 8, 8, 5 15171; PWR5-NEXT: and 5, 9, 5 15172; PWR5-NEXT: ori 6, 6, 13107 15173; PWR5-NEXT: sub 3, 3, 5 15174; PWR5-NEXT: rldimi 6, 6, 32, 0 15175; PWR5-NEXT: sub 4, 4, 8 15176; PWR5-NEXT: and 8, 3, 6 15177; PWR5-NEXT: rotldi 3, 3, 62 15178; PWR5-NEXT: and 3, 3, 6 15179; PWR5-NEXT: lis 7, 3855 15180; PWR5-NEXT: and 5, 4, 6 15181; PWR5-NEXT: rotldi 4, 4, 62 15182; PWR5-NEXT: add 3, 8, 3 15183; PWR5-NEXT: lis 9, 257 15184; PWR5-NEXT: ori 7, 7, 3855 15185; PWR5-NEXT: and 4, 4, 6 15186; PWR5-NEXT: rldicl 6, 3, 60, 4 15187; PWR5-NEXT: ori 9, 9, 257 15188; PWR5-NEXT: rldimi 7, 7, 32, 0 15189; PWR5-NEXT: add 4, 5, 4 15190; PWR5-NEXT: add 3, 3, 6 15191; PWR5-NEXT: rldimi 9, 9, 32, 0 15192; PWR5-NEXT: rldicl 5, 4, 60, 4 15193; PWR5-NEXT: and 3, 3, 7 15194; PWR5-NEXT: add 4, 4, 5 15195; PWR5-NEXT: mulld 3, 3, 9 15196; PWR5-NEXT: and 4, 4, 7 15197; PWR5-NEXT: rldicl 3, 3, 8, 56 15198; PWR5-NEXT: li 5, 14 15199; PWR5-NEXT: mulld 4, 4, 9 15200; PWR5-NEXT: subc 6, 3, 5 15201; PWR5-NEXT: rldicl 4, 4, 8, 56 15202; PWR5-NEXT: subfe 3, 3, 3 15203; PWR5-NEXT: subc 5, 4, 5 15204; PWR5-NEXT: subfe 4, 4, 4 15205; PWR5-NEXT: blr 15206; 15207; PWR6-LABEL: ult_14_v2i64: 15208; PWR6: # %bb.0: 15209; PWR6-NEXT: lis 5, 21845 15210; PWR6-NEXT: lis 6, 13107 15211; PWR6-NEXT: ori 5, 5, 21845 15212; PWR6-NEXT: rotldi 8, 4, 63 15213; PWR6-NEXT: rotldi 9, 3, 63 15214; PWR6-NEXT: rldimi 5, 5, 32, 0 15215; PWR6-NEXT: and 8, 8, 5 15216; PWR6-NEXT: and 5, 9, 5 15217; PWR6-NEXT: ori 6, 6, 13107 15218; PWR6-NEXT: sub 3, 3, 5 15219; PWR6-NEXT: rldimi 6, 6, 32, 0 15220; PWR6-NEXT: sub 4, 4, 8 15221; PWR6-NEXT: and 8, 3, 6 15222; PWR6-NEXT: rotldi 3, 3, 62 15223; PWR6-NEXT: and 3, 3, 6 15224; PWR6-NEXT: lis 7, 3855 15225; PWR6-NEXT: and 5, 4, 6 15226; PWR6-NEXT: rotldi 4, 4, 62 15227; PWR6-NEXT: add 3, 8, 3 15228; PWR6-NEXT: lis 9, 257 15229; PWR6-NEXT: ori 7, 7, 3855 15230; PWR6-NEXT: and 4, 4, 6 15231; PWR6-NEXT: rldicl 6, 3, 60, 4 15232; PWR6-NEXT: ori 9, 9, 257 15233; PWR6-NEXT: rldimi 7, 7, 32, 0 15234; PWR6-NEXT: add 4, 5, 4 15235; PWR6-NEXT: add 3, 3, 6 15236; PWR6-NEXT: rldimi 9, 9, 32, 0 15237; PWR6-NEXT: rldicl 5, 4, 60, 4 15238; PWR6-NEXT: and 3, 3, 7 15239; PWR6-NEXT: add 4, 4, 5 15240; PWR6-NEXT: mulld 3, 3, 9 15241; PWR6-NEXT: and 4, 4, 7 15242; PWR6-NEXT: rldicl 3, 3, 8, 56 15243; PWR6-NEXT: li 5, 14 15244; PWR6-NEXT: mulld 4, 4, 9 15245; PWR6-NEXT: subc 6, 3, 5 15246; PWR6-NEXT: rldicl 4, 4, 8, 56 15247; PWR6-NEXT: subfe 3, 3, 3 15248; PWR6-NEXT: subc 5, 4, 5 15249; PWR6-NEXT: subfe 4, 4, 4 15250; PWR6-NEXT: blr 15251; 15252; PWR7-LABEL: ult_14_v2i64: 15253; PWR7: # %bb.0: 15254; PWR7-NEXT: addi 3, 1, -32 15255; PWR7-NEXT: li 5, 0 15256; PWR7-NEXT: li 6, -1 15257; PWR7-NEXT: stxvd2x 34, 0, 3 15258; PWR7-NEXT: ld 3, -24(1) 15259; PWR7-NEXT: ld 4, -32(1) 15260; PWR7-NEXT: popcntd 3, 3 15261; PWR7-NEXT: popcntd 4, 4 15262; PWR7-NEXT: cmpldi 3, 14 15263; PWR7-NEXT: isellt 3, 6, 5 15264; PWR7-NEXT: cmpldi 4, 14 15265; PWR7-NEXT: isellt 4, 6, 5 15266; PWR7-NEXT: std 3, -8(1) 15267; PWR7-NEXT: addi 3, 1, -16 15268; PWR7-NEXT: std 4, -16(1) 15269; PWR7-NEXT: lxvd2x 34, 0, 3 15270; PWR7-NEXT: blr 15271; 15272; PWR8-LABEL: ult_14_v2i64: 15273; PWR8: # %bb.0: 15274; PWR8-NEXT: addis 3, 2, .LCPI125_0@toc@ha 15275; PWR8-NEXT: vpopcntd 2, 2 15276; PWR8-NEXT: addi 3, 3, .LCPI125_0@toc@l 15277; PWR8-NEXT: lxvd2x 35, 0, 3 15278; PWR8-NEXT: vcmpgtud 2, 3, 2 15279; PWR8-NEXT: blr 15280; 15281; PWR9-LABEL: ult_14_v2i64: 15282; PWR9: # %bb.0: 15283; PWR9-NEXT: addis 3, 2, .LCPI125_0@toc@ha 15284; PWR9-NEXT: vpopcntd 2, 2 15285; PWR9-NEXT: addi 3, 3, .LCPI125_0@toc@l 15286; PWR9-NEXT: lxvx 35, 0, 3 15287; PWR9-NEXT: vcmpgtud 2, 3, 2 15288; PWR9-NEXT: blr 15289 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15290 %3 = icmp ult <2 x i64> %2, <i64 14, i64 14> 15291 %4 = sext <2 x i1> %3 to <2 x i64> 15292 ret <2 x i64> %4 15293} 15294 15295define <2 x i64> @ugt_14_v2i64(<2 x i64> %0) { 15296; PWR5-LABEL: ugt_14_v2i64: 15297; PWR5: # %bb.0: 15298; PWR5-NEXT: lis 5, 21845 15299; PWR5-NEXT: lis 6, 13107 15300; PWR5-NEXT: ori 5, 5, 21845 15301; PWR5-NEXT: rotldi 8, 4, 63 15302; PWR5-NEXT: rotldi 9, 3, 63 15303; PWR5-NEXT: rldimi 5, 5, 32, 0 15304; PWR5-NEXT: and 8, 8, 5 15305; PWR5-NEXT: and 5, 9, 5 15306; PWR5-NEXT: ori 6, 6, 13107 15307; PWR5-NEXT: sub 3, 3, 5 15308; PWR5-NEXT: rldimi 6, 6, 32, 0 15309; PWR5-NEXT: sub 4, 4, 8 15310; PWR5-NEXT: and 8, 3, 6 15311; PWR5-NEXT: rotldi 3, 3, 62 15312; PWR5-NEXT: and 3, 3, 6 15313; PWR5-NEXT: lis 7, 3855 15314; PWR5-NEXT: and 5, 4, 6 15315; PWR5-NEXT: rotldi 4, 4, 62 15316; PWR5-NEXT: add 3, 8, 3 15317; PWR5-NEXT: lis 9, 257 15318; PWR5-NEXT: ori 7, 7, 3855 15319; PWR5-NEXT: and 4, 4, 6 15320; PWR5-NEXT: rldicl 6, 3, 60, 4 15321; PWR5-NEXT: ori 9, 9, 257 15322; PWR5-NEXT: rldimi 7, 7, 32, 0 15323; PWR5-NEXT: add 4, 5, 4 15324; PWR5-NEXT: add 3, 3, 6 15325; PWR5-NEXT: rldimi 9, 9, 32, 0 15326; PWR5-NEXT: rldicl 5, 4, 60, 4 15327; PWR5-NEXT: and 3, 3, 7 15328; PWR5-NEXT: add 4, 4, 5 15329; PWR5-NEXT: mulld 3, 3, 9 15330; PWR5-NEXT: and 4, 4, 7 15331; PWR5-NEXT: rldicl 3, 3, 8, 56 15332; PWR5-NEXT: mulld 4, 4, 9 15333; PWR5-NEXT: li 5, 14 15334; PWR5-NEXT: subfic 3, 3, 14 15335; PWR5-NEXT: rldicl 4, 4, 8, 56 15336; PWR5-NEXT: subfe 3, 5, 5 15337; PWR5-NEXT: subfic 4, 4, 14 15338; PWR5-NEXT: subfe 4, 5, 5 15339; PWR5-NEXT: blr 15340; 15341; PWR6-LABEL: ugt_14_v2i64: 15342; PWR6: # %bb.0: 15343; PWR6-NEXT: lis 5, 21845 15344; PWR6-NEXT: lis 6, 13107 15345; PWR6-NEXT: ori 5, 5, 21845 15346; PWR6-NEXT: rotldi 8, 4, 63 15347; PWR6-NEXT: rotldi 9, 3, 63 15348; PWR6-NEXT: rldimi 5, 5, 32, 0 15349; PWR6-NEXT: and 8, 8, 5 15350; PWR6-NEXT: and 5, 9, 5 15351; PWR6-NEXT: ori 6, 6, 13107 15352; PWR6-NEXT: sub 3, 3, 5 15353; PWR6-NEXT: rldimi 6, 6, 32, 0 15354; PWR6-NEXT: sub 4, 4, 8 15355; PWR6-NEXT: and 8, 3, 6 15356; PWR6-NEXT: rotldi 3, 3, 62 15357; PWR6-NEXT: and 3, 3, 6 15358; PWR6-NEXT: lis 7, 3855 15359; PWR6-NEXT: and 5, 4, 6 15360; PWR6-NEXT: rotldi 4, 4, 62 15361; PWR6-NEXT: add 3, 8, 3 15362; PWR6-NEXT: lis 9, 257 15363; PWR6-NEXT: ori 7, 7, 3855 15364; PWR6-NEXT: and 4, 4, 6 15365; PWR6-NEXT: rldicl 6, 3, 60, 4 15366; PWR6-NEXT: ori 9, 9, 257 15367; PWR6-NEXT: rldimi 7, 7, 32, 0 15368; PWR6-NEXT: add 4, 5, 4 15369; PWR6-NEXT: add 3, 3, 6 15370; PWR6-NEXT: rldimi 9, 9, 32, 0 15371; PWR6-NEXT: rldicl 5, 4, 60, 4 15372; PWR6-NEXT: and 3, 3, 7 15373; PWR6-NEXT: add 4, 4, 5 15374; PWR6-NEXT: mulld 3, 3, 9 15375; PWR6-NEXT: and 4, 4, 7 15376; PWR6-NEXT: rldicl 3, 3, 8, 56 15377; PWR6-NEXT: mulld 4, 4, 9 15378; PWR6-NEXT: li 5, 14 15379; PWR6-NEXT: subfic 3, 3, 14 15380; PWR6-NEXT: rldicl 4, 4, 8, 56 15381; PWR6-NEXT: subfe 3, 5, 5 15382; PWR6-NEXT: subfic 4, 4, 14 15383; PWR6-NEXT: subfe 4, 5, 5 15384; PWR6-NEXT: blr 15385; 15386; PWR7-LABEL: ugt_14_v2i64: 15387; PWR7: # %bb.0: 15388; PWR7-NEXT: addi 3, 1, -32 15389; PWR7-NEXT: li 5, 0 15390; PWR7-NEXT: li 6, -1 15391; PWR7-NEXT: stxvd2x 34, 0, 3 15392; PWR7-NEXT: ld 3, -24(1) 15393; PWR7-NEXT: ld 4, -32(1) 15394; PWR7-NEXT: popcntd 3, 3 15395; PWR7-NEXT: popcntd 4, 4 15396; PWR7-NEXT: cmpldi 3, 14 15397; PWR7-NEXT: iselgt 3, 6, 5 15398; PWR7-NEXT: cmpldi 4, 14 15399; PWR7-NEXT: iselgt 4, 6, 5 15400; PWR7-NEXT: std 3, -8(1) 15401; PWR7-NEXT: addi 3, 1, -16 15402; PWR7-NEXT: std 4, -16(1) 15403; PWR7-NEXT: lxvd2x 34, 0, 3 15404; PWR7-NEXT: blr 15405; 15406; PWR8-LABEL: ugt_14_v2i64: 15407; PWR8: # %bb.0: 15408; PWR8-NEXT: addis 3, 2, .LCPI126_0@toc@ha 15409; PWR8-NEXT: vpopcntd 2, 2 15410; PWR8-NEXT: addi 3, 3, .LCPI126_0@toc@l 15411; PWR8-NEXT: lxvd2x 35, 0, 3 15412; PWR8-NEXT: vcmpgtud 2, 2, 3 15413; PWR8-NEXT: blr 15414; 15415; PWR9-LABEL: ugt_14_v2i64: 15416; PWR9: # %bb.0: 15417; PWR9-NEXT: addis 3, 2, .LCPI126_0@toc@ha 15418; PWR9-NEXT: vpopcntd 2, 2 15419; PWR9-NEXT: addi 3, 3, .LCPI126_0@toc@l 15420; PWR9-NEXT: lxvx 35, 0, 3 15421; PWR9-NEXT: vcmpgtud 2, 2, 3 15422; PWR9-NEXT: blr 15423 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15424 %3 = icmp ugt <2 x i64> %2, <i64 14, i64 14> 15425 %4 = sext <2 x i1> %3 to <2 x i64> 15426 ret <2 x i64> %4 15427} 15428 15429define <2 x i64> @ult_15_v2i64(<2 x i64> %0) { 15430; PWR5-LABEL: ult_15_v2i64: 15431; PWR5: # %bb.0: 15432; PWR5-NEXT: lis 5, 21845 15433; PWR5-NEXT: lis 6, 13107 15434; PWR5-NEXT: ori 5, 5, 21845 15435; PWR5-NEXT: rotldi 8, 4, 63 15436; PWR5-NEXT: rotldi 9, 3, 63 15437; PWR5-NEXT: rldimi 5, 5, 32, 0 15438; PWR5-NEXT: and 8, 8, 5 15439; PWR5-NEXT: and 5, 9, 5 15440; PWR5-NEXT: ori 6, 6, 13107 15441; PWR5-NEXT: sub 3, 3, 5 15442; PWR5-NEXT: rldimi 6, 6, 32, 0 15443; PWR5-NEXT: sub 4, 4, 8 15444; PWR5-NEXT: and 8, 3, 6 15445; PWR5-NEXT: rotldi 3, 3, 62 15446; PWR5-NEXT: and 3, 3, 6 15447; PWR5-NEXT: lis 7, 3855 15448; PWR5-NEXT: and 5, 4, 6 15449; PWR5-NEXT: rotldi 4, 4, 62 15450; PWR5-NEXT: add 3, 8, 3 15451; PWR5-NEXT: lis 9, 257 15452; PWR5-NEXT: ori 7, 7, 3855 15453; PWR5-NEXT: and 4, 4, 6 15454; PWR5-NEXT: rldicl 6, 3, 60, 4 15455; PWR5-NEXT: ori 9, 9, 257 15456; PWR5-NEXT: rldimi 7, 7, 32, 0 15457; PWR5-NEXT: add 4, 5, 4 15458; PWR5-NEXT: add 3, 3, 6 15459; PWR5-NEXT: rldimi 9, 9, 32, 0 15460; PWR5-NEXT: rldicl 5, 4, 60, 4 15461; PWR5-NEXT: and 3, 3, 7 15462; PWR5-NEXT: add 4, 4, 5 15463; PWR5-NEXT: mulld 3, 3, 9 15464; PWR5-NEXT: and 4, 4, 7 15465; PWR5-NEXT: rldicl 3, 3, 8, 56 15466; PWR5-NEXT: li 5, 15 15467; PWR5-NEXT: mulld 4, 4, 9 15468; PWR5-NEXT: subc 6, 3, 5 15469; PWR5-NEXT: rldicl 4, 4, 8, 56 15470; PWR5-NEXT: subfe 3, 3, 3 15471; PWR5-NEXT: subc 5, 4, 5 15472; PWR5-NEXT: subfe 4, 4, 4 15473; PWR5-NEXT: blr 15474; 15475; PWR6-LABEL: ult_15_v2i64: 15476; PWR6: # %bb.0: 15477; PWR6-NEXT: lis 5, 21845 15478; PWR6-NEXT: lis 6, 13107 15479; PWR6-NEXT: ori 5, 5, 21845 15480; PWR6-NEXT: rotldi 8, 4, 63 15481; PWR6-NEXT: rotldi 9, 3, 63 15482; PWR6-NEXT: rldimi 5, 5, 32, 0 15483; PWR6-NEXT: and 8, 8, 5 15484; PWR6-NEXT: and 5, 9, 5 15485; PWR6-NEXT: ori 6, 6, 13107 15486; PWR6-NEXT: sub 3, 3, 5 15487; PWR6-NEXT: rldimi 6, 6, 32, 0 15488; PWR6-NEXT: sub 4, 4, 8 15489; PWR6-NEXT: and 8, 3, 6 15490; PWR6-NEXT: rotldi 3, 3, 62 15491; PWR6-NEXT: and 3, 3, 6 15492; PWR6-NEXT: lis 7, 3855 15493; PWR6-NEXT: and 5, 4, 6 15494; PWR6-NEXT: rotldi 4, 4, 62 15495; PWR6-NEXT: add 3, 8, 3 15496; PWR6-NEXT: lis 9, 257 15497; PWR6-NEXT: ori 7, 7, 3855 15498; PWR6-NEXT: and 4, 4, 6 15499; PWR6-NEXT: rldicl 6, 3, 60, 4 15500; PWR6-NEXT: ori 9, 9, 257 15501; PWR6-NEXT: rldimi 7, 7, 32, 0 15502; PWR6-NEXT: add 4, 5, 4 15503; PWR6-NEXT: add 3, 3, 6 15504; PWR6-NEXT: rldimi 9, 9, 32, 0 15505; PWR6-NEXT: rldicl 5, 4, 60, 4 15506; PWR6-NEXT: and 3, 3, 7 15507; PWR6-NEXT: add 4, 4, 5 15508; PWR6-NEXT: mulld 3, 3, 9 15509; PWR6-NEXT: and 4, 4, 7 15510; PWR6-NEXT: rldicl 3, 3, 8, 56 15511; PWR6-NEXT: li 5, 15 15512; PWR6-NEXT: mulld 4, 4, 9 15513; PWR6-NEXT: subc 6, 3, 5 15514; PWR6-NEXT: rldicl 4, 4, 8, 56 15515; PWR6-NEXT: subfe 3, 3, 3 15516; PWR6-NEXT: subc 5, 4, 5 15517; PWR6-NEXT: subfe 4, 4, 4 15518; PWR6-NEXT: blr 15519; 15520; PWR7-LABEL: ult_15_v2i64: 15521; PWR7: # %bb.0: 15522; PWR7-NEXT: addi 3, 1, -32 15523; PWR7-NEXT: li 5, 0 15524; PWR7-NEXT: li 6, -1 15525; PWR7-NEXT: stxvd2x 34, 0, 3 15526; PWR7-NEXT: ld 3, -24(1) 15527; PWR7-NEXT: ld 4, -32(1) 15528; PWR7-NEXT: popcntd 3, 3 15529; PWR7-NEXT: popcntd 4, 4 15530; PWR7-NEXT: cmpldi 3, 15 15531; PWR7-NEXT: isellt 3, 6, 5 15532; PWR7-NEXT: cmpldi 4, 15 15533; PWR7-NEXT: isellt 4, 6, 5 15534; PWR7-NEXT: std 3, -8(1) 15535; PWR7-NEXT: addi 3, 1, -16 15536; PWR7-NEXT: std 4, -16(1) 15537; PWR7-NEXT: lxvd2x 34, 0, 3 15538; PWR7-NEXT: blr 15539; 15540; PWR8-LABEL: ult_15_v2i64: 15541; PWR8: # %bb.0: 15542; PWR8-NEXT: addis 3, 2, .LCPI127_0@toc@ha 15543; PWR8-NEXT: vpopcntd 2, 2 15544; PWR8-NEXT: addi 3, 3, .LCPI127_0@toc@l 15545; PWR8-NEXT: lxvd2x 35, 0, 3 15546; PWR8-NEXT: vcmpgtud 2, 3, 2 15547; PWR8-NEXT: blr 15548; 15549; PWR9-LABEL: ult_15_v2i64: 15550; PWR9: # %bb.0: 15551; PWR9-NEXT: addis 3, 2, .LCPI127_0@toc@ha 15552; PWR9-NEXT: vpopcntd 2, 2 15553; PWR9-NEXT: addi 3, 3, .LCPI127_0@toc@l 15554; PWR9-NEXT: lxvx 35, 0, 3 15555; PWR9-NEXT: vcmpgtud 2, 3, 2 15556; PWR9-NEXT: blr 15557 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15558 %3 = icmp ult <2 x i64> %2, <i64 15, i64 15> 15559 %4 = sext <2 x i1> %3 to <2 x i64> 15560 ret <2 x i64> %4 15561} 15562 15563define <2 x i64> @ugt_15_v2i64(<2 x i64> %0) { 15564; PWR5-LABEL: ugt_15_v2i64: 15565; PWR5: # %bb.0: 15566; PWR5-NEXT: lis 5, 21845 15567; PWR5-NEXT: lis 6, 13107 15568; PWR5-NEXT: ori 5, 5, 21845 15569; PWR5-NEXT: rotldi 8, 4, 63 15570; PWR5-NEXT: rotldi 9, 3, 63 15571; PWR5-NEXT: rldimi 5, 5, 32, 0 15572; PWR5-NEXT: and 8, 8, 5 15573; PWR5-NEXT: and 5, 9, 5 15574; PWR5-NEXT: ori 6, 6, 13107 15575; PWR5-NEXT: sub 3, 3, 5 15576; PWR5-NEXT: rldimi 6, 6, 32, 0 15577; PWR5-NEXT: sub 4, 4, 8 15578; PWR5-NEXT: and 8, 3, 6 15579; PWR5-NEXT: rotldi 3, 3, 62 15580; PWR5-NEXT: and 3, 3, 6 15581; PWR5-NEXT: lis 7, 3855 15582; PWR5-NEXT: and 5, 4, 6 15583; PWR5-NEXT: rotldi 4, 4, 62 15584; PWR5-NEXT: add 3, 8, 3 15585; PWR5-NEXT: lis 9, 257 15586; PWR5-NEXT: ori 7, 7, 3855 15587; PWR5-NEXT: and 4, 4, 6 15588; PWR5-NEXT: rldicl 6, 3, 60, 4 15589; PWR5-NEXT: ori 9, 9, 257 15590; PWR5-NEXT: rldimi 7, 7, 32, 0 15591; PWR5-NEXT: add 4, 5, 4 15592; PWR5-NEXT: add 3, 3, 6 15593; PWR5-NEXT: rldimi 9, 9, 32, 0 15594; PWR5-NEXT: rldicl 5, 4, 60, 4 15595; PWR5-NEXT: and 3, 3, 7 15596; PWR5-NEXT: add 4, 4, 5 15597; PWR5-NEXT: mulld 3, 3, 9 15598; PWR5-NEXT: and 4, 4, 7 15599; PWR5-NEXT: rldicl 3, 3, 8, 56 15600; PWR5-NEXT: mulld 4, 4, 9 15601; PWR5-NEXT: li 5, 15 15602; PWR5-NEXT: subfic 3, 3, 15 15603; PWR5-NEXT: rldicl 4, 4, 8, 56 15604; PWR5-NEXT: subfe 3, 5, 5 15605; PWR5-NEXT: subfic 4, 4, 15 15606; PWR5-NEXT: subfe 4, 5, 5 15607; PWR5-NEXT: blr 15608; 15609; PWR6-LABEL: ugt_15_v2i64: 15610; PWR6: # %bb.0: 15611; PWR6-NEXT: lis 5, 21845 15612; PWR6-NEXT: lis 6, 13107 15613; PWR6-NEXT: ori 5, 5, 21845 15614; PWR6-NEXT: rotldi 8, 4, 63 15615; PWR6-NEXT: rotldi 9, 3, 63 15616; PWR6-NEXT: rldimi 5, 5, 32, 0 15617; PWR6-NEXT: and 8, 8, 5 15618; PWR6-NEXT: and 5, 9, 5 15619; PWR6-NEXT: ori 6, 6, 13107 15620; PWR6-NEXT: sub 3, 3, 5 15621; PWR6-NEXT: rldimi 6, 6, 32, 0 15622; PWR6-NEXT: sub 4, 4, 8 15623; PWR6-NEXT: and 8, 3, 6 15624; PWR6-NEXT: rotldi 3, 3, 62 15625; PWR6-NEXT: and 3, 3, 6 15626; PWR6-NEXT: lis 7, 3855 15627; PWR6-NEXT: and 5, 4, 6 15628; PWR6-NEXT: rotldi 4, 4, 62 15629; PWR6-NEXT: add 3, 8, 3 15630; PWR6-NEXT: lis 9, 257 15631; PWR6-NEXT: ori 7, 7, 3855 15632; PWR6-NEXT: and 4, 4, 6 15633; PWR6-NEXT: rldicl 6, 3, 60, 4 15634; PWR6-NEXT: ori 9, 9, 257 15635; PWR6-NEXT: rldimi 7, 7, 32, 0 15636; PWR6-NEXT: add 4, 5, 4 15637; PWR6-NEXT: add 3, 3, 6 15638; PWR6-NEXT: rldimi 9, 9, 32, 0 15639; PWR6-NEXT: rldicl 5, 4, 60, 4 15640; PWR6-NEXT: and 3, 3, 7 15641; PWR6-NEXT: add 4, 4, 5 15642; PWR6-NEXT: mulld 3, 3, 9 15643; PWR6-NEXT: and 4, 4, 7 15644; PWR6-NEXT: rldicl 3, 3, 8, 56 15645; PWR6-NEXT: mulld 4, 4, 9 15646; PWR6-NEXT: li 5, 15 15647; PWR6-NEXT: subfic 3, 3, 15 15648; PWR6-NEXT: rldicl 4, 4, 8, 56 15649; PWR6-NEXT: subfe 3, 5, 5 15650; PWR6-NEXT: subfic 4, 4, 15 15651; PWR6-NEXT: subfe 4, 5, 5 15652; PWR6-NEXT: blr 15653; 15654; PWR7-LABEL: ugt_15_v2i64: 15655; PWR7: # %bb.0: 15656; PWR7-NEXT: addi 3, 1, -32 15657; PWR7-NEXT: li 5, 0 15658; PWR7-NEXT: li 6, -1 15659; PWR7-NEXT: stxvd2x 34, 0, 3 15660; PWR7-NEXT: ld 3, -24(1) 15661; PWR7-NEXT: ld 4, -32(1) 15662; PWR7-NEXT: popcntd 3, 3 15663; PWR7-NEXT: popcntd 4, 4 15664; PWR7-NEXT: cmpldi 3, 15 15665; PWR7-NEXT: iselgt 3, 6, 5 15666; PWR7-NEXT: cmpldi 4, 15 15667; PWR7-NEXT: iselgt 4, 6, 5 15668; PWR7-NEXT: std 3, -8(1) 15669; PWR7-NEXT: addi 3, 1, -16 15670; PWR7-NEXT: std 4, -16(1) 15671; PWR7-NEXT: lxvd2x 34, 0, 3 15672; PWR7-NEXT: blr 15673; 15674; PWR8-LABEL: ugt_15_v2i64: 15675; PWR8: # %bb.0: 15676; PWR8-NEXT: addis 3, 2, .LCPI128_0@toc@ha 15677; PWR8-NEXT: vpopcntd 2, 2 15678; PWR8-NEXT: addi 3, 3, .LCPI128_0@toc@l 15679; PWR8-NEXT: lxvd2x 35, 0, 3 15680; PWR8-NEXT: vcmpgtud 2, 2, 3 15681; PWR8-NEXT: blr 15682; 15683; PWR9-LABEL: ugt_15_v2i64: 15684; PWR9: # %bb.0: 15685; PWR9-NEXT: addis 3, 2, .LCPI128_0@toc@ha 15686; PWR9-NEXT: vpopcntd 2, 2 15687; PWR9-NEXT: addi 3, 3, .LCPI128_0@toc@l 15688; PWR9-NEXT: lxvx 35, 0, 3 15689; PWR9-NEXT: vcmpgtud 2, 2, 3 15690; PWR9-NEXT: blr 15691 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15692 %3 = icmp ugt <2 x i64> %2, <i64 15, i64 15> 15693 %4 = sext <2 x i1> %3 to <2 x i64> 15694 ret <2 x i64> %4 15695} 15696 15697define <2 x i64> @ult_16_v2i64(<2 x i64> %0) { 15698; PWR5-LABEL: ult_16_v2i64: 15699; PWR5: # %bb.0: 15700; PWR5-NEXT: lis 5, 21845 15701; PWR5-NEXT: lis 6, 13107 15702; PWR5-NEXT: ori 5, 5, 21845 15703; PWR5-NEXT: rotldi 8, 4, 63 15704; PWR5-NEXT: rotldi 9, 3, 63 15705; PWR5-NEXT: rldimi 5, 5, 32, 0 15706; PWR5-NEXT: and 8, 8, 5 15707; PWR5-NEXT: and 5, 9, 5 15708; PWR5-NEXT: ori 6, 6, 13107 15709; PWR5-NEXT: sub 3, 3, 5 15710; PWR5-NEXT: rldimi 6, 6, 32, 0 15711; PWR5-NEXT: sub 4, 4, 8 15712; PWR5-NEXT: and 8, 3, 6 15713; PWR5-NEXT: rotldi 3, 3, 62 15714; PWR5-NEXT: and 3, 3, 6 15715; PWR5-NEXT: lis 7, 3855 15716; PWR5-NEXT: and 5, 4, 6 15717; PWR5-NEXT: rotldi 4, 4, 62 15718; PWR5-NEXT: add 3, 8, 3 15719; PWR5-NEXT: lis 9, 257 15720; PWR5-NEXT: ori 7, 7, 3855 15721; PWR5-NEXT: and 4, 4, 6 15722; PWR5-NEXT: rldicl 6, 3, 60, 4 15723; PWR5-NEXT: ori 9, 9, 257 15724; PWR5-NEXT: rldimi 7, 7, 32, 0 15725; PWR5-NEXT: add 4, 5, 4 15726; PWR5-NEXT: add 3, 3, 6 15727; PWR5-NEXT: rldimi 9, 9, 32, 0 15728; PWR5-NEXT: rldicl 5, 4, 60, 4 15729; PWR5-NEXT: and 3, 3, 7 15730; PWR5-NEXT: add 4, 4, 5 15731; PWR5-NEXT: mulld 3, 3, 9 15732; PWR5-NEXT: and 4, 4, 7 15733; PWR5-NEXT: rldicl 3, 3, 8, 56 15734; PWR5-NEXT: li 5, 16 15735; PWR5-NEXT: mulld 4, 4, 9 15736; PWR5-NEXT: subc 6, 3, 5 15737; PWR5-NEXT: rldicl 4, 4, 8, 56 15738; PWR5-NEXT: subfe 3, 3, 3 15739; PWR5-NEXT: subc 5, 4, 5 15740; PWR5-NEXT: subfe 4, 4, 4 15741; PWR5-NEXT: blr 15742; 15743; PWR6-LABEL: ult_16_v2i64: 15744; PWR6: # %bb.0: 15745; PWR6-NEXT: lis 5, 21845 15746; PWR6-NEXT: lis 6, 13107 15747; PWR6-NEXT: ori 5, 5, 21845 15748; PWR6-NEXT: rotldi 8, 4, 63 15749; PWR6-NEXT: rotldi 9, 3, 63 15750; PWR6-NEXT: rldimi 5, 5, 32, 0 15751; PWR6-NEXT: and 8, 8, 5 15752; PWR6-NEXT: and 5, 9, 5 15753; PWR6-NEXT: ori 6, 6, 13107 15754; PWR6-NEXT: sub 3, 3, 5 15755; PWR6-NEXT: rldimi 6, 6, 32, 0 15756; PWR6-NEXT: sub 4, 4, 8 15757; PWR6-NEXT: and 8, 3, 6 15758; PWR6-NEXT: rotldi 3, 3, 62 15759; PWR6-NEXT: and 3, 3, 6 15760; PWR6-NEXT: lis 7, 3855 15761; PWR6-NEXT: and 5, 4, 6 15762; PWR6-NEXT: rotldi 4, 4, 62 15763; PWR6-NEXT: add 3, 8, 3 15764; PWR6-NEXT: lis 9, 257 15765; PWR6-NEXT: ori 7, 7, 3855 15766; PWR6-NEXT: and 4, 4, 6 15767; PWR6-NEXT: rldicl 6, 3, 60, 4 15768; PWR6-NEXT: ori 9, 9, 257 15769; PWR6-NEXT: rldimi 7, 7, 32, 0 15770; PWR6-NEXT: add 4, 5, 4 15771; PWR6-NEXT: add 3, 3, 6 15772; PWR6-NEXT: rldimi 9, 9, 32, 0 15773; PWR6-NEXT: rldicl 5, 4, 60, 4 15774; PWR6-NEXT: and 3, 3, 7 15775; PWR6-NEXT: add 4, 4, 5 15776; PWR6-NEXT: mulld 3, 3, 9 15777; PWR6-NEXT: and 4, 4, 7 15778; PWR6-NEXT: rldicl 3, 3, 8, 56 15779; PWR6-NEXT: li 5, 16 15780; PWR6-NEXT: mulld 4, 4, 9 15781; PWR6-NEXT: subc 6, 3, 5 15782; PWR6-NEXT: rldicl 4, 4, 8, 56 15783; PWR6-NEXT: subfe 3, 3, 3 15784; PWR6-NEXT: subc 5, 4, 5 15785; PWR6-NEXT: subfe 4, 4, 4 15786; PWR6-NEXT: blr 15787; 15788; PWR7-LABEL: ult_16_v2i64: 15789; PWR7: # %bb.0: 15790; PWR7-NEXT: addi 3, 1, -32 15791; PWR7-NEXT: li 5, 0 15792; PWR7-NEXT: li 6, -1 15793; PWR7-NEXT: stxvd2x 34, 0, 3 15794; PWR7-NEXT: ld 3, -24(1) 15795; PWR7-NEXT: ld 4, -32(1) 15796; PWR7-NEXT: popcntd 3, 3 15797; PWR7-NEXT: popcntd 4, 4 15798; PWR7-NEXT: cmpldi 3, 16 15799; PWR7-NEXT: isellt 3, 6, 5 15800; PWR7-NEXT: cmpldi 4, 16 15801; PWR7-NEXT: isellt 4, 6, 5 15802; PWR7-NEXT: std 3, -8(1) 15803; PWR7-NEXT: addi 3, 1, -16 15804; PWR7-NEXT: std 4, -16(1) 15805; PWR7-NEXT: lxvd2x 34, 0, 3 15806; PWR7-NEXT: blr 15807; 15808; PWR8-LABEL: ult_16_v2i64: 15809; PWR8: # %bb.0: 15810; PWR8-NEXT: addis 3, 2, .LCPI129_0@toc@ha 15811; PWR8-NEXT: vpopcntd 2, 2 15812; PWR8-NEXT: addi 3, 3, .LCPI129_0@toc@l 15813; PWR8-NEXT: lxvd2x 35, 0, 3 15814; PWR8-NEXT: vcmpgtud 2, 3, 2 15815; PWR8-NEXT: blr 15816; 15817; PWR9-LABEL: ult_16_v2i64: 15818; PWR9: # %bb.0: 15819; PWR9-NEXT: addis 3, 2, .LCPI129_0@toc@ha 15820; PWR9-NEXT: vpopcntd 2, 2 15821; PWR9-NEXT: addi 3, 3, .LCPI129_0@toc@l 15822; PWR9-NEXT: lxvx 35, 0, 3 15823; PWR9-NEXT: vcmpgtud 2, 3, 2 15824; PWR9-NEXT: blr 15825 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15826 %3 = icmp ult <2 x i64> %2, <i64 16, i64 16> 15827 %4 = sext <2 x i1> %3 to <2 x i64> 15828 ret <2 x i64> %4 15829} 15830 15831define <2 x i64> @ugt_16_v2i64(<2 x i64> %0) { 15832; PWR5-LABEL: ugt_16_v2i64: 15833; PWR5: # %bb.0: 15834; PWR5-NEXT: lis 5, 21845 15835; PWR5-NEXT: lis 6, 13107 15836; PWR5-NEXT: ori 5, 5, 21845 15837; PWR5-NEXT: rotldi 8, 4, 63 15838; PWR5-NEXT: rotldi 9, 3, 63 15839; PWR5-NEXT: rldimi 5, 5, 32, 0 15840; PWR5-NEXT: and 8, 8, 5 15841; PWR5-NEXT: and 5, 9, 5 15842; PWR5-NEXT: ori 6, 6, 13107 15843; PWR5-NEXT: sub 3, 3, 5 15844; PWR5-NEXT: rldimi 6, 6, 32, 0 15845; PWR5-NEXT: sub 4, 4, 8 15846; PWR5-NEXT: and 8, 3, 6 15847; PWR5-NEXT: rotldi 3, 3, 62 15848; PWR5-NEXT: and 3, 3, 6 15849; PWR5-NEXT: lis 7, 3855 15850; PWR5-NEXT: and 5, 4, 6 15851; PWR5-NEXT: rotldi 4, 4, 62 15852; PWR5-NEXT: add 3, 8, 3 15853; PWR5-NEXT: lis 9, 257 15854; PWR5-NEXT: ori 7, 7, 3855 15855; PWR5-NEXT: and 4, 4, 6 15856; PWR5-NEXT: rldicl 6, 3, 60, 4 15857; PWR5-NEXT: ori 9, 9, 257 15858; PWR5-NEXT: rldimi 7, 7, 32, 0 15859; PWR5-NEXT: add 4, 5, 4 15860; PWR5-NEXT: add 3, 3, 6 15861; PWR5-NEXT: rldimi 9, 9, 32, 0 15862; PWR5-NEXT: rldicl 5, 4, 60, 4 15863; PWR5-NEXT: and 3, 3, 7 15864; PWR5-NEXT: add 4, 4, 5 15865; PWR5-NEXT: mulld 3, 3, 9 15866; PWR5-NEXT: and 4, 4, 7 15867; PWR5-NEXT: rldicl 3, 3, 8, 56 15868; PWR5-NEXT: mulld 4, 4, 9 15869; PWR5-NEXT: li 5, 16 15870; PWR5-NEXT: subfic 3, 3, 16 15871; PWR5-NEXT: rldicl 4, 4, 8, 56 15872; PWR5-NEXT: subfe 3, 5, 5 15873; PWR5-NEXT: subfic 4, 4, 16 15874; PWR5-NEXT: subfe 4, 5, 5 15875; PWR5-NEXT: blr 15876; 15877; PWR6-LABEL: ugt_16_v2i64: 15878; PWR6: # %bb.0: 15879; PWR6-NEXT: lis 5, 21845 15880; PWR6-NEXT: lis 6, 13107 15881; PWR6-NEXT: ori 5, 5, 21845 15882; PWR6-NEXT: rotldi 8, 4, 63 15883; PWR6-NEXT: rotldi 9, 3, 63 15884; PWR6-NEXT: rldimi 5, 5, 32, 0 15885; PWR6-NEXT: and 8, 8, 5 15886; PWR6-NEXT: and 5, 9, 5 15887; PWR6-NEXT: ori 6, 6, 13107 15888; PWR6-NEXT: sub 3, 3, 5 15889; PWR6-NEXT: rldimi 6, 6, 32, 0 15890; PWR6-NEXT: sub 4, 4, 8 15891; PWR6-NEXT: and 8, 3, 6 15892; PWR6-NEXT: rotldi 3, 3, 62 15893; PWR6-NEXT: and 3, 3, 6 15894; PWR6-NEXT: lis 7, 3855 15895; PWR6-NEXT: and 5, 4, 6 15896; PWR6-NEXT: rotldi 4, 4, 62 15897; PWR6-NEXT: add 3, 8, 3 15898; PWR6-NEXT: lis 9, 257 15899; PWR6-NEXT: ori 7, 7, 3855 15900; PWR6-NEXT: and 4, 4, 6 15901; PWR6-NEXT: rldicl 6, 3, 60, 4 15902; PWR6-NEXT: ori 9, 9, 257 15903; PWR6-NEXT: rldimi 7, 7, 32, 0 15904; PWR6-NEXT: add 4, 5, 4 15905; PWR6-NEXT: add 3, 3, 6 15906; PWR6-NEXT: rldimi 9, 9, 32, 0 15907; PWR6-NEXT: rldicl 5, 4, 60, 4 15908; PWR6-NEXT: and 3, 3, 7 15909; PWR6-NEXT: add 4, 4, 5 15910; PWR6-NEXT: mulld 3, 3, 9 15911; PWR6-NEXT: and 4, 4, 7 15912; PWR6-NEXT: rldicl 3, 3, 8, 56 15913; PWR6-NEXT: mulld 4, 4, 9 15914; PWR6-NEXT: li 5, 16 15915; PWR6-NEXT: subfic 3, 3, 16 15916; PWR6-NEXT: rldicl 4, 4, 8, 56 15917; PWR6-NEXT: subfe 3, 5, 5 15918; PWR6-NEXT: subfic 4, 4, 16 15919; PWR6-NEXT: subfe 4, 5, 5 15920; PWR6-NEXT: blr 15921; 15922; PWR7-LABEL: ugt_16_v2i64: 15923; PWR7: # %bb.0: 15924; PWR7-NEXT: addi 3, 1, -32 15925; PWR7-NEXT: li 5, 0 15926; PWR7-NEXT: li 6, -1 15927; PWR7-NEXT: stxvd2x 34, 0, 3 15928; PWR7-NEXT: ld 3, -24(1) 15929; PWR7-NEXT: ld 4, -32(1) 15930; PWR7-NEXT: popcntd 3, 3 15931; PWR7-NEXT: popcntd 4, 4 15932; PWR7-NEXT: cmpldi 3, 16 15933; PWR7-NEXT: iselgt 3, 6, 5 15934; PWR7-NEXT: cmpldi 4, 16 15935; PWR7-NEXT: iselgt 4, 6, 5 15936; PWR7-NEXT: std 3, -8(1) 15937; PWR7-NEXT: addi 3, 1, -16 15938; PWR7-NEXT: std 4, -16(1) 15939; PWR7-NEXT: lxvd2x 34, 0, 3 15940; PWR7-NEXT: blr 15941; 15942; PWR8-LABEL: ugt_16_v2i64: 15943; PWR8: # %bb.0: 15944; PWR8-NEXT: addis 3, 2, .LCPI130_0@toc@ha 15945; PWR8-NEXT: vpopcntd 2, 2 15946; PWR8-NEXT: addi 3, 3, .LCPI130_0@toc@l 15947; PWR8-NEXT: lxvd2x 35, 0, 3 15948; PWR8-NEXT: vcmpgtud 2, 2, 3 15949; PWR8-NEXT: blr 15950; 15951; PWR9-LABEL: ugt_16_v2i64: 15952; PWR9: # %bb.0: 15953; PWR9-NEXT: addis 3, 2, .LCPI130_0@toc@ha 15954; PWR9-NEXT: vpopcntd 2, 2 15955; PWR9-NEXT: addi 3, 3, .LCPI130_0@toc@l 15956; PWR9-NEXT: lxvx 35, 0, 3 15957; PWR9-NEXT: vcmpgtud 2, 2, 3 15958; PWR9-NEXT: blr 15959 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15960 %3 = icmp ugt <2 x i64> %2, <i64 16, i64 16> 15961 %4 = sext <2 x i1> %3 to <2 x i64> 15962 ret <2 x i64> %4 15963} 15964 15965define <2 x i64> @ult_17_v2i64(<2 x i64> %0) { 15966; PWR5-LABEL: ult_17_v2i64: 15967; PWR5: # %bb.0: 15968; PWR5-NEXT: lis 5, 21845 15969; PWR5-NEXT: lis 6, 13107 15970; PWR5-NEXT: ori 5, 5, 21845 15971; PWR5-NEXT: rotldi 8, 4, 63 15972; PWR5-NEXT: rotldi 9, 3, 63 15973; PWR5-NEXT: rldimi 5, 5, 32, 0 15974; PWR5-NEXT: and 8, 8, 5 15975; PWR5-NEXT: and 5, 9, 5 15976; PWR5-NEXT: ori 6, 6, 13107 15977; PWR5-NEXT: sub 3, 3, 5 15978; PWR5-NEXT: rldimi 6, 6, 32, 0 15979; PWR5-NEXT: sub 4, 4, 8 15980; PWR5-NEXT: and 8, 3, 6 15981; PWR5-NEXT: rotldi 3, 3, 62 15982; PWR5-NEXT: and 3, 3, 6 15983; PWR5-NEXT: lis 7, 3855 15984; PWR5-NEXT: and 5, 4, 6 15985; PWR5-NEXT: rotldi 4, 4, 62 15986; PWR5-NEXT: add 3, 8, 3 15987; PWR5-NEXT: lis 9, 257 15988; PWR5-NEXT: ori 7, 7, 3855 15989; PWR5-NEXT: and 4, 4, 6 15990; PWR5-NEXT: rldicl 6, 3, 60, 4 15991; PWR5-NEXT: ori 9, 9, 257 15992; PWR5-NEXT: rldimi 7, 7, 32, 0 15993; PWR5-NEXT: add 4, 5, 4 15994; PWR5-NEXT: add 3, 3, 6 15995; PWR5-NEXT: rldimi 9, 9, 32, 0 15996; PWR5-NEXT: rldicl 5, 4, 60, 4 15997; PWR5-NEXT: and 3, 3, 7 15998; PWR5-NEXT: add 4, 4, 5 15999; PWR5-NEXT: mulld 3, 3, 9 16000; PWR5-NEXT: and 4, 4, 7 16001; PWR5-NEXT: rldicl 3, 3, 8, 56 16002; PWR5-NEXT: li 5, 17 16003; PWR5-NEXT: mulld 4, 4, 9 16004; PWR5-NEXT: subc 6, 3, 5 16005; PWR5-NEXT: rldicl 4, 4, 8, 56 16006; PWR5-NEXT: subfe 3, 3, 3 16007; PWR5-NEXT: subc 5, 4, 5 16008; PWR5-NEXT: subfe 4, 4, 4 16009; PWR5-NEXT: blr 16010; 16011; PWR6-LABEL: ult_17_v2i64: 16012; PWR6: # %bb.0: 16013; PWR6-NEXT: lis 5, 21845 16014; PWR6-NEXT: lis 6, 13107 16015; PWR6-NEXT: ori 5, 5, 21845 16016; PWR6-NEXT: rotldi 8, 4, 63 16017; PWR6-NEXT: rotldi 9, 3, 63 16018; PWR6-NEXT: rldimi 5, 5, 32, 0 16019; PWR6-NEXT: and 8, 8, 5 16020; PWR6-NEXT: and 5, 9, 5 16021; PWR6-NEXT: ori 6, 6, 13107 16022; PWR6-NEXT: sub 3, 3, 5 16023; PWR6-NEXT: rldimi 6, 6, 32, 0 16024; PWR6-NEXT: sub 4, 4, 8 16025; PWR6-NEXT: and 8, 3, 6 16026; PWR6-NEXT: rotldi 3, 3, 62 16027; PWR6-NEXT: and 3, 3, 6 16028; PWR6-NEXT: lis 7, 3855 16029; PWR6-NEXT: and 5, 4, 6 16030; PWR6-NEXT: rotldi 4, 4, 62 16031; PWR6-NEXT: add 3, 8, 3 16032; PWR6-NEXT: lis 9, 257 16033; PWR6-NEXT: ori 7, 7, 3855 16034; PWR6-NEXT: and 4, 4, 6 16035; PWR6-NEXT: rldicl 6, 3, 60, 4 16036; PWR6-NEXT: ori 9, 9, 257 16037; PWR6-NEXT: rldimi 7, 7, 32, 0 16038; PWR6-NEXT: add 4, 5, 4 16039; PWR6-NEXT: add 3, 3, 6 16040; PWR6-NEXT: rldimi 9, 9, 32, 0 16041; PWR6-NEXT: rldicl 5, 4, 60, 4 16042; PWR6-NEXT: and 3, 3, 7 16043; PWR6-NEXT: add 4, 4, 5 16044; PWR6-NEXT: mulld 3, 3, 9 16045; PWR6-NEXT: and 4, 4, 7 16046; PWR6-NEXT: rldicl 3, 3, 8, 56 16047; PWR6-NEXT: li 5, 17 16048; PWR6-NEXT: mulld 4, 4, 9 16049; PWR6-NEXT: subc 6, 3, 5 16050; PWR6-NEXT: rldicl 4, 4, 8, 56 16051; PWR6-NEXT: subfe 3, 3, 3 16052; PWR6-NEXT: subc 5, 4, 5 16053; PWR6-NEXT: subfe 4, 4, 4 16054; PWR6-NEXT: blr 16055; 16056; PWR7-LABEL: ult_17_v2i64: 16057; PWR7: # %bb.0: 16058; PWR7-NEXT: addi 3, 1, -32 16059; PWR7-NEXT: li 5, 0 16060; PWR7-NEXT: li 6, -1 16061; PWR7-NEXT: stxvd2x 34, 0, 3 16062; PWR7-NEXT: ld 3, -24(1) 16063; PWR7-NEXT: ld 4, -32(1) 16064; PWR7-NEXT: popcntd 3, 3 16065; PWR7-NEXT: popcntd 4, 4 16066; PWR7-NEXT: cmpldi 3, 17 16067; PWR7-NEXT: isellt 3, 6, 5 16068; PWR7-NEXT: cmpldi 4, 17 16069; PWR7-NEXT: isellt 4, 6, 5 16070; PWR7-NEXT: std 3, -8(1) 16071; PWR7-NEXT: addi 3, 1, -16 16072; PWR7-NEXT: std 4, -16(1) 16073; PWR7-NEXT: lxvd2x 34, 0, 3 16074; PWR7-NEXT: blr 16075; 16076; PWR8-LABEL: ult_17_v2i64: 16077; PWR8: # %bb.0: 16078; PWR8-NEXT: addis 3, 2, .LCPI131_0@toc@ha 16079; PWR8-NEXT: vpopcntd 2, 2 16080; PWR8-NEXT: addi 3, 3, .LCPI131_0@toc@l 16081; PWR8-NEXT: lxvd2x 35, 0, 3 16082; PWR8-NEXT: vcmpgtud 2, 3, 2 16083; PWR8-NEXT: blr 16084; 16085; PWR9-LABEL: ult_17_v2i64: 16086; PWR9: # %bb.0: 16087; PWR9-NEXT: addis 3, 2, .LCPI131_0@toc@ha 16088; PWR9-NEXT: vpopcntd 2, 2 16089; PWR9-NEXT: addi 3, 3, .LCPI131_0@toc@l 16090; PWR9-NEXT: lxvx 35, 0, 3 16091; PWR9-NEXT: vcmpgtud 2, 3, 2 16092; PWR9-NEXT: blr 16093 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16094 %3 = icmp ult <2 x i64> %2, <i64 17, i64 17> 16095 %4 = sext <2 x i1> %3 to <2 x i64> 16096 ret <2 x i64> %4 16097} 16098 16099define <2 x i64> @ugt_17_v2i64(<2 x i64> %0) { 16100; PWR5-LABEL: ugt_17_v2i64: 16101; PWR5: # %bb.0: 16102; PWR5-NEXT: lis 5, 21845 16103; PWR5-NEXT: lis 6, 13107 16104; PWR5-NEXT: ori 5, 5, 21845 16105; PWR5-NEXT: rotldi 8, 4, 63 16106; PWR5-NEXT: rotldi 9, 3, 63 16107; PWR5-NEXT: rldimi 5, 5, 32, 0 16108; PWR5-NEXT: and 8, 8, 5 16109; PWR5-NEXT: and 5, 9, 5 16110; PWR5-NEXT: ori 6, 6, 13107 16111; PWR5-NEXT: sub 3, 3, 5 16112; PWR5-NEXT: rldimi 6, 6, 32, 0 16113; PWR5-NEXT: sub 4, 4, 8 16114; PWR5-NEXT: and 8, 3, 6 16115; PWR5-NEXT: rotldi 3, 3, 62 16116; PWR5-NEXT: and 3, 3, 6 16117; PWR5-NEXT: lis 7, 3855 16118; PWR5-NEXT: and 5, 4, 6 16119; PWR5-NEXT: rotldi 4, 4, 62 16120; PWR5-NEXT: add 3, 8, 3 16121; PWR5-NEXT: lis 9, 257 16122; PWR5-NEXT: ori 7, 7, 3855 16123; PWR5-NEXT: and 4, 4, 6 16124; PWR5-NEXT: rldicl 6, 3, 60, 4 16125; PWR5-NEXT: ori 9, 9, 257 16126; PWR5-NEXT: rldimi 7, 7, 32, 0 16127; PWR5-NEXT: add 4, 5, 4 16128; PWR5-NEXT: add 3, 3, 6 16129; PWR5-NEXT: rldimi 9, 9, 32, 0 16130; PWR5-NEXT: rldicl 5, 4, 60, 4 16131; PWR5-NEXT: and 3, 3, 7 16132; PWR5-NEXT: add 4, 4, 5 16133; PWR5-NEXT: mulld 3, 3, 9 16134; PWR5-NEXT: and 4, 4, 7 16135; PWR5-NEXT: rldicl 3, 3, 8, 56 16136; PWR5-NEXT: mulld 4, 4, 9 16137; PWR5-NEXT: li 5, 17 16138; PWR5-NEXT: subfic 3, 3, 17 16139; PWR5-NEXT: rldicl 4, 4, 8, 56 16140; PWR5-NEXT: subfe 3, 5, 5 16141; PWR5-NEXT: subfic 4, 4, 17 16142; PWR5-NEXT: subfe 4, 5, 5 16143; PWR5-NEXT: blr 16144; 16145; PWR6-LABEL: ugt_17_v2i64: 16146; PWR6: # %bb.0: 16147; PWR6-NEXT: lis 5, 21845 16148; PWR6-NEXT: lis 6, 13107 16149; PWR6-NEXT: ori 5, 5, 21845 16150; PWR6-NEXT: rotldi 8, 4, 63 16151; PWR6-NEXT: rotldi 9, 3, 63 16152; PWR6-NEXT: rldimi 5, 5, 32, 0 16153; PWR6-NEXT: and 8, 8, 5 16154; PWR6-NEXT: and 5, 9, 5 16155; PWR6-NEXT: ori 6, 6, 13107 16156; PWR6-NEXT: sub 3, 3, 5 16157; PWR6-NEXT: rldimi 6, 6, 32, 0 16158; PWR6-NEXT: sub 4, 4, 8 16159; PWR6-NEXT: and 8, 3, 6 16160; PWR6-NEXT: rotldi 3, 3, 62 16161; PWR6-NEXT: and 3, 3, 6 16162; PWR6-NEXT: lis 7, 3855 16163; PWR6-NEXT: and 5, 4, 6 16164; PWR6-NEXT: rotldi 4, 4, 62 16165; PWR6-NEXT: add 3, 8, 3 16166; PWR6-NEXT: lis 9, 257 16167; PWR6-NEXT: ori 7, 7, 3855 16168; PWR6-NEXT: and 4, 4, 6 16169; PWR6-NEXT: rldicl 6, 3, 60, 4 16170; PWR6-NEXT: ori 9, 9, 257 16171; PWR6-NEXT: rldimi 7, 7, 32, 0 16172; PWR6-NEXT: add 4, 5, 4 16173; PWR6-NEXT: add 3, 3, 6 16174; PWR6-NEXT: rldimi 9, 9, 32, 0 16175; PWR6-NEXT: rldicl 5, 4, 60, 4 16176; PWR6-NEXT: and 3, 3, 7 16177; PWR6-NEXT: add 4, 4, 5 16178; PWR6-NEXT: mulld 3, 3, 9 16179; PWR6-NEXT: and 4, 4, 7 16180; PWR6-NEXT: rldicl 3, 3, 8, 56 16181; PWR6-NEXT: mulld 4, 4, 9 16182; PWR6-NEXT: li 5, 17 16183; PWR6-NEXT: subfic 3, 3, 17 16184; PWR6-NEXT: rldicl 4, 4, 8, 56 16185; PWR6-NEXT: subfe 3, 5, 5 16186; PWR6-NEXT: subfic 4, 4, 17 16187; PWR6-NEXT: subfe 4, 5, 5 16188; PWR6-NEXT: blr 16189; 16190; PWR7-LABEL: ugt_17_v2i64: 16191; PWR7: # %bb.0: 16192; PWR7-NEXT: addi 3, 1, -32 16193; PWR7-NEXT: li 5, 0 16194; PWR7-NEXT: li 6, -1 16195; PWR7-NEXT: stxvd2x 34, 0, 3 16196; PWR7-NEXT: ld 3, -24(1) 16197; PWR7-NEXT: ld 4, -32(1) 16198; PWR7-NEXT: popcntd 3, 3 16199; PWR7-NEXT: popcntd 4, 4 16200; PWR7-NEXT: cmpldi 3, 17 16201; PWR7-NEXT: iselgt 3, 6, 5 16202; PWR7-NEXT: cmpldi 4, 17 16203; PWR7-NEXT: iselgt 4, 6, 5 16204; PWR7-NEXT: std 3, -8(1) 16205; PWR7-NEXT: addi 3, 1, -16 16206; PWR7-NEXT: std 4, -16(1) 16207; PWR7-NEXT: lxvd2x 34, 0, 3 16208; PWR7-NEXT: blr 16209; 16210; PWR8-LABEL: ugt_17_v2i64: 16211; PWR8: # %bb.0: 16212; PWR8-NEXT: addis 3, 2, .LCPI132_0@toc@ha 16213; PWR8-NEXT: vpopcntd 2, 2 16214; PWR8-NEXT: addi 3, 3, .LCPI132_0@toc@l 16215; PWR8-NEXT: lxvd2x 35, 0, 3 16216; PWR8-NEXT: vcmpgtud 2, 2, 3 16217; PWR8-NEXT: blr 16218; 16219; PWR9-LABEL: ugt_17_v2i64: 16220; PWR9: # %bb.0: 16221; PWR9-NEXT: addis 3, 2, .LCPI132_0@toc@ha 16222; PWR9-NEXT: vpopcntd 2, 2 16223; PWR9-NEXT: addi 3, 3, .LCPI132_0@toc@l 16224; PWR9-NEXT: lxvx 35, 0, 3 16225; PWR9-NEXT: vcmpgtud 2, 2, 3 16226; PWR9-NEXT: blr 16227 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16228 %3 = icmp ugt <2 x i64> %2, <i64 17, i64 17> 16229 %4 = sext <2 x i1> %3 to <2 x i64> 16230 ret <2 x i64> %4 16231} 16232 16233define <2 x i64> @ult_18_v2i64(<2 x i64> %0) { 16234; PWR5-LABEL: ult_18_v2i64: 16235; PWR5: # %bb.0: 16236; PWR5-NEXT: lis 5, 21845 16237; PWR5-NEXT: lis 6, 13107 16238; PWR5-NEXT: ori 5, 5, 21845 16239; PWR5-NEXT: rotldi 8, 4, 63 16240; PWR5-NEXT: rotldi 9, 3, 63 16241; PWR5-NEXT: rldimi 5, 5, 32, 0 16242; PWR5-NEXT: and 8, 8, 5 16243; PWR5-NEXT: and 5, 9, 5 16244; PWR5-NEXT: ori 6, 6, 13107 16245; PWR5-NEXT: sub 3, 3, 5 16246; PWR5-NEXT: rldimi 6, 6, 32, 0 16247; PWR5-NEXT: sub 4, 4, 8 16248; PWR5-NEXT: and 8, 3, 6 16249; PWR5-NEXT: rotldi 3, 3, 62 16250; PWR5-NEXT: and 3, 3, 6 16251; PWR5-NEXT: lis 7, 3855 16252; PWR5-NEXT: and 5, 4, 6 16253; PWR5-NEXT: rotldi 4, 4, 62 16254; PWR5-NEXT: add 3, 8, 3 16255; PWR5-NEXT: lis 9, 257 16256; PWR5-NEXT: ori 7, 7, 3855 16257; PWR5-NEXT: and 4, 4, 6 16258; PWR5-NEXT: rldicl 6, 3, 60, 4 16259; PWR5-NEXT: ori 9, 9, 257 16260; PWR5-NEXT: rldimi 7, 7, 32, 0 16261; PWR5-NEXT: add 4, 5, 4 16262; PWR5-NEXT: add 3, 3, 6 16263; PWR5-NEXT: rldimi 9, 9, 32, 0 16264; PWR5-NEXT: rldicl 5, 4, 60, 4 16265; PWR5-NEXT: and 3, 3, 7 16266; PWR5-NEXT: add 4, 4, 5 16267; PWR5-NEXT: mulld 3, 3, 9 16268; PWR5-NEXT: and 4, 4, 7 16269; PWR5-NEXT: rldicl 3, 3, 8, 56 16270; PWR5-NEXT: li 5, 18 16271; PWR5-NEXT: mulld 4, 4, 9 16272; PWR5-NEXT: subc 6, 3, 5 16273; PWR5-NEXT: rldicl 4, 4, 8, 56 16274; PWR5-NEXT: subfe 3, 3, 3 16275; PWR5-NEXT: subc 5, 4, 5 16276; PWR5-NEXT: subfe 4, 4, 4 16277; PWR5-NEXT: blr 16278; 16279; PWR6-LABEL: ult_18_v2i64: 16280; PWR6: # %bb.0: 16281; PWR6-NEXT: lis 5, 21845 16282; PWR6-NEXT: lis 6, 13107 16283; PWR6-NEXT: ori 5, 5, 21845 16284; PWR6-NEXT: rotldi 8, 4, 63 16285; PWR6-NEXT: rotldi 9, 3, 63 16286; PWR6-NEXT: rldimi 5, 5, 32, 0 16287; PWR6-NEXT: and 8, 8, 5 16288; PWR6-NEXT: and 5, 9, 5 16289; PWR6-NEXT: ori 6, 6, 13107 16290; PWR6-NEXT: sub 3, 3, 5 16291; PWR6-NEXT: rldimi 6, 6, 32, 0 16292; PWR6-NEXT: sub 4, 4, 8 16293; PWR6-NEXT: and 8, 3, 6 16294; PWR6-NEXT: rotldi 3, 3, 62 16295; PWR6-NEXT: and 3, 3, 6 16296; PWR6-NEXT: lis 7, 3855 16297; PWR6-NEXT: and 5, 4, 6 16298; PWR6-NEXT: rotldi 4, 4, 62 16299; PWR6-NEXT: add 3, 8, 3 16300; PWR6-NEXT: lis 9, 257 16301; PWR6-NEXT: ori 7, 7, 3855 16302; PWR6-NEXT: and 4, 4, 6 16303; PWR6-NEXT: rldicl 6, 3, 60, 4 16304; PWR6-NEXT: ori 9, 9, 257 16305; PWR6-NEXT: rldimi 7, 7, 32, 0 16306; PWR6-NEXT: add 4, 5, 4 16307; PWR6-NEXT: add 3, 3, 6 16308; PWR6-NEXT: rldimi 9, 9, 32, 0 16309; PWR6-NEXT: rldicl 5, 4, 60, 4 16310; PWR6-NEXT: and 3, 3, 7 16311; PWR6-NEXT: add 4, 4, 5 16312; PWR6-NEXT: mulld 3, 3, 9 16313; PWR6-NEXT: and 4, 4, 7 16314; PWR6-NEXT: rldicl 3, 3, 8, 56 16315; PWR6-NEXT: li 5, 18 16316; PWR6-NEXT: mulld 4, 4, 9 16317; PWR6-NEXT: subc 6, 3, 5 16318; PWR6-NEXT: rldicl 4, 4, 8, 56 16319; PWR6-NEXT: subfe 3, 3, 3 16320; PWR6-NEXT: subc 5, 4, 5 16321; PWR6-NEXT: subfe 4, 4, 4 16322; PWR6-NEXT: blr 16323; 16324; PWR7-LABEL: ult_18_v2i64: 16325; PWR7: # %bb.0: 16326; PWR7-NEXT: addi 3, 1, -32 16327; PWR7-NEXT: li 5, 0 16328; PWR7-NEXT: li 6, -1 16329; PWR7-NEXT: stxvd2x 34, 0, 3 16330; PWR7-NEXT: ld 3, -24(1) 16331; PWR7-NEXT: ld 4, -32(1) 16332; PWR7-NEXT: popcntd 3, 3 16333; PWR7-NEXT: popcntd 4, 4 16334; PWR7-NEXT: cmpldi 3, 18 16335; PWR7-NEXT: isellt 3, 6, 5 16336; PWR7-NEXT: cmpldi 4, 18 16337; PWR7-NEXT: isellt 4, 6, 5 16338; PWR7-NEXT: std 3, -8(1) 16339; PWR7-NEXT: addi 3, 1, -16 16340; PWR7-NEXT: std 4, -16(1) 16341; PWR7-NEXT: lxvd2x 34, 0, 3 16342; PWR7-NEXT: blr 16343; 16344; PWR8-LABEL: ult_18_v2i64: 16345; PWR8: # %bb.0: 16346; PWR8-NEXT: addis 3, 2, .LCPI133_0@toc@ha 16347; PWR8-NEXT: vpopcntd 2, 2 16348; PWR8-NEXT: addi 3, 3, .LCPI133_0@toc@l 16349; PWR8-NEXT: lxvd2x 35, 0, 3 16350; PWR8-NEXT: vcmpgtud 2, 3, 2 16351; PWR8-NEXT: blr 16352; 16353; PWR9-LABEL: ult_18_v2i64: 16354; PWR9: # %bb.0: 16355; PWR9-NEXT: addis 3, 2, .LCPI133_0@toc@ha 16356; PWR9-NEXT: vpopcntd 2, 2 16357; PWR9-NEXT: addi 3, 3, .LCPI133_0@toc@l 16358; PWR9-NEXT: lxvx 35, 0, 3 16359; PWR9-NEXT: vcmpgtud 2, 3, 2 16360; PWR9-NEXT: blr 16361 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16362 %3 = icmp ult <2 x i64> %2, <i64 18, i64 18> 16363 %4 = sext <2 x i1> %3 to <2 x i64> 16364 ret <2 x i64> %4 16365} 16366 16367define <2 x i64> @ugt_18_v2i64(<2 x i64> %0) { 16368; PWR5-LABEL: ugt_18_v2i64: 16369; PWR5: # %bb.0: 16370; PWR5-NEXT: lis 5, 21845 16371; PWR5-NEXT: lis 6, 13107 16372; PWR5-NEXT: ori 5, 5, 21845 16373; PWR5-NEXT: rotldi 8, 4, 63 16374; PWR5-NEXT: rotldi 9, 3, 63 16375; PWR5-NEXT: rldimi 5, 5, 32, 0 16376; PWR5-NEXT: and 8, 8, 5 16377; PWR5-NEXT: and 5, 9, 5 16378; PWR5-NEXT: ori 6, 6, 13107 16379; PWR5-NEXT: sub 3, 3, 5 16380; PWR5-NEXT: rldimi 6, 6, 32, 0 16381; PWR5-NEXT: sub 4, 4, 8 16382; PWR5-NEXT: and 8, 3, 6 16383; PWR5-NEXT: rotldi 3, 3, 62 16384; PWR5-NEXT: and 3, 3, 6 16385; PWR5-NEXT: lis 7, 3855 16386; PWR5-NEXT: and 5, 4, 6 16387; PWR5-NEXT: rotldi 4, 4, 62 16388; PWR5-NEXT: add 3, 8, 3 16389; PWR5-NEXT: lis 9, 257 16390; PWR5-NEXT: ori 7, 7, 3855 16391; PWR5-NEXT: and 4, 4, 6 16392; PWR5-NEXT: rldicl 6, 3, 60, 4 16393; PWR5-NEXT: ori 9, 9, 257 16394; PWR5-NEXT: rldimi 7, 7, 32, 0 16395; PWR5-NEXT: add 4, 5, 4 16396; PWR5-NEXT: add 3, 3, 6 16397; PWR5-NEXT: rldimi 9, 9, 32, 0 16398; PWR5-NEXT: rldicl 5, 4, 60, 4 16399; PWR5-NEXT: and 3, 3, 7 16400; PWR5-NEXT: add 4, 4, 5 16401; PWR5-NEXT: mulld 3, 3, 9 16402; PWR5-NEXT: and 4, 4, 7 16403; PWR5-NEXT: rldicl 3, 3, 8, 56 16404; PWR5-NEXT: mulld 4, 4, 9 16405; PWR5-NEXT: li 5, 18 16406; PWR5-NEXT: subfic 3, 3, 18 16407; PWR5-NEXT: rldicl 4, 4, 8, 56 16408; PWR5-NEXT: subfe 3, 5, 5 16409; PWR5-NEXT: subfic 4, 4, 18 16410; PWR5-NEXT: subfe 4, 5, 5 16411; PWR5-NEXT: blr 16412; 16413; PWR6-LABEL: ugt_18_v2i64: 16414; PWR6: # %bb.0: 16415; PWR6-NEXT: lis 5, 21845 16416; PWR6-NEXT: lis 6, 13107 16417; PWR6-NEXT: ori 5, 5, 21845 16418; PWR6-NEXT: rotldi 8, 4, 63 16419; PWR6-NEXT: rotldi 9, 3, 63 16420; PWR6-NEXT: rldimi 5, 5, 32, 0 16421; PWR6-NEXT: and 8, 8, 5 16422; PWR6-NEXT: and 5, 9, 5 16423; PWR6-NEXT: ori 6, 6, 13107 16424; PWR6-NEXT: sub 3, 3, 5 16425; PWR6-NEXT: rldimi 6, 6, 32, 0 16426; PWR6-NEXT: sub 4, 4, 8 16427; PWR6-NEXT: and 8, 3, 6 16428; PWR6-NEXT: rotldi 3, 3, 62 16429; PWR6-NEXT: and 3, 3, 6 16430; PWR6-NEXT: lis 7, 3855 16431; PWR6-NEXT: and 5, 4, 6 16432; PWR6-NEXT: rotldi 4, 4, 62 16433; PWR6-NEXT: add 3, 8, 3 16434; PWR6-NEXT: lis 9, 257 16435; PWR6-NEXT: ori 7, 7, 3855 16436; PWR6-NEXT: and 4, 4, 6 16437; PWR6-NEXT: rldicl 6, 3, 60, 4 16438; PWR6-NEXT: ori 9, 9, 257 16439; PWR6-NEXT: rldimi 7, 7, 32, 0 16440; PWR6-NEXT: add 4, 5, 4 16441; PWR6-NEXT: add 3, 3, 6 16442; PWR6-NEXT: rldimi 9, 9, 32, 0 16443; PWR6-NEXT: rldicl 5, 4, 60, 4 16444; PWR6-NEXT: and 3, 3, 7 16445; PWR6-NEXT: add 4, 4, 5 16446; PWR6-NEXT: mulld 3, 3, 9 16447; PWR6-NEXT: and 4, 4, 7 16448; PWR6-NEXT: rldicl 3, 3, 8, 56 16449; PWR6-NEXT: mulld 4, 4, 9 16450; PWR6-NEXT: li 5, 18 16451; PWR6-NEXT: subfic 3, 3, 18 16452; PWR6-NEXT: rldicl 4, 4, 8, 56 16453; PWR6-NEXT: subfe 3, 5, 5 16454; PWR6-NEXT: subfic 4, 4, 18 16455; PWR6-NEXT: subfe 4, 5, 5 16456; PWR6-NEXT: blr 16457; 16458; PWR7-LABEL: ugt_18_v2i64: 16459; PWR7: # %bb.0: 16460; PWR7-NEXT: addi 3, 1, -32 16461; PWR7-NEXT: li 5, 0 16462; PWR7-NEXT: li 6, -1 16463; PWR7-NEXT: stxvd2x 34, 0, 3 16464; PWR7-NEXT: ld 3, -24(1) 16465; PWR7-NEXT: ld 4, -32(1) 16466; PWR7-NEXT: popcntd 3, 3 16467; PWR7-NEXT: popcntd 4, 4 16468; PWR7-NEXT: cmpldi 3, 18 16469; PWR7-NEXT: iselgt 3, 6, 5 16470; PWR7-NEXT: cmpldi 4, 18 16471; PWR7-NEXT: iselgt 4, 6, 5 16472; PWR7-NEXT: std 3, -8(1) 16473; PWR7-NEXT: addi 3, 1, -16 16474; PWR7-NEXT: std 4, -16(1) 16475; PWR7-NEXT: lxvd2x 34, 0, 3 16476; PWR7-NEXT: blr 16477; 16478; PWR8-LABEL: ugt_18_v2i64: 16479; PWR8: # %bb.0: 16480; PWR8-NEXT: addis 3, 2, .LCPI134_0@toc@ha 16481; PWR8-NEXT: vpopcntd 2, 2 16482; PWR8-NEXT: addi 3, 3, .LCPI134_0@toc@l 16483; PWR8-NEXT: lxvd2x 35, 0, 3 16484; PWR8-NEXT: vcmpgtud 2, 2, 3 16485; PWR8-NEXT: blr 16486; 16487; PWR9-LABEL: ugt_18_v2i64: 16488; PWR9: # %bb.0: 16489; PWR9-NEXT: addis 3, 2, .LCPI134_0@toc@ha 16490; PWR9-NEXT: vpopcntd 2, 2 16491; PWR9-NEXT: addi 3, 3, .LCPI134_0@toc@l 16492; PWR9-NEXT: lxvx 35, 0, 3 16493; PWR9-NEXT: vcmpgtud 2, 2, 3 16494; PWR9-NEXT: blr 16495 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16496 %3 = icmp ugt <2 x i64> %2, <i64 18, i64 18> 16497 %4 = sext <2 x i1> %3 to <2 x i64> 16498 ret <2 x i64> %4 16499} 16500 16501define <2 x i64> @ult_19_v2i64(<2 x i64> %0) { 16502; PWR5-LABEL: ult_19_v2i64: 16503; PWR5: # %bb.0: 16504; PWR5-NEXT: lis 5, 21845 16505; PWR5-NEXT: lis 6, 13107 16506; PWR5-NEXT: ori 5, 5, 21845 16507; PWR5-NEXT: rotldi 8, 4, 63 16508; PWR5-NEXT: rotldi 9, 3, 63 16509; PWR5-NEXT: rldimi 5, 5, 32, 0 16510; PWR5-NEXT: and 8, 8, 5 16511; PWR5-NEXT: and 5, 9, 5 16512; PWR5-NEXT: ori 6, 6, 13107 16513; PWR5-NEXT: sub 3, 3, 5 16514; PWR5-NEXT: rldimi 6, 6, 32, 0 16515; PWR5-NEXT: sub 4, 4, 8 16516; PWR5-NEXT: and 8, 3, 6 16517; PWR5-NEXT: rotldi 3, 3, 62 16518; PWR5-NEXT: and 3, 3, 6 16519; PWR5-NEXT: lis 7, 3855 16520; PWR5-NEXT: and 5, 4, 6 16521; PWR5-NEXT: rotldi 4, 4, 62 16522; PWR5-NEXT: add 3, 8, 3 16523; PWR5-NEXT: lis 9, 257 16524; PWR5-NEXT: ori 7, 7, 3855 16525; PWR5-NEXT: and 4, 4, 6 16526; PWR5-NEXT: rldicl 6, 3, 60, 4 16527; PWR5-NEXT: ori 9, 9, 257 16528; PWR5-NEXT: rldimi 7, 7, 32, 0 16529; PWR5-NEXT: add 4, 5, 4 16530; PWR5-NEXT: add 3, 3, 6 16531; PWR5-NEXT: rldimi 9, 9, 32, 0 16532; PWR5-NEXT: rldicl 5, 4, 60, 4 16533; PWR5-NEXT: and 3, 3, 7 16534; PWR5-NEXT: add 4, 4, 5 16535; PWR5-NEXT: mulld 3, 3, 9 16536; PWR5-NEXT: and 4, 4, 7 16537; PWR5-NEXT: rldicl 3, 3, 8, 56 16538; PWR5-NEXT: li 5, 19 16539; PWR5-NEXT: mulld 4, 4, 9 16540; PWR5-NEXT: subc 6, 3, 5 16541; PWR5-NEXT: rldicl 4, 4, 8, 56 16542; PWR5-NEXT: subfe 3, 3, 3 16543; PWR5-NEXT: subc 5, 4, 5 16544; PWR5-NEXT: subfe 4, 4, 4 16545; PWR5-NEXT: blr 16546; 16547; PWR6-LABEL: ult_19_v2i64: 16548; PWR6: # %bb.0: 16549; PWR6-NEXT: lis 5, 21845 16550; PWR6-NEXT: lis 6, 13107 16551; PWR6-NEXT: ori 5, 5, 21845 16552; PWR6-NEXT: rotldi 8, 4, 63 16553; PWR6-NEXT: rotldi 9, 3, 63 16554; PWR6-NEXT: rldimi 5, 5, 32, 0 16555; PWR6-NEXT: and 8, 8, 5 16556; PWR6-NEXT: and 5, 9, 5 16557; PWR6-NEXT: ori 6, 6, 13107 16558; PWR6-NEXT: sub 3, 3, 5 16559; PWR6-NEXT: rldimi 6, 6, 32, 0 16560; PWR6-NEXT: sub 4, 4, 8 16561; PWR6-NEXT: and 8, 3, 6 16562; PWR6-NEXT: rotldi 3, 3, 62 16563; PWR6-NEXT: and 3, 3, 6 16564; PWR6-NEXT: lis 7, 3855 16565; PWR6-NEXT: and 5, 4, 6 16566; PWR6-NEXT: rotldi 4, 4, 62 16567; PWR6-NEXT: add 3, 8, 3 16568; PWR6-NEXT: lis 9, 257 16569; PWR6-NEXT: ori 7, 7, 3855 16570; PWR6-NEXT: and 4, 4, 6 16571; PWR6-NEXT: rldicl 6, 3, 60, 4 16572; PWR6-NEXT: ori 9, 9, 257 16573; PWR6-NEXT: rldimi 7, 7, 32, 0 16574; PWR6-NEXT: add 4, 5, 4 16575; PWR6-NEXT: add 3, 3, 6 16576; PWR6-NEXT: rldimi 9, 9, 32, 0 16577; PWR6-NEXT: rldicl 5, 4, 60, 4 16578; PWR6-NEXT: and 3, 3, 7 16579; PWR6-NEXT: add 4, 4, 5 16580; PWR6-NEXT: mulld 3, 3, 9 16581; PWR6-NEXT: and 4, 4, 7 16582; PWR6-NEXT: rldicl 3, 3, 8, 56 16583; PWR6-NEXT: li 5, 19 16584; PWR6-NEXT: mulld 4, 4, 9 16585; PWR6-NEXT: subc 6, 3, 5 16586; PWR6-NEXT: rldicl 4, 4, 8, 56 16587; PWR6-NEXT: subfe 3, 3, 3 16588; PWR6-NEXT: subc 5, 4, 5 16589; PWR6-NEXT: subfe 4, 4, 4 16590; PWR6-NEXT: blr 16591; 16592; PWR7-LABEL: ult_19_v2i64: 16593; PWR7: # %bb.0: 16594; PWR7-NEXT: addi 3, 1, -32 16595; PWR7-NEXT: li 5, 0 16596; PWR7-NEXT: li 6, -1 16597; PWR7-NEXT: stxvd2x 34, 0, 3 16598; PWR7-NEXT: ld 3, -24(1) 16599; PWR7-NEXT: ld 4, -32(1) 16600; PWR7-NEXT: popcntd 3, 3 16601; PWR7-NEXT: popcntd 4, 4 16602; PWR7-NEXT: cmpldi 3, 19 16603; PWR7-NEXT: isellt 3, 6, 5 16604; PWR7-NEXT: cmpldi 4, 19 16605; PWR7-NEXT: isellt 4, 6, 5 16606; PWR7-NEXT: std 3, -8(1) 16607; PWR7-NEXT: addi 3, 1, -16 16608; PWR7-NEXT: std 4, -16(1) 16609; PWR7-NEXT: lxvd2x 34, 0, 3 16610; PWR7-NEXT: blr 16611; 16612; PWR8-LABEL: ult_19_v2i64: 16613; PWR8: # %bb.0: 16614; PWR8-NEXT: addis 3, 2, .LCPI135_0@toc@ha 16615; PWR8-NEXT: vpopcntd 2, 2 16616; PWR8-NEXT: addi 3, 3, .LCPI135_0@toc@l 16617; PWR8-NEXT: lxvd2x 35, 0, 3 16618; PWR8-NEXT: vcmpgtud 2, 3, 2 16619; PWR8-NEXT: blr 16620; 16621; PWR9-LABEL: ult_19_v2i64: 16622; PWR9: # %bb.0: 16623; PWR9-NEXT: addis 3, 2, .LCPI135_0@toc@ha 16624; PWR9-NEXT: vpopcntd 2, 2 16625; PWR9-NEXT: addi 3, 3, .LCPI135_0@toc@l 16626; PWR9-NEXT: lxvx 35, 0, 3 16627; PWR9-NEXT: vcmpgtud 2, 3, 2 16628; PWR9-NEXT: blr 16629 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16630 %3 = icmp ult <2 x i64> %2, <i64 19, i64 19> 16631 %4 = sext <2 x i1> %3 to <2 x i64> 16632 ret <2 x i64> %4 16633} 16634 16635define <2 x i64> @ugt_19_v2i64(<2 x i64> %0) { 16636; PWR5-LABEL: ugt_19_v2i64: 16637; PWR5: # %bb.0: 16638; PWR5-NEXT: lis 5, 21845 16639; PWR5-NEXT: lis 6, 13107 16640; PWR5-NEXT: ori 5, 5, 21845 16641; PWR5-NEXT: rotldi 8, 4, 63 16642; PWR5-NEXT: rotldi 9, 3, 63 16643; PWR5-NEXT: rldimi 5, 5, 32, 0 16644; PWR5-NEXT: and 8, 8, 5 16645; PWR5-NEXT: and 5, 9, 5 16646; PWR5-NEXT: ori 6, 6, 13107 16647; PWR5-NEXT: sub 3, 3, 5 16648; PWR5-NEXT: rldimi 6, 6, 32, 0 16649; PWR5-NEXT: sub 4, 4, 8 16650; PWR5-NEXT: and 8, 3, 6 16651; PWR5-NEXT: rotldi 3, 3, 62 16652; PWR5-NEXT: and 3, 3, 6 16653; PWR5-NEXT: lis 7, 3855 16654; PWR5-NEXT: and 5, 4, 6 16655; PWR5-NEXT: rotldi 4, 4, 62 16656; PWR5-NEXT: add 3, 8, 3 16657; PWR5-NEXT: lis 9, 257 16658; PWR5-NEXT: ori 7, 7, 3855 16659; PWR5-NEXT: and 4, 4, 6 16660; PWR5-NEXT: rldicl 6, 3, 60, 4 16661; PWR5-NEXT: ori 9, 9, 257 16662; PWR5-NEXT: rldimi 7, 7, 32, 0 16663; PWR5-NEXT: add 4, 5, 4 16664; PWR5-NEXT: add 3, 3, 6 16665; PWR5-NEXT: rldimi 9, 9, 32, 0 16666; PWR5-NEXT: rldicl 5, 4, 60, 4 16667; PWR5-NEXT: and 3, 3, 7 16668; PWR5-NEXT: add 4, 4, 5 16669; PWR5-NEXT: mulld 3, 3, 9 16670; PWR5-NEXT: and 4, 4, 7 16671; PWR5-NEXT: rldicl 3, 3, 8, 56 16672; PWR5-NEXT: mulld 4, 4, 9 16673; PWR5-NEXT: li 5, 19 16674; PWR5-NEXT: subfic 3, 3, 19 16675; PWR5-NEXT: rldicl 4, 4, 8, 56 16676; PWR5-NEXT: subfe 3, 5, 5 16677; PWR5-NEXT: subfic 4, 4, 19 16678; PWR5-NEXT: subfe 4, 5, 5 16679; PWR5-NEXT: blr 16680; 16681; PWR6-LABEL: ugt_19_v2i64: 16682; PWR6: # %bb.0: 16683; PWR6-NEXT: lis 5, 21845 16684; PWR6-NEXT: lis 6, 13107 16685; PWR6-NEXT: ori 5, 5, 21845 16686; PWR6-NEXT: rotldi 8, 4, 63 16687; PWR6-NEXT: rotldi 9, 3, 63 16688; PWR6-NEXT: rldimi 5, 5, 32, 0 16689; PWR6-NEXT: and 8, 8, 5 16690; PWR6-NEXT: and 5, 9, 5 16691; PWR6-NEXT: ori 6, 6, 13107 16692; PWR6-NEXT: sub 3, 3, 5 16693; PWR6-NEXT: rldimi 6, 6, 32, 0 16694; PWR6-NEXT: sub 4, 4, 8 16695; PWR6-NEXT: and 8, 3, 6 16696; PWR6-NEXT: rotldi 3, 3, 62 16697; PWR6-NEXT: and 3, 3, 6 16698; PWR6-NEXT: lis 7, 3855 16699; PWR6-NEXT: and 5, 4, 6 16700; PWR6-NEXT: rotldi 4, 4, 62 16701; PWR6-NEXT: add 3, 8, 3 16702; PWR6-NEXT: lis 9, 257 16703; PWR6-NEXT: ori 7, 7, 3855 16704; PWR6-NEXT: and 4, 4, 6 16705; PWR6-NEXT: rldicl 6, 3, 60, 4 16706; PWR6-NEXT: ori 9, 9, 257 16707; PWR6-NEXT: rldimi 7, 7, 32, 0 16708; PWR6-NEXT: add 4, 5, 4 16709; PWR6-NEXT: add 3, 3, 6 16710; PWR6-NEXT: rldimi 9, 9, 32, 0 16711; PWR6-NEXT: rldicl 5, 4, 60, 4 16712; PWR6-NEXT: and 3, 3, 7 16713; PWR6-NEXT: add 4, 4, 5 16714; PWR6-NEXT: mulld 3, 3, 9 16715; PWR6-NEXT: and 4, 4, 7 16716; PWR6-NEXT: rldicl 3, 3, 8, 56 16717; PWR6-NEXT: mulld 4, 4, 9 16718; PWR6-NEXT: li 5, 19 16719; PWR6-NEXT: subfic 3, 3, 19 16720; PWR6-NEXT: rldicl 4, 4, 8, 56 16721; PWR6-NEXT: subfe 3, 5, 5 16722; PWR6-NEXT: subfic 4, 4, 19 16723; PWR6-NEXT: subfe 4, 5, 5 16724; PWR6-NEXT: blr 16725; 16726; PWR7-LABEL: ugt_19_v2i64: 16727; PWR7: # %bb.0: 16728; PWR7-NEXT: addi 3, 1, -32 16729; PWR7-NEXT: li 5, 0 16730; PWR7-NEXT: li 6, -1 16731; PWR7-NEXT: stxvd2x 34, 0, 3 16732; PWR7-NEXT: ld 3, -24(1) 16733; PWR7-NEXT: ld 4, -32(1) 16734; PWR7-NEXT: popcntd 3, 3 16735; PWR7-NEXT: popcntd 4, 4 16736; PWR7-NEXT: cmpldi 3, 19 16737; PWR7-NEXT: iselgt 3, 6, 5 16738; PWR7-NEXT: cmpldi 4, 19 16739; PWR7-NEXT: iselgt 4, 6, 5 16740; PWR7-NEXT: std 3, -8(1) 16741; PWR7-NEXT: addi 3, 1, -16 16742; PWR7-NEXT: std 4, -16(1) 16743; PWR7-NEXT: lxvd2x 34, 0, 3 16744; PWR7-NEXT: blr 16745; 16746; PWR8-LABEL: ugt_19_v2i64: 16747; PWR8: # %bb.0: 16748; PWR8-NEXT: addis 3, 2, .LCPI136_0@toc@ha 16749; PWR8-NEXT: vpopcntd 2, 2 16750; PWR8-NEXT: addi 3, 3, .LCPI136_0@toc@l 16751; PWR8-NEXT: lxvd2x 35, 0, 3 16752; PWR8-NEXT: vcmpgtud 2, 2, 3 16753; PWR8-NEXT: blr 16754; 16755; PWR9-LABEL: ugt_19_v2i64: 16756; PWR9: # %bb.0: 16757; PWR9-NEXT: addis 3, 2, .LCPI136_0@toc@ha 16758; PWR9-NEXT: vpopcntd 2, 2 16759; PWR9-NEXT: addi 3, 3, .LCPI136_0@toc@l 16760; PWR9-NEXT: lxvx 35, 0, 3 16761; PWR9-NEXT: vcmpgtud 2, 2, 3 16762; PWR9-NEXT: blr 16763 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16764 %3 = icmp ugt <2 x i64> %2, <i64 19, i64 19> 16765 %4 = sext <2 x i1> %3 to <2 x i64> 16766 ret <2 x i64> %4 16767} 16768 16769define <2 x i64> @ult_20_v2i64(<2 x i64> %0) { 16770; PWR5-LABEL: ult_20_v2i64: 16771; PWR5: # %bb.0: 16772; PWR5-NEXT: lis 5, 21845 16773; PWR5-NEXT: lis 6, 13107 16774; PWR5-NEXT: ori 5, 5, 21845 16775; PWR5-NEXT: rotldi 8, 4, 63 16776; PWR5-NEXT: rotldi 9, 3, 63 16777; PWR5-NEXT: rldimi 5, 5, 32, 0 16778; PWR5-NEXT: and 8, 8, 5 16779; PWR5-NEXT: and 5, 9, 5 16780; PWR5-NEXT: ori 6, 6, 13107 16781; PWR5-NEXT: sub 3, 3, 5 16782; PWR5-NEXT: rldimi 6, 6, 32, 0 16783; PWR5-NEXT: sub 4, 4, 8 16784; PWR5-NEXT: and 8, 3, 6 16785; PWR5-NEXT: rotldi 3, 3, 62 16786; PWR5-NEXT: and 3, 3, 6 16787; PWR5-NEXT: lis 7, 3855 16788; PWR5-NEXT: and 5, 4, 6 16789; PWR5-NEXT: rotldi 4, 4, 62 16790; PWR5-NEXT: add 3, 8, 3 16791; PWR5-NEXT: lis 9, 257 16792; PWR5-NEXT: ori 7, 7, 3855 16793; PWR5-NEXT: and 4, 4, 6 16794; PWR5-NEXT: rldicl 6, 3, 60, 4 16795; PWR5-NEXT: ori 9, 9, 257 16796; PWR5-NEXT: rldimi 7, 7, 32, 0 16797; PWR5-NEXT: add 4, 5, 4 16798; PWR5-NEXT: add 3, 3, 6 16799; PWR5-NEXT: rldimi 9, 9, 32, 0 16800; PWR5-NEXT: rldicl 5, 4, 60, 4 16801; PWR5-NEXT: and 3, 3, 7 16802; PWR5-NEXT: add 4, 4, 5 16803; PWR5-NEXT: mulld 3, 3, 9 16804; PWR5-NEXT: and 4, 4, 7 16805; PWR5-NEXT: rldicl 3, 3, 8, 56 16806; PWR5-NEXT: li 5, 20 16807; PWR5-NEXT: mulld 4, 4, 9 16808; PWR5-NEXT: subc 6, 3, 5 16809; PWR5-NEXT: rldicl 4, 4, 8, 56 16810; PWR5-NEXT: subfe 3, 3, 3 16811; PWR5-NEXT: subc 5, 4, 5 16812; PWR5-NEXT: subfe 4, 4, 4 16813; PWR5-NEXT: blr 16814; 16815; PWR6-LABEL: ult_20_v2i64: 16816; PWR6: # %bb.0: 16817; PWR6-NEXT: lis 5, 21845 16818; PWR6-NEXT: lis 6, 13107 16819; PWR6-NEXT: ori 5, 5, 21845 16820; PWR6-NEXT: rotldi 8, 4, 63 16821; PWR6-NEXT: rotldi 9, 3, 63 16822; PWR6-NEXT: rldimi 5, 5, 32, 0 16823; PWR6-NEXT: and 8, 8, 5 16824; PWR6-NEXT: and 5, 9, 5 16825; PWR6-NEXT: ori 6, 6, 13107 16826; PWR6-NEXT: sub 3, 3, 5 16827; PWR6-NEXT: rldimi 6, 6, 32, 0 16828; PWR6-NEXT: sub 4, 4, 8 16829; PWR6-NEXT: and 8, 3, 6 16830; PWR6-NEXT: rotldi 3, 3, 62 16831; PWR6-NEXT: and 3, 3, 6 16832; PWR6-NEXT: lis 7, 3855 16833; PWR6-NEXT: and 5, 4, 6 16834; PWR6-NEXT: rotldi 4, 4, 62 16835; PWR6-NEXT: add 3, 8, 3 16836; PWR6-NEXT: lis 9, 257 16837; PWR6-NEXT: ori 7, 7, 3855 16838; PWR6-NEXT: and 4, 4, 6 16839; PWR6-NEXT: rldicl 6, 3, 60, 4 16840; PWR6-NEXT: ori 9, 9, 257 16841; PWR6-NEXT: rldimi 7, 7, 32, 0 16842; PWR6-NEXT: add 4, 5, 4 16843; PWR6-NEXT: add 3, 3, 6 16844; PWR6-NEXT: rldimi 9, 9, 32, 0 16845; PWR6-NEXT: rldicl 5, 4, 60, 4 16846; PWR6-NEXT: and 3, 3, 7 16847; PWR6-NEXT: add 4, 4, 5 16848; PWR6-NEXT: mulld 3, 3, 9 16849; PWR6-NEXT: and 4, 4, 7 16850; PWR6-NEXT: rldicl 3, 3, 8, 56 16851; PWR6-NEXT: li 5, 20 16852; PWR6-NEXT: mulld 4, 4, 9 16853; PWR6-NEXT: subc 6, 3, 5 16854; PWR6-NEXT: rldicl 4, 4, 8, 56 16855; PWR6-NEXT: subfe 3, 3, 3 16856; PWR6-NEXT: subc 5, 4, 5 16857; PWR6-NEXT: subfe 4, 4, 4 16858; PWR6-NEXT: blr 16859; 16860; PWR7-LABEL: ult_20_v2i64: 16861; PWR7: # %bb.0: 16862; PWR7-NEXT: addi 3, 1, -32 16863; PWR7-NEXT: li 5, 0 16864; PWR7-NEXT: li 6, -1 16865; PWR7-NEXT: stxvd2x 34, 0, 3 16866; PWR7-NEXT: ld 3, -24(1) 16867; PWR7-NEXT: ld 4, -32(1) 16868; PWR7-NEXT: popcntd 3, 3 16869; PWR7-NEXT: popcntd 4, 4 16870; PWR7-NEXT: cmpldi 3, 20 16871; PWR7-NEXT: isellt 3, 6, 5 16872; PWR7-NEXT: cmpldi 4, 20 16873; PWR7-NEXT: isellt 4, 6, 5 16874; PWR7-NEXT: std 3, -8(1) 16875; PWR7-NEXT: addi 3, 1, -16 16876; PWR7-NEXT: std 4, -16(1) 16877; PWR7-NEXT: lxvd2x 34, 0, 3 16878; PWR7-NEXT: blr 16879; 16880; PWR8-LABEL: ult_20_v2i64: 16881; PWR8: # %bb.0: 16882; PWR8-NEXT: addis 3, 2, .LCPI137_0@toc@ha 16883; PWR8-NEXT: vpopcntd 2, 2 16884; PWR8-NEXT: addi 3, 3, .LCPI137_0@toc@l 16885; PWR8-NEXT: lxvd2x 35, 0, 3 16886; PWR8-NEXT: vcmpgtud 2, 3, 2 16887; PWR8-NEXT: blr 16888; 16889; PWR9-LABEL: ult_20_v2i64: 16890; PWR9: # %bb.0: 16891; PWR9-NEXT: addis 3, 2, .LCPI137_0@toc@ha 16892; PWR9-NEXT: vpopcntd 2, 2 16893; PWR9-NEXT: addi 3, 3, .LCPI137_0@toc@l 16894; PWR9-NEXT: lxvx 35, 0, 3 16895; PWR9-NEXT: vcmpgtud 2, 3, 2 16896; PWR9-NEXT: blr 16897 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16898 %3 = icmp ult <2 x i64> %2, <i64 20, i64 20> 16899 %4 = sext <2 x i1> %3 to <2 x i64> 16900 ret <2 x i64> %4 16901} 16902 16903define <2 x i64> @ugt_20_v2i64(<2 x i64> %0) { 16904; PWR5-LABEL: ugt_20_v2i64: 16905; PWR5: # %bb.0: 16906; PWR5-NEXT: lis 5, 21845 16907; PWR5-NEXT: lis 6, 13107 16908; PWR5-NEXT: ori 5, 5, 21845 16909; PWR5-NEXT: rotldi 8, 4, 63 16910; PWR5-NEXT: rotldi 9, 3, 63 16911; PWR5-NEXT: rldimi 5, 5, 32, 0 16912; PWR5-NEXT: and 8, 8, 5 16913; PWR5-NEXT: and 5, 9, 5 16914; PWR5-NEXT: ori 6, 6, 13107 16915; PWR5-NEXT: sub 3, 3, 5 16916; PWR5-NEXT: rldimi 6, 6, 32, 0 16917; PWR5-NEXT: sub 4, 4, 8 16918; PWR5-NEXT: and 8, 3, 6 16919; PWR5-NEXT: rotldi 3, 3, 62 16920; PWR5-NEXT: and 3, 3, 6 16921; PWR5-NEXT: lis 7, 3855 16922; PWR5-NEXT: and 5, 4, 6 16923; PWR5-NEXT: rotldi 4, 4, 62 16924; PWR5-NEXT: add 3, 8, 3 16925; PWR5-NEXT: lis 9, 257 16926; PWR5-NEXT: ori 7, 7, 3855 16927; PWR5-NEXT: and 4, 4, 6 16928; PWR5-NEXT: rldicl 6, 3, 60, 4 16929; PWR5-NEXT: ori 9, 9, 257 16930; PWR5-NEXT: rldimi 7, 7, 32, 0 16931; PWR5-NEXT: add 4, 5, 4 16932; PWR5-NEXT: add 3, 3, 6 16933; PWR5-NEXT: rldimi 9, 9, 32, 0 16934; PWR5-NEXT: rldicl 5, 4, 60, 4 16935; PWR5-NEXT: and 3, 3, 7 16936; PWR5-NEXT: add 4, 4, 5 16937; PWR5-NEXT: mulld 3, 3, 9 16938; PWR5-NEXT: and 4, 4, 7 16939; PWR5-NEXT: rldicl 3, 3, 8, 56 16940; PWR5-NEXT: mulld 4, 4, 9 16941; PWR5-NEXT: li 5, 20 16942; PWR5-NEXT: subfic 3, 3, 20 16943; PWR5-NEXT: rldicl 4, 4, 8, 56 16944; PWR5-NEXT: subfe 3, 5, 5 16945; PWR5-NEXT: subfic 4, 4, 20 16946; PWR5-NEXT: subfe 4, 5, 5 16947; PWR5-NEXT: blr 16948; 16949; PWR6-LABEL: ugt_20_v2i64: 16950; PWR6: # %bb.0: 16951; PWR6-NEXT: lis 5, 21845 16952; PWR6-NEXT: lis 6, 13107 16953; PWR6-NEXT: ori 5, 5, 21845 16954; PWR6-NEXT: rotldi 8, 4, 63 16955; PWR6-NEXT: rotldi 9, 3, 63 16956; PWR6-NEXT: rldimi 5, 5, 32, 0 16957; PWR6-NEXT: and 8, 8, 5 16958; PWR6-NEXT: and 5, 9, 5 16959; PWR6-NEXT: ori 6, 6, 13107 16960; PWR6-NEXT: sub 3, 3, 5 16961; PWR6-NEXT: rldimi 6, 6, 32, 0 16962; PWR6-NEXT: sub 4, 4, 8 16963; PWR6-NEXT: and 8, 3, 6 16964; PWR6-NEXT: rotldi 3, 3, 62 16965; PWR6-NEXT: and 3, 3, 6 16966; PWR6-NEXT: lis 7, 3855 16967; PWR6-NEXT: and 5, 4, 6 16968; PWR6-NEXT: rotldi 4, 4, 62 16969; PWR6-NEXT: add 3, 8, 3 16970; PWR6-NEXT: lis 9, 257 16971; PWR6-NEXT: ori 7, 7, 3855 16972; PWR6-NEXT: and 4, 4, 6 16973; PWR6-NEXT: rldicl 6, 3, 60, 4 16974; PWR6-NEXT: ori 9, 9, 257 16975; PWR6-NEXT: rldimi 7, 7, 32, 0 16976; PWR6-NEXT: add 4, 5, 4 16977; PWR6-NEXT: add 3, 3, 6 16978; PWR6-NEXT: rldimi 9, 9, 32, 0 16979; PWR6-NEXT: rldicl 5, 4, 60, 4 16980; PWR6-NEXT: and 3, 3, 7 16981; PWR6-NEXT: add 4, 4, 5 16982; PWR6-NEXT: mulld 3, 3, 9 16983; PWR6-NEXT: and 4, 4, 7 16984; PWR6-NEXT: rldicl 3, 3, 8, 56 16985; PWR6-NEXT: mulld 4, 4, 9 16986; PWR6-NEXT: li 5, 20 16987; PWR6-NEXT: subfic 3, 3, 20 16988; PWR6-NEXT: rldicl 4, 4, 8, 56 16989; PWR6-NEXT: subfe 3, 5, 5 16990; PWR6-NEXT: subfic 4, 4, 20 16991; PWR6-NEXT: subfe 4, 5, 5 16992; PWR6-NEXT: blr 16993; 16994; PWR7-LABEL: ugt_20_v2i64: 16995; PWR7: # %bb.0: 16996; PWR7-NEXT: addi 3, 1, -32 16997; PWR7-NEXT: li 5, 0 16998; PWR7-NEXT: li 6, -1 16999; PWR7-NEXT: stxvd2x 34, 0, 3 17000; PWR7-NEXT: ld 3, -24(1) 17001; PWR7-NEXT: ld 4, -32(1) 17002; PWR7-NEXT: popcntd 3, 3 17003; PWR7-NEXT: popcntd 4, 4 17004; PWR7-NEXT: cmpldi 3, 20 17005; PWR7-NEXT: iselgt 3, 6, 5 17006; PWR7-NEXT: cmpldi 4, 20 17007; PWR7-NEXT: iselgt 4, 6, 5 17008; PWR7-NEXT: std 3, -8(1) 17009; PWR7-NEXT: addi 3, 1, -16 17010; PWR7-NEXT: std 4, -16(1) 17011; PWR7-NEXT: lxvd2x 34, 0, 3 17012; PWR7-NEXT: blr 17013; 17014; PWR8-LABEL: ugt_20_v2i64: 17015; PWR8: # %bb.0: 17016; PWR8-NEXT: addis 3, 2, .LCPI138_0@toc@ha 17017; PWR8-NEXT: vpopcntd 2, 2 17018; PWR8-NEXT: addi 3, 3, .LCPI138_0@toc@l 17019; PWR8-NEXT: lxvd2x 35, 0, 3 17020; PWR8-NEXT: vcmpgtud 2, 2, 3 17021; PWR8-NEXT: blr 17022; 17023; PWR9-LABEL: ugt_20_v2i64: 17024; PWR9: # %bb.0: 17025; PWR9-NEXT: addis 3, 2, .LCPI138_0@toc@ha 17026; PWR9-NEXT: vpopcntd 2, 2 17027; PWR9-NEXT: addi 3, 3, .LCPI138_0@toc@l 17028; PWR9-NEXT: lxvx 35, 0, 3 17029; PWR9-NEXT: vcmpgtud 2, 2, 3 17030; PWR9-NEXT: blr 17031 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17032 %3 = icmp ugt <2 x i64> %2, <i64 20, i64 20> 17033 %4 = sext <2 x i1> %3 to <2 x i64> 17034 ret <2 x i64> %4 17035} 17036 17037define <2 x i64> @ult_21_v2i64(<2 x i64> %0) { 17038; PWR5-LABEL: ult_21_v2i64: 17039; PWR5: # %bb.0: 17040; PWR5-NEXT: lis 5, 21845 17041; PWR5-NEXT: lis 6, 13107 17042; PWR5-NEXT: ori 5, 5, 21845 17043; PWR5-NEXT: rotldi 8, 4, 63 17044; PWR5-NEXT: rotldi 9, 3, 63 17045; PWR5-NEXT: rldimi 5, 5, 32, 0 17046; PWR5-NEXT: and 8, 8, 5 17047; PWR5-NEXT: and 5, 9, 5 17048; PWR5-NEXT: ori 6, 6, 13107 17049; PWR5-NEXT: sub 3, 3, 5 17050; PWR5-NEXT: rldimi 6, 6, 32, 0 17051; PWR5-NEXT: sub 4, 4, 8 17052; PWR5-NEXT: and 8, 3, 6 17053; PWR5-NEXT: rotldi 3, 3, 62 17054; PWR5-NEXT: and 3, 3, 6 17055; PWR5-NEXT: lis 7, 3855 17056; PWR5-NEXT: and 5, 4, 6 17057; PWR5-NEXT: rotldi 4, 4, 62 17058; PWR5-NEXT: add 3, 8, 3 17059; PWR5-NEXT: lis 9, 257 17060; PWR5-NEXT: ori 7, 7, 3855 17061; PWR5-NEXT: and 4, 4, 6 17062; PWR5-NEXT: rldicl 6, 3, 60, 4 17063; PWR5-NEXT: ori 9, 9, 257 17064; PWR5-NEXT: rldimi 7, 7, 32, 0 17065; PWR5-NEXT: add 4, 5, 4 17066; PWR5-NEXT: add 3, 3, 6 17067; PWR5-NEXT: rldimi 9, 9, 32, 0 17068; PWR5-NEXT: rldicl 5, 4, 60, 4 17069; PWR5-NEXT: and 3, 3, 7 17070; PWR5-NEXT: add 4, 4, 5 17071; PWR5-NEXT: mulld 3, 3, 9 17072; PWR5-NEXT: and 4, 4, 7 17073; PWR5-NEXT: rldicl 3, 3, 8, 56 17074; PWR5-NEXT: li 5, 21 17075; PWR5-NEXT: mulld 4, 4, 9 17076; PWR5-NEXT: subc 6, 3, 5 17077; PWR5-NEXT: rldicl 4, 4, 8, 56 17078; PWR5-NEXT: subfe 3, 3, 3 17079; PWR5-NEXT: subc 5, 4, 5 17080; PWR5-NEXT: subfe 4, 4, 4 17081; PWR5-NEXT: blr 17082; 17083; PWR6-LABEL: ult_21_v2i64: 17084; PWR6: # %bb.0: 17085; PWR6-NEXT: lis 5, 21845 17086; PWR6-NEXT: lis 6, 13107 17087; PWR6-NEXT: ori 5, 5, 21845 17088; PWR6-NEXT: rotldi 8, 4, 63 17089; PWR6-NEXT: rotldi 9, 3, 63 17090; PWR6-NEXT: rldimi 5, 5, 32, 0 17091; PWR6-NEXT: and 8, 8, 5 17092; PWR6-NEXT: and 5, 9, 5 17093; PWR6-NEXT: ori 6, 6, 13107 17094; PWR6-NEXT: sub 3, 3, 5 17095; PWR6-NEXT: rldimi 6, 6, 32, 0 17096; PWR6-NEXT: sub 4, 4, 8 17097; PWR6-NEXT: and 8, 3, 6 17098; PWR6-NEXT: rotldi 3, 3, 62 17099; PWR6-NEXT: and 3, 3, 6 17100; PWR6-NEXT: lis 7, 3855 17101; PWR6-NEXT: and 5, 4, 6 17102; PWR6-NEXT: rotldi 4, 4, 62 17103; PWR6-NEXT: add 3, 8, 3 17104; PWR6-NEXT: lis 9, 257 17105; PWR6-NEXT: ori 7, 7, 3855 17106; PWR6-NEXT: and 4, 4, 6 17107; PWR6-NEXT: rldicl 6, 3, 60, 4 17108; PWR6-NEXT: ori 9, 9, 257 17109; PWR6-NEXT: rldimi 7, 7, 32, 0 17110; PWR6-NEXT: add 4, 5, 4 17111; PWR6-NEXT: add 3, 3, 6 17112; PWR6-NEXT: rldimi 9, 9, 32, 0 17113; PWR6-NEXT: rldicl 5, 4, 60, 4 17114; PWR6-NEXT: and 3, 3, 7 17115; PWR6-NEXT: add 4, 4, 5 17116; PWR6-NEXT: mulld 3, 3, 9 17117; PWR6-NEXT: and 4, 4, 7 17118; PWR6-NEXT: rldicl 3, 3, 8, 56 17119; PWR6-NEXT: li 5, 21 17120; PWR6-NEXT: mulld 4, 4, 9 17121; PWR6-NEXT: subc 6, 3, 5 17122; PWR6-NEXT: rldicl 4, 4, 8, 56 17123; PWR6-NEXT: subfe 3, 3, 3 17124; PWR6-NEXT: subc 5, 4, 5 17125; PWR6-NEXT: subfe 4, 4, 4 17126; PWR6-NEXT: blr 17127; 17128; PWR7-LABEL: ult_21_v2i64: 17129; PWR7: # %bb.0: 17130; PWR7-NEXT: addi 3, 1, -32 17131; PWR7-NEXT: li 5, 0 17132; PWR7-NEXT: li 6, -1 17133; PWR7-NEXT: stxvd2x 34, 0, 3 17134; PWR7-NEXT: ld 3, -24(1) 17135; PWR7-NEXT: ld 4, -32(1) 17136; PWR7-NEXT: popcntd 3, 3 17137; PWR7-NEXT: popcntd 4, 4 17138; PWR7-NEXT: cmpldi 3, 21 17139; PWR7-NEXT: isellt 3, 6, 5 17140; PWR7-NEXT: cmpldi 4, 21 17141; PWR7-NEXT: isellt 4, 6, 5 17142; PWR7-NEXT: std 3, -8(1) 17143; PWR7-NEXT: addi 3, 1, -16 17144; PWR7-NEXT: std 4, -16(1) 17145; PWR7-NEXT: lxvd2x 34, 0, 3 17146; PWR7-NEXT: blr 17147; 17148; PWR8-LABEL: ult_21_v2i64: 17149; PWR8: # %bb.0: 17150; PWR8-NEXT: addis 3, 2, .LCPI139_0@toc@ha 17151; PWR8-NEXT: vpopcntd 2, 2 17152; PWR8-NEXT: addi 3, 3, .LCPI139_0@toc@l 17153; PWR8-NEXT: lxvd2x 35, 0, 3 17154; PWR8-NEXT: vcmpgtud 2, 3, 2 17155; PWR8-NEXT: blr 17156; 17157; PWR9-LABEL: ult_21_v2i64: 17158; PWR9: # %bb.0: 17159; PWR9-NEXT: addis 3, 2, .LCPI139_0@toc@ha 17160; PWR9-NEXT: vpopcntd 2, 2 17161; PWR9-NEXT: addi 3, 3, .LCPI139_0@toc@l 17162; PWR9-NEXT: lxvx 35, 0, 3 17163; PWR9-NEXT: vcmpgtud 2, 3, 2 17164; PWR9-NEXT: blr 17165 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17166 %3 = icmp ult <2 x i64> %2, <i64 21, i64 21> 17167 %4 = sext <2 x i1> %3 to <2 x i64> 17168 ret <2 x i64> %4 17169} 17170 17171define <2 x i64> @ugt_21_v2i64(<2 x i64> %0) { 17172; PWR5-LABEL: ugt_21_v2i64: 17173; PWR5: # %bb.0: 17174; PWR5-NEXT: lis 5, 21845 17175; PWR5-NEXT: lis 6, 13107 17176; PWR5-NEXT: ori 5, 5, 21845 17177; PWR5-NEXT: rotldi 8, 4, 63 17178; PWR5-NEXT: rotldi 9, 3, 63 17179; PWR5-NEXT: rldimi 5, 5, 32, 0 17180; PWR5-NEXT: and 8, 8, 5 17181; PWR5-NEXT: and 5, 9, 5 17182; PWR5-NEXT: ori 6, 6, 13107 17183; PWR5-NEXT: sub 3, 3, 5 17184; PWR5-NEXT: rldimi 6, 6, 32, 0 17185; PWR5-NEXT: sub 4, 4, 8 17186; PWR5-NEXT: and 8, 3, 6 17187; PWR5-NEXT: rotldi 3, 3, 62 17188; PWR5-NEXT: and 3, 3, 6 17189; PWR5-NEXT: lis 7, 3855 17190; PWR5-NEXT: and 5, 4, 6 17191; PWR5-NEXT: rotldi 4, 4, 62 17192; PWR5-NEXT: add 3, 8, 3 17193; PWR5-NEXT: lis 9, 257 17194; PWR5-NEXT: ori 7, 7, 3855 17195; PWR5-NEXT: and 4, 4, 6 17196; PWR5-NEXT: rldicl 6, 3, 60, 4 17197; PWR5-NEXT: ori 9, 9, 257 17198; PWR5-NEXT: rldimi 7, 7, 32, 0 17199; PWR5-NEXT: add 4, 5, 4 17200; PWR5-NEXT: add 3, 3, 6 17201; PWR5-NEXT: rldimi 9, 9, 32, 0 17202; PWR5-NEXT: rldicl 5, 4, 60, 4 17203; PWR5-NEXT: and 3, 3, 7 17204; PWR5-NEXT: add 4, 4, 5 17205; PWR5-NEXT: mulld 3, 3, 9 17206; PWR5-NEXT: and 4, 4, 7 17207; PWR5-NEXT: rldicl 3, 3, 8, 56 17208; PWR5-NEXT: mulld 4, 4, 9 17209; PWR5-NEXT: li 5, 21 17210; PWR5-NEXT: subfic 3, 3, 21 17211; PWR5-NEXT: rldicl 4, 4, 8, 56 17212; PWR5-NEXT: subfe 3, 5, 5 17213; PWR5-NEXT: subfic 4, 4, 21 17214; PWR5-NEXT: subfe 4, 5, 5 17215; PWR5-NEXT: blr 17216; 17217; PWR6-LABEL: ugt_21_v2i64: 17218; PWR6: # %bb.0: 17219; PWR6-NEXT: lis 5, 21845 17220; PWR6-NEXT: lis 6, 13107 17221; PWR6-NEXT: ori 5, 5, 21845 17222; PWR6-NEXT: rotldi 8, 4, 63 17223; PWR6-NEXT: rotldi 9, 3, 63 17224; PWR6-NEXT: rldimi 5, 5, 32, 0 17225; PWR6-NEXT: and 8, 8, 5 17226; PWR6-NEXT: and 5, 9, 5 17227; PWR6-NEXT: ori 6, 6, 13107 17228; PWR6-NEXT: sub 3, 3, 5 17229; PWR6-NEXT: rldimi 6, 6, 32, 0 17230; PWR6-NEXT: sub 4, 4, 8 17231; PWR6-NEXT: and 8, 3, 6 17232; PWR6-NEXT: rotldi 3, 3, 62 17233; PWR6-NEXT: and 3, 3, 6 17234; PWR6-NEXT: lis 7, 3855 17235; PWR6-NEXT: and 5, 4, 6 17236; PWR6-NEXT: rotldi 4, 4, 62 17237; PWR6-NEXT: add 3, 8, 3 17238; PWR6-NEXT: lis 9, 257 17239; PWR6-NEXT: ori 7, 7, 3855 17240; PWR6-NEXT: and 4, 4, 6 17241; PWR6-NEXT: rldicl 6, 3, 60, 4 17242; PWR6-NEXT: ori 9, 9, 257 17243; PWR6-NEXT: rldimi 7, 7, 32, 0 17244; PWR6-NEXT: add 4, 5, 4 17245; PWR6-NEXT: add 3, 3, 6 17246; PWR6-NEXT: rldimi 9, 9, 32, 0 17247; PWR6-NEXT: rldicl 5, 4, 60, 4 17248; PWR6-NEXT: and 3, 3, 7 17249; PWR6-NEXT: add 4, 4, 5 17250; PWR6-NEXT: mulld 3, 3, 9 17251; PWR6-NEXT: and 4, 4, 7 17252; PWR6-NEXT: rldicl 3, 3, 8, 56 17253; PWR6-NEXT: mulld 4, 4, 9 17254; PWR6-NEXT: li 5, 21 17255; PWR6-NEXT: subfic 3, 3, 21 17256; PWR6-NEXT: rldicl 4, 4, 8, 56 17257; PWR6-NEXT: subfe 3, 5, 5 17258; PWR6-NEXT: subfic 4, 4, 21 17259; PWR6-NEXT: subfe 4, 5, 5 17260; PWR6-NEXT: blr 17261; 17262; PWR7-LABEL: ugt_21_v2i64: 17263; PWR7: # %bb.0: 17264; PWR7-NEXT: addi 3, 1, -32 17265; PWR7-NEXT: li 5, 0 17266; PWR7-NEXT: li 6, -1 17267; PWR7-NEXT: stxvd2x 34, 0, 3 17268; PWR7-NEXT: ld 3, -24(1) 17269; PWR7-NEXT: ld 4, -32(1) 17270; PWR7-NEXT: popcntd 3, 3 17271; PWR7-NEXT: popcntd 4, 4 17272; PWR7-NEXT: cmpldi 3, 21 17273; PWR7-NEXT: iselgt 3, 6, 5 17274; PWR7-NEXT: cmpldi 4, 21 17275; PWR7-NEXT: iselgt 4, 6, 5 17276; PWR7-NEXT: std 3, -8(1) 17277; PWR7-NEXT: addi 3, 1, -16 17278; PWR7-NEXT: std 4, -16(1) 17279; PWR7-NEXT: lxvd2x 34, 0, 3 17280; PWR7-NEXT: blr 17281; 17282; PWR8-LABEL: ugt_21_v2i64: 17283; PWR8: # %bb.0: 17284; PWR8-NEXT: addis 3, 2, .LCPI140_0@toc@ha 17285; PWR8-NEXT: vpopcntd 2, 2 17286; PWR8-NEXT: addi 3, 3, .LCPI140_0@toc@l 17287; PWR8-NEXT: lxvd2x 35, 0, 3 17288; PWR8-NEXT: vcmpgtud 2, 2, 3 17289; PWR8-NEXT: blr 17290; 17291; PWR9-LABEL: ugt_21_v2i64: 17292; PWR9: # %bb.0: 17293; PWR9-NEXT: addis 3, 2, .LCPI140_0@toc@ha 17294; PWR9-NEXT: vpopcntd 2, 2 17295; PWR9-NEXT: addi 3, 3, .LCPI140_0@toc@l 17296; PWR9-NEXT: lxvx 35, 0, 3 17297; PWR9-NEXT: vcmpgtud 2, 2, 3 17298; PWR9-NEXT: blr 17299 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17300 %3 = icmp ugt <2 x i64> %2, <i64 21, i64 21> 17301 %4 = sext <2 x i1> %3 to <2 x i64> 17302 ret <2 x i64> %4 17303} 17304 17305define <2 x i64> @ult_22_v2i64(<2 x i64> %0) { 17306; PWR5-LABEL: ult_22_v2i64: 17307; PWR5: # %bb.0: 17308; PWR5-NEXT: lis 5, 21845 17309; PWR5-NEXT: lis 6, 13107 17310; PWR5-NEXT: ori 5, 5, 21845 17311; PWR5-NEXT: rotldi 8, 4, 63 17312; PWR5-NEXT: rotldi 9, 3, 63 17313; PWR5-NEXT: rldimi 5, 5, 32, 0 17314; PWR5-NEXT: and 8, 8, 5 17315; PWR5-NEXT: and 5, 9, 5 17316; PWR5-NEXT: ori 6, 6, 13107 17317; PWR5-NEXT: sub 3, 3, 5 17318; PWR5-NEXT: rldimi 6, 6, 32, 0 17319; PWR5-NEXT: sub 4, 4, 8 17320; PWR5-NEXT: and 8, 3, 6 17321; PWR5-NEXT: rotldi 3, 3, 62 17322; PWR5-NEXT: and 3, 3, 6 17323; PWR5-NEXT: lis 7, 3855 17324; PWR5-NEXT: and 5, 4, 6 17325; PWR5-NEXT: rotldi 4, 4, 62 17326; PWR5-NEXT: add 3, 8, 3 17327; PWR5-NEXT: lis 9, 257 17328; PWR5-NEXT: ori 7, 7, 3855 17329; PWR5-NEXT: and 4, 4, 6 17330; PWR5-NEXT: rldicl 6, 3, 60, 4 17331; PWR5-NEXT: ori 9, 9, 257 17332; PWR5-NEXT: rldimi 7, 7, 32, 0 17333; PWR5-NEXT: add 4, 5, 4 17334; PWR5-NEXT: add 3, 3, 6 17335; PWR5-NEXT: rldimi 9, 9, 32, 0 17336; PWR5-NEXT: rldicl 5, 4, 60, 4 17337; PWR5-NEXT: and 3, 3, 7 17338; PWR5-NEXT: add 4, 4, 5 17339; PWR5-NEXT: mulld 3, 3, 9 17340; PWR5-NEXT: and 4, 4, 7 17341; PWR5-NEXT: rldicl 3, 3, 8, 56 17342; PWR5-NEXT: li 5, 22 17343; PWR5-NEXT: mulld 4, 4, 9 17344; PWR5-NEXT: subc 6, 3, 5 17345; PWR5-NEXT: rldicl 4, 4, 8, 56 17346; PWR5-NEXT: subfe 3, 3, 3 17347; PWR5-NEXT: subc 5, 4, 5 17348; PWR5-NEXT: subfe 4, 4, 4 17349; PWR5-NEXT: blr 17350; 17351; PWR6-LABEL: ult_22_v2i64: 17352; PWR6: # %bb.0: 17353; PWR6-NEXT: lis 5, 21845 17354; PWR6-NEXT: lis 6, 13107 17355; PWR6-NEXT: ori 5, 5, 21845 17356; PWR6-NEXT: rotldi 8, 4, 63 17357; PWR6-NEXT: rotldi 9, 3, 63 17358; PWR6-NEXT: rldimi 5, 5, 32, 0 17359; PWR6-NEXT: and 8, 8, 5 17360; PWR6-NEXT: and 5, 9, 5 17361; PWR6-NEXT: ori 6, 6, 13107 17362; PWR6-NEXT: sub 3, 3, 5 17363; PWR6-NEXT: rldimi 6, 6, 32, 0 17364; PWR6-NEXT: sub 4, 4, 8 17365; PWR6-NEXT: and 8, 3, 6 17366; PWR6-NEXT: rotldi 3, 3, 62 17367; PWR6-NEXT: and 3, 3, 6 17368; PWR6-NEXT: lis 7, 3855 17369; PWR6-NEXT: and 5, 4, 6 17370; PWR6-NEXT: rotldi 4, 4, 62 17371; PWR6-NEXT: add 3, 8, 3 17372; PWR6-NEXT: lis 9, 257 17373; PWR6-NEXT: ori 7, 7, 3855 17374; PWR6-NEXT: and 4, 4, 6 17375; PWR6-NEXT: rldicl 6, 3, 60, 4 17376; PWR6-NEXT: ori 9, 9, 257 17377; PWR6-NEXT: rldimi 7, 7, 32, 0 17378; PWR6-NEXT: add 4, 5, 4 17379; PWR6-NEXT: add 3, 3, 6 17380; PWR6-NEXT: rldimi 9, 9, 32, 0 17381; PWR6-NEXT: rldicl 5, 4, 60, 4 17382; PWR6-NEXT: and 3, 3, 7 17383; PWR6-NEXT: add 4, 4, 5 17384; PWR6-NEXT: mulld 3, 3, 9 17385; PWR6-NEXT: and 4, 4, 7 17386; PWR6-NEXT: rldicl 3, 3, 8, 56 17387; PWR6-NEXT: li 5, 22 17388; PWR6-NEXT: mulld 4, 4, 9 17389; PWR6-NEXT: subc 6, 3, 5 17390; PWR6-NEXT: rldicl 4, 4, 8, 56 17391; PWR6-NEXT: subfe 3, 3, 3 17392; PWR6-NEXT: subc 5, 4, 5 17393; PWR6-NEXT: subfe 4, 4, 4 17394; PWR6-NEXT: blr 17395; 17396; PWR7-LABEL: ult_22_v2i64: 17397; PWR7: # %bb.0: 17398; PWR7-NEXT: addi 3, 1, -32 17399; PWR7-NEXT: li 5, 0 17400; PWR7-NEXT: li 6, -1 17401; PWR7-NEXT: stxvd2x 34, 0, 3 17402; PWR7-NEXT: ld 3, -24(1) 17403; PWR7-NEXT: ld 4, -32(1) 17404; PWR7-NEXT: popcntd 3, 3 17405; PWR7-NEXT: popcntd 4, 4 17406; PWR7-NEXT: cmpldi 3, 22 17407; PWR7-NEXT: isellt 3, 6, 5 17408; PWR7-NEXT: cmpldi 4, 22 17409; PWR7-NEXT: isellt 4, 6, 5 17410; PWR7-NEXT: std 3, -8(1) 17411; PWR7-NEXT: addi 3, 1, -16 17412; PWR7-NEXT: std 4, -16(1) 17413; PWR7-NEXT: lxvd2x 34, 0, 3 17414; PWR7-NEXT: blr 17415; 17416; PWR8-LABEL: ult_22_v2i64: 17417; PWR8: # %bb.0: 17418; PWR8-NEXT: addis 3, 2, .LCPI141_0@toc@ha 17419; PWR8-NEXT: vpopcntd 2, 2 17420; PWR8-NEXT: addi 3, 3, .LCPI141_0@toc@l 17421; PWR8-NEXT: lxvd2x 35, 0, 3 17422; PWR8-NEXT: vcmpgtud 2, 3, 2 17423; PWR8-NEXT: blr 17424; 17425; PWR9-LABEL: ult_22_v2i64: 17426; PWR9: # %bb.0: 17427; PWR9-NEXT: addis 3, 2, .LCPI141_0@toc@ha 17428; PWR9-NEXT: vpopcntd 2, 2 17429; PWR9-NEXT: addi 3, 3, .LCPI141_0@toc@l 17430; PWR9-NEXT: lxvx 35, 0, 3 17431; PWR9-NEXT: vcmpgtud 2, 3, 2 17432; PWR9-NEXT: blr 17433 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17434 %3 = icmp ult <2 x i64> %2, <i64 22, i64 22> 17435 %4 = sext <2 x i1> %3 to <2 x i64> 17436 ret <2 x i64> %4 17437} 17438 17439define <2 x i64> @ugt_22_v2i64(<2 x i64> %0) { 17440; PWR5-LABEL: ugt_22_v2i64: 17441; PWR5: # %bb.0: 17442; PWR5-NEXT: lis 5, 21845 17443; PWR5-NEXT: lis 6, 13107 17444; PWR5-NEXT: ori 5, 5, 21845 17445; PWR5-NEXT: rotldi 8, 4, 63 17446; PWR5-NEXT: rotldi 9, 3, 63 17447; PWR5-NEXT: rldimi 5, 5, 32, 0 17448; PWR5-NEXT: and 8, 8, 5 17449; PWR5-NEXT: and 5, 9, 5 17450; PWR5-NEXT: ori 6, 6, 13107 17451; PWR5-NEXT: sub 3, 3, 5 17452; PWR5-NEXT: rldimi 6, 6, 32, 0 17453; PWR5-NEXT: sub 4, 4, 8 17454; PWR5-NEXT: and 8, 3, 6 17455; PWR5-NEXT: rotldi 3, 3, 62 17456; PWR5-NEXT: and 3, 3, 6 17457; PWR5-NEXT: lis 7, 3855 17458; PWR5-NEXT: and 5, 4, 6 17459; PWR5-NEXT: rotldi 4, 4, 62 17460; PWR5-NEXT: add 3, 8, 3 17461; PWR5-NEXT: lis 9, 257 17462; PWR5-NEXT: ori 7, 7, 3855 17463; PWR5-NEXT: and 4, 4, 6 17464; PWR5-NEXT: rldicl 6, 3, 60, 4 17465; PWR5-NEXT: ori 9, 9, 257 17466; PWR5-NEXT: rldimi 7, 7, 32, 0 17467; PWR5-NEXT: add 4, 5, 4 17468; PWR5-NEXT: add 3, 3, 6 17469; PWR5-NEXT: rldimi 9, 9, 32, 0 17470; PWR5-NEXT: rldicl 5, 4, 60, 4 17471; PWR5-NEXT: and 3, 3, 7 17472; PWR5-NEXT: add 4, 4, 5 17473; PWR5-NEXT: mulld 3, 3, 9 17474; PWR5-NEXT: and 4, 4, 7 17475; PWR5-NEXT: rldicl 3, 3, 8, 56 17476; PWR5-NEXT: mulld 4, 4, 9 17477; PWR5-NEXT: li 5, 22 17478; PWR5-NEXT: subfic 3, 3, 22 17479; PWR5-NEXT: rldicl 4, 4, 8, 56 17480; PWR5-NEXT: subfe 3, 5, 5 17481; PWR5-NEXT: subfic 4, 4, 22 17482; PWR5-NEXT: subfe 4, 5, 5 17483; PWR5-NEXT: blr 17484; 17485; PWR6-LABEL: ugt_22_v2i64: 17486; PWR6: # %bb.0: 17487; PWR6-NEXT: lis 5, 21845 17488; PWR6-NEXT: lis 6, 13107 17489; PWR6-NEXT: ori 5, 5, 21845 17490; PWR6-NEXT: rotldi 8, 4, 63 17491; PWR6-NEXT: rotldi 9, 3, 63 17492; PWR6-NEXT: rldimi 5, 5, 32, 0 17493; PWR6-NEXT: and 8, 8, 5 17494; PWR6-NEXT: and 5, 9, 5 17495; PWR6-NEXT: ori 6, 6, 13107 17496; PWR6-NEXT: sub 3, 3, 5 17497; PWR6-NEXT: rldimi 6, 6, 32, 0 17498; PWR6-NEXT: sub 4, 4, 8 17499; PWR6-NEXT: and 8, 3, 6 17500; PWR6-NEXT: rotldi 3, 3, 62 17501; PWR6-NEXT: and 3, 3, 6 17502; PWR6-NEXT: lis 7, 3855 17503; PWR6-NEXT: and 5, 4, 6 17504; PWR6-NEXT: rotldi 4, 4, 62 17505; PWR6-NEXT: add 3, 8, 3 17506; PWR6-NEXT: lis 9, 257 17507; PWR6-NEXT: ori 7, 7, 3855 17508; PWR6-NEXT: and 4, 4, 6 17509; PWR6-NEXT: rldicl 6, 3, 60, 4 17510; PWR6-NEXT: ori 9, 9, 257 17511; PWR6-NEXT: rldimi 7, 7, 32, 0 17512; PWR6-NEXT: add 4, 5, 4 17513; PWR6-NEXT: add 3, 3, 6 17514; PWR6-NEXT: rldimi 9, 9, 32, 0 17515; PWR6-NEXT: rldicl 5, 4, 60, 4 17516; PWR6-NEXT: and 3, 3, 7 17517; PWR6-NEXT: add 4, 4, 5 17518; PWR6-NEXT: mulld 3, 3, 9 17519; PWR6-NEXT: and 4, 4, 7 17520; PWR6-NEXT: rldicl 3, 3, 8, 56 17521; PWR6-NEXT: mulld 4, 4, 9 17522; PWR6-NEXT: li 5, 22 17523; PWR6-NEXT: subfic 3, 3, 22 17524; PWR6-NEXT: rldicl 4, 4, 8, 56 17525; PWR6-NEXT: subfe 3, 5, 5 17526; PWR6-NEXT: subfic 4, 4, 22 17527; PWR6-NEXT: subfe 4, 5, 5 17528; PWR6-NEXT: blr 17529; 17530; PWR7-LABEL: ugt_22_v2i64: 17531; PWR7: # %bb.0: 17532; PWR7-NEXT: addi 3, 1, -32 17533; PWR7-NEXT: li 5, 0 17534; PWR7-NEXT: li 6, -1 17535; PWR7-NEXT: stxvd2x 34, 0, 3 17536; PWR7-NEXT: ld 3, -24(1) 17537; PWR7-NEXT: ld 4, -32(1) 17538; PWR7-NEXT: popcntd 3, 3 17539; PWR7-NEXT: popcntd 4, 4 17540; PWR7-NEXT: cmpldi 3, 22 17541; PWR7-NEXT: iselgt 3, 6, 5 17542; PWR7-NEXT: cmpldi 4, 22 17543; PWR7-NEXT: iselgt 4, 6, 5 17544; PWR7-NEXT: std 3, -8(1) 17545; PWR7-NEXT: addi 3, 1, -16 17546; PWR7-NEXT: std 4, -16(1) 17547; PWR7-NEXT: lxvd2x 34, 0, 3 17548; PWR7-NEXT: blr 17549; 17550; PWR8-LABEL: ugt_22_v2i64: 17551; PWR8: # %bb.0: 17552; PWR8-NEXT: addis 3, 2, .LCPI142_0@toc@ha 17553; PWR8-NEXT: vpopcntd 2, 2 17554; PWR8-NEXT: addi 3, 3, .LCPI142_0@toc@l 17555; PWR8-NEXT: lxvd2x 35, 0, 3 17556; PWR8-NEXT: vcmpgtud 2, 2, 3 17557; PWR8-NEXT: blr 17558; 17559; PWR9-LABEL: ugt_22_v2i64: 17560; PWR9: # %bb.0: 17561; PWR9-NEXT: addis 3, 2, .LCPI142_0@toc@ha 17562; PWR9-NEXT: vpopcntd 2, 2 17563; PWR9-NEXT: addi 3, 3, .LCPI142_0@toc@l 17564; PWR9-NEXT: lxvx 35, 0, 3 17565; PWR9-NEXT: vcmpgtud 2, 2, 3 17566; PWR9-NEXT: blr 17567 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17568 %3 = icmp ugt <2 x i64> %2, <i64 22, i64 22> 17569 %4 = sext <2 x i1> %3 to <2 x i64> 17570 ret <2 x i64> %4 17571} 17572 17573define <2 x i64> @ult_23_v2i64(<2 x i64> %0) { 17574; PWR5-LABEL: ult_23_v2i64: 17575; PWR5: # %bb.0: 17576; PWR5-NEXT: lis 5, 21845 17577; PWR5-NEXT: lis 6, 13107 17578; PWR5-NEXT: ori 5, 5, 21845 17579; PWR5-NEXT: rotldi 8, 4, 63 17580; PWR5-NEXT: rotldi 9, 3, 63 17581; PWR5-NEXT: rldimi 5, 5, 32, 0 17582; PWR5-NEXT: and 8, 8, 5 17583; PWR5-NEXT: and 5, 9, 5 17584; PWR5-NEXT: ori 6, 6, 13107 17585; PWR5-NEXT: sub 3, 3, 5 17586; PWR5-NEXT: rldimi 6, 6, 32, 0 17587; PWR5-NEXT: sub 4, 4, 8 17588; PWR5-NEXT: and 8, 3, 6 17589; PWR5-NEXT: rotldi 3, 3, 62 17590; PWR5-NEXT: and 3, 3, 6 17591; PWR5-NEXT: lis 7, 3855 17592; PWR5-NEXT: and 5, 4, 6 17593; PWR5-NEXT: rotldi 4, 4, 62 17594; PWR5-NEXT: add 3, 8, 3 17595; PWR5-NEXT: lis 9, 257 17596; PWR5-NEXT: ori 7, 7, 3855 17597; PWR5-NEXT: and 4, 4, 6 17598; PWR5-NEXT: rldicl 6, 3, 60, 4 17599; PWR5-NEXT: ori 9, 9, 257 17600; PWR5-NEXT: rldimi 7, 7, 32, 0 17601; PWR5-NEXT: add 4, 5, 4 17602; PWR5-NEXT: add 3, 3, 6 17603; PWR5-NEXT: rldimi 9, 9, 32, 0 17604; PWR5-NEXT: rldicl 5, 4, 60, 4 17605; PWR5-NEXT: and 3, 3, 7 17606; PWR5-NEXT: add 4, 4, 5 17607; PWR5-NEXT: mulld 3, 3, 9 17608; PWR5-NEXT: and 4, 4, 7 17609; PWR5-NEXT: rldicl 3, 3, 8, 56 17610; PWR5-NEXT: li 5, 23 17611; PWR5-NEXT: mulld 4, 4, 9 17612; PWR5-NEXT: subc 6, 3, 5 17613; PWR5-NEXT: rldicl 4, 4, 8, 56 17614; PWR5-NEXT: subfe 3, 3, 3 17615; PWR5-NEXT: subc 5, 4, 5 17616; PWR5-NEXT: subfe 4, 4, 4 17617; PWR5-NEXT: blr 17618; 17619; PWR6-LABEL: ult_23_v2i64: 17620; PWR6: # %bb.0: 17621; PWR6-NEXT: lis 5, 21845 17622; PWR6-NEXT: lis 6, 13107 17623; PWR6-NEXT: ori 5, 5, 21845 17624; PWR6-NEXT: rotldi 8, 4, 63 17625; PWR6-NEXT: rotldi 9, 3, 63 17626; PWR6-NEXT: rldimi 5, 5, 32, 0 17627; PWR6-NEXT: and 8, 8, 5 17628; PWR6-NEXT: and 5, 9, 5 17629; PWR6-NEXT: ori 6, 6, 13107 17630; PWR6-NEXT: sub 3, 3, 5 17631; PWR6-NEXT: rldimi 6, 6, 32, 0 17632; PWR6-NEXT: sub 4, 4, 8 17633; PWR6-NEXT: and 8, 3, 6 17634; PWR6-NEXT: rotldi 3, 3, 62 17635; PWR6-NEXT: and 3, 3, 6 17636; PWR6-NEXT: lis 7, 3855 17637; PWR6-NEXT: and 5, 4, 6 17638; PWR6-NEXT: rotldi 4, 4, 62 17639; PWR6-NEXT: add 3, 8, 3 17640; PWR6-NEXT: lis 9, 257 17641; PWR6-NEXT: ori 7, 7, 3855 17642; PWR6-NEXT: and 4, 4, 6 17643; PWR6-NEXT: rldicl 6, 3, 60, 4 17644; PWR6-NEXT: ori 9, 9, 257 17645; PWR6-NEXT: rldimi 7, 7, 32, 0 17646; PWR6-NEXT: add 4, 5, 4 17647; PWR6-NEXT: add 3, 3, 6 17648; PWR6-NEXT: rldimi 9, 9, 32, 0 17649; PWR6-NEXT: rldicl 5, 4, 60, 4 17650; PWR6-NEXT: and 3, 3, 7 17651; PWR6-NEXT: add 4, 4, 5 17652; PWR6-NEXT: mulld 3, 3, 9 17653; PWR6-NEXT: and 4, 4, 7 17654; PWR6-NEXT: rldicl 3, 3, 8, 56 17655; PWR6-NEXT: li 5, 23 17656; PWR6-NEXT: mulld 4, 4, 9 17657; PWR6-NEXT: subc 6, 3, 5 17658; PWR6-NEXT: rldicl 4, 4, 8, 56 17659; PWR6-NEXT: subfe 3, 3, 3 17660; PWR6-NEXT: subc 5, 4, 5 17661; PWR6-NEXT: subfe 4, 4, 4 17662; PWR6-NEXT: blr 17663; 17664; PWR7-LABEL: ult_23_v2i64: 17665; PWR7: # %bb.0: 17666; PWR7-NEXT: addi 3, 1, -32 17667; PWR7-NEXT: li 5, 0 17668; PWR7-NEXT: li 6, -1 17669; PWR7-NEXT: stxvd2x 34, 0, 3 17670; PWR7-NEXT: ld 3, -24(1) 17671; PWR7-NEXT: ld 4, -32(1) 17672; PWR7-NEXT: popcntd 3, 3 17673; PWR7-NEXT: popcntd 4, 4 17674; PWR7-NEXT: cmpldi 3, 23 17675; PWR7-NEXT: isellt 3, 6, 5 17676; PWR7-NEXT: cmpldi 4, 23 17677; PWR7-NEXT: isellt 4, 6, 5 17678; PWR7-NEXT: std 3, -8(1) 17679; PWR7-NEXT: addi 3, 1, -16 17680; PWR7-NEXT: std 4, -16(1) 17681; PWR7-NEXT: lxvd2x 34, 0, 3 17682; PWR7-NEXT: blr 17683; 17684; PWR8-LABEL: ult_23_v2i64: 17685; PWR8: # %bb.0: 17686; PWR8-NEXT: addis 3, 2, .LCPI143_0@toc@ha 17687; PWR8-NEXT: vpopcntd 2, 2 17688; PWR8-NEXT: addi 3, 3, .LCPI143_0@toc@l 17689; PWR8-NEXT: lxvd2x 35, 0, 3 17690; PWR8-NEXT: vcmpgtud 2, 3, 2 17691; PWR8-NEXT: blr 17692; 17693; PWR9-LABEL: ult_23_v2i64: 17694; PWR9: # %bb.0: 17695; PWR9-NEXT: addis 3, 2, .LCPI143_0@toc@ha 17696; PWR9-NEXT: vpopcntd 2, 2 17697; PWR9-NEXT: addi 3, 3, .LCPI143_0@toc@l 17698; PWR9-NEXT: lxvx 35, 0, 3 17699; PWR9-NEXT: vcmpgtud 2, 3, 2 17700; PWR9-NEXT: blr 17701 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17702 %3 = icmp ult <2 x i64> %2, <i64 23, i64 23> 17703 %4 = sext <2 x i1> %3 to <2 x i64> 17704 ret <2 x i64> %4 17705} 17706 17707define <2 x i64> @ugt_23_v2i64(<2 x i64> %0) { 17708; PWR5-LABEL: ugt_23_v2i64: 17709; PWR5: # %bb.0: 17710; PWR5-NEXT: lis 5, 21845 17711; PWR5-NEXT: lis 6, 13107 17712; PWR5-NEXT: ori 5, 5, 21845 17713; PWR5-NEXT: rotldi 8, 4, 63 17714; PWR5-NEXT: rotldi 9, 3, 63 17715; PWR5-NEXT: rldimi 5, 5, 32, 0 17716; PWR5-NEXT: and 8, 8, 5 17717; PWR5-NEXT: and 5, 9, 5 17718; PWR5-NEXT: ori 6, 6, 13107 17719; PWR5-NEXT: sub 3, 3, 5 17720; PWR5-NEXT: rldimi 6, 6, 32, 0 17721; PWR5-NEXT: sub 4, 4, 8 17722; PWR5-NEXT: and 8, 3, 6 17723; PWR5-NEXT: rotldi 3, 3, 62 17724; PWR5-NEXT: and 3, 3, 6 17725; PWR5-NEXT: lis 7, 3855 17726; PWR5-NEXT: and 5, 4, 6 17727; PWR5-NEXT: rotldi 4, 4, 62 17728; PWR5-NEXT: add 3, 8, 3 17729; PWR5-NEXT: lis 9, 257 17730; PWR5-NEXT: ori 7, 7, 3855 17731; PWR5-NEXT: and 4, 4, 6 17732; PWR5-NEXT: rldicl 6, 3, 60, 4 17733; PWR5-NEXT: ori 9, 9, 257 17734; PWR5-NEXT: rldimi 7, 7, 32, 0 17735; PWR5-NEXT: add 4, 5, 4 17736; PWR5-NEXT: add 3, 3, 6 17737; PWR5-NEXT: rldimi 9, 9, 32, 0 17738; PWR5-NEXT: rldicl 5, 4, 60, 4 17739; PWR5-NEXT: and 3, 3, 7 17740; PWR5-NEXT: add 4, 4, 5 17741; PWR5-NEXT: mulld 3, 3, 9 17742; PWR5-NEXT: and 4, 4, 7 17743; PWR5-NEXT: rldicl 3, 3, 8, 56 17744; PWR5-NEXT: mulld 4, 4, 9 17745; PWR5-NEXT: li 5, 23 17746; PWR5-NEXT: subfic 3, 3, 23 17747; PWR5-NEXT: rldicl 4, 4, 8, 56 17748; PWR5-NEXT: subfe 3, 5, 5 17749; PWR5-NEXT: subfic 4, 4, 23 17750; PWR5-NEXT: subfe 4, 5, 5 17751; PWR5-NEXT: blr 17752; 17753; PWR6-LABEL: ugt_23_v2i64: 17754; PWR6: # %bb.0: 17755; PWR6-NEXT: lis 5, 21845 17756; PWR6-NEXT: lis 6, 13107 17757; PWR6-NEXT: ori 5, 5, 21845 17758; PWR6-NEXT: rotldi 8, 4, 63 17759; PWR6-NEXT: rotldi 9, 3, 63 17760; PWR6-NEXT: rldimi 5, 5, 32, 0 17761; PWR6-NEXT: and 8, 8, 5 17762; PWR6-NEXT: and 5, 9, 5 17763; PWR6-NEXT: ori 6, 6, 13107 17764; PWR6-NEXT: sub 3, 3, 5 17765; PWR6-NEXT: rldimi 6, 6, 32, 0 17766; PWR6-NEXT: sub 4, 4, 8 17767; PWR6-NEXT: and 8, 3, 6 17768; PWR6-NEXT: rotldi 3, 3, 62 17769; PWR6-NEXT: and 3, 3, 6 17770; PWR6-NEXT: lis 7, 3855 17771; PWR6-NEXT: and 5, 4, 6 17772; PWR6-NEXT: rotldi 4, 4, 62 17773; PWR6-NEXT: add 3, 8, 3 17774; PWR6-NEXT: lis 9, 257 17775; PWR6-NEXT: ori 7, 7, 3855 17776; PWR6-NEXT: and 4, 4, 6 17777; PWR6-NEXT: rldicl 6, 3, 60, 4 17778; PWR6-NEXT: ori 9, 9, 257 17779; PWR6-NEXT: rldimi 7, 7, 32, 0 17780; PWR6-NEXT: add 4, 5, 4 17781; PWR6-NEXT: add 3, 3, 6 17782; PWR6-NEXT: rldimi 9, 9, 32, 0 17783; PWR6-NEXT: rldicl 5, 4, 60, 4 17784; PWR6-NEXT: and 3, 3, 7 17785; PWR6-NEXT: add 4, 4, 5 17786; PWR6-NEXT: mulld 3, 3, 9 17787; PWR6-NEXT: and 4, 4, 7 17788; PWR6-NEXT: rldicl 3, 3, 8, 56 17789; PWR6-NEXT: mulld 4, 4, 9 17790; PWR6-NEXT: li 5, 23 17791; PWR6-NEXT: subfic 3, 3, 23 17792; PWR6-NEXT: rldicl 4, 4, 8, 56 17793; PWR6-NEXT: subfe 3, 5, 5 17794; PWR6-NEXT: subfic 4, 4, 23 17795; PWR6-NEXT: subfe 4, 5, 5 17796; PWR6-NEXT: blr 17797; 17798; PWR7-LABEL: ugt_23_v2i64: 17799; PWR7: # %bb.0: 17800; PWR7-NEXT: addi 3, 1, -32 17801; PWR7-NEXT: li 5, 0 17802; PWR7-NEXT: li 6, -1 17803; PWR7-NEXT: stxvd2x 34, 0, 3 17804; PWR7-NEXT: ld 3, -24(1) 17805; PWR7-NEXT: ld 4, -32(1) 17806; PWR7-NEXT: popcntd 3, 3 17807; PWR7-NEXT: popcntd 4, 4 17808; PWR7-NEXT: cmpldi 3, 23 17809; PWR7-NEXT: iselgt 3, 6, 5 17810; PWR7-NEXT: cmpldi 4, 23 17811; PWR7-NEXT: iselgt 4, 6, 5 17812; PWR7-NEXT: std 3, -8(1) 17813; PWR7-NEXT: addi 3, 1, -16 17814; PWR7-NEXT: std 4, -16(1) 17815; PWR7-NEXT: lxvd2x 34, 0, 3 17816; PWR7-NEXT: blr 17817; 17818; PWR8-LABEL: ugt_23_v2i64: 17819; PWR8: # %bb.0: 17820; PWR8-NEXT: addis 3, 2, .LCPI144_0@toc@ha 17821; PWR8-NEXT: vpopcntd 2, 2 17822; PWR8-NEXT: addi 3, 3, .LCPI144_0@toc@l 17823; PWR8-NEXT: lxvd2x 35, 0, 3 17824; PWR8-NEXT: vcmpgtud 2, 2, 3 17825; PWR8-NEXT: blr 17826; 17827; PWR9-LABEL: ugt_23_v2i64: 17828; PWR9: # %bb.0: 17829; PWR9-NEXT: addis 3, 2, .LCPI144_0@toc@ha 17830; PWR9-NEXT: vpopcntd 2, 2 17831; PWR9-NEXT: addi 3, 3, .LCPI144_0@toc@l 17832; PWR9-NEXT: lxvx 35, 0, 3 17833; PWR9-NEXT: vcmpgtud 2, 2, 3 17834; PWR9-NEXT: blr 17835 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17836 %3 = icmp ugt <2 x i64> %2, <i64 23, i64 23> 17837 %4 = sext <2 x i1> %3 to <2 x i64> 17838 ret <2 x i64> %4 17839} 17840 17841define <2 x i64> @ult_24_v2i64(<2 x i64> %0) { 17842; PWR5-LABEL: ult_24_v2i64: 17843; PWR5: # %bb.0: 17844; PWR5-NEXT: lis 5, 21845 17845; PWR5-NEXT: lis 6, 13107 17846; PWR5-NEXT: ori 5, 5, 21845 17847; PWR5-NEXT: rotldi 8, 4, 63 17848; PWR5-NEXT: rotldi 9, 3, 63 17849; PWR5-NEXT: rldimi 5, 5, 32, 0 17850; PWR5-NEXT: and 8, 8, 5 17851; PWR5-NEXT: and 5, 9, 5 17852; PWR5-NEXT: ori 6, 6, 13107 17853; PWR5-NEXT: sub 3, 3, 5 17854; PWR5-NEXT: rldimi 6, 6, 32, 0 17855; PWR5-NEXT: sub 4, 4, 8 17856; PWR5-NEXT: and 8, 3, 6 17857; PWR5-NEXT: rotldi 3, 3, 62 17858; PWR5-NEXT: and 3, 3, 6 17859; PWR5-NEXT: lis 7, 3855 17860; PWR5-NEXT: and 5, 4, 6 17861; PWR5-NEXT: rotldi 4, 4, 62 17862; PWR5-NEXT: add 3, 8, 3 17863; PWR5-NEXT: lis 9, 257 17864; PWR5-NEXT: ori 7, 7, 3855 17865; PWR5-NEXT: and 4, 4, 6 17866; PWR5-NEXT: rldicl 6, 3, 60, 4 17867; PWR5-NEXT: ori 9, 9, 257 17868; PWR5-NEXT: rldimi 7, 7, 32, 0 17869; PWR5-NEXT: add 4, 5, 4 17870; PWR5-NEXT: add 3, 3, 6 17871; PWR5-NEXT: rldimi 9, 9, 32, 0 17872; PWR5-NEXT: rldicl 5, 4, 60, 4 17873; PWR5-NEXT: and 3, 3, 7 17874; PWR5-NEXT: add 4, 4, 5 17875; PWR5-NEXT: mulld 3, 3, 9 17876; PWR5-NEXT: and 4, 4, 7 17877; PWR5-NEXT: rldicl 3, 3, 8, 56 17878; PWR5-NEXT: li 5, 24 17879; PWR5-NEXT: mulld 4, 4, 9 17880; PWR5-NEXT: subc 6, 3, 5 17881; PWR5-NEXT: rldicl 4, 4, 8, 56 17882; PWR5-NEXT: subfe 3, 3, 3 17883; PWR5-NEXT: subc 5, 4, 5 17884; PWR5-NEXT: subfe 4, 4, 4 17885; PWR5-NEXT: blr 17886; 17887; PWR6-LABEL: ult_24_v2i64: 17888; PWR6: # %bb.0: 17889; PWR6-NEXT: lis 5, 21845 17890; PWR6-NEXT: lis 6, 13107 17891; PWR6-NEXT: ori 5, 5, 21845 17892; PWR6-NEXT: rotldi 8, 4, 63 17893; PWR6-NEXT: rotldi 9, 3, 63 17894; PWR6-NEXT: rldimi 5, 5, 32, 0 17895; PWR6-NEXT: and 8, 8, 5 17896; PWR6-NEXT: and 5, 9, 5 17897; PWR6-NEXT: ori 6, 6, 13107 17898; PWR6-NEXT: sub 3, 3, 5 17899; PWR6-NEXT: rldimi 6, 6, 32, 0 17900; PWR6-NEXT: sub 4, 4, 8 17901; PWR6-NEXT: and 8, 3, 6 17902; PWR6-NEXT: rotldi 3, 3, 62 17903; PWR6-NEXT: and 3, 3, 6 17904; PWR6-NEXT: lis 7, 3855 17905; PWR6-NEXT: and 5, 4, 6 17906; PWR6-NEXT: rotldi 4, 4, 62 17907; PWR6-NEXT: add 3, 8, 3 17908; PWR6-NEXT: lis 9, 257 17909; PWR6-NEXT: ori 7, 7, 3855 17910; PWR6-NEXT: and 4, 4, 6 17911; PWR6-NEXT: rldicl 6, 3, 60, 4 17912; PWR6-NEXT: ori 9, 9, 257 17913; PWR6-NEXT: rldimi 7, 7, 32, 0 17914; PWR6-NEXT: add 4, 5, 4 17915; PWR6-NEXT: add 3, 3, 6 17916; PWR6-NEXT: rldimi 9, 9, 32, 0 17917; PWR6-NEXT: rldicl 5, 4, 60, 4 17918; PWR6-NEXT: and 3, 3, 7 17919; PWR6-NEXT: add 4, 4, 5 17920; PWR6-NEXT: mulld 3, 3, 9 17921; PWR6-NEXT: and 4, 4, 7 17922; PWR6-NEXT: rldicl 3, 3, 8, 56 17923; PWR6-NEXT: li 5, 24 17924; PWR6-NEXT: mulld 4, 4, 9 17925; PWR6-NEXT: subc 6, 3, 5 17926; PWR6-NEXT: rldicl 4, 4, 8, 56 17927; PWR6-NEXT: subfe 3, 3, 3 17928; PWR6-NEXT: subc 5, 4, 5 17929; PWR6-NEXT: subfe 4, 4, 4 17930; PWR6-NEXT: blr 17931; 17932; PWR7-LABEL: ult_24_v2i64: 17933; PWR7: # %bb.0: 17934; PWR7-NEXT: addi 3, 1, -32 17935; PWR7-NEXT: li 5, 0 17936; PWR7-NEXT: li 6, -1 17937; PWR7-NEXT: stxvd2x 34, 0, 3 17938; PWR7-NEXT: ld 3, -24(1) 17939; PWR7-NEXT: ld 4, -32(1) 17940; PWR7-NEXT: popcntd 3, 3 17941; PWR7-NEXT: popcntd 4, 4 17942; PWR7-NEXT: cmpldi 3, 24 17943; PWR7-NEXT: isellt 3, 6, 5 17944; PWR7-NEXT: cmpldi 4, 24 17945; PWR7-NEXT: isellt 4, 6, 5 17946; PWR7-NEXT: std 3, -8(1) 17947; PWR7-NEXT: addi 3, 1, -16 17948; PWR7-NEXT: std 4, -16(1) 17949; PWR7-NEXT: lxvd2x 34, 0, 3 17950; PWR7-NEXT: blr 17951; 17952; PWR8-LABEL: ult_24_v2i64: 17953; PWR8: # %bb.0: 17954; PWR8-NEXT: addis 3, 2, .LCPI145_0@toc@ha 17955; PWR8-NEXT: vpopcntd 2, 2 17956; PWR8-NEXT: addi 3, 3, .LCPI145_0@toc@l 17957; PWR8-NEXT: lxvd2x 35, 0, 3 17958; PWR8-NEXT: vcmpgtud 2, 3, 2 17959; PWR8-NEXT: blr 17960; 17961; PWR9-LABEL: ult_24_v2i64: 17962; PWR9: # %bb.0: 17963; PWR9-NEXT: addis 3, 2, .LCPI145_0@toc@ha 17964; PWR9-NEXT: vpopcntd 2, 2 17965; PWR9-NEXT: addi 3, 3, .LCPI145_0@toc@l 17966; PWR9-NEXT: lxvx 35, 0, 3 17967; PWR9-NEXT: vcmpgtud 2, 3, 2 17968; PWR9-NEXT: blr 17969 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17970 %3 = icmp ult <2 x i64> %2, <i64 24, i64 24> 17971 %4 = sext <2 x i1> %3 to <2 x i64> 17972 ret <2 x i64> %4 17973} 17974 17975define <2 x i64> @ugt_24_v2i64(<2 x i64> %0) { 17976; PWR5-LABEL: ugt_24_v2i64: 17977; PWR5: # %bb.0: 17978; PWR5-NEXT: lis 5, 21845 17979; PWR5-NEXT: lis 6, 13107 17980; PWR5-NEXT: ori 5, 5, 21845 17981; PWR5-NEXT: rotldi 8, 4, 63 17982; PWR5-NEXT: rotldi 9, 3, 63 17983; PWR5-NEXT: rldimi 5, 5, 32, 0 17984; PWR5-NEXT: and 8, 8, 5 17985; PWR5-NEXT: and 5, 9, 5 17986; PWR5-NEXT: ori 6, 6, 13107 17987; PWR5-NEXT: sub 3, 3, 5 17988; PWR5-NEXT: rldimi 6, 6, 32, 0 17989; PWR5-NEXT: sub 4, 4, 8 17990; PWR5-NEXT: and 8, 3, 6 17991; PWR5-NEXT: rotldi 3, 3, 62 17992; PWR5-NEXT: and 3, 3, 6 17993; PWR5-NEXT: lis 7, 3855 17994; PWR5-NEXT: and 5, 4, 6 17995; PWR5-NEXT: rotldi 4, 4, 62 17996; PWR5-NEXT: add 3, 8, 3 17997; PWR5-NEXT: lis 9, 257 17998; PWR5-NEXT: ori 7, 7, 3855 17999; PWR5-NEXT: and 4, 4, 6 18000; PWR5-NEXT: rldicl 6, 3, 60, 4 18001; PWR5-NEXT: ori 9, 9, 257 18002; PWR5-NEXT: rldimi 7, 7, 32, 0 18003; PWR5-NEXT: add 4, 5, 4 18004; PWR5-NEXT: add 3, 3, 6 18005; PWR5-NEXT: rldimi 9, 9, 32, 0 18006; PWR5-NEXT: rldicl 5, 4, 60, 4 18007; PWR5-NEXT: and 3, 3, 7 18008; PWR5-NEXT: add 4, 4, 5 18009; PWR5-NEXT: mulld 3, 3, 9 18010; PWR5-NEXT: and 4, 4, 7 18011; PWR5-NEXT: rldicl 3, 3, 8, 56 18012; PWR5-NEXT: mulld 4, 4, 9 18013; PWR5-NEXT: li 5, 24 18014; PWR5-NEXT: subfic 3, 3, 24 18015; PWR5-NEXT: rldicl 4, 4, 8, 56 18016; PWR5-NEXT: subfe 3, 5, 5 18017; PWR5-NEXT: subfic 4, 4, 24 18018; PWR5-NEXT: subfe 4, 5, 5 18019; PWR5-NEXT: blr 18020; 18021; PWR6-LABEL: ugt_24_v2i64: 18022; PWR6: # %bb.0: 18023; PWR6-NEXT: lis 5, 21845 18024; PWR6-NEXT: lis 6, 13107 18025; PWR6-NEXT: ori 5, 5, 21845 18026; PWR6-NEXT: rotldi 8, 4, 63 18027; PWR6-NEXT: rotldi 9, 3, 63 18028; PWR6-NEXT: rldimi 5, 5, 32, 0 18029; PWR6-NEXT: and 8, 8, 5 18030; PWR6-NEXT: and 5, 9, 5 18031; PWR6-NEXT: ori 6, 6, 13107 18032; PWR6-NEXT: sub 3, 3, 5 18033; PWR6-NEXT: rldimi 6, 6, 32, 0 18034; PWR6-NEXT: sub 4, 4, 8 18035; PWR6-NEXT: and 8, 3, 6 18036; PWR6-NEXT: rotldi 3, 3, 62 18037; PWR6-NEXT: and 3, 3, 6 18038; PWR6-NEXT: lis 7, 3855 18039; PWR6-NEXT: and 5, 4, 6 18040; PWR6-NEXT: rotldi 4, 4, 62 18041; PWR6-NEXT: add 3, 8, 3 18042; PWR6-NEXT: lis 9, 257 18043; PWR6-NEXT: ori 7, 7, 3855 18044; PWR6-NEXT: and 4, 4, 6 18045; PWR6-NEXT: rldicl 6, 3, 60, 4 18046; PWR6-NEXT: ori 9, 9, 257 18047; PWR6-NEXT: rldimi 7, 7, 32, 0 18048; PWR6-NEXT: add 4, 5, 4 18049; PWR6-NEXT: add 3, 3, 6 18050; PWR6-NEXT: rldimi 9, 9, 32, 0 18051; PWR6-NEXT: rldicl 5, 4, 60, 4 18052; PWR6-NEXT: and 3, 3, 7 18053; PWR6-NEXT: add 4, 4, 5 18054; PWR6-NEXT: mulld 3, 3, 9 18055; PWR6-NEXT: and 4, 4, 7 18056; PWR6-NEXT: rldicl 3, 3, 8, 56 18057; PWR6-NEXT: mulld 4, 4, 9 18058; PWR6-NEXT: li 5, 24 18059; PWR6-NEXT: subfic 3, 3, 24 18060; PWR6-NEXT: rldicl 4, 4, 8, 56 18061; PWR6-NEXT: subfe 3, 5, 5 18062; PWR6-NEXT: subfic 4, 4, 24 18063; PWR6-NEXT: subfe 4, 5, 5 18064; PWR6-NEXT: blr 18065; 18066; PWR7-LABEL: ugt_24_v2i64: 18067; PWR7: # %bb.0: 18068; PWR7-NEXT: addi 3, 1, -32 18069; PWR7-NEXT: li 5, 0 18070; PWR7-NEXT: li 6, -1 18071; PWR7-NEXT: stxvd2x 34, 0, 3 18072; PWR7-NEXT: ld 3, -24(1) 18073; PWR7-NEXT: ld 4, -32(1) 18074; PWR7-NEXT: popcntd 3, 3 18075; PWR7-NEXT: popcntd 4, 4 18076; PWR7-NEXT: cmpldi 3, 24 18077; PWR7-NEXT: iselgt 3, 6, 5 18078; PWR7-NEXT: cmpldi 4, 24 18079; PWR7-NEXT: iselgt 4, 6, 5 18080; PWR7-NEXT: std 3, -8(1) 18081; PWR7-NEXT: addi 3, 1, -16 18082; PWR7-NEXT: std 4, -16(1) 18083; PWR7-NEXT: lxvd2x 34, 0, 3 18084; PWR7-NEXT: blr 18085; 18086; PWR8-LABEL: ugt_24_v2i64: 18087; PWR8: # %bb.0: 18088; PWR8-NEXT: addis 3, 2, .LCPI146_0@toc@ha 18089; PWR8-NEXT: vpopcntd 2, 2 18090; PWR8-NEXT: addi 3, 3, .LCPI146_0@toc@l 18091; PWR8-NEXT: lxvd2x 35, 0, 3 18092; PWR8-NEXT: vcmpgtud 2, 2, 3 18093; PWR8-NEXT: blr 18094; 18095; PWR9-LABEL: ugt_24_v2i64: 18096; PWR9: # %bb.0: 18097; PWR9-NEXT: addis 3, 2, .LCPI146_0@toc@ha 18098; PWR9-NEXT: vpopcntd 2, 2 18099; PWR9-NEXT: addi 3, 3, .LCPI146_0@toc@l 18100; PWR9-NEXT: lxvx 35, 0, 3 18101; PWR9-NEXT: vcmpgtud 2, 2, 3 18102; PWR9-NEXT: blr 18103 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18104 %3 = icmp ugt <2 x i64> %2, <i64 24, i64 24> 18105 %4 = sext <2 x i1> %3 to <2 x i64> 18106 ret <2 x i64> %4 18107} 18108 18109define <2 x i64> @ult_25_v2i64(<2 x i64> %0) { 18110; PWR5-LABEL: ult_25_v2i64: 18111; PWR5: # %bb.0: 18112; PWR5-NEXT: lis 5, 21845 18113; PWR5-NEXT: lis 6, 13107 18114; PWR5-NEXT: ori 5, 5, 21845 18115; PWR5-NEXT: rotldi 8, 4, 63 18116; PWR5-NEXT: rotldi 9, 3, 63 18117; PWR5-NEXT: rldimi 5, 5, 32, 0 18118; PWR5-NEXT: and 8, 8, 5 18119; PWR5-NEXT: and 5, 9, 5 18120; PWR5-NEXT: ori 6, 6, 13107 18121; PWR5-NEXT: sub 3, 3, 5 18122; PWR5-NEXT: rldimi 6, 6, 32, 0 18123; PWR5-NEXT: sub 4, 4, 8 18124; PWR5-NEXT: and 8, 3, 6 18125; PWR5-NEXT: rotldi 3, 3, 62 18126; PWR5-NEXT: and 3, 3, 6 18127; PWR5-NEXT: lis 7, 3855 18128; PWR5-NEXT: and 5, 4, 6 18129; PWR5-NEXT: rotldi 4, 4, 62 18130; PWR5-NEXT: add 3, 8, 3 18131; PWR5-NEXT: lis 9, 257 18132; PWR5-NEXT: ori 7, 7, 3855 18133; PWR5-NEXT: and 4, 4, 6 18134; PWR5-NEXT: rldicl 6, 3, 60, 4 18135; PWR5-NEXT: ori 9, 9, 257 18136; PWR5-NEXT: rldimi 7, 7, 32, 0 18137; PWR5-NEXT: add 4, 5, 4 18138; PWR5-NEXT: add 3, 3, 6 18139; PWR5-NEXT: rldimi 9, 9, 32, 0 18140; PWR5-NEXT: rldicl 5, 4, 60, 4 18141; PWR5-NEXT: and 3, 3, 7 18142; PWR5-NEXT: add 4, 4, 5 18143; PWR5-NEXT: mulld 3, 3, 9 18144; PWR5-NEXT: and 4, 4, 7 18145; PWR5-NEXT: rldicl 3, 3, 8, 56 18146; PWR5-NEXT: li 5, 25 18147; PWR5-NEXT: mulld 4, 4, 9 18148; PWR5-NEXT: subc 6, 3, 5 18149; PWR5-NEXT: rldicl 4, 4, 8, 56 18150; PWR5-NEXT: subfe 3, 3, 3 18151; PWR5-NEXT: subc 5, 4, 5 18152; PWR5-NEXT: subfe 4, 4, 4 18153; PWR5-NEXT: blr 18154; 18155; PWR6-LABEL: ult_25_v2i64: 18156; PWR6: # %bb.0: 18157; PWR6-NEXT: lis 5, 21845 18158; PWR6-NEXT: lis 6, 13107 18159; PWR6-NEXT: ori 5, 5, 21845 18160; PWR6-NEXT: rotldi 8, 4, 63 18161; PWR6-NEXT: rotldi 9, 3, 63 18162; PWR6-NEXT: rldimi 5, 5, 32, 0 18163; PWR6-NEXT: and 8, 8, 5 18164; PWR6-NEXT: and 5, 9, 5 18165; PWR6-NEXT: ori 6, 6, 13107 18166; PWR6-NEXT: sub 3, 3, 5 18167; PWR6-NEXT: rldimi 6, 6, 32, 0 18168; PWR6-NEXT: sub 4, 4, 8 18169; PWR6-NEXT: and 8, 3, 6 18170; PWR6-NEXT: rotldi 3, 3, 62 18171; PWR6-NEXT: and 3, 3, 6 18172; PWR6-NEXT: lis 7, 3855 18173; PWR6-NEXT: and 5, 4, 6 18174; PWR6-NEXT: rotldi 4, 4, 62 18175; PWR6-NEXT: add 3, 8, 3 18176; PWR6-NEXT: lis 9, 257 18177; PWR6-NEXT: ori 7, 7, 3855 18178; PWR6-NEXT: and 4, 4, 6 18179; PWR6-NEXT: rldicl 6, 3, 60, 4 18180; PWR6-NEXT: ori 9, 9, 257 18181; PWR6-NEXT: rldimi 7, 7, 32, 0 18182; PWR6-NEXT: add 4, 5, 4 18183; PWR6-NEXT: add 3, 3, 6 18184; PWR6-NEXT: rldimi 9, 9, 32, 0 18185; PWR6-NEXT: rldicl 5, 4, 60, 4 18186; PWR6-NEXT: and 3, 3, 7 18187; PWR6-NEXT: add 4, 4, 5 18188; PWR6-NEXT: mulld 3, 3, 9 18189; PWR6-NEXT: and 4, 4, 7 18190; PWR6-NEXT: rldicl 3, 3, 8, 56 18191; PWR6-NEXT: li 5, 25 18192; PWR6-NEXT: mulld 4, 4, 9 18193; PWR6-NEXT: subc 6, 3, 5 18194; PWR6-NEXT: rldicl 4, 4, 8, 56 18195; PWR6-NEXT: subfe 3, 3, 3 18196; PWR6-NEXT: subc 5, 4, 5 18197; PWR6-NEXT: subfe 4, 4, 4 18198; PWR6-NEXT: blr 18199; 18200; PWR7-LABEL: ult_25_v2i64: 18201; PWR7: # %bb.0: 18202; PWR7-NEXT: addi 3, 1, -32 18203; PWR7-NEXT: li 5, 0 18204; PWR7-NEXT: li 6, -1 18205; PWR7-NEXT: stxvd2x 34, 0, 3 18206; PWR7-NEXT: ld 3, -24(1) 18207; PWR7-NEXT: ld 4, -32(1) 18208; PWR7-NEXT: popcntd 3, 3 18209; PWR7-NEXT: popcntd 4, 4 18210; PWR7-NEXT: cmpldi 3, 25 18211; PWR7-NEXT: isellt 3, 6, 5 18212; PWR7-NEXT: cmpldi 4, 25 18213; PWR7-NEXT: isellt 4, 6, 5 18214; PWR7-NEXT: std 3, -8(1) 18215; PWR7-NEXT: addi 3, 1, -16 18216; PWR7-NEXT: std 4, -16(1) 18217; PWR7-NEXT: lxvd2x 34, 0, 3 18218; PWR7-NEXT: blr 18219; 18220; PWR8-LABEL: ult_25_v2i64: 18221; PWR8: # %bb.0: 18222; PWR8-NEXT: addis 3, 2, .LCPI147_0@toc@ha 18223; PWR8-NEXT: vpopcntd 2, 2 18224; PWR8-NEXT: addi 3, 3, .LCPI147_0@toc@l 18225; PWR8-NEXT: lxvd2x 35, 0, 3 18226; PWR8-NEXT: vcmpgtud 2, 3, 2 18227; PWR8-NEXT: blr 18228; 18229; PWR9-LABEL: ult_25_v2i64: 18230; PWR9: # %bb.0: 18231; PWR9-NEXT: addis 3, 2, .LCPI147_0@toc@ha 18232; PWR9-NEXT: vpopcntd 2, 2 18233; PWR9-NEXT: addi 3, 3, .LCPI147_0@toc@l 18234; PWR9-NEXT: lxvx 35, 0, 3 18235; PWR9-NEXT: vcmpgtud 2, 3, 2 18236; PWR9-NEXT: blr 18237 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18238 %3 = icmp ult <2 x i64> %2, <i64 25, i64 25> 18239 %4 = sext <2 x i1> %3 to <2 x i64> 18240 ret <2 x i64> %4 18241} 18242 18243define <2 x i64> @ugt_25_v2i64(<2 x i64> %0) { 18244; PWR5-LABEL: ugt_25_v2i64: 18245; PWR5: # %bb.0: 18246; PWR5-NEXT: lis 5, 21845 18247; PWR5-NEXT: lis 6, 13107 18248; PWR5-NEXT: ori 5, 5, 21845 18249; PWR5-NEXT: rotldi 8, 4, 63 18250; PWR5-NEXT: rotldi 9, 3, 63 18251; PWR5-NEXT: rldimi 5, 5, 32, 0 18252; PWR5-NEXT: and 8, 8, 5 18253; PWR5-NEXT: and 5, 9, 5 18254; PWR5-NEXT: ori 6, 6, 13107 18255; PWR5-NEXT: sub 3, 3, 5 18256; PWR5-NEXT: rldimi 6, 6, 32, 0 18257; PWR5-NEXT: sub 4, 4, 8 18258; PWR5-NEXT: and 8, 3, 6 18259; PWR5-NEXT: rotldi 3, 3, 62 18260; PWR5-NEXT: and 3, 3, 6 18261; PWR5-NEXT: lis 7, 3855 18262; PWR5-NEXT: and 5, 4, 6 18263; PWR5-NEXT: rotldi 4, 4, 62 18264; PWR5-NEXT: add 3, 8, 3 18265; PWR5-NEXT: lis 9, 257 18266; PWR5-NEXT: ori 7, 7, 3855 18267; PWR5-NEXT: and 4, 4, 6 18268; PWR5-NEXT: rldicl 6, 3, 60, 4 18269; PWR5-NEXT: ori 9, 9, 257 18270; PWR5-NEXT: rldimi 7, 7, 32, 0 18271; PWR5-NEXT: add 4, 5, 4 18272; PWR5-NEXT: add 3, 3, 6 18273; PWR5-NEXT: rldimi 9, 9, 32, 0 18274; PWR5-NEXT: rldicl 5, 4, 60, 4 18275; PWR5-NEXT: and 3, 3, 7 18276; PWR5-NEXT: add 4, 4, 5 18277; PWR5-NEXT: mulld 3, 3, 9 18278; PWR5-NEXT: and 4, 4, 7 18279; PWR5-NEXT: rldicl 3, 3, 8, 56 18280; PWR5-NEXT: mulld 4, 4, 9 18281; PWR5-NEXT: li 5, 25 18282; PWR5-NEXT: subfic 3, 3, 25 18283; PWR5-NEXT: rldicl 4, 4, 8, 56 18284; PWR5-NEXT: subfe 3, 5, 5 18285; PWR5-NEXT: subfic 4, 4, 25 18286; PWR5-NEXT: subfe 4, 5, 5 18287; PWR5-NEXT: blr 18288; 18289; PWR6-LABEL: ugt_25_v2i64: 18290; PWR6: # %bb.0: 18291; PWR6-NEXT: lis 5, 21845 18292; PWR6-NEXT: lis 6, 13107 18293; PWR6-NEXT: ori 5, 5, 21845 18294; PWR6-NEXT: rotldi 8, 4, 63 18295; PWR6-NEXT: rotldi 9, 3, 63 18296; PWR6-NEXT: rldimi 5, 5, 32, 0 18297; PWR6-NEXT: and 8, 8, 5 18298; PWR6-NEXT: and 5, 9, 5 18299; PWR6-NEXT: ori 6, 6, 13107 18300; PWR6-NEXT: sub 3, 3, 5 18301; PWR6-NEXT: rldimi 6, 6, 32, 0 18302; PWR6-NEXT: sub 4, 4, 8 18303; PWR6-NEXT: and 8, 3, 6 18304; PWR6-NEXT: rotldi 3, 3, 62 18305; PWR6-NEXT: and 3, 3, 6 18306; PWR6-NEXT: lis 7, 3855 18307; PWR6-NEXT: and 5, 4, 6 18308; PWR6-NEXT: rotldi 4, 4, 62 18309; PWR6-NEXT: add 3, 8, 3 18310; PWR6-NEXT: lis 9, 257 18311; PWR6-NEXT: ori 7, 7, 3855 18312; PWR6-NEXT: and 4, 4, 6 18313; PWR6-NEXT: rldicl 6, 3, 60, 4 18314; PWR6-NEXT: ori 9, 9, 257 18315; PWR6-NEXT: rldimi 7, 7, 32, 0 18316; PWR6-NEXT: add 4, 5, 4 18317; PWR6-NEXT: add 3, 3, 6 18318; PWR6-NEXT: rldimi 9, 9, 32, 0 18319; PWR6-NEXT: rldicl 5, 4, 60, 4 18320; PWR6-NEXT: and 3, 3, 7 18321; PWR6-NEXT: add 4, 4, 5 18322; PWR6-NEXT: mulld 3, 3, 9 18323; PWR6-NEXT: and 4, 4, 7 18324; PWR6-NEXT: rldicl 3, 3, 8, 56 18325; PWR6-NEXT: mulld 4, 4, 9 18326; PWR6-NEXT: li 5, 25 18327; PWR6-NEXT: subfic 3, 3, 25 18328; PWR6-NEXT: rldicl 4, 4, 8, 56 18329; PWR6-NEXT: subfe 3, 5, 5 18330; PWR6-NEXT: subfic 4, 4, 25 18331; PWR6-NEXT: subfe 4, 5, 5 18332; PWR6-NEXT: blr 18333; 18334; PWR7-LABEL: ugt_25_v2i64: 18335; PWR7: # %bb.0: 18336; PWR7-NEXT: addi 3, 1, -32 18337; PWR7-NEXT: li 5, 0 18338; PWR7-NEXT: li 6, -1 18339; PWR7-NEXT: stxvd2x 34, 0, 3 18340; PWR7-NEXT: ld 3, -24(1) 18341; PWR7-NEXT: ld 4, -32(1) 18342; PWR7-NEXT: popcntd 3, 3 18343; PWR7-NEXT: popcntd 4, 4 18344; PWR7-NEXT: cmpldi 3, 25 18345; PWR7-NEXT: iselgt 3, 6, 5 18346; PWR7-NEXT: cmpldi 4, 25 18347; PWR7-NEXT: iselgt 4, 6, 5 18348; PWR7-NEXT: std 3, -8(1) 18349; PWR7-NEXT: addi 3, 1, -16 18350; PWR7-NEXT: std 4, -16(1) 18351; PWR7-NEXT: lxvd2x 34, 0, 3 18352; PWR7-NEXT: blr 18353; 18354; PWR8-LABEL: ugt_25_v2i64: 18355; PWR8: # %bb.0: 18356; PWR8-NEXT: addis 3, 2, .LCPI148_0@toc@ha 18357; PWR8-NEXT: vpopcntd 2, 2 18358; PWR8-NEXT: addi 3, 3, .LCPI148_0@toc@l 18359; PWR8-NEXT: lxvd2x 35, 0, 3 18360; PWR8-NEXT: vcmpgtud 2, 2, 3 18361; PWR8-NEXT: blr 18362; 18363; PWR9-LABEL: ugt_25_v2i64: 18364; PWR9: # %bb.0: 18365; PWR9-NEXT: addis 3, 2, .LCPI148_0@toc@ha 18366; PWR9-NEXT: vpopcntd 2, 2 18367; PWR9-NEXT: addi 3, 3, .LCPI148_0@toc@l 18368; PWR9-NEXT: lxvx 35, 0, 3 18369; PWR9-NEXT: vcmpgtud 2, 2, 3 18370; PWR9-NEXT: blr 18371 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18372 %3 = icmp ugt <2 x i64> %2, <i64 25, i64 25> 18373 %4 = sext <2 x i1> %3 to <2 x i64> 18374 ret <2 x i64> %4 18375} 18376 18377define <2 x i64> @ult_26_v2i64(<2 x i64> %0) { 18378; PWR5-LABEL: ult_26_v2i64: 18379; PWR5: # %bb.0: 18380; PWR5-NEXT: lis 5, 21845 18381; PWR5-NEXT: lis 6, 13107 18382; PWR5-NEXT: ori 5, 5, 21845 18383; PWR5-NEXT: rotldi 8, 4, 63 18384; PWR5-NEXT: rotldi 9, 3, 63 18385; PWR5-NEXT: rldimi 5, 5, 32, 0 18386; PWR5-NEXT: and 8, 8, 5 18387; PWR5-NEXT: and 5, 9, 5 18388; PWR5-NEXT: ori 6, 6, 13107 18389; PWR5-NEXT: sub 3, 3, 5 18390; PWR5-NEXT: rldimi 6, 6, 32, 0 18391; PWR5-NEXT: sub 4, 4, 8 18392; PWR5-NEXT: and 8, 3, 6 18393; PWR5-NEXT: rotldi 3, 3, 62 18394; PWR5-NEXT: and 3, 3, 6 18395; PWR5-NEXT: lis 7, 3855 18396; PWR5-NEXT: and 5, 4, 6 18397; PWR5-NEXT: rotldi 4, 4, 62 18398; PWR5-NEXT: add 3, 8, 3 18399; PWR5-NEXT: lis 9, 257 18400; PWR5-NEXT: ori 7, 7, 3855 18401; PWR5-NEXT: and 4, 4, 6 18402; PWR5-NEXT: rldicl 6, 3, 60, 4 18403; PWR5-NEXT: ori 9, 9, 257 18404; PWR5-NEXT: rldimi 7, 7, 32, 0 18405; PWR5-NEXT: add 4, 5, 4 18406; PWR5-NEXT: add 3, 3, 6 18407; PWR5-NEXT: rldimi 9, 9, 32, 0 18408; PWR5-NEXT: rldicl 5, 4, 60, 4 18409; PWR5-NEXT: and 3, 3, 7 18410; PWR5-NEXT: add 4, 4, 5 18411; PWR5-NEXT: mulld 3, 3, 9 18412; PWR5-NEXT: and 4, 4, 7 18413; PWR5-NEXT: rldicl 3, 3, 8, 56 18414; PWR5-NEXT: li 5, 26 18415; PWR5-NEXT: mulld 4, 4, 9 18416; PWR5-NEXT: subc 6, 3, 5 18417; PWR5-NEXT: rldicl 4, 4, 8, 56 18418; PWR5-NEXT: subfe 3, 3, 3 18419; PWR5-NEXT: subc 5, 4, 5 18420; PWR5-NEXT: subfe 4, 4, 4 18421; PWR5-NEXT: blr 18422; 18423; PWR6-LABEL: ult_26_v2i64: 18424; PWR6: # %bb.0: 18425; PWR6-NEXT: lis 5, 21845 18426; PWR6-NEXT: lis 6, 13107 18427; PWR6-NEXT: ori 5, 5, 21845 18428; PWR6-NEXT: rotldi 8, 4, 63 18429; PWR6-NEXT: rotldi 9, 3, 63 18430; PWR6-NEXT: rldimi 5, 5, 32, 0 18431; PWR6-NEXT: and 8, 8, 5 18432; PWR6-NEXT: and 5, 9, 5 18433; PWR6-NEXT: ori 6, 6, 13107 18434; PWR6-NEXT: sub 3, 3, 5 18435; PWR6-NEXT: rldimi 6, 6, 32, 0 18436; PWR6-NEXT: sub 4, 4, 8 18437; PWR6-NEXT: and 8, 3, 6 18438; PWR6-NEXT: rotldi 3, 3, 62 18439; PWR6-NEXT: and 3, 3, 6 18440; PWR6-NEXT: lis 7, 3855 18441; PWR6-NEXT: and 5, 4, 6 18442; PWR6-NEXT: rotldi 4, 4, 62 18443; PWR6-NEXT: add 3, 8, 3 18444; PWR6-NEXT: lis 9, 257 18445; PWR6-NEXT: ori 7, 7, 3855 18446; PWR6-NEXT: and 4, 4, 6 18447; PWR6-NEXT: rldicl 6, 3, 60, 4 18448; PWR6-NEXT: ori 9, 9, 257 18449; PWR6-NEXT: rldimi 7, 7, 32, 0 18450; PWR6-NEXT: add 4, 5, 4 18451; PWR6-NEXT: add 3, 3, 6 18452; PWR6-NEXT: rldimi 9, 9, 32, 0 18453; PWR6-NEXT: rldicl 5, 4, 60, 4 18454; PWR6-NEXT: and 3, 3, 7 18455; PWR6-NEXT: add 4, 4, 5 18456; PWR6-NEXT: mulld 3, 3, 9 18457; PWR6-NEXT: and 4, 4, 7 18458; PWR6-NEXT: rldicl 3, 3, 8, 56 18459; PWR6-NEXT: li 5, 26 18460; PWR6-NEXT: mulld 4, 4, 9 18461; PWR6-NEXT: subc 6, 3, 5 18462; PWR6-NEXT: rldicl 4, 4, 8, 56 18463; PWR6-NEXT: subfe 3, 3, 3 18464; PWR6-NEXT: subc 5, 4, 5 18465; PWR6-NEXT: subfe 4, 4, 4 18466; PWR6-NEXT: blr 18467; 18468; PWR7-LABEL: ult_26_v2i64: 18469; PWR7: # %bb.0: 18470; PWR7-NEXT: addi 3, 1, -32 18471; PWR7-NEXT: li 5, 0 18472; PWR7-NEXT: li 6, -1 18473; PWR7-NEXT: stxvd2x 34, 0, 3 18474; PWR7-NEXT: ld 3, -24(1) 18475; PWR7-NEXT: ld 4, -32(1) 18476; PWR7-NEXT: popcntd 3, 3 18477; PWR7-NEXT: popcntd 4, 4 18478; PWR7-NEXT: cmpldi 3, 26 18479; PWR7-NEXT: isellt 3, 6, 5 18480; PWR7-NEXT: cmpldi 4, 26 18481; PWR7-NEXT: isellt 4, 6, 5 18482; PWR7-NEXT: std 3, -8(1) 18483; PWR7-NEXT: addi 3, 1, -16 18484; PWR7-NEXT: std 4, -16(1) 18485; PWR7-NEXT: lxvd2x 34, 0, 3 18486; PWR7-NEXT: blr 18487; 18488; PWR8-LABEL: ult_26_v2i64: 18489; PWR8: # %bb.0: 18490; PWR8-NEXT: addis 3, 2, .LCPI149_0@toc@ha 18491; PWR8-NEXT: vpopcntd 2, 2 18492; PWR8-NEXT: addi 3, 3, .LCPI149_0@toc@l 18493; PWR8-NEXT: lxvd2x 35, 0, 3 18494; PWR8-NEXT: vcmpgtud 2, 3, 2 18495; PWR8-NEXT: blr 18496; 18497; PWR9-LABEL: ult_26_v2i64: 18498; PWR9: # %bb.0: 18499; PWR9-NEXT: addis 3, 2, .LCPI149_0@toc@ha 18500; PWR9-NEXT: vpopcntd 2, 2 18501; PWR9-NEXT: addi 3, 3, .LCPI149_0@toc@l 18502; PWR9-NEXT: lxvx 35, 0, 3 18503; PWR9-NEXT: vcmpgtud 2, 3, 2 18504; PWR9-NEXT: blr 18505 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18506 %3 = icmp ult <2 x i64> %2, <i64 26, i64 26> 18507 %4 = sext <2 x i1> %3 to <2 x i64> 18508 ret <2 x i64> %4 18509} 18510 18511define <2 x i64> @ugt_26_v2i64(<2 x i64> %0) { 18512; PWR5-LABEL: ugt_26_v2i64: 18513; PWR5: # %bb.0: 18514; PWR5-NEXT: lis 5, 21845 18515; PWR5-NEXT: lis 6, 13107 18516; PWR5-NEXT: ori 5, 5, 21845 18517; PWR5-NEXT: rotldi 8, 4, 63 18518; PWR5-NEXT: rotldi 9, 3, 63 18519; PWR5-NEXT: rldimi 5, 5, 32, 0 18520; PWR5-NEXT: and 8, 8, 5 18521; PWR5-NEXT: and 5, 9, 5 18522; PWR5-NEXT: ori 6, 6, 13107 18523; PWR5-NEXT: sub 3, 3, 5 18524; PWR5-NEXT: rldimi 6, 6, 32, 0 18525; PWR5-NEXT: sub 4, 4, 8 18526; PWR5-NEXT: and 8, 3, 6 18527; PWR5-NEXT: rotldi 3, 3, 62 18528; PWR5-NEXT: and 3, 3, 6 18529; PWR5-NEXT: lis 7, 3855 18530; PWR5-NEXT: and 5, 4, 6 18531; PWR5-NEXT: rotldi 4, 4, 62 18532; PWR5-NEXT: add 3, 8, 3 18533; PWR5-NEXT: lis 9, 257 18534; PWR5-NEXT: ori 7, 7, 3855 18535; PWR5-NEXT: and 4, 4, 6 18536; PWR5-NEXT: rldicl 6, 3, 60, 4 18537; PWR5-NEXT: ori 9, 9, 257 18538; PWR5-NEXT: rldimi 7, 7, 32, 0 18539; PWR5-NEXT: add 4, 5, 4 18540; PWR5-NEXT: add 3, 3, 6 18541; PWR5-NEXT: rldimi 9, 9, 32, 0 18542; PWR5-NEXT: rldicl 5, 4, 60, 4 18543; PWR5-NEXT: and 3, 3, 7 18544; PWR5-NEXT: add 4, 4, 5 18545; PWR5-NEXT: mulld 3, 3, 9 18546; PWR5-NEXT: and 4, 4, 7 18547; PWR5-NEXT: rldicl 3, 3, 8, 56 18548; PWR5-NEXT: mulld 4, 4, 9 18549; PWR5-NEXT: li 5, 26 18550; PWR5-NEXT: subfic 3, 3, 26 18551; PWR5-NEXT: rldicl 4, 4, 8, 56 18552; PWR5-NEXT: subfe 3, 5, 5 18553; PWR5-NEXT: subfic 4, 4, 26 18554; PWR5-NEXT: subfe 4, 5, 5 18555; PWR5-NEXT: blr 18556; 18557; PWR6-LABEL: ugt_26_v2i64: 18558; PWR6: # %bb.0: 18559; PWR6-NEXT: lis 5, 21845 18560; PWR6-NEXT: lis 6, 13107 18561; PWR6-NEXT: ori 5, 5, 21845 18562; PWR6-NEXT: rotldi 8, 4, 63 18563; PWR6-NEXT: rotldi 9, 3, 63 18564; PWR6-NEXT: rldimi 5, 5, 32, 0 18565; PWR6-NEXT: and 8, 8, 5 18566; PWR6-NEXT: and 5, 9, 5 18567; PWR6-NEXT: ori 6, 6, 13107 18568; PWR6-NEXT: sub 3, 3, 5 18569; PWR6-NEXT: rldimi 6, 6, 32, 0 18570; PWR6-NEXT: sub 4, 4, 8 18571; PWR6-NEXT: and 8, 3, 6 18572; PWR6-NEXT: rotldi 3, 3, 62 18573; PWR6-NEXT: and 3, 3, 6 18574; PWR6-NEXT: lis 7, 3855 18575; PWR6-NEXT: and 5, 4, 6 18576; PWR6-NEXT: rotldi 4, 4, 62 18577; PWR6-NEXT: add 3, 8, 3 18578; PWR6-NEXT: lis 9, 257 18579; PWR6-NEXT: ori 7, 7, 3855 18580; PWR6-NEXT: and 4, 4, 6 18581; PWR6-NEXT: rldicl 6, 3, 60, 4 18582; PWR6-NEXT: ori 9, 9, 257 18583; PWR6-NEXT: rldimi 7, 7, 32, 0 18584; PWR6-NEXT: add 4, 5, 4 18585; PWR6-NEXT: add 3, 3, 6 18586; PWR6-NEXT: rldimi 9, 9, 32, 0 18587; PWR6-NEXT: rldicl 5, 4, 60, 4 18588; PWR6-NEXT: and 3, 3, 7 18589; PWR6-NEXT: add 4, 4, 5 18590; PWR6-NEXT: mulld 3, 3, 9 18591; PWR6-NEXT: and 4, 4, 7 18592; PWR6-NEXT: rldicl 3, 3, 8, 56 18593; PWR6-NEXT: mulld 4, 4, 9 18594; PWR6-NEXT: li 5, 26 18595; PWR6-NEXT: subfic 3, 3, 26 18596; PWR6-NEXT: rldicl 4, 4, 8, 56 18597; PWR6-NEXT: subfe 3, 5, 5 18598; PWR6-NEXT: subfic 4, 4, 26 18599; PWR6-NEXT: subfe 4, 5, 5 18600; PWR6-NEXT: blr 18601; 18602; PWR7-LABEL: ugt_26_v2i64: 18603; PWR7: # %bb.0: 18604; PWR7-NEXT: addi 3, 1, -32 18605; PWR7-NEXT: li 5, 0 18606; PWR7-NEXT: li 6, -1 18607; PWR7-NEXT: stxvd2x 34, 0, 3 18608; PWR7-NEXT: ld 3, -24(1) 18609; PWR7-NEXT: ld 4, -32(1) 18610; PWR7-NEXT: popcntd 3, 3 18611; PWR7-NEXT: popcntd 4, 4 18612; PWR7-NEXT: cmpldi 3, 26 18613; PWR7-NEXT: iselgt 3, 6, 5 18614; PWR7-NEXT: cmpldi 4, 26 18615; PWR7-NEXT: iselgt 4, 6, 5 18616; PWR7-NEXT: std 3, -8(1) 18617; PWR7-NEXT: addi 3, 1, -16 18618; PWR7-NEXT: std 4, -16(1) 18619; PWR7-NEXT: lxvd2x 34, 0, 3 18620; PWR7-NEXT: blr 18621; 18622; PWR8-LABEL: ugt_26_v2i64: 18623; PWR8: # %bb.0: 18624; PWR8-NEXT: addis 3, 2, .LCPI150_0@toc@ha 18625; PWR8-NEXT: vpopcntd 2, 2 18626; PWR8-NEXT: addi 3, 3, .LCPI150_0@toc@l 18627; PWR8-NEXT: lxvd2x 35, 0, 3 18628; PWR8-NEXT: vcmpgtud 2, 2, 3 18629; PWR8-NEXT: blr 18630; 18631; PWR9-LABEL: ugt_26_v2i64: 18632; PWR9: # %bb.0: 18633; PWR9-NEXT: addis 3, 2, .LCPI150_0@toc@ha 18634; PWR9-NEXT: vpopcntd 2, 2 18635; PWR9-NEXT: addi 3, 3, .LCPI150_0@toc@l 18636; PWR9-NEXT: lxvx 35, 0, 3 18637; PWR9-NEXT: vcmpgtud 2, 2, 3 18638; PWR9-NEXT: blr 18639 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18640 %3 = icmp ugt <2 x i64> %2, <i64 26, i64 26> 18641 %4 = sext <2 x i1> %3 to <2 x i64> 18642 ret <2 x i64> %4 18643} 18644 18645define <2 x i64> @ult_27_v2i64(<2 x i64> %0) { 18646; PWR5-LABEL: ult_27_v2i64: 18647; PWR5: # %bb.0: 18648; PWR5-NEXT: lis 5, 21845 18649; PWR5-NEXT: lis 6, 13107 18650; PWR5-NEXT: ori 5, 5, 21845 18651; PWR5-NEXT: rotldi 8, 4, 63 18652; PWR5-NEXT: rotldi 9, 3, 63 18653; PWR5-NEXT: rldimi 5, 5, 32, 0 18654; PWR5-NEXT: and 8, 8, 5 18655; PWR5-NEXT: and 5, 9, 5 18656; PWR5-NEXT: ori 6, 6, 13107 18657; PWR5-NEXT: sub 3, 3, 5 18658; PWR5-NEXT: rldimi 6, 6, 32, 0 18659; PWR5-NEXT: sub 4, 4, 8 18660; PWR5-NEXT: and 8, 3, 6 18661; PWR5-NEXT: rotldi 3, 3, 62 18662; PWR5-NEXT: and 3, 3, 6 18663; PWR5-NEXT: lis 7, 3855 18664; PWR5-NEXT: and 5, 4, 6 18665; PWR5-NEXT: rotldi 4, 4, 62 18666; PWR5-NEXT: add 3, 8, 3 18667; PWR5-NEXT: lis 9, 257 18668; PWR5-NEXT: ori 7, 7, 3855 18669; PWR5-NEXT: and 4, 4, 6 18670; PWR5-NEXT: rldicl 6, 3, 60, 4 18671; PWR5-NEXT: ori 9, 9, 257 18672; PWR5-NEXT: rldimi 7, 7, 32, 0 18673; PWR5-NEXT: add 4, 5, 4 18674; PWR5-NEXT: add 3, 3, 6 18675; PWR5-NEXT: rldimi 9, 9, 32, 0 18676; PWR5-NEXT: rldicl 5, 4, 60, 4 18677; PWR5-NEXT: and 3, 3, 7 18678; PWR5-NEXT: add 4, 4, 5 18679; PWR5-NEXT: mulld 3, 3, 9 18680; PWR5-NEXT: and 4, 4, 7 18681; PWR5-NEXT: rldicl 3, 3, 8, 56 18682; PWR5-NEXT: li 5, 27 18683; PWR5-NEXT: mulld 4, 4, 9 18684; PWR5-NEXT: subc 6, 3, 5 18685; PWR5-NEXT: rldicl 4, 4, 8, 56 18686; PWR5-NEXT: subfe 3, 3, 3 18687; PWR5-NEXT: subc 5, 4, 5 18688; PWR5-NEXT: subfe 4, 4, 4 18689; PWR5-NEXT: blr 18690; 18691; PWR6-LABEL: ult_27_v2i64: 18692; PWR6: # %bb.0: 18693; PWR6-NEXT: lis 5, 21845 18694; PWR6-NEXT: lis 6, 13107 18695; PWR6-NEXT: ori 5, 5, 21845 18696; PWR6-NEXT: rotldi 8, 4, 63 18697; PWR6-NEXT: rotldi 9, 3, 63 18698; PWR6-NEXT: rldimi 5, 5, 32, 0 18699; PWR6-NEXT: and 8, 8, 5 18700; PWR6-NEXT: and 5, 9, 5 18701; PWR6-NEXT: ori 6, 6, 13107 18702; PWR6-NEXT: sub 3, 3, 5 18703; PWR6-NEXT: rldimi 6, 6, 32, 0 18704; PWR6-NEXT: sub 4, 4, 8 18705; PWR6-NEXT: and 8, 3, 6 18706; PWR6-NEXT: rotldi 3, 3, 62 18707; PWR6-NEXT: and 3, 3, 6 18708; PWR6-NEXT: lis 7, 3855 18709; PWR6-NEXT: and 5, 4, 6 18710; PWR6-NEXT: rotldi 4, 4, 62 18711; PWR6-NEXT: add 3, 8, 3 18712; PWR6-NEXT: lis 9, 257 18713; PWR6-NEXT: ori 7, 7, 3855 18714; PWR6-NEXT: and 4, 4, 6 18715; PWR6-NEXT: rldicl 6, 3, 60, 4 18716; PWR6-NEXT: ori 9, 9, 257 18717; PWR6-NEXT: rldimi 7, 7, 32, 0 18718; PWR6-NEXT: add 4, 5, 4 18719; PWR6-NEXT: add 3, 3, 6 18720; PWR6-NEXT: rldimi 9, 9, 32, 0 18721; PWR6-NEXT: rldicl 5, 4, 60, 4 18722; PWR6-NEXT: and 3, 3, 7 18723; PWR6-NEXT: add 4, 4, 5 18724; PWR6-NEXT: mulld 3, 3, 9 18725; PWR6-NEXT: and 4, 4, 7 18726; PWR6-NEXT: rldicl 3, 3, 8, 56 18727; PWR6-NEXT: li 5, 27 18728; PWR6-NEXT: mulld 4, 4, 9 18729; PWR6-NEXT: subc 6, 3, 5 18730; PWR6-NEXT: rldicl 4, 4, 8, 56 18731; PWR6-NEXT: subfe 3, 3, 3 18732; PWR6-NEXT: subc 5, 4, 5 18733; PWR6-NEXT: subfe 4, 4, 4 18734; PWR6-NEXT: blr 18735; 18736; PWR7-LABEL: ult_27_v2i64: 18737; PWR7: # %bb.0: 18738; PWR7-NEXT: addi 3, 1, -32 18739; PWR7-NEXT: li 5, 0 18740; PWR7-NEXT: li 6, -1 18741; PWR7-NEXT: stxvd2x 34, 0, 3 18742; PWR7-NEXT: ld 3, -24(1) 18743; PWR7-NEXT: ld 4, -32(1) 18744; PWR7-NEXT: popcntd 3, 3 18745; PWR7-NEXT: popcntd 4, 4 18746; PWR7-NEXT: cmpldi 3, 27 18747; PWR7-NEXT: isellt 3, 6, 5 18748; PWR7-NEXT: cmpldi 4, 27 18749; PWR7-NEXT: isellt 4, 6, 5 18750; PWR7-NEXT: std 3, -8(1) 18751; PWR7-NEXT: addi 3, 1, -16 18752; PWR7-NEXT: std 4, -16(1) 18753; PWR7-NEXT: lxvd2x 34, 0, 3 18754; PWR7-NEXT: blr 18755; 18756; PWR8-LABEL: ult_27_v2i64: 18757; PWR8: # %bb.0: 18758; PWR8-NEXT: addis 3, 2, .LCPI151_0@toc@ha 18759; PWR8-NEXT: vpopcntd 2, 2 18760; PWR8-NEXT: addi 3, 3, .LCPI151_0@toc@l 18761; PWR8-NEXT: lxvd2x 35, 0, 3 18762; PWR8-NEXT: vcmpgtud 2, 3, 2 18763; PWR8-NEXT: blr 18764; 18765; PWR9-LABEL: ult_27_v2i64: 18766; PWR9: # %bb.0: 18767; PWR9-NEXT: addis 3, 2, .LCPI151_0@toc@ha 18768; PWR9-NEXT: vpopcntd 2, 2 18769; PWR9-NEXT: addi 3, 3, .LCPI151_0@toc@l 18770; PWR9-NEXT: lxvx 35, 0, 3 18771; PWR9-NEXT: vcmpgtud 2, 3, 2 18772; PWR9-NEXT: blr 18773 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18774 %3 = icmp ult <2 x i64> %2, <i64 27, i64 27> 18775 %4 = sext <2 x i1> %3 to <2 x i64> 18776 ret <2 x i64> %4 18777} 18778 18779define <2 x i64> @ugt_27_v2i64(<2 x i64> %0) { 18780; PWR5-LABEL: ugt_27_v2i64: 18781; PWR5: # %bb.0: 18782; PWR5-NEXT: lis 5, 21845 18783; PWR5-NEXT: lis 6, 13107 18784; PWR5-NEXT: ori 5, 5, 21845 18785; PWR5-NEXT: rotldi 8, 4, 63 18786; PWR5-NEXT: rotldi 9, 3, 63 18787; PWR5-NEXT: rldimi 5, 5, 32, 0 18788; PWR5-NEXT: and 8, 8, 5 18789; PWR5-NEXT: and 5, 9, 5 18790; PWR5-NEXT: ori 6, 6, 13107 18791; PWR5-NEXT: sub 3, 3, 5 18792; PWR5-NEXT: rldimi 6, 6, 32, 0 18793; PWR5-NEXT: sub 4, 4, 8 18794; PWR5-NEXT: and 8, 3, 6 18795; PWR5-NEXT: rotldi 3, 3, 62 18796; PWR5-NEXT: and 3, 3, 6 18797; PWR5-NEXT: lis 7, 3855 18798; PWR5-NEXT: and 5, 4, 6 18799; PWR5-NEXT: rotldi 4, 4, 62 18800; PWR5-NEXT: add 3, 8, 3 18801; PWR5-NEXT: lis 9, 257 18802; PWR5-NEXT: ori 7, 7, 3855 18803; PWR5-NEXT: and 4, 4, 6 18804; PWR5-NEXT: rldicl 6, 3, 60, 4 18805; PWR5-NEXT: ori 9, 9, 257 18806; PWR5-NEXT: rldimi 7, 7, 32, 0 18807; PWR5-NEXT: add 4, 5, 4 18808; PWR5-NEXT: add 3, 3, 6 18809; PWR5-NEXT: rldimi 9, 9, 32, 0 18810; PWR5-NEXT: rldicl 5, 4, 60, 4 18811; PWR5-NEXT: and 3, 3, 7 18812; PWR5-NEXT: add 4, 4, 5 18813; PWR5-NEXT: mulld 3, 3, 9 18814; PWR5-NEXT: and 4, 4, 7 18815; PWR5-NEXT: rldicl 3, 3, 8, 56 18816; PWR5-NEXT: mulld 4, 4, 9 18817; PWR5-NEXT: li 5, 27 18818; PWR5-NEXT: subfic 3, 3, 27 18819; PWR5-NEXT: rldicl 4, 4, 8, 56 18820; PWR5-NEXT: subfe 3, 5, 5 18821; PWR5-NEXT: subfic 4, 4, 27 18822; PWR5-NEXT: subfe 4, 5, 5 18823; PWR5-NEXT: blr 18824; 18825; PWR6-LABEL: ugt_27_v2i64: 18826; PWR6: # %bb.0: 18827; PWR6-NEXT: lis 5, 21845 18828; PWR6-NEXT: lis 6, 13107 18829; PWR6-NEXT: ori 5, 5, 21845 18830; PWR6-NEXT: rotldi 8, 4, 63 18831; PWR6-NEXT: rotldi 9, 3, 63 18832; PWR6-NEXT: rldimi 5, 5, 32, 0 18833; PWR6-NEXT: and 8, 8, 5 18834; PWR6-NEXT: and 5, 9, 5 18835; PWR6-NEXT: ori 6, 6, 13107 18836; PWR6-NEXT: sub 3, 3, 5 18837; PWR6-NEXT: rldimi 6, 6, 32, 0 18838; PWR6-NEXT: sub 4, 4, 8 18839; PWR6-NEXT: and 8, 3, 6 18840; PWR6-NEXT: rotldi 3, 3, 62 18841; PWR6-NEXT: and 3, 3, 6 18842; PWR6-NEXT: lis 7, 3855 18843; PWR6-NEXT: and 5, 4, 6 18844; PWR6-NEXT: rotldi 4, 4, 62 18845; PWR6-NEXT: add 3, 8, 3 18846; PWR6-NEXT: lis 9, 257 18847; PWR6-NEXT: ori 7, 7, 3855 18848; PWR6-NEXT: and 4, 4, 6 18849; PWR6-NEXT: rldicl 6, 3, 60, 4 18850; PWR6-NEXT: ori 9, 9, 257 18851; PWR6-NEXT: rldimi 7, 7, 32, 0 18852; PWR6-NEXT: add 4, 5, 4 18853; PWR6-NEXT: add 3, 3, 6 18854; PWR6-NEXT: rldimi 9, 9, 32, 0 18855; PWR6-NEXT: rldicl 5, 4, 60, 4 18856; PWR6-NEXT: and 3, 3, 7 18857; PWR6-NEXT: add 4, 4, 5 18858; PWR6-NEXT: mulld 3, 3, 9 18859; PWR6-NEXT: and 4, 4, 7 18860; PWR6-NEXT: rldicl 3, 3, 8, 56 18861; PWR6-NEXT: mulld 4, 4, 9 18862; PWR6-NEXT: li 5, 27 18863; PWR6-NEXT: subfic 3, 3, 27 18864; PWR6-NEXT: rldicl 4, 4, 8, 56 18865; PWR6-NEXT: subfe 3, 5, 5 18866; PWR6-NEXT: subfic 4, 4, 27 18867; PWR6-NEXT: subfe 4, 5, 5 18868; PWR6-NEXT: blr 18869; 18870; PWR7-LABEL: ugt_27_v2i64: 18871; PWR7: # %bb.0: 18872; PWR7-NEXT: addi 3, 1, -32 18873; PWR7-NEXT: li 5, 0 18874; PWR7-NEXT: li 6, -1 18875; PWR7-NEXT: stxvd2x 34, 0, 3 18876; PWR7-NEXT: ld 3, -24(1) 18877; PWR7-NEXT: ld 4, -32(1) 18878; PWR7-NEXT: popcntd 3, 3 18879; PWR7-NEXT: popcntd 4, 4 18880; PWR7-NEXT: cmpldi 3, 27 18881; PWR7-NEXT: iselgt 3, 6, 5 18882; PWR7-NEXT: cmpldi 4, 27 18883; PWR7-NEXT: iselgt 4, 6, 5 18884; PWR7-NEXT: std 3, -8(1) 18885; PWR7-NEXT: addi 3, 1, -16 18886; PWR7-NEXT: std 4, -16(1) 18887; PWR7-NEXT: lxvd2x 34, 0, 3 18888; PWR7-NEXT: blr 18889; 18890; PWR8-LABEL: ugt_27_v2i64: 18891; PWR8: # %bb.0: 18892; PWR8-NEXT: addis 3, 2, .LCPI152_0@toc@ha 18893; PWR8-NEXT: vpopcntd 2, 2 18894; PWR8-NEXT: addi 3, 3, .LCPI152_0@toc@l 18895; PWR8-NEXT: lxvd2x 35, 0, 3 18896; PWR8-NEXT: vcmpgtud 2, 2, 3 18897; PWR8-NEXT: blr 18898; 18899; PWR9-LABEL: ugt_27_v2i64: 18900; PWR9: # %bb.0: 18901; PWR9-NEXT: addis 3, 2, .LCPI152_0@toc@ha 18902; PWR9-NEXT: vpopcntd 2, 2 18903; PWR9-NEXT: addi 3, 3, .LCPI152_0@toc@l 18904; PWR9-NEXT: lxvx 35, 0, 3 18905; PWR9-NEXT: vcmpgtud 2, 2, 3 18906; PWR9-NEXT: blr 18907 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18908 %3 = icmp ugt <2 x i64> %2, <i64 27, i64 27> 18909 %4 = sext <2 x i1> %3 to <2 x i64> 18910 ret <2 x i64> %4 18911} 18912 18913define <2 x i64> @ult_28_v2i64(<2 x i64> %0) { 18914; PWR5-LABEL: ult_28_v2i64: 18915; PWR5: # %bb.0: 18916; PWR5-NEXT: lis 5, 21845 18917; PWR5-NEXT: lis 6, 13107 18918; PWR5-NEXT: ori 5, 5, 21845 18919; PWR5-NEXT: rotldi 8, 4, 63 18920; PWR5-NEXT: rotldi 9, 3, 63 18921; PWR5-NEXT: rldimi 5, 5, 32, 0 18922; PWR5-NEXT: and 8, 8, 5 18923; PWR5-NEXT: and 5, 9, 5 18924; PWR5-NEXT: ori 6, 6, 13107 18925; PWR5-NEXT: sub 3, 3, 5 18926; PWR5-NEXT: rldimi 6, 6, 32, 0 18927; PWR5-NEXT: sub 4, 4, 8 18928; PWR5-NEXT: and 8, 3, 6 18929; PWR5-NEXT: rotldi 3, 3, 62 18930; PWR5-NEXT: and 3, 3, 6 18931; PWR5-NEXT: lis 7, 3855 18932; PWR5-NEXT: and 5, 4, 6 18933; PWR5-NEXT: rotldi 4, 4, 62 18934; PWR5-NEXT: add 3, 8, 3 18935; PWR5-NEXT: lis 9, 257 18936; PWR5-NEXT: ori 7, 7, 3855 18937; PWR5-NEXT: and 4, 4, 6 18938; PWR5-NEXT: rldicl 6, 3, 60, 4 18939; PWR5-NEXT: ori 9, 9, 257 18940; PWR5-NEXT: rldimi 7, 7, 32, 0 18941; PWR5-NEXT: add 4, 5, 4 18942; PWR5-NEXT: add 3, 3, 6 18943; PWR5-NEXT: rldimi 9, 9, 32, 0 18944; PWR5-NEXT: rldicl 5, 4, 60, 4 18945; PWR5-NEXT: and 3, 3, 7 18946; PWR5-NEXT: add 4, 4, 5 18947; PWR5-NEXT: mulld 3, 3, 9 18948; PWR5-NEXT: and 4, 4, 7 18949; PWR5-NEXT: rldicl 3, 3, 8, 56 18950; PWR5-NEXT: li 5, 28 18951; PWR5-NEXT: mulld 4, 4, 9 18952; PWR5-NEXT: subc 6, 3, 5 18953; PWR5-NEXT: rldicl 4, 4, 8, 56 18954; PWR5-NEXT: subfe 3, 3, 3 18955; PWR5-NEXT: subc 5, 4, 5 18956; PWR5-NEXT: subfe 4, 4, 4 18957; PWR5-NEXT: blr 18958; 18959; PWR6-LABEL: ult_28_v2i64: 18960; PWR6: # %bb.0: 18961; PWR6-NEXT: lis 5, 21845 18962; PWR6-NEXT: lis 6, 13107 18963; PWR6-NEXT: ori 5, 5, 21845 18964; PWR6-NEXT: rotldi 8, 4, 63 18965; PWR6-NEXT: rotldi 9, 3, 63 18966; PWR6-NEXT: rldimi 5, 5, 32, 0 18967; PWR6-NEXT: and 8, 8, 5 18968; PWR6-NEXT: and 5, 9, 5 18969; PWR6-NEXT: ori 6, 6, 13107 18970; PWR6-NEXT: sub 3, 3, 5 18971; PWR6-NEXT: rldimi 6, 6, 32, 0 18972; PWR6-NEXT: sub 4, 4, 8 18973; PWR6-NEXT: and 8, 3, 6 18974; PWR6-NEXT: rotldi 3, 3, 62 18975; PWR6-NEXT: and 3, 3, 6 18976; PWR6-NEXT: lis 7, 3855 18977; PWR6-NEXT: and 5, 4, 6 18978; PWR6-NEXT: rotldi 4, 4, 62 18979; PWR6-NEXT: add 3, 8, 3 18980; PWR6-NEXT: lis 9, 257 18981; PWR6-NEXT: ori 7, 7, 3855 18982; PWR6-NEXT: and 4, 4, 6 18983; PWR6-NEXT: rldicl 6, 3, 60, 4 18984; PWR6-NEXT: ori 9, 9, 257 18985; PWR6-NEXT: rldimi 7, 7, 32, 0 18986; PWR6-NEXT: add 4, 5, 4 18987; PWR6-NEXT: add 3, 3, 6 18988; PWR6-NEXT: rldimi 9, 9, 32, 0 18989; PWR6-NEXT: rldicl 5, 4, 60, 4 18990; PWR6-NEXT: and 3, 3, 7 18991; PWR6-NEXT: add 4, 4, 5 18992; PWR6-NEXT: mulld 3, 3, 9 18993; PWR6-NEXT: and 4, 4, 7 18994; PWR6-NEXT: rldicl 3, 3, 8, 56 18995; PWR6-NEXT: li 5, 28 18996; PWR6-NEXT: mulld 4, 4, 9 18997; PWR6-NEXT: subc 6, 3, 5 18998; PWR6-NEXT: rldicl 4, 4, 8, 56 18999; PWR6-NEXT: subfe 3, 3, 3 19000; PWR6-NEXT: subc 5, 4, 5 19001; PWR6-NEXT: subfe 4, 4, 4 19002; PWR6-NEXT: blr 19003; 19004; PWR7-LABEL: ult_28_v2i64: 19005; PWR7: # %bb.0: 19006; PWR7-NEXT: addi 3, 1, -32 19007; PWR7-NEXT: li 5, 0 19008; PWR7-NEXT: li 6, -1 19009; PWR7-NEXT: stxvd2x 34, 0, 3 19010; PWR7-NEXT: ld 3, -24(1) 19011; PWR7-NEXT: ld 4, -32(1) 19012; PWR7-NEXT: popcntd 3, 3 19013; PWR7-NEXT: popcntd 4, 4 19014; PWR7-NEXT: cmpldi 3, 28 19015; PWR7-NEXT: isellt 3, 6, 5 19016; PWR7-NEXT: cmpldi 4, 28 19017; PWR7-NEXT: isellt 4, 6, 5 19018; PWR7-NEXT: std 3, -8(1) 19019; PWR7-NEXT: addi 3, 1, -16 19020; PWR7-NEXT: std 4, -16(1) 19021; PWR7-NEXT: lxvd2x 34, 0, 3 19022; PWR7-NEXT: blr 19023; 19024; PWR8-LABEL: ult_28_v2i64: 19025; PWR8: # %bb.0: 19026; PWR8-NEXT: addis 3, 2, .LCPI153_0@toc@ha 19027; PWR8-NEXT: vpopcntd 2, 2 19028; PWR8-NEXT: addi 3, 3, .LCPI153_0@toc@l 19029; PWR8-NEXT: lxvd2x 35, 0, 3 19030; PWR8-NEXT: vcmpgtud 2, 3, 2 19031; PWR8-NEXT: blr 19032; 19033; PWR9-LABEL: ult_28_v2i64: 19034; PWR9: # %bb.0: 19035; PWR9-NEXT: addis 3, 2, .LCPI153_0@toc@ha 19036; PWR9-NEXT: vpopcntd 2, 2 19037; PWR9-NEXT: addi 3, 3, .LCPI153_0@toc@l 19038; PWR9-NEXT: lxvx 35, 0, 3 19039; PWR9-NEXT: vcmpgtud 2, 3, 2 19040; PWR9-NEXT: blr 19041 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19042 %3 = icmp ult <2 x i64> %2, <i64 28, i64 28> 19043 %4 = sext <2 x i1> %3 to <2 x i64> 19044 ret <2 x i64> %4 19045} 19046 19047define <2 x i64> @ugt_28_v2i64(<2 x i64> %0) { 19048; PWR5-LABEL: ugt_28_v2i64: 19049; PWR5: # %bb.0: 19050; PWR5-NEXT: lis 5, 21845 19051; PWR5-NEXT: lis 6, 13107 19052; PWR5-NEXT: ori 5, 5, 21845 19053; PWR5-NEXT: rotldi 8, 4, 63 19054; PWR5-NEXT: rotldi 9, 3, 63 19055; PWR5-NEXT: rldimi 5, 5, 32, 0 19056; PWR5-NEXT: and 8, 8, 5 19057; PWR5-NEXT: and 5, 9, 5 19058; PWR5-NEXT: ori 6, 6, 13107 19059; PWR5-NEXT: sub 3, 3, 5 19060; PWR5-NEXT: rldimi 6, 6, 32, 0 19061; PWR5-NEXT: sub 4, 4, 8 19062; PWR5-NEXT: and 8, 3, 6 19063; PWR5-NEXT: rotldi 3, 3, 62 19064; PWR5-NEXT: and 3, 3, 6 19065; PWR5-NEXT: lis 7, 3855 19066; PWR5-NEXT: and 5, 4, 6 19067; PWR5-NEXT: rotldi 4, 4, 62 19068; PWR5-NEXT: add 3, 8, 3 19069; PWR5-NEXT: lis 9, 257 19070; PWR5-NEXT: ori 7, 7, 3855 19071; PWR5-NEXT: and 4, 4, 6 19072; PWR5-NEXT: rldicl 6, 3, 60, 4 19073; PWR5-NEXT: ori 9, 9, 257 19074; PWR5-NEXT: rldimi 7, 7, 32, 0 19075; PWR5-NEXT: add 4, 5, 4 19076; PWR5-NEXT: add 3, 3, 6 19077; PWR5-NEXT: rldimi 9, 9, 32, 0 19078; PWR5-NEXT: rldicl 5, 4, 60, 4 19079; PWR5-NEXT: and 3, 3, 7 19080; PWR5-NEXT: add 4, 4, 5 19081; PWR5-NEXT: mulld 3, 3, 9 19082; PWR5-NEXT: and 4, 4, 7 19083; PWR5-NEXT: rldicl 3, 3, 8, 56 19084; PWR5-NEXT: mulld 4, 4, 9 19085; PWR5-NEXT: li 5, 28 19086; PWR5-NEXT: subfic 3, 3, 28 19087; PWR5-NEXT: rldicl 4, 4, 8, 56 19088; PWR5-NEXT: subfe 3, 5, 5 19089; PWR5-NEXT: subfic 4, 4, 28 19090; PWR5-NEXT: subfe 4, 5, 5 19091; PWR5-NEXT: blr 19092; 19093; PWR6-LABEL: ugt_28_v2i64: 19094; PWR6: # %bb.0: 19095; PWR6-NEXT: lis 5, 21845 19096; PWR6-NEXT: lis 6, 13107 19097; PWR6-NEXT: ori 5, 5, 21845 19098; PWR6-NEXT: rotldi 8, 4, 63 19099; PWR6-NEXT: rotldi 9, 3, 63 19100; PWR6-NEXT: rldimi 5, 5, 32, 0 19101; PWR6-NEXT: and 8, 8, 5 19102; PWR6-NEXT: and 5, 9, 5 19103; PWR6-NEXT: ori 6, 6, 13107 19104; PWR6-NEXT: sub 3, 3, 5 19105; PWR6-NEXT: rldimi 6, 6, 32, 0 19106; PWR6-NEXT: sub 4, 4, 8 19107; PWR6-NEXT: and 8, 3, 6 19108; PWR6-NEXT: rotldi 3, 3, 62 19109; PWR6-NEXT: and 3, 3, 6 19110; PWR6-NEXT: lis 7, 3855 19111; PWR6-NEXT: and 5, 4, 6 19112; PWR6-NEXT: rotldi 4, 4, 62 19113; PWR6-NEXT: add 3, 8, 3 19114; PWR6-NEXT: lis 9, 257 19115; PWR6-NEXT: ori 7, 7, 3855 19116; PWR6-NEXT: and 4, 4, 6 19117; PWR6-NEXT: rldicl 6, 3, 60, 4 19118; PWR6-NEXT: ori 9, 9, 257 19119; PWR6-NEXT: rldimi 7, 7, 32, 0 19120; PWR6-NEXT: add 4, 5, 4 19121; PWR6-NEXT: add 3, 3, 6 19122; PWR6-NEXT: rldimi 9, 9, 32, 0 19123; PWR6-NEXT: rldicl 5, 4, 60, 4 19124; PWR6-NEXT: and 3, 3, 7 19125; PWR6-NEXT: add 4, 4, 5 19126; PWR6-NEXT: mulld 3, 3, 9 19127; PWR6-NEXT: and 4, 4, 7 19128; PWR6-NEXT: rldicl 3, 3, 8, 56 19129; PWR6-NEXT: mulld 4, 4, 9 19130; PWR6-NEXT: li 5, 28 19131; PWR6-NEXT: subfic 3, 3, 28 19132; PWR6-NEXT: rldicl 4, 4, 8, 56 19133; PWR6-NEXT: subfe 3, 5, 5 19134; PWR6-NEXT: subfic 4, 4, 28 19135; PWR6-NEXT: subfe 4, 5, 5 19136; PWR6-NEXT: blr 19137; 19138; PWR7-LABEL: ugt_28_v2i64: 19139; PWR7: # %bb.0: 19140; PWR7-NEXT: addi 3, 1, -32 19141; PWR7-NEXT: li 5, 0 19142; PWR7-NEXT: li 6, -1 19143; PWR7-NEXT: stxvd2x 34, 0, 3 19144; PWR7-NEXT: ld 3, -24(1) 19145; PWR7-NEXT: ld 4, -32(1) 19146; PWR7-NEXT: popcntd 3, 3 19147; PWR7-NEXT: popcntd 4, 4 19148; PWR7-NEXT: cmpldi 3, 28 19149; PWR7-NEXT: iselgt 3, 6, 5 19150; PWR7-NEXT: cmpldi 4, 28 19151; PWR7-NEXT: iselgt 4, 6, 5 19152; PWR7-NEXT: std 3, -8(1) 19153; PWR7-NEXT: addi 3, 1, -16 19154; PWR7-NEXT: std 4, -16(1) 19155; PWR7-NEXT: lxvd2x 34, 0, 3 19156; PWR7-NEXT: blr 19157; 19158; PWR8-LABEL: ugt_28_v2i64: 19159; PWR8: # %bb.0: 19160; PWR8-NEXT: addis 3, 2, .LCPI154_0@toc@ha 19161; PWR8-NEXT: vpopcntd 2, 2 19162; PWR8-NEXT: addi 3, 3, .LCPI154_0@toc@l 19163; PWR8-NEXT: lxvd2x 35, 0, 3 19164; PWR8-NEXT: vcmpgtud 2, 2, 3 19165; PWR8-NEXT: blr 19166; 19167; PWR9-LABEL: ugt_28_v2i64: 19168; PWR9: # %bb.0: 19169; PWR9-NEXT: addis 3, 2, .LCPI154_0@toc@ha 19170; PWR9-NEXT: vpopcntd 2, 2 19171; PWR9-NEXT: addi 3, 3, .LCPI154_0@toc@l 19172; PWR9-NEXT: lxvx 35, 0, 3 19173; PWR9-NEXT: vcmpgtud 2, 2, 3 19174; PWR9-NEXT: blr 19175 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19176 %3 = icmp ugt <2 x i64> %2, <i64 28, i64 28> 19177 %4 = sext <2 x i1> %3 to <2 x i64> 19178 ret <2 x i64> %4 19179} 19180 19181define <2 x i64> @ult_29_v2i64(<2 x i64> %0) { 19182; PWR5-LABEL: ult_29_v2i64: 19183; PWR5: # %bb.0: 19184; PWR5-NEXT: lis 5, 21845 19185; PWR5-NEXT: lis 6, 13107 19186; PWR5-NEXT: ori 5, 5, 21845 19187; PWR5-NEXT: rotldi 8, 4, 63 19188; PWR5-NEXT: rotldi 9, 3, 63 19189; PWR5-NEXT: rldimi 5, 5, 32, 0 19190; PWR5-NEXT: and 8, 8, 5 19191; PWR5-NEXT: and 5, 9, 5 19192; PWR5-NEXT: ori 6, 6, 13107 19193; PWR5-NEXT: sub 3, 3, 5 19194; PWR5-NEXT: rldimi 6, 6, 32, 0 19195; PWR5-NEXT: sub 4, 4, 8 19196; PWR5-NEXT: and 8, 3, 6 19197; PWR5-NEXT: rotldi 3, 3, 62 19198; PWR5-NEXT: and 3, 3, 6 19199; PWR5-NEXT: lis 7, 3855 19200; PWR5-NEXT: and 5, 4, 6 19201; PWR5-NEXT: rotldi 4, 4, 62 19202; PWR5-NEXT: add 3, 8, 3 19203; PWR5-NEXT: lis 9, 257 19204; PWR5-NEXT: ori 7, 7, 3855 19205; PWR5-NEXT: and 4, 4, 6 19206; PWR5-NEXT: rldicl 6, 3, 60, 4 19207; PWR5-NEXT: ori 9, 9, 257 19208; PWR5-NEXT: rldimi 7, 7, 32, 0 19209; PWR5-NEXT: add 4, 5, 4 19210; PWR5-NEXT: add 3, 3, 6 19211; PWR5-NEXT: rldimi 9, 9, 32, 0 19212; PWR5-NEXT: rldicl 5, 4, 60, 4 19213; PWR5-NEXT: and 3, 3, 7 19214; PWR5-NEXT: add 4, 4, 5 19215; PWR5-NEXT: mulld 3, 3, 9 19216; PWR5-NEXT: and 4, 4, 7 19217; PWR5-NEXT: rldicl 3, 3, 8, 56 19218; PWR5-NEXT: li 5, 29 19219; PWR5-NEXT: mulld 4, 4, 9 19220; PWR5-NEXT: subc 6, 3, 5 19221; PWR5-NEXT: rldicl 4, 4, 8, 56 19222; PWR5-NEXT: subfe 3, 3, 3 19223; PWR5-NEXT: subc 5, 4, 5 19224; PWR5-NEXT: subfe 4, 4, 4 19225; PWR5-NEXT: blr 19226; 19227; PWR6-LABEL: ult_29_v2i64: 19228; PWR6: # %bb.0: 19229; PWR6-NEXT: lis 5, 21845 19230; PWR6-NEXT: lis 6, 13107 19231; PWR6-NEXT: ori 5, 5, 21845 19232; PWR6-NEXT: rotldi 8, 4, 63 19233; PWR6-NEXT: rotldi 9, 3, 63 19234; PWR6-NEXT: rldimi 5, 5, 32, 0 19235; PWR6-NEXT: and 8, 8, 5 19236; PWR6-NEXT: and 5, 9, 5 19237; PWR6-NEXT: ori 6, 6, 13107 19238; PWR6-NEXT: sub 3, 3, 5 19239; PWR6-NEXT: rldimi 6, 6, 32, 0 19240; PWR6-NEXT: sub 4, 4, 8 19241; PWR6-NEXT: and 8, 3, 6 19242; PWR6-NEXT: rotldi 3, 3, 62 19243; PWR6-NEXT: and 3, 3, 6 19244; PWR6-NEXT: lis 7, 3855 19245; PWR6-NEXT: and 5, 4, 6 19246; PWR6-NEXT: rotldi 4, 4, 62 19247; PWR6-NEXT: add 3, 8, 3 19248; PWR6-NEXT: lis 9, 257 19249; PWR6-NEXT: ori 7, 7, 3855 19250; PWR6-NEXT: and 4, 4, 6 19251; PWR6-NEXT: rldicl 6, 3, 60, 4 19252; PWR6-NEXT: ori 9, 9, 257 19253; PWR6-NEXT: rldimi 7, 7, 32, 0 19254; PWR6-NEXT: add 4, 5, 4 19255; PWR6-NEXT: add 3, 3, 6 19256; PWR6-NEXT: rldimi 9, 9, 32, 0 19257; PWR6-NEXT: rldicl 5, 4, 60, 4 19258; PWR6-NEXT: and 3, 3, 7 19259; PWR6-NEXT: add 4, 4, 5 19260; PWR6-NEXT: mulld 3, 3, 9 19261; PWR6-NEXT: and 4, 4, 7 19262; PWR6-NEXT: rldicl 3, 3, 8, 56 19263; PWR6-NEXT: li 5, 29 19264; PWR6-NEXT: mulld 4, 4, 9 19265; PWR6-NEXT: subc 6, 3, 5 19266; PWR6-NEXT: rldicl 4, 4, 8, 56 19267; PWR6-NEXT: subfe 3, 3, 3 19268; PWR6-NEXT: subc 5, 4, 5 19269; PWR6-NEXT: subfe 4, 4, 4 19270; PWR6-NEXT: blr 19271; 19272; PWR7-LABEL: ult_29_v2i64: 19273; PWR7: # %bb.0: 19274; PWR7-NEXT: addi 3, 1, -32 19275; PWR7-NEXT: li 5, 0 19276; PWR7-NEXT: li 6, -1 19277; PWR7-NEXT: stxvd2x 34, 0, 3 19278; PWR7-NEXT: ld 3, -24(1) 19279; PWR7-NEXT: ld 4, -32(1) 19280; PWR7-NEXT: popcntd 3, 3 19281; PWR7-NEXT: popcntd 4, 4 19282; PWR7-NEXT: cmpldi 3, 29 19283; PWR7-NEXT: isellt 3, 6, 5 19284; PWR7-NEXT: cmpldi 4, 29 19285; PWR7-NEXT: isellt 4, 6, 5 19286; PWR7-NEXT: std 3, -8(1) 19287; PWR7-NEXT: addi 3, 1, -16 19288; PWR7-NEXT: std 4, -16(1) 19289; PWR7-NEXT: lxvd2x 34, 0, 3 19290; PWR7-NEXT: blr 19291; 19292; PWR8-LABEL: ult_29_v2i64: 19293; PWR8: # %bb.0: 19294; PWR8-NEXT: addis 3, 2, .LCPI155_0@toc@ha 19295; PWR8-NEXT: vpopcntd 2, 2 19296; PWR8-NEXT: addi 3, 3, .LCPI155_0@toc@l 19297; PWR8-NEXT: lxvd2x 35, 0, 3 19298; PWR8-NEXT: vcmpgtud 2, 3, 2 19299; PWR8-NEXT: blr 19300; 19301; PWR9-LABEL: ult_29_v2i64: 19302; PWR9: # %bb.0: 19303; PWR9-NEXT: addis 3, 2, .LCPI155_0@toc@ha 19304; PWR9-NEXT: vpopcntd 2, 2 19305; PWR9-NEXT: addi 3, 3, .LCPI155_0@toc@l 19306; PWR9-NEXT: lxvx 35, 0, 3 19307; PWR9-NEXT: vcmpgtud 2, 3, 2 19308; PWR9-NEXT: blr 19309 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19310 %3 = icmp ult <2 x i64> %2, <i64 29, i64 29> 19311 %4 = sext <2 x i1> %3 to <2 x i64> 19312 ret <2 x i64> %4 19313} 19314 19315define <2 x i64> @ugt_29_v2i64(<2 x i64> %0) { 19316; PWR5-LABEL: ugt_29_v2i64: 19317; PWR5: # %bb.0: 19318; PWR5-NEXT: lis 5, 21845 19319; PWR5-NEXT: lis 6, 13107 19320; PWR5-NEXT: ori 5, 5, 21845 19321; PWR5-NEXT: rotldi 8, 4, 63 19322; PWR5-NEXT: rotldi 9, 3, 63 19323; PWR5-NEXT: rldimi 5, 5, 32, 0 19324; PWR5-NEXT: and 8, 8, 5 19325; PWR5-NEXT: and 5, 9, 5 19326; PWR5-NEXT: ori 6, 6, 13107 19327; PWR5-NEXT: sub 3, 3, 5 19328; PWR5-NEXT: rldimi 6, 6, 32, 0 19329; PWR5-NEXT: sub 4, 4, 8 19330; PWR5-NEXT: and 8, 3, 6 19331; PWR5-NEXT: rotldi 3, 3, 62 19332; PWR5-NEXT: and 3, 3, 6 19333; PWR5-NEXT: lis 7, 3855 19334; PWR5-NEXT: and 5, 4, 6 19335; PWR5-NEXT: rotldi 4, 4, 62 19336; PWR5-NEXT: add 3, 8, 3 19337; PWR5-NEXT: lis 9, 257 19338; PWR5-NEXT: ori 7, 7, 3855 19339; PWR5-NEXT: and 4, 4, 6 19340; PWR5-NEXT: rldicl 6, 3, 60, 4 19341; PWR5-NEXT: ori 9, 9, 257 19342; PWR5-NEXT: rldimi 7, 7, 32, 0 19343; PWR5-NEXT: add 4, 5, 4 19344; PWR5-NEXT: add 3, 3, 6 19345; PWR5-NEXT: rldimi 9, 9, 32, 0 19346; PWR5-NEXT: rldicl 5, 4, 60, 4 19347; PWR5-NEXT: and 3, 3, 7 19348; PWR5-NEXT: add 4, 4, 5 19349; PWR5-NEXT: mulld 3, 3, 9 19350; PWR5-NEXT: and 4, 4, 7 19351; PWR5-NEXT: rldicl 3, 3, 8, 56 19352; PWR5-NEXT: mulld 4, 4, 9 19353; PWR5-NEXT: li 5, 29 19354; PWR5-NEXT: subfic 3, 3, 29 19355; PWR5-NEXT: rldicl 4, 4, 8, 56 19356; PWR5-NEXT: subfe 3, 5, 5 19357; PWR5-NEXT: subfic 4, 4, 29 19358; PWR5-NEXT: subfe 4, 5, 5 19359; PWR5-NEXT: blr 19360; 19361; PWR6-LABEL: ugt_29_v2i64: 19362; PWR6: # %bb.0: 19363; PWR6-NEXT: lis 5, 21845 19364; PWR6-NEXT: lis 6, 13107 19365; PWR6-NEXT: ori 5, 5, 21845 19366; PWR6-NEXT: rotldi 8, 4, 63 19367; PWR6-NEXT: rotldi 9, 3, 63 19368; PWR6-NEXT: rldimi 5, 5, 32, 0 19369; PWR6-NEXT: and 8, 8, 5 19370; PWR6-NEXT: and 5, 9, 5 19371; PWR6-NEXT: ori 6, 6, 13107 19372; PWR6-NEXT: sub 3, 3, 5 19373; PWR6-NEXT: rldimi 6, 6, 32, 0 19374; PWR6-NEXT: sub 4, 4, 8 19375; PWR6-NEXT: and 8, 3, 6 19376; PWR6-NEXT: rotldi 3, 3, 62 19377; PWR6-NEXT: and 3, 3, 6 19378; PWR6-NEXT: lis 7, 3855 19379; PWR6-NEXT: and 5, 4, 6 19380; PWR6-NEXT: rotldi 4, 4, 62 19381; PWR6-NEXT: add 3, 8, 3 19382; PWR6-NEXT: lis 9, 257 19383; PWR6-NEXT: ori 7, 7, 3855 19384; PWR6-NEXT: and 4, 4, 6 19385; PWR6-NEXT: rldicl 6, 3, 60, 4 19386; PWR6-NEXT: ori 9, 9, 257 19387; PWR6-NEXT: rldimi 7, 7, 32, 0 19388; PWR6-NEXT: add 4, 5, 4 19389; PWR6-NEXT: add 3, 3, 6 19390; PWR6-NEXT: rldimi 9, 9, 32, 0 19391; PWR6-NEXT: rldicl 5, 4, 60, 4 19392; PWR6-NEXT: and 3, 3, 7 19393; PWR6-NEXT: add 4, 4, 5 19394; PWR6-NEXT: mulld 3, 3, 9 19395; PWR6-NEXT: and 4, 4, 7 19396; PWR6-NEXT: rldicl 3, 3, 8, 56 19397; PWR6-NEXT: mulld 4, 4, 9 19398; PWR6-NEXT: li 5, 29 19399; PWR6-NEXT: subfic 3, 3, 29 19400; PWR6-NEXT: rldicl 4, 4, 8, 56 19401; PWR6-NEXT: subfe 3, 5, 5 19402; PWR6-NEXT: subfic 4, 4, 29 19403; PWR6-NEXT: subfe 4, 5, 5 19404; PWR6-NEXT: blr 19405; 19406; PWR7-LABEL: ugt_29_v2i64: 19407; PWR7: # %bb.0: 19408; PWR7-NEXT: addi 3, 1, -32 19409; PWR7-NEXT: li 5, 0 19410; PWR7-NEXT: li 6, -1 19411; PWR7-NEXT: stxvd2x 34, 0, 3 19412; PWR7-NEXT: ld 3, -24(1) 19413; PWR7-NEXT: ld 4, -32(1) 19414; PWR7-NEXT: popcntd 3, 3 19415; PWR7-NEXT: popcntd 4, 4 19416; PWR7-NEXT: cmpldi 3, 29 19417; PWR7-NEXT: iselgt 3, 6, 5 19418; PWR7-NEXT: cmpldi 4, 29 19419; PWR7-NEXT: iselgt 4, 6, 5 19420; PWR7-NEXT: std 3, -8(1) 19421; PWR7-NEXT: addi 3, 1, -16 19422; PWR7-NEXT: std 4, -16(1) 19423; PWR7-NEXT: lxvd2x 34, 0, 3 19424; PWR7-NEXT: blr 19425; 19426; PWR8-LABEL: ugt_29_v2i64: 19427; PWR8: # %bb.0: 19428; PWR8-NEXT: addis 3, 2, .LCPI156_0@toc@ha 19429; PWR8-NEXT: vpopcntd 2, 2 19430; PWR8-NEXT: addi 3, 3, .LCPI156_0@toc@l 19431; PWR8-NEXT: lxvd2x 35, 0, 3 19432; PWR8-NEXT: vcmpgtud 2, 2, 3 19433; PWR8-NEXT: blr 19434; 19435; PWR9-LABEL: ugt_29_v2i64: 19436; PWR9: # %bb.0: 19437; PWR9-NEXT: addis 3, 2, .LCPI156_0@toc@ha 19438; PWR9-NEXT: vpopcntd 2, 2 19439; PWR9-NEXT: addi 3, 3, .LCPI156_0@toc@l 19440; PWR9-NEXT: lxvx 35, 0, 3 19441; PWR9-NEXT: vcmpgtud 2, 2, 3 19442; PWR9-NEXT: blr 19443 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19444 %3 = icmp ugt <2 x i64> %2, <i64 29, i64 29> 19445 %4 = sext <2 x i1> %3 to <2 x i64> 19446 ret <2 x i64> %4 19447} 19448 19449define <2 x i64> @ult_30_v2i64(<2 x i64> %0) { 19450; PWR5-LABEL: ult_30_v2i64: 19451; PWR5: # %bb.0: 19452; PWR5-NEXT: lis 5, 21845 19453; PWR5-NEXT: lis 6, 13107 19454; PWR5-NEXT: ori 5, 5, 21845 19455; PWR5-NEXT: rotldi 8, 4, 63 19456; PWR5-NEXT: rotldi 9, 3, 63 19457; PWR5-NEXT: rldimi 5, 5, 32, 0 19458; PWR5-NEXT: and 8, 8, 5 19459; PWR5-NEXT: and 5, 9, 5 19460; PWR5-NEXT: ori 6, 6, 13107 19461; PWR5-NEXT: sub 3, 3, 5 19462; PWR5-NEXT: rldimi 6, 6, 32, 0 19463; PWR5-NEXT: sub 4, 4, 8 19464; PWR5-NEXT: and 8, 3, 6 19465; PWR5-NEXT: rotldi 3, 3, 62 19466; PWR5-NEXT: and 3, 3, 6 19467; PWR5-NEXT: lis 7, 3855 19468; PWR5-NEXT: and 5, 4, 6 19469; PWR5-NEXT: rotldi 4, 4, 62 19470; PWR5-NEXT: add 3, 8, 3 19471; PWR5-NEXT: lis 9, 257 19472; PWR5-NEXT: ori 7, 7, 3855 19473; PWR5-NEXT: and 4, 4, 6 19474; PWR5-NEXT: rldicl 6, 3, 60, 4 19475; PWR5-NEXT: ori 9, 9, 257 19476; PWR5-NEXT: rldimi 7, 7, 32, 0 19477; PWR5-NEXT: add 4, 5, 4 19478; PWR5-NEXT: add 3, 3, 6 19479; PWR5-NEXT: rldimi 9, 9, 32, 0 19480; PWR5-NEXT: rldicl 5, 4, 60, 4 19481; PWR5-NEXT: and 3, 3, 7 19482; PWR5-NEXT: add 4, 4, 5 19483; PWR5-NEXT: mulld 3, 3, 9 19484; PWR5-NEXT: and 4, 4, 7 19485; PWR5-NEXT: rldicl 3, 3, 8, 56 19486; PWR5-NEXT: li 5, 30 19487; PWR5-NEXT: mulld 4, 4, 9 19488; PWR5-NEXT: subc 6, 3, 5 19489; PWR5-NEXT: rldicl 4, 4, 8, 56 19490; PWR5-NEXT: subfe 3, 3, 3 19491; PWR5-NEXT: subc 5, 4, 5 19492; PWR5-NEXT: subfe 4, 4, 4 19493; PWR5-NEXT: blr 19494; 19495; PWR6-LABEL: ult_30_v2i64: 19496; PWR6: # %bb.0: 19497; PWR6-NEXT: lis 5, 21845 19498; PWR6-NEXT: lis 6, 13107 19499; PWR6-NEXT: ori 5, 5, 21845 19500; PWR6-NEXT: rotldi 8, 4, 63 19501; PWR6-NEXT: rotldi 9, 3, 63 19502; PWR6-NEXT: rldimi 5, 5, 32, 0 19503; PWR6-NEXT: and 8, 8, 5 19504; PWR6-NEXT: and 5, 9, 5 19505; PWR6-NEXT: ori 6, 6, 13107 19506; PWR6-NEXT: sub 3, 3, 5 19507; PWR6-NEXT: rldimi 6, 6, 32, 0 19508; PWR6-NEXT: sub 4, 4, 8 19509; PWR6-NEXT: and 8, 3, 6 19510; PWR6-NEXT: rotldi 3, 3, 62 19511; PWR6-NEXT: and 3, 3, 6 19512; PWR6-NEXT: lis 7, 3855 19513; PWR6-NEXT: and 5, 4, 6 19514; PWR6-NEXT: rotldi 4, 4, 62 19515; PWR6-NEXT: add 3, 8, 3 19516; PWR6-NEXT: lis 9, 257 19517; PWR6-NEXT: ori 7, 7, 3855 19518; PWR6-NEXT: and 4, 4, 6 19519; PWR6-NEXT: rldicl 6, 3, 60, 4 19520; PWR6-NEXT: ori 9, 9, 257 19521; PWR6-NEXT: rldimi 7, 7, 32, 0 19522; PWR6-NEXT: add 4, 5, 4 19523; PWR6-NEXT: add 3, 3, 6 19524; PWR6-NEXT: rldimi 9, 9, 32, 0 19525; PWR6-NEXT: rldicl 5, 4, 60, 4 19526; PWR6-NEXT: and 3, 3, 7 19527; PWR6-NEXT: add 4, 4, 5 19528; PWR6-NEXT: mulld 3, 3, 9 19529; PWR6-NEXT: and 4, 4, 7 19530; PWR6-NEXT: rldicl 3, 3, 8, 56 19531; PWR6-NEXT: li 5, 30 19532; PWR6-NEXT: mulld 4, 4, 9 19533; PWR6-NEXT: subc 6, 3, 5 19534; PWR6-NEXT: rldicl 4, 4, 8, 56 19535; PWR6-NEXT: subfe 3, 3, 3 19536; PWR6-NEXT: subc 5, 4, 5 19537; PWR6-NEXT: subfe 4, 4, 4 19538; PWR6-NEXT: blr 19539; 19540; PWR7-LABEL: ult_30_v2i64: 19541; PWR7: # %bb.0: 19542; PWR7-NEXT: addi 3, 1, -32 19543; PWR7-NEXT: li 5, 0 19544; PWR7-NEXT: li 6, -1 19545; PWR7-NEXT: stxvd2x 34, 0, 3 19546; PWR7-NEXT: ld 3, -24(1) 19547; PWR7-NEXT: ld 4, -32(1) 19548; PWR7-NEXT: popcntd 3, 3 19549; PWR7-NEXT: popcntd 4, 4 19550; PWR7-NEXT: cmpldi 3, 30 19551; PWR7-NEXT: isellt 3, 6, 5 19552; PWR7-NEXT: cmpldi 4, 30 19553; PWR7-NEXT: isellt 4, 6, 5 19554; PWR7-NEXT: std 3, -8(1) 19555; PWR7-NEXT: addi 3, 1, -16 19556; PWR7-NEXT: std 4, -16(1) 19557; PWR7-NEXT: lxvd2x 34, 0, 3 19558; PWR7-NEXT: blr 19559; 19560; PWR8-LABEL: ult_30_v2i64: 19561; PWR8: # %bb.0: 19562; PWR8-NEXT: addis 3, 2, .LCPI157_0@toc@ha 19563; PWR8-NEXT: vpopcntd 2, 2 19564; PWR8-NEXT: addi 3, 3, .LCPI157_0@toc@l 19565; PWR8-NEXT: lxvd2x 35, 0, 3 19566; PWR8-NEXT: vcmpgtud 2, 3, 2 19567; PWR8-NEXT: blr 19568; 19569; PWR9-LABEL: ult_30_v2i64: 19570; PWR9: # %bb.0: 19571; PWR9-NEXT: addis 3, 2, .LCPI157_0@toc@ha 19572; PWR9-NEXT: vpopcntd 2, 2 19573; PWR9-NEXT: addi 3, 3, .LCPI157_0@toc@l 19574; PWR9-NEXT: lxvx 35, 0, 3 19575; PWR9-NEXT: vcmpgtud 2, 3, 2 19576; PWR9-NEXT: blr 19577 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19578 %3 = icmp ult <2 x i64> %2, <i64 30, i64 30> 19579 %4 = sext <2 x i1> %3 to <2 x i64> 19580 ret <2 x i64> %4 19581} 19582 19583define <2 x i64> @ugt_30_v2i64(<2 x i64> %0) { 19584; PWR5-LABEL: ugt_30_v2i64: 19585; PWR5: # %bb.0: 19586; PWR5-NEXT: lis 5, 21845 19587; PWR5-NEXT: lis 6, 13107 19588; PWR5-NEXT: ori 5, 5, 21845 19589; PWR5-NEXT: rotldi 8, 4, 63 19590; PWR5-NEXT: rotldi 9, 3, 63 19591; PWR5-NEXT: rldimi 5, 5, 32, 0 19592; PWR5-NEXT: and 8, 8, 5 19593; PWR5-NEXT: and 5, 9, 5 19594; PWR5-NEXT: ori 6, 6, 13107 19595; PWR5-NEXT: sub 3, 3, 5 19596; PWR5-NEXT: rldimi 6, 6, 32, 0 19597; PWR5-NEXT: sub 4, 4, 8 19598; PWR5-NEXT: and 8, 3, 6 19599; PWR5-NEXT: rotldi 3, 3, 62 19600; PWR5-NEXT: and 3, 3, 6 19601; PWR5-NEXT: lis 7, 3855 19602; PWR5-NEXT: and 5, 4, 6 19603; PWR5-NEXT: rotldi 4, 4, 62 19604; PWR5-NEXT: add 3, 8, 3 19605; PWR5-NEXT: lis 9, 257 19606; PWR5-NEXT: ori 7, 7, 3855 19607; PWR5-NEXT: and 4, 4, 6 19608; PWR5-NEXT: rldicl 6, 3, 60, 4 19609; PWR5-NEXT: ori 9, 9, 257 19610; PWR5-NEXT: rldimi 7, 7, 32, 0 19611; PWR5-NEXT: add 4, 5, 4 19612; PWR5-NEXT: add 3, 3, 6 19613; PWR5-NEXT: rldimi 9, 9, 32, 0 19614; PWR5-NEXT: rldicl 5, 4, 60, 4 19615; PWR5-NEXT: and 3, 3, 7 19616; PWR5-NEXT: add 4, 4, 5 19617; PWR5-NEXT: mulld 3, 3, 9 19618; PWR5-NEXT: and 4, 4, 7 19619; PWR5-NEXT: rldicl 3, 3, 8, 56 19620; PWR5-NEXT: mulld 4, 4, 9 19621; PWR5-NEXT: li 5, 30 19622; PWR5-NEXT: subfic 3, 3, 30 19623; PWR5-NEXT: rldicl 4, 4, 8, 56 19624; PWR5-NEXT: subfe 3, 5, 5 19625; PWR5-NEXT: subfic 4, 4, 30 19626; PWR5-NEXT: subfe 4, 5, 5 19627; PWR5-NEXT: blr 19628; 19629; PWR6-LABEL: ugt_30_v2i64: 19630; PWR6: # %bb.0: 19631; PWR6-NEXT: lis 5, 21845 19632; PWR6-NEXT: lis 6, 13107 19633; PWR6-NEXT: ori 5, 5, 21845 19634; PWR6-NEXT: rotldi 8, 4, 63 19635; PWR6-NEXT: rotldi 9, 3, 63 19636; PWR6-NEXT: rldimi 5, 5, 32, 0 19637; PWR6-NEXT: and 8, 8, 5 19638; PWR6-NEXT: and 5, 9, 5 19639; PWR6-NEXT: ori 6, 6, 13107 19640; PWR6-NEXT: sub 3, 3, 5 19641; PWR6-NEXT: rldimi 6, 6, 32, 0 19642; PWR6-NEXT: sub 4, 4, 8 19643; PWR6-NEXT: and 8, 3, 6 19644; PWR6-NEXT: rotldi 3, 3, 62 19645; PWR6-NEXT: and 3, 3, 6 19646; PWR6-NEXT: lis 7, 3855 19647; PWR6-NEXT: and 5, 4, 6 19648; PWR6-NEXT: rotldi 4, 4, 62 19649; PWR6-NEXT: add 3, 8, 3 19650; PWR6-NEXT: lis 9, 257 19651; PWR6-NEXT: ori 7, 7, 3855 19652; PWR6-NEXT: and 4, 4, 6 19653; PWR6-NEXT: rldicl 6, 3, 60, 4 19654; PWR6-NEXT: ori 9, 9, 257 19655; PWR6-NEXT: rldimi 7, 7, 32, 0 19656; PWR6-NEXT: add 4, 5, 4 19657; PWR6-NEXT: add 3, 3, 6 19658; PWR6-NEXT: rldimi 9, 9, 32, 0 19659; PWR6-NEXT: rldicl 5, 4, 60, 4 19660; PWR6-NEXT: and 3, 3, 7 19661; PWR6-NEXT: add 4, 4, 5 19662; PWR6-NEXT: mulld 3, 3, 9 19663; PWR6-NEXT: and 4, 4, 7 19664; PWR6-NEXT: rldicl 3, 3, 8, 56 19665; PWR6-NEXT: mulld 4, 4, 9 19666; PWR6-NEXT: li 5, 30 19667; PWR6-NEXT: subfic 3, 3, 30 19668; PWR6-NEXT: rldicl 4, 4, 8, 56 19669; PWR6-NEXT: subfe 3, 5, 5 19670; PWR6-NEXT: subfic 4, 4, 30 19671; PWR6-NEXT: subfe 4, 5, 5 19672; PWR6-NEXT: blr 19673; 19674; PWR7-LABEL: ugt_30_v2i64: 19675; PWR7: # %bb.0: 19676; PWR7-NEXT: addi 3, 1, -32 19677; PWR7-NEXT: li 5, 0 19678; PWR7-NEXT: li 6, -1 19679; PWR7-NEXT: stxvd2x 34, 0, 3 19680; PWR7-NEXT: ld 3, -24(1) 19681; PWR7-NEXT: ld 4, -32(1) 19682; PWR7-NEXT: popcntd 3, 3 19683; PWR7-NEXT: popcntd 4, 4 19684; PWR7-NEXT: cmpldi 3, 30 19685; PWR7-NEXT: iselgt 3, 6, 5 19686; PWR7-NEXT: cmpldi 4, 30 19687; PWR7-NEXT: iselgt 4, 6, 5 19688; PWR7-NEXT: std 3, -8(1) 19689; PWR7-NEXT: addi 3, 1, -16 19690; PWR7-NEXT: std 4, -16(1) 19691; PWR7-NEXT: lxvd2x 34, 0, 3 19692; PWR7-NEXT: blr 19693; 19694; PWR8-LABEL: ugt_30_v2i64: 19695; PWR8: # %bb.0: 19696; PWR8-NEXT: addis 3, 2, .LCPI158_0@toc@ha 19697; PWR8-NEXT: vpopcntd 2, 2 19698; PWR8-NEXT: addi 3, 3, .LCPI158_0@toc@l 19699; PWR8-NEXT: lxvd2x 35, 0, 3 19700; PWR8-NEXT: vcmpgtud 2, 2, 3 19701; PWR8-NEXT: blr 19702; 19703; PWR9-LABEL: ugt_30_v2i64: 19704; PWR9: # %bb.0: 19705; PWR9-NEXT: addis 3, 2, .LCPI158_0@toc@ha 19706; PWR9-NEXT: vpopcntd 2, 2 19707; PWR9-NEXT: addi 3, 3, .LCPI158_0@toc@l 19708; PWR9-NEXT: lxvx 35, 0, 3 19709; PWR9-NEXT: vcmpgtud 2, 2, 3 19710; PWR9-NEXT: blr 19711 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19712 %3 = icmp ugt <2 x i64> %2, <i64 30, i64 30> 19713 %4 = sext <2 x i1> %3 to <2 x i64> 19714 ret <2 x i64> %4 19715} 19716 19717define <2 x i64> @ult_31_v2i64(<2 x i64> %0) { 19718; PWR5-LABEL: ult_31_v2i64: 19719; PWR5: # %bb.0: 19720; PWR5-NEXT: lis 5, 21845 19721; PWR5-NEXT: lis 6, 13107 19722; PWR5-NEXT: ori 5, 5, 21845 19723; PWR5-NEXT: rotldi 8, 4, 63 19724; PWR5-NEXT: rotldi 9, 3, 63 19725; PWR5-NEXT: rldimi 5, 5, 32, 0 19726; PWR5-NEXT: and 8, 8, 5 19727; PWR5-NEXT: and 5, 9, 5 19728; PWR5-NEXT: ori 6, 6, 13107 19729; PWR5-NEXT: sub 3, 3, 5 19730; PWR5-NEXT: rldimi 6, 6, 32, 0 19731; PWR5-NEXT: sub 4, 4, 8 19732; PWR5-NEXT: and 8, 3, 6 19733; PWR5-NEXT: rotldi 3, 3, 62 19734; PWR5-NEXT: and 3, 3, 6 19735; PWR5-NEXT: lis 7, 3855 19736; PWR5-NEXT: and 5, 4, 6 19737; PWR5-NEXT: rotldi 4, 4, 62 19738; PWR5-NEXT: add 3, 8, 3 19739; PWR5-NEXT: lis 9, 257 19740; PWR5-NEXT: ori 7, 7, 3855 19741; PWR5-NEXT: and 4, 4, 6 19742; PWR5-NEXT: rldicl 6, 3, 60, 4 19743; PWR5-NEXT: ori 9, 9, 257 19744; PWR5-NEXT: rldimi 7, 7, 32, 0 19745; PWR5-NEXT: add 4, 5, 4 19746; PWR5-NEXT: add 3, 3, 6 19747; PWR5-NEXT: rldimi 9, 9, 32, 0 19748; PWR5-NEXT: rldicl 5, 4, 60, 4 19749; PWR5-NEXT: and 3, 3, 7 19750; PWR5-NEXT: add 4, 4, 5 19751; PWR5-NEXT: mulld 3, 3, 9 19752; PWR5-NEXT: and 4, 4, 7 19753; PWR5-NEXT: rldicl 3, 3, 8, 56 19754; PWR5-NEXT: li 5, 31 19755; PWR5-NEXT: mulld 4, 4, 9 19756; PWR5-NEXT: subc 6, 3, 5 19757; PWR5-NEXT: rldicl 4, 4, 8, 56 19758; PWR5-NEXT: subfe 3, 3, 3 19759; PWR5-NEXT: subc 5, 4, 5 19760; PWR5-NEXT: subfe 4, 4, 4 19761; PWR5-NEXT: blr 19762; 19763; PWR6-LABEL: ult_31_v2i64: 19764; PWR6: # %bb.0: 19765; PWR6-NEXT: lis 5, 21845 19766; PWR6-NEXT: lis 6, 13107 19767; PWR6-NEXT: ori 5, 5, 21845 19768; PWR6-NEXT: rotldi 8, 4, 63 19769; PWR6-NEXT: rotldi 9, 3, 63 19770; PWR6-NEXT: rldimi 5, 5, 32, 0 19771; PWR6-NEXT: and 8, 8, 5 19772; PWR6-NEXT: and 5, 9, 5 19773; PWR6-NEXT: ori 6, 6, 13107 19774; PWR6-NEXT: sub 3, 3, 5 19775; PWR6-NEXT: rldimi 6, 6, 32, 0 19776; PWR6-NEXT: sub 4, 4, 8 19777; PWR6-NEXT: and 8, 3, 6 19778; PWR6-NEXT: rotldi 3, 3, 62 19779; PWR6-NEXT: and 3, 3, 6 19780; PWR6-NEXT: lis 7, 3855 19781; PWR6-NEXT: and 5, 4, 6 19782; PWR6-NEXT: rotldi 4, 4, 62 19783; PWR6-NEXT: add 3, 8, 3 19784; PWR6-NEXT: lis 9, 257 19785; PWR6-NEXT: ori 7, 7, 3855 19786; PWR6-NEXT: and 4, 4, 6 19787; PWR6-NEXT: rldicl 6, 3, 60, 4 19788; PWR6-NEXT: ori 9, 9, 257 19789; PWR6-NEXT: rldimi 7, 7, 32, 0 19790; PWR6-NEXT: add 4, 5, 4 19791; PWR6-NEXT: add 3, 3, 6 19792; PWR6-NEXT: rldimi 9, 9, 32, 0 19793; PWR6-NEXT: rldicl 5, 4, 60, 4 19794; PWR6-NEXT: and 3, 3, 7 19795; PWR6-NEXT: add 4, 4, 5 19796; PWR6-NEXT: mulld 3, 3, 9 19797; PWR6-NEXT: and 4, 4, 7 19798; PWR6-NEXT: rldicl 3, 3, 8, 56 19799; PWR6-NEXT: li 5, 31 19800; PWR6-NEXT: mulld 4, 4, 9 19801; PWR6-NEXT: subc 6, 3, 5 19802; PWR6-NEXT: rldicl 4, 4, 8, 56 19803; PWR6-NEXT: subfe 3, 3, 3 19804; PWR6-NEXT: subc 5, 4, 5 19805; PWR6-NEXT: subfe 4, 4, 4 19806; PWR6-NEXT: blr 19807; 19808; PWR7-LABEL: ult_31_v2i64: 19809; PWR7: # %bb.0: 19810; PWR7-NEXT: addi 3, 1, -32 19811; PWR7-NEXT: li 5, 0 19812; PWR7-NEXT: li 6, -1 19813; PWR7-NEXT: stxvd2x 34, 0, 3 19814; PWR7-NEXT: ld 3, -24(1) 19815; PWR7-NEXT: ld 4, -32(1) 19816; PWR7-NEXT: popcntd 3, 3 19817; PWR7-NEXT: popcntd 4, 4 19818; PWR7-NEXT: cmpldi 3, 31 19819; PWR7-NEXT: isellt 3, 6, 5 19820; PWR7-NEXT: cmpldi 4, 31 19821; PWR7-NEXT: isellt 4, 6, 5 19822; PWR7-NEXT: std 3, -8(1) 19823; PWR7-NEXT: addi 3, 1, -16 19824; PWR7-NEXT: std 4, -16(1) 19825; PWR7-NEXT: lxvd2x 34, 0, 3 19826; PWR7-NEXT: blr 19827; 19828; PWR8-LABEL: ult_31_v2i64: 19829; PWR8: # %bb.0: 19830; PWR8-NEXT: addis 3, 2, .LCPI159_0@toc@ha 19831; PWR8-NEXT: vpopcntd 2, 2 19832; PWR8-NEXT: addi 3, 3, .LCPI159_0@toc@l 19833; PWR8-NEXT: lxvd2x 35, 0, 3 19834; PWR8-NEXT: vcmpgtud 2, 3, 2 19835; PWR8-NEXT: blr 19836; 19837; PWR9-LABEL: ult_31_v2i64: 19838; PWR9: # %bb.0: 19839; PWR9-NEXT: addis 3, 2, .LCPI159_0@toc@ha 19840; PWR9-NEXT: vpopcntd 2, 2 19841; PWR9-NEXT: addi 3, 3, .LCPI159_0@toc@l 19842; PWR9-NEXT: lxvx 35, 0, 3 19843; PWR9-NEXT: vcmpgtud 2, 3, 2 19844; PWR9-NEXT: blr 19845 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19846 %3 = icmp ult <2 x i64> %2, <i64 31, i64 31> 19847 %4 = sext <2 x i1> %3 to <2 x i64> 19848 ret <2 x i64> %4 19849} 19850 19851define <2 x i64> @ugt_31_v2i64(<2 x i64> %0) { 19852; PWR5-LABEL: ugt_31_v2i64: 19853; PWR5: # %bb.0: 19854; PWR5-NEXT: lis 5, 21845 19855; PWR5-NEXT: lis 6, 13107 19856; PWR5-NEXT: ori 5, 5, 21845 19857; PWR5-NEXT: rotldi 8, 4, 63 19858; PWR5-NEXT: rotldi 9, 3, 63 19859; PWR5-NEXT: rldimi 5, 5, 32, 0 19860; PWR5-NEXT: and 8, 8, 5 19861; PWR5-NEXT: and 5, 9, 5 19862; PWR5-NEXT: ori 6, 6, 13107 19863; PWR5-NEXT: sub 3, 3, 5 19864; PWR5-NEXT: rldimi 6, 6, 32, 0 19865; PWR5-NEXT: sub 4, 4, 8 19866; PWR5-NEXT: and 8, 3, 6 19867; PWR5-NEXT: rotldi 3, 3, 62 19868; PWR5-NEXT: and 3, 3, 6 19869; PWR5-NEXT: lis 7, 3855 19870; PWR5-NEXT: and 5, 4, 6 19871; PWR5-NEXT: rotldi 4, 4, 62 19872; PWR5-NEXT: add 3, 8, 3 19873; PWR5-NEXT: lis 9, 257 19874; PWR5-NEXT: ori 7, 7, 3855 19875; PWR5-NEXT: and 4, 4, 6 19876; PWR5-NEXT: rldicl 6, 3, 60, 4 19877; PWR5-NEXT: ori 9, 9, 257 19878; PWR5-NEXT: rldimi 7, 7, 32, 0 19879; PWR5-NEXT: add 4, 5, 4 19880; PWR5-NEXT: add 3, 3, 6 19881; PWR5-NEXT: rldimi 9, 9, 32, 0 19882; PWR5-NEXT: rldicl 5, 4, 60, 4 19883; PWR5-NEXT: and 3, 3, 7 19884; PWR5-NEXT: add 4, 4, 5 19885; PWR5-NEXT: mulld 3, 3, 9 19886; PWR5-NEXT: and 4, 4, 7 19887; PWR5-NEXT: rldicl 3, 3, 8, 56 19888; PWR5-NEXT: mulld 4, 4, 9 19889; PWR5-NEXT: li 5, 31 19890; PWR5-NEXT: subfic 3, 3, 31 19891; PWR5-NEXT: rldicl 4, 4, 8, 56 19892; PWR5-NEXT: subfe 3, 5, 5 19893; PWR5-NEXT: subfic 4, 4, 31 19894; PWR5-NEXT: subfe 4, 5, 5 19895; PWR5-NEXT: blr 19896; 19897; PWR6-LABEL: ugt_31_v2i64: 19898; PWR6: # %bb.0: 19899; PWR6-NEXT: lis 5, 21845 19900; PWR6-NEXT: lis 6, 13107 19901; PWR6-NEXT: ori 5, 5, 21845 19902; PWR6-NEXT: rotldi 8, 4, 63 19903; PWR6-NEXT: rotldi 9, 3, 63 19904; PWR6-NEXT: rldimi 5, 5, 32, 0 19905; PWR6-NEXT: and 8, 8, 5 19906; PWR6-NEXT: and 5, 9, 5 19907; PWR6-NEXT: ori 6, 6, 13107 19908; PWR6-NEXT: sub 3, 3, 5 19909; PWR6-NEXT: rldimi 6, 6, 32, 0 19910; PWR6-NEXT: sub 4, 4, 8 19911; PWR6-NEXT: and 8, 3, 6 19912; PWR6-NEXT: rotldi 3, 3, 62 19913; PWR6-NEXT: and 3, 3, 6 19914; PWR6-NEXT: lis 7, 3855 19915; PWR6-NEXT: and 5, 4, 6 19916; PWR6-NEXT: rotldi 4, 4, 62 19917; PWR6-NEXT: add 3, 8, 3 19918; PWR6-NEXT: lis 9, 257 19919; PWR6-NEXT: ori 7, 7, 3855 19920; PWR6-NEXT: and 4, 4, 6 19921; PWR6-NEXT: rldicl 6, 3, 60, 4 19922; PWR6-NEXT: ori 9, 9, 257 19923; PWR6-NEXT: rldimi 7, 7, 32, 0 19924; PWR6-NEXT: add 4, 5, 4 19925; PWR6-NEXT: add 3, 3, 6 19926; PWR6-NEXT: rldimi 9, 9, 32, 0 19927; PWR6-NEXT: rldicl 5, 4, 60, 4 19928; PWR6-NEXT: and 3, 3, 7 19929; PWR6-NEXT: add 4, 4, 5 19930; PWR6-NEXT: mulld 3, 3, 9 19931; PWR6-NEXT: and 4, 4, 7 19932; PWR6-NEXT: rldicl 3, 3, 8, 56 19933; PWR6-NEXT: mulld 4, 4, 9 19934; PWR6-NEXT: li 5, 31 19935; PWR6-NEXT: subfic 3, 3, 31 19936; PWR6-NEXT: rldicl 4, 4, 8, 56 19937; PWR6-NEXT: subfe 3, 5, 5 19938; PWR6-NEXT: subfic 4, 4, 31 19939; PWR6-NEXT: subfe 4, 5, 5 19940; PWR6-NEXT: blr 19941; 19942; PWR7-LABEL: ugt_31_v2i64: 19943; PWR7: # %bb.0: 19944; PWR7-NEXT: addi 3, 1, -32 19945; PWR7-NEXT: li 5, 0 19946; PWR7-NEXT: li 6, -1 19947; PWR7-NEXT: stxvd2x 34, 0, 3 19948; PWR7-NEXT: ld 3, -24(1) 19949; PWR7-NEXT: ld 4, -32(1) 19950; PWR7-NEXT: popcntd 3, 3 19951; PWR7-NEXT: popcntd 4, 4 19952; PWR7-NEXT: cmpldi 3, 31 19953; PWR7-NEXT: iselgt 3, 6, 5 19954; PWR7-NEXT: cmpldi 4, 31 19955; PWR7-NEXT: iselgt 4, 6, 5 19956; PWR7-NEXT: std 3, -8(1) 19957; PWR7-NEXT: addi 3, 1, -16 19958; PWR7-NEXT: std 4, -16(1) 19959; PWR7-NEXT: lxvd2x 34, 0, 3 19960; PWR7-NEXT: blr 19961; 19962; PWR8-LABEL: ugt_31_v2i64: 19963; PWR8: # %bb.0: 19964; PWR8-NEXT: addis 3, 2, .LCPI160_0@toc@ha 19965; PWR8-NEXT: vpopcntd 2, 2 19966; PWR8-NEXT: addi 3, 3, .LCPI160_0@toc@l 19967; PWR8-NEXT: lxvd2x 35, 0, 3 19968; PWR8-NEXT: vcmpgtud 2, 2, 3 19969; PWR8-NEXT: blr 19970; 19971; PWR9-LABEL: ugt_31_v2i64: 19972; PWR9: # %bb.0: 19973; PWR9-NEXT: addis 3, 2, .LCPI160_0@toc@ha 19974; PWR9-NEXT: vpopcntd 2, 2 19975; PWR9-NEXT: addi 3, 3, .LCPI160_0@toc@l 19976; PWR9-NEXT: lxvx 35, 0, 3 19977; PWR9-NEXT: vcmpgtud 2, 2, 3 19978; PWR9-NEXT: blr 19979 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19980 %3 = icmp ugt <2 x i64> %2, <i64 31, i64 31> 19981 %4 = sext <2 x i1> %3 to <2 x i64> 19982 ret <2 x i64> %4 19983} 19984 19985define <2 x i64> @ult_32_v2i64(<2 x i64> %0) { 19986; PWR5-LABEL: ult_32_v2i64: 19987; PWR5: # %bb.0: 19988; PWR5-NEXT: lis 5, 21845 19989; PWR5-NEXT: lis 6, 13107 19990; PWR5-NEXT: ori 5, 5, 21845 19991; PWR5-NEXT: rotldi 8, 4, 63 19992; PWR5-NEXT: rotldi 9, 3, 63 19993; PWR5-NEXT: rldimi 5, 5, 32, 0 19994; PWR5-NEXT: and 8, 8, 5 19995; PWR5-NEXT: and 5, 9, 5 19996; PWR5-NEXT: ori 6, 6, 13107 19997; PWR5-NEXT: sub 3, 3, 5 19998; PWR5-NEXT: rldimi 6, 6, 32, 0 19999; PWR5-NEXT: sub 4, 4, 8 20000; PWR5-NEXT: and 8, 3, 6 20001; PWR5-NEXT: rotldi 3, 3, 62 20002; PWR5-NEXT: and 3, 3, 6 20003; PWR5-NEXT: lis 7, 3855 20004; PWR5-NEXT: and 5, 4, 6 20005; PWR5-NEXT: rotldi 4, 4, 62 20006; PWR5-NEXT: add 3, 8, 3 20007; PWR5-NEXT: lis 9, 257 20008; PWR5-NEXT: ori 7, 7, 3855 20009; PWR5-NEXT: and 4, 4, 6 20010; PWR5-NEXT: rldicl 6, 3, 60, 4 20011; PWR5-NEXT: ori 9, 9, 257 20012; PWR5-NEXT: rldimi 7, 7, 32, 0 20013; PWR5-NEXT: add 4, 5, 4 20014; PWR5-NEXT: add 3, 3, 6 20015; PWR5-NEXT: rldimi 9, 9, 32, 0 20016; PWR5-NEXT: rldicl 5, 4, 60, 4 20017; PWR5-NEXT: and 3, 3, 7 20018; PWR5-NEXT: add 4, 4, 5 20019; PWR5-NEXT: mulld 3, 3, 9 20020; PWR5-NEXT: and 4, 4, 7 20021; PWR5-NEXT: rldicl 3, 3, 8, 56 20022; PWR5-NEXT: li 5, 32 20023; PWR5-NEXT: mulld 4, 4, 9 20024; PWR5-NEXT: subc 6, 3, 5 20025; PWR5-NEXT: rldicl 4, 4, 8, 56 20026; PWR5-NEXT: subfe 3, 3, 3 20027; PWR5-NEXT: subc 5, 4, 5 20028; PWR5-NEXT: subfe 4, 4, 4 20029; PWR5-NEXT: blr 20030; 20031; PWR6-LABEL: ult_32_v2i64: 20032; PWR6: # %bb.0: 20033; PWR6-NEXT: lis 5, 21845 20034; PWR6-NEXT: lis 6, 13107 20035; PWR6-NEXT: ori 5, 5, 21845 20036; PWR6-NEXT: rotldi 8, 4, 63 20037; PWR6-NEXT: rotldi 9, 3, 63 20038; PWR6-NEXT: rldimi 5, 5, 32, 0 20039; PWR6-NEXT: and 8, 8, 5 20040; PWR6-NEXT: and 5, 9, 5 20041; PWR6-NEXT: ori 6, 6, 13107 20042; PWR6-NEXT: sub 3, 3, 5 20043; PWR6-NEXT: rldimi 6, 6, 32, 0 20044; PWR6-NEXT: sub 4, 4, 8 20045; PWR6-NEXT: and 8, 3, 6 20046; PWR6-NEXT: rotldi 3, 3, 62 20047; PWR6-NEXT: and 3, 3, 6 20048; PWR6-NEXT: lis 7, 3855 20049; PWR6-NEXT: and 5, 4, 6 20050; PWR6-NEXT: rotldi 4, 4, 62 20051; PWR6-NEXT: add 3, 8, 3 20052; PWR6-NEXT: lis 9, 257 20053; PWR6-NEXT: ori 7, 7, 3855 20054; PWR6-NEXT: and 4, 4, 6 20055; PWR6-NEXT: rldicl 6, 3, 60, 4 20056; PWR6-NEXT: ori 9, 9, 257 20057; PWR6-NEXT: rldimi 7, 7, 32, 0 20058; PWR6-NEXT: add 4, 5, 4 20059; PWR6-NEXT: add 3, 3, 6 20060; PWR6-NEXT: rldimi 9, 9, 32, 0 20061; PWR6-NEXT: rldicl 5, 4, 60, 4 20062; PWR6-NEXT: and 3, 3, 7 20063; PWR6-NEXT: add 4, 4, 5 20064; PWR6-NEXT: mulld 3, 3, 9 20065; PWR6-NEXT: and 4, 4, 7 20066; PWR6-NEXT: rldicl 3, 3, 8, 56 20067; PWR6-NEXT: li 5, 32 20068; PWR6-NEXT: mulld 4, 4, 9 20069; PWR6-NEXT: subc 6, 3, 5 20070; PWR6-NEXT: rldicl 4, 4, 8, 56 20071; PWR6-NEXT: subfe 3, 3, 3 20072; PWR6-NEXT: subc 5, 4, 5 20073; PWR6-NEXT: subfe 4, 4, 4 20074; PWR6-NEXT: blr 20075; 20076; PWR7-LABEL: ult_32_v2i64: 20077; PWR7: # %bb.0: 20078; PWR7-NEXT: addi 3, 1, -32 20079; PWR7-NEXT: li 5, 0 20080; PWR7-NEXT: li 6, -1 20081; PWR7-NEXT: stxvd2x 34, 0, 3 20082; PWR7-NEXT: ld 3, -24(1) 20083; PWR7-NEXT: ld 4, -32(1) 20084; PWR7-NEXT: popcntd 3, 3 20085; PWR7-NEXT: popcntd 4, 4 20086; PWR7-NEXT: cmpldi 3, 32 20087; PWR7-NEXT: isellt 3, 6, 5 20088; PWR7-NEXT: cmpldi 4, 32 20089; PWR7-NEXT: isellt 4, 6, 5 20090; PWR7-NEXT: std 3, -8(1) 20091; PWR7-NEXT: addi 3, 1, -16 20092; PWR7-NEXT: std 4, -16(1) 20093; PWR7-NEXT: lxvd2x 34, 0, 3 20094; PWR7-NEXT: blr 20095; 20096; PWR8-LABEL: ult_32_v2i64: 20097; PWR8: # %bb.0: 20098; PWR8-NEXT: addis 3, 2, .LCPI161_0@toc@ha 20099; PWR8-NEXT: vpopcntd 2, 2 20100; PWR8-NEXT: addi 3, 3, .LCPI161_0@toc@l 20101; PWR8-NEXT: lxvd2x 35, 0, 3 20102; PWR8-NEXT: vcmpgtud 2, 3, 2 20103; PWR8-NEXT: blr 20104; 20105; PWR9-LABEL: ult_32_v2i64: 20106; PWR9: # %bb.0: 20107; PWR9-NEXT: addis 3, 2, .LCPI161_0@toc@ha 20108; PWR9-NEXT: vpopcntd 2, 2 20109; PWR9-NEXT: addi 3, 3, .LCPI161_0@toc@l 20110; PWR9-NEXT: lxvx 35, 0, 3 20111; PWR9-NEXT: vcmpgtud 2, 3, 2 20112; PWR9-NEXT: blr 20113 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20114 %3 = icmp ult <2 x i64> %2, <i64 32, i64 32> 20115 %4 = sext <2 x i1> %3 to <2 x i64> 20116 ret <2 x i64> %4 20117} 20118 20119define <2 x i64> @ugt_32_v2i64(<2 x i64> %0) { 20120; PWR5-LABEL: ugt_32_v2i64: 20121; PWR5: # %bb.0: 20122; PWR5-NEXT: lis 5, 21845 20123; PWR5-NEXT: lis 6, 13107 20124; PWR5-NEXT: ori 5, 5, 21845 20125; PWR5-NEXT: rotldi 8, 4, 63 20126; PWR5-NEXT: rotldi 9, 3, 63 20127; PWR5-NEXT: rldimi 5, 5, 32, 0 20128; PWR5-NEXT: and 8, 8, 5 20129; PWR5-NEXT: and 5, 9, 5 20130; PWR5-NEXT: ori 6, 6, 13107 20131; PWR5-NEXT: sub 3, 3, 5 20132; PWR5-NEXT: rldimi 6, 6, 32, 0 20133; PWR5-NEXT: sub 4, 4, 8 20134; PWR5-NEXT: and 8, 3, 6 20135; PWR5-NEXT: rotldi 3, 3, 62 20136; PWR5-NEXT: and 3, 3, 6 20137; PWR5-NEXT: lis 7, 3855 20138; PWR5-NEXT: and 5, 4, 6 20139; PWR5-NEXT: rotldi 4, 4, 62 20140; PWR5-NEXT: add 3, 8, 3 20141; PWR5-NEXT: lis 9, 257 20142; PWR5-NEXT: ori 7, 7, 3855 20143; PWR5-NEXT: and 4, 4, 6 20144; PWR5-NEXT: rldicl 6, 3, 60, 4 20145; PWR5-NEXT: ori 9, 9, 257 20146; PWR5-NEXT: rldimi 7, 7, 32, 0 20147; PWR5-NEXT: add 4, 5, 4 20148; PWR5-NEXT: add 3, 3, 6 20149; PWR5-NEXT: rldimi 9, 9, 32, 0 20150; PWR5-NEXT: rldicl 5, 4, 60, 4 20151; PWR5-NEXT: and 3, 3, 7 20152; PWR5-NEXT: add 4, 4, 5 20153; PWR5-NEXT: mulld 3, 3, 9 20154; PWR5-NEXT: and 4, 4, 7 20155; PWR5-NEXT: rldicl 3, 3, 8, 56 20156; PWR5-NEXT: mulld 4, 4, 9 20157; PWR5-NEXT: li 5, 32 20158; PWR5-NEXT: subfic 3, 3, 32 20159; PWR5-NEXT: rldicl 4, 4, 8, 56 20160; PWR5-NEXT: subfe 3, 5, 5 20161; PWR5-NEXT: subfic 4, 4, 32 20162; PWR5-NEXT: subfe 4, 5, 5 20163; PWR5-NEXT: blr 20164; 20165; PWR6-LABEL: ugt_32_v2i64: 20166; PWR6: # %bb.0: 20167; PWR6-NEXT: lis 5, 21845 20168; PWR6-NEXT: lis 6, 13107 20169; PWR6-NEXT: ori 5, 5, 21845 20170; PWR6-NEXT: rotldi 8, 4, 63 20171; PWR6-NEXT: rotldi 9, 3, 63 20172; PWR6-NEXT: rldimi 5, 5, 32, 0 20173; PWR6-NEXT: and 8, 8, 5 20174; PWR6-NEXT: and 5, 9, 5 20175; PWR6-NEXT: ori 6, 6, 13107 20176; PWR6-NEXT: sub 3, 3, 5 20177; PWR6-NEXT: rldimi 6, 6, 32, 0 20178; PWR6-NEXT: sub 4, 4, 8 20179; PWR6-NEXT: and 8, 3, 6 20180; PWR6-NEXT: rotldi 3, 3, 62 20181; PWR6-NEXT: and 3, 3, 6 20182; PWR6-NEXT: lis 7, 3855 20183; PWR6-NEXT: and 5, 4, 6 20184; PWR6-NEXT: rotldi 4, 4, 62 20185; PWR6-NEXT: add 3, 8, 3 20186; PWR6-NEXT: lis 9, 257 20187; PWR6-NEXT: ori 7, 7, 3855 20188; PWR6-NEXT: and 4, 4, 6 20189; PWR6-NEXT: rldicl 6, 3, 60, 4 20190; PWR6-NEXT: ori 9, 9, 257 20191; PWR6-NEXT: rldimi 7, 7, 32, 0 20192; PWR6-NEXT: add 4, 5, 4 20193; PWR6-NEXT: add 3, 3, 6 20194; PWR6-NEXT: rldimi 9, 9, 32, 0 20195; PWR6-NEXT: rldicl 5, 4, 60, 4 20196; PWR6-NEXT: and 3, 3, 7 20197; PWR6-NEXT: add 4, 4, 5 20198; PWR6-NEXT: mulld 3, 3, 9 20199; PWR6-NEXT: and 4, 4, 7 20200; PWR6-NEXT: rldicl 3, 3, 8, 56 20201; PWR6-NEXT: mulld 4, 4, 9 20202; PWR6-NEXT: li 5, 32 20203; PWR6-NEXT: subfic 3, 3, 32 20204; PWR6-NEXT: rldicl 4, 4, 8, 56 20205; PWR6-NEXT: subfe 3, 5, 5 20206; PWR6-NEXT: subfic 4, 4, 32 20207; PWR6-NEXT: subfe 4, 5, 5 20208; PWR6-NEXT: blr 20209; 20210; PWR7-LABEL: ugt_32_v2i64: 20211; PWR7: # %bb.0: 20212; PWR7-NEXT: addi 3, 1, -32 20213; PWR7-NEXT: li 5, 0 20214; PWR7-NEXT: li 6, -1 20215; PWR7-NEXT: stxvd2x 34, 0, 3 20216; PWR7-NEXT: ld 3, -24(1) 20217; PWR7-NEXT: ld 4, -32(1) 20218; PWR7-NEXT: popcntd 3, 3 20219; PWR7-NEXT: popcntd 4, 4 20220; PWR7-NEXT: cmpldi 3, 32 20221; PWR7-NEXT: iselgt 3, 6, 5 20222; PWR7-NEXT: cmpldi 4, 32 20223; PWR7-NEXT: iselgt 4, 6, 5 20224; PWR7-NEXT: std 3, -8(1) 20225; PWR7-NEXT: addi 3, 1, -16 20226; PWR7-NEXT: std 4, -16(1) 20227; PWR7-NEXT: lxvd2x 34, 0, 3 20228; PWR7-NEXT: blr 20229; 20230; PWR8-LABEL: ugt_32_v2i64: 20231; PWR8: # %bb.0: 20232; PWR8-NEXT: addis 3, 2, .LCPI162_0@toc@ha 20233; PWR8-NEXT: vpopcntd 2, 2 20234; PWR8-NEXT: addi 3, 3, .LCPI162_0@toc@l 20235; PWR8-NEXT: lxvd2x 35, 0, 3 20236; PWR8-NEXT: vcmpgtud 2, 2, 3 20237; PWR8-NEXT: blr 20238; 20239; PWR9-LABEL: ugt_32_v2i64: 20240; PWR9: # %bb.0: 20241; PWR9-NEXT: addis 3, 2, .LCPI162_0@toc@ha 20242; PWR9-NEXT: vpopcntd 2, 2 20243; PWR9-NEXT: addi 3, 3, .LCPI162_0@toc@l 20244; PWR9-NEXT: lxvx 35, 0, 3 20245; PWR9-NEXT: vcmpgtud 2, 2, 3 20246; PWR9-NEXT: blr 20247 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20248 %3 = icmp ugt <2 x i64> %2, <i64 32, i64 32> 20249 %4 = sext <2 x i1> %3 to <2 x i64> 20250 ret <2 x i64> %4 20251} 20252 20253define <2 x i64> @ult_33_v2i64(<2 x i64> %0) { 20254; PWR5-LABEL: ult_33_v2i64: 20255; PWR5: # %bb.0: 20256; PWR5-NEXT: lis 5, 21845 20257; PWR5-NEXT: lis 6, 13107 20258; PWR5-NEXT: ori 5, 5, 21845 20259; PWR5-NEXT: rotldi 8, 4, 63 20260; PWR5-NEXT: rotldi 9, 3, 63 20261; PWR5-NEXT: rldimi 5, 5, 32, 0 20262; PWR5-NEXT: and 8, 8, 5 20263; PWR5-NEXT: and 5, 9, 5 20264; PWR5-NEXT: ori 6, 6, 13107 20265; PWR5-NEXT: sub 3, 3, 5 20266; PWR5-NEXT: rldimi 6, 6, 32, 0 20267; PWR5-NEXT: sub 4, 4, 8 20268; PWR5-NEXT: and 8, 3, 6 20269; PWR5-NEXT: rotldi 3, 3, 62 20270; PWR5-NEXT: and 3, 3, 6 20271; PWR5-NEXT: lis 7, 3855 20272; PWR5-NEXT: and 5, 4, 6 20273; PWR5-NEXT: rotldi 4, 4, 62 20274; PWR5-NEXT: add 3, 8, 3 20275; PWR5-NEXT: lis 9, 257 20276; PWR5-NEXT: ori 7, 7, 3855 20277; PWR5-NEXT: and 4, 4, 6 20278; PWR5-NEXT: rldicl 6, 3, 60, 4 20279; PWR5-NEXT: ori 9, 9, 257 20280; PWR5-NEXT: rldimi 7, 7, 32, 0 20281; PWR5-NEXT: add 4, 5, 4 20282; PWR5-NEXT: add 3, 3, 6 20283; PWR5-NEXT: rldimi 9, 9, 32, 0 20284; PWR5-NEXT: rldicl 5, 4, 60, 4 20285; PWR5-NEXT: and 3, 3, 7 20286; PWR5-NEXT: add 4, 4, 5 20287; PWR5-NEXT: mulld 3, 3, 9 20288; PWR5-NEXT: and 4, 4, 7 20289; PWR5-NEXT: rldicl 3, 3, 8, 56 20290; PWR5-NEXT: li 5, 33 20291; PWR5-NEXT: mulld 4, 4, 9 20292; PWR5-NEXT: subc 6, 3, 5 20293; PWR5-NEXT: rldicl 4, 4, 8, 56 20294; PWR5-NEXT: subfe 3, 3, 3 20295; PWR5-NEXT: subc 5, 4, 5 20296; PWR5-NEXT: subfe 4, 4, 4 20297; PWR5-NEXT: blr 20298; 20299; PWR6-LABEL: ult_33_v2i64: 20300; PWR6: # %bb.0: 20301; PWR6-NEXT: lis 5, 21845 20302; PWR6-NEXT: lis 6, 13107 20303; PWR6-NEXT: ori 5, 5, 21845 20304; PWR6-NEXT: rotldi 8, 4, 63 20305; PWR6-NEXT: rotldi 9, 3, 63 20306; PWR6-NEXT: rldimi 5, 5, 32, 0 20307; PWR6-NEXT: and 8, 8, 5 20308; PWR6-NEXT: and 5, 9, 5 20309; PWR6-NEXT: ori 6, 6, 13107 20310; PWR6-NEXT: sub 3, 3, 5 20311; PWR6-NEXT: rldimi 6, 6, 32, 0 20312; PWR6-NEXT: sub 4, 4, 8 20313; PWR6-NEXT: and 8, 3, 6 20314; PWR6-NEXT: rotldi 3, 3, 62 20315; PWR6-NEXT: and 3, 3, 6 20316; PWR6-NEXT: lis 7, 3855 20317; PWR6-NEXT: and 5, 4, 6 20318; PWR6-NEXT: rotldi 4, 4, 62 20319; PWR6-NEXT: add 3, 8, 3 20320; PWR6-NEXT: lis 9, 257 20321; PWR6-NEXT: ori 7, 7, 3855 20322; PWR6-NEXT: and 4, 4, 6 20323; PWR6-NEXT: rldicl 6, 3, 60, 4 20324; PWR6-NEXT: ori 9, 9, 257 20325; PWR6-NEXT: rldimi 7, 7, 32, 0 20326; PWR6-NEXT: add 4, 5, 4 20327; PWR6-NEXT: add 3, 3, 6 20328; PWR6-NEXT: rldimi 9, 9, 32, 0 20329; PWR6-NEXT: rldicl 5, 4, 60, 4 20330; PWR6-NEXT: and 3, 3, 7 20331; PWR6-NEXT: add 4, 4, 5 20332; PWR6-NEXT: mulld 3, 3, 9 20333; PWR6-NEXT: and 4, 4, 7 20334; PWR6-NEXT: rldicl 3, 3, 8, 56 20335; PWR6-NEXT: li 5, 33 20336; PWR6-NEXT: mulld 4, 4, 9 20337; PWR6-NEXT: subc 6, 3, 5 20338; PWR6-NEXT: rldicl 4, 4, 8, 56 20339; PWR6-NEXT: subfe 3, 3, 3 20340; PWR6-NEXT: subc 5, 4, 5 20341; PWR6-NEXT: subfe 4, 4, 4 20342; PWR6-NEXT: blr 20343; 20344; PWR7-LABEL: ult_33_v2i64: 20345; PWR7: # %bb.0: 20346; PWR7-NEXT: addi 3, 1, -32 20347; PWR7-NEXT: li 5, 0 20348; PWR7-NEXT: li 6, -1 20349; PWR7-NEXT: stxvd2x 34, 0, 3 20350; PWR7-NEXT: ld 3, -24(1) 20351; PWR7-NEXT: ld 4, -32(1) 20352; PWR7-NEXT: popcntd 3, 3 20353; PWR7-NEXT: popcntd 4, 4 20354; PWR7-NEXT: cmpldi 3, 33 20355; PWR7-NEXT: isellt 3, 6, 5 20356; PWR7-NEXT: cmpldi 4, 33 20357; PWR7-NEXT: isellt 4, 6, 5 20358; PWR7-NEXT: std 3, -8(1) 20359; PWR7-NEXT: addi 3, 1, -16 20360; PWR7-NEXT: std 4, -16(1) 20361; PWR7-NEXT: lxvd2x 34, 0, 3 20362; PWR7-NEXT: blr 20363; 20364; PWR8-LABEL: ult_33_v2i64: 20365; PWR8: # %bb.0: 20366; PWR8-NEXT: addis 3, 2, .LCPI163_0@toc@ha 20367; PWR8-NEXT: vpopcntd 2, 2 20368; PWR8-NEXT: addi 3, 3, .LCPI163_0@toc@l 20369; PWR8-NEXT: lxvd2x 35, 0, 3 20370; PWR8-NEXT: vcmpgtud 2, 3, 2 20371; PWR8-NEXT: blr 20372; 20373; PWR9-LABEL: ult_33_v2i64: 20374; PWR9: # %bb.0: 20375; PWR9-NEXT: addis 3, 2, .LCPI163_0@toc@ha 20376; PWR9-NEXT: vpopcntd 2, 2 20377; PWR9-NEXT: addi 3, 3, .LCPI163_0@toc@l 20378; PWR9-NEXT: lxvx 35, 0, 3 20379; PWR9-NEXT: vcmpgtud 2, 3, 2 20380; PWR9-NEXT: blr 20381 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20382 %3 = icmp ult <2 x i64> %2, <i64 33, i64 33> 20383 %4 = sext <2 x i1> %3 to <2 x i64> 20384 ret <2 x i64> %4 20385} 20386 20387define <2 x i64> @ugt_33_v2i64(<2 x i64> %0) { 20388; PWR5-LABEL: ugt_33_v2i64: 20389; PWR5: # %bb.0: 20390; PWR5-NEXT: lis 5, 21845 20391; PWR5-NEXT: lis 6, 13107 20392; PWR5-NEXT: ori 5, 5, 21845 20393; PWR5-NEXT: rotldi 8, 4, 63 20394; PWR5-NEXT: rotldi 9, 3, 63 20395; PWR5-NEXT: rldimi 5, 5, 32, 0 20396; PWR5-NEXT: and 8, 8, 5 20397; PWR5-NEXT: and 5, 9, 5 20398; PWR5-NEXT: ori 6, 6, 13107 20399; PWR5-NEXT: sub 3, 3, 5 20400; PWR5-NEXT: rldimi 6, 6, 32, 0 20401; PWR5-NEXT: sub 4, 4, 8 20402; PWR5-NEXT: and 8, 3, 6 20403; PWR5-NEXT: rotldi 3, 3, 62 20404; PWR5-NEXT: and 3, 3, 6 20405; PWR5-NEXT: lis 7, 3855 20406; PWR5-NEXT: and 5, 4, 6 20407; PWR5-NEXT: rotldi 4, 4, 62 20408; PWR5-NEXT: add 3, 8, 3 20409; PWR5-NEXT: lis 9, 257 20410; PWR5-NEXT: ori 7, 7, 3855 20411; PWR5-NEXT: and 4, 4, 6 20412; PWR5-NEXT: rldicl 6, 3, 60, 4 20413; PWR5-NEXT: ori 9, 9, 257 20414; PWR5-NEXT: rldimi 7, 7, 32, 0 20415; PWR5-NEXT: add 4, 5, 4 20416; PWR5-NEXT: add 3, 3, 6 20417; PWR5-NEXT: rldimi 9, 9, 32, 0 20418; PWR5-NEXT: rldicl 5, 4, 60, 4 20419; PWR5-NEXT: and 3, 3, 7 20420; PWR5-NEXT: add 4, 4, 5 20421; PWR5-NEXT: mulld 3, 3, 9 20422; PWR5-NEXT: and 4, 4, 7 20423; PWR5-NEXT: rldicl 3, 3, 8, 56 20424; PWR5-NEXT: mulld 4, 4, 9 20425; PWR5-NEXT: li 5, 33 20426; PWR5-NEXT: subfic 3, 3, 33 20427; PWR5-NEXT: rldicl 4, 4, 8, 56 20428; PWR5-NEXT: subfe 3, 5, 5 20429; PWR5-NEXT: subfic 4, 4, 33 20430; PWR5-NEXT: subfe 4, 5, 5 20431; PWR5-NEXT: blr 20432; 20433; PWR6-LABEL: ugt_33_v2i64: 20434; PWR6: # %bb.0: 20435; PWR6-NEXT: lis 5, 21845 20436; PWR6-NEXT: lis 6, 13107 20437; PWR6-NEXT: ori 5, 5, 21845 20438; PWR6-NEXT: rotldi 8, 4, 63 20439; PWR6-NEXT: rotldi 9, 3, 63 20440; PWR6-NEXT: rldimi 5, 5, 32, 0 20441; PWR6-NEXT: and 8, 8, 5 20442; PWR6-NEXT: and 5, 9, 5 20443; PWR6-NEXT: ori 6, 6, 13107 20444; PWR6-NEXT: sub 3, 3, 5 20445; PWR6-NEXT: rldimi 6, 6, 32, 0 20446; PWR6-NEXT: sub 4, 4, 8 20447; PWR6-NEXT: and 8, 3, 6 20448; PWR6-NEXT: rotldi 3, 3, 62 20449; PWR6-NEXT: and 3, 3, 6 20450; PWR6-NEXT: lis 7, 3855 20451; PWR6-NEXT: and 5, 4, 6 20452; PWR6-NEXT: rotldi 4, 4, 62 20453; PWR6-NEXT: add 3, 8, 3 20454; PWR6-NEXT: lis 9, 257 20455; PWR6-NEXT: ori 7, 7, 3855 20456; PWR6-NEXT: and 4, 4, 6 20457; PWR6-NEXT: rldicl 6, 3, 60, 4 20458; PWR6-NEXT: ori 9, 9, 257 20459; PWR6-NEXT: rldimi 7, 7, 32, 0 20460; PWR6-NEXT: add 4, 5, 4 20461; PWR6-NEXT: add 3, 3, 6 20462; PWR6-NEXT: rldimi 9, 9, 32, 0 20463; PWR6-NEXT: rldicl 5, 4, 60, 4 20464; PWR6-NEXT: and 3, 3, 7 20465; PWR6-NEXT: add 4, 4, 5 20466; PWR6-NEXT: mulld 3, 3, 9 20467; PWR6-NEXT: and 4, 4, 7 20468; PWR6-NEXT: rldicl 3, 3, 8, 56 20469; PWR6-NEXT: mulld 4, 4, 9 20470; PWR6-NEXT: li 5, 33 20471; PWR6-NEXT: subfic 3, 3, 33 20472; PWR6-NEXT: rldicl 4, 4, 8, 56 20473; PWR6-NEXT: subfe 3, 5, 5 20474; PWR6-NEXT: subfic 4, 4, 33 20475; PWR6-NEXT: subfe 4, 5, 5 20476; PWR6-NEXT: blr 20477; 20478; PWR7-LABEL: ugt_33_v2i64: 20479; PWR7: # %bb.0: 20480; PWR7-NEXT: addi 3, 1, -32 20481; PWR7-NEXT: li 5, 0 20482; PWR7-NEXT: li 6, -1 20483; PWR7-NEXT: stxvd2x 34, 0, 3 20484; PWR7-NEXT: ld 3, -24(1) 20485; PWR7-NEXT: ld 4, -32(1) 20486; PWR7-NEXT: popcntd 3, 3 20487; PWR7-NEXT: popcntd 4, 4 20488; PWR7-NEXT: cmpldi 3, 33 20489; PWR7-NEXT: iselgt 3, 6, 5 20490; PWR7-NEXT: cmpldi 4, 33 20491; PWR7-NEXT: iselgt 4, 6, 5 20492; PWR7-NEXT: std 3, -8(1) 20493; PWR7-NEXT: addi 3, 1, -16 20494; PWR7-NEXT: std 4, -16(1) 20495; PWR7-NEXT: lxvd2x 34, 0, 3 20496; PWR7-NEXT: blr 20497; 20498; PWR8-LABEL: ugt_33_v2i64: 20499; PWR8: # %bb.0: 20500; PWR8-NEXT: addis 3, 2, .LCPI164_0@toc@ha 20501; PWR8-NEXT: vpopcntd 2, 2 20502; PWR8-NEXT: addi 3, 3, .LCPI164_0@toc@l 20503; PWR8-NEXT: lxvd2x 35, 0, 3 20504; PWR8-NEXT: vcmpgtud 2, 2, 3 20505; PWR8-NEXT: blr 20506; 20507; PWR9-LABEL: ugt_33_v2i64: 20508; PWR9: # %bb.0: 20509; PWR9-NEXT: addis 3, 2, .LCPI164_0@toc@ha 20510; PWR9-NEXT: vpopcntd 2, 2 20511; PWR9-NEXT: addi 3, 3, .LCPI164_0@toc@l 20512; PWR9-NEXT: lxvx 35, 0, 3 20513; PWR9-NEXT: vcmpgtud 2, 2, 3 20514; PWR9-NEXT: blr 20515 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20516 %3 = icmp ugt <2 x i64> %2, <i64 33, i64 33> 20517 %4 = sext <2 x i1> %3 to <2 x i64> 20518 ret <2 x i64> %4 20519} 20520 20521define <2 x i64> @ult_34_v2i64(<2 x i64> %0) { 20522; PWR5-LABEL: ult_34_v2i64: 20523; PWR5: # %bb.0: 20524; PWR5-NEXT: lis 5, 21845 20525; PWR5-NEXT: lis 6, 13107 20526; PWR5-NEXT: ori 5, 5, 21845 20527; PWR5-NEXT: rotldi 8, 4, 63 20528; PWR5-NEXT: rotldi 9, 3, 63 20529; PWR5-NEXT: rldimi 5, 5, 32, 0 20530; PWR5-NEXT: and 8, 8, 5 20531; PWR5-NEXT: and 5, 9, 5 20532; PWR5-NEXT: ori 6, 6, 13107 20533; PWR5-NEXT: sub 3, 3, 5 20534; PWR5-NEXT: rldimi 6, 6, 32, 0 20535; PWR5-NEXT: sub 4, 4, 8 20536; PWR5-NEXT: and 8, 3, 6 20537; PWR5-NEXT: rotldi 3, 3, 62 20538; PWR5-NEXT: and 3, 3, 6 20539; PWR5-NEXT: lis 7, 3855 20540; PWR5-NEXT: and 5, 4, 6 20541; PWR5-NEXT: rotldi 4, 4, 62 20542; PWR5-NEXT: add 3, 8, 3 20543; PWR5-NEXT: lis 9, 257 20544; PWR5-NEXT: ori 7, 7, 3855 20545; PWR5-NEXT: and 4, 4, 6 20546; PWR5-NEXT: rldicl 6, 3, 60, 4 20547; PWR5-NEXT: ori 9, 9, 257 20548; PWR5-NEXT: rldimi 7, 7, 32, 0 20549; PWR5-NEXT: add 4, 5, 4 20550; PWR5-NEXT: add 3, 3, 6 20551; PWR5-NEXT: rldimi 9, 9, 32, 0 20552; PWR5-NEXT: rldicl 5, 4, 60, 4 20553; PWR5-NEXT: and 3, 3, 7 20554; PWR5-NEXT: add 4, 4, 5 20555; PWR5-NEXT: mulld 3, 3, 9 20556; PWR5-NEXT: and 4, 4, 7 20557; PWR5-NEXT: rldicl 3, 3, 8, 56 20558; PWR5-NEXT: li 5, 34 20559; PWR5-NEXT: mulld 4, 4, 9 20560; PWR5-NEXT: subc 6, 3, 5 20561; PWR5-NEXT: rldicl 4, 4, 8, 56 20562; PWR5-NEXT: subfe 3, 3, 3 20563; PWR5-NEXT: subc 5, 4, 5 20564; PWR5-NEXT: subfe 4, 4, 4 20565; PWR5-NEXT: blr 20566; 20567; PWR6-LABEL: ult_34_v2i64: 20568; PWR6: # %bb.0: 20569; PWR6-NEXT: lis 5, 21845 20570; PWR6-NEXT: lis 6, 13107 20571; PWR6-NEXT: ori 5, 5, 21845 20572; PWR6-NEXT: rotldi 8, 4, 63 20573; PWR6-NEXT: rotldi 9, 3, 63 20574; PWR6-NEXT: rldimi 5, 5, 32, 0 20575; PWR6-NEXT: and 8, 8, 5 20576; PWR6-NEXT: and 5, 9, 5 20577; PWR6-NEXT: ori 6, 6, 13107 20578; PWR6-NEXT: sub 3, 3, 5 20579; PWR6-NEXT: rldimi 6, 6, 32, 0 20580; PWR6-NEXT: sub 4, 4, 8 20581; PWR6-NEXT: and 8, 3, 6 20582; PWR6-NEXT: rotldi 3, 3, 62 20583; PWR6-NEXT: and 3, 3, 6 20584; PWR6-NEXT: lis 7, 3855 20585; PWR6-NEXT: and 5, 4, 6 20586; PWR6-NEXT: rotldi 4, 4, 62 20587; PWR6-NEXT: add 3, 8, 3 20588; PWR6-NEXT: lis 9, 257 20589; PWR6-NEXT: ori 7, 7, 3855 20590; PWR6-NEXT: and 4, 4, 6 20591; PWR6-NEXT: rldicl 6, 3, 60, 4 20592; PWR6-NEXT: ori 9, 9, 257 20593; PWR6-NEXT: rldimi 7, 7, 32, 0 20594; PWR6-NEXT: add 4, 5, 4 20595; PWR6-NEXT: add 3, 3, 6 20596; PWR6-NEXT: rldimi 9, 9, 32, 0 20597; PWR6-NEXT: rldicl 5, 4, 60, 4 20598; PWR6-NEXT: and 3, 3, 7 20599; PWR6-NEXT: add 4, 4, 5 20600; PWR6-NEXT: mulld 3, 3, 9 20601; PWR6-NEXT: and 4, 4, 7 20602; PWR6-NEXT: rldicl 3, 3, 8, 56 20603; PWR6-NEXT: li 5, 34 20604; PWR6-NEXT: mulld 4, 4, 9 20605; PWR6-NEXT: subc 6, 3, 5 20606; PWR6-NEXT: rldicl 4, 4, 8, 56 20607; PWR6-NEXT: subfe 3, 3, 3 20608; PWR6-NEXT: subc 5, 4, 5 20609; PWR6-NEXT: subfe 4, 4, 4 20610; PWR6-NEXT: blr 20611; 20612; PWR7-LABEL: ult_34_v2i64: 20613; PWR7: # %bb.0: 20614; PWR7-NEXT: addi 3, 1, -32 20615; PWR7-NEXT: li 5, 0 20616; PWR7-NEXT: li 6, -1 20617; PWR7-NEXT: stxvd2x 34, 0, 3 20618; PWR7-NEXT: ld 3, -24(1) 20619; PWR7-NEXT: ld 4, -32(1) 20620; PWR7-NEXT: popcntd 3, 3 20621; PWR7-NEXT: popcntd 4, 4 20622; PWR7-NEXT: cmpldi 3, 34 20623; PWR7-NEXT: isellt 3, 6, 5 20624; PWR7-NEXT: cmpldi 4, 34 20625; PWR7-NEXT: isellt 4, 6, 5 20626; PWR7-NEXT: std 3, -8(1) 20627; PWR7-NEXT: addi 3, 1, -16 20628; PWR7-NEXT: std 4, -16(1) 20629; PWR7-NEXT: lxvd2x 34, 0, 3 20630; PWR7-NEXT: blr 20631; 20632; PWR8-LABEL: ult_34_v2i64: 20633; PWR8: # %bb.0: 20634; PWR8-NEXT: addis 3, 2, .LCPI165_0@toc@ha 20635; PWR8-NEXT: vpopcntd 2, 2 20636; PWR8-NEXT: addi 3, 3, .LCPI165_0@toc@l 20637; PWR8-NEXT: lxvd2x 35, 0, 3 20638; PWR8-NEXT: vcmpgtud 2, 3, 2 20639; PWR8-NEXT: blr 20640; 20641; PWR9-LABEL: ult_34_v2i64: 20642; PWR9: # %bb.0: 20643; PWR9-NEXT: addis 3, 2, .LCPI165_0@toc@ha 20644; PWR9-NEXT: vpopcntd 2, 2 20645; PWR9-NEXT: addi 3, 3, .LCPI165_0@toc@l 20646; PWR9-NEXT: lxvx 35, 0, 3 20647; PWR9-NEXT: vcmpgtud 2, 3, 2 20648; PWR9-NEXT: blr 20649 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20650 %3 = icmp ult <2 x i64> %2, <i64 34, i64 34> 20651 %4 = sext <2 x i1> %3 to <2 x i64> 20652 ret <2 x i64> %4 20653} 20654 20655define <2 x i64> @ugt_34_v2i64(<2 x i64> %0) { 20656; PWR5-LABEL: ugt_34_v2i64: 20657; PWR5: # %bb.0: 20658; PWR5-NEXT: lis 5, 21845 20659; PWR5-NEXT: lis 6, 13107 20660; PWR5-NEXT: ori 5, 5, 21845 20661; PWR5-NEXT: rotldi 8, 4, 63 20662; PWR5-NEXT: rotldi 9, 3, 63 20663; PWR5-NEXT: rldimi 5, 5, 32, 0 20664; PWR5-NEXT: and 8, 8, 5 20665; PWR5-NEXT: and 5, 9, 5 20666; PWR5-NEXT: ori 6, 6, 13107 20667; PWR5-NEXT: sub 3, 3, 5 20668; PWR5-NEXT: rldimi 6, 6, 32, 0 20669; PWR5-NEXT: sub 4, 4, 8 20670; PWR5-NEXT: and 8, 3, 6 20671; PWR5-NEXT: rotldi 3, 3, 62 20672; PWR5-NEXT: and 3, 3, 6 20673; PWR5-NEXT: lis 7, 3855 20674; PWR5-NEXT: and 5, 4, 6 20675; PWR5-NEXT: rotldi 4, 4, 62 20676; PWR5-NEXT: add 3, 8, 3 20677; PWR5-NEXT: lis 9, 257 20678; PWR5-NEXT: ori 7, 7, 3855 20679; PWR5-NEXT: and 4, 4, 6 20680; PWR5-NEXT: rldicl 6, 3, 60, 4 20681; PWR5-NEXT: ori 9, 9, 257 20682; PWR5-NEXT: rldimi 7, 7, 32, 0 20683; PWR5-NEXT: add 4, 5, 4 20684; PWR5-NEXT: add 3, 3, 6 20685; PWR5-NEXT: rldimi 9, 9, 32, 0 20686; PWR5-NEXT: rldicl 5, 4, 60, 4 20687; PWR5-NEXT: and 3, 3, 7 20688; PWR5-NEXT: add 4, 4, 5 20689; PWR5-NEXT: mulld 3, 3, 9 20690; PWR5-NEXT: and 4, 4, 7 20691; PWR5-NEXT: rldicl 3, 3, 8, 56 20692; PWR5-NEXT: mulld 4, 4, 9 20693; PWR5-NEXT: li 5, 34 20694; PWR5-NEXT: subfic 3, 3, 34 20695; PWR5-NEXT: rldicl 4, 4, 8, 56 20696; PWR5-NEXT: subfe 3, 5, 5 20697; PWR5-NEXT: subfic 4, 4, 34 20698; PWR5-NEXT: subfe 4, 5, 5 20699; PWR5-NEXT: blr 20700; 20701; PWR6-LABEL: ugt_34_v2i64: 20702; PWR6: # %bb.0: 20703; PWR6-NEXT: lis 5, 21845 20704; PWR6-NEXT: lis 6, 13107 20705; PWR6-NEXT: ori 5, 5, 21845 20706; PWR6-NEXT: rotldi 8, 4, 63 20707; PWR6-NEXT: rotldi 9, 3, 63 20708; PWR6-NEXT: rldimi 5, 5, 32, 0 20709; PWR6-NEXT: and 8, 8, 5 20710; PWR6-NEXT: and 5, 9, 5 20711; PWR6-NEXT: ori 6, 6, 13107 20712; PWR6-NEXT: sub 3, 3, 5 20713; PWR6-NEXT: rldimi 6, 6, 32, 0 20714; PWR6-NEXT: sub 4, 4, 8 20715; PWR6-NEXT: and 8, 3, 6 20716; PWR6-NEXT: rotldi 3, 3, 62 20717; PWR6-NEXT: and 3, 3, 6 20718; PWR6-NEXT: lis 7, 3855 20719; PWR6-NEXT: and 5, 4, 6 20720; PWR6-NEXT: rotldi 4, 4, 62 20721; PWR6-NEXT: add 3, 8, 3 20722; PWR6-NEXT: lis 9, 257 20723; PWR6-NEXT: ori 7, 7, 3855 20724; PWR6-NEXT: and 4, 4, 6 20725; PWR6-NEXT: rldicl 6, 3, 60, 4 20726; PWR6-NEXT: ori 9, 9, 257 20727; PWR6-NEXT: rldimi 7, 7, 32, 0 20728; PWR6-NEXT: add 4, 5, 4 20729; PWR6-NEXT: add 3, 3, 6 20730; PWR6-NEXT: rldimi 9, 9, 32, 0 20731; PWR6-NEXT: rldicl 5, 4, 60, 4 20732; PWR6-NEXT: and 3, 3, 7 20733; PWR6-NEXT: add 4, 4, 5 20734; PWR6-NEXT: mulld 3, 3, 9 20735; PWR6-NEXT: and 4, 4, 7 20736; PWR6-NEXT: rldicl 3, 3, 8, 56 20737; PWR6-NEXT: mulld 4, 4, 9 20738; PWR6-NEXT: li 5, 34 20739; PWR6-NEXT: subfic 3, 3, 34 20740; PWR6-NEXT: rldicl 4, 4, 8, 56 20741; PWR6-NEXT: subfe 3, 5, 5 20742; PWR6-NEXT: subfic 4, 4, 34 20743; PWR6-NEXT: subfe 4, 5, 5 20744; PWR6-NEXT: blr 20745; 20746; PWR7-LABEL: ugt_34_v2i64: 20747; PWR7: # %bb.0: 20748; PWR7-NEXT: addi 3, 1, -32 20749; PWR7-NEXT: li 5, 0 20750; PWR7-NEXT: li 6, -1 20751; PWR7-NEXT: stxvd2x 34, 0, 3 20752; PWR7-NEXT: ld 3, -24(1) 20753; PWR7-NEXT: ld 4, -32(1) 20754; PWR7-NEXT: popcntd 3, 3 20755; PWR7-NEXT: popcntd 4, 4 20756; PWR7-NEXT: cmpldi 3, 34 20757; PWR7-NEXT: iselgt 3, 6, 5 20758; PWR7-NEXT: cmpldi 4, 34 20759; PWR7-NEXT: iselgt 4, 6, 5 20760; PWR7-NEXT: std 3, -8(1) 20761; PWR7-NEXT: addi 3, 1, -16 20762; PWR7-NEXT: std 4, -16(1) 20763; PWR7-NEXT: lxvd2x 34, 0, 3 20764; PWR7-NEXT: blr 20765; 20766; PWR8-LABEL: ugt_34_v2i64: 20767; PWR8: # %bb.0: 20768; PWR8-NEXT: addis 3, 2, .LCPI166_0@toc@ha 20769; PWR8-NEXT: vpopcntd 2, 2 20770; PWR8-NEXT: addi 3, 3, .LCPI166_0@toc@l 20771; PWR8-NEXT: lxvd2x 35, 0, 3 20772; PWR8-NEXT: vcmpgtud 2, 2, 3 20773; PWR8-NEXT: blr 20774; 20775; PWR9-LABEL: ugt_34_v2i64: 20776; PWR9: # %bb.0: 20777; PWR9-NEXT: addis 3, 2, .LCPI166_0@toc@ha 20778; PWR9-NEXT: vpopcntd 2, 2 20779; PWR9-NEXT: addi 3, 3, .LCPI166_0@toc@l 20780; PWR9-NEXT: lxvx 35, 0, 3 20781; PWR9-NEXT: vcmpgtud 2, 2, 3 20782; PWR9-NEXT: blr 20783 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20784 %3 = icmp ugt <2 x i64> %2, <i64 34, i64 34> 20785 %4 = sext <2 x i1> %3 to <2 x i64> 20786 ret <2 x i64> %4 20787} 20788 20789define <2 x i64> @ult_35_v2i64(<2 x i64> %0) { 20790; PWR5-LABEL: ult_35_v2i64: 20791; PWR5: # %bb.0: 20792; PWR5-NEXT: lis 5, 21845 20793; PWR5-NEXT: lis 6, 13107 20794; PWR5-NEXT: ori 5, 5, 21845 20795; PWR5-NEXT: rotldi 8, 4, 63 20796; PWR5-NEXT: rotldi 9, 3, 63 20797; PWR5-NEXT: rldimi 5, 5, 32, 0 20798; PWR5-NEXT: and 8, 8, 5 20799; PWR5-NEXT: and 5, 9, 5 20800; PWR5-NEXT: ori 6, 6, 13107 20801; PWR5-NEXT: sub 3, 3, 5 20802; PWR5-NEXT: rldimi 6, 6, 32, 0 20803; PWR5-NEXT: sub 4, 4, 8 20804; PWR5-NEXT: and 8, 3, 6 20805; PWR5-NEXT: rotldi 3, 3, 62 20806; PWR5-NEXT: and 3, 3, 6 20807; PWR5-NEXT: lis 7, 3855 20808; PWR5-NEXT: and 5, 4, 6 20809; PWR5-NEXT: rotldi 4, 4, 62 20810; PWR5-NEXT: add 3, 8, 3 20811; PWR5-NEXT: lis 9, 257 20812; PWR5-NEXT: ori 7, 7, 3855 20813; PWR5-NEXT: and 4, 4, 6 20814; PWR5-NEXT: rldicl 6, 3, 60, 4 20815; PWR5-NEXT: ori 9, 9, 257 20816; PWR5-NEXT: rldimi 7, 7, 32, 0 20817; PWR5-NEXT: add 4, 5, 4 20818; PWR5-NEXT: add 3, 3, 6 20819; PWR5-NEXT: rldimi 9, 9, 32, 0 20820; PWR5-NEXT: rldicl 5, 4, 60, 4 20821; PWR5-NEXT: and 3, 3, 7 20822; PWR5-NEXT: add 4, 4, 5 20823; PWR5-NEXT: mulld 3, 3, 9 20824; PWR5-NEXT: and 4, 4, 7 20825; PWR5-NEXT: rldicl 3, 3, 8, 56 20826; PWR5-NEXT: li 5, 35 20827; PWR5-NEXT: mulld 4, 4, 9 20828; PWR5-NEXT: subc 6, 3, 5 20829; PWR5-NEXT: rldicl 4, 4, 8, 56 20830; PWR5-NEXT: subfe 3, 3, 3 20831; PWR5-NEXT: subc 5, 4, 5 20832; PWR5-NEXT: subfe 4, 4, 4 20833; PWR5-NEXT: blr 20834; 20835; PWR6-LABEL: ult_35_v2i64: 20836; PWR6: # %bb.0: 20837; PWR6-NEXT: lis 5, 21845 20838; PWR6-NEXT: lis 6, 13107 20839; PWR6-NEXT: ori 5, 5, 21845 20840; PWR6-NEXT: rotldi 8, 4, 63 20841; PWR6-NEXT: rotldi 9, 3, 63 20842; PWR6-NEXT: rldimi 5, 5, 32, 0 20843; PWR6-NEXT: and 8, 8, 5 20844; PWR6-NEXT: and 5, 9, 5 20845; PWR6-NEXT: ori 6, 6, 13107 20846; PWR6-NEXT: sub 3, 3, 5 20847; PWR6-NEXT: rldimi 6, 6, 32, 0 20848; PWR6-NEXT: sub 4, 4, 8 20849; PWR6-NEXT: and 8, 3, 6 20850; PWR6-NEXT: rotldi 3, 3, 62 20851; PWR6-NEXT: and 3, 3, 6 20852; PWR6-NEXT: lis 7, 3855 20853; PWR6-NEXT: and 5, 4, 6 20854; PWR6-NEXT: rotldi 4, 4, 62 20855; PWR6-NEXT: add 3, 8, 3 20856; PWR6-NEXT: lis 9, 257 20857; PWR6-NEXT: ori 7, 7, 3855 20858; PWR6-NEXT: and 4, 4, 6 20859; PWR6-NEXT: rldicl 6, 3, 60, 4 20860; PWR6-NEXT: ori 9, 9, 257 20861; PWR6-NEXT: rldimi 7, 7, 32, 0 20862; PWR6-NEXT: add 4, 5, 4 20863; PWR6-NEXT: add 3, 3, 6 20864; PWR6-NEXT: rldimi 9, 9, 32, 0 20865; PWR6-NEXT: rldicl 5, 4, 60, 4 20866; PWR6-NEXT: and 3, 3, 7 20867; PWR6-NEXT: add 4, 4, 5 20868; PWR6-NEXT: mulld 3, 3, 9 20869; PWR6-NEXT: and 4, 4, 7 20870; PWR6-NEXT: rldicl 3, 3, 8, 56 20871; PWR6-NEXT: li 5, 35 20872; PWR6-NEXT: mulld 4, 4, 9 20873; PWR6-NEXT: subc 6, 3, 5 20874; PWR6-NEXT: rldicl 4, 4, 8, 56 20875; PWR6-NEXT: subfe 3, 3, 3 20876; PWR6-NEXT: subc 5, 4, 5 20877; PWR6-NEXT: subfe 4, 4, 4 20878; PWR6-NEXT: blr 20879; 20880; PWR7-LABEL: ult_35_v2i64: 20881; PWR7: # %bb.0: 20882; PWR7-NEXT: addi 3, 1, -32 20883; PWR7-NEXT: li 5, 0 20884; PWR7-NEXT: li 6, -1 20885; PWR7-NEXT: stxvd2x 34, 0, 3 20886; PWR7-NEXT: ld 3, -24(1) 20887; PWR7-NEXT: ld 4, -32(1) 20888; PWR7-NEXT: popcntd 3, 3 20889; PWR7-NEXT: popcntd 4, 4 20890; PWR7-NEXT: cmpldi 3, 35 20891; PWR7-NEXT: isellt 3, 6, 5 20892; PWR7-NEXT: cmpldi 4, 35 20893; PWR7-NEXT: isellt 4, 6, 5 20894; PWR7-NEXT: std 3, -8(1) 20895; PWR7-NEXT: addi 3, 1, -16 20896; PWR7-NEXT: std 4, -16(1) 20897; PWR7-NEXT: lxvd2x 34, 0, 3 20898; PWR7-NEXT: blr 20899; 20900; PWR8-LABEL: ult_35_v2i64: 20901; PWR8: # %bb.0: 20902; PWR8-NEXT: addis 3, 2, .LCPI167_0@toc@ha 20903; PWR8-NEXT: vpopcntd 2, 2 20904; PWR8-NEXT: addi 3, 3, .LCPI167_0@toc@l 20905; PWR8-NEXT: lxvd2x 35, 0, 3 20906; PWR8-NEXT: vcmpgtud 2, 3, 2 20907; PWR8-NEXT: blr 20908; 20909; PWR9-LABEL: ult_35_v2i64: 20910; PWR9: # %bb.0: 20911; PWR9-NEXT: addis 3, 2, .LCPI167_0@toc@ha 20912; PWR9-NEXT: vpopcntd 2, 2 20913; PWR9-NEXT: addi 3, 3, .LCPI167_0@toc@l 20914; PWR9-NEXT: lxvx 35, 0, 3 20915; PWR9-NEXT: vcmpgtud 2, 3, 2 20916; PWR9-NEXT: blr 20917 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20918 %3 = icmp ult <2 x i64> %2, <i64 35, i64 35> 20919 %4 = sext <2 x i1> %3 to <2 x i64> 20920 ret <2 x i64> %4 20921} 20922 20923define <2 x i64> @ugt_35_v2i64(<2 x i64> %0) { 20924; PWR5-LABEL: ugt_35_v2i64: 20925; PWR5: # %bb.0: 20926; PWR5-NEXT: lis 5, 21845 20927; PWR5-NEXT: lis 6, 13107 20928; PWR5-NEXT: ori 5, 5, 21845 20929; PWR5-NEXT: rotldi 8, 4, 63 20930; PWR5-NEXT: rotldi 9, 3, 63 20931; PWR5-NEXT: rldimi 5, 5, 32, 0 20932; PWR5-NEXT: and 8, 8, 5 20933; PWR5-NEXT: and 5, 9, 5 20934; PWR5-NEXT: ori 6, 6, 13107 20935; PWR5-NEXT: sub 3, 3, 5 20936; PWR5-NEXT: rldimi 6, 6, 32, 0 20937; PWR5-NEXT: sub 4, 4, 8 20938; PWR5-NEXT: and 8, 3, 6 20939; PWR5-NEXT: rotldi 3, 3, 62 20940; PWR5-NEXT: and 3, 3, 6 20941; PWR5-NEXT: lis 7, 3855 20942; PWR5-NEXT: and 5, 4, 6 20943; PWR5-NEXT: rotldi 4, 4, 62 20944; PWR5-NEXT: add 3, 8, 3 20945; PWR5-NEXT: lis 9, 257 20946; PWR5-NEXT: ori 7, 7, 3855 20947; PWR5-NEXT: and 4, 4, 6 20948; PWR5-NEXT: rldicl 6, 3, 60, 4 20949; PWR5-NEXT: ori 9, 9, 257 20950; PWR5-NEXT: rldimi 7, 7, 32, 0 20951; PWR5-NEXT: add 4, 5, 4 20952; PWR5-NEXT: add 3, 3, 6 20953; PWR5-NEXT: rldimi 9, 9, 32, 0 20954; PWR5-NEXT: rldicl 5, 4, 60, 4 20955; PWR5-NEXT: and 3, 3, 7 20956; PWR5-NEXT: add 4, 4, 5 20957; PWR5-NEXT: mulld 3, 3, 9 20958; PWR5-NEXT: and 4, 4, 7 20959; PWR5-NEXT: rldicl 3, 3, 8, 56 20960; PWR5-NEXT: mulld 4, 4, 9 20961; PWR5-NEXT: li 5, 35 20962; PWR5-NEXT: subfic 3, 3, 35 20963; PWR5-NEXT: rldicl 4, 4, 8, 56 20964; PWR5-NEXT: subfe 3, 5, 5 20965; PWR5-NEXT: subfic 4, 4, 35 20966; PWR5-NEXT: subfe 4, 5, 5 20967; PWR5-NEXT: blr 20968; 20969; PWR6-LABEL: ugt_35_v2i64: 20970; PWR6: # %bb.0: 20971; PWR6-NEXT: lis 5, 21845 20972; PWR6-NEXT: lis 6, 13107 20973; PWR6-NEXT: ori 5, 5, 21845 20974; PWR6-NEXT: rotldi 8, 4, 63 20975; PWR6-NEXT: rotldi 9, 3, 63 20976; PWR6-NEXT: rldimi 5, 5, 32, 0 20977; PWR6-NEXT: and 8, 8, 5 20978; PWR6-NEXT: and 5, 9, 5 20979; PWR6-NEXT: ori 6, 6, 13107 20980; PWR6-NEXT: sub 3, 3, 5 20981; PWR6-NEXT: rldimi 6, 6, 32, 0 20982; PWR6-NEXT: sub 4, 4, 8 20983; PWR6-NEXT: and 8, 3, 6 20984; PWR6-NEXT: rotldi 3, 3, 62 20985; PWR6-NEXT: and 3, 3, 6 20986; PWR6-NEXT: lis 7, 3855 20987; PWR6-NEXT: and 5, 4, 6 20988; PWR6-NEXT: rotldi 4, 4, 62 20989; PWR6-NEXT: add 3, 8, 3 20990; PWR6-NEXT: lis 9, 257 20991; PWR6-NEXT: ori 7, 7, 3855 20992; PWR6-NEXT: and 4, 4, 6 20993; PWR6-NEXT: rldicl 6, 3, 60, 4 20994; PWR6-NEXT: ori 9, 9, 257 20995; PWR6-NEXT: rldimi 7, 7, 32, 0 20996; PWR6-NEXT: add 4, 5, 4 20997; PWR6-NEXT: add 3, 3, 6 20998; PWR6-NEXT: rldimi 9, 9, 32, 0 20999; PWR6-NEXT: rldicl 5, 4, 60, 4 21000; PWR6-NEXT: and 3, 3, 7 21001; PWR6-NEXT: add 4, 4, 5 21002; PWR6-NEXT: mulld 3, 3, 9 21003; PWR6-NEXT: and 4, 4, 7 21004; PWR6-NEXT: rldicl 3, 3, 8, 56 21005; PWR6-NEXT: mulld 4, 4, 9 21006; PWR6-NEXT: li 5, 35 21007; PWR6-NEXT: subfic 3, 3, 35 21008; PWR6-NEXT: rldicl 4, 4, 8, 56 21009; PWR6-NEXT: subfe 3, 5, 5 21010; PWR6-NEXT: subfic 4, 4, 35 21011; PWR6-NEXT: subfe 4, 5, 5 21012; PWR6-NEXT: blr 21013; 21014; PWR7-LABEL: ugt_35_v2i64: 21015; PWR7: # %bb.0: 21016; PWR7-NEXT: addi 3, 1, -32 21017; PWR7-NEXT: li 5, 0 21018; PWR7-NEXT: li 6, -1 21019; PWR7-NEXT: stxvd2x 34, 0, 3 21020; PWR7-NEXT: ld 3, -24(1) 21021; PWR7-NEXT: ld 4, -32(1) 21022; PWR7-NEXT: popcntd 3, 3 21023; PWR7-NEXT: popcntd 4, 4 21024; PWR7-NEXT: cmpldi 3, 35 21025; PWR7-NEXT: iselgt 3, 6, 5 21026; PWR7-NEXT: cmpldi 4, 35 21027; PWR7-NEXT: iselgt 4, 6, 5 21028; PWR7-NEXT: std 3, -8(1) 21029; PWR7-NEXT: addi 3, 1, -16 21030; PWR7-NEXT: std 4, -16(1) 21031; PWR7-NEXT: lxvd2x 34, 0, 3 21032; PWR7-NEXT: blr 21033; 21034; PWR8-LABEL: ugt_35_v2i64: 21035; PWR8: # %bb.0: 21036; PWR8-NEXT: addis 3, 2, .LCPI168_0@toc@ha 21037; PWR8-NEXT: vpopcntd 2, 2 21038; PWR8-NEXT: addi 3, 3, .LCPI168_0@toc@l 21039; PWR8-NEXT: lxvd2x 35, 0, 3 21040; PWR8-NEXT: vcmpgtud 2, 2, 3 21041; PWR8-NEXT: blr 21042; 21043; PWR9-LABEL: ugt_35_v2i64: 21044; PWR9: # %bb.0: 21045; PWR9-NEXT: addis 3, 2, .LCPI168_0@toc@ha 21046; PWR9-NEXT: vpopcntd 2, 2 21047; PWR9-NEXT: addi 3, 3, .LCPI168_0@toc@l 21048; PWR9-NEXT: lxvx 35, 0, 3 21049; PWR9-NEXT: vcmpgtud 2, 2, 3 21050; PWR9-NEXT: blr 21051 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21052 %3 = icmp ugt <2 x i64> %2, <i64 35, i64 35> 21053 %4 = sext <2 x i1> %3 to <2 x i64> 21054 ret <2 x i64> %4 21055} 21056 21057define <2 x i64> @ult_36_v2i64(<2 x i64> %0) { 21058; PWR5-LABEL: ult_36_v2i64: 21059; PWR5: # %bb.0: 21060; PWR5-NEXT: lis 5, 21845 21061; PWR5-NEXT: lis 6, 13107 21062; PWR5-NEXT: ori 5, 5, 21845 21063; PWR5-NEXT: rotldi 8, 4, 63 21064; PWR5-NEXT: rotldi 9, 3, 63 21065; PWR5-NEXT: rldimi 5, 5, 32, 0 21066; PWR5-NEXT: and 8, 8, 5 21067; PWR5-NEXT: and 5, 9, 5 21068; PWR5-NEXT: ori 6, 6, 13107 21069; PWR5-NEXT: sub 3, 3, 5 21070; PWR5-NEXT: rldimi 6, 6, 32, 0 21071; PWR5-NEXT: sub 4, 4, 8 21072; PWR5-NEXT: and 8, 3, 6 21073; PWR5-NEXT: rotldi 3, 3, 62 21074; PWR5-NEXT: and 3, 3, 6 21075; PWR5-NEXT: lis 7, 3855 21076; PWR5-NEXT: and 5, 4, 6 21077; PWR5-NEXT: rotldi 4, 4, 62 21078; PWR5-NEXT: add 3, 8, 3 21079; PWR5-NEXT: lis 9, 257 21080; PWR5-NEXT: ori 7, 7, 3855 21081; PWR5-NEXT: and 4, 4, 6 21082; PWR5-NEXT: rldicl 6, 3, 60, 4 21083; PWR5-NEXT: ori 9, 9, 257 21084; PWR5-NEXT: rldimi 7, 7, 32, 0 21085; PWR5-NEXT: add 4, 5, 4 21086; PWR5-NEXT: add 3, 3, 6 21087; PWR5-NEXT: rldimi 9, 9, 32, 0 21088; PWR5-NEXT: rldicl 5, 4, 60, 4 21089; PWR5-NEXT: and 3, 3, 7 21090; PWR5-NEXT: add 4, 4, 5 21091; PWR5-NEXT: mulld 3, 3, 9 21092; PWR5-NEXT: and 4, 4, 7 21093; PWR5-NEXT: rldicl 3, 3, 8, 56 21094; PWR5-NEXT: li 5, 36 21095; PWR5-NEXT: mulld 4, 4, 9 21096; PWR5-NEXT: subc 6, 3, 5 21097; PWR5-NEXT: rldicl 4, 4, 8, 56 21098; PWR5-NEXT: subfe 3, 3, 3 21099; PWR5-NEXT: subc 5, 4, 5 21100; PWR5-NEXT: subfe 4, 4, 4 21101; PWR5-NEXT: blr 21102; 21103; PWR6-LABEL: ult_36_v2i64: 21104; PWR6: # %bb.0: 21105; PWR6-NEXT: lis 5, 21845 21106; PWR6-NEXT: lis 6, 13107 21107; PWR6-NEXT: ori 5, 5, 21845 21108; PWR6-NEXT: rotldi 8, 4, 63 21109; PWR6-NEXT: rotldi 9, 3, 63 21110; PWR6-NEXT: rldimi 5, 5, 32, 0 21111; PWR6-NEXT: and 8, 8, 5 21112; PWR6-NEXT: and 5, 9, 5 21113; PWR6-NEXT: ori 6, 6, 13107 21114; PWR6-NEXT: sub 3, 3, 5 21115; PWR6-NEXT: rldimi 6, 6, 32, 0 21116; PWR6-NEXT: sub 4, 4, 8 21117; PWR6-NEXT: and 8, 3, 6 21118; PWR6-NEXT: rotldi 3, 3, 62 21119; PWR6-NEXT: and 3, 3, 6 21120; PWR6-NEXT: lis 7, 3855 21121; PWR6-NEXT: and 5, 4, 6 21122; PWR6-NEXT: rotldi 4, 4, 62 21123; PWR6-NEXT: add 3, 8, 3 21124; PWR6-NEXT: lis 9, 257 21125; PWR6-NEXT: ori 7, 7, 3855 21126; PWR6-NEXT: and 4, 4, 6 21127; PWR6-NEXT: rldicl 6, 3, 60, 4 21128; PWR6-NEXT: ori 9, 9, 257 21129; PWR6-NEXT: rldimi 7, 7, 32, 0 21130; PWR6-NEXT: add 4, 5, 4 21131; PWR6-NEXT: add 3, 3, 6 21132; PWR6-NEXT: rldimi 9, 9, 32, 0 21133; PWR6-NEXT: rldicl 5, 4, 60, 4 21134; PWR6-NEXT: and 3, 3, 7 21135; PWR6-NEXT: add 4, 4, 5 21136; PWR6-NEXT: mulld 3, 3, 9 21137; PWR6-NEXT: and 4, 4, 7 21138; PWR6-NEXT: rldicl 3, 3, 8, 56 21139; PWR6-NEXT: li 5, 36 21140; PWR6-NEXT: mulld 4, 4, 9 21141; PWR6-NEXT: subc 6, 3, 5 21142; PWR6-NEXT: rldicl 4, 4, 8, 56 21143; PWR6-NEXT: subfe 3, 3, 3 21144; PWR6-NEXT: subc 5, 4, 5 21145; PWR6-NEXT: subfe 4, 4, 4 21146; PWR6-NEXT: blr 21147; 21148; PWR7-LABEL: ult_36_v2i64: 21149; PWR7: # %bb.0: 21150; PWR7-NEXT: addi 3, 1, -32 21151; PWR7-NEXT: li 5, 0 21152; PWR7-NEXT: li 6, -1 21153; PWR7-NEXT: stxvd2x 34, 0, 3 21154; PWR7-NEXT: ld 3, -24(1) 21155; PWR7-NEXT: ld 4, -32(1) 21156; PWR7-NEXT: popcntd 3, 3 21157; PWR7-NEXT: popcntd 4, 4 21158; PWR7-NEXT: cmpldi 3, 36 21159; PWR7-NEXT: isellt 3, 6, 5 21160; PWR7-NEXT: cmpldi 4, 36 21161; PWR7-NEXT: isellt 4, 6, 5 21162; PWR7-NEXT: std 3, -8(1) 21163; PWR7-NEXT: addi 3, 1, -16 21164; PWR7-NEXT: std 4, -16(1) 21165; PWR7-NEXT: lxvd2x 34, 0, 3 21166; PWR7-NEXT: blr 21167; 21168; PWR8-LABEL: ult_36_v2i64: 21169; PWR8: # %bb.0: 21170; PWR8-NEXT: addis 3, 2, .LCPI169_0@toc@ha 21171; PWR8-NEXT: vpopcntd 2, 2 21172; PWR8-NEXT: addi 3, 3, .LCPI169_0@toc@l 21173; PWR8-NEXT: lxvd2x 35, 0, 3 21174; PWR8-NEXT: vcmpgtud 2, 3, 2 21175; PWR8-NEXT: blr 21176; 21177; PWR9-LABEL: ult_36_v2i64: 21178; PWR9: # %bb.0: 21179; PWR9-NEXT: addis 3, 2, .LCPI169_0@toc@ha 21180; PWR9-NEXT: vpopcntd 2, 2 21181; PWR9-NEXT: addi 3, 3, .LCPI169_0@toc@l 21182; PWR9-NEXT: lxvx 35, 0, 3 21183; PWR9-NEXT: vcmpgtud 2, 3, 2 21184; PWR9-NEXT: blr 21185 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21186 %3 = icmp ult <2 x i64> %2, <i64 36, i64 36> 21187 %4 = sext <2 x i1> %3 to <2 x i64> 21188 ret <2 x i64> %4 21189} 21190 21191define <2 x i64> @ugt_36_v2i64(<2 x i64> %0) { 21192; PWR5-LABEL: ugt_36_v2i64: 21193; PWR5: # %bb.0: 21194; PWR5-NEXT: lis 5, 21845 21195; PWR5-NEXT: lis 6, 13107 21196; PWR5-NEXT: ori 5, 5, 21845 21197; PWR5-NEXT: rotldi 8, 4, 63 21198; PWR5-NEXT: rotldi 9, 3, 63 21199; PWR5-NEXT: rldimi 5, 5, 32, 0 21200; PWR5-NEXT: and 8, 8, 5 21201; PWR5-NEXT: and 5, 9, 5 21202; PWR5-NEXT: ori 6, 6, 13107 21203; PWR5-NEXT: sub 3, 3, 5 21204; PWR5-NEXT: rldimi 6, 6, 32, 0 21205; PWR5-NEXT: sub 4, 4, 8 21206; PWR5-NEXT: and 8, 3, 6 21207; PWR5-NEXT: rotldi 3, 3, 62 21208; PWR5-NEXT: and 3, 3, 6 21209; PWR5-NEXT: lis 7, 3855 21210; PWR5-NEXT: and 5, 4, 6 21211; PWR5-NEXT: rotldi 4, 4, 62 21212; PWR5-NEXT: add 3, 8, 3 21213; PWR5-NEXT: lis 9, 257 21214; PWR5-NEXT: ori 7, 7, 3855 21215; PWR5-NEXT: and 4, 4, 6 21216; PWR5-NEXT: rldicl 6, 3, 60, 4 21217; PWR5-NEXT: ori 9, 9, 257 21218; PWR5-NEXT: rldimi 7, 7, 32, 0 21219; PWR5-NEXT: add 4, 5, 4 21220; PWR5-NEXT: add 3, 3, 6 21221; PWR5-NEXT: rldimi 9, 9, 32, 0 21222; PWR5-NEXT: rldicl 5, 4, 60, 4 21223; PWR5-NEXT: and 3, 3, 7 21224; PWR5-NEXT: add 4, 4, 5 21225; PWR5-NEXT: mulld 3, 3, 9 21226; PWR5-NEXT: and 4, 4, 7 21227; PWR5-NEXT: rldicl 3, 3, 8, 56 21228; PWR5-NEXT: mulld 4, 4, 9 21229; PWR5-NEXT: li 5, 36 21230; PWR5-NEXT: subfic 3, 3, 36 21231; PWR5-NEXT: rldicl 4, 4, 8, 56 21232; PWR5-NEXT: subfe 3, 5, 5 21233; PWR5-NEXT: subfic 4, 4, 36 21234; PWR5-NEXT: subfe 4, 5, 5 21235; PWR5-NEXT: blr 21236; 21237; PWR6-LABEL: ugt_36_v2i64: 21238; PWR6: # %bb.0: 21239; PWR6-NEXT: lis 5, 21845 21240; PWR6-NEXT: lis 6, 13107 21241; PWR6-NEXT: ori 5, 5, 21845 21242; PWR6-NEXT: rotldi 8, 4, 63 21243; PWR6-NEXT: rotldi 9, 3, 63 21244; PWR6-NEXT: rldimi 5, 5, 32, 0 21245; PWR6-NEXT: and 8, 8, 5 21246; PWR6-NEXT: and 5, 9, 5 21247; PWR6-NEXT: ori 6, 6, 13107 21248; PWR6-NEXT: sub 3, 3, 5 21249; PWR6-NEXT: rldimi 6, 6, 32, 0 21250; PWR6-NEXT: sub 4, 4, 8 21251; PWR6-NEXT: and 8, 3, 6 21252; PWR6-NEXT: rotldi 3, 3, 62 21253; PWR6-NEXT: and 3, 3, 6 21254; PWR6-NEXT: lis 7, 3855 21255; PWR6-NEXT: and 5, 4, 6 21256; PWR6-NEXT: rotldi 4, 4, 62 21257; PWR6-NEXT: add 3, 8, 3 21258; PWR6-NEXT: lis 9, 257 21259; PWR6-NEXT: ori 7, 7, 3855 21260; PWR6-NEXT: and 4, 4, 6 21261; PWR6-NEXT: rldicl 6, 3, 60, 4 21262; PWR6-NEXT: ori 9, 9, 257 21263; PWR6-NEXT: rldimi 7, 7, 32, 0 21264; PWR6-NEXT: add 4, 5, 4 21265; PWR6-NEXT: add 3, 3, 6 21266; PWR6-NEXT: rldimi 9, 9, 32, 0 21267; PWR6-NEXT: rldicl 5, 4, 60, 4 21268; PWR6-NEXT: and 3, 3, 7 21269; PWR6-NEXT: add 4, 4, 5 21270; PWR6-NEXT: mulld 3, 3, 9 21271; PWR6-NEXT: and 4, 4, 7 21272; PWR6-NEXT: rldicl 3, 3, 8, 56 21273; PWR6-NEXT: mulld 4, 4, 9 21274; PWR6-NEXT: li 5, 36 21275; PWR6-NEXT: subfic 3, 3, 36 21276; PWR6-NEXT: rldicl 4, 4, 8, 56 21277; PWR6-NEXT: subfe 3, 5, 5 21278; PWR6-NEXT: subfic 4, 4, 36 21279; PWR6-NEXT: subfe 4, 5, 5 21280; PWR6-NEXT: blr 21281; 21282; PWR7-LABEL: ugt_36_v2i64: 21283; PWR7: # %bb.0: 21284; PWR7-NEXT: addi 3, 1, -32 21285; PWR7-NEXT: li 5, 0 21286; PWR7-NEXT: li 6, -1 21287; PWR7-NEXT: stxvd2x 34, 0, 3 21288; PWR7-NEXT: ld 3, -24(1) 21289; PWR7-NEXT: ld 4, -32(1) 21290; PWR7-NEXT: popcntd 3, 3 21291; PWR7-NEXT: popcntd 4, 4 21292; PWR7-NEXT: cmpldi 3, 36 21293; PWR7-NEXT: iselgt 3, 6, 5 21294; PWR7-NEXT: cmpldi 4, 36 21295; PWR7-NEXT: iselgt 4, 6, 5 21296; PWR7-NEXT: std 3, -8(1) 21297; PWR7-NEXT: addi 3, 1, -16 21298; PWR7-NEXT: std 4, -16(1) 21299; PWR7-NEXT: lxvd2x 34, 0, 3 21300; PWR7-NEXT: blr 21301; 21302; PWR8-LABEL: ugt_36_v2i64: 21303; PWR8: # %bb.0: 21304; PWR8-NEXT: addis 3, 2, .LCPI170_0@toc@ha 21305; PWR8-NEXT: vpopcntd 2, 2 21306; PWR8-NEXT: addi 3, 3, .LCPI170_0@toc@l 21307; PWR8-NEXT: lxvd2x 35, 0, 3 21308; PWR8-NEXT: vcmpgtud 2, 2, 3 21309; PWR8-NEXT: blr 21310; 21311; PWR9-LABEL: ugt_36_v2i64: 21312; PWR9: # %bb.0: 21313; PWR9-NEXT: addis 3, 2, .LCPI170_0@toc@ha 21314; PWR9-NEXT: vpopcntd 2, 2 21315; PWR9-NEXT: addi 3, 3, .LCPI170_0@toc@l 21316; PWR9-NEXT: lxvx 35, 0, 3 21317; PWR9-NEXT: vcmpgtud 2, 2, 3 21318; PWR9-NEXT: blr 21319 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21320 %3 = icmp ugt <2 x i64> %2, <i64 36, i64 36> 21321 %4 = sext <2 x i1> %3 to <2 x i64> 21322 ret <2 x i64> %4 21323} 21324 21325define <2 x i64> @ult_37_v2i64(<2 x i64> %0) { 21326; PWR5-LABEL: ult_37_v2i64: 21327; PWR5: # %bb.0: 21328; PWR5-NEXT: lis 5, 21845 21329; PWR5-NEXT: lis 6, 13107 21330; PWR5-NEXT: ori 5, 5, 21845 21331; PWR5-NEXT: rotldi 8, 4, 63 21332; PWR5-NEXT: rotldi 9, 3, 63 21333; PWR5-NEXT: rldimi 5, 5, 32, 0 21334; PWR5-NEXT: and 8, 8, 5 21335; PWR5-NEXT: and 5, 9, 5 21336; PWR5-NEXT: ori 6, 6, 13107 21337; PWR5-NEXT: sub 3, 3, 5 21338; PWR5-NEXT: rldimi 6, 6, 32, 0 21339; PWR5-NEXT: sub 4, 4, 8 21340; PWR5-NEXT: and 8, 3, 6 21341; PWR5-NEXT: rotldi 3, 3, 62 21342; PWR5-NEXT: and 3, 3, 6 21343; PWR5-NEXT: lis 7, 3855 21344; PWR5-NEXT: and 5, 4, 6 21345; PWR5-NEXT: rotldi 4, 4, 62 21346; PWR5-NEXT: add 3, 8, 3 21347; PWR5-NEXT: lis 9, 257 21348; PWR5-NEXT: ori 7, 7, 3855 21349; PWR5-NEXT: and 4, 4, 6 21350; PWR5-NEXT: rldicl 6, 3, 60, 4 21351; PWR5-NEXT: ori 9, 9, 257 21352; PWR5-NEXT: rldimi 7, 7, 32, 0 21353; PWR5-NEXT: add 4, 5, 4 21354; PWR5-NEXT: add 3, 3, 6 21355; PWR5-NEXT: rldimi 9, 9, 32, 0 21356; PWR5-NEXT: rldicl 5, 4, 60, 4 21357; PWR5-NEXT: and 3, 3, 7 21358; PWR5-NEXT: add 4, 4, 5 21359; PWR5-NEXT: mulld 3, 3, 9 21360; PWR5-NEXT: and 4, 4, 7 21361; PWR5-NEXT: rldicl 3, 3, 8, 56 21362; PWR5-NEXT: li 5, 37 21363; PWR5-NEXT: mulld 4, 4, 9 21364; PWR5-NEXT: subc 6, 3, 5 21365; PWR5-NEXT: rldicl 4, 4, 8, 56 21366; PWR5-NEXT: subfe 3, 3, 3 21367; PWR5-NEXT: subc 5, 4, 5 21368; PWR5-NEXT: subfe 4, 4, 4 21369; PWR5-NEXT: blr 21370; 21371; PWR6-LABEL: ult_37_v2i64: 21372; PWR6: # %bb.0: 21373; PWR6-NEXT: lis 5, 21845 21374; PWR6-NEXT: lis 6, 13107 21375; PWR6-NEXT: ori 5, 5, 21845 21376; PWR6-NEXT: rotldi 8, 4, 63 21377; PWR6-NEXT: rotldi 9, 3, 63 21378; PWR6-NEXT: rldimi 5, 5, 32, 0 21379; PWR6-NEXT: and 8, 8, 5 21380; PWR6-NEXT: and 5, 9, 5 21381; PWR6-NEXT: ori 6, 6, 13107 21382; PWR6-NEXT: sub 3, 3, 5 21383; PWR6-NEXT: rldimi 6, 6, 32, 0 21384; PWR6-NEXT: sub 4, 4, 8 21385; PWR6-NEXT: and 8, 3, 6 21386; PWR6-NEXT: rotldi 3, 3, 62 21387; PWR6-NEXT: and 3, 3, 6 21388; PWR6-NEXT: lis 7, 3855 21389; PWR6-NEXT: and 5, 4, 6 21390; PWR6-NEXT: rotldi 4, 4, 62 21391; PWR6-NEXT: add 3, 8, 3 21392; PWR6-NEXT: lis 9, 257 21393; PWR6-NEXT: ori 7, 7, 3855 21394; PWR6-NEXT: and 4, 4, 6 21395; PWR6-NEXT: rldicl 6, 3, 60, 4 21396; PWR6-NEXT: ori 9, 9, 257 21397; PWR6-NEXT: rldimi 7, 7, 32, 0 21398; PWR6-NEXT: add 4, 5, 4 21399; PWR6-NEXT: add 3, 3, 6 21400; PWR6-NEXT: rldimi 9, 9, 32, 0 21401; PWR6-NEXT: rldicl 5, 4, 60, 4 21402; PWR6-NEXT: and 3, 3, 7 21403; PWR6-NEXT: add 4, 4, 5 21404; PWR6-NEXT: mulld 3, 3, 9 21405; PWR6-NEXT: and 4, 4, 7 21406; PWR6-NEXT: rldicl 3, 3, 8, 56 21407; PWR6-NEXT: li 5, 37 21408; PWR6-NEXT: mulld 4, 4, 9 21409; PWR6-NEXT: subc 6, 3, 5 21410; PWR6-NEXT: rldicl 4, 4, 8, 56 21411; PWR6-NEXT: subfe 3, 3, 3 21412; PWR6-NEXT: subc 5, 4, 5 21413; PWR6-NEXT: subfe 4, 4, 4 21414; PWR6-NEXT: blr 21415; 21416; PWR7-LABEL: ult_37_v2i64: 21417; PWR7: # %bb.0: 21418; PWR7-NEXT: addi 3, 1, -32 21419; PWR7-NEXT: li 5, 0 21420; PWR7-NEXT: li 6, -1 21421; PWR7-NEXT: stxvd2x 34, 0, 3 21422; PWR7-NEXT: ld 3, -24(1) 21423; PWR7-NEXT: ld 4, -32(1) 21424; PWR7-NEXT: popcntd 3, 3 21425; PWR7-NEXT: popcntd 4, 4 21426; PWR7-NEXT: cmpldi 3, 37 21427; PWR7-NEXT: isellt 3, 6, 5 21428; PWR7-NEXT: cmpldi 4, 37 21429; PWR7-NEXT: isellt 4, 6, 5 21430; PWR7-NEXT: std 3, -8(1) 21431; PWR7-NEXT: addi 3, 1, -16 21432; PWR7-NEXT: std 4, -16(1) 21433; PWR7-NEXT: lxvd2x 34, 0, 3 21434; PWR7-NEXT: blr 21435; 21436; PWR8-LABEL: ult_37_v2i64: 21437; PWR8: # %bb.0: 21438; PWR8-NEXT: addis 3, 2, .LCPI171_0@toc@ha 21439; PWR8-NEXT: vpopcntd 2, 2 21440; PWR8-NEXT: addi 3, 3, .LCPI171_0@toc@l 21441; PWR8-NEXT: lxvd2x 35, 0, 3 21442; PWR8-NEXT: vcmpgtud 2, 3, 2 21443; PWR8-NEXT: blr 21444; 21445; PWR9-LABEL: ult_37_v2i64: 21446; PWR9: # %bb.0: 21447; PWR9-NEXT: addis 3, 2, .LCPI171_0@toc@ha 21448; PWR9-NEXT: vpopcntd 2, 2 21449; PWR9-NEXT: addi 3, 3, .LCPI171_0@toc@l 21450; PWR9-NEXT: lxvx 35, 0, 3 21451; PWR9-NEXT: vcmpgtud 2, 3, 2 21452; PWR9-NEXT: blr 21453 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21454 %3 = icmp ult <2 x i64> %2, <i64 37, i64 37> 21455 %4 = sext <2 x i1> %3 to <2 x i64> 21456 ret <2 x i64> %4 21457} 21458 21459define <2 x i64> @ugt_37_v2i64(<2 x i64> %0) { 21460; PWR5-LABEL: ugt_37_v2i64: 21461; PWR5: # %bb.0: 21462; PWR5-NEXT: lis 5, 21845 21463; PWR5-NEXT: lis 6, 13107 21464; PWR5-NEXT: ori 5, 5, 21845 21465; PWR5-NEXT: rotldi 8, 4, 63 21466; PWR5-NEXT: rotldi 9, 3, 63 21467; PWR5-NEXT: rldimi 5, 5, 32, 0 21468; PWR5-NEXT: and 8, 8, 5 21469; PWR5-NEXT: and 5, 9, 5 21470; PWR5-NEXT: ori 6, 6, 13107 21471; PWR5-NEXT: sub 3, 3, 5 21472; PWR5-NEXT: rldimi 6, 6, 32, 0 21473; PWR5-NEXT: sub 4, 4, 8 21474; PWR5-NEXT: and 8, 3, 6 21475; PWR5-NEXT: rotldi 3, 3, 62 21476; PWR5-NEXT: and 3, 3, 6 21477; PWR5-NEXT: lis 7, 3855 21478; PWR5-NEXT: and 5, 4, 6 21479; PWR5-NEXT: rotldi 4, 4, 62 21480; PWR5-NEXT: add 3, 8, 3 21481; PWR5-NEXT: lis 9, 257 21482; PWR5-NEXT: ori 7, 7, 3855 21483; PWR5-NEXT: and 4, 4, 6 21484; PWR5-NEXT: rldicl 6, 3, 60, 4 21485; PWR5-NEXT: ori 9, 9, 257 21486; PWR5-NEXT: rldimi 7, 7, 32, 0 21487; PWR5-NEXT: add 4, 5, 4 21488; PWR5-NEXT: add 3, 3, 6 21489; PWR5-NEXT: rldimi 9, 9, 32, 0 21490; PWR5-NEXT: rldicl 5, 4, 60, 4 21491; PWR5-NEXT: and 3, 3, 7 21492; PWR5-NEXT: add 4, 4, 5 21493; PWR5-NEXT: mulld 3, 3, 9 21494; PWR5-NEXT: and 4, 4, 7 21495; PWR5-NEXT: rldicl 3, 3, 8, 56 21496; PWR5-NEXT: mulld 4, 4, 9 21497; PWR5-NEXT: li 5, 37 21498; PWR5-NEXT: subfic 3, 3, 37 21499; PWR5-NEXT: rldicl 4, 4, 8, 56 21500; PWR5-NEXT: subfe 3, 5, 5 21501; PWR5-NEXT: subfic 4, 4, 37 21502; PWR5-NEXT: subfe 4, 5, 5 21503; PWR5-NEXT: blr 21504; 21505; PWR6-LABEL: ugt_37_v2i64: 21506; PWR6: # %bb.0: 21507; PWR6-NEXT: lis 5, 21845 21508; PWR6-NEXT: lis 6, 13107 21509; PWR6-NEXT: ori 5, 5, 21845 21510; PWR6-NEXT: rotldi 8, 4, 63 21511; PWR6-NEXT: rotldi 9, 3, 63 21512; PWR6-NEXT: rldimi 5, 5, 32, 0 21513; PWR6-NEXT: and 8, 8, 5 21514; PWR6-NEXT: and 5, 9, 5 21515; PWR6-NEXT: ori 6, 6, 13107 21516; PWR6-NEXT: sub 3, 3, 5 21517; PWR6-NEXT: rldimi 6, 6, 32, 0 21518; PWR6-NEXT: sub 4, 4, 8 21519; PWR6-NEXT: and 8, 3, 6 21520; PWR6-NEXT: rotldi 3, 3, 62 21521; PWR6-NEXT: and 3, 3, 6 21522; PWR6-NEXT: lis 7, 3855 21523; PWR6-NEXT: and 5, 4, 6 21524; PWR6-NEXT: rotldi 4, 4, 62 21525; PWR6-NEXT: add 3, 8, 3 21526; PWR6-NEXT: lis 9, 257 21527; PWR6-NEXT: ori 7, 7, 3855 21528; PWR6-NEXT: and 4, 4, 6 21529; PWR6-NEXT: rldicl 6, 3, 60, 4 21530; PWR6-NEXT: ori 9, 9, 257 21531; PWR6-NEXT: rldimi 7, 7, 32, 0 21532; PWR6-NEXT: add 4, 5, 4 21533; PWR6-NEXT: add 3, 3, 6 21534; PWR6-NEXT: rldimi 9, 9, 32, 0 21535; PWR6-NEXT: rldicl 5, 4, 60, 4 21536; PWR6-NEXT: and 3, 3, 7 21537; PWR6-NEXT: add 4, 4, 5 21538; PWR6-NEXT: mulld 3, 3, 9 21539; PWR6-NEXT: and 4, 4, 7 21540; PWR6-NEXT: rldicl 3, 3, 8, 56 21541; PWR6-NEXT: mulld 4, 4, 9 21542; PWR6-NEXT: li 5, 37 21543; PWR6-NEXT: subfic 3, 3, 37 21544; PWR6-NEXT: rldicl 4, 4, 8, 56 21545; PWR6-NEXT: subfe 3, 5, 5 21546; PWR6-NEXT: subfic 4, 4, 37 21547; PWR6-NEXT: subfe 4, 5, 5 21548; PWR6-NEXT: blr 21549; 21550; PWR7-LABEL: ugt_37_v2i64: 21551; PWR7: # %bb.0: 21552; PWR7-NEXT: addi 3, 1, -32 21553; PWR7-NEXT: li 5, 0 21554; PWR7-NEXT: li 6, -1 21555; PWR7-NEXT: stxvd2x 34, 0, 3 21556; PWR7-NEXT: ld 3, -24(1) 21557; PWR7-NEXT: ld 4, -32(1) 21558; PWR7-NEXT: popcntd 3, 3 21559; PWR7-NEXT: popcntd 4, 4 21560; PWR7-NEXT: cmpldi 3, 37 21561; PWR7-NEXT: iselgt 3, 6, 5 21562; PWR7-NEXT: cmpldi 4, 37 21563; PWR7-NEXT: iselgt 4, 6, 5 21564; PWR7-NEXT: std 3, -8(1) 21565; PWR7-NEXT: addi 3, 1, -16 21566; PWR7-NEXT: std 4, -16(1) 21567; PWR7-NEXT: lxvd2x 34, 0, 3 21568; PWR7-NEXT: blr 21569; 21570; PWR8-LABEL: ugt_37_v2i64: 21571; PWR8: # %bb.0: 21572; PWR8-NEXT: addis 3, 2, .LCPI172_0@toc@ha 21573; PWR8-NEXT: vpopcntd 2, 2 21574; PWR8-NEXT: addi 3, 3, .LCPI172_0@toc@l 21575; PWR8-NEXT: lxvd2x 35, 0, 3 21576; PWR8-NEXT: vcmpgtud 2, 2, 3 21577; PWR8-NEXT: blr 21578; 21579; PWR9-LABEL: ugt_37_v2i64: 21580; PWR9: # %bb.0: 21581; PWR9-NEXT: addis 3, 2, .LCPI172_0@toc@ha 21582; PWR9-NEXT: vpopcntd 2, 2 21583; PWR9-NEXT: addi 3, 3, .LCPI172_0@toc@l 21584; PWR9-NEXT: lxvx 35, 0, 3 21585; PWR9-NEXT: vcmpgtud 2, 2, 3 21586; PWR9-NEXT: blr 21587 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21588 %3 = icmp ugt <2 x i64> %2, <i64 37, i64 37> 21589 %4 = sext <2 x i1> %3 to <2 x i64> 21590 ret <2 x i64> %4 21591} 21592 21593define <2 x i64> @ult_38_v2i64(<2 x i64> %0) { 21594; PWR5-LABEL: ult_38_v2i64: 21595; PWR5: # %bb.0: 21596; PWR5-NEXT: lis 5, 21845 21597; PWR5-NEXT: lis 6, 13107 21598; PWR5-NEXT: ori 5, 5, 21845 21599; PWR5-NEXT: rotldi 8, 4, 63 21600; PWR5-NEXT: rotldi 9, 3, 63 21601; PWR5-NEXT: rldimi 5, 5, 32, 0 21602; PWR5-NEXT: and 8, 8, 5 21603; PWR5-NEXT: and 5, 9, 5 21604; PWR5-NEXT: ori 6, 6, 13107 21605; PWR5-NEXT: sub 3, 3, 5 21606; PWR5-NEXT: rldimi 6, 6, 32, 0 21607; PWR5-NEXT: sub 4, 4, 8 21608; PWR5-NEXT: and 8, 3, 6 21609; PWR5-NEXT: rotldi 3, 3, 62 21610; PWR5-NEXT: and 3, 3, 6 21611; PWR5-NEXT: lis 7, 3855 21612; PWR5-NEXT: and 5, 4, 6 21613; PWR5-NEXT: rotldi 4, 4, 62 21614; PWR5-NEXT: add 3, 8, 3 21615; PWR5-NEXT: lis 9, 257 21616; PWR5-NEXT: ori 7, 7, 3855 21617; PWR5-NEXT: and 4, 4, 6 21618; PWR5-NEXT: rldicl 6, 3, 60, 4 21619; PWR5-NEXT: ori 9, 9, 257 21620; PWR5-NEXT: rldimi 7, 7, 32, 0 21621; PWR5-NEXT: add 4, 5, 4 21622; PWR5-NEXT: add 3, 3, 6 21623; PWR5-NEXT: rldimi 9, 9, 32, 0 21624; PWR5-NEXT: rldicl 5, 4, 60, 4 21625; PWR5-NEXT: and 3, 3, 7 21626; PWR5-NEXT: add 4, 4, 5 21627; PWR5-NEXT: mulld 3, 3, 9 21628; PWR5-NEXT: and 4, 4, 7 21629; PWR5-NEXT: rldicl 3, 3, 8, 56 21630; PWR5-NEXT: li 5, 38 21631; PWR5-NEXT: mulld 4, 4, 9 21632; PWR5-NEXT: subc 6, 3, 5 21633; PWR5-NEXT: rldicl 4, 4, 8, 56 21634; PWR5-NEXT: subfe 3, 3, 3 21635; PWR5-NEXT: subc 5, 4, 5 21636; PWR5-NEXT: subfe 4, 4, 4 21637; PWR5-NEXT: blr 21638; 21639; PWR6-LABEL: ult_38_v2i64: 21640; PWR6: # %bb.0: 21641; PWR6-NEXT: lis 5, 21845 21642; PWR6-NEXT: lis 6, 13107 21643; PWR6-NEXT: ori 5, 5, 21845 21644; PWR6-NEXT: rotldi 8, 4, 63 21645; PWR6-NEXT: rotldi 9, 3, 63 21646; PWR6-NEXT: rldimi 5, 5, 32, 0 21647; PWR6-NEXT: and 8, 8, 5 21648; PWR6-NEXT: and 5, 9, 5 21649; PWR6-NEXT: ori 6, 6, 13107 21650; PWR6-NEXT: sub 3, 3, 5 21651; PWR6-NEXT: rldimi 6, 6, 32, 0 21652; PWR6-NEXT: sub 4, 4, 8 21653; PWR6-NEXT: and 8, 3, 6 21654; PWR6-NEXT: rotldi 3, 3, 62 21655; PWR6-NEXT: and 3, 3, 6 21656; PWR6-NEXT: lis 7, 3855 21657; PWR6-NEXT: and 5, 4, 6 21658; PWR6-NEXT: rotldi 4, 4, 62 21659; PWR6-NEXT: add 3, 8, 3 21660; PWR6-NEXT: lis 9, 257 21661; PWR6-NEXT: ori 7, 7, 3855 21662; PWR6-NEXT: and 4, 4, 6 21663; PWR6-NEXT: rldicl 6, 3, 60, 4 21664; PWR6-NEXT: ori 9, 9, 257 21665; PWR6-NEXT: rldimi 7, 7, 32, 0 21666; PWR6-NEXT: add 4, 5, 4 21667; PWR6-NEXT: add 3, 3, 6 21668; PWR6-NEXT: rldimi 9, 9, 32, 0 21669; PWR6-NEXT: rldicl 5, 4, 60, 4 21670; PWR6-NEXT: and 3, 3, 7 21671; PWR6-NEXT: add 4, 4, 5 21672; PWR6-NEXT: mulld 3, 3, 9 21673; PWR6-NEXT: and 4, 4, 7 21674; PWR6-NEXT: rldicl 3, 3, 8, 56 21675; PWR6-NEXT: li 5, 38 21676; PWR6-NEXT: mulld 4, 4, 9 21677; PWR6-NEXT: subc 6, 3, 5 21678; PWR6-NEXT: rldicl 4, 4, 8, 56 21679; PWR6-NEXT: subfe 3, 3, 3 21680; PWR6-NEXT: subc 5, 4, 5 21681; PWR6-NEXT: subfe 4, 4, 4 21682; PWR6-NEXT: blr 21683; 21684; PWR7-LABEL: ult_38_v2i64: 21685; PWR7: # %bb.0: 21686; PWR7-NEXT: addi 3, 1, -32 21687; PWR7-NEXT: li 5, 0 21688; PWR7-NEXT: li 6, -1 21689; PWR7-NEXT: stxvd2x 34, 0, 3 21690; PWR7-NEXT: ld 3, -24(1) 21691; PWR7-NEXT: ld 4, -32(1) 21692; PWR7-NEXT: popcntd 3, 3 21693; PWR7-NEXT: popcntd 4, 4 21694; PWR7-NEXT: cmpldi 3, 38 21695; PWR7-NEXT: isellt 3, 6, 5 21696; PWR7-NEXT: cmpldi 4, 38 21697; PWR7-NEXT: isellt 4, 6, 5 21698; PWR7-NEXT: std 3, -8(1) 21699; PWR7-NEXT: addi 3, 1, -16 21700; PWR7-NEXT: std 4, -16(1) 21701; PWR7-NEXT: lxvd2x 34, 0, 3 21702; PWR7-NEXT: blr 21703; 21704; PWR8-LABEL: ult_38_v2i64: 21705; PWR8: # %bb.0: 21706; PWR8-NEXT: addis 3, 2, .LCPI173_0@toc@ha 21707; PWR8-NEXT: vpopcntd 2, 2 21708; PWR8-NEXT: addi 3, 3, .LCPI173_0@toc@l 21709; PWR8-NEXT: lxvd2x 35, 0, 3 21710; PWR8-NEXT: vcmpgtud 2, 3, 2 21711; PWR8-NEXT: blr 21712; 21713; PWR9-LABEL: ult_38_v2i64: 21714; PWR9: # %bb.0: 21715; PWR9-NEXT: addis 3, 2, .LCPI173_0@toc@ha 21716; PWR9-NEXT: vpopcntd 2, 2 21717; PWR9-NEXT: addi 3, 3, .LCPI173_0@toc@l 21718; PWR9-NEXT: lxvx 35, 0, 3 21719; PWR9-NEXT: vcmpgtud 2, 3, 2 21720; PWR9-NEXT: blr 21721 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21722 %3 = icmp ult <2 x i64> %2, <i64 38, i64 38> 21723 %4 = sext <2 x i1> %3 to <2 x i64> 21724 ret <2 x i64> %4 21725} 21726 21727define <2 x i64> @ugt_38_v2i64(<2 x i64> %0) { 21728; PWR5-LABEL: ugt_38_v2i64: 21729; PWR5: # %bb.0: 21730; PWR5-NEXT: lis 5, 21845 21731; PWR5-NEXT: lis 6, 13107 21732; PWR5-NEXT: ori 5, 5, 21845 21733; PWR5-NEXT: rotldi 8, 4, 63 21734; PWR5-NEXT: rotldi 9, 3, 63 21735; PWR5-NEXT: rldimi 5, 5, 32, 0 21736; PWR5-NEXT: and 8, 8, 5 21737; PWR5-NEXT: and 5, 9, 5 21738; PWR5-NEXT: ori 6, 6, 13107 21739; PWR5-NEXT: sub 3, 3, 5 21740; PWR5-NEXT: rldimi 6, 6, 32, 0 21741; PWR5-NEXT: sub 4, 4, 8 21742; PWR5-NEXT: and 8, 3, 6 21743; PWR5-NEXT: rotldi 3, 3, 62 21744; PWR5-NEXT: and 3, 3, 6 21745; PWR5-NEXT: lis 7, 3855 21746; PWR5-NEXT: and 5, 4, 6 21747; PWR5-NEXT: rotldi 4, 4, 62 21748; PWR5-NEXT: add 3, 8, 3 21749; PWR5-NEXT: lis 9, 257 21750; PWR5-NEXT: ori 7, 7, 3855 21751; PWR5-NEXT: and 4, 4, 6 21752; PWR5-NEXT: rldicl 6, 3, 60, 4 21753; PWR5-NEXT: ori 9, 9, 257 21754; PWR5-NEXT: rldimi 7, 7, 32, 0 21755; PWR5-NEXT: add 4, 5, 4 21756; PWR5-NEXT: add 3, 3, 6 21757; PWR5-NEXT: rldimi 9, 9, 32, 0 21758; PWR5-NEXT: rldicl 5, 4, 60, 4 21759; PWR5-NEXT: and 3, 3, 7 21760; PWR5-NEXT: add 4, 4, 5 21761; PWR5-NEXT: mulld 3, 3, 9 21762; PWR5-NEXT: and 4, 4, 7 21763; PWR5-NEXT: rldicl 3, 3, 8, 56 21764; PWR5-NEXT: mulld 4, 4, 9 21765; PWR5-NEXT: li 5, 38 21766; PWR5-NEXT: subfic 3, 3, 38 21767; PWR5-NEXT: rldicl 4, 4, 8, 56 21768; PWR5-NEXT: subfe 3, 5, 5 21769; PWR5-NEXT: subfic 4, 4, 38 21770; PWR5-NEXT: subfe 4, 5, 5 21771; PWR5-NEXT: blr 21772; 21773; PWR6-LABEL: ugt_38_v2i64: 21774; PWR6: # %bb.0: 21775; PWR6-NEXT: lis 5, 21845 21776; PWR6-NEXT: lis 6, 13107 21777; PWR6-NEXT: ori 5, 5, 21845 21778; PWR6-NEXT: rotldi 8, 4, 63 21779; PWR6-NEXT: rotldi 9, 3, 63 21780; PWR6-NEXT: rldimi 5, 5, 32, 0 21781; PWR6-NEXT: and 8, 8, 5 21782; PWR6-NEXT: and 5, 9, 5 21783; PWR6-NEXT: ori 6, 6, 13107 21784; PWR6-NEXT: sub 3, 3, 5 21785; PWR6-NEXT: rldimi 6, 6, 32, 0 21786; PWR6-NEXT: sub 4, 4, 8 21787; PWR6-NEXT: and 8, 3, 6 21788; PWR6-NEXT: rotldi 3, 3, 62 21789; PWR6-NEXT: and 3, 3, 6 21790; PWR6-NEXT: lis 7, 3855 21791; PWR6-NEXT: and 5, 4, 6 21792; PWR6-NEXT: rotldi 4, 4, 62 21793; PWR6-NEXT: add 3, 8, 3 21794; PWR6-NEXT: lis 9, 257 21795; PWR6-NEXT: ori 7, 7, 3855 21796; PWR6-NEXT: and 4, 4, 6 21797; PWR6-NEXT: rldicl 6, 3, 60, 4 21798; PWR6-NEXT: ori 9, 9, 257 21799; PWR6-NEXT: rldimi 7, 7, 32, 0 21800; PWR6-NEXT: add 4, 5, 4 21801; PWR6-NEXT: add 3, 3, 6 21802; PWR6-NEXT: rldimi 9, 9, 32, 0 21803; PWR6-NEXT: rldicl 5, 4, 60, 4 21804; PWR6-NEXT: and 3, 3, 7 21805; PWR6-NEXT: add 4, 4, 5 21806; PWR6-NEXT: mulld 3, 3, 9 21807; PWR6-NEXT: and 4, 4, 7 21808; PWR6-NEXT: rldicl 3, 3, 8, 56 21809; PWR6-NEXT: mulld 4, 4, 9 21810; PWR6-NEXT: li 5, 38 21811; PWR6-NEXT: subfic 3, 3, 38 21812; PWR6-NEXT: rldicl 4, 4, 8, 56 21813; PWR6-NEXT: subfe 3, 5, 5 21814; PWR6-NEXT: subfic 4, 4, 38 21815; PWR6-NEXT: subfe 4, 5, 5 21816; PWR6-NEXT: blr 21817; 21818; PWR7-LABEL: ugt_38_v2i64: 21819; PWR7: # %bb.0: 21820; PWR7-NEXT: addi 3, 1, -32 21821; PWR7-NEXT: li 5, 0 21822; PWR7-NEXT: li 6, -1 21823; PWR7-NEXT: stxvd2x 34, 0, 3 21824; PWR7-NEXT: ld 3, -24(1) 21825; PWR7-NEXT: ld 4, -32(1) 21826; PWR7-NEXT: popcntd 3, 3 21827; PWR7-NEXT: popcntd 4, 4 21828; PWR7-NEXT: cmpldi 3, 38 21829; PWR7-NEXT: iselgt 3, 6, 5 21830; PWR7-NEXT: cmpldi 4, 38 21831; PWR7-NEXT: iselgt 4, 6, 5 21832; PWR7-NEXT: std 3, -8(1) 21833; PWR7-NEXT: addi 3, 1, -16 21834; PWR7-NEXT: std 4, -16(1) 21835; PWR7-NEXT: lxvd2x 34, 0, 3 21836; PWR7-NEXT: blr 21837; 21838; PWR8-LABEL: ugt_38_v2i64: 21839; PWR8: # %bb.0: 21840; PWR8-NEXT: addis 3, 2, .LCPI174_0@toc@ha 21841; PWR8-NEXT: vpopcntd 2, 2 21842; PWR8-NEXT: addi 3, 3, .LCPI174_0@toc@l 21843; PWR8-NEXT: lxvd2x 35, 0, 3 21844; PWR8-NEXT: vcmpgtud 2, 2, 3 21845; PWR8-NEXT: blr 21846; 21847; PWR9-LABEL: ugt_38_v2i64: 21848; PWR9: # %bb.0: 21849; PWR9-NEXT: addis 3, 2, .LCPI174_0@toc@ha 21850; PWR9-NEXT: vpopcntd 2, 2 21851; PWR9-NEXT: addi 3, 3, .LCPI174_0@toc@l 21852; PWR9-NEXT: lxvx 35, 0, 3 21853; PWR9-NEXT: vcmpgtud 2, 2, 3 21854; PWR9-NEXT: blr 21855 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21856 %3 = icmp ugt <2 x i64> %2, <i64 38, i64 38> 21857 %4 = sext <2 x i1> %3 to <2 x i64> 21858 ret <2 x i64> %4 21859} 21860 21861define <2 x i64> @ult_39_v2i64(<2 x i64> %0) { 21862; PWR5-LABEL: ult_39_v2i64: 21863; PWR5: # %bb.0: 21864; PWR5-NEXT: lis 5, 21845 21865; PWR5-NEXT: lis 6, 13107 21866; PWR5-NEXT: ori 5, 5, 21845 21867; PWR5-NEXT: rotldi 8, 4, 63 21868; PWR5-NEXT: rotldi 9, 3, 63 21869; PWR5-NEXT: rldimi 5, 5, 32, 0 21870; PWR5-NEXT: and 8, 8, 5 21871; PWR5-NEXT: and 5, 9, 5 21872; PWR5-NEXT: ori 6, 6, 13107 21873; PWR5-NEXT: sub 3, 3, 5 21874; PWR5-NEXT: rldimi 6, 6, 32, 0 21875; PWR5-NEXT: sub 4, 4, 8 21876; PWR5-NEXT: and 8, 3, 6 21877; PWR5-NEXT: rotldi 3, 3, 62 21878; PWR5-NEXT: and 3, 3, 6 21879; PWR5-NEXT: lis 7, 3855 21880; PWR5-NEXT: and 5, 4, 6 21881; PWR5-NEXT: rotldi 4, 4, 62 21882; PWR5-NEXT: add 3, 8, 3 21883; PWR5-NEXT: lis 9, 257 21884; PWR5-NEXT: ori 7, 7, 3855 21885; PWR5-NEXT: and 4, 4, 6 21886; PWR5-NEXT: rldicl 6, 3, 60, 4 21887; PWR5-NEXT: ori 9, 9, 257 21888; PWR5-NEXT: rldimi 7, 7, 32, 0 21889; PWR5-NEXT: add 4, 5, 4 21890; PWR5-NEXT: add 3, 3, 6 21891; PWR5-NEXT: rldimi 9, 9, 32, 0 21892; PWR5-NEXT: rldicl 5, 4, 60, 4 21893; PWR5-NEXT: and 3, 3, 7 21894; PWR5-NEXT: add 4, 4, 5 21895; PWR5-NEXT: mulld 3, 3, 9 21896; PWR5-NEXT: and 4, 4, 7 21897; PWR5-NEXT: rldicl 3, 3, 8, 56 21898; PWR5-NEXT: li 5, 39 21899; PWR5-NEXT: mulld 4, 4, 9 21900; PWR5-NEXT: subc 6, 3, 5 21901; PWR5-NEXT: rldicl 4, 4, 8, 56 21902; PWR5-NEXT: subfe 3, 3, 3 21903; PWR5-NEXT: subc 5, 4, 5 21904; PWR5-NEXT: subfe 4, 4, 4 21905; PWR5-NEXT: blr 21906; 21907; PWR6-LABEL: ult_39_v2i64: 21908; PWR6: # %bb.0: 21909; PWR6-NEXT: lis 5, 21845 21910; PWR6-NEXT: lis 6, 13107 21911; PWR6-NEXT: ori 5, 5, 21845 21912; PWR6-NEXT: rotldi 8, 4, 63 21913; PWR6-NEXT: rotldi 9, 3, 63 21914; PWR6-NEXT: rldimi 5, 5, 32, 0 21915; PWR6-NEXT: and 8, 8, 5 21916; PWR6-NEXT: and 5, 9, 5 21917; PWR6-NEXT: ori 6, 6, 13107 21918; PWR6-NEXT: sub 3, 3, 5 21919; PWR6-NEXT: rldimi 6, 6, 32, 0 21920; PWR6-NEXT: sub 4, 4, 8 21921; PWR6-NEXT: and 8, 3, 6 21922; PWR6-NEXT: rotldi 3, 3, 62 21923; PWR6-NEXT: and 3, 3, 6 21924; PWR6-NEXT: lis 7, 3855 21925; PWR6-NEXT: and 5, 4, 6 21926; PWR6-NEXT: rotldi 4, 4, 62 21927; PWR6-NEXT: add 3, 8, 3 21928; PWR6-NEXT: lis 9, 257 21929; PWR6-NEXT: ori 7, 7, 3855 21930; PWR6-NEXT: and 4, 4, 6 21931; PWR6-NEXT: rldicl 6, 3, 60, 4 21932; PWR6-NEXT: ori 9, 9, 257 21933; PWR6-NEXT: rldimi 7, 7, 32, 0 21934; PWR6-NEXT: add 4, 5, 4 21935; PWR6-NEXT: add 3, 3, 6 21936; PWR6-NEXT: rldimi 9, 9, 32, 0 21937; PWR6-NEXT: rldicl 5, 4, 60, 4 21938; PWR6-NEXT: and 3, 3, 7 21939; PWR6-NEXT: add 4, 4, 5 21940; PWR6-NEXT: mulld 3, 3, 9 21941; PWR6-NEXT: and 4, 4, 7 21942; PWR6-NEXT: rldicl 3, 3, 8, 56 21943; PWR6-NEXT: li 5, 39 21944; PWR6-NEXT: mulld 4, 4, 9 21945; PWR6-NEXT: subc 6, 3, 5 21946; PWR6-NEXT: rldicl 4, 4, 8, 56 21947; PWR6-NEXT: subfe 3, 3, 3 21948; PWR6-NEXT: subc 5, 4, 5 21949; PWR6-NEXT: subfe 4, 4, 4 21950; PWR6-NEXT: blr 21951; 21952; PWR7-LABEL: ult_39_v2i64: 21953; PWR7: # %bb.0: 21954; PWR7-NEXT: addi 3, 1, -32 21955; PWR7-NEXT: li 5, 0 21956; PWR7-NEXT: li 6, -1 21957; PWR7-NEXT: stxvd2x 34, 0, 3 21958; PWR7-NEXT: ld 3, -24(1) 21959; PWR7-NEXT: ld 4, -32(1) 21960; PWR7-NEXT: popcntd 3, 3 21961; PWR7-NEXT: popcntd 4, 4 21962; PWR7-NEXT: cmpldi 3, 39 21963; PWR7-NEXT: isellt 3, 6, 5 21964; PWR7-NEXT: cmpldi 4, 39 21965; PWR7-NEXT: isellt 4, 6, 5 21966; PWR7-NEXT: std 3, -8(1) 21967; PWR7-NEXT: addi 3, 1, -16 21968; PWR7-NEXT: std 4, -16(1) 21969; PWR7-NEXT: lxvd2x 34, 0, 3 21970; PWR7-NEXT: blr 21971; 21972; PWR8-LABEL: ult_39_v2i64: 21973; PWR8: # %bb.0: 21974; PWR8-NEXT: addis 3, 2, .LCPI175_0@toc@ha 21975; PWR8-NEXT: vpopcntd 2, 2 21976; PWR8-NEXT: addi 3, 3, .LCPI175_0@toc@l 21977; PWR8-NEXT: lxvd2x 35, 0, 3 21978; PWR8-NEXT: vcmpgtud 2, 3, 2 21979; PWR8-NEXT: blr 21980; 21981; PWR9-LABEL: ult_39_v2i64: 21982; PWR9: # %bb.0: 21983; PWR9-NEXT: addis 3, 2, .LCPI175_0@toc@ha 21984; PWR9-NEXT: vpopcntd 2, 2 21985; PWR9-NEXT: addi 3, 3, .LCPI175_0@toc@l 21986; PWR9-NEXT: lxvx 35, 0, 3 21987; PWR9-NEXT: vcmpgtud 2, 3, 2 21988; PWR9-NEXT: blr 21989 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21990 %3 = icmp ult <2 x i64> %2, <i64 39, i64 39> 21991 %4 = sext <2 x i1> %3 to <2 x i64> 21992 ret <2 x i64> %4 21993} 21994 21995define <2 x i64> @ugt_39_v2i64(<2 x i64> %0) { 21996; PWR5-LABEL: ugt_39_v2i64: 21997; PWR5: # %bb.0: 21998; PWR5-NEXT: lis 5, 21845 21999; PWR5-NEXT: lis 6, 13107 22000; PWR5-NEXT: ori 5, 5, 21845 22001; PWR5-NEXT: rotldi 8, 4, 63 22002; PWR5-NEXT: rotldi 9, 3, 63 22003; PWR5-NEXT: rldimi 5, 5, 32, 0 22004; PWR5-NEXT: and 8, 8, 5 22005; PWR5-NEXT: and 5, 9, 5 22006; PWR5-NEXT: ori 6, 6, 13107 22007; PWR5-NEXT: sub 3, 3, 5 22008; PWR5-NEXT: rldimi 6, 6, 32, 0 22009; PWR5-NEXT: sub 4, 4, 8 22010; PWR5-NEXT: and 8, 3, 6 22011; PWR5-NEXT: rotldi 3, 3, 62 22012; PWR5-NEXT: and 3, 3, 6 22013; PWR5-NEXT: lis 7, 3855 22014; PWR5-NEXT: and 5, 4, 6 22015; PWR5-NEXT: rotldi 4, 4, 62 22016; PWR5-NEXT: add 3, 8, 3 22017; PWR5-NEXT: lis 9, 257 22018; PWR5-NEXT: ori 7, 7, 3855 22019; PWR5-NEXT: and 4, 4, 6 22020; PWR5-NEXT: rldicl 6, 3, 60, 4 22021; PWR5-NEXT: ori 9, 9, 257 22022; PWR5-NEXT: rldimi 7, 7, 32, 0 22023; PWR5-NEXT: add 4, 5, 4 22024; PWR5-NEXT: add 3, 3, 6 22025; PWR5-NEXT: rldimi 9, 9, 32, 0 22026; PWR5-NEXT: rldicl 5, 4, 60, 4 22027; PWR5-NEXT: and 3, 3, 7 22028; PWR5-NEXT: add 4, 4, 5 22029; PWR5-NEXT: mulld 3, 3, 9 22030; PWR5-NEXT: and 4, 4, 7 22031; PWR5-NEXT: rldicl 3, 3, 8, 56 22032; PWR5-NEXT: mulld 4, 4, 9 22033; PWR5-NEXT: li 5, 39 22034; PWR5-NEXT: subfic 3, 3, 39 22035; PWR5-NEXT: rldicl 4, 4, 8, 56 22036; PWR5-NEXT: subfe 3, 5, 5 22037; PWR5-NEXT: subfic 4, 4, 39 22038; PWR5-NEXT: subfe 4, 5, 5 22039; PWR5-NEXT: blr 22040; 22041; PWR6-LABEL: ugt_39_v2i64: 22042; PWR6: # %bb.0: 22043; PWR6-NEXT: lis 5, 21845 22044; PWR6-NEXT: lis 6, 13107 22045; PWR6-NEXT: ori 5, 5, 21845 22046; PWR6-NEXT: rotldi 8, 4, 63 22047; PWR6-NEXT: rotldi 9, 3, 63 22048; PWR6-NEXT: rldimi 5, 5, 32, 0 22049; PWR6-NEXT: and 8, 8, 5 22050; PWR6-NEXT: and 5, 9, 5 22051; PWR6-NEXT: ori 6, 6, 13107 22052; PWR6-NEXT: sub 3, 3, 5 22053; PWR6-NEXT: rldimi 6, 6, 32, 0 22054; PWR6-NEXT: sub 4, 4, 8 22055; PWR6-NEXT: and 8, 3, 6 22056; PWR6-NEXT: rotldi 3, 3, 62 22057; PWR6-NEXT: and 3, 3, 6 22058; PWR6-NEXT: lis 7, 3855 22059; PWR6-NEXT: and 5, 4, 6 22060; PWR6-NEXT: rotldi 4, 4, 62 22061; PWR6-NEXT: add 3, 8, 3 22062; PWR6-NEXT: lis 9, 257 22063; PWR6-NEXT: ori 7, 7, 3855 22064; PWR6-NEXT: and 4, 4, 6 22065; PWR6-NEXT: rldicl 6, 3, 60, 4 22066; PWR6-NEXT: ori 9, 9, 257 22067; PWR6-NEXT: rldimi 7, 7, 32, 0 22068; PWR6-NEXT: add 4, 5, 4 22069; PWR6-NEXT: add 3, 3, 6 22070; PWR6-NEXT: rldimi 9, 9, 32, 0 22071; PWR6-NEXT: rldicl 5, 4, 60, 4 22072; PWR6-NEXT: and 3, 3, 7 22073; PWR6-NEXT: add 4, 4, 5 22074; PWR6-NEXT: mulld 3, 3, 9 22075; PWR6-NEXT: and 4, 4, 7 22076; PWR6-NEXT: rldicl 3, 3, 8, 56 22077; PWR6-NEXT: mulld 4, 4, 9 22078; PWR6-NEXT: li 5, 39 22079; PWR6-NEXT: subfic 3, 3, 39 22080; PWR6-NEXT: rldicl 4, 4, 8, 56 22081; PWR6-NEXT: subfe 3, 5, 5 22082; PWR6-NEXT: subfic 4, 4, 39 22083; PWR6-NEXT: subfe 4, 5, 5 22084; PWR6-NEXT: blr 22085; 22086; PWR7-LABEL: ugt_39_v2i64: 22087; PWR7: # %bb.0: 22088; PWR7-NEXT: addi 3, 1, -32 22089; PWR7-NEXT: li 5, 0 22090; PWR7-NEXT: li 6, -1 22091; PWR7-NEXT: stxvd2x 34, 0, 3 22092; PWR7-NEXT: ld 3, -24(1) 22093; PWR7-NEXT: ld 4, -32(1) 22094; PWR7-NEXT: popcntd 3, 3 22095; PWR7-NEXT: popcntd 4, 4 22096; PWR7-NEXT: cmpldi 3, 39 22097; PWR7-NEXT: iselgt 3, 6, 5 22098; PWR7-NEXT: cmpldi 4, 39 22099; PWR7-NEXT: iselgt 4, 6, 5 22100; PWR7-NEXT: std 3, -8(1) 22101; PWR7-NEXT: addi 3, 1, -16 22102; PWR7-NEXT: std 4, -16(1) 22103; PWR7-NEXT: lxvd2x 34, 0, 3 22104; PWR7-NEXT: blr 22105; 22106; PWR8-LABEL: ugt_39_v2i64: 22107; PWR8: # %bb.0: 22108; PWR8-NEXT: addis 3, 2, .LCPI176_0@toc@ha 22109; PWR8-NEXT: vpopcntd 2, 2 22110; PWR8-NEXT: addi 3, 3, .LCPI176_0@toc@l 22111; PWR8-NEXT: lxvd2x 35, 0, 3 22112; PWR8-NEXT: vcmpgtud 2, 2, 3 22113; PWR8-NEXT: blr 22114; 22115; PWR9-LABEL: ugt_39_v2i64: 22116; PWR9: # %bb.0: 22117; PWR9-NEXT: addis 3, 2, .LCPI176_0@toc@ha 22118; PWR9-NEXT: vpopcntd 2, 2 22119; PWR9-NEXT: addi 3, 3, .LCPI176_0@toc@l 22120; PWR9-NEXT: lxvx 35, 0, 3 22121; PWR9-NEXT: vcmpgtud 2, 2, 3 22122; PWR9-NEXT: blr 22123 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22124 %3 = icmp ugt <2 x i64> %2, <i64 39, i64 39> 22125 %4 = sext <2 x i1> %3 to <2 x i64> 22126 ret <2 x i64> %4 22127} 22128 22129define <2 x i64> @ult_40_v2i64(<2 x i64> %0) { 22130; PWR5-LABEL: ult_40_v2i64: 22131; PWR5: # %bb.0: 22132; PWR5-NEXT: lis 5, 21845 22133; PWR5-NEXT: lis 6, 13107 22134; PWR5-NEXT: ori 5, 5, 21845 22135; PWR5-NEXT: rotldi 8, 4, 63 22136; PWR5-NEXT: rotldi 9, 3, 63 22137; PWR5-NEXT: rldimi 5, 5, 32, 0 22138; PWR5-NEXT: and 8, 8, 5 22139; PWR5-NEXT: and 5, 9, 5 22140; PWR5-NEXT: ori 6, 6, 13107 22141; PWR5-NEXT: sub 3, 3, 5 22142; PWR5-NEXT: rldimi 6, 6, 32, 0 22143; PWR5-NEXT: sub 4, 4, 8 22144; PWR5-NEXT: and 8, 3, 6 22145; PWR5-NEXT: rotldi 3, 3, 62 22146; PWR5-NEXT: and 3, 3, 6 22147; PWR5-NEXT: lis 7, 3855 22148; PWR5-NEXT: and 5, 4, 6 22149; PWR5-NEXT: rotldi 4, 4, 62 22150; PWR5-NEXT: add 3, 8, 3 22151; PWR5-NEXT: lis 9, 257 22152; PWR5-NEXT: ori 7, 7, 3855 22153; PWR5-NEXT: and 4, 4, 6 22154; PWR5-NEXT: rldicl 6, 3, 60, 4 22155; PWR5-NEXT: ori 9, 9, 257 22156; PWR5-NEXT: rldimi 7, 7, 32, 0 22157; PWR5-NEXT: add 4, 5, 4 22158; PWR5-NEXT: add 3, 3, 6 22159; PWR5-NEXT: rldimi 9, 9, 32, 0 22160; PWR5-NEXT: rldicl 5, 4, 60, 4 22161; PWR5-NEXT: and 3, 3, 7 22162; PWR5-NEXT: add 4, 4, 5 22163; PWR5-NEXT: mulld 3, 3, 9 22164; PWR5-NEXT: and 4, 4, 7 22165; PWR5-NEXT: rldicl 3, 3, 8, 56 22166; PWR5-NEXT: li 5, 40 22167; PWR5-NEXT: mulld 4, 4, 9 22168; PWR5-NEXT: subc 6, 3, 5 22169; PWR5-NEXT: rldicl 4, 4, 8, 56 22170; PWR5-NEXT: subfe 3, 3, 3 22171; PWR5-NEXT: subc 5, 4, 5 22172; PWR5-NEXT: subfe 4, 4, 4 22173; PWR5-NEXT: blr 22174; 22175; PWR6-LABEL: ult_40_v2i64: 22176; PWR6: # %bb.0: 22177; PWR6-NEXT: lis 5, 21845 22178; PWR6-NEXT: lis 6, 13107 22179; PWR6-NEXT: ori 5, 5, 21845 22180; PWR6-NEXT: rotldi 8, 4, 63 22181; PWR6-NEXT: rotldi 9, 3, 63 22182; PWR6-NEXT: rldimi 5, 5, 32, 0 22183; PWR6-NEXT: and 8, 8, 5 22184; PWR6-NEXT: and 5, 9, 5 22185; PWR6-NEXT: ori 6, 6, 13107 22186; PWR6-NEXT: sub 3, 3, 5 22187; PWR6-NEXT: rldimi 6, 6, 32, 0 22188; PWR6-NEXT: sub 4, 4, 8 22189; PWR6-NEXT: and 8, 3, 6 22190; PWR6-NEXT: rotldi 3, 3, 62 22191; PWR6-NEXT: and 3, 3, 6 22192; PWR6-NEXT: lis 7, 3855 22193; PWR6-NEXT: and 5, 4, 6 22194; PWR6-NEXT: rotldi 4, 4, 62 22195; PWR6-NEXT: add 3, 8, 3 22196; PWR6-NEXT: lis 9, 257 22197; PWR6-NEXT: ori 7, 7, 3855 22198; PWR6-NEXT: and 4, 4, 6 22199; PWR6-NEXT: rldicl 6, 3, 60, 4 22200; PWR6-NEXT: ori 9, 9, 257 22201; PWR6-NEXT: rldimi 7, 7, 32, 0 22202; PWR6-NEXT: add 4, 5, 4 22203; PWR6-NEXT: add 3, 3, 6 22204; PWR6-NEXT: rldimi 9, 9, 32, 0 22205; PWR6-NEXT: rldicl 5, 4, 60, 4 22206; PWR6-NEXT: and 3, 3, 7 22207; PWR6-NEXT: add 4, 4, 5 22208; PWR6-NEXT: mulld 3, 3, 9 22209; PWR6-NEXT: and 4, 4, 7 22210; PWR6-NEXT: rldicl 3, 3, 8, 56 22211; PWR6-NEXT: li 5, 40 22212; PWR6-NEXT: mulld 4, 4, 9 22213; PWR6-NEXT: subc 6, 3, 5 22214; PWR6-NEXT: rldicl 4, 4, 8, 56 22215; PWR6-NEXT: subfe 3, 3, 3 22216; PWR6-NEXT: subc 5, 4, 5 22217; PWR6-NEXT: subfe 4, 4, 4 22218; PWR6-NEXT: blr 22219; 22220; PWR7-LABEL: ult_40_v2i64: 22221; PWR7: # %bb.0: 22222; PWR7-NEXT: addi 3, 1, -32 22223; PWR7-NEXT: li 5, 0 22224; PWR7-NEXT: li 6, -1 22225; PWR7-NEXT: stxvd2x 34, 0, 3 22226; PWR7-NEXT: ld 3, -24(1) 22227; PWR7-NEXT: ld 4, -32(1) 22228; PWR7-NEXT: popcntd 3, 3 22229; PWR7-NEXT: popcntd 4, 4 22230; PWR7-NEXT: cmpldi 3, 40 22231; PWR7-NEXT: isellt 3, 6, 5 22232; PWR7-NEXT: cmpldi 4, 40 22233; PWR7-NEXT: isellt 4, 6, 5 22234; PWR7-NEXT: std 3, -8(1) 22235; PWR7-NEXT: addi 3, 1, -16 22236; PWR7-NEXT: std 4, -16(1) 22237; PWR7-NEXT: lxvd2x 34, 0, 3 22238; PWR7-NEXT: blr 22239; 22240; PWR8-LABEL: ult_40_v2i64: 22241; PWR8: # %bb.0: 22242; PWR8-NEXT: addis 3, 2, .LCPI177_0@toc@ha 22243; PWR8-NEXT: vpopcntd 2, 2 22244; PWR8-NEXT: addi 3, 3, .LCPI177_0@toc@l 22245; PWR8-NEXT: lxvd2x 35, 0, 3 22246; PWR8-NEXT: vcmpgtud 2, 3, 2 22247; PWR8-NEXT: blr 22248; 22249; PWR9-LABEL: ult_40_v2i64: 22250; PWR9: # %bb.0: 22251; PWR9-NEXT: addis 3, 2, .LCPI177_0@toc@ha 22252; PWR9-NEXT: vpopcntd 2, 2 22253; PWR9-NEXT: addi 3, 3, .LCPI177_0@toc@l 22254; PWR9-NEXT: lxvx 35, 0, 3 22255; PWR9-NEXT: vcmpgtud 2, 3, 2 22256; PWR9-NEXT: blr 22257 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22258 %3 = icmp ult <2 x i64> %2, <i64 40, i64 40> 22259 %4 = sext <2 x i1> %3 to <2 x i64> 22260 ret <2 x i64> %4 22261} 22262 22263define <2 x i64> @ugt_40_v2i64(<2 x i64> %0) { 22264; PWR5-LABEL: ugt_40_v2i64: 22265; PWR5: # %bb.0: 22266; PWR5-NEXT: lis 5, 21845 22267; PWR5-NEXT: lis 6, 13107 22268; PWR5-NEXT: ori 5, 5, 21845 22269; PWR5-NEXT: rotldi 8, 4, 63 22270; PWR5-NEXT: rotldi 9, 3, 63 22271; PWR5-NEXT: rldimi 5, 5, 32, 0 22272; PWR5-NEXT: and 8, 8, 5 22273; PWR5-NEXT: and 5, 9, 5 22274; PWR5-NEXT: ori 6, 6, 13107 22275; PWR5-NEXT: sub 3, 3, 5 22276; PWR5-NEXT: rldimi 6, 6, 32, 0 22277; PWR5-NEXT: sub 4, 4, 8 22278; PWR5-NEXT: and 8, 3, 6 22279; PWR5-NEXT: rotldi 3, 3, 62 22280; PWR5-NEXT: and 3, 3, 6 22281; PWR5-NEXT: lis 7, 3855 22282; PWR5-NEXT: and 5, 4, 6 22283; PWR5-NEXT: rotldi 4, 4, 62 22284; PWR5-NEXT: add 3, 8, 3 22285; PWR5-NEXT: lis 9, 257 22286; PWR5-NEXT: ori 7, 7, 3855 22287; PWR5-NEXT: and 4, 4, 6 22288; PWR5-NEXT: rldicl 6, 3, 60, 4 22289; PWR5-NEXT: ori 9, 9, 257 22290; PWR5-NEXT: rldimi 7, 7, 32, 0 22291; PWR5-NEXT: add 4, 5, 4 22292; PWR5-NEXT: add 3, 3, 6 22293; PWR5-NEXT: rldimi 9, 9, 32, 0 22294; PWR5-NEXT: rldicl 5, 4, 60, 4 22295; PWR5-NEXT: and 3, 3, 7 22296; PWR5-NEXT: add 4, 4, 5 22297; PWR5-NEXT: mulld 3, 3, 9 22298; PWR5-NEXT: and 4, 4, 7 22299; PWR5-NEXT: rldicl 3, 3, 8, 56 22300; PWR5-NEXT: mulld 4, 4, 9 22301; PWR5-NEXT: li 5, 40 22302; PWR5-NEXT: subfic 3, 3, 40 22303; PWR5-NEXT: rldicl 4, 4, 8, 56 22304; PWR5-NEXT: subfe 3, 5, 5 22305; PWR5-NEXT: subfic 4, 4, 40 22306; PWR5-NEXT: subfe 4, 5, 5 22307; PWR5-NEXT: blr 22308; 22309; PWR6-LABEL: ugt_40_v2i64: 22310; PWR6: # %bb.0: 22311; PWR6-NEXT: lis 5, 21845 22312; PWR6-NEXT: lis 6, 13107 22313; PWR6-NEXT: ori 5, 5, 21845 22314; PWR6-NEXT: rotldi 8, 4, 63 22315; PWR6-NEXT: rotldi 9, 3, 63 22316; PWR6-NEXT: rldimi 5, 5, 32, 0 22317; PWR6-NEXT: and 8, 8, 5 22318; PWR6-NEXT: and 5, 9, 5 22319; PWR6-NEXT: ori 6, 6, 13107 22320; PWR6-NEXT: sub 3, 3, 5 22321; PWR6-NEXT: rldimi 6, 6, 32, 0 22322; PWR6-NEXT: sub 4, 4, 8 22323; PWR6-NEXT: and 8, 3, 6 22324; PWR6-NEXT: rotldi 3, 3, 62 22325; PWR6-NEXT: and 3, 3, 6 22326; PWR6-NEXT: lis 7, 3855 22327; PWR6-NEXT: and 5, 4, 6 22328; PWR6-NEXT: rotldi 4, 4, 62 22329; PWR6-NEXT: add 3, 8, 3 22330; PWR6-NEXT: lis 9, 257 22331; PWR6-NEXT: ori 7, 7, 3855 22332; PWR6-NEXT: and 4, 4, 6 22333; PWR6-NEXT: rldicl 6, 3, 60, 4 22334; PWR6-NEXT: ori 9, 9, 257 22335; PWR6-NEXT: rldimi 7, 7, 32, 0 22336; PWR6-NEXT: add 4, 5, 4 22337; PWR6-NEXT: add 3, 3, 6 22338; PWR6-NEXT: rldimi 9, 9, 32, 0 22339; PWR6-NEXT: rldicl 5, 4, 60, 4 22340; PWR6-NEXT: and 3, 3, 7 22341; PWR6-NEXT: add 4, 4, 5 22342; PWR6-NEXT: mulld 3, 3, 9 22343; PWR6-NEXT: and 4, 4, 7 22344; PWR6-NEXT: rldicl 3, 3, 8, 56 22345; PWR6-NEXT: mulld 4, 4, 9 22346; PWR6-NEXT: li 5, 40 22347; PWR6-NEXT: subfic 3, 3, 40 22348; PWR6-NEXT: rldicl 4, 4, 8, 56 22349; PWR6-NEXT: subfe 3, 5, 5 22350; PWR6-NEXT: subfic 4, 4, 40 22351; PWR6-NEXT: subfe 4, 5, 5 22352; PWR6-NEXT: blr 22353; 22354; PWR7-LABEL: ugt_40_v2i64: 22355; PWR7: # %bb.0: 22356; PWR7-NEXT: addi 3, 1, -32 22357; PWR7-NEXT: li 5, 0 22358; PWR7-NEXT: li 6, -1 22359; PWR7-NEXT: stxvd2x 34, 0, 3 22360; PWR7-NEXT: ld 3, -24(1) 22361; PWR7-NEXT: ld 4, -32(1) 22362; PWR7-NEXT: popcntd 3, 3 22363; PWR7-NEXT: popcntd 4, 4 22364; PWR7-NEXT: cmpldi 3, 40 22365; PWR7-NEXT: iselgt 3, 6, 5 22366; PWR7-NEXT: cmpldi 4, 40 22367; PWR7-NEXT: iselgt 4, 6, 5 22368; PWR7-NEXT: std 3, -8(1) 22369; PWR7-NEXT: addi 3, 1, -16 22370; PWR7-NEXT: std 4, -16(1) 22371; PWR7-NEXT: lxvd2x 34, 0, 3 22372; PWR7-NEXT: blr 22373; 22374; PWR8-LABEL: ugt_40_v2i64: 22375; PWR8: # %bb.0: 22376; PWR8-NEXT: addis 3, 2, .LCPI178_0@toc@ha 22377; PWR8-NEXT: vpopcntd 2, 2 22378; PWR8-NEXT: addi 3, 3, .LCPI178_0@toc@l 22379; PWR8-NEXT: lxvd2x 35, 0, 3 22380; PWR8-NEXT: vcmpgtud 2, 2, 3 22381; PWR8-NEXT: blr 22382; 22383; PWR9-LABEL: ugt_40_v2i64: 22384; PWR9: # %bb.0: 22385; PWR9-NEXT: addis 3, 2, .LCPI178_0@toc@ha 22386; PWR9-NEXT: vpopcntd 2, 2 22387; PWR9-NEXT: addi 3, 3, .LCPI178_0@toc@l 22388; PWR9-NEXT: lxvx 35, 0, 3 22389; PWR9-NEXT: vcmpgtud 2, 2, 3 22390; PWR9-NEXT: blr 22391 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22392 %3 = icmp ugt <2 x i64> %2, <i64 40, i64 40> 22393 %4 = sext <2 x i1> %3 to <2 x i64> 22394 ret <2 x i64> %4 22395} 22396 22397define <2 x i64> @ult_41_v2i64(<2 x i64> %0) { 22398; PWR5-LABEL: ult_41_v2i64: 22399; PWR5: # %bb.0: 22400; PWR5-NEXT: lis 5, 21845 22401; PWR5-NEXT: lis 6, 13107 22402; PWR5-NEXT: ori 5, 5, 21845 22403; PWR5-NEXT: rotldi 8, 4, 63 22404; PWR5-NEXT: rotldi 9, 3, 63 22405; PWR5-NEXT: rldimi 5, 5, 32, 0 22406; PWR5-NEXT: and 8, 8, 5 22407; PWR5-NEXT: and 5, 9, 5 22408; PWR5-NEXT: ori 6, 6, 13107 22409; PWR5-NEXT: sub 3, 3, 5 22410; PWR5-NEXT: rldimi 6, 6, 32, 0 22411; PWR5-NEXT: sub 4, 4, 8 22412; PWR5-NEXT: and 8, 3, 6 22413; PWR5-NEXT: rotldi 3, 3, 62 22414; PWR5-NEXT: and 3, 3, 6 22415; PWR5-NEXT: lis 7, 3855 22416; PWR5-NEXT: and 5, 4, 6 22417; PWR5-NEXT: rotldi 4, 4, 62 22418; PWR5-NEXT: add 3, 8, 3 22419; PWR5-NEXT: lis 9, 257 22420; PWR5-NEXT: ori 7, 7, 3855 22421; PWR5-NEXT: and 4, 4, 6 22422; PWR5-NEXT: rldicl 6, 3, 60, 4 22423; PWR5-NEXT: ori 9, 9, 257 22424; PWR5-NEXT: rldimi 7, 7, 32, 0 22425; PWR5-NEXT: add 4, 5, 4 22426; PWR5-NEXT: add 3, 3, 6 22427; PWR5-NEXT: rldimi 9, 9, 32, 0 22428; PWR5-NEXT: rldicl 5, 4, 60, 4 22429; PWR5-NEXT: and 3, 3, 7 22430; PWR5-NEXT: add 4, 4, 5 22431; PWR5-NEXT: mulld 3, 3, 9 22432; PWR5-NEXT: and 4, 4, 7 22433; PWR5-NEXT: rldicl 3, 3, 8, 56 22434; PWR5-NEXT: li 5, 41 22435; PWR5-NEXT: mulld 4, 4, 9 22436; PWR5-NEXT: subc 6, 3, 5 22437; PWR5-NEXT: rldicl 4, 4, 8, 56 22438; PWR5-NEXT: subfe 3, 3, 3 22439; PWR5-NEXT: subc 5, 4, 5 22440; PWR5-NEXT: subfe 4, 4, 4 22441; PWR5-NEXT: blr 22442; 22443; PWR6-LABEL: ult_41_v2i64: 22444; PWR6: # %bb.0: 22445; PWR6-NEXT: lis 5, 21845 22446; PWR6-NEXT: lis 6, 13107 22447; PWR6-NEXT: ori 5, 5, 21845 22448; PWR6-NEXT: rotldi 8, 4, 63 22449; PWR6-NEXT: rotldi 9, 3, 63 22450; PWR6-NEXT: rldimi 5, 5, 32, 0 22451; PWR6-NEXT: and 8, 8, 5 22452; PWR6-NEXT: and 5, 9, 5 22453; PWR6-NEXT: ori 6, 6, 13107 22454; PWR6-NEXT: sub 3, 3, 5 22455; PWR6-NEXT: rldimi 6, 6, 32, 0 22456; PWR6-NEXT: sub 4, 4, 8 22457; PWR6-NEXT: and 8, 3, 6 22458; PWR6-NEXT: rotldi 3, 3, 62 22459; PWR6-NEXT: and 3, 3, 6 22460; PWR6-NEXT: lis 7, 3855 22461; PWR6-NEXT: and 5, 4, 6 22462; PWR6-NEXT: rotldi 4, 4, 62 22463; PWR6-NEXT: add 3, 8, 3 22464; PWR6-NEXT: lis 9, 257 22465; PWR6-NEXT: ori 7, 7, 3855 22466; PWR6-NEXT: and 4, 4, 6 22467; PWR6-NEXT: rldicl 6, 3, 60, 4 22468; PWR6-NEXT: ori 9, 9, 257 22469; PWR6-NEXT: rldimi 7, 7, 32, 0 22470; PWR6-NEXT: add 4, 5, 4 22471; PWR6-NEXT: add 3, 3, 6 22472; PWR6-NEXT: rldimi 9, 9, 32, 0 22473; PWR6-NEXT: rldicl 5, 4, 60, 4 22474; PWR6-NEXT: and 3, 3, 7 22475; PWR6-NEXT: add 4, 4, 5 22476; PWR6-NEXT: mulld 3, 3, 9 22477; PWR6-NEXT: and 4, 4, 7 22478; PWR6-NEXT: rldicl 3, 3, 8, 56 22479; PWR6-NEXT: li 5, 41 22480; PWR6-NEXT: mulld 4, 4, 9 22481; PWR6-NEXT: subc 6, 3, 5 22482; PWR6-NEXT: rldicl 4, 4, 8, 56 22483; PWR6-NEXT: subfe 3, 3, 3 22484; PWR6-NEXT: subc 5, 4, 5 22485; PWR6-NEXT: subfe 4, 4, 4 22486; PWR6-NEXT: blr 22487; 22488; PWR7-LABEL: ult_41_v2i64: 22489; PWR7: # %bb.0: 22490; PWR7-NEXT: addi 3, 1, -32 22491; PWR7-NEXT: li 5, 0 22492; PWR7-NEXT: li 6, -1 22493; PWR7-NEXT: stxvd2x 34, 0, 3 22494; PWR7-NEXT: ld 3, -24(1) 22495; PWR7-NEXT: ld 4, -32(1) 22496; PWR7-NEXT: popcntd 3, 3 22497; PWR7-NEXT: popcntd 4, 4 22498; PWR7-NEXT: cmpldi 3, 41 22499; PWR7-NEXT: isellt 3, 6, 5 22500; PWR7-NEXT: cmpldi 4, 41 22501; PWR7-NEXT: isellt 4, 6, 5 22502; PWR7-NEXT: std 3, -8(1) 22503; PWR7-NEXT: addi 3, 1, -16 22504; PWR7-NEXT: std 4, -16(1) 22505; PWR7-NEXT: lxvd2x 34, 0, 3 22506; PWR7-NEXT: blr 22507; 22508; PWR8-LABEL: ult_41_v2i64: 22509; PWR8: # %bb.0: 22510; PWR8-NEXT: addis 3, 2, .LCPI179_0@toc@ha 22511; PWR8-NEXT: vpopcntd 2, 2 22512; PWR8-NEXT: addi 3, 3, .LCPI179_0@toc@l 22513; PWR8-NEXT: lxvd2x 35, 0, 3 22514; PWR8-NEXT: vcmpgtud 2, 3, 2 22515; PWR8-NEXT: blr 22516; 22517; PWR9-LABEL: ult_41_v2i64: 22518; PWR9: # %bb.0: 22519; PWR9-NEXT: addis 3, 2, .LCPI179_0@toc@ha 22520; PWR9-NEXT: vpopcntd 2, 2 22521; PWR9-NEXT: addi 3, 3, .LCPI179_0@toc@l 22522; PWR9-NEXT: lxvx 35, 0, 3 22523; PWR9-NEXT: vcmpgtud 2, 3, 2 22524; PWR9-NEXT: blr 22525 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22526 %3 = icmp ult <2 x i64> %2, <i64 41, i64 41> 22527 %4 = sext <2 x i1> %3 to <2 x i64> 22528 ret <2 x i64> %4 22529} 22530 22531define <2 x i64> @ugt_41_v2i64(<2 x i64> %0) { 22532; PWR5-LABEL: ugt_41_v2i64: 22533; PWR5: # %bb.0: 22534; PWR5-NEXT: lis 5, 21845 22535; PWR5-NEXT: lis 6, 13107 22536; PWR5-NEXT: ori 5, 5, 21845 22537; PWR5-NEXT: rotldi 8, 4, 63 22538; PWR5-NEXT: rotldi 9, 3, 63 22539; PWR5-NEXT: rldimi 5, 5, 32, 0 22540; PWR5-NEXT: and 8, 8, 5 22541; PWR5-NEXT: and 5, 9, 5 22542; PWR5-NEXT: ori 6, 6, 13107 22543; PWR5-NEXT: sub 3, 3, 5 22544; PWR5-NEXT: rldimi 6, 6, 32, 0 22545; PWR5-NEXT: sub 4, 4, 8 22546; PWR5-NEXT: and 8, 3, 6 22547; PWR5-NEXT: rotldi 3, 3, 62 22548; PWR5-NEXT: and 3, 3, 6 22549; PWR5-NEXT: lis 7, 3855 22550; PWR5-NEXT: and 5, 4, 6 22551; PWR5-NEXT: rotldi 4, 4, 62 22552; PWR5-NEXT: add 3, 8, 3 22553; PWR5-NEXT: lis 9, 257 22554; PWR5-NEXT: ori 7, 7, 3855 22555; PWR5-NEXT: and 4, 4, 6 22556; PWR5-NEXT: rldicl 6, 3, 60, 4 22557; PWR5-NEXT: ori 9, 9, 257 22558; PWR5-NEXT: rldimi 7, 7, 32, 0 22559; PWR5-NEXT: add 4, 5, 4 22560; PWR5-NEXT: add 3, 3, 6 22561; PWR5-NEXT: rldimi 9, 9, 32, 0 22562; PWR5-NEXT: rldicl 5, 4, 60, 4 22563; PWR5-NEXT: and 3, 3, 7 22564; PWR5-NEXT: add 4, 4, 5 22565; PWR5-NEXT: mulld 3, 3, 9 22566; PWR5-NEXT: and 4, 4, 7 22567; PWR5-NEXT: rldicl 3, 3, 8, 56 22568; PWR5-NEXT: mulld 4, 4, 9 22569; PWR5-NEXT: li 5, 41 22570; PWR5-NEXT: subfic 3, 3, 41 22571; PWR5-NEXT: rldicl 4, 4, 8, 56 22572; PWR5-NEXT: subfe 3, 5, 5 22573; PWR5-NEXT: subfic 4, 4, 41 22574; PWR5-NEXT: subfe 4, 5, 5 22575; PWR5-NEXT: blr 22576; 22577; PWR6-LABEL: ugt_41_v2i64: 22578; PWR6: # %bb.0: 22579; PWR6-NEXT: lis 5, 21845 22580; PWR6-NEXT: lis 6, 13107 22581; PWR6-NEXT: ori 5, 5, 21845 22582; PWR6-NEXT: rotldi 8, 4, 63 22583; PWR6-NEXT: rotldi 9, 3, 63 22584; PWR6-NEXT: rldimi 5, 5, 32, 0 22585; PWR6-NEXT: and 8, 8, 5 22586; PWR6-NEXT: and 5, 9, 5 22587; PWR6-NEXT: ori 6, 6, 13107 22588; PWR6-NEXT: sub 3, 3, 5 22589; PWR6-NEXT: rldimi 6, 6, 32, 0 22590; PWR6-NEXT: sub 4, 4, 8 22591; PWR6-NEXT: and 8, 3, 6 22592; PWR6-NEXT: rotldi 3, 3, 62 22593; PWR6-NEXT: and 3, 3, 6 22594; PWR6-NEXT: lis 7, 3855 22595; PWR6-NEXT: and 5, 4, 6 22596; PWR6-NEXT: rotldi 4, 4, 62 22597; PWR6-NEXT: add 3, 8, 3 22598; PWR6-NEXT: lis 9, 257 22599; PWR6-NEXT: ori 7, 7, 3855 22600; PWR6-NEXT: and 4, 4, 6 22601; PWR6-NEXT: rldicl 6, 3, 60, 4 22602; PWR6-NEXT: ori 9, 9, 257 22603; PWR6-NEXT: rldimi 7, 7, 32, 0 22604; PWR6-NEXT: add 4, 5, 4 22605; PWR6-NEXT: add 3, 3, 6 22606; PWR6-NEXT: rldimi 9, 9, 32, 0 22607; PWR6-NEXT: rldicl 5, 4, 60, 4 22608; PWR6-NEXT: and 3, 3, 7 22609; PWR6-NEXT: add 4, 4, 5 22610; PWR6-NEXT: mulld 3, 3, 9 22611; PWR6-NEXT: and 4, 4, 7 22612; PWR6-NEXT: rldicl 3, 3, 8, 56 22613; PWR6-NEXT: mulld 4, 4, 9 22614; PWR6-NEXT: li 5, 41 22615; PWR6-NEXT: subfic 3, 3, 41 22616; PWR6-NEXT: rldicl 4, 4, 8, 56 22617; PWR6-NEXT: subfe 3, 5, 5 22618; PWR6-NEXT: subfic 4, 4, 41 22619; PWR6-NEXT: subfe 4, 5, 5 22620; PWR6-NEXT: blr 22621; 22622; PWR7-LABEL: ugt_41_v2i64: 22623; PWR7: # %bb.0: 22624; PWR7-NEXT: addi 3, 1, -32 22625; PWR7-NEXT: li 5, 0 22626; PWR7-NEXT: li 6, -1 22627; PWR7-NEXT: stxvd2x 34, 0, 3 22628; PWR7-NEXT: ld 3, -24(1) 22629; PWR7-NEXT: ld 4, -32(1) 22630; PWR7-NEXT: popcntd 3, 3 22631; PWR7-NEXT: popcntd 4, 4 22632; PWR7-NEXT: cmpldi 3, 41 22633; PWR7-NEXT: iselgt 3, 6, 5 22634; PWR7-NEXT: cmpldi 4, 41 22635; PWR7-NEXT: iselgt 4, 6, 5 22636; PWR7-NEXT: std 3, -8(1) 22637; PWR7-NEXT: addi 3, 1, -16 22638; PWR7-NEXT: std 4, -16(1) 22639; PWR7-NEXT: lxvd2x 34, 0, 3 22640; PWR7-NEXT: blr 22641; 22642; PWR8-LABEL: ugt_41_v2i64: 22643; PWR8: # %bb.0: 22644; PWR8-NEXT: addis 3, 2, .LCPI180_0@toc@ha 22645; PWR8-NEXT: vpopcntd 2, 2 22646; PWR8-NEXT: addi 3, 3, .LCPI180_0@toc@l 22647; PWR8-NEXT: lxvd2x 35, 0, 3 22648; PWR8-NEXT: vcmpgtud 2, 2, 3 22649; PWR8-NEXT: blr 22650; 22651; PWR9-LABEL: ugt_41_v2i64: 22652; PWR9: # %bb.0: 22653; PWR9-NEXT: addis 3, 2, .LCPI180_0@toc@ha 22654; PWR9-NEXT: vpopcntd 2, 2 22655; PWR9-NEXT: addi 3, 3, .LCPI180_0@toc@l 22656; PWR9-NEXT: lxvx 35, 0, 3 22657; PWR9-NEXT: vcmpgtud 2, 2, 3 22658; PWR9-NEXT: blr 22659 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22660 %3 = icmp ugt <2 x i64> %2, <i64 41, i64 41> 22661 %4 = sext <2 x i1> %3 to <2 x i64> 22662 ret <2 x i64> %4 22663} 22664 22665define <2 x i64> @ult_42_v2i64(<2 x i64> %0) { 22666; PWR5-LABEL: ult_42_v2i64: 22667; PWR5: # %bb.0: 22668; PWR5-NEXT: lis 5, 21845 22669; PWR5-NEXT: lis 6, 13107 22670; PWR5-NEXT: ori 5, 5, 21845 22671; PWR5-NEXT: rotldi 8, 4, 63 22672; PWR5-NEXT: rotldi 9, 3, 63 22673; PWR5-NEXT: rldimi 5, 5, 32, 0 22674; PWR5-NEXT: and 8, 8, 5 22675; PWR5-NEXT: and 5, 9, 5 22676; PWR5-NEXT: ori 6, 6, 13107 22677; PWR5-NEXT: sub 3, 3, 5 22678; PWR5-NEXT: rldimi 6, 6, 32, 0 22679; PWR5-NEXT: sub 4, 4, 8 22680; PWR5-NEXT: and 8, 3, 6 22681; PWR5-NEXT: rotldi 3, 3, 62 22682; PWR5-NEXT: and 3, 3, 6 22683; PWR5-NEXT: lis 7, 3855 22684; PWR5-NEXT: and 5, 4, 6 22685; PWR5-NEXT: rotldi 4, 4, 62 22686; PWR5-NEXT: add 3, 8, 3 22687; PWR5-NEXT: lis 9, 257 22688; PWR5-NEXT: ori 7, 7, 3855 22689; PWR5-NEXT: and 4, 4, 6 22690; PWR5-NEXT: rldicl 6, 3, 60, 4 22691; PWR5-NEXT: ori 9, 9, 257 22692; PWR5-NEXT: rldimi 7, 7, 32, 0 22693; PWR5-NEXT: add 4, 5, 4 22694; PWR5-NEXT: add 3, 3, 6 22695; PWR5-NEXT: rldimi 9, 9, 32, 0 22696; PWR5-NEXT: rldicl 5, 4, 60, 4 22697; PWR5-NEXT: and 3, 3, 7 22698; PWR5-NEXT: add 4, 4, 5 22699; PWR5-NEXT: mulld 3, 3, 9 22700; PWR5-NEXT: and 4, 4, 7 22701; PWR5-NEXT: rldicl 3, 3, 8, 56 22702; PWR5-NEXT: li 5, 42 22703; PWR5-NEXT: mulld 4, 4, 9 22704; PWR5-NEXT: subc 6, 3, 5 22705; PWR5-NEXT: rldicl 4, 4, 8, 56 22706; PWR5-NEXT: subfe 3, 3, 3 22707; PWR5-NEXT: subc 5, 4, 5 22708; PWR5-NEXT: subfe 4, 4, 4 22709; PWR5-NEXT: blr 22710; 22711; PWR6-LABEL: ult_42_v2i64: 22712; PWR6: # %bb.0: 22713; PWR6-NEXT: lis 5, 21845 22714; PWR6-NEXT: lis 6, 13107 22715; PWR6-NEXT: ori 5, 5, 21845 22716; PWR6-NEXT: rotldi 8, 4, 63 22717; PWR6-NEXT: rotldi 9, 3, 63 22718; PWR6-NEXT: rldimi 5, 5, 32, 0 22719; PWR6-NEXT: and 8, 8, 5 22720; PWR6-NEXT: and 5, 9, 5 22721; PWR6-NEXT: ori 6, 6, 13107 22722; PWR6-NEXT: sub 3, 3, 5 22723; PWR6-NEXT: rldimi 6, 6, 32, 0 22724; PWR6-NEXT: sub 4, 4, 8 22725; PWR6-NEXT: and 8, 3, 6 22726; PWR6-NEXT: rotldi 3, 3, 62 22727; PWR6-NEXT: and 3, 3, 6 22728; PWR6-NEXT: lis 7, 3855 22729; PWR6-NEXT: and 5, 4, 6 22730; PWR6-NEXT: rotldi 4, 4, 62 22731; PWR6-NEXT: add 3, 8, 3 22732; PWR6-NEXT: lis 9, 257 22733; PWR6-NEXT: ori 7, 7, 3855 22734; PWR6-NEXT: and 4, 4, 6 22735; PWR6-NEXT: rldicl 6, 3, 60, 4 22736; PWR6-NEXT: ori 9, 9, 257 22737; PWR6-NEXT: rldimi 7, 7, 32, 0 22738; PWR6-NEXT: add 4, 5, 4 22739; PWR6-NEXT: add 3, 3, 6 22740; PWR6-NEXT: rldimi 9, 9, 32, 0 22741; PWR6-NEXT: rldicl 5, 4, 60, 4 22742; PWR6-NEXT: and 3, 3, 7 22743; PWR6-NEXT: add 4, 4, 5 22744; PWR6-NEXT: mulld 3, 3, 9 22745; PWR6-NEXT: and 4, 4, 7 22746; PWR6-NEXT: rldicl 3, 3, 8, 56 22747; PWR6-NEXT: li 5, 42 22748; PWR6-NEXT: mulld 4, 4, 9 22749; PWR6-NEXT: subc 6, 3, 5 22750; PWR6-NEXT: rldicl 4, 4, 8, 56 22751; PWR6-NEXT: subfe 3, 3, 3 22752; PWR6-NEXT: subc 5, 4, 5 22753; PWR6-NEXT: subfe 4, 4, 4 22754; PWR6-NEXT: blr 22755; 22756; PWR7-LABEL: ult_42_v2i64: 22757; PWR7: # %bb.0: 22758; PWR7-NEXT: addi 3, 1, -32 22759; PWR7-NEXT: li 5, 0 22760; PWR7-NEXT: li 6, -1 22761; PWR7-NEXT: stxvd2x 34, 0, 3 22762; PWR7-NEXT: ld 3, -24(1) 22763; PWR7-NEXT: ld 4, -32(1) 22764; PWR7-NEXT: popcntd 3, 3 22765; PWR7-NEXT: popcntd 4, 4 22766; PWR7-NEXT: cmpldi 3, 42 22767; PWR7-NEXT: isellt 3, 6, 5 22768; PWR7-NEXT: cmpldi 4, 42 22769; PWR7-NEXT: isellt 4, 6, 5 22770; PWR7-NEXT: std 3, -8(1) 22771; PWR7-NEXT: addi 3, 1, -16 22772; PWR7-NEXT: std 4, -16(1) 22773; PWR7-NEXT: lxvd2x 34, 0, 3 22774; PWR7-NEXT: blr 22775; 22776; PWR8-LABEL: ult_42_v2i64: 22777; PWR8: # %bb.0: 22778; PWR8-NEXT: addis 3, 2, .LCPI181_0@toc@ha 22779; PWR8-NEXT: vpopcntd 2, 2 22780; PWR8-NEXT: addi 3, 3, .LCPI181_0@toc@l 22781; PWR8-NEXT: lxvd2x 35, 0, 3 22782; PWR8-NEXT: vcmpgtud 2, 3, 2 22783; PWR8-NEXT: blr 22784; 22785; PWR9-LABEL: ult_42_v2i64: 22786; PWR9: # %bb.0: 22787; PWR9-NEXT: addis 3, 2, .LCPI181_0@toc@ha 22788; PWR9-NEXT: vpopcntd 2, 2 22789; PWR9-NEXT: addi 3, 3, .LCPI181_0@toc@l 22790; PWR9-NEXT: lxvx 35, 0, 3 22791; PWR9-NEXT: vcmpgtud 2, 3, 2 22792; PWR9-NEXT: blr 22793 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22794 %3 = icmp ult <2 x i64> %2, <i64 42, i64 42> 22795 %4 = sext <2 x i1> %3 to <2 x i64> 22796 ret <2 x i64> %4 22797} 22798 22799define <2 x i64> @ugt_42_v2i64(<2 x i64> %0) { 22800; PWR5-LABEL: ugt_42_v2i64: 22801; PWR5: # %bb.0: 22802; PWR5-NEXT: lis 5, 21845 22803; PWR5-NEXT: lis 6, 13107 22804; PWR5-NEXT: ori 5, 5, 21845 22805; PWR5-NEXT: rotldi 8, 4, 63 22806; PWR5-NEXT: rotldi 9, 3, 63 22807; PWR5-NEXT: rldimi 5, 5, 32, 0 22808; PWR5-NEXT: and 8, 8, 5 22809; PWR5-NEXT: and 5, 9, 5 22810; PWR5-NEXT: ori 6, 6, 13107 22811; PWR5-NEXT: sub 3, 3, 5 22812; PWR5-NEXT: rldimi 6, 6, 32, 0 22813; PWR5-NEXT: sub 4, 4, 8 22814; PWR5-NEXT: and 8, 3, 6 22815; PWR5-NEXT: rotldi 3, 3, 62 22816; PWR5-NEXT: and 3, 3, 6 22817; PWR5-NEXT: lis 7, 3855 22818; PWR5-NEXT: and 5, 4, 6 22819; PWR5-NEXT: rotldi 4, 4, 62 22820; PWR5-NEXT: add 3, 8, 3 22821; PWR5-NEXT: lis 9, 257 22822; PWR5-NEXT: ori 7, 7, 3855 22823; PWR5-NEXT: and 4, 4, 6 22824; PWR5-NEXT: rldicl 6, 3, 60, 4 22825; PWR5-NEXT: ori 9, 9, 257 22826; PWR5-NEXT: rldimi 7, 7, 32, 0 22827; PWR5-NEXT: add 4, 5, 4 22828; PWR5-NEXT: add 3, 3, 6 22829; PWR5-NEXT: rldimi 9, 9, 32, 0 22830; PWR5-NEXT: rldicl 5, 4, 60, 4 22831; PWR5-NEXT: and 3, 3, 7 22832; PWR5-NEXT: add 4, 4, 5 22833; PWR5-NEXT: mulld 3, 3, 9 22834; PWR5-NEXT: and 4, 4, 7 22835; PWR5-NEXT: rldicl 3, 3, 8, 56 22836; PWR5-NEXT: mulld 4, 4, 9 22837; PWR5-NEXT: li 5, 42 22838; PWR5-NEXT: subfic 3, 3, 42 22839; PWR5-NEXT: rldicl 4, 4, 8, 56 22840; PWR5-NEXT: subfe 3, 5, 5 22841; PWR5-NEXT: subfic 4, 4, 42 22842; PWR5-NEXT: subfe 4, 5, 5 22843; PWR5-NEXT: blr 22844; 22845; PWR6-LABEL: ugt_42_v2i64: 22846; PWR6: # %bb.0: 22847; PWR6-NEXT: lis 5, 21845 22848; PWR6-NEXT: lis 6, 13107 22849; PWR6-NEXT: ori 5, 5, 21845 22850; PWR6-NEXT: rotldi 8, 4, 63 22851; PWR6-NEXT: rotldi 9, 3, 63 22852; PWR6-NEXT: rldimi 5, 5, 32, 0 22853; PWR6-NEXT: and 8, 8, 5 22854; PWR6-NEXT: and 5, 9, 5 22855; PWR6-NEXT: ori 6, 6, 13107 22856; PWR6-NEXT: sub 3, 3, 5 22857; PWR6-NEXT: rldimi 6, 6, 32, 0 22858; PWR6-NEXT: sub 4, 4, 8 22859; PWR6-NEXT: and 8, 3, 6 22860; PWR6-NEXT: rotldi 3, 3, 62 22861; PWR6-NEXT: and 3, 3, 6 22862; PWR6-NEXT: lis 7, 3855 22863; PWR6-NEXT: and 5, 4, 6 22864; PWR6-NEXT: rotldi 4, 4, 62 22865; PWR6-NEXT: add 3, 8, 3 22866; PWR6-NEXT: lis 9, 257 22867; PWR6-NEXT: ori 7, 7, 3855 22868; PWR6-NEXT: and 4, 4, 6 22869; PWR6-NEXT: rldicl 6, 3, 60, 4 22870; PWR6-NEXT: ori 9, 9, 257 22871; PWR6-NEXT: rldimi 7, 7, 32, 0 22872; PWR6-NEXT: add 4, 5, 4 22873; PWR6-NEXT: add 3, 3, 6 22874; PWR6-NEXT: rldimi 9, 9, 32, 0 22875; PWR6-NEXT: rldicl 5, 4, 60, 4 22876; PWR6-NEXT: and 3, 3, 7 22877; PWR6-NEXT: add 4, 4, 5 22878; PWR6-NEXT: mulld 3, 3, 9 22879; PWR6-NEXT: and 4, 4, 7 22880; PWR6-NEXT: rldicl 3, 3, 8, 56 22881; PWR6-NEXT: mulld 4, 4, 9 22882; PWR6-NEXT: li 5, 42 22883; PWR6-NEXT: subfic 3, 3, 42 22884; PWR6-NEXT: rldicl 4, 4, 8, 56 22885; PWR6-NEXT: subfe 3, 5, 5 22886; PWR6-NEXT: subfic 4, 4, 42 22887; PWR6-NEXT: subfe 4, 5, 5 22888; PWR6-NEXT: blr 22889; 22890; PWR7-LABEL: ugt_42_v2i64: 22891; PWR7: # %bb.0: 22892; PWR7-NEXT: addi 3, 1, -32 22893; PWR7-NEXT: li 5, 0 22894; PWR7-NEXT: li 6, -1 22895; PWR7-NEXT: stxvd2x 34, 0, 3 22896; PWR7-NEXT: ld 3, -24(1) 22897; PWR7-NEXT: ld 4, -32(1) 22898; PWR7-NEXT: popcntd 3, 3 22899; PWR7-NEXT: popcntd 4, 4 22900; PWR7-NEXT: cmpldi 3, 42 22901; PWR7-NEXT: iselgt 3, 6, 5 22902; PWR7-NEXT: cmpldi 4, 42 22903; PWR7-NEXT: iselgt 4, 6, 5 22904; PWR7-NEXT: std 3, -8(1) 22905; PWR7-NEXT: addi 3, 1, -16 22906; PWR7-NEXT: std 4, -16(1) 22907; PWR7-NEXT: lxvd2x 34, 0, 3 22908; PWR7-NEXT: blr 22909; 22910; PWR8-LABEL: ugt_42_v2i64: 22911; PWR8: # %bb.0: 22912; PWR8-NEXT: addis 3, 2, .LCPI182_0@toc@ha 22913; PWR8-NEXT: vpopcntd 2, 2 22914; PWR8-NEXT: addi 3, 3, .LCPI182_0@toc@l 22915; PWR8-NEXT: lxvd2x 35, 0, 3 22916; PWR8-NEXT: vcmpgtud 2, 2, 3 22917; PWR8-NEXT: blr 22918; 22919; PWR9-LABEL: ugt_42_v2i64: 22920; PWR9: # %bb.0: 22921; PWR9-NEXT: addis 3, 2, .LCPI182_0@toc@ha 22922; PWR9-NEXT: vpopcntd 2, 2 22923; PWR9-NEXT: addi 3, 3, .LCPI182_0@toc@l 22924; PWR9-NEXT: lxvx 35, 0, 3 22925; PWR9-NEXT: vcmpgtud 2, 2, 3 22926; PWR9-NEXT: blr 22927 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22928 %3 = icmp ugt <2 x i64> %2, <i64 42, i64 42> 22929 %4 = sext <2 x i1> %3 to <2 x i64> 22930 ret <2 x i64> %4 22931} 22932 22933define <2 x i64> @ult_43_v2i64(<2 x i64> %0) { 22934; PWR5-LABEL: ult_43_v2i64: 22935; PWR5: # %bb.0: 22936; PWR5-NEXT: lis 5, 21845 22937; PWR5-NEXT: lis 6, 13107 22938; PWR5-NEXT: ori 5, 5, 21845 22939; PWR5-NEXT: rotldi 8, 4, 63 22940; PWR5-NEXT: rotldi 9, 3, 63 22941; PWR5-NEXT: rldimi 5, 5, 32, 0 22942; PWR5-NEXT: and 8, 8, 5 22943; PWR5-NEXT: and 5, 9, 5 22944; PWR5-NEXT: ori 6, 6, 13107 22945; PWR5-NEXT: sub 3, 3, 5 22946; PWR5-NEXT: rldimi 6, 6, 32, 0 22947; PWR5-NEXT: sub 4, 4, 8 22948; PWR5-NEXT: and 8, 3, 6 22949; PWR5-NEXT: rotldi 3, 3, 62 22950; PWR5-NEXT: and 3, 3, 6 22951; PWR5-NEXT: lis 7, 3855 22952; PWR5-NEXT: and 5, 4, 6 22953; PWR5-NEXT: rotldi 4, 4, 62 22954; PWR5-NEXT: add 3, 8, 3 22955; PWR5-NEXT: lis 9, 257 22956; PWR5-NEXT: ori 7, 7, 3855 22957; PWR5-NEXT: and 4, 4, 6 22958; PWR5-NEXT: rldicl 6, 3, 60, 4 22959; PWR5-NEXT: ori 9, 9, 257 22960; PWR5-NEXT: rldimi 7, 7, 32, 0 22961; PWR5-NEXT: add 4, 5, 4 22962; PWR5-NEXT: add 3, 3, 6 22963; PWR5-NEXT: rldimi 9, 9, 32, 0 22964; PWR5-NEXT: rldicl 5, 4, 60, 4 22965; PWR5-NEXT: and 3, 3, 7 22966; PWR5-NEXT: add 4, 4, 5 22967; PWR5-NEXT: mulld 3, 3, 9 22968; PWR5-NEXT: and 4, 4, 7 22969; PWR5-NEXT: rldicl 3, 3, 8, 56 22970; PWR5-NEXT: li 5, 43 22971; PWR5-NEXT: mulld 4, 4, 9 22972; PWR5-NEXT: subc 6, 3, 5 22973; PWR5-NEXT: rldicl 4, 4, 8, 56 22974; PWR5-NEXT: subfe 3, 3, 3 22975; PWR5-NEXT: subc 5, 4, 5 22976; PWR5-NEXT: subfe 4, 4, 4 22977; PWR5-NEXT: blr 22978; 22979; PWR6-LABEL: ult_43_v2i64: 22980; PWR6: # %bb.0: 22981; PWR6-NEXT: lis 5, 21845 22982; PWR6-NEXT: lis 6, 13107 22983; PWR6-NEXT: ori 5, 5, 21845 22984; PWR6-NEXT: rotldi 8, 4, 63 22985; PWR6-NEXT: rotldi 9, 3, 63 22986; PWR6-NEXT: rldimi 5, 5, 32, 0 22987; PWR6-NEXT: and 8, 8, 5 22988; PWR6-NEXT: and 5, 9, 5 22989; PWR6-NEXT: ori 6, 6, 13107 22990; PWR6-NEXT: sub 3, 3, 5 22991; PWR6-NEXT: rldimi 6, 6, 32, 0 22992; PWR6-NEXT: sub 4, 4, 8 22993; PWR6-NEXT: and 8, 3, 6 22994; PWR6-NEXT: rotldi 3, 3, 62 22995; PWR6-NEXT: and 3, 3, 6 22996; PWR6-NEXT: lis 7, 3855 22997; PWR6-NEXT: and 5, 4, 6 22998; PWR6-NEXT: rotldi 4, 4, 62 22999; PWR6-NEXT: add 3, 8, 3 23000; PWR6-NEXT: lis 9, 257 23001; PWR6-NEXT: ori 7, 7, 3855 23002; PWR6-NEXT: and 4, 4, 6 23003; PWR6-NEXT: rldicl 6, 3, 60, 4 23004; PWR6-NEXT: ori 9, 9, 257 23005; PWR6-NEXT: rldimi 7, 7, 32, 0 23006; PWR6-NEXT: add 4, 5, 4 23007; PWR6-NEXT: add 3, 3, 6 23008; PWR6-NEXT: rldimi 9, 9, 32, 0 23009; PWR6-NEXT: rldicl 5, 4, 60, 4 23010; PWR6-NEXT: and 3, 3, 7 23011; PWR6-NEXT: add 4, 4, 5 23012; PWR6-NEXT: mulld 3, 3, 9 23013; PWR6-NEXT: and 4, 4, 7 23014; PWR6-NEXT: rldicl 3, 3, 8, 56 23015; PWR6-NEXT: li 5, 43 23016; PWR6-NEXT: mulld 4, 4, 9 23017; PWR6-NEXT: subc 6, 3, 5 23018; PWR6-NEXT: rldicl 4, 4, 8, 56 23019; PWR6-NEXT: subfe 3, 3, 3 23020; PWR6-NEXT: subc 5, 4, 5 23021; PWR6-NEXT: subfe 4, 4, 4 23022; PWR6-NEXT: blr 23023; 23024; PWR7-LABEL: ult_43_v2i64: 23025; PWR7: # %bb.0: 23026; PWR7-NEXT: addi 3, 1, -32 23027; PWR7-NEXT: li 5, 0 23028; PWR7-NEXT: li 6, -1 23029; PWR7-NEXT: stxvd2x 34, 0, 3 23030; PWR7-NEXT: ld 3, -24(1) 23031; PWR7-NEXT: ld 4, -32(1) 23032; PWR7-NEXT: popcntd 3, 3 23033; PWR7-NEXT: popcntd 4, 4 23034; PWR7-NEXT: cmpldi 3, 43 23035; PWR7-NEXT: isellt 3, 6, 5 23036; PWR7-NEXT: cmpldi 4, 43 23037; PWR7-NEXT: isellt 4, 6, 5 23038; PWR7-NEXT: std 3, -8(1) 23039; PWR7-NEXT: addi 3, 1, -16 23040; PWR7-NEXT: std 4, -16(1) 23041; PWR7-NEXT: lxvd2x 34, 0, 3 23042; PWR7-NEXT: blr 23043; 23044; PWR8-LABEL: ult_43_v2i64: 23045; PWR8: # %bb.0: 23046; PWR8-NEXT: addis 3, 2, .LCPI183_0@toc@ha 23047; PWR8-NEXT: vpopcntd 2, 2 23048; PWR8-NEXT: addi 3, 3, .LCPI183_0@toc@l 23049; PWR8-NEXT: lxvd2x 35, 0, 3 23050; PWR8-NEXT: vcmpgtud 2, 3, 2 23051; PWR8-NEXT: blr 23052; 23053; PWR9-LABEL: ult_43_v2i64: 23054; PWR9: # %bb.0: 23055; PWR9-NEXT: addis 3, 2, .LCPI183_0@toc@ha 23056; PWR9-NEXT: vpopcntd 2, 2 23057; PWR9-NEXT: addi 3, 3, .LCPI183_0@toc@l 23058; PWR9-NEXT: lxvx 35, 0, 3 23059; PWR9-NEXT: vcmpgtud 2, 3, 2 23060; PWR9-NEXT: blr 23061 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23062 %3 = icmp ult <2 x i64> %2, <i64 43, i64 43> 23063 %4 = sext <2 x i1> %3 to <2 x i64> 23064 ret <2 x i64> %4 23065} 23066 23067define <2 x i64> @ugt_43_v2i64(<2 x i64> %0) { 23068; PWR5-LABEL: ugt_43_v2i64: 23069; PWR5: # %bb.0: 23070; PWR5-NEXT: lis 5, 21845 23071; PWR5-NEXT: lis 6, 13107 23072; PWR5-NEXT: ori 5, 5, 21845 23073; PWR5-NEXT: rotldi 8, 4, 63 23074; PWR5-NEXT: rotldi 9, 3, 63 23075; PWR5-NEXT: rldimi 5, 5, 32, 0 23076; PWR5-NEXT: and 8, 8, 5 23077; PWR5-NEXT: and 5, 9, 5 23078; PWR5-NEXT: ori 6, 6, 13107 23079; PWR5-NEXT: sub 3, 3, 5 23080; PWR5-NEXT: rldimi 6, 6, 32, 0 23081; PWR5-NEXT: sub 4, 4, 8 23082; PWR5-NEXT: and 8, 3, 6 23083; PWR5-NEXT: rotldi 3, 3, 62 23084; PWR5-NEXT: and 3, 3, 6 23085; PWR5-NEXT: lis 7, 3855 23086; PWR5-NEXT: and 5, 4, 6 23087; PWR5-NEXT: rotldi 4, 4, 62 23088; PWR5-NEXT: add 3, 8, 3 23089; PWR5-NEXT: lis 9, 257 23090; PWR5-NEXT: ori 7, 7, 3855 23091; PWR5-NEXT: and 4, 4, 6 23092; PWR5-NEXT: rldicl 6, 3, 60, 4 23093; PWR5-NEXT: ori 9, 9, 257 23094; PWR5-NEXT: rldimi 7, 7, 32, 0 23095; PWR5-NEXT: add 4, 5, 4 23096; PWR5-NEXT: add 3, 3, 6 23097; PWR5-NEXT: rldimi 9, 9, 32, 0 23098; PWR5-NEXT: rldicl 5, 4, 60, 4 23099; PWR5-NEXT: and 3, 3, 7 23100; PWR5-NEXT: add 4, 4, 5 23101; PWR5-NEXT: mulld 3, 3, 9 23102; PWR5-NEXT: and 4, 4, 7 23103; PWR5-NEXT: rldicl 3, 3, 8, 56 23104; PWR5-NEXT: mulld 4, 4, 9 23105; PWR5-NEXT: li 5, 43 23106; PWR5-NEXT: subfic 3, 3, 43 23107; PWR5-NEXT: rldicl 4, 4, 8, 56 23108; PWR5-NEXT: subfe 3, 5, 5 23109; PWR5-NEXT: subfic 4, 4, 43 23110; PWR5-NEXT: subfe 4, 5, 5 23111; PWR5-NEXT: blr 23112; 23113; PWR6-LABEL: ugt_43_v2i64: 23114; PWR6: # %bb.0: 23115; PWR6-NEXT: lis 5, 21845 23116; PWR6-NEXT: lis 6, 13107 23117; PWR6-NEXT: ori 5, 5, 21845 23118; PWR6-NEXT: rotldi 8, 4, 63 23119; PWR6-NEXT: rotldi 9, 3, 63 23120; PWR6-NEXT: rldimi 5, 5, 32, 0 23121; PWR6-NEXT: and 8, 8, 5 23122; PWR6-NEXT: and 5, 9, 5 23123; PWR6-NEXT: ori 6, 6, 13107 23124; PWR6-NEXT: sub 3, 3, 5 23125; PWR6-NEXT: rldimi 6, 6, 32, 0 23126; PWR6-NEXT: sub 4, 4, 8 23127; PWR6-NEXT: and 8, 3, 6 23128; PWR6-NEXT: rotldi 3, 3, 62 23129; PWR6-NEXT: and 3, 3, 6 23130; PWR6-NEXT: lis 7, 3855 23131; PWR6-NEXT: and 5, 4, 6 23132; PWR6-NEXT: rotldi 4, 4, 62 23133; PWR6-NEXT: add 3, 8, 3 23134; PWR6-NEXT: lis 9, 257 23135; PWR6-NEXT: ori 7, 7, 3855 23136; PWR6-NEXT: and 4, 4, 6 23137; PWR6-NEXT: rldicl 6, 3, 60, 4 23138; PWR6-NEXT: ori 9, 9, 257 23139; PWR6-NEXT: rldimi 7, 7, 32, 0 23140; PWR6-NEXT: add 4, 5, 4 23141; PWR6-NEXT: add 3, 3, 6 23142; PWR6-NEXT: rldimi 9, 9, 32, 0 23143; PWR6-NEXT: rldicl 5, 4, 60, 4 23144; PWR6-NEXT: and 3, 3, 7 23145; PWR6-NEXT: add 4, 4, 5 23146; PWR6-NEXT: mulld 3, 3, 9 23147; PWR6-NEXT: and 4, 4, 7 23148; PWR6-NEXT: rldicl 3, 3, 8, 56 23149; PWR6-NEXT: mulld 4, 4, 9 23150; PWR6-NEXT: li 5, 43 23151; PWR6-NEXT: subfic 3, 3, 43 23152; PWR6-NEXT: rldicl 4, 4, 8, 56 23153; PWR6-NEXT: subfe 3, 5, 5 23154; PWR6-NEXT: subfic 4, 4, 43 23155; PWR6-NEXT: subfe 4, 5, 5 23156; PWR6-NEXT: blr 23157; 23158; PWR7-LABEL: ugt_43_v2i64: 23159; PWR7: # %bb.0: 23160; PWR7-NEXT: addi 3, 1, -32 23161; PWR7-NEXT: li 5, 0 23162; PWR7-NEXT: li 6, -1 23163; PWR7-NEXT: stxvd2x 34, 0, 3 23164; PWR7-NEXT: ld 3, -24(1) 23165; PWR7-NEXT: ld 4, -32(1) 23166; PWR7-NEXT: popcntd 3, 3 23167; PWR7-NEXT: popcntd 4, 4 23168; PWR7-NEXT: cmpldi 3, 43 23169; PWR7-NEXT: iselgt 3, 6, 5 23170; PWR7-NEXT: cmpldi 4, 43 23171; PWR7-NEXT: iselgt 4, 6, 5 23172; PWR7-NEXT: std 3, -8(1) 23173; PWR7-NEXT: addi 3, 1, -16 23174; PWR7-NEXT: std 4, -16(1) 23175; PWR7-NEXT: lxvd2x 34, 0, 3 23176; PWR7-NEXT: blr 23177; 23178; PWR8-LABEL: ugt_43_v2i64: 23179; PWR8: # %bb.0: 23180; PWR8-NEXT: addis 3, 2, .LCPI184_0@toc@ha 23181; PWR8-NEXT: vpopcntd 2, 2 23182; PWR8-NEXT: addi 3, 3, .LCPI184_0@toc@l 23183; PWR8-NEXT: lxvd2x 35, 0, 3 23184; PWR8-NEXT: vcmpgtud 2, 2, 3 23185; PWR8-NEXT: blr 23186; 23187; PWR9-LABEL: ugt_43_v2i64: 23188; PWR9: # %bb.0: 23189; PWR9-NEXT: addis 3, 2, .LCPI184_0@toc@ha 23190; PWR9-NEXT: vpopcntd 2, 2 23191; PWR9-NEXT: addi 3, 3, .LCPI184_0@toc@l 23192; PWR9-NEXT: lxvx 35, 0, 3 23193; PWR9-NEXT: vcmpgtud 2, 2, 3 23194; PWR9-NEXT: blr 23195 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23196 %3 = icmp ugt <2 x i64> %2, <i64 43, i64 43> 23197 %4 = sext <2 x i1> %3 to <2 x i64> 23198 ret <2 x i64> %4 23199} 23200 23201define <2 x i64> @ult_44_v2i64(<2 x i64> %0) { 23202; PWR5-LABEL: ult_44_v2i64: 23203; PWR5: # %bb.0: 23204; PWR5-NEXT: lis 5, 21845 23205; PWR5-NEXT: lis 6, 13107 23206; PWR5-NEXT: ori 5, 5, 21845 23207; PWR5-NEXT: rotldi 8, 4, 63 23208; PWR5-NEXT: rotldi 9, 3, 63 23209; PWR5-NEXT: rldimi 5, 5, 32, 0 23210; PWR5-NEXT: and 8, 8, 5 23211; PWR5-NEXT: and 5, 9, 5 23212; PWR5-NEXT: ori 6, 6, 13107 23213; PWR5-NEXT: sub 3, 3, 5 23214; PWR5-NEXT: rldimi 6, 6, 32, 0 23215; PWR5-NEXT: sub 4, 4, 8 23216; PWR5-NEXT: and 8, 3, 6 23217; PWR5-NEXT: rotldi 3, 3, 62 23218; PWR5-NEXT: and 3, 3, 6 23219; PWR5-NEXT: lis 7, 3855 23220; PWR5-NEXT: and 5, 4, 6 23221; PWR5-NEXT: rotldi 4, 4, 62 23222; PWR5-NEXT: add 3, 8, 3 23223; PWR5-NEXT: lis 9, 257 23224; PWR5-NEXT: ori 7, 7, 3855 23225; PWR5-NEXT: and 4, 4, 6 23226; PWR5-NEXT: rldicl 6, 3, 60, 4 23227; PWR5-NEXT: ori 9, 9, 257 23228; PWR5-NEXT: rldimi 7, 7, 32, 0 23229; PWR5-NEXT: add 4, 5, 4 23230; PWR5-NEXT: add 3, 3, 6 23231; PWR5-NEXT: rldimi 9, 9, 32, 0 23232; PWR5-NEXT: rldicl 5, 4, 60, 4 23233; PWR5-NEXT: and 3, 3, 7 23234; PWR5-NEXT: add 4, 4, 5 23235; PWR5-NEXT: mulld 3, 3, 9 23236; PWR5-NEXT: and 4, 4, 7 23237; PWR5-NEXT: rldicl 3, 3, 8, 56 23238; PWR5-NEXT: li 5, 44 23239; PWR5-NEXT: mulld 4, 4, 9 23240; PWR5-NEXT: subc 6, 3, 5 23241; PWR5-NEXT: rldicl 4, 4, 8, 56 23242; PWR5-NEXT: subfe 3, 3, 3 23243; PWR5-NEXT: subc 5, 4, 5 23244; PWR5-NEXT: subfe 4, 4, 4 23245; PWR5-NEXT: blr 23246; 23247; PWR6-LABEL: ult_44_v2i64: 23248; PWR6: # %bb.0: 23249; PWR6-NEXT: lis 5, 21845 23250; PWR6-NEXT: lis 6, 13107 23251; PWR6-NEXT: ori 5, 5, 21845 23252; PWR6-NEXT: rotldi 8, 4, 63 23253; PWR6-NEXT: rotldi 9, 3, 63 23254; PWR6-NEXT: rldimi 5, 5, 32, 0 23255; PWR6-NEXT: and 8, 8, 5 23256; PWR6-NEXT: and 5, 9, 5 23257; PWR6-NEXT: ori 6, 6, 13107 23258; PWR6-NEXT: sub 3, 3, 5 23259; PWR6-NEXT: rldimi 6, 6, 32, 0 23260; PWR6-NEXT: sub 4, 4, 8 23261; PWR6-NEXT: and 8, 3, 6 23262; PWR6-NEXT: rotldi 3, 3, 62 23263; PWR6-NEXT: and 3, 3, 6 23264; PWR6-NEXT: lis 7, 3855 23265; PWR6-NEXT: and 5, 4, 6 23266; PWR6-NEXT: rotldi 4, 4, 62 23267; PWR6-NEXT: add 3, 8, 3 23268; PWR6-NEXT: lis 9, 257 23269; PWR6-NEXT: ori 7, 7, 3855 23270; PWR6-NEXT: and 4, 4, 6 23271; PWR6-NEXT: rldicl 6, 3, 60, 4 23272; PWR6-NEXT: ori 9, 9, 257 23273; PWR6-NEXT: rldimi 7, 7, 32, 0 23274; PWR6-NEXT: add 4, 5, 4 23275; PWR6-NEXT: add 3, 3, 6 23276; PWR6-NEXT: rldimi 9, 9, 32, 0 23277; PWR6-NEXT: rldicl 5, 4, 60, 4 23278; PWR6-NEXT: and 3, 3, 7 23279; PWR6-NEXT: add 4, 4, 5 23280; PWR6-NEXT: mulld 3, 3, 9 23281; PWR6-NEXT: and 4, 4, 7 23282; PWR6-NEXT: rldicl 3, 3, 8, 56 23283; PWR6-NEXT: li 5, 44 23284; PWR6-NEXT: mulld 4, 4, 9 23285; PWR6-NEXT: subc 6, 3, 5 23286; PWR6-NEXT: rldicl 4, 4, 8, 56 23287; PWR6-NEXT: subfe 3, 3, 3 23288; PWR6-NEXT: subc 5, 4, 5 23289; PWR6-NEXT: subfe 4, 4, 4 23290; PWR6-NEXT: blr 23291; 23292; PWR7-LABEL: ult_44_v2i64: 23293; PWR7: # %bb.0: 23294; PWR7-NEXT: addi 3, 1, -32 23295; PWR7-NEXT: li 5, 0 23296; PWR7-NEXT: li 6, -1 23297; PWR7-NEXT: stxvd2x 34, 0, 3 23298; PWR7-NEXT: ld 3, -24(1) 23299; PWR7-NEXT: ld 4, -32(1) 23300; PWR7-NEXT: popcntd 3, 3 23301; PWR7-NEXT: popcntd 4, 4 23302; PWR7-NEXT: cmpldi 3, 44 23303; PWR7-NEXT: isellt 3, 6, 5 23304; PWR7-NEXT: cmpldi 4, 44 23305; PWR7-NEXT: isellt 4, 6, 5 23306; PWR7-NEXT: std 3, -8(1) 23307; PWR7-NEXT: addi 3, 1, -16 23308; PWR7-NEXT: std 4, -16(1) 23309; PWR7-NEXT: lxvd2x 34, 0, 3 23310; PWR7-NEXT: blr 23311; 23312; PWR8-LABEL: ult_44_v2i64: 23313; PWR8: # %bb.0: 23314; PWR8-NEXT: addis 3, 2, .LCPI185_0@toc@ha 23315; PWR8-NEXT: vpopcntd 2, 2 23316; PWR8-NEXT: addi 3, 3, .LCPI185_0@toc@l 23317; PWR8-NEXT: lxvd2x 35, 0, 3 23318; PWR8-NEXT: vcmpgtud 2, 3, 2 23319; PWR8-NEXT: blr 23320; 23321; PWR9-LABEL: ult_44_v2i64: 23322; PWR9: # %bb.0: 23323; PWR9-NEXT: addis 3, 2, .LCPI185_0@toc@ha 23324; PWR9-NEXT: vpopcntd 2, 2 23325; PWR9-NEXT: addi 3, 3, .LCPI185_0@toc@l 23326; PWR9-NEXT: lxvx 35, 0, 3 23327; PWR9-NEXT: vcmpgtud 2, 3, 2 23328; PWR9-NEXT: blr 23329 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23330 %3 = icmp ult <2 x i64> %2, <i64 44, i64 44> 23331 %4 = sext <2 x i1> %3 to <2 x i64> 23332 ret <2 x i64> %4 23333} 23334 23335define <2 x i64> @ugt_44_v2i64(<2 x i64> %0) { 23336; PWR5-LABEL: ugt_44_v2i64: 23337; PWR5: # %bb.0: 23338; PWR5-NEXT: lis 5, 21845 23339; PWR5-NEXT: lis 6, 13107 23340; PWR5-NEXT: ori 5, 5, 21845 23341; PWR5-NEXT: rotldi 8, 4, 63 23342; PWR5-NEXT: rotldi 9, 3, 63 23343; PWR5-NEXT: rldimi 5, 5, 32, 0 23344; PWR5-NEXT: and 8, 8, 5 23345; PWR5-NEXT: and 5, 9, 5 23346; PWR5-NEXT: ori 6, 6, 13107 23347; PWR5-NEXT: sub 3, 3, 5 23348; PWR5-NEXT: rldimi 6, 6, 32, 0 23349; PWR5-NEXT: sub 4, 4, 8 23350; PWR5-NEXT: and 8, 3, 6 23351; PWR5-NEXT: rotldi 3, 3, 62 23352; PWR5-NEXT: and 3, 3, 6 23353; PWR5-NEXT: lis 7, 3855 23354; PWR5-NEXT: and 5, 4, 6 23355; PWR5-NEXT: rotldi 4, 4, 62 23356; PWR5-NEXT: add 3, 8, 3 23357; PWR5-NEXT: lis 9, 257 23358; PWR5-NEXT: ori 7, 7, 3855 23359; PWR5-NEXT: and 4, 4, 6 23360; PWR5-NEXT: rldicl 6, 3, 60, 4 23361; PWR5-NEXT: ori 9, 9, 257 23362; PWR5-NEXT: rldimi 7, 7, 32, 0 23363; PWR5-NEXT: add 4, 5, 4 23364; PWR5-NEXT: add 3, 3, 6 23365; PWR5-NEXT: rldimi 9, 9, 32, 0 23366; PWR5-NEXT: rldicl 5, 4, 60, 4 23367; PWR5-NEXT: and 3, 3, 7 23368; PWR5-NEXT: add 4, 4, 5 23369; PWR5-NEXT: mulld 3, 3, 9 23370; PWR5-NEXT: and 4, 4, 7 23371; PWR5-NEXT: rldicl 3, 3, 8, 56 23372; PWR5-NEXT: mulld 4, 4, 9 23373; PWR5-NEXT: li 5, 44 23374; PWR5-NEXT: subfic 3, 3, 44 23375; PWR5-NEXT: rldicl 4, 4, 8, 56 23376; PWR5-NEXT: subfe 3, 5, 5 23377; PWR5-NEXT: subfic 4, 4, 44 23378; PWR5-NEXT: subfe 4, 5, 5 23379; PWR5-NEXT: blr 23380; 23381; PWR6-LABEL: ugt_44_v2i64: 23382; PWR6: # %bb.0: 23383; PWR6-NEXT: lis 5, 21845 23384; PWR6-NEXT: lis 6, 13107 23385; PWR6-NEXT: ori 5, 5, 21845 23386; PWR6-NEXT: rotldi 8, 4, 63 23387; PWR6-NEXT: rotldi 9, 3, 63 23388; PWR6-NEXT: rldimi 5, 5, 32, 0 23389; PWR6-NEXT: and 8, 8, 5 23390; PWR6-NEXT: and 5, 9, 5 23391; PWR6-NEXT: ori 6, 6, 13107 23392; PWR6-NEXT: sub 3, 3, 5 23393; PWR6-NEXT: rldimi 6, 6, 32, 0 23394; PWR6-NEXT: sub 4, 4, 8 23395; PWR6-NEXT: and 8, 3, 6 23396; PWR6-NEXT: rotldi 3, 3, 62 23397; PWR6-NEXT: and 3, 3, 6 23398; PWR6-NEXT: lis 7, 3855 23399; PWR6-NEXT: and 5, 4, 6 23400; PWR6-NEXT: rotldi 4, 4, 62 23401; PWR6-NEXT: add 3, 8, 3 23402; PWR6-NEXT: lis 9, 257 23403; PWR6-NEXT: ori 7, 7, 3855 23404; PWR6-NEXT: and 4, 4, 6 23405; PWR6-NEXT: rldicl 6, 3, 60, 4 23406; PWR6-NEXT: ori 9, 9, 257 23407; PWR6-NEXT: rldimi 7, 7, 32, 0 23408; PWR6-NEXT: add 4, 5, 4 23409; PWR6-NEXT: add 3, 3, 6 23410; PWR6-NEXT: rldimi 9, 9, 32, 0 23411; PWR6-NEXT: rldicl 5, 4, 60, 4 23412; PWR6-NEXT: and 3, 3, 7 23413; PWR6-NEXT: add 4, 4, 5 23414; PWR6-NEXT: mulld 3, 3, 9 23415; PWR6-NEXT: and 4, 4, 7 23416; PWR6-NEXT: rldicl 3, 3, 8, 56 23417; PWR6-NEXT: mulld 4, 4, 9 23418; PWR6-NEXT: li 5, 44 23419; PWR6-NEXT: subfic 3, 3, 44 23420; PWR6-NEXT: rldicl 4, 4, 8, 56 23421; PWR6-NEXT: subfe 3, 5, 5 23422; PWR6-NEXT: subfic 4, 4, 44 23423; PWR6-NEXT: subfe 4, 5, 5 23424; PWR6-NEXT: blr 23425; 23426; PWR7-LABEL: ugt_44_v2i64: 23427; PWR7: # %bb.0: 23428; PWR7-NEXT: addi 3, 1, -32 23429; PWR7-NEXT: li 5, 0 23430; PWR7-NEXT: li 6, -1 23431; PWR7-NEXT: stxvd2x 34, 0, 3 23432; PWR7-NEXT: ld 3, -24(1) 23433; PWR7-NEXT: ld 4, -32(1) 23434; PWR7-NEXT: popcntd 3, 3 23435; PWR7-NEXT: popcntd 4, 4 23436; PWR7-NEXT: cmpldi 3, 44 23437; PWR7-NEXT: iselgt 3, 6, 5 23438; PWR7-NEXT: cmpldi 4, 44 23439; PWR7-NEXT: iselgt 4, 6, 5 23440; PWR7-NEXT: std 3, -8(1) 23441; PWR7-NEXT: addi 3, 1, -16 23442; PWR7-NEXT: std 4, -16(1) 23443; PWR7-NEXT: lxvd2x 34, 0, 3 23444; PWR7-NEXT: blr 23445; 23446; PWR8-LABEL: ugt_44_v2i64: 23447; PWR8: # %bb.0: 23448; PWR8-NEXT: addis 3, 2, .LCPI186_0@toc@ha 23449; PWR8-NEXT: vpopcntd 2, 2 23450; PWR8-NEXT: addi 3, 3, .LCPI186_0@toc@l 23451; PWR8-NEXT: lxvd2x 35, 0, 3 23452; PWR8-NEXT: vcmpgtud 2, 2, 3 23453; PWR8-NEXT: blr 23454; 23455; PWR9-LABEL: ugt_44_v2i64: 23456; PWR9: # %bb.0: 23457; PWR9-NEXT: addis 3, 2, .LCPI186_0@toc@ha 23458; PWR9-NEXT: vpopcntd 2, 2 23459; PWR9-NEXT: addi 3, 3, .LCPI186_0@toc@l 23460; PWR9-NEXT: lxvx 35, 0, 3 23461; PWR9-NEXT: vcmpgtud 2, 2, 3 23462; PWR9-NEXT: blr 23463 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23464 %3 = icmp ugt <2 x i64> %2, <i64 44, i64 44> 23465 %4 = sext <2 x i1> %3 to <2 x i64> 23466 ret <2 x i64> %4 23467} 23468 23469define <2 x i64> @ult_45_v2i64(<2 x i64> %0) { 23470; PWR5-LABEL: ult_45_v2i64: 23471; PWR5: # %bb.0: 23472; PWR5-NEXT: lis 5, 21845 23473; PWR5-NEXT: lis 6, 13107 23474; PWR5-NEXT: ori 5, 5, 21845 23475; PWR5-NEXT: rotldi 8, 4, 63 23476; PWR5-NEXT: rotldi 9, 3, 63 23477; PWR5-NEXT: rldimi 5, 5, 32, 0 23478; PWR5-NEXT: and 8, 8, 5 23479; PWR5-NEXT: and 5, 9, 5 23480; PWR5-NEXT: ori 6, 6, 13107 23481; PWR5-NEXT: sub 3, 3, 5 23482; PWR5-NEXT: rldimi 6, 6, 32, 0 23483; PWR5-NEXT: sub 4, 4, 8 23484; PWR5-NEXT: and 8, 3, 6 23485; PWR5-NEXT: rotldi 3, 3, 62 23486; PWR5-NEXT: and 3, 3, 6 23487; PWR5-NEXT: lis 7, 3855 23488; PWR5-NEXT: and 5, 4, 6 23489; PWR5-NEXT: rotldi 4, 4, 62 23490; PWR5-NEXT: add 3, 8, 3 23491; PWR5-NEXT: lis 9, 257 23492; PWR5-NEXT: ori 7, 7, 3855 23493; PWR5-NEXT: and 4, 4, 6 23494; PWR5-NEXT: rldicl 6, 3, 60, 4 23495; PWR5-NEXT: ori 9, 9, 257 23496; PWR5-NEXT: rldimi 7, 7, 32, 0 23497; PWR5-NEXT: add 4, 5, 4 23498; PWR5-NEXT: add 3, 3, 6 23499; PWR5-NEXT: rldimi 9, 9, 32, 0 23500; PWR5-NEXT: rldicl 5, 4, 60, 4 23501; PWR5-NEXT: and 3, 3, 7 23502; PWR5-NEXT: add 4, 4, 5 23503; PWR5-NEXT: mulld 3, 3, 9 23504; PWR5-NEXT: and 4, 4, 7 23505; PWR5-NEXT: rldicl 3, 3, 8, 56 23506; PWR5-NEXT: li 5, 45 23507; PWR5-NEXT: mulld 4, 4, 9 23508; PWR5-NEXT: subc 6, 3, 5 23509; PWR5-NEXT: rldicl 4, 4, 8, 56 23510; PWR5-NEXT: subfe 3, 3, 3 23511; PWR5-NEXT: subc 5, 4, 5 23512; PWR5-NEXT: subfe 4, 4, 4 23513; PWR5-NEXT: blr 23514; 23515; PWR6-LABEL: ult_45_v2i64: 23516; PWR6: # %bb.0: 23517; PWR6-NEXT: lis 5, 21845 23518; PWR6-NEXT: lis 6, 13107 23519; PWR6-NEXT: ori 5, 5, 21845 23520; PWR6-NEXT: rotldi 8, 4, 63 23521; PWR6-NEXT: rotldi 9, 3, 63 23522; PWR6-NEXT: rldimi 5, 5, 32, 0 23523; PWR6-NEXT: and 8, 8, 5 23524; PWR6-NEXT: and 5, 9, 5 23525; PWR6-NEXT: ori 6, 6, 13107 23526; PWR6-NEXT: sub 3, 3, 5 23527; PWR6-NEXT: rldimi 6, 6, 32, 0 23528; PWR6-NEXT: sub 4, 4, 8 23529; PWR6-NEXT: and 8, 3, 6 23530; PWR6-NEXT: rotldi 3, 3, 62 23531; PWR6-NEXT: and 3, 3, 6 23532; PWR6-NEXT: lis 7, 3855 23533; PWR6-NEXT: and 5, 4, 6 23534; PWR6-NEXT: rotldi 4, 4, 62 23535; PWR6-NEXT: add 3, 8, 3 23536; PWR6-NEXT: lis 9, 257 23537; PWR6-NEXT: ori 7, 7, 3855 23538; PWR6-NEXT: and 4, 4, 6 23539; PWR6-NEXT: rldicl 6, 3, 60, 4 23540; PWR6-NEXT: ori 9, 9, 257 23541; PWR6-NEXT: rldimi 7, 7, 32, 0 23542; PWR6-NEXT: add 4, 5, 4 23543; PWR6-NEXT: add 3, 3, 6 23544; PWR6-NEXT: rldimi 9, 9, 32, 0 23545; PWR6-NEXT: rldicl 5, 4, 60, 4 23546; PWR6-NEXT: and 3, 3, 7 23547; PWR6-NEXT: add 4, 4, 5 23548; PWR6-NEXT: mulld 3, 3, 9 23549; PWR6-NEXT: and 4, 4, 7 23550; PWR6-NEXT: rldicl 3, 3, 8, 56 23551; PWR6-NEXT: li 5, 45 23552; PWR6-NEXT: mulld 4, 4, 9 23553; PWR6-NEXT: subc 6, 3, 5 23554; PWR6-NEXT: rldicl 4, 4, 8, 56 23555; PWR6-NEXT: subfe 3, 3, 3 23556; PWR6-NEXT: subc 5, 4, 5 23557; PWR6-NEXT: subfe 4, 4, 4 23558; PWR6-NEXT: blr 23559; 23560; PWR7-LABEL: ult_45_v2i64: 23561; PWR7: # %bb.0: 23562; PWR7-NEXT: addi 3, 1, -32 23563; PWR7-NEXT: li 5, 0 23564; PWR7-NEXT: li 6, -1 23565; PWR7-NEXT: stxvd2x 34, 0, 3 23566; PWR7-NEXT: ld 3, -24(1) 23567; PWR7-NEXT: ld 4, -32(1) 23568; PWR7-NEXT: popcntd 3, 3 23569; PWR7-NEXT: popcntd 4, 4 23570; PWR7-NEXT: cmpldi 3, 45 23571; PWR7-NEXT: isellt 3, 6, 5 23572; PWR7-NEXT: cmpldi 4, 45 23573; PWR7-NEXT: isellt 4, 6, 5 23574; PWR7-NEXT: std 3, -8(1) 23575; PWR7-NEXT: addi 3, 1, -16 23576; PWR7-NEXT: std 4, -16(1) 23577; PWR7-NEXT: lxvd2x 34, 0, 3 23578; PWR7-NEXT: blr 23579; 23580; PWR8-LABEL: ult_45_v2i64: 23581; PWR8: # %bb.0: 23582; PWR8-NEXT: addis 3, 2, .LCPI187_0@toc@ha 23583; PWR8-NEXT: vpopcntd 2, 2 23584; PWR8-NEXT: addi 3, 3, .LCPI187_0@toc@l 23585; PWR8-NEXT: lxvd2x 35, 0, 3 23586; PWR8-NEXT: vcmpgtud 2, 3, 2 23587; PWR8-NEXT: blr 23588; 23589; PWR9-LABEL: ult_45_v2i64: 23590; PWR9: # %bb.0: 23591; PWR9-NEXT: addis 3, 2, .LCPI187_0@toc@ha 23592; PWR9-NEXT: vpopcntd 2, 2 23593; PWR9-NEXT: addi 3, 3, .LCPI187_0@toc@l 23594; PWR9-NEXT: lxvx 35, 0, 3 23595; PWR9-NEXT: vcmpgtud 2, 3, 2 23596; PWR9-NEXT: blr 23597 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23598 %3 = icmp ult <2 x i64> %2, <i64 45, i64 45> 23599 %4 = sext <2 x i1> %3 to <2 x i64> 23600 ret <2 x i64> %4 23601} 23602 23603define <2 x i64> @ugt_45_v2i64(<2 x i64> %0) { 23604; PWR5-LABEL: ugt_45_v2i64: 23605; PWR5: # %bb.0: 23606; PWR5-NEXT: lis 5, 21845 23607; PWR5-NEXT: lis 6, 13107 23608; PWR5-NEXT: ori 5, 5, 21845 23609; PWR5-NEXT: rotldi 8, 4, 63 23610; PWR5-NEXT: rotldi 9, 3, 63 23611; PWR5-NEXT: rldimi 5, 5, 32, 0 23612; PWR5-NEXT: and 8, 8, 5 23613; PWR5-NEXT: and 5, 9, 5 23614; PWR5-NEXT: ori 6, 6, 13107 23615; PWR5-NEXT: sub 3, 3, 5 23616; PWR5-NEXT: rldimi 6, 6, 32, 0 23617; PWR5-NEXT: sub 4, 4, 8 23618; PWR5-NEXT: and 8, 3, 6 23619; PWR5-NEXT: rotldi 3, 3, 62 23620; PWR5-NEXT: and 3, 3, 6 23621; PWR5-NEXT: lis 7, 3855 23622; PWR5-NEXT: and 5, 4, 6 23623; PWR5-NEXT: rotldi 4, 4, 62 23624; PWR5-NEXT: add 3, 8, 3 23625; PWR5-NEXT: lis 9, 257 23626; PWR5-NEXT: ori 7, 7, 3855 23627; PWR5-NEXT: and 4, 4, 6 23628; PWR5-NEXT: rldicl 6, 3, 60, 4 23629; PWR5-NEXT: ori 9, 9, 257 23630; PWR5-NEXT: rldimi 7, 7, 32, 0 23631; PWR5-NEXT: add 4, 5, 4 23632; PWR5-NEXT: add 3, 3, 6 23633; PWR5-NEXT: rldimi 9, 9, 32, 0 23634; PWR5-NEXT: rldicl 5, 4, 60, 4 23635; PWR5-NEXT: and 3, 3, 7 23636; PWR5-NEXT: add 4, 4, 5 23637; PWR5-NEXT: mulld 3, 3, 9 23638; PWR5-NEXT: and 4, 4, 7 23639; PWR5-NEXT: rldicl 3, 3, 8, 56 23640; PWR5-NEXT: mulld 4, 4, 9 23641; PWR5-NEXT: li 5, 45 23642; PWR5-NEXT: subfic 3, 3, 45 23643; PWR5-NEXT: rldicl 4, 4, 8, 56 23644; PWR5-NEXT: subfe 3, 5, 5 23645; PWR5-NEXT: subfic 4, 4, 45 23646; PWR5-NEXT: subfe 4, 5, 5 23647; PWR5-NEXT: blr 23648; 23649; PWR6-LABEL: ugt_45_v2i64: 23650; PWR6: # %bb.0: 23651; PWR6-NEXT: lis 5, 21845 23652; PWR6-NEXT: lis 6, 13107 23653; PWR6-NEXT: ori 5, 5, 21845 23654; PWR6-NEXT: rotldi 8, 4, 63 23655; PWR6-NEXT: rotldi 9, 3, 63 23656; PWR6-NEXT: rldimi 5, 5, 32, 0 23657; PWR6-NEXT: and 8, 8, 5 23658; PWR6-NEXT: and 5, 9, 5 23659; PWR6-NEXT: ori 6, 6, 13107 23660; PWR6-NEXT: sub 3, 3, 5 23661; PWR6-NEXT: rldimi 6, 6, 32, 0 23662; PWR6-NEXT: sub 4, 4, 8 23663; PWR6-NEXT: and 8, 3, 6 23664; PWR6-NEXT: rotldi 3, 3, 62 23665; PWR6-NEXT: and 3, 3, 6 23666; PWR6-NEXT: lis 7, 3855 23667; PWR6-NEXT: and 5, 4, 6 23668; PWR6-NEXT: rotldi 4, 4, 62 23669; PWR6-NEXT: add 3, 8, 3 23670; PWR6-NEXT: lis 9, 257 23671; PWR6-NEXT: ori 7, 7, 3855 23672; PWR6-NEXT: and 4, 4, 6 23673; PWR6-NEXT: rldicl 6, 3, 60, 4 23674; PWR6-NEXT: ori 9, 9, 257 23675; PWR6-NEXT: rldimi 7, 7, 32, 0 23676; PWR6-NEXT: add 4, 5, 4 23677; PWR6-NEXT: add 3, 3, 6 23678; PWR6-NEXT: rldimi 9, 9, 32, 0 23679; PWR6-NEXT: rldicl 5, 4, 60, 4 23680; PWR6-NEXT: and 3, 3, 7 23681; PWR6-NEXT: add 4, 4, 5 23682; PWR6-NEXT: mulld 3, 3, 9 23683; PWR6-NEXT: and 4, 4, 7 23684; PWR6-NEXT: rldicl 3, 3, 8, 56 23685; PWR6-NEXT: mulld 4, 4, 9 23686; PWR6-NEXT: li 5, 45 23687; PWR6-NEXT: subfic 3, 3, 45 23688; PWR6-NEXT: rldicl 4, 4, 8, 56 23689; PWR6-NEXT: subfe 3, 5, 5 23690; PWR6-NEXT: subfic 4, 4, 45 23691; PWR6-NEXT: subfe 4, 5, 5 23692; PWR6-NEXT: blr 23693; 23694; PWR7-LABEL: ugt_45_v2i64: 23695; PWR7: # %bb.0: 23696; PWR7-NEXT: addi 3, 1, -32 23697; PWR7-NEXT: li 5, 0 23698; PWR7-NEXT: li 6, -1 23699; PWR7-NEXT: stxvd2x 34, 0, 3 23700; PWR7-NEXT: ld 3, -24(1) 23701; PWR7-NEXT: ld 4, -32(1) 23702; PWR7-NEXT: popcntd 3, 3 23703; PWR7-NEXT: popcntd 4, 4 23704; PWR7-NEXT: cmpldi 3, 45 23705; PWR7-NEXT: iselgt 3, 6, 5 23706; PWR7-NEXT: cmpldi 4, 45 23707; PWR7-NEXT: iselgt 4, 6, 5 23708; PWR7-NEXT: std 3, -8(1) 23709; PWR7-NEXT: addi 3, 1, -16 23710; PWR7-NEXT: std 4, -16(1) 23711; PWR7-NEXT: lxvd2x 34, 0, 3 23712; PWR7-NEXT: blr 23713; 23714; PWR8-LABEL: ugt_45_v2i64: 23715; PWR8: # %bb.0: 23716; PWR8-NEXT: addis 3, 2, .LCPI188_0@toc@ha 23717; PWR8-NEXT: vpopcntd 2, 2 23718; PWR8-NEXT: addi 3, 3, .LCPI188_0@toc@l 23719; PWR8-NEXT: lxvd2x 35, 0, 3 23720; PWR8-NEXT: vcmpgtud 2, 2, 3 23721; PWR8-NEXT: blr 23722; 23723; PWR9-LABEL: ugt_45_v2i64: 23724; PWR9: # %bb.0: 23725; PWR9-NEXT: addis 3, 2, .LCPI188_0@toc@ha 23726; PWR9-NEXT: vpopcntd 2, 2 23727; PWR9-NEXT: addi 3, 3, .LCPI188_0@toc@l 23728; PWR9-NEXT: lxvx 35, 0, 3 23729; PWR9-NEXT: vcmpgtud 2, 2, 3 23730; PWR9-NEXT: blr 23731 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23732 %3 = icmp ugt <2 x i64> %2, <i64 45, i64 45> 23733 %4 = sext <2 x i1> %3 to <2 x i64> 23734 ret <2 x i64> %4 23735} 23736 23737define <2 x i64> @ult_46_v2i64(<2 x i64> %0) { 23738; PWR5-LABEL: ult_46_v2i64: 23739; PWR5: # %bb.0: 23740; PWR5-NEXT: lis 5, 21845 23741; PWR5-NEXT: lis 6, 13107 23742; PWR5-NEXT: ori 5, 5, 21845 23743; PWR5-NEXT: rotldi 8, 4, 63 23744; PWR5-NEXT: rotldi 9, 3, 63 23745; PWR5-NEXT: rldimi 5, 5, 32, 0 23746; PWR5-NEXT: and 8, 8, 5 23747; PWR5-NEXT: and 5, 9, 5 23748; PWR5-NEXT: ori 6, 6, 13107 23749; PWR5-NEXT: sub 3, 3, 5 23750; PWR5-NEXT: rldimi 6, 6, 32, 0 23751; PWR5-NEXT: sub 4, 4, 8 23752; PWR5-NEXT: and 8, 3, 6 23753; PWR5-NEXT: rotldi 3, 3, 62 23754; PWR5-NEXT: and 3, 3, 6 23755; PWR5-NEXT: lis 7, 3855 23756; PWR5-NEXT: and 5, 4, 6 23757; PWR5-NEXT: rotldi 4, 4, 62 23758; PWR5-NEXT: add 3, 8, 3 23759; PWR5-NEXT: lis 9, 257 23760; PWR5-NEXT: ori 7, 7, 3855 23761; PWR5-NEXT: and 4, 4, 6 23762; PWR5-NEXT: rldicl 6, 3, 60, 4 23763; PWR5-NEXT: ori 9, 9, 257 23764; PWR5-NEXT: rldimi 7, 7, 32, 0 23765; PWR5-NEXT: add 4, 5, 4 23766; PWR5-NEXT: add 3, 3, 6 23767; PWR5-NEXT: rldimi 9, 9, 32, 0 23768; PWR5-NEXT: rldicl 5, 4, 60, 4 23769; PWR5-NEXT: and 3, 3, 7 23770; PWR5-NEXT: add 4, 4, 5 23771; PWR5-NEXT: mulld 3, 3, 9 23772; PWR5-NEXT: and 4, 4, 7 23773; PWR5-NEXT: rldicl 3, 3, 8, 56 23774; PWR5-NEXT: li 5, 46 23775; PWR5-NEXT: mulld 4, 4, 9 23776; PWR5-NEXT: subc 6, 3, 5 23777; PWR5-NEXT: rldicl 4, 4, 8, 56 23778; PWR5-NEXT: subfe 3, 3, 3 23779; PWR5-NEXT: subc 5, 4, 5 23780; PWR5-NEXT: subfe 4, 4, 4 23781; PWR5-NEXT: blr 23782; 23783; PWR6-LABEL: ult_46_v2i64: 23784; PWR6: # %bb.0: 23785; PWR6-NEXT: lis 5, 21845 23786; PWR6-NEXT: lis 6, 13107 23787; PWR6-NEXT: ori 5, 5, 21845 23788; PWR6-NEXT: rotldi 8, 4, 63 23789; PWR6-NEXT: rotldi 9, 3, 63 23790; PWR6-NEXT: rldimi 5, 5, 32, 0 23791; PWR6-NEXT: and 8, 8, 5 23792; PWR6-NEXT: and 5, 9, 5 23793; PWR6-NEXT: ori 6, 6, 13107 23794; PWR6-NEXT: sub 3, 3, 5 23795; PWR6-NEXT: rldimi 6, 6, 32, 0 23796; PWR6-NEXT: sub 4, 4, 8 23797; PWR6-NEXT: and 8, 3, 6 23798; PWR6-NEXT: rotldi 3, 3, 62 23799; PWR6-NEXT: and 3, 3, 6 23800; PWR6-NEXT: lis 7, 3855 23801; PWR6-NEXT: and 5, 4, 6 23802; PWR6-NEXT: rotldi 4, 4, 62 23803; PWR6-NEXT: add 3, 8, 3 23804; PWR6-NEXT: lis 9, 257 23805; PWR6-NEXT: ori 7, 7, 3855 23806; PWR6-NEXT: and 4, 4, 6 23807; PWR6-NEXT: rldicl 6, 3, 60, 4 23808; PWR6-NEXT: ori 9, 9, 257 23809; PWR6-NEXT: rldimi 7, 7, 32, 0 23810; PWR6-NEXT: add 4, 5, 4 23811; PWR6-NEXT: add 3, 3, 6 23812; PWR6-NEXT: rldimi 9, 9, 32, 0 23813; PWR6-NEXT: rldicl 5, 4, 60, 4 23814; PWR6-NEXT: and 3, 3, 7 23815; PWR6-NEXT: add 4, 4, 5 23816; PWR6-NEXT: mulld 3, 3, 9 23817; PWR6-NEXT: and 4, 4, 7 23818; PWR6-NEXT: rldicl 3, 3, 8, 56 23819; PWR6-NEXT: li 5, 46 23820; PWR6-NEXT: mulld 4, 4, 9 23821; PWR6-NEXT: subc 6, 3, 5 23822; PWR6-NEXT: rldicl 4, 4, 8, 56 23823; PWR6-NEXT: subfe 3, 3, 3 23824; PWR6-NEXT: subc 5, 4, 5 23825; PWR6-NEXT: subfe 4, 4, 4 23826; PWR6-NEXT: blr 23827; 23828; PWR7-LABEL: ult_46_v2i64: 23829; PWR7: # %bb.0: 23830; PWR7-NEXT: addi 3, 1, -32 23831; PWR7-NEXT: li 5, 0 23832; PWR7-NEXT: li 6, -1 23833; PWR7-NEXT: stxvd2x 34, 0, 3 23834; PWR7-NEXT: ld 3, -24(1) 23835; PWR7-NEXT: ld 4, -32(1) 23836; PWR7-NEXT: popcntd 3, 3 23837; PWR7-NEXT: popcntd 4, 4 23838; PWR7-NEXT: cmpldi 3, 46 23839; PWR7-NEXT: isellt 3, 6, 5 23840; PWR7-NEXT: cmpldi 4, 46 23841; PWR7-NEXT: isellt 4, 6, 5 23842; PWR7-NEXT: std 3, -8(1) 23843; PWR7-NEXT: addi 3, 1, -16 23844; PWR7-NEXT: std 4, -16(1) 23845; PWR7-NEXT: lxvd2x 34, 0, 3 23846; PWR7-NEXT: blr 23847; 23848; PWR8-LABEL: ult_46_v2i64: 23849; PWR8: # %bb.0: 23850; PWR8-NEXT: addis 3, 2, .LCPI189_0@toc@ha 23851; PWR8-NEXT: vpopcntd 2, 2 23852; PWR8-NEXT: addi 3, 3, .LCPI189_0@toc@l 23853; PWR8-NEXT: lxvd2x 35, 0, 3 23854; PWR8-NEXT: vcmpgtud 2, 3, 2 23855; PWR8-NEXT: blr 23856; 23857; PWR9-LABEL: ult_46_v2i64: 23858; PWR9: # %bb.0: 23859; PWR9-NEXT: addis 3, 2, .LCPI189_0@toc@ha 23860; PWR9-NEXT: vpopcntd 2, 2 23861; PWR9-NEXT: addi 3, 3, .LCPI189_0@toc@l 23862; PWR9-NEXT: lxvx 35, 0, 3 23863; PWR9-NEXT: vcmpgtud 2, 3, 2 23864; PWR9-NEXT: blr 23865 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23866 %3 = icmp ult <2 x i64> %2, <i64 46, i64 46> 23867 %4 = sext <2 x i1> %3 to <2 x i64> 23868 ret <2 x i64> %4 23869} 23870 23871define <2 x i64> @ugt_46_v2i64(<2 x i64> %0) { 23872; PWR5-LABEL: ugt_46_v2i64: 23873; PWR5: # %bb.0: 23874; PWR5-NEXT: lis 5, 21845 23875; PWR5-NEXT: lis 6, 13107 23876; PWR5-NEXT: ori 5, 5, 21845 23877; PWR5-NEXT: rotldi 8, 4, 63 23878; PWR5-NEXT: rotldi 9, 3, 63 23879; PWR5-NEXT: rldimi 5, 5, 32, 0 23880; PWR5-NEXT: and 8, 8, 5 23881; PWR5-NEXT: and 5, 9, 5 23882; PWR5-NEXT: ori 6, 6, 13107 23883; PWR5-NEXT: sub 3, 3, 5 23884; PWR5-NEXT: rldimi 6, 6, 32, 0 23885; PWR5-NEXT: sub 4, 4, 8 23886; PWR5-NEXT: and 8, 3, 6 23887; PWR5-NEXT: rotldi 3, 3, 62 23888; PWR5-NEXT: and 3, 3, 6 23889; PWR5-NEXT: lis 7, 3855 23890; PWR5-NEXT: and 5, 4, 6 23891; PWR5-NEXT: rotldi 4, 4, 62 23892; PWR5-NEXT: add 3, 8, 3 23893; PWR5-NEXT: lis 9, 257 23894; PWR5-NEXT: ori 7, 7, 3855 23895; PWR5-NEXT: and 4, 4, 6 23896; PWR5-NEXT: rldicl 6, 3, 60, 4 23897; PWR5-NEXT: ori 9, 9, 257 23898; PWR5-NEXT: rldimi 7, 7, 32, 0 23899; PWR5-NEXT: add 4, 5, 4 23900; PWR5-NEXT: add 3, 3, 6 23901; PWR5-NEXT: rldimi 9, 9, 32, 0 23902; PWR5-NEXT: rldicl 5, 4, 60, 4 23903; PWR5-NEXT: and 3, 3, 7 23904; PWR5-NEXT: add 4, 4, 5 23905; PWR5-NEXT: mulld 3, 3, 9 23906; PWR5-NEXT: and 4, 4, 7 23907; PWR5-NEXT: rldicl 3, 3, 8, 56 23908; PWR5-NEXT: mulld 4, 4, 9 23909; PWR5-NEXT: li 5, 46 23910; PWR5-NEXT: subfic 3, 3, 46 23911; PWR5-NEXT: rldicl 4, 4, 8, 56 23912; PWR5-NEXT: subfe 3, 5, 5 23913; PWR5-NEXT: subfic 4, 4, 46 23914; PWR5-NEXT: subfe 4, 5, 5 23915; PWR5-NEXT: blr 23916; 23917; PWR6-LABEL: ugt_46_v2i64: 23918; PWR6: # %bb.0: 23919; PWR6-NEXT: lis 5, 21845 23920; PWR6-NEXT: lis 6, 13107 23921; PWR6-NEXT: ori 5, 5, 21845 23922; PWR6-NEXT: rotldi 8, 4, 63 23923; PWR6-NEXT: rotldi 9, 3, 63 23924; PWR6-NEXT: rldimi 5, 5, 32, 0 23925; PWR6-NEXT: and 8, 8, 5 23926; PWR6-NEXT: and 5, 9, 5 23927; PWR6-NEXT: ori 6, 6, 13107 23928; PWR6-NEXT: sub 3, 3, 5 23929; PWR6-NEXT: rldimi 6, 6, 32, 0 23930; PWR6-NEXT: sub 4, 4, 8 23931; PWR6-NEXT: and 8, 3, 6 23932; PWR6-NEXT: rotldi 3, 3, 62 23933; PWR6-NEXT: and 3, 3, 6 23934; PWR6-NEXT: lis 7, 3855 23935; PWR6-NEXT: and 5, 4, 6 23936; PWR6-NEXT: rotldi 4, 4, 62 23937; PWR6-NEXT: add 3, 8, 3 23938; PWR6-NEXT: lis 9, 257 23939; PWR6-NEXT: ori 7, 7, 3855 23940; PWR6-NEXT: and 4, 4, 6 23941; PWR6-NEXT: rldicl 6, 3, 60, 4 23942; PWR6-NEXT: ori 9, 9, 257 23943; PWR6-NEXT: rldimi 7, 7, 32, 0 23944; PWR6-NEXT: add 4, 5, 4 23945; PWR6-NEXT: add 3, 3, 6 23946; PWR6-NEXT: rldimi 9, 9, 32, 0 23947; PWR6-NEXT: rldicl 5, 4, 60, 4 23948; PWR6-NEXT: and 3, 3, 7 23949; PWR6-NEXT: add 4, 4, 5 23950; PWR6-NEXT: mulld 3, 3, 9 23951; PWR6-NEXT: and 4, 4, 7 23952; PWR6-NEXT: rldicl 3, 3, 8, 56 23953; PWR6-NEXT: mulld 4, 4, 9 23954; PWR6-NEXT: li 5, 46 23955; PWR6-NEXT: subfic 3, 3, 46 23956; PWR6-NEXT: rldicl 4, 4, 8, 56 23957; PWR6-NEXT: subfe 3, 5, 5 23958; PWR6-NEXT: subfic 4, 4, 46 23959; PWR6-NEXT: subfe 4, 5, 5 23960; PWR6-NEXT: blr 23961; 23962; PWR7-LABEL: ugt_46_v2i64: 23963; PWR7: # %bb.0: 23964; PWR7-NEXT: addi 3, 1, -32 23965; PWR7-NEXT: li 5, 0 23966; PWR7-NEXT: li 6, -1 23967; PWR7-NEXT: stxvd2x 34, 0, 3 23968; PWR7-NEXT: ld 3, -24(1) 23969; PWR7-NEXT: ld 4, -32(1) 23970; PWR7-NEXT: popcntd 3, 3 23971; PWR7-NEXT: popcntd 4, 4 23972; PWR7-NEXT: cmpldi 3, 46 23973; PWR7-NEXT: iselgt 3, 6, 5 23974; PWR7-NEXT: cmpldi 4, 46 23975; PWR7-NEXT: iselgt 4, 6, 5 23976; PWR7-NEXT: std 3, -8(1) 23977; PWR7-NEXT: addi 3, 1, -16 23978; PWR7-NEXT: std 4, -16(1) 23979; PWR7-NEXT: lxvd2x 34, 0, 3 23980; PWR7-NEXT: blr 23981; 23982; PWR8-LABEL: ugt_46_v2i64: 23983; PWR8: # %bb.0: 23984; PWR8-NEXT: addis 3, 2, .LCPI190_0@toc@ha 23985; PWR8-NEXT: vpopcntd 2, 2 23986; PWR8-NEXT: addi 3, 3, .LCPI190_0@toc@l 23987; PWR8-NEXT: lxvd2x 35, 0, 3 23988; PWR8-NEXT: vcmpgtud 2, 2, 3 23989; PWR8-NEXT: blr 23990; 23991; PWR9-LABEL: ugt_46_v2i64: 23992; PWR9: # %bb.0: 23993; PWR9-NEXT: addis 3, 2, .LCPI190_0@toc@ha 23994; PWR9-NEXT: vpopcntd 2, 2 23995; PWR9-NEXT: addi 3, 3, .LCPI190_0@toc@l 23996; PWR9-NEXT: lxvx 35, 0, 3 23997; PWR9-NEXT: vcmpgtud 2, 2, 3 23998; PWR9-NEXT: blr 23999 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24000 %3 = icmp ugt <2 x i64> %2, <i64 46, i64 46> 24001 %4 = sext <2 x i1> %3 to <2 x i64> 24002 ret <2 x i64> %4 24003} 24004 24005define <2 x i64> @ult_47_v2i64(<2 x i64> %0) { 24006; PWR5-LABEL: ult_47_v2i64: 24007; PWR5: # %bb.0: 24008; PWR5-NEXT: lis 5, 21845 24009; PWR5-NEXT: lis 6, 13107 24010; PWR5-NEXT: ori 5, 5, 21845 24011; PWR5-NEXT: rotldi 8, 4, 63 24012; PWR5-NEXT: rotldi 9, 3, 63 24013; PWR5-NEXT: rldimi 5, 5, 32, 0 24014; PWR5-NEXT: and 8, 8, 5 24015; PWR5-NEXT: and 5, 9, 5 24016; PWR5-NEXT: ori 6, 6, 13107 24017; PWR5-NEXT: sub 3, 3, 5 24018; PWR5-NEXT: rldimi 6, 6, 32, 0 24019; PWR5-NEXT: sub 4, 4, 8 24020; PWR5-NEXT: and 8, 3, 6 24021; PWR5-NEXT: rotldi 3, 3, 62 24022; PWR5-NEXT: and 3, 3, 6 24023; PWR5-NEXT: lis 7, 3855 24024; PWR5-NEXT: and 5, 4, 6 24025; PWR5-NEXT: rotldi 4, 4, 62 24026; PWR5-NEXT: add 3, 8, 3 24027; PWR5-NEXT: lis 9, 257 24028; PWR5-NEXT: ori 7, 7, 3855 24029; PWR5-NEXT: and 4, 4, 6 24030; PWR5-NEXT: rldicl 6, 3, 60, 4 24031; PWR5-NEXT: ori 9, 9, 257 24032; PWR5-NEXT: rldimi 7, 7, 32, 0 24033; PWR5-NEXT: add 4, 5, 4 24034; PWR5-NEXT: add 3, 3, 6 24035; PWR5-NEXT: rldimi 9, 9, 32, 0 24036; PWR5-NEXT: rldicl 5, 4, 60, 4 24037; PWR5-NEXT: and 3, 3, 7 24038; PWR5-NEXT: add 4, 4, 5 24039; PWR5-NEXT: mulld 3, 3, 9 24040; PWR5-NEXT: and 4, 4, 7 24041; PWR5-NEXT: rldicl 3, 3, 8, 56 24042; PWR5-NEXT: li 5, 47 24043; PWR5-NEXT: mulld 4, 4, 9 24044; PWR5-NEXT: subc 6, 3, 5 24045; PWR5-NEXT: rldicl 4, 4, 8, 56 24046; PWR5-NEXT: subfe 3, 3, 3 24047; PWR5-NEXT: subc 5, 4, 5 24048; PWR5-NEXT: subfe 4, 4, 4 24049; PWR5-NEXT: blr 24050; 24051; PWR6-LABEL: ult_47_v2i64: 24052; PWR6: # %bb.0: 24053; PWR6-NEXT: lis 5, 21845 24054; PWR6-NEXT: lis 6, 13107 24055; PWR6-NEXT: ori 5, 5, 21845 24056; PWR6-NEXT: rotldi 8, 4, 63 24057; PWR6-NEXT: rotldi 9, 3, 63 24058; PWR6-NEXT: rldimi 5, 5, 32, 0 24059; PWR6-NEXT: and 8, 8, 5 24060; PWR6-NEXT: and 5, 9, 5 24061; PWR6-NEXT: ori 6, 6, 13107 24062; PWR6-NEXT: sub 3, 3, 5 24063; PWR6-NEXT: rldimi 6, 6, 32, 0 24064; PWR6-NEXT: sub 4, 4, 8 24065; PWR6-NEXT: and 8, 3, 6 24066; PWR6-NEXT: rotldi 3, 3, 62 24067; PWR6-NEXT: and 3, 3, 6 24068; PWR6-NEXT: lis 7, 3855 24069; PWR6-NEXT: and 5, 4, 6 24070; PWR6-NEXT: rotldi 4, 4, 62 24071; PWR6-NEXT: add 3, 8, 3 24072; PWR6-NEXT: lis 9, 257 24073; PWR6-NEXT: ori 7, 7, 3855 24074; PWR6-NEXT: and 4, 4, 6 24075; PWR6-NEXT: rldicl 6, 3, 60, 4 24076; PWR6-NEXT: ori 9, 9, 257 24077; PWR6-NEXT: rldimi 7, 7, 32, 0 24078; PWR6-NEXT: add 4, 5, 4 24079; PWR6-NEXT: add 3, 3, 6 24080; PWR6-NEXT: rldimi 9, 9, 32, 0 24081; PWR6-NEXT: rldicl 5, 4, 60, 4 24082; PWR6-NEXT: and 3, 3, 7 24083; PWR6-NEXT: add 4, 4, 5 24084; PWR6-NEXT: mulld 3, 3, 9 24085; PWR6-NEXT: and 4, 4, 7 24086; PWR6-NEXT: rldicl 3, 3, 8, 56 24087; PWR6-NEXT: li 5, 47 24088; PWR6-NEXT: mulld 4, 4, 9 24089; PWR6-NEXT: subc 6, 3, 5 24090; PWR6-NEXT: rldicl 4, 4, 8, 56 24091; PWR6-NEXT: subfe 3, 3, 3 24092; PWR6-NEXT: subc 5, 4, 5 24093; PWR6-NEXT: subfe 4, 4, 4 24094; PWR6-NEXT: blr 24095; 24096; PWR7-LABEL: ult_47_v2i64: 24097; PWR7: # %bb.0: 24098; PWR7-NEXT: addi 3, 1, -32 24099; PWR7-NEXT: li 5, 0 24100; PWR7-NEXT: li 6, -1 24101; PWR7-NEXT: stxvd2x 34, 0, 3 24102; PWR7-NEXT: ld 3, -24(1) 24103; PWR7-NEXT: ld 4, -32(1) 24104; PWR7-NEXT: popcntd 3, 3 24105; PWR7-NEXT: popcntd 4, 4 24106; PWR7-NEXT: cmpldi 3, 47 24107; PWR7-NEXT: isellt 3, 6, 5 24108; PWR7-NEXT: cmpldi 4, 47 24109; PWR7-NEXT: isellt 4, 6, 5 24110; PWR7-NEXT: std 3, -8(1) 24111; PWR7-NEXT: addi 3, 1, -16 24112; PWR7-NEXT: std 4, -16(1) 24113; PWR7-NEXT: lxvd2x 34, 0, 3 24114; PWR7-NEXT: blr 24115; 24116; PWR8-LABEL: ult_47_v2i64: 24117; PWR8: # %bb.0: 24118; PWR8-NEXT: addis 3, 2, .LCPI191_0@toc@ha 24119; PWR8-NEXT: vpopcntd 2, 2 24120; PWR8-NEXT: addi 3, 3, .LCPI191_0@toc@l 24121; PWR8-NEXT: lxvd2x 35, 0, 3 24122; PWR8-NEXT: vcmpgtud 2, 3, 2 24123; PWR8-NEXT: blr 24124; 24125; PWR9-LABEL: ult_47_v2i64: 24126; PWR9: # %bb.0: 24127; PWR9-NEXT: addis 3, 2, .LCPI191_0@toc@ha 24128; PWR9-NEXT: vpopcntd 2, 2 24129; PWR9-NEXT: addi 3, 3, .LCPI191_0@toc@l 24130; PWR9-NEXT: lxvx 35, 0, 3 24131; PWR9-NEXT: vcmpgtud 2, 3, 2 24132; PWR9-NEXT: blr 24133 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24134 %3 = icmp ult <2 x i64> %2, <i64 47, i64 47> 24135 %4 = sext <2 x i1> %3 to <2 x i64> 24136 ret <2 x i64> %4 24137} 24138 24139define <2 x i64> @ugt_47_v2i64(<2 x i64> %0) { 24140; PWR5-LABEL: ugt_47_v2i64: 24141; PWR5: # %bb.0: 24142; PWR5-NEXT: lis 5, 21845 24143; PWR5-NEXT: lis 6, 13107 24144; PWR5-NEXT: ori 5, 5, 21845 24145; PWR5-NEXT: rotldi 8, 4, 63 24146; PWR5-NEXT: rotldi 9, 3, 63 24147; PWR5-NEXT: rldimi 5, 5, 32, 0 24148; PWR5-NEXT: and 8, 8, 5 24149; PWR5-NEXT: and 5, 9, 5 24150; PWR5-NEXT: ori 6, 6, 13107 24151; PWR5-NEXT: sub 3, 3, 5 24152; PWR5-NEXT: rldimi 6, 6, 32, 0 24153; PWR5-NEXT: sub 4, 4, 8 24154; PWR5-NEXT: and 8, 3, 6 24155; PWR5-NEXT: rotldi 3, 3, 62 24156; PWR5-NEXT: and 3, 3, 6 24157; PWR5-NEXT: lis 7, 3855 24158; PWR5-NEXT: and 5, 4, 6 24159; PWR5-NEXT: rotldi 4, 4, 62 24160; PWR5-NEXT: add 3, 8, 3 24161; PWR5-NEXT: lis 9, 257 24162; PWR5-NEXT: ori 7, 7, 3855 24163; PWR5-NEXT: and 4, 4, 6 24164; PWR5-NEXT: rldicl 6, 3, 60, 4 24165; PWR5-NEXT: ori 9, 9, 257 24166; PWR5-NEXT: rldimi 7, 7, 32, 0 24167; PWR5-NEXT: add 4, 5, 4 24168; PWR5-NEXT: add 3, 3, 6 24169; PWR5-NEXT: rldimi 9, 9, 32, 0 24170; PWR5-NEXT: rldicl 5, 4, 60, 4 24171; PWR5-NEXT: and 3, 3, 7 24172; PWR5-NEXT: add 4, 4, 5 24173; PWR5-NEXT: mulld 3, 3, 9 24174; PWR5-NEXT: and 4, 4, 7 24175; PWR5-NEXT: rldicl 3, 3, 8, 56 24176; PWR5-NEXT: mulld 4, 4, 9 24177; PWR5-NEXT: li 5, 47 24178; PWR5-NEXT: subfic 3, 3, 47 24179; PWR5-NEXT: rldicl 4, 4, 8, 56 24180; PWR5-NEXT: subfe 3, 5, 5 24181; PWR5-NEXT: subfic 4, 4, 47 24182; PWR5-NEXT: subfe 4, 5, 5 24183; PWR5-NEXT: blr 24184; 24185; PWR6-LABEL: ugt_47_v2i64: 24186; PWR6: # %bb.0: 24187; PWR6-NEXT: lis 5, 21845 24188; PWR6-NEXT: lis 6, 13107 24189; PWR6-NEXT: ori 5, 5, 21845 24190; PWR6-NEXT: rotldi 8, 4, 63 24191; PWR6-NEXT: rotldi 9, 3, 63 24192; PWR6-NEXT: rldimi 5, 5, 32, 0 24193; PWR6-NEXT: and 8, 8, 5 24194; PWR6-NEXT: and 5, 9, 5 24195; PWR6-NEXT: ori 6, 6, 13107 24196; PWR6-NEXT: sub 3, 3, 5 24197; PWR6-NEXT: rldimi 6, 6, 32, 0 24198; PWR6-NEXT: sub 4, 4, 8 24199; PWR6-NEXT: and 8, 3, 6 24200; PWR6-NEXT: rotldi 3, 3, 62 24201; PWR6-NEXT: and 3, 3, 6 24202; PWR6-NEXT: lis 7, 3855 24203; PWR6-NEXT: and 5, 4, 6 24204; PWR6-NEXT: rotldi 4, 4, 62 24205; PWR6-NEXT: add 3, 8, 3 24206; PWR6-NEXT: lis 9, 257 24207; PWR6-NEXT: ori 7, 7, 3855 24208; PWR6-NEXT: and 4, 4, 6 24209; PWR6-NEXT: rldicl 6, 3, 60, 4 24210; PWR6-NEXT: ori 9, 9, 257 24211; PWR6-NEXT: rldimi 7, 7, 32, 0 24212; PWR6-NEXT: add 4, 5, 4 24213; PWR6-NEXT: add 3, 3, 6 24214; PWR6-NEXT: rldimi 9, 9, 32, 0 24215; PWR6-NEXT: rldicl 5, 4, 60, 4 24216; PWR6-NEXT: and 3, 3, 7 24217; PWR6-NEXT: add 4, 4, 5 24218; PWR6-NEXT: mulld 3, 3, 9 24219; PWR6-NEXT: and 4, 4, 7 24220; PWR6-NEXT: rldicl 3, 3, 8, 56 24221; PWR6-NEXT: mulld 4, 4, 9 24222; PWR6-NEXT: li 5, 47 24223; PWR6-NEXT: subfic 3, 3, 47 24224; PWR6-NEXT: rldicl 4, 4, 8, 56 24225; PWR6-NEXT: subfe 3, 5, 5 24226; PWR6-NEXT: subfic 4, 4, 47 24227; PWR6-NEXT: subfe 4, 5, 5 24228; PWR6-NEXT: blr 24229; 24230; PWR7-LABEL: ugt_47_v2i64: 24231; PWR7: # %bb.0: 24232; PWR7-NEXT: addi 3, 1, -32 24233; PWR7-NEXT: li 5, 0 24234; PWR7-NEXT: li 6, -1 24235; PWR7-NEXT: stxvd2x 34, 0, 3 24236; PWR7-NEXT: ld 3, -24(1) 24237; PWR7-NEXT: ld 4, -32(1) 24238; PWR7-NEXT: popcntd 3, 3 24239; PWR7-NEXT: popcntd 4, 4 24240; PWR7-NEXT: cmpldi 3, 47 24241; PWR7-NEXT: iselgt 3, 6, 5 24242; PWR7-NEXT: cmpldi 4, 47 24243; PWR7-NEXT: iselgt 4, 6, 5 24244; PWR7-NEXT: std 3, -8(1) 24245; PWR7-NEXT: addi 3, 1, -16 24246; PWR7-NEXT: std 4, -16(1) 24247; PWR7-NEXT: lxvd2x 34, 0, 3 24248; PWR7-NEXT: blr 24249; 24250; PWR8-LABEL: ugt_47_v2i64: 24251; PWR8: # %bb.0: 24252; PWR8-NEXT: addis 3, 2, .LCPI192_0@toc@ha 24253; PWR8-NEXT: vpopcntd 2, 2 24254; PWR8-NEXT: addi 3, 3, .LCPI192_0@toc@l 24255; PWR8-NEXT: lxvd2x 35, 0, 3 24256; PWR8-NEXT: vcmpgtud 2, 2, 3 24257; PWR8-NEXT: blr 24258; 24259; PWR9-LABEL: ugt_47_v2i64: 24260; PWR9: # %bb.0: 24261; PWR9-NEXT: addis 3, 2, .LCPI192_0@toc@ha 24262; PWR9-NEXT: vpopcntd 2, 2 24263; PWR9-NEXT: addi 3, 3, .LCPI192_0@toc@l 24264; PWR9-NEXT: lxvx 35, 0, 3 24265; PWR9-NEXT: vcmpgtud 2, 2, 3 24266; PWR9-NEXT: blr 24267 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24268 %3 = icmp ugt <2 x i64> %2, <i64 47, i64 47> 24269 %4 = sext <2 x i1> %3 to <2 x i64> 24270 ret <2 x i64> %4 24271} 24272 24273define <2 x i64> @ult_48_v2i64(<2 x i64> %0) { 24274; PWR5-LABEL: ult_48_v2i64: 24275; PWR5: # %bb.0: 24276; PWR5-NEXT: lis 5, 21845 24277; PWR5-NEXT: lis 6, 13107 24278; PWR5-NEXT: ori 5, 5, 21845 24279; PWR5-NEXT: rotldi 8, 4, 63 24280; PWR5-NEXT: rotldi 9, 3, 63 24281; PWR5-NEXT: rldimi 5, 5, 32, 0 24282; PWR5-NEXT: and 8, 8, 5 24283; PWR5-NEXT: and 5, 9, 5 24284; PWR5-NEXT: ori 6, 6, 13107 24285; PWR5-NEXT: sub 3, 3, 5 24286; PWR5-NEXT: rldimi 6, 6, 32, 0 24287; PWR5-NEXT: sub 4, 4, 8 24288; PWR5-NEXT: and 8, 3, 6 24289; PWR5-NEXT: rotldi 3, 3, 62 24290; PWR5-NEXT: and 3, 3, 6 24291; PWR5-NEXT: lis 7, 3855 24292; PWR5-NEXT: and 5, 4, 6 24293; PWR5-NEXT: rotldi 4, 4, 62 24294; PWR5-NEXT: add 3, 8, 3 24295; PWR5-NEXT: lis 9, 257 24296; PWR5-NEXT: ori 7, 7, 3855 24297; PWR5-NEXT: and 4, 4, 6 24298; PWR5-NEXT: rldicl 6, 3, 60, 4 24299; PWR5-NEXT: ori 9, 9, 257 24300; PWR5-NEXT: rldimi 7, 7, 32, 0 24301; PWR5-NEXT: add 4, 5, 4 24302; PWR5-NEXT: add 3, 3, 6 24303; PWR5-NEXT: rldimi 9, 9, 32, 0 24304; PWR5-NEXT: rldicl 5, 4, 60, 4 24305; PWR5-NEXT: and 3, 3, 7 24306; PWR5-NEXT: add 4, 4, 5 24307; PWR5-NEXT: mulld 3, 3, 9 24308; PWR5-NEXT: and 4, 4, 7 24309; PWR5-NEXT: rldicl 3, 3, 8, 56 24310; PWR5-NEXT: li 5, 48 24311; PWR5-NEXT: mulld 4, 4, 9 24312; PWR5-NEXT: subc 6, 3, 5 24313; PWR5-NEXT: rldicl 4, 4, 8, 56 24314; PWR5-NEXT: subfe 3, 3, 3 24315; PWR5-NEXT: subc 5, 4, 5 24316; PWR5-NEXT: subfe 4, 4, 4 24317; PWR5-NEXT: blr 24318; 24319; PWR6-LABEL: ult_48_v2i64: 24320; PWR6: # %bb.0: 24321; PWR6-NEXT: lis 5, 21845 24322; PWR6-NEXT: lis 6, 13107 24323; PWR6-NEXT: ori 5, 5, 21845 24324; PWR6-NEXT: rotldi 8, 4, 63 24325; PWR6-NEXT: rotldi 9, 3, 63 24326; PWR6-NEXT: rldimi 5, 5, 32, 0 24327; PWR6-NEXT: and 8, 8, 5 24328; PWR6-NEXT: and 5, 9, 5 24329; PWR6-NEXT: ori 6, 6, 13107 24330; PWR6-NEXT: sub 3, 3, 5 24331; PWR6-NEXT: rldimi 6, 6, 32, 0 24332; PWR6-NEXT: sub 4, 4, 8 24333; PWR6-NEXT: and 8, 3, 6 24334; PWR6-NEXT: rotldi 3, 3, 62 24335; PWR6-NEXT: and 3, 3, 6 24336; PWR6-NEXT: lis 7, 3855 24337; PWR6-NEXT: and 5, 4, 6 24338; PWR6-NEXT: rotldi 4, 4, 62 24339; PWR6-NEXT: add 3, 8, 3 24340; PWR6-NEXT: lis 9, 257 24341; PWR6-NEXT: ori 7, 7, 3855 24342; PWR6-NEXT: and 4, 4, 6 24343; PWR6-NEXT: rldicl 6, 3, 60, 4 24344; PWR6-NEXT: ori 9, 9, 257 24345; PWR6-NEXT: rldimi 7, 7, 32, 0 24346; PWR6-NEXT: add 4, 5, 4 24347; PWR6-NEXT: add 3, 3, 6 24348; PWR6-NEXT: rldimi 9, 9, 32, 0 24349; PWR6-NEXT: rldicl 5, 4, 60, 4 24350; PWR6-NEXT: and 3, 3, 7 24351; PWR6-NEXT: add 4, 4, 5 24352; PWR6-NEXT: mulld 3, 3, 9 24353; PWR6-NEXT: and 4, 4, 7 24354; PWR6-NEXT: rldicl 3, 3, 8, 56 24355; PWR6-NEXT: li 5, 48 24356; PWR6-NEXT: mulld 4, 4, 9 24357; PWR6-NEXT: subc 6, 3, 5 24358; PWR6-NEXT: rldicl 4, 4, 8, 56 24359; PWR6-NEXT: subfe 3, 3, 3 24360; PWR6-NEXT: subc 5, 4, 5 24361; PWR6-NEXT: subfe 4, 4, 4 24362; PWR6-NEXT: blr 24363; 24364; PWR7-LABEL: ult_48_v2i64: 24365; PWR7: # %bb.0: 24366; PWR7-NEXT: addi 3, 1, -32 24367; PWR7-NEXT: li 5, 0 24368; PWR7-NEXT: li 6, -1 24369; PWR7-NEXT: stxvd2x 34, 0, 3 24370; PWR7-NEXT: ld 3, -24(1) 24371; PWR7-NEXT: ld 4, -32(1) 24372; PWR7-NEXT: popcntd 3, 3 24373; PWR7-NEXT: popcntd 4, 4 24374; PWR7-NEXT: cmpldi 3, 48 24375; PWR7-NEXT: isellt 3, 6, 5 24376; PWR7-NEXT: cmpldi 4, 48 24377; PWR7-NEXT: isellt 4, 6, 5 24378; PWR7-NEXT: std 3, -8(1) 24379; PWR7-NEXT: addi 3, 1, -16 24380; PWR7-NEXT: std 4, -16(1) 24381; PWR7-NEXT: lxvd2x 34, 0, 3 24382; PWR7-NEXT: blr 24383; 24384; PWR8-LABEL: ult_48_v2i64: 24385; PWR8: # %bb.0: 24386; PWR8-NEXT: addis 3, 2, .LCPI193_0@toc@ha 24387; PWR8-NEXT: vpopcntd 2, 2 24388; PWR8-NEXT: addi 3, 3, .LCPI193_0@toc@l 24389; PWR8-NEXT: lxvd2x 35, 0, 3 24390; PWR8-NEXT: vcmpgtud 2, 3, 2 24391; PWR8-NEXT: blr 24392; 24393; PWR9-LABEL: ult_48_v2i64: 24394; PWR9: # %bb.0: 24395; PWR9-NEXT: addis 3, 2, .LCPI193_0@toc@ha 24396; PWR9-NEXT: vpopcntd 2, 2 24397; PWR9-NEXT: addi 3, 3, .LCPI193_0@toc@l 24398; PWR9-NEXT: lxvx 35, 0, 3 24399; PWR9-NEXT: vcmpgtud 2, 3, 2 24400; PWR9-NEXT: blr 24401 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24402 %3 = icmp ult <2 x i64> %2, <i64 48, i64 48> 24403 %4 = sext <2 x i1> %3 to <2 x i64> 24404 ret <2 x i64> %4 24405} 24406 24407define <2 x i64> @ugt_48_v2i64(<2 x i64> %0) { 24408; PWR5-LABEL: ugt_48_v2i64: 24409; PWR5: # %bb.0: 24410; PWR5-NEXT: lis 5, 21845 24411; PWR5-NEXT: lis 6, 13107 24412; PWR5-NEXT: ori 5, 5, 21845 24413; PWR5-NEXT: rotldi 8, 4, 63 24414; PWR5-NEXT: rotldi 9, 3, 63 24415; PWR5-NEXT: rldimi 5, 5, 32, 0 24416; PWR5-NEXT: and 8, 8, 5 24417; PWR5-NEXT: and 5, 9, 5 24418; PWR5-NEXT: ori 6, 6, 13107 24419; PWR5-NEXT: sub 3, 3, 5 24420; PWR5-NEXT: rldimi 6, 6, 32, 0 24421; PWR5-NEXT: sub 4, 4, 8 24422; PWR5-NEXT: and 8, 3, 6 24423; PWR5-NEXT: rotldi 3, 3, 62 24424; PWR5-NEXT: and 3, 3, 6 24425; PWR5-NEXT: lis 7, 3855 24426; PWR5-NEXT: and 5, 4, 6 24427; PWR5-NEXT: rotldi 4, 4, 62 24428; PWR5-NEXT: add 3, 8, 3 24429; PWR5-NEXT: lis 9, 257 24430; PWR5-NEXT: ori 7, 7, 3855 24431; PWR5-NEXT: and 4, 4, 6 24432; PWR5-NEXT: rldicl 6, 3, 60, 4 24433; PWR5-NEXT: ori 9, 9, 257 24434; PWR5-NEXT: rldimi 7, 7, 32, 0 24435; PWR5-NEXT: add 4, 5, 4 24436; PWR5-NEXT: add 3, 3, 6 24437; PWR5-NEXT: rldimi 9, 9, 32, 0 24438; PWR5-NEXT: rldicl 5, 4, 60, 4 24439; PWR5-NEXT: and 3, 3, 7 24440; PWR5-NEXT: add 4, 4, 5 24441; PWR5-NEXT: mulld 3, 3, 9 24442; PWR5-NEXT: and 4, 4, 7 24443; PWR5-NEXT: rldicl 3, 3, 8, 56 24444; PWR5-NEXT: mulld 4, 4, 9 24445; PWR5-NEXT: li 5, 48 24446; PWR5-NEXT: subfic 3, 3, 48 24447; PWR5-NEXT: rldicl 4, 4, 8, 56 24448; PWR5-NEXT: subfe 3, 5, 5 24449; PWR5-NEXT: subfic 4, 4, 48 24450; PWR5-NEXT: subfe 4, 5, 5 24451; PWR5-NEXT: blr 24452; 24453; PWR6-LABEL: ugt_48_v2i64: 24454; PWR6: # %bb.0: 24455; PWR6-NEXT: lis 5, 21845 24456; PWR6-NEXT: lis 6, 13107 24457; PWR6-NEXT: ori 5, 5, 21845 24458; PWR6-NEXT: rotldi 8, 4, 63 24459; PWR6-NEXT: rotldi 9, 3, 63 24460; PWR6-NEXT: rldimi 5, 5, 32, 0 24461; PWR6-NEXT: and 8, 8, 5 24462; PWR6-NEXT: and 5, 9, 5 24463; PWR6-NEXT: ori 6, 6, 13107 24464; PWR6-NEXT: sub 3, 3, 5 24465; PWR6-NEXT: rldimi 6, 6, 32, 0 24466; PWR6-NEXT: sub 4, 4, 8 24467; PWR6-NEXT: and 8, 3, 6 24468; PWR6-NEXT: rotldi 3, 3, 62 24469; PWR6-NEXT: and 3, 3, 6 24470; PWR6-NEXT: lis 7, 3855 24471; PWR6-NEXT: and 5, 4, 6 24472; PWR6-NEXT: rotldi 4, 4, 62 24473; PWR6-NEXT: add 3, 8, 3 24474; PWR6-NEXT: lis 9, 257 24475; PWR6-NEXT: ori 7, 7, 3855 24476; PWR6-NEXT: and 4, 4, 6 24477; PWR6-NEXT: rldicl 6, 3, 60, 4 24478; PWR6-NEXT: ori 9, 9, 257 24479; PWR6-NEXT: rldimi 7, 7, 32, 0 24480; PWR6-NEXT: add 4, 5, 4 24481; PWR6-NEXT: add 3, 3, 6 24482; PWR6-NEXT: rldimi 9, 9, 32, 0 24483; PWR6-NEXT: rldicl 5, 4, 60, 4 24484; PWR6-NEXT: and 3, 3, 7 24485; PWR6-NEXT: add 4, 4, 5 24486; PWR6-NEXT: mulld 3, 3, 9 24487; PWR6-NEXT: and 4, 4, 7 24488; PWR6-NEXT: rldicl 3, 3, 8, 56 24489; PWR6-NEXT: mulld 4, 4, 9 24490; PWR6-NEXT: li 5, 48 24491; PWR6-NEXT: subfic 3, 3, 48 24492; PWR6-NEXT: rldicl 4, 4, 8, 56 24493; PWR6-NEXT: subfe 3, 5, 5 24494; PWR6-NEXT: subfic 4, 4, 48 24495; PWR6-NEXT: subfe 4, 5, 5 24496; PWR6-NEXT: blr 24497; 24498; PWR7-LABEL: ugt_48_v2i64: 24499; PWR7: # %bb.0: 24500; PWR7-NEXT: addi 3, 1, -32 24501; PWR7-NEXT: li 5, 0 24502; PWR7-NEXT: li 6, -1 24503; PWR7-NEXT: stxvd2x 34, 0, 3 24504; PWR7-NEXT: ld 3, -24(1) 24505; PWR7-NEXT: ld 4, -32(1) 24506; PWR7-NEXT: popcntd 3, 3 24507; PWR7-NEXT: popcntd 4, 4 24508; PWR7-NEXT: cmpldi 3, 48 24509; PWR7-NEXT: iselgt 3, 6, 5 24510; PWR7-NEXT: cmpldi 4, 48 24511; PWR7-NEXT: iselgt 4, 6, 5 24512; PWR7-NEXT: std 3, -8(1) 24513; PWR7-NEXT: addi 3, 1, -16 24514; PWR7-NEXT: std 4, -16(1) 24515; PWR7-NEXT: lxvd2x 34, 0, 3 24516; PWR7-NEXT: blr 24517; 24518; PWR8-LABEL: ugt_48_v2i64: 24519; PWR8: # %bb.0: 24520; PWR8-NEXT: addis 3, 2, .LCPI194_0@toc@ha 24521; PWR8-NEXT: vpopcntd 2, 2 24522; PWR8-NEXT: addi 3, 3, .LCPI194_0@toc@l 24523; PWR8-NEXT: lxvd2x 35, 0, 3 24524; PWR8-NEXT: vcmpgtud 2, 2, 3 24525; PWR8-NEXT: blr 24526; 24527; PWR9-LABEL: ugt_48_v2i64: 24528; PWR9: # %bb.0: 24529; PWR9-NEXT: addis 3, 2, .LCPI194_0@toc@ha 24530; PWR9-NEXT: vpopcntd 2, 2 24531; PWR9-NEXT: addi 3, 3, .LCPI194_0@toc@l 24532; PWR9-NEXT: lxvx 35, 0, 3 24533; PWR9-NEXT: vcmpgtud 2, 2, 3 24534; PWR9-NEXT: blr 24535 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24536 %3 = icmp ugt <2 x i64> %2, <i64 48, i64 48> 24537 %4 = sext <2 x i1> %3 to <2 x i64> 24538 ret <2 x i64> %4 24539} 24540 24541define <2 x i64> @ult_49_v2i64(<2 x i64> %0) { 24542; PWR5-LABEL: ult_49_v2i64: 24543; PWR5: # %bb.0: 24544; PWR5-NEXT: lis 5, 21845 24545; PWR5-NEXT: lis 6, 13107 24546; PWR5-NEXT: ori 5, 5, 21845 24547; PWR5-NEXT: rotldi 8, 4, 63 24548; PWR5-NEXT: rotldi 9, 3, 63 24549; PWR5-NEXT: rldimi 5, 5, 32, 0 24550; PWR5-NEXT: and 8, 8, 5 24551; PWR5-NEXT: and 5, 9, 5 24552; PWR5-NEXT: ori 6, 6, 13107 24553; PWR5-NEXT: sub 3, 3, 5 24554; PWR5-NEXT: rldimi 6, 6, 32, 0 24555; PWR5-NEXT: sub 4, 4, 8 24556; PWR5-NEXT: and 8, 3, 6 24557; PWR5-NEXT: rotldi 3, 3, 62 24558; PWR5-NEXT: and 3, 3, 6 24559; PWR5-NEXT: lis 7, 3855 24560; PWR5-NEXT: and 5, 4, 6 24561; PWR5-NEXT: rotldi 4, 4, 62 24562; PWR5-NEXT: add 3, 8, 3 24563; PWR5-NEXT: lis 9, 257 24564; PWR5-NEXT: ori 7, 7, 3855 24565; PWR5-NEXT: and 4, 4, 6 24566; PWR5-NEXT: rldicl 6, 3, 60, 4 24567; PWR5-NEXT: ori 9, 9, 257 24568; PWR5-NEXT: rldimi 7, 7, 32, 0 24569; PWR5-NEXT: add 4, 5, 4 24570; PWR5-NEXT: add 3, 3, 6 24571; PWR5-NEXT: rldimi 9, 9, 32, 0 24572; PWR5-NEXT: rldicl 5, 4, 60, 4 24573; PWR5-NEXT: and 3, 3, 7 24574; PWR5-NEXT: add 4, 4, 5 24575; PWR5-NEXT: mulld 3, 3, 9 24576; PWR5-NEXT: and 4, 4, 7 24577; PWR5-NEXT: rldicl 3, 3, 8, 56 24578; PWR5-NEXT: li 5, 49 24579; PWR5-NEXT: mulld 4, 4, 9 24580; PWR5-NEXT: subc 6, 3, 5 24581; PWR5-NEXT: rldicl 4, 4, 8, 56 24582; PWR5-NEXT: subfe 3, 3, 3 24583; PWR5-NEXT: subc 5, 4, 5 24584; PWR5-NEXT: subfe 4, 4, 4 24585; PWR5-NEXT: blr 24586; 24587; PWR6-LABEL: ult_49_v2i64: 24588; PWR6: # %bb.0: 24589; PWR6-NEXT: lis 5, 21845 24590; PWR6-NEXT: lis 6, 13107 24591; PWR6-NEXT: ori 5, 5, 21845 24592; PWR6-NEXT: rotldi 8, 4, 63 24593; PWR6-NEXT: rotldi 9, 3, 63 24594; PWR6-NEXT: rldimi 5, 5, 32, 0 24595; PWR6-NEXT: and 8, 8, 5 24596; PWR6-NEXT: and 5, 9, 5 24597; PWR6-NEXT: ori 6, 6, 13107 24598; PWR6-NEXT: sub 3, 3, 5 24599; PWR6-NEXT: rldimi 6, 6, 32, 0 24600; PWR6-NEXT: sub 4, 4, 8 24601; PWR6-NEXT: and 8, 3, 6 24602; PWR6-NEXT: rotldi 3, 3, 62 24603; PWR6-NEXT: and 3, 3, 6 24604; PWR6-NEXT: lis 7, 3855 24605; PWR6-NEXT: and 5, 4, 6 24606; PWR6-NEXT: rotldi 4, 4, 62 24607; PWR6-NEXT: add 3, 8, 3 24608; PWR6-NEXT: lis 9, 257 24609; PWR6-NEXT: ori 7, 7, 3855 24610; PWR6-NEXT: and 4, 4, 6 24611; PWR6-NEXT: rldicl 6, 3, 60, 4 24612; PWR6-NEXT: ori 9, 9, 257 24613; PWR6-NEXT: rldimi 7, 7, 32, 0 24614; PWR6-NEXT: add 4, 5, 4 24615; PWR6-NEXT: add 3, 3, 6 24616; PWR6-NEXT: rldimi 9, 9, 32, 0 24617; PWR6-NEXT: rldicl 5, 4, 60, 4 24618; PWR6-NEXT: and 3, 3, 7 24619; PWR6-NEXT: add 4, 4, 5 24620; PWR6-NEXT: mulld 3, 3, 9 24621; PWR6-NEXT: and 4, 4, 7 24622; PWR6-NEXT: rldicl 3, 3, 8, 56 24623; PWR6-NEXT: li 5, 49 24624; PWR6-NEXT: mulld 4, 4, 9 24625; PWR6-NEXT: subc 6, 3, 5 24626; PWR6-NEXT: rldicl 4, 4, 8, 56 24627; PWR6-NEXT: subfe 3, 3, 3 24628; PWR6-NEXT: subc 5, 4, 5 24629; PWR6-NEXT: subfe 4, 4, 4 24630; PWR6-NEXT: blr 24631; 24632; PWR7-LABEL: ult_49_v2i64: 24633; PWR7: # %bb.0: 24634; PWR7-NEXT: addi 3, 1, -32 24635; PWR7-NEXT: li 5, 0 24636; PWR7-NEXT: li 6, -1 24637; PWR7-NEXT: stxvd2x 34, 0, 3 24638; PWR7-NEXT: ld 3, -24(1) 24639; PWR7-NEXT: ld 4, -32(1) 24640; PWR7-NEXT: popcntd 3, 3 24641; PWR7-NEXT: popcntd 4, 4 24642; PWR7-NEXT: cmpldi 3, 49 24643; PWR7-NEXT: isellt 3, 6, 5 24644; PWR7-NEXT: cmpldi 4, 49 24645; PWR7-NEXT: isellt 4, 6, 5 24646; PWR7-NEXT: std 3, -8(1) 24647; PWR7-NEXT: addi 3, 1, -16 24648; PWR7-NEXT: std 4, -16(1) 24649; PWR7-NEXT: lxvd2x 34, 0, 3 24650; PWR7-NEXT: blr 24651; 24652; PWR8-LABEL: ult_49_v2i64: 24653; PWR8: # %bb.0: 24654; PWR8-NEXT: addis 3, 2, .LCPI195_0@toc@ha 24655; PWR8-NEXT: vpopcntd 2, 2 24656; PWR8-NEXT: addi 3, 3, .LCPI195_0@toc@l 24657; PWR8-NEXT: lxvd2x 35, 0, 3 24658; PWR8-NEXT: vcmpgtud 2, 3, 2 24659; PWR8-NEXT: blr 24660; 24661; PWR9-LABEL: ult_49_v2i64: 24662; PWR9: # %bb.0: 24663; PWR9-NEXT: addis 3, 2, .LCPI195_0@toc@ha 24664; PWR9-NEXT: vpopcntd 2, 2 24665; PWR9-NEXT: addi 3, 3, .LCPI195_0@toc@l 24666; PWR9-NEXT: lxvx 35, 0, 3 24667; PWR9-NEXT: vcmpgtud 2, 3, 2 24668; PWR9-NEXT: blr 24669 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24670 %3 = icmp ult <2 x i64> %2, <i64 49, i64 49> 24671 %4 = sext <2 x i1> %3 to <2 x i64> 24672 ret <2 x i64> %4 24673} 24674 24675define <2 x i64> @ugt_49_v2i64(<2 x i64> %0) { 24676; PWR5-LABEL: ugt_49_v2i64: 24677; PWR5: # %bb.0: 24678; PWR5-NEXT: lis 5, 21845 24679; PWR5-NEXT: lis 6, 13107 24680; PWR5-NEXT: ori 5, 5, 21845 24681; PWR5-NEXT: rotldi 8, 4, 63 24682; PWR5-NEXT: rotldi 9, 3, 63 24683; PWR5-NEXT: rldimi 5, 5, 32, 0 24684; PWR5-NEXT: and 8, 8, 5 24685; PWR5-NEXT: and 5, 9, 5 24686; PWR5-NEXT: ori 6, 6, 13107 24687; PWR5-NEXT: sub 3, 3, 5 24688; PWR5-NEXT: rldimi 6, 6, 32, 0 24689; PWR5-NEXT: sub 4, 4, 8 24690; PWR5-NEXT: and 8, 3, 6 24691; PWR5-NEXT: rotldi 3, 3, 62 24692; PWR5-NEXT: and 3, 3, 6 24693; PWR5-NEXT: lis 7, 3855 24694; PWR5-NEXT: and 5, 4, 6 24695; PWR5-NEXT: rotldi 4, 4, 62 24696; PWR5-NEXT: add 3, 8, 3 24697; PWR5-NEXT: lis 9, 257 24698; PWR5-NEXT: ori 7, 7, 3855 24699; PWR5-NEXT: and 4, 4, 6 24700; PWR5-NEXT: rldicl 6, 3, 60, 4 24701; PWR5-NEXT: ori 9, 9, 257 24702; PWR5-NEXT: rldimi 7, 7, 32, 0 24703; PWR5-NEXT: add 4, 5, 4 24704; PWR5-NEXT: add 3, 3, 6 24705; PWR5-NEXT: rldimi 9, 9, 32, 0 24706; PWR5-NEXT: rldicl 5, 4, 60, 4 24707; PWR5-NEXT: and 3, 3, 7 24708; PWR5-NEXT: add 4, 4, 5 24709; PWR5-NEXT: mulld 3, 3, 9 24710; PWR5-NEXT: and 4, 4, 7 24711; PWR5-NEXT: rldicl 3, 3, 8, 56 24712; PWR5-NEXT: mulld 4, 4, 9 24713; PWR5-NEXT: li 5, 49 24714; PWR5-NEXT: subfic 3, 3, 49 24715; PWR5-NEXT: rldicl 4, 4, 8, 56 24716; PWR5-NEXT: subfe 3, 5, 5 24717; PWR5-NEXT: subfic 4, 4, 49 24718; PWR5-NEXT: subfe 4, 5, 5 24719; PWR5-NEXT: blr 24720; 24721; PWR6-LABEL: ugt_49_v2i64: 24722; PWR6: # %bb.0: 24723; PWR6-NEXT: lis 5, 21845 24724; PWR6-NEXT: lis 6, 13107 24725; PWR6-NEXT: ori 5, 5, 21845 24726; PWR6-NEXT: rotldi 8, 4, 63 24727; PWR6-NEXT: rotldi 9, 3, 63 24728; PWR6-NEXT: rldimi 5, 5, 32, 0 24729; PWR6-NEXT: and 8, 8, 5 24730; PWR6-NEXT: and 5, 9, 5 24731; PWR6-NEXT: ori 6, 6, 13107 24732; PWR6-NEXT: sub 3, 3, 5 24733; PWR6-NEXT: rldimi 6, 6, 32, 0 24734; PWR6-NEXT: sub 4, 4, 8 24735; PWR6-NEXT: and 8, 3, 6 24736; PWR6-NEXT: rotldi 3, 3, 62 24737; PWR6-NEXT: and 3, 3, 6 24738; PWR6-NEXT: lis 7, 3855 24739; PWR6-NEXT: and 5, 4, 6 24740; PWR6-NEXT: rotldi 4, 4, 62 24741; PWR6-NEXT: add 3, 8, 3 24742; PWR6-NEXT: lis 9, 257 24743; PWR6-NEXT: ori 7, 7, 3855 24744; PWR6-NEXT: and 4, 4, 6 24745; PWR6-NEXT: rldicl 6, 3, 60, 4 24746; PWR6-NEXT: ori 9, 9, 257 24747; PWR6-NEXT: rldimi 7, 7, 32, 0 24748; PWR6-NEXT: add 4, 5, 4 24749; PWR6-NEXT: add 3, 3, 6 24750; PWR6-NEXT: rldimi 9, 9, 32, 0 24751; PWR6-NEXT: rldicl 5, 4, 60, 4 24752; PWR6-NEXT: and 3, 3, 7 24753; PWR6-NEXT: add 4, 4, 5 24754; PWR6-NEXT: mulld 3, 3, 9 24755; PWR6-NEXT: and 4, 4, 7 24756; PWR6-NEXT: rldicl 3, 3, 8, 56 24757; PWR6-NEXT: mulld 4, 4, 9 24758; PWR6-NEXT: li 5, 49 24759; PWR6-NEXT: subfic 3, 3, 49 24760; PWR6-NEXT: rldicl 4, 4, 8, 56 24761; PWR6-NEXT: subfe 3, 5, 5 24762; PWR6-NEXT: subfic 4, 4, 49 24763; PWR6-NEXT: subfe 4, 5, 5 24764; PWR6-NEXT: blr 24765; 24766; PWR7-LABEL: ugt_49_v2i64: 24767; PWR7: # %bb.0: 24768; PWR7-NEXT: addi 3, 1, -32 24769; PWR7-NEXT: li 5, 0 24770; PWR7-NEXT: li 6, -1 24771; PWR7-NEXT: stxvd2x 34, 0, 3 24772; PWR7-NEXT: ld 3, -24(1) 24773; PWR7-NEXT: ld 4, -32(1) 24774; PWR7-NEXT: popcntd 3, 3 24775; PWR7-NEXT: popcntd 4, 4 24776; PWR7-NEXT: cmpldi 3, 49 24777; PWR7-NEXT: iselgt 3, 6, 5 24778; PWR7-NEXT: cmpldi 4, 49 24779; PWR7-NEXT: iselgt 4, 6, 5 24780; PWR7-NEXT: std 3, -8(1) 24781; PWR7-NEXT: addi 3, 1, -16 24782; PWR7-NEXT: std 4, -16(1) 24783; PWR7-NEXT: lxvd2x 34, 0, 3 24784; PWR7-NEXT: blr 24785; 24786; PWR8-LABEL: ugt_49_v2i64: 24787; PWR8: # %bb.0: 24788; PWR8-NEXT: addis 3, 2, .LCPI196_0@toc@ha 24789; PWR8-NEXT: vpopcntd 2, 2 24790; PWR8-NEXT: addi 3, 3, .LCPI196_0@toc@l 24791; PWR8-NEXT: lxvd2x 35, 0, 3 24792; PWR8-NEXT: vcmpgtud 2, 2, 3 24793; PWR8-NEXT: blr 24794; 24795; PWR9-LABEL: ugt_49_v2i64: 24796; PWR9: # %bb.0: 24797; PWR9-NEXT: addis 3, 2, .LCPI196_0@toc@ha 24798; PWR9-NEXT: vpopcntd 2, 2 24799; PWR9-NEXT: addi 3, 3, .LCPI196_0@toc@l 24800; PWR9-NEXT: lxvx 35, 0, 3 24801; PWR9-NEXT: vcmpgtud 2, 2, 3 24802; PWR9-NEXT: blr 24803 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24804 %3 = icmp ugt <2 x i64> %2, <i64 49, i64 49> 24805 %4 = sext <2 x i1> %3 to <2 x i64> 24806 ret <2 x i64> %4 24807} 24808 24809define <2 x i64> @ult_50_v2i64(<2 x i64> %0) { 24810; PWR5-LABEL: ult_50_v2i64: 24811; PWR5: # %bb.0: 24812; PWR5-NEXT: lis 5, 21845 24813; PWR5-NEXT: lis 6, 13107 24814; PWR5-NEXT: ori 5, 5, 21845 24815; PWR5-NEXT: rotldi 8, 4, 63 24816; PWR5-NEXT: rotldi 9, 3, 63 24817; PWR5-NEXT: rldimi 5, 5, 32, 0 24818; PWR5-NEXT: and 8, 8, 5 24819; PWR5-NEXT: and 5, 9, 5 24820; PWR5-NEXT: ori 6, 6, 13107 24821; PWR5-NEXT: sub 3, 3, 5 24822; PWR5-NEXT: rldimi 6, 6, 32, 0 24823; PWR5-NEXT: sub 4, 4, 8 24824; PWR5-NEXT: and 8, 3, 6 24825; PWR5-NEXT: rotldi 3, 3, 62 24826; PWR5-NEXT: and 3, 3, 6 24827; PWR5-NEXT: lis 7, 3855 24828; PWR5-NEXT: and 5, 4, 6 24829; PWR5-NEXT: rotldi 4, 4, 62 24830; PWR5-NEXT: add 3, 8, 3 24831; PWR5-NEXT: lis 9, 257 24832; PWR5-NEXT: ori 7, 7, 3855 24833; PWR5-NEXT: and 4, 4, 6 24834; PWR5-NEXT: rldicl 6, 3, 60, 4 24835; PWR5-NEXT: ori 9, 9, 257 24836; PWR5-NEXT: rldimi 7, 7, 32, 0 24837; PWR5-NEXT: add 4, 5, 4 24838; PWR5-NEXT: add 3, 3, 6 24839; PWR5-NEXT: rldimi 9, 9, 32, 0 24840; PWR5-NEXT: rldicl 5, 4, 60, 4 24841; PWR5-NEXT: and 3, 3, 7 24842; PWR5-NEXT: add 4, 4, 5 24843; PWR5-NEXT: mulld 3, 3, 9 24844; PWR5-NEXT: and 4, 4, 7 24845; PWR5-NEXT: rldicl 3, 3, 8, 56 24846; PWR5-NEXT: li 5, 50 24847; PWR5-NEXT: mulld 4, 4, 9 24848; PWR5-NEXT: subc 6, 3, 5 24849; PWR5-NEXT: rldicl 4, 4, 8, 56 24850; PWR5-NEXT: subfe 3, 3, 3 24851; PWR5-NEXT: subc 5, 4, 5 24852; PWR5-NEXT: subfe 4, 4, 4 24853; PWR5-NEXT: blr 24854; 24855; PWR6-LABEL: ult_50_v2i64: 24856; PWR6: # %bb.0: 24857; PWR6-NEXT: lis 5, 21845 24858; PWR6-NEXT: lis 6, 13107 24859; PWR6-NEXT: ori 5, 5, 21845 24860; PWR6-NEXT: rotldi 8, 4, 63 24861; PWR6-NEXT: rotldi 9, 3, 63 24862; PWR6-NEXT: rldimi 5, 5, 32, 0 24863; PWR6-NEXT: and 8, 8, 5 24864; PWR6-NEXT: and 5, 9, 5 24865; PWR6-NEXT: ori 6, 6, 13107 24866; PWR6-NEXT: sub 3, 3, 5 24867; PWR6-NEXT: rldimi 6, 6, 32, 0 24868; PWR6-NEXT: sub 4, 4, 8 24869; PWR6-NEXT: and 8, 3, 6 24870; PWR6-NEXT: rotldi 3, 3, 62 24871; PWR6-NEXT: and 3, 3, 6 24872; PWR6-NEXT: lis 7, 3855 24873; PWR6-NEXT: and 5, 4, 6 24874; PWR6-NEXT: rotldi 4, 4, 62 24875; PWR6-NEXT: add 3, 8, 3 24876; PWR6-NEXT: lis 9, 257 24877; PWR6-NEXT: ori 7, 7, 3855 24878; PWR6-NEXT: and 4, 4, 6 24879; PWR6-NEXT: rldicl 6, 3, 60, 4 24880; PWR6-NEXT: ori 9, 9, 257 24881; PWR6-NEXT: rldimi 7, 7, 32, 0 24882; PWR6-NEXT: add 4, 5, 4 24883; PWR6-NEXT: add 3, 3, 6 24884; PWR6-NEXT: rldimi 9, 9, 32, 0 24885; PWR6-NEXT: rldicl 5, 4, 60, 4 24886; PWR6-NEXT: and 3, 3, 7 24887; PWR6-NEXT: add 4, 4, 5 24888; PWR6-NEXT: mulld 3, 3, 9 24889; PWR6-NEXT: and 4, 4, 7 24890; PWR6-NEXT: rldicl 3, 3, 8, 56 24891; PWR6-NEXT: li 5, 50 24892; PWR6-NEXT: mulld 4, 4, 9 24893; PWR6-NEXT: subc 6, 3, 5 24894; PWR6-NEXT: rldicl 4, 4, 8, 56 24895; PWR6-NEXT: subfe 3, 3, 3 24896; PWR6-NEXT: subc 5, 4, 5 24897; PWR6-NEXT: subfe 4, 4, 4 24898; PWR6-NEXT: blr 24899; 24900; PWR7-LABEL: ult_50_v2i64: 24901; PWR7: # %bb.0: 24902; PWR7-NEXT: addi 3, 1, -32 24903; PWR7-NEXT: li 5, 0 24904; PWR7-NEXT: li 6, -1 24905; PWR7-NEXT: stxvd2x 34, 0, 3 24906; PWR7-NEXT: ld 3, -24(1) 24907; PWR7-NEXT: ld 4, -32(1) 24908; PWR7-NEXT: popcntd 3, 3 24909; PWR7-NEXT: popcntd 4, 4 24910; PWR7-NEXT: cmpldi 3, 50 24911; PWR7-NEXT: isellt 3, 6, 5 24912; PWR7-NEXT: cmpldi 4, 50 24913; PWR7-NEXT: isellt 4, 6, 5 24914; PWR7-NEXT: std 3, -8(1) 24915; PWR7-NEXT: addi 3, 1, -16 24916; PWR7-NEXT: std 4, -16(1) 24917; PWR7-NEXT: lxvd2x 34, 0, 3 24918; PWR7-NEXT: blr 24919; 24920; PWR8-LABEL: ult_50_v2i64: 24921; PWR8: # %bb.0: 24922; PWR8-NEXT: addis 3, 2, .LCPI197_0@toc@ha 24923; PWR8-NEXT: vpopcntd 2, 2 24924; PWR8-NEXT: addi 3, 3, .LCPI197_0@toc@l 24925; PWR8-NEXT: lxvd2x 35, 0, 3 24926; PWR8-NEXT: vcmpgtud 2, 3, 2 24927; PWR8-NEXT: blr 24928; 24929; PWR9-LABEL: ult_50_v2i64: 24930; PWR9: # %bb.0: 24931; PWR9-NEXT: addis 3, 2, .LCPI197_0@toc@ha 24932; PWR9-NEXT: vpopcntd 2, 2 24933; PWR9-NEXT: addi 3, 3, .LCPI197_0@toc@l 24934; PWR9-NEXT: lxvx 35, 0, 3 24935; PWR9-NEXT: vcmpgtud 2, 3, 2 24936; PWR9-NEXT: blr 24937 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24938 %3 = icmp ult <2 x i64> %2, <i64 50, i64 50> 24939 %4 = sext <2 x i1> %3 to <2 x i64> 24940 ret <2 x i64> %4 24941} 24942 24943define <2 x i64> @ugt_50_v2i64(<2 x i64> %0) { 24944; PWR5-LABEL: ugt_50_v2i64: 24945; PWR5: # %bb.0: 24946; PWR5-NEXT: lis 5, 21845 24947; PWR5-NEXT: lis 6, 13107 24948; PWR5-NEXT: ori 5, 5, 21845 24949; PWR5-NEXT: rotldi 8, 4, 63 24950; PWR5-NEXT: rotldi 9, 3, 63 24951; PWR5-NEXT: rldimi 5, 5, 32, 0 24952; PWR5-NEXT: and 8, 8, 5 24953; PWR5-NEXT: and 5, 9, 5 24954; PWR5-NEXT: ori 6, 6, 13107 24955; PWR5-NEXT: sub 3, 3, 5 24956; PWR5-NEXT: rldimi 6, 6, 32, 0 24957; PWR5-NEXT: sub 4, 4, 8 24958; PWR5-NEXT: and 8, 3, 6 24959; PWR5-NEXT: rotldi 3, 3, 62 24960; PWR5-NEXT: and 3, 3, 6 24961; PWR5-NEXT: lis 7, 3855 24962; PWR5-NEXT: and 5, 4, 6 24963; PWR5-NEXT: rotldi 4, 4, 62 24964; PWR5-NEXT: add 3, 8, 3 24965; PWR5-NEXT: lis 9, 257 24966; PWR5-NEXT: ori 7, 7, 3855 24967; PWR5-NEXT: and 4, 4, 6 24968; PWR5-NEXT: rldicl 6, 3, 60, 4 24969; PWR5-NEXT: ori 9, 9, 257 24970; PWR5-NEXT: rldimi 7, 7, 32, 0 24971; PWR5-NEXT: add 4, 5, 4 24972; PWR5-NEXT: add 3, 3, 6 24973; PWR5-NEXT: rldimi 9, 9, 32, 0 24974; PWR5-NEXT: rldicl 5, 4, 60, 4 24975; PWR5-NEXT: and 3, 3, 7 24976; PWR5-NEXT: add 4, 4, 5 24977; PWR5-NEXT: mulld 3, 3, 9 24978; PWR5-NEXT: and 4, 4, 7 24979; PWR5-NEXT: rldicl 3, 3, 8, 56 24980; PWR5-NEXT: mulld 4, 4, 9 24981; PWR5-NEXT: li 5, 50 24982; PWR5-NEXT: subfic 3, 3, 50 24983; PWR5-NEXT: rldicl 4, 4, 8, 56 24984; PWR5-NEXT: subfe 3, 5, 5 24985; PWR5-NEXT: subfic 4, 4, 50 24986; PWR5-NEXT: subfe 4, 5, 5 24987; PWR5-NEXT: blr 24988; 24989; PWR6-LABEL: ugt_50_v2i64: 24990; PWR6: # %bb.0: 24991; PWR6-NEXT: lis 5, 21845 24992; PWR6-NEXT: lis 6, 13107 24993; PWR6-NEXT: ori 5, 5, 21845 24994; PWR6-NEXT: rotldi 8, 4, 63 24995; PWR6-NEXT: rotldi 9, 3, 63 24996; PWR6-NEXT: rldimi 5, 5, 32, 0 24997; PWR6-NEXT: and 8, 8, 5 24998; PWR6-NEXT: and 5, 9, 5 24999; PWR6-NEXT: ori 6, 6, 13107 25000; PWR6-NEXT: sub 3, 3, 5 25001; PWR6-NEXT: rldimi 6, 6, 32, 0 25002; PWR6-NEXT: sub 4, 4, 8 25003; PWR6-NEXT: and 8, 3, 6 25004; PWR6-NEXT: rotldi 3, 3, 62 25005; PWR6-NEXT: and 3, 3, 6 25006; PWR6-NEXT: lis 7, 3855 25007; PWR6-NEXT: and 5, 4, 6 25008; PWR6-NEXT: rotldi 4, 4, 62 25009; PWR6-NEXT: add 3, 8, 3 25010; PWR6-NEXT: lis 9, 257 25011; PWR6-NEXT: ori 7, 7, 3855 25012; PWR6-NEXT: and 4, 4, 6 25013; PWR6-NEXT: rldicl 6, 3, 60, 4 25014; PWR6-NEXT: ori 9, 9, 257 25015; PWR6-NEXT: rldimi 7, 7, 32, 0 25016; PWR6-NEXT: add 4, 5, 4 25017; PWR6-NEXT: add 3, 3, 6 25018; PWR6-NEXT: rldimi 9, 9, 32, 0 25019; PWR6-NEXT: rldicl 5, 4, 60, 4 25020; PWR6-NEXT: and 3, 3, 7 25021; PWR6-NEXT: add 4, 4, 5 25022; PWR6-NEXT: mulld 3, 3, 9 25023; PWR6-NEXT: and 4, 4, 7 25024; PWR6-NEXT: rldicl 3, 3, 8, 56 25025; PWR6-NEXT: mulld 4, 4, 9 25026; PWR6-NEXT: li 5, 50 25027; PWR6-NEXT: subfic 3, 3, 50 25028; PWR6-NEXT: rldicl 4, 4, 8, 56 25029; PWR6-NEXT: subfe 3, 5, 5 25030; PWR6-NEXT: subfic 4, 4, 50 25031; PWR6-NEXT: subfe 4, 5, 5 25032; PWR6-NEXT: blr 25033; 25034; PWR7-LABEL: ugt_50_v2i64: 25035; PWR7: # %bb.0: 25036; PWR7-NEXT: addi 3, 1, -32 25037; PWR7-NEXT: li 5, 0 25038; PWR7-NEXT: li 6, -1 25039; PWR7-NEXT: stxvd2x 34, 0, 3 25040; PWR7-NEXT: ld 3, -24(1) 25041; PWR7-NEXT: ld 4, -32(1) 25042; PWR7-NEXT: popcntd 3, 3 25043; PWR7-NEXT: popcntd 4, 4 25044; PWR7-NEXT: cmpldi 3, 50 25045; PWR7-NEXT: iselgt 3, 6, 5 25046; PWR7-NEXT: cmpldi 4, 50 25047; PWR7-NEXT: iselgt 4, 6, 5 25048; PWR7-NEXT: std 3, -8(1) 25049; PWR7-NEXT: addi 3, 1, -16 25050; PWR7-NEXT: std 4, -16(1) 25051; PWR7-NEXT: lxvd2x 34, 0, 3 25052; PWR7-NEXT: blr 25053; 25054; PWR8-LABEL: ugt_50_v2i64: 25055; PWR8: # %bb.0: 25056; PWR8-NEXT: addis 3, 2, .LCPI198_0@toc@ha 25057; PWR8-NEXT: vpopcntd 2, 2 25058; PWR8-NEXT: addi 3, 3, .LCPI198_0@toc@l 25059; PWR8-NEXT: lxvd2x 35, 0, 3 25060; PWR8-NEXT: vcmpgtud 2, 2, 3 25061; PWR8-NEXT: blr 25062; 25063; PWR9-LABEL: ugt_50_v2i64: 25064; PWR9: # %bb.0: 25065; PWR9-NEXT: addis 3, 2, .LCPI198_0@toc@ha 25066; PWR9-NEXT: vpopcntd 2, 2 25067; PWR9-NEXT: addi 3, 3, .LCPI198_0@toc@l 25068; PWR9-NEXT: lxvx 35, 0, 3 25069; PWR9-NEXT: vcmpgtud 2, 2, 3 25070; PWR9-NEXT: blr 25071 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25072 %3 = icmp ugt <2 x i64> %2, <i64 50, i64 50> 25073 %4 = sext <2 x i1> %3 to <2 x i64> 25074 ret <2 x i64> %4 25075} 25076 25077define <2 x i64> @ult_51_v2i64(<2 x i64> %0) { 25078; PWR5-LABEL: ult_51_v2i64: 25079; PWR5: # %bb.0: 25080; PWR5-NEXT: lis 5, 21845 25081; PWR5-NEXT: lis 6, 13107 25082; PWR5-NEXT: ori 5, 5, 21845 25083; PWR5-NEXT: rotldi 8, 4, 63 25084; PWR5-NEXT: rotldi 9, 3, 63 25085; PWR5-NEXT: rldimi 5, 5, 32, 0 25086; PWR5-NEXT: and 8, 8, 5 25087; PWR5-NEXT: and 5, 9, 5 25088; PWR5-NEXT: ori 6, 6, 13107 25089; PWR5-NEXT: sub 3, 3, 5 25090; PWR5-NEXT: rldimi 6, 6, 32, 0 25091; PWR5-NEXT: sub 4, 4, 8 25092; PWR5-NEXT: and 8, 3, 6 25093; PWR5-NEXT: rotldi 3, 3, 62 25094; PWR5-NEXT: and 3, 3, 6 25095; PWR5-NEXT: lis 7, 3855 25096; PWR5-NEXT: and 5, 4, 6 25097; PWR5-NEXT: rotldi 4, 4, 62 25098; PWR5-NEXT: add 3, 8, 3 25099; PWR5-NEXT: lis 9, 257 25100; PWR5-NEXT: ori 7, 7, 3855 25101; PWR5-NEXT: and 4, 4, 6 25102; PWR5-NEXT: rldicl 6, 3, 60, 4 25103; PWR5-NEXT: ori 9, 9, 257 25104; PWR5-NEXT: rldimi 7, 7, 32, 0 25105; PWR5-NEXT: add 4, 5, 4 25106; PWR5-NEXT: add 3, 3, 6 25107; PWR5-NEXT: rldimi 9, 9, 32, 0 25108; PWR5-NEXT: rldicl 5, 4, 60, 4 25109; PWR5-NEXT: and 3, 3, 7 25110; PWR5-NEXT: add 4, 4, 5 25111; PWR5-NEXT: mulld 3, 3, 9 25112; PWR5-NEXT: and 4, 4, 7 25113; PWR5-NEXT: rldicl 3, 3, 8, 56 25114; PWR5-NEXT: li 5, 51 25115; PWR5-NEXT: mulld 4, 4, 9 25116; PWR5-NEXT: subc 6, 3, 5 25117; PWR5-NEXT: rldicl 4, 4, 8, 56 25118; PWR5-NEXT: subfe 3, 3, 3 25119; PWR5-NEXT: subc 5, 4, 5 25120; PWR5-NEXT: subfe 4, 4, 4 25121; PWR5-NEXT: blr 25122; 25123; PWR6-LABEL: ult_51_v2i64: 25124; PWR6: # %bb.0: 25125; PWR6-NEXT: lis 5, 21845 25126; PWR6-NEXT: lis 6, 13107 25127; PWR6-NEXT: ori 5, 5, 21845 25128; PWR6-NEXT: rotldi 8, 4, 63 25129; PWR6-NEXT: rotldi 9, 3, 63 25130; PWR6-NEXT: rldimi 5, 5, 32, 0 25131; PWR6-NEXT: and 8, 8, 5 25132; PWR6-NEXT: and 5, 9, 5 25133; PWR6-NEXT: ori 6, 6, 13107 25134; PWR6-NEXT: sub 3, 3, 5 25135; PWR6-NEXT: rldimi 6, 6, 32, 0 25136; PWR6-NEXT: sub 4, 4, 8 25137; PWR6-NEXT: and 8, 3, 6 25138; PWR6-NEXT: rotldi 3, 3, 62 25139; PWR6-NEXT: and 3, 3, 6 25140; PWR6-NEXT: lis 7, 3855 25141; PWR6-NEXT: and 5, 4, 6 25142; PWR6-NEXT: rotldi 4, 4, 62 25143; PWR6-NEXT: add 3, 8, 3 25144; PWR6-NEXT: lis 9, 257 25145; PWR6-NEXT: ori 7, 7, 3855 25146; PWR6-NEXT: and 4, 4, 6 25147; PWR6-NEXT: rldicl 6, 3, 60, 4 25148; PWR6-NEXT: ori 9, 9, 257 25149; PWR6-NEXT: rldimi 7, 7, 32, 0 25150; PWR6-NEXT: add 4, 5, 4 25151; PWR6-NEXT: add 3, 3, 6 25152; PWR6-NEXT: rldimi 9, 9, 32, 0 25153; PWR6-NEXT: rldicl 5, 4, 60, 4 25154; PWR6-NEXT: and 3, 3, 7 25155; PWR6-NEXT: add 4, 4, 5 25156; PWR6-NEXT: mulld 3, 3, 9 25157; PWR6-NEXT: and 4, 4, 7 25158; PWR6-NEXT: rldicl 3, 3, 8, 56 25159; PWR6-NEXT: li 5, 51 25160; PWR6-NEXT: mulld 4, 4, 9 25161; PWR6-NEXT: subc 6, 3, 5 25162; PWR6-NEXT: rldicl 4, 4, 8, 56 25163; PWR6-NEXT: subfe 3, 3, 3 25164; PWR6-NEXT: subc 5, 4, 5 25165; PWR6-NEXT: subfe 4, 4, 4 25166; PWR6-NEXT: blr 25167; 25168; PWR7-LABEL: ult_51_v2i64: 25169; PWR7: # %bb.0: 25170; PWR7-NEXT: addi 3, 1, -32 25171; PWR7-NEXT: li 5, 0 25172; PWR7-NEXT: li 6, -1 25173; PWR7-NEXT: stxvd2x 34, 0, 3 25174; PWR7-NEXT: ld 3, -24(1) 25175; PWR7-NEXT: ld 4, -32(1) 25176; PWR7-NEXT: popcntd 3, 3 25177; PWR7-NEXT: popcntd 4, 4 25178; PWR7-NEXT: cmpldi 3, 51 25179; PWR7-NEXT: isellt 3, 6, 5 25180; PWR7-NEXT: cmpldi 4, 51 25181; PWR7-NEXT: isellt 4, 6, 5 25182; PWR7-NEXT: std 3, -8(1) 25183; PWR7-NEXT: addi 3, 1, -16 25184; PWR7-NEXT: std 4, -16(1) 25185; PWR7-NEXT: lxvd2x 34, 0, 3 25186; PWR7-NEXT: blr 25187; 25188; PWR8-LABEL: ult_51_v2i64: 25189; PWR8: # %bb.0: 25190; PWR8-NEXT: addis 3, 2, .LCPI199_0@toc@ha 25191; PWR8-NEXT: vpopcntd 2, 2 25192; PWR8-NEXT: addi 3, 3, .LCPI199_0@toc@l 25193; PWR8-NEXT: lxvd2x 35, 0, 3 25194; PWR8-NEXT: vcmpgtud 2, 3, 2 25195; PWR8-NEXT: blr 25196; 25197; PWR9-LABEL: ult_51_v2i64: 25198; PWR9: # %bb.0: 25199; PWR9-NEXT: addis 3, 2, .LCPI199_0@toc@ha 25200; PWR9-NEXT: vpopcntd 2, 2 25201; PWR9-NEXT: addi 3, 3, .LCPI199_0@toc@l 25202; PWR9-NEXT: lxvx 35, 0, 3 25203; PWR9-NEXT: vcmpgtud 2, 3, 2 25204; PWR9-NEXT: blr 25205 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25206 %3 = icmp ult <2 x i64> %2, <i64 51, i64 51> 25207 %4 = sext <2 x i1> %3 to <2 x i64> 25208 ret <2 x i64> %4 25209} 25210 25211define <2 x i64> @ugt_51_v2i64(<2 x i64> %0) { 25212; PWR5-LABEL: ugt_51_v2i64: 25213; PWR5: # %bb.0: 25214; PWR5-NEXT: lis 5, 21845 25215; PWR5-NEXT: lis 6, 13107 25216; PWR5-NEXT: ori 5, 5, 21845 25217; PWR5-NEXT: rotldi 8, 4, 63 25218; PWR5-NEXT: rotldi 9, 3, 63 25219; PWR5-NEXT: rldimi 5, 5, 32, 0 25220; PWR5-NEXT: and 8, 8, 5 25221; PWR5-NEXT: and 5, 9, 5 25222; PWR5-NEXT: ori 6, 6, 13107 25223; PWR5-NEXT: sub 3, 3, 5 25224; PWR5-NEXT: rldimi 6, 6, 32, 0 25225; PWR5-NEXT: sub 4, 4, 8 25226; PWR5-NEXT: and 8, 3, 6 25227; PWR5-NEXT: rotldi 3, 3, 62 25228; PWR5-NEXT: and 3, 3, 6 25229; PWR5-NEXT: lis 7, 3855 25230; PWR5-NEXT: and 5, 4, 6 25231; PWR5-NEXT: rotldi 4, 4, 62 25232; PWR5-NEXT: add 3, 8, 3 25233; PWR5-NEXT: lis 9, 257 25234; PWR5-NEXT: ori 7, 7, 3855 25235; PWR5-NEXT: and 4, 4, 6 25236; PWR5-NEXT: rldicl 6, 3, 60, 4 25237; PWR5-NEXT: ori 9, 9, 257 25238; PWR5-NEXT: rldimi 7, 7, 32, 0 25239; PWR5-NEXT: add 4, 5, 4 25240; PWR5-NEXT: add 3, 3, 6 25241; PWR5-NEXT: rldimi 9, 9, 32, 0 25242; PWR5-NEXT: rldicl 5, 4, 60, 4 25243; PWR5-NEXT: and 3, 3, 7 25244; PWR5-NEXT: add 4, 4, 5 25245; PWR5-NEXT: mulld 3, 3, 9 25246; PWR5-NEXT: and 4, 4, 7 25247; PWR5-NEXT: rldicl 3, 3, 8, 56 25248; PWR5-NEXT: mulld 4, 4, 9 25249; PWR5-NEXT: li 5, 51 25250; PWR5-NEXT: subfic 3, 3, 51 25251; PWR5-NEXT: rldicl 4, 4, 8, 56 25252; PWR5-NEXT: subfe 3, 5, 5 25253; PWR5-NEXT: subfic 4, 4, 51 25254; PWR5-NEXT: subfe 4, 5, 5 25255; PWR5-NEXT: blr 25256; 25257; PWR6-LABEL: ugt_51_v2i64: 25258; PWR6: # %bb.0: 25259; PWR6-NEXT: lis 5, 21845 25260; PWR6-NEXT: lis 6, 13107 25261; PWR6-NEXT: ori 5, 5, 21845 25262; PWR6-NEXT: rotldi 8, 4, 63 25263; PWR6-NEXT: rotldi 9, 3, 63 25264; PWR6-NEXT: rldimi 5, 5, 32, 0 25265; PWR6-NEXT: and 8, 8, 5 25266; PWR6-NEXT: and 5, 9, 5 25267; PWR6-NEXT: ori 6, 6, 13107 25268; PWR6-NEXT: sub 3, 3, 5 25269; PWR6-NEXT: rldimi 6, 6, 32, 0 25270; PWR6-NEXT: sub 4, 4, 8 25271; PWR6-NEXT: and 8, 3, 6 25272; PWR6-NEXT: rotldi 3, 3, 62 25273; PWR6-NEXT: and 3, 3, 6 25274; PWR6-NEXT: lis 7, 3855 25275; PWR6-NEXT: and 5, 4, 6 25276; PWR6-NEXT: rotldi 4, 4, 62 25277; PWR6-NEXT: add 3, 8, 3 25278; PWR6-NEXT: lis 9, 257 25279; PWR6-NEXT: ori 7, 7, 3855 25280; PWR6-NEXT: and 4, 4, 6 25281; PWR6-NEXT: rldicl 6, 3, 60, 4 25282; PWR6-NEXT: ori 9, 9, 257 25283; PWR6-NEXT: rldimi 7, 7, 32, 0 25284; PWR6-NEXT: add 4, 5, 4 25285; PWR6-NEXT: add 3, 3, 6 25286; PWR6-NEXT: rldimi 9, 9, 32, 0 25287; PWR6-NEXT: rldicl 5, 4, 60, 4 25288; PWR6-NEXT: and 3, 3, 7 25289; PWR6-NEXT: add 4, 4, 5 25290; PWR6-NEXT: mulld 3, 3, 9 25291; PWR6-NEXT: and 4, 4, 7 25292; PWR6-NEXT: rldicl 3, 3, 8, 56 25293; PWR6-NEXT: mulld 4, 4, 9 25294; PWR6-NEXT: li 5, 51 25295; PWR6-NEXT: subfic 3, 3, 51 25296; PWR6-NEXT: rldicl 4, 4, 8, 56 25297; PWR6-NEXT: subfe 3, 5, 5 25298; PWR6-NEXT: subfic 4, 4, 51 25299; PWR6-NEXT: subfe 4, 5, 5 25300; PWR6-NEXT: blr 25301; 25302; PWR7-LABEL: ugt_51_v2i64: 25303; PWR7: # %bb.0: 25304; PWR7-NEXT: addi 3, 1, -32 25305; PWR7-NEXT: li 5, 0 25306; PWR7-NEXT: li 6, -1 25307; PWR7-NEXT: stxvd2x 34, 0, 3 25308; PWR7-NEXT: ld 3, -24(1) 25309; PWR7-NEXT: ld 4, -32(1) 25310; PWR7-NEXT: popcntd 3, 3 25311; PWR7-NEXT: popcntd 4, 4 25312; PWR7-NEXT: cmpldi 3, 51 25313; PWR7-NEXT: iselgt 3, 6, 5 25314; PWR7-NEXT: cmpldi 4, 51 25315; PWR7-NEXT: iselgt 4, 6, 5 25316; PWR7-NEXT: std 3, -8(1) 25317; PWR7-NEXT: addi 3, 1, -16 25318; PWR7-NEXT: std 4, -16(1) 25319; PWR7-NEXT: lxvd2x 34, 0, 3 25320; PWR7-NEXT: blr 25321; 25322; PWR8-LABEL: ugt_51_v2i64: 25323; PWR8: # %bb.0: 25324; PWR8-NEXT: addis 3, 2, .LCPI200_0@toc@ha 25325; PWR8-NEXT: vpopcntd 2, 2 25326; PWR8-NEXT: addi 3, 3, .LCPI200_0@toc@l 25327; PWR8-NEXT: lxvd2x 35, 0, 3 25328; PWR8-NEXT: vcmpgtud 2, 2, 3 25329; PWR8-NEXT: blr 25330; 25331; PWR9-LABEL: ugt_51_v2i64: 25332; PWR9: # %bb.0: 25333; PWR9-NEXT: addis 3, 2, .LCPI200_0@toc@ha 25334; PWR9-NEXT: vpopcntd 2, 2 25335; PWR9-NEXT: addi 3, 3, .LCPI200_0@toc@l 25336; PWR9-NEXT: lxvx 35, 0, 3 25337; PWR9-NEXT: vcmpgtud 2, 2, 3 25338; PWR9-NEXT: blr 25339 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25340 %3 = icmp ugt <2 x i64> %2, <i64 51, i64 51> 25341 %4 = sext <2 x i1> %3 to <2 x i64> 25342 ret <2 x i64> %4 25343} 25344 25345define <2 x i64> @ult_52_v2i64(<2 x i64> %0) { 25346; PWR5-LABEL: ult_52_v2i64: 25347; PWR5: # %bb.0: 25348; PWR5-NEXT: lis 5, 21845 25349; PWR5-NEXT: lis 6, 13107 25350; PWR5-NEXT: ori 5, 5, 21845 25351; PWR5-NEXT: rotldi 8, 4, 63 25352; PWR5-NEXT: rotldi 9, 3, 63 25353; PWR5-NEXT: rldimi 5, 5, 32, 0 25354; PWR5-NEXT: and 8, 8, 5 25355; PWR5-NEXT: and 5, 9, 5 25356; PWR5-NEXT: ori 6, 6, 13107 25357; PWR5-NEXT: sub 3, 3, 5 25358; PWR5-NEXT: rldimi 6, 6, 32, 0 25359; PWR5-NEXT: sub 4, 4, 8 25360; PWR5-NEXT: and 8, 3, 6 25361; PWR5-NEXT: rotldi 3, 3, 62 25362; PWR5-NEXT: and 3, 3, 6 25363; PWR5-NEXT: lis 7, 3855 25364; PWR5-NEXT: and 5, 4, 6 25365; PWR5-NEXT: rotldi 4, 4, 62 25366; PWR5-NEXT: add 3, 8, 3 25367; PWR5-NEXT: lis 9, 257 25368; PWR5-NEXT: ori 7, 7, 3855 25369; PWR5-NEXT: and 4, 4, 6 25370; PWR5-NEXT: rldicl 6, 3, 60, 4 25371; PWR5-NEXT: ori 9, 9, 257 25372; PWR5-NEXT: rldimi 7, 7, 32, 0 25373; PWR5-NEXT: add 4, 5, 4 25374; PWR5-NEXT: add 3, 3, 6 25375; PWR5-NEXT: rldimi 9, 9, 32, 0 25376; PWR5-NEXT: rldicl 5, 4, 60, 4 25377; PWR5-NEXT: and 3, 3, 7 25378; PWR5-NEXT: add 4, 4, 5 25379; PWR5-NEXT: mulld 3, 3, 9 25380; PWR5-NEXT: and 4, 4, 7 25381; PWR5-NEXT: rldicl 3, 3, 8, 56 25382; PWR5-NEXT: li 5, 52 25383; PWR5-NEXT: mulld 4, 4, 9 25384; PWR5-NEXT: subc 6, 3, 5 25385; PWR5-NEXT: rldicl 4, 4, 8, 56 25386; PWR5-NEXT: subfe 3, 3, 3 25387; PWR5-NEXT: subc 5, 4, 5 25388; PWR5-NEXT: subfe 4, 4, 4 25389; PWR5-NEXT: blr 25390; 25391; PWR6-LABEL: ult_52_v2i64: 25392; PWR6: # %bb.0: 25393; PWR6-NEXT: lis 5, 21845 25394; PWR6-NEXT: lis 6, 13107 25395; PWR6-NEXT: ori 5, 5, 21845 25396; PWR6-NEXT: rotldi 8, 4, 63 25397; PWR6-NEXT: rotldi 9, 3, 63 25398; PWR6-NEXT: rldimi 5, 5, 32, 0 25399; PWR6-NEXT: and 8, 8, 5 25400; PWR6-NEXT: and 5, 9, 5 25401; PWR6-NEXT: ori 6, 6, 13107 25402; PWR6-NEXT: sub 3, 3, 5 25403; PWR6-NEXT: rldimi 6, 6, 32, 0 25404; PWR6-NEXT: sub 4, 4, 8 25405; PWR6-NEXT: and 8, 3, 6 25406; PWR6-NEXT: rotldi 3, 3, 62 25407; PWR6-NEXT: and 3, 3, 6 25408; PWR6-NEXT: lis 7, 3855 25409; PWR6-NEXT: and 5, 4, 6 25410; PWR6-NEXT: rotldi 4, 4, 62 25411; PWR6-NEXT: add 3, 8, 3 25412; PWR6-NEXT: lis 9, 257 25413; PWR6-NEXT: ori 7, 7, 3855 25414; PWR6-NEXT: and 4, 4, 6 25415; PWR6-NEXT: rldicl 6, 3, 60, 4 25416; PWR6-NEXT: ori 9, 9, 257 25417; PWR6-NEXT: rldimi 7, 7, 32, 0 25418; PWR6-NEXT: add 4, 5, 4 25419; PWR6-NEXT: add 3, 3, 6 25420; PWR6-NEXT: rldimi 9, 9, 32, 0 25421; PWR6-NEXT: rldicl 5, 4, 60, 4 25422; PWR6-NEXT: and 3, 3, 7 25423; PWR6-NEXT: add 4, 4, 5 25424; PWR6-NEXT: mulld 3, 3, 9 25425; PWR6-NEXT: and 4, 4, 7 25426; PWR6-NEXT: rldicl 3, 3, 8, 56 25427; PWR6-NEXT: li 5, 52 25428; PWR6-NEXT: mulld 4, 4, 9 25429; PWR6-NEXT: subc 6, 3, 5 25430; PWR6-NEXT: rldicl 4, 4, 8, 56 25431; PWR6-NEXT: subfe 3, 3, 3 25432; PWR6-NEXT: subc 5, 4, 5 25433; PWR6-NEXT: subfe 4, 4, 4 25434; PWR6-NEXT: blr 25435; 25436; PWR7-LABEL: ult_52_v2i64: 25437; PWR7: # %bb.0: 25438; PWR7-NEXT: addi 3, 1, -32 25439; PWR7-NEXT: li 5, 0 25440; PWR7-NEXT: li 6, -1 25441; PWR7-NEXT: stxvd2x 34, 0, 3 25442; PWR7-NEXT: ld 3, -24(1) 25443; PWR7-NEXT: ld 4, -32(1) 25444; PWR7-NEXT: popcntd 3, 3 25445; PWR7-NEXT: popcntd 4, 4 25446; PWR7-NEXT: cmpldi 3, 52 25447; PWR7-NEXT: isellt 3, 6, 5 25448; PWR7-NEXT: cmpldi 4, 52 25449; PWR7-NEXT: isellt 4, 6, 5 25450; PWR7-NEXT: std 3, -8(1) 25451; PWR7-NEXT: addi 3, 1, -16 25452; PWR7-NEXT: std 4, -16(1) 25453; PWR7-NEXT: lxvd2x 34, 0, 3 25454; PWR7-NEXT: blr 25455; 25456; PWR8-LABEL: ult_52_v2i64: 25457; PWR8: # %bb.0: 25458; PWR8-NEXT: addis 3, 2, .LCPI201_0@toc@ha 25459; PWR8-NEXT: vpopcntd 2, 2 25460; PWR8-NEXT: addi 3, 3, .LCPI201_0@toc@l 25461; PWR8-NEXT: lxvd2x 35, 0, 3 25462; PWR8-NEXT: vcmpgtud 2, 3, 2 25463; PWR8-NEXT: blr 25464; 25465; PWR9-LABEL: ult_52_v2i64: 25466; PWR9: # %bb.0: 25467; PWR9-NEXT: addis 3, 2, .LCPI201_0@toc@ha 25468; PWR9-NEXT: vpopcntd 2, 2 25469; PWR9-NEXT: addi 3, 3, .LCPI201_0@toc@l 25470; PWR9-NEXT: lxvx 35, 0, 3 25471; PWR9-NEXT: vcmpgtud 2, 3, 2 25472; PWR9-NEXT: blr 25473 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25474 %3 = icmp ult <2 x i64> %2, <i64 52, i64 52> 25475 %4 = sext <2 x i1> %3 to <2 x i64> 25476 ret <2 x i64> %4 25477} 25478 25479define <2 x i64> @ugt_52_v2i64(<2 x i64> %0) { 25480; PWR5-LABEL: ugt_52_v2i64: 25481; PWR5: # %bb.0: 25482; PWR5-NEXT: lis 5, 21845 25483; PWR5-NEXT: lis 6, 13107 25484; PWR5-NEXT: ori 5, 5, 21845 25485; PWR5-NEXT: rotldi 8, 4, 63 25486; PWR5-NEXT: rotldi 9, 3, 63 25487; PWR5-NEXT: rldimi 5, 5, 32, 0 25488; PWR5-NEXT: and 8, 8, 5 25489; PWR5-NEXT: and 5, 9, 5 25490; PWR5-NEXT: ori 6, 6, 13107 25491; PWR5-NEXT: sub 3, 3, 5 25492; PWR5-NEXT: rldimi 6, 6, 32, 0 25493; PWR5-NEXT: sub 4, 4, 8 25494; PWR5-NEXT: and 8, 3, 6 25495; PWR5-NEXT: rotldi 3, 3, 62 25496; PWR5-NEXT: and 3, 3, 6 25497; PWR5-NEXT: lis 7, 3855 25498; PWR5-NEXT: and 5, 4, 6 25499; PWR5-NEXT: rotldi 4, 4, 62 25500; PWR5-NEXT: add 3, 8, 3 25501; PWR5-NEXT: lis 9, 257 25502; PWR5-NEXT: ori 7, 7, 3855 25503; PWR5-NEXT: and 4, 4, 6 25504; PWR5-NEXT: rldicl 6, 3, 60, 4 25505; PWR5-NEXT: ori 9, 9, 257 25506; PWR5-NEXT: rldimi 7, 7, 32, 0 25507; PWR5-NEXT: add 4, 5, 4 25508; PWR5-NEXT: add 3, 3, 6 25509; PWR5-NEXT: rldimi 9, 9, 32, 0 25510; PWR5-NEXT: rldicl 5, 4, 60, 4 25511; PWR5-NEXT: and 3, 3, 7 25512; PWR5-NEXT: add 4, 4, 5 25513; PWR5-NEXT: mulld 3, 3, 9 25514; PWR5-NEXT: and 4, 4, 7 25515; PWR5-NEXT: rldicl 3, 3, 8, 56 25516; PWR5-NEXT: mulld 4, 4, 9 25517; PWR5-NEXT: li 5, 52 25518; PWR5-NEXT: subfic 3, 3, 52 25519; PWR5-NEXT: rldicl 4, 4, 8, 56 25520; PWR5-NEXT: subfe 3, 5, 5 25521; PWR5-NEXT: subfic 4, 4, 52 25522; PWR5-NEXT: subfe 4, 5, 5 25523; PWR5-NEXT: blr 25524; 25525; PWR6-LABEL: ugt_52_v2i64: 25526; PWR6: # %bb.0: 25527; PWR6-NEXT: lis 5, 21845 25528; PWR6-NEXT: lis 6, 13107 25529; PWR6-NEXT: ori 5, 5, 21845 25530; PWR6-NEXT: rotldi 8, 4, 63 25531; PWR6-NEXT: rotldi 9, 3, 63 25532; PWR6-NEXT: rldimi 5, 5, 32, 0 25533; PWR6-NEXT: and 8, 8, 5 25534; PWR6-NEXT: and 5, 9, 5 25535; PWR6-NEXT: ori 6, 6, 13107 25536; PWR6-NEXT: sub 3, 3, 5 25537; PWR6-NEXT: rldimi 6, 6, 32, 0 25538; PWR6-NEXT: sub 4, 4, 8 25539; PWR6-NEXT: and 8, 3, 6 25540; PWR6-NEXT: rotldi 3, 3, 62 25541; PWR6-NEXT: and 3, 3, 6 25542; PWR6-NEXT: lis 7, 3855 25543; PWR6-NEXT: and 5, 4, 6 25544; PWR6-NEXT: rotldi 4, 4, 62 25545; PWR6-NEXT: add 3, 8, 3 25546; PWR6-NEXT: lis 9, 257 25547; PWR6-NEXT: ori 7, 7, 3855 25548; PWR6-NEXT: and 4, 4, 6 25549; PWR6-NEXT: rldicl 6, 3, 60, 4 25550; PWR6-NEXT: ori 9, 9, 257 25551; PWR6-NEXT: rldimi 7, 7, 32, 0 25552; PWR6-NEXT: add 4, 5, 4 25553; PWR6-NEXT: add 3, 3, 6 25554; PWR6-NEXT: rldimi 9, 9, 32, 0 25555; PWR6-NEXT: rldicl 5, 4, 60, 4 25556; PWR6-NEXT: and 3, 3, 7 25557; PWR6-NEXT: add 4, 4, 5 25558; PWR6-NEXT: mulld 3, 3, 9 25559; PWR6-NEXT: and 4, 4, 7 25560; PWR6-NEXT: rldicl 3, 3, 8, 56 25561; PWR6-NEXT: mulld 4, 4, 9 25562; PWR6-NEXT: li 5, 52 25563; PWR6-NEXT: subfic 3, 3, 52 25564; PWR6-NEXT: rldicl 4, 4, 8, 56 25565; PWR6-NEXT: subfe 3, 5, 5 25566; PWR6-NEXT: subfic 4, 4, 52 25567; PWR6-NEXT: subfe 4, 5, 5 25568; PWR6-NEXT: blr 25569; 25570; PWR7-LABEL: ugt_52_v2i64: 25571; PWR7: # %bb.0: 25572; PWR7-NEXT: addi 3, 1, -32 25573; PWR7-NEXT: li 5, 0 25574; PWR7-NEXT: li 6, -1 25575; PWR7-NEXT: stxvd2x 34, 0, 3 25576; PWR7-NEXT: ld 3, -24(1) 25577; PWR7-NEXT: ld 4, -32(1) 25578; PWR7-NEXT: popcntd 3, 3 25579; PWR7-NEXT: popcntd 4, 4 25580; PWR7-NEXT: cmpldi 3, 52 25581; PWR7-NEXT: iselgt 3, 6, 5 25582; PWR7-NEXT: cmpldi 4, 52 25583; PWR7-NEXT: iselgt 4, 6, 5 25584; PWR7-NEXT: std 3, -8(1) 25585; PWR7-NEXT: addi 3, 1, -16 25586; PWR7-NEXT: std 4, -16(1) 25587; PWR7-NEXT: lxvd2x 34, 0, 3 25588; PWR7-NEXT: blr 25589; 25590; PWR8-LABEL: ugt_52_v2i64: 25591; PWR8: # %bb.0: 25592; PWR8-NEXT: addis 3, 2, .LCPI202_0@toc@ha 25593; PWR8-NEXT: vpopcntd 2, 2 25594; PWR8-NEXT: addi 3, 3, .LCPI202_0@toc@l 25595; PWR8-NEXT: lxvd2x 35, 0, 3 25596; PWR8-NEXT: vcmpgtud 2, 2, 3 25597; PWR8-NEXT: blr 25598; 25599; PWR9-LABEL: ugt_52_v2i64: 25600; PWR9: # %bb.0: 25601; PWR9-NEXT: addis 3, 2, .LCPI202_0@toc@ha 25602; PWR9-NEXT: vpopcntd 2, 2 25603; PWR9-NEXT: addi 3, 3, .LCPI202_0@toc@l 25604; PWR9-NEXT: lxvx 35, 0, 3 25605; PWR9-NEXT: vcmpgtud 2, 2, 3 25606; PWR9-NEXT: blr 25607 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25608 %3 = icmp ugt <2 x i64> %2, <i64 52, i64 52> 25609 %4 = sext <2 x i1> %3 to <2 x i64> 25610 ret <2 x i64> %4 25611} 25612 25613define <2 x i64> @ult_53_v2i64(<2 x i64> %0) { 25614; PWR5-LABEL: ult_53_v2i64: 25615; PWR5: # %bb.0: 25616; PWR5-NEXT: lis 5, 21845 25617; PWR5-NEXT: lis 6, 13107 25618; PWR5-NEXT: ori 5, 5, 21845 25619; PWR5-NEXT: rotldi 8, 4, 63 25620; PWR5-NEXT: rotldi 9, 3, 63 25621; PWR5-NEXT: rldimi 5, 5, 32, 0 25622; PWR5-NEXT: and 8, 8, 5 25623; PWR5-NEXT: and 5, 9, 5 25624; PWR5-NEXT: ori 6, 6, 13107 25625; PWR5-NEXT: sub 3, 3, 5 25626; PWR5-NEXT: rldimi 6, 6, 32, 0 25627; PWR5-NEXT: sub 4, 4, 8 25628; PWR5-NEXT: and 8, 3, 6 25629; PWR5-NEXT: rotldi 3, 3, 62 25630; PWR5-NEXT: and 3, 3, 6 25631; PWR5-NEXT: lis 7, 3855 25632; PWR5-NEXT: and 5, 4, 6 25633; PWR5-NEXT: rotldi 4, 4, 62 25634; PWR5-NEXT: add 3, 8, 3 25635; PWR5-NEXT: lis 9, 257 25636; PWR5-NEXT: ori 7, 7, 3855 25637; PWR5-NEXT: and 4, 4, 6 25638; PWR5-NEXT: rldicl 6, 3, 60, 4 25639; PWR5-NEXT: ori 9, 9, 257 25640; PWR5-NEXT: rldimi 7, 7, 32, 0 25641; PWR5-NEXT: add 4, 5, 4 25642; PWR5-NEXT: add 3, 3, 6 25643; PWR5-NEXT: rldimi 9, 9, 32, 0 25644; PWR5-NEXT: rldicl 5, 4, 60, 4 25645; PWR5-NEXT: and 3, 3, 7 25646; PWR5-NEXT: add 4, 4, 5 25647; PWR5-NEXT: mulld 3, 3, 9 25648; PWR5-NEXT: and 4, 4, 7 25649; PWR5-NEXT: rldicl 3, 3, 8, 56 25650; PWR5-NEXT: li 5, 53 25651; PWR5-NEXT: mulld 4, 4, 9 25652; PWR5-NEXT: subc 6, 3, 5 25653; PWR5-NEXT: rldicl 4, 4, 8, 56 25654; PWR5-NEXT: subfe 3, 3, 3 25655; PWR5-NEXT: subc 5, 4, 5 25656; PWR5-NEXT: subfe 4, 4, 4 25657; PWR5-NEXT: blr 25658; 25659; PWR6-LABEL: ult_53_v2i64: 25660; PWR6: # %bb.0: 25661; PWR6-NEXT: lis 5, 21845 25662; PWR6-NEXT: lis 6, 13107 25663; PWR6-NEXT: ori 5, 5, 21845 25664; PWR6-NEXT: rotldi 8, 4, 63 25665; PWR6-NEXT: rotldi 9, 3, 63 25666; PWR6-NEXT: rldimi 5, 5, 32, 0 25667; PWR6-NEXT: and 8, 8, 5 25668; PWR6-NEXT: and 5, 9, 5 25669; PWR6-NEXT: ori 6, 6, 13107 25670; PWR6-NEXT: sub 3, 3, 5 25671; PWR6-NEXT: rldimi 6, 6, 32, 0 25672; PWR6-NEXT: sub 4, 4, 8 25673; PWR6-NEXT: and 8, 3, 6 25674; PWR6-NEXT: rotldi 3, 3, 62 25675; PWR6-NEXT: and 3, 3, 6 25676; PWR6-NEXT: lis 7, 3855 25677; PWR6-NEXT: and 5, 4, 6 25678; PWR6-NEXT: rotldi 4, 4, 62 25679; PWR6-NEXT: add 3, 8, 3 25680; PWR6-NEXT: lis 9, 257 25681; PWR6-NEXT: ori 7, 7, 3855 25682; PWR6-NEXT: and 4, 4, 6 25683; PWR6-NEXT: rldicl 6, 3, 60, 4 25684; PWR6-NEXT: ori 9, 9, 257 25685; PWR6-NEXT: rldimi 7, 7, 32, 0 25686; PWR6-NEXT: add 4, 5, 4 25687; PWR6-NEXT: add 3, 3, 6 25688; PWR6-NEXT: rldimi 9, 9, 32, 0 25689; PWR6-NEXT: rldicl 5, 4, 60, 4 25690; PWR6-NEXT: and 3, 3, 7 25691; PWR6-NEXT: add 4, 4, 5 25692; PWR6-NEXT: mulld 3, 3, 9 25693; PWR6-NEXT: and 4, 4, 7 25694; PWR6-NEXT: rldicl 3, 3, 8, 56 25695; PWR6-NEXT: li 5, 53 25696; PWR6-NEXT: mulld 4, 4, 9 25697; PWR6-NEXT: subc 6, 3, 5 25698; PWR6-NEXT: rldicl 4, 4, 8, 56 25699; PWR6-NEXT: subfe 3, 3, 3 25700; PWR6-NEXT: subc 5, 4, 5 25701; PWR6-NEXT: subfe 4, 4, 4 25702; PWR6-NEXT: blr 25703; 25704; PWR7-LABEL: ult_53_v2i64: 25705; PWR7: # %bb.0: 25706; PWR7-NEXT: addi 3, 1, -32 25707; PWR7-NEXT: li 5, 0 25708; PWR7-NEXT: li 6, -1 25709; PWR7-NEXT: stxvd2x 34, 0, 3 25710; PWR7-NEXT: ld 3, -24(1) 25711; PWR7-NEXT: ld 4, -32(1) 25712; PWR7-NEXT: popcntd 3, 3 25713; PWR7-NEXT: popcntd 4, 4 25714; PWR7-NEXT: cmpldi 3, 53 25715; PWR7-NEXT: isellt 3, 6, 5 25716; PWR7-NEXT: cmpldi 4, 53 25717; PWR7-NEXT: isellt 4, 6, 5 25718; PWR7-NEXT: std 3, -8(1) 25719; PWR7-NEXT: addi 3, 1, -16 25720; PWR7-NEXT: std 4, -16(1) 25721; PWR7-NEXT: lxvd2x 34, 0, 3 25722; PWR7-NEXT: blr 25723; 25724; PWR8-LABEL: ult_53_v2i64: 25725; PWR8: # %bb.0: 25726; PWR8-NEXT: addis 3, 2, .LCPI203_0@toc@ha 25727; PWR8-NEXT: vpopcntd 2, 2 25728; PWR8-NEXT: addi 3, 3, .LCPI203_0@toc@l 25729; PWR8-NEXT: lxvd2x 35, 0, 3 25730; PWR8-NEXT: vcmpgtud 2, 3, 2 25731; PWR8-NEXT: blr 25732; 25733; PWR9-LABEL: ult_53_v2i64: 25734; PWR9: # %bb.0: 25735; PWR9-NEXT: addis 3, 2, .LCPI203_0@toc@ha 25736; PWR9-NEXT: vpopcntd 2, 2 25737; PWR9-NEXT: addi 3, 3, .LCPI203_0@toc@l 25738; PWR9-NEXT: lxvx 35, 0, 3 25739; PWR9-NEXT: vcmpgtud 2, 3, 2 25740; PWR9-NEXT: blr 25741 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25742 %3 = icmp ult <2 x i64> %2, <i64 53, i64 53> 25743 %4 = sext <2 x i1> %3 to <2 x i64> 25744 ret <2 x i64> %4 25745} 25746 25747define <2 x i64> @ugt_53_v2i64(<2 x i64> %0) { 25748; PWR5-LABEL: ugt_53_v2i64: 25749; PWR5: # %bb.0: 25750; PWR5-NEXT: lis 5, 21845 25751; PWR5-NEXT: lis 6, 13107 25752; PWR5-NEXT: ori 5, 5, 21845 25753; PWR5-NEXT: rotldi 8, 4, 63 25754; PWR5-NEXT: rotldi 9, 3, 63 25755; PWR5-NEXT: rldimi 5, 5, 32, 0 25756; PWR5-NEXT: and 8, 8, 5 25757; PWR5-NEXT: and 5, 9, 5 25758; PWR5-NEXT: ori 6, 6, 13107 25759; PWR5-NEXT: sub 3, 3, 5 25760; PWR5-NEXT: rldimi 6, 6, 32, 0 25761; PWR5-NEXT: sub 4, 4, 8 25762; PWR5-NEXT: and 8, 3, 6 25763; PWR5-NEXT: rotldi 3, 3, 62 25764; PWR5-NEXT: and 3, 3, 6 25765; PWR5-NEXT: lis 7, 3855 25766; PWR5-NEXT: and 5, 4, 6 25767; PWR5-NEXT: rotldi 4, 4, 62 25768; PWR5-NEXT: add 3, 8, 3 25769; PWR5-NEXT: lis 9, 257 25770; PWR5-NEXT: ori 7, 7, 3855 25771; PWR5-NEXT: and 4, 4, 6 25772; PWR5-NEXT: rldicl 6, 3, 60, 4 25773; PWR5-NEXT: ori 9, 9, 257 25774; PWR5-NEXT: rldimi 7, 7, 32, 0 25775; PWR5-NEXT: add 4, 5, 4 25776; PWR5-NEXT: add 3, 3, 6 25777; PWR5-NEXT: rldimi 9, 9, 32, 0 25778; PWR5-NEXT: rldicl 5, 4, 60, 4 25779; PWR5-NEXT: and 3, 3, 7 25780; PWR5-NEXT: add 4, 4, 5 25781; PWR5-NEXT: mulld 3, 3, 9 25782; PWR5-NEXT: and 4, 4, 7 25783; PWR5-NEXT: rldicl 3, 3, 8, 56 25784; PWR5-NEXT: mulld 4, 4, 9 25785; PWR5-NEXT: li 5, 53 25786; PWR5-NEXT: subfic 3, 3, 53 25787; PWR5-NEXT: rldicl 4, 4, 8, 56 25788; PWR5-NEXT: subfe 3, 5, 5 25789; PWR5-NEXT: subfic 4, 4, 53 25790; PWR5-NEXT: subfe 4, 5, 5 25791; PWR5-NEXT: blr 25792; 25793; PWR6-LABEL: ugt_53_v2i64: 25794; PWR6: # %bb.0: 25795; PWR6-NEXT: lis 5, 21845 25796; PWR6-NEXT: lis 6, 13107 25797; PWR6-NEXT: ori 5, 5, 21845 25798; PWR6-NEXT: rotldi 8, 4, 63 25799; PWR6-NEXT: rotldi 9, 3, 63 25800; PWR6-NEXT: rldimi 5, 5, 32, 0 25801; PWR6-NEXT: and 8, 8, 5 25802; PWR6-NEXT: and 5, 9, 5 25803; PWR6-NEXT: ori 6, 6, 13107 25804; PWR6-NEXT: sub 3, 3, 5 25805; PWR6-NEXT: rldimi 6, 6, 32, 0 25806; PWR6-NEXT: sub 4, 4, 8 25807; PWR6-NEXT: and 8, 3, 6 25808; PWR6-NEXT: rotldi 3, 3, 62 25809; PWR6-NEXT: and 3, 3, 6 25810; PWR6-NEXT: lis 7, 3855 25811; PWR6-NEXT: and 5, 4, 6 25812; PWR6-NEXT: rotldi 4, 4, 62 25813; PWR6-NEXT: add 3, 8, 3 25814; PWR6-NEXT: lis 9, 257 25815; PWR6-NEXT: ori 7, 7, 3855 25816; PWR6-NEXT: and 4, 4, 6 25817; PWR6-NEXT: rldicl 6, 3, 60, 4 25818; PWR6-NEXT: ori 9, 9, 257 25819; PWR6-NEXT: rldimi 7, 7, 32, 0 25820; PWR6-NEXT: add 4, 5, 4 25821; PWR6-NEXT: add 3, 3, 6 25822; PWR6-NEXT: rldimi 9, 9, 32, 0 25823; PWR6-NEXT: rldicl 5, 4, 60, 4 25824; PWR6-NEXT: and 3, 3, 7 25825; PWR6-NEXT: add 4, 4, 5 25826; PWR6-NEXT: mulld 3, 3, 9 25827; PWR6-NEXT: and 4, 4, 7 25828; PWR6-NEXT: rldicl 3, 3, 8, 56 25829; PWR6-NEXT: mulld 4, 4, 9 25830; PWR6-NEXT: li 5, 53 25831; PWR6-NEXT: subfic 3, 3, 53 25832; PWR6-NEXT: rldicl 4, 4, 8, 56 25833; PWR6-NEXT: subfe 3, 5, 5 25834; PWR6-NEXT: subfic 4, 4, 53 25835; PWR6-NEXT: subfe 4, 5, 5 25836; PWR6-NEXT: blr 25837; 25838; PWR7-LABEL: ugt_53_v2i64: 25839; PWR7: # %bb.0: 25840; PWR7-NEXT: addi 3, 1, -32 25841; PWR7-NEXT: li 5, 0 25842; PWR7-NEXT: li 6, -1 25843; PWR7-NEXT: stxvd2x 34, 0, 3 25844; PWR7-NEXT: ld 3, -24(1) 25845; PWR7-NEXT: ld 4, -32(1) 25846; PWR7-NEXT: popcntd 3, 3 25847; PWR7-NEXT: popcntd 4, 4 25848; PWR7-NEXT: cmpldi 3, 53 25849; PWR7-NEXT: iselgt 3, 6, 5 25850; PWR7-NEXT: cmpldi 4, 53 25851; PWR7-NEXT: iselgt 4, 6, 5 25852; PWR7-NEXT: std 3, -8(1) 25853; PWR7-NEXT: addi 3, 1, -16 25854; PWR7-NEXT: std 4, -16(1) 25855; PWR7-NEXT: lxvd2x 34, 0, 3 25856; PWR7-NEXT: blr 25857; 25858; PWR8-LABEL: ugt_53_v2i64: 25859; PWR8: # %bb.0: 25860; PWR8-NEXT: addis 3, 2, .LCPI204_0@toc@ha 25861; PWR8-NEXT: vpopcntd 2, 2 25862; PWR8-NEXT: addi 3, 3, .LCPI204_0@toc@l 25863; PWR8-NEXT: lxvd2x 35, 0, 3 25864; PWR8-NEXT: vcmpgtud 2, 2, 3 25865; PWR8-NEXT: blr 25866; 25867; PWR9-LABEL: ugt_53_v2i64: 25868; PWR9: # %bb.0: 25869; PWR9-NEXT: addis 3, 2, .LCPI204_0@toc@ha 25870; PWR9-NEXT: vpopcntd 2, 2 25871; PWR9-NEXT: addi 3, 3, .LCPI204_0@toc@l 25872; PWR9-NEXT: lxvx 35, 0, 3 25873; PWR9-NEXT: vcmpgtud 2, 2, 3 25874; PWR9-NEXT: blr 25875 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25876 %3 = icmp ugt <2 x i64> %2, <i64 53, i64 53> 25877 %4 = sext <2 x i1> %3 to <2 x i64> 25878 ret <2 x i64> %4 25879} 25880 25881define <2 x i64> @ult_54_v2i64(<2 x i64> %0) { 25882; PWR5-LABEL: ult_54_v2i64: 25883; PWR5: # %bb.0: 25884; PWR5-NEXT: lis 5, 21845 25885; PWR5-NEXT: lis 6, 13107 25886; PWR5-NEXT: ori 5, 5, 21845 25887; PWR5-NEXT: rotldi 8, 4, 63 25888; PWR5-NEXT: rotldi 9, 3, 63 25889; PWR5-NEXT: rldimi 5, 5, 32, 0 25890; PWR5-NEXT: and 8, 8, 5 25891; PWR5-NEXT: and 5, 9, 5 25892; PWR5-NEXT: ori 6, 6, 13107 25893; PWR5-NEXT: sub 3, 3, 5 25894; PWR5-NEXT: rldimi 6, 6, 32, 0 25895; PWR5-NEXT: sub 4, 4, 8 25896; PWR5-NEXT: and 8, 3, 6 25897; PWR5-NEXT: rotldi 3, 3, 62 25898; PWR5-NEXT: and 3, 3, 6 25899; PWR5-NEXT: lis 7, 3855 25900; PWR5-NEXT: and 5, 4, 6 25901; PWR5-NEXT: rotldi 4, 4, 62 25902; PWR5-NEXT: add 3, 8, 3 25903; PWR5-NEXT: lis 9, 257 25904; PWR5-NEXT: ori 7, 7, 3855 25905; PWR5-NEXT: and 4, 4, 6 25906; PWR5-NEXT: rldicl 6, 3, 60, 4 25907; PWR5-NEXT: ori 9, 9, 257 25908; PWR5-NEXT: rldimi 7, 7, 32, 0 25909; PWR5-NEXT: add 4, 5, 4 25910; PWR5-NEXT: add 3, 3, 6 25911; PWR5-NEXT: rldimi 9, 9, 32, 0 25912; PWR5-NEXT: rldicl 5, 4, 60, 4 25913; PWR5-NEXT: and 3, 3, 7 25914; PWR5-NEXT: add 4, 4, 5 25915; PWR5-NEXT: mulld 3, 3, 9 25916; PWR5-NEXT: and 4, 4, 7 25917; PWR5-NEXT: rldicl 3, 3, 8, 56 25918; PWR5-NEXT: li 5, 54 25919; PWR5-NEXT: mulld 4, 4, 9 25920; PWR5-NEXT: subc 6, 3, 5 25921; PWR5-NEXT: rldicl 4, 4, 8, 56 25922; PWR5-NEXT: subfe 3, 3, 3 25923; PWR5-NEXT: subc 5, 4, 5 25924; PWR5-NEXT: subfe 4, 4, 4 25925; PWR5-NEXT: blr 25926; 25927; PWR6-LABEL: ult_54_v2i64: 25928; PWR6: # %bb.0: 25929; PWR6-NEXT: lis 5, 21845 25930; PWR6-NEXT: lis 6, 13107 25931; PWR6-NEXT: ori 5, 5, 21845 25932; PWR6-NEXT: rotldi 8, 4, 63 25933; PWR6-NEXT: rotldi 9, 3, 63 25934; PWR6-NEXT: rldimi 5, 5, 32, 0 25935; PWR6-NEXT: and 8, 8, 5 25936; PWR6-NEXT: and 5, 9, 5 25937; PWR6-NEXT: ori 6, 6, 13107 25938; PWR6-NEXT: sub 3, 3, 5 25939; PWR6-NEXT: rldimi 6, 6, 32, 0 25940; PWR6-NEXT: sub 4, 4, 8 25941; PWR6-NEXT: and 8, 3, 6 25942; PWR6-NEXT: rotldi 3, 3, 62 25943; PWR6-NEXT: and 3, 3, 6 25944; PWR6-NEXT: lis 7, 3855 25945; PWR6-NEXT: and 5, 4, 6 25946; PWR6-NEXT: rotldi 4, 4, 62 25947; PWR6-NEXT: add 3, 8, 3 25948; PWR6-NEXT: lis 9, 257 25949; PWR6-NEXT: ori 7, 7, 3855 25950; PWR6-NEXT: and 4, 4, 6 25951; PWR6-NEXT: rldicl 6, 3, 60, 4 25952; PWR6-NEXT: ori 9, 9, 257 25953; PWR6-NEXT: rldimi 7, 7, 32, 0 25954; PWR6-NEXT: add 4, 5, 4 25955; PWR6-NEXT: add 3, 3, 6 25956; PWR6-NEXT: rldimi 9, 9, 32, 0 25957; PWR6-NEXT: rldicl 5, 4, 60, 4 25958; PWR6-NEXT: and 3, 3, 7 25959; PWR6-NEXT: add 4, 4, 5 25960; PWR6-NEXT: mulld 3, 3, 9 25961; PWR6-NEXT: and 4, 4, 7 25962; PWR6-NEXT: rldicl 3, 3, 8, 56 25963; PWR6-NEXT: li 5, 54 25964; PWR6-NEXT: mulld 4, 4, 9 25965; PWR6-NEXT: subc 6, 3, 5 25966; PWR6-NEXT: rldicl 4, 4, 8, 56 25967; PWR6-NEXT: subfe 3, 3, 3 25968; PWR6-NEXT: subc 5, 4, 5 25969; PWR6-NEXT: subfe 4, 4, 4 25970; PWR6-NEXT: blr 25971; 25972; PWR7-LABEL: ult_54_v2i64: 25973; PWR7: # %bb.0: 25974; PWR7-NEXT: addi 3, 1, -32 25975; PWR7-NEXT: li 5, 0 25976; PWR7-NEXT: li 6, -1 25977; PWR7-NEXT: stxvd2x 34, 0, 3 25978; PWR7-NEXT: ld 3, -24(1) 25979; PWR7-NEXT: ld 4, -32(1) 25980; PWR7-NEXT: popcntd 3, 3 25981; PWR7-NEXT: popcntd 4, 4 25982; PWR7-NEXT: cmpldi 3, 54 25983; PWR7-NEXT: isellt 3, 6, 5 25984; PWR7-NEXT: cmpldi 4, 54 25985; PWR7-NEXT: isellt 4, 6, 5 25986; PWR7-NEXT: std 3, -8(1) 25987; PWR7-NEXT: addi 3, 1, -16 25988; PWR7-NEXT: std 4, -16(1) 25989; PWR7-NEXT: lxvd2x 34, 0, 3 25990; PWR7-NEXT: blr 25991; 25992; PWR8-LABEL: ult_54_v2i64: 25993; PWR8: # %bb.0: 25994; PWR8-NEXT: addis 3, 2, .LCPI205_0@toc@ha 25995; PWR8-NEXT: vpopcntd 2, 2 25996; PWR8-NEXT: addi 3, 3, .LCPI205_0@toc@l 25997; PWR8-NEXT: lxvd2x 35, 0, 3 25998; PWR8-NEXT: vcmpgtud 2, 3, 2 25999; PWR8-NEXT: blr 26000; 26001; PWR9-LABEL: ult_54_v2i64: 26002; PWR9: # %bb.0: 26003; PWR9-NEXT: addis 3, 2, .LCPI205_0@toc@ha 26004; PWR9-NEXT: vpopcntd 2, 2 26005; PWR9-NEXT: addi 3, 3, .LCPI205_0@toc@l 26006; PWR9-NEXT: lxvx 35, 0, 3 26007; PWR9-NEXT: vcmpgtud 2, 3, 2 26008; PWR9-NEXT: blr 26009 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26010 %3 = icmp ult <2 x i64> %2, <i64 54, i64 54> 26011 %4 = sext <2 x i1> %3 to <2 x i64> 26012 ret <2 x i64> %4 26013} 26014 26015define <2 x i64> @ugt_54_v2i64(<2 x i64> %0) { 26016; PWR5-LABEL: ugt_54_v2i64: 26017; PWR5: # %bb.0: 26018; PWR5-NEXT: lis 5, 21845 26019; PWR5-NEXT: lis 6, 13107 26020; PWR5-NEXT: ori 5, 5, 21845 26021; PWR5-NEXT: rotldi 8, 4, 63 26022; PWR5-NEXT: rotldi 9, 3, 63 26023; PWR5-NEXT: rldimi 5, 5, 32, 0 26024; PWR5-NEXT: and 8, 8, 5 26025; PWR5-NEXT: and 5, 9, 5 26026; PWR5-NEXT: ori 6, 6, 13107 26027; PWR5-NEXT: sub 3, 3, 5 26028; PWR5-NEXT: rldimi 6, 6, 32, 0 26029; PWR5-NEXT: sub 4, 4, 8 26030; PWR5-NEXT: and 8, 3, 6 26031; PWR5-NEXT: rotldi 3, 3, 62 26032; PWR5-NEXT: and 3, 3, 6 26033; PWR5-NEXT: lis 7, 3855 26034; PWR5-NEXT: and 5, 4, 6 26035; PWR5-NEXT: rotldi 4, 4, 62 26036; PWR5-NEXT: add 3, 8, 3 26037; PWR5-NEXT: lis 9, 257 26038; PWR5-NEXT: ori 7, 7, 3855 26039; PWR5-NEXT: and 4, 4, 6 26040; PWR5-NEXT: rldicl 6, 3, 60, 4 26041; PWR5-NEXT: ori 9, 9, 257 26042; PWR5-NEXT: rldimi 7, 7, 32, 0 26043; PWR5-NEXT: add 4, 5, 4 26044; PWR5-NEXT: add 3, 3, 6 26045; PWR5-NEXT: rldimi 9, 9, 32, 0 26046; PWR5-NEXT: rldicl 5, 4, 60, 4 26047; PWR5-NEXT: and 3, 3, 7 26048; PWR5-NEXT: add 4, 4, 5 26049; PWR5-NEXT: mulld 3, 3, 9 26050; PWR5-NEXT: and 4, 4, 7 26051; PWR5-NEXT: rldicl 3, 3, 8, 56 26052; PWR5-NEXT: mulld 4, 4, 9 26053; PWR5-NEXT: li 5, 54 26054; PWR5-NEXT: subfic 3, 3, 54 26055; PWR5-NEXT: rldicl 4, 4, 8, 56 26056; PWR5-NEXT: subfe 3, 5, 5 26057; PWR5-NEXT: subfic 4, 4, 54 26058; PWR5-NEXT: subfe 4, 5, 5 26059; PWR5-NEXT: blr 26060; 26061; PWR6-LABEL: ugt_54_v2i64: 26062; PWR6: # %bb.0: 26063; PWR6-NEXT: lis 5, 21845 26064; PWR6-NEXT: lis 6, 13107 26065; PWR6-NEXT: ori 5, 5, 21845 26066; PWR6-NEXT: rotldi 8, 4, 63 26067; PWR6-NEXT: rotldi 9, 3, 63 26068; PWR6-NEXT: rldimi 5, 5, 32, 0 26069; PWR6-NEXT: and 8, 8, 5 26070; PWR6-NEXT: and 5, 9, 5 26071; PWR6-NEXT: ori 6, 6, 13107 26072; PWR6-NEXT: sub 3, 3, 5 26073; PWR6-NEXT: rldimi 6, 6, 32, 0 26074; PWR6-NEXT: sub 4, 4, 8 26075; PWR6-NEXT: and 8, 3, 6 26076; PWR6-NEXT: rotldi 3, 3, 62 26077; PWR6-NEXT: and 3, 3, 6 26078; PWR6-NEXT: lis 7, 3855 26079; PWR6-NEXT: and 5, 4, 6 26080; PWR6-NEXT: rotldi 4, 4, 62 26081; PWR6-NEXT: add 3, 8, 3 26082; PWR6-NEXT: lis 9, 257 26083; PWR6-NEXT: ori 7, 7, 3855 26084; PWR6-NEXT: and 4, 4, 6 26085; PWR6-NEXT: rldicl 6, 3, 60, 4 26086; PWR6-NEXT: ori 9, 9, 257 26087; PWR6-NEXT: rldimi 7, 7, 32, 0 26088; PWR6-NEXT: add 4, 5, 4 26089; PWR6-NEXT: add 3, 3, 6 26090; PWR6-NEXT: rldimi 9, 9, 32, 0 26091; PWR6-NEXT: rldicl 5, 4, 60, 4 26092; PWR6-NEXT: and 3, 3, 7 26093; PWR6-NEXT: add 4, 4, 5 26094; PWR6-NEXT: mulld 3, 3, 9 26095; PWR6-NEXT: and 4, 4, 7 26096; PWR6-NEXT: rldicl 3, 3, 8, 56 26097; PWR6-NEXT: mulld 4, 4, 9 26098; PWR6-NEXT: li 5, 54 26099; PWR6-NEXT: subfic 3, 3, 54 26100; PWR6-NEXT: rldicl 4, 4, 8, 56 26101; PWR6-NEXT: subfe 3, 5, 5 26102; PWR6-NEXT: subfic 4, 4, 54 26103; PWR6-NEXT: subfe 4, 5, 5 26104; PWR6-NEXT: blr 26105; 26106; PWR7-LABEL: ugt_54_v2i64: 26107; PWR7: # %bb.0: 26108; PWR7-NEXT: addi 3, 1, -32 26109; PWR7-NEXT: li 5, 0 26110; PWR7-NEXT: li 6, -1 26111; PWR7-NEXT: stxvd2x 34, 0, 3 26112; PWR7-NEXT: ld 3, -24(1) 26113; PWR7-NEXT: ld 4, -32(1) 26114; PWR7-NEXT: popcntd 3, 3 26115; PWR7-NEXT: popcntd 4, 4 26116; PWR7-NEXT: cmpldi 3, 54 26117; PWR7-NEXT: iselgt 3, 6, 5 26118; PWR7-NEXT: cmpldi 4, 54 26119; PWR7-NEXT: iselgt 4, 6, 5 26120; PWR7-NEXT: std 3, -8(1) 26121; PWR7-NEXT: addi 3, 1, -16 26122; PWR7-NEXT: std 4, -16(1) 26123; PWR7-NEXT: lxvd2x 34, 0, 3 26124; PWR7-NEXT: blr 26125; 26126; PWR8-LABEL: ugt_54_v2i64: 26127; PWR8: # %bb.0: 26128; PWR8-NEXT: addis 3, 2, .LCPI206_0@toc@ha 26129; PWR8-NEXT: vpopcntd 2, 2 26130; PWR8-NEXT: addi 3, 3, .LCPI206_0@toc@l 26131; PWR8-NEXT: lxvd2x 35, 0, 3 26132; PWR8-NEXT: vcmpgtud 2, 2, 3 26133; PWR8-NEXT: blr 26134; 26135; PWR9-LABEL: ugt_54_v2i64: 26136; PWR9: # %bb.0: 26137; PWR9-NEXT: addis 3, 2, .LCPI206_0@toc@ha 26138; PWR9-NEXT: vpopcntd 2, 2 26139; PWR9-NEXT: addi 3, 3, .LCPI206_0@toc@l 26140; PWR9-NEXT: lxvx 35, 0, 3 26141; PWR9-NEXT: vcmpgtud 2, 2, 3 26142; PWR9-NEXT: blr 26143 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26144 %3 = icmp ugt <2 x i64> %2, <i64 54, i64 54> 26145 %4 = sext <2 x i1> %3 to <2 x i64> 26146 ret <2 x i64> %4 26147} 26148 26149define <2 x i64> @ult_55_v2i64(<2 x i64> %0) { 26150; PWR5-LABEL: ult_55_v2i64: 26151; PWR5: # %bb.0: 26152; PWR5-NEXT: lis 5, 21845 26153; PWR5-NEXT: lis 6, 13107 26154; PWR5-NEXT: ori 5, 5, 21845 26155; PWR5-NEXT: rotldi 8, 4, 63 26156; PWR5-NEXT: rotldi 9, 3, 63 26157; PWR5-NEXT: rldimi 5, 5, 32, 0 26158; PWR5-NEXT: and 8, 8, 5 26159; PWR5-NEXT: and 5, 9, 5 26160; PWR5-NEXT: ori 6, 6, 13107 26161; PWR5-NEXT: sub 3, 3, 5 26162; PWR5-NEXT: rldimi 6, 6, 32, 0 26163; PWR5-NEXT: sub 4, 4, 8 26164; PWR5-NEXT: and 8, 3, 6 26165; PWR5-NEXT: rotldi 3, 3, 62 26166; PWR5-NEXT: and 3, 3, 6 26167; PWR5-NEXT: lis 7, 3855 26168; PWR5-NEXT: and 5, 4, 6 26169; PWR5-NEXT: rotldi 4, 4, 62 26170; PWR5-NEXT: add 3, 8, 3 26171; PWR5-NEXT: lis 9, 257 26172; PWR5-NEXT: ori 7, 7, 3855 26173; PWR5-NEXT: and 4, 4, 6 26174; PWR5-NEXT: rldicl 6, 3, 60, 4 26175; PWR5-NEXT: ori 9, 9, 257 26176; PWR5-NEXT: rldimi 7, 7, 32, 0 26177; PWR5-NEXT: add 4, 5, 4 26178; PWR5-NEXT: add 3, 3, 6 26179; PWR5-NEXT: rldimi 9, 9, 32, 0 26180; PWR5-NEXT: rldicl 5, 4, 60, 4 26181; PWR5-NEXT: and 3, 3, 7 26182; PWR5-NEXT: add 4, 4, 5 26183; PWR5-NEXT: mulld 3, 3, 9 26184; PWR5-NEXT: and 4, 4, 7 26185; PWR5-NEXT: rldicl 3, 3, 8, 56 26186; PWR5-NEXT: li 5, 55 26187; PWR5-NEXT: mulld 4, 4, 9 26188; PWR5-NEXT: subc 6, 3, 5 26189; PWR5-NEXT: rldicl 4, 4, 8, 56 26190; PWR5-NEXT: subfe 3, 3, 3 26191; PWR5-NEXT: subc 5, 4, 5 26192; PWR5-NEXT: subfe 4, 4, 4 26193; PWR5-NEXT: blr 26194; 26195; PWR6-LABEL: ult_55_v2i64: 26196; PWR6: # %bb.0: 26197; PWR6-NEXT: lis 5, 21845 26198; PWR6-NEXT: lis 6, 13107 26199; PWR6-NEXT: ori 5, 5, 21845 26200; PWR6-NEXT: rotldi 8, 4, 63 26201; PWR6-NEXT: rotldi 9, 3, 63 26202; PWR6-NEXT: rldimi 5, 5, 32, 0 26203; PWR6-NEXT: and 8, 8, 5 26204; PWR6-NEXT: and 5, 9, 5 26205; PWR6-NEXT: ori 6, 6, 13107 26206; PWR6-NEXT: sub 3, 3, 5 26207; PWR6-NEXT: rldimi 6, 6, 32, 0 26208; PWR6-NEXT: sub 4, 4, 8 26209; PWR6-NEXT: and 8, 3, 6 26210; PWR6-NEXT: rotldi 3, 3, 62 26211; PWR6-NEXT: and 3, 3, 6 26212; PWR6-NEXT: lis 7, 3855 26213; PWR6-NEXT: and 5, 4, 6 26214; PWR6-NEXT: rotldi 4, 4, 62 26215; PWR6-NEXT: add 3, 8, 3 26216; PWR6-NEXT: lis 9, 257 26217; PWR6-NEXT: ori 7, 7, 3855 26218; PWR6-NEXT: and 4, 4, 6 26219; PWR6-NEXT: rldicl 6, 3, 60, 4 26220; PWR6-NEXT: ori 9, 9, 257 26221; PWR6-NEXT: rldimi 7, 7, 32, 0 26222; PWR6-NEXT: add 4, 5, 4 26223; PWR6-NEXT: add 3, 3, 6 26224; PWR6-NEXT: rldimi 9, 9, 32, 0 26225; PWR6-NEXT: rldicl 5, 4, 60, 4 26226; PWR6-NEXT: and 3, 3, 7 26227; PWR6-NEXT: add 4, 4, 5 26228; PWR6-NEXT: mulld 3, 3, 9 26229; PWR6-NEXT: and 4, 4, 7 26230; PWR6-NEXT: rldicl 3, 3, 8, 56 26231; PWR6-NEXT: li 5, 55 26232; PWR6-NEXT: mulld 4, 4, 9 26233; PWR6-NEXT: subc 6, 3, 5 26234; PWR6-NEXT: rldicl 4, 4, 8, 56 26235; PWR6-NEXT: subfe 3, 3, 3 26236; PWR6-NEXT: subc 5, 4, 5 26237; PWR6-NEXT: subfe 4, 4, 4 26238; PWR6-NEXT: blr 26239; 26240; PWR7-LABEL: ult_55_v2i64: 26241; PWR7: # %bb.0: 26242; PWR7-NEXT: addi 3, 1, -32 26243; PWR7-NEXT: li 5, 0 26244; PWR7-NEXT: li 6, -1 26245; PWR7-NEXT: stxvd2x 34, 0, 3 26246; PWR7-NEXT: ld 3, -24(1) 26247; PWR7-NEXT: ld 4, -32(1) 26248; PWR7-NEXT: popcntd 3, 3 26249; PWR7-NEXT: popcntd 4, 4 26250; PWR7-NEXT: cmpldi 3, 55 26251; PWR7-NEXT: isellt 3, 6, 5 26252; PWR7-NEXT: cmpldi 4, 55 26253; PWR7-NEXT: isellt 4, 6, 5 26254; PWR7-NEXT: std 3, -8(1) 26255; PWR7-NEXT: addi 3, 1, -16 26256; PWR7-NEXT: std 4, -16(1) 26257; PWR7-NEXT: lxvd2x 34, 0, 3 26258; PWR7-NEXT: blr 26259; 26260; PWR8-LABEL: ult_55_v2i64: 26261; PWR8: # %bb.0: 26262; PWR8-NEXT: addis 3, 2, .LCPI207_0@toc@ha 26263; PWR8-NEXT: vpopcntd 2, 2 26264; PWR8-NEXT: addi 3, 3, .LCPI207_0@toc@l 26265; PWR8-NEXT: lxvd2x 35, 0, 3 26266; PWR8-NEXT: vcmpgtud 2, 3, 2 26267; PWR8-NEXT: blr 26268; 26269; PWR9-LABEL: ult_55_v2i64: 26270; PWR9: # %bb.0: 26271; PWR9-NEXT: addis 3, 2, .LCPI207_0@toc@ha 26272; PWR9-NEXT: vpopcntd 2, 2 26273; PWR9-NEXT: addi 3, 3, .LCPI207_0@toc@l 26274; PWR9-NEXT: lxvx 35, 0, 3 26275; PWR9-NEXT: vcmpgtud 2, 3, 2 26276; PWR9-NEXT: blr 26277 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26278 %3 = icmp ult <2 x i64> %2, <i64 55, i64 55> 26279 %4 = sext <2 x i1> %3 to <2 x i64> 26280 ret <2 x i64> %4 26281} 26282 26283define <2 x i64> @ugt_55_v2i64(<2 x i64> %0) { 26284; PWR5-LABEL: ugt_55_v2i64: 26285; PWR5: # %bb.0: 26286; PWR5-NEXT: lis 5, 21845 26287; PWR5-NEXT: lis 6, 13107 26288; PWR5-NEXT: ori 5, 5, 21845 26289; PWR5-NEXT: rotldi 8, 4, 63 26290; PWR5-NEXT: rotldi 9, 3, 63 26291; PWR5-NEXT: rldimi 5, 5, 32, 0 26292; PWR5-NEXT: and 8, 8, 5 26293; PWR5-NEXT: and 5, 9, 5 26294; PWR5-NEXT: ori 6, 6, 13107 26295; PWR5-NEXT: sub 3, 3, 5 26296; PWR5-NEXT: rldimi 6, 6, 32, 0 26297; PWR5-NEXT: sub 4, 4, 8 26298; PWR5-NEXT: and 8, 3, 6 26299; PWR5-NEXT: rotldi 3, 3, 62 26300; PWR5-NEXT: and 3, 3, 6 26301; PWR5-NEXT: lis 7, 3855 26302; PWR5-NEXT: and 5, 4, 6 26303; PWR5-NEXT: rotldi 4, 4, 62 26304; PWR5-NEXT: add 3, 8, 3 26305; PWR5-NEXT: lis 9, 257 26306; PWR5-NEXT: ori 7, 7, 3855 26307; PWR5-NEXT: and 4, 4, 6 26308; PWR5-NEXT: rldicl 6, 3, 60, 4 26309; PWR5-NEXT: ori 9, 9, 257 26310; PWR5-NEXT: rldimi 7, 7, 32, 0 26311; PWR5-NEXT: add 4, 5, 4 26312; PWR5-NEXT: add 3, 3, 6 26313; PWR5-NEXT: rldimi 9, 9, 32, 0 26314; PWR5-NEXT: rldicl 5, 4, 60, 4 26315; PWR5-NEXT: and 3, 3, 7 26316; PWR5-NEXT: add 4, 4, 5 26317; PWR5-NEXT: mulld 3, 3, 9 26318; PWR5-NEXT: and 4, 4, 7 26319; PWR5-NEXT: rldicl 3, 3, 8, 56 26320; PWR5-NEXT: mulld 4, 4, 9 26321; PWR5-NEXT: li 5, 55 26322; PWR5-NEXT: subfic 3, 3, 55 26323; PWR5-NEXT: rldicl 4, 4, 8, 56 26324; PWR5-NEXT: subfe 3, 5, 5 26325; PWR5-NEXT: subfic 4, 4, 55 26326; PWR5-NEXT: subfe 4, 5, 5 26327; PWR5-NEXT: blr 26328; 26329; PWR6-LABEL: ugt_55_v2i64: 26330; PWR6: # %bb.0: 26331; PWR6-NEXT: lis 5, 21845 26332; PWR6-NEXT: lis 6, 13107 26333; PWR6-NEXT: ori 5, 5, 21845 26334; PWR6-NEXT: rotldi 8, 4, 63 26335; PWR6-NEXT: rotldi 9, 3, 63 26336; PWR6-NEXT: rldimi 5, 5, 32, 0 26337; PWR6-NEXT: and 8, 8, 5 26338; PWR6-NEXT: and 5, 9, 5 26339; PWR6-NEXT: ori 6, 6, 13107 26340; PWR6-NEXT: sub 3, 3, 5 26341; PWR6-NEXT: rldimi 6, 6, 32, 0 26342; PWR6-NEXT: sub 4, 4, 8 26343; PWR6-NEXT: and 8, 3, 6 26344; PWR6-NEXT: rotldi 3, 3, 62 26345; PWR6-NEXT: and 3, 3, 6 26346; PWR6-NEXT: lis 7, 3855 26347; PWR6-NEXT: and 5, 4, 6 26348; PWR6-NEXT: rotldi 4, 4, 62 26349; PWR6-NEXT: add 3, 8, 3 26350; PWR6-NEXT: lis 9, 257 26351; PWR6-NEXT: ori 7, 7, 3855 26352; PWR6-NEXT: and 4, 4, 6 26353; PWR6-NEXT: rldicl 6, 3, 60, 4 26354; PWR6-NEXT: ori 9, 9, 257 26355; PWR6-NEXT: rldimi 7, 7, 32, 0 26356; PWR6-NEXT: add 4, 5, 4 26357; PWR6-NEXT: add 3, 3, 6 26358; PWR6-NEXT: rldimi 9, 9, 32, 0 26359; PWR6-NEXT: rldicl 5, 4, 60, 4 26360; PWR6-NEXT: and 3, 3, 7 26361; PWR6-NEXT: add 4, 4, 5 26362; PWR6-NEXT: mulld 3, 3, 9 26363; PWR6-NEXT: and 4, 4, 7 26364; PWR6-NEXT: rldicl 3, 3, 8, 56 26365; PWR6-NEXT: mulld 4, 4, 9 26366; PWR6-NEXT: li 5, 55 26367; PWR6-NEXT: subfic 3, 3, 55 26368; PWR6-NEXT: rldicl 4, 4, 8, 56 26369; PWR6-NEXT: subfe 3, 5, 5 26370; PWR6-NEXT: subfic 4, 4, 55 26371; PWR6-NEXT: subfe 4, 5, 5 26372; PWR6-NEXT: blr 26373; 26374; PWR7-LABEL: ugt_55_v2i64: 26375; PWR7: # %bb.0: 26376; PWR7-NEXT: addi 3, 1, -32 26377; PWR7-NEXT: li 5, 0 26378; PWR7-NEXT: li 6, -1 26379; PWR7-NEXT: stxvd2x 34, 0, 3 26380; PWR7-NEXT: ld 3, -24(1) 26381; PWR7-NEXT: ld 4, -32(1) 26382; PWR7-NEXT: popcntd 3, 3 26383; PWR7-NEXT: popcntd 4, 4 26384; PWR7-NEXT: cmpldi 3, 55 26385; PWR7-NEXT: iselgt 3, 6, 5 26386; PWR7-NEXT: cmpldi 4, 55 26387; PWR7-NEXT: iselgt 4, 6, 5 26388; PWR7-NEXT: std 3, -8(1) 26389; PWR7-NEXT: addi 3, 1, -16 26390; PWR7-NEXT: std 4, -16(1) 26391; PWR7-NEXT: lxvd2x 34, 0, 3 26392; PWR7-NEXT: blr 26393; 26394; PWR8-LABEL: ugt_55_v2i64: 26395; PWR8: # %bb.0: 26396; PWR8-NEXT: addis 3, 2, .LCPI208_0@toc@ha 26397; PWR8-NEXT: vpopcntd 2, 2 26398; PWR8-NEXT: addi 3, 3, .LCPI208_0@toc@l 26399; PWR8-NEXT: lxvd2x 35, 0, 3 26400; PWR8-NEXT: vcmpgtud 2, 2, 3 26401; PWR8-NEXT: blr 26402; 26403; PWR9-LABEL: ugt_55_v2i64: 26404; PWR9: # %bb.0: 26405; PWR9-NEXT: addis 3, 2, .LCPI208_0@toc@ha 26406; PWR9-NEXT: vpopcntd 2, 2 26407; PWR9-NEXT: addi 3, 3, .LCPI208_0@toc@l 26408; PWR9-NEXT: lxvx 35, 0, 3 26409; PWR9-NEXT: vcmpgtud 2, 2, 3 26410; PWR9-NEXT: blr 26411 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26412 %3 = icmp ugt <2 x i64> %2, <i64 55, i64 55> 26413 %4 = sext <2 x i1> %3 to <2 x i64> 26414 ret <2 x i64> %4 26415} 26416 26417define <2 x i64> @ult_56_v2i64(<2 x i64> %0) { 26418; PWR5-LABEL: ult_56_v2i64: 26419; PWR5: # %bb.0: 26420; PWR5-NEXT: lis 5, 21845 26421; PWR5-NEXT: lis 6, 13107 26422; PWR5-NEXT: ori 5, 5, 21845 26423; PWR5-NEXT: rotldi 8, 4, 63 26424; PWR5-NEXT: rotldi 9, 3, 63 26425; PWR5-NEXT: rldimi 5, 5, 32, 0 26426; PWR5-NEXT: and 8, 8, 5 26427; PWR5-NEXT: and 5, 9, 5 26428; PWR5-NEXT: ori 6, 6, 13107 26429; PWR5-NEXT: sub 3, 3, 5 26430; PWR5-NEXT: rldimi 6, 6, 32, 0 26431; PWR5-NEXT: sub 4, 4, 8 26432; PWR5-NEXT: and 8, 3, 6 26433; PWR5-NEXT: rotldi 3, 3, 62 26434; PWR5-NEXT: and 3, 3, 6 26435; PWR5-NEXT: lis 7, 3855 26436; PWR5-NEXT: and 5, 4, 6 26437; PWR5-NEXT: rotldi 4, 4, 62 26438; PWR5-NEXT: add 3, 8, 3 26439; PWR5-NEXT: lis 9, 257 26440; PWR5-NEXT: ori 7, 7, 3855 26441; PWR5-NEXT: and 4, 4, 6 26442; PWR5-NEXT: rldicl 6, 3, 60, 4 26443; PWR5-NEXT: ori 9, 9, 257 26444; PWR5-NEXT: rldimi 7, 7, 32, 0 26445; PWR5-NEXT: add 4, 5, 4 26446; PWR5-NEXT: add 3, 3, 6 26447; PWR5-NEXT: rldimi 9, 9, 32, 0 26448; PWR5-NEXT: rldicl 5, 4, 60, 4 26449; PWR5-NEXT: and 3, 3, 7 26450; PWR5-NEXT: add 4, 4, 5 26451; PWR5-NEXT: mulld 3, 3, 9 26452; PWR5-NEXT: and 4, 4, 7 26453; PWR5-NEXT: rldicl 3, 3, 8, 56 26454; PWR5-NEXT: li 5, 56 26455; PWR5-NEXT: mulld 4, 4, 9 26456; PWR5-NEXT: subc 6, 3, 5 26457; PWR5-NEXT: rldicl 4, 4, 8, 56 26458; PWR5-NEXT: subfe 3, 3, 3 26459; PWR5-NEXT: subc 5, 4, 5 26460; PWR5-NEXT: subfe 4, 4, 4 26461; PWR5-NEXT: blr 26462; 26463; PWR6-LABEL: ult_56_v2i64: 26464; PWR6: # %bb.0: 26465; PWR6-NEXT: lis 5, 21845 26466; PWR6-NEXT: lis 6, 13107 26467; PWR6-NEXT: ori 5, 5, 21845 26468; PWR6-NEXT: rotldi 8, 4, 63 26469; PWR6-NEXT: rotldi 9, 3, 63 26470; PWR6-NEXT: rldimi 5, 5, 32, 0 26471; PWR6-NEXT: and 8, 8, 5 26472; PWR6-NEXT: and 5, 9, 5 26473; PWR6-NEXT: ori 6, 6, 13107 26474; PWR6-NEXT: sub 3, 3, 5 26475; PWR6-NEXT: rldimi 6, 6, 32, 0 26476; PWR6-NEXT: sub 4, 4, 8 26477; PWR6-NEXT: and 8, 3, 6 26478; PWR6-NEXT: rotldi 3, 3, 62 26479; PWR6-NEXT: and 3, 3, 6 26480; PWR6-NEXT: lis 7, 3855 26481; PWR6-NEXT: and 5, 4, 6 26482; PWR6-NEXT: rotldi 4, 4, 62 26483; PWR6-NEXT: add 3, 8, 3 26484; PWR6-NEXT: lis 9, 257 26485; PWR6-NEXT: ori 7, 7, 3855 26486; PWR6-NEXT: and 4, 4, 6 26487; PWR6-NEXT: rldicl 6, 3, 60, 4 26488; PWR6-NEXT: ori 9, 9, 257 26489; PWR6-NEXT: rldimi 7, 7, 32, 0 26490; PWR6-NEXT: add 4, 5, 4 26491; PWR6-NEXT: add 3, 3, 6 26492; PWR6-NEXT: rldimi 9, 9, 32, 0 26493; PWR6-NEXT: rldicl 5, 4, 60, 4 26494; PWR6-NEXT: and 3, 3, 7 26495; PWR6-NEXT: add 4, 4, 5 26496; PWR6-NEXT: mulld 3, 3, 9 26497; PWR6-NEXT: and 4, 4, 7 26498; PWR6-NEXT: rldicl 3, 3, 8, 56 26499; PWR6-NEXT: li 5, 56 26500; PWR6-NEXT: mulld 4, 4, 9 26501; PWR6-NEXT: subc 6, 3, 5 26502; PWR6-NEXT: rldicl 4, 4, 8, 56 26503; PWR6-NEXT: subfe 3, 3, 3 26504; PWR6-NEXT: subc 5, 4, 5 26505; PWR6-NEXT: subfe 4, 4, 4 26506; PWR6-NEXT: blr 26507; 26508; PWR7-LABEL: ult_56_v2i64: 26509; PWR7: # %bb.0: 26510; PWR7-NEXT: addi 3, 1, -32 26511; PWR7-NEXT: li 5, 0 26512; PWR7-NEXT: li 6, -1 26513; PWR7-NEXT: stxvd2x 34, 0, 3 26514; PWR7-NEXT: ld 3, -24(1) 26515; PWR7-NEXT: ld 4, -32(1) 26516; PWR7-NEXT: popcntd 3, 3 26517; PWR7-NEXT: popcntd 4, 4 26518; PWR7-NEXT: cmpldi 3, 56 26519; PWR7-NEXT: isellt 3, 6, 5 26520; PWR7-NEXT: cmpldi 4, 56 26521; PWR7-NEXT: isellt 4, 6, 5 26522; PWR7-NEXT: std 3, -8(1) 26523; PWR7-NEXT: addi 3, 1, -16 26524; PWR7-NEXT: std 4, -16(1) 26525; PWR7-NEXT: lxvd2x 34, 0, 3 26526; PWR7-NEXT: blr 26527; 26528; PWR8-LABEL: ult_56_v2i64: 26529; PWR8: # %bb.0: 26530; PWR8-NEXT: addis 3, 2, .LCPI209_0@toc@ha 26531; PWR8-NEXT: vpopcntd 2, 2 26532; PWR8-NEXT: addi 3, 3, .LCPI209_0@toc@l 26533; PWR8-NEXT: lxvd2x 35, 0, 3 26534; PWR8-NEXT: vcmpgtud 2, 3, 2 26535; PWR8-NEXT: blr 26536; 26537; PWR9-LABEL: ult_56_v2i64: 26538; PWR9: # %bb.0: 26539; PWR9-NEXT: addis 3, 2, .LCPI209_0@toc@ha 26540; PWR9-NEXT: vpopcntd 2, 2 26541; PWR9-NEXT: addi 3, 3, .LCPI209_0@toc@l 26542; PWR9-NEXT: lxvx 35, 0, 3 26543; PWR9-NEXT: vcmpgtud 2, 3, 2 26544; PWR9-NEXT: blr 26545 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26546 %3 = icmp ult <2 x i64> %2, <i64 56, i64 56> 26547 %4 = sext <2 x i1> %3 to <2 x i64> 26548 ret <2 x i64> %4 26549} 26550 26551define <2 x i64> @ugt_56_v2i64(<2 x i64> %0) { 26552; PWR5-LABEL: ugt_56_v2i64: 26553; PWR5: # %bb.0: 26554; PWR5-NEXT: lis 5, 21845 26555; PWR5-NEXT: lis 6, 13107 26556; PWR5-NEXT: ori 5, 5, 21845 26557; PWR5-NEXT: rotldi 8, 4, 63 26558; PWR5-NEXT: rotldi 9, 3, 63 26559; PWR5-NEXT: rldimi 5, 5, 32, 0 26560; PWR5-NEXT: and 8, 8, 5 26561; PWR5-NEXT: and 5, 9, 5 26562; PWR5-NEXT: ori 6, 6, 13107 26563; PWR5-NEXT: sub 3, 3, 5 26564; PWR5-NEXT: rldimi 6, 6, 32, 0 26565; PWR5-NEXT: sub 4, 4, 8 26566; PWR5-NEXT: and 8, 3, 6 26567; PWR5-NEXT: rotldi 3, 3, 62 26568; PWR5-NEXT: and 3, 3, 6 26569; PWR5-NEXT: lis 7, 3855 26570; PWR5-NEXT: and 5, 4, 6 26571; PWR5-NEXT: rotldi 4, 4, 62 26572; PWR5-NEXT: add 3, 8, 3 26573; PWR5-NEXT: lis 9, 257 26574; PWR5-NEXT: ori 7, 7, 3855 26575; PWR5-NEXT: and 4, 4, 6 26576; PWR5-NEXT: rldicl 6, 3, 60, 4 26577; PWR5-NEXT: ori 9, 9, 257 26578; PWR5-NEXT: rldimi 7, 7, 32, 0 26579; PWR5-NEXT: add 4, 5, 4 26580; PWR5-NEXT: add 3, 3, 6 26581; PWR5-NEXT: rldimi 9, 9, 32, 0 26582; PWR5-NEXT: rldicl 5, 4, 60, 4 26583; PWR5-NEXT: and 3, 3, 7 26584; PWR5-NEXT: add 4, 4, 5 26585; PWR5-NEXT: mulld 3, 3, 9 26586; PWR5-NEXT: and 4, 4, 7 26587; PWR5-NEXT: rldicl 3, 3, 8, 56 26588; PWR5-NEXT: mulld 4, 4, 9 26589; PWR5-NEXT: li 5, 56 26590; PWR5-NEXT: subfic 3, 3, 56 26591; PWR5-NEXT: rldicl 4, 4, 8, 56 26592; PWR5-NEXT: subfe 3, 5, 5 26593; PWR5-NEXT: subfic 4, 4, 56 26594; PWR5-NEXT: subfe 4, 5, 5 26595; PWR5-NEXT: blr 26596; 26597; PWR6-LABEL: ugt_56_v2i64: 26598; PWR6: # %bb.0: 26599; PWR6-NEXT: lis 5, 21845 26600; PWR6-NEXT: lis 6, 13107 26601; PWR6-NEXT: ori 5, 5, 21845 26602; PWR6-NEXT: rotldi 8, 4, 63 26603; PWR6-NEXT: rotldi 9, 3, 63 26604; PWR6-NEXT: rldimi 5, 5, 32, 0 26605; PWR6-NEXT: and 8, 8, 5 26606; PWR6-NEXT: and 5, 9, 5 26607; PWR6-NEXT: ori 6, 6, 13107 26608; PWR6-NEXT: sub 3, 3, 5 26609; PWR6-NEXT: rldimi 6, 6, 32, 0 26610; PWR6-NEXT: sub 4, 4, 8 26611; PWR6-NEXT: and 8, 3, 6 26612; PWR6-NEXT: rotldi 3, 3, 62 26613; PWR6-NEXT: and 3, 3, 6 26614; PWR6-NEXT: lis 7, 3855 26615; PWR6-NEXT: and 5, 4, 6 26616; PWR6-NEXT: rotldi 4, 4, 62 26617; PWR6-NEXT: add 3, 8, 3 26618; PWR6-NEXT: lis 9, 257 26619; PWR6-NEXT: ori 7, 7, 3855 26620; PWR6-NEXT: and 4, 4, 6 26621; PWR6-NEXT: rldicl 6, 3, 60, 4 26622; PWR6-NEXT: ori 9, 9, 257 26623; PWR6-NEXT: rldimi 7, 7, 32, 0 26624; PWR6-NEXT: add 4, 5, 4 26625; PWR6-NEXT: add 3, 3, 6 26626; PWR6-NEXT: rldimi 9, 9, 32, 0 26627; PWR6-NEXT: rldicl 5, 4, 60, 4 26628; PWR6-NEXT: and 3, 3, 7 26629; PWR6-NEXT: add 4, 4, 5 26630; PWR6-NEXT: mulld 3, 3, 9 26631; PWR6-NEXT: and 4, 4, 7 26632; PWR6-NEXT: rldicl 3, 3, 8, 56 26633; PWR6-NEXT: mulld 4, 4, 9 26634; PWR6-NEXT: li 5, 56 26635; PWR6-NEXT: subfic 3, 3, 56 26636; PWR6-NEXT: rldicl 4, 4, 8, 56 26637; PWR6-NEXT: subfe 3, 5, 5 26638; PWR6-NEXT: subfic 4, 4, 56 26639; PWR6-NEXT: subfe 4, 5, 5 26640; PWR6-NEXT: blr 26641; 26642; PWR7-LABEL: ugt_56_v2i64: 26643; PWR7: # %bb.0: 26644; PWR7-NEXT: addi 3, 1, -32 26645; PWR7-NEXT: li 5, 0 26646; PWR7-NEXT: li 6, -1 26647; PWR7-NEXT: stxvd2x 34, 0, 3 26648; PWR7-NEXT: ld 3, -24(1) 26649; PWR7-NEXT: ld 4, -32(1) 26650; PWR7-NEXT: popcntd 3, 3 26651; PWR7-NEXT: popcntd 4, 4 26652; PWR7-NEXT: cmpldi 3, 56 26653; PWR7-NEXT: iselgt 3, 6, 5 26654; PWR7-NEXT: cmpldi 4, 56 26655; PWR7-NEXT: iselgt 4, 6, 5 26656; PWR7-NEXT: std 3, -8(1) 26657; PWR7-NEXT: addi 3, 1, -16 26658; PWR7-NEXT: std 4, -16(1) 26659; PWR7-NEXT: lxvd2x 34, 0, 3 26660; PWR7-NEXT: blr 26661; 26662; PWR8-LABEL: ugt_56_v2i64: 26663; PWR8: # %bb.0: 26664; PWR8-NEXT: addis 3, 2, .LCPI210_0@toc@ha 26665; PWR8-NEXT: vpopcntd 2, 2 26666; PWR8-NEXT: addi 3, 3, .LCPI210_0@toc@l 26667; PWR8-NEXT: lxvd2x 35, 0, 3 26668; PWR8-NEXT: vcmpgtud 2, 2, 3 26669; PWR8-NEXT: blr 26670; 26671; PWR9-LABEL: ugt_56_v2i64: 26672; PWR9: # %bb.0: 26673; PWR9-NEXT: addis 3, 2, .LCPI210_0@toc@ha 26674; PWR9-NEXT: vpopcntd 2, 2 26675; PWR9-NEXT: addi 3, 3, .LCPI210_0@toc@l 26676; PWR9-NEXT: lxvx 35, 0, 3 26677; PWR9-NEXT: vcmpgtud 2, 2, 3 26678; PWR9-NEXT: blr 26679 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26680 %3 = icmp ugt <2 x i64> %2, <i64 56, i64 56> 26681 %4 = sext <2 x i1> %3 to <2 x i64> 26682 ret <2 x i64> %4 26683} 26684 26685define <2 x i64> @ult_57_v2i64(<2 x i64> %0) { 26686; PWR5-LABEL: ult_57_v2i64: 26687; PWR5: # %bb.0: 26688; PWR5-NEXT: lis 5, 21845 26689; PWR5-NEXT: lis 6, 13107 26690; PWR5-NEXT: ori 5, 5, 21845 26691; PWR5-NEXT: rotldi 8, 4, 63 26692; PWR5-NEXT: rotldi 9, 3, 63 26693; PWR5-NEXT: rldimi 5, 5, 32, 0 26694; PWR5-NEXT: and 8, 8, 5 26695; PWR5-NEXT: and 5, 9, 5 26696; PWR5-NEXT: ori 6, 6, 13107 26697; PWR5-NEXT: sub 3, 3, 5 26698; PWR5-NEXT: rldimi 6, 6, 32, 0 26699; PWR5-NEXT: sub 4, 4, 8 26700; PWR5-NEXT: and 8, 3, 6 26701; PWR5-NEXT: rotldi 3, 3, 62 26702; PWR5-NEXT: and 3, 3, 6 26703; PWR5-NEXT: lis 7, 3855 26704; PWR5-NEXT: and 5, 4, 6 26705; PWR5-NEXT: rotldi 4, 4, 62 26706; PWR5-NEXT: add 3, 8, 3 26707; PWR5-NEXT: lis 9, 257 26708; PWR5-NEXT: ori 7, 7, 3855 26709; PWR5-NEXT: and 4, 4, 6 26710; PWR5-NEXT: rldicl 6, 3, 60, 4 26711; PWR5-NEXT: ori 9, 9, 257 26712; PWR5-NEXT: rldimi 7, 7, 32, 0 26713; PWR5-NEXT: add 4, 5, 4 26714; PWR5-NEXT: add 3, 3, 6 26715; PWR5-NEXT: rldimi 9, 9, 32, 0 26716; PWR5-NEXT: rldicl 5, 4, 60, 4 26717; PWR5-NEXT: and 3, 3, 7 26718; PWR5-NEXT: add 4, 4, 5 26719; PWR5-NEXT: mulld 3, 3, 9 26720; PWR5-NEXT: and 4, 4, 7 26721; PWR5-NEXT: rldicl 3, 3, 8, 56 26722; PWR5-NEXT: li 5, 57 26723; PWR5-NEXT: mulld 4, 4, 9 26724; PWR5-NEXT: subc 6, 3, 5 26725; PWR5-NEXT: rldicl 4, 4, 8, 56 26726; PWR5-NEXT: subfe 3, 3, 3 26727; PWR5-NEXT: subc 5, 4, 5 26728; PWR5-NEXT: subfe 4, 4, 4 26729; PWR5-NEXT: blr 26730; 26731; PWR6-LABEL: ult_57_v2i64: 26732; PWR6: # %bb.0: 26733; PWR6-NEXT: lis 5, 21845 26734; PWR6-NEXT: lis 6, 13107 26735; PWR6-NEXT: ori 5, 5, 21845 26736; PWR6-NEXT: rotldi 8, 4, 63 26737; PWR6-NEXT: rotldi 9, 3, 63 26738; PWR6-NEXT: rldimi 5, 5, 32, 0 26739; PWR6-NEXT: and 8, 8, 5 26740; PWR6-NEXT: and 5, 9, 5 26741; PWR6-NEXT: ori 6, 6, 13107 26742; PWR6-NEXT: sub 3, 3, 5 26743; PWR6-NEXT: rldimi 6, 6, 32, 0 26744; PWR6-NEXT: sub 4, 4, 8 26745; PWR6-NEXT: and 8, 3, 6 26746; PWR6-NEXT: rotldi 3, 3, 62 26747; PWR6-NEXT: and 3, 3, 6 26748; PWR6-NEXT: lis 7, 3855 26749; PWR6-NEXT: and 5, 4, 6 26750; PWR6-NEXT: rotldi 4, 4, 62 26751; PWR6-NEXT: add 3, 8, 3 26752; PWR6-NEXT: lis 9, 257 26753; PWR6-NEXT: ori 7, 7, 3855 26754; PWR6-NEXT: and 4, 4, 6 26755; PWR6-NEXT: rldicl 6, 3, 60, 4 26756; PWR6-NEXT: ori 9, 9, 257 26757; PWR6-NEXT: rldimi 7, 7, 32, 0 26758; PWR6-NEXT: add 4, 5, 4 26759; PWR6-NEXT: add 3, 3, 6 26760; PWR6-NEXT: rldimi 9, 9, 32, 0 26761; PWR6-NEXT: rldicl 5, 4, 60, 4 26762; PWR6-NEXT: and 3, 3, 7 26763; PWR6-NEXT: add 4, 4, 5 26764; PWR6-NEXT: mulld 3, 3, 9 26765; PWR6-NEXT: and 4, 4, 7 26766; PWR6-NEXT: rldicl 3, 3, 8, 56 26767; PWR6-NEXT: li 5, 57 26768; PWR6-NEXT: mulld 4, 4, 9 26769; PWR6-NEXT: subc 6, 3, 5 26770; PWR6-NEXT: rldicl 4, 4, 8, 56 26771; PWR6-NEXT: subfe 3, 3, 3 26772; PWR6-NEXT: subc 5, 4, 5 26773; PWR6-NEXT: subfe 4, 4, 4 26774; PWR6-NEXT: blr 26775; 26776; PWR7-LABEL: ult_57_v2i64: 26777; PWR7: # %bb.0: 26778; PWR7-NEXT: addi 3, 1, -32 26779; PWR7-NEXT: li 5, 0 26780; PWR7-NEXT: li 6, -1 26781; PWR7-NEXT: stxvd2x 34, 0, 3 26782; PWR7-NEXT: ld 3, -24(1) 26783; PWR7-NEXT: ld 4, -32(1) 26784; PWR7-NEXT: popcntd 3, 3 26785; PWR7-NEXT: popcntd 4, 4 26786; PWR7-NEXT: cmpldi 3, 57 26787; PWR7-NEXT: isellt 3, 6, 5 26788; PWR7-NEXT: cmpldi 4, 57 26789; PWR7-NEXT: isellt 4, 6, 5 26790; PWR7-NEXT: std 3, -8(1) 26791; PWR7-NEXT: addi 3, 1, -16 26792; PWR7-NEXT: std 4, -16(1) 26793; PWR7-NEXT: lxvd2x 34, 0, 3 26794; PWR7-NEXT: blr 26795; 26796; PWR8-LABEL: ult_57_v2i64: 26797; PWR8: # %bb.0: 26798; PWR8-NEXT: addis 3, 2, .LCPI211_0@toc@ha 26799; PWR8-NEXT: vpopcntd 2, 2 26800; PWR8-NEXT: addi 3, 3, .LCPI211_0@toc@l 26801; PWR8-NEXT: lxvd2x 35, 0, 3 26802; PWR8-NEXT: vcmpgtud 2, 3, 2 26803; PWR8-NEXT: blr 26804; 26805; PWR9-LABEL: ult_57_v2i64: 26806; PWR9: # %bb.0: 26807; PWR9-NEXT: addis 3, 2, .LCPI211_0@toc@ha 26808; PWR9-NEXT: vpopcntd 2, 2 26809; PWR9-NEXT: addi 3, 3, .LCPI211_0@toc@l 26810; PWR9-NEXT: lxvx 35, 0, 3 26811; PWR9-NEXT: vcmpgtud 2, 3, 2 26812; PWR9-NEXT: blr 26813 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26814 %3 = icmp ult <2 x i64> %2, <i64 57, i64 57> 26815 %4 = sext <2 x i1> %3 to <2 x i64> 26816 ret <2 x i64> %4 26817} 26818 26819define <2 x i64> @ugt_57_v2i64(<2 x i64> %0) { 26820; PWR5-LABEL: ugt_57_v2i64: 26821; PWR5: # %bb.0: 26822; PWR5-NEXT: lis 5, 21845 26823; PWR5-NEXT: lis 6, 13107 26824; PWR5-NEXT: ori 5, 5, 21845 26825; PWR5-NEXT: rotldi 8, 4, 63 26826; PWR5-NEXT: rotldi 9, 3, 63 26827; PWR5-NEXT: rldimi 5, 5, 32, 0 26828; PWR5-NEXT: and 8, 8, 5 26829; PWR5-NEXT: and 5, 9, 5 26830; PWR5-NEXT: ori 6, 6, 13107 26831; PWR5-NEXT: sub 3, 3, 5 26832; PWR5-NEXT: rldimi 6, 6, 32, 0 26833; PWR5-NEXT: sub 4, 4, 8 26834; PWR5-NEXT: and 8, 3, 6 26835; PWR5-NEXT: rotldi 3, 3, 62 26836; PWR5-NEXT: and 3, 3, 6 26837; PWR5-NEXT: lis 7, 3855 26838; PWR5-NEXT: and 5, 4, 6 26839; PWR5-NEXT: rotldi 4, 4, 62 26840; PWR5-NEXT: add 3, 8, 3 26841; PWR5-NEXT: lis 9, 257 26842; PWR5-NEXT: ori 7, 7, 3855 26843; PWR5-NEXT: and 4, 4, 6 26844; PWR5-NEXT: rldicl 6, 3, 60, 4 26845; PWR5-NEXT: ori 9, 9, 257 26846; PWR5-NEXT: rldimi 7, 7, 32, 0 26847; PWR5-NEXT: add 4, 5, 4 26848; PWR5-NEXT: add 3, 3, 6 26849; PWR5-NEXT: rldimi 9, 9, 32, 0 26850; PWR5-NEXT: rldicl 5, 4, 60, 4 26851; PWR5-NEXT: and 3, 3, 7 26852; PWR5-NEXT: add 4, 4, 5 26853; PWR5-NEXT: mulld 3, 3, 9 26854; PWR5-NEXT: and 4, 4, 7 26855; PWR5-NEXT: rldicl 3, 3, 8, 56 26856; PWR5-NEXT: mulld 4, 4, 9 26857; PWR5-NEXT: li 5, 57 26858; PWR5-NEXT: subfic 3, 3, 57 26859; PWR5-NEXT: rldicl 4, 4, 8, 56 26860; PWR5-NEXT: subfe 3, 5, 5 26861; PWR5-NEXT: subfic 4, 4, 57 26862; PWR5-NEXT: subfe 4, 5, 5 26863; PWR5-NEXT: blr 26864; 26865; PWR6-LABEL: ugt_57_v2i64: 26866; PWR6: # %bb.0: 26867; PWR6-NEXT: lis 5, 21845 26868; PWR6-NEXT: lis 6, 13107 26869; PWR6-NEXT: ori 5, 5, 21845 26870; PWR6-NEXT: rotldi 8, 4, 63 26871; PWR6-NEXT: rotldi 9, 3, 63 26872; PWR6-NEXT: rldimi 5, 5, 32, 0 26873; PWR6-NEXT: and 8, 8, 5 26874; PWR6-NEXT: and 5, 9, 5 26875; PWR6-NEXT: ori 6, 6, 13107 26876; PWR6-NEXT: sub 3, 3, 5 26877; PWR6-NEXT: rldimi 6, 6, 32, 0 26878; PWR6-NEXT: sub 4, 4, 8 26879; PWR6-NEXT: and 8, 3, 6 26880; PWR6-NEXT: rotldi 3, 3, 62 26881; PWR6-NEXT: and 3, 3, 6 26882; PWR6-NEXT: lis 7, 3855 26883; PWR6-NEXT: and 5, 4, 6 26884; PWR6-NEXT: rotldi 4, 4, 62 26885; PWR6-NEXT: add 3, 8, 3 26886; PWR6-NEXT: lis 9, 257 26887; PWR6-NEXT: ori 7, 7, 3855 26888; PWR6-NEXT: and 4, 4, 6 26889; PWR6-NEXT: rldicl 6, 3, 60, 4 26890; PWR6-NEXT: ori 9, 9, 257 26891; PWR6-NEXT: rldimi 7, 7, 32, 0 26892; PWR6-NEXT: add 4, 5, 4 26893; PWR6-NEXT: add 3, 3, 6 26894; PWR6-NEXT: rldimi 9, 9, 32, 0 26895; PWR6-NEXT: rldicl 5, 4, 60, 4 26896; PWR6-NEXT: and 3, 3, 7 26897; PWR6-NEXT: add 4, 4, 5 26898; PWR6-NEXT: mulld 3, 3, 9 26899; PWR6-NEXT: and 4, 4, 7 26900; PWR6-NEXT: rldicl 3, 3, 8, 56 26901; PWR6-NEXT: mulld 4, 4, 9 26902; PWR6-NEXT: li 5, 57 26903; PWR6-NEXT: subfic 3, 3, 57 26904; PWR6-NEXT: rldicl 4, 4, 8, 56 26905; PWR6-NEXT: subfe 3, 5, 5 26906; PWR6-NEXT: subfic 4, 4, 57 26907; PWR6-NEXT: subfe 4, 5, 5 26908; PWR6-NEXT: blr 26909; 26910; PWR7-LABEL: ugt_57_v2i64: 26911; PWR7: # %bb.0: 26912; PWR7-NEXT: addi 3, 1, -32 26913; PWR7-NEXT: li 5, 0 26914; PWR7-NEXT: li 6, -1 26915; PWR7-NEXT: stxvd2x 34, 0, 3 26916; PWR7-NEXT: ld 3, -24(1) 26917; PWR7-NEXT: ld 4, -32(1) 26918; PWR7-NEXT: popcntd 3, 3 26919; PWR7-NEXT: popcntd 4, 4 26920; PWR7-NEXT: cmpldi 3, 57 26921; PWR7-NEXT: iselgt 3, 6, 5 26922; PWR7-NEXT: cmpldi 4, 57 26923; PWR7-NEXT: iselgt 4, 6, 5 26924; PWR7-NEXT: std 3, -8(1) 26925; PWR7-NEXT: addi 3, 1, -16 26926; PWR7-NEXT: std 4, -16(1) 26927; PWR7-NEXT: lxvd2x 34, 0, 3 26928; PWR7-NEXT: blr 26929; 26930; PWR8-LABEL: ugt_57_v2i64: 26931; PWR8: # %bb.0: 26932; PWR8-NEXT: addis 3, 2, .LCPI212_0@toc@ha 26933; PWR8-NEXT: vpopcntd 2, 2 26934; PWR8-NEXT: addi 3, 3, .LCPI212_0@toc@l 26935; PWR8-NEXT: lxvd2x 35, 0, 3 26936; PWR8-NEXT: vcmpgtud 2, 2, 3 26937; PWR8-NEXT: blr 26938; 26939; PWR9-LABEL: ugt_57_v2i64: 26940; PWR9: # %bb.0: 26941; PWR9-NEXT: addis 3, 2, .LCPI212_0@toc@ha 26942; PWR9-NEXT: vpopcntd 2, 2 26943; PWR9-NEXT: addi 3, 3, .LCPI212_0@toc@l 26944; PWR9-NEXT: lxvx 35, 0, 3 26945; PWR9-NEXT: vcmpgtud 2, 2, 3 26946; PWR9-NEXT: blr 26947 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26948 %3 = icmp ugt <2 x i64> %2, <i64 57, i64 57> 26949 %4 = sext <2 x i1> %3 to <2 x i64> 26950 ret <2 x i64> %4 26951} 26952 26953define <2 x i64> @ult_58_v2i64(<2 x i64> %0) { 26954; PWR5-LABEL: ult_58_v2i64: 26955; PWR5: # %bb.0: 26956; PWR5-NEXT: lis 5, 21845 26957; PWR5-NEXT: lis 6, 13107 26958; PWR5-NEXT: ori 5, 5, 21845 26959; PWR5-NEXT: rotldi 8, 4, 63 26960; PWR5-NEXT: rotldi 9, 3, 63 26961; PWR5-NEXT: rldimi 5, 5, 32, 0 26962; PWR5-NEXT: and 8, 8, 5 26963; PWR5-NEXT: and 5, 9, 5 26964; PWR5-NEXT: ori 6, 6, 13107 26965; PWR5-NEXT: sub 3, 3, 5 26966; PWR5-NEXT: rldimi 6, 6, 32, 0 26967; PWR5-NEXT: sub 4, 4, 8 26968; PWR5-NEXT: and 8, 3, 6 26969; PWR5-NEXT: rotldi 3, 3, 62 26970; PWR5-NEXT: and 3, 3, 6 26971; PWR5-NEXT: lis 7, 3855 26972; PWR5-NEXT: and 5, 4, 6 26973; PWR5-NEXT: rotldi 4, 4, 62 26974; PWR5-NEXT: add 3, 8, 3 26975; PWR5-NEXT: lis 9, 257 26976; PWR5-NEXT: ori 7, 7, 3855 26977; PWR5-NEXT: and 4, 4, 6 26978; PWR5-NEXT: rldicl 6, 3, 60, 4 26979; PWR5-NEXT: ori 9, 9, 257 26980; PWR5-NEXT: rldimi 7, 7, 32, 0 26981; PWR5-NEXT: add 4, 5, 4 26982; PWR5-NEXT: add 3, 3, 6 26983; PWR5-NEXT: rldimi 9, 9, 32, 0 26984; PWR5-NEXT: rldicl 5, 4, 60, 4 26985; PWR5-NEXT: and 3, 3, 7 26986; PWR5-NEXT: add 4, 4, 5 26987; PWR5-NEXT: mulld 3, 3, 9 26988; PWR5-NEXT: and 4, 4, 7 26989; PWR5-NEXT: rldicl 3, 3, 8, 56 26990; PWR5-NEXT: li 5, 58 26991; PWR5-NEXT: mulld 4, 4, 9 26992; PWR5-NEXT: subc 6, 3, 5 26993; PWR5-NEXT: rldicl 4, 4, 8, 56 26994; PWR5-NEXT: subfe 3, 3, 3 26995; PWR5-NEXT: subc 5, 4, 5 26996; PWR5-NEXT: subfe 4, 4, 4 26997; PWR5-NEXT: blr 26998; 26999; PWR6-LABEL: ult_58_v2i64: 27000; PWR6: # %bb.0: 27001; PWR6-NEXT: lis 5, 21845 27002; PWR6-NEXT: lis 6, 13107 27003; PWR6-NEXT: ori 5, 5, 21845 27004; PWR6-NEXT: rotldi 8, 4, 63 27005; PWR6-NEXT: rotldi 9, 3, 63 27006; PWR6-NEXT: rldimi 5, 5, 32, 0 27007; PWR6-NEXT: and 8, 8, 5 27008; PWR6-NEXT: and 5, 9, 5 27009; PWR6-NEXT: ori 6, 6, 13107 27010; PWR6-NEXT: sub 3, 3, 5 27011; PWR6-NEXT: rldimi 6, 6, 32, 0 27012; PWR6-NEXT: sub 4, 4, 8 27013; PWR6-NEXT: and 8, 3, 6 27014; PWR6-NEXT: rotldi 3, 3, 62 27015; PWR6-NEXT: and 3, 3, 6 27016; PWR6-NEXT: lis 7, 3855 27017; PWR6-NEXT: and 5, 4, 6 27018; PWR6-NEXT: rotldi 4, 4, 62 27019; PWR6-NEXT: add 3, 8, 3 27020; PWR6-NEXT: lis 9, 257 27021; PWR6-NEXT: ori 7, 7, 3855 27022; PWR6-NEXT: and 4, 4, 6 27023; PWR6-NEXT: rldicl 6, 3, 60, 4 27024; PWR6-NEXT: ori 9, 9, 257 27025; PWR6-NEXT: rldimi 7, 7, 32, 0 27026; PWR6-NEXT: add 4, 5, 4 27027; PWR6-NEXT: add 3, 3, 6 27028; PWR6-NEXT: rldimi 9, 9, 32, 0 27029; PWR6-NEXT: rldicl 5, 4, 60, 4 27030; PWR6-NEXT: and 3, 3, 7 27031; PWR6-NEXT: add 4, 4, 5 27032; PWR6-NEXT: mulld 3, 3, 9 27033; PWR6-NEXT: and 4, 4, 7 27034; PWR6-NEXT: rldicl 3, 3, 8, 56 27035; PWR6-NEXT: li 5, 58 27036; PWR6-NEXT: mulld 4, 4, 9 27037; PWR6-NEXT: subc 6, 3, 5 27038; PWR6-NEXT: rldicl 4, 4, 8, 56 27039; PWR6-NEXT: subfe 3, 3, 3 27040; PWR6-NEXT: subc 5, 4, 5 27041; PWR6-NEXT: subfe 4, 4, 4 27042; PWR6-NEXT: blr 27043; 27044; PWR7-LABEL: ult_58_v2i64: 27045; PWR7: # %bb.0: 27046; PWR7-NEXT: addi 3, 1, -32 27047; PWR7-NEXT: li 5, 0 27048; PWR7-NEXT: li 6, -1 27049; PWR7-NEXT: stxvd2x 34, 0, 3 27050; PWR7-NEXT: ld 3, -24(1) 27051; PWR7-NEXT: ld 4, -32(1) 27052; PWR7-NEXT: popcntd 3, 3 27053; PWR7-NEXT: popcntd 4, 4 27054; PWR7-NEXT: cmpldi 3, 58 27055; PWR7-NEXT: isellt 3, 6, 5 27056; PWR7-NEXT: cmpldi 4, 58 27057; PWR7-NEXT: isellt 4, 6, 5 27058; PWR7-NEXT: std 3, -8(1) 27059; PWR7-NEXT: addi 3, 1, -16 27060; PWR7-NEXT: std 4, -16(1) 27061; PWR7-NEXT: lxvd2x 34, 0, 3 27062; PWR7-NEXT: blr 27063; 27064; PWR8-LABEL: ult_58_v2i64: 27065; PWR8: # %bb.0: 27066; PWR8-NEXT: addis 3, 2, .LCPI213_0@toc@ha 27067; PWR8-NEXT: vpopcntd 2, 2 27068; PWR8-NEXT: addi 3, 3, .LCPI213_0@toc@l 27069; PWR8-NEXT: lxvd2x 35, 0, 3 27070; PWR8-NEXT: vcmpgtud 2, 3, 2 27071; PWR8-NEXT: blr 27072; 27073; PWR9-LABEL: ult_58_v2i64: 27074; PWR9: # %bb.0: 27075; PWR9-NEXT: addis 3, 2, .LCPI213_0@toc@ha 27076; PWR9-NEXT: vpopcntd 2, 2 27077; PWR9-NEXT: addi 3, 3, .LCPI213_0@toc@l 27078; PWR9-NEXT: lxvx 35, 0, 3 27079; PWR9-NEXT: vcmpgtud 2, 3, 2 27080; PWR9-NEXT: blr 27081 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27082 %3 = icmp ult <2 x i64> %2, <i64 58, i64 58> 27083 %4 = sext <2 x i1> %3 to <2 x i64> 27084 ret <2 x i64> %4 27085} 27086 27087define <2 x i64> @ugt_58_v2i64(<2 x i64> %0) { 27088; PWR5-LABEL: ugt_58_v2i64: 27089; PWR5: # %bb.0: 27090; PWR5-NEXT: lis 5, 21845 27091; PWR5-NEXT: lis 6, 13107 27092; PWR5-NEXT: ori 5, 5, 21845 27093; PWR5-NEXT: rotldi 8, 4, 63 27094; PWR5-NEXT: rotldi 9, 3, 63 27095; PWR5-NEXT: rldimi 5, 5, 32, 0 27096; PWR5-NEXT: and 8, 8, 5 27097; PWR5-NEXT: and 5, 9, 5 27098; PWR5-NEXT: ori 6, 6, 13107 27099; PWR5-NEXT: sub 3, 3, 5 27100; PWR5-NEXT: rldimi 6, 6, 32, 0 27101; PWR5-NEXT: sub 4, 4, 8 27102; PWR5-NEXT: and 8, 3, 6 27103; PWR5-NEXT: rotldi 3, 3, 62 27104; PWR5-NEXT: and 3, 3, 6 27105; PWR5-NEXT: lis 7, 3855 27106; PWR5-NEXT: and 5, 4, 6 27107; PWR5-NEXT: rotldi 4, 4, 62 27108; PWR5-NEXT: add 3, 8, 3 27109; PWR5-NEXT: lis 9, 257 27110; PWR5-NEXT: ori 7, 7, 3855 27111; PWR5-NEXT: and 4, 4, 6 27112; PWR5-NEXT: rldicl 6, 3, 60, 4 27113; PWR5-NEXT: ori 9, 9, 257 27114; PWR5-NEXT: rldimi 7, 7, 32, 0 27115; PWR5-NEXT: add 4, 5, 4 27116; PWR5-NEXT: add 3, 3, 6 27117; PWR5-NEXT: rldimi 9, 9, 32, 0 27118; PWR5-NEXT: rldicl 5, 4, 60, 4 27119; PWR5-NEXT: and 3, 3, 7 27120; PWR5-NEXT: add 4, 4, 5 27121; PWR5-NEXT: mulld 3, 3, 9 27122; PWR5-NEXT: and 4, 4, 7 27123; PWR5-NEXT: rldicl 3, 3, 8, 56 27124; PWR5-NEXT: mulld 4, 4, 9 27125; PWR5-NEXT: li 5, 58 27126; PWR5-NEXT: subfic 3, 3, 58 27127; PWR5-NEXT: rldicl 4, 4, 8, 56 27128; PWR5-NEXT: subfe 3, 5, 5 27129; PWR5-NEXT: subfic 4, 4, 58 27130; PWR5-NEXT: subfe 4, 5, 5 27131; PWR5-NEXT: blr 27132; 27133; PWR6-LABEL: ugt_58_v2i64: 27134; PWR6: # %bb.0: 27135; PWR6-NEXT: lis 5, 21845 27136; PWR6-NEXT: lis 6, 13107 27137; PWR6-NEXT: ori 5, 5, 21845 27138; PWR6-NEXT: rotldi 8, 4, 63 27139; PWR6-NEXT: rotldi 9, 3, 63 27140; PWR6-NEXT: rldimi 5, 5, 32, 0 27141; PWR6-NEXT: and 8, 8, 5 27142; PWR6-NEXT: and 5, 9, 5 27143; PWR6-NEXT: ori 6, 6, 13107 27144; PWR6-NEXT: sub 3, 3, 5 27145; PWR6-NEXT: rldimi 6, 6, 32, 0 27146; PWR6-NEXT: sub 4, 4, 8 27147; PWR6-NEXT: and 8, 3, 6 27148; PWR6-NEXT: rotldi 3, 3, 62 27149; PWR6-NEXT: and 3, 3, 6 27150; PWR6-NEXT: lis 7, 3855 27151; PWR6-NEXT: and 5, 4, 6 27152; PWR6-NEXT: rotldi 4, 4, 62 27153; PWR6-NEXT: add 3, 8, 3 27154; PWR6-NEXT: lis 9, 257 27155; PWR6-NEXT: ori 7, 7, 3855 27156; PWR6-NEXT: and 4, 4, 6 27157; PWR6-NEXT: rldicl 6, 3, 60, 4 27158; PWR6-NEXT: ori 9, 9, 257 27159; PWR6-NEXT: rldimi 7, 7, 32, 0 27160; PWR6-NEXT: add 4, 5, 4 27161; PWR6-NEXT: add 3, 3, 6 27162; PWR6-NEXT: rldimi 9, 9, 32, 0 27163; PWR6-NEXT: rldicl 5, 4, 60, 4 27164; PWR6-NEXT: and 3, 3, 7 27165; PWR6-NEXT: add 4, 4, 5 27166; PWR6-NEXT: mulld 3, 3, 9 27167; PWR6-NEXT: and 4, 4, 7 27168; PWR6-NEXT: rldicl 3, 3, 8, 56 27169; PWR6-NEXT: mulld 4, 4, 9 27170; PWR6-NEXT: li 5, 58 27171; PWR6-NEXT: subfic 3, 3, 58 27172; PWR6-NEXT: rldicl 4, 4, 8, 56 27173; PWR6-NEXT: subfe 3, 5, 5 27174; PWR6-NEXT: subfic 4, 4, 58 27175; PWR6-NEXT: subfe 4, 5, 5 27176; PWR6-NEXT: blr 27177; 27178; PWR7-LABEL: ugt_58_v2i64: 27179; PWR7: # %bb.0: 27180; PWR7-NEXT: addi 3, 1, -32 27181; PWR7-NEXT: li 5, 0 27182; PWR7-NEXT: li 6, -1 27183; PWR7-NEXT: stxvd2x 34, 0, 3 27184; PWR7-NEXT: ld 3, -24(1) 27185; PWR7-NEXT: ld 4, -32(1) 27186; PWR7-NEXT: popcntd 3, 3 27187; PWR7-NEXT: popcntd 4, 4 27188; PWR7-NEXT: cmpldi 3, 58 27189; PWR7-NEXT: iselgt 3, 6, 5 27190; PWR7-NEXT: cmpldi 4, 58 27191; PWR7-NEXT: iselgt 4, 6, 5 27192; PWR7-NEXT: std 3, -8(1) 27193; PWR7-NEXT: addi 3, 1, -16 27194; PWR7-NEXT: std 4, -16(1) 27195; PWR7-NEXT: lxvd2x 34, 0, 3 27196; PWR7-NEXT: blr 27197; 27198; PWR8-LABEL: ugt_58_v2i64: 27199; PWR8: # %bb.0: 27200; PWR8-NEXT: addis 3, 2, .LCPI214_0@toc@ha 27201; PWR8-NEXT: vpopcntd 2, 2 27202; PWR8-NEXT: addi 3, 3, .LCPI214_0@toc@l 27203; PWR8-NEXT: lxvd2x 35, 0, 3 27204; PWR8-NEXT: vcmpgtud 2, 2, 3 27205; PWR8-NEXT: blr 27206; 27207; PWR9-LABEL: ugt_58_v2i64: 27208; PWR9: # %bb.0: 27209; PWR9-NEXT: addis 3, 2, .LCPI214_0@toc@ha 27210; PWR9-NEXT: vpopcntd 2, 2 27211; PWR9-NEXT: addi 3, 3, .LCPI214_0@toc@l 27212; PWR9-NEXT: lxvx 35, 0, 3 27213; PWR9-NEXT: vcmpgtud 2, 2, 3 27214; PWR9-NEXT: blr 27215 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27216 %3 = icmp ugt <2 x i64> %2, <i64 58, i64 58> 27217 %4 = sext <2 x i1> %3 to <2 x i64> 27218 ret <2 x i64> %4 27219} 27220 27221define <2 x i64> @ult_59_v2i64(<2 x i64> %0) { 27222; PWR5-LABEL: ult_59_v2i64: 27223; PWR5: # %bb.0: 27224; PWR5-NEXT: lis 5, 21845 27225; PWR5-NEXT: lis 6, 13107 27226; PWR5-NEXT: ori 5, 5, 21845 27227; PWR5-NEXT: rotldi 8, 4, 63 27228; PWR5-NEXT: rotldi 9, 3, 63 27229; PWR5-NEXT: rldimi 5, 5, 32, 0 27230; PWR5-NEXT: and 8, 8, 5 27231; PWR5-NEXT: and 5, 9, 5 27232; PWR5-NEXT: ori 6, 6, 13107 27233; PWR5-NEXT: sub 3, 3, 5 27234; PWR5-NEXT: rldimi 6, 6, 32, 0 27235; PWR5-NEXT: sub 4, 4, 8 27236; PWR5-NEXT: and 8, 3, 6 27237; PWR5-NEXT: rotldi 3, 3, 62 27238; PWR5-NEXT: and 3, 3, 6 27239; PWR5-NEXT: lis 7, 3855 27240; PWR5-NEXT: and 5, 4, 6 27241; PWR5-NEXT: rotldi 4, 4, 62 27242; PWR5-NEXT: add 3, 8, 3 27243; PWR5-NEXT: lis 9, 257 27244; PWR5-NEXT: ori 7, 7, 3855 27245; PWR5-NEXT: and 4, 4, 6 27246; PWR5-NEXT: rldicl 6, 3, 60, 4 27247; PWR5-NEXT: ori 9, 9, 257 27248; PWR5-NEXT: rldimi 7, 7, 32, 0 27249; PWR5-NEXT: add 4, 5, 4 27250; PWR5-NEXT: add 3, 3, 6 27251; PWR5-NEXT: rldimi 9, 9, 32, 0 27252; PWR5-NEXT: rldicl 5, 4, 60, 4 27253; PWR5-NEXT: and 3, 3, 7 27254; PWR5-NEXT: add 4, 4, 5 27255; PWR5-NEXT: mulld 3, 3, 9 27256; PWR5-NEXT: and 4, 4, 7 27257; PWR5-NEXT: rldicl 3, 3, 8, 56 27258; PWR5-NEXT: li 5, 59 27259; PWR5-NEXT: mulld 4, 4, 9 27260; PWR5-NEXT: subc 6, 3, 5 27261; PWR5-NEXT: rldicl 4, 4, 8, 56 27262; PWR5-NEXT: subfe 3, 3, 3 27263; PWR5-NEXT: subc 5, 4, 5 27264; PWR5-NEXT: subfe 4, 4, 4 27265; PWR5-NEXT: blr 27266; 27267; PWR6-LABEL: ult_59_v2i64: 27268; PWR6: # %bb.0: 27269; PWR6-NEXT: lis 5, 21845 27270; PWR6-NEXT: lis 6, 13107 27271; PWR6-NEXT: ori 5, 5, 21845 27272; PWR6-NEXT: rotldi 8, 4, 63 27273; PWR6-NEXT: rotldi 9, 3, 63 27274; PWR6-NEXT: rldimi 5, 5, 32, 0 27275; PWR6-NEXT: and 8, 8, 5 27276; PWR6-NEXT: and 5, 9, 5 27277; PWR6-NEXT: ori 6, 6, 13107 27278; PWR6-NEXT: sub 3, 3, 5 27279; PWR6-NEXT: rldimi 6, 6, 32, 0 27280; PWR6-NEXT: sub 4, 4, 8 27281; PWR6-NEXT: and 8, 3, 6 27282; PWR6-NEXT: rotldi 3, 3, 62 27283; PWR6-NEXT: and 3, 3, 6 27284; PWR6-NEXT: lis 7, 3855 27285; PWR6-NEXT: and 5, 4, 6 27286; PWR6-NEXT: rotldi 4, 4, 62 27287; PWR6-NEXT: add 3, 8, 3 27288; PWR6-NEXT: lis 9, 257 27289; PWR6-NEXT: ori 7, 7, 3855 27290; PWR6-NEXT: and 4, 4, 6 27291; PWR6-NEXT: rldicl 6, 3, 60, 4 27292; PWR6-NEXT: ori 9, 9, 257 27293; PWR6-NEXT: rldimi 7, 7, 32, 0 27294; PWR6-NEXT: add 4, 5, 4 27295; PWR6-NEXT: add 3, 3, 6 27296; PWR6-NEXT: rldimi 9, 9, 32, 0 27297; PWR6-NEXT: rldicl 5, 4, 60, 4 27298; PWR6-NEXT: and 3, 3, 7 27299; PWR6-NEXT: add 4, 4, 5 27300; PWR6-NEXT: mulld 3, 3, 9 27301; PWR6-NEXT: and 4, 4, 7 27302; PWR6-NEXT: rldicl 3, 3, 8, 56 27303; PWR6-NEXT: li 5, 59 27304; PWR6-NEXT: mulld 4, 4, 9 27305; PWR6-NEXT: subc 6, 3, 5 27306; PWR6-NEXT: rldicl 4, 4, 8, 56 27307; PWR6-NEXT: subfe 3, 3, 3 27308; PWR6-NEXT: subc 5, 4, 5 27309; PWR6-NEXT: subfe 4, 4, 4 27310; PWR6-NEXT: blr 27311; 27312; PWR7-LABEL: ult_59_v2i64: 27313; PWR7: # %bb.0: 27314; PWR7-NEXT: addi 3, 1, -32 27315; PWR7-NEXT: li 5, 0 27316; PWR7-NEXT: li 6, -1 27317; PWR7-NEXT: stxvd2x 34, 0, 3 27318; PWR7-NEXT: ld 3, -24(1) 27319; PWR7-NEXT: ld 4, -32(1) 27320; PWR7-NEXT: popcntd 3, 3 27321; PWR7-NEXT: popcntd 4, 4 27322; PWR7-NEXT: cmpldi 3, 59 27323; PWR7-NEXT: isellt 3, 6, 5 27324; PWR7-NEXT: cmpldi 4, 59 27325; PWR7-NEXT: isellt 4, 6, 5 27326; PWR7-NEXT: std 3, -8(1) 27327; PWR7-NEXT: addi 3, 1, -16 27328; PWR7-NEXT: std 4, -16(1) 27329; PWR7-NEXT: lxvd2x 34, 0, 3 27330; PWR7-NEXT: blr 27331; 27332; PWR8-LABEL: ult_59_v2i64: 27333; PWR8: # %bb.0: 27334; PWR8-NEXT: addis 3, 2, .LCPI215_0@toc@ha 27335; PWR8-NEXT: vpopcntd 2, 2 27336; PWR8-NEXT: addi 3, 3, .LCPI215_0@toc@l 27337; PWR8-NEXT: lxvd2x 35, 0, 3 27338; PWR8-NEXT: vcmpgtud 2, 3, 2 27339; PWR8-NEXT: blr 27340; 27341; PWR9-LABEL: ult_59_v2i64: 27342; PWR9: # %bb.0: 27343; PWR9-NEXT: addis 3, 2, .LCPI215_0@toc@ha 27344; PWR9-NEXT: vpopcntd 2, 2 27345; PWR9-NEXT: addi 3, 3, .LCPI215_0@toc@l 27346; PWR9-NEXT: lxvx 35, 0, 3 27347; PWR9-NEXT: vcmpgtud 2, 3, 2 27348; PWR9-NEXT: blr 27349 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27350 %3 = icmp ult <2 x i64> %2, <i64 59, i64 59> 27351 %4 = sext <2 x i1> %3 to <2 x i64> 27352 ret <2 x i64> %4 27353} 27354 27355define <2 x i64> @ugt_59_v2i64(<2 x i64> %0) { 27356; PWR5-LABEL: ugt_59_v2i64: 27357; PWR5: # %bb.0: 27358; PWR5-NEXT: lis 5, 21845 27359; PWR5-NEXT: lis 6, 13107 27360; PWR5-NEXT: ori 5, 5, 21845 27361; PWR5-NEXT: rotldi 8, 4, 63 27362; PWR5-NEXT: rotldi 9, 3, 63 27363; PWR5-NEXT: rldimi 5, 5, 32, 0 27364; PWR5-NEXT: and 8, 8, 5 27365; PWR5-NEXT: and 5, 9, 5 27366; PWR5-NEXT: ori 6, 6, 13107 27367; PWR5-NEXT: sub 3, 3, 5 27368; PWR5-NEXT: rldimi 6, 6, 32, 0 27369; PWR5-NEXT: sub 4, 4, 8 27370; PWR5-NEXT: and 8, 3, 6 27371; PWR5-NEXT: rotldi 3, 3, 62 27372; PWR5-NEXT: and 3, 3, 6 27373; PWR5-NEXT: lis 7, 3855 27374; PWR5-NEXT: and 5, 4, 6 27375; PWR5-NEXT: rotldi 4, 4, 62 27376; PWR5-NEXT: add 3, 8, 3 27377; PWR5-NEXT: lis 9, 257 27378; PWR5-NEXT: ori 7, 7, 3855 27379; PWR5-NEXT: and 4, 4, 6 27380; PWR5-NEXT: rldicl 6, 3, 60, 4 27381; PWR5-NEXT: ori 9, 9, 257 27382; PWR5-NEXT: rldimi 7, 7, 32, 0 27383; PWR5-NEXT: add 4, 5, 4 27384; PWR5-NEXT: add 3, 3, 6 27385; PWR5-NEXT: rldimi 9, 9, 32, 0 27386; PWR5-NEXT: rldicl 5, 4, 60, 4 27387; PWR5-NEXT: and 3, 3, 7 27388; PWR5-NEXT: add 4, 4, 5 27389; PWR5-NEXT: mulld 3, 3, 9 27390; PWR5-NEXT: and 4, 4, 7 27391; PWR5-NEXT: rldicl 3, 3, 8, 56 27392; PWR5-NEXT: mulld 4, 4, 9 27393; PWR5-NEXT: li 5, 59 27394; PWR5-NEXT: subfic 3, 3, 59 27395; PWR5-NEXT: rldicl 4, 4, 8, 56 27396; PWR5-NEXT: subfe 3, 5, 5 27397; PWR5-NEXT: subfic 4, 4, 59 27398; PWR5-NEXT: subfe 4, 5, 5 27399; PWR5-NEXT: blr 27400; 27401; PWR6-LABEL: ugt_59_v2i64: 27402; PWR6: # %bb.0: 27403; PWR6-NEXT: lis 5, 21845 27404; PWR6-NEXT: lis 6, 13107 27405; PWR6-NEXT: ori 5, 5, 21845 27406; PWR6-NEXT: rotldi 8, 4, 63 27407; PWR6-NEXT: rotldi 9, 3, 63 27408; PWR6-NEXT: rldimi 5, 5, 32, 0 27409; PWR6-NEXT: and 8, 8, 5 27410; PWR6-NEXT: and 5, 9, 5 27411; PWR6-NEXT: ori 6, 6, 13107 27412; PWR6-NEXT: sub 3, 3, 5 27413; PWR6-NEXT: rldimi 6, 6, 32, 0 27414; PWR6-NEXT: sub 4, 4, 8 27415; PWR6-NEXT: and 8, 3, 6 27416; PWR6-NEXT: rotldi 3, 3, 62 27417; PWR6-NEXT: and 3, 3, 6 27418; PWR6-NEXT: lis 7, 3855 27419; PWR6-NEXT: and 5, 4, 6 27420; PWR6-NEXT: rotldi 4, 4, 62 27421; PWR6-NEXT: add 3, 8, 3 27422; PWR6-NEXT: lis 9, 257 27423; PWR6-NEXT: ori 7, 7, 3855 27424; PWR6-NEXT: and 4, 4, 6 27425; PWR6-NEXT: rldicl 6, 3, 60, 4 27426; PWR6-NEXT: ori 9, 9, 257 27427; PWR6-NEXT: rldimi 7, 7, 32, 0 27428; PWR6-NEXT: add 4, 5, 4 27429; PWR6-NEXT: add 3, 3, 6 27430; PWR6-NEXT: rldimi 9, 9, 32, 0 27431; PWR6-NEXT: rldicl 5, 4, 60, 4 27432; PWR6-NEXT: and 3, 3, 7 27433; PWR6-NEXT: add 4, 4, 5 27434; PWR6-NEXT: mulld 3, 3, 9 27435; PWR6-NEXT: and 4, 4, 7 27436; PWR6-NEXT: rldicl 3, 3, 8, 56 27437; PWR6-NEXT: mulld 4, 4, 9 27438; PWR6-NEXT: li 5, 59 27439; PWR6-NEXT: subfic 3, 3, 59 27440; PWR6-NEXT: rldicl 4, 4, 8, 56 27441; PWR6-NEXT: subfe 3, 5, 5 27442; PWR6-NEXT: subfic 4, 4, 59 27443; PWR6-NEXT: subfe 4, 5, 5 27444; PWR6-NEXT: blr 27445; 27446; PWR7-LABEL: ugt_59_v2i64: 27447; PWR7: # %bb.0: 27448; PWR7-NEXT: addi 3, 1, -32 27449; PWR7-NEXT: li 5, 0 27450; PWR7-NEXT: li 6, -1 27451; PWR7-NEXT: stxvd2x 34, 0, 3 27452; PWR7-NEXT: ld 3, -24(1) 27453; PWR7-NEXT: ld 4, -32(1) 27454; PWR7-NEXT: popcntd 3, 3 27455; PWR7-NEXT: popcntd 4, 4 27456; PWR7-NEXT: cmpldi 3, 59 27457; PWR7-NEXT: iselgt 3, 6, 5 27458; PWR7-NEXT: cmpldi 4, 59 27459; PWR7-NEXT: iselgt 4, 6, 5 27460; PWR7-NEXT: std 3, -8(1) 27461; PWR7-NEXT: addi 3, 1, -16 27462; PWR7-NEXT: std 4, -16(1) 27463; PWR7-NEXT: lxvd2x 34, 0, 3 27464; PWR7-NEXT: blr 27465; 27466; PWR8-LABEL: ugt_59_v2i64: 27467; PWR8: # %bb.0: 27468; PWR8-NEXT: addis 3, 2, .LCPI216_0@toc@ha 27469; PWR8-NEXT: vpopcntd 2, 2 27470; PWR8-NEXT: addi 3, 3, .LCPI216_0@toc@l 27471; PWR8-NEXT: lxvd2x 35, 0, 3 27472; PWR8-NEXT: vcmpgtud 2, 2, 3 27473; PWR8-NEXT: blr 27474; 27475; PWR9-LABEL: ugt_59_v2i64: 27476; PWR9: # %bb.0: 27477; PWR9-NEXT: addis 3, 2, .LCPI216_0@toc@ha 27478; PWR9-NEXT: vpopcntd 2, 2 27479; PWR9-NEXT: addi 3, 3, .LCPI216_0@toc@l 27480; PWR9-NEXT: lxvx 35, 0, 3 27481; PWR9-NEXT: vcmpgtud 2, 2, 3 27482; PWR9-NEXT: blr 27483 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27484 %3 = icmp ugt <2 x i64> %2, <i64 59, i64 59> 27485 %4 = sext <2 x i1> %3 to <2 x i64> 27486 ret <2 x i64> %4 27487} 27488 27489define <2 x i64> @ult_60_v2i64(<2 x i64> %0) { 27490; PWR5-LABEL: ult_60_v2i64: 27491; PWR5: # %bb.0: 27492; PWR5-NEXT: lis 5, 21845 27493; PWR5-NEXT: lis 6, 13107 27494; PWR5-NEXT: ori 5, 5, 21845 27495; PWR5-NEXT: rotldi 8, 4, 63 27496; PWR5-NEXT: rotldi 9, 3, 63 27497; PWR5-NEXT: rldimi 5, 5, 32, 0 27498; PWR5-NEXT: and 8, 8, 5 27499; PWR5-NEXT: and 5, 9, 5 27500; PWR5-NEXT: ori 6, 6, 13107 27501; PWR5-NEXT: sub 3, 3, 5 27502; PWR5-NEXT: rldimi 6, 6, 32, 0 27503; PWR5-NEXT: sub 4, 4, 8 27504; PWR5-NEXT: and 8, 3, 6 27505; PWR5-NEXT: rotldi 3, 3, 62 27506; PWR5-NEXT: and 3, 3, 6 27507; PWR5-NEXT: lis 7, 3855 27508; PWR5-NEXT: and 5, 4, 6 27509; PWR5-NEXT: rotldi 4, 4, 62 27510; PWR5-NEXT: add 3, 8, 3 27511; PWR5-NEXT: lis 9, 257 27512; PWR5-NEXT: ori 7, 7, 3855 27513; PWR5-NEXT: and 4, 4, 6 27514; PWR5-NEXT: rldicl 6, 3, 60, 4 27515; PWR5-NEXT: ori 9, 9, 257 27516; PWR5-NEXT: rldimi 7, 7, 32, 0 27517; PWR5-NEXT: add 4, 5, 4 27518; PWR5-NEXT: add 3, 3, 6 27519; PWR5-NEXT: rldimi 9, 9, 32, 0 27520; PWR5-NEXT: rldicl 5, 4, 60, 4 27521; PWR5-NEXT: and 3, 3, 7 27522; PWR5-NEXT: add 4, 4, 5 27523; PWR5-NEXT: mulld 3, 3, 9 27524; PWR5-NEXT: and 4, 4, 7 27525; PWR5-NEXT: rldicl 3, 3, 8, 56 27526; PWR5-NEXT: li 5, 60 27527; PWR5-NEXT: mulld 4, 4, 9 27528; PWR5-NEXT: subc 6, 3, 5 27529; PWR5-NEXT: rldicl 4, 4, 8, 56 27530; PWR5-NEXT: subfe 3, 3, 3 27531; PWR5-NEXT: subc 5, 4, 5 27532; PWR5-NEXT: subfe 4, 4, 4 27533; PWR5-NEXT: blr 27534; 27535; PWR6-LABEL: ult_60_v2i64: 27536; PWR6: # %bb.0: 27537; PWR6-NEXT: lis 5, 21845 27538; PWR6-NEXT: lis 6, 13107 27539; PWR6-NEXT: ori 5, 5, 21845 27540; PWR6-NEXT: rotldi 8, 4, 63 27541; PWR6-NEXT: rotldi 9, 3, 63 27542; PWR6-NEXT: rldimi 5, 5, 32, 0 27543; PWR6-NEXT: and 8, 8, 5 27544; PWR6-NEXT: and 5, 9, 5 27545; PWR6-NEXT: ori 6, 6, 13107 27546; PWR6-NEXT: sub 3, 3, 5 27547; PWR6-NEXT: rldimi 6, 6, 32, 0 27548; PWR6-NEXT: sub 4, 4, 8 27549; PWR6-NEXT: and 8, 3, 6 27550; PWR6-NEXT: rotldi 3, 3, 62 27551; PWR6-NEXT: and 3, 3, 6 27552; PWR6-NEXT: lis 7, 3855 27553; PWR6-NEXT: and 5, 4, 6 27554; PWR6-NEXT: rotldi 4, 4, 62 27555; PWR6-NEXT: add 3, 8, 3 27556; PWR6-NEXT: lis 9, 257 27557; PWR6-NEXT: ori 7, 7, 3855 27558; PWR6-NEXT: and 4, 4, 6 27559; PWR6-NEXT: rldicl 6, 3, 60, 4 27560; PWR6-NEXT: ori 9, 9, 257 27561; PWR6-NEXT: rldimi 7, 7, 32, 0 27562; PWR6-NEXT: add 4, 5, 4 27563; PWR6-NEXT: add 3, 3, 6 27564; PWR6-NEXT: rldimi 9, 9, 32, 0 27565; PWR6-NEXT: rldicl 5, 4, 60, 4 27566; PWR6-NEXT: and 3, 3, 7 27567; PWR6-NEXT: add 4, 4, 5 27568; PWR6-NEXT: mulld 3, 3, 9 27569; PWR6-NEXT: and 4, 4, 7 27570; PWR6-NEXT: rldicl 3, 3, 8, 56 27571; PWR6-NEXT: li 5, 60 27572; PWR6-NEXT: mulld 4, 4, 9 27573; PWR6-NEXT: subc 6, 3, 5 27574; PWR6-NEXT: rldicl 4, 4, 8, 56 27575; PWR6-NEXT: subfe 3, 3, 3 27576; PWR6-NEXT: subc 5, 4, 5 27577; PWR6-NEXT: subfe 4, 4, 4 27578; PWR6-NEXT: blr 27579; 27580; PWR7-LABEL: ult_60_v2i64: 27581; PWR7: # %bb.0: 27582; PWR7-NEXT: addi 3, 1, -32 27583; PWR7-NEXT: li 5, 0 27584; PWR7-NEXT: li 6, -1 27585; PWR7-NEXT: stxvd2x 34, 0, 3 27586; PWR7-NEXT: ld 3, -24(1) 27587; PWR7-NEXT: ld 4, -32(1) 27588; PWR7-NEXT: popcntd 3, 3 27589; PWR7-NEXT: popcntd 4, 4 27590; PWR7-NEXT: cmpldi 3, 60 27591; PWR7-NEXT: isellt 3, 6, 5 27592; PWR7-NEXT: cmpldi 4, 60 27593; PWR7-NEXT: isellt 4, 6, 5 27594; PWR7-NEXT: std 3, -8(1) 27595; PWR7-NEXT: addi 3, 1, -16 27596; PWR7-NEXT: std 4, -16(1) 27597; PWR7-NEXT: lxvd2x 34, 0, 3 27598; PWR7-NEXT: blr 27599; 27600; PWR8-LABEL: ult_60_v2i64: 27601; PWR8: # %bb.0: 27602; PWR8-NEXT: addis 3, 2, .LCPI217_0@toc@ha 27603; PWR8-NEXT: vpopcntd 2, 2 27604; PWR8-NEXT: addi 3, 3, .LCPI217_0@toc@l 27605; PWR8-NEXT: lxvd2x 35, 0, 3 27606; PWR8-NEXT: vcmpgtud 2, 3, 2 27607; PWR8-NEXT: blr 27608; 27609; PWR9-LABEL: ult_60_v2i64: 27610; PWR9: # %bb.0: 27611; PWR9-NEXT: addis 3, 2, .LCPI217_0@toc@ha 27612; PWR9-NEXT: vpopcntd 2, 2 27613; PWR9-NEXT: addi 3, 3, .LCPI217_0@toc@l 27614; PWR9-NEXT: lxvx 35, 0, 3 27615; PWR9-NEXT: vcmpgtud 2, 3, 2 27616; PWR9-NEXT: blr 27617 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27618 %3 = icmp ult <2 x i64> %2, <i64 60, i64 60> 27619 %4 = sext <2 x i1> %3 to <2 x i64> 27620 ret <2 x i64> %4 27621} 27622 27623define <2 x i64> @ugt_60_v2i64(<2 x i64> %0) { 27624; PWR5-LABEL: ugt_60_v2i64: 27625; PWR5: # %bb.0: 27626; PWR5-NEXT: lis 5, 21845 27627; PWR5-NEXT: lis 6, 13107 27628; PWR5-NEXT: ori 5, 5, 21845 27629; PWR5-NEXT: rotldi 8, 4, 63 27630; PWR5-NEXT: rotldi 9, 3, 63 27631; PWR5-NEXT: rldimi 5, 5, 32, 0 27632; PWR5-NEXT: and 8, 8, 5 27633; PWR5-NEXT: and 5, 9, 5 27634; PWR5-NEXT: ori 6, 6, 13107 27635; PWR5-NEXT: sub 3, 3, 5 27636; PWR5-NEXT: rldimi 6, 6, 32, 0 27637; PWR5-NEXT: sub 4, 4, 8 27638; PWR5-NEXT: and 8, 3, 6 27639; PWR5-NEXT: rotldi 3, 3, 62 27640; PWR5-NEXT: and 3, 3, 6 27641; PWR5-NEXT: lis 7, 3855 27642; PWR5-NEXT: and 5, 4, 6 27643; PWR5-NEXT: rotldi 4, 4, 62 27644; PWR5-NEXT: add 3, 8, 3 27645; PWR5-NEXT: lis 9, 257 27646; PWR5-NEXT: ori 7, 7, 3855 27647; PWR5-NEXT: and 4, 4, 6 27648; PWR5-NEXT: rldicl 6, 3, 60, 4 27649; PWR5-NEXT: ori 9, 9, 257 27650; PWR5-NEXT: rldimi 7, 7, 32, 0 27651; PWR5-NEXT: add 4, 5, 4 27652; PWR5-NEXT: add 3, 3, 6 27653; PWR5-NEXT: rldimi 9, 9, 32, 0 27654; PWR5-NEXT: rldicl 5, 4, 60, 4 27655; PWR5-NEXT: and 3, 3, 7 27656; PWR5-NEXT: add 4, 4, 5 27657; PWR5-NEXT: mulld 3, 3, 9 27658; PWR5-NEXT: and 4, 4, 7 27659; PWR5-NEXT: rldicl 3, 3, 8, 56 27660; PWR5-NEXT: mulld 4, 4, 9 27661; PWR5-NEXT: li 5, 60 27662; PWR5-NEXT: subfic 3, 3, 60 27663; PWR5-NEXT: rldicl 4, 4, 8, 56 27664; PWR5-NEXT: subfe 3, 5, 5 27665; PWR5-NEXT: subfic 4, 4, 60 27666; PWR5-NEXT: subfe 4, 5, 5 27667; PWR5-NEXT: blr 27668; 27669; PWR6-LABEL: ugt_60_v2i64: 27670; PWR6: # %bb.0: 27671; PWR6-NEXT: lis 5, 21845 27672; PWR6-NEXT: lis 6, 13107 27673; PWR6-NEXT: ori 5, 5, 21845 27674; PWR6-NEXT: rotldi 8, 4, 63 27675; PWR6-NEXT: rotldi 9, 3, 63 27676; PWR6-NEXT: rldimi 5, 5, 32, 0 27677; PWR6-NEXT: and 8, 8, 5 27678; PWR6-NEXT: and 5, 9, 5 27679; PWR6-NEXT: ori 6, 6, 13107 27680; PWR6-NEXT: sub 3, 3, 5 27681; PWR6-NEXT: rldimi 6, 6, 32, 0 27682; PWR6-NEXT: sub 4, 4, 8 27683; PWR6-NEXT: and 8, 3, 6 27684; PWR6-NEXT: rotldi 3, 3, 62 27685; PWR6-NEXT: and 3, 3, 6 27686; PWR6-NEXT: lis 7, 3855 27687; PWR6-NEXT: and 5, 4, 6 27688; PWR6-NEXT: rotldi 4, 4, 62 27689; PWR6-NEXT: add 3, 8, 3 27690; PWR6-NEXT: lis 9, 257 27691; PWR6-NEXT: ori 7, 7, 3855 27692; PWR6-NEXT: and 4, 4, 6 27693; PWR6-NEXT: rldicl 6, 3, 60, 4 27694; PWR6-NEXT: ori 9, 9, 257 27695; PWR6-NEXT: rldimi 7, 7, 32, 0 27696; PWR6-NEXT: add 4, 5, 4 27697; PWR6-NEXT: add 3, 3, 6 27698; PWR6-NEXT: rldimi 9, 9, 32, 0 27699; PWR6-NEXT: rldicl 5, 4, 60, 4 27700; PWR6-NEXT: and 3, 3, 7 27701; PWR6-NEXT: add 4, 4, 5 27702; PWR6-NEXT: mulld 3, 3, 9 27703; PWR6-NEXT: and 4, 4, 7 27704; PWR6-NEXT: rldicl 3, 3, 8, 56 27705; PWR6-NEXT: mulld 4, 4, 9 27706; PWR6-NEXT: li 5, 60 27707; PWR6-NEXT: subfic 3, 3, 60 27708; PWR6-NEXT: rldicl 4, 4, 8, 56 27709; PWR6-NEXT: subfe 3, 5, 5 27710; PWR6-NEXT: subfic 4, 4, 60 27711; PWR6-NEXT: subfe 4, 5, 5 27712; PWR6-NEXT: blr 27713; 27714; PWR7-LABEL: ugt_60_v2i64: 27715; PWR7: # %bb.0: 27716; PWR7-NEXT: addi 3, 1, -32 27717; PWR7-NEXT: li 5, 0 27718; PWR7-NEXT: li 6, -1 27719; PWR7-NEXT: stxvd2x 34, 0, 3 27720; PWR7-NEXT: ld 3, -24(1) 27721; PWR7-NEXT: ld 4, -32(1) 27722; PWR7-NEXT: popcntd 3, 3 27723; PWR7-NEXT: popcntd 4, 4 27724; PWR7-NEXT: cmpldi 3, 60 27725; PWR7-NEXT: iselgt 3, 6, 5 27726; PWR7-NEXT: cmpldi 4, 60 27727; PWR7-NEXT: iselgt 4, 6, 5 27728; PWR7-NEXT: std 3, -8(1) 27729; PWR7-NEXT: addi 3, 1, -16 27730; PWR7-NEXT: std 4, -16(1) 27731; PWR7-NEXT: lxvd2x 34, 0, 3 27732; PWR7-NEXT: blr 27733; 27734; PWR8-LABEL: ugt_60_v2i64: 27735; PWR8: # %bb.0: 27736; PWR8-NEXT: addis 3, 2, .LCPI218_0@toc@ha 27737; PWR8-NEXT: vpopcntd 2, 2 27738; PWR8-NEXT: addi 3, 3, .LCPI218_0@toc@l 27739; PWR8-NEXT: lxvd2x 35, 0, 3 27740; PWR8-NEXT: vcmpgtud 2, 2, 3 27741; PWR8-NEXT: blr 27742; 27743; PWR9-LABEL: ugt_60_v2i64: 27744; PWR9: # %bb.0: 27745; PWR9-NEXT: addis 3, 2, .LCPI218_0@toc@ha 27746; PWR9-NEXT: vpopcntd 2, 2 27747; PWR9-NEXT: addi 3, 3, .LCPI218_0@toc@l 27748; PWR9-NEXT: lxvx 35, 0, 3 27749; PWR9-NEXT: vcmpgtud 2, 2, 3 27750; PWR9-NEXT: blr 27751 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27752 %3 = icmp ugt <2 x i64> %2, <i64 60, i64 60> 27753 %4 = sext <2 x i1> %3 to <2 x i64> 27754 ret <2 x i64> %4 27755} 27756 27757define <2 x i64> @ult_61_v2i64(<2 x i64> %0) { 27758; PWR5-LABEL: ult_61_v2i64: 27759; PWR5: # %bb.0: 27760; PWR5-NEXT: lis 5, 21845 27761; PWR5-NEXT: lis 6, 13107 27762; PWR5-NEXT: ori 5, 5, 21845 27763; PWR5-NEXT: rotldi 8, 4, 63 27764; PWR5-NEXT: rotldi 9, 3, 63 27765; PWR5-NEXT: rldimi 5, 5, 32, 0 27766; PWR5-NEXT: and 8, 8, 5 27767; PWR5-NEXT: and 5, 9, 5 27768; PWR5-NEXT: ori 6, 6, 13107 27769; PWR5-NEXT: sub 3, 3, 5 27770; PWR5-NEXT: rldimi 6, 6, 32, 0 27771; PWR5-NEXT: sub 4, 4, 8 27772; PWR5-NEXT: and 8, 3, 6 27773; PWR5-NEXT: rotldi 3, 3, 62 27774; PWR5-NEXT: and 3, 3, 6 27775; PWR5-NEXT: lis 7, 3855 27776; PWR5-NEXT: and 5, 4, 6 27777; PWR5-NEXT: rotldi 4, 4, 62 27778; PWR5-NEXT: add 3, 8, 3 27779; PWR5-NEXT: lis 9, 257 27780; PWR5-NEXT: ori 7, 7, 3855 27781; PWR5-NEXT: and 4, 4, 6 27782; PWR5-NEXT: rldicl 6, 3, 60, 4 27783; PWR5-NEXT: ori 9, 9, 257 27784; PWR5-NEXT: rldimi 7, 7, 32, 0 27785; PWR5-NEXT: add 4, 5, 4 27786; PWR5-NEXT: add 3, 3, 6 27787; PWR5-NEXT: rldimi 9, 9, 32, 0 27788; PWR5-NEXT: rldicl 5, 4, 60, 4 27789; PWR5-NEXT: and 3, 3, 7 27790; PWR5-NEXT: add 4, 4, 5 27791; PWR5-NEXT: mulld 3, 3, 9 27792; PWR5-NEXT: and 4, 4, 7 27793; PWR5-NEXT: rldicl 3, 3, 8, 56 27794; PWR5-NEXT: li 5, 61 27795; PWR5-NEXT: mulld 4, 4, 9 27796; PWR5-NEXT: subc 6, 3, 5 27797; PWR5-NEXT: rldicl 4, 4, 8, 56 27798; PWR5-NEXT: subfe 3, 3, 3 27799; PWR5-NEXT: subc 5, 4, 5 27800; PWR5-NEXT: subfe 4, 4, 4 27801; PWR5-NEXT: blr 27802; 27803; PWR6-LABEL: ult_61_v2i64: 27804; PWR6: # %bb.0: 27805; PWR6-NEXT: lis 5, 21845 27806; PWR6-NEXT: lis 6, 13107 27807; PWR6-NEXT: ori 5, 5, 21845 27808; PWR6-NEXT: rotldi 8, 4, 63 27809; PWR6-NEXT: rotldi 9, 3, 63 27810; PWR6-NEXT: rldimi 5, 5, 32, 0 27811; PWR6-NEXT: and 8, 8, 5 27812; PWR6-NEXT: and 5, 9, 5 27813; PWR6-NEXT: ori 6, 6, 13107 27814; PWR6-NEXT: sub 3, 3, 5 27815; PWR6-NEXT: rldimi 6, 6, 32, 0 27816; PWR6-NEXT: sub 4, 4, 8 27817; PWR6-NEXT: and 8, 3, 6 27818; PWR6-NEXT: rotldi 3, 3, 62 27819; PWR6-NEXT: and 3, 3, 6 27820; PWR6-NEXT: lis 7, 3855 27821; PWR6-NEXT: and 5, 4, 6 27822; PWR6-NEXT: rotldi 4, 4, 62 27823; PWR6-NEXT: add 3, 8, 3 27824; PWR6-NEXT: lis 9, 257 27825; PWR6-NEXT: ori 7, 7, 3855 27826; PWR6-NEXT: and 4, 4, 6 27827; PWR6-NEXT: rldicl 6, 3, 60, 4 27828; PWR6-NEXT: ori 9, 9, 257 27829; PWR6-NEXT: rldimi 7, 7, 32, 0 27830; PWR6-NEXT: add 4, 5, 4 27831; PWR6-NEXT: add 3, 3, 6 27832; PWR6-NEXT: rldimi 9, 9, 32, 0 27833; PWR6-NEXT: rldicl 5, 4, 60, 4 27834; PWR6-NEXT: and 3, 3, 7 27835; PWR6-NEXT: add 4, 4, 5 27836; PWR6-NEXT: mulld 3, 3, 9 27837; PWR6-NEXT: and 4, 4, 7 27838; PWR6-NEXT: rldicl 3, 3, 8, 56 27839; PWR6-NEXT: li 5, 61 27840; PWR6-NEXT: mulld 4, 4, 9 27841; PWR6-NEXT: subc 6, 3, 5 27842; PWR6-NEXT: rldicl 4, 4, 8, 56 27843; PWR6-NEXT: subfe 3, 3, 3 27844; PWR6-NEXT: subc 5, 4, 5 27845; PWR6-NEXT: subfe 4, 4, 4 27846; PWR6-NEXT: blr 27847; 27848; PWR7-LABEL: ult_61_v2i64: 27849; PWR7: # %bb.0: 27850; PWR7-NEXT: addi 3, 1, -32 27851; PWR7-NEXT: li 5, 0 27852; PWR7-NEXT: li 6, -1 27853; PWR7-NEXT: stxvd2x 34, 0, 3 27854; PWR7-NEXT: ld 3, -24(1) 27855; PWR7-NEXT: ld 4, -32(1) 27856; PWR7-NEXT: popcntd 3, 3 27857; PWR7-NEXT: popcntd 4, 4 27858; PWR7-NEXT: cmpldi 3, 61 27859; PWR7-NEXT: isellt 3, 6, 5 27860; PWR7-NEXT: cmpldi 4, 61 27861; PWR7-NEXT: isellt 4, 6, 5 27862; PWR7-NEXT: std 3, -8(1) 27863; PWR7-NEXT: addi 3, 1, -16 27864; PWR7-NEXT: std 4, -16(1) 27865; PWR7-NEXT: lxvd2x 34, 0, 3 27866; PWR7-NEXT: blr 27867; 27868; PWR8-LABEL: ult_61_v2i64: 27869; PWR8: # %bb.0: 27870; PWR8-NEXT: addis 3, 2, .LCPI219_0@toc@ha 27871; PWR8-NEXT: vpopcntd 2, 2 27872; PWR8-NEXT: addi 3, 3, .LCPI219_0@toc@l 27873; PWR8-NEXT: lxvd2x 35, 0, 3 27874; PWR8-NEXT: vcmpgtud 2, 3, 2 27875; PWR8-NEXT: blr 27876; 27877; PWR9-LABEL: ult_61_v2i64: 27878; PWR9: # %bb.0: 27879; PWR9-NEXT: addis 3, 2, .LCPI219_0@toc@ha 27880; PWR9-NEXT: vpopcntd 2, 2 27881; PWR9-NEXT: addi 3, 3, .LCPI219_0@toc@l 27882; PWR9-NEXT: lxvx 35, 0, 3 27883; PWR9-NEXT: vcmpgtud 2, 3, 2 27884; PWR9-NEXT: blr 27885 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27886 %3 = icmp ult <2 x i64> %2, <i64 61, i64 61> 27887 %4 = sext <2 x i1> %3 to <2 x i64> 27888 ret <2 x i64> %4 27889} 27890 27891define <2 x i64> @ugt_61_v2i64(<2 x i64> %0) { 27892; PWR5-LABEL: ugt_61_v2i64: 27893; PWR5: # %bb.0: 27894; PWR5-NEXT: lis 5, 21845 27895; PWR5-NEXT: lis 6, 13107 27896; PWR5-NEXT: ori 5, 5, 21845 27897; PWR5-NEXT: rotldi 8, 4, 63 27898; PWR5-NEXT: rotldi 9, 3, 63 27899; PWR5-NEXT: rldimi 5, 5, 32, 0 27900; PWR5-NEXT: and 8, 8, 5 27901; PWR5-NEXT: and 5, 9, 5 27902; PWR5-NEXT: ori 6, 6, 13107 27903; PWR5-NEXT: sub 3, 3, 5 27904; PWR5-NEXT: rldimi 6, 6, 32, 0 27905; PWR5-NEXT: sub 4, 4, 8 27906; PWR5-NEXT: and 8, 3, 6 27907; PWR5-NEXT: rotldi 3, 3, 62 27908; PWR5-NEXT: and 3, 3, 6 27909; PWR5-NEXT: lis 7, 3855 27910; PWR5-NEXT: and 5, 4, 6 27911; PWR5-NEXT: rotldi 4, 4, 62 27912; PWR5-NEXT: add 3, 8, 3 27913; PWR5-NEXT: lis 9, 257 27914; PWR5-NEXT: ori 7, 7, 3855 27915; PWR5-NEXT: and 4, 4, 6 27916; PWR5-NEXT: rldicl 6, 3, 60, 4 27917; PWR5-NEXT: ori 9, 9, 257 27918; PWR5-NEXT: rldimi 7, 7, 32, 0 27919; PWR5-NEXT: add 4, 5, 4 27920; PWR5-NEXT: add 3, 3, 6 27921; PWR5-NEXT: rldimi 9, 9, 32, 0 27922; PWR5-NEXT: rldicl 5, 4, 60, 4 27923; PWR5-NEXT: and 3, 3, 7 27924; PWR5-NEXT: add 4, 4, 5 27925; PWR5-NEXT: mulld 3, 3, 9 27926; PWR5-NEXT: and 4, 4, 7 27927; PWR5-NEXT: rldicl 3, 3, 8, 56 27928; PWR5-NEXT: mulld 4, 4, 9 27929; PWR5-NEXT: li 5, 61 27930; PWR5-NEXT: subfic 3, 3, 61 27931; PWR5-NEXT: rldicl 4, 4, 8, 56 27932; PWR5-NEXT: subfe 3, 5, 5 27933; PWR5-NEXT: subfic 4, 4, 61 27934; PWR5-NEXT: subfe 4, 5, 5 27935; PWR5-NEXT: blr 27936; 27937; PWR6-LABEL: ugt_61_v2i64: 27938; PWR6: # %bb.0: 27939; PWR6-NEXT: lis 5, 21845 27940; PWR6-NEXT: lis 6, 13107 27941; PWR6-NEXT: ori 5, 5, 21845 27942; PWR6-NEXT: rotldi 8, 4, 63 27943; PWR6-NEXT: rotldi 9, 3, 63 27944; PWR6-NEXT: rldimi 5, 5, 32, 0 27945; PWR6-NEXT: and 8, 8, 5 27946; PWR6-NEXT: and 5, 9, 5 27947; PWR6-NEXT: ori 6, 6, 13107 27948; PWR6-NEXT: sub 3, 3, 5 27949; PWR6-NEXT: rldimi 6, 6, 32, 0 27950; PWR6-NEXT: sub 4, 4, 8 27951; PWR6-NEXT: and 8, 3, 6 27952; PWR6-NEXT: rotldi 3, 3, 62 27953; PWR6-NEXT: and 3, 3, 6 27954; PWR6-NEXT: lis 7, 3855 27955; PWR6-NEXT: and 5, 4, 6 27956; PWR6-NEXT: rotldi 4, 4, 62 27957; PWR6-NEXT: add 3, 8, 3 27958; PWR6-NEXT: lis 9, 257 27959; PWR6-NEXT: ori 7, 7, 3855 27960; PWR6-NEXT: and 4, 4, 6 27961; PWR6-NEXT: rldicl 6, 3, 60, 4 27962; PWR6-NEXT: ori 9, 9, 257 27963; PWR6-NEXT: rldimi 7, 7, 32, 0 27964; PWR6-NEXT: add 4, 5, 4 27965; PWR6-NEXT: add 3, 3, 6 27966; PWR6-NEXT: rldimi 9, 9, 32, 0 27967; PWR6-NEXT: rldicl 5, 4, 60, 4 27968; PWR6-NEXT: and 3, 3, 7 27969; PWR6-NEXT: add 4, 4, 5 27970; PWR6-NEXT: mulld 3, 3, 9 27971; PWR6-NEXT: and 4, 4, 7 27972; PWR6-NEXT: rldicl 3, 3, 8, 56 27973; PWR6-NEXT: mulld 4, 4, 9 27974; PWR6-NEXT: li 5, 61 27975; PWR6-NEXT: subfic 3, 3, 61 27976; PWR6-NEXT: rldicl 4, 4, 8, 56 27977; PWR6-NEXT: subfe 3, 5, 5 27978; PWR6-NEXT: subfic 4, 4, 61 27979; PWR6-NEXT: subfe 4, 5, 5 27980; PWR6-NEXT: blr 27981; 27982; PWR7-LABEL: ugt_61_v2i64: 27983; PWR7: # %bb.0: 27984; PWR7-NEXT: addi 3, 1, -32 27985; PWR7-NEXT: li 5, 0 27986; PWR7-NEXT: li 6, -1 27987; PWR7-NEXT: stxvd2x 34, 0, 3 27988; PWR7-NEXT: ld 3, -24(1) 27989; PWR7-NEXT: ld 4, -32(1) 27990; PWR7-NEXT: popcntd 3, 3 27991; PWR7-NEXT: popcntd 4, 4 27992; PWR7-NEXT: cmpldi 3, 61 27993; PWR7-NEXT: iselgt 3, 6, 5 27994; PWR7-NEXT: cmpldi 4, 61 27995; PWR7-NEXT: iselgt 4, 6, 5 27996; PWR7-NEXT: std 3, -8(1) 27997; PWR7-NEXT: addi 3, 1, -16 27998; PWR7-NEXT: std 4, -16(1) 27999; PWR7-NEXT: lxvd2x 34, 0, 3 28000; PWR7-NEXT: blr 28001; 28002; PWR8-LABEL: ugt_61_v2i64: 28003; PWR8: # %bb.0: 28004; PWR8-NEXT: addis 3, 2, .LCPI220_0@toc@ha 28005; PWR8-NEXT: vpopcntd 2, 2 28006; PWR8-NEXT: addi 3, 3, .LCPI220_0@toc@l 28007; PWR8-NEXT: lxvd2x 35, 0, 3 28008; PWR8-NEXT: vcmpgtud 2, 2, 3 28009; PWR8-NEXT: blr 28010; 28011; PWR9-LABEL: ugt_61_v2i64: 28012; PWR9: # %bb.0: 28013; PWR9-NEXT: addis 3, 2, .LCPI220_0@toc@ha 28014; PWR9-NEXT: vpopcntd 2, 2 28015; PWR9-NEXT: addi 3, 3, .LCPI220_0@toc@l 28016; PWR9-NEXT: lxvx 35, 0, 3 28017; PWR9-NEXT: vcmpgtud 2, 2, 3 28018; PWR9-NEXT: blr 28019 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 28020 %3 = icmp ugt <2 x i64> %2, <i64 61, i64 61> 28021 %4 = sext <2 x i1> %3 to <2 x i64> 28022 ret <2 x i64> %4 28023} 28024 28025define <2 x i64> @ult_62_v2i64(<2 x i64> %0) { 28026; PWR5-LABEL: ult_62_v2i64: 28027; PWR5: # %bb.0: 28028; PWR5-NEXT: lis 5, 21845 28029; PWR5-NEXT: lis 6, 13107 28030; PWR5-NEXT: ori 5, 5, 21845 28031; PWR5-NEXT: rotldi 8, 4, 63 28032; PWR5-NEXT: rotldi 9, 3, 63 28033; PWR5-NEXT: rldimi 5, 5, 32, 0 28034; PWR5-NEXT: and 8, 8, 5 28035; PWR5-NEXT: and 5, 9, 5 28036; PWR5-NEXT: ori 6, 6, 13107 28037; PWR5-NEXT: sub 3, 3, 5 28038; PWR5-NEXT: rldimi 6, 6, 32, 0 28039; PWR5-NEXT: sub 4, 4, 8 28040; PWR5-NEXT: and 8, 3, 6 28041; PWR5-NEXT: rotldi 3, 3, 62 28042; PWR5-NEXT: and 3, 3, 6 28043; PWR5-NEXT: lis 7, 3855 28044; PWR5-NEXT: and 5, 4, 6 28045; PWR5-NEXT: rotldi 4, 4, 62 28046; PWR5-NEXT: add 3, 8, 3 28047; PWR5-NEXT: lis 9, 257 28048; PWR5-NEXT: ori 7, 7, 3855 28049; PWR5-NEXT: and 4, 4, 6 28050; PWR5-NEXT: rldicl 6, 3, 60, 4 28051; PWR5-NEXT: ori 9, 9, 257 28052; PWR5-NEXT: rldimi 7, 7, 32, 0 28053; PWR5-NEXT: add 4, 5, 4 28054; PWR5-NEXT: add 3, 3, 6 28055; PWR5-NEXT: rldimi 9, 9, 32, 0 28056; PWR5-NEXT: rldicl 5, 4, 60, 4 28057; PWR5-NEXT: and 3, 3, 7 28058; PWR5-NEXT: add 4, 4, 5 28059; PWR5-NEXT: mulld 3, 3, 9 28060; PWR5-NEXT: and 4, 4, 7 28061; PWR5-NEXT: rldicl 3, 3, 8, 56 28062; PWR5-NEXT: li 5, 62 28063; PWR5-NEXT: mulld 4, 4, 9 28064; PWR5-NEXT: subc 6, 3, 5 28065; PWR5-NEXT: rldicl 4, 4, 8, 56 28066; PWR5-NEXT: subfe 3, 3, 3 28067; PWR5-NEXT: subc 5, 4, 5 28068; PWR5-NEXT: subfe 4, 4, 4 28069; PWR5-NEXT: blr 28070; 28071; PWR6-LABEL: ult_62_v2i64: 28072; PWR6: # %bb.0: 28073; PWR6-NEXT: lis 5, 21845 28074; PWR6-NEXT: lis 6, 13107 28075; PWR6-NEXT: ori 5, 5, 21845 28076; PWR6-NEXT: rotldi 8, 4, 63 28077; PWR6-NEXT: rotldi 9, 3, 63 28078; PWR6-NEXT: rldimi 5, 5, 32, 0 28079; PWR6-NEXT: and 8, 8, 5 28080; PWR6-NEXT: and 5, 9, 5 28081; PWR6-NEXT: ori 6, 6, 13107 28082; PWR6-NEXT: sub 3, 3, 5 28083; PWR6-NEXT: rldimi 6, 6, 32, 0 28084; PWR6-NEXT: sub 4, 4, 8 28085; PWR6-NEXT: and 8, 3, 6 28086; PWR6-NEXT: rotldi 3, 3, 62 28087; PWR6-NEXT: and 3, 3, 6 28088; PWR6-NEXT: lis 7, 3855 28089; PWR6-NEXT: and 5, 4, 6 28090; PWR6-NEXT: rotldi 4, 4, 62 28091; PWR6-NEXT: add 3, 8, 3 28092; PWR6-NEXT: lis 9, 257 28093; PWR6-NEXT: ori 7, 7, 3855 28094; PWR6-NEXT: and 4, 4, 6 28095; PWR6-NEXT: rldicl 6, 3, 60, 4 28096; PWR6-NEXT: ori 9, 9, 257 28097; PWR6-NEXT: rldimi 7, 7, 32, 0 28098; PWR6-NEXT: add 4, 5, 4 28099; PWR6-NEXT: add 3, 3, 6 28100; PWR6-NEXT: rldimi 9, 9, 32, 0 28101; PWR6-NEXT: rldicl 5, 4, 60, 4 28102; PWR6-NEXT: and 3, 3, 7 28103; PWR6-NEXT: add 4, 4, 5 28104; PWR6-NEXT: mulld 3, 3, 9 28105; PWR6-NEXT: and 4, 4, 7 28106; PWR6-NEXT: rldicl 3, 3, 8, 56 28107; PWR6-NEXT: li 5, 62 28108; PWR6-NEXT: mulld 4, 4, 9 28109; PWR6-NEXT: subc 6, 3, 5 28110; PWR6-NEXT: rldicl 4, 4, 8, 56 28111; PWR6-NEXT: subfe 3, 3, 3 28112; PWR6-NEXT: subc 5, 4, 5 28113; PWR6-NEXT: subfe 4, 4, 4 28114; PWR6-NEXT: blr 28115; 28116; PWR7-LABEL: ult_62_v2i64: 28117; PWR7: # %bb.0: 28118; PWR7-NEXT: addi 3, 1, -32 28119; PWR7-NEXT: li 5, 0 28120; PWR7-NEXT: li 6, -1 28121; PWR7-NEXT: stxvd2x 34, 0, 3 28122; PWR7-NEXT: ld 3, -24(1) 28123; PWR7-NEXT: ld 4, -32(1) 28124; PWR7-NEXT: popcntd 3, 3 28125; PWR7-NEXT: popcntd 4, 4 28126; PWR7-NEXT: cmpldi 3, 62 28127; PWR7-NEXT: isellt 3, 6, 5 28128; PWR7-NEXT: cmpldi 4, 62 28129; PWR7-NEXT: isellt 4, 6, 5 28130; PWR7-NEXT: std 3, -8(1) 28131; PWR7-NEXT: addi 3, 1, -16 28132; PWR7-NEXT: std 4, -16(1) 28133; PWR7-NEXT: lxvd2x 34, 0, 3 28134; PWR7-NEXT: blr 28135; 28136; PWR8-LABEL: ult_62_v2i64: 28137; PWR8: # %bb.0: 28138; PWR8-NEXT: addis 3, 2, .LCPI221_0@toc@ha 28139; PWR8-NEXT: vpopcntd 2, 2 28140; PWR8-NEXT: addi 3, 3, .LCPI221_0@toc@l 28141; PWR8-NEXT: lxvd2x 35, 0, 3 28142; PWR8-NEXT: vcmpgtud 2, 3, 2 28143; PWR8-NEXT: blr 28144; 28145; PWR9-LABEL: ult_62_v2i64: 28146; PWR9: # %bb.0: 28147; PWR9-NEXT: addis 3, 2, .LCPI221_0@toc@ha 28148; PWR9-NEXT: vpopcntd 2, 2 28149; PWR9-NEXT: addi 3, 3, .LCPI221_0@toc@l 28150; PWR9-NEXT: lxvx 35, 0, 3 28151; PWR9-NEXT: vcmpgtud 2, 3, 2 28152; PWR9-NEXT: blr 28153 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 28154 %3 = icmp ult <2 x i64> %2, <i64 62, i64 62> 28155 %4 = sext <2 x i1> %3 to <2 x i64> 28156 ret <2 x i64> %4 28157} 28158 28159define <2 x i64> @ugt_62_v2i64(<2 x i64> %0) { 28160; PWR5-LABEL: ugt_62_v2i64: 28161; PWR5: # %bb.0: 28162; PWR5-NEXT: lis 5, 21845 28163; PWR5-NEXT: lis 6, 13107 28164; PWR5-NEXT: ori 5, 5, 21845 28165; PWR5-NEXT: rotldi 8, 4, 63 28166; PWR5-NEXT: rotldi 9, 3, 63 28167; PWR5-NEXT: rldimi 5, 5, 32, 0 28168; PWR5-NEXT: and 8, 8, 5 28169; PWR5-NEXT: and 5, 9, 5 28170; PWR5-NEXT: ori 6, 6, 13107 28171; PWR5-NEXT: sub 3, 3, 5 28172; PWR5-NEXT: rldimi 6, 6, 32, 0 28173; PWR5-NEXT: sub 4, 4, 8 28174; PWR5-NEXT: and 8, 3, 6 28175; PWR5-NEXT: rotldi 3, 3, 62 28176; PWR5-NEXT: and 3, 3, 6 28177; PWR5-NEXT: lis 7, 3855 28178; PWR5-NEXT: and 5, 4, 6 28179; PWR5-NEXT: rotldi 4, 4, 62 28180; PWR5-NEXT: add 3, 8, 3 28181; PWR5-NEXT: lis 9, 257 28182; PWR5-NEXT: ori 7, 7, 3855 28183; PWR5-NEXT: and 4, 4, 6 28184; PWR5-NEXT: rldicl 6, 3, 60, 4 28185; PWR5-NEXT: ori 9, 9, 257 28186; PWR5-NEXT: rldimi 7, 7, 32, 0 28187; PWR5-NEXT: add 4, 5, 4 28188; PWR5-NEXT: add 3, 3, 6 28189; PWR5-NEXT: rldimi 9, 9, 32, 0 28190; PWR5-NEXT: rldicl 5, 4, 60, 4 28191; PWR5-NEXT: and 3, 3, 7 28192; PWR5-NEXT: add 4, 4, 5 28193; PWR5-NEXT: mulld 3, 3, 9 28194; PWR5-NEXT: and 4, 4, 7 28195; PWR5-NEXT: rldicl 3, 3, 8, 56 28196; PWR5-NEXT: mulld 4, 4, 9 28197; PWR5-NEXT: li 5, 62 28198; PWR5-NEXT: subfic 3, 3, 62 28199; PWR5-NEXT: rldicl 4, 4, 8, 56 28200; PWR5-NEXT: subfe 3, 5, 5 28201; PWR5-NEXT: subfic 4, 4, 62 28202; PWR5-NEXT: subfe 4, 5, 5 28203; PWR5-NEXT: blr 28204; 28205; PWR6-LABEL: ugt_62_v2i64: 28206; PWR6: # %bb.0: 28207; PWR6-NEXT: lis 5, 21845 28208; PWR6-NEXT: lis 6, 13107 28209; PWR6-NEXT: ori 5, 5, 21845 28210; PWR6-NEXT: rotldi 8, 4, 63 28211; PWR6-NEXT: rotldi 9, 3, 63 28212; PWR6-NEXT: rldimi 5, 5, 32, 0 28213; PWR6-NEXT: and 8, 8, 5 28214; PWR6-NEXT: and 5, 9, 5 28215; PWR6-NEXT: ori 6, 6, 13107 28216; PWR6-NEXT: sub 3, 3, 5 28217; PWR6-NEXT: rldimi 6, 6, 32, 0 28218; PWR6-NEXT: sub 4, 4, 8 28219; PWR6-NEXT: and 8, 3, 6 28220; PWR6-NEXT: rotldi 3, 3, 62 28221; PWR6-NEXT: and 3, 3, 6 28222; PWR6-NEXT: lis 7, 3855 28223; PWR6-NEXT: and 5, 4, 6 28224; PWR6-NEXT: rotldi 4, 4, 62 28225; PWR6-NEXT: add 3, 8, 3 28226; PWR6-NEXT: lis 9, 257 28227; PWR6-NEXT: ori 7, 7, 3855 28228; PWR6-NEXT: and 4, 4, 6 28229; PWR6-NEXT: rldicl 6, 3, 60, 4 28230; PWR6-NEXT: ori 9, 9, 257 28231; PWR6-NEXT: rldimi 7, 7, 32, 0 28232; PWR6-NEXT: add 4, 5, 4 28233; PWR6-NEXT: add 3, 3, 6 28234; PWR6-NEXT: rldimi 9, 9, 32, 0 28235; PWR6-NEXT: rldicl 5, 4, 60, 4 28236; PWR6-NEXT: and 3, 3, 7 28237; PWR6-NEXT: add 4, 4, 5 28238; PWR6-NEXT: mulld 3, 3, 9 28239; PWR6-NEXT: and 4, 4, 7 28240; PWR6-NEXT: rldicl 3, 3, 8, 56 28241; PWR6-NEXT: mulld 4, 4, 9 28242; PWR6-NEXT: li 5, 62 28243; PWR6-NEXT: subfic 3, 3, 62 28244; PWR6-NEXT: rldicl 4, 4, 8, 56 28245; PWR6-NEXT: subfe 3, 5, 5 28246; PWR6-NEXT: subfic 4, 4, 62 28247; PWR6-NEXT: subfe 4, 5, 5 28248; PWR6-NEXT: blr 28249; 28250; PWR7-LABEL: ugt_62_v2i64: 28251; PWR7: # %bb.0: 28252; PWR7-NEXT: addi 3, 1, -32 28253; PWR7-NEXT: li 5, 0 28254; PWR7-NEXT: li 6, -1 28255; PWR7-NEXT: stxvd2x 34, 0, 3 28256; PWR7-NEXT: ld 3, -24(1) 28257; PWR7-NEXT: ld 4, -32(1) 28258; PWR7-NEXT: popcntd 3, 3 28259; PWR7-NEXT: popcntd 4, 4 28260; PWR7-NEXT: cmpldi 3, 62 28261; PWR7-NEXT: iselgt 3, 6, 5 28262; PWR7-NEXT: cmpldi 4, 62 28263; PWR7-NEXT: iselgt 4, 6, 5 28264; PWR7-NEXT: std 3, -8(1) 28265; PWR7-NEXT: addi 3, 1, -16 28266; PWR7-NEXT: std 4, -16(1) 28267; PWR7-NEXT: lxvd2x 34, 0, 3 28268; PWR7-NEXT: blr 28269; 28270; PWR8-LABEL: ugt_62_v2i64: 28271; PWR8: # %bb.0: 28272; PWR8-NEXT: addis 3, 2, .LCPI222_0@toc@ha 28273; PWR8-NEXT: vpopcntd 2, 2 28274; PWR8-NEXT: addi 3, 3, .LCPI222_0@toc@l 28275; PWR8-NEXT: lxvd2x 35, 0, 3 28276; PWR8-NEXT: vcmpgtud 2, 2, 3 28277; PWR8-NEXT: blr 28278; 28279; PWR9-LABEL: ugt_62_v2i64: 28280; PWR9: # %bb.0: 28281; PWR9-NEXT: addis 3, 2, .LCPI222_0@toc@ha 28282; PWR9-NEXT: vpopcntd 2, 2 28283; PWR9-NEXT: addi 3, 3, .LCPI222_0@toc@l 28284; PWR9-NEXT: lxvx 35, 0, 3 28285; PWR9-NEXT: vcmpgtud 2, 2, 3 28286; PWR9-NEXT: blr 28287 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 28288 %3 = icmp ugt <2 x i64> %2, <i64 62, i64 62> 28289 %4 = sext <2 x i1> %3 to <2 x i64> 28290 ret <2 x i64> %4 28291} 28292 28293define <2 x i64> @ult_63_v2i64(<2 x i64> %0) { 28294; PWR5-LABEL: ult_63_v2i64: 28295; PWR5: # %bb.0: 28296; PWR5-NEXT: lis 5, 21845 28297; PWR5-NEXT: lis 6, 13107 28298; PWR5-NEXT: ori 5, 5, 21845 28299; PWR5-NEXT: rotldi 8, 4, 63 28300; PWR5-NEXT: rotldi 9, 3, 63 28301; PWR5-NEXT: rldimi 5, 5, 32, 0 28302; PWR5-NEXT: and 8, 8, 5 28303; PWR5-NEXT: and 5, 9, 5 28304; PWR5-NEXT: ori 6, 6, 13107 28305; PWR5-NEXT: sub 3, 3, 5 28306; PWR5-NEXT: rldimi 6, 6, 32, 0 28307; PWR5-NEXT: sub 4, 4, 8 28308; PWR5-NEXT: and 8, 3, 6 28309; PWR5-NEXT: rotldi 3, 3, 62 28310; PWR5-NEXT: and 3, 3, 6 28311; PWR5-NEXT: lis 7, 3855 28312; PWR5-NEXT: and 5, 4, 6 28313; PWR5-NEXT: rotldi 4, 4, 62 28314; PWR5-NEXT: add 3, 8, 3 28315; PWR5-NEXT: lis 9, 257 28316; PWR5-NEXT: ori 7, 7, 3855 28317; PWR5-NEXT: and 4, 4, 6 28318; PWR5-NEXT: rldicl 6, 3, 60, 4 28319; PWR5-NEXT: ori 9, 9, 257 28320; PWR5-NEXT: rldimi 7, 7, 32, 0 28321; PWR5-NEXT: add 4, 5, 4 28322; PWR5-NEXT: add 3, 3, 6 28323; PWR5-NEXT: rldimi 9, 9, 32, 0 28324; PWR5-NEXT: rldicl 5, 4, 60, 4 28325; PWR5-NEXT: and 3, 3, 7 28326; PWR5-NEXT: add 4, 4, 5 28327; PWR5-NEXT: mulld 3, 3, 9 28328; PWR5-NEXT: and 4, 4, 7 28329; PWR5-NEXT: rldicl 3, 3, 8, 56 28330; PWR5-NEXT: li 5, 63 28331; PWR5-NEXT: mulld 4, 4, 9 28332; PWR5-NEXT: subc 6, 3, 5 28333; PWR5-NEXT: rldicl 4, 4, 8, 56 28334; PWR5-NEXT: subfe 3, 3, 3 28335; PWR5-NEXT: subc 5, 4, 5 28336; PWR5-NEXT: subfe 4, 4, 4 28337; PWR5-NEXT: blr 28338; 28339; PWR6-LABEL: ult_63_v2i64: 28340; PWR6: # %bb.0: 28341; PWR6-NEXT: lis 5, 21845 28342; PWR6-NEXT: lis 6, 13107 28343; PWR6-NEXT: ori 5, 5, 21845 28344; PWR6-NEXT: rotldi 8, 4, 63 28345; PWR6-NEXT: rotldi 9, 3, 63 28346; PWR6-NEXT: rldimi 5, 5, 32, 0 28347; PWR6-NEXT: and 8, 8, 5 28348; PWR6-NEXT: and 5, 9, 5 28349; PWR6-NEXT: ori 6, 6, 13107 28350; PWR6-NEXT: sub 3, 3, 5 28351; PWR6-NEXT: rldimi 6, 6, 32, 0 28352; PWR6-NEXT: sub 4, 4, 8 28353; PWR6-NEXT: and 8, 3, 6 28354; PWR6-NEXT: rotldi 3, 3, 62 28355; PWR6-NEXT: and 3, 3, 6 28356; PWR6-NEXT: lis 7, 3855 28357; PWR6-NEXT: and 5, 4, 6 28358; PWR6-NEXT: rotldi 4, 4, 62 28359; PWR6-NEXT: add 3, 8, 3 28360; PWR6-NEXT: lis 9, 257 28361; PWR6-NEXT: ori 7, 7, 3855 28362; PWR6-NEXT: and 4, 4, 6 28363; PWR6-NEXT: rldicl 6, 3, 60, 4 28364; PWR6-NEXT: ori 9, 9, 257 28365; PWR6-NEXT: rldimi 7, 7, 32, 0 28366; PWR6-NEXT: add 4, 5, 4 28367; PWR6-NEXT: add 3, 3, 6 28368; PWR6-NEXT: rldimi 9, 9, 32, 0 28369; PWR6-NEXT: rldicl 5, 4, 60, 4 28370; PWR6-NEXT: and 3, 3, 7 28371; PWR6-NEXT: add 4, 4, 5 28372; PWR6-NEXT: mulld 3, 3, 9 28373; PWR6-NEXT: and 4, 4, 7 28374; PWR6-NEXT: rldicl 3, 3, 8, 56 28375; PWR6-NEXT: li 5, 63 28376; PWR6-NEXT: mulld 4, 4, 9 28377; PWR6-NEXT: subc 6, 3, 5 28378; PWR6-NEXT: rldicl 4, 4, 8, 56 28379; PWR6-NEXT: subfe 3, 3, 3 28380; PWR6-NEXT: subc 5, 4, 5 28381; PWR6-NEXT: subfe 4, 4, 4 28382; PWR6-NEXT: blr 28383; 28384; PWR7-LABEL: ult_63_v2i64: 28385; PWR7: # %bb.0: 28386; PWR7-NEXT: addi 3, 1, -32 28387; PWR7-NEXT: li 5, 0 28388; PWR7-NEXT: li 6, -1 28389; PWR7-NEXT: stxvd2x 34, 0, 3 28390; PWR7-NEXT: ld 3, -24(1) 28391; PWR7-NEXT: ld 4, -32(1) 28392; PWR7-NEXT: popcntd 3, 3 28393; PWR7-NEXT: popcntd 4, 4 28394; PWR7-NEXT: cmpldi 3, 63 28395; PWR7-NEXT: isellt 3, 6, 5 28396; PWR7-NEXT: cmpldi 4, 63 28397; PWR7-NEXT: isellt 4, 6, 5 28398; PWR7-NEXT: std 3, -8(1) 28399; PWR7-NEXT: addi 3, 1, -16 28400; PWR7-NEXT: std 4, -16(1) 28401; PWR7-NEXT: lxvd2x 34, 0, 3 28402; PWR7-NEXT: blr 28403; 28404; PWR8-LABEL: ult_63_v2i64: 28405; PWR8: # %bb.0: 28406; PWR8-NEXT: addis 3, 2, .LCPI223_0@toc@ha 28407; PWR8-NEXT: vpopcntd 2, 2 28408; PWR8-NEXT: addi 3, 3, .LCPI223_0@toc@l 28409; PWR8-NEXT: lxvd2x 35, 0, 3 28410; PWR8-NEXT: vcmpgtud 2, 3, 2 28411; PWR8-NEXT: blr 28412; 28413; PWR9-LABEL: ult_63_v2i64: 28414; PWR9: # %bb.0: 28415; PWR9-NEXT: addis 3, 2, .LCPI223_0@toc@ha 28416; PWR9-NEXT: vpopcntd 2, 2 28417; PWR9-NEXT: addi 3, 3, .LCPI223_0@toc@l 28418; PWR9-NEXT: lxvx 35, 0, 3 28419; PWR9-NEXT: vcmpgtud 2, 3, 2 28420; PWR9-NEXT: blr 28421 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 28422 %3 = icmp ult <2 x i64> %2, <i64 63, i64 63> 28423 %4 = sext <2 x i1> %3 to <2 x i64> 28424 ret <2 x i64> %4 28425} 28426 28427declare <16 x i8> @llvm.ctpop.v16i8(<16 x i8>) 28428declare <8 x i16> @llvm.ctpop.v8i16(<8 x i16>) 28429declare <4 x i32> @llvm.ctpop.v4i32(<4 x i32>) 28430declare <2 x i64> @llvm.ctpop.v2i64(<2 x i64>) 28431