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-prefix=PWR5 3; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr6 < %s | FileCheck %s --check-prefix=PWR6 4; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 < %s | FileCheck %s --check-prefix=PWR7 5; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s --check-prefix=PWR8 6; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr9 < %s | FileCheck %s --check-prefix=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: addi 3, 3, .LCPI2_1@toc@l 167; PWR7-NEXT: vsrb 3, 2, 3 168; PWR7-NEXT: vspltisb 0, 15 169; PWR7-NEXT: xxland 35, 35, 0 170; PWR7-NEXT: lxvw4x 0, 0, 3 171; PWR7-NEXT: vsububm 2, 2, 3 172; PWR7-NEXT: xxland 35, 34, 0 173; PWR7-NEXT: vsrb 2, 2, 4 174; PWR7-NEXT: xxland 34, 34, 0 175; PWR7-NEXT: vaddubm 2, 3, 2 176; PWR7-NEXT: vsrb 3, 2, 5 177; PWR7-NEXT: vaddubm 2, 2, 3 178; PWR7-NEXT: xxland 34, 34, 32 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: vspltisb 5, 4 263; PWR7-NEXT: addi 3, 3, .LCPI3_1@toc@l 264; PWR7-NEXT: vsrb 3, 2, 3 265; PWR7-NEXT: vspltisb 0, 15 266; PWR7-NEXT: vspltisb 1, 3 267; PWR7-NEXT: xxland 35, 35, 0 268; PWR7-NEXT: lxvw4x 0, 0, 3 269; PWR7-NEXT: vsububm 2, 2, 3 270; PWR7-NEXT: vsrb 3, 2, 4 271; PWR7-NEXT: xxland 34, 34, 0 272; PWR7-NEXT: xxland 35, 35, 0 273; PWR7-NEXT: vaddubm 2, 2, 3 274; PWR7-NEXT: vsrb 3, 2, 5 275; PWR7-NEXT: vaddubm 2, 2, 3 276; PWR7-NEXT: xxland 34, 34, 32 277; PWR7-NEXT: vcmpgtub 2, 1, 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: vspltisb 5, 4 361; PWR7-NEXT: addi 3, 3, .LCPI4_1@toc@l 362; PWR7-NEXT: vsrb 3, 2, 3 363; PWR7-NEXT: vspltisb 0, 15 364; PWR7-NEXT: vspltisb 1, 3 365; PWR7-NEXT: xxland 35, 35, 0 366; PWR7-NEXT: lxvw4x 0, 0, 3 367; PWR7-NEXT: vsububm 2, 2, 3 368; PWR7-NEXT: vsrb 3, 2, 4 369; PWR7-NEXT: xxland 34, 34, 0 370; PWR7-NEXT: xxland 35, 35, 0 371; PWR7-NEXT: vaddubm 2, 2, 3 372; PWR7-NEXT: vsrb 3, 2, 5 373; PWR7-NEXT: vaddubm 2, 2, 3 374; PWR7-NEXT: xxland 34, 34, 32 375; PWR7-NEXT: vcmpgtub 2, 2, 1 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, 4 457; PWR7-NEXT: addi 3, 3, .LCPI5_1@toc@l 458; PWR7-NEXT: vsrb 3, 2, 3 459; PWR7-NEXT: vspltisb 0, 15 460; PWR7-NEXT: xxland 35, 35, 0 461; PWR7-NEXT: lxvw4x 0, 0, 3 462; PWR7-NEXT: vsububm 2, 2, 3 463; PWR7-NEXT: vsrb 3, 2, 4 464; PWR7-NEXT: xxland 34, 34, 0 465; PWR7-NEXT: xxland 35, 35, 0 466; PWR7-NEXT: vaddubm 2, 2, 3 467; PWR7-NEXT: vsrb 3, 2, 5 468; PWR7-NEXT: vaddubm 2, 2, 3 469; PWR7-NEXT: xxland 34, 34, 32 470; PWR7-NEXT: vcmpgtub 2, 5, 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, 4 552; PWR7-NEXT: addi 3, 3, .LCPI6_1@toc@l 553; PWR7-NEXT: vsrb 3, 2, 3 554; PWR7-NEXT: vspltisb 0, 15 555; PWR7-NEXT: xxland 35, 35, 0 556; PWR7-NEXT: lxvw4x 0, 0, 3 557; PWR7-NEXT: vsububm 2, 2, 3 558; PWR7-NEXT: vsrb 3, 2, 4 559; PWR7-NEXT: xxland 34, 34, 0 560; PWR7-NEXT: xxland 35, 35, 0 561; PWR7-NEXT: vaddubm 2, 2, 3 562; PWR7-NEXT: vsrb 3, 2, 5 563; PWR7-NEXT: vaddubm 2, 2, 3 564; PWR7-NEXT: xxland 34, 34, 32 565; PWR7-NEXT: vcmpgtub 2, 2, 5 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: vspltisb 5, 4 649; PWR7-NEXT: addi 3, 3, .LCPI7_1@toc@l 650; PWR7-NEXT: vsrb 3, 2, 3 651; PWR7-NEXT: vspltisb 0, 15 652; PWR7-NEXT: vspltisb 1, 5 653; PWR7-NEXT: xxland 35, 35, 0 654; PWR7-NEXT: lxvw4x 0, 0, 3 655; PWR7-NEXT: vsububm 2, 2, 3 656; PWR7-NEXT: vsrb 3, 2, 4 657; PWR7-NEXT: xxland 34, 34, 0 658; PWR7-NEXT: xxland 35, 35, 0 659; PWR7-NEXT: vaddubm 2, 2, 3 660; PWR7-NEXT: vsrb 3, 2, 5 661; PWR7-NEXT: vaddubm 2, 2, 3 662; PWR7-NEXT: xxland 34, 34, 32 663; PWR7-NEXT: vcmpgtub 2, 1, 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: vspltisb 5, 4 747; PWR7-NEXT: addi 3, 3, .LCPI8_1@toc@l 748; PWR7-NEXT: vsrb 3, 2, 3 749; PWR7-NEXT: vspltisb 0, 15 750; PWR7-NEXT: vspltisb 1, 5 751; PWR7-NEXT: xxland 35, 35, 0 752; PWR7-NEXT: lxvw4x 0, 0, 3 753; PWR7-NEXT: vsububm 2, 2, 3 754; PWR7-NEXT: vsrb 3, 2, 4 755; PWR7-NEXT: xxland 34, 34, 0 756; PWR7-NEXT: xxland 35, 35, 0 757; PWR7-NEXT: vaddubm 2, 2, 3 758; PWR7-NEXT: vsrb 3, 2, 5 759; PWR7-NEXT: vaddubm 2, 2, 3 760; PWR7-NEXT: xxland 34, 34, 32 761; PWR7-NEXT: vcmpgtub 2, 2, 1 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: vspltisb 5, 4 845; PWR7-NEXT: addi 3, 3, .LCPI9_1@toc@l 846; PWR7-NEXT: vsrb 3, 2, 3 847; PWR7-NEXT: vspltisb 0, 15 848; PWR7-NEXT: vspltisb 1, 6 849; PWR7-NEXT: xxland 35, 35, 0 850; PWR7-NEXT: lxvw4x 0, 0, 3 851; PWR7-NEXT: vsububm 2, 2, 3 852; PWR7-NEXT: vsrb 3, 2, 4 853; PWR7-NEXT: xxland 34, 34, 0 854; PWR7-NEXT: xxland 35, 35, 0 855; PWR7-NEXT: vaddubm 2, 2, 3 856; PWR7-NEXT: vsrb 3, 2, 5 857; PWR7-NEXT: vaddubm 2, 2, 3 858; PWR7-NEXT: xxland 34, 34, 32 859; PWR7-NEXT: vcmpgtub 2, 1, 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: vspltisb 5, 4 943; PWR7-NEXT: addi 3, 3, .LCPI10_1@toc@l 944; PWR7-NEXT: vsrb 3, 2, 3 945; PWR7-NEXT: vspltisb 0, 15 946; PWR7-NEXT: vspltisb 1, 6 947; PWR7-NEXT: xxland 35, 35, 0 948; PWR7-NEXT: lxvw4x 0, 0, 3 949; PWR7-NEXT: vsububm 2, 2, 3 950; PWR7-NEXT: vsrb 3, 2, 4 951; PWR7-NEXT: xxland 34, 34, 0 952; PWR7-NEXT: xxland 35, 35, 0 953; PWR7-NEXT: vaddubm 2, 2, 3 954; PWR7-NEXT: vsrb 3, 2, 5 955; PWR7-NEXT: vaddubm 2, 2, 3 956; PWR7-NEXT: xxland 34, 34, 32 957; PWR7-NEXT: vcmpgtub 2, 2, 1 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: vspltisb 5, 4 1041; PWR7-NEXT: addi 3, 3, .LCPI11_1@toc@l 1042; PWR7-NEXT: vsrb 3, 2, 3 1043; PWR7-NEXT: vspltisb 0, 15 1044; PWR7-NEXT: vspltisb 1, 7 1045; PWR7-NEXT: xxland 35, 35, 0 1046; PWR7-NEXT: lxvw4x 0, 0, 3 1047; PWR7-NEXT: vsububm 2, 2, 3 1048; PWR7-NEXT: vsrb 3, 2, 4 1049; PWR7-NEXT: xxland 34, 34, 0 1050; PWR7-NEXT: xxland 35, 35, 0 1051; PWR7-NEXT: vaddubm 2, 2, 3 1052; PWR7-NEXT: vsrb 3, 2, 5 1053; PWR7-NEXT: vaddubm 2, 2, 3 1054; PWR7-NEXT: xxland 34, 34, 32 1055; PWR7-NEXT: vcmpgtub 2, 1, 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: addi 3, 3, .LCPI14_1@toc@l 1245; PWR7-NEXT: vsrh 3, 2, 3 1246; PWR7-NEXT: vspltisb 0, 15 1247; PWR7-NEXT: vspltisb 1, 1 1248; PWR7-NEXT: vspltish 6, 8 1249; PWR7-NEXT: xxland 35, 35, 0 1250; PWR7-NEXT: lxvw4x 0, 0, 3 1251; PWR7-NEXT: vsubuhm 2, 2, 3 1252; PWR7-NEXT: xxland 35, 34, 0 1253; PWR7-NEXT: vsrh 2, 2, 4 1254; PWR7-NEXT: xxland 34, 34, 0 1255; PWR7-NEXT: vadduhm 2, 3, 2 1256; PWR7-NEXT: vsrh 3, 2, 5 1257; PWR7-NEXT: vadduhm 2, 2, 3 1258; PWR7-NEXT: vxor 3, 3, 3 1259; PWR7-NEXT: xxland 34, 34, 32 1260; PWR7-NEXT: vmladduhm 2, 2, 1, 3 1261; PWR7-NEXT: vsrh 2, 2, 6 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: vspltish 5, 4 1356; PWR7-NEXT: addi 3, 3, .LCPI15_1@toc@l 1357; PWR7-NEXT: vsrh 3, 2, 3 1358; PWR7-NEXT: vspltisb 0, 15 1359; PWR7-NEXT: vspltisb 1, 1 1360; PWR7-NEXT: vspltish 6, 8 1361; PWR7-NEXT: vspltish 7, 3 1362; PWR7-NEXT: xxland 35, 35, 0 1363; PWR7-NEXT: lxvw4x 0, 0, 3 1364; PWR7-NEXT: vsubuhm 2, 2, 3 1365; PWR7-NEXT: vsrh 3, 2, 4 1366; PWR7-NEXT: xxland 34, 34, 0 1367; PWR7-NEXT: xxland 35, 35, 0 1368; PWR7-NEXT: vadduhm 2, 2, 3 1369; PWR7-NEXT: vsrh 3, 2, 5 1370; PWR7-NEXT: vadduhm 2, 2, 3 1371; PWR7-NEXT: vxor 3, 3, 3 1372; PWR7-NEXT: xxland 34, 34, 32 1373; PWR7-NEXT: vmladduhm 2, 2, 1, 3 1374; PWR7-NEXT: vsrh 2, 2, 6 1375; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4 1469; PWR7-NEXT: addi 3, 3, .LCPI16_1@toc@l 1470; PWR7-NEXT: vsrh 3, 2, 3 1471; PWR7-NEXT: vspltisb 0, 15 1472; PWR7-NEXT: vspltisb 1, 1 1473; PWR7-NEXT: vspltish 6, 8 1474; PWR7-NEXT: vspltish 7, 3 1475; PWR7-NEXT: xxland 35, 35, 0 1476; PWR7-NEXT: lxvw4x 0, 0, 3 1477; PWR7-NEXT: vsubuhm 2, 2, 3 1478; PWR7-NEXT: vsrh 3, 2, 4 1479; PWR7-NEXT: xxland 34, 34, 0 1480; PWR7-NEXT: xxland 35, 35, 0 1481; PWR7-NEXT: vadduhm 2, 2, 3 1482; PWR7-NEXT: vsrh 3, 2, 5 1483; PWR7-NEXT: vadduhm 2, 2, 3 1484; PWR7-NEXT: vxor 3, 3, 3 1485; PWR7-NEXT: xxland 34, 34, 32 1486; PWR7-NEXT: vmladduhm 2, 2, 1, 3 1487; PWR7-NEXT: vsrh 2, 2, 6 1488; PWR7-NEXT: vcmpgtuh 2, 2, 7 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: addi 3, 3, .LCPI17_0@toc@l 1576; PWR7-NEXT: vspltish 4, 2 1577; PWR7-NEXT: lxvw4x 0, 0, 3 1578; PWR7-NEXT: addis 3, 2, .LCPI17_1@toc@ha 1579; PWR7-NEXT: vspltish 5, 4 1580; PWR7-NEXT: addi 3, 3, .LCPI17_1@toc@l 1581; PWR7-NEXT: vsrh 3, 2, 3 1582; PWR7-NEXT: vspltisb 0, 15 1583; PWR7-NEXT: vspltisb 1, 1 1584; PWR7-NEXT: vspltish 6, 8 1585; PWR7-NEXT: xxland 35, 35, 0 1586; PWR7-NEXT: lxvw4x 0, 0, 3 1587; PWR7-NEXT: vsubuhm 2, 2, 3 1588; PWR7-NEXT: vsrh 3, 2, 4 1589; PWR7-NEXT: xxland 34, 34, 0 1590; PWR7-NEXT: xxland 35, 35, 0 1591; PWR7-NEXT: vadduhm 2, 2, 3 1592; PWR7-NEXT: vsrh 3, 2, 5 1593; PWR7-NEXT: vadduhm 2, 2, 3 1594; PWR7-NEXT: vxor 3, 3, 3 1595; PWR7-NEXT: xxland 34, 34, 32 1596; PWR7-NEXT: vmladduhm 2, 2, 1, 3 1597; PWR7-NEXT: vsrh 2, 2, 6 1598; PWR7-NEXT: vcmpgtuh 2, 5, 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: addi 3, 3, .LCPI18_0@toc@l 1686; PWR7-NEXT: vspltish 4, 2 1687; PWR7-NEXT: lxvw4x 0, 0, 3 1688; PWR7-NEXT: addis 3, 2, .LCPI18_1@toc@ha 1689; PWR7-NEXT: vspltish 5, 4 1690; PWR7-NEXT: addi 3, 3, .LCPI18_1@toc@l 1691; PWR7-NEXT: vsrh 3, 2, 3 1692; PWR7-NEXT: vspltisb 0, 15 1693; PWR7-NEXT: vspltisb 1, 1 1694; PWR7-NEXT: vspltish 6, 8 1695; PWR7-NEXT: xxland 35, 35, 0 1696; PWR7-NEXT: lxvw4x 0, 0, 3 1697; PWR7-NEXT: vsubuhm 2, 2, 3 1698; PWR7-NEXT: vsrh 3, 2, 4 1699; PWR7-NEXT: xxland 34, 34, 0 1700; PWR7-NEXT: xxland 35, 35, 0 1701; PWR7-NEXT: vadduhm 2, 2, 3 1702; PWR7-NEXT: vsrh 3, 2, 5 1703; PWR7-NEXT: vadduhm 2, 2, 3 1704; PWR7-NEXT: vxor 3, 3, 3 1705; PWR7-NEXT: xxland 34, 34, 32 1706; PWR7-NEXT: vmladduhm 2, 2, 1, 3 1707; PWR7-NEXT: vsrh 2, 2, 6 1708; PWR7-NEXT: vcmpgtuh 2, 2, 5 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: vspltish 5, 4 1802; PWR7-NEXT: addi 3, 3, .LCPI19_1@toc@l 1803; PWR7-NEXT: vsrh 3, 2, 3 1804; PWR7-NEXT: vspltisb 0, 15 1805; PWR7-NEXT: vspltisb 1, 1 1806; PWR7-NEXT: vspltish 6, 8 1807; PWR7-NEXT: vspltish 7, 5 1808; PWR7-NEXT: xxland 35, 35, 0 1809; PWR7-NEXT: lxvw4x 0, 0, 3 1810; PWR7-NEXT: vsubuhm 2, 2, 3 1811; PWR7-NEXT: vsrh 3, 2, 4 1812; PWR7-NEXT: xxland 34, 34, 0 1813; PWR7-NEXT: xxland 35, 35, 0 1814; PWR7-NEXT: vadduhm 2, 2, 3 1815; PWR7-NEXT: vsrh 3, 2, 5 1816; PWR7-NEXT: vadduhm 2, 2, 3 1817; PWR7-NEXT: vxor 3, 3, 3 1818; PWR7-NEXT: xxland 34, 34, 32 1819; PWR7-NEXT: vmladduhm 2, 2, 1, 3 1820; PWR7-NEXT: vsrh 2, 2, 6 1821; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4 1915; PWR7-NEXT: addi 3, 3, .LCPI20_1@toc@l 1916; PWR7-NEXT: vsrh 3, 2, 3 1917; PWR7-NEXT: vspltisb 0, 15 1918; PWR7-NEXT: vspltisb 1, 1 1919; PWR7-NEXT: vspltish 6, 8 1920; PWR7-NEXT: vspltish 7, 5 1921; PWR7-NEXT: xxland 35, 35, 0 1922; PWR7-NEXT: lxvw4x 0, 0, 3 1923; PWR7-NEXT: vsubuhm 2, 2, 3 1924; PWR7-NEXT: vsrh 3, 2, 4 1925; PWR7-NEXT: xxland 34, 34, 0 1926; PWR7-NEXT: xxland 35, 35, 0 1927; PWR7-NEXT: vadduhm 2, 2, 3 1928; PWR7-NEXT: vsrh 3, 2, 5 1929; PWR7-NEXT: vadduhm 2, 2, 3 1930; PWR7-NEXT: vxor 3, 3, 3 1931; PWR7-NEXT: xxland 34, 34, 32 1932; PWR7-NEXT: vmladduhm 2, 2, 1, 3 1933; PWR7-NEXT: vsrh 2, 2, 6 1934; PWR7-NEXT: vcmpgtuh 2, 2, 7 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: vspltish 5, 4 2028; PWR7-NEXT: addi 3, 3, .LCPI21_1@toc@l 2029; PWR7-NEXT: vsrh 3, 2, 3 2030; PWR7-NEXT: vspltisb 0, 15 2031; PWR7-NEXT: vspltisb 1, 1 2032; PWR7-NEXT: vspltish 6, 8 2033; PWR7-NEXT: vspltish 7, 6 2034; PWR7-NEXT: xxland 35, 35, 0 2035; PWR7-NEXT: lxvw4x 0, 0, 3 2036; PWR7-NEXT: vsubuhm 2, 2, 3 2037; PWR7-NEXT: vsrh 3, 2, 4 2038; PWR7-NEXT: xxland 34, 34, 0 2039; PWR7-NEXT: xxland 35, 35, 0 2040; PWR7-NEXT: vadduhm 2, 2, 3 2041; PWR7-NEXT: vsrh 3, 2, 5 2042; PWR7-NEXT: vadduhm 2, 2, 3 2043; PWR7-NEXT: vxor 3, 3, 3 2044; PWR7-NEXT: xxland 34, 34, 32 2045; PWR7-NEXT: vmladduhm 2, 2, 1, 3 2046; PWR7-NEXT: vsrh 2, 2, 6 2047; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4 2141; PWR7-NEXT: addi 3, 3, .LCPI22_1@toc@l 2142; PWR7-NEXT: vsrh 3, 2, 3 2143; PWR7-NEXT: vspltisb 0, 15 2144; PWR7-NEXT: vspltisb 1, 1 2145; PWR7-NEXT: vspltish 6, 8 2146; PWR7-NEXT: vspltish 7, 6 2147; PWR7-NEXT: xxland 35, 35, 0 2148; PWR7-NEXT: lxvw4x 0, 0, 3 2149; PWR7-NEXT: vsubuhm 2, 2, 3 2150; PWR7-NEXT: vsrh 3, 2, 4 2151; PWR7-NEXT: xxland 34, 34, 0 2152; PWR7-NEXT: xxland 35, 35, 0 2153; PWR7-NEXT: vadduhm 2, 2, 3 2154; PWR7-NEXT: vsrh 3, 2, 5 2155; PWR7-NEXT: vadduhm 2, 2, 3 2156; PWR7-NEXT: vxor 3, 3, 3 2157; PWR7-NEXT: xxland 34, 34, 32 2158; PWR7-NEXT: vmladduhm 2, 2, 1, 3 2159; PWR7-NEXT: vsrh 2, 2, 6 2160; PWR7-NEXT: vcmpgtuh 2, 2, 7 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: vspltish 5, 4 2254; PWR7-NEXT: addi 3, 3, .LCPI23_1@toc@l 2255; PWR7-NEXT: vsrh 3, 2, 3 2256; PWR7-NEXT: vspltisb 0, 15 2257; PWR7-NEXT: vspltisb 1, 1 2258; PWR7-NEXT: vspltish 6, 8 2259; PWR7-NEXT: vspltish 7, 7 2260; PWR7-NEXT: xxland 35, 35, 0 2261; PWR7-NEXT: lxvw4x 0, 0, 3 2262; PWR7-NEXT: vsubuhm 2, 2, 3 2263; PWR7-NEXT: vsrh 3, 2, 4 2264; PWR7-NEXT: xxland 34, 34, 0 2265; PWR7-NEXT: xxland 35, 35, 0 2266; PWR7-NEXT: vadduhm 2, 2, 3 2267; PWR7-NEXT: vsrh 3, 2, 5 2268; PWR7-NEXT: vadduhm 2, 2, 3 2269; PWR7-NEXT: vxor 3, 3, 3 2270; PWR7-NEXT: xxland 34, 34, 32 2271; PWR7-NEXT: vmladduhm 2, 2, 1, 3 2272; PWR7-NEXT: vsrh 2, 2, 6 2273; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4 2367; PWR7-NEXT: addi 3, 3, .LCPI24_1@toc@l 2368; PWR7-NEXT: vsrh 3, 2, 3 2369; PWR7-NEXT: vspltisb 0, 15 2370; PWR7-NEXT: vspltisb 1, 1 2371; PWR7-NEXT: vspltish 6, 8 2372; PWR7-NEXT: vspltish 7, 7 2373; PWR7-NEXT: xxland 35, 35, 0 2374; PWR7-NEXT: lxvw4x 0, 0, 3 2375; PWR7-NEXT: vsubuhm 2, 2, 3 2376; PWR7-NEXT: vsrh 3, 2, 4 2377; PWR7-NEXT: xxland 34, 34, 0 2378; PWR7-NEXT: xxland 35, 35, 0 2379; PWR7-NEXT: vadduhm 2, 2, 3 2380; PWR7-NEXT: vsrh 3, 2, 5 2381; PWR7-NEXT: vadduhm 2, 2, 3 2382; PWR7-NEXT: vxor 3, 3, 3 2383; PWR7-NEXT: xxland 34, 34, 32 2384; PWR7-NEXT: vmladduhm 2, 2, 1, 3 2385; PWR7-NEXT: vsrh 2, 2, 6 2386; PWR7-NEXT: vcmpgtuh 2, 2, 7 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: vspltish 5, 4 2478; PWR7-NEXT: addi 3, 3, .LCPI25_1@toc@l 2479; PWR7-NEXT: vsrh 3, 2, 3 2480; PWR7-NEXT: vspltisb 0, 15 2481; PWR7-NEXT: vspltisb 1, 1 2482; PWR7-NEXT: vspltish 6, 8 2483; PWR7-NEXT: xxland 35, 35, 0 2484; PWR7-NEXT: lxvw4x 0, 0, 3 2485; PWR7-NEXT: vsubuhm 2, 2, 3 2486; PWR7-NEXT: vsrh 3, 2, 4 2487; PWR7-NEXT: xxland 34, 34, 0 2488; PWR7-NEXT: xxland 35, 35, 0 2489; PWR7-NEXT: vadduhm 2, 2, 3 2490; PWR7-NEXT: vsrh 3, 2, 5 2491; PWR7-NEXT: vadduhm 2, 2, 3 2492; PWR7-NEXT: vxor 3, 3, 3 2493; PWR7-NEXT: xxland 34, 34, 32 2494; PWR7-NEXT: vmladduhm 2, 2, 1, 3 2495; PWR7-NEXT: vsrh 2, 2, 6 2496; PWR7-NEXT: vcmpgtuh 2, 6, 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: vspltish 5, 4 2588; PWR7-NEXT: addi 3, 3, .LCPI26_1@toc@l 2589; PWR7-NEXT: vsrh 3, 2, 3 2590; PWR7-NEXT: vspltisb 0, 15 2591; PWR7-NEXT: vspltisb 1, 1 2592; PWR7-NEXT: vspltish 6, 8 2593; PWR7-NEXT: xxland 35, 35, 0 2594; PWR7-NEXT: lxvw4x 0, 0, 3 2595; PWR7-NEXT: vsubuhm 2, 2, 3 2596; PWR7-NEXT: vsrh 3, 2, 4 2597; PWR7-NEXT: xxland 34, 34, 0 2598; PWR7-NEXT: xxland 35, 35, 0 2599; PWR7-NEXT: vadduhm 2, 2, 3 2600; PWR7-NEXT: vsrh 3, 2, 5 2601; PWR7-NEXT: vadduhm 2, 2, 3 2602; PWR7-NEXT: vxor 3, 3, 3 2603; PWR7-NEXT: xxland 34, 34, 32 2604; PWR7-NEXT: vmladduhm 2, 2, 1, 3 2605; PWR7-NEXT: vsrh 2, 2, 6 2606; PWR7-NEXT: vcmpgtuh 2, 2, 6 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: vspltish 5, 4 2700; PWR7-NEXT: addi 3, 3, .LCPI27_1@toc@l 2701; PWR7-NEXT: vsrh 3, 2, 3 2702; PWR7-NEXT: vspltisb 0, 15 2703; PWR7-NEXT: vspltisb 1, 1 2704; PWR7-NEXT: vspltish 6, 8 2705; PWR7-NEXT: vspltish 7, 9 2706; PWR7-NEXT: xxland 35, 35, 0 2707; PWR7-NEXT: lxvw4x 0, 0, 3 2708; PWR7-NEXT: vsubuhm 2, 2, 3 2709; PWR7-NEXT: vsrh 3, 2, 4 2710; PWR7-NEXT: xxland 34, 34, 0 2711; PWR7-NEXT: xxland 35, 35, 0 2712; PWR7-NEXT: vadduhm 2, 2, 3 2713; PWR7-NEXT: vsrh 3, 2, 5 2714; PWR7-NEXT: vadduhm 2, 2, 3 2715; PWR7-NEXT: vxor 3, 3, 3 2716; PWR7-NEXT: xxland 34, 34, 32 2717; PWR7-NEXT: vmladduhm 2, 2, 1, 3 2718; PWR7-NEXT: vsrh 2, 2, 6 2719; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4 2813; PWR7-NEXT: addi 3, 3, .LCPI28_1@toc@l 2814; PWR7-NEXT: vsrh 3, 2, 3 2815; PWR7-NEXT: vspltisb 0, 15 2816; PWR7-NEXT: vspltisb 1, 1 2817; PWR7-NEXT: vspltish 6, 8 2818; PWR7-NEXT: vspltish 7, 9 2819; PWR7-NEXT: xxland 35, 35, 0 2820; PWR7-NEXT: lxvw4x 0, 0, 3 2821; PWR7-NEXT: vsubuhm 2, 2, 3 2822; PWR7-NEXT: vsrh 3, 2, 4 2823; PWR7-NEXT: xxland 34, 34, 0 2824; PWR7-NEXT: xxland 35, 35, 0 2825; PWR7-NEXT: vadduhm 2, 2, 3 2826; PWR7-NEXT: vsrh 3, 2, 5 2827; PWR7-NEXT: vadduhm 2, 2, 3 2828; PWR7-NEXT: vxor 3, 3, 3 2829; PWR7-NEXT: xxland 34, 34, 32 2830; PWR7-NEXT: vmladduhm 2, 2, 1, 3 2831; PWR7-NEXT: vsrh 2, 2, 6 2832; PWR7-NEXT: vcmpgtuh 2, 2, 7 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: vspltish 5, 4 2926; PWR7-NEXT: addi 3, 3, .LCPI29_1@toc@l 2927; PWR7-NEXT: vsrh 3, 2, 3 2928; PWR7-NEXT: vspltisb 0, 15 2929; PWR7-NEXT: vspltisb 1, 1 2930; PWR7-NEXT: vspltish 6, 8 2931; PWR7-NEXT: vspltish 7, 10 2932; PWR7-NEXT: xxland 35, 35, 0 2933; PWR7-NEXT: lxvw4x 0, 0, 3 2934; PWR7-NEXT: vsubuhm 2, 2, 3 2935; PWR7-NEXT: vsrh 3, 2, 4 2936; PWR7-NEXT: xxland 34, 34, 0 2937; PWR7-NEXT: xxland 35, 35, 0 2938; PWR7-NEXT: vadduhm 2, 2, 3 2939; PWR7-NEXT: vsrh 3, 2, 5 2940; PWR7-NEXT: vadduhm 2, 2, 3 2941; PWR7-NEXT: vxor 3, 3, 3 2942; PWR7-NEXT: xxland 34, 34, 32 2943; PWR7-NEXT: vmladduhm 2, 2, 1, 3 2944; PWR7-NEXT: vsrh 2, 2, 6 2945; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4 3039; PWR7-NEXT: addi 3, 3, .LCPI30_1@toc@l 3040; PWR7-NEXT: vsrh 3, 2, 3 3041; PWR7-NEXT: vspltisb 0, 15 3042; PWR7-NEXT: vspltisb 1, 1 3043; PWR7-NEXT: vspltish 6, 8 3044; PWR7-NEXT: vspltish 7, 10 3045; PWR7-NEXT: xxland 35, 35, 0 3046; PWR7-NEXT: lxvw4x 0, 0, 3 3047; PWR7-NEXT: vsubuhm 2, 2, 3 3048; PWR7-NEXT: vsrh 3, 2, 4 3049; PWR7-NEXT: xxland 34, 34, 0 3050; PWR7-NEXT: xxland 35, 35, 0 3051; PWR7-NEXT: vadduhm 2, 2, 3 3052; PWR7-NEXT: vsrh 3, 2, 5 3053; PWR7-NEXT: vadduhm 2, 2, 3 3054; PWR7-NEXT: vxor 3, 3, 3 3055; PWR7-NEXT: xxland 34, 34, 32 3056; PWR7-NEXT: vmladduhm 2, 2, 1, 3 3057; PWR7-NEXT: vsrh 2, 2, 6 3058; PWR7-NEXT: vcmpgtuh 2, 2, 7 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: vspltish 5, 4 3152; PWR7-NEXT: addi 3, 3, .LCPI31_1@toc@l 3153; PWR7-NEXT: vsrh 3, 2, 3 3154; PWR7-NEXT: vspltisb 0, 15 3155; PWR7-NEXT: vspltisb 1, 1 3156; PWR7-NEXT: vspltish 6, 8 3157; PWR7-NEXT: vspltish 7, 11 3158; PWR7-NEXT: xxland 35, 35, 0 3159; PWR7-NEXT: lxvw4x 0, 0, 3 3160; PWR7-NEXT: vsubuhm 2, 2, 3 3161; PWR7-NEXT: vsrh 3, 2, 4 3162; PWR7-NEXT: xxland 34, 34, 0 3163; PWR7-NEXT: xxland 35, 35, 0 3164; PWR7-NEXT: vadduhm 2, 2, 3 3165; PWR7-NEXT: vsrh 3, 2, 5 3166; PWR7-NEXT: vadduhm 2, 2, 3 3167; PWR7-NEXT: vxor 3, 3, 3 3168; PWR7-NEXT: xxland 34, 34, 32 3169; PWR7-NEXT: vmladduhm 2, 2, 1, 3 3170; PWR7-NEXT: vsrh 2, 2, 6 3171; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4 3265; PWR7-NEXT: addi 3, 3, .LCPI32_1@toc@l 3266; PWR7-NEXT: vsrh 3, 2, 3 3267; PWR7-NEXT: vspltisb 0, 15 3268; PWR7-NEXT: vspltisb 1, 1 3269; PWR7-NEXT: vspltish 6, 8 3270; PWR7-NEXT: vspltish 7, 11 3271; PWR7-NEXT: xxland 35, 35, 0 3272; PWR7-NEXT: lxvw4x 0, 0, 3 3273; PWR7-NEXT: vsubuhm 2, 2, 3 3274; PWR7-NEXT: vsrh 3, 2, 4 3275; PWR7-NEXT: xxland 34, 34, 0 3276; PWR7-NEXT: xxland 35, 35, 0 3277; PWR7-NEXT: vadduhm 2, 2, 3 3278; PWR7-NEXT: vsrh 3, 2, 5 3279; PWR7-NEXT: vadduhm 2, 2, 3 3280; PWR7-NEXT: vxor 3, 3, 3 3281; PWR7-NEXT: xxland 34, 34, 32 3282; PWR7-NEXT: vmladduhm 2, 2, 1, 3 3283; PWR7-NEXT: vsrh 2, 2, 6 3284; PWR7-NEXT: vcmpgtuh 2, 2, 7 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: vspltish 5, 4 3378; PWR7-NEXT: addi 3, 3, .LCPI33_1@toc@l 3379; PWR7-NEXT: vsrh 3, 2, 3 3380; PWR7-NEXT: vspltisb 0, 15 3381; PWR7-NEXT: vspltisb 1, 1 3382; PWR7-NEXT: vspltish 6, 8 3383; PWR7-NEXT: vspltish 7, 12 3384; PWR7-NEXT: xxland 35, 35, 0 3385; PWR7-NEXT: lxvw4x 0, 0, 3 3386; PWR7-NEXT: vsubuhm 2, 2, 3 3387; PWR7-NEXT: vsrh 3, 2, 4 3388; PWR7-NEXT: xxland 34, 34, 0 3389; PWR7-NEXT: xxland 35, 35, 0 3390; PWR7-NEXT: vadduhm 2, 2, 3 3391; PWR7-NEXT: vsrh 3, 2, 5 3392; PWR7-NEXT: vadduhm 2, 2, 3 3393; PWR7-NEXT: vxor 3, 3, 3 3394; PWR7-NEXT: xxland 34, 34, 32 3395; PWR7-NEXT: vmladduhm 2, 2, 1, 3 3396; PWR7-NEXT: vsrh 2, 2, 6 3397; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4 3491; PWR7-NEXT: addi 3, 3, .LCPI34_1@toc@l 3492; PWR7-NEXT: vsrh 3, 2, 3 3493; PWR7-NEXT: vspltisb 0, 15 3494; PWR7-NEXT: vspltisb 1, 1 3495; PWR7-NEXT: vspltish 6, 8 3496; PWR7-NEXT: vspltish 7, 12 3497; PWR7-NEXT: xxland 35, 35, 0 3498; PWR7-NEXT: lxvw4x 0, 0, 3 3499; PWR7-NEXT: vsubuhm 2, 2, 3 3500; PWR7-NEXT: vsrh 3, 2, 4 3501; PWR7-NEXT: xxland 34, 34, 0 3502; PWR7-NEXT: xxland 35, 35, 0 3503; PWR7-NEXT: vadduhm 2, 2, 3 3504; PWR7-NEXT: vsrh 3, 2, 5 3505; PWR7-NEXT: vadduhm 2, 2, 3 3506; PWR7-NEXT: vxor 3, 3, 3 3507; PWR7-NEXT: xxland 34, 34, 32 3508; PWR7-NEXT: vmladduhm 2, 2, 1, 3 3509; PWR7-NEXT: vsrh 2, 2, 6 3510; PWR7-NEXT: vcmpgtuh 2, 2, 7 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: vspltish 5, 4 3604; PWR7-NEXT: addi 3, 3, .LCPI35_1@toc@l 3605; PWR7-NEXT: vsrh 3, 2, 3 3606; PWR7-NEXT: vspltisb 0, 15 3607; PWR7-NEXT: vspltisb 1, 1 3608; PWR7-NEXT: vspltish 6, 8 3609; PWR7-NEXT: vspltish 7, 13 3610; PWR7-NEXT: xxland 35, 35, 0 3611; PWR7-NEXT: lxvw4x 0, 0, 3 3612; PWR7-NEXT: vsubuhm 2, 2, 3 3613; PWR7-NEXT: vsrh 3, 2, 4 3614; PWR7-NEXT: xxland 34, 34, 0 3615; PWR7-NEXT: xxland 35, 35, 0 3616; PWR7-NEXT: vadduhm 2, 2, 3 3617; PWR7-NEXT: vsrh 3, 2, 5 3618; PWR7-NEXT: vadduhm 2, 2, 3 3619; PWR7-NEXT: vxor 3, 3, 3 3620; PWR7-NEXT: xxland 34, 34, 32 3621; PWR7-NEXT: vmladduhm 2, 2, 1, 3 3622; PWR7-NEXT: vsrh 2, 2, 6 3623; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4 3717; PWR7-NEXT: addi 3, 3, .LCPI36_1@toc@l 3718; PWR7-NEXT: vsrh 3, 2, 3 3719; PWR7-NEXT: vspltisb 0, 15 3720; PWR7-NEXT: vspltisb 1, 1 3721; PWR7-NEXT: vspltish 6, 8 3722; PWR7-NEXT: vspltish 7, 13 3723; PWR7-NEXT: xxland 35, 35, 0 3724; PWR7-NEXT: lxvw4x 0, 0, 3 3725; PWR7-NEXT: vsubuhm 2, 2, 3 3726; PWR7-NEXT: vsrh 3, 2, 4 3727; PWR7-NEXT: xxland 34, 34, 0 3728; PWR7-NEXT: xxland 35, 35, 0 3729; PWR7-NEXT: vadduhm 2, 2, 3 3730; PWR7-NEXT: vsrh 3, 2, 5 3731; PWR7-NEXT: vadduhm 2, 2, 3 3732; PWR7-NEXT: vxor 3, 3, 3 3733; PWR7-NEXT: xxland 34, 34, 32 3734; PWR7-NEXT: vmladduhm 2, 2, 1, 3 3735; PWR7-NEXT: vsrh 2, 2, 6 3736; PWR7-NEXT: vcmpgtuh 2, 2, 7 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: vspltish 5, 4 3830; PWR7-NEXT: addi 3, 3, .LCPI37_1@toc@l 3831; PWR7-NEXT: vsrh 3, 2, 3 3832; PWR7-NEXT: vspltisb 0, 15 3833; PWR7-NEXT: vspltisb 1, 1 3834; PWR7-NEXT: vspltish 6, 8 3835; PWR7-NEXT: vspltish 7, 14 3836; PWR7-NEXT: xxland 35, 35, 0 3837; PWR7-NEXT: lxvw4x 0, 0, 3 3838; PWR7-NEXT: vsubuhm 2, 2, 3 3839; PWR7-NEXT: vsrh 3, 2, 4 3840; PWR7-NEXT: xxland 34, 34, 0 3841; PWR7-NEXT: xxland 35, 35, 0 3842; PWR7-NEXT: vadduhm 2, 2, 3 3843; PWR7-NEXT: vsrh 3, 2, 5 3844; PWR7-NEXT: vadduhm 2, 2, 3 3845; PWR7-NEXT: vxor 3, 3, 3 3846; PWR7-NEXT: xxland 34, 34, 32 3847; PWR7-NEXT: vmladduhm 2, 2, 1, 3 3848; PWR7-NEXT: vsrh 2, 2, 6 3849; PWR7-NEXT: vcmpgtuh 2, 7, 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: vspltish 5, 4 3943; PWR7-NEXT: addi 3, 3, .LCPI38_1@toc@l 3944; PWR7-NEXT: vsrh 3, 2, 3 3945; PWR7-NEXT: vspltisb 0, 15 3946; PWR7-NEXT: vspltisb 1, 1 3947; PWR7-NEXT: vspltish 6, 8 3948; PWR7-NEXT: vspltish 7, 14 3949; PWR7-NEXT: xxland 35, 35, 0 3950; PWR7-NEXT: lxvw4x 0, 0, 3 3951; PWR7-NEXT: vsubuhm 2, 2, 3 3952; PWR7-NEXT: vsrh 3, 2, 4 3953; PWR7-NEXT: xxland 34, 34, 0 3954; PWR7-NEXT: xxland 35, 35, 0 3955; PWR7-NEXT: vadduhm 2, 2, 3 3956; PWR7-NEXT: vsrh 3, 2, 5 3957; PWR7-NEXT: vadduhm 2, 2, 3 3958; PWR7-NEXT: vxor 3, 3, 3 3959; PWR7-NEXT: xxland 34, 34, 32 3960; PWR7-NEXT: vmladduhm 2, 2, 1, 3 3961; PWR7-NEXT: vsrh 2, 2, 6 3962; PWR7-NEXT: vcmpgtuh 2, 2, 7 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: vspltish 5, 4 4056; PWR7-NEXT: addi 3, 3, .LCPI39_1@toc@l 4057; PWR7-NEXT: vsrh 3, 2, 3 4058; PWR7-NEXT: vspltisb 0, 15 4059; PWR7-NEXT: vspltisb 1, 1 4060; PWR7-NEXT: vspltish 6, 8 4061; PWR7-NEXT: vspltish 7, 15 4062; PWR7-NEXT: xxland 35, 35, 0 4063; PWR7-NEXT: lxvw4x 0, 0, 3 4064; PWR7-NEXT: vsubuhm 2, 2, 3 4065; PWR7-NEXT: vsrh 3, 2, 4 4066; PWR7-NEXT: xxland 34, 34, 0 4067; PWR7-NEXT: xxland 35, 35, 0 4068; PWR7-NEXT: vadduhm 2, 2, 3 4069; PWR7-NEXT: vsrh 3, 2, 5 4070; PWR7-NEXT: vadduhm 2, 2, 3 4071; PWR7-NEXT: vxor 3, 3, 3 4072; PWR7-NEXT: xxland 34, 34, 32 4073; PWR7-NEXT: vmladduhm 2, 2, 1, 3 4074; PWR7-NEXT: vsrh 2, 2, 6 4075; PWR7-NEXT: vcmpgtuh 2, 7, 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: addi 3, 3, .LCPI42_1@toc@l 4277; PWR7-NEXT: vsrw 3, 2, 3 4278; PWR7-NEXT: vspltisb 0, 15 4279; PWR7-NEXT: vspltisb 1, 1 4280; PWR7-NEXT: vspltisw 6, -16 4281; PWR7-NEXT: vspltisw 7, 12 4282; PWR7-NEXT: xxland 35, 35, 0 4283; PWR7-NEXT: lxvw4x 0, 0, 3 4284; PWR7-NEXT: vsubuwm 2, 2, 3 4285; PWR7-NEXT: xxland 35, 34, 0 4286; PWR7-NEXT: vsrw 2, 2, 4 4287; PWR7-NEXT: xxland 34, 34, 0 4288; PWR7-NEXT: vadduwm 2, 3, 2 4289; PWR7-NEXT: vsrw 3, 2, 5 4290; PWR7-NEXT: xxlxor 37, 37, 37 4291; PWR7-NEXT: vadduwm 2, 2, 3 4292; PWR7-NEXT: vrlw 3, 1, 6 4293; PWR7-NEXT: xxland 34, 34, 32 4294; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 4295; PWR7-NEXT: vmulouh 2, 2, 1 4296; PWR7-NEXT: vslw 3, 3, 6 4297; PWR7-NEXT: vadduwm 2, 2, 3 4298; PWR7-NEXT: vadduwm 3, 7, 7 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, 4 4406; PWR7-NEXT: addi 3, 3, .LCPI43_1@toc@l 4407; PWR7-NEXT: vsrw 3, 2, 3 4408; PWR7-NEXT: vspltisb 0, 15 4409; PWR7-NEXT: vspltisb 1, 1 4410; PWR7-NEXT: vspltisw 6, -16 4411; PWR7-NEXT: vspltisw 7, 12 4412; PWR7-NEXT: xxland 35, 35, 0 4413; PWR7-NEXT: lxvw4x 0, 0, 3 4414; PWR7-NEXT: vsubuwm 2, 2, 3 4415; PWR7-NEXT: vsrw 3, 2, 4 4416; PWR7-NEXT: xxland 34, 34, 0 4417; PWR7-NEXT: xxland 35, 35, 0 4418; PWR7-NEXT: vadduwm 2, 2, 3 4419; PWR7-NEXT: vsrw 3, 2, 5 4420; PWR7-NEXT: xxlxor 37, 37, 37 4421; PWR7-NEXT: vadduwm 2, 2, 3 4422; PWR7-NEXT: vrlw 3, 1, 6 4423; PWR7-NEXT: xxland 34, 34, 32 4424; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 4425; PWR7-NEXT: vmulouh 2, 2, 1 4426; PWR7-NEXT: vslw 3, 3, 6 4427; PWR7-NEXT: vadduwm 2, 2, 3 4428; PWR7-NEXT: vadduwm 3, 7, 7 4429; PWR7-NEXT: vspltisw 4, 3 4430; PWR7-NEXT: vsrw 2, 2, 3 4431; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 4537; PWR7-NEXT: addi 3, 3, .LCPI44_1@toc@l 4538; PWR7-NEXT: vsrw 3, 2, 3 4539; PWR7-NEXT: vspltisb 0, 15 4540; PWR7-NEXT: vspltisb 1, 1 4541; PWR7-NEXT: vspltisw 6, -16 4542; PWR7-NEXT: vspltisw 7, 12 4543; PWR7-NEXT: xxland 35, 35, 0 4544; PWR7-NEXT: lxvw4x 0, 0, 3 4545; PWR7-NEXT: vsubuwm 2, 2, 3 4546; PWR7-NEXT: vsrw 3, 2, 4 4547; PWR7-NEXT: xxland 34, 34, 0 4548; PWR7-NEXT: xxland 35, 35, 0 4549; PWR7-NEXT: vadduwm 2, 2, 3 4550; PWR7-NEXT: vsrw 3, 2, 5 4551; PWR7-NEXT: xxlxor 37, 37, 37 4552; PWR7-NEXT: vadduwm 2, 2, 3 4553; PWR7-NEXT: vrlw 3, 1, 6 4554; PWR7-NEXT: xxland 34, 34, 32 4555; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 4556; PWR7-NEXT: vmulouh 2, 2, 1 4557; PWR7-NEXT: vslw 3, 3, 6 4558; PWR7-NEXT: vadduwm 2, 2, 3 4559; PWR7-NEXT: vadduwm 3, 7, 7 4560; PWR7-NEXT: vspltisw 4, 3 4561; PWR7-NEXT: vsrw 2, 2, 3 4562; PWR7-NEXT: vcmpgtuw 2, 2, 4 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: vspltisw 5, 4 4666; PWR7-NEXT: addi 3, 3, .LCPI45_1@toc@l 4667; PWR7-NEXT: vsrw 3, 2, 3 4668; PWR7-NEXT: vspltisb 0, 15 4669; PWR7-NEXT: vspltisb 1, 1 4670; PWR7-NEXT: vspltisw 6, -16 4671; PWR7-NEXT: vspltisw 7, 12 4672; PWR7-NEXT: xxland 35, 35, 0 4673; PWR7-NEXT: lxvw4x 0, 0, 3 4674; PWR7-NEXT: vsubuwm 2, 2, 3 4675; PWR7-NEXT: vsrw 3, 2, 4 4676; PWR7-NEXT: xxland 34, 34, 0 4677; PWR7-NEXT: xxlxor 36, 36, 36 4678; PWR7-NEXT: xxland 35, 35, 0 4679; PWR7-NEXT: vadduwm 2, 2, 3 4680; PWR7-NEXT: vsrw 3, 2, 5 4681; PWR7-NEXT: vadduwm 2, 2, 3 4682; PWR7-NEXT: vrlw 3, 1, 6 4683; PWR7-NEXT: xxland 34, 34, 32 4684; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 4685; PWR7-NEXT: vmulouh 2, 2, 1 4686; PWR7-NEXT: vslw 3, 3, 6 4687; PWR7-NEXT: vadduwm 2, 2, 3 4688; PWR7-NEXT: vadduwm 3, 7, 7 4689; PWR7-NEXT: vsrw 2, 2, 3 4690; PWR7-NEXT: vcmpgtuw 2, 5, 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: vspltisw 5, 4 4794; PWR7-NEXT: addi 3, 3, .LCPI46_1@toc@l 4795; PWR7-NEXT: vsrw 3, 2, 3 4796; PWR7-NEXT: vspltisb 0, 15 4797; PWR7-NEXT: vspltisb 1, 1 4798; PWR7-NEXT: vspltisw 6, -16 4799; PWR7-NEXT: vspltisw 7, 12 4800; PWR7-NEXT: xxland 35, 35, 0 4801; PWR7-NEXT: lxvw4x 0, 0, 3 4802; PWR7-NEXT: vsubuwm 2, 2, 3 4803; PWR7-NEXT: vsrw 3, 2, 4 4804; PWR7-NEXT: xxland 34, 34, 0 4805; PWR7-NEXT: xxlxor 36, 36, 36 4806; PWR7-NEXT: xxland 35, 35, 0 4807; PWR7-NEXT: vadduwm 2, 2, 3 4808; PWR7-NEXT: vsrw 3, 2, 5 4809; PWR7-NEXT: vadduwm 2, 2, 3 4810; PWR7-NEXT: vrlw 3, 1, 6 4811; PWR7-NEXT: xxland 34, 34, 32 4812; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 4813; PWR7-NEXT: vmulouh 2, 2, 1 4814; PWR7-NEXT: vslw 3, 3, 6 4815; PWR7-NEXT: vadduwm 2, 2, 3 4816; PWR7-NEXT: vadduwm 3, 7, 7 4817; PWR7-NEXT: vsrw 2, 2, 3 4818; PWR7-NEXT: vcmpgtuw 2, 2, 5 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, 4 4924; PWR7-NEXT: addi 3, 3, .LCPI47_1@toc@l 4925; PWR7-NEXT: vsrw 3, 2, 3 4926; PWR7-NEXT: vspltisb 0, 15 4927; PWR7-NEXT: vspltisb 1, 1 4928; PWR7-NEXT: vspltisw 6, -16 4929; PWR7-NEXT: vspltisw 7, 12 4930; PWR7-NEXT: xxland 35, 35, 0 4931; PWR7-NEXT: lxvw4x 0, 0, 3 4932; PWR7-NEXT: vsubuwm 2, 2, 3 4933; PWR7-NEXT: vsrw 3, 2, 4 4934; PWR7-NEXT: xxland 34, 34, 0 4935; PWR7-NEXT: xxland 35, 35, 0 4936; PWR7-NEXT: vadduwm 2, 2, 3 4937; PWR7-NEXT: vsrw 3, 2, 5 4938; PWR7-NEXT: xxlxor 37, 37, 37 4939; PWR7-NEXT: vadduwm 2, 2, 3 4940; PWR7-NEXT: vrlw 3, 1, 6 4941; PWR7-NEXT: xxland 34, 34, 32 4942; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 4943; PWR7-NEXT: vmulouh 2, 2, 1 4944; PWR7-NEXT: vslw 3, 3, 6 4945; PWR7-NEXT: vadduwm 2, 2, 3 4946; PWR7-NEXT: vadduwm 3, 7, 7 4947; PWR7-NEXT: vspltisw 4, 5 4948; PWR7-NEXT: vsrw 2, 2, 3 4949; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 5055; PWR7-NEXT: addi 3, 3, .LCPI48_1@toc@l 5056; PWR7-NEXT: vsrw 3, 2, 3 5057; PWR7-NEXT: vspltisb 0, 15 5058; PWR7-NEXT: vspltisb 1, 1 5059; PWR7-NEXT: vspltisw 6, -16 5060; PWR7-NEXT: vspltisw 7, 12 5061; PWR7-NEXT: xxland 35, 35, 0 5062; PWR7-NEXT: lxvw4x 0, 0, 3 5063; PWR7-NEXT: vsubuwm 2, 2, 3 5064; PWR7-NEXT: vsrw 3, 2, 4 5065; PWR7-NEXT: xxland 34, 34, 0 5066; PWR7-NEXT: xxland 35, 35, 0 5067; PWR7-NEXT: vadduwm 2, 2, 3 5068; PWR7-NEXT: vsrw 3, 2, 5 5069; PWR7-NEXT: xxlxor 37, 37, 37 5070; PWR7-NEXT: vadduwm 2, 2, 3 5071; PWR7-NEXT: vrlw 3, 1, 6 5072; PWR7-NEXT: xxland 34, 34, 32 5073; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 5074; PWR7-NEXT: vmulouh 2, 2, 1 5075; PWR7-NEXT: vslw 3, 3, 6 5076; PWR7-NEXT: vadduwm 2, 2, 3 5077; PWR7-NEXT: vadduwm 3, 7, 7 5078; PWR7-NEXT: vspltisw 4, 5 5079; PWR7-NEXT: vsrw 2, 2, 3 5080; PWR7-NEXT: vcmpgtuw 2, 2, 4 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, 4 5186; PWR7-NEXT: addi 3, 3, .LCPI49_1@toc@l 5187; PWR7-NEXT: vsrw 3, 2, 3 5188; PWR7-NEXT: vspltisb 0, 15 5189; PWR7-NEXT: vspltisb 1, 1 5190; PWR7-NEXT: vspltisw 6, -16 5191; PWR7-NEXT: vspltisw 7, 12 5192; PWR7-NEXT: xxland 35, 35, 0 5193; PWR7-NEXT: lxvw4x 0, 0, 3 5194; PWR7-NEXT: vsubuwm 2, 2, 3 5195; PWR7-NEXT: vsrw 3, 2, 4 5196; PWR7-NEXT: xxland 34, 34, 0 5197; PWR7-NEXT: xxland 35, 35, 0 5198; PWR7-NEXT: vadduwm 2, 2, 3 5199; PWR7-NEXT: vsrw 3, 2, 5 5200; PWR7-NEXT: xxlxor 37, 37, 37 5201; PWR7-NEXT: vadduwm 2, 2, 3 5202; PWR7-NEXT: vrlw 3, 1, 6 5203; PWR7-NEXT: xxland 34, 34, 32 5204; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 5205; PWR7-NEXT: vmulouh 2, 2, 1 5206; PWR7-NEXT: vslw 3, 3, 6 5207; PWR7-NEXT: vadduwm 2, 2, 3 5208; PWR7-NEXT: vadduwm 3, 7, 7 5209; PWR7-NEXT: vspltisw 4, 6 5210; PWR7-NEXT: vsrw 2, 2, 3 5211; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 5317; PWR7-NEXT: addi 3, 3, .LCPI50_1@toc@l 5318; PWR7-NEXT: vsrw 3, 2, 3 5319; PWR7-NEXT: vspltisb 0, 15 5320; PWR7-NEXT: vspltisb 1, 1 5321; PWR7-NEXT: vspltisw 6, -16 5322; PWR7-NEXT: vspltisw 7, 12 5323; PWR7-NEXT: xxland 35, 35, 0 5324; PWR7-NEXT: lxvw4x 0, 0, 3 5325; PWR7-NEXT: vsubuwm 2, 2, 3 5326; PWR7-NEXT: vsrw 3, 2, 4 5327; PWR7-NEXT: xxland 34, 34, 0 5328; PWR7-NEXT: xxland 35, 35, 0 5329; PWR7-NEXT: vadduwm 2, 2, 3 5330; PWR7-NEXT: vsrw 3, 2, 5 5331; PWR7-NEXT: xxlxor 37, 37, 37 5332; PWR7-NEXT: vadduwm 2, 2, 3 5333; PWR7-NEXT: vrlw 3, 1, 6 5334; PWR7-NEXT: xxland 34, 34, 32 5335; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 5336; PWR7-NEXT: vmulouh 2, 2, 1 5337; PWR7-NEXT: vslw 3, 3, 6 5338; PWR7-NEXT: vadduwm 2, 2, 3 5339; PWR7-NEXT: vadduwm 3, 7, 7 5340; PWR7-NEXT: vspltisw 4, 6 5341; PWR7-NEXT: vsrw 2, 2, 3 5342; PWR7-NEXT: vcmpgtuw 2, 2, 4 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, 4 5448; PWR7-NEXT: addi 3, 3, .LCPI51_1@toc@l 5449; PWR7-NEXT: vsrw 3, 2, 3 5450; PWR7-NEXT: vspltisb 0, 15 5451; PWR7-NEXT: vspltisb 1, 1 5452; PWR7-NEXT: vspltisw 6, -16 5453; PWR7-NEXT: vspltisw 7, 12 5454; PWR7-NEXT: xxland 35, 35, 0 5455; PWR7-NEXT: lxvw4x 0, 0, 3 5456; PWR7-NEXT: vsubuwm 2, 2, 3 5457; PWR7-NEXT: vsrw 3, 2, 4 5458; PWR7-NEXT: xxland 34, 34, 0 5459; PWR7-NEXT: xxland 35, 35, 0 5460; PWR7-NEXT: vadduwm 2, 2, 3 5461; PWR7-NEXT: vsrw 3, 2, 5 5462; PWR7-NEXT: xxlxor 37, 37, 37 5463; PWR7-NEXT: vadduwm 2, 2, 3 5464; PWR7-NEXT: vrlw 3, 1, 6 5465; PWR7-NEXT: xxland 34, 34, 32 5466; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 5467; PWR7-NEXT: vmulouh 2, 2, 1 5468; PWR7-NEXT: vslw 3, 3, 6 5469; PWR7-NEXT: vadduwm 2, 2, 3 5470; PWR7-NEXT: vadduwm 3, 7, 7 5471; PWR7-NEXT: vspltisw 4, 7 5472; PWR7-NEXT: vsrw 2, 2, 3 5473; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 5579; PWR7-NEXT: addi 3, 3, .LCPI52_1@toc@l 5580; PWR7-NEXT: vsrw 3, 2, 3 5581; PWR7-NEXT: vspltisb 0, 15 5582; PWR7-NEXT: vspltisb 1, 1 5583; PWR7-NEXT: vspltisw 6, -16 5584; PWR7-NEXT: vspltisw 7, 12 5585; PWR7-NEXT: xxland 35, 35, 0 5586; PWR7-NEXT: lxvw4x 0, 0, 3 5587; PWR7-NEXT: vsubuwm 2, 2, 3 5588; PWR7-NEXT: vsrw 3, 2, 4 5589; PWR7-NEXT: xxland 34, 34, 0 5590; PWR7-NEXT: xxland 35, 35, 0 5591; PWR7-NEXT: vadduwm 2, 2, 3 5592; PWR7-NEXT: vsrw 3, 2, 5 5593; PWR7-NEXT: xxlxor 37, 37, 37 5594; PWR7-NEXT: vadduwm 2, 2, 3 5595; PWR7-NEXT: vrlw 3, 1, 6 5596; PWR7-NEXT: xxland 34, 34, 32 5597; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 5598; PWR7-NEXT: vmulouh 2, 2, 1 5599; PWR7-NEXT: vslw 3, 3, 6 5600; PWR7-NEXT: vadduwm 2, 2, 3 5601; PWR7-NEXT: vadduwm 3, 7, 7 5602; PWR7-NEXT: vspltisw 4, 7 5603; PWR7-NEXT: vsrw 2, 2, 3 5604; PWR7-NEXT: vcmpgtuw 2, 2, 4 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, 4 5710; PWR7-NEXT: addi 3, 3, .LCPI53_1@toc@l 5711; PWR7-NEXT: vsrw 3, 2, 3 5712; PWR7-NEXT: vspltisb 0, 15 5713; PWR7-NEXT: vspltisb 1, 1 5714; PWR7-NEXT: vspltisw 6, -16 5715; PWR7-NEXT: vspltisw 7, 12 5716; PWR7-NEXT: xxland 35, 35, 0 5717; PWR7-NEXT: lxvw4x 0, 0, 3 5718; PWR7-NEXT: vsubuwm 2, 2, 3 5719; PWR7-NEXT: vsrw 3, 2, 4 5720; PWR7-NEXT: xxland 34, 34, 0 5721; PWR7-NEXT: xxland 35, 35, 0 5722; PWR7-NEXT: vadduwm 2, 2, 3 5723; PWR7-NEXT: vsrw 3, 2, 5 5724; PWR7-NEXT: xxlxor 37, 37, 37 5725; PWR7-NEXT: vadduwm 2, 2, 3 5726; PWR7-NEXT: vrlw 3, 1, 6 5727; PWR7-NEXT: xxland 34, 34, 32 5728; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 5729; PWR7-NEXT: vmulouh 2, 2, 1 5730; PWR7-NEXT: vslw 3, 3, 6 5731; PWR7-NEXT: vadduwm 2, 2, 3 5732; PWR7-NEXT: vadduwm 3, 7, 7 5733; PWR7-NEXT: vspltisw 4, 8 5734; PWR7-NEXT: vsrw 2, 2, 3 5735; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 5841; PWR7-NEXT: addi 3, 3, .LCPI54_1@toc@l 5842; PWR7-NEXT: vsrw 3, 2, 3 5843; PWR7-NEXT: vspltisb 0, 15 5844; PWR7-NEXT: vspltisb 1, 1 5845; PWR7-NEXT: vspltisw 6, -16 5846; PWR7-NEXT: vspltisw 7, 12 5847; PWR7-NEXT: xxland 35, 35, 0 5848; PWR7-NEXT: lxvw4x 0, 0, 3 5849; PWR7-NEXT: vsubuwm 2, 2, 3 5850; PWR7-NEXT: vsrw 3, 2, 4 5851; PWR7-NEXT: xxland 34, 34, 0 5852; PWR7-NEXT: xxland 35, 35, 0 5853; PWR7-NEXT: vadduwm 2, 2, 3 5854; PWR7-NEXT: vsrw 3, 2, 5 5855; PWR7-NEXT: xxlxor 37, 37, 37 5856; PWR7-NEXT: vadduwm 2, 2, 3 5857; PWR7-NEXT: vrlw 3, 1, 6 5858; PWR7-NEXT: xxland 34, 34, 32 5859; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 5860; PWR7-NEXT: vmulouh 2, 2, 1 5861; PWR7-NEXT: vslw 3, 3, 6 5862; PWR7-NEXT: vadduwm 2, 2, 3 5863; PWR7-NEXT: vadduwm 3, 7, 7 5864; PWR7-NEXT: vspltisw 4, 8 5865; PWR7-NEXT: vsrw 2, 2, 3 5866; PWR7-NEXT: vcmpgtuw 2, 2, 4 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, 4 5972; PWR7-NEXT: addi 3, 3, .LCPI55_1@toc@l 5973; PWR7-NEXT: vsrw 3, 2, 3 5974; PWR7-NEXT: vspltisb 0, 15 5975; PWR7-NEXT: vspltisb 1, 1 5976; PWR7-NEXT: vspltisw 6, -16 5977; PWR7-NEXT: vspltisw 7, 12 5978; PWR7-NEXT: xxland 35, 35, 0 5979; PWR7-NEXT: lxvw4x 0, 0, 3 5980; PWR7-NEXT: vsubuwm 2, 2, 3 5981; PWR7-NEXT: vsrw 3, 2, 4 5982; PWR7-NEXT: xxland 34, 34, 0 5983; PWR7-NEXT: xxland 35, 35, 0 5984; PWR7-NEXT: vadduwm 2, 2, 3 5985; PWR7-NEXT: vsrw 3, 2, 5 5986; PWR7-NEXT: xxlxor 37, 37, 37 5987; PWR7-NEXT: vadduwm 2, 2, 3 5988; PWR7-NEXT: vrlw 3, 1, 6 5989; PWR7-NEXT: xxland 34, 34, 32 5990; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 5991; PWR7-NEXT: vmulouh 2, 2, 1 5992; PWR7-NEXT: vslw 3, 3, 6 5993; PWR7-NEXT: vadduwm 2, 2, 3 5994; PWR7-NEXT: vadduwm 3, 7, 7 5995; PWR7-NEXT: vspltisw 4, 9 5996; PWR7-NEXT: vsrw 2, 2, 3 5997; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 6103; PWR7-NEXT: addi 3, 3, .LCPI56_1@toc@l 6104; PWR7-NEXT: vsrw 3, 2, 3 6105; PWR7-NEXT: vspltisb 0, 15 6106; PWR7-NEXT: vspltisb 1, 1 6107; PWR7-NEXT: vspltisw 6, -16 6108; PWR7-NEXT: vspltisw 7, 12 6109; PWR7-NEXT: xxland 35, 35, 0 6110; PWR7-NEXT: lxvw4x 0, 0, 3 6111; PWR7-NEXT: vsubuwm 2, 2, 3 6112; PWR7-NEXT: vsrw 3, 2, 4 6113; PWR7-NEXT: xxland 34, 34, 0 6114; PWR7-NEXT: xxland 35, 35, 0 6115; PWR7-NEXT: vadduwm 2, 2, 3 6116; PWR7-NEXT: vsrw 3, 2, 5 6117; PWR7-NEXT: xxlxor 37, 37, 37 6118; PWR7-NEXT: vadduwm 2, 2, 3 6119; PWR7-NEXT: vrlw 3, 1, 6 6120; PWR7-NEXT: xxland 34, 34, 32 6121; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 6122; PWR7-NEXT: vmulouh 2, 2, 1 6123; PWR7-NEXT: vslw 3, 3, 6 6124; PWR7-NEXT: vadduwm 2, 2, 3 6125; PWR7-NEXT: vadduwm 3, 7, 7 6126; PWR7-NEXT: vspltisw 4, 9 6127; PWR7-NEXT: vsrw 2, 2, 3 6128; PWR7-NEXT: vcmpgtuw 2, 2, 4 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, 4 6234; PWR7-NEXT: addi 3, 3, .LCPI57_1@toc@l 6235; PWR7-NEXT: vsrw 3, 2, 3 6236; PWR7-NEXT: vspltisb 0, 15 6237; PWR7-NEXT: vspltisb 1, 1 6238; PWR7-NEXT: vspltisw 6, -16 6239; PWR7-NEXT: vspltisw 7, 12 6240; PWR7-NEXT: xxland 35, 35, 0 6241; PWR7-NEXT: lxvw4x 0, 0, 3 6242; PWR7-NEXT: vsubuwm 2, 2, 3 6243; PWR7-NEXT: vsrw 3, 2, 4 6244; PWR7-NEXT: xxland 34, 34, 0 6245; PWR7-NEXT: xxland 35, 35, 0 6246; PWR7-NEXT: vadduwm 2, 2, 3 6247; PWR7-NEXT: vsrw 3, 2, 5 6248; PWR7-NEXT: xxlxor 37, 37, 37 6249; PWR7-NEXT: vadduwm 2, 2, 3 6250; PWR7-NEXT: vrlw 3, 1, 6 6251; PWR7-NEXT: xxland 34, 34, 32 6252; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 6253; PWR7-NEXT: vmulouh 2, 2, 1 6254; PWR7-NEXT: vslw 3, 3, 6 6255; PWR7-NEXT: vadduwm 2, 2, 3 6256; PWR7-NEXT: vadduwm 3, 7, 7 6257; PWR7-NEXT: vspltisw 4, 10 6258; PWR7-NEXT: vsrw 2, 2, 3 6259; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 6365; PWR7-NEXT: addi 3, 3, .LCPI58_1@toc@l 6366; PWR7-NEXT: vsrw 3, 2, 3 6367; PWR7-NEXT: vspltisb 0, 15 6368; PWR7-NEXT: vspltisb 1, 1 6369; PWR7-NEXT: vspltisw 6, -16 6370; PWR7-NEXT: vspltisw 7, 12 6371; PWR7-NEXT: xxland 35, 35, 0 6372; PWR7-NEXT: lxvw4x 0, 0, 3 6373; PWR7-NEXT: vsubuwm 2, 2, 3 6374; PWR7-NEXT: vsrw 3, 2, 4 6375; PWR7-NEXT: xxland 34, 34, 0 6376; PWR7-NEXT: xxland 35, 35, 0 6377; PWR7-NEXT: vadduwm 2, 2, 3 6378; PWR7-NEXT: vsrw 3, 2, 5 6379; PWR7-NEXT: xxlxor 37, 37, 37 6380; PWR7-NEXT: vadduwm 2, 2, 3 6381; PWR7-NEXT: vrlw 3, 1, 6 6382; PWR7-NEXT: xxland 34, 34, 32 6383; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 6384; PWR7-NEXT: vmulouh 2, 2, 1 6385; PWR7-NEXT: vslw 3, 3, 6 6386; PWR7-NEXT: vadduwm 2, 2, 3 6387; PWR7-NEXT: vadduwm 3, 7, 7 6388; PWR7-NEXT: vspltisw 4, 10 6389; PWR7-NEXT: vsrw 2, 2, 3 6390; PWR7-NEXT: vcmpgtuw 2, 2, 4 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, 4 6496; PWR7-NEXT: addi 3, 3, .LCPI59_1@toc@l 6497; PWR7-NEXT: vsrw 3, 2, 3 6498; PWR7-NEXT: vspltisb 0, 15 6499; PWR7-NEXT: vspltisb 1, 1 6500; PWR7-NEXT: vspltisw 6, -16 6501; PWR7-NEXT: vspltisw 7, 12 6502; PWR7-NEXT: xxland 35, 35, 0 6503; PWR7-NEXT: lxvw4x 0, 0, 3 6504; PWR7-NEXT: vsubuwm 2, 2, 3 6505; PWR7-NEXT: vsrw 3, 2, 4 6506; PWR7-NEXT: xxland 34, 34, 0 6507; PWR7-NEXT: xxland 35, 35, 0 6508; PWR7-NEXT: vadduwm 2, 2, 3 6509; PWR7-NEXT: vsrw 3, 2, 5 6510; PWR7-NEXT: xxlxor 37, 37, 37 6511; PWR7-NEXT: vadduwm 2, 2, 3 6512; PWR7-NEXT: vrlw 3, 1, 6 6513; PWR7-NEXT: xxland 34, 34, 32 6514; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 6515; PWR7-NEXT: vmulouh 2, 2, 1 6516; PWR7-NEXT: vslw 3, 3, 6 6517; PWR7-NEXT: vadduwm 2, 2, 3 6518; PWR7-NEXT: vadduwm 3, 7, 7 6519; PWR7-NEXT: vspltisw 4, 11 6520; PWR7-NEXT: vsrw 2, 2, 3 6521; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 6627; PWR7-NEXT: addi 3, 3, .LCPI60_1@toc@l 6628; PWR7-NEXT: vsrw 3, 2, 3 6629; PWR7-NEXT: vspltisb 0, 15 6630; PWR7-NEXT: vspltisb 1, 1 6631; PWR7-NEXT: vspltisw 6, -16 6632; PWR7-NEXT: vspltisw 7, 12 6633; PWR7-NEXT: xxland 35, 35, 0 6634; PWR7-NEXT: lxvw4x 0, 0, 3 6635; PWR7-NEXT: vsubuwm 2, 2, 3 6636; PWR7-NEXT: vsrw 3, 2, 4 6637; PWR7-NEXT: xxland 34, 34, 0 6638; PWR7-NEXT: xxland 35, 35, 0 6639; PWR7-NEXT: vadduwm 2, 2, 3 6640; PWR7-NEXT: vsrw 3, 2, 5 6641; PWR7-NEXT: xxlxor 37, 37, 37 6642; PWR7-NEXT: vadduwm 2, 2, 3 6643; PWR7-NEXT: vrlw 3, 1, 6 6644; PWR7-NEXT: xxland 34, 34, 32 6645; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 6646; PWR7-NEXT: vmulouh 2, 2, 1 6647; PWR7-NEXT: vslw 3, 3, 6 6648; PWR7-NEXT: vadduwm 2, 2, 3 6649; PWR7-NEXT: vadduwm 3, 7, 7 6650; PWR7-NEXT: vspltisw 4, 11 6651; PWR7-NEXT: vsrw 2, 2, 3 6652; PWR7-NEXT: vcmpgtuw 2, 2, 4 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, 4 6756; PWR7-NEXT: addi 3, 3, .LCPI61_1@toc@l 6757; PWR7-NEXT: vsrw 3, 2, 3 6758; PWR7-NEXT: vspltisb 0, 15 6759; PWR7-NEXT: vspltisb 1, 1 6760; PWR7-NEXT: vspltisw 6, -16 6761; PWR7-NEXT: vspltisw 7, 12 6762; PWR7-NEXT: xxland 35, 35, 0 6763; PWR7-NEXT: lxvw4x 0, 0, 3 6764; PWR7-NEXT: vsubuwm 2, 2, 3 6765; PWR7-NEXT: vsrw 3, 2, 4 6766; PWR7-NEXT: xxland 34, 34, 0 6767; PWR7-NEXT: xxlxor 36, 36, 36 6768; PWR7-NEXT: xxland 35, 35, 0 6769; PWR7-NEXT: vadduwm 2, 2, 3 6770; PWR7-NEXT: vsrw 3, 2, 5 6771; PWR7-NEXT: vadduwm 2, 2, 3 6772; PWR7-NEXT: vrlw 3, 1, 6 6773; PWR7-NEXT: xxland 34, 34, 32 6774; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 6775; PWR7-NEXT: vmulouh 2, 2, 1 6776; PWR7-NEXT: vslw 3, 3, 6 6777; PWR7-NEXT: vadduwm 2, 2, 3 6778; PWR7-NEXT: vadduwm 3, 7, 7 6779; PWR7-NEXT: vsrw 2, 2, 3 6780; PWR7-NEXT: vcmpgtuw 2, 7, 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, 4 6884; PWR7-NEXT: addi 3, 3, .LCPI62_1@toc@l 6885; PWR7-NEXT: vsrw 3, 2, 3 6886; PWR7-NEXT: vspltisb 0, 15 6887; PWR7-NEXT: vspltisb 1, 1 6888; PWR7-NEXT: vspltisw 6, -16 6889; PWR7-NEXT: vspltisw 7, 12 6890; PWR7-NEXT: xxland 35, 35, 0 6891; PWR7-NEXT: lxvw4x 0, 0, 3 6892; PWR7-NEXT: vsubuwm 2, 2, 3 6893; PWR7-NEXT: vsrw 3, 2, 4 6894; PWR7-NEXT: xxland 34, 34, 0 6895; PWR7-NEXT: xxlxor 36, 36, 36 6896; PWR7-NEXT: xxland 35, 35, 0 6897; PWR7-NEXT: vadduwm 2, 2, 3 6898; PWR7-NEXT: vsrw 3, 2, 5 6899; PWR7-NEXT: vadduwm 2, 2, 3 6900; PWR7-NEXT: vrlw 3, 1, 6 6901; PWR7-NEXT: xxland 34, 34, 32 6902; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 6903; PWR7-NEXT: vmulouh 2, 2, 1 6904; PWR7-NEXT: vslw 3, 3, 6 6905; PWR7-NEXT: vadduwm 2, 2, 3 6906; PWR7-NEXT: vadduwm 3, 7, 7 6907; PWR7-NEXT: vsrw 2, 2, 3 6908; PWR7-NEXT: vcmpgtuw 2, 2, 7 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, 4 7014; PWR7-NEXT: addi 3, 3, .LCPI63_1@toc@l 7015; PWR7-NEXT: vsrw 3, 2, 3 7016; PWR7-NEXT: vspltisb 0, 15 7017; PWR7-NEXT: vspltisb 1, 1 7018; PWR7-NEXT: vspltisw 6, -16 7019; PWR7-NEXT: vspltisw 7, 12 7020; PWR7-NEXT: xxland 35, 35, 0 7021; PWR7-NEXT: lxvw4x 0, 0, 3 7022; PWR7-NEXT: vsubuwm 2, 2, 3 7023; PWR7-NEXT: vsrw 3, 2, 4 7024; PWR7-NEXT: xxland 34, 34, 0 7025; PWR7-NEXT: xxland 35, 35, 0 7026; PWR7-NEXT: vadduwm 2, 2, 3 7027; PWR7-NEXT: vsrw 3, 2, 5 7028; PWR7-NEXT: xxlxor 37, 37, 37 7029; PWR7-NEXT: vadduwm 2, 2, 3 7030; PWR7-NEXT: vrlw 3, 1, 6 7031; PWR7-NEXT: xxland 34, 34, 32 7032; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 7033; PWR7-NEXT: vmulouh 2, 2, 1 7034; PWR7-NEXT: vslw 3, 3, 6 7035; PWR7-NEXT: vadduwm 2, 2, 3 7036; PWR7-NEXT: vadduwm 3, 7, 7 7037; PWR7-NEXT: vspltisw 4, 13 7038; PWR7-NEXT: vsrw 2, 2, 3 7039; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 7145; PWR7-NEXT: addi 3, 3, .LCPI64_1@toc@l 7146; PWR7-NEXT: vsrw 3, 2, 3 7147; PWR7-NEXT: vspltisb 0, 15 7148; PWR7-NEXT: vspltisb 1, 1 7149; PWR7-NEXT: vspltisw 6, -16 7150; PWR7-NEXT: vspltisw 7, 12 7151; PWR7-NEXT: xxland 35, 35, 0 7152; PWR7-NEXT: lxvw4x 0, 0, 3 7153; PWR7-NEXT: vsubuwm 2, 2, 3 7154; PWR7-NEXT: vsrw 3, 2, 4 7155; PWR7-NEXT: xxland 34, 34, 0 7156; PWR7-NEXT: xxland 35, 35, 0 7157; PWR7-NEXT: vadduwm 2, 2, 3 7158; PWR7-NEXT: vsrw 3, 2, 5 7159; PWR7-NEXT: xxlxor 37, 37, 37 7160; PWR7-NEXT: vadduwm 2, 2, 3 7161; PWR7-NEXT: vrlw 3, 1, 6 7162; PWR7-NEXT: xxland 34, 34, 32 7163; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 7164; PWR7-NEXT: vmulouh 2, 2, 1 7165; PWR7-NEXT: vslw 3, 3, 6 7166; PWR7-NEXT: vadduwm 2, 2, 3 7167; PWR7-NEXT: vadduwm 3, 7, 7 7168; PWR7-NEXT: vspltisw 4, 13 7169; PWR7-NEXT: vsrw 2, 2, 3 7170; PWR7-NEXT: vcmpgtuw 2, 2, 4 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, 4 7276; PWR7-NEXT: addi 3, 3, .LCPI65_1@toc@l 7277; PWR7-NEXT: vsrw 3, 2, 3 7278; PWR7-NEXT: vspltisb 0, 15 7279; PWR7-NEXT: vspltisb 1, 1 7280; PWR7-NEXT: vspltisw 6, -16 7281; PWR7-NEXT: vspltisw 7, 12 7282; PWR7-NEXT: xxland 35, 35, 0 7283; PWR7-NEXT: lxvw4x 0, 0, 3 7284; PWR7-NEXT: vsubuwm 2, 2, 3 7285; PWR7-NEXT: vsrw 3, 2, 4 7286; PWR7-NEXT: xxland 34, 34, 0 7287; PWR7-NEXT: xxland 35, 35, 0 7288; PWR7-NEXT: vadduwm 2, 2, 3 7289; PWR7-NEXT: vsrw 3, 2, 5 7290; PWR7-NEXT: xxlxor 37, 37, 37 7291; PWR7-NEXT: vadduwm 2, 2, 3 7292; PWR7-NEXT: vrlw 3, 1, 6 7293; PWR7-NEXT: xxland 34, 34, 32 7294; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 7295; PWR7-NEXT: vmulouh 2, 2, 1 7296; PWR7-NEXT: vslw 3, 3, 6 7297; PWR7-NEXT: vadduwm 2, 2, 3 7298; PWR7-NEXT: vadduwm 3, 7, 7 7299; PWR7-NEXT: vspltisw 4, 14 7300; PWR7-NEXT: vsrw 2, 2, 3 7301; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 7407; PWR7-NEXT: addi 3, 3, .LCPI66_1@toc@l 7408; PWR7-NEXT: vsrw 3, 2, 3 7409; PWR7-NEXT: vspltisb 0, 15 7410; PWR7-NEXT: vspltisb 1, 1 7411; PWR7-NEXT: vspltisw 6, -16 7412; PWR7-NEXT: vspltisw 7, 12 7413; PWR7-NEXT: xxland 35, 35, 0 7414; PWR7-NEXT: lxvw4x 0, 0, 3 7415; PWR7-NEXT: vsubuwm 2, 2, 3 7416; PWR7-NEXT: vsrw 3, 2, 4 7417; PWR7-NEXT: xxland 34, 34, 0 7418; PWR7-NEXT: xxland 35, 35, 0 7419; PWR7-NEXT: vadduwm 2, 2, 3 7420; PWR7-NEXT: vsrw 3, 2, 5 7421; PWR7-NEXT: xxlxor 37, 37, 37 7422; PWR7-NEXT: vadduwm 2, 2, 3 7423; PWR7-NEXT: vrlw 3, 1, 6 7424; PWR7-NEXT: xxland 34, 34, 32 7425; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 7426; PWR7-NEXT: vmulouh 2, 2, 1 7427; PWR7-NEXT: vslw 3, 3, 6 7428; PWR7-NEXT: vadduwm 2, 2, 3 7429; PWR7-NEXT: vadduwm 3, 7, 7 7430; PWR7-NEXT: vspltisw 4, 14 7431; PWR7-NEXT: vsrw 2, 2, 3 7432; PWR7-NEXT: vcmpgtuw 2, 2, 4 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, 4 7538; PWR7-NEXT: addi 3, 3, .LCPI67_1@toc@l 7539; PWR7-NEXT: vsrw 3, 2, 3 7540; PWR7-NEXT: vspltisb 0, 15 7541; PWR7-NEXT: vspltisb 1, 1 7542; PWR7-NEXT: vspltisw 6, -16 7543; PWR7-NEXT: vspltisw 7, 12 7544; PWR7-NEXT: xxland 35, 35, 0 7545; PWR7-NEXT: lxvw4x 0, 0, 3 7546; PWR7-NEXT: vsubuwm 2, 2, 3 7547; PWR7-NEXT: vsrw 3, 2, 4 7548; PWR7-NEXT: xxland 34, 34, 0 7549; PWR7-NEXT: xxland 35, 35, 0 7550; PWR7-NEXT: vadduwm 2, 2, 3 7551; PWR7-NEXT: vsrw 3, 2, 5 7552; PWR7-NEXT: xxlxor 37, 37, 37 7553; PWR7-NEXT: vadduwm 2, 2, 3 7554; PWR7-NEXT: vrlw 3, 1, 6 7555; PWR7-NEXT: xxland 34, 34, 32 7556; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 7557; PWR7-NEXT: vmulouh 2, 2, 1 7558; PWR7-NEXT: vslw 3, 3, 6 7559; PWR7-NEXT: vadduwm 2, 2, 3 7560; PWR7-NEXT: vadduwm 3, 7, 7 7561; PWR7-NEXT: vspltisw 4, 15 7562; PWR7-NEXT: vsrw 2, 2, 3 7563; PWR7-NEXT: vcmpgtuw 2, 4, 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, 4 7669; PWR7-NEXT: addi 3, 3, .LCPI68_1@toc@l 7670; PWR7-NEXT: vsrw 3, 2, 3 7671; PWR7-NEXT: vspltisb 0, 15 7672; PWR7-NEXT: vspltisb 1, 1 7673; PWR7-NEXT: vspltisw 6, -16 7674; PWR7-NEXT: vspltisw 7, 12 7675; PWR7-NEXT: xxland 35, 35, 0 7676; PWR7-NEXT: lxvw4x 0, 0, 3 7677; PWR7-NEXT: vsubuwm 2, 2, 3 7678; PWR7-NEXT: vsrw 3, 2, 4 7679; PWR7-NEXT: xxland 34, 34, 0 7680; PWR7-NEXT: xxland 35, 35, 0 7681; PWR7-NEXT: vadduwm 2, 2, 3 7682; PWR7-NEXT: vsrw 3, 2, 5 7683; PWR7-NEXT: xxlxor 37, 37, 37 7684; PWR7-NEXT: vadduwm 2, 2, 3 7685; PWR7-NEXT: vrlw 3, 1, 6 7686; PWR7-NEXT: xxland 34, 34, 32 7687; PWR7-NEXT: vmsumuhm 3, 2, 3, 5 7688; PWR7-NEXT: vmulouh 2, 2, 1 7689; PWR7-NEXT: vslw 3, 3, 6 7690; PWR7-NEXT: vadduwm 2, 2, 3 7691; PWR7-NEXT: vadduwm 3, 7, 7 7692; PWR7-NEXT: vspltisw 4, 15 7693; PWR7-NEXT: vsrw 2, 2, 3 7694; PWR7-NEXT: vcmpgtuw 2, 2, 4 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, 4 7802; PWR7-NEXT: addi 3, 3, .LCPI69_1@toc@l 7803; PWR7-NEXT: vsrw 3, 2, 3 7804; PWR7-NEXT: vspltisb 0, 15 7805; PWR7-NEXT: vspltisb 1, 1 7806; PWR7-NEXT: vspltisw 6, -16 7807; PWR7-NEXT: vspltisw 7, 12 7808; PWR7-NEXT: vspltisw 8, 8 7809; PWR7-NEXT: xxland 35, 35, 0 7810; PWR7-NEXT: lxvw4x 0, 0, 3 7811; PWR7-NEXT: vsubuwm 2, 2, 3 7812; PWR7-NEXT: vsrw 3, 2, 4 7813; PWR7-NEXT: xxland 34, 34, 0 7814; PWR7-NEXT: xxlxor 36, 36, 36 7815; PWR7-NEXT: xxland 35, 35, 0 7816; PWR7-NEXT: vadduwm 2, 2, 3 7817; PWR7-NEXT: vsrw 3, 2, 5 7818; PWR7-NEXT: vadduwm 2, 2, 3 7819; PWR7-NEXT: vrlw 3, 1, 6 7820; PWR7-NEXT: xxland 34, 34, 32 7821; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 7822; PWR7-NEXT: vmulouh 2, 2, 1 7823; PWR7-NEXT: vslw 3, 3, 6 7824; PWR7-NEXT: vadduwm 2, 2, 3 7825; PWR7-NEXT: vadduwm 3, 7, 7 7826; PWR7-NEXT: vsrw 2, 2, 3 7827; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 7938; PWR7-NEXT: addi 3, 3, .LCPI70_1@toc@l 7939; PWR7-NEXT: vsrw 3, 2, 3 7940; PWR7-NEXT: vspltisb 0, 15 7941; PWR7-NEXT: vspltisb 1, 1 7942; PWR7-NEXT: vspltisw 6, -16 7943; PWR7-NEXT: vspltisw 7, 12 7944; PWR7-NEXT: vspltisw 8, 8 7945; PWR7-NEXT: xxland 35, 35, 0 7946; PWR7-NEXT: lxvw4x 0, 0, 3 7947; PWR7-NEXT: vsubuwm 2, 2, 3 7948; PWR7-NEXT: vsrw 3, 2, 4 7949; PWR7-NEXT: xxland 34, 34, 0 7950; PWR7-NEXT: xxlxor 36, 36, 36 7951; PWR7-NEXT: xxland 35, 35, 0 7952; PWR7-NEXT: vadduwm 2, 2, 3 7953; PWR7-NEXT: vsrw 3, 2, 5 7954; PWR7-NEXT: vadduwm 2, 2, 3 7955; PWR7-NEXT: vrlw 3, 1, 6 7956; PWR7-NEXT: xxland 34, 34, 32 7957; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 7958; PWR7-NEXT: vmulouh 2, 2, 1 7959; PWR7-NEXT: vslw 3, 3, 6 7960; PWR7-NEXT: vadduwm 2, 2, 3 7961; PWR7-NEXT: vadduwm 3, 7, 7 7962; PWR7-NEXT: vsrw 2, 2, 3 7963; PWR7-NEXT: vadduwm 3, 8, 8 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 4, 2 8069; PWR7-NEXT: lxvw4x 0, 0, 3 8070; PWR7-NEXT: addis 3, 2, .LCPI71_1@toc@ha 8071; PWR7-NEXT: vspltisw 5, 4 8072; PWR7-NEXT: addi 3, 3, .LCPI71_1@toc@l 8073; PWR7-NEXT: vsrw 8, 2, 3 8074; PWR7-NEXT: vspltisb 0, 15 8075; PWR7-NEXT: vspltisb 1, 1 8076; PWR7-NEXT: vspltisw 6, -16 8077; PWR7-NEXT: vspltisw 7, 12 8078; PWR7-NEXT: vsubuwm 3, 3, 6 8079; PWR7-NEXT: xxland 40, 40, 0 8080; PWR7-NEXT: lxvw4x 0, 0, 3 8081; PWR7-NEXT: vsubuwm 2, 2, 8 8082; PWR7-NEXT: vsrw 4, 2, 4 8083; PWR7-NEXT: xxland 34, 34, 0 8084; PWR7-NEXT: xxland 36, 36, 0 8085; PWR7-NEXT: vadduwm 2, 2, 4 8086; PWR7-NEXT: vsrw 4, 2, 5 8087; PWR7-NEXT: xxlxor 37, 37, 37 8088; PWR7-NEXT: vadduwm 2, 2, 4 8089; PWR7-NEXT: vrlw 4, 1, 6 8090; PWR7-NEXT: xxland 34, 34, 32 8091; PWR7-NEXT: vmsumuhm 4, 2, 4, 5 8092; PWR7-NEXT: vmulouh 2, 2, 1 8093; PWR7-NEXT: vslw 4, 4, 6 8094; PWR7-NEXT: vadduwm 2, 2, 4 8095; PWR7-NEXT: vadduwm 4, 7, 7 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 4, 2 8204; PWR7-NEXT: lxvw4x 0, 0, 3 8205; PWR7-NEXT: addis 3, 2, .LCPI72_1@toc@ha 8206; PWR7-NEXT: vspltisw 5, 4 8207; PWR7-NEXT: addi 3, 3, .LCPI72_1@toc@l 8208; PWR7-NEXT: vsrw 8, 2, 3 8209; PWR7-NEXT: vspltisb 0, 15 8210; PWR7-NEXT: vspltisb 1, 1 8211; PWR7-NEXT: vspltisw 6, -16 8212; PWR7-NEXT: vspltisw 7, 12 8213; PWR7-NEXT: vsubuwm 3, 3, 6 8214; PWR7-NEXT: xxland 40, 40, 0 8215; PWR7-NEXT: lxvw4x 0, 0, 3 8216; PWR7-NEXT: vsubuwm 2, 2, 8 8217; PWR7-NEXT: vsrw 4, 2, 4 8218; PWR7-NEXT: xxland 34, 34, 0 8219; PWR7-NEXT: xxland 36, 36, 0 8220; PWR7-NEXT: vadduwm 2, 2, 4 8221; PWR7-NEXT: vsrw 4, 2, 5 8222; PWR7-NEXT: xxlxor 37, 37, 37 8223; PWR7-NEXT: vadduwm 2, 2, 4 8224; PWR7-NEXT: vrlw 4, 1, 6 8225; PWR7-NEXT: xxland 34, 34, 32 8226; PWR7-NEXT: vmsumuhm 4, 2, 4, 5 8227; PWR7-NEXT: vmulouh 2, 2, 1 8228; PWR7-NEXT: vslw 4, 4, 6 8229; PWR7-NEXT: vadduwm 2, 2, 4 8230; PWR7-NEXT: vadduwm 4, 7, 7 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, 4 8344; PWR7-NEXT: addi 3, 3, .LCPI73_1@toc@l 8345; PWR7-NEXT: vsrw 3, 2, 3 8346; PWR7-NEXT: vspltisb 0, 15 8347; PWR7-NEXT: vspltisb 1, 1 8348; PWR7-NEXT: vspltisw 6, -16 8349; PWR7-NEXT: vspltisw 7, 12 8350; PWR7-NEXT: vspltisw 8, 9 8351; PWR7-NEXT: xxland 35, 35, 0 8352; PWR7-NEXT: lxvw4x 0, 0, 3 8353; PWR7-NEXT: vsubuwm 2, 2, 3 8354; PWR7-NEXT: vsrw 3, 2, 4 8355; PWR7-NEXT: xxland 34, 34, 0 8356; PWR7-NEXT: xxlxor 36, 36, 36 8357; PWR7-NEXT: xxland 35, 35, 0 8358; PWR7-NEXT: vadduwm 2, 2, 3 8359; PWR7-NEXT: vsrw 3, 2, 5 8360; PWR7-NEXT: vadduwm 2, 2, 3 8361; PWR7-NEXT: vrlw 3, 1, 6 8362; PWR7-NEXT: xxland 34, 34, 32 8363; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 8364; PWR7-NEXT: vmulouh 2, 2, 1 8365; PWR7-NEXT: vslw 3, 3, 6 8366; PWR7-NEXT: vadduwm 2, 2, 3 8367; PWR7-NEXT: vadduwm 3, 7, 7 8368; PWR7-NEXT: vsrw 2, 2, 3 8369; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 8480; PWR7-NEXT: addi 3, 3, .LCPI74_1@toc@l 8481; PWR7-NEXT: vsrw 3, 2, 3 8482; PWR7-NEXT: vspltisb 0, 15 8483; PWR7-NEXT: vspltisb 1, 1 8484; PWR7-NEXT: vspltisw 6, -16 8485; PWR7-NEXT: vspltisw 7, 12 8486; PWR7-NEXT: vspltisw 8, 9 8487; PWR7-NEXT: xxland 35, 35, 0 8488; PWR7-NEXT: lxvw4x 0, 0, 3 8489; PWR7-NEXT: vsubuwm 2, 2, 3 8490; PWR7-NEXT: vsrw 3, 2, 4 8491; PWR7-NEXT: xxland 34, 34, 0 8492; PWR7-NEXT: xxlxor 36, 36, 36 8493; PWR7-NEXT: xxland 35, 35, 0 8494; PWR7-NEXT: vadduwm 2, 2, 3 8495; PWR7-NEXT: vsrw 3, 2, 5 8496; PWR7-NEXT: vadduwm 2, 2, 3 8497; PWR7-NEXT: vrlw 3, 1, 6 8498; PWR7-NEXT: xxland 34, 34, 32 8499; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 8500; PWR7-NEXT: vmulouh 2, 2, 1 8501; PWR7-NEXT: vslw 3, 3, 6 8502; PWR7-NEXT: vadduwm 2, 2, 3 8503; PWR7-NEXT: vadduwm 3, 7, 7 8504; PWR7-NEXT: vsrw 2, 2, 3 8505; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 8616; PWR7-NEXT: addi 3, 3, .LCPI75_1@toc@l 8617; PWR7-NEXT: vsrw 3, 2, 3 8618; PWR7-NEXT: vspltisb 0, 15 8619; PWR7-NEXT: vspltisb 1, 1 8620; PWR7-NEXT: vspltisw 6, -16 8621; PWR7-NEXT: vspltisw 7, 12 8622; PWR7-NEXT: vspltisw 8, 3 8623; PWR7-NEXT: xxland 35, 35, 0 8624; PWR7-NEXT: lxvw4x 0, 0, 3 8625; PWR7-NEXT: vsubuwm 2, 2, 3 8626; PWR7-NEXT: vsrw 3, 2, 4 8627; PWR7-NEXT: xxland 34, 34, 0 8628; PWR7-NEXT: xxlxor 36, 36, 36 8629; PWR7-NEXT: xxland 35, 35, 0 8630; PWR7-NEXT: vadduwm 2, 2, 3 8631; PWR7-NEXT: vsrw 3, 2, 5 8632; PWR7-NEXT: vadduwm 2, 2, 3 8633; PWR7-NEXT: vrlw 3, 1, 6 8634; PWR7-NEXT: xxland 34, 34, 32 8635; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 8636; PWR7-NEXT: vmulouh 2, 2, 1 8637; PWR7-NEXT: vslw 3, 3, 6 8638; PWR7-NEXT: vadduwm 2, 2, 3 8639; PWR7-NEXT: vadduwm 3, 7, 7 8640; PWR7-NEXT: vsrw 2, 2, 3 8641; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 8754; PWR7-NEXT: addi 3, 3, .LCPI76_1@toc@l 8755; PWR7-NEXT: vsrw 3, 2, 3 8756; PWR7-NEXT: vspltisb 0, 15 8757; PWR7-NEXT: vspltisb 1, 1 8758; PWR7-NEXT: vspltisw 6, -16 8759; PWR7-NEXT: vspltisw 7, 12 8760; PWR7-NEXT: vspltisw 8, 3 8761; PWR7-NEXT: xxland 35, 35, 0 8762; PWR7-NEXT: lxvw4x 0, 0, 3 8763; PWR7-NEXT: vsubuwm 2, 2, 3 8764; PWR7-NEXT: vsrw 3, 2, 4 8765; PWR7-NEXT: xxland 34, 34, 0 8766; PWR7-NEXT: xxlxor 36, 36, 36 8767; PWR7-NEXT: xxland 35, 35, 0 8768; PWR7-NEXT: vadduwm 2, 2, 3 8769; PWR7-NEXT: vsrw 3, 2, 5 8770; PWR7-NEXT: vadduwm 2, 2, 3 8771; PWR7-NEXT: vrlw 3, 1, 6 8772; PWR7-NEXT: xxland 34, 34, 32 8773; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 8774; PWR7-NEXT: vmulouh 2, 2, 1 8775; PWR7-NEXT: vslw 3, 3, 6 8776; PWR7-NEXT: vadduwm 2, 2, 3 8777; PWR7-NEXT: vadduwm 3, 7, 7 8778; PWR7-NEXT: vsrw 2, 2, 3 8779; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 8892; PWR7-NEXT: addi 3, 3, .LCPI77_1@toc@l 8893; PWR7-NEXT: vsrw 3, 2, 3 8894; PWR7-NEXT: vspltisb 0, 15 8895; PWR7-NEXT: vspltisb 1, 1 8896; PWR7-NEXT: vspltisw 6, -16 8897; PWR7-NEXT: vspltisw 7, 12 8898; PWR7-NEXT: vspltisw 8, 10 8899; PWR7-NEXT: xxland 35, 35, 0 8900; PWR7-NEXT: lxvw4x 0, 0, 3 8901; PWR7-NEXT: vsubuwm 2, 2, 3 8902; PWR7-NEXT: vsrw 3, 2, 4 8903; PWR7-NEXT: xxland 34, 34, 0 8904; PWR7-NEXT: xxlxor 36, 36, 36 8905; PWR7-NEXT: xxland 35, 35, 0 8906; PWR7-NEXT: vadduwm 2, 2, 3 8907; PWR7-NEXT: vsrw 3, 2, 5 8908; PWR7-NEXT: vadduwm 2, 2, 3 8909; PWR7-NEXT: vrlw 3, 1, 6 8910; PWR7-NEXT: xxland 34, 34, 32 8911; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 8912; PWR7-NEXT: vmulouh 2, 2, 1 8913; PWR7-NEXT: vslw 3, 3, 6 8914; PWR7-NEXT: vadduwm 2, 2, 3 8915; PWR7-NEXT: vadduwm 3, 7, 7 8916; PWR7-NEXT: vsrw 2, 2, 3 8917; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 9028; PWR7-NEXT: addi 3, 3, .LCPI78_1@toc@l 9029; PWR7-NEXT: vsrw 3, 2, 3 9030; PWR7-NEXT: vspltisb 0, 15 9031; PWR7-NEXT: vspltisb 1, 1 9032; PWR7-NEXT: vspltisw 6, -16 9033; PWR7-NEXT: vspltisw 7, 12 9034; PWR7-NEXT: vspltisw 8, 10 9035; PWR7-NEXT: xxland 35, 35, 0 9036; PWR7-NEXT: lxvw4x 0, 0, 3 9037; PWR7-NEXT: vsubuwm 2, 2, 3 9038; PWR7-NEXT: vsrw 3, 2, 4 9039; PWR7-NEXT: xxland 34, 34, 0 9040; PWR7-NEXT: xxlxor 36, 36, 36 9041; PWR7-NEXT: xxland 35, 35, 0 9042; PWR7-NEXT: vadduwm 2, 2, 3 9043; PWR7-NEXT: vsrw 3, 2, 5 9044; PWR7-NEXT: vadduwm 2, 2, 3 9045; PWR7-NEXT: vrlw 3, 1, 6 9046; PWR7-NEXT: xxland 34, 34, 32 9047; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 9048; PWR7-NEXT: vmulouh 2, 2, 1 9049; PWR7-NEXT: vslw 3, 3, 6 9050; PWR7-NEXT: vadduwm 2, 2, 3 9051; PWR7-NEXT: vadduwm 3, 7, 7 9052; PWR7-NEXT: vsrw 2, 2, 3 9053; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 9164; PWR7-NEXT: addi 3, 3, .LCPI79_1@toc@l 9165; PWR7-NEXT: vsrw 3, 2, 3 9166; PWR7-NEXT: vspltisb 0, 15 9167; PWR7-NEXT: vspltisb 1, 1 9168; PWR7-NEXT: vspltisw 6, -16 9169; PWR7-NEXT: vspltisw 7, 12 9170; PWR7-NEXT: vspltisw 8, 5 9171; PWR7-NEXT: xxland 35, 35, 0 9172; PWR7-NEXT: lxvw4x 0, 0, 3 9173; PWR7-NEXT: vsubuwm 2, 2, 3 9174; PWR7-NEXT: vsrw 3, 2, 4 9175; PWR7-NEXT: xxland 34, 34, 0 9176; PWR7-NEXT: xxlxor 36, 36, 36 9177; PWR7-NEXT: xxland 35, 35, 0 9178; PWR7-NEXT: vadduwm 2, 2, 3 9179; PWR7-NEXT: vsrw 3, 2, 5 9180; PWR7-NEXT: vadduwm 2, 2, 3 9181; PWR7-NEXT: vrlw 3, 1, 6 9182; PWR7-NEXT: xxland 34, 34, 32 9183; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 9184; PWR7-NEXT: vmulouh 2, 2, 1 9185; PWR7-NEXT: vslw 3, 3, 6 9186; PWR7-NEXT: vadduwm 2, 2, 3 9187; PWR7-NEXT: vadduwm 3, 7, 7 9188; PWR7-NEXT: vsrw 2, 2, 3 9189; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 9302; PWR7-NEXT: addi 3, 3, .LCPI80_1@toc@l 9303; PWR7-NEXT: vsrw 3, 2, 3 9304; PWR7-NEXT: vspltisb 0, 15 9305; PWR7-NEXT: vspltisb 1, 1 9306; PWR7-NEXT: vspltisw 6, -16 9307; PWR7-NEXT: vspltisw 7, 12 9308; PWR7-NEXT: vspltisw 8, 5 9309; PWR7-NEXT: xxland 35, 35, 0 9310; PWR7-NEXT: lxvw4x 0, 0, 3 9311; PWR7-NEXT: vsubuwm 2, 2, 3 9312; PWR7-NEXT: vsrw 3, 2, 4 9313; PWR7-NEXT: xxland 34, 34, 0 9314; PWR7-NEXT: xxlxor 36, 36, 36 9315; PWR7-NEXT: xxland 35, 35, 0 9316; PWR7-NEXT: vadduwm 2, 2, 3 9317; PWR7-NEXT: vsrw 3, 2, 5 9318; PWR7-NEXT: vadduwm 2, 2, 3 9319; PWR7-NEXT: vrlw 3, 1, 6 9320; PWR7-NEXT: xxland 34, 34, 32 9321; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 9322; PWR7-NEXT: vmulouh 2, 2, 1 9323; PWR7-NEXT: vslw 3, 3, 6 9324; PWR7-NEXT: vadduwm 2, 2, 3 9325; PWR7-NEXT: vadduwm 3, 7, 7 9326; PWR7-NEXT: vsrw 2, 2, 3 9327; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 9440; PWR7-NEXT: addi 3, 3, .LCPI81_1@toc@l 9441; PWR7-NEXT: vsrw 3, 2, 3 9442; PWR7-NEXT: vspltisb 0, 15 9443; PWR7-NEXT: vspltisb 1, 1 9444; PWR7-NEXT: vspltisw 6, -16 9445; PWR7-NEXT: vspltisw 7, 12 9446; PWR7-NEXT: vspltisw 8, 11 9447; PWR7-NEXT: xxland 35, 35, 0 9448; PWR7-NEXT: lxvw4x 0, 0, 3 9449; PWR7-NEXT: vsubuwm 2, 2, 3 9450; PWR7-NEXT: vsrw 3, 2, 4 9451; PWR7-NEXT: xxland 34, 34, 0 9452; PWR7-NEXT: xxlxor 36, 36, 36 9453; PWR7-NEXT: xxland 35, 35, 0 9454; PWR7-NEXT: vadduwm 2, 2, 3 9455; PWR7-NEXT: vsrw 3, 2, 5 9456; PWR7-NEXT: vadduwm 2, 2, 3 9457; PWR7-NEXT: vrlw 3, 1, 6 9458; PWR7-NEXT: xxland 34, 34, 32 9459; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 9460; PWR7-NEXT: vmulouh 2, 2, 1 9461; PWR7-NEXT: vslw 3, 3, 6 9462; PWR7-NEXT: vadduwm 2, 2, 3 9463; PWR7-NEXT: vadduwm 3, 7, 7 9464; PWR7-NEXT: vsrw 2, 2, 3 9465; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 9576; PWR7-NEXT: addi 3, 3, .LCPI82_1@toc@l 9577; PWR7-NEXT: vsrw 3, 2, 3 9578; PWR7-NEXT: vspltisb 0, 15 9579; PWR7-NEXT: vspltisb 1, 1 9580; PWR7-NEXT: vspltisw 6, -16 9581; PWR7-NEXT: vspltisw 7, 12 9582; PWR7-NEXT: vspltisw 8, 11 9583; PWR7-NEXT: xxland 35, 35, 0 9584; PWR7-NEXT: lxvw4x 0, 0, 3 9585; PWR7-NEXT: vsubuwm 2, 2, 3 9586; PWR7-NEXT: vsrw 3, 2, 4 9587; PWR7-NEXT: xxland 34, 34, 0 9588; PWR7-NEXT: xxlxor 36, 36, 36 9589; PWR7-NEXT: xxland 35, 35, 0 9590; PWR7-NEXT: vadduwm 2, 2, 3 9591; PWR7-NEXT: vsrw 3, 2, 5 9592; PWR7-NEXT: vadduwm 2, 2, 3 9593; PWR7-NEXT: vrlw 3, 1, 6 9594; PWR7-NEXT: xxland 34, 34, 32 9595; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 9596; PWR7-NEXT: vmulouh 2, 2, 1 9597; PWR7-NEXT: vslw 3, 3, 6 9598; PWR7-NEXT: vadduwm 2, 2, 3 9599; PWR7-NEXT: vadduwm 3, 7, 7 9600; PWR7-NEXT: vsrw 2, 2, 3 9601; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 9712; PWR7-NEXT: addi 3, 3, .LCPI83_1@toc@l 9713; PWR7-NEXT: vsrw 3, 2, 3 9714; PWR7-NEXT: vspltisb 0, 15 9715; PWR7-NEXT: vspltisb 1, 1 9716; PWR7-NEXT: vspltisw 6, -16 9717; PWR7-NEXT: vspltisw 7, 12 9718; PWR7-NEXT: vspltisw 8, 7 9719; PWR7-NEXT: xxland 35, 35, 0 9720; PWR7-NEXT: lxvw4x 0, 0, 3 9721; PWR7-NEXT: vsubuwm 2, 2, 3 9722; PWR7-NEXT: vsrw 3, 2, 4 9723; PWR7-NEXT: xxland 34, 34, 0 9724; PWR7-NEXT: xxlxor 36, 36, 36 9725; PWR7-NEXT: xxland 35, 35, 0 9726; PWR7-NEXT: vadduwm 2, 2, 3 9727; PWR7-NEXT: vsrw 3, 2, 5 9728; PWR7-NEXT: vadduwm 2, 2, 3 9729; PWR7-NEXT: vrlw 3, 1, 6 9730; PWR7-NEXT: xxland 34, 34, 32 9731; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 9732; PWR7-NEXT: vmulouh 2, 2, 1 9733; PWR7-NEXT: vslw 3, 3, 6 9734; PWR7-NEXT: vadduwm 2, 2, 3 9735; PWR7-NEXT: vadduwm 3, 7, 7 9736; PWR7-NEXT: vsrw 2, 2, 3 9737; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 9850; PWR7-NEXT: addi 3, 3, .LCPI84_1@toc@l 9851; PWR7-NEXT: vsrw 3, 2, 3 9852; PWR7-NEXT: vspltisb 0, 15 9853; PWR7-NEXT: vspltisb 1, 1 9854; PWR7-NEXT: vspltisw 6, -16 9855; PWR7-NEXT: vspltisw 7, 12 9856; PWR7-NEXT: vspltisw 8, 7 9857; PWR7-NEXT: xxland 35, 35, 0 9858; PWR7-NEXT: lxvw4x 0, 0, 3 9859; PWR7-NEXT: vsubuwm 2, 2, 3 9860; PWR7-NEXT: vsrw 3, 2, 4 9861; PWR7-NEXT: xxland 34, 34, 0 9862; PWR7-NEXT: xxlxor 36, 36, 36 9863; PWR7-NEXT: xxland 35, 35, 0 9864; PWR7-NEXT: vadduwm 2, 2, 3 9865; PWR7-NEXT: vsrw 3, 2, 5 9866; PWR7-NEXT: vadduwm 2, 2, 3 9867; PWR7-NEXT: vrlw 3, 1, 6 9868; PWR7-NEXT: xxland 34, 34, 32 9869; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 9870; PWR7-NEXT: vmulouh 2, 2, 1 9871; PWR7-NEXT: vslw 3, 3, 6 9872; PWR7-NEXT: vadduwm 2, 2, 3 9873; PWR7-NEXT: vadduwm 3, 7, 7 9874; PWR7-NEXT: vsrw 2, 2, 3 9875; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 9984; PWR7-NEXT: addi 3, 3, .LCPI85_1@toc@l 9985; PWR7-NEXT: vsrw 3, 2, 3 9986; PWR7-NEXT: vspltisb 0, 15 9987; PWR7-NEXT: vspltisb 1, 1 9988; PWR7-NEXT: vspltisw 6, -16 9989; PWR7-NEXT: vspltisw 7, 12 9990; PWR7-NEXT: xxland 35, 35, 0 9991; PWR7-NEXT: lxvw4x 0, 0, 3 9992; PWR7-NEXT: vsubuwm 2, 2, 3 9993; PWR7-NEXT: vsrw 3, 2, 4 9994; PWR7-NEXT: xxland 34, 34, 0 9995; PWR7-NEXT: xxlxor 36, 36, 36 9996; PWR7-NEXT: xxland 35, 35, 0 9997; PWR7-NEXT: vadduwm 2, 2, 3 9998; PWR7-NEXT: vsrw 3, 2, 5 9999; PWR7-NEXT: vadduwm 2, 2, 3 10000; PWR7-NEXT: vrlw 3, 1, 6 10001; PWR7-NEXT: xxland 34, 34, 32 10002; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 10003; PWR7-NEXT: vmulouh 2, 2, 1 10004; PWR7-NEXT: vslw 3, 3, 6 10005; PWR7-NEXT: vadduwm 2, 2, 3 10006; PWR7-NEXT: vadduwm 3, 7, 7 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, 4 10114; PWR7-NEXT: addi 3, 3, .LCPI86_1@toc@l 10115; PWR7-NEXT: vsrw 3, 2, 3 10116; PWR7-NEXT: vspltisb 0, 15 10117; PWR7-NEXT: vspltisb 1, 1 10118; PWR7-NEXT: vspltisw 6, -16 10119; PWR7-NEXT: vspltisw 7, 12 10120; PWR7-NEXT: xxland 35, 35, 0 10121; PWR7-NEXT: lxvw4x 0, 0, 3 10122; PWR7-NEXT: vsubuwm 2, 2, 3 10123; PWR7-NEXT: vsrw 3, 2, 4 10124; PWR7-NEXT: xxland 34, 34, 0 10125; PWR7-NEXT: xxlxor 36, 36, 36 10126; PWR7-NEXT: xxland 35, 35, 0 10127; PWR7-NEXT: vadduwm 2, 2, 3 10128; PWR7-NEXT: vsrw 3, 2, 5 10129; PWR7-NEXT: vadduwm 2, 2, 3 10130; PWR7-NEXT: vrlw 3, 1, 6 10131; PWR7-NEXT: xxland 34, 34, 32 10132; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 10133; PWR7-NEXT: vmulouh 2, 2, 1 10134; PWR7-NEXT: vslw 3, 3, 6 10135; PWR7-NEXT: vadduwm 2, 2, 3 10136; PWR7-NEXT: vadduwm 3, 7, 7 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, 4 10248; PWR7-NEXT: addi 3, 3, .LCPI87_1@toc@l 10249; PWR7-NEXT: vsrw 3, 2, 3 10250; PWR7-NEXT: vspltisb 0, 15 10251; PWR7-NEXT: vspltisb 1, 1 10252; PWR7-NEXT: vspltisw 6, -16 10253; PWR7-NEXT: vspltisw 7, 12 10254; PWR7-NEXT: vspltisw 8, 9 10255; PWR7-NEXT: xxland 35, 35, 0 10256; PWR7-NEXT: lxvw4x 0, 0, 3 10257; PWR7-NEXT: vsubuwm 2, 2, 3 10258; PWR7-NEXT: vsrw 3, 2, 4 10259; PWR7-NEXT: xxland 34, 34, 0 10260; PWR7-NEXT: xxlxor 36, 36, 36 10261; PWR7-NEXT: xxland 35, 35, 0 10262; PWR7-NEXT: vadduwm 2, 2, 3 10263; PWR7-NEXT: vsrw 3, 2, 5 10264; PWR7-NEXT: vadduwm 2, 2, 3 10265; PWR7-NEXT: vrlw 3, 1, 6 10266; PWR7-NEXT: xxland 34, 34, 32 10267; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 10268; PWR7-NEXT: vmulouh 2, 2, 1 10269; PWR7-NEXT: vslw 3, 3, 6 10270; PWR7-NEXT: vadduwm 2, 2, 3 10271; PWR7-NEXT: vadduwm 3, 7, 7 10272; PWR7-NEXT: vsrw 2, 2, 3 10273; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 10386; PWR7-NEXT: addi 3, 3, .LCPI88_1@toc@l 10387; PWR7-NEXT: vsrw 3, 2, 3 10388; PWR7-NEXT: vspltisb 0, 15 10389; PWR7-NEXT: vspltisb 1, 1 10390; PWR7-NEXT: vspltisw 6, -16 10391; PWR7-NEXT: vspltisw 7, 12 10392; PWR7-NEXT: vspltisw 8, 9 10393; PWR7-NEXT: xxland 35, 35, 0 10394; PWR7-NEXT: lxvw4x 0, 0, 3 10395; PWR7-NEXT: vsubuwm 2, 2, 3 10396; PWR7-NEXT: vsrw 3, 2, 4 10397; PWR7-NEXT: xxland 34, 34, 0 10398; PWR7-NEXT: xxlxor 36, 36, 36 10399; PWR7-NEXT: xxland 35, 35, 0 10400; PWR7-NEXT: vadduwm 2, 2, 3 10401; PWR7-NEXT: vsrw 3, 2, 5 10402; PWR7-NEXT: vadduwm 2, 2, 3 10403; PWR7-NEXT: vrlw 3, 1, 6 10404; PWR7-NEXT: xxland 34, 34, 32 10405; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 10406; PWR7-NEXT: vmulouh 2, 2, 1 10407; PWR7-NEXT: vslw 3, 3, 6 10408; PWR7-NEXT: vadduwm 2, 2, 3 10409; PWR7-NEXT: vadduwm 3, 7, 7 10410; PWR7-NEXT: vsrw 2, 2, 3 10411; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 10524; PWR7-NEXT: addi 3, 3, .LCPI89_1@toc@l 10525; PWR7-NEXT: vsrw 3, 2, 3 10526; PWR7-NEXT: vspltisb 0, 15 10527; PWR7-NEXT: vspltisb 1, 1 10528; PWR7-NEXT: vspltisw 6, -16 10529; PWR7-NEXT: vspltisw 7, 12 10530; PWR7-NEXT: vspltisw 8, 13 10531; PWR7-NEXT: xxland 35, 35, 0 10532; PWR7-NEXT: lxvw4x 0, 0, 3 10533; PWR7-NEXT: vsubuwm 2, 2, 3 10534; PWR7-NEXT: vsrw 3, 2, 4 10535; PWR7-NEXT: xxland 34, 34, 0 10536; PWR7-NEXT: xxlxor 36, 36, 36 10537; PWR7-NEXT: xxland 35, 35, 0 10538; PWR7-NEXT: vadduwm 2, 2, 3 10539; PWR7-NEXT: vsrw 3, 2, 5 10540; PWR7-NEXT: vadduwm 2, 2, 3 10541; PWR7-NEXT: vrlw 3, 1, 6 10542; PWR7-NEXT: xxland 34, 34, 32 10543; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 10544; PWR7-NEXT: vmulouh 2, 2, 1 10545; PWR7-NEXT: vslw 3, 3, 6 10546; PWR7-NEXT: vadduwm 2, 2, 3 10547; PWR7-NEXT: vadduwm 3, 7, 7 10548; PWR7-NEXT: vsrw 2, 2, 3 10549; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 10660; PWR7-NEXT: addi 3, 3, .LCPI90_1@toc@l 10661; PWR7-NEXT: vsrw 3, 2, 3 10662; PWR7-NEXT: vspltisb 0, 15 10663; PWR7-NEXT: vspltisb 1, 1 10664; PWR7-NEXT: vspltisw 6, -16 10665; PWR7-NEXT: vspltisw 7, 12 10666; PWR7-NEXT: vspltisw 8, 13 10667; PWR7-NEXT: xxland 35, 35, 0 10668; PWR7-NEXT: lxvw4x 0, 0, 3 10669; PWR7-NEXT: vsubuwm 2, 2, 3 10670; PWR7-NEXT: vsrw 3, 2, 4 10671; PWR7-NEXT: xxland 34, 34, 0 10672; PWR7-NEXT: xxlxor 36, 36, 36 10673; PWR7-NEXT: xxland 35, 35, 0 10674; PWR7-NEXT: vadduwm 2, 2, 3 10675; PWR7-NEXT: vsrw 3, 2, 5 10676; PWR7-NEXT: vadduwm 2, 2, 3 10677; PWR7-NEXT: vrlw 3, 1, 6 10678; PWR7-NEXT: xxland 34, 34, 32 10679; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 10680; PWR7-NEXT: vmulouh 2, 2, 1 10681; PWR7-NEXT: vslw 3, 3, 6 10682; PWR7-NEXT: vadduwm 2, 2, 3 10683; PWR7-NEXT: vadduwm 3, 7, 7 10684; PWR7-NEXT: vsrw 2, 2, 3 10685; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 10796; PWR7-NEXT: addi 3, 3, .LCPI91_1@toc@l 10797; PWR7-NEXT: vsrw 3, 2, 3 10798; PWR7-NEXT: vspltisb 0, 15 10799; PWR7-NEXT: vspltisb 1, 1 10800; PWR7-NEXT: vspltisw 6, -16 10801; PWR7-NEXT: vspltisw 7, 12 10802; PWR7-NEXT: vspltisw 8, 11 10803; PWR7-NEXT: xxland 35, 35, 0 10804; PWR7-NEXT: lxvw4x 0, 0, 3 10805; PWR7-NEXT: vsubuwm 2, 2, 3 10806; PWR7-NEXT: vsrw 3, 2, 4 10807; PWR7-NEXT: xxland 34, 34, 0 10808; PWR7-NEXT: xxlxor 36, 36, 36 10809; PWR7-NEXT: xxland 35, 35, 0 10810; PWR7-NEXT: vadduwm 2, 2, 3 10811; PWR7-NEXT: vsrw 3, 2, 5 10812; PWR7-NEXT: vadduwm 2, 2, 3 10813; PWR7-NEXT: vrlw 3, 1, 6 10814; PWR7-NEXT: xxland 34, 34, 32 10815; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 10816; PWR7-NEXT: vmulouh 2, 2, 1 10817; PWR7-NEXT: vslw 3, 3, 6 10818; PWR7-NEXT: vadduwm 2, 2, 3 10819; PWR7-NEXT: vadduwm 3, 7, 7 10820; PWR7-NEXT: vsrw 2, 2, 3 10821; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 10934; PWR7-NEXT: addi 3, 3, .LCPI92_1@toc@l 10935; PWR7-NEXT: vsrw 3, 2, 3 10936; PWR7-NEXT: vspltisb 0, 15 10937; PWR7-NEXT: vspltisb 1, 1 10938; PWR7-NEXT: vspltisw 6, -16 10939; PWR7-NEXT: vspltisw 7, 12 10940; PWR7-NEXT: vspltisw 8, 11 10941; PWR7-NEXT: xxland 35, 35, 0 10942; PWR7-NEXT: lxvw4x 0, 0, 3 10943; PWR7-NEXT: vsubuwm 2, 2, 3 10944; PWR7-NEXT: vsrw 3, 2, 4 10945; PWR7-NEXT: xxland 34, 34, 0 10946; PWR7-NEXT: xxlxor 36, 36, 36 10947; PWR7-NEXT: xxland 35, 35, 0 10948; PWR7-NEXT: vadduwm 2, 2, 3 10949; PWR7-NEXT: vsrw 3, 2, 5 10950; PWR7-NEXT: vadduwm 2, 2, 3 10951; PWR7-NEXT: vrlw 3, 1, 6 10952; PWR7-NEXT: xxland 34, 34, 32 10953; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 10954; PWR7-NEXT: vmulouh 2, 2, 1 10955; PWR7-NEXT: vslw 3, 3, 6 10956; PWR7-NEXT: vadduwm 2, 2, 3 10957; PWR7-NEXT: vadduwm 3, 7, 7 10958; PWR7-NEXT: vsrw 2, 2, 3 10959; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 11072; PWR7-NEXT: addi 3, 3, .LCPI93_1@toc@l 11073; PWR7-NEXT: vsrw 3, 2, 3 11074; PWR7-NEXT: vspltisb 0, 15 11075; PWR7-NEXT: vspltisb 1, 1 11076; PWR7-NEXT: vspltisw 6, -16 11077; PWR7-NEXT: vspltisw 7, 12 11078; PWR7-NEXT: vspltisw 8, 14 11079; PWR7-NEXT: xxland 35, 35, 0 11080; PWR7-NEXT: lxvw4x 0, 0, 3 11081; PWR7-NEXT: vsubuwm 2, 2, 3 11082; PWR7-NEXT: vsrw 3, 2, 4 11083; PWR7-NEXT: xxland 34, 34, 0 11084; PWR7-NEXT: xxlxor 36, 36, 36 11085; PWR7-NEXT: xxland 35, 35, 0 11086; PWR7-NEXT: vadduwm 2, 2, 3 11087; PWR7-NEXT: vsrw 3, 2, 5 11088; PWR7-NEXT: vadduwm 2, 2, 3 11089; PWR7-NEXT: vrlw 3, 1, 6 11090; PWR7-NEXT: xxland 34, 34, 32 11091; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 11092; PWR7-NEXT: vmulouh 2, 2, 1 11093; PWR7-NEXT: vslw 3, 3, 6 11094; PWR7-NEXT: vadduwm 2, 2, 3 11095; PWR7-NEXT: vadduwm 3, 7, 7 11096; PWR7-NEXT: vsrw 2, 2, 3 11097; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 11208; PWR7-NEXT: addi 3, 3, .LCPI94_1@toc@l 11209; PWR7-NEXT: vsrw 3, 2, 3 11210; PWR7-NEXT: vspltisb 0, 15 11211; PWR7-NEXT: vspltisb 1, 1 11212; PWR7-NEXT: vspltisw 6, -16 11213; PWR7-NEXT: vspltisw 7, 12 11214; PWR7-NEXT: vspltisw 8, 14 11215; PWR7-NEXT: xxland 35, 35, 0 11216; PWR7-NEXT: lxvw4x 0, 0, 3 11217; PWR7-NEXT: vsubuwm 2, 2, 3 11218; PWR7-NEXT: vsrw 3, 2, 4 11219; PWR7-NEXT: xxland 34, 34, 0 11220; PWR7-NEXT: xxlxor 36, 36, 36 11221; PWR7-NEXT: xxland 35, 35, 0 11222; PWR7-NEXT: vadduwm 2, 2, 3 11223; PWR7-NEXT: vsrw 3, 2, 5 11224; PWR7-NEXT: vadduwm 2, 2, 3 11225; PWR7-NEXT: vrlw 3, 1, 6 11226; PWR7-NEXT: xxland 34, 34, 32 11227; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 11228; PWR7-NEXT: vmulouh 2, 2, 1 11229; PWR7-NEXT: vslw 3, 3, 6 11230; PWR7-NEXT: vadduwm 2, 2, 3 11231; PWR7-NEXT: vadduwm 3, 7, 7 11232; PWR7-NEXT: vsrw 2, 2, 3 11233; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 11344; PWR7-NEXT: addi 3, 3, .LCPI95_1@toc@l 11345; PWR7-NEXT: vsrw 3, 2, 3 11346; PWR7-NEXT: vspltisb 0, 15 11347; PWR7-NEXT: vspltisb 1, 1 11348; PWR7-NEXT: vspltisw 6, -16 11349; PWR7-NEXT: vspltisw 7, 12 11350; PWR7-NEXT: vspltisw 8, 13 11351; PWR7-NEXT: xxland 35, 35, 0 11352; PWR7-NEXT: lxvw4x 0, 0, 3 11353; PWR7-NEXT: vsubuwm 2, 2, 3 11354; PWR7-NEXT: vsrw 3, 2, 4 11355; PWR7-NEXT: xxland 34, 34, 0 11356; PWR7-NEXT: xxlxor 36, 36, 36 11357; PWR7-NEXT: xxland 35, 35, 0 11358; PWR7-NEXT: vadduwm 2, 2, 3 11359; PWR7-NEXT: vsrw 3, 2, 5 11360; PWR7-NEXT: vadduwm 2, 2, 3 11361; PWR7-NEXT: vrlw 3, 1, 6 11362; PWR7-NEXT: xxland 34, 34, 32 11363; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 11364; PWR7-NEXT: vmulouh 2, 2, 1 11365; PWR7-NEXT: vslw 3, 3, 6 11366; PWR7-NEXT: vadduwm 2, 2, 3 11367; PWR7-NEXT: vadduwm 3, 7, 7 11368; PWR7-NEXT: vsrw 2, 2, 3 11369; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 11482; PWR7-NEXT: addi 3, 3, .LCPI96_1@toc@l 11483; PWR7-NEXT: vsrw 3, 2, 3 11484; PWR7-NEXT: vspltisb 0, 15 11485; PWR7-NEXT: vspltisb 1, 1 11486; PWR7-NEXT: vspltisw 6, -16 11487; PWR7-NEXT: vspltisw 7, 12 11488; PWR7-NEXT: vspltisw 8, 13 11489; PWR7-NEXT: xxland 35, 35, 0 11490; PWR7-NEXT: lxvw4x 0, 0, 3 11491; PWR7-NEXT: vsubuwm 2, 2, 3 11492; PWR7-NEXT: vsrw 3, 2, 4 11493; PWR7-NEXT: xxland 34, 34, 0 11494; PWR7-NEXT: xxlxor 36, 36, 36 11495; PWR7-NEXT: xxland 35, 35, 0 11496; PWR7-NEXT: vadduwm 2, 2, 3 11497; PWR7-NEXT: vsrw 3, 2, 5 11498; PWR7-NEXT: vadduwm 2, 2, 3 11499; PWR7-NEXT: vrlw 3, 1, 6 11500; PWR7-NEXT: xxland 34, 34, 32 11501; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 11502; PWR7-NEXT: vmulouh 2, 2, 1 11503; PWR7-NEXT: vslw 3, 3, 6 11504; PWR7-NEXT: vadduwm 2, 2, 3 11505; PWR7-NEXT: vadduwm 3, 7, 7 11506; PWR7-NEXT: vsrw 2, 2, 3 11507; PWR7-NEXT: vsubuwm 3, 8, 6 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, 4 11620; PWR7-NEXT: addi 3, 3, .LCPI97_1@toc@l 11621; PWR7-NEXT: vsrw 3, 2, 3 11622; PWR7-NEXT: vspltisb 0, 15 11623; PWR7-NEXT: vspltisb 1, 1 11624; PWR7-NEXT: vspltisw 6, -16 11625; PWR7-NEXT: vspltisw 7, 12 11626; PWR7-NEXT: vspltisw 8, 15 11627; PWR7-NEXT: xxland 35, 35, 0 11628; PWR7-NEXT: lxvw4x 0, 0, 3 11629; PWR7-NEXT: vsubuwm 2, 2, 3 11630; PWR7-NEXT: vsrw 3, 2, 4 11631; PWR7-NEXT: xxland 34, 34, 0 11632; PWR7-NEXT: xxlxor 36, 36, 36 11633; PWR7-NEXT: xxland 35, 35, 0 11634; PWR7-NEXT: vadduwm 2, 2, 3 11635; PWR7-NEXT: vsrw 3, 2, 5 11636; PWR7-NEXT: vadduwm 2, 2, 3 11637; PWR7-NEXT: vrlw 3, 1, 6 11638; PWR7-NEXT: xxland 34, 34, 32 11639; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 11640; PWR7-NEXT: vmulouh 2, 2, 1 11641; PWR7-NEXT: vslw 3, 3, 6 11642; PWR7-NEXT: vadduwm 2, 2, 3 11643; PWR7-NEXT: vadduwm 3, 7, 7 11644; PWR7-NEXT: vsrw 2, 2, 3 11645; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 11756; PWR7-NEXT: addi 3, 3, .LCPI98_1@toc@l 11757; PWR7-NEXT: vsrw 3, 2, 3 11758; PWR7-NEXT: vspltisb 0, 15 11759; PWR7-NEXT: vspltisb 1, 1 11760; PWR7-NEXT: vspltisw 6, -16 11761; PWR7-NEXT: vspltisw 7, 12 11762; PWR7-NEXT: vspltisw 8, 15 11763; PWR7-NEXT: xxland 35, 35, 0 11764; PWR7-NEXT: lxvw4x 0, 0, 3 11765; PWR7-NEXT: vsubuwm 2, 2, 3 11766; PWR7-NEXT: vsrw 3, 2, 4 11767; PWR7-NEXT: xxland 34, 34, 0 11768; PWR7-NEXT: xxlxor 36, 36, 36 11769; PWR7-NEXT: xxland 35, 35, 0 11770; PWR7-NEXT: vadduwm 2, 2, 3 11771; PWR7-NEXT: vsrw 3, 2, 5 11772; PWR7-NEXT: vadduwm 2, 2, 3 11773; PWR7-NEXT: vrlw 3, 1, 6 11774; PWR7-NEXT: xxland 34, 34, 32 11775; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 11776; PWR7-NEXT: vmulouh 2, 2, 1 11777; PWR7-NEXT: vslw 3, 3, 6 11778; PWR7-NEXT: vadduwm 2, 2, 3 11779; PWR7-NEXT: vadduwm 3, 7, 7 11780; PWR7-NEXT: vsrw 2, 2, 3 11781; PWR7-NEXT: vadduwm 3, 8, 8 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, 4 11892; PWR7-NEXT: addi 3, 3, .LCPI99_1@toc@l 11893; PWR7-NEXT: vsrw 3, 2, 3 11894; PWR7-NEXT: vspltisb 0, 15 11895; PWR7-NEXT: vspltisb 1, 1 11896; PWR7-NEXT: vspltisw 6, -16 11897; PWR7-NEXT: vspltisw 7, 12 11898; PWR7-NEXT: vspltisw 8, 15 11899; PWR7-NEXT: xxland 35, 35, 0 11900; PWR7-NEXT: lxvw4x 0, 0, 3 11901; PWR7-NEXT: vsubuwm 2, 2, 3 11902; PWR7-NEXT: vsrw 3, 2, 4 11903; PWR7-NEXT: xxland 34, 34, 0 11904; PWR7-NEXT: xxlxor 36, 36, 36 11905; PWR7-NEXT: xxland 35, 35, 0 11906; PWR7-NEXT: vadduwm 2, 2, 3 11907; PWR7-NEXT: vsrw 3, 2, 5 11908; PWR7-NEXT: vadduwm 2, 2, 3 11909; PWR7-NEXT: vrlw 3, 1, 6 11910; PWR7-NEXT: xxland 34, 34, 32 11911; PWR7-NEXT: vmsumuhm 3, 2, 3, 4 11912; PWR7-NEXT: vmulouh 2, 2, 1 11913; PWR7-NEXT: vslw 3, 3, 6 11914; PWR7-NEXT: vadduwm 2, 2, 3 11915; PWR7-NEXT: vadduwm 3, 7, 7 11916; PWR7-NEXT: vsrw 2, 2, 3 11917; PWR7-NEXT: vsubuwm 3, 8, 6 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: xxlxor 35, 35, 35 11973; PWR7-NEXT: stxvd2x 34, 0, 3 11974; PWR7-NEXT: ld 3, -24(1) 11975; PWR7-NEXT: addi 3, 3, -1 11976; PWR7-NEXT: std 3, -8(1) 11977; PWR7-NEXT: ld 3, -32(1) 11978; PWR7-NEXT: addi 3, 3, -1 11979; PWR7-NEXT: std 3, -16(1) 11980; PWR7-NEXT: addi 3, 1, -16 11981; PWR7-NEXT: lxvw4x 0, 0, 3 11982; PWR7-NEXT: addis 3, 2, .LCPI100_0@toc@ha 11983; PWR7-NEXT: addi 3, 3, .LCPI100_0@toc@l 11984; PWR7-NEXT: xxland 34, 34, 0 11985; PWR7-NEXT: vcmpequw 2, 2, 3 11986; PWR7-NEXT: lxvw4x 35, 0, 3 11987; PWR7-NEXT: xxlnor 34, 34, 34 11988; PWR7-NEXT: vperm 3, 2, 2, 3 11989; PWR7-NEXT: xxlor 34, 35, 34 11990; PWR7-NEXT: blr 11991; 11992; PWR8-LABEL: ugt_1_v2i64: 11993; PWR8: # %bb.0: 11994; PWR8-NEXT: addis 3, 2, .LCPI100_0@toc@ha 11995; PWR8-NEXT: vpopcntd 2, 2 11996; PWR8-NEXT: addi 3, 3, .LCPI100_0@toc@l 11997; PWR8-NEXT: lxvd2x 35, 0, 3 11998; PWR8-NEXT: vcmpgtud 2, 2, 3 11999; PWR8-NEXT: blr 12000; 12001; PWR9-LABEL: ugt_1_v2i64: 12002; PWR9: # %bb.0: 12003; PWR9-NEXT: addis 3, 2, .LCPI100_0@toc@ha 12004; PWR9-NEXT: vpopcntd 2, 2 12005; PWR9-NEXT: addi 3, 3, .LCPI100_0@toc@l 12006; PWR9-NEXT: lxv 35, 0(3) 12007; PWR9-NEXT: vcmpgtud 2, 2, 3 12008; PWR9-NEXT: blr 12009 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12010 %3 = icmp ugt <2 x i64> %2, <i64 1, i64 1> 12011 %4 = sext <2 x i1> %3 to <2 x i64> 12012 ret <2 x i64> %4 12013} 12014 12015define <2 x i64> @ult_2_v2i64(<2 x i64> %0) { 12016; PWR5-LABEL: ult_2_v2i64: 12017; PWR5: # %bb.0: 12018; PWR5-NEXT: addi 5, 3, -1 12019; PWR5-NEXT: and 3, 3, 5 12020; PWR5-NEXT: addi 5, 4, -1 12021; PWR5-NEXT: addic 3, 3, -1 12022; PWR5-NEXT: subfe 3, 3, 3 12023; PWR5-NEXT: and 4, 4, 5 12024; PWR5-NEXT: addic 4, 4, -1 12025; PWR5-NEXT: subfe 4, 4, 4 12026; PWR5-NEXT: blr 12027; 12028; PWR6-LABEL: ult_2_v2i64: 12029; PWR6: # %bb.0: 12030; PWR6-NEXT: addi 5, 3, -1 12031; PWR6-NEXT: and 3, 3, 5 12032; PWR6-NEXT: addi 5, 4, -1 12033; PWR6-NEXT: addic 3, 3, -1 12034; PWR6-NEXT: subfe 3, 3, 3 12035; PWR6-NEXT: and 4, 4, 5 12036; PWR6-NEXT: addic 4, 4, -1 12037; PWR6-NEXT: subfe 4, 4, 4 12038; PWR6-NEXT: blr 12039; 12040; PWR7-LABEL: ult_2_v2i64: 12041; PWR7: # %bb.0: 12042; PWR7-NEXT: addi 3, 1, -32 12043; PWR7-NEXT: xxlxor 35, 35, 35 12044; PWR7-NEXT: stxvd2x 34, 0, 3 12045; PWR7-NEXT: ld 3, -24(1) 12046; PWR7-NEXT: addi 3, 3, -1 12047; PWR7-NEXT: std 3, -8(1) 12048; PWR7-NEXT: ld 3, -32(1) 12049; PWR7-NEXT: addi 3, 3, -1 12050; PWR7-NEXT: std 3, -16(1) 12051; PWR7-NEXT: addi 3, 1, -16 12052; PWR7-NEXT: lxvw4x 0, 0, 3 12053; PWR7-NEXT: addis 3, 2, .LCPI101_0@toc@ha 12054; PWR7-NEXT: addi 3, 3, .LCPI101_0@toc@l 12055; PWR7-NEXT: xxland 34, 34, 0 12056; PWR7-NEXT: vcmpequw 2, 2, 3 12057; PWR7-NEXT: lxvw4x 35, 0, 3 12058; PWR7-NEXT: vperm 3, 2, 2, 3 12059; PWR7-NEXT: xxland 34, 35, 34 12060; PWR7-NEXT: blr 12061; 12062; PWR8-LABEL: ult_2_v2i64: 12063; PWR8: # %bb.0: 12064; PWR8-NEXT: addis 3, 2, .LCPI101_0@toc@ha 12065; PWR8-NEXT: vpopcntd 2, 2 12066; PWR8-NEXT: addi 3, 3, .LCPI101_0@toc@l 12067; PWR8-NEXT: lxvd2x 35, 0, 3 12068; PWR8-NEXT: vcmpgtud 2, 3, 2 12069; PWR8-NEXT: blr 12070; 12071; PWR9-LABEL: ult_2_v2i64: 12072; PWR9: # %bb.0: 12073; PWR9-NEXT: addis 3, 2, .LCPI101_0@toc@ha 12074; PWR9-NEXT: vpopcntd 2, 2 12075; PWR9-NEXT: addi 3, 3, .LCPI101_0@toc@l 12076; PWR9-NEXT: lxv 35, 0(3) 12077; PWR9-NEXT: vcmpgtud 2, 3, 2 12078; PWR9-NEXT: blr 12079 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12080 %3 = icmp ult <2 x i64> %2, <i64 2, i64 2> 12081 %4 = sext <2 x i1> %3 to <2 x i64> 12082 ret <2 x i64> %4 12083} 12084 12085define <2 x i64> @ugt_2_v2i64(<2 x i64> %0) { 12086; PWR5-LABEL: ugt_2_v2i64: 12087; PWR5: # %bb.0: 12088; PWR5-NEXT: lis 5, 21845 12089; PWR5-NEXT: lis 6, 13107 12090; PWR5-NEXT: ori 5, 5, 21845 12091; PWR5-NEXT: rotldi 8, 4, 63 12092; PWR5-NEXT: rotldi 9, 3, 63 12093; PWR5-NEXT: rldimi 5, 5, 32, 0 12094; PWR5-NEXT: and 8, 8, 5 12095; PWR5-NEXT: and 5, 9, 5 12096; PWR5-NEXT: ori 6, 6, 13107 12097; PWR5-NEXT: sub 3, 3, 5 12098; PWR5-NEXT: rldimi 6, 6, 32, 0 12099; PWR5-NEXT: sub 4, 4, 8 12100; PWR5-NEXT: and 8, 3, 6 12101; PWR5-NEXT: rotldi 3, 3, 62 12102; PWR5-NEXT: and 3, 3, 6 12103; PWR5-NEXT: lis 7, 3855 12104; PWR5-NEXT: and 5, 4, 6 12105; PWR5-NEXT: rotldi 4, 4, 62 12106; PWR5-NEXT: add 3, 8, 3 12107; PWR5-NEXT: lis 9, 257 12108; PWR5-NEXT: ori 7, 7, 3855 12109; PWR5-NEXT: and 4, 4, 6 12110; PWR5-NEXT: rldicl 6, 3, 60, 4 12111; PWR5-NEXT: ori 9, 9, 257 12112; PWR5-NEXT: rldimi 7, 7, 32, 0 12113; PWR5-NEXT: add 4, 5, 4 12114; PWR5-NEXT: add 3, 3, 6 12115; PWR5-NEXT: rldimi 9, 9, 32, 0 12116; PWR5-NEXT: rldicl 5, 4, 60, 4 12117; PWR5-NEXT: and 3, 3, 7 12118; PWR5-NEXT: add 4, 4, 5 12119; PWR5-NEXT: mulld 3, 3, 9 12120; PWR5-NEXT: and 4, 4, 7 12121; PWR5-NEXT: rldicl 3, 3, 8, 56 12122; PWR5-NEXT: mulld 4, 4, 9 12123; PWR5-NEXT: li 5, 2 12124; PWR5-NEXT: subfic 3, 3, 2 12125; PWR5-NEXT: rldicl 4, 4, 8, 56 12126; PWR5-NEXT: subfe 3, 5, 5 12127; PWR5-NEXT: subfic 4, 4, 2 12128; PWR5-NEXT: subfe 4, 5, 5 12129; PWR5-NEXT: blr 12130; 12131; PWR6-LABEL: ugt_2_v2i64: 12132; PWR6: # %bb.0: 12133; PWR6-NEXT: lis 5, 21845 12134; PWR6-NEXT: lis 6, 13107 12135; PWR6-NEXT: ori 5, 5, 21845 12136; PWR6-NEXT: rotldi 8, 4, 63 12137; PWR6-NEXT: rotldi 9, 3, 63 12138; PWR6-NEXT: rldimi 5, 5, 32, 0 12139; PWR6-NEXT: and 8, 8, 5 12140; PWR6-NEXT: and 5, 9, 5 12141; PWR6-NEXT: ori 6, 6, 13107 12142; PWR6-NEXT: sub 3, 3, 5 12143; PWR6-NEXT: rldimi 6, 6, 32, 0 12144; PWR6-NEXT: sub 4, 4, 8 12145; PWR6-NEXT: and 8, 3, 6 12146; PWR6-NEXT: rotldi 3, 3, 62 12147; PWR6-NEXT: and 3, 3, 6 12148; PWR6-NEXT: lis 7, 3855 12149; PWR6-NEXT: and 5, 4, 6 12150; PWR6-NEXT: rotldi 4, 4, 62 12151; PWR6-NEXT: add 3, 8, 3 12152; PWR6-NEXT: lis 9, 257 12153; PWR6-NEXT: ori 7, 7, 3855 12154; PWR6-NEXT: and 4, 4, 6 12155; PWR6-NEXT: rldicl 6, 3, 60, 4 12156; PWR6-NEXT: ori 9, 9, 257 12157; PWR6-NEXT: rldimi 7, 7, 32, 0 12158; PWR6-NEXT: add 4, 5, 4 12159; PWR6-NEXT: add 3, 3, 6 12160; PWR6-NEXT: rldimi 9, 9, 32, 0 12161; PWR6-NEXT: rldicl 5, 4, 60, 4 12162; PWR6-NEXT: and 3, 3, 7 12163; PWR6-NEXT: add 4, 4, 5 12164; PWR6-NEXT: mulld 3, 3, 9 12165; PWR6-NEXT: and 4, 4, 7 12166; PWR6-NEXT: rldicl 3, 3, 8, 56 12167; PWR6-NEXT: mulld 4, 4, 9 12168; PWR6-NEXT: li 5, 2 12169; PWR6-NEXT: subfic 3, 3, 2 12170; PWR6-NEXT: rldicl 4, 4, 8, 56 12171; PWR6-NEXT: subfe 3, 5, 5 12172; PWR6-NEXT: subfic 4, 4, 2 12173; PWR6-NEXT: subfe 4, 5, 5 12174; PWR6-NEXT: blr 12175; 12176; PWR7-LABEL: ugt_2_v2i64: 12177; PWR7: # %bb.0: 12178; PWR7-NEXT: addi 3, 1, -32 12179; PWR7-NEXT: li 5, -1 12180; PWR7-NEXT: stxvd2x 34, 0, 3 12181; PWR7-NEXT: ld 4, -24(1) 12182; PWR7-NEXT: ld 3, -32(1) 12183; PWR7-NEXT: popcntd 4, 4 12184; PWR7-NEXT: popcntd 3, 3 12185; PWR7-NEXT: cmpldi 4, 2 12186; PWR7-NEXT: li 4, 0 12187; PWR7-NEXT: iselgt 6, 5, 4 12188; PWR7-NEXT: cmpldi 3, 2 12189; PWR7-NEXT: iselgt 3, 5, 4 12190; PWR7-NEXT: std 6, -8(1) 12191; PWR7-NEXT: std 3, -16(1) 12192; PWR7-NEXT: addi 3, 1, -16 12193; PWR7-NEXT: lxvd2x 34, 0, 3 12194; PWR7-NEXT: blr 12195; 12196; PWR8-LABEL: ugt_2_v2i64: 12197; PWR8: # %bb.0: 12198; PWR8-NEXT: addis 3, 2, .LCPI102_0@toc@ha 12199; PWR8-NEXT: vpopcntd 2, 2 12200; PWR8-NEXT: addi 3, 3, .LCPI102_0@toc@l 12201; PWR8-NEXT: lxvd2x 35, 0, 3 12202; PWR8-NEXT: vcmpgtud 2, 2, 3 12203; PWR8-NEXT: blr 12204; 12205; PWR9-LABEL: ugt_2_v2i64: 12206; PWR9: # %bb.0: 12207; PWR9-NEXT: addis 3, 2, .LCPI102_0@toc@ha 12208; PWR9-NEXT: vpopcntd 2, 2 12209; PWR9-NEXT: addi 3, 3, .LCPI102_0@toc@l 12210; PWR9-NEXT: lxv 35, 0(3) 12211; PWR9-NEXT: vcmpgtud 2, 2, 3 12212; PWR9-NEXT: blr 12213 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12214 %3 = icmp ugt <2 x i64> %2, <i64 2, i64 2> 12215 %4 = sext <2 x i1> %3 to <2 x i64> 12216 ret <2 x i64> %4 12217} 12218 12219define <2 x i64> @ult_3_v2i64(<2 x i64> %0) { 12220; PWR5-LABEL: ult_3_v2i64: 12221; PWR5: # %bb.0: 12222; PWR5-NEXT: lis 5, 21845 12223; PWR5-NEXT: lis 6, 13107 12224; PWR5-NEXT: ori 5, 5, 21845 12225; PWR5-NEXT: rotldi 8, 4, 63 12226; PWR5-NEXT: rotldi 9, 3, 63 12227; PWR5-NEXT: rldimi 5, 5, 32, 0 12228; PWR5-NEXT: and 8, 8, 5 12229; PWR5-NEXT: and 5, 9, 5 12230; PWR5-NEXT: ori 6, 6, 13107 12231; PWR5-NEXT: sub 3, 3, 5 12232; PWR5-NEXT: rldimi 6, 6, 32, 0 12233; PWR5-NEXT: sub 4, 4, 8 12234; PWR5-NEXT: and 8, 3, 6 12235; PWR5-NEXT: rotldi 3, 3, 62 12236; PWR5-NEXT: and 3, 3, 6 12237; PWR5-NEXT: lis 7, 3855 12238; PWR5-NEXT: and 5, 4, 6 12239; PWR5-NEXT: rotldi 4, 4, 62 12240; PWR5-NEXT: add 3, 8, 3 12241; PWR5-NEXT: lis 9, 257 12242; PWR5-NEXT: ori 7, 7, 3855 12243; PWR5-NEXT: and 4, 4, 6 12244; PWR5-NEXT: rldicl 6, 3, 60, 4 12245; PWR5-NEXT: ori 9, 9, 257 12246; PWR5-NEXT: rldimi 7, 7, 32, 0 12247; PWR5-NEXT: add 4, 5, 4 12248; PWR5-NEXT: add 3, 3, 6 12249; PWR5-NEXT: rldimi 9, 9, 32, 0 12250; PWR5-NEXT: rldicl 5, 4, 60, 4 12251; PWR5-NEXT: and 3, 3, 7 12252; PWR5-NEXT: add 4, 4, 5 12253; PWR5-NEXT: mulld 3, 3, 9 12254; PWR5-NEXT: and 4, 4, 7 12255; PWR5-NEXT: rldicl 3, 3, 8, 56 12256; PWR5-NEXT: li 5, 3 12257; PWR5-NEXT: mulld 4, 4, 9 12258; PWR5-NEXT: subc 6, 3, 5 12259; PWR5-NEXT: rldicl 4, 4, 8, 56 12260; PWR5-NEXT: subfe 3, 3, 3 12261; PWR5-NEXT: subc 5, 4, 5 12262; PWR5-NEXT: subfe 4, 4, 4 12263; PWR5-NEXT: blr 12264; 12265; PWR6-LABEL: ult_3_v2i64: 12266; PWR6: # %bb.0: 12267; PWR6-NEXT: lis 5, 21845 12268; PWR6-NEXT: lis 6, 13107 12269; PWR6-NEXT: ori 5, 5, 21845 12270; PWR6-NEXT: rotldi 8, 4, 63 12271; PWR6-NEXT: rotldi 9, 3, 63 12272; PWR6-NEXT: rldimi 5, 5, 32, 0 12273; PWR6-NEXT: and 8, 8, 5 12274; PWR6-NEXT: and 5, 9, 5 12275; PWR6-NEXT: ori 6, 6, 13107 12276; PWR6-NEXT: sub 3, 3, 5 12277; PWR6-NEXT: rldimi 6, 6, 32, 0 12278; PWR6-NEXT: sub 4, 4, 8 12279; PWR6-NEXT: and 8, 3, 6 12280; PWR6-NEXT: rotldi 3, 3, 62 12281; PWR6-NEXT: and 3, 3, 6 12282; PWR6-NEXT: lis 7, 3855 12283; PWR6-NEXT: and 5, 4, 6 12284; PWR6-NEXT: rotldi 4, 4, 62 12285; PWR6-NEXT: add 3, 8, 3 12286; PWR6-NEXT: lis 9, 257 12287; PWR6-NEXT: ori 7, 7, 3855 12288; PWR6-NEXT: and 4, 4, 6 12289; PWR6-NEXT: rldicl 6, 3, 60, 4 12290; PWR6-NEXT: ori 9, 9, 257 12291; PWR6-NEXT: rldimi 7, 7, 32, 0 12292; PWR6-NEXT: add 4, 5, 4 12293; PWR6-NEXT: add 3, 3, 6 12294; PWR6-NEXT: rldimi 9, 9, 32, 0 12295; PWR6-NEXT: rldicl 5, 4, 60, 4 12296; PWR6-NEXT: and 3, 3, 7 12297; PWR6-NEXT: add 4, 4, 5 12298; PWR6-NEXT: mulld 3, 3, 9 12299; PWR6-NEXT: and 4, 4, 7 12300; PWR6-NEXT: rldicl 3, 3, 8, 56 12301; PWR6-NEXT: li 5, 3 12302; PWR6-NEXT: mulld 4, 4, 9 12303; PWR6-NEXT: subc 6, 3, 5 12304; PWR6-NEXT: rldicl 4, 4, 8, 56 12305; PWR6-NEXT: subfe 3, 3, 3 12306; PWR6-NEXT: subc 5, 4, 5 12307; PWR6-NEXT: subfe 4, 4, 4 12308; PWR6-NEXT: blr 12309; 12310; PWR7-LABEL: ult_3_v2i64: 12311; PWR7: # %bb.0: 12312; PWR7-NEXT: addi 3, 1, -32 12313; PWR7-NEXT: li 5, -1 12314; PWR7-NEXT: stxvd2x 34, 0, 3 12315; PWR7-NEXT: ld 4, -24(1) 12316; PWR7-NEXT: ld 3, -32(1) 12317; PWR7-NEXT: popcntd 4, 4 12318; PWR7-NEXT: popcntd 3, 3 12319; PWR7-NEXT: cmpldi 4, 3 12320; PWR7-NEXT: li 4, 0 12321; PWR7-NEXT: isellt 6, 5, 4 12322; PWR7-NEXT: cmpldi 3, 3 12323; PWR7-NEXT: isellt 3, 5, 4 12324; PWR7-NEXT: std 6, -8(1) 12325; PWR7-NEXT: std 3, -16(1) 12326; PWR7-NEXT: addi 3, 1, -16 12327; PWR7-NEXT: lxvd2x 34, 0, 3 12328; PWR7-NEXT: blr 12329; 12330; PWR8-LABEL: ult_3_v2i64: 12331; PWR8: # %bb.0: 12332; PWR8-NEXT: addis 3, 2, .LCPI103_0@toc@ha 12333; PWR8-NEXT: vpopcntd 2, 2 12334; PWR8-NEXT: addi 3, 3, .LCPI103_0@toc@l 12335; PWR8-NEXT: lxvd2x 35, 0, 3 12336; PWR8-NEXT: vcmpgtud 2, 3, 2 12337; PWR8-NEXT: blr 12338; 12339; PWR9-LABEL: ult_3_v2i64: 12340; PWR9: # %bb.0: 12341; PWR9-NEXT: addis 3, 2, .LCPI103_0@toc@ha 12342; PWR9-NEXT: vpopcntd 2, 2 12343; PWR9-NEXT: addi 3, 3, .LCPI103_0@toc@l 12344; PWR9-NEXT: lxv 35, 0(3) 12345; PWR9-NEXT: vcmpgtud 2, 3, 2 12346; PWR9-NEXT: blr 12347 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12348 %3 = icmp ult <2 x i64> %2, <i64 3, i64 3> 12349 %4 = sext <2 x i1> %3 to <2 x i64> 12350 ret <2 x i64> %4 12351} 12352 12353define <2 x i64> @ugt_3_v2i64(<2 x i64> %0) { 12354; PWR5-LABEL: ugt_3_v2i64: 12355; PWR5: # %bb.0: 12356; PWR5-NEXT: lis 5, 21845 12357; PWR5-NEXT: lis 6, 13107 12358; PWR5-NEXT: ori 5, 5, 21845 12359; PWR5-NEXT: rotldi 8, 4, 63 12360; PWR5-NEXT: rotldi 9, 3, 63 12361; PWR5-NEXT: rldimi 5, 5, 32, 0 12362; PWR5-NEXT: and 8, 8, 5 12363; PWR5-NEXT: and 5, 9, 5 12364; PWR5-NEXT: ori 6, 6, 13107 12365; PWR5-NEXT: sub 3, 3, 5 12366; PWR5-NEXT: rldimi 6, 6, 32, 0 12367; PWR5-NEXT: sub 4, 4, 8 12368; PWR5-NEXT: and 8, 3, 6 12369; PWR5-NEXT: rotldi 3, 3, 62 12370; PWR5-NEXT: and 3, 3, 6 12371; PWR5-NEXT: lis 7, 3855 12372; PWR5-NEXT: and 5, 4, 6 12373; PWR5-NEXT: rotldi 4, 4, 62 12374; PWR5-NEXT: add 3, 8, 3 12375; PWR5-NEXT: lis 9, 257 12376; PWR5-NEXT: ori 7, 7, 3855 12377; PWR5-NEXT: and 4, 4, 6 12378; PWR5-NEXT: rldicl 6, 3, 60, 4 12379; PWR5-NEXT: ori 9, 9, 257 12380; PWR5-NEXT: rldimi 7, 7, 32, 0 12381; PWR5-NEXT: add 4, 5, 4 12382; PWR5-NEXT: add 3, 3, 6 12383; PWR5-NEXT: rldimi 9, 9, 32, 0 12384; PWR5-NEXT: rldicl 5, 4, 60, 4 12385; PWR5-NEXT: and 3, 3, 7 12386; PWR5-NEXT: add 4, 4, 5 12387; PWR5-NEXT: mulld 3, 3, 9 12388; PWR5-NEXT: and 4, 4, 7 12389; PWR5-NEXT: rldicl 3, 3, 8, 56 12390; PWR5-NEXT: mulld 4, 4, 9 12391; PWR5-NEXT: li 5, 3 12392; PWR5-NEXT: subfic 3, 3, 3 12393; PWR5-NEXT: rldicl 4, 4, 8, 56 12394; PWR5-NEXT: subfe 3, 5, 5 12395; PWR5-NEXT: subfic 4, 4, 3 12396; PWR5-NEXT: subfe 4, 5, 5 12397; PWR5-NEXT: blr 12398; 12399; PWR6-LABEL: ugt_3_v2i64: 12400; PWR6: # %bb.0: 12401; PWR6-NEXT: lis 5, 21845 12402; PWR6-NEXT: lis 6, 13107 12403; PWR6-NEXT: ori 5, 5, 21845 12404; PWR6-NEXT: rotldi 8, 4, 63 12405; PWR6-NEXT: rotldi 9, 3, 63 12406; PWR6-NEXT: rldimi 5, 5, 32, 0 12407; PWR6-NEXT: and 8, 8, 5 12408; PWR6-NEXT: and 5, 9, 5 12409; PWR6-NEXT: ori 6, 6, 13107 12410; PWR6-NEXT: sub 3, 3, 5 12411; PWR6-NEXT: rldimi 6, 6, 32, 0 12412; PWR6-NEXT: sub 4, 4, 8 12413; PWR6-NEXT: and 8, 3, 6 12414; PWR6-NEXT: rotldi 3, 3, 62 12415; PWR6-NEXT: and 3, 3, 6 12416; PWR6-NEXT: lis 7, 3855 12417; PWR6-NEXT: and 5, 4, 6 12418; PWR6-NEXT: rotldi 4, 4, 62 12419; PWR6-NEXT: add 3, 8, 3 12420; PWR6-NEXT: lis 9, 257 12421; PWR6-NEXT: ori 7, 7, 3855 12422; PWR6-NEXT: and 4, 4, 6 12423; PWR6-NEXT: rldicl 6, 3, 60, 4 12424; PWR6-NEXT: ori 9, 9, 257 12425; PWR6-NEXT: rldimi 7, 7, 32, 0 12426; PWR6-NEXT: add 4, 5, 4 12427; PWR6-NEXT: add 3, 3, 6 12428; PWR6-NEXT: rldimi 9, 9, 32, 0 12429; PWR6-NEXT: rldicl 5, 4, 60, 4 12430; PWR6-NEXT: and 3, 3, 7 12431; PWR6-NEXT: add 4, 4, 5 12432; PWR6-NEXT: mulld 3, 3, 9 12433; PWR6-NEXT: and 4, 4, 7 12434; PWR6-NEXT: rldicl 3, 3, 8, 56 12435; PWR6-NEXT: mulld 4, 4, 9 12436; PWR6-NEXT: li 5, 3 12437; PWR6-NEXT: subfic 3, 3, 3 12438; PWR6-NEXT: rldicl 4, 4, 8, 56 12439; PWR6-NEXT: subfe 3, 5, 5 12440; PWR6-NEXT: subfic 4, 4, 3 12441; PWR6-NEXT: subfe 4, 5, 5 12442; PWR6-NEXT: blr 12443; 12444; PWR7-LABEL: ugt_3_v2i64: 12445; PWR7: # %bb.0: 12446; PWR7-NEXT: addi 3, 1, -32 12447; PWR7-NEXT: li 5, -1 12448; PWR7-NEXT: stxvd2x 34, 0, 3 12449; PWR7-NEXT: ld 4, -24(1) 12450; PWR7-NEXT: ld 3, -32(1) 12451; PWR7-NEXT: popcntd 4, 4 12452; PWR7-NEXT: popcntd 3, 3 12453; PWR7-NEXT: cmpldi 4, 3 12454; PWR7-NEXT: li 4, 0 12455; PWR7-NEXT: iselgt 6, 5, 4 12456; PWR7-NEXT: cmpldi 3, 3 12457; PWR7-NEXT: iselgt 3, 5, 4 12458; PWR7-NEXT: std 6, -8(1) 12459; PWR7-NEXT: std 3, -16(1) 12460; PWR7-NEXT: addi 3, 1, -16 12461; PWR7-NEXT: lxvd2x 34, 0, 3 12462; PWR7-NEXT: blr 12463; 12464; PWR8-LABEL: ugt_3_v2i64: 12465; PWR8: # %bb.0: 12466; PWR8-NEXT: addis 3, 2, .LCPI104_0@toc@ha 12467; PWR8-NEXT: vpopcntd 2, 2 12468; PWR8-NEXT: addi 3, 3, .LCPI104_0@toc@l 12469; PWR8-NEXT: lxvd2x 35, 0, 3 12470; PWR8-NEXT: vcmpgtud 2, 2, 3 12471; PWR8-NEXT: blr 12472; 12473; PWR9-LABEL: ugt_3_v2i64: 12474; PWR9: # %bb.0: 12475; PWR9-NEXT: addis 3, 2, .LCPI104_0@toc@ha 12476; PWR9-NEXT: vpopcntd 2, 2 12477; PWR9-NEXT: addi 3, 3, .LCPI104_0@toc@l 12478; PWR9-NEXT: lxv 35, 0(3) 12479; PWR9-NEXT: vcmpgtud 2, 2, 3 12480; PWR9-NEXT: blr 12481 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12482 %3 = icmp ugt <2 x i64> %2, <i64 3, i64 3> 12483 %4 = sext <2 x i1> %3 to <2 x i64> 12484 ret <2 x i64> %4 12485} 12486 12487define <2 x i64> @ult_4_v2i64(<2 x i64> %0) { 12488; PWR5-LABEL: ult_4_v2i64: 12489; PWR5: # %bb.0: 12490; PWR5-NEXT: lis 5, 21845 12491; PWR5-NEXT: lis 6, 13107 12492; PWR5-NEXT: ori 5, 5, 21845 12493; PWR5-NEXT: rotldi 8, 4, 63 12494; PWR5-NEXT: rotldi 9, 3, 63 12495; PWR5-NEXT: rldimi 5, 5, 32, 0 12496; PWR5-NEXT: and 8, 8, 5 12497; PWR5-NEXT: and 5, 9, 5 12498; PWR5-NEXT: ori 6, 6, 13107 12499; PWR5-NEXT: sub 3, 3, 5 12500; PWR5-NEXT: rldimi 6, 6, 32, 0 12501; PWR5-NEXT: sub 4, 4, 8 12502; PWR5-NEXT: and 8, 3, 6 12503; PWR5-NEXT: rotldi 3, 3, 62 12504; PWR5-NEXT: and 3, 3, 6 12505; PWR5-NEXT: lis 7, 3855 12506; PWR5-NEXT: and 5, 4, 6 12507; PWR5-NEXT: rotldi 4, 4, 62 12508; PWR5-NEXT: add 3, 8, 3 12509; PWR5-NEXT: lis 9, 257 12510; PWR5-NEXT: ori 7, 7, 3855 12511; PWR5-NEXT: and 4, 4, 6 12512; PWR5-NEXT: rldicl 6, 3, 60, 4 12513; PWR5-NEXT: ori 9, 9, 257 12514; PWR5-NEXT: rldimi 7, 7, 32, 0 12515; PWR5-NEXT: add 4, 5, 4 12516; PWR5-NEXT: add 3, 3, 6 12517; PWR5-NEXT: rldimi 9, 9, 32, 0 12518; PWR5-NEXT: rldicl 5, 4, 60, 4 12519; PWR5-NEXT: and 3, 3, 7 12520; PWR5-NEXT: add 4, 4, 5 12521; PWR5-NEXT: mulld 3, 3, 9 12522; PWR5-NEXT: and 4, 4, 7 12523; PWR5-NEXT: rldicl 3, 3, 8, 56 12524; PWR5-NEXT: li 5, 4 12525; PWR5-NEXT: mulld 4, 4, 9 12526; PWR5-NEXT: subc 6, 3, 5 12527; PWR5-NEXT: rldicl 4, 4, 8, 56 12528; PWR5-NEXT: subfe 3, 3, 3 12529; PWR5-NEXT: subc 5, 4, 5 12530; PWR5-NEXT: subfe 4, 4, 4 12531; PWR5-NEXT: blr 12532; 12533; PWR6-LABEL: ult_4_v2i64: 12534; PWR6: # %bb.0: 12535; PWR6-NEXT: lis 5, 21845 12536; PWR6-NEXT: lis 6, 13107 12537; PWR6-NEXT: ori 5, 5, 21845 12538; PWR6-NEXT: rotldi 8, 4, 63 12539; PWR6-NEXT: rotldi 9, 3, 63 12540; PWR6-NEXT: rldimi 5, 5, 32, 0 12541; PWR6-NEXT: and 8, 8, 5 12542; PWR6-NEXT: and 5, 9, 5 12543; PWR6-NEXT: ori 6, 6, 13107 12544; PWR6-NEXT: sub 3, 3, 5 12545; PWR6-NEXT: rldimi 6, 6, 32, 0 12546; PWR6-NEXT: sub 4, 4, 8 12547; PWR6-NEXT: and 8, 3, 6 12548; PWR6-NEXT: rotldi 3, 3, 62 12549; PWR6-NEXT: and 3, 3, 6 12550; PWR6-NEXT: lis 7, 3855 12551; PWR6-NEXT: and 5, 4, 6 12552; PWR6-NEXT: rotldi 4, 4, 62 12553; PWR6-NEXT: add 3, 8, 3 12554; PWR6-NEXT: lis 9, 257 12555; PWR6-NEXT: ori 7, 7, 3855 12556; PWR6-NEXT: and 4, 4, 6 12557; PWR6-NEXT: rldicl 6, 3, 60, 4 12558; PWR6-NEXT: ori 9, 9, 257 12559; PWR6-NEXT: rldimi 7, 7, 32, 0 12560; PWR6-NEXT: add 4, 5, 4 12561; PWR6-NEXT: add 3, 3, 6 12562; PWR6-NEXT: rldimi 9, 9, 32, 0 12563; PWR6-NEXT: rldicl 5, 4, 60, 4 12564; PWR6-NEXT: and 3, 3, 7 12565; PWR6-NEXT: add 4, 4, 5 12566; PWR6-NEXT: mulld 3, 3, 9 12567; PWR6-NEXT: and 4, 4, 7 12568; PWR6-NEXT: rldicl 3, 3, 8, 56 12569; PWR6-NEXT: li 5, 4 12570; PWR6-NEXT: mulld 4, 4, 9 12571; PWR6-NEXT: subc 6, 3, 5 12572; PWR6-NEXT: rldicl 4, 4, 8, 56 12573; PWR6-NEXT: subfe 3, 3, 3 12574; PWR6-NEXT: subc 5, 4, 5 12575; PWR6-NEXT: subfe 4, 4, 4 12576; PWR6-NEXT: blr 12577; 12578; PWR7-LABEL: ult_4_v2i64: 12579; PWR7: # %bb.0: 12580; PWR7-NEXT: addi 3, 1, -32 12581; PWR7-NEXT: li 5, -1 12582; PWR7-NEXT: stxvd2x 34, 0, 3 12583; PWR7-NEXT: ld 4, -24(1) 12584; PWR7-NEXT: ld 3, -32(1) 12585; PWR7-NEXT: popcntd 4, 4 12586; PWR7-NEXT: popcntd 3, 3 12587; PWR7-NEXT: cmpldi 4, 4 12588; PWR7-NEXT: li 4, 0 12589; PWR7-NEXT: isellt 6, 5, 4 12590; PWR7-NEXT: cmpldi 3, 4 12591; PWR7-NEXT: isellt 3, 5, 4 12592; PWR7-NEXT: std 6, -8(1) 12593; PWR7-NEXT: std 3, -16(1) 12594; PWR7-NEXT: addi 3, 1, -16 12595; PWR7-NEXT: lxvd2x 34, 0, 3 12596; PWR7-NEXT: blr 12597; 12598; PWR8-LABEL: ult_4_v2i64: 12599; PWR8: # %bb.0: 12600; PWR8-NEXT: addis 3, 2, .LCPI105_0@toc@ha 12601; PWR8-NEXT: vpopcntd 2, 2 12602; PWR8-NEXT: addi 3, 3, .LCPI105_0@toc@l 12603; PWR8-NEXT: lxvd2x 35, 0, 3 12604; PWR8-NEXT: vcmpgtud 2, 3, 2 12605; PWR8-NEXT: blr 12606; 12607; PWR9-LABEL: ult_4_v2i64: 12608; PWR9: # %bb.0: 12609; PWR9-NEXT: addis 3, 2, .LCPI105_0@toc@ha 12610; PWR9-NEXT: vpopcntd 2, 2 12611; PWR9-NEXT: addi 3, 3, .LCPI105_0@toc@l 12612; PWR9-NEXT: lxv 35, 0(3) 12613; PWR9-NEXT: vcmpgtud 2, 3, 2 12614; PWR9-NEXT: blr 12615 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12616 %3 = icmp ult <2 x i64> %2, <i64 4, i64 4> 12617 %4 = sext <2 x i1> %3 to <2 x i64> 12618 ret <2 x i64> %4 12619} 12620 12621define <2 x i64> @ugt_4_v2i64(<2 x i64> %0) { 12622; PWR5-LABEL: ugt_4_v2i64: 12623; PWR5: # %bb.0: 12624; PWR5-NEXT: lis 5, 21845 12625; PWR5-NEXT: lis 6, 13107 12626; PWR5-NEXT: ori 5, 5, 21845 12627; PWR5-NEXT: rotldi 8, 4, 63 12628; PWR5-NEXT: rotldi 9, 3, 63 12629; PWR5-NEXT: rldimi 5, 5, 32, 0 12630; PWR5-NEXT: and 8, 8, 5 12631; PWR5-NEXT: and 5, 9, 5 12632; PWR5-NEXT: ori 6, 6, 13107 12633; PWR5-NEXT: sub 3, 3, 5 12634; PWR5-NEXT: rldimi 6, 6, 32, 0 12635; PWR5-NEXT: sub 4, 4, 8 12636; PWR5-NEXT: and 8, 3, 6 12637; PWR5-NEXT: rotldi 3, 3, 62 12638; PWR5-NEXT: and 3, 3, 6 12639; PWR5-NEXT: lis 7, 3855 12640; PWR5-NEXT: and 5, 4, 6 12641; PWR5-NEXT: rotldi 4, 4, 62 12642; PWR5-NEXT: add 3, 8, 3 12643; PWR5-NEXT: lis 9, 257 12644; PWR5-NEXT: ori 7, 7, 3855 12645; PWR5-NEXT: and 4, 4, 6 12646; PWR5-NEXT: rldicl 6, 3, 60, 4 12647; PWR5-NEXT: ori 9, 9, 257 12648; PWR5-NEXT: rldimi 7, 7, 32, 0 12649; PWR5-NEXT: add 4, 5, 4 12650; PWR5-NEXT: add 3, 3, 6 12651; PWR5-NEXT: rldimi 9, 9, 32, 0 12652; PWR5-NEXT: rldicl 5, 4, 60, 4 12653; PWR5-NEXT: and 3, 3, 7 12654; PWR5-NEXT: add 4, 4, 5 12655; PWR5-NEXT: mulld 3, 3, 9 12656; PWR5-NEXT: and 4, 4, 7 12657; PWR5-NEXT: rldicl 3, 3, 8, 56 12658; PWR5-NEXT: mulld 4, 4, 9 12659; PWR5-NEXT: li 5, 4 12660; PWR5-NEXT: subfic 3, 3, 4 12661; PWR5-NEXT: rldicl 4, 4, 8, 56 12662; PWR5-NEXT: subfe 3, 5, 5 12663; PWR5-NEXT: subfic 4, 4, 4 12664; PWR5-NEXT: subfe 4, 5, 5 12665; PWR5-NEXT: blr 12666; 12667; PWR6-LABEL: ugt_4_v2i64: 12668; PWR6: # %bb.0: 12669; PWR6-NEXT: lis 5, 21845 12670; PWR6-NEXT: lis 6, 13107 12671; PWR6-NEXT: ori 5, 5, 21845 12672; PWR6-NEXT: rotldi 8, 4, 63 12673; PWR6-NEXT: rotldi 9, 3, 63 12674; PWR6-NEXT: rldimi 5, 5, 32, 0 12675; PWR6-NEXT: and 8, 8, 5 12676; PWR6-NEXT: and 5, 9, 5 12677; PWR6-NEXT: ori 6, 6, 13107 12678; PWR6-NEXT: sub 3, 3, 5 12679; PWR6-NEXT: rldimi 6, 6, 32, 0 12680; PWR6-NEXT: sub 4, 4, 8 12681; PWR6-NEXT: and 8, 3, 6 12682; PWR6-NEXT: rotldi 3, 3, 62 12683; PWR6-NEXT: and 3, 3, 6 12684; PWR6-NEXT: lis 7, 3855 12685; PWR6-NEXT: and 5, 4, 6 12686; PWR6-NEXT: rotldi 4, 4, 62 12687; PWR6-NEXT: add 3, 8, 3 12688; PWR6-NEXT: lis 9, 257 12689; PWR6-NEXT: ori 7, 7, 3855 12690; PWR6-NEXT: and 4, 4, 6 12691; PWR6-NEXT: rldicl 6, 3, 60, 4 12692; PWR6-NEXT: ori 9, 9, 257 12693; PWR6-NEXT: rldimi 7, 7, 32, 0 12694; PWR6-NEXT: add 4, 5, 4 12695; PWR6-NEXT: add 3, 3, 6 12696; PWR6-NEXT: rldimi 9, 9, 32, 0 12697; PWR6-NEXT: rldicl 5, 4, 60, 4 12698; PWR6-NEXT: and 3, 3, 7 12699; PWR6-NEXT: add 4, 4, 5 12700; PWR6-NEXT: mulld 3, 3, 9 12701; PWR6-NEXT: and 4, 4, 7 12702; PWR6-NEXT: rldicl 3, 3, 8, 56 12703; PWR6-NEXT: mulld 4, 4, 9 12704; PWR6-NEXT: li 5, 4 12705; PWR6-NEXT: subfic 3, 3, 4 12706; PWR6-NEXT: rldicl 4, 4, 8, 56 12707; PWR6-NEXT: subfe 3, 5, 5 12708; PWR6-NEXT: subfic 4, 4, 4 12709; PWR6-NEXT: subfe 4, 5, 5 12710; PWR6-NEXT: blr 12711; 12712; PWR7-LABEL: ugt_4_v2i64: 12713; PWR7: # %bb.0: 12714; PWR7-NEXT: addi 3, 1, -32 12715; PWR7-NEXT: li 5, -1 12716; PWR7-NEXT: stxvd2x 34, 0, 3 12717; PWR7-NEXT: ld 4, -24(1) 12718; PWR7-NEXT: ld 3, -32(1) 12719; PWR7-NEXT: popcntd 4, 4 12720; PWR7-NEXT: popcntd 3, 3 12721; PWR7-NEXT: cmpldi 4, 4 12722; PWR7-NEXT: li 4, 0 12723; PWR7-NEXT: iselgt 6, 5, 4 12724; PWR7-NEXT: cmpldi 3, 4 12725; PWR7-NEXT: iselgt 3, 5, 4 12726; PWR7-NEXT: std 6, -8(1) 12727; PWR7-NEXT: std 3, -16(1) 12728; PWR7-NEXT: addi 3, 1, -16 12729; PWR7-NEXT: lxvd2x 34, 0, 3 12730; PWR7-NEXT: blr 12731; 12732; PWR8-LABEL: ugt_4_v2i64: 12733; PWR8: # %bb.0: 12734; PWR8-NEXT: addis 3, 2, .LCPI106_0@toc@ha 12735; PWR8-NEXT: vpopcntd 2, 2 12736; PWR8-NEXT: addi 3, 3, .LCPI106_0@toc@l 12737; PWR8-NEXT: lxvd2x 35, 0, 3 12738; PWR8-NEXT: vcmpgtud 2, 2, 3 12739; PWR8-NEXT: blr 12740; 12741; PWR9-LABEL: ugt_4_v2i64: 12742; PWR9: # %bb.0: 12743; PWR9-NEXT: addis 3, 2, .LCPI106_0@toc@ha 12744; PWR9-NEXT: vpopcntd 2, 2 12745; PWR9-NEXT: addi 3, 3, .LCPI106_0@toc@l 12746; PWR9-NEXT: lxv 35, 0(3) 12747; PWR9-NEXT: vcmpgtud 2, 2, 3 12748; PWR9-NEXT: blr 12749 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12750 %3 = icmp ugt <2 x i64> %2, <i64 4, i64 4> 12751 %4 = sext <2 x i1> %3 to <2 x i64> 12752 ret <2 x i64> %4 12753} 12754 12755define <2 x i64> @ult_5_v2i64(<2 x i64> %0) { 12756; PWR5-LABEL: ult_5_v2i64: 12757; PWR5: # %bb.0: 12758; PWR5-NEXT: lis 5, 21845 12759; PWR5-NEXT: lis 6, 13107 12760; PWR5-NEXT: ori 5, 5, 21845 12761; PWR5-NEXT: rotldi 8, 4, 63 12762; PWR5-NEXT: rotldi 9, 3, 63 12763; PWR5-NEXT: rldimi 5, 5, 32, 0 12764; PWR5-NEXT: and 8, 8, 5 12765; PWR5-NEXT: and 5, 9, 5 12766; PWR5-NEXT: ori 6, 6, 13107 12767; PWR5-NEXT: sub 3, 3, 5 12768; PWR5-NEXT: rldimi 6, 6, 32, 0 12769; PWR5-NEXT: sub 4, 4, 8 12770; PWR5-NEXT: and 8, 3, 6 12771; PWR5-NEXT: rotldi 3, 3, 62 12772; PWR5-NEXT: and 3, 3, 6 12773; PWR5-NEXT: lis 7, 3855 12774; PWR5-NEXT: and 5, 4, 6 12775; PWR5-NEXT: rotldi 4, 4, 62 12776; PWR5-NEXT: add 3, 8, 3 12777; PWR5-NEXT: lis 9, 257 12778; PWR5-NEXT: ori 7, 7, 3855 12779; PWR5-NEXT: and 4, 4, 6 12780; PWR5-NEXT: rldicl 6, 3, 60, 4 12781; PWR5-NEXT: ori 9, 9, 257 12782; PWR5-NEXT: rldimi 7, 7, 32, 0 12783; PWR5-NEXT: add 4, 5, 4 12784; PWR5-NEXT: add 3, 3, 6 12785; PWR5-NEXT: rldimi 9, 9, 32, 0 12786; PWR5-NEXT: rldicl 5, 4, 60, 4 12787; PWR5-NEXT: and 3, 3, 7 12788; PWR5-NEXT: add 4, 4, 5 12789; PWR5-NEXT: mulld 3, 3, 9 12790; PWR5-NEXT: and 4, 4, 7 12791; PWR5-NEXT: rldicl 3, 3, 8, 56 12792; PWR5-NEXT: li 5, 5 12793; PWR5-NEXT: mulld 4, 4, 9 12794; PWR5-NEXT: subc 6, 3, 5 12795; PWR5-NEXT: rldicl 4, 4, 8, 56 12796; PWR5-NEXT: subfe 3, 3, 3 12797; PWR5-NEXT: subc 5, 4, 5 12798; PWR5-NEXT: subfe 4, 4, 4 12799; PWR5-NEXT: blr 12800; 12801; PWR6-LABEL: ult_5_v2i64: 12802; PWR6: # %bb.0: 12803; PWR6-NEXT: lis 5, 21845 12804; PWR6-NEXT: lis 6, 13107 12805; PWR6-NEXT: ori 5, 5, 21845 12806; PWR6-NEXT: rotldi 8, 4, 63 12807; PWR6-NEXT: rotldi 9, 3, 63 12808; PWR6-NEXT: rldimi 5, 5, 32, 0 12809; PWR6-NEXT: and 8, 8, 5 12810; PWR6-NEXT: and 5, 9, 5 12811; PWR6-NEXT: ori 6, 6, 13107 12812; PWR6-NEXT: sub 3, 3, 5 12813; PWR6-NEXT: rldimi 6, 6, 32, 0 12814; PWR6-NEXT: sub 4, 4, 8 12815; PWR6-NEXT: and 8, 3, 6 12816; PWR6-NEXT: rotldi 3, 3, 62 12817; PWR6-NEXT: and 3, 3, 6 12818; PWR6-NEXT: lis 7, 3855 12819; PWR6-NEXT: and 5, 4, 6 12820; PWR6-NEXT: rotldi 4, 4, 62 12821; PWR6-NEXT: add 3, 8, 3 12822; PWR6-NEXT: lis 9, 257 12823; PWR6-NEXT: ori 7, 7, 3855 12824; PWR6-NEXT: and 4, 4, 6 12825; PWR6-NEXT: rldicl 6, 3, 60, 4 12826; PWR6-NEXT: ori 9, 9, 257 12827; PWR6-NEXT: rldimi 7, 7, 32, 0 12828; PWR6-NEXT: add 4, 5, 4 12829; PWR6-NEXT: add 3, 3, 6 12830; PWR6-NEXT: rldimi 9, 9, 32, 0 12831; PWR6-NEXT: rldicl 5, 4, 60, 4 12832; PWR6-NEXT: and 3, 3, 7 12833; PWR6-NEXT: add 4, 4, 5 12834; PWR6-NEXT: mulld 3, 3, 9 12835; PWR6-NEXT: and 4, 4, 7 12836; PWR6-NEXT: rldicl 3, 3, 8, 56 12837; PWR6-NEXT: li 5, 5 12838; PWR6-NEXT: mulld 4, 4, 9 12839; PWR6-NEXT: subc 6, 3, 5 12840; PWR6-NEXT: rldicl 4, 4, 8, 56 12841; PWR6-NEXT: subfe 3, 3, 3 12842; PWR6-NEXT: subc 5, 4, 5 12843; PWR6-NEXT: subfe 4, 4, 4 12844; PWR6-NEXT: blr 12845; 12846; PWR7-LABEL: ult_5_v2i64: 12847; PWR7: # %bb.0: 12848; PWR7-NEXT: addi 3, 1, -32 12849; PWR7-NEXT: li 5, -1 12850; PWR7-NEXT: stxvd2x 34, 0, 3 12851; PWR7-NEXT: ld 4, -24(1) 12852; PWR7-NEXT: ld 3, -32(1) 12853; PWR7-NEXT: popcntd 4, 4 12854; PWR7-NEXT: popcntd 3, 3 12855; PWR7-NEXT: cmpldi 4, 5 12856; PWR7-NEXT: li 4, 0 12857; PWR7-NEXT: isellt 6, 5, 4 12858; PWR7-NEXT: cmpldi 3, 5 12859; PWR7-NEXT: isellt 3, 5, 4 12860; PWR7-NEXT: std 6, -8(1) 12861; PWR7-NEXT: std 3, -16(1) 12862; PWR7-NEXT: addi 3, 1, -16 12863; PWR7-NEXT: lxvd2x 34, 0, 3 12864; PWR7-NEXT: blr 12865; 12866; PWR8-LABEL: ult_5_v2i64: 12867; PWR8: # %bb.0: 12868; PWR8-NEXT: addis 3, 2, .LCPI107_0@toc@ha 12869; PWR8-NEXT: vpopcntd 2, 2 12870; PWR8-NEXT: addi 3, 3, .LCPI107_0@toc@l 12871; PWR8-NEXT: lxvd2x 35, 0, 3 12872; PWR8-NEXT: vcmpgtud 2, 3, 2 12873; PWR8-NEXT: blr 12874; 12875; PWR9-LABEL: ult_5_v2i64: 12876; PWR9: # %bb.0: 12877; PWR9-NEXT: addis 3, 2, .LCPI107_0@toc@ha 12878; PWR9-NEXT: vpopcntd 2, 2 12879; PWR9-NEXT: addi 3, 3, .LCPI107_0@toc@l 12880; PWR9-NEXT: lxv 35, 0(3) 12881; PWR9-NEXT: vcmpgtud 2, 3, 2 12882; PWR9-NEXT: blr 12883 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 12884 %3 = icmp ult <2 x i64> %2, <i64 5, i64 5> 12885 %4 = sext <2 x i1> %3 to <2 x i64> 12886 ret <2 x i64> %4 12887} 12888 12889define <2 x i64> @ugt_5_v2i64(<2 x i64> %0) { 12890; PWR5-LABEL: ugt_5_v2i64: 12891; PWR5: # %bb.0: 12892; PWR5-NEXT: lis 5, 21845 12893; PWR5-NEXT: lis 6, 13107 12894; PWR5-NEXT: ori 5, 5, 21845 12895; PWR5-NEXT: rotldi 8, 4, 63 12896; PWR5-NEXT: rotldi 9, 3, 63 12897; PWR5-NEXT: rldimi 5, 5, 32, 0 12898; PWR5-NEXT: and 8, 8, 5 12899; PWR5-NEXT: and 5, 9, 5 12900; PWR5-NEXT: ori 6, 6, 13107 12901; PWR5-NEXT: sub 3, 3, 5 12902; PWR5-NEXT: rldimi 6, 6, 32, 0 12903; PWR5-NEXT: sub 4, 4, 8 12904; PWR5-NEXT: and 8, 3, 6 12905; PWR5-NEXT: rotldi 3, 3, 62 12906; PWR5-NEXT: and 3, 3, 6 12907; PWR5-NEXT: lis 7, 3855 12908; PWR5-NEXT: and 5, 4, 6 12909; PWR5-NEXT: rotldi 4, 4, 62 12910; PWR5-NEXT: add 3, 8, 3 12911; PWR5-NEXT: lis 9, 257 12912; PWR5-NEXT: ori 7, 7, 3855 12913; PWR5-NEXT: and 4, 4, 6 12914; PWR5-NEXT: rldicl 6, 3, 60, 4 12915; PWR5-NEXT: ori 9, 9, 257 12916; PWR5-NEXT: rldimi 7, 7, 32, 0 12917; PWR5-NEXT: add 4, 5, 4 12918; PWR5-NEXT: add 3, 3, 6 12919; PWR5-NEXT: rldimi 9, 9, 32, 0 12920; PWR5-NEXT: rldicl 5, 4, 60, 4 12921; PWR5-NEXT: and 3, 3, 7 12922; PWR5-NEXT: add 4, 4, 5 12923; PWR5-NEXT: mulld 3, 3, 9 12924; PWR5-NEXT: and 4, 4, 7 12925; PWR5-NEXT: rldicl 3, 3, 8, 56 12926; PWR5-NEXT: mulld 4, 4, 9 12927; PWR5-NEXT: li 5, 5 12928; PWR5-NEXT: subfic 3, 3, 5 12929; PWR5-NEXT: rldicl 4, 4, 8, 56 12930; PWR5-NEXT: subfe 3, 5, 5 12931; PWR5-NEXT: subfic 4, 4, 5 12932; PWR5-NEXT: subfe 4, 5, 5 12933; PWR5-NEXT: blr 12934; 12935; PWR6-LABEL: ugt_5_v2i64: 12936; PWR6: # %bb.0: 12937; PWR6-NEXT: lis 5, 21845 12938; PWR6-NEXT: lis 6, 13107 12939; PWR6-NEXT: ori 5, 5, 21845 12940; PWR6-NEXT: rotldi 8, 4, 63 12941; PWR6-NEXT: rotldi 9, 3, 63 12942; PWR6-NEXT: rldimi 5, 5, 32, 0 12943; PWR6-NEXT: and 8, 8, 5 12944; PWR6-NEXT: and 5, 9, 5 12945; PWR6-NEXT: ori 6, 6, 13107 12946; PWR6-NEXT: sub 3, 3, 5 12947; PWR6-NEXT: rldimi 6, 6, 32, 0 12948; PWR6-NEXT: sub 4, 4, 8 12949; PWR6-NEXT: and 8, 3, 6 12950; PWR6-NEXT: rotldi 3, 3, 62 12951; PWR6-NEXT: and 3, 3, 6 12952; PWR6-NEXT: lis 7, 3855 12953; PWR6-NEXT: and 5, 4, 6 12954; PWR6-NEXT: rotldi 4, 4, 62 12955; PWR6-NEXT: add 3, 8, 3 12956; PWR6-NEXT: lis 9, 257 12957; PWR6-NEXT: ori 7, 7, 3855 12958; PWR6-NEXT: and 4, 4, 6 12959; PWR6-NEXT: rldicl 6, 3, 60, 4 12960; PWR6-NEXT: ori 9, 9, 257 12961; PWR6-NEXT: rldimi 7, 7, 32, 0 12962; PWR6-NEXT: add 4, 5, 4 12963; PWR6-NEXT: add 3, 3, 6 12964; PWR6-NEXT: rldimi 9, 9, 32, 0 12965; PWR6-NEXT: rldicl 5, 4, 60, 4 12966; PWR6-NEXT: and 3, 3, 7 12967; PWR6-NEXT: add 4, 4, 5 12968; PWR6-NEXT: mulld 3, 3, 9 12969; PWR6-NEXT: and 4, 4, 7 12970; PWR6-NEXT: rldicl 3, 3, 8, 56 12971; PWR6-NEXT: mulld 4, 4, 9 12972; PWR6-NEXT: li 5, 5 12973; PWR6-NEXT: subfic 3, 3, 5 12974; PWR6-NEXT: rldicl 4, 4, 8, 56 12975; PWR6-NEXT: subfe 3, 5, 5 12976; PWR6-NEXT: subfic 4, 4, 5 12977; PWR6-NEXT: subfe 4, 5, 5 12978; PWR6-NEXT: blr 12979; 12980; PWR7-LABEL: ugt_5_v2i64: 12981; PWR7: # %bb.0: 12982; PWR7-NEXT: addi 3, 1, -32 12983; PWR7-NEXT: li 5, -1 12984; PWR7-NEXT: stxvd2x 34, 0, 3 12985; PWR7-NEXT: ld 4, -24(1) 12986; PWR7-NEXT: ld 3, -32(1) 12987; PWR7-NEXT: popcntd 4, 4 12988; PWR7-NEXT: popcntd 3, 3 12989; PWR7-NEXT: cmpldi 4, 5 12990; PWR7-NEXT: li 4, 0 12991; PWR7-NEXT: iselgt 6, 5, 4 12992; PWR7-NEXT: cmpldi 3, 5 12993; PWR7-NEXT: iselgt 3, 5, 4 12994; PWR7-NEXT: std 6, -8(1) 12995; PWR7-NEXT: std 3, -16(1) 12996; PWR7-NEXT: addi 3, 1, -16 12997; PWR7-NEXT: lxvd2x 34, 0, 3 12998; PWR7-NEXT: blr 12999; 13000; PWR8-LABEL: ugt_5_v2i64: 13001; PWR8: # %bb.0: 13002; PWR8-NEXT: addis 3, 2, .LCPI108_0@toc@ha 13003; PWR8-NEXT: vpopcntd 2, 2 13004; PWR8-NEXT: addi 3, 3, .LCPI108_0@toc@l 13005; PWR8-NEXT: lxvd2x 35, 0, 3 13006; PWR8-NEXT: vcmpgtud 2, 2, 3 13007; PWR8-NEXT: blr 13008; 13009; PWR9-LABEL: ugt_5_v2i64: 13010; PWR9: # %bb.0: 13011; PWR9-NEXT: addis 3, 2, .LCPI108_0@toc@ha 13012; PWR9-NEXT: vpopcntd 2, 2 13013; PWR9-NEXT: addi 3, 3, .LCPI108_0@toc@l 13014; PWR9-NEXT: lxv 35, 0(3) 13015; PWR9-NEXT: vcmpgtud 2, 2, 3 13016; PWR9-NEXT: blr 13017 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13018 %3 = icmp ugt <2 x i64> %2, <i64 5, i64 5> 13019 %4 = sext <2 x i1> %3 to <2 x i64> 13020 ret <2 x i64> %4 13021} 13022 13023define <2 x i64> @ult_6_v2i64(<2 x i64> %0) { 13024; PWR5-LABEL: ult_6_v2i64: 13025; PWR5: # %bb.0: 13026; PWR5-NEXT: lis 5, 21845 13027; PWR5-NEXT: lis 6, 13107 13028; PWR5-NEXT: ori 5, 5, 21845 13029; PWR5-NEXT: rotldi 8, 4, 63 13030; PWR5-NEXT: rotldi 9, 3, 63 13031; PWR5-NEXT: rldimi 5, 5, 32, 0 13032; PWR5-NEXT: and 8, 8, 5 13033; PWR5-NEXT: and 5, 9, 5 13034; PWR5-NEXT: ori 6, 6, 13107 13035; PWR5-NEXT: sub 3, 3, 5 13036; PWR5-NEXT: rldimi 6, 6, 32, 0 13037; PWR5-NEXT: sub 4, 4, 8 13038; PWR5-NEXT: and 8, 3, 6 13039; PWR5-NEXT: rotldi 3, 3, 62 13040; PWR5-NEXT: and 3, 3, 6 13041; PWR5-NEXT: lis 7, 3855 13042; PWR5-NEXT: and 5, 4, 6 13043; PWR5-NEXT: rotldi 4, 4, 62 13044; PWR5-NEXT: add 3, 8, 3 13045; PWR5-NEXT: lis 9, 257 13046; PWR5-NEXT: ori 7, 7, 3855 13047; PWR5-NEXT: and 4, 4, 6 13048; PWR5-NEXT: rldicl 6, 3, 60, 4 13049; PWR5-NEXT: ori 9, 9, 257 13050; PWR5-NEXT: rldimi 7, 7, 32, 0 13051; PWR5-NEXT: add 4, 5, 4 13052; PWR5-NEXT: add 3, 3, 6 13053; PWR5-NEXT: rldimi 9, 9, 32, 0 13054; PWR5-NEXT: rldicl 5, 4, 60, 4 13055; PWR5-NEXT: and 3, 3, 7 13056; PWR5-NEXT: add 4, 4, 5 13057; PWR5-NEXT: mulld 3, 3, 9 13058; PWR5-NEXT: and 4, 4, 7 13059; PWR5-NEXT: rldicl 3, 3, 8, 56 13060; PWR5-NEXT: li 5, 6 13061; PWR5-NEXT: mulld 4, 4, 9 13062; PWR5-NEXT: subc 6, 3, 5 13063; PWR5-NEXT: rldicl 4, 4, 8, 56 13064; PWR5-NEXT: subfe 3, 3, 3 13065; PWR5-NEXT: subc 5, 4, 5 13066; PWR5-NEXT: subfe 4, 4, 4 13067; PWR5-NEXT: blr 13068; 13069; PWR6-LABEL: ult_6_v2i64: 13070; PWR6: # %bb.0: 13071; PWR6-NEXT: lis 5, 21845 13072; PWR6-NEXT: lis 6, 13107 13073; PWR6-NEXT: ori 5, 5, 21845 13074; PWR6-NEXT: rotldi 8, 4, 63 13075; PWR6-NEXT: rotldi 9, 3, 63 13076; PWR6-NEXT: rldimi 5, 5, 32, 0 13077; PWR6-NEXT: and 8, 8, 5 13078; PWR6-NEXT: and 5, 9, 5 13079; PWR6-NEXT: ori 6, 6, 13107 13080; PWR6-NEXT: sub 3, 3, 5 13081; PWR6-NEXT: rldimi 6, 6, 32, 0 13082; PWR6-NEXT: sub 4, 4, 8 13083; PWR6-NEXT: and 8, 3, 6 13084; PWR6-NEXT: rotldi 3, 3, 62 13085; PWR6-NEXT: and 3, 3, 6 13086; PWR6-NEXT: lis 7, 3855 13087; PWR6-NEXT: and 5, 4, 6 13088; PWR6-NEXT: rotldi 4, 4, 62 13089; PWR6-NEXT: add 3, 8, 3 13090; PWR6-NEXT: lis 9, 257 13091; PWR6-NEXT: ori 7, 7, 3855 13092; PWR6-NEXT: and 4, 4, 6 13093; PWR6-NEXT: rldicl 6, 3, 60, 4 13094; PWR6-NEXT: ori 9, 9, 257 13095; PWR6-NEXT: rldimi 7, 7, 32, 0 13096; PWR6-NEXT: add 4, 5, 4 13097; PWR6-NEXT: add 3, 3, 6 13098; PWR6-NEXT: rldimi 9, 9, 32, 0 13099; PWR6-NEXT: rldicl 5, 4, 60, 4 13100; PWR6-NEXT: and 3, 3, 7 13101; PWR6-NEXT: add 4, 4, 5 13102; PWR6-NEXT: mulld 3, 3, 9 13103; PWR6-NEXT: and 4, 4, 7 13104; PWR6-NEXT: rldicl 3, 3, 8, 56 13105; PWR6-NEXT: li 5, 6 13106; PWR6-NEXT: mulld 4, 4, 9 13107; PWR6-NEXT: subc 6, 3, 5 13108; PWR6-NEXT: rldicl 4, 4, 8, 56 13109; PWR6-NEXT: subfe 3, 3, 3 13110; PWR6-NEXT: subc 5, 4, 5 13111; PWR6-NEXT: subfe 4, 4, 4 13112; PWR6-NEXT: blr 13113; 13114; PWR7-LABEL: ult_6_v2i64: 13115; PWR7: # %bb.0: 13116; PWR7-NEXT: addi 3, 1, -32 13117; PWR7-NEXT: li 5, -1 13118; PWR7-NEXT: stxvd2x 34, 0, 3 13119; PWR7-NEXT: ld 4, -24(1) 13120; PWR7-NEXT: ld 3, -32(1) 13121; PWR7-NEXT: popcntd 4, 4 13122; PWR7-NEXT: popcntd 3, 3 13123; PWR7-NEXT: cmpldi 4, 6 13124; PWR7-NEXT: li 4, 0 13125; PWR7-NEXT: isellt 6, 5, 4 13126; PWR7-NEXT: cmpldi 3, 6 13127; PWR7-NEXT: isellt 3, 5, 4 13128; PWR7-NEXT: std 6, -8(1) 13129; PWR7-NEXT: std 3, -16(1) 13130; PWR7-NEXT: addi 3, 1, -16 13131; PWR7-NEXT: lxvd2x 34, 0, 3 13132; PWR7-NEXT: blr 13133; 13134; PWR8-LABEL: ult_6_v2i64: 13135; PWR8: # %bb.0: 13136; PWR8-NEXT: addis 3, 2, .LCPI109_0@toc@ha 13137; PWR8-NEXT: vpopcntd 2, 2 13138; PWR8-NEXT: addi 3, 3, .LCPI109_0@toc@l 13139; PWR8-NEXT: lxvd2x 35, 0, 3 13140; PWR8-NEXT: vcmpgtud 2, 3, 2 13141; PWR8-NEXT: blr 13142; 13143; PWR9-LABEL: ult_6_v2i64: 13144; PWR9: # %bb.0: 13145; PWR9-NEXT: addis 3, 2, .LCPI109_0@toc@ha 13146; PWR9-NEXT: vpopcntd 2, 2 13147; PWR9-NEXT: addi 3, 3, .LCPI109_0@toc@l 13148; PWR9-NEXT: lxv 35, 0(3) 13149; PWR9-NEXT: vcmpgtud 2, 3, 2 13150; PWR9-NEXT: blr 13151 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13152 %3 = icmp ult <2 x i64> %2, <i64 6, i64 6> 13153 %4 = sext <2 x i1> %3 to <2 x i64> 13154 ret <2 x i64> %4 13155} 13156 13157define <2 x i64> @ugt_6_v2i64(<2 x i64> %0) { 13158; PWR5-LABEL: ugt_6_v2i64: 13159; PWR5: # %bb.0: 13160; PWR5-NEXT: lis 5, 21845 13161; PWR5-NEXT: lis 6, 13107 13162; PWR5-NEXT: ori 5, 5, 21845 13163; PWR5-NEXT: rotldi 8, 4, 63 13164; PWR5-NEXT: rotldi 9, 3, 63 13165; PWR5-NEXT: rldimi 5, 5, 32, 0 13166; PWR5-NEXT: and 8, 8, 5 13167; PWR5-NEXT: and 5, 9, 5 13168; PWR5-NEXT: ori 6, 6, 13107 13169; PWR5-NEXT: sub 3, 3, 5 13170; PWR5-NEXT: rldimi 6, 6, 32, 0 13171; PWR5-NEXT: sub 4, 4, 8 13172; PWR5-NEXT: and 8, 3, 6 13173; PWR5-NEXT: rotldi 3, 3, 62 13174; PWR5-NEXT: and 3, 3, 6 13175; PWR5-NEXT: lis 7, 3855 13176; PWR5-NEXT: and 5, 4, 6 13177; PWR5-NEXT: rotldi 4, 4, 62 13178; PWR5-NEXT: add 3, 8, 3 13179; PWR5-NEXT: lis 9, 257 13180; PWR5-NEXT: ori 7, 7, 3855 13181; PWR5-NEXT: and 4, 4, 6 13182; PWR5-NEXT: rldicl 6, 3, 60, 4 13183; PWR5-NEXT: ori 9, 9, 257 13184; PWR5-NEXT: rldimi 7, 7, 32, 0 13185; PWR5-NEXT: add 4, 5, 4 13186; PWR5-NEXT: add 3, 3, 6 13187; PWR5-NEXT: rldimi 9, 9, 32, 0 13188; PWR5-NEXT: rldicl 5, 4, 60, 4 13189; PWR5-NEXT: and 3, 3, 7 13190; PWR5-NEXT: add 4, 4, 5 13191; PWR5-NEXT: mulld 3, 3, 9 13192; PWR5-NEXT: and 4, 4, 7 13193; PWR5-NEXT: rldicl 3, 3, 8, 56 13194; PWR5-NEXT: mulld 4, 4, 9 13195; PWR5-NEXT: li 5, 6 13196; PWR5-NEXT: subfic 3, 3, 6 13197; PWR5-NEXT: rldicl 4, 4, 8, 56 13198; PWR5-NEXT: subfe 3, 5, 5 13199; PWR5-NEXT: subfic 4, 4, 6 13200; PWR5-NEXT: subfe 4, 5, 5 13201; PWR5-NEXT: blr 13202; 13203; PWR6-LABEL: ugt_6_v2i64: 13204; PWR6: # %bb.0: 13205; PWR6-NEXT: lis 5, 21845 13206; PWR6-NEXT: lis 6, 13107 13207; PWR6-NEXT: ori 5, 5, 21845 13208; PWR6-NEXT: rotldi 8, 4, 63 13209; PWR6-NEXT: rotldi 9, 3, 63 13210; PWR6-NEXT: rldimi 5, 5, 32, 0 13211; PWR6-NEXT: and 8, 8, 5 13212; PWR6-NEXT: and 5, 9, 5 13213; PWR6-NEXT: ori 6, 6, 13107 13214; PWR6-NEXT: sub 3, 3, 5 13215; PWR6-NEXT: rldimi 6, 6, 32, 0 13216; PWR6-NEXT: sub 4, 4, 8 13217; PWR6-NEXT: and 8, 3, 6 13218; PWR6-NEXT: rotldi 3, 3, 62 13219; PWR6-NEXT: and 3, 3, 6 13220; PWR6-NEXT: lis 7, 3855 13221; PWR6-NEXT: and 5, 4, 6 13222; PWR6-NEXT: rotldi 4, 4, 62 13223; PWR6-NEXT: add 3, 8, 3 13224; PWR6-NEXT: lis 9, 257 13225; PWR6-NEXT: ori 7, 7, 3855 13226; PWR6-NEXT: and 4, 4, 6 13227; PWR6-NEXT: rldicl 6, 3, 60, 4 13228; PWR6-NEXT: ori 9, 9, 257 13229; PWR6-NEXT: rldimi 7, 7, 32, 0 13230; PWR6-NEXT: add 4, 5, 4 13231; PWR6-NEXT: add 3, 3, 6 13232; PWR6-NEXT: rldimi 9, 9, 32, 0 13233; PWR6-NEXT: rldicl 5, 4, 60, 4 13234; PWR6-NEXT: and 3, 3, 7 13235; PWR6-NEXT: add 4, 4, 5 13236; PWR6-NEXT: mulld 3, 3, 9 13237; PWR6-NEXT: and 4, 4, 7 13238; PWR6-NEXT: rldicl 3, 3, 8, 56 13239; PWR6-NEXT: mulld 4, 4, 9 13240; PWR6-NEXT: li 5, 6 13241; PWR6-NEXT: subfic 3, 3, 6 13242; PWR6-NEXT: rldicl 4, 4, 8, 56 13243; PWR6-NEXT: subfe 3, 5, 5 13244; PWR6-NEXT: subfic 4, 4, 6 13245; PWR6-NEXT: subfe 4, 5, 5 13246; PWR6-NEXT: blr 13247; 13248; PWR7-LABEL: ugt_6_v2i64: 13249; PWR7: # %bb.0: 13250; PWR7-NEXT: addi 3, 1, -32 13251; PWR7-NEXT: li 5, -1 13252; PWR7-NEXT: stxvd2x 34, 0, 3 13253; PWR7-NEXT: ld 4, -24(1) 13254; PWR7-NEXT: ld 3, -32(1) 13255; PWR7-NEXT: popcntd 4, 4 13256; PWR7-NEXT: popcntd 3, 3 13257; PWR7-NEXT: cmpldi 4, 6 13258; PWR7-NEXT: li 4, 0 13259; PWR7-NEXT: iselgt 6, 5, 4 13260; PWR7-NEXT: cmpldi 3, 6 13261; PWR7-NEXT: iselgt 3, 5, 4 13262; PWR7-NEXT: std 6, -8(1) 13263; PWR7-NEXT: std 3, -16(1) 13264; PWR7-NEXT: addi 3, 1, -16 13265; PWR7-NEXT: lxvd2x 34, 0, 3 13266; PWR7-NEXT: blr 13267; 13268; PWR8-LABEL: ugt_6_v2i64: 13269; PWR8: # %bb.0: 13270; PWR8-NEXT: addis 3, 2, .LCPI110_0@toc@ha 13271; PWR8-NEXT: vpopcntd 2, 2 13272; PWR8-NEXT: addi 3, 3, .LCPI110_0@toc@l 13273; PWR8-NEXT: lxvd2x 35, 0, 3 13274; PWR8-NEXT: vcmpgtud 2, 2, 3 13275; PWR8-NEXT: blr 13276; 13277; PWR9-LABEL: ugt_6_v2i64: 13278; PWR9: # %bb.0: 13279; PWR9-NEXT: addis 3, 2, .LCPI110_0@toc@ha 13280; PWR9-NEXT: vpopcntd 2, 2 13281; PWR9-NEXT: addi 3, 3, .LCPI110_0@toc@l 13282; PWR9-NEXT: lxv 35, 0(3) 13283; PWR9-NEXT: vcmpgtud 2, 2, 3 13284; PWR9-NEXT: blr 13285 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13286 %3 = icmp ugt <2 x i64> %2, <i64 6, i64 6> 13287 %4 = sext <2 x i1> %3 to <2 x i64> 13288 ret <2 x i64> %4 13289} 13290 13291define <2 x i64> @ult_7_v2i64(<2 x i64> %0) { 13292; PWR5-LABEL: ult_7_v2i64: 13293; PWR5: # %bb.0: 13294; PWR5-NEXT: lis 5, 21845 13295; PWR5-NEXT: lis 6, 13107 13296; PWR5-NEXT: ori 5, 5, 21845 13297; PWR5-NEXT: rotldi 8, 4, 63 13298; PWR5-NEXT: rotldi 9, 3, 63 13299; PWR5-NEXT: rldimi 5, 5, 32, 0 13300; PWR5-NEXT: and 8, 8, 5 13301; PWR5-NEXT: and 5, 9, 5 13302; PWR5-NEXT: ori 6, 6, 13107 13303; PWR5-NEXT: sub 3, 3, 5 13304; PWR5-NEXT: rldimi 6, 6, 32, 0 13305; PWR5-NEXT: sub 4, 4, 8 13306; PWR5-NEXT: and 8, 3, 6 13307; PWR5-NEXT: rotldi 3, 3, 62 13308; PWR5-NEXT: and 3, 3, 6 13309; PWR5-NEXT: lis 7, 3855 13310; PWR5-NEXT: and 5, 4, 6 13311; PWR5-NEXT: rotldi 4, 4, 62 13312; PWR5-NEXT: add 3, 8, 3 13313; PWR5-NEXT: lis 9, 257 13314; PWR5-NEXT: ori 7, 7, 3855 13315; PWR5-NEXT: and 4, 4, 6 13316; PWR5-NEXT: rldicl 6, 3, 60, 4 13317; PWR5-NEXT: ori 9, 9, 257 13318; PWR5-NEXT: rldimi 7, 7, 32, 0 13319; PWR5-NEXT: add 4, 5, 4 13320; PWR5-NEXT: add 3, 3, 6 13321; PWR5-NEXT: rldimi 9, 9, 32, 0 13322; PWR5-NEXT: rldicl 5, 4, 60, 4 13323; PWR5-NEXT: and 3, 3, 7 13324; PWR5-NEXT: add 4, 4, 5 13325; PWR5-NEXT: mulld 3, 3, 9 13326; PWR5-NEXT: and 4, 4, 7 13327; PWR5-NEXT: rldicl 3, 3, 8, 56 13328; PWR5-NEXT: li 5, 7 13329; PWR5-NEXT: mulld 4, 4, 9 13330; PWR5-NEXT: subc 6, 3, 5 13331; PWR5-NEXT: rldicl 4, 4, 8, 56 13332; PWR5-NEXT: subfe 3, 3, 3 13333; PWR5-NEXT: subc 5, 4, 5 13334; PWR5-NEXT: subfe 4, 4, 4 13335; PWR5-NEXT: blr 13336; 13337; PWR6-LABEL: ult_7_v2i64: 13338; PWR6: # %bb.0: 13339; PWR6-NEXT: lis 5, 21845 13340; PWR6-NEXT: lis 6, 13107 13341; PWR6-NEXT: ori 5, 5, 21845 13342; PWR6-NEXT: rotldi 8, 4, 63 13343; PWR6-NEXT: rotldi 9, 3, 63 13344; PWR6-NEXT: rldimi 5, 5, 32, 0 13345; PWR6-NEXT: and 8, 8, 5 13346; PWR6-NEXT: and 5, 9, 5 13347; PWR6-NEXT: ori 6, 6, 13107 13348; PWR6-NEXT: sub 3, 3, 5 13349; PWR6-NEXT: rldimi 6, 6, 32, 0 13350; PWR6-NEXT: sub 4, 4, 8 13351; PWR6-NEXT: and 8, 3, 6 13352; PWR6-NEXT: rotldi 3, 3, 62 13353; PWR6-NEXT: and 3, 3, 6 13354; PWR6-NEXT: lis 7, 3855 13355; PWR6-NEXT: and 5, 4, 6 13356; PWR6-NEXT: rotldi 4, 4, 62 13357; PWR6-NEXT: add 3, 8, 3 13358; PWR6-NEXT: lis 9, 257 13359; PWR6-NEXT: ori 7, 7, 3855 13360; PWR6-NEXT: and 4, 4, 6 13361; PWR6-NEXT: rldicl 6, 3, 60, 4 13362; PWR6-NEXT: ori 9, 9, 257 13363; PWR6-NEXT: rldimi 7, 7, 32, 0 13364; PWR6-NEXT: add 4, 5, 4 13365; PWR6-NEXT: add 3, 3, 6 13366; PWR6-NEXT: rldimi 9, 9, 32, 0 13367; PWR6-NEXT: rldicl 5, 4, 60, 4 13368; PWR6-NEXT: and 3, 3, 7 13369; PWR6-NEXT: add 4, 4, 5 13370; PWR6-NEXT: mulld 3, 3, 9 13371; PWR6-NEXT: and 4, 4, 7 13372; PWR6-NEXT: rldicl 3, 3, 8, 56 13373; PWR6-NEXT: li 5, 7 13374; PWR6-NEXT: mulld 4, 4, 9 13375; PWR6-NEXT: subc 6, 3, 5 13376; PWR6-NEXT: rldicl 4, 4, 8, 56 13377; PWR6-NEXT: subfe 3, 3, 3 13378; PWR6-NEXT: subc 5, 4, 5 13379; PWR6-NEXT: subfe 4, 4, 4 13380; PWR6-NEXT: blr 13381; 13382; PWR7-LABEL: ult_7_v2i64: 13383; PWR7: # %bb.0: 13384; PWR7-NEXT: addi 3, 1, -32 13385; PWR7-NEXT: li 5, -1 13386; PWR7-NEXT: stxvd2x 34, 0, 3 13387; PWR7-NEXT: ld 4, -24(1) 13388; PWR7-NEXT: ld 3, -32(1) 13389; PWR7-NEXT: popcntd 4, 4 13390; PWR7-NEXT: popcntd 3, 3 13391; PWR7-NEXT: cmpldi 4, 7 13392; PWR7-NEXT: li 4, 0 13393; PWR7-NEXT: isellt 6, 5, 4 13394; PWR7-NEXT: cmpldi 3, 7 13395; PWR7-NEXT: isellt 3, 5, 4 13396; PWR7-NEXT: std 6, -8(1) 13397; PWR7-NEXT: std 3, -16(1) 13398; PWR7-NEXT: addi 3, 1, -16 13399; PWR7-NEXT: lxvd2x 34, 0, 3 13400; PWR7-NEXT: blr 13401; 13402; PWR8-LABEL: ult_7_v2i64: 13403; PWR8: # %bb.0: 13404; PWR8-NEXT: addis 3, 2, .LCPI111_0@toc@ha 13405; PWR8-NEXT: vpopcntd 2, 2 13406; PWR8-NEXT: addi 3, 3, .LCPI111_0@toc@l 13407; PWR8-NEXT: lxvd2x 35, 0, 3 13408; PWR8-NEXT: vcmpgtud 2, 3, 2 13409; PWR8-NEXT: blr 13410; 13411; PWR9-LABEL: ult_7_v2i64: 13412; PWR9: # %bb.0: 13413; PWR9-NEXT: addis 3, 2, .LCPI111_0@toc@ha 13414; PWR9-NEXT: vpopcntd 2, 2 13415; PWR9-NEXT: addi 3, 3, .LCPI111_0@toc@l 13416; PWR9-NEXT: lxv 35, 0(3) 13417; PWR9-NEXT: vcmpgtud 2, 3, 2 13418; PWR9-NEXT: blr 13419 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13420 %3 = icmp ult <2 x i64> %2, <i64 7, i64 7> 13421 %4 = sext <2 x i1> %3 to <2 x i64> 13422 ret <2 x i64> %4 13423} 13424 13425define <2 x i64> @ugt_7_v2i64(<2 x i64> %0) { 13426; PWR5-LABEL: ugt_7_v2i64: 13427; PWR5: # %bb.0: 13428; PWR5-NEXT: lis 5, 21845 13429; PWR5-NEXT: lis 6, 13107 13430; PWR5-NEXT: ori 5, 5, 21845 13431; PWR5-NEXT: rotldi 8, 4, 63 13432; PWR5-NEXT: rotldi 9, 3, 63 13433; PWR5-NEXT: rldimi 5, 5, 32, 0 13434; PWR5-NEXT: and 8, 8, 5 13435; PWR5-NEXT: and 5, 9, 5 13436; PWR5-NEXT: ori 6, 6, 13107 13437; PWR5-NEXT: sub 3, 3, 5 13438; PWR5-NEXT: rldimi 6, 6, 32, 0 13439; PWR5-NEXT: sub 4, 4, 8 13440; PWR5-NEXT: and 8, 3, 6 13441; PWR5-NEXT: rotldi 3, 3, 62 13442; PWR5-NEXT: and 3, 3, 6 13443; PWR5-NEXT: lis 7, 3855 13444; PWR5-NEXT: and 5, 4, 6 13445; PWR5-NEXT: rotldi 4, 4, 62 13446; PWR5-NEXT: add 3, 8, 3 13447; PWR5-NEXT: lis 9, 257 13448; PWR5-NEXT: ori 7, 7, 3855 13449; PWR5-NEXT: and 4, 4, 6 13450; PWR5-NEXT: rldicl 6, 3, 60, 4 13451; PWR5-NEXT: ori 9, 9, 257 13452; PWR5-NEXT: rldimi 7, 7, 32, 0 13453; PWR5-NEXT: add 4, 5, 4 13454; PWR5-NEXT: add 3, 3, 6 13455; PWR5-NEXT: rldimi 9, 9, 32, 0 13456; PWR5-NEXT: rldicl 5, 4, 60, 4 13457; PWR5-NEXT: and 3, 3, 7 13458; PWR5-NEXT: add 4, 4, 5 13459; PWR5-NEXT: mulld 3, 3, 9 13460; PWR5-NEXT: and 4, 4, 7 13461; PWR5-NEXT: rldicl 3, 3, 8, 56 13462; PWR5-NEXT: mulld 4, 4, 9 13463; PWR5-NEXT: li 5, 7 13464; PWR5-NEXT: subfic 3, 3, 7 13465; PWR5-NEXT: rldicl 4, 4, 8, 56 13466; PWR5-NEXT: subfe 3, 5, 5 13467; PWR5-NEXT: subfic 4, 4, 7 13468; PWR5-NEXT: subfe 4, 5, 5 13469; PWR5-NEXT: blr 13470; 13471; PWR6-LABEL: ugt_7_v2i64: 13472; PWR6: # %bb.0: 13473; PWR6-NEXT: lis 5, 21845 13474; PWR6-NEXT: lis 6, 13107 13475; PWR6-NEXT: ori 5, 5, 21845 13476; PWR6-NEXT: rotldi 8, 4, 63 13477; PWR6-NEXT: rotldi 9, 3, 63 13478; PWR6-NEXT: rldimi 5, 5, 32, 0 13479; PWR6-NEXT: and 8, 8, 5 13480; PWR6-NEXT: and 5, 9, 5 13481; PWR6-NEXT: ori 6, 6, 13107 13482; PWR6-NEXT: sub 3, 3, 5 13483; PWR6-NEXT: rldimi 6, 6, 32, 0 13484; PWR6-NEXT: sub 4, 4, 8 13485; PWR6-NEXT: and 8, 3, 6 13486; PWR6-NEXT: rotldi 3, 3, 62 13487; PWR6-NEXT: and 3, 3, 6 13488; PWR6-NEXT: lis 7, 3855 13489; PWR6-NEXT: and 5, 4, 6 13490; PWR6-NEXT: rotldi 4, 4, 62 13491; PWR6-NEXT: add 3, 8, 3 13492; PWR6-NEXT: lis 9, 257 13493; PWR6-NEXT: ori 7, 7, 3855 13494; PWR6-NEXT: and 4, 4, 6 13495; PWR6-NEXT: rldicl 6, 3, 60, 4 13496; PWR6-NEXT: ori 9, 9, 257 13497; PWR6-NEXT: rldimi 7, 7, 32, 0 13498; PWR6-NEXT: add 4, 5, 4 13499; PWR6-NEXT: add 3, 3, 6 13500; PWR6-NEXT: rldimi 9, 9, 32, 0 13501; PWR6-NEXT: rldicl 5, 4, 60, 4 13502; PWR6-NEXT: and 3, 3, 7 13503; PWR6-NEXT: add 4, 4, 5 13504; PWR6-NEXT: mulld 3, 3, 9 13505; PWR6-NEXT: and 4, 4, 7 13506; PWR6-NEXT: rldicl 3, 3, 8, 56 13507; PWR6-NEXT: mulld 4, 4, 9 13508; PWR6-NEXT: li 5, 7 13509; PWR6-NEXT: subfic 3, 3, 7 13510; PWR6-NEXT: rldicl 4, 4, 8, 56 13511; PWR6-NEXT: subfe 3, 5, 5 13512; PWR6-NEXT: subfic 4, 4, 7 13513; PWR6-NEXT: subfe 4, 5, 5 13514; PWR6-NEXT: blr 13515; 13516; PWR7-LABEL: ugt_7_v2i64: 13517; PWR7: # %bb.0: 13518; PWR7-NEXT: addi 3, 1, -32 13519; PWR7-NEXT: li 5, -1 13520; PWR7-NEXT: stxvd2x 34, 0, 3 13521; PWR7-NEXT: ld 4, -24(1) 13522; PWR7-NEXT: ld 3, -32(1) 13523; PWR7-NEXT: popcntd 4, 4 13524; PWR7-NEXT: popcntd 3, 3 13525; PWR7-NEXT: cmpldi 4, 7 13526; PWR7-NEXT: li 4, 0 13527; PWR7-NEXT: iselgt 6, 5, 4 13528; PWR7-NEXT: cmpldi 3, 7 13529; PWR7-NEXT: iselgt 3, 5, 4 13530; PWR7-NEXT: std 6, -8(1) 13531; PWR7-NEXT: std 3, -16(1) 13532; PWR7-NEXT: addi 3, 1, -16 13533; PWR7-NEXT: lxvd2x 34, 0, 3 13534; PWR7-NEXT: blr 13535; 13536; PWR8-LABEL: ugt_7_v2i64: 13537; PWR8: # %bb.0: 13538; PWR8-NEXT: addis 3, 2, .LCPI112_0@toc@ha 13539; PWR8-NEXT: vpopcntd 2, 2 13540; PWR8-NEXT: addi 3, 3, .LCPI112_0@toc@l 13541; PWR8-NEXT: lxvd2x 35, 0, 3 13542; PWR8-NEXT: vcmpgtud 2, 2, 3 13543; PWR8-NEXT: blr 13544; 13545; PWR9-LABEL: ugt_7_v2i64: 13546; PWR9: # %bb.0: 13547; PWR9-NEXT: addis 3, 2, .LCPI112_0@toc@ha 13548; PWR9-NEXT: vpopcntd 2, 2 13549; PWR9-NEXT: addi 3, 3, .LCPI112_0@toc@l 13550; PWR9-NEXT: lxv 35, 0(3) 13551; PWR9-NEXT: vcmpgtud 2, 2, 3 13552; PWR9-NEXT: blr 13553 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13554 %3 = icmp ugt <2 x i64> %2, <i64 7, i64 7> 13555 %4 = sext <2 x i1> %3 to <2 x i64> 13556 ret <2 x i64> %4 13557} 13558 13559define <2 x i64> @ult_8_v2i64(<2 x i64> %0) { 13560; PWR5-LABEL: ult_8_v2i64: 13561; PWR5: # %bb.0: 13562; PWR5-NEXT: lis 5, 21845 13563; PWR5-NEXT: lis 6, 13107 13564; PWR5-NEXT: ori 5, 5, 21845 13565; PWR5-NEXT: rotldi 8, 4, 63 13566; PWR5-NEXT: rotldi 9, 3, 63 13567; PWR5-NEXT: rldimi 5, 5, 32, 0 13568; PWR5-NEXT: and 8, 8, 5 13569; PWR5-NEXT: and 5, 9, 5 13570; PWR5-NEXT: ori 6, 6, 13107 13571; PWR5-NEXT: sub 3, 3, 5 13572; PWR5-NEXT: rldimi 6, 6, 32, 0 13573; PWR5-NEXT: sub 4, 4, 8 13574; PWR5-NEXT: and 8, 3, 6 13575; PWR5-NEXT: rotldi 3, 3, 62 13576; PWR5-NEXT: and 3, 3, 6 13577; PWR5-NEXT: lis 7, 3855 13578; PWR5-NEXT: and 5, 4, 6 13579; PWR5-NEXT: rotldi 4, 4, 62 13580; PWR5-NEXT: add 3, 8, 3 13581; PWR5-NEXT: lis 9, 257 13582; PWR5-NEXT: ori 7, 7, 3855 13583; PWR5-NEXT: and 4, 4, 6 13584; PWR5-NEXT: rldicl 6, 3, 60, 4 13585; PWR5-NEXT: ori 9, 9, 257 13586; PWR5-NEXT: rldimi 7, 7, 32, 0 13587; PWR5-NEXT: add 4, 5, 4 13588; PWR5-NEXT: add 3, 3, 6 13589; PWR5-NEXT: rldimi 9, 9, 32, 0 13590; PWR5-NEXT: rldicl 5, 4, 60, 4 13591; PWR5-NEXT: and 3, 3, 7 13592; PWR5-NEXT: add 4, 4, 5 13593; PWR5-NEXT: mulld 3, 3, 9 13594; PWR5-NEXT: and 4, 4, 7 13595; PWR5-NEXT: rldicl 3, 3, 8, 56 13596; PWR5-NEXT: li 5, 8 13597; PWR5-NEXT: mulld 4, 4, 9 13598; PWR5-NEXT: subc 6, 3, 5 13599; PWR5-NEXT: rldicl 4, 4, 8, 56 13600; PWR5-NEXT: subfe 3, 3, 3 13601; PWR5-NEXT: subc 5, 4, 5 13602; PWR5-NEXT: subfe 4, 4, 4 13603; PWR5-NEXT: blr 13604; 13605; PWR6-LABEL: ult_8_v2i64: 13606; PWR6: # %bb.0: 13607; PWR6-NEXT: lis 5, 21845 13608; PWR6-NEXT: lis 6, 13107 13609; PWR6-NEXT: ori 5, 5, 21845 13610; PWR6-NEXT: rotldi 8, 4, 63 13611; PWR6-NEXT: rotldi 9, 3, 63 13612; PWR6-NEXT: rldimi 5, 5, 32, 0 13613; PWR6-NEXT: and 8, 8, 5 13614; PWR6-NEXT: and 5, 9, 5 13615; PWR6-NEXT: ori 6, 6, 13107 13616; PWR6-NEXT: sub 3, 3, 5 13617; PWR6-NEXT: rldimi 6, 6, 32, 0 13618; PWR6-NEXT: sub 4, 4, 8 13619; PWR6-NEXT: and 8, 3, 6 13620; PWR6-NEXT: rotldi 3, 3, 62 13621; PWR6-NEXT: and 3, 3, 6 13622; PWR6-NEXT: lis 7, 3855 13623; PWR6-NEXT: and 5, 4, 6 13624; PWR6-NEXT: rotldi 4, 4, 62 13625; PWR6-NEXT: add 3, 8, 3 13626; PWR6-NEXT: lis 9, 257 13627; PWR6-NEXT: ori 7, 7, 3855 13628; PWR6-NEXT: and 4, 4, 6 13629; PWR6-NEXT: rldicl 6, 3, 60, 4 13630; PWR6-NEXT: ori 9, 9, 257 13631; PWR6-NEXT: rldimi 7, 7, 32, 0 13632; PWR6-NEXT: add 4, 5, 4 13633; PWR6-NEXT: add 3, 3, 6 13634; PWR6-NEXT: rldimi 9, 9, 32, 0 13635; PWR6-NEXT: rldicl 5, 4, 60, 4 13636; PWR6-NEXT: and 3, 3, 7 13637; PWR6-NEXT: add 4, 4, 5 13638; PWR6-NEXT: mulld 3, 3, 9 13639; PWR6-NEXT: and 4, 4, 7 13640; PWR6-NEXT: rldicl 3, 3, 8, 56 13641; PWR6-NEXT: li 5, 8 13642; PWR6-NEXT: mulld 4, 4, 9 13643; PWR6-NEXT: subc 6, 3, 5 13644; PWR6-NEXT: rldicl 4, 4, 8, 56 13645; PWR6-NEXT: subfe 3, 3, 3 13646; PWR6-NEXT: subc 5, 4, 5 13647; PWR6-NEXT: subfe 4, 4, 4 13648; PWR6-NEXT: blr 13649; 13650; PWR7-LABEL: ult_8_v2i64: 13651; PWR7: # %bb.0: 13652; PWR7-NEXT: addi 3, 1, -32 13653; PWR7-NEXT: li 5, -1 13654; PWR7-NEXT: stxvd2x 34, 0, 3 13655; PWR7-NEXT: ld 4, -24(1) 13656; PWR7-NEXT: ld 3, -32(1) 13657; PWR7-NEXT: popcntd 4, 4 13658; PWR7-NEXT: popcntd 3, 3 13659; PWR7-NEXT: cmpldi 4, 8 13660; PWR7-NEXT: li 4, 0 13661; PWR7-NEXT: isellt 6, 5, 4 13662; PWR7-NEXT: cmpldi 3, 8 13663; PWR7-NEXT: isellt 3, 5, 4 13664; PWR7-NEXT: std 6, -8(1) 13665; PWR7-NEXT: std 3, -16(1) 13666; PWR7-NEXT: addi 3, 1, -16 13667; PWR7-NEXT: lxvd2x 34, 0, 3 13668; PWR7-NEXT: blr 13669; 13670; PWR8-LABEL: ult_8_v2i64: 13671; PWR8: # %bb.0: 13672; PWR8-NEXT: addis 3, 2, .LCPI113_0@toc@ha 13673; PWR8-NEXT: vpopcntd 2, 2 13674; PWR8-NEXT: addi 3, 3, .LCPI113_0@toc@l 13675; PWR8-NEXT: lxvd2x 35, 0, 3 13676; PWR8-NEXT: vcmpgtud 2, 3, 2 13677; PWR8-NEXT: blr 13678; 13679; PWR9-LABEL: ult_8_v2i64: 13680; PWR9: # %bb.0: 13681; PWR9-NEXT: addis 3, 2, .LCPI113_0@toc@ha 13682; PWR9-NEXT: vpopcntd 2, 2 13683; PWR9-NEXT: addi 3, 3, .LCPI113_0@toc@l 13684; PWR9-NEXT: lxv 35, 0(3) 13685; PWR9-NEXT: vcmpgtud 2, 3, 2 13686; PWR9-NEXT: blr 13687 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13688 %3 = icmp ult <2 x i64> %2, <i64 8, i64 8> 13689 %4 = sext <2 x i1> %3 to <2 x i64> 13690 ret <2 x i64> %4 13691} 13692 13693define <2 x i64> @ugt_8_v2i64(<2 x i64> %0) { 13694; PWR5-LABEL: ugt_8_v2i64: 13695; PWR5: # %bb.0: 13696; PWR5-NEXT: lis 5, 21845 13697; PWR5-NEXT: lis 6, 13107 13698; PWR5-NEXT: ori 5, 5, 21845 13699; PWR5-NEXT: rotldi 8, 4, 63 13700; PWR5-NEXT: rotldi 9, 3, 63 13701; PWR5-NEXT: rldimi 5, 5, 32, 0 13702; PWR5-NEXT: and 8, 8, 5 13703; PWR5-NEXT: and 5, 9, 5 13704; PWR5-NEXT: ori 6, 6, 13107 13705; PWR5-NEXT: sub 3, 3, 5 13706; PWR5-NEXT: rldimi 6, 6, 32, 0 13707; PWR5-NEXT: sub 4, 4, 8 13708; PWR5-NEXT: and 8, 3, 6 13709; PWR5-NEXT: rotldi 3, 3, 62 13710; PWR5-NEXT: and 3, 3, 6 13711; PWR5-NEXT: lis 7, 3855 13712; PWR5-NEXT: and 5, 4, 6 13713; PWR5-NEXT: rotldi 4, 4, 62 13714; PWR5-NEXT: add 3, 8, 3 13715; PWR5-NEXT: lis 9, 257 13716; PWR5-NEXT: ori 7, 7, 3855 13717; PWR5-NEXT: and 4, 4, 6 13718; PWR5-NEXT: rldicl 6, 3, 60, 4 13719; PWR5-NEXT: ori 9, 9, 257 13720; PWR5-NEXT: rldimi 7, 7, 32, 0 13721; PWR5-NEXT: add 4, 5, 4 13722; PWR5-NEXT: add 3, 3, 6 13723; PWR5-NEXT: rldimi 9, 9, 32, 0 13724; PWR5-NEXT: rldicl 5, 4, 60, 4 13725; PWR5-NEXT: and 3, 3, 7 13726; PWR5-NEXT: add 4, 4, 5 13727; PWR5-NEXT: mulld 3, 3, 9 13728; PWR5-NEXT: and 4, 4, 7 13729; PWR5-NEXT: rldicl 3, 3, 8, 56 13730; PWR5-NEXT: mulld 4, 4, 9 13731; PWR5-NEXT: li 5, 8 13732; PWR5-NEXT: subfic 3, 3, 8 13733; PWR5-NEXT: rldicl 4, 4, 8, 56 13734; PWR5-NEXT: subfe 3, 5, 5 13735; PWR5-NEXT: subfic 4, 4, 8 13736; PWR5-NEXT: subfe 4, 5, 5 13737; PWR5-NEXT: blr 13738; 13739; PWR6-LABEL: ugt_8_v2i64: 13740; PWR6: # %bb.0: 13741; PWR6-NEXT: lis 5, 21845 13742; PWR6-NEXT: lis 6, 13107 13743; PWR6-NEXT: ori 5, 5, 21845 13744; PWR6-NEXT: rotldi 8, 4, 63 13745; PWR6-NEXT: rotldi 9, 3, 63 13746; PWR6-NEXT: rldimi 5, 5, 32, 0 13747; PWR6-NEXT: and 8, 8, 5 13748; PWR6-NEXT: and 5, 9, 5 13749; PWR6-NEXT: ori 6, 6, 13107 13750; PWR6-NEXT: sub 3, 3, 5 13751; PWR6-NEXT: rldimi 6, 6, 32, 0 13752; PWR6-NEXT: sub 4, 4, 8 13753; PWR6-NEXT: and 8, 3, 6 13754; PWR6-NEXT: rotldi 3, 3, 62 13755; PWR6-NEXT: and 3, 3, 6 13756; PWR6-NEXT: lis 7, 3855 13757; PWR6-NEXT: and 5, 4, 6 13758; PWR6-NEXT: rotldi 4, 4, 62 13759; PWR6-NEXT: add 3, 8, 3 13760; PWR6-NEXT: lis 9, 257 13761; PWR6-NEXT: ori 7, 7, 3855 13762; PWR6-NEXT: and 4, 4, 6 13763; PWR6-NEXT: rldicl 6, 3, 60, 4 13764; PWR6-NEXT: ori 9, 9, 257 13765; PWR6-NEXT: rldimi 7, 7, 32, 0 13766; PWR6-NEXT: add 4, 5, 4 13767; PWR6-NEXT: add 3, 3, 6 13768; PWR6-NEXT: rldimi 9, 9, 32, 0 13769; PWR6-NEXT: rldicl 5, 4, 60, 4 13770; PWR6-NEXT: and 3, 3, 7 13771; PWR6-NEXT: add 4, 4, 5 13772; PWR6-NEXT: mulld 3, 3, 9 13773; PWR6-NEXT: and 4, 4, 7 13774; PWR6-NEXT: rldicl 3, 3, 8, 56 13775; PWR6-NEXT: mulld 4, 4, 9 13776; PWR6-NEXT: li 5, 8 13777; PWR6-NEXT: subfic 3, 3, 8 13778; PWR6-NEXT: rldicl 4, 4, 8, 56 13779; PWR6-NEXT: subfe 3, 5, 5 13780; PWR6-NEXT: subfic 4, 4, 8 13781; PWR6-NEXT: subfe 4, 5, 5 13782; PWR6-NEXT: blr 13783; 13784; PWR7-LABEL: ugt_8_v2i64: 13785; PWR7: # %bb.0: 13786; PWR7-NEXT: addi 3, 1, -32 13787; PWR7-NEXT: li 5, -1 13788; PWR7-NEXT: stxvd2x 34, 0, 3 13789; PWR7-NEXT: ld 4, -24(1) 13790; PWR7-NEXT: ld 3, -32(1) 13791; PWR7-NEXT: popcntd 4, 4 13792; PWR7-NEXT: popcntd 3, 3 13793; PWR7-NEXT: cmpldi 4, 8 13794; PWR7-NEXT: li 4, 0 13795; PWR7-NEXT: iselgt 6, 5, 4 13796; PWR7-NEXT: cmpldi 3, 8 13797; PWR7-NEXT: iselgt 3, 5, 4 13798; PWR7-NEXT: std 6, -8(1) 13799; PWR7-NEXT: std 3, -16(1) 13800; PWR7-NEXT: addi 3, 1, -16 13801; PWR7-NEXT: lxvd2x 34, 0, 3 13802; PWR7-NEXT: blr 13803; 13804; PWR8-LABEL: ugt_8_v2i64: 13805; PWR8: # %bb.0: 13806; PWR8-NEXT: addis 3, 2, .LCPI114_0@toc@ha 13807; PWR8-NEXT: vpopcntd 2, 2 13808; PWR8-NEXT: addi 3, 3, .LCPI114_0@toc@l 13809; PWR8-NEXT: lxvd2x 35, 0, 3 13810; PWR8-NEXT: vcmpgtud 2, 2, 3 13811; PWR8-NEXT: blr 13812; 13813; PWR9-LABEL: ugt_8_v2i64: 13814; PWR9: # %bb.0: 13815; PWR9-NEXT: addis 3, 2, .LCPI114_0@toc@ha 13816; PWR9-NEXT: vpopcntd 2, 2 13817; PWR9-NEXT: addi 3, 3, .LCPI114_0@toc@l 13818; PWR9-NEXT: lxv 35, 0(3) 13819; PWR9-NEXT: vcmpgtud 2, 2, 3 13820; PWR9-NEXT: blr 13821 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13822 %3 = icmp ugt <2 x i64> %2, <i64 8, i64 8> 13823 %4 = sext <2 x i1> %3 to <2 x i64> 13824 ret <2 x i64> %4 13825} 13826 13827define <2 x i64> @ult_9_v2i64(<2 x i64> %0) { 13828; PWR5-LABEL: ult_9_v2i64: 13829; PWR5: # %bb.0: 13830; PWR5-NEXT: lis 5, 21845 13831; PWR5-NEXT: lis 6, 13107 13832; PWR5-NEXT: ori 5, 5, 21845 13833; PWR5-NEXT: rotldi 8, 4, 63 13834; PWR5-NEXT: rotldi 9, 3, 63 13835; PWR5-NEXT: rldimi 5, 5, 32, 0 13836; PWR5-NEXT: and 8, 8, 5 13837; PWR5-NEXT: and 5, 9, 5 13838; PWR5-NEXT: ori 6, 6, 13107 13839; PWR5-NEXT: sub 3, 3, 5 13840; PWR5-NEXT: rldimi 6, 6, 32, 0 13841; PWR5-NEXT: sub 4, 4, 8 13842; PWR5-NEXT: and 8, 3, 6 13843; PWR5-NEXT: rotldi 3, 3, 62 13844; PWR5-NEXT: and 3, 3, 6 13845; PWR5-NEXT: lis 7, 3855 13846; PWR5-NEXT: and 5, 4, 6 13847; PWR5-NEXT: rotldi 4, 4, 62 13848; PWR5-NEXT: add 3, 8, 3 13849; PWR5-NEXT: lis 9, 257 13850; PWR5-NEXT: ori 7, 7, 3855 13851; PWR5-NEXT: and 4, 4, 6 13852; PWR5-NEXT: rldicl 6, 3, 60, 4 13853; PWR5-NEXT: ori 9, 9, 257 13854; PWR5-NEXT: rldimi 7, 7, 32, 0 13855; PWR5-NEXT: add 4, 5, 4 13856; PWR5-NEXT: add 3, 3, 6 13857; PWR5-NEXT: rldimi 9, 9, 32, 0 13858; PWR5-NEXT: rldicl 5, 4, 60, 4 13859; PWR5-NEXT: and 3, 3, 7 13860; PWR5-NEXT: add 4, 4, 5 13861; PWR5-NEXT: mulld 3, 3, 9 13862; PWR5-NEXT: and 4, 4, 7 13863; PWR5-NEXT: rldicl 3, 3, 8, 56 13864; PWR5-NEXT: li 5, 9 13865; PWR5-NEXT: mulld 4, 4, 9 13866; PWR5-NEXT: subc 6, 3, 5 13867; PWR5-NEXT: rldicl 4, 4, 8, 56 13868; PWR5-NEXT: subfe 3, 3, 3 13869; PWR5-NEXT: subc 5, 4, 5 13870; PWR5-NEXT: subfe 4, 4, 4 13871; PWR5-NEXT: blr 13872; 13873; PWR6-LABEL: ult_9_v2i64: 13874; PWR6: # %bb.0: 13875; PWR6-NEXT: lis 5, 21845 13876; PWR6-NEXT: lis 6, 13107 13877; PWR6-NEXT: ori 5, 5, 21845 13878; PWR6-NEXT: rotldi 8, 4, 63 13879; PWR6-NEXT: rotldi 9, 3, 63 13880; PWR6-NEXT: rldimi 5, 5, 32, 0 13881; PWR6-NEXT: and 8, 8, 5 13882; PWR6-NEXT: and 5, 9, 5 13883; PWR6-NEXT: ori 6, 6, 13107 13884; PWR6-NEXT: sub 3, 3, 5 13885; PWR6-NEXT: rldimi 6, 6, 32, 0 13886; PWR6-NEXT: sub 4, 4, 8 13887; PWR6-NEXT: and 8, 3, 6 13888; PWR6-NEXT: rotldi 3, 3, 62 13889; PWR6-NEXT: and 3, 3, 6 13890; PWR6-NEXT: lis 7, 3855 13891; PWR6-NEXT: and 5, 4, 6 13892; PWR6-NEXT: rotldi 4, 4, 62 13893; PWR6-NEXT: add 3, 8, 3 13894; PWR6-NEXT: lis 9, 257 13895; PWR6-NEXT: ori 7, 7, 3855 13896; PWR6-NEXT: and 4, 4, 6 13897; PWR6-NEXT: rldicl 6, 3, 60, 4 13898; PWR6-NEXT: ori 9, 9, 257 13899; PWR6-NEXT: rldimi 7, 7, 32, 0 13900; PWR6-NEXT: add 4, 5, 4 13901; PWR6-NEXT: add 3, 3, 6 13902; PWR6-NEXT: rldimi 9, 9, 32, 0 13903; PWR6-NEXT: rldicl 5, 4, 60, 4 13904; PWR6-NEXT: and 3, 3, 7 13905; PWR6-NEXT: add 4, 4, 5 13906; PWR6-NEXT: mulld 3, 3, 9 13907; PWR6-NEXT: and 4, 4, 7 13908; PWR6-NEXT: rldicl 3, 3, 8, 56 13909; PWR6-NEXT: li 5, 9 13910; PWR6-NEXT: mulld 4, 4, 9 13911; PWR6-NEXT: subc 6, 3, 5 13912; PWR6-NEXT: rldicl 4, 4, 8, 56 13913; PWR6-NEXT: subfe 3, 3, 3 13914; PWR6-NEXT: subc 5, 4, 5 13915; PWR6-NEXT: subfe 4, 4, 4 13916; PWR6-NEXT: blr 13917; 13918; PWR7-LABEL: ult_9_v2i64: 13919; PWR7: # %bb.0: 13920; PWR7-NEXT: addi 3, 1, -32 13921; PWR7-NEXT: li 5, -1 13922; PWR7-NEXT: stxvd2x 34, 0, 3 13923; PWR7-NEXT: ld 4, -24(1) 13924; PWR7-NEXT: ld 3, -32(1) 13925; PWR7-NEXT: popcntd 4, 4 13926; PWR7-NEXT: popcntd 3, 3 13927; PWR7-NEXT: cmpldi 4, 9 13928; PWR7-NEXT: li 4, 0 13929; PWR7-NEXT: isellt 6, 5, 4 13930; PWR7-NEXT: cmpldi 3, 9 13931; PWR7-NEXT: isellt 3, 5, 4 13932; PWR7-NEXT: std 6, -8(1) 13933; PWR7-NEXT: std 3, -16(1) 13934; PWR7-NEXT: addi 3, 1, -16 13935; PWR7-NEXT: lxvd2x 34, 0, 3 13936; PWR7-NEXT: blr 13937; 13938; PWR8-LABEL: ult_9_v2i64: 13939; PWR8: # %bb.0: 13940; PWR8-NEXT: addis 3, 2, .LCPI115_0@toc@ha 13941; PWR8-NEXT: vpopcntd 2, 2 13942; PWR8-NEXT: addi 3, 3, .LCPI115_0@toc@l 13943; PWR8-NEXT: lxvd2x 35, 0, 3 13944; PWR8-NEXT: vcmpgtud 2, 3, 2 13945; PWR8-NEXT: blr 13946; 13947; PWR9-LABEL: ult_9_v2i64: 13948; PWR9: # %bb.0: 13949; PWR9-NEXT: addis 3, 2, .LCPI115_0@toc@ha 13950; PWR9-NEXT: vpopcntd 2, 2 13951; PWR9-NEXT: addi 3, 3, .LCPI115_0@toc@l 13952; PWR9-NEXT: lxv 35, 0(3) 13953; PWR9-NEXT: vcmpgtud 2, 3, 2 13954; PWR9-NEXT: blr 13955 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 13956 %3 = icmp ult <2 x i64> %2, <i64 9, i64 9> 13957 %4 = sext <2 x i1> %3 to <2 x i64> 13958 ret <2 x i64> %4 13959} 13960 13961define <2 x i64> @ugt_9_v2i64(<2 x i64> %0) { 13962; PWR5-LABEL: ugt_9_v2i64: 13963; PWR5: # %bb.0: 13964; PWR5-NEXT: lis 5, 21845 13965; PWR5-NEXT: lis 6, 13107 13966; PWR5-NEXT: ori 5, 5, 21845 13967; PWR5-NEXT: rotldi 8, 4, 63 13968; PWR5-NEXT: rotldi 9, 3, 63 13969; PWR5-NEXT: rldimi 5, 5, 32, 0 13970; PWR5-NEXT: and 8, 8, 5 13971; PWR5-NEXT: and 5, 9, 5 13972; PWR5-NEXT: ori 6, 6, 13107 13973; PWR5-NEXT: sub 3, 3, 5 13974; PWR5-NEXT: rldimi 6, 6, 32, 0 13975; PWR5-NEXT: sub 4, 4, 8 13976; PWR5-NEXT: and 8, 3, 6 13977; PWR5-NEXT: rotldi 3, 3, 62 13978; PWR5-NEXT: and 3, 3, 6 13979; PWR5-NEXT: lis 7, 3855 13980; PWR5-NEXT: and 5, 4, 6 13981; PWR5-NEXT: rotldi 4, 4, 62 13982; PWR5-NEXT: add 3, 8, 3 13983; PWR5-NEXT: lis 9, 257 13984; PWR5-NEXT: ori 7, 7, 3855 13985; PWR5-NEXT: and 4, 4, 6 13986; PWR5-NEXT: rldicl 6, 3, 60, 4 13987; PWR5-NEXT: ori 9, 9, 257 13988; PWR5-NEXT: rldimi 7, 7, 32, 0 13989; PWR5-NEXT: add 4, 5, 4 13990; PWR5-NEXT: add 3, 3, 6 13991; PWR5-NEXT: rldimi 9, 9, 32, 0 13992; PWR5-NEXT: rldicl 5, 4, 60, 4 13993; PWR5-NEXT: and 3, 3, 7 13994; PWR5-NEXT: add 4, 4, 5 13995; PWR5-NEXT: mulld 3, 3, 9 13996; PWR5-NEXT: and 4, 4, 7 13997; PWR5-NEXT: rldicl 3, 3, 8, 56 13998; PWR5-NEXT: mulld 4, 4, 9 13999; PWR5-NEXT: li 5, 9 14000; PWR5-NEXT: subfic 3, 3, 9 14001; PWR5-NEXT: rldicl 4, 4, 8, 56 14002; PWR5-NEXT: subfe 3, 5, 5 14003; PWR5-NEXT: subfic 4, 4, 9 14004; PWR5-NEXT: subfe 4, 5, 5 14005; PWR5-NEXT: blr 14006; 14007; PWR6-LABEL: ugt_9_v2i64: 14008; PWR6: # %bb.0: 14009; PWR6-NEXT: lis 5, 21845 14010; PWR6-NEXT: lis 6, 13107 14011; PWR6-NEXT: ori 5, 5, 21845 14012; PWR6-NEXT: rotldi 8, 4, 63 14013; PWR6-NEXT: rotldi 9, 3, 63 14014; PWR6-NEXT: rldimi 5, 5, 32, 0 14015; PWR6-NEXT: and 8, 8, 5 14016; PWR6-NEXT: and 5, 9, 5 14017; PWR6-NEXT: ori 6, 6, 13107 14018; PWR6-NEXT: sub 3, 3, 5 14019; PWR6-NEXT: rldimi 6, 6, 32, 0 14020; PWR6-NEXT: sub 4, 4, 8 14021; PWR6-NEXT: and 8, 3, 6 14022; PWR6-NEXT: rotldi 3, 3, 62 14023; PWR6-NEXT: and 3, 3, 6 14024; PWR6-NEXT: lis 7, 3855 14025; PWR6-NEXT: and 5, 4, 6 14026; PWR6-NEXT: rotldi 4, 4, 62 14027; PWR6-NEXT: add 3, 8, 3 14028; PWR6-NEXT: lis 9, 257 14029; PWR6-NEXT: ori 7, 7, 3855 14030; PWR6-NEXT: and 4, 4, 6 14031; PWR6-NEXT: rldicl 6, 3, 60, 4 14032; PWR6-NEXT: ori 9, 9, 257 14033; PWR6-NEXT: rldimi 7, 7, 32, 0 14034; PWR6-NEXT: add 4, 5, 4 14035; PWR6-NEXT: add 3, 3, 6 14036; PWR6-NEXT: rldimi 9, 9, 32, 0 14037; PWR6-NEXT: rldicl 5, 4, 60, 4 14038; PWR6-NEXT: and 3, 3, 7 14039; PWR6-NEXT: add 4, 4, 5 14040; PWR6-NEXT: mulld 3, 3, 9 14041; PWR6-NEXT: and 4, 4, 7 14042; PWR6-NEXT: rldicl 3, 3, 8, 56 14043; PWR6-NEXT: mulld 4, 4, 9 14044; PWR6-NEXT: li 5, 9 14045; PWR6-NEXT: subfic 3, 3, 9 14046; PWR6-NEXT: rldicl 4, 4, 8, 56 14047; PWR6-NEXT: subfe 3, 5, 5 14048; PWR6-NEXT: subfic 4, 4, 9 14049; PWR6-NEXT: subfe 4, 5, 5 14050; PWR6-NEXT: blr 14051; 14052; PWR7-LABEL: ugt_9_v2i64: 14053; PWR7: # %bb.0: 14054; PWR7-NEXT: addi 3, 1, -32 14055; PWR7-NEXT: li 5, -1 14056; PWR7-NEXT: stxvd2x 34, 0, 3 14057; PWR7-NEXT: ld 4, -24(1) 14058; PWR7-NEXT: ld 3, -32(1) 14059; PWR7-NEXT: popcntd 4, 4 14060; PWR7-NEXT: popcntd 3, 3 14061; PWR7-NEXT: cmpldi 4, 9 14062; PWR7-NEXT: li 4, 0 14063; PWR7-NEXT: iselgt 6, 5, 4 14064; PWR7-NEXT: cmpldi 3, 9 14065; PWR7-NEXT: iselgt 3, 5, 4 14066; PWR7-NEXT: std 6, -8(1) 14067; PWR7-NEXT: std 3, -16(1) 14068; PWR7-NEXT: addi 3, 1, -16 14069; PWR7-NEXT: lxvd2x 34, 0, 3 14070; PWR7-NEXT: blr 14071; 14072; PWR8-LABEL: ugt_9_v2i64: 14073; PWR8: # %bb.0: 14074; PWR8-NEXT: addis 3, 2, .LCPI116_0@toc@ha 14075; PWR8-NEXT: vpopcntd 2, 2 14076; PWR8-NEXT: addi 3, 3, .LCPI116_0@toc@l 14077; PWR8-NEXT: lxvd2x 35, 0, 3 14078; PWR8-NEXT: vcmpgtud 2, 2, 3 14079; PWR8-NEXT: blr 14080; 14081; PWR9-LABEL: ugt_9_v2i64: 14082; PWR9: # %bb.0: 14083; PWR9-NEXT: addis 3, 2, .LCPI116_0@toc@ha 14084; PWR9-NEXT: vpopcntd 2, 2 14085; PWR9-NEXT: addi 3, 3, .LCPI116_0@toc@l 14086; PWR9-NEXT: lxv 35, 0(3) 14087; PWR9-NEXT: vcmpgtud 2, 2, 3 14088; PWR9-NEXT: blr 14089 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14090 %3 = icmp ugt <2 x i64> %2, <i64 9, i64 9> 14091 %4 = sext <2 x i1> %3 to <2 x i64> 14092 ret <2 x i64> %4 14093} 14094 14095define <2 x i64> @ult_10_v2i64(<2 x i64> %0) { 14096; PWR5-LABEL: ult_10_v2i64: 14097; PWR5: # %bb.0: 14098; PWR5-NEXT: lis 5, 21845 14099; PWR5-NEXT: lis 6, 13107 14100; PWR5-NEXT: ori 5, 5, 21845 14101; PWR5-NEXT: rotldi 8, 4, 63 14102; PWR5-NEXT: rotldi 9, 3, 63 14103; PWR5-NEXT: rldimi 5, 5, 32, 0 14104; PWR5-NEXT: and 8, 8, 5 14105; PWR5-NEXT: and 5, 9, 5 14106; PWR5-NEXT: ori 6, 6, 13107 14107; PWR5-NEXT: sub 3, 3, 5 14108; PWR5-NEXT: rldimi 6, 6, 32, 0 14109; PWR5-NEXT: sub 4, 4, 8 14110; PWR5-NEXT: and 8, 3, 6 14111; PWR5-NEXT: rotldi 3, 3, 62 14112; PWR5-NEXT: and 3, 3, 6 14113; PWR5-NEXT: lis 7, 3855 14114; PWR5-NEXT: and 5, 4, 6 14115; PWR5-NEXT: rotldi 4, 4, 62 14116; PWR5-NEXT: add 3, 8, 3 14117; PWR5-NEXT: lis 9, 257 14118; PWR5-NEXT: ori 7, 7, 3855 14119; PWR5-NEXT: and 4, 4, 6 14120; PWR5-NEXT: rldicl 6, 3, 60, 4 14121; PWR5-NEXT: ori 9, 9, 257 14122; PWR5-NEXT: rldimi 7, 7, 32, 0 14123; PWR5-NEXT: add 4, 5, 4 14124; PWR5-NEXT: add 3, 3, 6 14125; PWR5-NEXT: rldimi 9, 9, 32, 0 14126; PWR5-NEXT: rldicl 5, 4, 60, 4 14127; PWR5-NEXT: and 3, 3, 7 14128; PWR5-NEXT: add 4, 4, 5 14129; PWR5-NEXT: mulld 3, 3, 9 14130; PWR5-NEXT: and 4, 4, 7 14131; PWR5-NEXT: rldicl 3, 3, 8, 56 14132; PWR5-NEXT: li 5, 10 14133; PWR5-NEXT: mulld 4, 4, 9 14134; PWR5-NEXT: subc 6, 3, 5 14135; PWR5-NEXT: rldicl 4, 4, 8, 56 14136; PWR5-NEXT: subfe 3, 3, 3 14137; PWR5-NEXT: subc 5, 4, 5 14138; PWR5-NEXT: subfe 4, 4, 4 14139; PWR5-NEXT: blr 14140; 14141; PWR6-LABEL: ult_10_v2i64: 14142; PWR6: # %bb.0: 14143; PWR6-NEXT: lis 5, 21845 14144; PWR6-NEXT: lis 6, 13107 14145; PWR6-NEXT: ori 5, 5, 21845 14146; PWR6-NEXT: rotldi 8, 4, 63 14147; PWR6-NEXT: rotldi 9, 3, 63 14148; PWR6-NEXT: rldimi 5, 5, 32, 0 14149; PWR6-NEXT: and 8, 8, 5 14150; PWR6-NEXT: and 5, 9, 5 14151; PWR6-NEXT: ori 6, 6, 13107 14152; PWR6-NEXT: sub 3, 3, 5 14153; PWR6-NEXT: rldimi 6, 6, 32, 0 14154; PWR6-NEXT: sub 4, 4, 8 14155; PWR6-NEXT: and 8, 3, 6 14156; PWR6-NEXT: rotldi 3, 3, 62 14157; PWR6-NEXT: and 3, 3, 6 14158; PWR6-NEXT: lis 7, 3855 14159; PWR6-NEXT: and 5, 4, 6 14160; PWR6-NEXT: rotldi 4, 4, 62 14161; PWR6-NEXT: add 3, 8, 3 14162; PWR6-NEXT: lis 9, 257 14163; PWR6-NEXT: ori 7, 7, 3855 14164; PWR6-NEXT: and 4, 4, 6 14165; PWR6-NEXT: rldicl 6, 3, 60, 4 14166; PWR6-NEXT: ori 9, 9, 257 14167; PWR6-NEXT: rldimi 7, 7, 32, 0 14168; PWR6-NEXT: add 4, 5, 4 14169; PWR6-NEXT: add 3, 3, 6 14170; PWR6-NEXT: rldimi 9, 9, 32, 0 14171; PWR6-NEXT: rldicl 5, 4, 60, 4 14172; PWR6-NEXT: and 3, 3, 7 14173; PWR6-NEXT: add 4, 4, 5 14174; PWR6-NEXT: mulld 3, 3, 9 14175; PWR6-NEXT: and 4, 4, 7 14176; PWR6-NEXT: rldicl 3, 3, 8, 56 14177; PWR6-NEXT: li 5, 10 14178; PWR6-NEXT: mulld 4, 4, 9 14179; PWR6-NEXT: subc 6, 3, 5 14180; PWR6-NEXT: rldicl 4, 4, 8, 56 14181; PWR6-NEXT: subfe 3, 3, 3 14182; PWR6-NEXT: subc 5, 4, 5 14183; PWR6-NEXT: subfe 4, 4, 4 14184; PWR6-NEXT: blr 14185; 14186; PWR7-LABEL: ult_10_v2i64: 14187; PWR7: # %bb.0: 14188; PWR7-NEXT: addi 3, 1, -32 14189; PWR7-NEXT: li 5, -1 14190; PWR7-NEXT: stxvd2x 34, 0, 3 14191; PWR7-NEXT: ld 4, -24(1) 14192; PWR7-NEXT: ld 3, -32(1) 14193; PWR7-NEXT: popcntd 4, 4 14194; PWR7-NEXT: popcntd 3, 3 14195; PWR7-NEXT: cmpldi 4, 10 14196; PWR7-NEXT: li 4, 0 14197; PWR7-NEXT: isellt 6, 5, 4 14198; PWR7-NEXT: cmpldi 3, 10 14199; PWR7-NEXT: isellt 3, 5, 4 14200; PWR7-NEXT: std 6, -8(1) 14201; PWR7-NEXT: std 3, -16(1) 14202; PWR7-NEXT: addi 3, 1, -16 14203; PWR7-NEXT: lxvd2x 34, 0, 3 14204; PWR7-NEXT: blr 14205; 14206; PWR8-LABEL: ult_10_v2i64: 14207; PWR8: # %bb.0: 14208; PWR8-NEXT: addis 3, 2, .LCPI117_0@toc@ha 14209; PWR8-NEXT: vpopcntd 2, 2 14210; PWR8-NEXT: addi 3, 3, .LCPI117_0@toc@l 14211; PWR8-NEXT: lxvd2x 35, 0, 3 14212; PWR8-NEXT: vcmpgtud 2, 3, 2 14213; PWR8-NEXT: blr 14214; 14215; PWR9-LABEL: ult_10_v2i64: 14216; PWR9: # %bb.0: 14217; PWR9-NEXT: addis 3, 2, .LCPI117_0@toc@ha 14218; PWR9-NEXT: vpopcntd 2, 2 14219; PWR9-NEXT: addi 3, 3, .LCPI117_0@toc@l 14220; PWR9-NEXT: lxv 35, 0(3) 14221; PWR9-NEXT: vcmpgtud 2, 3, 2 14222; PWR9-NEXT: blr 14223 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14224 %3 = icmp ult <2 x i64> %2, <i64 10, i64 10> 14225 %4 = sext <2 x i1> %3 to <2 x i64> 14226 ret <2 x i64> %4 14227} 14228 14229define <2 x i64> @ugt_10_v2i64(<2 x i64> %0) { 14230; PWR5-LABEL: ugt_10_v2i64: 14231; PWR5: # %bb.0: 14232; PWR5-NEXT: lis 5, 21845 14233; PWR5-NEXT: lis 6, 13107 14234; PWR5-NEXT: ori 5, 5, 21845 14235; PWR5-NEXT: rotldi 8, 4, 63 14236; PWR5-NEXT: rotldi 9, 3, 63 14237; PWR5-NEXT: rldimi 5, 5, 32, 0 14238; PWR5-NEXT: and 8, 8, 5 14239; PWR5-NEXT: and 5, 9, 5 14240; PWR5-NEXT: ori 6, 6, 13107 14241; PWR5-NEXT: sub 3, 3, 5 14242; PWR5-NEXT: rldimi 6, 6, 32, 0 14243; PWR5-NEXT: sub 4, 4, 8 14244; PWR5-NEXT: and 8, 3, 6 14245; PWR5-NEXT: rotldi 3, 3, 62 14246; PWR5-NEXT: and 3, 3, 6 14247; PWR5-NEXT: lis 7, 3855 14248; PWR5-NEXT: and 5, 4, 6 14249; PWR5-NEXT: rotldi 4, 4, 62 14250; PWR5-NEXT: add 3, 8, 3 14251; PWR5-NEXT: lis 9, 257 14252; PWR5-NEXT: ori 7, 7, 3855 14253; PWR5-NEXT: and 4, 4, 6 14254; PWR5-NEXT: rldicl 6, 3, 60, 4 14255; PWR5-NEXT: ori 9, 9, 257 14256; PWR5-NEXT: rldimi 7, 7, 32, 0 14257; PWR5-NEXT: add 4, 5, 4 14258; PWR5-NEXT: add 3, 3, 6 14259; PWR5-NEXT: rldimi 9, 9, 32, 0 14260; PWR5-NEXT: rldicl 5, 4, 60, 4 14261; PWR5-NEXT: and 3, 3, 7 14262; PWR5-NEXT: add 4, 4, 5 14263; PWR5-NEXT: mulld 3, 3, 9 14264; PWR5-NEXT: and 4, 4, 7 14265; PWR5-NEXT: rldicl 3, 3, 8, 56 14266; PWR5-NEXT: mulld 4, 4, 9 14267; PWR5-NEXT: li 5, 10 14268; PWR5-NEXT: subfic 3, 3, 10 14269; PWR5-NEXT: rldicl 4, 4, 8, 56 14270; PWR5-NEXT: subfe 3, 5, 5 14271; PWR5-NEXT: subfic 4, 4, 10 14272; PWR5-NEXT: subfe 4, 5, 5 14273; PWR5-NEXT: blr 14274; 14275; PWR6-LABEL: ugt_10_v2i64: 14276; PWR6: # %bb.0: 14277; PWR6-NEXT: lis 5, 21845 14278; PWR6-NEXT: lis 6, 13107 14279; PWR6-NEXT: ori 5, 5, 21845 14280; PWR6-NEXT: rotldi 8, 4, 63 14281; PWR6-NEXT: rotldi 9, 3, 63 14282; PWR6-NEXT: rldimi 5, 5, 32, 0 14283; PWR6-NEXT: and 8, 8, 5 14284; PWR6-NEXT: and 5, 9, 5 14285; PWR6-NEXT: ori 6, 6, 13107 14286; PWR6-NEXT: sub 3, 3, 5 14287; PWR6-NEXT: rldimi 6, 6, 32, 0 14288; PWR6-NEXT: sub 4, 4, 8 14289; PWR6-NEXT: and 8, 3, 6 14290; PWR6-NEXT: rotldi 3, 3, 62 14291; PWR6-NEXT: and 3, 3, 6 14292; PWR6-NEXT: lis 7, 3855 14293; PWR6-NEXT: and 5, 4, 6 14294; PWR6-NEXT: rotldi 4, 4, 62 14295; PWR6-NEXT: add 3, 8, 3 14296; PWR6-NEXT: lis 9, 257 14297; PWR6-NEXT: ori 7, 7, 3855 14298; PWR6-NEXT: and 4, 4, 6 14299; PWR6-NEXT: rldicl 6, 3, 60, 4 14300; PWR6-NEXT: ori 9, 9, 257 14301; PWR6-NEXT: rldimi 7, 7, 32, 0 14302; PWR6-NEXT: add 4, 5, 4 14303; PWR6-NEXT: add 3, 3, 6 14304; PWR6-NEXT: rldimi 9, 9, 32, 0 14305; PWR6-NEXT: rldicl 5, 4, 60, 4 14306; PWR6-NEXT: and 3, 3, 7 14307; PWR6-NEXT: add 4, 4, 5 14308; PWR6-NEXT: mulld 3, 3, 9 14309; PWR6-NEXT: and 4, 4, 7 14310; PWR6-NEXT: rldicl 3, 3, 8, 56 14311; PWR6-NEXT: mulld 4, 4, 9 14312; PWR6-NEXT: li 5, 10 14313; PWR6-NEXT: subfic 3, 3, 10 14314; PWR6-NEXT: rldicl 4, 4, 8, 56 14315; PWR6-NEXT: subfe 3, 5, 5 14316; PWR6-NEXT: subfic 4, 4, 10 14317; PWR6-NEXT: subfe 4, 5, 5 14318; PWR6-NEXT: blr 14319; 14320; PWR7-LABEL: ugt_10_v2i64: 14321; PWR7: # %bb.0: 14322; PWR7-NEXT: addi 3, 1, -32 14323; PWR7-NEXT: li 5, -1 14324; PWR7-NEXT: stxvd2x 34, 0, 3 14325; PWR7-NEXT: ld 4, -24(1) 14326; PWR7-NEXT: ld 3, -32(1) 14327; PWR7-NEXT: popcntd 4, 4 14328; PWR7-NEXT: popcntd 3, 3 14329; PWR7-NEXT: cmpldi 4, 10 14330; PWR7-NEXT: li 4, 0 14331; PWR7-NEXT: iselgt 6, 5, 4 14332; PWR7-NEXT: cmpldi 3, 10 14333; PWR7-NEXT: iselgt 3, 5, 4 14334; PWR7-NEXT: std 6, -8(1) 14335; PWR7-NEXT: std 3, -16(1) 14336; PWR7-NEXT: addi 3, 1, -16 14337; PWR7-NEXT: lxvd2x 34, 0, 3 14338; PWR7-NEXT: blr 14339; 14340; PWR8-LABEL: ugt_10_v2i64: 14341; PWR8: # %bb.0: 14342; PWR8-NEXT: addis 3, 2, .LCPI118_0@toc@ha 14343; PWR8-NEXT: vpopcntd 2, 2 14344; PWR8-NEXT: addi 3, 3, .LCPI118_0@toc@l 14345; PWR8-NEXT: lxvd2x 35, 0, 3 14346; PWR8-NEXT: vcmpgtud 2, 2, 3 14347; PWR8-NEXT: blr 14348; 14349; PWR9-LABEL: ugt_10_v2i64: 14350; PWR9: # %bb.0: 14351; PWR9-NEXT: addis 3, 2, .LCPI118_0@toc@ha 14352; PWR9-NEXT: vpopcntd 2, 2 14353; PWR9-NEXT: addi 3, 3, .LCPI118_0@toc@l 14354; PWR9-NEXT: lxv 35, 0(3) 14355; PWR9-NEXT: vcmpgtud 2, 2, 3 14356; PWR9-NEXT: blr 14357 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14358 %3 = icmp ugt <2 x i64> %2, <i64 10, i64 10> 14359 %4 = sext <2 x i1> %3 to <2 x i64> 14360 ret <2 x i64> %4 14361} 14362 14363define <2 x i64> @ult_11_v2i64(<2 x i64> %0) { 14364; PWR5-LABEL: ult_11_v2i64: 14365; PWR5: # %bb.0: 14366; PWR5-NEXT: lis 5, 21845 14367; PWR5-NEXT: lis 6, 13107 14368; PWR5-NEXT: ori 5, 5, 21845 14369; PWR5-NEXT: rotldi 8, 4, 63 14370; PWR5-NEXT: rotldi 9, 3, 63 14371; PWR5-NEXT: rldimi 5, 5, 32, 0 14372; PWR5-NEXT: and 8, 8, 5 14373; PWR5-NEXT: and 5, 9, 5 14374; PWR5-NEXT: ori 6, 6, 13107 14375; PWR5-NEXT: sub 3, 3, 5 14376; PWR5-NEXT: rldimi 6, 6, 32, 0 14377; PWR5-NEXT: sub 4, 4, 8 14378; PWR5-NEXT: and 8, 3, 6 14379; PWR5-NEXT: rotldi 3, 3, 62 14380; PWR5-NEXT: and 3, 3, 6 14381; PWR5-NEXT: lis 7, 3855 14382; PWR5-NEXT: and 5, 4, 6 14383; PWR5-NEXT: rotldi 4, 4, 62 14384; PWR5-NEXT: add 3, 8, 3 14385; PWR5-NEXT: lis 9, 257 14386; PWR5-NEXT: ori 7, 7, 3855 14387; PWR5-NEXT: and 4, 4, 6 14388; PWR5-NEXT: rldicl 6, 3, 60, 4 14389; PWR5-NEXT: ori 9, 9, 257 14390; PWR5-NEXT: rldimi 7, 7, 32, 0 14391; PWR5-NEXT: add 4, 5, 4 14392; PWR5-NEXT: add 3, 3, 6 14393; PWR5-NEXT: rldimi 9, 9, 32, 0 14394; PWR5-NEXT: rldicl 5, 4, 60, 4 14395; PWR5-NEXT: and 3, 3, 7 14396; PWR5-NEXT: add 4, 4, 5 14397; PWR5-NEXT: mulld 3, 3, 9 14398; PWR5-NEXT: and 4, 4, 7 14399; PWR5-NEXT: rldicl 3, 3, 8, 56 14400; PWR5-NEXT: li 5, 11 14401; PWR5-NEXT: mulld 4, 4, 9 14402; PWR5-NEXT: subc 6, 3, 5 14403; PWR5-NEXT: rldicl 4, 4, 8, 56 14404; PWR5-NEXT: subfe 3, 3, 3 14405; PWR5-NEXT: subc 5, 4, 5 14406; PWR5-NEXT: subfe 4, 4, 4 14407; PWR5-NEXT: blr 14408; 14409; PWR6-LABEL: ult_11_v2i64: 14410; PWR6: # %bb.0: 14411; PWR6-NEXT: lis 5, 21845 14412; PWR6-NEXT: lis 6, 13107 14413; PWR6-NEXT: ori 5, 5, 21845 14414; PWR6-NEXT: rotldi 8, 4, 63 14415; PWR6-NEXT: rotldi 9, 3, 63 14416; PWR6-NEXT: rldimi 5, 5, 32, 0 14417; PWR6-NEXT: and 8, 8, 5 14418; PWR6-NEXT: and 5, 9, 5 14419; PWR6-NEXT: ori 6, 6, 13107 14420; PWR6-NEXT: sub 3, 3, 5 14421; PWR6-NEXT: rldimi 6, 6, 32, 0 14422; PWR6-NEXT: sub 4, 4, 8 14423; PWR6-NEXT: and 8, 3, 6 14424; PWR6-NEXT: rotldi 3, 3, 62 14425; PWR6-NEXT: and 3, 3, 6 14426; PWR6-NEXT: lis 7, 3855 14427; PWR6-NEXT: and 5, 4, 6 14428; PWR6-NEXT: rotldi 4, 4, 62 14429; PWR6-NEXT: add 3, 8, 3 14430; PWR6-NEXT: lis 9, 257 14431; PWR6-NEXT: ori 7, 7, 3855 14432; PWR6-NEXT: and 4, 4, 6 14433; PWR6-NEXT: rldicl 6, 3, 60, 4 14434; PWR6-NEXT: ori 9, 9, 257 14435; PWR6-NEXT: rldimi 7, 7, 32, 0 14436; PWR6-NEXT: add 4, 5, 4 14437; PWR6-NEXT: add 3, 3, 6 14438; PWR6-NEXT: rldimi 9, 9, 32, 0 14439; PWR6-NEXT: rldicl 5, 4, 60, 4 14440; PWR6-NEXT: and 3, 3, 7 14441; PWR6-NEXT: add 4, 4, 5 14442; PWR6-NEXT: mulld 3, 3, 9 14443; PWR6-NEXT: and 4, 4, 7 14444; PWR6-NEXT: rldicl 3, 3, 8, 56 14445; PWR6-NEXT: li 5, 11 14446; PWR6-NEXT: mulld 4, 4, 9 14447; PWR6-NEXT: subc 6, 3, 5 14448; PWR6-NEXT: rldicl 4, 4, 8, 56 14449; PWR6-NEXT: subfe 3, 3, 3 14450; PWR6-NEXT: subc 5, 4, 5 14451; PWR6-NEXT: subfe 4, 4, 4 14452; PWR6-NEXT: blr 14453; 14454; PWR7-LABEL: ult_11_v2i64: 14455; PWR7: # %bb.0: 14456; PWR7-NEXT: addi 3, 1, -32 14457; PWR7-NEXT: li 5, -1 14458; PWR7-NEXT: stxvd2x 34, 0, 3 14459; PWR7-NEXT: ld 4, -24(1) 14460; PWR7-NEXT: ld 3, -32(1) 14461; PWR7-NEXT: popcntd 4, 4 14462; PWR7-NEXT: popcntd 3, 3 14463; PWR7-NEXT: cmpldi 4, 11 14464; PWR7-NEXT: li 4, 0 14465; PWR7-NEXT: isellt 6, 5, 4 14466; PWR7-NEXT: cmpldi 3, 11 14467; PWR7-NEXT: isellt 3, 5, 4 14468; PWR7-NEXT: std 6, -8(1) 14469; PWR7-NEXT: std 3, -16(1) 14470; PWR7-NEXT: addi 3, 1, -16 14471; PWR7-NEXT: lxvd2x 34, 0, 3 14472; PWR7-NEXT: blr 14473; 14474; PWR8-LABEL: ult_11_v2i64: 14475; PWR8: # %bb.0: 14476; PWR8-NEXT: addis 3, 2, .LCPI119_0@toc@ha 14477; PWR8-NEXT: vpopcntd 2, 2 14478; PWR8-NEXT: addi 3, 3, .LCPI119_0@toc@l 14479; PWR8-NEXT: lxvd2x 35, 0, 3 14480; PWR8-NEXT: vcmpgtud 2, 3, 2 14481; PWR8-NEXT: blr 14482; 14483; PWR9-LABEL: ult_11_v2i64: 14484; PWR9: # %bb.0: 14485; PWR9-NEXT: addis 3, 2, .LCPI119_0@toc@ha 14486; PWR9-NEXT: vpopcntd 2, 2 14487; PWR9-NEXT: addi 3, 3, .LCPI119_0@toc@l 14488; PWR9-NEXT: lxv 35, 0(3) 14489; PWR9-NEXT: vcmpgtud 2, 3, 2 14490; PWR9-NEXT: blr 14491 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14492 %3 = icmp ult <2 x i64> %2, <i64 11, i64 11> 14493 %4 = sext <2 x i1> %3 to <2 x i64> 14494 ret <2 x i64> %4 14495} 14496 14497define <2 x i64> @ugt_11_v2i64(<2 x i64> %0) { 14498; PWR5-LABEL: ugt_11_v2i64: 14499; PWR5: # %bb.0: 14500; PWR5-NEXT: lis 5, 21845 14501; PWR5-NEXT: lis 6, 13107 14502; PWR5-NEXT: ori 5, 5, 21845 14503; PWR5-NEXT: rotldi 8, 4, 63 14504; PWR5-NEXT: rotldi 9, 3, 63 14505; PWR5-NEXT: rldimi 5, 5, 32, 0 14506; PWR5-NEXT: and 8, 8, 5 14507; PWR5-NEXT: and 5, 9, 5 14508; PWR5-NEXT: ori 6, 6, 13107 14509; PWR5-NEXT: sub 3, 3, 5 14510; PWR5-NEXT: rldimi 6, 6, 32, 0 14511; PWR5-NEXT: sub 4, 4, 8 14512; PWR5-NEXT: and 8, 3, 6 14513; PWR5-NEXT: rotldi 3, 3, 62 14514; PWR5-NEXT: and 3, 3, 6 14515; PWR5-NEXT: lis 7, 3855 14516; PWR5-NEXT: and 5, 4, 6 14517; PWR5-NEXT: rotldi 4, 4, 62 14518; PWR5-NEXT: add 3, 8, 3 14519; PWR5-NEXT: lis 9, 257 14520; PWR5-NEXT: ori 7, 7, 3855 14521; PWR5-NEXT: and 4, 4, 6 14522; PWR5-NEXT: rldicl 6, 3, 60, 4 14523; PWR5-NEXT: ori 9, 9, 257 14524; PWR5-NEXT: rldimi 7, 7, 32, 0 14525; PWR5-NEXT: add 4, 5, 4 14526; PWR5-NEXT: add 3, 3, 6 14527; PWR5-NEXT: rldimi 9, 9, 32, 0 14528; PWR5-NEXT: rldicl 5, 4, 60, 4 14529; PWR5-NEXT: and 3, 3, 7 14530; PWR5-NEXT: add 4, 4, 5 14531; PWR5-NEXT: mulld 3, 3, 9 14532; PWR5-NEXT: and 4, 4, 7 14533; PWR5-NEXT: rldicl 3, 3, 8, 56 14534; PWR5-NEXT: mulld 4, 4, 9 14535; PWR5-NEXT: li 5, 11 14536; PWR5-NEXT: subfic 3, 3, 11 14537; PWR5-NEXT: rldicl 4, 4, 8, 56 14538; PWR5-NEXT: subfe 3, 5, 5 14539; PWR5-NEXT: subfic 4, 4, 11 14540; PWR5-NEXT: subfe 4, 5, 5 14541; PWR5-NEXT: blr 14542; 14543; PWR6-LABEL: ugt_11_v2i64: 14544; PWR6: # %bb.0: 14545; PWR6-NEXT: lis 5, 21845 14546; PWR6-NEXT: lis 6, 13107 14547; PWR6-NEXT: ori 5, 5, 21845 14548; PWR6-NEXT: rotldi 8, 4, 63 14549; PWR6-NEXT: rotldi 9, 3, 63 14550; PWR6-NEXT: rldimi 5, 5, 32, 0 14551; PWR6-NEXT: and 8, 8, 5 14552; PWR6-NEXT: and 5, 9, 5 14553; PWR6-NEXT: ori 6, 6, 13107 14554; PWR6-NEXT: sub 3, 3, 5 14555; PWR6-NEXT: rldimi 6, 6, 32, 0 14556; PWR6-NEXT: sub 4, 4, 8 14557; PWR6-NEXT: and 8, 3, 6 14558; PWR6-NEXT: rotldi 3, 3, 62 14559; PWR6-NEXT: and 3, 3, 6 14560; PWR6-NEXT: lis 7, 3855 14561; PWR6-NEXT: and 5, 4, 6 14562; PWR6-NEXT: rotldi 4, 4, 62 14563; PWR6-NEXT: add 3, 8, 3 14564; PWR6-NEXT: lis 9, 257 14565; PWR6-NEXT: ori 7, 7, 3855 14566; PWR6-NEXT: and 4, 4, 6 14567; PWR6-NEXT: rldicl 6, 3, 60, 4 14568; PWR6-NEXT: ori 9, 9, 257 14569; PWR6-NEXT: rldimi 7, 7, 32, 0 14570; PWR6-NEXT: add 4, 5, 4 14571; PWR6-NEXT: add 3, 3, 6 14572; PWR6-NEXT: rldimi 9, 9, 32, 0 14573; PWR6-NEXT: rldicl 5, 4, 60, 4 14574; PWR6-NEXT: and 3, 3, 7 14575; PWR6-NEXT: add 4, 4, 5 14576; PWR6-NEXT: mulld 3, 3, 9 14577; PWR6-NEXT: and 4, 4, 7 14578; PWR6-NEXT: rldicl 3, 3, 8, 56 14579; PWR6-NEXT: mulld 4, 4, 9 14580; PWR6-NEXT: li 5, 11 14581; PWR6-NEXT: subfic 3, 3, 11 14582; PWR6-NEXT: rldicl 4, 4, 8, 56 14583; PWR6-NEXT: subfe 3, 5, 5 14584; PWR6-NEXT: subfic 4, 4, 11 14585; PWR6-NEXT: subfe 4, 5, 5 14586; PWR6-NEXT: blr 14587; 14588; PWR7-LABEL: ugt_11_v2i64: 14589; PWR7: # %bb.0: 14590; PWR7-NEXT: addi 3, 1, -32 14591; PWR7-NEXT: li 5, -1 14592; PWR7-NEXT: stxvd2x 34, 0, 3 14593; PWR7-NEXT: ld 4, -24(1) 14594; PWR7-NEXT: ld 3, -32(1) 14595; PWR7-NEXT: popcntd 4, 4 14596; PWR7-NEXT: popcntd 3, 3 14597; PWR7-NEXT: cmpldi 4, 11 14598; PWR7-NEXT: li 4, 0 14599; PWR7-NEXT: iselgt 6, 5, 4 14600; PWR7-NEXT: cmpldi 3, 11 14601; PWR7-NEXT: iselgt 3, 5, 4 14602; PWR7-NEXT: std 6, -8(1) 14603; PWR7-NEXT: std 3, -16(1) 14604; PWR7-NEXT: addi 3, 1, -16 14605; PWR7-NEXT: lxvd2x 34, 0, 3 14606; PWR7-NEXT: blr 14607; 14608; PWR8-LABEL: ugt_11_v2i64: 14609; PWR8: # %bb.0: 14610; PWR8-NEXT: addis 3, 2, .LCPI120_0@toc@ha 14611; PWR8-NEXT: vpopcntd 2, 2 14612; PWR8-NEXT: addi 3, 3, .LCPI120_0@toc@l 14613; PWR8-NEXT: lxvd2x 35, 0, 3 14614; PWR8-NEXT: vcmpgtud 2, 2, 3 14615; PWR8-NEXT: blr 14616; 14617; PWR9-LABEL: ugt_11_v2i64: 14618; PWR9: # %bb.0: 14619; PWR9-NEXT: addis 3, 2, .LCPI120_0@toc@ha 14620; PWR9-NEXT: vpopcntd 2, 2 14621; PWR9-NEXT: addi 3, 3, .LCPI120_0@toc@l 14622; PWR9-NEXT: lxv 35, 0(3) 14623; PWR9-NEXT: vcmpgtud 2, 2, 3 14624; PWR9-NEXT: blr 14625 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14626 %3 = icmp ugt <2 x i64> %2, <i64 11, i64 11> 14627 %4 = sext <2 x i1> %3 to <2 x i64> 14628 ret <2 x i64> %4 14629} 14630 14631define <2 x i64> @ult_12_v2i64(<2 x i64> %0) { 14632; PWR5-LABEL: ult_12_v2i64: 14633; PWR5: # %bb.0: 14634; PWR5-NEXT: lis 5, 21845 14635; PWR5-NEXT: lis 6, 13107 14636; PWR5-NEXT: ori 5, 5, 21845 14637; PWR5-NEXT: rotldi 8, 4, 63 14638; PWR5-NEXT: rotldi 9, 3, 63 14639; PWR5-NEXT: rldimi 5, 5, 32, 0 14640; PWR5-NEXT: and 8, 8, 5 14641; PWR5-NEXT: and 5, 9, 5 14642; PWR5-NEXT: ori 6, 6, 13107 14643; PWR5-NEXT: sub 3, 3, 5 14644; PWR5-NEXT: rldimi 6, 6, 32, 0 14645; PWR5-NEXT: sub 4, 4, 8 14646; PWR5-NEXT: and 8, 3, 6 14647; PWR5-NEXT: rotldi 3, 3, 62 14648; PWR5-NEXT: and 3, 3, 6 14649; PWR5-NEXT: lis 7, 3855 14650; PWR5-NEXT: and 5, 4, 6 14651; PWR5-NEXT: rotldi 4, 4, 62 14652; PWR5-NEXT: add 3, 8, 3 14653; PWR5-NEXT: lis 9, 257 14654; PWR5-NEXT: ori 7, 7, 3855 14655; PWR5-NEXT: and 4, 4, 6 14656; PWR5-NEXT: rldicl 6, 3, 60, 4 14657; PWR5-NEXT: ori 9, 9, 257 14658; PWR5-NEXT: rldimi 7, 7, 32, 0 14659; PWR5-NEXT: add 4, 5, 4 14660; PWR5-NEXT: add 3, 3, 6 14661; PWR5-NEXT: rldimi 9, 9, 32, 0 14662; PWR5-NEXT: rldicl 5, 4, 60, 4 14663; PWR5-NEXT: and 3, 3, 7 14664; PWR5-NEXT: add 4, 4, 5 14665; PWR5-NEXT: mulld 3, 3, 9 14666; PWR5-NEXT: and 4, 4, 7 14667; PWR5-NEXT: rldicl 3, 3, 8, 56 14668; PWR5-NEXT: li 5, 12 14669; PWR5-NEXT: mulld 4, 4, 9 14670; PWR5-NEXT: subc 6, 3, 5 14671; PWR5-NEXT: rldicl 4, 4, 8, 56 14672; PWR5-NEXT: subfe 3, 3, 3 14673; PWR5-NEXT: subc 5, 4, 5 14674; PWR5-NEXT: subfe 4, 4, 4 14675; PWR5-NEXT: blr 14676; 14677; PWR6-LABEL: ult_12_v2i64: 14678; PWR6: # %bb.0: 14679; PWR6-NEXT: lis 5, 21845 14680; PWR6-NEXT: lis 6, 13107 14681; PWR6-NEXT: ori 5, 5, 21845 14682; PWR6-NEXT: rotldi 8, 4, 63 14683; PWR6-NEXT: rotldi 9, 3, 63 14684; PWR6-NEXT: rldimi 5, 5, 32, 0 14685; PWR6-NEXT: and 8, 8, 5 14686; PWR6-NEXT: and 5, 9, 5 14687; PWR6-NEXT: ori 6, 6, 13107 14688; PWR6-NEXT: sub 3, 3, 5 14689; PWR6-NEXT: rldimi 6, 6, 32, 0 14690; PWR6-NEXT: sub 4, 4, 8 14691; PWR6-NEXT: and 8, 3, 6 14692; PWR6-NEXT: rotldi 3, 3, 62 14693; PWR6-NEXT: and 3, 3, 6 14694; PWR6-NEXT: lis 7, 3855 14695; PWR6-NEXT: and 5, 4, 6 14696; PWR6-NEXT: rotldi 4, 4, 62 14697; PWR6-NEXT: add 3, 8, 3 14698; PWR6-NEXT: lis 9, 257 14699; PWR6-NEXT: ori 7, 7, 3855 14700; PWR6-NEXT: and 4, 4, 6 14701; PWR6-NEXT: rldicl 6, 3, 60, 4 14702; PWR6-NEXT: ori 9, 9, 257 14703; PWR6-NEXT: rldimi 7, 7, 32, 0 14704; PWR6-NEXT: add 4, 5, 4 14705; PWR6-NEXT: add 3, 3, 6 14706; PWR6-NEXT: rldimi 9, 9, 32, 0 14707; PWR6-NEXT: rldicl 5, 4, 60, 4 14708; PWR6-NEXT: and 3, 3, 7 14709; PWR6-NEXT: add 4, 4, 5 14710; PWR6-NEXT: mulld 3, 3, 9 14711; PWR6-NEXT: and 4, 4, 7 14712; PWR6-NEXT: rldicl 3, 3, 8, 56 14713; PWR6-NEXT: li 5, 12 14714; PWR6-NEXT: mulld 4, 4, 9 14715; PWR6-NEXT: subc 6, 3, 5 14716; PWR6-NEXT: rldicl 4, 4, 8, 56 14717; PWR6-NEXT: subfe 3, 3, 3 14718; PWR6-NEXT: subc 5, 4, 5 14719; PWR6-NEXT: subfe 4, 4, 4 14720; PWR6-NEXT: blr 14721; 14722; PWR7-LABEL: ult_12_v2i64: 14723; PWR7: # %bb.0: 14724; PWR7-NEXT: addi 3, 1, -32 14725; PWR7-NEXT: li 5, -1 14726; PWR7-NEXT: stxvd2x 34, 0, 3 14727; PWR7-NEXT: ld 4, -24(1) 14728; PWR7-NEXT: ld 3, -32(1) 14729; PWR7-NEXT: popcntd 4, 4 14730; PWR7-NEXT: popcntd 3, 3 14731; PWR7-NEXT: cmpldi 4, 12 14732; PWR7-NEXT: li 4, 0 14733; PWR7-NEXT: isellt 6, 5, 4 14734; PWR7-NEXT: cmpldi 3, 12 14735; PWR7-NEXT: isellt 3, 5, 4 14736; PWR7-NEXT: std 6, -8(1) 14737; PWR7-NEXT: std 3, -16(1) 14738; PWR7-NEXT: addi 3, 1, -16 14739; PWR7-NEXT: lxvd2x 34, 0, 3 14740; PWR7-NEXT: blr 14741; 14742; PWR8-LABEL: ult_12_v2i64: 14743; PWR8: # %bb.0: 14744; PWR8-NEXT: addis 3, 2, .LCPI121_0@toc@ha 14745; PWR8-NEXT: vpopcntd 2, 2 14746; PWR8-NEXT: addi 3, 3, .LCPI121_0@toc@l 14747; PWR8-NEXT: lxvd2x 35, 0, 3 14748; PWR8-NEXT: vcmpgtud 2, 3, 2 14749; PWR8-NEXT: blr 14750; 14751; PWR9-LABEL: ult_12_v2i64: 14752; PWR9: # %bb.0: 14753; PWR9-NEXT: addis 3, 2, .LCPI121_0@toc@ha 14754; PWR9-NEXT: vpopcntd 2, 2 14755; PWR9-NEXT: addi 3, 3, .LCPI121_0@toc@l 14756; PWR9-NEXT: lxv 35, 0(3) 14757; PWR9-NEXT: vcmpgtud 2, 3, 2 14758; PWR9-NEXT: blr 14759 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14760 %3 = icmp ult <2 x i64> %2, <i64 12, i64 12> 14761 %4 = sext <2 x i1> %3 to <2 x i64> 14762 ret <2 x i64> %4 14763} 14764 14765define <2 x i64> @ugt_12_v2i64(<2 x i64> %0) { 14766; PWR5-LABEL: ugt_12_v2i64: 14767; PWR5: # %bb.0: 14768; PWR5-NEXT: lis 5, 21845 14769; PWR5-NEXT: lis 6, 13107 14770; PWR5-NEXT: ori 5, 5, 21845 14771; PWR5-NEXT: rotldi 8, 4, 63 14772; PWR5-NEXT: rotldi 9, 3, 63 14773; PWR5-NEXT: rldimi 5, 5, 32, 0 14774; PWR5-NEXT: and 8, 8, 5 14775; PWR5-NEXT: and 5, 9, 5 14776; PWR5-NEXT: ori 6, 6, 13107 14777; PWR5-NEXT: sub 3, 3, 5 14778; PWR5-NEXT: rldimi 6, 6, 32, 0 14779; PWR5-NEXT: sub 4, 4, 8 14780; PWR5-NEXT: and 8, 3, 6 14781; PWR5-NEXT: rotldi 3, 3, 62 14782; PWR5-NEXT: and 3, 3, 6 14783; PWR5-NEXT: lis 7, 3855 14784; PWR5-NEXT: and 5, 4, 6 14785; PWR5-NEXT: rotldi 4, 4, 62 14786; PWR5-NEXT: add 3, 8, 3 14787; PWR5-NEXT: lis 9, 257 14788; PWR5-NEXT: ori 7, 7, 3855 14789; PWR5-NEXT: and 4, 4, 6 14790; PWR5-NEXT: rldicl 6, 3, 60, 4 14791; PWR5-NEXT: ori 9, 9, 257 14792; PWR5-NEXT: rldimi 7, 7, 32, 0 14793; PWR5-NEXT: add 4, 5, 4 14794; PWR5-NEXT: add 3, 3, 6 14795; PWR5-NEXT: rldimi 9, 9, 32, 0 14796; PWR5-NEXT: rldicl 5, 4, 60, 4 14797; PWR5-NEXT: and 3, 3, 7 14798; PWR5-NEXT: add 4, 4, 5 14799; PWR5-NEXT: mulld 3, 3, 9 14800; PWR5-NEXT: and 4, 4, 7 14801; PWR5-NEXT: rldicl 3, 3, 8, 56 14802; PWR5-NEXT: mulld 4, 4, 9 14803; PWR5-NEXT: li 5, 12 14804; PWR5-NEXT: subfic 3, 3, 12 14805; PWR5-NEXT: rldicl 4, 4, 8, 56 14806; PWR5-NEXT: subfe 3, 5, 5 14807; PWR5-NEXT: subfic 4, 4, 12 14808; PWR5-NEXT: subfe 4, 5, 5 14809; PWR5-NEXT: blr 14810; 14811; PWR6-LABEL: ugt_12_v2i64: 14812; PWR6: # %bb.0: 14813; PWR6-NEXT: lis 5, 21845 14814; PWR6-NEXT: lis 6, 13107 14815; PWR6-NEXT: ori 5, 5, 21845 14816; PWR6-NEXT: rotldi 8, 4, 63 14817; PWR6-NEXT: rotldi 9, 3, 63 14818; PWR6-NEXT: rldimi 5, 5, 32, 0 14819; PWR6-NEXT: and 8, 8, 5 14820; PWR6-NEXT: and 5, 9, 5 14821; PWR6-NEXT: ori 6, 6, 13107 14822; PWR6-NEXT: sub 3, 3, 5 14823; PWR6-NEXT: rldimi 6, 6, 32, 0 14824; PWR6-NEXT: sub 4, 4, 8 14825; PWR6-NEXT: and 8, 3, 6 14826; PWR6-NEXT: rotldi 3, 3, 62 14827; PWR6-NEXT: and 3, 3, 6 14828; PWR6-NEXT: lis 7, 3855 14829; PWR6-NEXT: and 5, 4, 6 14830; PWR6-NEXT: rotldi 4, 4, 62 14831; PWR6-NEXT: add 3, 8, 3 14832; PWR6-NEXT: lis 9, 257 14833; PWR6-NEXT: ori 7, 7, 3855 14834; PWR6-NEXT: and 4, 4, 6 14835; PWR6-NEXT: rldicl 6, 3, 60, 4 14836; PWR6-NEXT: ori 9, 9, 257 14837; PWR6-NEXT: rldimi 7, 7, 32, 0 14838; PWR6-NEXT: add 4, 5, 4 14839; PWR6-NEXT: add 3, 3, 6 14840; PWR6-NEXT: rldimi 9, 9, 32, 0 14841; PWR6-NEXT: rldicl 5, 4, 60, 4 14842; PWR6-NEXT: and 3, 3, 7 14843; PWR6-NEXT: add 4, 4, 5 14844; PWR6-NEXT: mulld 3, 3, 9 14845; PWR6-NEXT: and 4, 4, 7 14846; PWR6-NEXT: rldicl 3, 3, 8, 56 14847; PWR6-NEXT: mulld 4, 4, 9 14848; PWR6-NEXT: li 5, 12 14849; PWR6-NEXT: subfic 3, 3, 12 14850; PWR6-NEXT: rldicl 4, 4, 8, 56 14851; PWR6-NEXT: subfe 3, 5, 5 14852; PWR6-NEXT: subfic 4, 4, 12 14853; PWR6-NEXT: subfe 4, 5, 5 14854; PWR6-NEXT: blr 14855; 14856; PWR7-LABEL: ugt_12_v2i64: 14857; PWR7: # %bb.0: 14858; PWR7-NEXT: addi 3, 1, -32 14859; PWR7-NEXT: li 5, -1 14860; PWR7-NEXT: stxvd2x 34, 0, 3 14861; PWR7-NEXT: ld 4, -24(1) 14862; PWR7-NEXT: ld 3, -32(1) 14863; PWR7-NEXT: popcntd 4, 4 14864; PWR7-NEXT: popcntd 3, 3 14865; PWR7-NEXT: cmpldi 4, 12 14866; PWR7-NEXT: li 4, 0 14867; PWR7-NEXT: iselgt 6, 5, 4 14868; PWR7-NEXT: cmpldi 3, 12 14869; PWR7-NEXT: iselgt 3, 5, 4 14870; PWR7-NEXT: std 6, -8(1) 14871; PWR7-NEXT: std 3, -16(1) 14872; PWR7-NEXT: addi 3, 1, -16 14873; PWR7-NEXT: lxvd2x 34, 0, 3 14874; PWR7-NEXT: blr 14875; 14876; PWR8-LABEL: ugt_12_v2i64: 14877; PWR8: # %bb.0: 14878; PWR8-NEXT: addis 3, 2, .LCPI122_0@toc@ha 14879; PWR8-NEXT: vpopcntd 2, 2 14880; PWR8-NEXT: addi 3, 3, .LCPI122_0@toc@l 14881; PWR8-NEXT: lxvd2x 35, 0, 3 14882; PWR8-NEXT: vcmpgtud 2, 2, 3 14883; PWR8-NEXT: blr 14884; 14885; PWR9-LABEL: ugt_12_v2i64: 14886; PWR9: # %bb.0: 14887; PWR9-NEXT: addis 3, 2, .LCPI122_0@toc@ha 14888; PWR9-NEXT: vpopcntd 2, 2 14889; PWR9-NEXT: addi 3, 3, .LCPI122_0@toc@l 14890; PWR9-NEXT: lxv 35, 0(3) 14891; PWR9-NEXT: vcmpgtud 2, 2, 3 14892; PWR9-NEXT: blr 14893 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 14894 %3 = icmp ugt <2 x i64> %2, <i64 12, i64 12> 14895 %4 = sext <2 x i1> %3 to <2 x i64> 14896 ret <2 x i64> %4 14897} 14898 14899define <2 x i64> @ult_13_v2i64(<2 x i64> %0) { 14900; PWR5-LABEL: ult_13_v2i64: 14901; PWR5: # %bb.0: 14902; PWR5-NEXT: lis 5, 21845 14903; PWR5-NEXT: lis 6, 13107 14904; PWR5-NEXT: ori 5, 5, 21845 14905; PWR5-NEXT: rotldi 8, 4, 63 14906; PWR5-NEXT: rotldi 9, 3, 63 14907; PWR5-NEXT: rldimi 5, 5, 32, 0 14908; PWR5-NEXT: and 8, 8, 5 14909; PWR5-NEXT: and 5, 9, 5 14910; PWR5-NEXT: ori 6, 6, 13107 14911; PWR5-NEXT: sub 3, 3, 5 14912; PWR5-NEXT: rldimi 6, 6, 32, 0 14913; PWR5-NEXT: sub 4, 4, 8 14914; PWR5-NEXT: and 8, 3, 6 14915; PWR5-NEXT: rotldi 3, 3, 62 14916; PWR5-NEXT: and 3, 3, 6 14917; PWR5-NEXT: lis 7, 3855 14918; PWR5-NEXT: and 5, 4, 6 14919; PWR5-NEXT: rotldi 4, 4, 62 14920; PWR5-NEXT: add 3, 8, 3 14921; PWR5-NEXT: lis 9, 257 14922; PWR5-NEXT: ori 7, 7, 3855 14923; PWR5-NEXT: and 4, 4, 6 14924; PWR5-NEXT: rldicl 6, 3, 60, 4 14925; PWR5-NEXT: ori 9, 9, 257 14926; PWR5-NEXT: rldimi 7, 7, 32, 0 14927; PWR5-NEXT: add 4, 5, 4 14928; PWR5-NEXT: add 3, 3, 6 14929; PWR5-NEXT: rldimi 9, 9, 32, 0 14930; PWR5-NEXT: rldicl 5, 4, 60, 4 14931; PWR5-NEXT: and 3, 3, 7 14932; PWR5-NEXT: add 4, 4, 5 14933; PWR5-NEXT: mulld 3, 3, 9 14934; PWR5-NEXT: and 4, 4, 7 14935; PWR5-NEXT: rldicl 3, 3, 8, 56 14936; PWR5-NEXT: li 5, 13 14937; PWR5-NEXT: mulld 4, 4, 9 14938; PWR5-NEXT: subc 6, 3, 5 14939; PWR5-NEXT: rldicl 4, 4, 8, 56 14940; PWR5-NEXT: subfe 3, 3, 3 14941; PWR5-NEXT: subc 5, 4, 5 14942; PWR5-NEXT: subfe 4, 4, 4 14943; PWR5-NEXT: blr 14944; 14945; PWR6-LABEL: ult_13_v2i64: 14946; PWR6: # %bb.0: 14947; PWR6-NEXT: lis 5, 21845 14948; PWR6-NEXT: lis 6, 13107 14949; PWR6-NEXT: ori 5, 5, 21845 14950; PWR6-NEXT: rotldi 8, 4, 63 14951; PWR6-NEXT: rotldi 9, 3, 63 14952; PWR6-NEXT: rldimi 5, 5, 32, 0 14953; PWR6-NEXT: and 8, 8, 5 14954; PWR6-NEXT: and 5, 9, 5 14955; PWR6-NEXT: ori 6, 6, 13107 14956; PWR6-NEXT: sub 3, 3, 5 14957; PWR6-NEXT: rldimi 6, 6, 32, 0 14958; PWR6-NEXT: sub 4, 4, 8 14959; PWR6-NEXT: and 8, 3, 6 14960; PWR6-NEXT: rotldi 3, 3, 62 14961; PWR6-NEXT: and 3, 3, 6 14962; PWR6-NEXT: lis 7, 3855 14963; PWR6-NEXT: and 5, 4, 6 14964; PWR6-NEXT: rotldi 4, 4, 62 14965; PWR6-NEXT: add 3, 8, 3 14966; PWR6-NEXT: lis 9, 257 14967; PWR6-NEXT: ori 7, 7, 3855 14968; PWR6-NEXT: and 4, 4, 6 14969; PWR6-NEXT: rldicl 6, 3, 60, 4 14970; PWR6-NEXT: ori 9, 9, 257 14971; PWR6-NEXT: rldimi 7, 7, 32, 0 14972; PWR6-NEXT: add 4, 5, 4 14973; PWR6-NEXT: add 3, 3, 6 14974; PWR6-NEXT: rldimi 9, 9, 32, 0 14975; PWR6-NEXT: rldicl 5, 4, 60, 4 14976; PWR6-NEXT: and 3, 3, 7 14977; PWR6-NEXT: add 4, 4, 5 14978; PWR6-NEXT: mulld 3, 3, 9 14979; PWR6-NEXT: and 4, 4, 7 14980; PWR6-NEXT: rldicl 3, 3, 8, 56 14981; PWR6-NEXT: li 5, 13 14982; PWR6-NEXT: mulld 4, 4, 9 14983; PWR6-NEXT: subc 6, 3, 5 14984; PWR6-NEXT: rldicl 4, 4, 8, 56 14985; PWR6-NEXT: subfe 3, 3, 3 14986; PWR6-NEXT: subc 5, 4, 5 14987; PWR6-NEXT: subfe 4, 4, 4 14988; PWR6-NEXT: blr 14989; 14990; PWR7-LABEL: ult_13_v2i64: 14991; PWR7: # %bb.0: 14992; PWR7-NEXT: addi 3, 1, -32 14993; PWR7-NEXT: li 5, -1 14994; PWR7-NEXT: stxvd2x 34, 0, 3 14995; PWR7-NEXT: ld 4, -24(1) 14996; PWR7-NEXT: ld 3, -32(1) 14997; PWR7-NEXT: popcntd 4, 4 14998; PWR7-NEXT: popcntd 3, 3 14999; PWR7-NEXT: cmpldi 4, 13 15000; PWR7-NEXT: li 4, 0 15001; PWR7-NEXT: isellt 6, 5, 4 15002; PWR7-NEXT: cmpldi 3, 13 15003; PWR7-NEXT: isellt 3, 5, 4 15004; PWR7-NEXT: std 6, -8(1) 15005; PWR7-NEXT: std 3, -16(1) 15006; PWR7-NEXT: addi 3, 1, -16 15007; PWR7-NEXT: lxvd2x 34, 0, 3 15008; PWR7-NEXT: blr 15009; 15010; PWR8-LABEL: ult_13_v2i64: 15011; PWR8: # %bb.0: 15012; PWR8-NEXT: addis 3, 2, .LCPI123_0@toc@ha 15013; PWR8-NEXT: vpopcntd 2, 2 15014; PWR8-NEXT: addi 3, 3, .LCPI123_0@toc@l 15015; PWR8-NEXT: lxvd2x 35, 0, 3 15016; PWR8-NEXT: vcmpgtud 2, 3, 2 15017; PWR8-NEXT: blr 15018; 15019; PWR9-LABEL: ult_13_v2i64: 15020; PWR9: # %bb.0: 15021; PWR9-NEXT: addis 3, 2, .LCPI123_0@toc@ha 15022; PWR9-NEXT: vpopcntd 2, 2 15023; PWR9-NEXT: addi 3, 3, .LCPI123_0@toc@l 15024; PWR9-NEXT: lxv 35, 0(3) 15025; PWR9-NEXT: vcmpgtud 2, 3, 2 15026; PWR9-NEXT: blr 15027 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15028 %3 = icmp ult <2 x i64> %2, <i64 13, i64 13> 15029 %4 = sext <2 x i1> %3 to <2 x i64> 15030 ret <2 x i64> %4 15031} 15032 15033define <2 x i64> @ugt_13_v2i64(<2 x i64> %0) { 15034; PWR5-LABEL: ugt_13_v2i64: 15035; PWR5: # %bb.0: 15036; PWR5-NEXT: lis 5, 21845 15037; PWR5-NEXT: lis 6, 13107 15038; PWR5-NEXT: ori 5, 5, 21845 15039; PWR5-NEXT: rotldi 8, 4, 63 15040; PWR5-NEXT: rotldi 9, 3, 63 15041; PWR5-NEXT: rldimi 5, 5, 32, 0 15042; PWR5-NEXT: and 8, 8, 5 15043; PWR5-NEXT: and 5, 9, 5 15044; PWR5-NEXT: ori 6, 6, 13107 15045; PWR5-NEXT: sub 3, 3, 5 15046; PWR5-NEXT: rldimi 6, 6, 32, 0 15047; PWR5-NEXT: sub 4, 4, 8 15048; PWR5-NEXT: and 8, 3, 6 15049; PWR5-NEXT: rotldi 3, 3, 62 15050; PWR5-NEXT: and 3, 3, 6 15051; PWR5-NEXT: lis 7, 3855 15052; PWR5-NEXT: and 5, 4, 6 15053; PWR5-NEXT: rotldi 4, 4, 62 15054; PWR5-NEXT: add 3, 8, 3 15055; PWR5-NEXT: lis 9, 257 15056; PWR5-NEXT: ori 7, 7, 3855 15057; PWR5-NEXT: and 4, 4, 6 15058; PWR5-NEXT: rldicl 6, 3, 60, 4 15059; PWR5-NEXT: ori 9, 9, 257 15060; PWR5-NEXT: rldimi 7, 7, 32, 0 15061; PWR5-NEXT: add 4, 5, 4 15062; PWR5-NEXT: add 3, 3, 6 15063; PWR5-NEXT: rldimi 9, 9, 32, 0 15064; PWR5-NEXT: rldicl 5, 4, 60, 4 15065; PWR5-NEXT: and 3, 3, 7 15066; PWR5-NEXT: add 4, 4, 5 15067; PWR5-NEXT: mulld 3, 3, 9 15068; PWR5-NEXT: and 4, 4, 7 15069; PWR5-NEXT: rldicl 3, 3, 8, 56 15070; PWR5-NEXT: mulld 4, 4, 9 15071; PWR5-NEXT: li 5, 13 15072; PWR5-NEXT: subfic 3, 3, 13 15073; PWR5-NEXT: rldicl 4, 4, 8, 56 15074; PWR5-NEXT: subfe 3, 5, 5 15075; PWR5-NEXT: subfic 4, 4, 13 15076; PWR5-NEXT: subfe 4, 5, 5 15077; PWR5-NEXT: blr 15078; 15079; PWR6-LABEL: ugt_13_v2i64: 15080; PWR6: # %bb.0: 15081; PWR6-NEXT: lis 5, 21845 15082; PWR6-NEXT: lis 6, 13107 15083; PWR6-NEXT: ori 5, 5, 21845 15084; PWR6-NEXT: rotldi 8, 4, 63 15085; PWR6-NEXT: rotldi 9, 3, 63 15086; PWR6-NEXT: rldimi 5, 5, 32, 0 15087; PWR6-NEXT: and 8, 8, 5 15088; PWR6-NEXT: and 5, 9, 5 15089; PWR6-NEXT: ori 6, 6, 13107 15090; PWR6-NEXT: sub 3, 3, 5 15091; PWR6-NEXT: rldimi 6, 6, 32, 0 15092; PWR6-NEXT: sub 4, 4, 8 15093; PWR6-NEXT: and 8, 3, 6 15094; PWR6-NEXT: rotldi 3, 3, 62 15095; PWR6-NEXT: and 3, 3, 6 15096; PWR6-NEXT: lis 7, 3855 15097; PWR6-NEXT: and 5, 4, 6 15098; PWR6-NEXT: rotldi 4, 4, 62 15099; PWR6-NEXT: add 3, 8, 3 15100; PWR6-NEXT: lis 9, 257 15101; PWR6-NEXT: ori 7, 7, 3855 15102; PWR6-NEXT: and 4, 4, 6 15103; PWR6-NEXT: rldicl 6, 3, 60, 4 15104; PWR6-NEXT: ori 9, 9, 257 15105; PWR6-NEXT: rldimi 7, 7, 32, 0 15106; PWR6-NEXT: add 4, 5, 4 15107; PWR6-NEXT: add 3, 3, 6 15108; PWR6-NEXT: rldimi 9, 9, 32, 0 15109; PWR6-NEXT: rldicl 5, 4, 60, 4 15110; PWR6-NEXT: and 3, 3, 7 15111; PWR6-NEXT: add 4, 4, 5 15112; PWR6-NEXT: mulld 3, 3, 9 15113; PWR6-NEXT: and 4, 4, 7 15114; PWR6-NEXT: rldicl 3, 3, 8, 56 15115; PWR6-NEXT: mulld 4, 4, 9 15116; PWR6-NEXT: li 5, 13 15117; PWR6-NEXT: subfic 3, 3, 13 15118; PWR6-NEXT: rldicl 4, 4, 8, 56 15119; PWR6-NEXT: subfe 3, 5, 5 15120; PWR6-NEXT: subfic 4, 4, 13 15121; PWR6-NEXT: subfe 4, 5, 5 15122; PWR6-NEXT: blr 15123; 15124; PWR7-LABEL: ugt_13_v2i64: 15125; PWR7: # %bb.0: 15126; PWR7-NEXT: addi 3, 1, -32 15127; PWR7-NEXT: li 5, -1 15128; PWR7-NEXT: stxvd2x 34, 0, 3 15129; PWR7-NEXT: ld 4, -24(1) 15130; PWR7-NEXT: ld 3, -32(1) 15131; PWR7-NEXT: popcntd 4, 4 15132; PWR7-NEXT: popcntd 3, 3 15133; PWR7-NEXT: cmpldi 4, 13 15134; PWR7-NEXT: li 4, 0 15135; PWR7-NEXT: iselgt 6, 5, 4 15136; PWR7-NEXT: cmpldi 3, 13 15137; PWR7-NEXT: iselgt 3, 5, 4 15138; PWR7-NEXT: std 6, -8(1) 15139; PWR7-NEXT: std 3, -16(1) 15140; PWR7-NEXT: addi 3, 1, -16 15141; PWR7-NEXT: lxvd2x 34, 0, 3 15142; PWR7-NEXT: blr 15143; 15144; PWR8-LABEL: ugt_13_v2i64: 15145; PWR8: # %bb.0: 15146; PWR8-NEXT: addis 3, 2, .LCPI124_0@toc@ha 15147; PWR8-NEXT: vpopcntd 2, 2 15148; PWR8-NEXT: addi 3, 3, .LCPI124_0@toc@l 15149; PWR8-NEXT: lxvd2x 35, 0, 3 15150; PWR8-NEXT: vcmpgtud 2, 2, 3 15151; PWR8-NEXT: blr 15152; 15153; PWR9-LABEL: ugt_13_v2i64: 15154; PWR9: # %bb.0: 15155; PWR9-NEXT: addis 3, 2, .LCPI124_0@toc@ha 15156; PWR9-NEXT: vpopcntd 2, 2 15157; PWR9-NEXT: addi 3, 3, .LCPI124_0@toc@l 15158; PWR9-NEXT: lxv 35, 0(3) 15159; PWR9-NEXT: vcmpgtud 2, 2, 3 15160; PWR9-NEXT: blr 15161 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15162 %3 = icmp ugt <2 x i64> %2, <i64 13, i64 13> 15163 %4 = sext <2 x i1> %3 to <2 x i64> 15164 ret <2 x i64> %4 15165} 15166 15167define <2 x i64> @ult_14_v2i64(<2 x i64> %0) { 15168; PWR5-LABEL: ult_14_v2i64: 15169; PWR5: # %bb.0: 15170; PWR5-NEXT: lis 5, 21845 15171; PWR5-NEXT: lis 6, 13107 15172; PWR5-NEXT: ori 5, 5, 21845 15173; PWR5-NEXT: rotldi 8, 4, 63 15174; PWR5-NEXT: rotldi 9, 3, 63 15175; PWR5-NEXT: rldimi 5, 5, 32, 0 15176; PWR5-NEXT: and 8, 8, 5 15177; PWR5-NEXT: and 5, 9, 5 15178; PWR5-NEXT: ori 6, 6, 13107 15179; PWR5-NEXT: sub 3, 3, 5 15180; PWR5-NEXT: rldimi 6, 6, 32, 0 15181; PWR5-NEXT: sub 4, 4, 8 15182; PWR5-NEXT: and 8, 3, 6 15183; PWR5-NEXT: rotldi 3, 3, 62 15184; PWR5-NEXT: and 3, 3, 6 15185; PWR5-NEXT: lis 7, 3855 15186; PWR5-NEXT: and 5, 4, 6 15187; PWR5-NEXT: rotldi 4, 4, 62 15188; PWR5-NEXT: add 3, 8, 3 15189; PWR5-NEXT: lis 9, 257 15190; PWR5-NEXT: ori 7, 7, 3855 15191; PWR5-NEXT: and 4, 4, 6 15192; PWR5-NEXT: rldicl 6, 3, 60, 4 15193; PWR5-NEXT: ori 9, 9, 257 15194; PWR5-NEXT: rldimi 7, 7, 32, 0 15195; PWR5-NEXT: add 4, 5, 4 15196; PWR5-NEXT: add 3, 3, 6 15197; PWR5-NEXT: rldimi 9, 9, 32, 0 15198; PWR5-NEXT: rldicl 5, 4, 60, 4 15199; PWR5-NEXT: and 3, 3, 7 15200; PWR5-NEXT: add 4, 4, 5 15201; PWR5-NEXT: mulld 3, 3, 9 15202; PWR5-NEXT: and 4, 4, 7 15203; PWR5-NEXT: rldicl 3, 3, 8, 56 15204; PWR5-NEXT: li 5, 14 15205; PWR5-NEXT: mulld 4, 4, 9 15206; PWR5-NEXT: subc 6, 3, 5 15207; PWR5-NEXT: rldicl 4, 4, 8, 56 15208; PWR5-NEXT: subfe 3, 3, 3 15209; PWR5-NEXT: subc 5, 4, 5 15210; PWR5-NEXT: subfe 4, 4, 4 15211; PWR5-NEXT: blr 15212; 15213; PWR6-LABEL: ult_14_v2i64: 15214; PWR6: # %bb.0: 15215; PWR6-NEXT: lis 5, 21845 15216; PWR6-NEXT: lis 6, 13107 15217; PWR6-NEXT: ori 5, 5, 21845 15218; PWR6-NEXT: rotldi 8, 4, 63 15219; PWR6-NEXT: rotldi 9, 3, 63 15220; PWR6-NEXT: rldimi 5, 5, 32, 0 15221; PWR6-NEXT: and 8, 8, 5 15222; PWR6-NEXT: and 5, 9, 5 15223; PWR6-NEXT: ori 6, 6, 13107 15224; PWR6-NEXT: sub 3, 3, 5 15225; PWR6-NEXT: rldimi 6, 6, 32, 0 15226; PWR6-NEXT: sub 4, 4, 8 15227; PWR6-NEXT: and 8, 3, 6 15228; PWR6-NEXT: rotldi 3, 3, 62 15229; PWR6-NEXT: and 3, 3, 6 15230; PWR6-NEXT: lis 7, 3855 15231; PWR6-NEXT: and 5, 4, 6 15232; PWR6-NEXT: rotldi 4, 4, 62 15233; PWR6-NEXT: add 3, 8, 3 15234; PWR6-NEXT: lis 9, 257 15235; PWR6-NEXT: ori 7, 7, 3855 15236; PWR6-NEXT: and 4, 4, 6 15237; PWR6-NEXT: rldicl 6, 3, 60, 4 15238; PWR6-NEXT: ori 9, 9, 257 15239; PWR6-NEXT: rldimi 7, 7, 32, 0 15240; PWR6-NEXT: add 4, 5, 4 15241; PWR6-NEXT: add 3, 3, 6 15242; PWR6-NEXT: rldimi 9, 9, 32, 0 15243; PWR6-NEXT: rldicl 5, 4, 60, 4 15244; PWR6-NEXT: and 3, 3, 7 15245; PWR6-NEXT: add 4, 4, 5 15246; PWR6-NEXT: mulld 3, 3, 9 15247; PWR6-NEXT: and 4, 4, 7 15248; PWR6-NEXT: rldicl 3, 3, 8, 56 15249; PWR6-NEXT: li 5, 14 15250; PWR6-NEXT: mulld 4, 4, 9 15251; PWR6-NEXT: subc 6, 3, 5 15252; PWR6-NEXT: rldicl 4, 4, 8, 56 15253; PWR6-NEXT: subfe 3, 3, 3 15254; PWR6-NEXT: subc 5, 4, 5 15255; PWR6-NEXT: subfe 4, 4, 4 15256; PWR6-NEXT: blr 15257; 15258; PWR7-LABEL: ult_14_v2i64: 15259; PWR7: # %bb.0: 15260; PWR7-NEXT: addi 3, 1, -32 15261; PWR7-NEXT: li 5, -1 15262; PWR7-NEXT: stxvd2x 34, 0, 3 15263; PWR7-NEXT: ld 4, -24(1) 15264; PWR7-NEXT: ld 3, -32(1) 15265; PWR7-NEXT: popcntd 4, 4 15266; PWR7-NEXT: popcntd 3, 3 15267; PWR7-NEXT: cmpldi 4, 14 15268; PWR7-NEXT: li 4, 0 15269; PWR7-NEXT: isellt 6, 5, 4 15270; PWR7-NEXT: cmpldi 3, 14 15271; PWR7-NEXT: isellt 3, 5, 4 15272; PWR7-NEXT: std 6, -8(1) 15273; PWR7-NEXT: std 3, -16(1) 15274; PWR7-NEXT: addi 3, 1, -16 15275; PWR7-NEXT: lxvd2x 34, 0, 3 15276; PWR7-NEXT: blr 15277; 15278; PWR8-LABEL: ult_14_v2i64: 15279; PWR8: # %bb.0: 15280; PWR8-NEXT: addis 3, 2, .LCPI125_0@toc@ha 15281; PWR8-NEXT: vpopcntd 2, 2 15282; PWR8-NEXT: addi 3, 3, .LCPI125_0@toc@l 15283; PWR8-NEXT: lxvd2x 35, 0, 3 15284; PWR8-NEXT: vcmpgtud 2, 3, 2 15285; PWR8-NEXT: blr 15286; 15287; PWR9-LABEL: ult_14_v2i64: 15288; PWR9: # %bb.0: 15289; PWR9-NEXT: addis 3, 2, .LCPI125_0@toc@ha 15290; PWR9-NEXT: vpopcntd 2, 2 15291; PWR9-NEXT: addi 3, 3, .LCPI125_0@toc@l 15292; PWR9-NEXT: lxv 35, 0(3) 15293; PWR9-NEXT: vcmpgtud 2, 3, 2 15294; PWR9-NEXT: blr 15295 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15296 %3 = icmp ult <2 x i64> %2, <i64 14, i64 14> 15297 %4 = sext <2 x i1> %3 to <2 x i64> 15298 ret <2 x i64> %4 15299} 15300 15301define <2 x i64> @ugt_14_v2i64(<2 x i64> %0) { 15302; PWR5-LABEL: ugt_14_v2i64: 15303; PWR5: # %bb.0: 15304; PWR5-NEXT: lis 5, 21845 15305; PWR5-NEXT: lis 6, 13107 15306; PWR5-NEXT: ori 5, 5, 21845 15307; PWR5-NEXT: rotldi 8, 4, 63 15308; PWR5-NEXT: rotldi 9, 3, 63 15309; PWR5-NEXT: rldimi 5, 5, 32, 0 15310; PWR5-NEXT: and 8, 8, 5 15311; PWR5-NEXT: and 5, 9, 5 15312; PWR5-NEXT: ori 6, 6, 13107 15313; PWR5-NEXT: sub 3, 3, 5 15314; PWR5-NEXT: rldimi 6, 6, 32, 0 15315; PWR5-NEXT: sub 4, 4, 8 15316; PWR5-NEXT: and 8, 3, 6 15317; PWR5-NEXT: rotldi 3, 3, 62 15318; PWR5-NEXT: and 3, 3, 6 15319; PWR5-NEXT: lis 7, 3855 15320; PWR5-NEXT: and 5, 4, 6 15321; PWR5-NEXT: rotldi 4, 4, 62 15322; PWR5-NEXT: add 3, 8, 3 15323; PWR5-NEXT: lis 9, 257 15324; PWR5-NEXT: ori 7, 7, 3855 15325; PWR5-NEXT: and 4, 4, 6 15326; PWR5-NEXT: rldicl 6, 3, 60, 4 15327; PWR5-NEXT: ori 9, 9, 257 15328; PWR5-NEXT: rldimi 7, 7, 32, 0 15329; PWR5-NEXT: add 4, 5, 4 15330; PWR5-NEXT: add 3, 3, 6 15331; PWR5-NEXT: rldimi 9, 9, 32, 0 15332; PWR5-NEXT: rldicl 5, 4, 60, 4 15333; PWR5-NEXT: and 3, 3, 7 15334; PWR5-NEXT: add 4, 4, 5 15335; PWR5-NEXT: mulld 3, 3, 9 15336; PWR5-NEXT: and 4, 4, 7 15337; PWR5-NEXT: rldicl 3, 3, 8, 56 15338; PWR5-NEXT: mulld 4, 4, 9 15339; PWR5-NEXT: li 5, 14 15340; PWR5-NEXT: subfic 3, 3, 14 15341; PWR5-NEXT: rldicl 4, 4, 8, 56 15342; PWR5-NEXT: subfe 3, 5, 5 15343; PWR5-NEXT: subfic 4, 4, 14 15344; PWR5-NEXT: subfe 4, 5, 5 15345; PWR5-NEXT: blr 15346; 15347; PWR6-LABEL: ugt_14_v2i64: 15348; PWR6: # %bb.0: 15349; PWR6-NEXT: lis 5, 21845 15350; PWR6-NEXT: lis 6, 13107 15351; PWR6-NEXT: ori 5, 5, 21845 15352; PWR6-NEXT: rotldi 8, 4, 63 15353; PWR6-NEXT: rotldi 9, 3, 63 15354; PWR6-NEXT: rldimi 5, 5, 32, 0 15355; PWR6-NEXT: and 8, 8, 5 15356; PWR6-NEXT: and 5, 9, 5 15357; PWR6-NEXT: ori 6, 6, 13107 15358; PWR6-NEXT: sub 3, 3, 5 15359; PWR6-NEXT: rldimi 6, 6, 32, 0 15360; PWR6-NEXT: sub 4, 4, 8 15361; PWR6-NEXT: and 8, 3, 6 15362; PWR6-NEXT: rotldi 3, 3, 62 15363; PWR6-NEXT: and 3, 3, 6 15364; PWR6-NEXT: lis 7, 3855 15365; PWR6-NEXT: and 5, 4, 6 15366; PWR6-NEXT: rotldi 4, 4, 62 15367; PWR6-NEXT: add 3, 8, 3 15368; PWR6-NEXT: lis 9, 257 15369; PWR6-NEXT: ori 7, 7, 3855 15370; PWR6-NEXT: and 4, 4, 6 15371; PWR6-NEXT: rldicl 6, 3, 60, 4 15372; PWR6-NEXT: ori 9, 9, 257 15373; PWR6-NEXT: rldimi 7, 7, 32, 0 15374; PWR6-NEXT: add 4, 5, 4 15375; PWR6-NEXT: add 3, 3, 6 15376; PWR6-NEXT: rldimi 9, 9, 32, 0 15377; PWR6-NEXT: rldicl 5, 4, 60, 4 15378; PWR6-NEXT: and 3, 3, 7 15379; PWR6-NEXT: add 4, 4, 5 15380; PWR6-NEXT: mulld 3, 3, 9 15381; PWR6-NEXT: and 4, 4, 7 15382; PWR6-NEXT: rldicl 3, 3, 8, 56 15383; PWR6-NEXT: mulld 4, 4, 9 15384; PWR6-NEXT: li 5, 14 15385; PWR6-NEXT: subfic 3, 3, 14 15386; PWR6-NEXT: rldicl 4, 4, 8, 56 15387; PWR6-NEXT: subfe 3, 5, 5 15388; PWR6-NEXT: subfic 4, 4, 14 15389; PWR6-NEXT: subfe 4, 5, 5 15390; PWR6-NEXT: blr 15391; 15392; PWR7-LABEL: ugt_14_v2i64: 15393; PWR7: # %bb.0: 15394; PWR7-NEXT: addi 3, 1, -32 15395; PWR7-NEXT: li 5, -1 15396; PWR7-NEXT: stxvd2x 34, 0, 3 15397; PWR7-NEXT: ld 4, -24(1) 15398; PWR7-NEXT: ld 3, -32(1) 15399; PWR7-NEXT: popcntd 4, 4 15400; PWR7-NEXT: popcntd 3, 3 15401; PWR7-NEXT: cmpldi 4, 14 15402; PWR7-NEXT: li 4, 0 15403; PWR7-NEXT: iselgt 6, 5, 4 15404; PWR7-NEXT: cmpldi 3, 14 15405; PWR7-NEXT: iselgt 3, 5, 4 15406; PWR7-NEXT: std 6, -8(1) 15407; PWR7-NEXT: std 3, -16(1) 15408; PWR7-NEXT: addi 3, 1, -16 15409; PWR7-NEXT: lxvd2x 34, 0, 3 15410; PWR7-NEXT: blr 15411; 15412; PWR8-LABEL: ugt_14_v2i64: 15413; PWR8: # %bb.0: 15414; PWR8-NEXT: addis 3, 2, .LCPI126_0@toc@ha 15415; PWR8-NEXT: vpopcntd 2, 2 15416; PWR8-NEXT: addi 3, 3, .LCPI126_0@toc@l 15417; PWR8-NEXT: lxvd2x 35, 0, 3 15418; PWR8-NEXT: vcmpgtud 2, 2, 3 15419; PWR8-NEXT: blr 15420; 15421; PWR9-LABEL: ugt_14_v2i64: 15422; PWR9: # %bb.0: 15423; PWR9-NEXT: addis 3, 2, .LCPI126_0@toc@ha 15424; PWR9-NEXT: vpopcntd 2, 2 15425; PWR9-NEXT: addi 3, 3, .LCPI126_0@toc@l 15426; PWR9-NEXT: lxv 35, 0(3) 15427; PWR9-NEXT: vcmpgtud 2, 2, 3 15428; PWR9-NEXT: blr 15429 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15430 %3 = icmp ugt <2 x i64> %2, <i64 14, i64 14> 15431 %4 = sext <2 x i1> %3 to <2 x i64> 15432 ret <2 x i64> %4 15433} 15434 15435define <2 x i64> @ult_15_v2i64(<2 x i64> %0) { 15436; PWR5-LABEL: ult_15_v2i64: 15437; PWR5: # %bb.0: 15438; PWR5-NEXT: lis 5, 21845 15439; PWR5-NEXT: lis 6, 13107 15440; PWR5-NEXT: ori 5, 5, 21845 15441; PWR5-NEXT: rotldi 8, 4, 63 15442; PWR5-NEXT: rotldi 9, 3, 63 15443; PWR5-NEXT: rldimi 5, 5, 32, 0 15444; PWR5-NEXT: and 8, 8, 5 15445; PWR5-NEXT: and 5, 9, 5 15446; PWR5-NEXT: ori 6, 6, 13107 15447; PWR5-NEXT: sub 3, 3, 5 15448; PWR5-NEXT: rldimi 6, 6, 32, 0 15449; PWR5-NEXT: sub 4, 4, 8 15450; PWR5-NEXT: and 8, 3, 6 15451; PWR5-NEXT: rotldi 3, 3, 62 15452; PWR5-NEXT: and 3, 3, 6 15453; PWR5-NEXT: lis 7, 3855 15454; PWR5-NEXT: and 5, 4, 6 15455; PWR5-NEXT: rotldi 4, 4, 62 15456; PWR5-NEXT: add 3, 8, 3 15457; PWR5-NEXT: lis 9, 257 15458; PWR5-NEXT: ori 7, 7, 3855 15459; PWR5-NEXT: and 4, 4, 6 15460; PWR5-NEXT: rldicl 6, 3, 60, 4 15461; PWR5-NEXT: ori 9, 9, 257 15462; PWR5-NEXT: rldimi 7, 7, 32, 0 15463; PWR5-NEXT: add 4, 5, 4 15464; PWR5-NEXT: add 3, 3, 6 15465; PWR5-NEXT: rldimi 9, 9, 32, 0 15466; PWR5-NEXT: rldicl 5, 4, 60, 4 15467; PWR5-NEXT: and 3, 3, 7 15468; PWR5-NEXT: add 4, 4, 5 15469; PWR5-NEXT: mulld 3, 3, 9 15470; PWR5-NEXT: and 4, 4, 7 15471; PWR5-NEXT: rldicl 3, 3, 8, 56 15472; PWR5-NEXT: li 5, 15 15473; PWR5-NEXT: mulld 4, 4, 9 15474; PWR5-NEXT: subc 6, 3, 5 15475; PWR5-NEXT: rldicl 4, 4, 8, 56 15476; PWR5-NEXT: subfe 3, 3, 3 15477; PWR5-NEXT: subc 5, 4, 5 15478; PWR5-NEXT: subfe 4, 4, 4 15479; PWR5-NEXT: blr 15480; 15481; PWR6-LABEL: ult_15_v2i64: 15482; PWR6: # %bb.0: 15483; PWR6-NEXT: lis 5, 21845 15484; PWR6-NEXT: lis 6, 13107 15485; PWR6-NEXT: ori 5, 5, 21845 15486; PWR6-NEXT: rotldi 8, 4, 63 15487; PWR6-NEXT: rotldi 9, 3, 63 15488; PWR6-NEXT: rldimi 5, 5, 32, 0 15489; PWR6-NEXT: and 8, 8, 5 15490; PWR6-NEXT: and 5, 9, 5 15491; PWR6-NEXT: ori 6, 6, 13107 15492; PWR6-NEXT: sub 3, 3, 5 15493; PWR6-NEXT: rldimi 6, 6, 32, 0 15494; PWR6-NEXT: sub 4, 4, 8 15495; PWR6-NEXT: and 8, 3, 6 15496; PWR6-NEXT: rotldi 3, 3, 62 15497; PWR6-NEXT: and 3, 3, 6 15498; PWR6-NEXT: lis 7, 3855 15499; PWR6-NEXT: and 5, 4, 6 15500; PWR6-NEXT: rotldi 4, 4, 62 15501; PWR6-NEXT: add 3, 8, 3 15502; PWR6-NEXT: lis 9, 257 15503; PWR6-NEXT: ori 7, 7, 3855 15504; PWR6-NEXT: and 4, 4, 6 15505; PWR6-NEXT: rldicl 6, 3, 60, 4 15506; PWR6-NEXT: ori 9, 9, 257 15507; PWR6-NEXT: rldimi 7, 7, 32, 0 15508; PWR6-NEXT: add 4, 5, 4 15509; PWR6-NEXT: add 3, 3, 6 15510; PWR6-NEXT: rldimi 9, 9, 32, 0 15511; PWR6-NEXT: rldicl 5, 4, 60, 4 15512; PWR6-NEXT: and 3, 3, 7 15513; PWR6-NEXT: add 4, 4, 5 15514; PWR6-NEXT: mulld 3, 3, 9 15515; PWR6-NEXT: and 4, 4, 7 15516; PWR6-NEXT: rldicl 3, 3, 8, 56 15517; PWR6-NEXT: li 5, 15 15518; PWR6-NEXT: mulld 4, 4, 9 15519; PWR6-NEXT: subc 6, 3, 5 15520; PWR6-NEXT: rldicl 4, 4, 8, 56 15521; PWR6-NEXT: subfe 3, 3, 3 15522; PWR6-NEXT: subc 5, 4, 5 15523; PWR6-NEXT: subfe 4, 4, 4 15524; PWR6-NEXT: blr 15525; 15526; PWR7-LABEL: ult_15_v2i64: 15527; PWR7: # %bb.0: 15528; PWR7-NEXT: addi 3, 1, -32 15529; PWR7-NEXT: li 5, -1 15530; PWR7-NEXT: stxvd2x 34, 0, 3 15531; PWR7-NEXT: ld 4, -24(1) 15532; PWR7-NEXT: ld 3, -32(1) 15533; PWR7-NEXT: popcntd 4, 4 15534; PWR7-NEXT: popcntd 3, 3 15535; PWR7-NEXT: cmpldi 4, 15 15536; PWR7-NEXT: li 4, 0 15537; PWR7-NEXT: isellt 6, 5, 4 15538; PWR7-NEXT: cmpldi 3, 15 15539; PWR7-NEXT: isellt 3, 5, 4 15540; PWR7-NEXT: std 6, -8(1) 15541; PWR7-NEXT: std 3, -16(1) 15542; PWR7-NEXT: addi 3, 1, -16 15543; PWR7-NEXT: lxvd2x 34, 0, 3 15544; PWR7-NEXT: blr 15545; 15546; PWR8-LABEL: ult_15_v2i64: 15547; PWR8: # %bb.0: 15548; PWR8-NEXT: addis 3, 2, .LCPI127_0@toc@ha 15549; PWR8-NEXT: vpopcntd 2, 2 15550; PWR8-NEXT: addi 3, 3, .LCPI127_0@toc@l 15551; PWR8-NEXT: lxvd2x 35, 0, 3 15552; PWR8-NEXT: vcmpgtud 2, 3, 2 15553; PWR8-NEXT: blr 15554; 15555; PWR9-LABEL: ult_15_v2i64: 15556; PWR9: # %bb.0: 15557; PWR9-NEXT: addis 3, 2, .LCPI127_0@toc@ha 15558; PWR9-NEXT: vpopcntd 2, 2 15559; PWR9-NEXT: addi 3, 3, .LCPI127_0@toc@l 15560; PWR9-NEXT: lxv 35, 0(3) 15561; PWR9-NEXT: vcmpgtud 2, 3, 2 15562; PWR9-NEXT: blr 15563 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15564 %3 = icmp ult <2 x i64> %2, <i64 15, i64 15> 15565 %4 = sext <2 x i1> %3 to <2 x i64> 15566 ret <2 x i64> %4 15567} 15568 15569define <2 x i64> @ugt_15_v2i64(<2 x i64> %0) { 15570; PWR5-LABEL: ugt_15_v2i64: 15571; PWR5: # %bb.0: 15572; PWR5-NEXT: lis 5, 21845 15573; PWR5-NEXT: lis 6, 13107 15574; PWR5-NEXT: ori 5, 5, 21845 15575; PWR5-NEXT: rotldi 8, 4, 63 15576; PWR5-NEXT: rotldi 9, 3, 63 15577; PWR5-NEXT: rldimi 5, 5, 32, 0 15578; PWR5-NEXT: and 8, 8, 5 15579; PWR5-NEXT: and 5, 9, 5 15580; PWR5-NEXT: ori 6, 6, 13107 15581; PWR5-NEXT: sub 3, 3, 5 15582; PWR5-NEXT: rldimi 6, 6, 32, 0 15583; PWR5-NEXT: sub 4, 4, 8 15584; PWR5-NEXT: and 8, 3, 6 15585; PWR5-NEXT: rotldi 3, 3, 62 15586; PWR5-NEXT: and 3, 3, 6 15587; PWR5-NEXT: lis 7, 3855 15588; PWR5-NEXT: and 5, 4, 6 15589; PWR5-NEXT: rotldi 4, 4, 62 15590; PWR5-NEXT: add 3, 8, 3 15591; PWR5-NEXT: lis 9, 257 15592; PWR5-NEXT: ori 7, 7, 3855 15593; PWR5-NEXT: and 4, 4, 6 15594; PWR5-NEXT: rldicl 6, 3, 60, 4 15595; PWR5-NEXT: ori 9, 9, 257 15596; PWR5-NEXT: rldimi 7, 7, 32, 0 15597; PWR5-NEXT: add 4, 5, 4 15598; PWR5-NEXT: add 3, 3, 6 15599; PWR5-NEXT: rldimi 9, 9, 32, 0 15600; PWR5-NEXT: rldicl 5, 4, 60, 4 15601; PWR5-NEXT: and 3, 3, 7 15602; PWR5-NEXT: add 4, 4, 5 15603; PWR5-NEXT: mulld 3, 3, 9 15604; PWR5-NEXT: and 4, 4, 7 15605; PWR5-NEXT: rldicl 3, 3, 8, 56 15606; PWR5-NEXT: mulld 4, 4, 9 15607; PWR5-NEXT: li 5, 15 15608; PWR5-NEXT: subfic 3, 3, 15 15609; PWR5-NEXT: rldicl 4, 4, 8, 56 15610; PWR5-NEXT: subfe 3, 5, 5 15611; PWR5-NEXT: subfic 4, 4, 15 15612; PWR5-NEXT: subfe 4, 5, 5 15613; PWR5-NEXT: blr 15614; 15615; PWR6-LABEL: ugt_15_v2i64: 15616; PWR6: # %bb.0: 15617; PWR6-NEXT: lis 5, 21845 15618; PWR6-NEXT: lis 6, 13107 15619; PWR6-NEXT: ori 5, 5, 21845 15620; PWR6-NEXT: rotldi 8, 4, 63 15621; PWR6-NEXT: rotldi 9, 3, 63 15622; PWR6-NEXT: rldimi 5, 5, 32, 0 15623; PWR6-NEXT: and 8, 8, 5 15624; PWR6-NEXT: and 5, 9, 5 15625; PWR6-NEXT: ori 6, 6, 13107 15626; PWR6-NEXT: sub 3, 3, 5 15627; PWR6-NEXT: rldimi 6, 6, 32, 0 15628; PWR6-NEXT: sub 4, 4, 8 15629; PWR6-NEXT: and 8, 3, 6 15630; PWR6-NEXT: rotldi 3, 3, 62 15631; PWR6-NEXT: and 3, 3, 6 15632; PWR6-NEXT: lis 7, 3855 15633; PWR6-NEXT: and 5, 4, 6 15634; PWR6-NEXT: rotldi 4, 4, 62 15635; PWR6-NEXT: add 3, 8, 3 15636; PWR6-NEXT: lis 9, 257 15637; PWR6-NEXT: ori 7, 7, 3855 15638; PWR6-NEXT: and 4, 4, 6 15639; PWR6-NEXT: rldicl 6, 3, 60, 4 15640; PWR6-NEXT: ori 9, 9, 257 15641; PWR6-NEXT: rldimi 7, 7, 32, 0 15642; PWR6-NEXT: add 4, 5, 4 15643; PWR6-NEXT: add 3, 3, 6 15644; PWR6-NEXT: rldimi 9, 9, 32, 0 15645; PWR6-NEXT: rldicl 5, 4, 60, 4 15646; PWR6-NEXT: and 3, 3, 7 15647; PWR6-NEXT: add 4, 4, 5 15648; PWR6-NEXT: mulld 3, 3, 9 15649; PWR6-NEXT: and 4, 4, 7 15650; PWR6-NEXT: rldicl 3, 3, 8, 56 15651; PWR6-NEXT: mulld 4, 4, 9 15652; PWR6-NEXT: li 5, 15 15653; PWR6-NEXT: subfic 3, 3, 15 15654; PWR6-NEXT: rldicl 4, 4, 8, 56 15655; PWR6-NEXT: subfe 3, 5, 5 15656; PWR6-NEXT: subfic 4, 4, 15 15657; PWR6-NEXT: subfe 4, 5, 5 15658; PWR6-NEXT: blr 15659; 15660; PWR7-LABEL: ugt_15_v2i64: 15661; PWR7: # %bb.0: 15662; PWR7-NEXT: addi 3, 1, -32 15663; PWR7-NEXT: li 5, -1 15664; PWR7-NEXT: stxvd2x 34, 0, 3 15665; PWR7-NEXT: ld 4, -24(1) 15666; PWR7-NEXT: ld 3, -32(1) 15667; PWR7-NEXT: popcntd 4, 4 15668; PWR7-NEXT: popcntd 3, 3 15669; PWR7-NEXT: cmpldi 4, 15 15670; PWR7-NEXT: li 4, 0 15671; PWR7-NEXT: iselgt 6, 5, 4 15672; PWR7-NEXT: cmpldi 3, 15 15673; PWR7-NEXT: iselgt 3, 5, 4 15674; PWR7-NEXT: std 6, -8(1) 15675; PWR7-NEXT: std 3, -16(1) 15676; PWR7-NEXT: addi 3, 1, -16 15677; PWR7-NEXT: lxvd2x 34, 0, 3 15678; PWR7-NEXT: blr 15679; 15680; PWR8-LABEL: ugt_15_v2i64: 15681; PWR8: # %bb.0: 15682; PWR8-NEXT: addis 3, 2, .LCPI128_0@toc@ha 15683; PWR8-NEXT: vpopcntd 2, 2 15684; PWR8-NEXT: addi 3, 3, .LCPI128_0@toc@l 15685; PWR8-NEXT: lxvd2x 35, 0, 3 15686; PWR8-NEXT: vcmpgtud 2, 2, 3 15687; PWR8-NEXT: blr 15688; 15689; PWR9-LABEL: ugt_15_v2i64: 15690; PWR9: # %bb.0: 15691; PWR9-NEXT: addis 3, 2, .LCPI128_0@toc@ha 15692; PWR9-NEXT: vpopcntd 2, 2 15693; PWR9-NEXT: addi 3, 3, .LCPI128_0@toc@l 15694; PWR9-NEXT: lxv 35, 0(3) 15695; PWR9-NEXT: vcmpgtud 2, 2, 3 15696; PWR9-NEXT: blr 15697 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15698 %3 = icmp ugt <2 x i64> %2, <i64 15, i64 15> 15699 %4 = sext <2 x i1> %3 to <2 x i64> 15700 ret <2 x i64> %4 15701} 15702 15703define <2 x i64> @ult_16_v2i64(<2 x i64> %0) { 15704; PWR5-LABEL: ult_16_v2i64: 15705; PWR5: # %bb.0: 15706; PWR5-NEXT: lis 5, 21845 15707; PWR5-NEXT: lis 6, 13107 15708; PWR5-NEXT: ori 5, 5, 21845 15709; PWR5-NEXT: rotldi 8, 4, 63 15710; PWR5-NEXT: rotldi 9, 3, 63 15711; PWR5-NEXT: rldimi 5, 5, 32, 0 15712; PWR5-NEXT: and 8, 8, 5 15713; PWR5-NEXT: and 5, 9, 5 15714; PWR5-NEXT: ori 6, 6, 13107 15715; PWR5-NEXT: sub 3, 3, 5 15716; PWR5-NEXT: rldimi 6, 6, 32, 0 15717; PWR5-NEXT: sub 4, 4, 8 15718; PWR5-NEXT: and 8, 3, 6 15719; PWR5-NEXT: rotldi 3, 3, 62 15720; PWR5-NEXT: and 3, 3, 6 15721; PWR5-NEXT: lis 7, 3855 15722; PWR5-NEXT: and 5, 4, 6 15723; PWR5-NEXT: rotldi 4, 4, 62 15724; PWR5-NEXT: add 3, 8, 3 15725; PWR5-NEXT: lis 9, 257 15726; PWR5-NEXT: ori 7, 7, 3855 15727; PWR5-NEXT: and 4, 4, 6 15728; PWR5-NEXT: rldicl 6, 3, 60, 4 15729; PWR5-NEXT: ori 9, 9, 257 15730; PWR5-NEXT: rldimi 7, 7, 32, 0 15731; PWR5-NEXT: add 4, 5, 4 15732; PWR5-NEXT: add 3, 3, 6 15733; PWR5-NEXT: rldimi 9, 9, 32, 0 15734; PWR5-NEXT: rldicl 5, 4, 60, 4 15735; PWR5-NEXT: and 3, 3, 7 15736; PWR5-NEXT: add 4, 4, 5 15737; PWR5-NEXT: mulld 3, 3, 9 15738; PWR5-NEXT: and 4, 4, 7 15739; PWR5-NEXT: rldicl 3, 3, 8, 56 15740; PWR5-NEXT: li 5, 16 15741; PWR5-NEXT: mulld 4, 4, 9 15742; PWR5-NEXT: subc 6, 3, 5 15743; PWR5-NEXT: rldicl 4, 4, 8, 56 15744; PWR5-NEXT: subfe 3, 3, 3 15745; PWR5-NEXT: subc 5, 4, 5 15746; PWR5-NEXT: subfe 4, 4, 4 15747; PWR5-NEXT: blr 15748; 15749; PWR6-LABEL: ult_16_v2i64: 15750; PWR6: # %bb.0: 15751; PWR6-NEXT: lis 5, 21845 15752; PWR6-NEXT: lis 6, 13107 15753; PWR6-NEXT: ori 5, 5, 21845 15754; PWR6-NEXT: rotldi 8, 4, 63 15755; PWR6-NEXT: rotldi 9, 3, 63 15756; PWR6-NEXT: rldimi 5, 5, 32, 0 15757; PWR6-NEXT: and 8, 8, 5 15758; PWR6-NEXT: and 5, 9, 5 15759; PWR6-NEXT: ori 6, 6, 13107 15760; PWR6-NEXT: sub 3, 3, 5 15761; PWR6-NEXT: rldimi 6, 6, 32, 0 15762; PWR6-NEXT: sub 4, 4, 8 15763; PWR6-NEXT: and 8, 3, 6 15764; PWR6-NEXT: rotldi 3, 3, 62 15765; PWR6-NEXT: and 3, 3, 6 15766; PWR6-NEXT: lis 7, 3855 15767; PWR6-NEXT: and 5, 4, 6 15768; PWR6-NEXT: rotldi 4, 4, 62 15769; PWR6-NEXT: add 3, 8, 3 15770; PWR6-NEXT: lis 9, 257 15771; PWR6-NEXT: ori 7, 7, 3855 15772; PWR6-NEXT: and 4, 4, 6 15773; PWR6-NEXT: rldicl 6, 3, 60, 4 15774; PWR6-NEXT: ori 9, 9, 257 15775; PWR6-NEXT: rldimi 7, 7, 32, 0 15776; PWR6-NEXT: add 4, 5, 4 15777; PWR6-NEXT: add 3, 3, 6 15778; PWR6-NEXT: rldimi 9, 9, 32, 0 15779; PWR6-NEXT: rldicl 5, 4, 60, 4 15780; PWR6-NEXT: and 3, 3, 7 15781; PWR6-NEXT: add 4, 4, 5 15782; PWR6-NEXT: mulld 3, 3, 9 15783; PWR6-NEXT: and 4, 4, 7 15784; PWR6-NEXT: rldicl 3, 3, 8, 56 15785; PWR6-NEXT: li 5, 16 15786; PWR6-NEXT: mulld 4, 4, 9 15787; PWR6-NEXT: subc 6, 3, 5 15788; PWR6-NEXT: rldicl 4, 4, 8, 56 15789; PWR6-NEXT: subfe 3, 3, 3 15790; PWR6-NEXT: subc 5, 4, 5 15791; PWR6-NEXT: subfe 4, 4, 4 15792; PWR6-NEXT: blr 15793; 15794; PWR7-LABEL: ult_16_v2i64: 15795; PWR7: # %bb.0: 15796; PWR7-NEXT: addi 3, 1, -32 15797; PWR7-NEXT: li 5, -1 15798; PWR7-NEXT: stxvd2x 34, 0, 3 15799; PWR7-NEXT: ld 4, -24(1) 15800; PWR7-NEXT: ld 3, -32(1) 15801; PWR7-NEXT: popcntd 4, 4 15802; PWR7-NEXT: popcntd 3, 3 15803; PWR7-NEXT: cmpldi 4, 16 15804; PWR7-NEXT: li 4, 0 15805; PWR7-NEXT: isellt 6, 5, 4 15806; PWR7-NEXT: cmpldi 3, 16 15807; PWR7-NEXT: isellt 3, 5, 4 15808; PWR7-NEXT: std 6, -8(1) 15809; PWR7-NEXT: std 3, -16(1) 15810; PWR7-NEXT: addi 3, 1, -16 15811; PWR7-NEXT: lxvd2x 34, 0, 3 15812; PWR7-NEXT: blr 15813; 15814; PWR8-LABEL: ult_16_v2i64: 15815; PWR8: # %bb.0: 15816; PWR8-NEXT: addis 3, 2, .LCPI129_0@toc@ha 15817; PWR8-NEXT: vpopcntd 2, 2 15818; PWR8-NEXT: addi 3, 3, .LCPI129_0@toc@l 15819; PWR8-NEXT: lxvd2x 35, 0, 3 15820; PWR8-NEXT: vcmpgtud 2, 3, 2 15821; PWR8-NEXT: blr 15822; 15823; PWR9-LABEL: ult_16_v2i64: 15824; PWR9: # %bb.0: 15825; PWR9-NEXT: addis 3, 2, .LCPI129_0@toc@ha 15826; PWR9-NEXT: vpopcntd 2, 2 15827; PWR9-NEXT: addi 3, 3, .LCPI129_0@toc@l 15828; PWR9-NEXT: lxv 35, 0(3) 15829; PWR9-NEXT: vcmpgtud 2, 3, 2 15830; PWR9-NEXT: blr 15831 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15832 %3 = icmp ult <2 x i64> %2, <i64 16, i64 16> 15833 %4 = sext <2 x i1> %3 to <2 x i64> 15834 ret <2 x i64> %4 15835} 15836 15837define <2 x i64> @ugt_16_v2i64(<2 x i64> %0) { 15838; PWR5-LABEL: ugt_16_v2i64: 15839; PWR5: # %bb.0: 15840; PWR5-NEXT: lis 5, 21845 15841; PWR5-NEXT: lis 6, 13107 15842; PWR5-NEXT: ori 5, 5, 21845 15843; PWR5-NEXT: rotldi 8, 4, 63 15844; PWR5-NEXT: rotldi 9, 3, 63 15845; PWR5-NEXT: rldimi 5, 5, 32, 0 15846; PWR5-NEXT: and 8, 8, 5 15847; PWR5-NEXT: and 5, 9, 5 15848; PWR5-NEXT: ori 6, 6, 13107 15849; PWR5-NEXT: sub 3, 3, 5 15850; PWR5-NEXT: rldimi 6, 6, 32, 0 15851; PWR5-NEXT: sub 4, 4, 8 15852; PWR5-NEXT: and 8, 3, 6 15853; PWR5-NEXT: rotldi 3, 3, 62 15854; PWR5-NEXT: and 3, 3, 6 15855; PWR5-NEXT: lis 7, 3855 15856; PWR5-NEXT: and 5, 4, 6 15857; PWR5-NEXT: rotldi 4, 4, 62 15858; PWR5-NEXT: add 3, 8, 3 15859; PWR5-NEXT: lis 9, 257 15860; PWR5-NEXT: ori 7, 7, 3855 15861; PWR5-NEXT: and 4, 4, 6 15862; PWR5-NEXT: rldicl 6, 3, 60, 4 15863; PWR5-NEXT: ori 9, 9, 257 15864; PWR5-NEXT: rldimi 7, 7, 32, 0 15865; PWR5-NEXT: add 4, 5, 4 15866; PWR5-NEXT: add 3, 3, 6 15867; PWR5-NEXT: rldimi 9, 9, 32, 0 15868; PWR5-NEXT: rldicl 5, 4, 60, 4 15869; PWR5-NEXT: and 3, 3, 7 15870; PWR5-NEXT: add 4, 4, 5 15871; PWR5-NEXT: mulld 3, 3, 9 15872; PWR5-NEXT: and 4, 4, 7 15873; PWR5-NEXT: rldicl 3, 3, 8, 56 15874; PWR5-NEXT: mulld 4, 4, 9 15875; PWR5-NEXT: li 5, 16 15876; PWR5-NEXT: subfic 3, 3, 16 15877; PWR5-NEXT: rldicl 4, 4, 8, 56 15878; PWR5-NEXT: subfe 3, 5, 5 15879; PWR5-NEXT: subfic 4, 4, 16 15880; PWR5-NEXT: subfe 4, 5, 5 15881; PWR5-NEXT: blr 15882; 15883; PWR6-LABEL: ugt_16_v2i64: 15884; PWR6: # %bb.0: 15885; PWR6-NEXT: lis 5, 21845 15886; PWR6-NEXT: lis 6, 13107 15887; PWR6-NEXT: ori 5, 5, 21845 15888; PWR6-NEXT: rotldi 8, 4, 63 15889; PWR6-NEXT: rotldi 9, 3, 63 15890; PWR6-NEXT: rldimi 5, 5, 32, 0 15891; PWR6-NEXT: and 8, 8, 5 15892; PWR6-NEXT: and 5, 9, 5 15893; PWR6-NEXT: ori 6, 6, 13107 15894; PWR6-NEXT: sub 3, 3, 5 15895; PWR6-NEXT: rldimi 6, 6, 32, 0 15896; PWR6-NEXT: sub 4, 4, 8 15897; PWR6-NEXT: and 8, 3, 6 15898; PWR6-NEXT: rotldi 3, 3, 62 15899; PWR6-NEXT: and 3, 3, 6 15900; PWR6-NEXT: lis 7, 3855 15901; PWR6-NEXT: and 5, 4, 6 15902; PWR6-NEXT: rotldi 4, 4, 62 15903; PWR6-NEXT: add 3, 8, 3 15904; PWR6-NEXT: lis 9, 257 15905; PWR6-NEXT: ori 7, 7, 3855 15906; PWR6-NEXT: and 4, 4, 6 15907; PWR6-NEXT: rldicl 6, 3, 60, 4 15908; PWR6-NEXT: ori 9, 9, 257 15909; PWR6-NEXT: rldimi 7, 7, 32, 0 15910; PWR6-NEXT: add 4, 5, 4 15911; PWR6-NEXT: add 3, 3, 6 15912; PWR6-NEXT: rldimi 9, 9, 32, 0 15913; PWR6-NEXT: rldicl 5, 4, 60, 4 15914; PWR6-NEXT: and 3, 3, 7 15915; PWR6-NEXT: add 4, 4, 5 15916; PWR6-NEXT: mulld 3, 3, 9 15917; PWR6-NEXT: and 4, 4, 7 15918; PWR6-NEXT: rldicl 3, 3, 8, 56 15919; PWR6-NEXT: mulld 4, 4, 9 15920; PWR6-NEXT: li 5, 16 15921; PWR6-NEXT: subfic 3, 3, 16 15922; PWR6-NEXT: rldicl 4, 4, 8, 56 15923; PWR6-NEXT: subfe 3, 5, 5 15924; PWR6-NEXT: subfic 4, 4, 16 15925; PWR6-NEXT: subfe 4, 5, 5 15926; PWR6-NEXT: blr 15927; 15928; PWR7-LABEL: ugt_16_v2i64: 15929; PWR7: # %bb.0: 15930; PWR7-NEXT: addi 3, 1, -32 15931; PWR7-NEXT: li 5, -1 15932; PWR7-NEXT: stxvd2x 34, 0, 3 15933; PWR7-NEXT: ld 4, -24(1) 15934; PWR7-NEXT: ld 3, -32(1) 15935; PWR7-NEXT: popcntd 4, 4 15936; PWR7-NEXT: popcntd 3, 3 15937; PWR7-NEXT: cmpldi 4, 16 15938; PWR7-NEXT: li 4, 0 15939; PWR7-NEXT: iselgt 6, 5, 4 15940; PWR7-NEXT: cmpldi 3, 16 15941; PWR7-NEXT: iselgt 3, 5, 4 15942; PWR7-NEXT: std 6, -8(1) 15943; PWR7-NEXT: std 3, -16(1) 15944; PWR7-NEXT: addi 3, 1, -16 15945; PWR7-NEXT: lxvd2x 34, 0, 3 15946; PWR7-NEXT: blr 15947; 15948; PWR8-LABEL: ugt_16_v2i64: 15949; PWR8: # %bb.0: 15950; PWR8-NEXT: addis 3, 2, .LCPI130_0@toc@ha 15951; PWR8-NEXT: vpopcntd 2, 2 15952; PWR8-NEXT: addi 3, 3, .LCPI130_0@toc@l 15953; PWR8-NEXT: lxvd2x 35, 0, 3 15954; PWR8-NEXT: vcmpgtud 2, 2, 3 15955; PWR8-NEXT: blr 15956; 15957; PWR9-LABEL: ugt_16_v2i64: 15958; PWR9: # %bb.0: 15959; PWR9-NEXT: addis 3, 2, .LCPI130_0@toc@ha 15960; PWR9-NEXT: vpopcntd 2, 2 15961; PWR9-NEXT: addi 3, 3, .LCPI130_0@toc@l 15962; PWR9-NEXT: lxv 35, 0(3) 15963; PWR9-NEXT: vcmpgtud 2, 2, 3 15964; PWR9-NEXT: blr 15965 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 15966 %3 = icmp ugt <2 x i64> %2, <i64 16, i64 16> 15967 %4 = sext <2 x i1> %3 to <2 x i64> 15968 ret <2 x i64> %4 15969} 15970 15971define <2 x i64> @ult_17_v2i64(<2 x i64> %0) { 15972; PWR5-LABEL: ult_17_v2i64: 15973; PWR5: # %bb.0: 15974; PWR5-NEXT: lis 5, 21845 15975; PWR5-NEXT: lis 6, 13107 15976; PWR5-NEXT: ori 5, 5, 21845 15977; PWR5-NEXT: rotldi 8, 4, 63 15978; PWR5-NEXT: rotldi 9, 3, 63 15979; PWR5-NEXT: rldimi 5, 5, 32, 0 15980; PWR5-NEXT: and 8, 8, 5 15981; PWR5-NEXT: and 5, 9, 5 15982; PWR5-NEXT: ori 6, 6, 13107 15983; PWR5-NEXT: sub 3, 3, 5 15984; PWR5-NEXT: rldimi 6, 6, 32, 0 15985; PWR5-NEXT: sub 4, 4, 8 15986; PWR5-NEXT: and 8, 3, 6 15987; PWR5-NEXT: rotldi 3, 3, 62 15988; PWR5-NEXT: and 3, 3, 6 15989; PWR5-NEXT: lis 7, 3855 15990; PWR5-NEXT: and 5, 4, 6 15991; PWR5-NEXT: rotldi 4, 4, 62 15992; PWR5-NEXT: add 3, 8, 3 15993; PWR5-NEXT: lis 9, 257 15994; PWR5-NEXT: ori 7, 7, 3855 15995; PWR5-NEXT: and 4, 4, 6 15996; PWR5-NEXT: rldicl 6, 3, 60, 4 15997; PWR5-NEXT: ori 9, 9, 257 15998; PWR5-NEXT: rldimi 7, 7, 32, 0 15999; PWR5-NEXT: add 4, 5, 4 16000; PWR5-NEXT: add 3, 3, 6 16001; PWR5-NEXT: rldimi 9, 9, 32, 0 16002; PWR5-NEXT: rldicl 5, 4, 60, 4 16003; PWR5-NEXT: and 3, 3, 7 16004; PWR5-NEXT: add 4, 4, 5 16005; PWR5-NEXT: mulld 3, 3, 9 16006; PWR5-NEXT: and 4, 4, 7 16007; PWR5-NEXT: rldicl 3, 3, 8, 56 16008; PWR5-NEXT: li 5, 17 16009; PWR5-NEXT: mulld 4, 4, 9 16010; PWR5-NEXT: subc 6, 3, 5 16011; PWR5-NEXT: rldicl 4, 4, 8, 56 16012; PWR5-NEXT: subfe 3, 3, 3 16013; PWR5-NEXT: subc 5, 4, 5 16014; PWR5-NEXT: subfe 4, 4, 4 16015; PWR5-NEXT: blr 16016; 16017; PWR6-LABEL: ult_17_v2i64: 16018; PWR6: # %bb.0: 16019; PWR6-NEXT: lis 5, 21845 16020; PWR6-NEXT: lis 6, 13107 16021; PWR6-NEXT: ori 5, 5, 21845 16022; PWR6-NEXT: rotldi 8, 4, 63 16023; PWR6-NEXT: rotldi 9, 3, 63 16024; PWR6-NEXT: rldimi 5, 5, 32, 0 16025; PWR6-NEXT: and 8, 8, 5 16026; PWR6-NEXT: and 5, 9, 5 16027; PWR6-NEXT: ori 6, 6, 13107 16028; PWR6-NEXT: sub 3, 3, 5 16029; PWR6-NEXT: rldimi 6, 6, 32, 0 16030; PWR6-NEXT: sub 4, 4, 8 16031; PWR6-NEXT: and 8, 3, 6 16032; PWR6-NEXT: rotldi 3, 3, 62 16033; PWR6-NEXT: and 3, 3, 6 16034; PWR6-NEXT: lis 7, 3855 16035; PWR6-NEXT: and 5, 4, 6 16036; PWR6-NEXT: rotldi 4, 4, 62 16037; PWR6-NEXT: add 3, 8, 3 16038; PWR6-NEXT: lis 9, 257 16039; PWR6-NEXT: ori 7, 7, 3855 16040; PWR6-NEXT: and 4, 4, 6 16041; PWR6-NEXT: rldicl 6, 3, 60, 4 16042; PWR6-NEXT: ori 9, 9, 257 16043; PWR6-NEXT: rldimi 7, 7, 32, 0 16044; PWR6-NEXT: add 4, 5, 4 16045; PWR6-NEXT: add 3, 3, 6 16046; PWR6-NEXT: rldimi 9, 9, 32, 0 16047; PWR6-NEXT: rldicl 5, 4, 60, 4 16048; PWR6-NEXT: and 3, 3, 7 16049; PWR6-NEXT: add 4, 4, 5 16050; PWR6-NEXT: mulld 3, 3, 9 16051; PWR6-NEXT: and 4, 4, 7 16052; PWR6-NEXT: rldicl 3, 3, 8, 56 16053; PWR6-NEXT: li 5, 17 16054; PWR6-NEXT: mulld 4, 4, 9 16055; PWR6-NEXT: subc 6, 3, 5 16056; PWR6-NEXT: rldicl 4, 4, 8, 56 16057; PWR6-NEXT: subfe 3, 3, 3 16058; PWR6-NEXT: subc 5, 4, 5 16059; PWR6-NEXT: subfe 4, 4, 4 16060; PWR6-NEXT: blr 16061; 16062; PWR7-LABEL: ult_17_v2i64: 16063; PWR7: # %bb.0: 16064; PWR7-NEXT: addi 3, 1, -32 16065; PWR7-NEXT: li 5, -1 16066; PWR7-NEXT: stxvd2x 34, 0, 3 16067; PWR7-NEXT: ld 4, -24(1) 16068; PWR7-NEXT: ld 3, -32(1) 16069; PWR7-NEXT: popcntd 4, 4 16070; PWR7-NEXT: popcntd 3, 3 16071; PWR7-NEXT: cmpldi 4, 17 16072; PWR7-NEXT: li 4, 0 16073; PWR7-NEXT: isellt 6, 5, 4 16074; PWR7-NEXT: cmpldi 3, 17 16075; PWR7-NEXT: isellt 3, 5, 4 16076; PWR7-NEXT: std 6, -8(1) 16077; PWR7-NEXT: std 3, -16(1) 16078; PWR7-NEXT: addi 3, 1, -16 16079; PWR7-NEXT: lxvd2x 34, 0, 3 16080; PWR7-NEXT: blr 16081; 16082; PWR8-LABEL: ult_17_v2i64: 16083; PWR8: # %bb.0: 16084; PWR8-NEXT: addis 3, 2, .LCPI131_0@toc@ha 16085; PWR8-NEXT: vpopcntd 2, 2 16086; PWR8-NEXT: addi 3, 3, .LCPI131_0@toc@l 16087; PWR8-NEXT: lxvd2x 35, 0, 3 16088; PWR8-NEXT: vcmpgtud 2, 3, 2 16089; PWR8-NEXT: blr 16090; 16091; PWR9-LABEL: ult_17_v2i64: 16092; PWR9: # %bb.0: 16093; PWR9-NEXT: addis 3, 2, .LCPI131_0@toc@ha 16094; PWR9-NEXT: vpopcntd 2, 2 16095; PWR9-NEXT: addi 3, 3, .LCPI131_0@toc@l 16096; PWR9-NEXT: lxv 35, 0(3) 16097; PWR9-NEXT: vcmpgtud 2, 3, 2 16098; PWR9-NEXT: blr 16099 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16100 %3 = icmp ult <2 x i64> %2, <i64 17, i64 17> 16101 %4 = sext <2 x i1> %3 to <2 x i64> 16102 ret <2 x i64> %4 16103} 16104 16105define <2 x i64> @ugt_17_v2i64(<2 x i64> %0) { 16106; PWR5-LABEL: ugt_17_v2i64: 16107; PWR5: # %bb.0: 16108; PWR5-NEXT: lis 5, 21845 16109; PWR5-NEXT: lis 6, 13107 16110; PWR5-NEXT: ori 5, 5, 21845 16111; PWR5-NEXT: rotldi 8, 4, 63 16112; PWR5-NEXT: rotldi 9, 3, 63 16113; PWR5-NEXT: rldimi 5, 5, 32, 0 16114; PWR5-NEXT: and 8, 8, 5 16115; PWR5-NEXT: and 5, 9, 5 16116; PWR5-NEXT: ori 6, 6, 13107 16117; PWR5-NEXT: sub 3, 3, 5 16118; PWR5-NEXT: rldimi 6, 6, 32, 0 16119; PWR5-NEXT: sub 4, 4, 8 16120; PWR5-NEXT: and 8, 3, 6 16121; PWR5-NEXT: rotldi 3, 3, 62 16122; PWR5-NEXT: and 3, 3, 6 16123; PWR5-NEXT: lis 7, 3855 16124; PWR5-NEXT: and 5, 4, 6 16125; PWR5-NEXT: rotldi 4, 4, 62 16126; PWR5-NEXT: add 3, 8, 3 16127; PWR5-NEXT: lis 9, 257 16128; PWR5-NEXT: ori 7, 7, 3855 16129; PWR5-NEXT: and 4, 4, 6 16130; PWR5-NEXT: rldicl 6, 3, 60, 4 16131; PWR5-NEXT: ori 9, 9, 257 16132; PWR5-NEXT: rldimi 7, 7, 32, 0 16133; PWR5-NEXT: add 4, 5, 4 16134; PWR5-NEXT: add 3, 3, 6 16135; PWR5-NEXT: rldimi 9, 9, 32, 0 16136; PWR5-NEXT: rldicl 5, 4, 60, 4 16137; PWR5-NEXT: and 3, 3, 7 16138; PWR5-NEXT: add 4, 4, 5 16139; PWR5-NEXT: mulld 3, 3, 9 16140; PWR5-NEXT: and 4, 4, 7 16141; PWR5-NEXT: rldicl 3, 3, 8, 56 16142; PWR5-NEXT: mulld 4, 4, 9 16143; PWR5-NEXT: li 5, 17 16144; PWR5-NEXT: subfic 3, 3, 17 16145; PWR5-NEXT: rldicl 4, 4, 8, 56 16146; PWR5-NEXT: subfe 3, 5, 5 16147; PWR5-NEXT: subfic 4, 4, 17 16148; PWR5-NEXT: subfe 4, 5, 5 16149; PWR5-NEXT: blr 16150; 16151; PWR6-LABEL: ugt_17_v2i64: 16152; PWR6: # %bb.0: 16153; PWR6-NEXT: lis 5, 21845 16154; PWR6-NEXT: lis 6, 13107 16155; PWR6-NEXT: ori 5, 5, 21845 16156; PWR6-NEXT: rotldi 8, 4, 63 16157; PWR6-NEXT: rotldi 9, 3, 63 16158; PWR6-NEXT: rldimi 5, 5, 32, 0 16159; PWR6-NEXT: and 8, 8, 5 16160; PWR6-NEXT: and 5, 9, 5 16161; PWR6-NEXT: ori 6, 6, 13107 16162; PWR6-NEXT: sub 3, 3, 5 16163; PWR6-NEXT: rldimi 6, 6, 32, 0 16164; PWR6-NEXT: sub 4, 4, 8 16165; PWR6-NEXT: and 8, 3, 6 16166; PWR6-NEXT: rotldi 3, 3, 62 16167; PWR6-NEXT: and 3, 3, 6 16168; PWR6-NEXT: lis 7, 3855 16169; PWR6-NEXT: and 5, 4, 6 16170; PWR6-NEXT: rotldi 4, 4, 62 16171; PWR6-NEXT: add 3, 8, 3 16172; PWR6-NEXT: lis 9, 257 16173; PWR6-NEXT: ori 7, 7, 3855 16174; PWR6-NEXT: and 4, 4, 6 16175; PWR6-NEXT: rldicl 6, 3, 60, 4 16176; PWR6-NEXT: ori 9, 9, 257 16177; PWR6-NEXT: rldimi 7, 7, 32, 0 16178; PWR6-NEXT: add 4, 5, 4 16179; PWR6-NEXT: add 3, 3, 6 16180; PWR6-NEXT: rldimi 9, 9, 32, 0 16181; PWR6-NEXT: rldicl 5, 4, 60, 4 16182; PWR6-NEXT: and 3, 3, 7 16183; PWR6-NEXT: add 4, 4, 5 16184; PWR6-NEXT: mulld 3, 3, 9 16185; PWR6-NEXT: and 4, 4, 7 16186; PWR6-NEXT: rldicl 3, 3, 8, 56 16187; PWR6-NEXT: mulld 4, 4, 9 16188; PWR6-NEXT: li 5, 17 16189; PWR6-NEXT: subfic 3, 3, 17 16190; PWR6-NEXT: rldicl 4, 4, 8, 56 16191; PWR6-NEXT: subfe 3, 5, 5 16192; PWR6-NEXT: subfic 4, 4, 17 16193; PWR6-NEXT: subfe 4, 5, 5 16194; PWR6-NEXT: blr 16195; 16196; PWR7-LABEL: ugt_17_v2i64: 16197; PWR7: # %bb.0: 16198; PWR7-NEXT: addi 3, 1, -32 16199; PWR7-NEXT: li 5, -1 16200; PWR7-NEXT: stxvd2x 34, 0, 3 16201; PWR7-NEXT: ld 4, -24(1) 16202; PWR7-NEXT: ld 3, -32(1) 16203; PWR7-NEXT: popcntd 4, 4 16204; PWR7-NEXT: popcntd 3, 3 16205; PWR7-NEXT: cmpldi 4, 17 16206; PWR7-NEXT: li 4, 0 16207; PWR7-NEXT: iselgt 6, 5, 4 16208; PWR7-NEXT: cmpldi 3, 17 16209; PWR7-NEXT: iselgt 3, 5, 4 16210; PWR7-NEXT: std 6, -8(1) 16211; PWR7-NEXT: std 3, -16(1) 16212; PWR7-NEXT: addi 3, 1, -16 16213; PWR7-NEXT: lxvd2x 34, 0, 3 16214; PWR7-NEXT: blr 16215; 16216; PWR8-LABEL: ugt_17_v2i64: 16217; PWR8: # %bb.0: 16218; PWR8-NEXT: addis 3, 2, .LCPI132_0@toc@ha 16219; PWR8-NEXT: vpopcntd 2, 2 16220; PWR8-NEXT: addi 3, 3, .LCPI132_0@toc@l 16221; PWR8-NEXT: lxvd2x 35, 0, 3 16222; PWR8-NEXT: vcmpgtud 2, 2, 3 16223; PWR8-NEXT: blr 16224; 16225; PWR9-LABEL: ugt_17_v2i64: 16226; PWR9: # %bb.0: 16227; PWR9-NEXT: addis 3, 2, .LCPI132_0@toc@ha 16228; PWR9-NEXT: vpopcntd 2, 2 16229; PWR9-NEXT: addi 3, 3, .LCPI132_0@toc@l 16230; PWR9-NEXT: lxv 35, 0(3) 16231; PWR9-NEXT: vcmpgtud 2, 2, 3 16232; PWR9-NEXT: blr 16233 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16234 %3 = icmp ugt <2 x i64> %2, <i64 17, i64 17> 16235 %4 = sext <2 x i1> %3 to <2 x i64> 16236 ret <2 x i64> %4 16237} 16238 16239define <2 x i64> @ult_18_v2i64(<2 x i64> %0) { 16240; PWR5-LABEL: ult_18_v2i64: 16241; PWR5: # %bb.0: 16242; PWR5-NEXT: lis 5, 21845 16243; PWR5-NEXT: lis 6, 13107 16244; PWR5-NEXT: ori 5, 5, 21845 16245; PWR5-NEXT: rotldi 8, 4, 63 16246; PWR5-NEXT: rotldi 9, 3, 63 16247; PWR5-NEXT: rldimi 5, 5, 32, 0 16248; PWR5-NEXT: and 8, 8, 5 16249; PWR5-NEXT: and 5, 9, 5 16250; PWR5-NEXT: ori 6, 6, 13107 16251; PWR5-NEXT: sub 3, 3, 5 16252; PWR5-NEXT: rldimi 6, 6, 32, 0 16253; PWR5-NEXT: sub 4, 4, 8 16254; PWR5-NEXT: and 8, 3, 6 16255; PWR5-NEXT: rotldi 3, 3, 62 16256; PWR5-NEXT: and 3, 3, 6 16257; PWR5-NEXT: lis 7, 3855 16258; PWR5-NEXT: and 5, 4, 6 16259; PWR5-NEXT: rotldi 4, 4, 62 16260; PWR5-NEXT: add 3, 8, 3 16261; PWR5-NEXT: lis 9, 257 16262; PWR5-NEXT: ori 7, 7, 3855 16263; PWR5-NEXT: and 4, 4, 6 16264; PWR5-NEXT: rldicl 6, 3, 60, 4 16265; PWR5-NEXT: ori 9, 9, 257 16266; PWR5-NEXT: rldimi 7, 7, 32, 0 16267; PWR5-NEXT: add 4, 5, 4 16268; PWR5-NEXT: add 3, 3, 6 16269; PWR5-NEXT: rldimi 9, 9, 32, 0 16270; PWR5-NEXT: rldicl 5, 4, 60, 4 16271; PWR5-NEXT: and 3, 3, 7 16272; PWR5-NEXT: add 4, 4, 5 16273; PWR5-NEXT: mulld 3, 3, 9 16274; PWR5-NEXT: and 4, 4, 7 16275; PWR5-NEXT: rldicl 3, 3, 8, 56 16276; PWR5-NEXT: li 5, 18 16277; PWR5-NEXT: mulld 4, 4, 9 16278; PWR5-NEXT: subc 6, 3, 5 16279; PWR5-NEXT: rldicl 4, 4, 8, 56 16280; PWR5-NEXT: subfe 3, 3, 3 16281; PWR5-NEXT: subc 5, 4, 5 16282; PWR5-NEXT: subfe 4, 4, 4 16283; PWR5-NEXT: blr 16284; 16285; PWR6-LABEL: ult_18_v2i64: 16286; PWR6: # %bb.0: 16287; PWR6-NEXT: lis 5, 21845 16288; PWR6-NEXT: lis 6, 13107 16289; PWR6-NEXT: ori 5, 5, 21845 16290; PWR6-NEXT: rotldi 8, 4, 63 16291; PWR6-NEXT: rotldi 9, 3, 63 16292; PWR6-NEXT: rldimi 5, 5, 32, 0 16293; PWR6-NEXT: and 8, 8, 5 16294; PWR6-NEXT: and 5, 9, 5 16295; PWR6-NEXT: ori 6, 6, 13107 16296; PWR6-NEXT: sub 3, 3, 5 16297; PWR6-NEXT: rldimi 6, 6, 32, 0 16298; PWR6-NEXT: sub 4, 4, 8 16299; PWR6-NEXT: and 8, 3, 6 16300; PWR6-NEXT: rotldi 3, 3, 62 16301; PWR6-NEXT: and 3, 3, 6 16302; PWR6-NEXT: lis 7, 3855 16303; PWR6-NEXT: and 5, 4, 6 16304; PWR6-NEXT: rotldi 4, 4, 62 16305; PWR6-NEXT: add 3, 8, 3 16306; PWR6-NEXT: lis 9, 257 16307; PWR6-NEXT: ori 7, 7, 3855 16308; PWR6-NEXT: and 4, 4, 6 16309; PWR6-NEXT: rldicl 6, 3, 60, 4 16310; PWR6-NEXT: ori 9, 9, 257 16311; PWR6-NEXT: rldimi 7, 7, 32, 0 16312; PWR6-NEXT: add 4, 5, 4 16313; PWR6-NEXT: add 3, 3, 6 16314; PWR6-NEXT: rldimi 9, 9, 32, 0 16315; PWR6-NEXT: rldicl 5, 4, 60, 4 16316; PWR6-NEXT: and 3, 3, 7 16317; PWR6-NEXT: add 4, 4, 5 16318; PWR6-NEXT: mulld 3, 3, 9 16319; PWR6-NEXT: and 4, 4, 7 16320; PWR6-NEXT: rldicl 3, 3, 8, 56 16321; PWR6-NEXT: li 5, 18 16322; PWR6-NEXT: mulld 4, 4, 9 16323; PWR6-NEXT: subc 6, 3, 5 16324; PWR6-NEXT: rldicl 4, 4, 8, 56 16325; PWR6-NEXT: subfe 3, 3, 3 16326; PWR6-NEXT: subc 5, 4, 5 16327; PWR6-NEXT: subfe 4, 4, 4 16328; PWR6-NEXT: blr 16329; 16330; PWR7-LABEL: ult_18_v2i64: 16331; PWR7: # %bb.0: 16332; PWR7-NEXT: addi 3, 1, -32 16333; PWR7-NEXT: li 5, -1 16334; PWR7-NEXT: stxvd2x 34, 0, 3 16335; PWR7-NEXT: ld 4, -24(1) 16336; PWR7-NEXT: ld 3, -32(1) 16337; PWR7-NEXT: popcntd 4, 4 16338; PWR7-NEXT: popcntd 3, 3 16339; PWR7-NEXT: cmpldi 4, 18 16340; PWR7-NEXT: li 4, 0 16341; PWR7-NEXT: isellt 6, 5, 4 16342; PWR7-NEXT: cmpldi 3, 18 16343; PWR7-NEXT: isellt 3, 5, 4 16344; PWR7-NEXT: std 6, -8(1) 16345; PWR7-NEXT: std 3, -16(1) 16346; PWR7-NEXT: addi 3, 1, -16 16347; PWR7-NEXT: lxvd2x 34, 0, 3 16348; PWR7-NEXT: blr 16349; 16350; PWR8-LABEL: ult_18_v2i64: 16351; PWR8: # %bb.0: 16352; PWR8-NEXT: addis 3, 2, .LCPI133_0@toc@ha 16353; PWR8-NEXT: vpopcntd 2, 2 16354; PWR8-NEXT: addi 3, 3, .LCPI133_0@toc@l 16355; PWR8-NEXT: lxvd2x 35, 0, 3 16356; PWR8-NEXT: vcmpgtud 2, 3, 2 16357; PWR8-NEXT: blr 16358; 16359; PWR9-LABEL: ult_18_v2i64: 16360; PWR9: # %bb.0: 16361; PWR9-NEXT: addis 3, 2, .LCPI133_0@toc@ha 16362; PWR9-NEXT: vpopcntd 2, 2 16363; PWR9-NEXT: addi 3, 3, .LCPI133_0@toc@l 16364; PWR9-NEXT: lxv 35, 0(3) 16365; PWR9-NEXT: vcmpgtud 2, 3, 2 16366; PWR9-NEXT: blr 16367 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16368 %3 = icmp ult <2 x i64> %2, <i64 18, i64 18> 16369 %4 = sext <2 x i1> %3 to <2 x i64> 16370 ret <2 x i64> %4 16371} 16372 16373define <2 x i64> @ugt_18_v2i64(<2 x i64> %0) { 16374; PWR5-LABEL: ugt_18_v2i64: 16375; PWR5: # %bb.0: 16376; PWR5-NEXT: lis 5, 21845 16377; PWR5-NEXT: lis 6, 13107 16378; PWR5-NEXT: ori 5, 5, 21845 16379; PWR5-NEXT: rotldi 8, 4, 63 16380; PWR5-NEXT: rotldi 9, 3, 63 16381; PWR5-NEXT: rldimi 5, 5, 32, 0 16382; PWR5-NEXT: and 8, 8, 5 16383; PWR5-NEXT: and 5, 9, 5 16384; PWR5-NEXT: ori 6, 6, 13107 16385; PWR5-NEXT: sub 3, 3, 5 16386; PWR5-NEXT: rldimi 6, 6, 32, 0 16387; PWR5-NEXT: sub 4, 4, 8 16388; PWR5-NEXT: and 8, 3, 6 16389; PWR5-NEXT: rotldi 3, 3, 62 16390; PWR5-NEXT: and 3, 3, 6 16391; PWR5-NEXT: lis 7, 3855 16392; PWR5-NEXT: and 5, 4, 6 16393; PWR5-NEXT: rotldi 4, 4, 62 16394; PWR5-NEXT: add 3, 8, 3 16395; PWR5-NEXT: lis 9, 257 16396; PWR5-NEXT: ori 7, 7, 3855 16397; PWR5-NEXT: and 4, 4, 6 16398; PWR5-NEXT: rldicl 6, 3, 60, 4 16399; PWR5-NEXT: ori 9, 9, 257 16400; PWR5-NEXT: rldimi 7, 7, 32, 0 16401; PWR5-NEXT: add 4, 5, 4 16402; PWR5-NEXT: add 3, 3, 6 16403; PWR5-NEXT: rldimi 9, 9, 32, 0 16404; PWR5-NEXT: rldicl 5, 4, 60, 4 16405; PWR5-NEXT: and 3, 3, 7 16406; PWR5-NEXT: add 4, 4, 5 16407; PWR5-NEXT: mulld 3, 3, 9 16408; PWR5-NEXT: and 4, 4, 7 16409; PWR5-NEXT: rldicl 3, 3, 8, 56 16410; PWR5-NEXT: mulld 4, 4, 9 16411; PWR5-NEXT: li 5, 18 16412; PWR5-NEXT: subfic 3, 3, 18 16413; PWR5-NEXT: rldicl 4, 4, 8, 56 16414; PWR5-NEXT: subfe 3, 5, 5 16415; PWR5-NEXT: subfic 4, 4, 18 16416; PWR5-NEXT: subfe 4, 5, 5 16417; PWR5-NEXT: blr 16418; 16419; PWR6-LABEL: ugt_18_v2i64: 16420; PWR6: # %bb.0: 16421; PWR6-NEXT: lis 5, 21845 16422; PWR6-NEXT: lis 6, 13107 16423; PWR6-NEXT: ori 5, 5, 21845 16424; PWR6-NEXT: rotldi 8, 4, 63 16425; PWR6-NEXT: rotldi 9, 3, 63 16426; PWR6-NEXT: rldimi 5, 5, 32, 0 16427; PWR6-NEXT: and 8, 8, 5 16428; PWR6-NEXT: and 5, 9, 5 16429; PWR6-NEXT: ori 6, 6, 13107 16430; PWR6-NEXT: sub 3, 3, 5 16431; PWR6-NEXT: rldimi 6, 6, 32, 0 16432; PWR6-NEXT: sub 4, 4, 8 16433; PWR6-NEXT: and 8, 3, 6 16434; PWR6-NEXT: rotldi 3, 3, 62 16435; PWR6-NEXT: and 3, 3, 6 16436; PWR6-NEXT: lis 7, 3855 16437; PWR6-NEXT: and 5, 4, 6 16438; PWR6-NEXT: rotldi 4, 4, 62 16439; PWR6-NEXT: add 3, 8, 3 16440; PWR6-NEXT: lis 9, 257 16441; PWR6-NEXT: ori 7, 7, 3855 16442; PWR6-NEXT: and 4, 4, 6 16443; PWR6-NEXT: rldicl 6, 3, 60, 4 16444; PWR6-NEXT: ori 9, 9, 257 16445; PWR6-NEXT: rldimi 7, 7, 32, 0 16446; PWR6-NEXT: add 4, 5, 4 16447; PWR6-NEXT: add 3, 3, 6 16448; PWR6-NEXT: rldimi 9, 9, 32, 0 16449; PWR6-NEXT: rldicl 5, 4, 60, 4 16450; PWR6-NEXT: and 3, 3, 7 16451; PWR6-NEXT: add 4, 4, 5 16452; PWR6-NEXT: mulld 3, 3, 9 16453; PWR6-NEXT: and 4, 4, 7 16454; PWR6-NEXT: rldicl 3, 3, 8, 56 16455; PWR6-NEXT: mulld 4, 4, 9 16456; PWR6-NEXT: li 5, 18 16457; PWR6-NEXT: subfic 3, 3, 18 16458; PWR6-NEXT: rldicl 4, 4, 8, 56 16459; PWR6-NEXT: subfe 3, 5, 5 16460; PWR6-NEXT: subfic 4, 4, 18 16461; PWR6-NEXT: subfe 4, 5, 5 16462; PWR6-NEXT: blr 16463; 16464; PWR7-LABEL: ugt_18_v2i64: 16465; PWR7: # %bb.0: 16466; PWR7-NEXT: addi 3, 1, -32 16467; PWR7-NEXT: li 5, -1 16468; PWR7-NEXT: stxvd2x 34, 0, 3 16469; PWR7-NEXT: ld 4, -24(1) 16470; PWR7-NEXT: ld 3, -32(1) 16471; PWR7-NEXT: popcntd 4, 4 16472; PWR7-NEXT: popcntd 3, 3 16473; PWR7-NEXT: cmpldi 4, 18 16474; PWR7-NEXT: li 4, 0 16475; PWR7-NEXT: iselgt 6, 5, 4 16476; PWR7-NEXT: cmpldi 3, 18 16477; PWR7-NEXT: iselgt 3, 5, 4 16478; PWR7-NEXT: std 6, -8(1) 16479; PWR7-NEXT: std 3, -16(1) 16480; PWR7-NEXT: addi 3, 1, -16 16481; PWR7-NEXT: lxvd2x 34, 0, 3 16482; PWR7-NEXT: blr 16483; 16484; PWR8-LABEL: ugt_18_v2i64: 16485; PWR8: # %bb.0: 16486; PWR8-NEXT: addis 3, 2, .LCPI134_0@toc@ha 16487; PWR8-NEXT: vpopcntd 2, 2 16488; PWR8-NEXT: addi 3, 3, .LCPI134_0@toc@l 16489; PWR8-NEXT: lxvd2x 35, 0, 3 16490; PWR8-NEXT: vcmpgtud 2, 2, 3 16491; PWR8-NEXT: blr 16492; 16493; PWR9-LABEL: ugt_18_v2i64: 16494; PWR9: # %bb.0: 16495; PWR9-NEXT: addis 3, 2, .LCPI134_0@toc@ha 16496; PWR9-NEXT: vpopcntd 2, 2 16497; PWR9-NEXT: addi 3, 3, .LCPI134_0@toc@l 16498; PWR9-NEXT: lxv 35, 0(3) 16499; PWR9-NEXT: vcmpgtud 2, 2, 3 16500; PWR9-NEXT: blr 16501 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16502 %3 = icmp ugt <2 x i64> %2, <i64 18, i64 18> 16503 %4 = sext <2 x i1> %3 to <2 x i64> 16504 ret <2 x i64> %4 16505} 16506 16507define <2 x i64> @ult_19_v2i64(<2 x i64> %0) { 16508; PWR5-LABEL: ult_19_v2i64: 16509; PWR5: # %bb.0: 16510; PWR5-NEXT: lis 5, 21845 16511; PWR5-NEXT: lis 6, 13107 16512; PWR5-NEXT: ori 5, 5, 21845 16513; PWR5-NEXT: rotldi 8, 4, 63 16514; PWR5-NEXT: rotldi 9, 3, 63 16515; PWR5-NEXT: rldimi 5, 5, 32, 0 16516; PWR5-NEXT: and 8, 8, 5 16517; PWR5-NEXT: and 5, 9, 5 16518; PWR5-NEXT: ori 6, 6, 13107 16519; PWR5-NEXT: sub 3, 3, 5 16520; PWR5-NEXT: rldimi 6, 6, 32, 0 16521; PWR5-NEXT: sub 4, 4, 8 16522; PWR5-NEXT: and 8, 3, 6 16523; PWR5-NEXT: rotldi 3, 3, 62 16524; PWR5-NEXT: and 3, 3, 6 16525; PWR5-NEXT: lis 7, 3855 16526; PWR5-NEXT: and 5, 4, 6 16527; PWR5-NEXT: rotldi 4, 4, 62 16528; PWR5-NEXT: add 3, 8, 3 16529; PWR5-NEXT: lis 9, 257 16530; PWR5-NEXT: ori 7, 7, 3855 16531; PWR5-NEXT: and 4, 4, 6 16532; PWR5-NEXT: rldicl 6, 3, 60, 4 16533; PWR5-NEXT: ori 9, 9, 257 16534; PWR5-NEXT: rldimi 7, 7, 32, 0 16535; PWR5-NEXT: add 4, 5, 4 16536; PWR5-NEXT: add 3, 3, 6 16537; PWR5-NEXT: rldimi 9, 9, 32, 0 16538; PWR5-NEXT: rldicl 5, 4, 60, 4 16539; PWR5-NEXT: and 3, 3, 7 16540; PWR5-NEXT: add 4, 4, 5 16541; PWR5-NEXT: mulld 3, 3, 9 16542; PWR5-NEXT: and 4, 4, 7 16543; PWR5-NEXT: rldicl 3, 3, 8, 56 16544; PWR5-NEXT: li 5, 19 16545; PWR5-NEXT: mulld 4, 4, 9 16546; PWR5-NEXT: subc 6, 3, 5 16547; PWR5-NEXT: rldicl 4, 4, 8, 56 16548; PWR5-NEXT: subfe 3, 3, 3 16549; PWR5-NEXT: subc 5, 4, 5 16550; PWR5-NEXT: subfe 4, 4, 4 16551; PWR5-NEXT: blr 16552; 16553; PWR6-LABEL: ult_19_v2i64: 16554; PWR6: # %bb.0: 16555; PWR6-NEXT: lis 5, 21845 16556; PWR6-NEXT: lis 6, 13107 16557; PWR6-NEXT: ori 5, 5, 21845 16558; PWR6-NEXT: rotldi 8, 4, 63 16559; PWR6-NEXT: rotldi 9, 3, 63 16560; PWR6-NEXT: rldimi 5, 5, 32, 0 16561; PWR6-NEXT: and 8, 8, 5 16562; PWR6-NEXT: and 5, 9, 5 16563; PWR6-NEXT: ori 6, 6, 13107 16564; PWR6-NEXT: sub 3, 3, 5 16565; PWR6-NEXT: rldimi 6, 6, 32, 0 16566; PWR6-NEXT: sub 4, 4, 8 16567; PWR6-NEXT: and 8, 3, 6 16568; PWR6-NEXT: rotldi 3, 3, 62 16569; PWR6-NEXT: and 3, 3, 6 16570; PWR6-NEXT: lis 7, 3855 16571; PWR6-NEXT: and 5, 4, 6 16572; PWR6-NEXT: rotldi 4, 4, 62 16573; PWR6-NEXT: add 3, 8, 3 16574; PWR6-NEXT: lis 9, 257 16575; PWR6-NEXT: ori 7, 7, 3855 16576; PWR6-NEXT: and 4, 4, 6 16577; PWR6-NEXT: rldicl 6, 3, 60, 4 16578; PWR6-NEXT: ori 9, 9, 257 16579; PWR6-NEXT: rldimi 7, 7, 32, 0 16580; PWR6-NEXT: add 4, 5, 4 16581; PWR6-NEXT: add 3, 3, 6 16582; PWR6-NEXT: rldimi 9, 9, 32, 0 16583; PWR6-NEXT: rldicl 5, 4, 60, 4 16584; PWR6-NEXT: and 3, 3, 7 16585; PWR6-NEXT: add 4, 4, 5 16586; PWR6-NEXT: mulld 3, 3, 9 16587; PWR6-NEXT: and 4, 4, 7 16588; PWR6-NEXT: rldicl 3, 3, 8, 56 16589; PWR6-NEXT: li 5, 19 16590; PWR6-NEXT: mulld 4, 4, 9 16591; PWR6-NEXT: subc 6, 3, 5 16592; PWR6-NEXT: rldicl 4, 4, 8, 56 16593; PWR6-NEXT: subfe 3, 3, 3 16594; PWR6-NEXT: subc 5, 4, 5 16595; PWR6-NEXT: subfe 4, 4, 4 16596; PWR6-NEXT: blr 16597; 16598; PWR7-LABEL: ult_19_v2i64: 16599; PWR7: # %bb.0: 16600; PWR7-NEXT: addi 3, 1, -32 16601; PWR7-NEXT: li 5, -1 16602; PWR7-NEXT: stxvd2x 34, 0, 3 16603; PWR7-NEXT: ld 4, -24(1) 16604; PWR7-NEXT: ld 3, -32(1) 16605; PWR7-NEXT: popcntd 4, 4 16606; PWR7-NEXT: popcntd 3, 3 16607; PWR7-NEXT: cmpldi 4, 19 16608; PWR7-NEXT: li 4, 0 16609; PWR7-NEXT: isellt 6, 5, 4 16610; PWR7-NEXT: cmpldi 3, 19 16611; PWR7-NEXT: isellt 3, 5, 4 16612; PWR7-NEXT: std 6, -8(1) 16613; PWR7-NEXT: std 3, -16(1) 16614; PWR7-NEXT: addi 3, 1, -16 16615; PWR7-NEXT: lxvd2x 34, 0, 3 16616; PWR7-NEXT: blr 16617; 16618; PWR8-LABEL: ult_19_v2i64: 16619; PWR8: # %bb.0: 16620; PWR8-NEXT: addis 3, 2, .LCPI135_0@toc@ha 16621; PWR8-NEXT: vpopcntd 2, 2 16622; PWR8-NEXT: addi 3, 3, .LCPI135_0@toc@l 16623; PWR8-NEXT: lxvd2x 35, 0, 3 16624; PWR8-NEXT: vcmpgtud 2, 3, 2 16625; PWR8-NEXT: blr 16626; 16627; PWR9-LABEL: ult_19_v2i64: 16628; PWR9: # %bb.0: 16629; PWR9-NEXT: addis 3, 2, .LCPI135_0@toc@ha 16630; PWR9-NEXT: vpopcntd 2, 2 16631; PWR9-NEXT: addi 3, 3, .LCPI135_0@toc@l 16632; PWR9-NEXT: lxv 35, 0(3) 16633; PWR9-NEXT: vcmpgtud 2, 3, 2 16634; PWR9-NEXT: blr 16635 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16636 %3 = icmp ult <2 x i64> %2, <i64 19, i64 19> 16637 %4 = sext <2 x i1> %3 to <2 x i64> 16638 ret <2 x i64> %4 16639} 16640 16641define <2 x i64> @ugt_19_v2i64(<2 x i64> %0) { 16642; PWR5-LABEL: ugt_19_v2i64: 16643; PWR5: # %bb.0: 16644; PWR5-NEXT: lis 5, 21845 16645; PWR5-NEXT: lis 6, 13107 16646; PWR5-NEXT: ori 5, 5, 21845 16647; PWR5-NEXT: rotldi 8, 4, 63 16648; PWR5-NEXT: rotldi 9, 3, 63 16649; PWR5-NEXT: rldimi 5, 5, 32, 0 16650; PWR5-NEXT: and 8, 8, 5 16651; PWR5-NEXT: and 5, 9, 5 16652; PWR5-NEXT: ori 6, 6, 13107 16653; PWR5-NEXT: sub 3, 3, 5 16654; PWR5-NEXT: rldimi 6, 6, 32, 0 16655; PWR5-NEXT: sub 4, 4, 8 16656; PWR5-NEXT: and 8, 3, 6 16657; PWR5-NEXT: rotldi 3, 3, 62 16658; PWR5-NEXT: and 3, 3, 6 16659; PWR5-NEXT: lis 7, 3855 16660; PWR5-NEXT: and 5, 4, 6 16661; PWR5-NEXT: rotldi 4, 4, 62 16662; PWR5-NEXT: add 3, 8, 3 16663; PWR5-NEXT: lis 9, 257 16664; PWR5-NEXT: ori 7, 7, 3855 16665; PWR5-NEXT: and 4, 4, 6 16666; PWR5-NEXT: rldicl 6, 3, 60, 4 16667; PWR5-NEXT: ori 9, 9, 257 16668; PWR5-NEXT: rldimi 7, 7, 32, 0 16669; PWR5-NEXT: add 4, 5, 4 16670; PWR5-NEXT: add 3, 3, 6 16671; PWR5-NEXT: rldimi 9, 9, 32, 0 16672; PWR5-NEXT: rldicl 5, 4, 60, 4 16673; PWR5-NEXT: and 3, 3, 7 16674; PWR5-NEXT: add 4, 4, 5 16675; PWR5-NEXT: mulld 3, 3, 9 16676; PWR5-NEXT: and 4, 4, 7 16677; PWR5-NEXT: rldicl 3, 3, 8, 56 16678; PWR5-NEXT: mulld 4, 4, 9 16679; PWR5-NEXT: li 5, 19 16680; PWR5-NEXT: subfic 3, 3, 19 16681; PWR5-NEXT: rldicl 4, 4, 8, 56 16682; PWR5-NEXT: subfe 3, 5, 5 16683; PWR5-NEXT: subfic 4, 4, 19 16684; PWR5-NEXT: subfe 4, 5, 5 16685; PWR5-NEXT: blr 16686; 16687; PWR6-LABEL: ugt_19_v2i64: 16688; PWR6: # %bb.0: 16689; PWR6-NEXT: lis 5, 21845 16690; PWR6-NEXT: lis 6, 13107 16691; PWR6-NEXT: ori 5, 5, 21845 16692; PWR6-NEXT: rotldi 8, 4, 63 16693; PWR6-NEXT: rotldi 9, 3, 63 16694; PWR6-NEXT: rldimi 5, 5, 32, 0 16695; PWR6-NEXT: and 8, 8, 5 16696; PWR6-NEXT: and 5, 9, 5 16697; PWR6-NEXT: ori 6, 6, 13107 16698; PWR6-NEXT: sub 3, 3, 5 16699; PWR6-NEXT: rldimi 6, 6, 32, 0 16700; PWR6-NEXT: sub 4, 4, 8 16701; PWR6-NEXT: and 8, 3, 6 16702; PWR6-NEXT: rotldi 3, 3, 62 16703; PWR6-NEXT: and 3, 3, 6 16704; PWR6-NEXT: lis 7, 3855 16705; PWR6-NEXT: and 5, 4, 6 16706; PWR6-NEXT: rotldi 4, 4, 62 16707; PWR6-NEXT: add 3, 8, 3 16708; PWR6-NEXT: lis 9, 257 16709; PWR6-NEXT: ori 7, 7, 3855 16710; PWR6-NEXT: and 4, 4, 6 16711; PWR6-NEXT: rldicl 6, 3, 60, 4 16712; PWR6-NEXT: ori 9, 9, 257 16713; PWR6-NEXT: rldimi 7, 7, 32, 0 16714; PWR6-NEXT: add 4, 5, 4 16715; PWR6-NEXT: add 3, 3, 6 16716; PWR6-NEXT: rldimi 9, 9, 32, 0 16717; PWR6-NEXT: rldicl 5, 4, 60, 4 16718; PWR6-NEXT: and 3, 3, 7 16719; PWR6-NEXT: add 4, 4, 5 16720; PWR6-NEXT: mulld 3, 3, 9 16721; PWR6-NEXT: and 4, 4, 7 16722; PWR6-NEXT: rldicl 3, 3, 8, 56 16723; PWR6-NEXT: mulld 4, 4, 9 16724; PWR6-NEXT: li 5, 19 16725; PWR6-NEXT: subfic 3, 3, 19 16726; PWR6-NEXT: rldicl 4, 4, 8, 56 16727; PWR6-NEXT: subfe 3, 5, 5 16728; PWR6-NEXT: subfic 4, 4, 19 16729; PWR6-NEXT: subfe 4, 5, 5 16730; PWR6-NEXT: blr 16731; 16732; PWR7-LABEL: ugt_19_v2i64: 16733; PWR7: # %bb.0: 16734; PWR7-NEXT: addi 3, 1, -32 16735; PWR7-NEXT: li 5, -1 16736; PWR7-NEXT: stxvd2x 34, 0, 3 16737; PWR7-NEXT: ld 4, -24(1) 16738; PWR7-NEXT: ld 3, -32(1) 16739; PWR7-NEXT: popcntd 4, 4 16740; PWR7-NEXT: popcntd 3, 3 16741; PWR7-NEXT: cmpldi 4, 19 16742; PWR7-NEXT: li 4, 0 16743; PWR7-NEXT: iselgt 6, 5, 4 16744; PWR7-NEXT: cmpldi 3, 19 16745; PWR7-NEXT: iselgt 3, 5, 4 16746; PWR7-NEXT: std 6, -8(1) 16747; PWR7-NEXT: std 3, -16(1) 16748; PWR7-NEXT: addi 3, 1, -16 16749; PWR7-NEXT: lxvd2x 34, 0, 3 16750; PWR7-NEXT: blr 16751; 16752; PWR8-LABEL: ugt_19_v2i64: 16753; PWR8: # %bb.0: 16754; PWR8-NEXT: addis 3, 2, .LCPI136_0@toc@ha 16755; PWR8-NEXT: vpopcntd 2, 2 16756; PWR8-NEXT: addi 3, 3, .LCPI136_0@toc@l 16757; PWR8-NEXT: lxvd2x 35, 0, 3 16758; PWR8-NEXT: vcmpgtud 2, 2, 3 16759; PWR8-NEXT: blr 16760; 16761; PWR9-LABEL: ugt_19_v2i64: 16762; PWR9: # %bb.0: 16763; PWR9-NEXT: addis 3, 2, .LCPI136_0@toc@ha 16764; PWR9-NEXT: vpopcntd 2, 2 16765; PWR9-NEXT: addi 3, 3, .LCPI136_0@toc@l 16766; PWR9-NEXT: lxv 35, 0(3) 16767; PWR9-NEXT: vcmpgtud 2, 2, 3 16768; PWR9-NEXT: blr 16769 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16770 %3 = icmp ugt <2 x i64> %2, <i64 19, i64 19> 16771 %4 = sext <2 x i1> %3 to <2 x i64> 16772 ret <2 x i64> %4 16773} 16774 16775define <2 x i64> @ult_20_v2i64(<2 x i64> %0) { 16776; PWR5-LABEL: ult_20_v2i64: 16777; PWR5: # %bb.0: 16778; PWR5-NEXT: lis 5, 21845 16779; PWR5-NEXT: lis 6, 13107 16780; PWR5-NEXT: ori 5, 5, 21845 16781; PWR5-NEXT: rotldi 8, 4, 63 16782; PWR5-NEXT: rotldi 9, 3, 63 16783; PWR5-NEXT: rldimi 5, 5, 32, 0 16784; PWR5-NEXT: and 8, 8, 5 16785; PWR5-NEXT: and 5, 9, 5 16786; PWR5-NEXT: ori 6, 6, 13107 16787; PWR5-NEXT: sub 3, 3, 5 16788; PWR5-NEXT: rldimi 6, 6, 32, 0 16789; PWR5-NEXT: sub 4, 4, 8 16790; PWR5-NEXT: and 8, 3, 6 16791; PWR5-NEXT: rotldi 3, 3, 62 16792; PWR5-NEXT: and 3, 3, 6 16793; PWR5-NEXT: lis 7, 3855 16794; PWR5-NEXT: and 5, 4, 6 16795; PWR5-NEXT: rotldi 4, 4, 62 16796; PWR5-NEXT: add 3, 8, 3 16797; PWR5-NEXT: lis 9, 257 16798; PWR5-NEXT: ori 7, 7, 3855 16799; PWR5-NEXT: and 4, 4, 6 16800; PWR5-NEXT: rldicl 6, 3, 60, 4 16801; PWR5-NEXT: ori 9, 9, 257 16802; PWR5-NEXT: rldimi 7, 7, 32, 0 16803; PWR5-NEXT: add 4, 5, 4 16804; PWR5-NEXT: add 3, 3, 6 16805; PWR5-NEXT: rldimi 9, 9, 32, 0 16806; PWR5-NEXT: rldicl 5, 4, 60, 4 16807; PWR5-NEXT: and 3, 3, 7 16808; PWR5-NEXT: add 4, 4, 5 16809; PWR5-NEXT: mulld 3, 3, 9 16810; PWR5-NEXT: and 4, 4, 7 16811; PWR5-NEXT: rldicl 3, 3, 8, 56 16812; PWR5-NEXT: li 5, 20 16813; PWR5-NEXT: mulld 4, 4, 9 16814; PWR5-NEXT: subc 6, 3, 5 16815; PWR5-NEXT: rldicl 4, 4, 8, 56 16816; PWR5-NEXT: subfe 3, 3, 3 16817; PWR5-NEXT: subc 5, 4, 5 16818; PWR5-NEXT: subfe 4, 4, 4 16819; PWR5-NEXT: blr 16820; 16821; PWR6-LABEL: ult_20_v2i64: 16822; PWR6: # %bb.0: 16823; PWR6-NEXT: lis 5, 21845 16824; PWR6-NEXT: lis 6, 13107 16825; PWR6-NEXT: ori 5, 5, 21845 16826; PWR6-NEXT: rotldi 8, 4, 63 16827; PWR6-NEXT: rotldi 9, 3, 63 16828; PWR6-NEXT: rldimi 5, 5, 32, 0 16829; PWR6-NEXT: and 8, 8, 5 16830; PWR6-NEXT: and 5, 9, 5 16831; PWR6-NEXT: ori 6, 6, 13107 16832; PWR6-NEXT: sub 3, 3, 5 16833; PWR6-NEXT: rldimi 6, 6, 32, 0 16834; PWR6-NEXT: sub 4, 4, 8 16835; PWR6-NEXT: and 8, 3, 6 16836; PWR6-NEXT: rotldi 3, 3, 62 16837; PWR6-NEXT: and 3, 3, 6 16838; PWR6-NEXT: lis 7, 3855 16839; PWR6-NEXT: and 5, 4, 6 16840; PWR6-NEXT: rotldi 4, 4, 62 16841; PWR6-NEXT: add 3, 8, 3 16842; PWR6-NEXT: lis 9, 257 16843; PWR6-NEXT: ori 7, 7, 3855 16844; PWR6-NEXT: and 4, 4, 6 16845; PWR6-NEXT: rldicl 6, 3, 60, 4 16846; PWR6-NEXT: ori 9, 9, 257 16847; PWR6-NEXT: rldimi 7, 7, 32, 0 16848; PWR6-NEXT: add 4, 5, 4 16849; PWR6-NEXT: add 3, 3, 6 16850; PWR6-NEXT: rldimi 9, 9, 32, 0 16851; PWR6-NEXT: rldicl 5, 4, 60, 4 16852; PWR6-NEXT: and 3, 3, 7 16853; PWR6-NEXT: add 4, 4, 5 16854; PWR6-NEXT: mulld 3, 3, 9 16855; PWR6-NEXT: and 4, 4, 7 16856; PWR6-NEXT: rldicl 3, 3, 8, 56 16857; PWR6-NEXT: li 5, 20 16858; PWR6-NEXT: mulld 4, 4, 9 16859; PWR6-NEXT: subc 6, 3, 5 16860; PWR6-NEXT: rldicl 4, 4, 8, 56 16861; PWR6-NEXT: subfe 3, 3, 3 16862; PWR6-NEXT: subc 5, 4, 5 16863; PWR6-NEXT: subfe 4, 4, 4 16864; PWR6-NEXT: blr 16865; 16866; PWR7-LABEL: ult_20_v2i64: 16867; PWR7: # %bb.0: 16868; PWR7-NEXT: addi 3, 1, -32 16869; PWR7-NEXT: li 5, -1 16870; PWR7-NEXT: stxvd2x 34, 0, 3 16871; PWR7-NEXT: ld 4, -24(1) 16872; PWR7-NEXT: ld 3, -32(1) 16873; PWR7-NEXT: popcntd 4, 4 16874; PWR7-NEXT: popcntd 3, 3 16875; PWR7-NEXT: cmpldi 4, 20 16876; PWR7-NEXT: li 4, 0 16877; PWR7-NEXT: isellt 6, 5, 4 16878; PWR7-NEXT: cmpldi 3, 20 16879; PWR7-NEXT: isellt 3, 5, 4 16880; PWR7-NEXT: std 6, -8(1) 16881; PWR7-NEXT: std 3, -16(1) 16882; PWR7-NEXT: addi 3, 1, -16 16883; PWR7-NEXT: lxvd2x 34, 0, 3 16884; PWR7-NEXT: blr 16885; 16886; PWR8-LABEL: ult_20_v2i64: 16887; PWR8: # %bb.0: 16888; PWR8-NEXT: addis 3, 2, .LCPI137_0@toc@ha 16889; PWR8-NEXT: vpopcntd 2, 2 16890; PWR8-NEXT: addi 3, 3, .LCPI137_0@toc@l 16891; PWR8-NEXT: lxvd2x 35, 0, 3 16892; PWR8-NEXT: vcmpgtud 2, 3, 2 16893; PWR8-NEXT: blr 16894; 16895; PWR9-LABEL: ult_20_v2i64: 16896; PWR9: # %bb.0: 16897; PWR9-NEXT: addis 3, 2, .LCPI137_0@toc@ha 16898; PWR9-NEXT: vpopcntd 2, 2 16899; PWR9-NEXT: addi 3, 3, .LCPI137_0@toc@l 16900; PWR9-NEXT: lxv 35, 0(3) 16901; PWR9-NEXT: vcmpgtud 2, 3, 2 16902; PWR9-NEXT: blr 16903 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 16904 %3 = icmp ult <2 x i64> %2, <i64 20, i64 20> 16905 %4 = sext <2 x i1> %3 to <2 x i64> 16906 ret <2 x i64> %4 16907} 16908 16909define <2 x i64> @ugt_20_v2i64(<2 x i64> %0) { 16910; PWR5-LABEL: ugt_20_v2i64: 16911; PWR5: # %bb.0: 16912; PWR5-NEXT: lis 5, 21845 16913; PWR5-NEXT: lis 6, 13107 16914; PWR5-NEXT: ori 5, 5, 21845 16915; PWR5-NEXT: rotldi 8, 4, 63 16916; PWR5-NEXT: rotldi 9, 3, 63 16917; PWR5-NEXT: rldimi 5, 5, 32, 0 16918; PWR5-NEXT: and 8, 8, 5 16919; PWR5-NEXT: and 5, 9, 5 16920; PWR5-NEXT: ori 6, 6, 13107 16921; PWR5-NEXT: sub 3, 3, 5 16922; PWR5-NEXT: rldimi 6, 6, 32, 0 16923; PWR5-NEXT: sub 4, 4, 8 16924; PWR5-NEXT: and 8, 3, 6 16925; PWR5-NEXT: rotldi 3, 3, 62 16926; PWR5-NEXT: and 3, 3, 6 16927; PWR5-NEXT: lis 7, 3855 16928; PWR5-NEXT: and 5, 4, 6 16929; PWR5-NEXT: rotldi 4, 4, 62 16930; PWR5-NEXT: add 3, 8, 3 16931; PWR5-NEXT: lis 9, 257 16932; PWR5-NEXT: ori 7, 7, 3855 16933; PWR5-NEXT: and 4, 4, 6 16934; PWR5-NEXT: rldicl 6, 3, 60, 4 16935; PWR5-NEXT: ori 9, 9, 257 16936; PWR5-NEXT: rldimi 7, 7, 32, 0 16937; PWR5-NEXT: add 4, 5, 4 16938; PWR5-NEXT: add 3, 3, 6 16939; PWR5-NEXT: rldimi 9, 9, 32, 0 16940; PWR5-NEXT: rldicl 5, 4, 60, 4 16941; PWR5-NEXT: and 3, 3, 7 16942; PWR5-NEXT: add 4, 4, 5 16943; PWR5-NEXT: mulld 3, 3, 9 16944; PWR5-NEXT: and 4, 4, 7 16945; PWR5-NEXT: rldicl 3, 3, 8, 56 16946; PWR5-NEXT: mulld 4, 4, 9 16947; PWR5-NEXT: li 5, 20 16948; PWR5-NEXT: subfic 3, 3, 20 16949; PWR5-NEXT: rldicl 4, 4, 8, 56 16950; PWR5-NEXT: subfe 3, 5, 5 16951; PWR5-NEXT: subfic 4, 4, 20 16952; PWR5-NEXT: subfe 4, 5, 5 16953; PWR5-NEXT: blr 16954; 16955; PWR6-LABEL: ugt_20_v2i64: 16956; PWR6: # %bb.0: 16957; PWR6-NEXT: lis 5, 21845 16958; PWR6-NEXT: lis 6, 13107 16959; PWR6-NEXT: ori 5, 5, 21845 16960; PWR6-NEXT: rotldi 8, 4, 63 16961; PWR6-NEXT: rotldi 9, 3, 63 16962; PWR6-NEXT: rldimi 5, 5, 32, 0 16963; PWR6-NEXT: and 8, 8, 5 16964; PWR6-NEXT: and 5, 9, 5 16965; PWR6-NEXT: ori 6, 6, 13107 16966; PWR6-NEXT: sub 3, 3, 5 16967; PWR6-NEXT: rldimi 6, 6, 32, 0 16968; PWR6-NEXT: sub 4, 4, 8 16969; PWR6-NEXT: and 8, 3, 6 16970; PWR6-NEXT: rotldi 3, 3, 62 16971; PWR6-NEXT: and 3, 3, 6 16972; PWR6-NEXT: lis 7, 3855 16973; PWR6-NEXT: and 5, 4, 6 16974; PWR6-NEXT: rotldi 4, 4, 62 16975; PWR6-NEXT: add 3, 8, 3 16976; PWR6-NEXT: lis 9, 257 16977; PWR6-NEXT: ori 7, 7, 3855 16978; PWR6-NEXT: and 4, 4, 6 16979; PWR6-NEXT: rldicl 6, 3, 60, 4 16980; PWR6-NEXT: ori 9, 9, 257 16981; PWR6-NEXT: rldimi 7, 7, 32, 0 16982; PWR6-NEXT: add 4, 5, 4 16983; PWR6-NEXT: add 3, 3, 6 16984; PWR6-NEXT: rldimi 9, 9, 32, 0 16985; PWR6-NEXT: rldicl 5, 4, 60, 4 16986; PWR6-NEXT: and 3, 3, 7 16987; PWR6-NEXT: add 4, 4, 5 16988; PWR6-NEXT: mulld 3, 3, 9 16989; PWR6-NEXT: and 4, 4, 7 16990; PWR6-NEXT: rldicl 3, 3, 8, 56 16991; PWR6-NEXT: mulld 4, 4, 9 16992; PWR6-NEXT: li 5, 20 16993; PWR6-NEXT: subfic 3, 3, 20 16994; PWR6-NEXT: rldicl 4, 4, 8, 56 16995; PWR6-NEXT: subfe 3, 5, 5 16996; PWR6-NEXT: subfic 4, 4, 20 16997; PWR6-NEXT: subfe 4, 5, 5 16998; PWR6-NEXT: blr 16999; 17000; PWR7-LABEL: ugt_20_v2i64: 17001; PWR7: # %bb.0: 17002; PWR7-NEXT: addi 3, 1, -32 17003; PWR7-NEXT: li 5, -1 17004; PWR7-NEXT: stxvd2x 34, 0, 3 17005; PWR7-NEXT: ld 4, -24(1) 17006; PWR7-NEXT: ld 3, -32(1) 17007; PWR7-NEXT: popcntd 4, 4 17008; PWR7-NEXT: popcntd 3, 3 17009; PWR7-NEXT: cmpldi 4, 20 17010; PWR7-NEXT: li 4, 0 17011; PWR7-NEXT: iselgt 6, 5, 4 17012; PWR7-NEXT: cmpldi 3, 20 17013; PWR7-NEXT: iselgt 3, 5, 4 17014; PWR7-NEXT: std 6, -8(1) 17015; PWR7-NEXT: std 3, -16(1) 17016; PWR7-NEXT: addi 3, 1, -16 17017; PWR7-NEXT: lxvd2x 34, 0, 3 17018; PWR7-NEXT: blr 17019; 17020; PWR8-LABEL: ugt_20_v2i64: 17021; PWR8: # %bb.0: 17022; PWR8-NEXT: addis 3, 2, .LCPI138_0@toc@ha 17023; PWR8-NEXT: vpopcntd 2, 2 17024; PWR8-NEXT: addi 3, 3, .LCPI138_0@toc@l 17025; PWR8-NEXT: lxvd2x 35, 0, 3 17026; PWR8-NEXT: vcmpgtud 2, 2, 3 17027; PWR8-NEXT: blr 17028; 17029; PWR9-LABEL: ugt_20_v2i64: 17030; PWR9: # %bb.0: 17031; PWR9-NEXT: addis 3, 2, .LCPI138_0@toc@ha 17032; PWR9-NEXT: vpopcntd 2, 2 17033; PWR9-NEXT: addi 3, 3, .LCPI138_0@toc@l 17034; PWR9-NEXT: lxv 35, 0(3) 17035; PWR9-NEXT: vcmpgtud 2, 2, 3 17036; PWR9-NEXT: blr 17037 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17038 %3 = icmp ugt <2 x i64> %2, <i64 20, i64 20> 17039 %4 = sext <2 x i1> %3 to <2 x i64> 17040 ret <2 x i64> %4 17041} 17042 17043define <2 x i64> @ult_21_v2i64(<2 x i64> %0) { 17044; PWR5-LABEL: ult_21_v2i64: 17045; PWR5: # %bb.0: 17046; PWR5-NEXT: lis 5, 21845 17047; PWR5-NEXT: lis 6, 13107 17048; PWR5-NEXT: ori 5, 5, 21845 17049; PWR5-NEXT: rotldi 8, 4, 63 17050; PWR5-NEXT: rotldi 9, 3, 63 17051; PWR5-NEXT: rldimi 5, 5, 32, 0 17052; PWR5-NEXT: and 8, 8, 5 17053; PWR5-NEXT: and 5, 9, 5 17054; PWR5-NEXT: ori 6, 6, 13107 17055; PWR5-NEXT: sub 3, 3, 5 17056; PWR5-NEXT: rldimi 6, 6, 32, 0 17057; PWR5-NEXT: sub 4, 4, 8 17058; PWR5-NEXT: and 8, 3, 6 17059; PWR5-NEXT: rotldi 3, 3, 62 17060; PWR5-NEXT: and 3, 3, 6 17061; PWR5-NEXT: lis 7, 3855 17062; PWR5-NEXT: and 5, 4, 6 17063; PWR5-NEXT: rotldi 4, 4, 62 17064; PWR5-NEXT: add 3, 8, 3 17065; PWR5-NEXT: lis 9, 257 17066; PWR5-NEXT: ori 7, 7, 3855 17067; PWR5-NEXT: and 4, 4, 6 17068; PWR5-NEXT: rldicl 6, 3, 60, 4 17069; PWR5-NEXT: ori 9, 9, 257 17070; PWR5-NEXT: rldimi 7, 7, 32, 0 17071; PWR5-NEXT: add 4, 5, 4 17072; PWR5-NEXT: add 3, 3, 6 17073; PWR5-NEXT: rldimi 9, 9, 32, 0 17074; PWR5-NEXT: rldicl 5, 4, 60, 4 17075; PWR5-NEXT: and 3, 3, 7 17076; PWR5-NEXT: add 4, 4, 5 17077; PWR5-NEXT: mulld 3, 3, 9 17078; PWR5-NEXT: and 4, 4, 7 17079; PWR5-NEXT: rldicl 3, 3, 8, 56 17080; PWR5-NEXT: li 5, 21 17081; PWR5-NEXT: mulld 4, 4, 9 17082; PWR5-NEXT: subc 6, 3, 5 17083; PWR5-NEXT: rldicl 4, 4, 8, 56 17084; PWR5-NEXT: subfe 3, 3, 3 17085; PWR5-NEXT: subc 5, 4, 5 17086; PWR5-NEXT: subfe 4, 4, 4 17087; PWR5-NEXT: blr 17088; 17089; PWR6-LABEL: ult_21_v2i64: 17090; PWR6: # %bb.0: 17091; PWR6-NEXT: lis 5, 21845 17092; PWR6-NEXT: lis 6, 13107 17093; PWR6-NEXT: ori 5, 5, 21845 17094; PWR6-NEXT: rotldi 8, 4, 63 17095; PWR6-NEXT: rotldi 9, 3, 63 17096; PWR6-NEXT: rldimi 5, 5, 32, 0 17097; PWR6-NEXT: and 8, 8, 5 17098; PWR6-NEXT: and 5, 9, 5 17099; PWR6-NEXT: ori 6, 6, 13107 17100; PWR6-NEXT: sub 3, 3, 5 17101; PWR6-NEXT: rldimi 6, 6, 32, 0 17102; PWR6-NEXT: sub 4, 4, 8 17103; PWR6-NEXT: and 8, 3, 6 17104; PWR6-NEXT: rotldi 3, 3, 62 17105; PWR6-NEXT: and 3, 3, 6 17106; PWR6-NEXT: lis 7, 3855 17107; PWR6-NEXT: and 5, 4, 6 17108; PWR6-NEXT: rotldi 4, 4, 62 17109; PWR6-NEXT: add 3, 8, 3 17110; PWR6-NEXT: lis 9, 257 17111; PWR6-NEXT: ori 7, 7, 3855 17112; PWR6-NEXT: and 4, 4, 6 17113; PWR6-NEXT: rldicl 6, 3, 60, 4 17114; PWR6-NEXT: ori 9, 9, 257 17115; PWR6-NEXT: rldimi 7, 7, 32, 0 17116; PWR6-NEXT: add 4, 5, 4 17117; PWR6-NEXT: add 3, 3, 6 17118; PWR6-NEXT: rldimi 9, 9, 32, 0 17119; PWR6-NEXT: rldicl 5, 4, 60, 4 17120; PWR6-NEXT: and 3, 3, 7 17121; PWR6-NEXT: add 4, 4, 5 17122; PWR6-NEXT: mulld 3, 3, 9 17123; PWR6-NEXT: and 4, 4, 7 17124; PWR6-NEXT: rldicl 3, 3, 8, 56 17125; PWR6-NEXT: li 5, 21 17126; PWR6-NEXT: mulld 4, 4, 9 17127; PWR6-NEXT: subc 6, 3, 5 17128; PWR6-NEXT: rldicl 4, 4, 8, 56 17129; PWR6-NEXT: subfe 3, 3, 3 17130; PWR6-NEXT: subc 5, 4, 5 17131; PWR6-NEXT: subfe 4, 4, 4 17132; PWR6-NEXT: blr 17133; 17134; PWR7-LABEL: ult_21_v2i64: 17135; PWR7: # %bb.0: 17136; PWR7-NEXT: addi 3, 1, -32 17137; PWR7-NEXT: li 5, -1 17138; PWR7-NEXT: stxvd2x 34, 0, 3 17139; PWR7-NEXT: ld 4, -24(1) 17140; PWR7-NEXT: ld 3, -32(1) 17141; PWR7-NEXT: popcntd 4, 4 17142; PWR7-NEXT: popcntd 3, 3 17143; PWR7-NEXT: cmpldi 4, 21 17144; PWR7-NEXT: li 4, 0 17145; PWR7-NEXT: isellt 6, 5, 4 17146; PWR7-NEXT: cmpldi 3, 21 17147; PWR7-NEXT: isellt 3, 5, 4 17148; PWR7-NEXT: std 6, -8(1) 17149; PWR7-NEXT: std 3, -16(1) 17150; PWR7-NEXT: addi 3, 1, -16 17151; PWR7-NEXT: lxvd2x 34, 0, 3 17152; PWR7-NEXT: blr 17153; 17154; PWR8-LABEL: ult_21_v2i64: 17155; PWR8: # %bb.0: 17156; PWR8-NEXT: addis 3, 2, .LCPI139_0@toc@ha 17157; PWR8-NEXT: vpopcntd 2, 2 17158; PWR8-NEXT: addi 3, 3, .LCPI139_0@toc@l 17159; PWR8-NEXT: lxvd2x 35, 0, 3 17160; PWR8-NEXT: vcmpgtud 2, 3, 2 17161; PWR8-NEXT: blr 17162; 17163; PWR9-LABEL: ult_21_v2i64: 17164; PWR9: # %bb.0: 17165; PWR9-NEXT: addis 3, 2, .LCPI139_0@toc@ha 17166; PWR9-NEXT: vpopcntd 2, 2 17167; PWR9-NEXT: addi 3, 3, .LCPI139_0@toc@l 17168; PWR9-NEXT: lxv 35, 0(3) 17169; PWR9-NEXT: vcmpgtud 2, 3, 2 17170; PWR9-NEXT: blr 17171 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17172 %3 = icmp ult <2 x i64> %2, <i64 21, i64 21> 17173 %4 = sext <2 x i1> %3 to <2 x i64> 17174 ret <2 x i64> %4 17175} 17176 17177define <2 x i64> @ugt_21_v2i64(<2 x i64> %0) { 17178; PWR5-LABEL: ugt_21_v2i64: 17179; PWR5: # %bb.0: 17180; PWR5-NEXT: lis 5, 21845 17181; PWR5-NEXT: lis 6, 13107 17182; PWR5-NEXT: ori 5, 5, 21845 17183; PWR5-NEXT: rotldi 8, 4, 63 17184; PWR5-NEXT: rotldi 9, 3, 63 17185; PWR5-NEXT: rldimi 5, 5, 32, 0 17186; PWR5-NEXT: and 8, 8, 5 17187; PWR5-NEXT: and 5, 9, 5 17188; PWR5-NEXT: ori 6, 6, 13107 17189; PWR5-NEXT: sub 3, 3, 5 17190; PWR5-NEXT: rldimi 6, 6, 32, 0 17191; PWR5-NEXT: sub 4, 4, 8 17192; PWR5-NEXT: and 8, 3, 6 17193; PWR5-NEXT: rotldi 3, 3, 62 17194; PWR5-NEXT: and 3, 3, 6 17195; PWR5-NEXT: lis 7, 3855 17196; PWR5-NEXT: and 5, 4, 6 17197; PWR5-NEXT: rotldi 4, 4, 62 17198; PWR5-NEXT: add 3, 8, 3 17199; PWR5-NEXT: lis 9, 257 17200; PWR5-NEXT: ori 7, 7, 3855 17201; PWR5-NEXT: and 4, 4, 6 17202; PWR5-NEXT: rldicl 6, 3, 60, 4 17203; PWR5-NEXT: ori 9, 9, 257 17204; PWR5-NEXT: rldimi 7, 7, 32, 0 17205; PWR5-NEXT: add 4, 5, 4 17206; PWR5-NEXT: add 3, 3, 6 17207; PWR5-NEXT: rldimi 9, 9, 32, 0 17208; PWR5-NEXT: rldicl 5, 4, 60, 4 17209; PWR5-NEXT: and 3, 3, 7 17210; PWR5-NEXT: add 4, 4, 5 17211; PWR5-NEXT: mulld 3, 3, 9 17212; PWR5-NEXT: and 4, 4, 7 17213; PWR5-NEXT: rldicl 3, 3, 8, 56 17214; PWR5-NEXT: mulld 4, 4, 9 17215; PWR5-NEXT: li 5, 21 17216; PWR5-NEXT: subfic 3, 3, 21 17217; PWR5-NEXT: rldicl 4, 4, 8, 56 17218; PWR5-NEXT: subfe 3, 5, 5 17219; PWR5-NEXT: subfic 4, 4, 21 17220; PWR5-NEXT: subfe 4, 5, 5 17221; PWR5-NEXT: blr 17222; 17223; PWR6-LABEL: ugt_21_v2i64: 17224; PWR6: # %bb.0: 17225; PWR6-NEXT: lis 5, 21845 17226; PWR6-NEXT: lis 6, 13107 17227; PWR6-NEXT: ori 5, 5, 21845 17228; PWR6-NEXT: rotldi 8, 4, 63 17229; PWR6-NEXT: rotldi 9, 3, 63 17230; PWR6-NEXT: rldimi 5, 5, 32, 0 17231; PWR6-NEXT: and 8, 8, 5 17232; PWR6-NEXT: and 5, 9, 5 17233; PWR6-NEXT: ori 6, 6, 13107 17234; PWR6-NEXT: sub 3, 3, 5 17235; PWR6-NEXT: rldimi 6, 6, 32, 0 17236; PWR6-NEXT: sub 4, 4, 8 17237; PWR6-NEXT: and 8, 3, 6 17238; PWR6-NEXT: rotldi 3, 3, 62 17239; PWR6-NEXT: and 3, 3, 6 17240; PWR6-NEXT: lis 7, 3855 17241; PWR6-NEXT: and 5, 4, 6 17242; PWR6-NEXT: rotldi 4, 4, 62 17243; PWR6-NEXT: add 3, 8, 3 17244; PWR6-NEXT: lis 9, 257 17245; PWR6-NEXT: ori 7, 7, 3855 17246; PWR6-NEXT: and 4, 4, 6 17247; PWR6-NEXT: rldicl 6, 3, 60, 4 17248; PWR6-NEXT: ori 9, 9, 257 17249; PWR6-NEXT: rldimi 7, 7, 32, 0 17250; PWR6-NEXT: add 4, 5, 4 17251; PWR6-NEXT: add 3, 3, 6 17252; PWR6-NEXT: rldimi 9, 9, 32, 0 17253; PWR6-NEXT: rldicl 5, 4, 60, 4 17254; PWR6-NEXT: and 3, 3, 7 17255; PWR6-NEXT: add 4, 4, 5 17256; PWR6-NEXT: mulld 3, 3, 9 17257; PWR6-NEXT: and 4, 4, 7 17258; PWR6-NEXT: rldicl 3, 3, 8, 56 17259; PWR6-NEXT: mulld 4, 4, 9 17260; PWR6-NEXT: li 5, 21 17261; PWR6-NEXT: subfic 3, 3, 21 17262; PWR6-NEXT: rldicl 4, 4, 8, 56 17263; PWR6-NEXT: subfe 3, 5, 5 17264; PWR6-NEXT: subfic 4, 4, 21 17265; PWR6-NEXT: subfe 4, 5, 5 17266; PWR6-NEXT: blr 17267; 17268; PWR7-LABEL: ugt_21_v2i64: 17269; PWR7: # %bb.0: 17270; PWR7-NEXT: addi 3, 1, -32 17271; PWR7-NEXT: li 5, -1 17272; PWR7-NEXT: stxvd2x 34, 0, 3 17273; PWR7-NEXT: ld 4, -24(1) 17274; PWR7-NEXT: ld 3, -32(1) 17275; PWR7-NEXT: popcntd 4, 4 17276; PWR7-NEXT: popcntd 3, 3 17277; PWR7-NEXT: cmpldi 4, 21 17278; PWR7-NEXT: li 4, 0 17279; PWR7-NEXT: iselgt 6, 5, 4 17280; PWR7-NEXT: cmpldi 3, 21 17281; PWR7-NEXT: iselgt 3, 5, 4 17282; PWR7-NEXT: std 6, -8(1) 17283; PWR7-NEXT: std 3, -16(1) 17284; PWR7-NEXT: addi 3, 1, -16 17285; PWR7-NEXT: lxvd2x 34, 0, 3 17286; PWR7-NEXT: blr 17287; 17288; PWR8-LABEL: ugt_21_v2i64: 17289; PWR8: # %bb.0: 17290; PWR8-NEXT: addis 3, 2, .LCPI140_0@toc@ha 17291; PWR8-NEXT: vpopcntd 2, 2 17292; PWR8-NEXT: addi 3, 3, .LCPI140_0@toc@l 17293; PWR8-NEXT: lxvd2x 35, 0, 3 17294; PWR8-NEXT: vcmpgtud 2, 2, 3 17295; PWR8-NEXT: blr 17296; 17297; PWR9-LABEL: ugt_21_v2i64: 17298; PWR9: # %bb.0: 17299; PWR9-NEXT: addis 3, 2, .LCPI140_0@toc@ha 17300; PWR9-NEXT: vpopcntd 2, 2 17301; PWR9-NEXT: addi 3, 3, .LCPI140_0@toc@l 17302; PWR9-NEXT: lxv 35, 0(3) 17303; PWR9-NEXT: vcmpgtud 2, 2, 3 17304; PWR9-NEXT: blr 17305 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17306 %3 = icmp ugt <2 x i64> %2, <i64 21, i64 21> 17307 %4 = sext <2 x i1> %3 to <2 x i64> 17308 ret <2 x i64> %4 17309} 17310 17311define <2 x i64> @ult_22_v2i64(<2 x i64> %0) { 17312; PWR5-LABEL: ult_22_v2i64: 17313; PWR5: # %bb.0: 17314; PWR5-NEXT: lis 5, 21845 17315; PWR5-NEXT: lis 6, 13107 17316; PWR5-NEXT: ori 5, 5, 21845 17317; PWR5-NEXT: rotldi 8, 4, 63 17318; PWR5-NEXT: rotldi 9, 3, 63 17319; PWR5-NEXT: rldimi 5, 5, 32, 0 17320; PWR5-NEXT: and 8, 8, 5 17321; PWR5-NEXT: and 5, 9, 5 17322; PWR5-NEXT: ori 6, 6, 13107 17323; PWR5-NEXT: sub 3, 3, 5 17324; PWR5-NEXT: rldimi 6, 6, 32, 0 17325; PWR5-NEXT: sub 4, 4, 8 17326; PWR5-NEXT: and 8, 3, 6 17327; PWR5-NEXT: rotldi 3, 3, 62 17328; PWR5-NEXT: and 3, 3, 6 17329; PWR5-NEXT: lis 7, 3855 17330; PWR5-NEXT: and 5, 4, 6 17331; PWR5-NEXT: rotldi 4, 4, 62 17332; PWR5-NEXT: add 3, 8, 3 17333; PWR5-NEXT: lis 9, 257 17334; PWR5-NEXT: ori 7, 7, 3855 17335; PWR5-NEXT: and 4, 4, 6 17336; PWR5-NEXT: rldicl 6, 3, 60, 4 17337; PWR5-NEXT: ori 9, 9, 257 17338; PWR5-NEXT: rldimi 7, 7, 32, 0 17339; PWR5-NEXT: add 4, 5, 4 17340; PWR5-NEXT: add 3, 3, 6 17341; PWR5-NEXT: rldimi 9, 9, 32, 0 17342; PWR5-NEXT: rldicl 5, 4, 60, 4 17343; PWR5-NEXT: and 3, 3, 7 17344; PWR5-NEXT: add 4, 4, 5 17345; PWR5-NEXT: mulld 3, 3, 9 17346; PWR5-NEXT: and 4, 4, 7 17347; PWR5-NEXT: rldicl 3, 3, 8, 56 17348; PWR5-NEXT: li 5, 22 17349; PWR5-NEXT: mulld 4, 4, 9 17350; PWR5-NEXT: subc 6, 3, 5 17351; PWR5-NEXT: rldicl 4, 4, 8, 56 17352; PWR5-NEXT: subfe 3, 3, 3 17353; PWR5-NEXT: subc 5, 4, 5 17354; PWR5-NEXT: subfe 4, 4, 4 17355; PWR5-NEXT: blr 17356; 17357; PWR6-LABEL: ult_22_v2i64: 17358; PWR6: # %bb.0: 17359; PWR6-NEXT: lis 5, 21845 17360; PWR6-NEXT: lis 6, 13107 17361; PWR6-NEXT: ori 5, 5, 21845 17362; PWR6-NEXT: rotldi 8, 4, 63 17363; PWR6-NEXT: rotldi 9, 3, 63 17364; PWR6-NEXT: rldimi 5, 5, 32, 0 17365; PWR6-NEXT: and 8, 8, 5 17366; PWR6-NEXT: and 5, 9, 5 17367; PWR6-NEXT: ori 6, 6, 13107 17368; PWR6-NEXT: sub 3, 3, 5 17369; PWR6-NEXT: rldimi 6, 6, 32, 0 17370; PWR6-NEXT: sub 4, 4, 8 17371; PWR6-NEXT: and 8, 3, 6 17372; PWR6-NEXT: rotldi 3, 3, 62 17373; PWR6-NEXT: and 3, 3, 6 17374; PWR6-NEXT: lis 7, 3855 17375; PWR6-NEXT: and 5, 4, 6 17376; PWR6-NEXT: rotldi 4, 4, 62 17377; PWR6-NEXT: add 3, 8, 3 17378; PWR6-NEXT: lis 9, 257 17379; PWR6-NEXT: ori 7, 7, 3855 17380; PWR6-NEXT: and 4, 4, 6 17381; PWR6-NEXT: rldicl 6, 3, 60, 4 17382; PWR6-NEXT: ori 9, 9, 257 17383; PWR6-NEXT: rldimi 7, 7, 32, 0 17384; PWR6-NEXT: add 4, 5, 4 17385; PWR6-NEXT: add 3, 3, 6 17386; PWR6-NEXT: rldimi 9, 9, 32, 0 17387; PWR6-NEXT: rldicl 5, 4, 60, 4 17388; PWR6-NEXT: and 3, 3, 7 17389; PWR6-NEXT: add 4, 4, 5 17390; PWR6-NEXT: mulld 3, 3, 9 17391; PWR6-NEXT: and 4, 4, 7 17392; PWR6-NEXT: rldicl 3, 3, 8, 56 17393; PWR6-NEXT: li 5, 22 17394; PWR6-NEXT: mulld 4, 4, 9 17395; PWR6-NEXT: subc 6, 3, 5 17396; PWR6-NEXT: rldicl 4, 4, 8, 56 17397; PWR6-NEXT: subfe 3, 3, 3 17398; PWR6-NEXT: subc 5, 4, 5 17399; PWR6-NEXT: subfe 4, 4, 4 17400; PWR6-NEXT: blr 17401; 17402; PWR7-LABEL: ult_22_v2i64: 17403; PWR7: # %bb.0: 17404; PWR7-NEXT: addi 3, 1, -32 17405; PWR7-NEXT: li 5, -1 17406; PWR7-NEXT: stxvd2x 34, 0, 3 17407; PWR7-NEXT: ld 4, -24(1) 17408; PWR7-NEXT: ld 3, -32(1) 17409; PWR7-NEXT: popcntd 4, 4 17410; PWR7-NEXT: popcntd 3, 3 17411; PWR7-NEXT: cmpldi 4, 22 17412; PWR7-NEXT: li 4, 0 17413; PWR7-NEXT: isellt 6, 5, 4 17414; PWR7-NEXT: cmpldi 3, 22 17415; PWR7-NEXT: isellt 3, 5, 4 17416; PWR7-NEXT: std 6, -8(1) 17417; PWR7-NEXT: std 3, -16(1) 17418; PWR7-NEXT: addi 3, 1, -16 17419; PWR7-NEXT: lxvd2x 34, 0, 3 17420; PWR7-NEXT: blr 17421; 17422; PWR8-LABEL: ult_22_v2i64: 17423; PWR8: # %bb.0: 17424; PWR8-NEXT: addis 3, 2, .LCPI141_0@toc@ha 17425; PWR8-NEXT: vpopcntd 2, 2 17426; PWR8-NEXT: addi 3, 3, .LCPI141_0@toc@l 17427; PWR8-NEXT: lxvd2x 35, 0, 3 17428; PWR8-NEXT: vcmpgtud 2, 3, 2 17429; PWR8-NEXT: blr 17430; 17431; PWR9-LABEL: ult_22_v2i64: 17432; PWR9: # %bb.0: 17433; PWR9-NEXT: addis 3, 2, .LCPI141_0@toc@ha 17434; PWR9-NEXT: vpopcntd 2, 2 17435; PWR9-NEXT: addi 3, 3, .LCPI141_0@toc@l 17436; PWR9-NEXT: lxv 35, 0(3) 17437; PWR9-NEXT: vcmpgtud 2, 3, 2 17438; PWR9-NEXT: blr 17439 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17440 %3 = icmp ult <2 x i64> %2, <i64 22, i64 22> 17441 %4 = sext <2 x i1> %3 to <2 x i64> 17442 ret <2 x i64> %4 17443} 17444 17445define <2 x i64> @ugt_22_v2i64(<2 x i64> %0) { 17446; PWR5-LABEL: ugt_22_v2i64: 17447; PWR5: # %bb.0: 17448; PWR5-NEXT: lis 5, 21845 17449; PWR5-NEXT: lis 6, 13107 17450; PWR5-NEXT: ori 5, 5, 21845 17451; PWR5-NEXT: rotldi 8, 4, 63 17452; PWR5-NEXT: rotldi 9, 3, 63 17453; PWR5-NEXT: rldimi 5, 5, 32, 0 17454; PWR5-NEXT: and 8, 8, 5 17455; PWR5-NEXT: and 5, 9, 5 17456; PWR5-NEXT: ori 6, 6, 13107 17457; PWR5-NEXT: sub 3, 3, 5 17458; PWR5-NEXT: rldimi 6, 6, 32, 0 17459; PWR5-NEXT: sub 4, 4, 8 17460; PWR5-NEXT: and 8, 3, 6 17461; PWR5-NEXT: rotldi 3, 3, 62 17462; PWR5-NEXT: and 3, 3, 6 17463; PWR5-NEXT: lis 7, 3855 17464; PWR5-NEXT: and 5, 4, 6 17465; PWR5-NEXT: rotldi 4, 4, 62 17466; PWR5-NEXT: add 3, 8, 3 17467; PWR5-NEXT: lis 9, 257 17468; PWR5-NEXT: ori 7, 7, 3855 17469; PWR5-NEXT: and 4, 4, 6 17470; PWR5-NEXT: rldicl 6, 3, 60, 4 17471; PWR5-NEXT: ori 9, 9, 257 17472; PWR5-NEXT: rldimi 7, 7, 32, 0 17473; PWR5-NEXT: add 4, 5, 4 17474; PWR5-NEXT: add 3, 3, 6 17475; PWR5-NEXT: rldimi 9, 9, 32, 0 17476; PWR5-NEXT: rldicl 5, 4, 60, 4 17477; PWR5-NEXT: and 3, 3, 7 17478; PWR5-NEXT: add 4, 4, 5 17479; PWR5-NEXT: mulld 3, 3, 9 17480; PWR5-NEXT: and 4, 4, 7 17481; PWR5-NEXT: rldicl 3, 3, 8, 56 17482; PWR5-NEXT: mulld 4, 4, 9 17483; PWR5-NEXT: li 5, 22 17484; PWR5-NEXT: subfic 3, 3, 22 17485; PWR5-NEXT: rldicl 4, 4, 8, 56 17486; PWR5-NEXT: subfe 3, 5, 5 17487; PWR5-NEXT: subfic 4, 4, 22 17488; PWR5-NEXT: subfe 4, 5, 5 17489; PWR5-NEXT: blr 17490; 17491; PWR6-LABEL: ugt_22_v2i64: 17492; PWR6: # %bb.0: 17493; PWR6-NEXT: lis 5, 21845 17494; PWR6-NEXT: lis 6, 13107 17495; PWR6-NEXT: ori 5, 5, 21845 17496; PWR6-NEXT: rotldi 8, 4, 63 17497; PWR6-NEXT: rotldi 9, 3, 63 17498; PWR6-NEXT: rldimi 5, 5, 32, 0 17499; PWR6-NEXT: and 8, 8, 5 17500; PWR6-NEXT: and 5, 9, 5 17501; PWR6-NEXT: ori 6, 6, 13107 17502; PWR6-NEXT: sub 3, 3, 5 17503; PWR6-NEXT: rldimi 6, 6, 32, 0 17504; PWR6-NEXT: sub 4, 4, 8 17505; PWR6-NEXT: and 8, 3, 6 17506; PWR6-NEXT: rotldi 3, 3, 62 17507; PWR6-NEXT: and 3, 3, 6 17508; PWR6-NEXT: lis 7, 3855 17509; PWR6-NEXT: and 5, 4, 6 17510; PWR6-NEXT: rotldi 4, 4, 62 17511; PWR6-NEXT: add 3, 8, 3 17512; PWR6-NEXT: lis 9, 257 17513; PWR6-NEXT: ori 7, 7, 3855 17514; PWR6-NEXT: and 4, 4, 6 17515; PWR6-NEXT: rldicl 6, 3, 60, 4 17516; PWR6-NEXT: ori 9, 9, 257 17517; PWR6-NEXT: rldimi 7, 7, 32, 0 17518; PWR6-NEXT: add 4, 5, 4 17519; PWR6-NEXT: add 3, 3, 6 17520; PWR6-NEXT: rldimi 9, 9, 32, 0 17521; PWR6-NEXT: rldicl 5, 4, 60, 4 17522; PWR6-NEXT: and 3, 3, 7 17523; PWR6-NEXT: add 4, 4, 5 17524; PWR6-NEXT: mulld 3, 3, 9 17525; PWR6-NEXT: and 4, 4, 7 17526; PWR6-NEXT: rldicl 3, 3, 8, 56 17527; PWR6-NEXT: mulld 4, 4, 9 17528; PWR6-NEXT: li 5, 22 17529; PWR6-NEXT: subfic 3, 3, 22 17530; PWR6-NEXT: rldicl 4, 4, 8, 56 17531; PWR6-NEXT: subfe 3, 5, 5 17532; PWR6-NEXT: subfic 4, 4, 22 17533; PWR6-NEXT: subfe 4, 5, 5 17534; PWR6-NEXT: blr 17535; 17536; PWR7-LABEL: ugt_22_v2i64: 17537; PWR7: # %bb.0: 17538; PWR7-NEXT: addi 3, 1, -32 17539; PWR7-NEXT: li 5, -1 17540; PWR7-NEXT: stxvd2x 34, 0, 3 17541; PWR7-NEXT: ld 4, -24(1) 17542; PWR7-NEXT: ld 3, -32(1) 17543; PWR7-NEXT: popcntd 4, 4 17544; PWR7-NEXT: popcntd 3, 3 17545; PWR7-NEXT: cmpldi 4, 22 17546; PWR7-NEXT: li 4, 0 17547; PWR7-NEXT: iselgt 6, 5, 4 17548; PWR7-NEXT: cmpldi 3, 22 17549; PWR7-NEXT: iselgt 3, 5, 4 17550; PWR7-NEXT: std 6, -8(1) 17551; PWR7-NEXT: std 3, -16(1) 17552; PWR7-NEXT: addi 3, 1, -16 17553; PWR7-NEXT: lxvd2x 34, 0, 3 17554; PWR7-NEXT: blr 17555; 17556; PWR8-LABEL: ugt_22_v2i64: 17557; PWR8: # %bb.0: 17558; PWR8-NEXT: addis 3, 2, .LCPI142_0@toc@ha 17559; PWR8-NEXT: vpopcntd 2, 2 17560; PWR8-NEXT: addi 3, 3, .LCPI142_0@toc@l 17561; PWR8-NEXT: lxvd2x 35, 0, 3 17562; PWR8-NEXT: vcmpgtud 2, 2, 3 17563; PWR8-NEXT: blr 17564; 17565; PWR9-LABEL: ugt_22_v2i64: 17566; PWR9: # %bb.0: 17567; PWR9-NEXT: addis 3, 2, .LCPI142_0@toc@ha 17568; PWR9-NEXT: vpopcntd 2, 2 17569; PWR9-NEXT: addi 3, 3, .LCPI142_0@toc@l 17570; PWR9-NEXT: lxv 35, 0(3) 17571; PWR9-NEXT: vcmpgtud 2, 2, 3 17572; PWR9-NEXT: blr 17573 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17574 %3 = icmp ugt <2 x i64> %2, <i64 22, i64 22> 17575 %4 = sext <2 x i1> %3 to <2 x i64> 17576 ret <2 x i64> %4 17577} 17578 17579define <2 x i64> @ult_23_v2i64(<2 x i64> %0) { 17580; PWR5-LABEL: ult_23_v2i64: 17581; PWR5: # %bb.0: 17582; PWR5-NEXT: lis 5, 21845 17583; PWR5-NEXT: lis 6, 13107 17584; PWR5-NEXT: ori 5, 5, 21845 17585; PWR5-NEXT: rotldi 8, 4, 63 17586; PWR5-NEXT: rotldi 9, 3, 63 17587; PWR5-NEXT: rldimi 5, 5, 32, 0 17588; PWR5-NEXT: and 8, 8, 5 17589; PWR5-NEXT: and 5, 9, 5 17590; PWR5-NEXT: ori 6, 6, 13107 17591; PWR5-NEXT: sub 3, 3, 5 17592; PWR5-NEXT: rldimi 6, 6, 32, 0 17593; PWR5-NEXT: sub 4, 4, 8 17594; PWR5-NEXT: and 8, 3, 6 17595; PWR5-NEXT: rotldi 3, 3, 62 17596; PWR5-NEXT: and 3, 3, 6 17597; PWR5-NEXT: lis 7, 3855 17598; PWR5-NEXT: and 5, 4, 6 17599; PWR5-NEXT: rotldi 4, 4, 62 17600; PWR5-NEXT: add 3, 8, 3 17601; PWR5-NEXT: lis 9, 257 17602; PWR5-NEXT: ori 7, 7, 3855 17603; PWR5-NEXT: and 4, 4, 6 17604; PWR5-NEXT: rldicl 6, 3, 60, 4 17605; PWR5-NEXT: ori 9, 9, 257 17606; PWR5-NEXT: rldimi 7, 7, 32, 0 17607; PWR5-NEXT: add 4, 5, 4 17608; PWR5-NEXT: add 3, 3, 6 17609; PWR5-NEXT: rldimi 9, 9, 32, 0 17610; PWR5-NEXT: rldicl 5, 4, 60, 4 17611; PWR5-NEXT: and 3, 3, 7 17612; PWR5-NEXT: add 4, 4, 5 17613; PWR5-NEXT: mulld 3, 3, 9 17614; PWR5-NEXT: and 4, 4, 7 17615; PWR5-NEXT: rldicl 3, 3, 8, 56 17616; PWR5-NEXT: li 5, 23 17617; PWR5-NEXT: mulld 4, 4, 9 17618; PWR5-NEXT: subc 6, 3, 5 17619; PWR5-NEXT: rldicl 4, 4, 8, 56 17620; PWR5-NEXT: subfe 3, 3, 3 17621; PWR5-NEXT: subc 5, 4, 5 17622; PWR5-NEXT: subfe 4, 4, 4 17623; PWR5-NEXT: blr 17624; 17625; PWR6-LABEL: ult_23_v2i64: 17626; PWR6: # %bb.0: 17627; PWR6-NEXT: lis 5, 21845 17628; PWR6-NEXT: lis 6, 13107 17629; PWR6-NEXT: ori 5, 5, 21845 17630; PWR6-NEXT: rotldi 8, 4, 63 17631; PWR6-NEXT: rotldi 9, 3, 63 17632; PWR6-NEXT: rldimi 5, 5, 32, 0 17633; PWR6-NEXT: and 8, 8, 5 17634; PWR6-NEXT: and 5, 9, 5 17635; PWR6-NEXT: ori 6, 6, 13107 17636; PWR6-NEXT: sub 3, 3, 5 17637; PWR6-NEXT: rldimi 6, 6, 32, 0 17638; PWR6-NEXT: sub 4, 4, 8 17639; PWR6-NEXT: and 8, 3, 6 17640; PWR6-NEXT: rotldi 3, 3, 62 17641; PWR6-NEXT: and 3, 3, 6 17642; PWR6-NEXT: lis 7, 3855 17643; PWR6-NEXT: and 5, 4, 6 17644; PWR6-NEXT: rotldi 4, 4, 62 17645; PWR6-NEXT: add 3, 8, 3 17646; PWR6-NEXT: lis 9, 257 17647; PWR6-NEXT: ori 7, 7, 3855 17648; PWR6-NEXT: and 4, 4, 6 17649; PWR6-NEXT: rldicl 6, 3, 60, 4 17650; PWR6-NEXT: ori 9, 9, 257 17651; PWR6-NEXT: rldimi 7, 7, 32, 0 17652; PWR6-NEXT: add 4, 5, 4 17653; PWR6-NEXT: add 3, 3, 6 17654; PWR6-NEXT: rldimi 9, 9, 32, 0 17655; PWR6-NEXT: rldicl 5, 4, 60, 4 17656; PWR6-NEXT: and 3, 3, 7 17657; PWR6-NEXT: add 4, 4, 5 17658; PWR6-NEXT: mulld 3, 3, 9 17659; PWR6-NEXT: and 4, 4, 7 17660; PWR6-NEXT: rldicl 3, 3, 8, 56 17661; PWR6-NEXT: li 5, 23 17662; PWR6-NEXT: mulld 4, 4, 9 17663; PWR6-NEXT: subc 6, 3, 5 17664; PWR6-NEXT: rldicl 4, 4, 8, 56 17665; PWR6-NEXT: subfe 3, 3, 3 17666; PWR6-NEXT: subc 5, 4, 5 17667; PWR6-NEXT: subfe 4, 4, 4 17668; PWR6-NEXT: blr 17669; 17670; PWR7-LABEL: ult_23_v2i64: 17671; PWR7: # %bb.0: 17672; PWR7-NEXT: addi 3, 1, -32 17673; PWR7-NEXT: li 5, -1 17674; PWR7-NEXT: stxvd2x 34, 0, 3 17675; PWR7-NEXT: ld 4, -24(1) 17676; PWR7-NEXT: ld 3, -32(1) 17677; PWR7-NEXT: popcntd 4, 4 17678; PWR7-NEXT: popcntd 3, 3 17679; PWR7-NEXT: cmpldi 4, 23 17680; PWR7-NEXT: li 4, 0 17681; PWR7-NEXT: isellt 6, 5, 4 17682; PWR7-NEXT: cmpldi 3, 23 17683; PWR7-NEXT: isellt 3, 5, 4 17684; PWR7-NEXT: std 6, -8(1) 17685; PWR7-NEXT: std 3, -16(1) 17686; PWR7-NEXT: addi 3, 1, -16 17687; PWR7-NEXT: lxvd2x 34, 0, 3 17688; PWR7-NEXT: blr 17689; 17690; PWR8-LABEL: ult_23_v2i64: 17691; PWR8: # %bb.0: 17692; PWR8-NEXT: addis 3, 2, .LCPI143_0@toc@ha 17693; PWR8-NEXT: vpopcntd 2, 2 17694; PWR8-NEXT: addi 3, 3, .LCPI143_0@toc@l 17695; PWR8-NEXT: lxvd2x 35, 0, 3 17696; PWR8-NEXT: vcmpgtud 2, 3, 2 17697; PWR8-NEXT: blr 17698; 17699; PWR9-LABEL: ult_23_v2i64: 17700; PWR9: # %bb.0: 17701; PWR9-NEXT: addis 3, 2, .LCPI143_0@toc@ha 17702; PWR9-NEXT: vpopcntd 2, 2 17703; PWR9-NEXT: addi 3, 3, .LCPI143_0@toc@l 17704; PWR9-NEXT: lxv 35, 0(3) 17705; PWR9-NEXT: vcmpgtud 2, 3, 2 17706; PWR9-NEXT: blr 17707 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17708 %3 = icmp ult <2 x i64> %2, <i64 23, i64 23> 17709 %4 = sext <2 x i1> %3 to <2 x i64> 17710 ret <2 x i64> %4 17711} 17712 17713define <2 x i64> @ugt_23_v2i64(<2 x i64> %0) { 17714; PWR5-LABEL: ugt_23_v2i64: 17715; PWR5: # %bb.0: 17716; PWR5-NEXT: lis 5, 21845 17717; PWR5-NEXT: lis 6, 13107 17718; PWR5-NEXT: ori 5, 5, 21845 17719; PWR5-NEXT: rotldi 8, 4, 63 17720; PWR5-NEXT: rotldi 9, 3, 63 17721; PWR5-NEXT: rldimi 5, 5, 32, 0 17722; PWR5-NEXT: and 8, 8, 5 17723; PWR5-NEXT: and 5, 9, 5 17724; PWR5-NEXT: ori 6, 6, 13107 17725; PWR5-NEXT: sub 3, 3, 5 17726; PWR5-NEXT: rldimi 6, 6, 32, 0 17727; PWR5-NEXT: sub 4, 4, 8 17728; PWR5-NEXT: and 8, 3, 6 17729; PWR5-NEXT: rotldi 3, 3, 62 17730; PWR5-NEXT: and 3, 3, 6 17731; PWR5-NEXT: lis 7, 3855 17732; PWR5-NEXT: and 5, 4, 6 17733; PWR5-NEXT: rotldi 4, 4, 62 17734; PWR5-NEXT: add 3, 8, 3 17735; PWR5-NEXT: lis 9, 257 17736; PWR5-NEXT: ori 7, 7, 3855 17737; PWR5-NEXT: and 4, 4, 6 17738; PWR5-NEXT: rldicl 6, 3, 60, 4 17739; PWR5-NEXT: ori 9, 9, 257 17740; PWR5-NEXT: rldimi 7, 7, 32, 0 17741; PWR5-NEXT: add 4, 5, 4 17742; PWR5-NEXT: add 3, 3, 6 17743; PWR5-NEXT: rldimi 9, 9, 32, 0 17744; PWR5-NEXT: rldicl 5, 4, 60, 4 17745; PWR5-NEXT: and 3, 3, 7 17746; PWR5-NEXT: add 4, 4, 5 17747; PWR5-NEXT: mulld 3, 3, 9 17748; PWR5-NEXT: and 4, 4, 7 17749; PWR5-NEXT: rldicl 3, 3, 8, 56 17750; PWR5-NEXT: mulld 4, 4, 9 17751; PWR5-NEXT: li 5, 23 17752; PWR5-NEXT: subfic 3, 3, 23 17753; PWR5-NEXT: rldicl 4, 4, 8, 56 17754; PWR5-NEXT: subfe 3, 5, 5 17755; PWR5-NEXT: subfic 4, 4, 23 17756; PWR5-NEXT: subfe 4, 5, 5 17757; PWR5-NEXT: blr 17758; 17759; PWR6-LABEL: ugt_23_v2i64: 17760; PWR6: # %bb.0: 17761; PWR6-NEXT: lis 5, 21845 17762; PWR6-NEXT: lis 6, 13107 17763; PWR6-NEXT: ori 5, 5, 21845 17764; PWR6-NEXT: rotldi 8, 4, 63 17765; PWR6-NEXT: rotldi 9, 3, 63 17766; PWR6-NEXT: rldimi 5, 5, 32, 0 17767; PWR6-NEXT: and 8, 8, 5 17768; PWR6-NEXT: and 5, 9, 5 17769; PWR6-NEXT: ori 6, 6, 13107 17770; PWR6-NEXT: sub 3, 3, 5 17771; PWR6-NEXT: rldimi 6, 6, 32, 0 17772; PWR6-NEXT: sub 4, 4, 8 17773; PWR6-NEXT: and 8, 3, 6 17774; PWR6-NEXT: rotldi 3, 3, 62 17775; PWR6-NEXT: and 3, 3, 6 17776; PWR6-NEXT: lis 7, 3855 17777; PWR6-NEXT: and 5, 4, 6 17778; PWR6-NEXT: rotldi 4, 4, 62 17779; PWR6-NEXT: add 3, 8, 3 17780; PWR6-NEXT: lis 9, 257 17781; PWR6-NEXT: ori 7, 7, 3855 17782; PWR6-NEXT: and 4, 4, 6 17783; PWR6-NEXT: rldicl 6, 3, 60, 4 17784; PWR6-NEXT: ori 9, 9, 257 17785; PWR6-NEXT: rldimi 7, 7, 32, 0 17786; PWR6-NEXT: add 4, 5, 4 17787; PWR6-NEXT: add 3, 3, 6 17788; PWR6-NEXT: rldimi 9, 9, 32, 0 17789; PWR6-NEXT: rldicl 5, 4, 60, 4 17790; PWR6-NEXT: and 3, 3, 7 17791; PWR6-NEXT: add 4, 4, 5 17792; PWR6-NEXT: mulld 3, 3, 9 17793; PWR6-NEXT: and 4, 4, 7 17794; PWR6-NEXT: rldicl 3, 3, 8, 56 17795; PWR6-NEXT: mulld 4, 4, 9 17796; PWR6-NEXT: li 5, 23 17797; PWR6-NEXT: subfic 3, 3, 23 17798; PWR6-NEXT: rldicl 4, 4, 8, 56 17799; PWR6-NEXT: subfe 3, 5, 5 17800; PWR6-NEXT: subfic 4, 4, 23 17801; PWR6-NEXT: subfe 4, 5, 5 17802; PWR6-NEXT: blr 17803; 17804; PWR7-LABEL: ugt_23_v2i64: 17805; PWR7: # %bb.0: 17806; PWR7-NEXT: addi 3, 1, -32 17807; PWR7-NEXT: li 5, -1 17808; PWR7-NEXT: stxvd2x 34, 0, 3 17809; PWR7-NEXT: ld 4, -24(1) 17810; PWR7-NEXT: ld 3, -32(1) 17811; PWR7-NEXT: popcntd 4, 4 17812; PWR7-NEXT: popcntd 3, 3 17813; PWR7-NEXT: cmpldi 4, 23 17814; PWR7-NEXT: li 4, 0 17815; PWR7-NEXT: iselgt 6, 5, 4 17816; PWR7-NEXT: cmpldi 3, 23 17817; PWR7-NEXT: iselgt 3, 5, 4 17818; PWR7-NEXT: std 6, -8(1) 17819; PWR7-NEXT: std 3, -16(1) 17820; PWR7-NEXT: addi 3, 1, -16 17821; PWR7-NEXT: lxvd2x 34, 0, 3 17822; PWR7-NEXT: blr 17823; 17824; PWR8-LABEL: ugt_23_v2i64: 17825; PWR8: # %bb.0: 17826; PWR8-NEXT: addis 3, 2, .LCPI144_0@toc@ha 17827; PWR8-NEXT: vpopcntd 2, 2 17828; PWR8-NEXT: addi 3, 3, .LCPI144_0@toc@l 17829; PWR8-NEXT: lxvd2x 35, 0, 3 17830; PWR8-NEXT: vcmpgtud 2, 2, 3 17831; PWR8-NEXT: blr 17832; 17833; PWR9-LABEL: ugt_23_v2i64: 17834; PWR9: # %bb.0: 17835; PWR9-NEXT: addis 3, 2, .LCPI144_0@toc@ha 17836; PWR9-NEXT: vpopcntd 2, 2 17837; PWR9-NEXT: addi 3, 3, .LCPI144_0@toc@l 17838; PWR9-NEXT: lxv 35, 0(3) 17839; PWR9-NEXT: vcmpgtud 2, 2, 3 17840; PWR9-NEXT: blr 17841 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17842 %3 = icmp ugt <2 x i64> %2, <i64 23, i64 23> 17843 %4 = sext <2 x i1> %3 to <2 x i64> 17844 ret <2 x i64> %4 17845} 17846 17847define <2 x i64> @ult_24_v2i64(<2 x i64> %0) { 17848; PWR5-LABEL: ult_24_v2i64: 17849; PWR5: # %bb.0: 17850; PWR5-NEXT: lis 5, 21845 17851; PWR5-NEXT: lis 6, 13107 17852; PWR5-NEXT: ori 5, 5, 21845 17853; PWR5-NEXT: rotldi 8, 4, 63 17854; PWR5-NEXT: rotldi 9, 3, 63 17855; PWR5-NEXT: rldimi 5, 5, 32, 0 17856; PWR5-NEXT: and 8, 8, 5 17857; PWR5-NEXT: and 5, 9, 5 17858; PWR5-NEXT: ori 6, 6, 13107 17859; PWR5-NEXT: sub 3, 3, 5 17860; PWR5-NEXT: rldimi 6, 6, 32, 0 17861; PWR5-NEXT: sub 4, 4, 8 17862; PWR5-NEXT: and 8, 3, 6 17863; PWR5-NEXT: rotldi 3, 3, 62 17864; PWR5-NEXT: and 3, 3, 6 17865; PWR5-NEXT: lis 7, 3855 17866; PWR5-NEXT: and 5, 4, 6 17867; PWR5-NEXT: rotldi 4, 4, 62 17868; PWR5-NEXT: add 3, 8, 3 17869; PWR5-NEXT: lis 9, 257 17870; PWR5-NEXT: ori 7, 7, 3855 17871; PWR5-NEXT: and 4, 4, 6 17872; PWR5-NEXT: rldicl 6, 3, 60, 4 17873; PWR5-NEXT: ori 9, 9, 257 17874; PWR5-NEXT: rldimi 7, 7, 32, 0 17875; PWR5-NEXT: add 4, 5, 4 17876; PWR5-NEXT: add 3, 3, 6 17877; PWR5-NEXT: rldimi 9, 9, 32, 0 17878; PWR5-NEXT: rldicl 5, 4, 60, 4 17879; PWR5-NEXT: and 3, 3, 7 17880; PWR5-NEXT: add 4, 4, 5 17881; PWR5-NEXT: mulld 3, 3, 9 17882; PWR5-NEXT: and 4, 4, 7 17883; PWR5-NEXT: rldicl 3, 3, 8, 56 17884; PWR5-NEXT: li 5, 24 17885; PWR5-NEXT: mulld 4, 4, 9 17886; PWR5-NEXT: subc 6, 3, 5 17887; PWR5-NEXT: rldicl 4, 4, 8, 56 17888; PWR5-NEXT: subfe 3, 3, 3 17889; PWR5-NEXT: subc 5, 4, 5 17890; PWR5-NEXT: subfe 4, 4, 4 17891; PWR5-NEXT: blr 17892; 17893; PWR6-LABEL: ult_24_v2i64: 17894; PWR6: # %bb.0: 17895; PWR6-NEXT: lis 5, 21845 17896; PWR6-NEXT: lis 6, 13107 17897; PWR6-NEXT: ori 5, 5, 21845 17898; PWR6-NEXT: rotldi 8, 4, 63 17899; PWR6-NEXT: rotldi 9, 3, 63 17900; PWR6-NEXT: rldimi 5, 5, 32, 0 17901; PWR6-NEXT: and 8, 8, 5 17902; PWR6-NEXT: and 5, 9, 5 17903; PWR6-NEXT: ori 6, 6, 13107 17904; PWR6-NEXT: sub 3, 3, 5 17905; PWR6-NEXT: rldimi 6, 6, 32, 0 17906; PWR6-NEXT: sub 4, 4, 8 17907; PWR6-NEXT: and 8, 3, 6 17908; PWR6-NEXT: rotldi 3, 3, 62 17909; PWR6-NEXT: and 3, 3, 6 17910; PWR6-NEXT: lis 7, 3855 17911; PWR6-NEXT: and 5, 4, 6 17912; PWR6-NEXT: rotldi 4, 4, 62 17913; PWR6-NEXT: add 3, 8, 3 17914; PWR6-NEXT: lis 9, 257 17915; PWR6-NEXT: ori 7, 7, 3855 17916; PWR6-NEXT: and 4, 4, 6 17917; PWR6-NEXT: rldicl 6, 3, 60, 4 17918; PWR6-NEXT: ori 9, 9, 257 17919; PWR6-NEXT: rldimi 7, 7, 32, 0 17920; PWR6-NEXT: add 4, 5, 4 17921; PWR6-NEXT: add 3, 3, 6 17922; PWR6-NEXT: rldimi 9, 9, 32, 0 17923; PWR6-NEXT: rldicl 5, 4, 60, 4 17924; PWR6-NEXT: and 3, 3, 7 17925; PWR6-NEXT: add 4, 4, 5 17926; PWR6-NEXT: mulld 3, 3, 9 17927; PWR6-NEXT: and 4, 4, 7 17928; PWR6-NEXT: rldicl 3, 3, 8, 56 17929; PWR6-NEXT: li 5, 24 17930; PWR6-NEXT: mulld 4, 4, 9 17931; PWR6-NEXT: subc 6, 3, 5 17932; PWR6-NEXT: rldicl 4, 4, 8, 56 17933; PWR6-NEXT: subfe 3, 3, 3 17934; PWR6-NEXT: subc 5, 4, 5 17935; PWR6-NEXT: subfe 4, 4, 4 17936; PWR6-NEXT: blr 17937; 17938; PWR7-LABEL: ult_24_v2i64: 17939; PWR7: # %bb.0: 17940; PWR7-NEXT: addi 3, 1, -32 17941; PWR7-NEXT: li 5, -1 17942; PWR7-NEXT: stxvd2x 34, 0, 3 17943; PWR7-NEXT: ld 4, -24(1) 17944; PWR7-NEXT: ld 3, -32(1) 17945; PWR7-NEXT: popcntd 4, 4 17946; PWR7-NEXT: popcntd 3, 3 17947; PWR7-NEXT: cmpldi 4, 24 17948; PWR7-NEXT: li 4, 0 17949; PWR7-NEXT: isellt 6, 5, 4 17950; PWR7-NEXT: cmpldi 3, 24 17951; PWR7-NEXT: isellt 3, 5, 4 17952; PWR7-NEXT: std 6, -8(1) 17953; PWR7-NEXT: std 3, -16(1) 17954; PWR7-NEXT: addi 3, 1, -16 17955; PWR7-NEXT: lxvd2x 34, 0, 3 17956; PWR7-NEXT: blr 17957; 17958; PWR8-LABEL: ult_24_v2i64: 17959; PWR8: # %bb.0: 17960; PWR8-NEXT: addis 3, 2, .LCPI145_0@toc@ha 17961; PWR8-NEXT: vpopcntd 2, 2 17962; PWR8-NEXT: addi 3, 3, .LCPI145_0@toc@l 17963; PWR8-NEXT: lxvd2x 35, 0, 3 17964; PWR8-NEXT: vcmpgtud 2, 3, 2 17965; PWR8-NEXT: blr 17966; 17967; PWR9-LABEL: ult_24_v2i64: 17968; PWR9: # %bb.0: 17969; PWR9-NEXT: addis 3, 2, .LCPI145_0@toc@ha 17970; PWR9-NEXT: vpopcntd 2, 2 17971; PWR9-NEXT: addi 3, 3, .LCPI145_0@toc@l 17972; PWR9-NEXT: lxv 35, 0(3) 17973; PWR9-NEXT: vcmpgtud 2, 3, 2 17974; PWR9-NEXT: blr 17975 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 17976 %3 = icmp ult <2 x i64> %2, <i64 24, i64 24> 17977 %4 = sext <2 x i1> %3 to <2 x i64> 17978 ret <2 x i64> %4 17979} 17980 17981define <2 x i64> @ugt_24_v2i64(<2 x i64> %0) { 17982; PWR5-LABEL: ugt_24_v2i64: 17983; PWR5: # %bb.0: 17984; PWR5-NEXT: lis 5, 21845 17985; PWR5-NEXT: lis 6, 13107 17986; PWR5-NEXT: ori 5, 5, 21845 17987; PWR5-NEXT: rotldi 8, 4, 63 17988; PWR5-NEXT: rotldi 9, 3, 63 17989; PWR5-NEXT: rldimi 5, 5, 32, 0 17990; PWR5-NEXT: and 8, 8, 5 17991; PWR5-NEXT: and 5, 9, 5 17992; PWR5-NEXT: ori 6, 6, 13107 17993; PWR5-NEXT: sub 3, 3, 5 17994; PWR5-NEXT: rldimi 6, 6, 32, 0 17995; PWR5-NEXT: sub 4, 4, 8 17996; PWR5-NEXT: and 8, 3, 6 17997; PWR5-NEXT: rotldi 3, 3, 62 17998; PWR5-NEXT: and 3, 3, 6 17999; PWR5-NEXT: lis 7, 3855 18000; PWR5-NEXT: and 5, 4, 6 18001; PWR5-NEXT: rotldi 4, 4, 62 18002; PWR5-NEXT: add 3, 8, 3 18003; PWR5-NEXT: lis 9, 257 18004; PWR5-NEXT: ori 7, 7, 3855 18005; PWR5-NEXT: and 4, 4, 6 18006; PWR5-NEXT: rldicl 6, 3, 60, 4 18007; PWR5-NEXT: ori 9, 9, 257 18008; PWR5-NEXT: rldimi 7, 7, 32, 0 18009; PWR5-NEXT: add 4, 5, 4 18010; PWR5-NEXT: add 3, 3, 6 18011; PWR5-NEXT: rldimi 9, 9, 32, 0 18012; PWR5-NEXT: rldicl 5, 4, 60, 4 18013; PWR5-NEXT: and 3, 3, 7 18014; PWR5-NEXT: add 4, 4, 5 18015; PWR5-NEXT: mulld 3, 3, 9 18016; PWR5-NEXT: and 4, 4, 7 18017; PWR5-NEXT: rldicl 3, 3, 8, 56 18018; PWR5-NEXT: mulld 4, 4, 9 18019; PWR5-NEXT: li 5, 24 18020; PWR5-NEXT: subfic 3, 3, 24 18021; PWR5-NEXT: rldicl 4, 4, 8, 56 18022; PWR5-NEXT: subfe 3, 5, 5 18023; PWR5-NEXT: subfic 4, 4, 24 18024; PWR5-NEXT: subfe 4, 5, 5 18025; PWR5-NEXT: blr 18026; 18027; PWR6-LABEL: ugt_24_v2i64: 18028; PWR6: # %bb.0: 18029; PWR6-NEXT: lis 5, 21845 18030; PWR6-NEXT: lis 6, 13107 18031; PWR6-NEXT: ori 5, 5, 21845 18032; PWR6-NEXT: rotldi 8, 4, 63 18033; PWR6-NEXT: rotldi 9, 3, 63 18034; PWR6-NEXT: rldimi 5, 5, 32, 0 18035; PWR6-NEXT: and 8, 8, 5 18036; PWR6-NEXT: and 5, 9, 5 18037; PWR6-NEXT: ori 6, 6, 13107 18038; PWR6-NEXT: sub 3, 3, 5 18039; PWR6-NEXT: rldimi 6, 6, 32, 0 18040; PWR6-NEXT: sub 4, 4, 8 18041; PWR6-NEXT: and 8, 3, 6 18042; PWR6-NEXT: rotldi 3, 3, 62 18043; PWR6-NEXT: and 3, 3, 6 18044; PWR6-NEXT: lis 7, 3855 18045; PWR6-NEXT: and 5, 4, 6 18046; PWR6-NEXT: rotldi 4, 4, 62 18047; PWR6-NEXT: add 3, 8, 3 18048; PWR6-NEXT: lis 9, 257 18049; PWR6-NEXT: ori 7, 7, 3855 18050; PWR6-NEXT: and 4, 4, 6 18051; PWR6-NEXT: rldicl 6, 3, 60, 4 18052; PWR6-NEXT: ori 9, 9, 257 18053; PWR6-NEXT: rldimi 7, 7, 32, 0 18054; PWR6-NEXT: add 4, 5, 4 18055; PWR6-NEXT: add 3, 3, 6 18056; PWR6-NEXT: rldimi 9, 9, 32, 0 18057; PWR6-NEXT: rldicl 5, 4, 60, 4 18058; PWR6-NEXT: and 3, 3, 7 18059; PWR6-NEXT: add 4, 4, 5 18060; PWR6-NEXT: mulld 3, 3, 9 18061; PWR6-NEXT: and 4, 4, 7 18062; PWR6-NEXT: rldicl 3, 3, 8, 56 18063; PWR6-NEXT: mulld 4, 4, 9 18064; PWR6-NEXT: li 5, 24 18065; PWR6-NEXT: subfic 3, 3, 24 18066; PWR6-NEXT: rldicl 4, 4, 8, 56 18067; PWR6-NEXT: subfe 3, 5, 5 18068; PWR6-NEXT: subfic 4, 4, 24 18069; PWR6-NEXT: subfe 4, 5, 5 18070; PWR6-NEXT: blr 18071; 18072; PWR7-LABEL: ugt_24_v2i64: 18073; PWR7: # %bb.0: 18074; PWR7-NEXT: addi 3, 1, -32 18075; PWR7-NEXT: li 5, -1 18076; PWR7-NEXT: stxvd2x 34, 0, 3 18077; PWR7-NEXT: ld 4, -24(1) 18078; PWR7-NEXT: ld 3, -32(1) 18079; PWR7-NEXT: popcntd 4, 4 18080; PWR7-NEXT: popcntd 3, 3 18081; PWR7-NEXT: cmpldi 4, 24 18082; PWR7-NEXT: li 4, 0 18083; PWR7-NEXT: iselgt 6, 5, 4 18084; PWR7-NEXT: cmpldi 3, 24 18085; PWR7-NEXT: iselgt 3, 5, 4 18086; PWR7-NEXT: std 6, -8(1) 18087; PWR7-NEXT: std 3, -16(1) 18088; PWR7-NEXT: addi 3, 1, -16 18089; PWR7-NEXT: lxvd2x 34, 0, 3 18090; PWR7-NEXT: blr 18091; 18092; PWR8-LABEL: ugt_24_v2i64: 18093; PWR8: # %bb.0: 18094; PWR8-NEXT: addis 3, 2, .LCPI146_0@toc@ha 18095; PWR8-NEXT: vpopcntd 2, 2 18096; PWR8-NEXT: addi 3, 3, .LCPI146_0@toc@l 18097; PWR8-NEXT: lxvd2x 35, 0, 3 18098; PWR8-NEXT: vcmpgtud 2, 2, 3 18099; PWR8-NEXT: blr 18100; 18101; PWR9-LABEL: ugt_24_v2i64: 18102; PWR9: # %bb.0: 18103; PWR9-NEXT: addis 3, 2, .LCPI146_0@toc@ha 18104; PWR9-NEXT: vpopcntd 2, 2 18105; PWR9-NEXT: addi 3, 3, .LCPI146_0@toc@l 18106; PWR9-NEXT: lxv 35, 0(3) 18107; PWR9-NEXT: vcmpgtud 2, 2, 3 18108; PWR9-NEXT: blr 18109 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18110 %3 = icmp ugt <2 x i64> %2, <i64 24, i64 24> 18111 %4 = sext <2 x i1> %3 to <2 x i64> 18112 ret <2 x i64> %4 18113} 18114 18115define <2 x i64> @ult_25_v2i64(<2 x i64> %0) { 18116; PWR5-LABEL: ult_25_v2i64: 18117; PWR5: # %bb.0: 18118; PWR5-NEXT: lis 5, 21845 18119; PWR5-NEXT: lis 6, 13107 18120; PWR5-NEXT: ori 5, 5, 21845 18121; PWR5-NEXT: rotldi 8, 4, 63 18122; PWR5-NEXT: rotldi 9, 3, 63 18123; PWR5-NEXT: rldimi 5, 5, 32, 0 18124; PWR5-NEXT: and 8, 8, 5 18125; PWR5-NEXT: and 5, 9, 5 18126; PWR5-NEXT: ori 6, 6, 13107 18127; PWR5-NEXT: sub 3, 3, 5 18128; PWR5-NEXT: rldimi 6, 6, 32, 0 18129; PWR5-NEXT: sub 4, 4, 8 18130; PWR5-NEXT: and 8, 3, 6 18131; PWR5-NEXT: rotldi 3, 3, 62 18132; PWR5-NEXT: and 3, 3, 6 18133; PWR5-NEXT: lis 7, 3855 18134; PWR5-NEXT: and 5, 4, 6 18135; PWR5-NEXT: rotldi 4, 4, 62 18136; PWR5-NEXT: add 3, 8, 3 18137; PWR5-NEXT: lis 9, 257 18138; PWR5-NEXT: ori 7, 7, 3855 18139; PWR5-NEXT: and 4, 4, 6 18140; PWR5-NEXT: rldicl 6, 3, 60, 4 18141; PWR5-NEXT: ori 9, 9, 257 18142; PWR5-NEXT: rldimi 7, 7, 32, 0 18143; PWR5-NEXT: add 4, 5, 4 18144; PWR5-NEXT: add 3, 3, 6 18145; PWR5-NEXT: rldimi 9, 9, 32, 0 18146; PWR5-NEXT: rldicl 5, 4, 60, 4 18147; PWR5-NEXT: and 3, 3, 7 18148; PWR5-NEXT: add 4, 4, 5 18149; PWR5-NEXT: mulld 3, 3, 9 18150; PWR5-NEXT: and 4, 4, 7 18151; PWR5-NEXT: rldicl 3, 3, 8, 56 18152; PWR5-NEXT: li 5, 25 18153; PWR5-NEXT: mulld 4, 4, 9 18154; PWR5-NEXT: subc 6, 3, 5 18155; PWR5-NEXT: rldicl 4, 4, 8, 56 18156; PWR5-NEXT: subfe 3, 3, 3 18157; PWR5-NEXT: subc 5, 4, 5 18158; PWR5-NEXT: subfe 4, 4, 4 18159; PWR5-NEXT: blr 18160; 18161; PWR6-LABEL: ult_25_v2i64: 18162; PWR6: # %bb.0: 18163; PWR6-NEXT: lis 5, 21845 18164; PWR6-NEXT: lis 6, 13107 18165; PWR6-NEXT: ori 5, 5, 21845 18166; PWR6-NEXT: rotldi 8, 4, 63 18167; PWR6-NEXT: rotldi 9, 3, 63 18168; PWR6-NEXT: rldimi 5, 5, 32, 0 18169; PWR6-NEXT: and 8, 8, 5 18170; PWR6-NEXT: and 5, 9, 5 18171; PWR6-NEXT: ori 6, 6, 13107 18172; PWR6-NEXT: sub 3, 3, 5 18173; PWR6-NEXT: rldimi 6, 6, 32, 0 18174; PWR6-NEXT: sub 4, 4, 8 18175; PWR6-NEXT: and 8, 3, 6 18176; PWR6-NEXT: rotldi 3, 3, 62 18177; PWR6-NEXT: and 3, 3, 6 18178; PWR6-NEXT: lis 7, 3855 18179; PWR6-NEXT: and 5, 4, 6 18180; PWR6-NEXT: rotldi 4, 4, 62 18181; PWR6-NEXT: add 3, 8, 3 18182; PWR6-NEXT: lis 9, 257 18183; PWR6-NEXT: ori 7, 7, 3855 18184; PWR6-NEXT: and 4, 4, 6 18185; PWR6-NEXT: rldicl 6, 3, 60, 4 18186; PWR6-NEXT: ori 9, 9, 257 18187; PWR6-NEXT: rldimi 7, 7, 32, 0 18188; PWR6-NEXT: add 4, 5, 4 18189; PWR6-NEXT: add 3, 3, 6 18190; PWR6-NEXT: rldimi 9, 9, 32, 0 18191; PWR6-NEXT: rldicl 5, 4, 60, 4 18192; PWR6-NEXT: and 3, 3, 7 18193; PWR6-NEXT: add 4, 4, 5 18194; PWR6-NEXT: mulld 3, 3, 9 18195; PWR6-NEXT: and 4, 4, 7 18196; PWR6-NEXT: rldicl 3, 3, 8, 56 18197; PWR6-NEXT: li 5, 25 18198; PWR6-NEXT: mulld 4, 4, 9 18199; PWR6-NEXT: subc 6, 3, 5 18200; PWR6-NEXT: rldicl 4, 4, 8, 56 18201; PWR6-NEXT: subfe 3, 3, 3 18202; PWR6-NEXT: subc 5, 4, 5 18203; PWR6-NEXT: subfe 4, 4, 4 18204; PWR6-NEXT: blr 18205; 18206; PWR7-LABEL: ult_25_v2i64: 18207; PWR7: # %bb.0: 18208; PWR7-NEXT: addi 3, 1, -32 18209; PWR7-NEXT: li 5, -1 18210; PWR7-NEXT: stxvd2x 34, 0, 3 18211; PWR7-NEXT: ld 4, -24(1) 18212; PWR7-NEXT: ld 3, -32(1) 18213; PWR7-NEXT: popcntd 4, 4 18214; PWR7-NEXT: popcntd 3, 3 18215; PWR7-NEXT: cmpldi 4, 25 18216; PWR7-NEXT: li 4, 0 18217; PWR7-NEXT: isellt 6, 5, 4 18218; PWR7-NEXT: cmpldi 3, 25 18219; PWR7-NEXT: isellt 3, 5, 4 18220; PWR7-NEXT: std 6, -8(1) 18221; PWR7-NEXT: std 3, -16(1) 18222; PWR7-NEXT: addi 3, 1, -16 18223; PWR7-NEXT: lxvd2x 34, 0, 3 18224; PWR7-NEXT: blr 18225; 18226; PWR8-LABEL: ult_25_v2i64: 18227; PWR8: # %bb.0: 18228; PWR8-NEXT: addis 3, 2, .LCPI147_0@toc@ha 18229; PWR8-NEXT: vpopcntd 2, 2 18230; PWR8-NEXT: addi 3, 3, .LCPI147_0@toc@l 18231; PWR8-NEXT: lxvd2x 35, 0, 3 18232; PWR8-NEXT: vcmpgtud 2, 3, 2 18233; PWR8-NEXT: blr 18234; 18235; PWR9-LABEL: ult_25_v2i64: 18236; PWR9: # %bb.0: 18237; PWR9-NEXT: addis 3, 2, .LCPI147_0@toc@ha 18238; PWR9-NEXT: vpopcntd 2, 2 18239; PWR9-NEXT: addi 3, 3, .LCPI147_0@toc@l 18240; PWR9-NEXT: lxv 35, 0(3) 18241; PWR9-NEXT: vcmpgtud 2, 3, 2 18242; PWR9-NEXT: blr 18243 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18244 %3 = icmp ult <2 x i64> %2, <i64 25, i64 25> 18245 %4 = sext <2 x i1> %3 to <2 x i64> 18246 ret <2 x i64> %4 18247} 18248 18249define <2 x i64> @ugt_25_v2i64(<2 x i64> %0) { 18250; PWR5-LABEL: ugt_25_v2i64: 18251; PWR5: # %bb.0: 18252; PWR5-NEXT: lis 5, 21845 18253; PWR5-NEXT: lis 6, 13107 18254; PWR5-NEXT: ori 5, 5, 21845 18255; PWR5-NEXT: rotldi 8, 4, 63 18256; PWR5-NEXT: rotldi 9, 3, 63 18257; PWR5-NEXT: rldimi 5, 5, 32, 0 18258; PWR5-NEXT: and 8, 8, 5 18259; PWR5-NEXT: and 5, 9, 5 18260; PWR5-NEXT: ori 6, 6, 13107 18261; PWR5-NEXT: sub 3, 3, 5 18262; PWR5-NEXT: rldimi 6, 6, 32, 0 18263; PWR5-NEXT: sub 4, 4, 8 18264; PWR5-NEXT: and 8, 3, 6 18265; PWR5-NEXT: rotldi 3, 3, 62 18266; PWR5-NEXT: and 3, 3, 6 18267; PWR5-NEXT: lis 7, 3855 18268; PWR5-NEXT: and 5, 4, 6 18269; PWR5-NEXT: rotldi 4, 4, 62 18270; PWR5-NEXT: add 3, 8, 3 18271; PWR5-NEXT: lis 9, 257 18272; PWR5-NEXT: ori 7, 7, 3855 18273; PWR5-NEXT: and 4, 4, 6 18274; PWR5-NEXT: rldicl 6, 3, 60, 4 18275; PWR5-NEXT: ori 9, 9, 257 18276; PWR5-NEXT: rldimi 7, 7, 32, 0 18277; PWR5-NEXT: add 4, 5, 4 18278; PWR5-NEXT: add 3, 3, 6 18279; PWR5-NEXT: rldimi 9, 9, 32, 0 18280; PWR5-NEXT: rldicl 5, 4, 60, 4 18281; PWR5-NEXT: and 3, 3, 7 18282; PWR5-NEXT: add 4, 4, 5 18283; PWR5-NEXT: mulld 3, 3, 9 18284; PWR5-NEXT: and 4, 4, 7 18285; PWR5-NEXT: rldicl 3, 3, 8, 56 18286; PWR5-NEXT: mulld 4, 4, 9 18287; PWR5-NEXT: li 5, 25 18288; PWR5-NEXT: subfic 3, 3, 25 18289; PWR5-NEXT: rldicl 4, 4, 8, 56 18290; PWR5-NEXT: subfe 3, 5, 5 18291; PWR5-NEXT: subfic 4, 4, 25 18292; PWR5-NEXT: subfe 4, 5, 5 18293; PWR5-NEXT: blr 18294; 18295; PWR6-LABEL: ugt_25_v2i64: 18296; PWR6: # %bb.0: 18297; PWR6-NEXT: lis 5, 21845 18298; PWR6-NEXT: lis 6, 13107 18299; PWR6-NEXT: ori 5, 5, 21845 18300; PWR6-NEXT: rotldi 8, 4, 63 18301; PWR6-NEXT: rotldi 9, 3, 63 18302; PWR6-NEXT: rldimi 5, 5, 32, 0 18303; PWR6-NEXT: and 8, 8, 5 18304; PWR6-NEXT: and 5, 9, 5 18305; PWR6-NEXT: ori 6, 6, 13107 18306; PWR6-NEXT: sub 3, 3, 5 18307; PWR6-NEXT: rldimi 6, 6, 32, 0 18308; PWR6-NEXT: sub 4, 4, 8 18309; PWR6-NEXT: and 8, 3, 6 18310; PWR6-NEXT: rotldi 3, 3, 62 18311; PWR6-NEXT: and 3, 3, 6 18312; PWR6-NEXT: lis 7, 3855 18313; PWR6-NEXT: and 5, 4, 6 18314; PWR6-NEXT: rotldi 4, 4, 62 18315; PWR6-NEXT: add 3, 8, 3 18316; PWR6-NEXT: lis 9, 257 18317; PWR6-NEXT: ori 7, 7, 3855 18318; PWR6-NEXT: and 4, 4, 6 18319; PWR6-NEXT: rldicl 6, 3, 60, 4 18320; PWR6-NEXT: ori 9, 9, 257 18321; PWR6-NEXT: rldimi 7, 7, 32, 0 18322; PWR6-NEXT: add 4, 5, 4 18323; PWR6-NEXT: add 3, 3, 6 18324; PWR6-NEXT: rldimi 9, 9, 32, 0 18325; PWR6-NEXT: rldicl 5, 4, 60, 4 18326; PWR6-NEXT: and 3, 3, 7 18327; PWR6-NEXT: add 4, 4, 5 18328; PWR6-NEXT: mulld 3, 3, 9 18329; PWR6-NEXT: and 4, 4, 7 18330; PWR6-NEXT: rldicl 3, 3, 8, 56 18331; PWR6-NEXT: mulld 4, 4, 9 18332; PWR6-NEXT: li 5, 25 18333; PWR6-NEXT: subfic 3, 3, 25 18334; PWR6-NEXT: rldicl 4, 4, 8, 56 18335; PWR6-NEXT: subfe 3, 5, 5 18336; PWR6-NEXT: subfic 4, 4, 25 18337; PWR6-NEXT: subfe 4, 5, 5 18338; PWR6-NEXT: blr 18339; 18340; PWR7-LABEL: ugt_25_v2i64: 18341; PWR7: # %bb.0: 18342; PWR7-NEXT: addi 3, 1, -32 18343; PWR7-NEXT: li 5, -1 18344; PWR7-NEXT: stxvd2x 34, 0, 3 18345; PWR7-NEXT: ld 4, -24(1) 18346; PWR7-NEXT: ld 3, -32(1) 18347; PWR7-NEXT: popcntd 4, 4 18348; PWR7-NEXT: popcntd 3, 3 18349; PWR7-NEXT: cmpldi 4, 25 18350; PWR7-NEXT: li 4, 0 18351; PWR7-NEXT: iselgt 6, 5, 4 18352; PWR7-NEXT: cmpldi 3, 25 18353; PWR7-NEXT: iselgt 3, 5, 4 18354; PWR7-NEXT: std 6, -8(1) 18355; PWR7-NEXT: std 3, -16(1) 18356; PWR7-NEXT: addi 3, 1, -16 18357; PWR7-NEXT: lxvd2x 34, 0, 3 18358; PWR7-NEXT: blr 18359; 18360; PWR8-LABEL: ugt_25_v2i64: 18361; PWR8: # %bb.0: 18362; PWR8-NEXT: addis 3, 2, .LCPI148_0@toc@ha 18363; PWR8-NEXT: vpopcntd 2, 2 18364; PWR8-NEXT: addi 3, 3, .LCPI148_0@toc@l 18365; PWR8-NEXT: lxvd2x 35, 0, 3 18366; PWR8-NEXT: vcmpgtud 2, 2, 3 18367; PWR8-NEXT: blr 18368; 18369; PWR9-LABEL: ugt_25_v2i64: 18370; PWR9: # %bb.0: 18371; PWR9-NEXT: addis 3, 2, .LCPI148_0@toc@ha 18372; PWR9-NEXT: vpopcntd 2, 2 18373; PWR9-NEXT: addi 3, 3, .LCPI148_0@toc@l 18374; PWR9-NEXT: lxv 35, 0(3) 18375; PWR9-NEXT: vcmpgtud 2, 2, 3 18376; PWR9-NEXT: blr 18377 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18378 %3 = icmp ugt <2 x i64> %2, <i64 25, i64 25> 18379 %4 = sext <2 x i1> %3 to <2 x i64> 18380 ret <2 x i64> %4 18381} 18382 18383define <2 x i64> @ult_26_v2i64(<2 x i64> %0) { 18384; PWR5-LABEL: ult_26_v2i64: 18385; PWR5: # %bb.0: 18386; PWR5-NEXT: lis 5, 21845 18387; PWR5-NEXT: lis 6, 13107 18388; PWR5-NEXT: ori 5, 5, 21845 18389; PWR5-NEXT: rotldi 8, 4, 63 18390; PWR5-NEXT: rotldi 9, 3, 63 18391; PWR5-NEXT: rldimi 5, 5, 32, 0 18392; PWR5-NEXT: and 8, 8, 5 18393; PWR5-NEXT: and 5, 9, 5 18394; PWR5-NEXT: ori 6, 6, 13107 18395; PWR5-NEXT: sub 3, 3, 5 18396; PWR5-NEXT: rldimi 6, 6, 32, 0 18397; PWR5-NEXT: sub 4, 4, 8 18398; PWR5-NEXT: and 8, 3, 6 18399; PWR5-NEXT: rotldi 3, 3, 62 18400; PWR5-NEXT: and 3, 3, 6 18401; PWR5-NEXT: lis 7, 3855 18402; PWR5-NEXT: and 5, 4, 6 18403; PWR5-NEXT: rotldi 4, 4, 62 18404; PWR5-NEXT: add 3, 8, 3 18405; PWR5-NEXT: lis 9, 257 18406; PWR5-NEXT: ori 7, 7, 3855 18407; PWR5-NEXT: and 4, 4, 6 18408; PWR5-NEXT: rldicl 6, 3, 60, 4 18409; PWR5-NEXT: ori 9, 9, 257 18410; PWR5-NEXT: rldimi 7, 7, 32, 0 18411; PWR5-NEXT: add 4, 5, 4 18412; PWR5-NEXT: add 3, 3, 6 18413; PWR5-NEXT: rldimi 9, 9, 32, 0 18414; PWR5-NEXT: rldicl 5, 4, 60, 4 18415; PWR5-NEXT: and 3, 3, 7 18416; PWR5-NEXT: add 4, 4, 5 18417; PWR5-NEXT: mulld 3, 3, 9 18418; PWR5-NEXT: and 4, 4, 7 18419; PWR5-NEXT: rldicl 3, 3, 8, 56 18420; PWR5-NEXT: li 5, 26 18421; PWR5-NEXT: mulld 4, 4, 9 18422; PWR5-NEXT: subc 6, 3, 5 18423; PWR5-NEXT: rldicl 4, 4, 8, 56 18424; PWR5-NEXT: subfe 3, 3, 3 18425; PWR5-NEXT: subc 5, 4, 5 18426; PWR5-NEXT: subfe 4, 4, 4 18427; PWR5-NEXT: blr 18428; 18429; PWR6-LABEL: ult_26_v2i64: 18430; PWR6: # %bb.0: 18431; PWR6-NEXT: lis 5, 21845 18432; PWR6-NEXT: lis 6, 13107 18433; PWR6-NEXT: ori 5, 5, 21845 18434; PWR6-NEXT: rotldi 8, 4, 63 18435; PWR6-NEXT: rotldi 9, 3, 63 18436; PWR6-NEXT: rldimi 5, 5, 32, 0 18437; PWR6-NEXT: and 8, 8, 5 18438; PWR6-NEXT: and 5, 9, 5 18439; PWR6-NEXT: ori 6, 6, 13107 18440; PWR6-NEXT: sub 3, 3, 5 18441; PWR6-NEXT: rldimi 6, 6, 32, 0 18442; PWR6-NEXT: sub 4, 4, 8 18443; PWR6-NEXT: and 8, 3, 6 18444; PWR6-NEXT: rotldi 3, 3, 62 18445; PWR6-NEXT: and 3, 3, 6 18446; PWR6-NEXT: lis 7, 3855 18447; PWR6-NEXT: and 5, 4, 6 18448; PWR6-NEXT: rotldi 4, 4, 62 18449; PWR6-NEXT: add 3, 8, 3 18450; PWR6-NEXT: lis 9, 257 18451; PWR6-NEXT: ori 7, 7, 3855 18452; PWR6-NEXT: and 4, 4, 6 18453; PWR6-NEXT: rldicl 6, 3, 60, 4 18454; PWR6-NEXT: ori 9, 9, 257 18455; PWR6-NEXT: rldimi 7, 7, 32, 0 18456; PWR6-NEXT: add 4, 5, 4 18457; PWR6-NEXT: add 3, 3, 6 18458; PWR6-NEXT: rldimi 9, 9, 32, 0 18459; PWR6-NEXT: rldicl 5, 4, 60, 4 18460; PWR6-NEXT: and 3, 3, 7 18461; PWR6-NEXT: add 4, 4, 5 18462; PWR6-NEXT: mulld 3, 3, 9 18463; PWR6-NEXT: and 4, 4, 7 18464; PWR6-NEXT: rldicl 3, 3, 8, 56 18465; PWR6-NEXT: li 5, 26 18466; PWR6-NEXT: mulld 4, 4, 9 18467; PWR6-NEXT: subc 6, 3, 5 18468; PWR6-NEXT: rldicl 4, 4, 8, 56 18469; PWR6-NEXT: subfe 3, 3, 3 18470; PWR6-NEXT: subc 5, 4, 5 18471; PWR6-NEXT: subfe 4, 4, 4 18472; PWR6-NEXT: blr 18473; 18474; PWR7-LABEL: ult_26_v2i64: 18475; PWR7: # %bb.0: 18476; PWR7-NEXT: addi 3, 1, -32 18477; PWR7-NEXT: li 5, -1 18478; PWR7-NEXT: stxvd2x 34, 0, 3 18479; PWR7-NEXT: ld 4, -24(1) 18480; PWR7-NEXT: ld 3, -32(1) 18481; PWR7-NEXT: popcntd 4, 4 18482; PWR7-NEXT: popcntd 3, 3 18483; PWR7-NEXT: cmpldi 4, 26 18484; PWR7-NEXT: li 4, 0 18485; PWR7-NEXT: isellt 6, 5, 4 18486; PWR7-NEXT: cmpldi 3, 26 18487; PWR7-NEXT: isellt 3, 5, 4 18488; PWR7-NEXT: std 6, -8(1) 18489; PWR7-NEXT: std 3, -16(1) 18490; PWR7-NEXT: addi 3, 1, -16 18491; PWR7-NEXT: lxvd2x 34, 0, 3 18492; PWR7-NEXT: blr 18493; 18494; PWR8-LABEL: ult_26_v2i64: 18495; PWR8: # %bb.0: 18496; PWR8-NEXT: addis 3, 2, .LCPI149_0@toc@ha 18497; PWR8-NEXT: vpopcntd 2, 2 18498; PWR8-NEXT: addi 3, 3, .LCPI149_0@toc@l 18499; PWR8-NEXT: lxvd2x 35, 0, 3 18500; PWR8-NEXT: vcmpgtud 2, 3, 2 18501; PWR8-NEXT: blr 18502; 18503; PWR9-LABEL: ult_26_v2i64: 18504; PWR9: # %bb.0: 18505; PWR9-NEXT: addis 3, 2, .LCPI149_0@toc@ha 18506; PWR9-NEXT: vpopcntd 2, 2 18507; PWR9-NEXT: addi 3, 3, .LCPI149_0@toc@l 18508; PWR9-NEXT: lxv 35, 0(3) 18509; PWR9-NEXT: vcmpgtud 2, 3, 2 18510; PWR9-NEXT: blr 18511 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18512 %3 = icmp ult <2 x i64> %2, <i64 26, i64 26> 18513 %4 = sext <2 x i1> %3 to <2 x i64> 18514 ret <2 x i64> %4 18515} 18516 18517define <2 x i64> @ugt_26_v2i64(<2 x i64> %0) { 18518; PWR5-LABEL: ugt_26_v2i64: 18519; PWR5: # %bb.0: 18520; PWR5-NEXT: lis 5, 21845 18521; PWR5-NEXT: lis 6, 13107 18522; PWR5-NEXT: ori 5, 5, 21845 18523; PWR5-NEXT: rotldi 8, 4, 63 18524; PWR5-NEXT: rotldi 9, 3, 63 18525; PWR5-NEXT: rldimi 5, 5, 32, 0 18526; PWR5-NEXT: and 8, 8, 5 18527; PWR5-NEXT: and 5, 9, 5 18528; PWR5-NEXT: ori 6, 6, 13107 18529; PWR5-NEXT: sub 3, 3, 5 18530; PWR5-NEXT: rldimi 6, 6, 32, 0 18531; PWR5-NEXT: sub 4, 4, 8 18532; PWR5-NEXT: and 8, 3, 6 18533; PWR5-NEXT: rotldi 3, 3, 62 18534; PWR5-NEXT: and 3, 3, 6 18535; PWR5-NEXT: lis 7, 3855 18536; PWR5-NEXT: and 5, 4, 6 18537; PWR5-NEXT: rotldi 4, 4, 62 18538; PWR5-NEXT: add 3, 8, 3 18539; PWR5-NEXT: lis 9, 257 18540; PWR5-NEXT: ori 7, 7, 3855 18541; PWR5-NEXT: and 4, 4, 6 18542; PWR5-NEXT: rldicl 6, 3, 60, 4 18543; PWR5-NEXT: ori 9, 9, 257 18544; PWR5-NEXT: rldimi 7, 7, 32, 0 18545; PWR5-NEXT: add 4, 5, 4 18546; PWR5-NEXT: add 3, 3, 6 18547; PWR5-NEXT: rldimi 9, 9, 32, 0 18548; PWR5-NEXT: rldicl 5, 4, 60, 4 18549; PWR5-NEXT: and 3, 3, 7 18550; PWR5-NEXT: add 4, 4, 5 18551; PWR5-NEXT: mulld 3, 3, 9 18552; PWR5-NEXT: and 4, 4, 7 18553; PWR5-NEXT: rldicl 3, 3, 8, 56 18554; PWR5-NEXT: mulld 4, 4, 9 18555; PWR5-NEXT: li 5, 26 18556; PWR5-NEXT: subfic 3, 3, 26 18557; PWR5-NEXT: rldicl 4, 4, 8, 56 18558; PWR5-NEXT: subfe 3, 5, 5 18559; PWR5-NEXT: subfic 4, 4, 26 18560; PWR5-NEXT: subfe 4, 5, 5 18561; PWR5-NEXT: blr 18562; 18563; PWR6-LABEL: ugt_26_v2i64: 18564; PWR6: # %bb.0: 18565; PWR6-NEXT: lis 5, 21845 18566; PWR6-NEXT: lis 6, 13107 18567; PWR6-NEXT: ori 5, 5, 21845 18568; PWR6-NEXT: rotldi 8, 4, 63 18569; PWR6-NEXT: rotldi 9, 3, 63 18570; PWR6-NEXT: rldimi 5, 5, 32, 0 18571; PWR6-NEXT: and 8, 8, 5 18572; PWR6-NEXT: and 5, 9, 5 18573; PWR6-NEXT: ori 6, 6, 13107 18574; PWR6-NEXT: sub 3, 3, 5 18575; PWR6-NEXT: rldimi 6, 6, 32, 0 18576; PWR6-NEXT: sub 4, 4, 8 18577; PWR6-NEXT: and 8, 3, 6 18578; PWR6-NEXT: rotldi 3, 3, 62 18579; PWR6-NEXT: and 3, 3, 6 18580; PWR6-NEXT: lis 7, 3855 18581; PWR6-NEXT: and 5, 4, 6 18582; PWR6-NEXT: rotldi 4, 4, 62 18583; PWR6-NEXT: add 3, 8, 3 18584; PWR6-NEXT: lis 9, 257 18585; PWR6-NEXT: ori 7, 7, 3855 18586; PWR6-NEXT: and 4, 4, 6 18587; PWR6-NEXT: rldicl 6, 3, 60, 4 18588; PWR6-NEXT: ori 9, 9, 257 18589; PWR6-NEXT: rldimi 7, 7, 32, 0 18590; PWR6-NEXT: add 4, 5, 4 18591; PWR6-NEXT: add 3, 3, 6 18592; PWR6-NEXT: rldimi 9, 9, 32, 0 18593; PWR6-NEXT: rldicl 5, 4, 60, 4 18594; PWR6-NEXT: and 3, 3, 7 18595; PWR6-NEXT: add 4, 4, 5 18596; PWR6-NEXT: mulld 3, 3, 9 18597; PWR6-NEXT: and 4, 4, 7 18598; PWR6-NEXT: rldicl 3, 3, 8, 56 18599; PWR6-NEXT: mulld 4, 4, 9 18600; PWR6-NEXT: li 5, 26 18601; PWR6-NEXT: subfic 3, 3, 26 18602; PWR6-NEXT: rldicl 4, 4, 8, 56 18603; PWR6-NEXT: subfe 3, 5, 5 18604; PWR6-NEXT: subfic 4, 4, 26 18605; PWR6-NEXT: subfe 4, 5, 5 18606; PWR6-NEXT: blr 18607; 18608; PWR7-LABEL: ugt_26_v2i64: 18609; PWR7: # %bb.0: 18610; PWR7-NEXT: addi 3, 1, -32 18611; PWR7-NEXT: li 5, -1 18612; PWR7-NEXT: stxvd2x 34, 0, 3 18613; PWR7-NEXT: ld 4, -24(1) 18614; PWR7-NEXT: ld 3, -32(1) 18615; PWR7-NEXT: popcntd 4, 4 18616; PWR7-NEXT: popcntd 3, 3 18617; PWR7-NEXT: cmpldi 4, 26 18618; PWR7-NEXT: li 4, 0 18619; PWR7-NEXT: iselgt 6, 5, 4 18620; PWR7-NEXT: cmpldi 3, 26 18621; PWR7-NEXT: iselgt 3, 5, 4 18622; PWR7-NEXT: std 6, -8(1) 18623; PWR7-NEXT: std 3, -16(1) 18624; PWR7-NEXT: addi 3, 1, -16 18625; PWR7-NEXT: lxvd2x 34, 0, 3 18626; PWR7-NEXT: blr 18627; 18628; PWR8-LABEL: ugt_26_v2i64: 18629; PWR8: # %bb.0: 18630; PWR8-NEXT: addis 3, 2, .LCPI150_0@toc@ha 18631; PWR8-NEXT: vpopcntd 2, 2 18632; PWR8-NEXT: addi 3, 3, .LCPI150_0@toc@l 18633; PWR8-NEXT: lxvd2x 35, 0, 3 18634; PWR8-NEXT: vcmpgtud 2, 2, 3 18635; PWR8-NEXT: blr 18636; 18637; PWR9-LABEL: ugt_26_v2i64: 18638; PWR9: # %bb.0: 18639; PWR9-NEXT: addis 3, 2, .LCPI150_0@toc@ha 18640; PWR9-NEXT: vpopcntd 2, 2 18641; PWR9-NEXT: addi 3, 3, .LCPI150_0@toc@l 18642; PWR9-NEXT: lxv 35, 0(3) 18643; PWR9-NEXT: vcmpgtud 2, 2, 3 18644; PWR9-NEXT: blr 18645 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18646 %3 = icmp ugt <2 x i64> %2, <i64 26, i64 26> 18647 %4 = sext <2 x i1> %3 to <2 x i64> 18648 ret <2 x i64> %4 18649} 18650 18651define <2 x i64> @ult_27_v2i64(<2 x i64> %0) { 18652; PWR5-LABEL: ult_27_v2i64: 18653; PWR5: # %bb.0: 18654; PWR5-NEXT: lis 5, 21845 18655; PWR5-NEXT: lis 6, 13107 18656; PWR5-NEXT: ori 5, 5, 21845 18657; PWR5-NEXT: rotldi 8, 4, 63 18658; PWR5-NEXT: rotldi 9, 3, 63 18659; PWR5-NEXT: rldimi 5, 5, 32, 0 18660; PWR5-NEXT: and 8, 8, 5 18661; PWR5-NEXT: and 5, 9, 5 18662; PWR5-NEXT: ori 6, 6, 13107 18663; PWR5-NEXT: sub 3, 3, 5 18664; PWR5-NEXT: rldimi 6, 6, 32, 0 18665; PWR5-NEXT: sub 4, 4, 8 18666; PWR5-NEXT: and 8, 3, 6 18667; PWR5-NEXT: rotldi 3, 3, 62 18668; PWR5-NEXT: and 3, 3, 6 18669; PWR5-NEXT: lis 7, 3855 18670; PWR5-NEXT: and 5, 4, 6 18671; PWR5-NEXT: rotldi 4, 4, 62 18672; PWR5-NEXT: add 3, 8, 3 18673; PWR5-NEXT: lis 9, 257 18674; PWR5-NEXT: ori 7, 7, 3855 18675; PWR5-NEXT: and 4, 4, 6 18676; PWR5-NEXT: rldicl 6, 3, 60, 4 18677; PWR5-NEXT: ori 9, 9, 257 18678; PWR5-NEXT: rldimi 7, 7, 32, 0 18679; PWR5-NEXT: add 4, 5, 4 18680; PWR5-NEXT: add 3, 3, 6 18681; PWR5-NEXT: rldimi 9, 9, 32, 0 18682; PWR5-NEXT: rldicl 5, 4, 60, 4 18683; PWR5-NEXT: and 3, 3, 7 18684; PWR5-NEXT: add 4, 4, 5 18685; PWR5-NEXT: mulld 3, 3, 9 18686; PWR5-NEXT: and 4, 4, 7 18687; PWR5-NEXT: rldicl 3, 3, 8, 56 18688; PWR5-NEXT: li 5, 27 18689; PWR5-NEXT: mulld 4, 4, 9 18690; PWR5-NEXT: subc 6, 3, 5 18691; PWR5-NEXT: rldicl 4, 4, 8, 56 18692; PWR5-NEXT: subfe 3, 3, 3 18693; PWR5-NEXT: subc 5, 4, 5 18694; PWR5-NEXT: subfe 4, 4, 4 18695; PWR5-NEXT: blr 18696; 18697; PWR6-LABEL: ult_27_v2i64: 18698; PWR6: # %bb.0: 18699; PWR6-NEXT: lis 5, 21845 18700; PWR6-NEXT: lis 6, 13107 18701; PWR6-NEXT: ori 5, 5, 21845 18702; PWR6-NEXT: rotldi 8, 4, 63 18703; PWR6-NEXT: rotldi 9, 3, 63 18704; PWR6-NEXT: rldimi 5, 5, 32, 0 18705; PWR6-NEXT: and 8, 8, 5 18706; PWR6-NEXT: and 5, 9, 5 18707; PWR6-NEXT: ori 6, 6, 13107 18708; PWR6-NEXT: sub 3, 3, 5 18709; PWR6-NEXT: rldimi 6, 6, 32, 0 18710; PWR6-NEXT: sub 4, 4, 8 18711; PWR6-NEXT: and 8, 3, 6 18712; PWR6-NEXT: rotldi 3, 3, 62 18713; PWR6-NEXT: and 3, 3, 6 18714; PWR6-NEXT: lis 7, 3855 18715; PWR6-NEXT: and 5, 4, 6 18716; PWR6-NEXT: rotldi 4, 4, 62 18717; PWR6-NEXT: add 3, 8, 3 18718; PWR6-NEXT: lis 9, 257 18719; PWR6-NEXT: ori 7, 7, 3855 18720; PWR6-NEXT: and 4, 4, 6 18721; PWR6-NEXT: rldicl 6, 3, 60, 4 18722; PWR6-NEXT: ori 9, 9, 257 18723; PWR6-NEXT: rldimi 7, 7, 32, 0 18724; PWR6-NEXT: add 4, 5, 4 18725; PWR6-NEXT: add 3, 3, 6 18726; PWR6-NEXT: rldimi 9, 9, 32, 0 18727; PWR6-NEXT: rldicl 5, 4, 60, 4 18728; PWR6-NEXT: and 3, 3, 7 18729; PWR6-NEXT: add 4, 4, 5 18730; PWR6-NEXT: mulld 3, 3, 9 18731; PWR6-NEXT: and 4, 4, 7 18732; PWR6-NEXT: rldicl 3, 3, 8, 56 18733; PWR6-NEXT: li 5, 27 18734; PWR6-NEXT: mulld 4, 4, 9 18735; PWR6-NEXT: subc 6, 3, 5 18736; PWR6-NEXT: rldicl 4, 4, 8, 56 18737; PWR6-NEXT: subfe 3, 3, 3 18738; PWR6-NEXT: subc 5, 4, 5 18739; PWR6-NEXT: subfe 4, 4, 4 18740; PWR6-NEXT: blr 18741; 18742; PWR7-LABEL: ult_27_v2i64: 18743; PWR7: # %bb.0: 18744; PWR7-NEXT: addi 3, 1, -32 18745; PWR7-NEXT: li 5, -1 18746; PWR7-NEXT: stxvd2x 34, 0, 3 18747; PWR7-NEXT: ld 4, -24(1) 18748; PWR7-NEXT: ld 3, -32(1) 18749; PWR7-NEXT: popcntd 4, 4 18750; PWR7-NEXT: popcntd 3, 3 18751; PWR7-NEXT: cmpldi 4, 27 18752; PWR7-NEXT: li 4, 0 18753; PWR7-NEXT: isellt 6, 5, 4 18754; PWR7-NEXT: cmpldi 3, 27 18755; PWR7-NEXT: isellt 3, 5, 4 18756; PWR7-NEXT: std 6, -8(1) 18757; PWR7-NEXT: std 3, -16(1) 18758; PWR7-NEXT: addi 3, 1, -16 18759; PWR7-NEXT: lxvd2x 34, 0, 3 18760; PWR7-NEXT: blr 18761; 18762; PWR8-LABEL: ult_27_v2i64: 18763; PWR8: # %bb.0: 18764; PWR8-NEXT: addis 3, 2, .LCPI151_0@toc@ha 18765; PWR8-NEXT: vpopcntd 2, 2 18766; PWR8-NEXT: addi 3, 3, .LCPI151_0@toc@l 18767; PWR8-NEXT: lxvd2x 35, 0, 3 18768; PWR8-NEXT: vcmpgtud 2, 3, 2 18769; PWR8-NEXT: blr 18770; 18771; PWR9-LABEL: ult_27_v2i64: 18772; PWR9: # %bb.0: 18773; PWR9-NEXT: addis 3, 2, .LCPI151_0@toc@ha 18774; PWR9-NEXT: vpopcntd 2, 2 18775; PWR9-NEXT: addi 3, 3, .LCPI151_0@toc@l 18776; PWR9-NEXT: lxv 35, 0(3) 18777; PWR9-NEXT: vcmpgtud 2, 3, 2 18778; PWR9-NEXT: blr 18779 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18780 %3 = icmp ult <2 x i64> %2, <i64 27, i64 27> 18781 %4 = sext <2 x i1> %3 to <2 x i64> 18782 ret <2 x i64> %4 18783} 18784 18785define <2 x i64> @ugt_27_v2i64(<2 x i64> %0) { 18786; PWR5-LABEL: ugt_27_v2i64: 18787; PWR5: # %bb.0: 18788; PWR5-NEXT: lis 5, 21845 18789; PWR5-NEXT: lis 6, 13107 18790; PWR5-NEXT: ori 5, 5, 21845 18791; PWR5-NEXT: rotldi 8, 4, 63 18792; PWR5-NEXT: rotldi 9, 3, 63 18793; PWR5-NEXT: rldimi 5, 5, 32, 0 18794; PWR5-NEXT: and 8, 8, 5 18795; PWR5-NEXT: and 5, 9, 5 18796; PWR5-NEXT: ori 6, 6, 13107 18797; PWR5-NEXT: sub 3, 3, 5 18798; PWR5-NEXT: rldimi 6, 6, 32, 0 18799; PWR5-NEXT: sub 4, 4, 8 18800; PWR5-NEXT: and 8, 3, 6 18801; PWR5-NEXT: rotldi 3, 3, 62 18802; PWR5-NEXT: and 3, 3, 6 18803; PWR5-NEXT: lis 7, 3855 18804; PWR5-NEXT: and 5, 4, 6 18805; PWR5-NEXT: rotldi 4, 4, 62 18806; PWR5-NEXT: add 3, 8, 3 18807; PWR5-NEXT: lis 9, 257 18808; PWR5-NEXT: ori 7, 7, 3855 18809; PWR5-NEXT: and 4, 4, 6 18810; PWR5-NEXT: rldicl 6, 3, 60, 4 18811; PWR5-NEXT: ori 9, 9, 257 18812; PWR5-NEXT: rldimi 7, 7, 32, 0 18813; PWR5-NEXT: add 4, 5, 4 18814; PWR5-NEXT: add 3, 3, 6 18815; PWR5-NEXT: rldimi 9, 9, 32, 0 18816; PWR5-NEXT: rldicl 5, 4, 60, 4 18817; PWR5-NEXT: and 3, 3, 7 18818; PWR5-NEXT: add 4, 4, 5 18819; PWR5-NEXT: mulld 3, 3, 9 18820; PWR5-NEXT: and 4, 4, 7 18821; PWR5-NEXT: rldicl 3, 3, 8, 56 18822; PWR5-NEXT: mulld 4, 4, 9 18823; PWR5-NEXT: li 5, 27 18824; PWR5-NEXT: subfic 3, 3, 27 18825; PWR5-NEXT: rldicl 4, 4, 8, 56 18826; PWR5-NEXT: subfe 3, 5, 5 18827; PWR5-NEXT: subfic 4, 4, 27 18828; PWR5-NEXT: subfe 4, 5, 5 18829; PWR5-NEXT: blr 18830; 18831; PWR6-LABEL: ugt_27_v2i64: 18832; PWR6: # %bb.0: 18833; PWR6-NEXT: lis 5, 21845 18834; PWR6-NEXT: lis 6, 13107 18835; PWR6-NEXT: ori 5, 5, 21845 18836; PWR6-NEXT: rotldi 8, 4, 63 18837; PWR6-NEXT: rotldi 9, 3, 63 18838; PWR6-NEXT: rldimi 5, 5, 32, 0 18839; PWR6-NEXT: and 8, 8, 5 18840; PWR6-NEXT: and 5, 9, 5 18841; PWR6-NEXT: ori 6, 6, 13107 18842; PWR6-NEXT: sub 3, 3, 5 18843; PWR6-NEXT: rldimi 6, 6, 32, 0 18844; PWR6-NEXT: sub 4, 4, 8 18845; PWR6-NEXT: and 8, 3, 6 18846; PWR6-NEXT: rotldi 3, 3, 62 18847; PWR6-NEXT: and 3, 3, 6 18848; PWR6-NEXT: lis 7, 3855 18849; PWR6-NEXT: and 5, 4, 6 18850; PWR6-NEXT: rotldi 4, 4, 62 18851; PWR6-NEXT: add 3, 8, 3 18852; PWR6-NEXT: lis 9, 257 18853; PWR6-NEXT: ori 7, 7, 3855 18854; PWR6-NEXT: and 4, 4, 6 18855; PWR6-NEXT: rldicl 6, 3, 60, 4 18856; PWR6-NEXT: ori 9, 9, 257 18857; PWR6-NEXT: rldimi 7, 7, 32, 0 18858; PWR6-NEXT: add 4, 5, 4 18859; PWR6-NEXT: add 3, 3, 6 18860; PWR6-NEXT: rldimi 9, 9, 32, 0 18861; PWR6-NEXT: rldicl 5, 4, 60, 4 18862; PWR6-NEXT: and 3, 3, 7 18863; PWR6-NEXT: add 4, 4, 5 18864; PWR6-NEXT: mulld 3, 3, 9 18865; PWR6-NEXT: and 4, 4, 7 18866; PWR6-NEXT: rldicl 3, 3, 8, 56 18867; PWR6-NEXT: mulld 4, 4, 9 18868; PWR6-NEXT: li 5, 27 18869; PWR6-NEXT: subfic 3, 3, 27 18870; PWR6-NEXT: rldicl 4, 4, 8, 56 18871; PWR6-NEXT: subfe 3, 5, 5 18872; PWR6-NEXT: subfic 4, 4, 27 18873; PWR6-NEXT: subfe 4, 5, 5 18874; PWR6-NEXT: blr 18875; 18876; PWR7-LABEL: ugt_27_v2i64: 18877; PWR7: # %bb.0: 18878; PWR7-NEXT: addi 3, 1, -32 18879; PWR7-NEXT: li 5, -1 18880; PWR7-NEXT: stxvd2x 34, 0, 3 18881; PWR7-NEXT: ld 4, -24(1) 18882; PWR7-NEXT: ld 3, -32(1) 18883; PWR7-NEXT: popcntd 4, 4 18884; PWR7-NEXT: popcntd 3, 3 18885; PWR7-NEXT: cmpldi 4, 27 18886; PWR7-NEXT: li 4, 0 18887; PWR7-NEXT: iselgt 6, 5, 4 18888; PWR7-NEXT: cmpldi 3, 27 18889; PWR7-NEXT: iselgt 3, 5, 4 18890; PWR7-NEXT: std 6, -8(1) 18891; PWR7-NEXT: std 3, -16(1) 18892; PWR7-NEXT: addi 3, 1, -16 18893; PWR7-NEXT: lxvd2x 34, 0, 3 18894; PWR7-NEXT: blr 18895; 18896; PWR8-LABEL: ugt_27_v2i64: 18897; PWR8: # %bb.0: 18898; PWR8-NEXT: addis 3, 2, .LCPI152_0@toc@ha 18899; PWR8-NEXT: vpopcntd 2, 2 18900; PWR8-NEXT: addi 3, 3, .LCPI152_0@toc@l 18901; PWR8-NEXT: lxvd2x 35, 0, 3 18902; PWR8-NEXT: vcmpgtud 2, 2, 3 18903; PWR8-NEXT: blr 18904; 18905; PWR9-LABEL: ugt_27_v2i64: 18906; PWR9: # %bb.0: 18907; PWR9-NEXT: addis 3, 2, .LCPI152_0@toc@ha 18908; PWR9-NEXT: vpopcntd 2, 2 18909; PWR9-NEXT: addi 3, 3, .LCPI152_0@toc@l 18910; PWR9-NEXT: lxv 35, 0(3) 18911; PWR9-NEXT: vcmpgtud 2, 2, 3 18912; PWR9-NEXT: blr 18913 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 18914 %3 = icmp ugt <2 x i64> %2, <i64 27, i64 27> 18915 %4 = sext <2 x i1> %3 to <2 x i64> 18916 ret <2 x i64> %4 18917} 18918 18919define <2 x i64> @ult_28_v2i64(<2 x i64> %0) { 18920; PWR5-LABEL: ult_28_v2i64: 18921; PWR5: # %bb.0: 18922; PWR5-NEXT: lis 5, 21845 18923; PWR5-NEXT: lis 6, 13107 18924; PWR5-NEXT: ori 5, 5, 21845 18925; PWR5-NEXT: rotldi 8, 4, 63 18926; PWR5-NEXT: rotldi 9, 3, 63 18927; PWR5-NEXT: rldimi 5, 5, 32, 0 18928; PWR5-NEXT: and 8, 8, 5 18929; PWR5-NEXT: and 5, 9, 5 18930; PWR5-NEXT: ori 6, 6, 13107 18931; PWR5-NEXT: sub 3, 3, 5 18932; PWR5-NEXT: rldimi 6, 6, 32, 0 18933; PWR5-NEXT: sub 4, 4, 8 18934; PWR5-NEXT: and 8, 3, 6 18935; PWR5-NEXT: rotldi 3, 3, 62 18936; PWR5-NEXT: and 3, 3, 6 18937; PWR5-NEXT: lis 7, 3855 18938; PWR5-NEXT: and 5, 4, 6 18939; PWR5-NEXT: rotldi 4, 4, 62 18940; PWR5-NEXT: add 3, 8, 3 18941; PWR5-NEXT: lis 9, 257 18942; PWR5-NEXT: ori 7, 7, 3855 18943; PWR5-NEXT: and 4, 4, 6 18944; PWR5-NEXT: rldicl 6, 3, 60, 4 18945; PWR5-NEXT: ori 9, 9, 257 18946; PWR5-NEXT: rldimi 7, 7, 32, 0 18947; PWR5-NEXT: add 4, 5, 4 18948; PWR5-NEXT: add 3, 3, 6 18949; PWR5-NEXT: rldimi 9, 9, 32, 0 18950; PWR5-NEXT: rldicl 5, 4, 60, 4 18951; PWR5-NEXT: and 3, 3, 7 18952; PWR5-NEXT: add 4, 4, 5 18953; PWR5-NEXT: mulld 3, 3, 9 18954; PWR5-NEXT: and 4, 4, 7 18955; PWR5-NEXT: rldicl 3, 3, 8, 56 18956; PWR5-NEXT: li 5, 28 18957; PWR5-NEXT: mulld 4, 4, 9 18958; PWR5-NEXT: subc 6, 3, 5 18959; PWR5-NEXT: rldicl 4, 4, 8, 56 18960; PWR5-NEXT: subfe 3, 3, 3 18961; PWR5-NEXT: subc 5, 4, 5 18962; PWR5-NEXT: subfe 4, 4, 4 18963; PWR5-NEXT: blr 18964; 18965; PWR6-LABEL: ult_28_v2i64: 18966; PWR6: # %bb.0: 18967; PWR6-NEXT: lis 5, 21845 18968; PWR6-NEXT: lis 6, 13107 18969; PWR6-NEXT: ori 5, 5, 21845 18970; PWR6-NEXT: rotldi 8, 4, 63 18971; PWR6-NEXT: rotldi 9, 3, 63 18972; PWR6-NEXT: rldimi 5, 5, 32, 0 18973; PWR6-NEXT: and 8, 8, 5 18974; PWR6-NEXT: and 5, 9, 5 18975; PWR6-NEXT: ori 6, 6, 13107 18976; PWR6-NEXT: sub 3, 3, 5 18977; PWR6-NEXT: rldimi 6, 6, 32, 0 18978; PWR6-NEXT: sub 4, 4, 8 18979; PWR6-NEXT: and 8, 3, 6 18980; PWR6-NEXT: rotldi 3, 3, 62 18981; PWR6-NEXT: and 3, 3, 6 18982; PWR6-NEXT: lis 7, 3855 18983; PWR6-NEXT: and 5, 4, 6 18984; PWR6-NEXT: rotldi 4, 4, 62 18985; PWR6-NEXT: add 3, 8, 3 18986; PWR6-NEXT: lis 9, 257 18987; PWR6-NEXT: ori 7, 7, 3855 18988; PWR6-NEXT: and 4, 4, 6 18989; PWR6-NEXT: rldicl 6, 3, 60, 4 18990; PWR6-NEXT: ori 9, 9, 257 18991; PWR6-NEXT: rldimi 7, 7, 32, 0 18992; PWR6-NEXT: add 4, 5, 4 18993; PWR6-NEXT: add 3, 3, 6 18994; PWR6-NEXT: rldimi 9, 9, 32, 0 18995; PWR6-NEXT: rldicl 5, 4, 60, 4 18996; PWR6-NEXT: and 3, 3, 7 18997; PWR6-NEXT: add 4, 4, 5 18998; PWR6-NEXT: mulld 3, 3, 9 18999; PWR6-NEXT: and 4, 4, 7 19000; PWR6-NEXT: rldicl 3, 3, 8, 56 19001; PWR6-NEXT: li 5, 28 19002; PWR6-NEXT: mulld 4, 4, 9 19003; PWR6-NEXT: subc 6, 3, 5 19004; PWR6-NEXT: rldicl 4, 4, 8, 56 19005; PWR6-NEXT: subfe 3, 3, 3 19006; PWR6-NEXT: subc 5, 4, 5 19007; PWR6-NEXT: subfe 4, 4, 4 19008; PWR6-NEXT: blr 19009; 19010; PWR7-LABEL: ult_28_v2i64: 19011; PWR7: # %bb.0: 19012; PWR7-NEXT: addi 3, 1, -32 19013; PWR7-NEXT: li 5, -1 19014; PWR7-NEXT: stxvd2x 34, 0, 3 19015; PWR7-NEXT: ld 4, -24(1) 19016; PWR7-NEXT: ld 3, -32(1) 19017; PWR7-NEXT: popcntd 4, 4 19018; PWR7-NEXT: popcntd 3, 3 19019; PWR7-NEXT: cmpldi 4, 28 19020; PWR7-NEXT: li 4, 0 19021; PWR7-NEXT: isellt 6, 5, 4 19022; PWR7-NEXT: cmpldi 3, 28 19023; PWR7-NEXT: isellt 3, 5, 4 19024; PWR7-NEXT: std 6, -8(1) 19025; PWR7-NEXT: std 3, -16(1) 19026; PWR7-NEXT: addi 3, 1, -16 19027; PWR7-NEXT: lxvd2x 34, 0, 3 19028; PWR7-NEXT: blr 19029; 19030; PWR8-LABEL: ult_28_v2i64: 19031; PWR8: # %bb.0: 19032; PWR8-NEXT: addis 3, 2, .LCPI153_0@toc@ha 19033; PWR8-NEXT: vpopcntd 2, 2 19034; PWR8-NEXT: addi 3, 3, .LCPI153_0@toc@l 19035; PWR8-NEXT: lxvd2x 35, 0, 3 19036; PWR8-NEXT: vcmpgtud 2, 3, 2 19037; PWR8-NEXT: blr 19038; 19039; PWR9-LABEL: ult_28_v2i64: 19040; PWR9: # %bb.0: 19041; PWR9-NEXT: addis 3, 2, .LCPI153_0@toc@ha 19042; PWR9-NEXT: vpopcntd 2, 2 19043; PWR9-NEXT: addi 3, 3, .LCPI153_0@toc@l 19044; PWR9-NEXT: lxv 35, 0(3) 19045; PWR9-NEXT: vcmpgtud 2, 3, 2 19046; PWR9-NEXT: blr 19047 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19048 %3 = icmp ult <2 x i64> %2, <i64 28, i64 28> 19049 %4 = sext <2 x i1> %3 to <2 x i64> 19050 ret <2 x i64> %4 19051} 19052 19053define <2 x i64> @ugt_28_v2i64(<2 x i64> %0) { 19054; PWR5-LABEL: ugt_28_v2i64: 19055; PWR5: # %bb.0: 19056; PWR5-NEXT: lis 5, 21845 19057; PWR5-NEXT: lis 6, 13107 19058; PWR5-NEXT: ori 5, 5, 21845 19059; PWR5-NEXT: rotldi 8, 4, 63 19060; PWR5-NEXT: rotldi 9, 3, 63 19061; PWR5-NEXT: rldimi 5, 5, 32, 0 19062; PWR5-NEXT: and 8, 8, 5 19063; PWR5-NEXT: and 5, 9, 5 19064; PWR5-NEXT: ori 6, 6, 13107 19065; PWR5-NEXT: sub 3, 3, 5 19066; PWR5-NEXT: rldimi 6, 6, 32, 0 19067; PWR5-NEXT: sub 4, 4, 8 19068; PWR5-NEXT: and 8, 3, 6 19069; PWR5-NEXT: rotldi 3, 3, 62 19070; PWR5-NEXT: and 3, 3, 6 19071; PWR5-NEXT: lis 7, 3855 19072; PWR5-NEXT: and 5, 4, 6 19073; PWR5-NEXT: rotldi 4, 4, 62 19074; PWR5-NEXT: add 3, 8, 3 19075; PWR5-NEXT: lis 9, 257 19076; PWR5-NEXT: ori 7, 7, 3855 19077; PWR5-NEXT: and 4, 4, 6 19078; PWR5-NEXT: rldicl 6, 3, 60, 4 19079; PWR5-NEXT: ori 9, 9, 257 19080; PWR5-NEXT: rldimi 7, 7, 32, 0 19081; PWR5-NEXT: add 4, 5, 4 19082; PWR5-NEXT: add 3, 3, 6 19083; PWR5-NEXT: rldimi 9, 9, 32, 0 19084; PWR5-NEXT: rldicl 5, 4, 60, 4 19085; PWR5-NEXT: and 3, 3, 7 19086; PWR5-NEXT: add 4, 4, 5 19087; PWR5-NEXT: mulld 3, 3, 9 19088; PWR5-NEXT: and 4, 4, 7 19089; PWR5-NEXT: rldicl 3, 3, 8, 56 19090; PWR5-NEXT: mulld 4, 4, 9 19091; PWR5-NEXT: li 5, 28 19092; PWR5-NEXT: subfic 3, 3, 28 19093; PWR5-NEXT: rldicl 4, 4, 8, 56 19094; PWR5-NEXT: subfe 3, 5, 5 19095; PWR5-NEXT: subfic 4, 4, 28 19096; PWR5-NEXT: subfe 4, 5, 5 19097; PWR5-NEXT: blr 19098; 19099; PWR6-LABEL: ugt_28_v2i64: 19100; PWR6: # %bb.0: 19101; PWR6-NEXT: lis 5, 21845 19102; PWR6-NEXT: lis 6, 13107 19103; PWR6-NEXT: ori 5, 5, 21845 19104; PWR6-NEXT: rotldi 8, 4, 63 19105; PWR6-NEXT: rotldi 9, 3, 63 19106; PWR6-NEXT: rldimi 5, 5, 32, 0 19107; PWR6-NEXT: and 8, 8, 5 19108; PWR6-NEXT: and 5, 9, 5 19109; PWR6-NEXT: ori 6, 6, 13107 19110; PWR6-NEXT: sub 3, 3, 5 19111; PWR6-NEXT: rldimi 6, 6, 32, 0 19112; PWR6-NEXT: sub 4, 4, 8 19113; PWR6-NEXT: and 8, 3, 6 19114; PWR6-NEXT: rotldi 3, 3, 62 19115; PWR6-NEXT: and 3, 3, 6 19116; PWR6-NEXT: lis 7, 3855 19117; PWR6-NEXT: and 5, 4, 6 19118; PWR6-NEXT: rotldi 4, 4, 62 19119; PWR6-NEXT: add 3, 8, 3 19120; PWR6-NEXT: lis 9, 257 19121; PWR6-NEXT: ori 7, 7, 3855 19122; PWR6-NEXT: and 4, 4, 6 19123; PWR6-NEXT: rldicl 6, 3, 60, 4 19124; PWR6-NEXT: ori 9, 9, 257 19125; PWR6-NEXT: rldimi 7, 7, 32, 0 19126; PWR6-NEXT: add 4, 5, 4 19127; PWR6-NEXT: add 3, 3, 6 19128; PWR6-NEXT: rldimi 9, 9, 32, 0 19129; PWR6-NEXT: rldicl 5, 4, 60, 4 19130; PWR6-NEXT: and 3, 3, 7 19131; PWR6-NEXT: add 4, 4, 5 19132; PWR6-NEXT: mulld 3, 3, 9 19133; PWR6-NEXT: and 4, 4, 7 19134; PWR6-NEXT: rldicl 3, 3, 8, 56 19135; PWR6-NEXT: mulld 4, 4, 9 19136; PWR6-NEXT: li 5, 28 19137; PWR6-NEXT: subfic 3, 3, 28 19138; PWR6-NEXT: rldicl 4, 4, 8, 56 19139; PWR6-NEXT: subfe 3, 5, 5 19140; PWR6-NEXT: subfic 4, 4, 28 19141; PWR6-NEXT: subfe 4, 5, 5 19142; PWR6-NEXT: blr 19143; 19144; PWR7-LABEL: ugt_28_v2i64: 19145; PWR7: # %bb.0: 19146; PWR7-NEXT: addi 3, 1, -32 19147; PWR7-NEXT: li 5, -1 19148; PWR7-NEXT: stxvd2x 34, 0, 3 19149; PWR7-NEXT: ld 4, -24(1) 19150; PWR7-NEXT: ld 3, -32(1) 19151; PWR7-NEXT: popcntd 4, 4 19152; PWR7-NEXT: popcntd 3, 3 19153; PWR7-NEXT: cmpldi 4, 28 19154; PWR7-NEXT: li 4, 0 19155; PWR7-NEXT: iselgt 6, 5, 4 19156; PWR7-NEXT: cmpldi 3, 28 19157; PWR7-NEXT: iselgt 3, 5, 4 19158; PWR7-NEXT: std 6, -8(1) 19159; PWR7-NEXT: std 3, -16(1) 19160; PWR7-NEXT: addi 3, 1, -16 19161; PWR7-NEXT: lxvd2x 34, 0, 3 19162; PWR7-NEXT: blr 19163; 19164; PWR8-LABEL: ugt_28_v2i64: 19165; PWR8: # %bb.0: 19166; PWR8-NEXT: addis 3, 2, .LCPI154_0@toc@ha 19167; PWR8-NEXT: vpopcntd 2, 2 19168; PWR8-NEXT: addi 3, 3, .LCPI154_0@toc@l 19169; PWR8-NEXT: lxvd2x 35, 0, 3 19170; PWR8-NEXT: vcmpgtud 2, 2, 3 19171; PWR8-NEXT: blr 19172; 19173; PWR9-LABEL: ugt_28_v2i64: 19174; PWR9: # %bb.0: 19175; PWR9-NEXT: addis 3, 2, .LCPI154_0@toc@ha 19176; PWR9-NEXT: vpopcntd 2, 2 19177; PWR9-NEXT: addi 3, 3, .LCPI154_0@toc@l 19178; PWR9-NEXT: lxv 35, 0(3) 19179; PWR9-NEXT: vcmpgtud 2, 2, 3 19180; PWR9-NEXT: blr 19181 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19182 %3 = icmp ugt <2 x i64> %2, <i64 28, i64 28> 19183 %4 = sext <2 x i1> %3 to <2 x i64> 19184 ret <2 x i64> %4 19185} 19186 19187define <2 x i64> @ult_29_v2i64(<2 x i64> %0) { 19188; PWR5-LABEL: ult_29_v2i64: 19189; PWR5: # %bb.0: 19190; PWR5-NEXT: lis 5, 21845 19191; PWR5-NEXT: lis 6, 13107 19192; PWR5-NEXT: ori 5, 5, 21845 19193; PWR5-NEXT: rotldi 8, 4, 63 19194; PWR5-NEXT: rotldi 9, 3, 63 19195; PWR5-NEXT: rldimi 5, 5, 32, 0 19196; PWR5-NEXT: and 8, 8, 5 19197; PWR5-NEXT: and 5, 9, 5 19198; PWR5-NEXT: ori 6, 6, 13107 19199; PWR5-NEXT: sub 3, 3, 5 19200; PWR5-NEXT: rldimi 6, 6, 32, 0 19201; PWR5-NEXT: sub 4, 4, 8 19202; PWR5-NEXT: and 8, 3, 6 19203; PWR5-NEXT: rotldi 3, 3, 62 19204; PWR5-NEXT: and 3, 3, 6 19205; PWR5-NEXT: lis 7, 3855 19206; PWR5-NEXT: and 5, 4, 6 19207; PWR5-NEXT: rotldi 4, 4, 62 19208; PWR5-NEXT: add 3, 8, 3 19209; PWR5-NEXT: lis 9, 257 19210; PWR5-NEXT: ori 7, 7, 3855 19211; PWR5-NEXT: and 4, 4, 6 19212; PWR5-NEXT: rldicl 6, 3, 60, 4 19213; PWR5-NEXT: ori 9, 9, 257 19214; PWR5-NEXT: rldimi 7, 7, 32, 0 19215; PWR5-NEXT: add 4, 5, 4 19216; PWR5-NEXT: add 3, 3, 6 19217; PWR5-NEXT: rldimi 9, 9, 32, 0 19218; PWR5-NEXT: rldicl 5, 4, 60, 4 19219; PWR5-NEXT: and 3, 3, 7 19220; PWR5-NEXT: add 4, 4, 5 19221; PWR5-NEXT: mulld 3, 3, 9 19222; PWR5-NEXT: and 4, 4, 7 19223; PWR5-NEXT: rldicl 3, 3, 8, 56 19224; PWR5-NEXT: li 5, 29 19225; PWR5-NEXT: mulld 4, 4, 9 19226; PWR5-NEXT: subc 6, 3, 5 19227; PWR5-NEXT: rldicl 4, 4, 8, 56 19228; PWR5-NEXT: subfe 3, 3, 3 19229; PWR5-NEXT: subc 5, 4, 5 19230; PWR5-NEXT: subfe 4, 4, 4 19231; PWR5-NEXT: blr 19232; 19233; PWR6-LABEL: ult_29_v2i64: 19234; PWR6: # %bb.0: 19235; PWR6-NEXT: lis 5, 21845 19236; PWR6-NEXT: lis 6, 13107 19237; PWR6-NEXT: ori 5, 5, 21845 19238; PWR6-NEXT: rotldi 8, 4, 63 19239; PWR6-NEXT: rotldi 9, 3, 63 19240; PWR6-NEXT: rldimi 5, 5, 32, 0 19241; PWR6-NEXT: and 8, 8, 5 19242; PWR6-NEXT: and 5, 9, 5 19243; PWR6-NEXT: ori 6, 6, 13107 19244; PWR6-NEXT: sub 3, 3, 5 19245; PWR6-NEXT: rldimi 6, 6, 32, 0 19246; PWR6-NEXT: sub 4, 4, 8 19247; PWR6-NEXT: and 8, 3, 6 19248; PWR6-NEXT: rotldi 3, 3, 62 19249; PWR6-NEXT: and 3, 3, 6 19250; PWR6-NEXT: lis 7, 3855 19251; PWR6-NEXT: and 5, 4, 6 19252; PWR6-NEXT: rotldi 4, 4, 62 19253; PWR6-NEXT: add 3, 8, 3 19254; PWR6-NEXT: lis 9, 257 19255; PWR6-NEXT: ori 7, 7, 3855 19256; PWR6-NEXT: and 4, 4, 6 19257; PWR6-NEXT: rldicl 6, 3, 60, 4 19258; PWR6-NEXT: ori 9, 9, 257 19259; PWR6-NEXT: rldimi 7, 7, 32, 0 19260; PWR6-NEXT: add 4, 5, 4 19261; PWR6-NEXT: add 3, 3, 6 19262; PWR6-NEXT: rldimi 9, 9, 32, 0 19263; PWR6-NEXT: rldicl 5, 4, 60, 4 19264; PWR6-NEXT: and 3, 3, 7 19265; PWR6-NEXT: add 4, 4, 5 19266; PWR6-NEXT: mulld 3, 3, 9 19267; PWR6-NEXT: and 4, 4, 7 19268; PWR6-NEXT: rldicl 3, 3, 8, 56 19269; PWR6-NEXT: li 5, 29 19270; PWR6-NEXT: mulld 4, 4, 9 19271; PWR6-NEXT: subc 6, 3, 5 19272; PWR6-NEXT: rldicl 4, 4, 8, 56 19273; PWR6-NEXT: subfe 3, 3, 3 19274; PWR6-NEXT: subc 5, 4, 5 19275; PWR6-NEXT: subfe 4, 4, 4 19276; PWR6-NEXT: blr 19277; 19278; PWR7-LABEL: ult_29_v2i64: 19279; PWR7: # %bb.0: 19280; PWR7-NEXT: addi 3, 1, -32 19281; PWR7-NEXT: li 5, -1 19282; PWR7-NEXT: stxvd2x 34, 0, 3 19283; PWR7-NEXT: ld 4, -24(1) 19284; PWR7-NEXT: ld 3, -32(1) 19285; PWR7-NEXT: popcntd 4, 4 19286; PWR7-NEXT: popcntd 3, 3 19287; PWR7-NEXT: cmpldi 4, 29 19288; PWR7-NEXT: li 4, 0 19289; PWR7-NEXT: isellt 6, 5, 4 19290; PWR7-NEXT: cmpldi 3, 29 19291; PWR7-NEXT: isellt 3, 5, 4 19292; PWR7-NEXT: std 6, -8(1) 19293; PWR7-NEXT: std 3, -16(1) 19294; PWR7-NEXT: addi 3, 1, -16 19295; PWR7-NEXT: lxvd2x 34, 0, 3 19296; PWR7-NEXT: blr 19297; 19298; PWR8-LABEL: ult_29_v2i64: 19299; PWR8: # %bb.0: 19300; PWR8-NEXT: addis 3, 2, .LCPI155_0@toc@ha 19301; PWR8-NEXT: vpopcntd 2, 2 19302; PWR8-NEXT: addi 3, 3, .LCPI155_0@toc@l 19303; PWR8-NEXT: lxvd2x 35, 0, 3 19304; PWR8-NEXT: vcmpgtud 2, 3, 2 19305; PWR8-NEXT: blr 19306; 19307; PWR9-LABEL: ult_29_v2i64: 19308; PWR9: # %bb.0: 19309; PWR9-NEXT: addis 3, 2, .LCPI155_0@toc@ha 19310; PWR9-NEXT: vpopcntd 2, 2 19311; PWR9-NEXT: addi 3, 3, .LCPI155_0@toc@l 19312; PWR9-NEXT: lxv 35, 0(3) 19313; PWR9-NEXT: vcmpgtud 2, 3, 2 19314; PWR9-NEXT: blr 19315 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19316 %3 = icmp ult <2 x i64> %2, <i64 29, i64 29> 19317 %4 = sext <2 x i1> %3 to <2 x i64> 19318 ret <2 x i64> %4 19319} 19320 19321define <2 x i64> @ugt_29_v2i64(<2 x i64> %0) { 19322; PWR5-LABEL: ugt_29_v2i64: 19323; PWR5: # %bb.0: 19324; PWR5-NEXT: lis 5, 21845 19325; PWR5-NEXT: lis 6, 13107 19326; PWR5-NEXT: ori 5, 5, 21845 19327; PWR5-NEXT: rotldi 8, 4, 63 19328; PWR5-NEXT: rotldi 9, 3, 63 19329; PWR5-NEXT: rldimi 5, 5, 32, 0 19330; PWR5-NEXT: and 8, 8, 5 19331; PWR5-NEXT: and 5, 9, 5 19332; PWR5-NEXT: ori 6, 6, 13107 19333; PWR5-NEXT: sub 3, 3, 5 19334; PWR5-NEXT: rldimi 6, 6, 32, 0 19335; PWR5-NEXT: sub 4, 4, 8 19336; PWR5-NEXT: and 8, 3, 6 19337; PWR5-NEXT: rotldi 3, 3, 62 19338; PWR5-NEXT: and 3, 3, 6 19339; PWR5-NEXT: lis 7, 3855 19340; PWR5-NEXT: and 5, 4, 6 19341; PWR5-NEXT: rotldi 4, 4, 62 19342; PWR5-NEXT: add 3, 8, 3 19343; PWR5-NEXT: lis 9, 257 19344; PWR5-NEXT: ori 7, 7, 3855 19345; PWR5-NEXT: and 4, 4, 6 19346; PWR5-NEXT: rldicl 6, 3, 60, 4 19347; PWR5-NEXT: ori 9, 9, 257 19348; PWR5-NEXT: rldimi 7, 7, 32, 0 19349; PWR5-NEXT: add 4, 5, 4 19350; PWR5-NEXT: add 3, 3, 6 19351; PWR5-NEXT: rldimi 9, 9, 32, 0 19352; PWR5-NEXT: rldicl 5, 4, 60, 4 19353; PWR5-NEXT: and 3, 3, 7 19354; PWR5-NEXT: add 4, 4, 5 19355; PWR5-NEXT: mulld 3, 3, 9 19356; PWR5-NEXT: and 4, 4, 7 19357; PWR5-NEXT: rldicl 3, 3, 8, 56 19358; PWR5-NEXT: mulld 4, 4, 9 19359; PWR5-NEXT: li 5, 29 19360; PWR5-NEXT: subfic 3, 3, 29 19361; PWR5-NEXT: rldicl 4, 4, 8, 56 19362; PWR5-NEXT: subfe 3, 5, 5 19363; PWR5-NEXT: subfic 4, 4, 29 19364; PWR5-NEXT: subfe 4, 5, 5 19365; PWR5-NEXT: blr 19366; 19367; PWR6-LABEL: ugt_29_v2i64: 19368; PWR6: # %bb.0: 19369; PWR6-NEXT: lis 5, 21845 19370; PWR6-NEXT: lis 6, 13107 19371; PWR6-NEXT: ori 5, 5, 21845 19372; PWR6-NEXT: rotldi 8, 4, 63 19373; PWR6-NEXT: rotldi 9, 3, 63 19374; PWR6-NEXT: rldimi 5, 5, 32, 0 19375; PWR6-NEXT: and 8, 8, 5 19376; PWR6-NEXT: and 5, 9, 5 19377; PWR6-NEXT: ori 6, 6, 13107 19378; PWR6-NEXT: sub 3, 3, 5 19379; PWR6-NEXT: rldimi 6, 6, 32, 0 19380; PWR6-NEXT: sub 4, 4, 8 19381; PWR6-NEXT: and 8, 3, 6 19382; PWR6-NEXT: rotldi 3, 3, 62 19383; PWR6-NEXT: and 3, 3, 6 19384; PWR6-NEXT: lis 7, 3855 19385; PWR6-NEXT: and 5, 4, 6 19386; PWR6-NEXT: rotldi 4, 4, 62 19387; PWR6-NEXT: add 3, 8, 3 19388; PWR6-NEXT: lis 9, 257 19389; PWR6-NEXT: ori 7, 7, 3855 19390; PWR6-NEXT: and 4, 4, 6 19391; PWR6-NEXT: rldicl 6, 3, 60, 4 19392; PWR6-NEXT: ori 9, 9, 257 19393; PWR6-NEXT: rldimi 7, 7, 32, 0 19394; PWR6-NEXT: add 4, 5, 4 19395; PWR6-NEXT: add 3, 3, 6 19396; PWR6-NEXT: rldimi 9, 9, 32, 0 19397; PWR6-NEXT: rldicl 5, 4, 60, 4 19398; PWR6-NEXT: and 3, 3, 7 19399; PWR6-NEXT: add 4, 4, 5 19400; PWR6-NEXT: mulld 3, 3, 9 19401; PWR6-NEXT: and 4, 4, 7 19402; PWR6-NEXT: rldicl 3, 3, 8, 56 19403; PWR6-NEXT: mulld 4, 4, 9 19404; PWR6-NEXT: li 5, 29 19405; PWR6-NEXT: subfic 3, 3, 29 19406; PWR6-NEXT: rldicl 4, 4, 8, 56 19407; PWR6-NEXT: subfe 3, 5, 5 19408; PWR6-NEXT: subfic 4, 4, 29 19409; PWR6-NEXT: subfe 4, 5, 5 19410; PWR6-NEXT: blr 19411; 19412; PWR7-LABEL: ugt_29_v2i64: 19413; PWR7: # %bb.0: 19414; PWR7-NEXT: addi 3, 1, -32 19415; PWR7-NEXT: li 5, -1 19416; PWR7-NEXT: stxvd2x 34, 0, 3 19417; PWR7-NEXT: ld 4, -24(1) 19418; PWR7-NEXT: ld 3, -32(1) 19419; PWR7-NEXT: popcntd 4, 4 19420; PWR7-NEXT: popcntd 3, 3 19421; PWR7-NEXT: cmpldi 4, 29 19422; PWR7-NEXT: li 4, 0 19423; PWR7-NEXT: iselgt 6, 5, 4 19424; PWR7-NEXT: cmpldi 3, 29 19425; PWR7-NEXT: iselgt 3, 5, 4 19426; PWR7-NEXT: std 6, -8(1) 19427; PWR7-NEXT: std 3, -16(1) 19428; PWR7-NEXT: addi 3, 1, -16 19429; PWR7-NEXT: lxvd2x 34, 0, 3 19430; PWR7-NEXT: blr 19431; 19432; PWR8-LABEL: ugt_29_v2i64: 19433; PWR8: # %bb.0: 19434; PWR8-NEXT: addis 3, 2, .LCPI156_0@toc@ha 19435; PWR8-NEXT: vpopcntd 2, 2 19436; PWR8-NEXT: addi 3, 3, .LCPI156_0@toc@l 19437; PWR8-NEXT: lxvd2x 35, 0, 3 19438; PWR8-NEXT: vcmpgtud 2, 2, 3 19439; PWR8-NEXT: blr 19440; 19441; PWR9-LABEL: ugt_29_v2i64: 19442; PWR9: # %bb.0: 19443; PWR9-NEXT: addis 3, 2, .LCPI156_0@toc@ha 19444; PWR9-NEXT: vpopcntd 2, 2 19445; PWR9-NEXT: addi 3, 3, .LCPI156_0@toc@l 19446; PWR9-NEXT: lxv 35, 0(3) 19447; PWR9-NEXT: vcmpgtud 2, 2, 3 19448; PWR9-NEXT: blr 19449 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19450 %3 = icmp ugt <2 x i64> %2, <i64 29, i64 29> 19451 %4 = sext <2 x i1> %3 to <2 x i64> 19452 ret <2 x i64> %4 19453} 19454 19455define <2 x i64> @ult_30_v2i64(<2 x i64> %0) { 19456; PWR5-LABEL: ult_30_v2i64: 19457; PWR5: # %bb.0: 19458; PWR5-NEXT: lis 5, 21845 19459; PWR5-NEXT: lis 6, 13107 19460; PWR5-NEXT: ori 5, 5, 21845 19461; PWR5-NEXT: rotldi 8, 4, 63 19462; PWR5-NEXT: rotldi 9, 3, 63 19463; PWR5-NEXT: rldimi 5, 5, 32, 0 19464; PWR5-NEXT: and 8, 8, 5 19465; PWR5-NEXT: and 5, 9, 5 19466; PWR5-NEXT: ori 6, 6, 13107 19467; PWR5-NEXT: sub 3, 3, 5 19468; PWR5-NEXT: rldimi 6, 6, 32, 0 19469; PWR5-NEXT: sub 4, 4, 8 19470; PWR5-NEXT: and 8, 3, 6 19471; PWR5-NEXT: rotldi 3, 3, 62 19472; PWR5-NEXT: and 3, 3, 6 19473; PWR5-NEXT: lis 7, 3855 19474; PWR5-NEXT: and 5, 4, 6 19475; PWR5-NEXT: rotldi 4, 4, 62 19476; PWR5-NEXT: add 3, 8, 3 19477; PWR5-NEXT: lis 9, 257 19478; PWR5-NEXT: ori 7, 7, 3855 19479; PWR5-NEXT: and 4, 4, 6 19480; PWR5-NEXT: rldicl 6, 3, 60, 4 19481; PWR5-NEXT: ori 9, 9, 257 19482; PWR5-NEXT: rldimi 7, 7, 32, 0 19483; PWR5-NEXT: add 4, 5, 4 19484; PWR5-NEXT: add 3, 3, 6 19485; PWR5-NEXT: rldimi 9, 9, 32, 0 19486; PWR5-NEXT: rldicl 5, 4, 60, 4 19487; PWR5-NEXT: and 3, 3, 7 19488; PWR5-NEXT: add 4, 4, 5 19489; PWR5-NEXT: mulld 3, 3, 9 19490; PWR5-NEXT: and 4, 4, 7 19491; PWR5-NEXT: rldicl 3, 3, 8, 56 19492; PWR5-NEXT: li 5, 30 19493; PWR5-NEXT: mulld 4, 4, 9 19494; PWR5-NEXT: subc 6, 3, 5 19495; PWR5-NEXT: rldicl 4, 4, 8, 56 19496; PWR5-NEXT: subfe 3, 3, 3 19497; PWR5-NEXT: subc 5, 4, 5 19498; PWR5-NEXT: subfe 4, 4, 4 19499; PWR5-NEXT: blr 19500; 19501; PWR6-LABEL: ult_30_v2i64: 19502; PWR6: # %bb.0: 19503; PWR6-NEXT: lis 5, 21845 19504; PWR6-NEXT: lis 6, 13107 19505; PWR6-NEXT: ori 5, 5, 21845 19506; PWR6-NEXT: rotldi 8, 4, 63 19507; PWR6-NEXT: rotldi 9, 3, 63 19508; PWR6-NEXT: rldimi 5, 5, 32, 0 19509; PWR6-NEXT: and 8, 8, 5 19510; PWR6-NEXT: and 5, 9, 5 19511; PWR6-NEXT: ori 6, 6, 13107 19512; PWR6-NEXT: sub 3, 3, 5 19513; PWR6-NEXT: rldimi 6, 6, 32, 0 19514; PWR6-NEXT: sub 4, 4, 8 19515; PWR6-NEXT: and 8, 3, 6 19516; PWR6-NEXT: rotldi 3, 3, 62 19517; PWR6-NEXT: and 3, 3, 6 19518; PWR6-NEXT: lis 7, 3855 19519; PWR6-NEXT: and 5, 4, 6 19520; PWR6-NEXT: rotldi 4, 4, 62 19521; PWR6-NEXT: add 3, 8, 3 19522; PWR6-NEXT: lis 9, 257 19523; PWR6-NEXT: ori 7, 7, 3855 19524; PWR6-NEXT: and 4, 4, 6 19525; PWR6-NEXT: rldicl 6, 3, 60, 4 19526; PWR6-NEXT: ori 9, 9, 257 19527; PWR6-NEXT: rldimi 7, 7, 32, 0 19528; PWR6-NEXT: add 4, 5, 4 19529; PWR6-NEXT: add 3, 3, 6 19530; PWR6-NEXT: rldimi 9, 9, 32, 0 19531; PWR6-NEXT: rldicl 5, 4, 60, 4 19532; PWR6-NEXT: and 3, 3, 7 19533; PWR6-NEXT: add 4, 4, 5 19534; PWR6-NEXT: mulld 3, 3, 9 19535; PWR6-NEXT: and 4, 4, 7 19536; PWR6-NEXT: rldicl 3, 3, 8, 56 19537; PWR6-NEXT: li 5, 30 19538; PWR6-NEXT: mulld 4, 4, 9 19539; PWR6-NEXT: subc 6, 3, 5 19540; PWR6-NEXT: rldicl 4, 4, 8, 56 19541; PWR6-NEXT: subfe 3, 3, 3 19542; PWR6-NEXT: subc 5, 4, 5 19543; PWR6-NEXT: subfe 4, 4, 4 19544; PWR6-NEXT: blr 19545; 19546; PWR7-LABEL: ult_30_v2i64: 19547; PWR7: # %bb.0: 19548; PWR7-NEXT: addi 3, 1, -32 19549; PWR7-NEXT: li 5, -1 19550; PWR7-NEXT: stxvd2x 34, 0, 3 19551; PWR7-NEXT: ld 4, -24(1) 19552; PWR7-NEXT: ld 3, -32(1) 19553; PWR7-NEXT: popcntd 4, 4 19554; PWR7-NEXT: popcntd 3, 3 19555; PWR7-NEXT: cmpldi 4, 30 19556; PWR7-NEXT: li 4, 0 19557; PWR7-NEXT: isellt 6, 5, 4 19558; PWR7-NEXT: cmpldi 3, 30 19559; PWR7-NEXT: isellt 3, 5, 4 19560; PWR7-NEXT: std 6, -8(1) 19561; PWR7-NEXT: std 3, -16(1) 19562; PWR7-NEXT: addi 3, 1, -16 19563; PWR7-NEXT: lxvd2x 34, 0, 3 19564; PWR7-NEXT: blr 19565; 19566; PWR8-LABEL: ult_30_v2i64: 19567; PWR8: # %bb.0: 19568; PWR8-NEXT: addis 3, 2, .LCPI157_0@toc@ha 19569; PWR8-NEXT: vpopcntd 2, 2 19570; PWR8-NEXT: addi 3, 3, .LCPI157_0@toc@l 19571; PWR8-NEXT: lxvd2x 35, 0, 3 19572; PWR8-NEXT: vcmpgtud 2, 3, 2 19573; PWR8-NEXT: blr 19574; 19575; PWR9-LABEL: ult_30_v2i64: 19576; PWR9: # %bb.0: 19577; PWR9-NEXT: addis 3, 2, .LCPI157_0@toc@ha 19578; PWR9-NEXT: vpopcntd 2, 2 19579; PWR9-NEXT: addi 3, 3, .LCPI157_0@toc@l 19580; PWR9-NEXT: lxv 35, 0(3) 19581; PWR9-NEXT: vcmpgtud 2, 3, 2 19582; PWR9-NEXT: blr 19583 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19584 %3 = icmp ult <2 x i64> %2, <i64 30, i64 30> 19585 %4 = sext <2 x i1> %3 to <2 x i64> 19586 ret <2 x i64> %4 19587} 19588 19589define <2 x i64> @ugt_30_v2i64(<2 x i64> %0) { 19590; PWR5-LABEL: ugt_30_v2i64: 19591; PWR5: # %bb.0: 19592; PWR5-NEXT: lis 5, 21845 19593; PWR5-NEXT: lis 6, 13107 19594; PWR5-NEXT: ori 5, 5, 21845 19595; PWR5-NEXT: rotldi 8, 4, 63 19596; PWR5-NEXT: rotldi 9, 3, 63 19597; PWR5-NEXT: rldimi 5, 5, 32, 0 19598; PWR5-NEXT: and 8, 8, 5 19599; PWR5-NEXT: and 5, 9, 5 19600; PWR5-NEXT: ori 6, 6, 13107 19601; PWR5-NEXT: sub 3, 3, 5 19602; PWR5-NEXT: rldimi 6, 6, 32, 0 19603; PWR5-NEXT: sub 4, 4, 8 19604; PWR5-NEXT: and 8, 3, 6 19605; PWR5-NEXT: rotldi 3, 3, 62 19606; PWR5-NEXT: and 3, 3, 6 19607; PWR5-NEXT: lis 7, 3855 19608; PWR5-NEXT: and 5, 4, 6 19609; PWR5-NEXT: rotldi 4, 4, 62 19610; PWR5-NEXT: add 3, 8, 3 19611; PWR5-NEXT: lis 9, 257 19612; PWR5-NEXT: ori 7, 7, 3855 19613; PWR5-NEXT: and 4, 4, 6 19614; PWR5-NEXT: rldicl 6, 3, 60, 4 19615; PWR5-NEXT: ori 9, 9, 257 19616; PWR5-NEXT: rldimi 7, 7, 32, 0 19617; PWR5-NEXT: add 4, 5, 4 19618; PWR5-NEXT: add 3, 3, 6 19619; PWR5-NEXT: rldimi 9, 9, 32, 0 19620; PWR5-NEXT: rldicl 5, 4, 60, 4 19621; PWR5-NEXT: and 3, 3, 7 19622; PWR5-NEXT: add 4, 4, 5 19623; PWR5-NEXT: mulld 3, 3, 9 19624; PWR5-NEXT: and 4, 4, 7 19625; PWR5-NEXT: rldicl 3, 3, 8, 56 19626; PWR5-NEXT: mulld 4, 4, 9 19627; PWR5-NEXT: li 5, 30 19628; PWR5-NEXT: subfic 3, 3, 30 19629; PWR5-NEXT: rldicl 4, 4, 8, 56 19630; PWR5-NEXT: subfe 3, 5, 5 19631; PWR5-NEXT: subfic 4, 4, 30 19632; PWR5-NEXT: subfe 4, 5, 5 19633; PWR5-NEXT: blr 19634; 19635; PWR6-LABEL: ugt_30_v2i64: 19636; PWR6: # %bb.0: 19637; PWR6-NEXT: lis 5, 21845 19638; PWR6-NEXT: lis 6, 13107 19639; PWR6-NEXT: ori 5, 5, 21845 19640; PWR6-NEXT: rotldi 8, 4, 63 19641; PWR6-NEXT: rotldi 9, 3, 63 19642; PWR6-NEXT: rldimi 5, 5, 32, 0 19643; PWR6-NEXT: and 8, 8, 5 19644; PWR6-NEXT: and 5, 9, 5 19645; PWR6-NEXT: ori 6, 6, 13107 19646; PWR6-NEXT: sub 3, 3, 5 19647; PWR6-NEXT: rldimi 6, 6, 32, 0 19648; PWR6-NEXT: sub 4, 4, 8 19649; PWR6-NEXT: and 8, 3, 6 19650; PWR6-NEXT: rotldi 3, 3, 62 19651; PWR6-NEXT: and 3, 3, 6 19652; PWR6-NEXT: lis 7, 3855 19653; PWR6-NEXT: and 5, 4, 6 19654; PWR6-NEXT: rotldi 4, 4, 62 19655; PWR6-NEXT: add 3, 8, 3 19656; PWR6-NEXT: lis 9, 257 19657; PWR6-NEXT: ori 7, 7, 3855 19658; PWR6-NEXT: and 4, 4, 6 19659; PWR6-NEXT: rldicl 6, 3, 60, 4 19660; PWR6-NEXT: ori 9, 9, 257 19661; PWR6-NEXT: rldimi 7, 7, 32, 0 19662; PWR6-NEXT: add 4, 5, 4 19663; PWR6-NEXT: add 3, 3, 6 19664; PWR6-NEXT: rldimi 9, 9, 32, 0 19665; PWR6-NEXT: rldicl 5, 4, 60, 4 19666; PWR6-NEXT: and 3, 3, 7 19667; PWR6-NEXT: add 4, 4, 5 19668; PWR6-NEXT: mulld 3, 3, 9 19669; PWR6-NEXT: and 4, 4, 7 19670; PWR6-NEXT: rldicl 3, 3, 8, 56 19671; PWR6-NEXT: mulld 4, 4, 9 19672; PWR6-NEXT: li 5, 30 19673; PWR6-NEXT: subfic 3, 3, 30 19674; PWR6-NEXT: rldicl 4, 4, 8, 56 19675; PWR6-NEXT: subfe 3, 5, 5 19676; PWR6-NEXT: subfic 4, 4, 30 19677; PWR6-NEXT: subfe 4, 5, 5 19678; PWR6-NEXT: blr 19679; 19680; PWR7-LABEL: ugt_30_v2i64: 19681; PWR7: # %bb.0: 19682; PWR7-NEXT: addi 3, 1, -32 19683; PWR7-NEXT: li 5, -1 19684; PWR7-NEXT: stxvd2x 34, 0, 3 19685; PWR7-NEXT: ld 4, -24(1) 19686; PWR7-NEXT: ld 3, -32(1) 19687; PWR7-NEXT: popcntd 4, 4 19688; PWR7-NEXT: popcntd 3, 3 19689; PWR7-NEXT: cmpldi 4, 30 19690; PWR7-NEXT: li 4, 0 19691; PWR7-NEXT: iselgt 6, 5, 4 19692; PWR7-NEXT: cmpldi 3, 30 19693; PWR7-NEXT: iselgt 3, 5, 4 19694; PWR7-NEXT: std 6, -8(1) 19695; PWR7-NEXT: std 3, -16(1) 19696; PWR7-NEXT: addi 3, 1, -16 19697; PWR7-NEXT: lxvd2x 34, 0, 3 19698; PWR7-NEXT: blr 19699; 19700; PWR8-LABEL: ugt_30_v2i64: 19701; PWR8: # %bb.0: 19702; PWR8-NEXT: addis 3, 2, .LCPI158_0@toc@ha 19703; PWR8-NEXT: vpopcntd 2, 2 19704; PWR8-NEXT: addi 3, 3, .LCPI158_0@toc@l 19705; PWR8-NEXT: lxvd2x 35, 0, 3 19706; PWR8-NEXT: vcmpgtud 2, 2, 3 19707; PWR8-NEXT: blr 19708; 19709; PWR9-LABEL: ugt_30_v2i64: 19710; PWR9: # %bb.0: 19711; PWR9-NEXT: addis 3, 2, .LCPI158_0@toc@ha 19712; PWR9-NEXT: vpopcntd 2, 2 19713; PWR9-NEXT: addi 3, 3, .LCPI158_0@toc@l 19714; PWR9-NEXT: lxv 35, 0(3) 19715; PWR9-NEXT: vcmpgtud 2, 2, 3 19716; PWR9-NEXT: blr 19717 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19718 %3 = icmp ugt <2 x i64> %2, <i64 30, i64 30> 19719 %4 = sext <2 x i1> %3 to <2 x i64> 19720 ret <2 x i64> %4 19721} 19722 19723define <2 x i64> @ult_31_v2i64(<2 x i64> %0) { 19724; PWR5-LABEL: ult_31_v2i64: 19725; PWR5: # %bb.0: 19726; PWR5-NEXT: lis 5, 21845 19727; PWR5-NEXT: lis 6, 13107 19728; PWR5-NEXT: ori 5, 5, 21845 19729; PWR5-NEXT: rotldi 8, 4, 63 19730; PWR5-NEXT: rotldi 9, 3, 63 19731; PWR5-NEXT: rldimi 5, 5, 32, 0 19732; PWR5-NEXT: and 8, 8, 5 19733; PWR5-NEXT: and 5, 9, 5 19734; PWR5-NEXT: ori 6, 6, 13107 19735; PWR5-NEXT: sub 3, 3, 5 19736; PWR5-NEXT: rldimi 6, 6, 32, 0 19737; PWR5-NEXT: sub 4, 4, 8 19738; PWR5-NEXT: and 8, 3, 6 19739; PWR5-NEXT: rotldi 3, 3, 62 19740; PWR5-NEXT: and 3, 3, 6 19741; PWR5-NEXT: lis 7, 3855 19742; PWR5-NEXT: and 5, 4, 6 19743; PWR5-NEXT: rotldi 4, 4, 62 19744; PWR5-NEXT: add 3, 8, 3 19745; PWR5-NEXT: lis 9, 257 19746; PWR5-NEXT: ori 7, 7, 3855 19747; PWR5-NEXT: and 4, 4, 6 19748; PWR5-NEXT: rldicl 6, 3, 60, 4 19749; PWR5-NEXT: ori 9, 9, 257 19750; PWR5-NEXT: rldimi 7, 7, 32, 0 19751; PWR5-NEXT: add 4, 5, 4 19752; PWR5-NEXT: add 3, 3, 6 19753; PWR5-NEXT: rldimi 9, 9, 32, 0 19754; PWR5-NEXT: rldicl 5, 4, 60, 4 19755; PWR5-NEXT: and 3, 3, 7 19756; PWR5-NEXT: add 4, 4, 5 19757; PWR5-NEXT: mulld 3, 3, 9 19758; PWR5-NEXT: and 4, 4, 7 19759; PWR5-NEXT: rldicl 3, 3, 8, 56 19760; PWR5-NEXT: li 5, 31 19761; PWR5-NEXT: mulld 4, 4, 9 19762; PWR5-NEXT: subc 6, 3, 5 19763; PWR5-NEXT: rldicl 4, 4, 8, 56 19764; PWR5-NEXT: subfe 3, 3, 3 19765; PWR5-NEXT: subc 5, 4, 5 19766; PWR5-NEXT: subfe 4, 4, 4 19767; PWR5-NEXT: blr 19768; 19769; PWR6-LABEL: ult_31_v2i64: 19770; PWR6: # %bb.0: 19771; PWR6-NEXT: lis 5, 21845 19772; PWR6-NEXT: lis 6, 13107 19773; PWR6-NEXT: ori 5, 5, 21845 19774; PWR6-NEXT: rotldi 8, 4, 63 19775; PWR6-NEXT: rotldi 9, 3, 63 19776; PWR6-NEXT: rldimi 5, 5, 32, 0 19777; PWR6-NEXT: and 8, 8, 5 19778; PWR6-NEXT: and 5, 9, 5 19779; PWR6-NEXT: ori 6, 6, 13107 19780; PWR6-NEXT: sub 3, 3, 5 19781; PWR6-NEXT: rldimi 6, 6, 32, 0 19782; PWR6-NEXT: sub 4, 4, 8 19783; PWR6-NEXT: and 8, 3, 6 19784; PWR6-NEXT: rotldi 3, 3, 62 19785; PWR6-NEXT: and 3, 3, 6 19786; PWR6-NEXT: lis 7, 3855 19787; PWR6-NEXT: and 5, 4, 6 19788; PWR6-NEXT: rotldi 4, 4, 62 19789; PWR6-NEXT: add 3, 8, 3 19790; PWR6-NEXT: lis 9, 257 19791; PWR6-NEXT: ori 7, 7, 3855 19792; PWR6-NEXT: and 4, 4, 6 19793; PWR6-NEXT: rldicl 6, 3, 60, 4 19794; PWR6-NEXT: ori 9, 9, 257 19795; PWR6-NEXT: rldimi 7, 7, 32, 0 19796; PWR6-NEXT: add 4, 5, 4 19797; PWR6-NEXT: add 3, 3, 6 19798; PWR6-NEXT: rldimi 9, 9, 32, 0 19799; PWR6-NEXT: rldicl 5, 4, 60, 4 19800; PWR6-NEXT: and 3, 3, 7 19801; PWR6-NEXT: add 4, 4, 5 19802; PWR6-NEXT: mulld 3, 3, 9 19803; PWR6-NEXT: and 4, 4, 7 19804; PWR6-NEXT: rldicl 3, 3, 8, 56 19805; PWR6-NEXT: li 5, 31 19806; PWR6-NEXT: mulld 4, 4, 9 19807; PWR6-NEXT: subc 6, 3, 5 19808; PWR6-NEXT: rldicl 4, 4, 8, 56 19809; PWR6-NEXT: subfe 3, 3, 3 19810; PWR6-NEXT: subc 5, 4, 5 19811; PWR6-NEXT: subfe 4, 4, 4 19812; PWR6-NEXT: blr 19813; 19814; PWR7-LABEL: ult_31_v2i64: 19815; PWR7: # %bb.0: 19816; PWR7-NEXT: addi 3, 1, -32 19817; PWR7-NEXT: li 5, -1 19818; PWR7-NEXT: stxvd2x 34, 0, 3 19819; PWR7-NEXT: ld 4, -24(1) 19820; PWR7-NEXT: ld 3, -32(1) 19821; PWR7-NEXT: popcntd 4, 4 19822; PWR7-NEXT: popcntd 3, 3 19823; PWR7-NEXT: cmpldi 4, 31 19824; PWR7-NEXT: li 4, 0 19825; PWR7-NEXT: isellt 6, 5, 4 19826; PWR7-NEXT: cmpldi 3, 31 19827; PWR7-NEXT: isellt 3, 5, 4 19828; PWR7-NEXT: std 6, -8(1) 19829; PWR7-NEXT: std 3, -16(1) 19830; PWR7-NEXT: addi 3, 1, -16 19831; PWR7-NEXT: lxvd2x 34, 0, 3 19832; PWR7-NEXT: blr 19833; 19834; PWR8-LABEL: ult_31_v2i64: 19835; PWR8: # %bb.0: 19836; PWR8-NEXT: addis 3, 2, .LCPI159_0@toc@ha 19837; PWR8-NEXT: vpopcntd 2, 2 19838; PWR8-NEXT: addi 3, 3, .LCPI159_0@toc@l 19839; PWR8-NEXT: lxvd2x 35, 0, 3 19840; PWR8-NEXT: vcmpgtud 2, 3, 2 19841; PWR8-NEXT: blr 19842; 19843; PWR9-LABEL: ult_31_v2i64: 19844; PWR9: # %bb.0: 19845; PWR9-NEXT: addis 3, 2, .LCPI159_0@toc@ha 19846; PWR9-NEXT: vpopcntd 2, 2 19847; PWR9-NEXT: addi 3, 3, .LCPI159_0@toc@l 19848; PWR9-NEXT: lxv 35, 0(3) 19849; PWR9-NEXT: vcmpgtud 2, 3, 2 19850; PWR9-NEXT: blr 19851 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19852 %3 = icmp ult <2 x i64> %2, <i64 31, i64 31> 19853 %4 = sext <2 x i1> %3 to <2 x i64> 19854 ret <2 x i64> %4 19855} 19856 19857define <2 x i64> @ugt_31_v2i64(<2 x i64> %0) { 19858; PWR5-LABEL: ugt_31_v2i64: 19859; PWR5: # %bb.0: 19860; PWR5-NEXT: lis 5, 21845 19861; PWR5-NEXT: lis 6, 13107 19862; PWR5-NEXT: ori 5, 5, 21845 19863; PWR5-NEXT: rotldi 8, 4, 63 19864; PWR5-NEXT: rotldi 9, 3, 63 19865; PWR5-NEXT: rldimi 5, 5, 32, 0 19866; PWR5-NEXT: and 8, 8, 5 19867; PWR5-NEXT: and 5, 9, 5 19868; PWR5-NEXT: ori 6, 6, 13107 19869; PWR5-NEXT: sub 3, 3, 5 19870; PWR5-NEXT: rldimi 6, 6, 32, 0 19871; PWR5-NEXT: sub 4, 4, 8 19872; PWR5-NEXT: and 8, 3, 6 19873; PWR5-NEXT: rotldi 3, 3, 62 19874; PWR5-NEXT: and 3, 3, 6 19875; PWR5-NEXT: lis 7, 3855 19876; PWR5-NEXT: and 5, 4, 6 19877; PWR5-NEXT: rotldi 4, 4, 62 19878; PWR5-NEXT: add 3, 8, 3 19879; PWR5-NEXT: lis 9, 257 19880; PWR5-NEXT: ori 7, 7, 3855 19881; PWR5-NEXT: and 4, 4, 6 19882; PWR5-NEXT: rldicl 6, 3, 60, 4 19883; PWR5-NEXT: ori 9, 9, 257 19884; PWR5-NEXT: rldimi 7, 7, 32, 0 19885; PWR5-NEXT: add 4, 5, 4 19886; PWR5-NEXT: add 3, 3, 6 19887; PWR5-NEXT: rldimi 9, 9, 32, 0 19888; PWR5-NEXT: rldicl 5, 4, 60, 4 19889; PWR5-NEXT: and 3, 3, 7 19890; PWR5-NEXT: add 4, 4, 5 19891; PWR5-NEXT: mulld 3, 3, 9 19892; PWR5-NEXT: and 4, 4, 7 19893; PWR5-NEXT: rldicl 3, 3, 8, 56 19894; PWR5-NEXT: mulld 4, 4, 9 19895; PWR5-NEXT: li 5, 31 19896; PWR5-NEXT: subfic 3, 3, 31 19897; PWR5-NEXT: rldicl 4, 4, 8, 56 19898; PWR5-NEXT: subfe 3, 5, 5 19899; PWR5-NEXT: subfic 4, 4, 31 19900; PWR5-NEXT: subfe 4, 5, 5 19901; PWR5-NEXT: blr 19902; 19903; PWR6-LABEL: ugt_31_v2i64: 19904; PWR6: # %bb.0: 19905; PWR6-NEXT: lis 5, 21845 19906; PWR6-NEXT: lis 6, 13107 19907; PWR6-NEXT: ori 5, 5, 21845 19908; PWR6-NEXT: rotldi 8, 4, 63 19909; PWR6-NEXT: rotldi 9, 3, 63 19910; PWR6-NEXT: rldimi 5, 5, 32, 0 19911; PWR6-NEXT: and 8, 8, 5 19912; PWR6-NEXT: and 5, 9, 5 19913; PWR6-NEXT: ori 6, 6, 13107 19914; PWR6-NEXT: sub 3, 3, 5 19915; PWR6-NEXT: rldimi 6, 6, 32, 0 19916; PWR6-NEXT: sub 4, 4, 8 19917; PWR6-NEXT: and 8, 3, 6 19918; PWR6-NEXT: rotldi 3, 3, 62 19919; PWR6-NEXT: and 3, 3, 6 19920; PWR6-NEXT: lis 7, 3855 19921; PWR6-NEXT: and 5, 4, 6 19922; PWR6-NEXT: rotldi 4, 4, 62 19923; PWR6-NEXT: add 3, 8, 3 19924; PWR6-NEXT: lis 9, 257 19925; PWR6-NEXT: ori 7, 7, 3855 19926; PWR6-NEXT: and 4, 4, 6 19927; PWR6-NEXT: rldicl 6, 3, 60, 4 19928; PWR6-NEXT: ori 9, 9, 257 19929; PWR6-NEXT: rldimi 7, 7, 32, 0 19930; PWR6-NEXT: add 4, 5, 4 19931; PWR6-NEXT: add 3, 3, 6 19932; PWR6-NEXT: rldimi 9, 9, 32, 0 19933; PWR6-NEXT: rldicl 5, 4, 60, 4 19934; PWR6-NEXT: and 3, 3, 7 19935; PWR6-NEXT: add 4, 4, 5 19936; PWR6-NEXT: mulld 3, 3, 9 19937; PWR6-NEXT: and 4, 4, 7 19938; PWR6-NEXT: rldicl 3, 3, 8, 56 19939; PWR6-NEXT: mulld 4, 4, 9 19940; PWR6-NEXT: li 5, 31 19941; PWR6-NEXT: subfic 3, 3, 31 19942; PWR6-NEXT: rldicl 4, 4, 8, 56 19943; PWR6-NEXT: subfe 3, 5, 5 19944; PWR6-NEXT: subfic 4, 4, 31 19945; PWR6-NEXT: subfe 4, 5, 5 19946; PWR6-NEXT: blr 19947; 19948; PWR7-LABEL: ugt_31_v2i64: 19949; PWR7: # %bb.0: 19950; PWR7-NEXT: addi 3, 1, -32 19951; PWR7-NEXT: li 5, -1 19952; PWR7-NEXT: stxvd2x 34, 0, 3 19953; PWR7-NEXT: ld 4, -24(1) 19954; PWR7-NEXT: ld 3, -32(1) 19955; PWR7-NEXT: popcntd 4, 4 19956; PWR7-NEXT: popcntd 3, 3 19957; PWR7-NEXT: cmpldi 4, 31 19958; PWR7-NEXT: li 4, 0 19959; PWR7-NEXT: iselgt 6, 5, 4 19960; PWR7-NEXT: cmpldi 3, 31 19961; PWR7-NEXT: iselgt 3, 5, 4 19962; PWR7-NEXT: std 6, -8(1) 19963; PWR7-NEXT: std 3, -16(1) 19964; PWR7-NEXT: addi 3, 1, -16 19965; PWR7-NEXT: lxvd2x 34, 0, 3 19966; PWR7-NEXT: blr 19967; 19968; PWR8-LABEL: ugt_31_v2i64: 19969; PWR8: # %bb.0: 19970; PWR8-NEXT: addis 3, 2, .LCPI160_0@toc@ha 19971; PWR8-NEXT: vpopcntd 2, 2 19972; PWR8-NEXT: addi 3, 3, .LCPI160_0@toc@l 19973; PWR8-NEXT: lxvd2x 35, 0, 3 19974; PWR8-NEXT: vcmpgtud 2, 2, 3 19975; PWR8-NEXT: blr 19976; 19977; PWR9-LABEL: ugt_31_v2i64: 19978; PWR9: # %bb.0: 19979; PWR9-NEXT: addis 3, 2, .LCPI160_0@toc@ha 19980; PWR9-NEXT: vpopcntd 2, 2 19981; PWR9-NEXT: addi 3, 3, .LCPI160_0@toc@l 19982; PWR9-NEXT: lxv 35, 0(3) 19983; PWR9-NEXT: vcmpgtud 2, 2, 3 19984; PWR9-NEXT: blr 19985 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 19986 %3 = icmp ugt <2 x i64> %2, <i64 31, i64 31> 19987 %4 = sext <2 x i1> %3 to <2 x i64> 19988 ret <2 x i64> %4 19989} 19990 19991define <2 x i64> @ult_32_v2i64(<2 x i64> %0) { 19992; PWR5-LABEL: ult_32_v2i64: 19993; PWR5: # %bb.0: 19994; PWR5-NEXT: lis 5, 21845 19995; PWR5-NEXT: lis 6, 13107 19996; PWR5-NEXT: ori 5, 5, 21845 19997; PWR5-NEXT: rotldi 8, 4, 63 19998; PWR5-NEXT: rotldi 9, 3, 63 19999; PWR5-NEXT: rldimi 5, 5, 32, 0 20000; PWR5-NEXT: and 8, 8, 5 20001; PWR5-NEXT: and 5, 9, 5 20002; PWR5-NEXT: ori 6, 6, 13107 20003; PWR5-NEXT: sub 3, 3, 5 20004; PWR5-NEXT: rldimi 6, 6, 32, 0 20005; PWR5-NEXT: sub 4, 4, 8 20006; PWR5-NEXT: and 8, 3, 6 20007; PWR5-NEXT: rotldi 3, 3, 62 20008; PWR5-NEXT: and 3, 3, 6 20009; PWR5-NEXT: lis 7, 3855 20010; PWR5-NEXT: and 5, 4, 6 20011; PWR5-NEXT: rotldi 4, 4, 62 20012; PWR5-NEXT: add 3, 8, 3 20013; PWR5-NEXT: lis 9, 257 20014; PWR5-NEXT: ori 7, 7, 3855 20015; PWR5-NEXT: and 4, 4, 6 20016; PWR5-NEXT: rldicl 6, 3, 60, 4 20017; PWR5-NEXT: ori 9, 9, 257 20018; PWR5-NEXT: rldimi 7, 7, 32, 0 20019; PWR5-NEXT: add 4, 5, 4 20020; PWR5-NEXT: add 3, 3, 6 20021; PWR5-NEXT: rldimi 9, 9, 32, 0 20022; PWR5-NEXT: rldicl 5, 4, 60, 4 20023; PWR5-NEXT: and 3, 3, 7 20024; PWR5-NEXT: add 4, 4, 5 20025; PWR5-NEXT: mulld 3, 3, 9 20026; PWR5-NEXT: and 4, 4, 7 20027; PWR5-NEXT: rldicl 3, 3, 8, 56 20028; PWR5-NEXT: li 5, 32 20029; PWR5-NEXT: mulld 4, 4, 9 20030; PWR5-NEXT: subc 6, 3, 5 20031; PWR5-NEXT: rldicl 4, 4, 8, 56 20032; PWR5-NEXT: subfe 3, 3, 3 20033; PWR5-NEXT: subc 5, 4, 5 20034; PWR5-NEXT: subfe 4, 4, 4 20035; PWR5-NEXT: blr 20036; 20037; PWR6-LABEL: ult_32_v2i64: 20038; PWR6: # %bb.0: 20039; PWR6-NEXT: lis 5, 21845 20040; PWR6-NEXT: lis 6, 13107 20041; PWR6-NEXT: ori 5, 5, 21845 20042; PWR6-NEXT: rotldi 8, 4, 63 20043; PWR6-NEXT: rotldi 9, 3, 63 20044; PWR6-NEXT: rldimi 5, 5, 32, 0 20045; PWR6-NEXT: and 8, 8, 5 20046; PWR6-NEXT: and 5, 9, 5 20047; PWR6-NEXT: ori 6, 6, 13107 20048; PWR6-NEXT: sub 3, 3, 5 20049; PWR6-NEXT: rldimi 6, 6, 32, 0 20050; PWR6-NEXT: sub 4, 4, 8 20051; PWR6-NEXT: and 8, 3, 6 20052; PWR6-NEXT: rotldi 3, 3, 62 20053; PWR6-NEXT: and 3, 3, 6 20054; PWR6-NEXT: lis 7, 3855 20055; PWR6-NEXT: and 5, 4, 6 20056; PWR6-NEXT: rotldi 4, 4, 62 20057; PWR6-NEXT: add 3, 8, 3 20058; PWR6-NEXT: lis 9, 257 20059; PWR6-NEXT: ori 7, 7, 3855 20060; PWR6-NEXT: and 4, 4, 6 20061; PWR6-NEXT: rldicl 6, 3, 60, 4 20062; PWR6-NEXT: ori 9, 9, 257 20063; PWR6-NEXT: rldimi 7, 7, 32, 0 20064; PWR6-NEXT: add 4, 5, 4 20065; PWR6-NEXT: add 3, 3, 6 20066; PWR6-NEXT: rldimi 9, 9, 32, 0 20067; PWR6-NEXT: rldicl 5, 4, 60, 4 20068; PWR6-NEXT: and 3, 3, 7 20069; PWR6-NEXT: add 4, 4, 5 20070; PWR6-NEXT: mulld 3, 3, 9 20071; PWR6-NEXT: and 4, 4, 7 20072; PWR6-NEXT: rldicl 3, 3, 8, 56 20073; PWR6-NEXT: li 5, 32 20074; PWR6-NEXT: mulld 4, 4, 9 20075; PWR6-NEXT: subc 6, 3, 5 20076; PWR6-NEXT: rldicl 4, 4, 8, 56 20077; PWR6-NEXT: subfe 3, 3, 3 20078; PWR6-NEXT: subc 5, 4, 5 20079; PWR6-NEXT: subfe 4, 4, 4 20080; PWR6-NEXT: blr 20081; 20082; PWR7-LABEL: ult_32_v2i64: 20083; PWR7: # %bb.0: 20084; PWR7-NEXT: addi 3, 1, -32 20085; PWR7-NEXT: li 5, -1 20086; PWR7-NEXT: stxvd2x 34, 0, 3 20087; PWR7-NEXT: ld 4, -24(1) 20088; PWR7-NEXT: ld 3, -32(1) 20089; PWR7-NEXT: popcntd 4, 4 20090; PWR7-NEXT: popcntd 3, 3 20091; PWR7-NEXT: cmpldi 4, 32 20092; PWR7-NEXT: li 4, 0 20093; PWR7-NEXT: isellt 6, 5, 4 20094; PWR7-NEXT: cmpldi 3, 32 20095; PWR7-NEXT: isellt 3, 5, 4 20096; PWR7-NEXT: std 6, -8(1) 20097; PWR7-NEXT: std 3, -16(1) 20098; PWR7-NEXT: addi 3, 1, -16 20099; PWR7-NEXT: lxvd2x 34, 0, 3 20100; PWR7-NEXT: blr 20101; 20102; PWR8-LABEL: ult_32_v2i64: 20103; PWR8: # %bb.0: 20104; PWR8-NEXT: addis 3, 2, .LCPI161_0@toc@ha 20105; PWR8-NEXT: vpopcntd 2, 2 20106; PWR8-NEXT: addi 3, 3, .LCPI161_0@toc@l 20107; PWR8-NEXT: lxvd2x 35, 0, 3 20108; PWR8-NEXT: vcmpgtud 2, 3, 2 20109; PWR8-NEXT: blr 20110; 20111; PWR9-LABEL: ult_32_v2i64: 20112; PWR9: # %bb.0: 20113; PWR9-NEXT: addis 3, 2, .LCPI161_0@toc@ha 20114; PWR9-NEXT: vpopcntd 2, 2 20115; PWR9-NEXT: addi 3, 3, .LCPI161_0@toc@l 20116; PWR9-NEXT: lxv 35, 0(3) 20117; PWR9-NEXT: vcmpgtud 2, 3, 2 20118; PWR9-NEXT: blr 20119 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20120 %3 = icmp ult <2 x i64> %2, <i64 32, i64 32> 20121 %4 = sext <2 x i1> %3 to <2 x i64> 20122 ret <2 x i64> %4 20123} 20124 20125define <2 x i64> @ugt_32_v2i64(<2 x i64> %0) { 20126; PWR5-LABEL: ugt_32_v2i64: 20127; PWR5: # %bb.0: 20128; PWR5-NEXT: lis 5, 21845 20129; PWR5-NEXT: lis 6, 13107 20130; PWR5-NEXT: ori 5, 5, 21845 20131; PWR5-NEXT: rotldi 8, 4, 63 20132; PWR5-NEXT: rotldi 9, 3, 63 20133; PWR5-NEXT: rldimi 5, 5, 32, 0 20134; PWR5-NEXT: and 8, 8, 5 20135; PWR5-NEXT: and 5, 9, 5 20136; PWR5-NEXT: ori 6, 6, 13107 20137; PWR5-NEXT: sub 3, 3, 5 20138; PWR5-NEXT: rldimi 6, 6, 32, 0 20139; PWR5-NEXT: sub 4, 4, 8 20140; PWR5-NEXT: and 8, 3, 6 20141; PWR5-NEXT: rotldi 3, 3, 62 20142; PWR5-NEXT: and 3, 3, 6 20143; PWR5-NEXT: lis 7, 3855 20144; PWR5-NEXT: and 5, 4, 6 20145; PWR5-NEXT: rotldi 4, 4, 62 20146; PWR5-NEXT: add 3, 8, 3 20147; PWR5-NEXT: lis 9, 257 20148; PWR5-NEXT: ori 7, 7, 3855 20149; PWR5-NEXT: and 4, 4, 6 20150; PWR5-NEXT: rldicl 6, 3, 60, 4 20151; PWR5-NEXT: ori 9, 9, 257 20152; PWR5-NEXT: rldimi 7, 7, 32, 0 20153; PWR5-NEXT: add 4, 5, 4 20154; PWR5-NEXT: add 3, 3, 6 20155; PWR5-NEXT: rldimi 9, 9, 32, 0 20156; PWR5-NEXT: rldicl 5, 4, 60, 4 20157; PWR5-NEXT: and 3, 3, 7 20158; PWR5-NEXT: add 4, 4, 5 20159; PWR5-NEXT: mulld 3, 3, 9 20160; PWR5-NEXT: and 4, 4, 7 20161; PWR5-NEXT: rldicl 3, 3, 8, 56 20162; PWR5-NEXT: mulld 4, 4, 9 20163; PWR5-NEXT: li 5, 32 20164; PWR5-NEXT: subfic 3, 3, 32 20165; PWR5-NEXT: rldicl 4, 4, 8, 56 20166; PWR5-NEXT: subfe 3, 5, 5 20167; PWR5-NEXT: subfic 4, 4, 32 20168; PWR5-NEXT: subfe 4, 5, 5 20169; PWR5-NEXT: blr 20170; 20171; PWR6-LABEL: ugt_32_v2i64: 20172; PWR6: # %bb.0: 20173; PWR6-NEXT: lis 5, 21845 20174; PWR6-NEXT: lis 6, 13107 20175; PWR6-NEXT: ori 5, 5, 21845 20176; PWR6-NEXT: rotldi 8, 4, 63 20177; PWR6-NEXT: rotldi 9, 3, 63 20178; PWR6-NEXT: rldimi 5, 5, 32, 0 20179; PWR6-NEXT: and 8, 8, 5 20180; PWR6-NEXT: and 5, 9, 5 20181; PWR6-NEXT: ori 6, 6, 13107 20182; PWR6-NEXT: sub 3, 3, 5 20183; PWR6-NEXT: rldimi 6, 6, 32, 0 20184; PWR6-NEXT: sub 4, 4, 8 20185; PWR6-NEXT: and 8, 3, 6 20186; PWR6-NEXT: rotldi 3, 3, 62 20187; PWR6-NEXT: and 3, 3, 6 20188; PWR6-NEXT: lis 7, 3855 20189; PWR6-NEXT: and 5, 4, 6 20190; PWR6-NEXT: rotldi 4, 4, 62 20191; PWR6-NEXT: add 3, 8, 3 20192; PWR6-NEXT: lis 9, 257 20193; PWR6-NEXT: ori 7, 7, 3855 20194; PWR6-NEXT: and 4, 4, 6 20195; PWR6-NEXT: rldicl 6, 3, 60, 4 20196; PWR6-NEXT: ori 9, 9, 257 20197; PWR6-NEXT: rldimi 7, 7, 32, 0 20198; PWR6-NEXT: add 4, 5, 4 20199; PWR6-NEXT: add 3, 3, 6 20200; PWR6-NEXT: rldimi 9, 9, 32, 0 20201; PWR6-NEXT: rldicl 5, 4, 60, 4 20202; PWR6-NEXT: and 3, 3, 7 20203; PWR6-NEXT: add 4, 4, 5 20204; PWR6-NEXT: mulld 3, 3, 9 20205; PWR6-NEXT: and 4, 4, 7 20206; PWR6-NEXT: rldicl 3, 3, 8, 56 20207; PWR6-NEXT: mulld 4, 4, 9 20208; PWR6-NEXT: li 5, 32 20209; PWR6-NEXT: subfic 3, 3, 32 20210; PWR6-NEXT: rldicl 4, 4, 8, 56 20211; PWR6-NEXT: subfe 3, 5, 5 20212; PWR6-NEXT: subfic 4, 4, 32 20213; PWR6-NEXT: subfe 4, 5, 5 20214; PWR6-NEXT: blr 20215; 20216; PWR7-LABEL: ugt_32_v2i64: 20217; PWR7: # %bb.0: 20218; PWR7-NEXT: addi 3, 1, -32 20219; PWR7-NEXT: li 5, -1 20220; PWR7-NEXT: stxvd2x 34, 0, 3 20221; PWR7-NEXT: ld 4, -24(1) 20222; PWR7-NEXT: ld 3, -32(1) 20223; PWR7-NEXT: popcntd 4, 4 20224; PWR7-NEXT: popcntd 3, 3 20225; PWR7-NEXT: cmpldi 4, 32 20226; PWR7-NEXT: li 4, 0 20227; PWR7-NEXT: iselgt 6, 5, 4 20228; PWR7-NEXT: cmpldi 3, 32 20229; PWR7-NEXT: iselgt 3, 5, 4 20230; PWR7-NEXT: std 6, -8(1) 20231; PWR7-NEXT: std 3, -16(1) 20232; PWR7-NEXT: addi 3, 1, -16 20233; PWR7-NEXT: lxvd2x 34, 0, 3 20234; PWR7-NEXT: blr 20235; 20236; PWR8-LABEL: ugt_32_v2i64: 20237; PWR8: # %bb.0: 20238; PWR8-NEXT: addis 3, 2, .LCPI162_0@toc@ha 20239; PWR8-NEXT: vpopcntd 2, 2 20240; PWR8-NEXT: addi 3, 3, .LCPI162_0@toc@l 20241; PWR8-NEXT: lxvd2x 35, 0, 3 20242; PWR8-NEXT: vcmpgtud 2, 2, 3 20243; PWR8-NEXT: blr 20244; 20245; PWR9-LABEL: ugt_32_v2i64: 20246; PWR9: # %bb.0: 20247; PWR9-NEXT: addis 3, 2, .LCPI162_0@toc@ha 20248; PWR9-NEXT: vpopcntd 2, 2 20249; PWR9-NEXT: addi 3, 3, .LCPI162_0@toc@l 20250; PWR9-NEXT: lxv 35, 0(3) 20251; PWR9-NEXT: vcmpgtud 2, 2, 3 20252; PWR9-NEXT: blr 20253 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20254 %3 = icmp ugt <2 x i64> %2, <i64 32, i64 32> 20255 %4 = sext <2 x i1> %3 to <2 x i64> 20256 ret <2 x i64> %4 20257} 20258 20259define <2 x i64> @ult_33_v2i64(<2 x i64> %0) { 20260; PWR5-LABEL: ult_33_v2i64: 20261; PWR5: # %bb.0: 20262; PWR5-NEXT: lis 5, 21845 20263; PWR5-NEXT: lis 6, 13107 20264; PWR5-NEXT: ori 5, 5, 21845 20265; PWR5-NEXT: rotldi 8, 4, 63 20266; PWR5-NEXT: rotldi 9, 3, 63 20267; PWR5-NEXT: rldimi 5, 5, 32, 0 20268; PWR5-NEXT: and 8, 8, 5 20269; PWR5-NEXT: and 5, 9, 5 20270; PWR5-NEXT: ori 6, 6, 13107 20271; PWR5-NEXT: sub 3, 3, 5 20272; PWR5-NEXT: rldimi 6, 6, 32, 0 20273; PWR5-NEXT: sub 4, 4, 8 20274; PWR5-NEXT: and 8, 3, 6 20275; PWR5-NEXT: rotldi 3, 3, 62 20276; PWR5-NEXT: and 3, 3, 6 20277; PWR5-NEXT: lis 7, 3855 20278; PWR5-NEXT: and 5, 4, 6 20279; PWR5-NEXT: rotldi 4, 4, 62 20280; PWR5-NEXT: add 3, 8, 3 20281; PWR5-NEXT: lis 9, 257 20282; PWR5-NEXT: ori 7, 7, 3855 20283; PWR5-NEXT: and 4, 4, 6 20284; PWR5-NEXT: rldicl 6, 3, 60, 4 20285; PWR5-NEXT: ori 9, 9, 257 20286; PWR5-NEXT: rldimi 7, 7, 32, 0 20287; PWR5-NEXT: add 4, 5, 4 20288; PWR5-NEXT: add 3, 3, 6 20289; PWR5-NEXT: rldimi 9, 9, 32, 0 20290; PWR5-NEXT: rldicl 5, 4, 60, 4 20291; PWR5-NEXT: and 3, 3, 7 20292; PWR5-NEXT: add 4, 4, 5 20293; PWR5-NEXT: mulld 3, 3, 9 20294; PWR5-NEXT: and 4, 4, 7 20295; PWR5-NEXT: rldicl 3, 3, 8, 56 20296; PWR5-NEXT: li 5, 33 20297; PWR5-NEXT: mulld 4, 4, 9 20298; PWR5-NEXT: subc 6, 3, 5 20299; PWR5-NEXT: rldicl 4, 4, 8, 56 20300; PWR5-NEXT: subfe 3, 3, 3 20301; PWR5-NEXT: subc 5, 4, 5 20302; PWR5-NEXT: subfe 4, 4, 4 20303; PWR5-NEXT: blr 20304; 20305; PWR6-LABEL: ult_33_v2i64: 20306; PWR6: # %bb.0: 20307; PWR6-NEXT: lis 5, 21845 20308; PWR6-NEXT: lis 6, 13107 20309; PWR6-NEXT: ori 5, 5, 21845 20310; PWR6-NEXT: rotldi 8, 4, 63 20311; PWR6-NEXT: rotldi 9, 3, 63 20312; PWR6-NEXT: rldimi 5, 5, 32, 0 20313; PWR6-NEXT: and 8, 8, 5 20314; PWR6-NEXT: and 5, 9, 5 20315; PWR6-NEXT: ori 6, 6, 13107 20316; PWR6-NEXT: sub 3, 3, 5 20317; PWR6-NEXT: rldimi 6, 6, 32, 0 20318; PWR6-NEXT: sub 4, 4, 8 20319; PWR6-NEXT: and 8, 3, 6 20320; PWR6-NEXT: rotldi 3, 3, 62 20321; PWR6-NEXT: and 3, 3, 6 20322; PWR6-NEXT: lis 7, 3855 20323; PWR6-NEXT: and 5, 4, 6 20324; PWR6-NEXT: rotldi 4, 4, 62 20325; PWR6-NEXT: add 3, 8, 3 20326; PWR6-NEXT: lis 9, 257 20327; PWR6-NEXT: ori 7, 7, 3855 20328; PWR6-NEXT: and 4, 4, 6 20329; PWR6-NEXT: rldicl 6, 3, 60, 4 20330; PWR6-NEXT: ori 9, 9, 257 20331; PWR6-NEXT: rldimi 7, 7, 32, 0 20332; PWR6-NEXT: add 4, 5, 4 20333; PWR6-NEXT: add 3, 3, 6 20334; PWR6-NEXT: rldimi 9, 9, 32, 0 20335; PWR6-NEXT: rldicl 5, 4, 60, 4 20336; PWR6-NEXT: and 3, 3, 7 20337; PWR6-NEXT: add 4, 4, 5 20338; PWR6-NEXT: mulld 3, 3, 9 20339; PWR6-NEXT: and 4, 4, 7 20340; PWR6-NEXT: rldicl 3, 3, 8, 56 20341; PWR6-NEXT: li 5, 33 20342; PWR6-NEXT: mulld 4, 4, 9 20343; PWR6-NEXT: subc 6, 3, 5 20344; PWR6-NEXT: rldicl 4, 4, 8, 56 20345; PWR6-NEXT: subfe 3, 3, 3 20346; PWR6-NEXT: subc 5, 4, 5 20347; PWR6-NEXT: subfe 4, 4, 4 20348; PWR6-NEXT: blr 20349; 20350; PWR7-LABEL: ult_33_v2i64: 20351; PWR7: # %bb.0: 20352; PWR7-NEXT: addi 3, 1, -32 20353; PWR7-NEXT: li 5, -1 20354; PWR7-NEXT: stxvd2x 34, 0, 3 20355; PWR7-NEXT: ld 4, -24(1) 20356; PWR7-NEXT: ld 3, -32(1) 20357; PWR7-NEXT: popcntd 4, 4 20358; PWR7-NEXT: popcntd 3, 3 20359; PWR7-NEXT: cmpldi 4, 33 20360; PWR7-NEXT: li 4, 0 20361; PWR7-NEXT: isellt 6, 5, 4 20362; PWR7-NEXT: cmpldi 3, 33 20363; PWR7-NEXT: isellt 3, 5, 4 20364; PWR7-NEXT: std 6, -8(1) 20365; PWR7-NEXT: std 3, -16(1) 20366; PWR7-NEXT: addi 3, 1, -16 20367; PWR7-NEXT: lxvd2x 34, 0, 3 20368; PWR7-NEXT: blr 20369; 20370; PWR8-LABEL: ult_33_v2i64: 20371; PWR8: # %bb.0: 20372; PWR8-NEXT: addis 3, 2, .LCPI163_0@toc@ha 20373; PWR8-NEXT: vpopcntd 2, 2 20374; PWR8-NEXT: addi 3, 3, .LCPI163_0@toc@l 20375; PWR8-NEXT: lxvd2x 35, 0, 3 20376; PWR8-NEXT: vcmpgtud 2, 3, 2 20377; PWR8-NEXT: blr 20378; 20379; PWR9-LABEL: ult_33_v2i64: 20380; PWR9: # %bb.0: 20381; PWR9-NEXT: addis 3, 2, .LCPI163_0@toc@ha 20382; PWR9-NEXT: vpopcntd 2, 2 20383; PWR9-NEXT: addi 3, 3, .LCPI163_0@toc@l 20384; PWR9-NEXT: lxv 35, 0(3) 20385; PWR9-NEXT: vcmpgtud 2, 3, 2 20386; PWR9-NEXT: blr 20387 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20388 %3 = icmp ult <2 x i64> %2, <i64 33, i64 33> 20389 %4 = sext <2 x i1> %3 to <2 x i64> 20390 ret <2 x i64> %4 20391} 20392 20393define <2 x i64> @ugt_33_v2i64(<2 x i64> %0) { 20394; PWR5-LABEL: ugt_33_v2i64: 20395; PWR5: # %bb.0: 20396; PWR5-NEXT: lis 5, 21845 20397; PWR5-NEXT: lis 6, 13107 20398; PWR5-NEXT: ori 5, 5, 21845 20399; PWR5-NEXT: rotldi 8, 4, 63 20400; PWR5-NEXT: rotldi 9, 3, 63 20401; PWR5-NEXT: rldimi 5, 5, 32, 0 20402; PWR5-NEXT: and 8, 8, 5 20403; PWR5-NEXT: and 5, 9, 5 20404; PWR5-NEXT: ori 6, 6, 13107 20405; PWR5-NEXT: sub 3, 3, 5 20406; PWR5-NEXT: rldimi 6, 6, 32, 0 20407; PWR5-NEXT: sub 4, 4, 8 20408; PWR5-NEXT: and 8, 3, 6 20409; PWR5-NEXT: rotldi 3, 3, 62 20410; PWR5-NEXT: and 3, 3, 6 20411; PWR5-NEXT: lis 7, 3855 20412; PWR5-NEXT: and 5, 4, 6 20413; PWR5-NEXT: rotldi 4, 4, 62 20414; PWR5-NEXT: add 3, 8, 3 20415; PWR5-NEXT: lis 9, 257 20416; PWR5-NEXT: ori 7, 7, 3855 20417; PWR5-NEXT: and 4, 4, 6 20418; PWR5-NEXT: rldicl 6, 3, 60, 4 20419; PWR5-NEXT: ori 9, 9, 257 20420; PWR5-NEXT: rldimi 7, 7, 32, 0 20421; PWR5-NEXT: add 4, 5, 4 20422; PWR5-NEXT: add 3, 3, 6 20423; PWR5-NEXT: rldimi 9, 9, 32, 0 20424; PWR5-NEXT: rldicl 5, 4, 60, 4 20425; PWR5-NEXT: and 3, 3, 7 20426; PWR5-NEXT: add 4, 4, 5 20427; PWR5-NEXT: mulld 3, 3, 9 20428; PWR5-NEXT: and 4, 4, 7 20429; PWR5-NEXT: rldicl 3, 3, 8, 56 20430; PWR5-NEXT: mulld 4, 4, 9 20431; PWR5-NEXT: li 5, 33 20432; PWR5-NEXT: subfic 3, 3, 33 20433; PWR5-NEXT: rldicl 4, 4, 8, 56 20434; PWR5-NEXT: subfe 3, 5, 5 20435; PWR5-NEXT: subfic 4, 4, 33 20436; PWR5-NEXT: subfe 4, 5, 5 20437; PWR5-NEXT: blr 20438; 20439; PWR6-LABEL: ugt_33_v2i64: 20440; PWR6: # %bb.0: 20441; PWR6-NEXT: lis 5, 21845 20442; PWR6-NEXT: lis 6, 13107 20443; PWR6-NEXT: ori 5, 5, 21845 20444; PWR6-NEXT: rotldi 8, 4, 63 20445; PWR6-NEXT: rotldi 9, 3, 63 20446; PWR6-NEXT: rldimi 5, 5, 32, 0 20447; PWR6-NEXT: and 8, 8, 5 20448; PWR6-NEXT: and 5, 9, 5 20449; PWR6-NEXT: ori 6, 6, 13107 20450; PWR6-NEXT: sub 3, 3, 5 20451; PWR6-NEXT: rldimi 6, 6, 32, 0 20452; PWR6-NEXT: sub 4, 4, 8 20453; PWR6-NEXT: and 8, 3, 6 20454; PWR6-NEXT: rotldi 3, 3, 62 20455; PWR6-NEXT: and 3, 3, 6 20456; PWR6-NEXT: lis 7, 3855 20457; PWR6-NEXT: and 5, 4, 6 20458; PWR6-NEXT: rotldi 4, 4, 62 20459; PWR6-NEXT: add 3, 8, 3 20460; PWR6-NEXT: lis 9, 257 20461; PWR6-NEXT: ori 7, 7, 3855 20462; PWR6-NEXT: and 4, 4, 6 20463; PWR6-NEXT: rldicl 6, 3, 60, 4 20464; PWR6-NEXT: ori 9, 9, 257 20465; PWR6-NEXT: rldimi 7, 7, 32, 0 20466; PWR6-NEXT: add 4, 5, 4 20467; PWR6-NEXT: add 3, 3, 6 20468; PWR6-NEXT: rldimi 9, 9, 32, 0 20469; PWR6-NEXT: rldicl 5, 4, 60, 4 20470; PWR6-NEXT: and 3, 3, 7 20471; PWR6-NEXT: add 4, 4, 5 20472; PWR6-NEXT: mulld 3, 3, 9 20473; PWR6-NEXT: and 4, 4, 7 20474; PWR6-NEXT: rldicl 3, 3, 8, 56 20475; PWR6-NEXT: mulld 4, 4, 9 20476; PWR6-NEXT: li 5, 33 20477; PWR6-NEXT: subfic 3, 3, 33 20478; PWR6-NEXT: rldicl 4, 4, 8, 56 20479; PWR6-NEXT: subfe 3, 5, 5 20480; PWR6-NEXT: subfic 4, 4, 33 20481; PWR6-NEXT: subfe 4, 5, 5 20482; PWR6-NEXT: blr 20483; 20484; PWR7-LABEL: ugt_33_v2i64: 20485; PWR7: # %bb.0: 20486; PWR7-NEXT: addi 3, 1, -32 20487; PWR7-NEXT: li 5, -1 20488; PWR7-NEXT: stxvd2x 34, 0, 3 20489; PWR7-NEXT: ld 4, -24(1) 20490; PWR7-NEXT: ld 3, -32(1) 20491; PWR7-NEXT: popcntd 4, 4 20492; PWR7-NEXT: popcntd 3, 3 20493; PWR7-NEXT: cmpldi 4, 33 20494; PWR7-NEXT: li 4, 0 20495; PWR7-NEXT: iselgt 6, 5, 4 20496; PWR7-NEXT: cmpldi 3, 33 20497; PWR7-NEXT: iselgt 3, 5, 4 20498; PWR7-NEXT: std 6, -8(1) 20499; PWR7-NEXT: std 3, -16(1) 20500; PWR7-NEXT: addi 3, 1, -16 20501; PWR7-NEXT: lxvd2x 34, 0, 3 20502; PWR7-NEXT: blr 20503; 20504; PWR8-LABEL: ugt_33_v2i64: 20505; PWR8: # %bb.0: 20506; PWR8-NEXT: addis 3, 2, .LCPI164_0@toc@ha 20507; PWR8-NEXT: vpopcntd 2, 2 20508; PWR8-NEXT: addi 3, 3, .LCPI164_0@toc@l 20509; PWR8-NEXT: lxvd2x 35, 0, 3 20510; PWR8-NEXT: vcmpgtud 2, 2, 3 20511; PWR8-NEXT: blr 20512; 20513; PWR9-LABEL: ugt_33_v2i64: 20514; PWR9: # %bb.0: 20515; PWR9-NEXT: addis 3, 2, .LCPI164_0@toc@ha 20516; PWR9-NEXT: vpopcntd 2, 2 20517; PWR9-NEXT: addi 3, 3, .LCPI164_0@toc@l 20518; PWR9-NEXT: lxv 35, 0(3) 20519; PWR9-NEXT: vcmpgtud 2, 2, 3 20520; PWR9-NEXT: blr 20521 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20522 %3 = icmp ugt <2 x i64> %2, <i64 33, i64 33> 20523 %4 = sext <2 x i1> %3 to <2 x i64> 20524 ret <2 x i64> %4 20525} 20526 20527define <2 x i64> @ult_34_v2i64(<2 x i64> %0) { 20528; PWR5-LABEL: ult_34_v2i64: 20529; PWR5: # %bb.0: 20530; PWR5-NEXT: lis 5, 21845 20531; PWR5-NEXT: lis 6, 13107 20532; PWR5-NEXT: ori 5, 5, 21845 20533; PWR5-NEXT: rotldi 8, 4, 63 20534; PWR5-NEXT: rotldi 9, 3, 63 20535; PWR5-NEXT: rldimi 5, 5, 32, 0 20536; PWR5-NEXT: and 8, 8, 5 20537; PWR5-NEXT: and 5, 9, 5 20538; PWR5-NEXT: ori 6, 6, 13107 20539; PWR5-NEXT: sub 3, 3, 5 20540; PWR5-NEXT: rldimi 6, 6, 32, 0 20541; PWR5-NEXT: sub 4, 4, 8 20542; PWR5-NEXT: and 8, 3, 6 20543; PWR5-NEXT: rotldi 3, 3, 62 20544; PWR5-NEXT: and 3, 3, 6 20545; PWR5-NEXT: lis 7, 3855 20546; PWR5-NEXT: and 5, 4, 6 20547; PWR5-NEXT: rotldi 4, 4, 62 20548; PWR5-NEXT: add 3, 8, 3 20549; PWR5-NEXT: lis 9, 257 20550; PWR5-NEXT: ori 7, 7, 3855 20551; PWR5-NEXT: and 4, 4, 6 20552; PWR5-NEXT: rldicl 6, 3, 60, 4 20553; PWR5-NEXT: ori 9, 9, 257 20554; PWR5-NEXT: rldimi 7, 7, 32, 0 20555; PWR5-NEXT: add 4, 5, 4 20556; PWR5-NEXT: add 3, 3, 6 20557; PWR5-NEXT: rldimi 9, 9, 32, 0 20558; PWR5-NEXT: rldicl 5, 4, 60, 4 20559; PWR5-NEXT: and 3, 3, 7 20560; PWR5-NEXT: add 4, 4, 5 20561; PWR5-NEXT: mulld 3, 3, 9 20562; PWR5-NEXT: and 4, 4, 7 20563; PWR5-NEXT: rldicl 3, 3, 8, 56 20564; PWR5-NEXT: li 5, 34 20565; PWR5-NEXT: mulld 4, 4, 9 20566; PWR5-NEXT: subc 6, 3, 5 20567; PWR5-NEXT: rldicl 4, 4, 8, 56 20568; PWR5-NEXT: subfe 3, 3, 3 20569; PWR5-NEXT: subc 5, 4, 5 20570; PWR5-NEXT: subfe 4, 4, 4 20571; PWR5-NEXT: blr 20572; 20573; PWR6-LABEL: ult_34_v2i64: 20574; PWR6: # %bb.0: 20575; PWR6-NEXT: lis 5, 21845 20576; PWR6-NEXT: lis 6, 13107 20577; PWR6-NEXT: ori 5, 5, 21845 20578; PWR6-NEXT: rotldi 8, 4, 63 20579; PWR6-NEXT: rotldi 9, 3, 63 20580; PWR6-NEXT: rldimi 5, 5, 32, 0 20581; PWR6-NEXT: and 8, 8, 5 20582; PWR6-NEXT: and 5, 9, 5 20583; PWR6-NEXT: ori 6, 6, 13107 20584; PWR6-NEXT: sub 3, 3, 5 20585; PWR6-NEXT: rldimi 6, 6, 32, 0 20586; PWR6-NEXT: sub 4, 4, 8 20587; PWR6-NEXT: and 8, 3, 6 20588; PWR6-NEXT: rotldi 3, 3, 62 20589; PWR6-NEXT: and 3, 3, 6 20590; PWR6-NEXT: lis 7, 3855 20591; PWR6-NEXT: and 5, 4, 6 20592; PWR6-NEXT: rotldi 4, 4, 62 20593; PWR6-NEXT: add 3, 8, 3 20594; PWR6-NEXT: lis 9, 257 20595; PWR6-NEXT: ori 7, 7, 3855 20596; PWR6-NEXT: and 4, 4, 6 20597; PWR6-NEXT: rldicl 6, 3, 60, 4 20598; PWR6-NEXT: ori 9, 9, 257 20599; PWR6-NEXT: rldimi 7, 7, 32, 0 20600; PWR6-NEXT: add 4, 5, 4 20601; PWR6-NEXT: add 3, 3, 6 20602; PWR6-NEXT: rldimi 9, 9, 32, 0 20603; PWR6-NEXT: rldicl 5, 4, 60, 4 20604; PWR6-NEXT: and 3, 3, 7 20605; PWR6-NEXT: add 4, 4, 5 20606; PWR6-NEXT: mulld 3, 3, 9 20607; PWR6-NEXT: and 4, 4, 7 20608; PWR6-NEXT: rldicl 3, 3, 8, 56 20609; PWR6-NEXT: li 5, 34 20610; PWR6-NEXT: mulld 4, 4, 9 20611; PWR6-NEXT: subc 6, 3, 5 20612; PWR6-NEXT: rldicl 4, 4, 8, 56 20613; PWR6-NEXT: subfe 3, 3, 3 20614; PWR6-NEXT: subc 5, 4, 5 20615; PWR6-NEXT: subfe 4, 4, 4 20616; PWR6-NEXT: blr 20617; 20618; PWR7-LABEL: ult_34_v2i64: 20619; PWR7: # %bb.0: 20620; PWR7-NEXT: addi 3, 1, -32 20621; PWR7-NEXT: li 5, -1 20622; PWR7-NEXT: stxvd2x 34, 0, 3 20623; PWR7-NEXT: ld 4, -24(1) 20624; PWR7-NEXT: ld 3, -32(1) 20625; PWR7-NEXT: popcntd 4, 4 20626; PWR7-NEXT: popcntd 3, 3 20627; PWR7-NEXT: cmpldi 4, 34 20628; PWR7-NEXT: li 4, 0 20629; PWR7-NEXT: isellt 6, 5, 4 20630; PWR7-NEXT: cmpldi 3, 34 20631; PWR7-NEXT: isellt 3, 5, 4 20632; PWR7-NEXT: std 6, -8(1) 20633; PWR7-NEXT: std 3, -16(1) 20634; PWR7-NEXT: addi 3, 1, -16 20635; PWR7-NEXT: lxvd2x 34, 0, 3 20636; PWR7-NEXT: blr 20637; 20638; PWR8-LABEL: ult_34_v2i64: 20639; PWR8: # %bb.0: 20640; PWR8-NEXT: addis 3, 2, .LCPI165_0@toc@ha 20641; PWR8-NEXT: vpopcntd 2, 2 20642; PWR8-NEXT: addi 3, 3, .LCPI165_0@toc@l 20643; PWR8-NEXT: lxvd2x 35, 0, 3 20644; PWR8-NEXT: vcmpgtud 2, 3, 2 20645; PWR8-NEXT: blr 20646; 20647; PWR9-LABEL: ult_34_v2i64: 20648; PWR9: # %bb.0: 20649; PWR9-NEXT: addis 3, 2, .LCPI165_0@toc@ha 20650; PWR9-NEXT: vpopcntd 2, 2 20651; PWR9-NEXT: addi 3, 3, .LCPI165_0@toc@l 20652; PWR9-NEXT: lxv 35, 0(3) 20653; PWR9-NEXT: vcmpgtud 2, 3, 2 20654; PWR9-NEXT: blr 20655 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20656 %3 = icmp ult <2 x i64> %2, <i64 34, i64 34> 20657 %4 = sext <2 x i1> %3 to <2 x i64> 20658 ret <2 x i64> %4 20659} 20660 20661define <2 x i64> @ugt_34_v2i64(<2 x i64> %0) { 20662; PWR5-LABEL: ugt_34_v2i64: 20663; PWR5: # %bb.0: 20664; PWR5-NEXT: lis 5, 21845 20665; PWR5-NEXT: lis 6, 13107 20666; PWR5-NEXT: ori 5, 5, 21845 20667; PWR5-NEXT: rotldi 8, 4, 63 20668; PWR5-NEXT: rotldi 9, 3, 63 20669; PWR5-NEXT: rldimi 5, 5, 32, 0 20670; PWR5-NEXT: and 8, 8, 5 20671; PWR5-NEXT: and 5, 9, 5 20672; PWR5-NEXT: ori 6, 6, 13107 20673; PWR5-NEXT: sub 3, 3, 5 20674; PWR5-NEXT: rldimi 6, 6, 32, 0 20675; PWR5-NEXT: sub 4, 4, 8 20676; PWR5-NEXT: and 8, 3, 6 20677; PWR5-NEXT: rotldi 3, 3, 62 20678; PWR5-NEXT: and 3, 3, 6 20679; PWR5-NEXT: lis 7, 3855 20680; PWR5-NEXT: and 5, 4, 6 20681; PWR5-NEXT: rotldi 4, 4, 62 20682; PWR5-NEXT: add 3, 8, 3 20683; PWR5-NEXT: lis 9, 257 20684; PWR5-NEXT: ori 7, 7, 3855 20685; PWR5-NEXT: and 4, 4, 6 20686; PWR5-NEXT: rldicl 6, 3, 60, 4 20687; PWR5-NEXT: ori 9, 9, 257 20688; PWR5-NEXT: rldimi 7, 7, 32, 0 20689; PWR5-NEXT: add 4, 5, 4 20690; PWR5-NEXT: add 3, 3, 6 20691; PWR5-NEXT: rldimi 9, 9, 32, 0 20692; PWR5-NEXT: rldicl 5, 4, 60, 4 20693; PWR5-NEXT: and 3, 3, 7 20694; PWR5-NEXT: add 4, 4, 5 20695; PWR5-NEXT: mulld 3, 3, 9 20696; PWR5-NEXT: and 4, 4, 7 20697; PWR5-NEXT: rldicl 3, 3, 8, 56 20698; PWR5-NEXT: mulld 4, 4, 9 20699; PWR5-NEXT: li 5, 34 20700; PWR5-NEXT: subfic 3, 3, 34 20701; PWR5-NEXT: rldicl 4, 4, 8, 56 20702; PWR5-NEXT: subfe 3, 5, 5 20703; PWR5-NEXT: subfic 4, 4, 34 20704; PWR5-NEXT: subfe 4, 5, 5 20705; PWR5-NEXT: blr 20706; 20707; PWR6-LABEL: ugt_34_v2i64: 20708; PWR6: # %bb.0: 20709; PWR6-NEXT: lis 5, 21845 20710; PWR6-NEXT: lis 6, 13107 20711; PWR6-NEXT: ori 5, 5, 21845 20712; PWR6-NEXT: rotldi 8, 4, 63 20713; PWR6-NEXT: rotldi 9, 3, 63 20714; PWR6-NEXT: rldimi 5, 5, 32, 0 20715; PWR6-NEXT: and 8, 8, 5 20716; PWR6-NEXT: and 5, 9, 5 20717; PWR6-NEXT: ori 6, 6, 13107 20718; PWR6-NEXT: sub 3, 3, 5 20719; PWR6-NEXT: rldimi 6, 6, 32, 0 20720; PWR6-NEXT: sub 4, 4, 8 20721; PWR6-NEXT: and 8, 3, 6 20722; PWR6-NEXT: rotldi 3, 3, 62 20723; PWR6-NEXT: and 3, 3, 6 20724; PWR6-NEXT: lis 7, 3855 20725; PWR6-NEXT: and 5, 4, 6 20726; PWR6-NEXT: rotldi 4, 4, 62 20727; PWR6-NEXT: add 3, 8, 3 20728; PWR6-NEXT: lis 9, 257 20729; PWR6-NEXT: ori 7, 7, 3855 20730; PWR6-NEXT: and 4, 4, 6 20731; PWR6-NEXT: rldicl 6, 3, 60, 4 20732; PWR6-NEXT: ori 9, 9, 257 20733; PWR6-NEXT: rldimi 7, 7, 32, 0 20734; PWR6-NEXT: add 4, 5, 4 20735; PWR6-NEXT: add 3, 3, 6 20736; PWR6-NEXT: rldimi 9, 9, 32, 0 20737; PWR6-NEXT: rldicl 5, 4, 60, 4 20738; PWR6-NEXT: and 3, 3, 7 20739; PWR6-NEXT: add 4, 4, 5 20740; PWR6-NEXT: mulld 3, 3, 9 20741; PWR6-NEXT: and 4, 4, 7 20742; PWR6-NEXT: rldicl 3, 3, 8, 56 20743; PWR6-NEXT: mulld 4, 4, 9 20744; PWR6-NEXT: li 5, 34 20745; PWR6-NEXT: subfic 3, 3, 34 20746; PWR6-NEXT: rldicl 4, 4, 8, 56 20747; PWR6-NEXT: subfe 3, 5, 5 20748; PWR6-NEXT: subfic 4, 4, 34 20749; PWR6-NEXT: subfe 4, 5, 5 20750; PWR6-NEXT: blr 20751; 20752; PWR7-LABEL: ugt_34_v2i64: 20753; PWR7: # %bb.0: 20754; PWR7-NEXT: addi 3, 1, -32 20755; PWR7-NEXT: li 5, -1 20756; PWR7-NEXT: stxvd2x 34, 0, 3 20757; PWR7-NEXT: ld 4, -24(1) 20758; PWR7-NEXT: ld 3, -32(1) 20759; PWR7-NEXT: popcntd 4, 4 20760; PWR7-NEXT: popcntd 3, 3 20761; PWR7-NEXT: cmpldi 4, 34 20762; PWR7-NEXT: li 4, 0 20763; PWR7-NEXT: iselgt 6, 5, 4 20764; PWR7-NEXT: cmpldi 3, 34 20765; PWR7-NEXT: iselgt 3, 5, 4 20766; PWR7-NEXT: std 6, -8(1) 20767; PWR7-NEXT: std 3, -16(1) 20768; PWR7-NEXT: addi 3, 1, -16 20769; PWR7-NEXT: lxvd2x 34, 0, 3 20770; PWR7-NEXT: blr 20771; 20772; PWR8-LABEL: ugt_34_v2i64: 20773; PWR8: # %bb.0: 20774; PWR8-NEXT: addis 3, 2, .LCPI166_0@toc@ha 20775; PWR8-NEXT: vpopcntd 2, 2 20776; PWR8-NEXT: addi 3, 3, .LCPI166_0@toc@l 20777; PWR8-NEXT: lxvd2x 35, 0, 3 20778; PWR8-NEXT: vcmpgtud 2, 2, 3 20779; PWR8-NEXT: blr 20780; 20781; PWR9-LABEL: ugt_34_v2i64: 20782; PWR9: # %bb.0: 20783; PWR9-NEXT: addis 3, 2, .LCPI166_0@toc@ha 20784; PWR9-NEXT: vpopcntd 2, 2 20785; PWR9-NEXT: addi 3, 3, .LCPI166_0@toc@l 20786; PWR9-NEXT: lxv 35, 0(3) 20787; PWR9-NEXT: vcmpgtud 2, 2, 3 20788; PWR9-NEXT: blr 20789 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20790 %3 = icmp ugt <2 x i64> %2, <i64 34, i64 34> 20791 %4 = sext <2 x i1> %3 to <2 x i64> 20792 ret <2 x i64> %4 20793} 20794 20795define <2 x i64> @ult_35_v2i64(<2 x i64> %0) { 20796; PWR5-LABEL: ult_35_v2i64: 20797; PWR5: # %bb.0: 20798; PWR5-NEXT: lis 5, 21845 20799; PWR5-NEXT: lis 6, 13107 20800; PWR5-NEXT: ori 5, 5, 21845 20801; PWR5-NEXT: rotldi 8, 4, 63 20802; PWR5-NEXT: rotldi 9, 3, 63 20803; PWR5-NEXT: rldimi 5, 5, 32, 0 20804; PWR5-NEXT: and 8, 8, 5 20805; PWR5-NEXT: and 5, 9, 5 20806; PWR5-NEXT: ori 6, 6, 13107 20807; PWR5-NEXT: sub 3, 3, 5 20808; PWR5-NEXT: rldimi 6, 6, 32, 0 20809; PWR5-NEXT: sub 4, 4, 8 20810; PWR5-NEXT: and 8, 3, 6 20811; PWR5-NEXT: rotldi 3, 3, 62 20812; PWR5-NEXT: and 3, 3, 6 20813; PWR5-NEXT: lis 7, 3855 20814; PWR5-NEXT: and 5, 4, 6 20815; PWR5-NEXT: rotldi 4, 4, 62 20816; PWR5-NEXT: add 3, 8, 3 20817; PWR5-NEXT: lis 9, 257 20818; PWR5-NEXT: ori 7, 7, 3855 20819; PWR5-NEXT: and 4, 4, 6 20820; PWR5-NEXT: rldicl 6, 3, 60, 4 20821; PWR5-NEXT: ori 9, 9, 257 20822; PWR5-NEXT: rldimi 7, 7, 32, 0 20823; PWR5-NEXT: add 4, 5, 4 20824; PWR5-NEXT: add 3, 3, 6 20825; PWR5-NEXT: rldimi 9, 9, 32, 0 20826; PWR5-NEXT: rldicl 5, 4, 60, 4 20827; PWR5-NEXT: and 3, 3, 7 20828; PWR5-NEXT: add 4, 4, 5 20829; PWR5-NEXT: mulld 3, 3, 9 20830; PWR5-NEXT: and 4, 4, 7 20831; PWR5-NEXT: rldicl 3, 3, 8, 56 20832; PWR5-NEXT: li 5, 35 20833; PWR5-NEXT: mulld 4, 4, 9 20834; PWR5-NEXT: subc 6, 3, 5 20835; PWR5-NEXT: rldicl 4, 4, 8, 56 20836; PWR5-NEXT: subfe 3, 3, 3 20837; PWR5-NEXT: subc 5, 4, 5 20838; PWR5-NEXT: subfe 4, 4, 4 20839; PWR5-NEXT: blr 20840; 20841; PWR6-LABEL: ult_35_v2i64: 20842; PWR6: # %bb.0: 20843; PWR6-NEXT: lis 5, 21845 20844; PWR6-NEXT: lis 6, 13107 20845; PWR6-NEXT: ori 5, 5, 21845 20846; PWR6-NEXT: rotldi 8, 4, 63 20847; PWR6-NEXT: rotldi 9, 3, 63 20848; PWR6-NEXT: rldimi 5, 5, 32, 0 20849; PWR6-NEXT: and 8, 8, 5 20850; PWR6-NEXT: and 5, 9, 5 20851; PWR6-NEXT: ori 6, 6, 13107 20852; PWR6-NEXT: sub 3, 3, 5 20853; PWR6-NEXT: rldimi 6, 6, 32, 0 20854; PWR6-NEXT: sub 4, 4, 8 20855; PWR6-NEXT: and 8, 3, 6 20856; PWR6-NEXT: rotldi 3, 3, 62 20857; PWR6-NEXT: and 3, 3, 6 20858; PWR6-NEXT: lis 7, 3855 20859; PWR6-NEXT: and 5, 4, 6 20860; PWR6-NEXT: rotldi 4, 4, 62 20861; PWR6-NEXT: add 3, 8, 3 20862; PWR6-NEXT: lis 9, 257 20863; PWR6-NEXT: ori 7, 7, 3855 20864; PWR6-NEXT: and 4, 4, 6 20865; PWR6-NEXT: rldicl 6, 3, 60, 4 20866; PWR6-NEXT: ori 9, 9, 257 20867; PWR6-NEXT: rldimi 7, 7, 32, 0 20868; PWR6-NEXT: add 4, 5, 4 20869; PWR6-NEXT: add 3, 3, 6 20870; PWR6-NEXT: rldimi 9, 9, 32, 0 20871; PWR6-NEXT: rldicl 5, 4, 60, 4 20872; PWR6-NEXT: and 3, 3, 7 20873; PWR6-NEXT: add 4, 4, 5 20874; PWR6-NEXT: mulld 3, 3, 9 20875; PWR6-NEXT: and 4, 4, 7 20876; PWR6-NEXT: rldicl 3, 3, 8, 56 20877; PWR6-NEXT: li 5, 35 20878; PWR6-NEXT: mulld 4, 4, 9 20879; PWR6-NEXT: subc 6, 3, 5 20880; PWR6-NEXT: rldicl 4, 4, 8, 56 20881; PWR6-NEXT: subfe 3, 3, 3 20882; PWR6-NEXT: subc 5, 4, 5 20883; PWR6-NEXT: subfe 4, 4, 4 20884; PWR6-NEXT: blr 20885; 20886; PWR7-LABEL: ult_35_v2i64: 20887; PWR7: # %bb.0: 20888; PWR7-NEXT: addi 3, 1, -32 20889; PWR7-NEXT: li 5, -1 20890; PWR7-NEXT: stxvd2x 34, 0, 3 20891; PWR7-NEXT: ld 4, -24(1) 20892; PWR7-NEXT: ld 3, -32(1) 20893; PWR7-NEXT: popcntd 4, 4 20894; PWR7-NEXT: popcntd 3, 3 20895; PWR7-NEXT: cmpldi 4, 35 20896; PWR7-NEXT: li 4, 0 20897; PWR7-NEXT: isellt 6, 5, 4 20898; PWR7-NEXT: cmpldi 3, 35 20899; PWR7-NEXT: isellt 3, 5, 4 20900; PWR7-NEXT: std 6, -8(1) 20901; PWR7-NEXT: std 3, -16(1) 20902; PWR7-NEXT: addi 3, 1, -16 20903; PWR7-NEXT: lxvd2x 34, 0, 3 20904; PWR7-NEXT: blr 20905; 20906; PWR8-LABEL: ult_35_v2i64: 20907; PWR8: # %bb.0: 20908; PWR8-NEXT: addis 3, 2, .LCPI167_0@toc@ha 20909; PWR8-NEXT: vpopcntd 2, 2 20910; PWR8-NEXT: addi 3, 3, .LCPI167_0@toc@l 20911; PWR8-NEXT: lxvd2x 35, 0, 3 20912; PWR8-NEXT: vcmpgtud 2, 3, 2 20913; PWR8-NEXT: blr 20914; 20915; PWR9-LABEL: ult_35_v2i64: 20916; PWR9: # %bb.0: 20917; PWR9-NEXT: addis 3, 2, .LCPI167_0@toc@ha 20918; PWR9-NEXT: vpopcntd 2, 2 20919; PWR9-NEXT: addi 3, 3, .LCPI167_0@toc@l 20920; PWR9-NEXT: lxv 35, 0(3) 20921; PWR9-NEXT: vcmpgtud 2, 3, 2 20922; PWR9-NEXT: blr 20923 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 20924 %3 = icmp ult <2 x i64> %2, <i64 35, i64 35> 20925 %4 = sext <2 x i1> %3 to <2 x i64> 20926 ret <2 x i64> %4 20927} 20928 20929define <2 x i64> @ugt_35_v2i64(<2 x i64> %0) { 20930; PWR5-LABEL: ugt_35_v2i64: 20931; PWR5: # %bb.0: 20932; PWR5-NEXT: lis 5, 21845 20933; PWR5-NEXT: lis 6, 13107 20934; PWR5-NEXT: ori 5, 5, 21845 20935; PWR5-NEXT: rotldi 8, 4, 63 20936; PWR5-NEXT: rotldi 9, 3, 63 20937; PWR5-NEXT: rldimi 5, 5, 32, 0 20938; PWR5-NEXT: and 8, 8, 5 20939; PWR5-NEXT: and 5, 9, 5 20940; PWR5-NEXT: ori 6, 6, 13107 20941; PWR5-NEXT: sub 3, 3, 5 20942; PWR5-NEXT: rldimi 6, 6, 32, 0 20943; PWR5-NEXT: sub 4, 4, 8 20944; PWR5-NEXT: and 8, 3, 6 20945; PWR5-NEXT: rotldi 3, 3, 62 20946; PWR5-NEXT: and 3, 3, 6 20947; PWR5-NEXT: lis 7, 3855 20948; PWR5-NEXT: and 5, 4, 6 20949; PWR5-NEXT: rotldi 4, 4, 62 20950; PWR5-NEXT: add 3, 8, 3 20951; PWR5-NEXT: lis 9, 257 20952; PWR5-NEXT: ori 7, 7, 3855 20953; PWR5-NEXT: and 4, 4, 6 20954; PWR5-NEXT: rldicl 6, 3, 60, 4 20955; PWR5-NEXT: ori 9, 9, 257 20956; PWR5-NEXT: rldimi 7, 7, 32, 0 20957; PWR5-NEXT: add 4, 5, 4 20958; PWR5-NEXT: add 3, 3, 6 20959; PWR5-NEXT: rldimi 9, 9, 32, 0 20960; PWR5-NEXT: rldicl 5, 4, 60, 4 20961; PWR5-NEXT: and 3, 3, 7 20962; PWR5-NEXT: add 4, 4, 5 20963; PWR5-NEXT: mulld 3, 3, 9 20964; PWR5-NEXT: and 4, 4, 7 20965; PWR5-NEXT: rldicl 3, 3, 8, 56 20966; PWR5-NEXT: mulld 4, 4, 9 20967; PWR5-NEXT: li 5, 35 20968; PWR5-NEXT: subfic 3, 3, 35 20969; PWR5-NEXT: rldicl 4, 4, 8, 56 20970; PWR5-NEXT: subfe 3, 5, 5 20971; PWR5-NEXT: subfic 4, 4, 35 20972; PWR5-NEXT: subfe 4, 5, 5 20973; PWR5-NEXT: blr 20974; 20975; PWR6-LABEL: ugt_35_v2i64: 20976; PWR6: # %bb.0: 20977; PWR6-NEXT: lis 5, 21845 20978; PWR6-NEXT: lis 6, 13107 20979; PWR6-NEXT: ori 5, 5, 21845 20980; PWR6-NEXT: rotldi 8, 4, 63 20981; PWR6-NEXT: rotldi 9, 3, 63 20982; PWR6-NEXT: rldimi 5, 5, 32, 0 20983; PWR6-NEXT: and 8, 8, 5 20984; PWR6-NEXT: and 5, 9, 5 20985; PWR6-NEXT: ori 6, 6, 13107 20986; PWR6-NEXT: sub 3, 3, 5 20987; PWR6-NEXT: rldimi 6, 6, 32, 0 20988; PWR6-NEXT: sub 4, 4, 8 20989; PWR6-NEXT: and 8, 3, 6 20990; PWR6-NEXT: rotldi 3, 3, 62 20991; PWR6-NEXT: and 3, 3, 6 20992; PWR6-NEXT: lis 7, 3855 20993; PWR6-NEXT: and 5, 4, 6 20994; PWR6-NEXT: rotldi 4, 4, 62 20995; PWR6-NEXT: add 3, 8, 3 20996; PWR6-NEXT: lis 9, 257 20997; PWR6-NEXT: ori 7, 7, 3855 20998; PWR6-NEXT: and 4, 4, 6 20999; PWR6-NEXT: rldicl 6, 3, 60, 4 21000; PWR6-NEXT: ori 9, 9, 257 21001; PWR6-NEXT: rldimi 7, 7, 32, 0 21002; PWR6-NEXT: add 4, 5, 4 21003; PWR6-NEXT: add 3, 3, 6 21004; PWR6-NEXT: rldimi 9, 9, 32, 0 21005; PWR6-NEXT: rldicl 5, 4, 60, 4 21006; PWR6-NEXT: and 3, 3, 7 21007; PWR6-NEXT: add 4, 4, 5 21008; PWR6-NEXT: mulld 3, 3, 9 21009; PWR6-NEXT: and 4, 4, 7 21010; PWR6-NEXT: rldicl 3, 3, 8, 56 21011; PWR6-NEXT: mulld 4, 4, 9 21012; PWR6-NEXT: li 5, 35 21013; PWR6-NEXT: subfic 3, 3, 35 21014; PWR6-NEXT: rldicl 4, 4, 8, 56 21015; PWR6-NEXT: subfe 3, 5, 5 21016; PWR6-NEXT: subfic 4, 4, 35 21017; PWR6-NEXT: subfe 4, 5, 5 21018; PWR6-NEXT: blr 21019; 21020; PWR7-LABEL: ugt_35_v2i64: 21021; PWR7: # %bb.0: 21022; PWR7-NEXT: addi 3, 1, -32 21023; PWR7-NEXT: li 5, -1 21024; PWR7-NEXT: stxvd2x 34, 0, 3 21025; PWR7-NEXT: ld 4, -24(1) 21026; PWR7-NEXT: ld 3, -32(1) 21027; PWR7-NEXT: popcntd 4, 4 21028; PWR7-NEXT: popcntd 3, 3 21029; PWR7-NEXT: cmpldi 4, 35 21030; PWR7-NEXT: li 4, 0 21031; PWR7-NEXT: iselgt 6, 5, 4 21032; PWR7-NEXT: cmpldi 3, 35 21033; PWR7-NEXT: iselgt 3, 5, 4 21034; PWR7-NEXT: std 6, -8(1) 21035; PWR7-NEXT: std 3, -16(1) 21036; PWR7-NEXT: addi 3, 1, -16 21037; PWR7-NEXT: lxvd2x 34, 0, 3 21038; PWR7-NEXT: blr 21039; 21040; PWR8-LABEL: ugt_35_v2i64: 21041; PWR8: # %bb.0: 21042; PWR8-NEXT: addis 3, 2, .LCPI168_0@toc@ha 21043; PWR8-NEXT: vpopcntd 2, 2 21044; PWR8-NEXT: addi 3, 3, .LCPI168_0@toc@l 21045; PWR8-NEXT: lxvd2x 35, 0, 3 21046; PWR8-NEXT: vcmpgtud 2, 2, 3 21047; PWR8-NEXT: blr 21048; 21049; PWR9-LABEL: ugt_35_v2i64: 21050; PWR9: # %bb.0: 21051; PWR9-NEXT: addis 3, 2, .LCPI168_0@toc@ha 21052; PWR9-NEXT: vpopcntd 2, 2 21053; PWR9-NEXT: addi 3, 3, .LCPI168_0@toc@l 21054; PWR9-NEXT: lxv 35, 0(3) 21055; PWR9-NEXT: vcmpgtud 2, 2, 3 21056; PWR9-NEXT: blr 21057 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21058 %3 = icmp ugt <2 x i64> %2, <i64 35, i64 35> 21059 %4 = sext <2 x i1> %3 to <2 x i64> 21060 ret <2 x i64> %4 21061} 21062 21063define <2 x i64> @ult_36_v2i64(<2 x i64> %0) { 21064; PWR5-LABEL: ult_36_v2i64: 21065; PWR5: # %bb.0: 21066; PWR5-NEXT: lis 5, 21845 21067; PWR5-NEXT: lis 6, 13107 21068; PWR5-NEXT: ori 5, 5, 21845 21069; PWR5-NEXT: rotldi 8, 4, 63 21070; PWR5-NEXT: rotldi 9, 3, 63 21071; PWR5-NEXT: rldimi 5, 5, 32, 0 21072; PWR5-NEXT: and 8, 8, 5 21073; PWR5-NEXT: and 5, 9, 5 21074; PWR5-NEXT: ori 6, 6, 13107 21075; PWR5-NEXT: sub 3, 3, 5 21076; PWR5-NEXT: rldimi 6, 6, 32, 0 21077; PWR5-NEXT: sub 4, 4, 8 21078; PWR5-NEXT: and 8, 3, 6 21079; PWR5-NEXT: rotldi 3, 3, 62 21080; PWR5-NEXT: and 3, 3, 6 21081; PWR5-NEXT: lis 7, 3855 21082; PWR5-NEXT: and 5, 4, 6 21083; PWR5-NEXT: rotldi 4, 4, 62 21084; PWR5-NEXT: add 3, 8, 3 21085; PWR5-NEXT: lis 9, 257 21086; PWR5-NEXT: ori 7, 7, 3855 21087; PWR5-NEXT: and 4, 4, 6 21088; PWR5-NEXT: rldicl 6, 3, 60, 4 21089; PWR5-NEXT: ori 9, 9, 257 21090; PWR5-NEXT: rldimi 7, 7, 32, 0 21091; PWR5-NEXT: add 4, 5, 4 21092; PWR5-NEXT: add 3, 3, 6 21093; PWR5-NEXT: rldimi 9, 9, 32, 0 21094; PWR5-NEXT: rldicl 5, 4, 60, 4 21095; PWR5-NEXT: and 3, 3, 7 21096; PWR5-NEXT: add 4, 4, 5 21097; PWR5-NEXT: mulld 3, 3, 9 21098; PWR5-NEXT: and 4, 4, 7 21099; PWR5-NEXT: rldicl 3, 3, 8, 56 21100; PWR5-NEXT: li 5, 36 21101; PWR5-NEXT: mulld 4, 4, 9 21102; PWR5-NEXT: subc 6, 3, 5 21103; PWR5-NEXT: rldicl 4, 4, 8, 56 21104; PWR5-NEXT: subfe 3, 3, 3 21105; PWR5-NEXT: subc 5, 4, 5 21106; PWR5-NEXT: subfe 4, 4, 4 21107; PWR5-NEXT: blr 21108; 21109; PWR6-LABEL: ult_36_v2i64: 21110; PWR6: # %bb.0: 21111; PWR6-NEXT: lis 5, 21845 21112; PWR6-NEXT: lis 6, 13107 21113; PWR6-NEXT: ori 5, 5, 21845 21114; PWR6-NEXT: rotldi 8, 4, 63 21115; PWR6-NEXT: rotldi 9, 3, 63 21116; PWR6-NEXT: rldimi 5, 5, 32, 0 21117; PWR6-NEXT: and 8, 8, 5 21118; PWR6-NEXT: and 5, 9, 5 21119; PWR6-NEXT: ori 6, 6, 13107 21120; PWR6-NEXT: sub 3, 3, 5 21121; PWR6-NEXT: rldimi 6, 6, 32, 0 21122; PWR6-NEXT: sub 4, 4, 8 21123; PWR6-NEXT: and 8, 3, 6 21124; PWR6-NEXT: rotldi 3, 3, 62 21125; PWR6-NEXT: and 3, 3, 6 21126; PWR6-NEXT: lis 7, 3855 21127; PWR6-NEXT: and 5, 4, 6 21128; PWR6-NEXT: rotldi 4, 4, 62 21129; PWR6-NEXT: add 3, 8, 3 21130; PWR6-NEXT: lis 9, 257 21131; PWR6-NEXT: ori 7, 7, 3855 21132; PWR6-NEXT: and 4, 4, 6 21133; PWR6-NEXT: rldicl 6, 3, 60, 4 21134; PWR6-NEXT: ori 9, 9, 257 21135; PWR6-NEXT: rldimi 7, 7, 32, 0 21136; PWR6-NEXT: add 4, 5, 4 21137; PWR6-NEXT: add 3, 3, 6 21138; PWR6-NEXT: rldimi 9, 9, 32, 0 21139; PWR6-NEXT: rldicl 5, 4, 60, 4 21140; PWR6-NEXT: and 3, 3, 7 21141; PWR6-NEXT: add 4, 4, 5 21142; PWR6-NEXT: mulld 3, 3, 9 21143; PWR6-NEXT: and 4, 4, 7 21144; PWR6-NEXT: rldicl 3, 3, 8, 56 21145; PWR6-NEXT: li 5, 36 21146; PWR6-NEXT: mulld 4, 4, 9 21147; PWR6-NEXT: subc 6, 3, 5 21148; PWR6-NEXT: rldicl 4, 4, 8, 56 21149; PWR6-NEXT: subfe 3, 3, 3 21150; PWR6-NEXT: subc 5, 4, 5 21151; PWR6-NEXT: subfe 4, 4, 4 21152; PWR6-NEXT: blr 21153; 21154; PWR7-LABEL: ult_36_v2i64: 21155; PWR7: # %bb.0: 21156; PWR7-NEXT: addi 3, 1, -32 21157; PWR7-NEXT: li 5, -1 21158; PWR7-NEXT: stxvd2x 34, 0, 3 21159; PWR7-NEXT: ld 4, -24(1) 21160; PWR7-NEXT: ld 3, -32(1) 21161; PWR7-NEXT: popcntd 4, 4 21162; PWR7-NEXT: popcntd 3, 3 21163; PWR7-NEXT: cmpldi 4, 36 21164; PWR7-NEXT: li 4, 0 21165; PWR7-NEXT: isellt 6, 5, 4 21166; PWR7-NEXT: cmpldi 3, 36 21167; PWR7-NEXT: isellt 3, 5, 4 21168; PWR7-NEXT: std 6, -8(1) 21169; PWR7-NEXT: std 3, -16(1) 21170; PWR7-NEXT: addi 3, 1, -16 21171; PWR7-NEXT: lxvd2x 34, 0, 3 21172; PWR7-NEXT: blr 21173; 21174; PWR8-LABEL: ult_36_v2i64: 21175; PWR8: # %bb.0: 21176; PWR8-NEXT: addis 3, 2, .LCPI169_0@toc@ha 21177; PWR8-NEXT: vpopcntd 2, 2 21178; PWR8-NEXT: addi 3, 3, .LCPI169_0@toc@l 21179; PWR8-NEXT: lxvd2x 35, 0, 3 21180; PWR8-NEXT: vcmpgtud 2, 3, 2 21181; PWR8-NEXT: blr 21182; 21183; PWR9-LABEL: ult_36_v2i64: 21184; PWR9: # %bb.0: 21185; PWR9-NEXT: addis 3, 2, .LCPI169_0@toc@ha 21186; PWR9-NEXT: vpopcntd 2, 2 21187; PWR9-NEXT: addi 3, 3, .LCPI169_0@toc@l 21188; PWR9-NEXT: lxv 35, 0(3) 21189; PWR9-NEXT: vcmpgtud 2, 3, 2 21190; PWR9-NEXT: blr 21191 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21192 %3 = icmp ult <2 x i64> %2, <i64 36, i64 36> 21193 %4 = sext <2 x i1> %3 to <2 x i64> 21194 ret <2 x i64> %4 21195} 21196 21197define <2 x i64> @ugt_36_v2i64(<2 x i64> %0) { 21198; PWR5-LABEL: ugt_36_v2i64: 21199; PWR5: # %bb.0: 21200; PWR5-NEXT: lis 5, 21845 21201; PWR5-NEXT: lis 6, 13107 21202; PWR5-NEXT: ori 5, 5, 21845 21203; PWR5-NEXT: rotldi 8, 4, 63 21204; PWR5-NEXT: rotldi 9, 3, 63 21205; PWR5-NEXT: rldimi 5, 5, 32, 0 21206; PWR5-NEXT: and 8, 8, 5 21207; PWR5-NEXT: and 5, 9, 5 21208; PWR5-NEXT: ori 6, 6, 13107 21209; PWR5-NEXT: sub 3, 3, 5 21210; PWR5-NEXT: rldimi 6, 6, 32, 0 21211; PWR5-NEXT: sub 4, 4, 8 21212; PWR5-NEXT: and 8, 3, 6 21213; PWR5-NEXT: rotldi 3, 3, 62 21214; PWR5-NEXT: and 3, 3, 6 21215; PWR5-NEXT: lis 7, 3855 21216; PWR5-NEXT: and 5, 4, 6 21217; PWR5-NEXT: rotldi 4, 4, 62 21218; PWR5-NEXT: add 3, 8, 3 21219; PWR5-NEXT: lis 9, 257 21220; PWR5-NEXT: ori 7, 7, 3855 21221; PWR5-NEXT: and 4, 4, 6 21222; PWR5-NEXT: rldicl 6, 3, 60, 4 21223; PWR5-NEXT: ori 9, 9, 257 21224; PWR5-NEXT: rldimi 7, 7, 32, 0 21225; PWR5-NEXT: add 4, 5, 4 21226; PWR5-NEXT: add 3, 3, 6 21227; PWR5-NEXT: rldimi 9, 9, 32, 0 21228; PWR5-NEXT: rldicl 5, 4, 60, 4 21229; PWR5-NEXT: and 3, 3, 7 21230; PWR5-NEXT: add 4, 4, 5 21231; PWR5-NEXT: mulld 3, 3, 9 21232; PWR5-NEXT: and 4, 4, 7 21233; PWR5-NEXT: rldicl 3, 3, 8, 56 21234; PWR5-NEXT: mulld 4, 4, 9 21235; PWR5-NEXT: li 5, 36 21236; PWR5-NEXT: subfic 3, 3, 36 21237; PWR5-NEXT: rldicl 4, 4, 8, 56 21238; PWR5-NEXT: subfe 3, 5, 5 21239; PWR5-NEXT: subfic 4, 4, 36 21240; PWR5-NEXT: subfe 4, 5, 5 21241; PWR5-NEXT: blr 21242; 21243; PWR6-LABEL: ugt_36_v2i64: 21244; PWR6: # %bb.0: 21245; PWR6-NEXT: lis 5, 21845 21246; PWR6-NEXT: lis 6, 13107 21247; PWR6-NEXT: ori 5, 5, 21845 21248; PWR6-NEXT: rotldi 8, 4, 63 21249; PWR6-NEXT: rotldi 9, 3, 63 21250; PWR6-NEXT: rldimi 5, 5, 32, 0 21251; PWR6-NEXT: and 8, 8, 5 21252; PWR6-NEXT: and 5, 9, 5 21253; PWR6-NEXT: ori 6, 6, 13107 21254; PWR6-NEXT: sub 3, 3, 5 21255; PWR6-NEXT: rldimi 6, 6, 32, 0 21256; PWR6-NEXT: sub 4, 4, 8 21257; PWR6-NEXT: and 8, 3, 6 21258; PWR6-NEXT: rotldi 3, 3, 62 21259; PWR6-NEXT: and 3, 3, 6 21260; PWR6-NEXT: lis 7, 3855 21261; PWR6-NEXT: and 5, 4, 6 21262; PWR6-NEXT: rotldi 4, 4, 62 21263; PWR6-NEXT: add 3, 8, 3 21264; PWR6-NEXT: lis 9, 257 21265; PWR6-NEXT: ori 7, 7, 3855 21266; PWR6-NEXT: and 4, 4, 6 21267; PWR6-NEXT: rldicl 6, 3, 60, 4 21268; PWR6-NEXT: ori 9, 9, 257 21269; PWR6-NEXT: rldimi 7, 7, 32, 0 21270; PWR6-NEXT: add 4, 5, 4 21271; PWR6-NEXT: add 3, 3, 6 21272; PWR6-NEXT: rldimi 9, 9, 32, 0 21273; PWR6-NEXT: rldicl 5, 4, 60, 4 21274; PWR6-NEXT: and 3, 3, 7 21275; PWR6-NEXT: add 4, 4, 5 21276; PWR6-NEXT: mulld 3, 3, 9 21277; PWR6-NEXT: and 4, 4, 7 21278; PWR6-NEXT: rldicl 3, 3, 8, 56 21279; PWR6-NEXT: mulld 4, 4, 9 21280; PWR6-NEXT: li 5, 36 21281; PWR6-NEXT: subfic 3, 3, 36 21282; PWR6-NEXT: rldicl 4, 4, 8, 56 21283; PWR6-NEXT: subfe 3, 5, 5 21284; PWR6-NEXT: subfic 4, 4, 36 21285; PWR6-NEXT: subfe 4, 5, 5 21286; PWR6-NEXT: blr 21287; 21288; PWR7-LABEL: ugt_36_v2i64: 21289; PWR7: # %bb.0: 21290; PWR7-NEXT: addi 3, 1, -32 21291; PWR7-NEXT: li 5, -1 21292; PWR7-NEXT: stxvd2x 34, 0, 3 21293; PWR7-NEXT: ld 4, -24(1) 21294; PWR7-NEXT: ld 3, -32(1) 21295; PWR7-NEXT: popcntd 4, 4 21296; PWR7-NEXT: popcntd 3, 3 21297; PWR7-NEXT: cmpldi 4, 36 21298; PWR7-NEXT: li 4, 0 21299; PWR7-NEXT: iselgt 6, 5, 4 21300; PWR7-NEXT: cmpldi 3, 36 21301; PWR7-NEXT: iselgt 3, 5, 4 21302; PWR7-NEXT: std 6, -8(1) 21303; PWR7-NEXT: std 3, -16(1) 21304; PWR7-NEXT: addi 3, 1, -16 21305; PWR7-NEXT: lxvd2x 34, 0, 3 21306; PWR7-NEXT: blr 21307; 21308; PWR8-LABEL: ugt_36_v2i64: 21309; PWR8: # %bb.0: 21310; PWR8-NEXT: addis 3, 2, .LCPI170_0@toc@ha 21311; PWR8-NEXT: vpopcntd 2, 2 21312; PWR8-NEXT: addi 3, 3, .LCPI170_0@toc@l 21313; PWR8-NEXT: lxvd2x 35, 0, 3 21314; PWR8-NEXT: vcmpgtud 2, 2, 3 21315; PWR8-NEXT: blr 21316; 21317; PWR9-LABEL: ugt_36_v2i64: 21318; PWR9: # %bb.0: 21319; PWR9-NEXT: addis 3, 2, .LCPI170_0@toc@ha 21320; PWR9-NEXT: vpopcntd 2, 2 21321; PWR9-NEXT: addi 3, 3, .LCPI170_0@toc@l 21322; PWR9-NEXT: lxv 35, 0(3) 21323; PWR9-NEXT: vcmpgtud 2, 2, 3 21324; PWR9-NEXT: blr 21325 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21326 %3 = icmp ugt <2 x i64> %2, <i64 36, i64 36> 21327 %4 = sext <2 x i1> %3 to <2 x i64> 21328 ret <2 x i64> %4 21329} 21330 21331define <2 x i64> @ult_37_v2i64(<2 x i64> %0) { 21332; PWR5-LABEL: ult_37_v2i64: 21333; PWR5: # %bb.0: 21334; PWR5-NEXT: lis 5, 21845 21335; PWR5-NEXT: lis 6, 13107 21336; PWR5-NEXT: ori 5, 5, 21845 21337; PWR5-NEXT: rotldi 8, 4, 63 21338; PWR5-NEXT: rotldi 9, 3, 63 21339; PWR5-NEXT: rldimi 5, 5, 32, 0 21340; PWR5-NEXT: and 8, 8, 5 21341; PWR5-NEXT: and 5, 9, 5 21342; PWR5-NEXT: ori 6, 6, 13107 21343; PWR5-NEXT: sub 3, 3, 5 21344; PWR5-NEXT: rldimi 6, 6, 32, 0 21345; PWR5-NEXT: sub 4, 4, 8 21346; PWR5-NEXT: and 8, 3, 6 21347; PWR5-NEXT: rotldi 3, 3, 62 21348; PWR5-NEXT: and 3, 3, 6 21349; PWR5-NEXT: lis 7, 3855 21350; PWR5-NEXT: and 5, 4, 6 21351; PWR5-NEXT: rotldi 4, 4, 62 21352; PWR5-NEXT: add 3, 8, 3 21353; PWR5-NEXT: lis 9, 257 21354; PWR5-NEXT: ori 7, 7, 3855 21355; PWR5-NEXT: and 4, 4, 6 21356; PWR5-NEXT: rldicl 6, 3, 60, 4 21357; PWR5-NEXT: ori 9, 9, 257 21358; PWR5-NEXT: rldimi 7, 7, 32, 0 21359; PWR5-NEXT: add 4, 5, 4 21360; PWR5-NEXT: add 3, 3, 6 21361; PWR5-NEXT: rldimi 9, 9, 32, 0 21362; PWR5-NEXT: rldicl 5, 4, 60, 4 21363; PWR5-NEXT: and 3, 3, 7 21364; PWR5-NEXT: add 4, 4, 5 21365; PWR5-NEXT: mulld 3, 3, 9 21366; PWR5-NEXT: and 4, 4, 7 21367; PWR5-NEXT: rldicl 3, 3, 8, 56 21368; PWR5-NEXT: li 5, 37 21369; PWR5-NEXT: mulld 4, 4, 9 21370; PWR5-NEXT: subc 6, 3, 5 21371; PWR5-NEXT: rldicl 4, 4, 8, 56 21372; PWR5-NEXT: subfe 3, 3, 3 21373; PWR5-NEXT: subc 5, 4, 5 21374; PWR5-NEXT: subfe 4, 4, 4 21375; PWR5-NEXT: blr 21376; 21377; PWR6-LABEL: ult_37_v2i64: 21378; PWR6: # %bb.0: 21379; PWR6-NEXT: lis 5, 21845 21380; PWR6-NEXT: lis 6, 13107 21381; PWR6-NEXT: ori 5, 5, 21845 21382; PWR6-NEXT: rotldi 8, 4, 63 21383; PWR6-NEXT: rotldi 9, 3, 63 21384; PWR6-NEXT: rldimi 5, 5, 32, 0 21385; PWR6-NEXT: and 8, 8, 5 21386; PWR6-NEXT: and 5, 9, 5 21387; PWR6-NEXT: ori 6, 6, 13107 21388; PWR6-NEXT: sub 3, 3, 5 21389; PWR6-NEXT: rldimi 6, 6, 32, 0 21390; PWR6-NEXT: sub 4, 4, 8 21391; PWR6-NEXT: and 8, 3, 6 21392; PWR6-NEXT: rotldi 3, 3, 62 21393; PWR6-NEXT: and 3, 3, 6 21394; PWR6-NEXT: lis 7, 3855 21395; PWR6-NEXT: and 5, 4, 6 21396; PWR6-NEXT: rotldi 4, 4, 62 21397; PWR6-NEXT: add 3, 8, 3 21398; PWR6-NEXT: lis 9, 257 21399; PWR6-NEXT: ori 7, 7, 3855 21400; PWR6-NEXT: and 4, 4, 6 21401; PWR6-NEXT: rldicl 6, 3, 60, 4 21402; PWR6-NEXT: ori 9, 9, 257 21403; PWR6-NEXT: rldimi 7, 7, 32, 0 21404; PWR6-NEXT: add 4, 5, 4 21405; PWR6-NEXT: add 3, 3, 6 21406; PWR6-NEXT: rldimi 9, 9, 32, 0 21407; PWR6-NEXT: rldicl 5, 4, 60, 4 21408; PWR6-NEXT: and 3, 3, 7 21409; PWR6-NEXT: add 4, 4, 5 21410; PWR6-NEXT: mulld 3, 3, 9 21411; PWR6-NEXT: and 4, 4, 7 21412; PWR6-NEXT: rldicl 3, 3, 8, 56 21413; PWR6-NEXT: li 5, 37 21414; PWR6-NEXT: mulld 4, 4, 9 21415; PWR6-NEXT: subc 6, 3, 5 21416; PWR6-NEXT: rldicl 4, 4, 8, 56 21417; PWR6-NEXT: subfe 3, 3, 3 21418; PWR6-NEXT: subc 5, 4, 5 21419; PWR6-NEXT: subfe 4, 4, 4 21420; PWR6-NEXT: blr 21421; 21422; PWR7-LABEL: ult_37_v2i64: 21423; PWR7: # %bb.0: 21424; PWR7-NEXT: addi 3, 1, -32 21425; PWR7-NEXT: li 5, -1 21426; PWR7-NEXT: stxvd2x 34, 0, 3 21427; PWR7-NEXT: ld 4, -24(1) 21428; PWR7-NEXT: ld 3, -32(1) 21429; PWR7-NEXT: popcntd 4, 4 21430; PWR7-NEXT: popcntd 3, 3 21431; PWR7-NEXT: cmpldi 4, 37 21432; PWR7-NEXT: li 4, 0 21433; PWR7-NEXT: isellt 6, 5, 4 21434; PWR7-NEXT: cmpldi 3, 37 21435; PWR7-NEXT: isellt 3, 5, 4 21436; PWR7-NEXT: std 6, -8(1) 21437; PWR7-NEXT: std 3, -16(1) 21438; PWR7-NEXT: addi 3, 1, -16 21439; PWR7-NEXT: lxvd2x 34, 0, 3 21440; PWR7-NEXT: blr 21441; 21442; PWR8-LABEL: ult_37_v2i64: 21443; PWR8: # %bb.0: 21444; PWR8-NEXT: addis 3, 2, .LCPI171_0@toc@ha 21445; PWR8-NEXT: vpopcntd 2, 2 21446; PWR8-NEXT: addi 3, 3, .LCPI171_0@toc@l 21447; PWR8-NEXT: lxvd2x 35, 0, 3 21448; PWR8-NEXT: vcmpgtud 2, 3, 2 21449; PWR8-NEXT: blr 21450; 21451; PWR9-LABEL: ult_37_v2i64: 21452; PWR9: # %bb.0: 21453; PWR9-NEXT: addis 3, 2, .LCPI171_0@toc@ha 21454; PWR9-NEXT: vpopcntd 2, 2 21455; PWR9-NEXT: addi 3, 3, .LCPI171_0@toc@l 21456; PWR9-NEXT: lxv 35, 0(3) 21457; PWR9-NEXT: vcmpgtud 2, 3, 2 21458; PWR9-NEXT: blr 21459 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21460 %3 = icmp ult <2 x i64> %2, <i64 37, i64 37> 21461 %4 = sext <2 x i1> %3 to <2 x i64> 21462 ret <2 x i64> %4 21463} 21464 21465define <2 x i64> @ugt_37_v2i64(<2 x i64> %0) { 21466; PWR5-LABEL: ugt_37_v2i64: 21467; PWR5: # %bb.0: 21468; PWR5-NEXT: lis 5, 21845 21469; PWR5-NEXT: lis 6, 13107 21470; PWR5-NEXT: ori 5, 5, 21845 21471; PWR5-NEXT: rotldi 8, 4, 63 21472; PWR5-NEXT: rotldi 9, 3, 63 21473; PWR5-NEXT: rldimi 5, 5, 32, 0 21474; PWR5-NEXT: and 8, 8, 5 21475; PWR5-NEXT: and 5, 9, 5 21476; PWR5-NEXT: ori 6, 6, 13107 21477; PWR5-NEXT: sub 3, 3, 5 21478; PWR5-NEXT: rldimi 6, 6, 32, 0 21479; PWR5-NEXT: sub 4, 4, 8 21480; PWR5-NEXT: and 8, 3, 6 21481; PWR5-NEXT: rotldi 3, 3, 62 21482; PWR5-NEXT: and 3, 3, 6 21483; PWR5-NEXT: lis 7, 3855 21484; PWR5-NEXT: and 5, 4, 6 21485; PWR5-NEXT: rotldi 4, 4, 62 21486; PWR5-NEXT: add 3, 8, 3 21487; PWR5-NEXT: lis 9, 257 21488; PWR5-NEXT: ori 7, 7, 3855 21489; PWR5-NEXT: and 4, 4, 6 21490; PWR5-NEXT: rldicl 6, 3, 60, 4 21491; PWR5-NEXT: ori 9, 9, 257 21492; PWR5-NEXT: rldimi 7, 7, 32, 0 21493; PWR5-NEXT: add 4, 5, 4 21494; PWR5-NEXT: add 3, 3, 6 21495; PWR5-NEXT: rldimi 9, 9, 32, 0 21496; PWR5-NEXT: rldicl 5, 4, 60, 4 21497; PWR5-NEXT: and 3, 3, 7 21498; PWR5-NEXT: add 4, 4, 5 21499; PWR5-NEXT: mulld 3, 3, 9 21500; PWR5-NEXT: and 4, 4, 7 21501; PWR5-NEXT: rldicl 3, 3, 8, 56 21502; PWR5-NEXT: mulld 4, 4, 9 21503; PWR5-NEXT: li 5, 37 21504; PWR5-NEXT: subfic 3, 3, 37 21505; PWR5-NEXT: rldicl 4, 4, 8, 56 21506; PWR5-NEXT: subfe 3, 5, 5 21507; PWR5-NEXT: subfic 4, 4, 37 21508; PWR5-NEXT: subfe 4, 5, 5 21509; PWR5-NEXT: blr 21510; 21511; PWR6-LABEL: ugt_37_v2i64: 21512; PWR6: # %bb.0: 21513; PWR6-NEXT: lis 5, 21845 21514; PWR6-NEXT: lis 6, 13107 21515; PWR6-NEXT: ori 5, 5, 21845 21516; PWR6-NEXT: rotldi 8, 4, 63 21517; PWR6-NEXT: rotldi 9, 3, 63 21518; PWR6-NEXT: rldimi 5, 5, 32, 0 21519; PWR6-NEXT: and 8, 8, 5 21520; PWR6-NEXT: and 5, 9, 5 21521; PWR6-NEXT: ori 6, 6, 13107 21522; PWR6-NEXT: sub 3, 3, 5 21523; PWR6-NEXT: rldimi 6, 6, 32, 0 21524; PWR6-NEXT: sub 4, 4, 8 21525; PWR6-NEXT: and 8, 3, 6 21526; PWR6-NEXT: rotldi 3, 3, 62 21527; PWR6-NEXT: and 3, 3, 6 21528; PWR6-NEXT: lis 7, 3855 21529; PWR6-NEXT: and 5, 4, 6 21530; PWR6-NEXT: rotldi 4, 4, 62 21531; PWR6-NEXT: add 3, 8, 3 21532; PWR6-NEXT: lis 9, 257 21533; PWR6-NEXT: ori 7, 7, 3855 21534; PWR6-NEXT: and 4, 4, 6 21535; PWR6-NEXT: rldicl 6, 3, 60, 4 21536; PWR6-NEXT: ori 9, 9, 257 21537; PWR6-NEXT: rldimi 7, 7, 32, 0 21538; PWR6-NEXT: add 4, 5, 4 21539; PWR6-NEXT: add 3, 3, 6 21540; PWR6-NEXT: rldimi 9, 9, 32, 0 21541; PWR6-NEXT: rldicl 5, 4, 60, 4 21542; PWR6-NEXT: and 3, 3, 7 21543; PWR6-NEXT: add 4, 4, 5 21544; PWR6-NEXT: mulld 3, 3, 9 21545; PWR6-NEXT: and 4, 4, 7 21546; PWR6-NEXT: rldicl 3, 3, 8, 56 21547; PWR6-NEXT: mulld 4, 4, 9 21548; PWR6-NEXT: li 5, 37 21549; PWR6-NEXT: subfic 3, 3, 37 21550; PWR6-NEXT: rldicl 4, 4, 8, 56 21551; PWR6-NEXT: subfe 3, 5, 5 21552; PWR6-NEXT: subfic 4, 4, 37 21553; PWR6-NEXT: subfe 4, 5, 5 21554; PWR6-NEXT: blr 21555; 21556; PWR7-LABEL: ugt_37_v2i64: 21557; PWR7: # %bb.0: 21558; PWR7-NEXT: addi 3, 1, -32 21559; PWR7-NEXT: li 5, -1 21560; PWR7-NEXT: stxvd2x 34, 0, 3 21561; PWR7-NEXT: ld 4, -24(1) 21562; PWR7-NEXT: ld 3, -32(1) 21563; PWR7-NEXT: popcntd 4, 4 21564; PWR7-NEXT: popcntd 3, 3 21565; PWR7-NEXT: cmpldi 4, 37 21566; PWR7-NEXT: li 4, 0 21567; PWR7-NEXT: iselgt 6, 5, 4 21568; PWR7-NEXT: cmpldi 3, 37 21569; PWR7-NEXT: iselgt 3, 5, 4 21570; PWR7-NEXT: std 6, -8(1) 21571; PWR7-NEXT: std 3, -16(1) 21572; PWR7-NEXT: addi 3, 1, -16 21573; PWR7-NEXT: lxvd2x 34, 0, 3 21574; PWR7-NEXT: blr 21575; 21576; PWR8-LABEL: ugt_37_v2i64: 21577; PWR8: # %bb.0: 21578; PWR8-NEXT: addis 3, 2, .LCPI172_0@toc@ha 21579; PWR8-NEXT: vpopcntd 2, 2 21580; PWR8-NEXT: addi 3, 3, .LCPI172_0@toc@l 21581; PWR8-NEXT: lxvd2x 35, 0, 3 21582; PWR8-NEXT: vcmpgtud 2, 2, 3 21583; PWR8-NEXT: blr 21584; 21585; PWR9-LABEL: ugt_37_v2i64: 21586; PWR9: # %bb.0: 21587; PWR9-NEXT: addis 3, 2, .LCPI172_0@toc@ha 21588; PWR9-NEXT: vpopcntd 2, 2 21589; PWR9-NEXT: addi 3, 3, .LCPI172_0@toc@l 21590; PWR9-NEXT: lxv 35, 0(3) 21591; PWR9-NEXT: vcmpgtud 2, 2, 3 21592; PWR9-NEXT: blr 21593 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21594 %3 = icmp ugt <2 x i64> %2, <i64 37, i64 37> 21595 %4 = sext <2 x i1> %3 to <2 x i64> 21596 ret <2 x i64> %4 21597} 21598 21599define <2 x i64> @ult_38_v2i64(<2 x i64> %0) { 21600; PWR5-LABEL: ult_38_v2i64: 21601; PWR5: # %bb.0: 21602; PWR5-NEXT: lis 5, 21845 21603; PWR5-NEXT: lis 6, 13107 21604; PWR5-NEXT: ori 5, 5, 21845 21605; PWR5-NEXT: rotldi 8, 4, 63 21606; PWR5-NEXT: rotldi 9, 3, 63 21607; PWR5-NEXT: rldimi 5, 5, 32, 0 21608; PWR5-NEXT: and 8, 8, 5 21609; PWR5-NEXT: and 5, 9, 5 21610; PWR5-NEXT: ori 6, 6, 13107 21611; PWR5-NEXT: sub 3, 3, 5 21612; PWR5-NEXT: rldimi 6, 6, 32, 0 21613; PWR5-NEXT: sub 4, 4, 8 21614; PWR5-NEXT: and 8, 3, 6 21615; PWR5-NEXT: rotldi 3, 3, 62 21616; PWR5-NEXT: and 3, 3, 6 21617; PWR5-NEXT: lis 7, 3855 21618; PWR5-NEXT: and 5, 4, 6 21619; PWR5-NEXT: rotldi 4, 4, 62 21620; PWR5-NEXT: add 3, 8, 3 21621; PWR5-NEXT: lis 9, 257 21622; PWR5-NEXT: ori 7, 7, 3855 21623; PWR5-NEXT: and 4, 4, 6 21624; PWR5-NEXT: rldicl 6, 3, 60, 4 21625; PWR5-NEXT: ori 9, 9, 257 21626; PWR5-NEXT: rldimi 7, 7, 32, 0 21627; PWR5-NEXT: add 4, 5, 4 21628; PWR5-NEXT: add 3, 3, 6 21629; PWR5-NEXT: rldimi 9, 9, 32, 0 21630; PWR5-NEXT: rldicl 5, 4, 60, 4 21631; PWR5-NEXT: and 3, 3, 7 21632; PWR5-NEXT: add 4, 4, 5 21633; PWR5-NEXT: mulld 3, 3, 9 21634; PWR5-NEXT: and 4, 4, 7 21635; PWR5-NEXT: rldicl 3, 3, 8, 56 21636; PWR5-NEXT: li 5, 38 21637; PWR5-NEXT: mulld 4, 4, 9 21638; PWR5-NEXT: subc 6, 3, 5 21639; PWR5-NEXT: rldicl 4, 4, 8, 56 21640; PWR5-NEXT: subfe 3, 3, 3 21641; PWR5-NEXT: subc 5, 4, 5 21642; PWR5-NEXT: subfe 4, 4, 4 21643; PWR5-NEXT: blr 21644; 21645; PWR6-LABEL: ult_38_v2i64: 21646; PWR6: # %bb.0: 21647; PWR6-NEXT: lis 5, 21845 21648; PWR6-NEXT: lis 6, 13107 21649; PWR6-NEXT: ori 5, 5, 21845 21650; PWR6-NEXT: rotldi 8, 4, 63 21651; PWR6-NEXT: rotldi 9, 3, 63 21652; PWR6-NEXT: rldimi 5, 5, 32, 0 21653; PWR6-NEXT: and 8, 8, 5 21654; PWR6-NEXT: and 5, 9, 5 21655; PWR6-NEXT: ori 6, 6, 13107 21656; PWR6-NEXT: sub 3, 3, 5 21657; PWR6-NEXT: rldimi 6, 6, 32, 0 21658; PWR6-NEXT: sub 4, 4, 8 21659; PWR6-NEXT: and 8, 3, 6 21660; PWR6-NEXT: rotldi 3, 3, 62 21661; PWR6-NEXT: and 3, 3, 6 21662; PWR6-NEXT: lis 7, 3855 21663; PWR6-NEXT: and 5, 4, 6 21664; PWR6-NEXT: rotldi 4, 4, 62 21665; PWR6-NEXT: add 3, 8, 3 21666; PWR6-NEXT: lis 9, 257 21667; PWR6-NEXT: ori 7, 7, 3855 21668; PWR6-NEXT: and 4, 4, 6 21669; PWR6-NEXT: rldicl 6, 3, 60, 4 21670; PWR6-NEXT: ori 9, 9, 257 21671; PWR6-NEXT: rldimi 7, 7, 32, 0 21672; PWR6-NEXT: add 4, 5, 4 21673; PWR6-NEXT: add 3, 3, 6 21674; PWR6-NEXT: rldimi 9, 9, 32, 0 21675; PWR6-NEXT: rldicl 5, 4, 60, 4 21676; PWR6-NEXT: and 3, 3, 7 21677; PWR6-NEXT: add 4, 4, 5 21678; PWR6-NEXT: mulld 3, 3, 9 21679; PWR6-NEXT: and 4, 4, 7 21680; PWR6-NEXT: rldicl 3, 3, 8, 56 21681; PWR6-NEXT: li 5, 38 21682; PWR6-NEXT: mulld 4, 4, 9 21683; PWR6-NEXT: subc 6, 3, 5 21684; PWR6-NEXT: rldicl 4, 4, 8, 56 21685; PWR6-NEXT: subfe 3, 3, 3 21686; PWR6-NEXT: subc 5, 4, 5 21687; PWR6-NEXT: subfe 4, 4, 4 21688; PWR6-NEXT: blr 21689; 21690; PWR7-LABEL: ult_38_v2i64: 21691; PWR7: # %bb.0: 21692; PWR7-NEXT: addi 3, 1, -32 21693; PWR7-NEXT: li 5, -1 21694; PWR7-NEXT: stxvd2x 34, 0, 3 21695; PWR7-NEXT: ld 4, -24(1) 21696; PWR7-NEXT: ld 3, -32(1) 21697; PWR7-NEXT: popcntd 4, 4 21698; PWR7-NEXT: popcntd 3, 3 21699; PWR7-NEXT: cmpldi 4, 38 21700; PWR7-NEXT: li 4, 0 21701; PWR7-NEXT: isellt 6, 5, 4 21702; PWR7-NEXT: cmpldi 3, 38 21703; PWR7-NEXT: isellt 3, 5, 4 21704; PWR7-NEXT: std 6, -8(1) 21705; PWR7-NEXT: std 3, -16(1) 21706; PWR7-NEXT: addi 3, 1, -16 21707; PWR7-NEXT: lxvd2x 34, 0, 3 21708; PWR7-NEXT: blr 21709; 21710; PWR8-LABEL: ult_38_v2i64: 21711; PWR8: # %bb.0: 21712; PWR8-NEXT: addis 3, 2, .LCPI173_0@toc@ha 21713; PWR8-NEXT: vpopcntd 2, 2 21714; PWR8-NEXT: addi 3, 3, .LCPI173_0@toc@l 21715; PWR8-NEXT: lxvd2x 35, 0, 3 21716; PWR8-NEXT: vcmpgtud 2, 3, 2 21717; PWR8-NEXT: blr 21718; 21719; PWR9-LABEL: ult_38_v2i64: 21720; PWR9: # %bb.0: 21721; PWR9-NEXT: addis 3, 2, .LCPI173_0@toc@ha 21722; PWR9-NEXT: vpopcntd 2, 2 21723; PWR9-NEXT: addi 3, 3, .LCPI173_0@toc@l 21724; PWR9-NEXT: lxv 35, 0(3) 21725; PWR9-NEXT: vcmpgtud 2, 3, 2 21726; PWR9-NEXT: blr 21727 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21728 %3 = icmp ult <2 x i64> %2, <i64 38, i64 38> 21729 %4 = sext <2 x i1> %3 to <2 x i64> 21730 ret <2 x i64> %4 21731} 21732 21733define <2 x i64> @ugt_38_v2i64(<2 x i64> %0) { 21734; PWR5-LABEL: ugt_38_v2i64: 21735; PWR5: # %bb.0: 21736; PWR5-NEXT: lis 5, 21845 21737; PWR5-NEXT: lis 6, 13107 21738; PWR5-NEXT: ori 5, 5, 21845 21739; PWR5-NEXT: rotldi 8, 4, 63 21740; PWR5-NEXT: rotldi 9, 3, 63 21741; PWR5-NEXT: rldimi 5, 5, 32, 0 21742; PWR5-NEXT: and 8, 8, 5 21743; PWR5-NEXT: and 5, 9, 5 21744; PWR5-NEXT: ori 6, 6, 13107 21745; PWR5-NEXT: sub 3, 3, 5 21746; PWR5-NEXT: rldimi 6, 6, 32, 0 21747; PWR5-NEXT: sub 4, 4, 8 21748; PWR5-NEXT: and 8, 3, 6 21749; PWR5-NEXT: rotldi 3, 3, 62 21750; PWR5-NEXT: and 3, 3, 6 21751; PWR5-NEXT: lis 7, 3855 21752; PWR5-NEXT: and 5, 4, 6 21753; PWR5-NEXT: rotldi 4, 4, 62 21754; PWR5-NEXT: add 3, 8, 3 21755; PWR5-NEXT: lis 9, 257 21756; PWR5-NEXT: ori 7, 7, 3855 21757; PWR5-NEXT: and 4, 4, 6 21758; PWR5-NEXT: rldicl 6, 3, 60, 4 21759; PWR5-NEXT: ori 9, 9, 257 21760; PWR5-NEXT: rldimi 7, 7, 32, 0 21761; PWR5-NEXT: add 4, 5, 4 21762; PWR5-NEXT: add 3, 3, 6 21763; PWR5-NEXT: rldimi 9, 9, 32, 0 21764; PWR5-NEXT: rldicl 5, 4, 60, 4 21765; PWR5-NEXT: and 3, 3, 7 21766; PWR5-NEXT: add 4, 4, 5 21767; PWR5-NEXT: mulld 3, 3, 9 21768; PWR5-NEXT: and 4, 4, 7 21769; PWR5-NEXT: rldicl 3, 3, 8, 56 21770; PWR5-NEXT: mulld 4, 4, 9 21771; PWR5-NEXT: li 5, 38 21772; PWR5-NEXT: subfic 3, 3, 38 21773; PWR5-NEXT: rldicl 4, 4, 8, 56 21774; PWR5-NEXT: subfe 3, 5, 5 21775; PWR5-NEXT: subfic 4, 4, 38 21776; PWR5-NEXT: subfe 4, 5, 5 21777; PWR5-NEXT: blr 21778; 21779; PWR6-LABEL: ugt_38_v2i64: 21780; PWR6: # %bb.0: 21781; PWR6-NEXT: lis 5, 21845 21782; PWR6-NEXT: lis 6, 13107 21783; PWR6-NEXT: ori 5, 5, 21845 21784; PWR6-NEXT: rotldi 8, 4, 63 21785; PWR6-NEXT: rotldi 9, 3, 63 21786; PWR6-NEXT: rldimi 5, 5, 32, 0 21787; PWR6-NEXT: and 8, 8, 5 21788; PWR6-NEXT: and 5, 9, 5 21789; PWR6-NEXT: ori 6, 6, 13107 21790; PWR6-NEXT: sub 3, 3, 5 21791; PWR6-NEXT: rldimi 6, 6, 32, 0 21792; PWR6-NEXT: sub 4, 4, 8 21793; PWR6-NEXT: and 8, 3, 6 21794; PWR6-NEXT: rotldi 3, 3, 62 21795; PWR6-NEXT: and 3, 3, 6 21796; PWR6-NEXT: lis 7, 3855 21797; PWR6-NEXT: and 5, 4, 6 21798; PWR6-NEXT: rotldi 4, 4, 62 21799; PWR6-NEXT: add 3, 8, 3 21800; PWR6-NEXT: lis 9, 257 21801; PWR6-NEXT: ori 7, 7, 3855 21802; PWR6-NEXT: and 4, 4, 6 21803; PWR6-NEXT: rldicl 6, 3, 60, 4 21804; PWR6-NEXT: ori 9, 9, 257 21805; PWR6-NEXT: rldimi 7, 7, 32, 0 21806; PWR6-NEXT: add 4, 5, 4 21807; PWR6-NEXT: add 3, 3, 6 21808; PWR6-NEXT: rldimi 9, 9, 32, 0 21809; PWR6-NEXT: rldicl 5, 4, 60, 4 21810; PWR6-NEXT: and 3, 3, 7 21811; PWR6-NEXT: add 4, 4, 5 21812; PWR6-NEXT: mulld 3, 3, 9 21813; PWR6-NEXT: and 4, 4, 7 21814; PWR6-NEXT: rldicl 3, 3, 8, 56 21815; PWR6-NEXT: mulld 4, 4, 9 21816; PWR6-NEXT: li 5, 38 21817; PWR6-NEXT: subfic 3, 3, 38 21818; PWR6-NEXT: rldicl 4, 4, 8, 56 21819; PWR6-NEXT: subfe 3, 5, 5 21820; PWR6-NEXT: subfic 4, 4, 38 21821; PWR6-NEXT: subfe 4, 5, 5 21822; PWR6-NEXT: blr 21823; 21824; PWR7-LABEL: ugt_38_v2i64: 21825; PWR7: # %bb.0: 21826; PWR7-NEXT: addi 3, 1, -32 21827; PWR7-NEXT: li 5, -1 21828; PWR7-NEXT: stxvd2x 34, 0, 3 21829; PWR7-NEXT: ld 4, -24(1) 21830; PWR7-NEXT: ld 3, -32(1) 21831; PWR7-NEXT: popcntd 4, 4 21832; PWR7-NEXT: popcntd 3, 3 21833; PWR7-NEXT: cmpldi 4, 38 21834; PWR7-NEXT: li 4, 0 21835; PWR7-NEXT: iselgt 6, 5, 4 21836; PWR7-NEXT: cmpldi 3, 38 21837; PWR7-NEXT: iselgt 3, 5, 4 21838; PWR7-NEXT: std 6, -8(1) 21839; PWR7-NEXT: std 3, -16(1) 21840; PWR7-NEXT: addi 3, 1, -16 21841; PWR7-NEXT: lxvd2x 34, 0, 3 21842; PWR7-NEXT: blr 21843; 21844; PWR8-LABEL: ugt_38_v2i64: 21845; PWR8: # %bb.0: 21846; PWR8-NEXT: addis 3, 2, .LCPI174_0@toc@ha 21847; PWR8-NEXT: vpopcntd 2, 2 21848; PWR8-NEXT: addi 3, 3, .LCPI174_0@toc@l 21849; PWR8-NEXT: lxvd2x 35, 0, 3 21850; PWR8-NEXT: vcmpgtud 2, 2, 3 21851; PWR8-NEXT: blr 21852; 21853; PWR9-LABEL: ugt_38_v2i64: 21854; PWR9: # %bb.0: 21855; PWR9-NEXT: addis 3, 2, .LCPI174_0@toc@ha 21856; PWR9-NEXT: vpopcntd 2, 2 21857; PWR9-NEXT: addi 3, 3, .LCPI174_0@toc@l 21858; PWR9-NEXT: lxv 35, 0(3) 21859; PWR9-NEXT: vcmpgtud 2, 2, 3 21860; PWR9-NEXT: blr 21861 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21862 %3 = icmp ugt <2 x i64> %2, <i64 38, i64 38> 21863 %4 = sext <2 x i1> %3 to <2 x i64> 21864 ret <2 x i64> %4 21865} 21866 21867define <2 x i64> @ult_39_v2i64(<2 x i64> %0) { 21868; PWR5-LABEL: ult_39_v2i64: 21869; PWR5: # %bb.0: 21870; PWR5-NEXT: lis 5, 21845 21871; PWR5-NEXT: lis 6, 13107 21872; PWR5-NEXT: ori 5, 5, 21845 21873; PWR5-NEXT: rotldi 8, 4, 63 21874; PWR5-NEXT: rotldi 9, 3, 63 21875; PWR5-NEXT: rldimi 5, 5, 32, 0 21876; PWR5-NEXT: and 8, 8, 5 21877; PWR5-NEXT: and 5, 9, 5 21878; PWR5-NEXT: ori 6, 6, 13107 21879; PWR5-NEXT: sub 3, 3, 5 21880; PWR5-NEXT: rldimi 6, 6, 32, 0 21881; PWR5-NEXT: sub 4, 4, 8 21882; PWR5-NEXT: and 8, 3, 6 21883; PWR5-NEXT: rotldi 3, 3, 62 21884; PWR5-NEXT: and 3, 3, 6 21885; PWR5-NEXT: lis 7, 3855 21886; PWR5-NEXT: and 5, 4, 6 21887; PWR5-NEXT: rotldi 4, 4, 62 21888; PWR5-NEXT: add 3, 8, 3 21889; PWR5-NEXT: lis 9, 257 21890; PWR5-NEXT: ori 7, 7, 3855 21891; PWR5-NEXT: and 4, 4, 6 21892; PWR5-NEXT: rldicl 6, 3, 60, 4 21893; PWR5-NEXT: ori 9, 9, 257 21894; PWR5-NEXT: rldimi 7, 7, 32, 0 21895; PWR5-NEXT: add 4, 5, 4 21896; PWR5-NEXT: add 3, 3, 6 21897; PWR5-NEXT: rldimi 9, 9, 32, 0 21898; PWR5-NEXT: rldicl 5, 4, 60, 4 21899; PWR5-NEXT: and 3, 3, 7 21900; PWR5-NEXT: add 4, 4, 5 21901; PWR5-NEXT: mulld 3, 3, 9 21902; PWR5-NEXT: and 4, 4, 7 21903; PWR5-NEXT: rldicl 3, 3, 8, 56 21904; PWR5-NEXT: li 5, 39 21905; PWR5-NEXT: mulld 4, 4, 9 21906; PWR5-NEXT: subc 6, 3, 5 21907; PWR5-NEXT: rldicl 4, 4, 8, 56 21908; PWR5-NEXT: subfe 3, 3, 3 21909; PWR5-NEXT: subc 5, 4, 5 21910; PWR5-NEXT: subfe 4, 4, 4 21911; PWR5-NEXT: blr 21912; 21913; PWR6-LABEL: ult_39_v2i64: 21914; PWR6: # %bb.0: 21915; PWR6-NEXT: lis 5, 21845 21916; PWR6-NEXT: lis 6, 13107 21917; PWR6-NEXT: ori 5, 5, 21845 21918; PWR6-NEXT: rotldi 8, 4, 63 21919; PWR6-NEXT: rotldi 9, 3, 63 21920; PWR6-NEXT: rldimi 5, 5, 32, 0 21921; PWR6-NEXT: and 8, 8, 5 21922; PWR6-NEXT: and 5, 9, 5 21923; PWR6-NEXT: ori 6, 6, 13107 21924; PWR6-NEXT: sub 3, 3, 5 21925; PWR6-NEXT: rldimi 6, 6, 32, 0 21926; PWR6-NEXT: sub 4, 4, 8 21927; PWR6-NEXT: and 8, 3, 6 21928; PWR6-NEXT: rotldi 3, 3, 62 21929; PWR6-NEXT: and 3, 3, 6 21930; PWR6-NEXT: lis 7, 3855 21931; PWR6-NEXT: and 5, 4, 6 21932; PWR6-NEXT: rotldi 4, 4, 62 21933; PWR6-NEXT: add 3, 8, 3 21934; PWR6-NEXT: lis 9, 257 21935; PWR6-NEXT: ori 7, 7, 3855 21936; PWR6-NEXT: and 4, 4, 6 21937; PWR6-NEXT: rldicl 6, 3, 60, 4 21938; PWR6-NEXT: ori 9, 9, 257 21939; PWR6-NEXT: rldimi 7, 7, 32, 0 21940; PWR6-NEXT: add 4, 5, 4 21941; PWR6-NEXT: add 3, 3, 6 21942; PWR6-NEXT: rldimi 9, 9, 32, 0 21943; PWR6-NEXT: rldicl 5, 4, 60, 4 21944; PWR6-NEXT: and 3, 3, 7 21945; PWR6-NEXT: add 4, 4, 5 21946; PWR6-NEXT: mulld 3, 3, 9 21947; PWR6-NEXT: and 4, 4, 7 21948; PWR6-NEXT: rldicl 3, 3, 8, 56 21949; PWR6-NEXT: li 5, 39 21950; PWR6-NEXT: mulld 4, 4, 9 21951; PWR6-NEXT: subc 6, 3, 5 21952; PWR6-NEXT: rldicl 4, 4, 8, 56 21953; PWR6-NEXT: subfe 3, 3, 3 21954; PWR6-NEXT: subc 5, 4, 5 21955; PWR6-NEXT: subfe 4, 4, 4 21956; PWR6-NEXT: blr 21957; 21958; PWR7-LABEL: ult_39_v2i64: 21959; PWR7: # %bb.0: 21960; PWR7-NEXT: addi 3, 1, -32 21961; PWR7-NEXT: li 5, -1 21962; PWR7-NEXT: stxvd2x 34, 0, 3 21963; PWR7-NEXT: ld 4, -24(1) 21964; PWR7-NEXT: ld 3, -32(1) 21965; PWR7-NEXT: popcntd 4, 4 21966; PWR7-NEXT: popcntd 3, 3 21967; PWR7-NEXT: cmpldi 4, 39 21968; PWR7-NEXT: li 4, 0 21969; PWR7-NEXT: isellt 6, 5, 4 21970; PWR7-NEXT: cmpldi 3, 39 21971; PWR7-NEXT: isellt 3, 5, 4 21972; PWR7-NEXT: std 6, -8(1) 21973; PWR7-NEXT: std 3, -16(1) 21974; PWR7-NEXT: addi 3, 1, -16 21975; PWR7-NEXT: lxvd2x 34, 0, 3 21976; PWR7-NEXT: blr 21977; 21978; PWR8-LABEL: ult_39_v2i64: 21979; PWR8: # %bb.0: 21980; PWR8-NEXT: addis 3, 2, .LCPI175_0@toc@ha 21981; PWR8-NEXT: vpopcntd 2, 2 21982; PWR8-NEXT: addi 3, 3, .LCPI175_0@toc@l 21983; PWR8-NEXT: lxvd2x 35, 0, 3 21984; PWR8-NEXT: vcmpgtud 2, 3, 2 21985; PWR8-NEXT: blr 21986; 21987; PWR9-LABEL: ult_39_v2i64: 21988; PWR9: # %bb.0: 21989; PWR9-NEXT: addis 3, 2, .LCPI175_0@toc@ha 21990; PWR9-NEXT: vpopcntd 2, 2 21991; PWR9-NEXT: addi 3, 3, .LCPI175_0@toc@l 21992; PWR9-NEXT: lxv 35, 0(3) 21993; PWR9-NEXT: vcmpgtud 2, 3, 2 21994; PWR9-NEXT: blr 21995 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 21996 %3 = icmp ult <2 x i64> %2, <i64 39, i64 39> 21997 %4 = sext <2 x i1> %3 to <2 x i64> 21998 ret <2 x i64> %4 21999} 22000 22001define <2 x i64> @ugt_39_v2i64(<2 x i64> %0) { 22002; PWR5-LABEL: ugt_39_v2i64: 22003; PWR5: # %bb.0: 22004; PWR5-NEXT: lis 5, 21845 22005; PWR5-NEXT: lis 6, 13107 22006; PWR5-NEXT: ori 5, 5, 21845 22007; PWR5-NEXT: rotldi 8, 4, 63 22008; PWR5-NEXT: rotldi 9, 3, 63 22009; PWR5-NEXT: rldimi 5, 5, 32, 0 22010; PWR5-NEXT: and 8, 8, 5 22011; PWR5-NEXT: and 5, 9, 5 22012; PWR5-NEXT: ori 6, 6, 13107 22013; PWR5-NEXT: sub 3, 3, 5 22014; PWR5-NEXT: rldimi 6, 6, 32, 0 22015; PWR5-NEXT: sub 4, 4, 8 22016; PWR5-NEXT: and 8, 3, 6 22017; PWR5-NEXT: rotldi 3, 3, 62 22018; PWR5-NEXT: and 3, 3, 6 22019; PWR5-NEXT: lis 7, 3855 22020; PWR5-NEXT: and 5, 4, 6 22021; PWR5-NEXT: rotldi 4, 4, 62 22022; PWR5-NEXT: add 3, 8, 3 22023; PWR5-NEXT: lis 9, 257 22024; PWR5-NEXT: ori 7, 7, 3855 22025; PWR5-NEXT: and 4, 4, 6 22026; PWR5-NEXT: rldicl 6, 3, 60, 4 22027; PWR5-NEXT: ori 9, 9, 257 22028; PWR5-NEXT: rldimi 7, 7, 32, 0 22029; PWR5-NEXT: add 4, 5, 4 22030; PWR5-NEXT: add 3, 3, 6 22031; PWR5-NEXT: rldimi 9, 9, 32, 0 22032; PWR5-NEXT: rldicl 5, 4, 60, 4 22033; PWR5-NEXT: and 3, 3, 7 22034; PWR5-NEXT: add 4, 4, 5 22035; PWR5-NEXT: mulld 3, 3, 9 22036; PWR5-NEXT: and 4, 4, 7 22037; PWR5-NEXT: rldicl 3, 3, 8, 56 22038; PWR5-NEXT: mulld 4, 4, 9 22039; PWR5-NEXT: li 5, 39 22040; PWR5-NEXT: subfic 3, 3, 39 22041; PWR5-NEXT: rldicl 4, 4, 8, 56 22042; PWR5-NEXT: subfe 3, 5, 5 22043; PWR5-NEXT: subfic 4, 4, 39 22044; PWR5-NEXT: subfe 4, 5, 5 22045; PWR5-NEXT: blr 22046; 22047; PWR6-LABEL: ugt_39_v2i64: 22048; PWR6: # %bb.0: 22049; PWR6-NEXT: lis 5, 21845 22050; PWR6-NEXT: lis 6, 13107 22051; PWR6-NEXT: ori 5, 5, 21845 22052; PWR6-NEXT: rotldi 8, 4, 63 22053; PWR6-NEXT: rotldi 9, 3, 63 22054; PWR6-NEXT: rldimi 5, 5, 32, 0 22055; PWR6-NEXT: and 8, 8, 5 22056; PWR6-NEXT: and 5, 9, 5 22057; PWR6-NEXT: ori 6, 6, 13107 22058; PWR6-NEXT: sub 3, 3, 5 22059; PWR6-NEXT: rldimi 6, 6, 32, 0 22060; PWR6-NEXT: sub 4, 4, 8 22061; PWR6-NEXT: and 8, 3, 6 22062; PWR6-NEXT: rotldi 3, 3, 62 22063; PWR6-NEXT: and 3, 3, 6 22064; PWR6-NEXT: lis 7, 3855 22065; PWR6-NEXT: and 5, 4, 6 22066; PWR6-NEXT: rotldi 4, 4, 62 22067; PWR6-NEXT: add 3, 8, 3 22068; PWR6-NEXT: lis 9, 257 22069; PWR6-NEXT: ori 7, 7, 3855 22070; PWR6-NEXT: and 4, 4, 6 22071; PWR6-NEXT: rldicl 6, 3, 60, 4 22072; PWR6-NEXT: ori 9, 9, 257 22073; PWR6-NEXT: rldimi 7, 7, 32, 0 22074; PWR6-NEXT: add 4, 5, 4 22075; PWR6-NEXT: add 3, 3, 6 22076; PWR6-NEXT: rldimi 9, 9, 32, 0 22077; PWR6-NEXT: rldicl 5, 4, 60, 4 22078; PWR6-NEXT: and 3, 3, 7 22079; PWR6-NEXT: add 4, 4, 5 22080; PWR6-NEXT: mulld 3, 3, 9 22081; PWR6-NEXT: and 4, 4, 7 22082; PWR6-NEXT: rldicl 3, 3, 8, 56 22083; PWR6-NEXT: mulld 4, 4, 9 22084; PWR6-NEXT: li 5, 39 22085; PWR6-NEXT: subfic 3, 3, 39 22086; PWR6-NEXT: rldicl 4, 4, 8, 56 22087; PWR6-NEXT: subfe 3, 5, 5 22088; PWR6-NEXT: subfic 4, 4, 39 22089; PWR6-NEXT: subfe 4, 5, 5 22090; PWR6-NEXT: blr 22091; 22092; PWR7-LABEL: ugt_39_v2i64: 22093; PWR7: # %bb.0: 22094; PWR7-NEXT: addi 3, 1, -32 22095; PWR7-NEXT: li 5, -1 22096; PWR7-NEXT: stxvd2x 34, 0, 3 22097; PWR7-NEXT: ld 4, -24(1) 22098; PWR7-NEXT: ld 3, -32(1) 22099; PWR7-NEXT: popcntd 4, 4 22100; PWR7-NEXT: popcntd 3, 3 22101; PWR7-NEXT: cmpldi 4, 39 22102; PWR7-NEXT: li 4, 0 22103; PWR7-NEXT: iselgt 6, 5, 4 22104; PWR7-NEXT: cmpldi 3, 39 22105; PWR7-NEXT: iselgt 3, 5, 4 22106; PWR7-NEXT: std 6, -8(1) 22107; PWR7-NEXT: std 3, -16(1) 22108; PWR7-NEXT: addi 3, 1, -16 22109; PWR7-NEXT: lxvd2x 34, 0, 3 22110; PWR7-NEXT: blr 22111; 22112; PWR8-LABEL: ugt_39_v2i64: 22113; PWR8: # %bb.0: 22114; PWR8-NEXT: addis 3, 2, .LCPI176_0@toc@ha 22115; PWR8-NEXT: vpopcntd 2, 2 22116; PWR8-NEXT: addi 3, 3, .LCPI176_0@toc@l 22117; PWR8-NEXT: lxvd2x 35, 0, 3 22118; PWR8-NEXT: vcmpgtud 2, 2, 3 22119; PWR8-NEXT: blr 22120; 22121; PWR9-LABEL: ugt_39_v2i64: 22122; PWR9: # %bb.0: 22123; PWR9-NEXT: addis 3, 2, .LCPI176_0@toc@ha 22124; PWR9-NEXT: vpopcntd 2, 2 22125; PWR9-NEXT: addi 3, 3, .LCPI176_0@toc@l 22126; PWR9-NEXT: lxv 35, 0(3) 22127; PWR9-NEXT: vcmpgtud 2, 2, 3 22128; PWR9-NEXT: blr 22129 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22130 %3 = icmp ugt <2 x i64> %2, <i64 39, i64 39> 22131 %4 = sext <2 x i1> %3 to <2 x i64> 22132 ret <2 x i64> %4 22133} 22134 22135define <2 x i64> @ult_40_v2i64(<2 x i64> %0) { 22136; PWR5-LABEL: ult_40_v2i64: 22137; PWR5: # %bb.0: 22138; PWR5-NEXT: lis 5, 21845 22139; PWR5-NEXT: lis 6, 13107 22140; PWR5-NEXT: ori 5, 5, 21845 22141; PWR5-NEXT: rotldi 8, 4, 63 22142; PWR5-NEXT: rotldi 9, 3, 63 22143; PWR5-NEXT: rldimi 5, 5, 32, 0 22144; PWR5-NEXT: and 8, 8, 5 22145; PWR5-NEXT: and 5, 9, 5 22146; PWR5-NEXT: ori 6, 6, 13107 22147; PWR5-NEXT: sub 3, 3, 5 22148; PWR5-NEXT: rldimi 6, 6, 32, 0 22149; PWR5-NEXT: sub 4, 4, 8 22150; PWR5-NEXT: and 8, 3, 6 22151; PWR5-NEXT: rotldi 3, 3, 62 22152; PWR5-NEXT: and 3, 3, 6 22153; PWR5-NEXT: lis 7, 3855 22154; PWR5-NEXT: and 5, 4, 6 22155; PWR5-NEXT: rotldi 4, 4, 62 22156; PWR5-NEXT: add 3, 8, 3 22157; PWR5-NEXT: lis 9, 257 22158; PWR5-NEXT: ori 7, 7, 3855 22159; PWR5-NEXT: and 4, 4, 6 22160; PWR5-NEXT: rldicl 6, 3, 60, 4 22161; PWR5-NEXT: ori 9, 9, 257 22162; PWR5-NEXT: rldimi 7, 7, 32, 0 22163; PWR5-NEXT: add 4, 5, 4 22164; PWR5-NEXT: add 3, 3, 6 22165; PWR5-NEXT: rldimi 9, 9, 32, 0 22166; PWR5-NEXT: rldicl 5, 4, 60, 4 22167; PWR5-NEXT: and 3, 3, 7 22168; PWR5-NEXT: add 4, 4, 5 22169; PWR5-NEXT: mulld 3, 3, 9 22170; PWR5-NEXT: and 4, 4, 7 22171; PWR5-NEXT: rldicl 3, 3, 8, 56 22172; PWR5-NEXT: li 5, 40 22173; PWR5-NEXT: mulld 4, 4, 9 22174; PWR5-NEXT: subc 6, 3, 5 22175; PWR5-NEXT: rldicl 4, 4, 8, 56 22176; PWR5-NEXT: subfe 3, 3, 3 22177; PWR5-NEXT: subc 5, 4, 5 22178; PWR5-NEXT: subfe 4, 4, 4 22179; PWR5-NEXT: blr 22180; 22181; PWR6-LABEL: ult_40_v2i64: 22182; PWR6: # %bb.0: 22183; PWR6-NEXT: lis 5, 21845 22184; PWR6-NEXT: lis 6, 13107 22185; PWR6-NEXT: ori 5, 5, 21845 22186; PWR6-NEXT: rotldi 8, 4, 63 22187; PWR6-NEXT: rotldi 9, 3, 63 22188; PWR6-NEXT: rldimi 5, 5, 32, 0 22189; PWR6-NEXT: and 8, 8, 5 22190; PWR6-NEXT: and 5, 9, 5 22191; PWR6-NEXT: ori 6, 6, 13107 22192; PWR6-NEXT: sub 3, 3, 5 22193; PWR6-NEXT: rldimi 6, 6, 32, 0 22194; PWR6-NEXT: sub 4, 4, 8 22195; PWR6-NEXT: and 8, 3, 6 22196; PWR6-NEXT: rotldi 3, 3, 62 22197; PWR6-NEXT: and 3, 3, 6 22198; PWR6-NEXT: lis 7, 3855 22199; PWR6-NEXT: and 5, 4, 6 22200; PWR6-NEXT: rotldi 4, 4, 62 22201; PWR6-NEXT: add 3, 8, 3 22202; PWR6-NEXT: lis 9, 257 22203; PWR6-NEXT: ori 7, 7, 3855 22204; PWR6-NEXT: and 4, 4, 6 22205; PWR6-NEXT: rldicl 6, 3, 60, 4 22206; PWR6-NEXT: ori 9, 9, 257 22207; PWR6-NEXT: rldimi 7, 7, 32, 0 22208; PWR6-NEXT: add 4, 5, 4 22209; PWR6-NEXT: add 3, 3, 6 22210; PWR6-NEXT: rldimi 9, 9, 32, 0 22211; PWR6-NEXT: rldicl 5, 4, 60, 4 22212; PWR6-NEXT: and 3, 3, 7 22213; PWR6-NEXT: add 4, 4, 5 22214; PWR6-NEXT: mulld 3, 3, 9 22215; PWR6-NEXT: and 4, 4, 7 22216; PWR6-NEXT: rldicl 3, 3, 8, 56 22217; PWR6-NEXT: li 5, 40 22218; PWR6-NEXT: mulld 4, 4, 9 22219; PWR6-NEXT: subc 6, 3, 5 22220; PWR6-NEXT: rldicl 4, 4, 8, 56 22221; PWR6-NEXT: subfe 3, 3, 3 22222; PWR6-NEXT: subc 5, 4, 5 22223; PWR6-NEXT: subfe 4, 4, 4 22224; PWR6-NEXT: blr 22225; 22226; PWR7-LABEL: ult_40_v2i64: 22227; PWR7: # %bb.0: 22228; PWR7-NEXT: addi 3, 1, -32 22229; PWR7-NEXT: li 5, -1 22230; PWR7-NEXT: stxvd2x 34, 0, 3 22231; PWR7-NEXT: ld 4, -24(1) 22232; PWR7-NEXT: ld 3, -32(1) 22233; PWR7-NEXT: popcntd 4, 4 22234; PWR7-NEXT: popcntd 3, 3 22235; PWR7-NEXT: cmpldi 4, 40 22236; PWR7-NEXT: li 4, 0 22237; PWR7-NEXT: isellt 6, 5, 4 22238; PWR7-NEXT: cmpldi 3, 40 22239; PWR7-NEXT: isellt 3, 5, 4 22240; PWR7-NEXT: std 6, -8(1) 22241; PWR7-NEXT: std 3, -16(1) 22242; PWR7-NEXT: addi 3, 1, -16 22243; PWR7-NEXT: lxvd2x 34, 0, 3 22244; PWR7-NEXT: blr 22245; 22246; PWR8-LABEL: ult_40_v2i64: 22247; PWR8: # %bb.0: 22248; PWR8-NEXT: addis 3, 2, .LCPI177_0@toc@ha 22249; PWR8-NEXT: vpopcntd 2, 2 22250; PWR8-NEXT: addi 3, 3, .LCPI177_0@toc@l 22251; PWR8-NEXT: lxvd2x 35, 0, 3 22252; PWR8-NEXT: vcmpgtud 2, 3, 2 22253; PWR8-NEXT: blr 22254; 22255; PWR9-LABEL: ult_40_v2i64: 22256; PWR9: # %bb.0: 22257; PWR9-NEXT: addis 3, 2, .LCPI177_0@toc@ha 22258; PWR9-NEXT: vpopcntd 2, 2 22259; PWR9-NEXT: addi 3, 3, .LCPI177_0@toc@l 22260; PWR9-NEXT: lxv 35, 0(3) 22261; PWR9-NEXT: vcmpgtud 2, 3, 2 22262; PWR9-NEXT: blr 22263 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22264 %3 = icmp ult <2 x i64> %2, <i64 40, i64 40> 22265 %4 = sext <2 x i1> %3 to <2 x i64> 22266 ret <2 x i64> %4 22267} 22268 22269define <2 x i64> @ugt_40_v2i64(<2 x i64> %0) { 22270; PWR5-LABEL: ugt_40_v2i64: 22271; PWR5: # %bb.0: 22272; PWR5-NEXT: lis 5, 21845 22273; PWR5-NEXT: lis 6, 13107 22274; PWR5-NEXT: ori 5, 5, 21845 22275; PWR5-NEXT: rotldi 8, 4, 63 22276; PWR5-NEXT: rotldi 9, 3, 63 22277; PWR5-NEXT: rldimi 5, 5, 32, 0 22278; PWR5-NEXT: and 8, 8, 5 22279; PWR5-NEXT: and 5, 9, 5 22280; PWR5-NEXT: ori 6, 6, 13107 22281; PWR5-NEXT: sub 3, 3, 5 22282; PWR5-NEXT: rldimi 6, 6, 32, 0 22283; PWR5-NEXT: sub 4, 4, 8 22284; PWR5-NEXT: and 8, 3, 6 22285; PWR5-NEXT: rotldi 3, 3, 62 22286; PWR5-NEXT: and 3, 3, 6 22287; PWR5-NEXT: lis 7, 3855 22288; PWR5-NEXT: and 5, 4, 6 22289; PWR5-NEXT: rotldi 4, 4, 62 22290; PWR5-NEXT: add 3, 8, 3 22291; PWR5-NEXT: lis 9, 257 22292; PWR5-NEXT: ori 7, 7, 3855 22293; PWR5-NEXT: and 4, 4, 6 22294; PWR5-NEXT: rldicl 6, 3, 60, 4 22295; PWR5-NEXT: ori 9, 9, 257 22296; PWR5-NEXT: rldimi 7, 7, 32, 0 22297; PWR5-NEXT: add 4, 5, 4 22298; PWR5-NEXT: add 3, 3, 6 22299; PWR5-NEXT: rldimi 9, 9, 32, 0 22300; PWR5-NEXT: rldicl 5, 4, 60, 4 22301; PWR5-NEXT: and 3, 3, 7 22302; PWR5-NEXT: add 4, 4, 5 22303; PWR5-NEXT: mulld 3, 3, 9 22304; PWR5-NEXT: and 4, 4, 7 22305; PWR5-NEXT: rldicl 3, 3, 8, 56 22306; PWR5-NEXT: mulld 4, 4, 9 22307; PWR5-NEXT: li 5, 40 22308; PWR5-NEXT: subfic 3, 3, 40 22309; PWR5-NEXT: rldicl 4, 4, 8, 56 22310; PWR5-NEXT: subfe 3, 5, 5 22311; PWR5-NEXT: subfic 4, 4, 40 22312; PWR5-NEXT: subfe 4, 5, 5 22313; PWR5-NEXT: blr 22314; 22315; PWR6-LABEL: ugt_40_v2i64: 22316; PWR6: # %bb.0: 22317; PWR6-NEXT: lis 5, 21845 22318; PWR6-NEXT: lis 6, 13107 22319; PWR6-NEXT: ori 5, 5, 21845 22320; PWR6-NEXT: rotldi 8, 4, 63 22321; PWR6-NEXT: rotldi 9, 3, 63 22322; PWR6-NEXT: rldimi 5, 5, 32, 0 22323; PWR6-NEXT: and 8, 8, 5 22324; PWR6-NEXT: and 5, 9, 5 22325; PWR6-NEXT: ori 6, 6, 13107 22326; PWR6-NEXT: sub 3, 3, 5 22327; PWR6-NEXT: rldimi 6, 6, 32, 0 22328; PWR6-NEXT: sub 4, 4, 8 22329; PWR6-NEXT: and 8, 3, 6 22330; PWR6-NEXT: rotldi 3, 3, 62 22331; PWR6-NEXT: and 3, 3, 6 22332; PWR6-NEXT: lis 7, 3855 22333; PWR6-NEXT: and 5, 4, 6 22334; PWR6-NEXT: rotldi 4, 4, 62 22335; PWR6-NEXT: add 3, 8, 3 22336; PWR6-NEXT: lis 9, 257 22337; PWR6-NEXT: ori 7, 7, 3855 22338; PWR6-NEXT: and 4, 4, 6 22339; PWR6-NEXT: rldicl 6, 3, 60, 4 22340; PWR6-NEXT: ori 9, 9, 257 22341; PWR6-NEXT: rldimi 7, 7, 32, 0 22342; PWR6-NEXT: add 4, 5, 4 22343; PWR6-NEXT: add 3, 3, 6 22344; PWR6-NEXT: rldimi 9, 9, 32, 0 22345; PWR6-NEXT: rldicl 5, 4, 60, 4 22346; PWR6-NEXT: and 3, 3, 7 22347; PWR6-NEXT: add 4, 4, 5 22348; PWR6-NEXT: mulld 3, 3, 9 22349; PWR6-NEXT: and 4, 4, 7 22350; PWR6-NEXT: rldicl 3, 3, 8, 56 22351; PWR6-NEXT: mulld 4, 4, 9 22352; PWR6-NEXT: li 5, 40 22353; PWR6-NEXT: subfic 3, 3, 40 22354; PWR6-NEXT: rldicl 4, 4, 8, 56 22355; PWR6-NEXT: subfe 3, 5, 5 22356; PWR6-NEXT: subfic 4, 4, 40 22357; PWR6-NEXT: subfe 4, 5, 5 22358; PWR6-NEXT: blr 22359; 22360; PWR7-LABEL: ugt_40_v2i64: 22361; PWR7: # %bb.0: 22362; PWR7-NEXT: addi 3, 1, -32 22363; PWR7-NEXT: li 5, -1 22364; PWR7-NEXT: stxvd2x 34, 0, 3 22365; PWR7-NEXT: ld 4, -24(1) 22366; PWR7-NEXT: ld 3, -32(1) 22367; PWR7-NEXT: popcntd 4, 4 22368; PWR7-NEXT: popcntd 3, 3 22369; PWR7-NEXT: cmpldi 4, 40 22370; PWR7-NEXT: li 4, 0 22371; PWR7-NEXT: iselgt 6, 5, 4 22372; PWR7-NEXT: cmpldi 3, 40 22373; PWR7-NEXT: iselgt 3, 5, 4 22374; PWR7-NEXT: std 6, -8(1) 22375; PWR7-NEXT: std 3, -16(1) 22376; PWR7-NEXT: addi 3, 1, -16 22377; PWR7-NEXT: lxvd2x 34, 0, 3 22378; PWR7-NEXT: blr 22379; 22380; PWR8-LABEL: ugt_40_v2i64: 22381; PWR8: # %bb.0: 22382; PWR8-NEXT: addis 3, 2, .LCPI178_0@toc@ha 22383; PWR8-NEXT: vpopcntd 2, 2 22384; PWR8-NEXT: addi 3, 3, .LCPI178_0@toc@l 22385; PWR8-NEXT: lxvd2x 35, 0, 3 22386; PWR8-NEXT: vcmpgtud 2, 2, 3 22387; PWR8-NEXT: blr 22388; 22389; PWR9-LABEL: ugt_40_v2i64: 22390; PWR9: # %bb.0: 22391; PWR9-NEXT: addis 3, 2, .LCPI178_0@toc@ha 22392; PWR9-NEXT: vpopcntd 2, 2 22393; PWR9-NEXT: addi 3, 3, .LCPI178_0@toc@l 22394; PWR9-NEXT: lxv 35, 0(3) 22395; PWR9-NEXT: vcmpgtud 2, 2, 3 22396; PWR9-NEXT: blr 22397 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22398 %3 = icmp ugt <2 x i64> %2, <i64 40, i64 40> 22399 %4 = sext <2 x i1> %3 to <2 x i64> 22400 ret <2 x i64> %4 22401} 22402 22403define <2 x i64> @ult_41_v2i64(<2 x i64> %0) { 22404; PWR5-LABEL: ult_41_v2i64: 22405; PWR5: # %bb.0: 22406; PWR5-NEXT: lis 5, 21845 22407; PWR5-NEXT: lis 6, 13107 22408; PWR5-NEXT: ori 5, 5, 21845 22409; PWR5-NEXT: rotldi 8, 4, 63 22410; PWR5-NEXT: rotldi 9, 3, 63 22411; PWR5-NEXT: rldimi 5, 5, 32, 0 22412; PWR5-NEXT: and 8, 8, 5 22413; PWR5-NEXT: and 5, 9, 5 22414; PWR5-NEXT: ori 6, 6, 13107 22415; PWR5-NEXT: sub 3, 3, 5 22416; PWR5-NEXT: rldimi 6, 6, 32, 0 22417; PWR5-NEXT: sub 4, 4, 8 22418; PWR5-NEXT: and 8, 3, 6 22419; PWR5-NEXT: rotldi 3, 3, 62 22420; PWR5-NEXT: and 3, 3, 6 22421; PWR5-NEXT: lis 7, 3855 22422; PWR5-NEXT: and 5, 4, 6 22423; PWR5-NEXT: rotldi 4, 4, 62 22424; PWR5-NEXT: add 3, 8, 3 22425; PWR5-NEXT: lis 9, 257 22426; PWR5-NEXT: ori 7, 7, 3855 22427; PWR5-NEXT: and 4, 4, 6 22428; PWR5-NEXT: rldicl 6, 3, 60, 4 22429; PWR5-NEXT: ori 9, 9, 257 22430; PWR5-NEXT: rldimi 7, 7, 32, 0 22431; PWR5-NEXT: add 4, 5, 4 22432; PWR5-NEXT: add 3, 3, 6 22433; PWR5-NEXT: rldimi 9, 9, 32, 0 22434; PWR5-NEXT: rldicl 5, 4, 60, 4 22435; PWR5-NEXT: and 3, 3, 7 22436; PWR5-NEXT: add 4, 4, 5 22437; PWR5-NEXT: mulld 3, 3, 9 22438; PWR5-NEXT: and 4, 4, 7 22439; PWR5-NEXT: rldicl 3, 3, 8, 56 22440; PWR5-NEXT: li 5, 41 22441; PWR5-NEXT: mulld 4, 4, 9 22442; PWR5-NEXT: subc 6, 3, 5 22443; PWR5-NEXT: rldicl 4, 4, 8, 56 22444; PWR5-NEXT: subfe 3, 3, 3 22445; PWR5-NEXT: subc 5, 4, 5 22446; PWR5-NEXT: subfe 4, 4, 4 22447; PWR5-NEXT: blr 22448; 22449; PWR6-LABEL: ult_41_v2i64: 22450; PWR6: # %bb.0: 22451; PWR6-NEXT: lis 5, 21845 22452; PWR6-NEXT: lis 6, 13107 22453; PWR6-NEXT: ori 5, 5, 21845 22454; PWR6-NEXT: rotldi 8, 4, 63 22455; PWR6-NEXT: rotldi 9, 3, 63 22456; PWR6-NEXT: rldimi 5, 5, 32, 0 22457; PWR6-NEXT: and 8, 8, 5 22458; PWR6-NEXT: and 5, 9, 5 22459; PWR6-NEXT: ori 6, 6, 13107 22460; PWR6-NEXT: sub 3, 3, 5 22461; PWR6-NEXT: rldimi 6, 6, 32, 0 22462; PWR6-NEXT: sub 4, 4, 8 22463; PWR6-NEXT: and 8, 3, 6 22464; PWR6-NEXT: rotldi 3, 3, 62 22465; PWR6-NEXT: and 3, 3, 6 22466; PWR6-NEXT: lis 7, 3855 22467; PWR6-NEXT: and 5, 4, 6 22468; PWR6-NEXT: rotldi 4, 4, 62 22469; PWR6-NEXT: add 3, 8, 3 22470; PWR6-NEXT: lis 9, 257 22471; PWR6-NEXT: ori 7, 7, 3855 22472; PWR6-NEXT: and 4, 4, 6 22473; PWR6-NEXT: rldicl 6, 3, 60, 4 22474; PWR6-NEXT: ori 9, 9, 257 22475; PWR6-NEXT: rldimi 7, 7, 32, 0 22476; PWR6-NEXT: add 4, 5, 4 22477; PWR6-NEXT: add 3, 3, 6 22478; PWR6-NEXT: rldimi 9, 9, 32, 0 22479; PWR6-NEXT: rldicl 5, 4, 60, 4 22480; PWR6-NEXT: and 3, 3, 7 22481; PWR6-NEXT: add 4, 4, 5 22482; PWR6-NEXT: mulld 3, 3, 9 22483; PWR6-NEXT: and 4, 4, 7 22484; PWR6-NEXT: rldicl 3, 3, 8, 56 22485; PWR6-NEXT: li 5, 41 22486; PWR6-NEXT: mulld 4, 4, 9 22487; PWR6-NEXT: subc 6, 3, 5 22488; PWR6-NEXT: rldicl 4, 4, 8, 56 22489; PWR6-NEXT: subfe 3, 3, 3 22490; PWR6-NEXT: subc 5, 4, 5 22491; PWR6-NEXT: subfe 4, 4, 4 22492; PWR6-NEXT: blr 22493; 22494; PWR7-LABEL: ult_41_v2i64: 22495; PWR7: # %bb.0: 22496; PWR7-NEXT: addi 3, 1, -32 22497; PWR7-NEXT: li 5, -1 22498; PWR7-NEXT: stxvd2x 34, 0, 3 22499; PWR7-NEXT: ld 4, -24(1) 22500; PWR7-NEXT: ld 3, -32(1) 22501; PWR7-NEXT: popcntd 4, 4 22502; PWR7-NEXT: popcntd 3, 3 22503; PWR7-NEXT: cmpldi 4, 41 22504; PWR7-NEXT: li 4, 0 22505; PWR7-NEXT: isellt 6, 5, 4 22506; PWR7-NEXT: cmpldi 3, 41 22507; PWR7-NEXT: isellt 3, 5, 4 22508; PWR7-NEXT: std 6, -8(1) 22509; PWR7-NEXT: std 3, -16(1) 22510; PWR7-NEXT: addi 3, 1, -16 22511; PWR7-NEXT: lxvd2x 34, 0, 3 22512; PWR7-NEXT: blr 22513; 22514; PWR8-LABEL: ult_41_v2i64: 22515; PWR8: # %bb.0: 22516; PWR8-NEXT: addis 3, 2, .LCPI179_0@toc@ha 22517; PWR8-NEXT: vpopcntd 2, 2 22518; PWR8-NEXT: addi 3, 3, .LCPI179_0@toc@l 22519; PWR8-NEXT: lxvd2x 35, 0, 3 22520; PWR8-NEXT: vcmpgtud 2, 3, 2 22521; PWR8-NEXT: blr 22522; 22523; PWR9-LABEL: ult_41_v2i64: 22524; PWR9: # %bb.0: 22525; PWR9-NEXT: addis 3, 2, .LCPI179_0@toc@ha 22526; PWR9-NEXT: vpopcntd 2, 2 22527; PWR9-NEXT: addi 3, 3, .LCPI179_0@toc@l 22528; PWR9-NEXT: lxv 35, 0(3) 22529; PWR9-NEXT: vcmpgtud 2, 3, 2 22530; PWR9-NEXT: blr 22531 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22532 %3 = icmp ult <2 x i64> %2, <i64 41, i64 41> 22533 %4 = sext <2 x i1> %3 to <2 x i64> 22534 ret <2 x i64> %4 22535} 22536 22537define <2 x i64> @ugt_41_v2i64(<2 x i64> %0) { 22538; PWR5-LABEL: ugt_41_v2i64: 22539; PWR5: # %bb.0: 22540; PWR5-NEXT: lis 5, 21845 22541; PWR5-NEXT: lis 6, 13107 22542; PWR5-NEXT: ori 5, 5, 21845 22543; PWR5-NEXT: rotldi 8, 4, 63 22544; PWR5-NEXT: rotldi 9, 3, 63 22545; PWR5-NEXT: rldimi 5, 5, 32, 0 22546; PWR5-NEXT: and 8, 8, 5 22547; PWR5-NEXT: and 5, 9, 5 22548; PWR5-NEXT: ori 6, 6, 13107 22549; PWR5-NEXT: sub 3, 3, 5 22550; PWR5-NEXT: rldimi 6, 6, 32, 0 22551; PWR5-NEXT: sub 4, 4, 8 22552; PWR5-NEXT: and 8, 3, 6 22553; PWR5-NEXT: rotldi 3, 3, 62 22554; PWR5-NEXT: and 3, 3, 6 22555; PWR5-NEXT: lis 7, 3855 22556; PWR5-NEXT: and 5, 4, 6 22557; PWR5-NEXT: rotldi 4, 4, 62 22558; PWR5-NEXT: add 3, 8, 3 22559; PWR5-NEXT: lis 9, 257 22560; PWR5-NEXT: ori 7, 7, 3855 22561; PWR5-NEXT: and 4, 4, 6 22562; PWR5-NEXT: rldicl 6, 3, 60, 4 22563; PWR5-NEXT: ori 9, 9, 257 22564; PWR5-NEXT: rldimi 7, 7, 32, 0 22565; PWR5-NEXT: add 4, 5, 4 22566; PWR5-NEXT: add 3, 3, 6 22567; PWR5-NEXT: rldimi 9, 9, 32, 0 22568; PWR5-NEXT: rldicl 5, 4, 60, 4 22569; PWR5-NEXT: and 3, 3, 7 22570; PWR5-NEXT: add 4, 4, 5 22571; PWR5-NEXT: mulld 3, 3, 9 22572; PWR5-NEXT: and 4, 4, 7 22573; PWR5-NEXT: rldicl 3, 3, 8, 56 22574; PWR5-NEXT: mulld 4, 4, 9 22575; PWR5-NEXT: li 5, 41 22576; PWR5-NEXT: subfic 3, 3, 41 22577; PWR5-NEXT: rldicl 4, 4, 8, 56 22578; PWR5-NEXT: subfe 3, 5, 5 22579; PWR5-NEXT: subfic 4, 4, 41 22580; PWR5-NEXT: subfe 4, 5, 5 22581; PWR5-NEXT: blr 22582; 22583; PWR6-LABEL: ugt_41_v2i64: 22584; PWR6: # %bb.0: 22585; PWR6-NEXT: lis 5, 21845 22586; PWR6-NEXT: lis 6, 13107 22587; PWR6-NEXT: ori 5, 5, 21845 22588; PWR6-NEXT: rotldi 8, 4, 63 22589; PWR6-NEXT: rotldi 9, 3, 63 22590; PWR6-NEXT: rldimi 5, 5, 32, 0 22591; PWR6-NEXT: and 8, 8, 5 22592; PWR6-NEXT: and 5, 9, 5 22593; PWR6-NEXT: ori 6, 6, 13107 22594; PWR6-NEXT: sub 3, 3, 5 22595; PWR6-NEXT: rldimi 6, 6, 32, 0 22596; PWR6-NEXT: sub 4, 4, 8 22597; PWR6-NEXT: and 8, 3, 6 22598; PWR6-NEXT: rotldi 3, 3, 62 22599; PWR6-NEXT: and 3, 3, 6 22600; PWR6-NEXT: lis 7, 3855 22601; PWR6-NEXT: and 5, 4, 6 22602; PWR6-NEXT: rotldi 4, 4, 62 22603; PWR6-NEXT: add 3, 8, 3 22604; PWR6-NEXT: lis 9, 257 22605; PWR6-NEXT: ori 7, 7, 3855 22606; PWR6-NEXT: and 4, 4, 6 22607; PWR6-NEXT: rldicl 6, 3, 60, 4 22608; PWR6-NEXT: ori 9, 9, 257 22609; PWR6-NEXT: rldimi 7, 7, 32, 0 22610; PWR6-NEXT: add 4, 5, 4 22611; PWR6-NEXT: add 3, 3, 6 22612; PWR6-NEXT: rldimi 9, 9, 32, 0 22613; PWR6-NEXT: rldicl 5, 4, 60, 4 22614; PWR6-NEXT: and 3, 3, 7 22615; PWR6-NEXT: add 4, 4, 5 22616; PWR6-NEXT: mulld 3, 3, 9 22617; PWR6-NEXT: and 4, 4, 7 22618; PWR6-NEXT: rldicl 3, 3, 8, 56 22619; PWR6-NEXT: mulld 4, 4, 9 22620; PWR6-NEXT: li 5, 41 22621; PWR6-NEXT: subfic 3, 3, 41 22622; PWR6-NEXT: rldicl 4, 4, 8, 56 22623; PWR6-NEXT: subfe 3, 5, 5 22624; PWR6-NEXT: subfic 4, 4, 41 22625; PWR6-NEXT: subfe 4, 5, 5 22626; PWR6-NEXT: blr 22627; 22628; PWR7-LABEL: ugt_41_v2i64: 22629; PWR7: # %bb.0: 22630; PWR7-NEXT: addi 3, 1, -32 22631; PWR7-NEXT: li 5, -1 22632; PWR7-NEXT: stxvd2x 34, 0, 3 22633; PWR7-NEXT: ld 4, -24(1) 22634; PWR7-NEXT: ld 3, -32(1) 22635; PWR7-NEXT: popcntd 4, 4 22636; PWR7-NEXT: popcntd 3, 3 22637; PWR7-NEXT: cmpldi 4, 41 22638; PWR7-NEXT: li 4, 0 22639; PWR7-NEXT: iselgt 6, 5, 4 22640; PWR7-NEXT: cmpldi 3, 41 22641; PWR7-NEXT: iselgt 3, 5, 4 22642; PWR7-NEXT: std 6, -8(1) 22643; PWR7-NEXT: std 3, -16(1) 22644; PWR7-NEXT: addi 3, 1, -16 22645; PWR7-NEXT: lxvd2x 34, 0, 3 22646; PWR7-NEXT: blr 22647; 22648; PWR8-LABEL: ugt_41_v2i64: 22649; PWR8: # %bb.0: 22650; PWR8-NEXT: addis 3, 2, .LCPI180_0@toc@ha 22651; PWR8-NEXT: vpopcntd 2, 2 22652; PWR8-NEXT: addi 3, 3, .LCPI180_0@toc@l 22653; PWR8-NEXT: lxvd2x 35, 0, 3 22654; PWR8-NEXT: vcmpgtud 2, 2, 3 22655; PWR8-NEXT: blr 22656; 22657; PWR9-LABEL: ugt_41_v2i64: 22658; PWR9: # %bb.0: 22659; PWR9-NEXT: addis 3, 2, .LCPI180_0@toc@ha 22660; PWR9-NEXT: vpopcntd 2, 2 22661; PWR9-NEXT: addi 3, 3, .LCPI180_0@toc@l 22662; PWR9-NEXT: lxv 35, 0(3) 22663; PWR9-NEXT: vcmpgtud 2, 2, 3 22664; PWR9-NEXT: blr 22665 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22666 %3 = icmp ugt <2 x i64> %2, <i64 41, i64 41> 22667 %4 = sext <2 x i1> %3 to <2 x i64> 22668 ret <2 x i64> %4 22669} 22670 22671define <2 x i64> @ult_42_v2i64(<2 x i64> %0) { 22672; PWR5-LABEL: ult_42_v2i64: 22673; PWR5: # %bb.0: 22674; PWR5-NEXT: lis 5, 21845 22675; PWR5-NEXT: lis 6, 13107 22676; PWR5-NEXT: ori 5, 5, 21845 22677; PWR5-NEXT: rotldi 8, 4, 63 22678; PWR5-NEXT: rotldi 9, 3, 63 22679; PWR5-NEXT: rldimi 5, 5, 32, 0 22680; PWR5-NEXT: and 8, 8, 5 22681; PWR5-NEXT: and 5, 9, 5 22682; PWR5-NEXT: ori 6, 6, 13107 22683; PWR5-NEXT: sub 3, 3, 5 22684; PWR5-NEXT: rldimi 6, 6, 32, 0 22685; PWR5-NEXT: sub 4, 4, 8 22686; PWR5-NEXT: and 8, 3, 6 22687; PWR5-NEXT: rotldi 3, 3, 62 22688; PWR5-NEXT: and 3, 3, 6 22689; PWR5-NEXT: lis 7, 3855 22690; PWR5-NEXT: and 5, 4, 6 22691; PWR5-NEXT: rotldi 4, 4, 62 22692; PWR5-NEXT: add 3, 8, 3 22693; PWR5-NEXT: lis 9, 257 22694; PWR5-NEXT: ori 7, 7, 3855 22695; PWR5-NEXT: and 4, 4, 6 22696; PWR5-NEXT: rldicl 6, 3, 60, 4 22697; PWR5-NEXT: ori 9, 9, 257 22698; PWR5-NEXT: rldimi 7, 7, 32, 0 22699; PWR5-NEXT: add 4, 5, 4 22700; PWR5-NEXT: add 3, 3, 6 22701; PWR5-NEXT: rldimi 9, 9, 32, 0 22702; PWR5-NEXT: rldicl 5, 4, 60, 4 22703; PWR5-NEXT: and 3, 3, 7 22704; PWR5-NEXT: add 4, 4, 5 22705; PWR5-NEXT: mulld 3, 3, 9 22706; PWR5-NEXT: and 4, 4, 7 22707; PWR5-NEXT: rldicl 3, 3, 8, 56 22708; PWR5-NEXT: li 5, 42 22709; PWR5-NEXT: mulld 4, 4, 9 22710; PWR5-NEXT: subc 6, 3, 5 22711; PWR5-NEXT: rldicl 4, 4, 8, 56 22712; PWR5-NEXT: subfe 3, 3, 3 22713; PWR5-NEXT: subc 5, 4, 5 22714; PWR5-NEXT: subfe 4, 4, 4 22715; PWR5-NEXT: blr 22716; 22717; PWR6-LABEL: ult_42_v2i64: 22718; PWR6: # %bb.0: 22719; PWR6-NEXT: lis 5, 21845 22720; PWR6-NEXT: lis 6, 13107 22721; PWR6-NEXT: ori 5, 5, 21845 22722; PWR6-NEXT: rotldi 8, 4, 63 22723; PWR6-NEXT: rotldi 9, 3, 63 22724; PWR6-NEXT: rldimi 5, 5, 32, 0 22725; PWR6-NEXT: and 8, 8, 5 22726; PWR6-NEXT: and 5, 9, 5 22727; PWR6-NEXT: ori 6, 6, 13107 22728; PWR6-NEXT: sub 3, 3, 5 22729; PWR6-NEXT: rldimi 6, 6, 32, 0 22730; PWR6-NEXT: sub 4, 4, 8 22731; PWR6-NEXT: and 8, 3, 6 22732; PWR6-NEXT: rotldi 3, 3, 62 22733; PWR6-NEXT: and 3, 3, 6 22734; PWR6-NEXT: lis 7, 3855 22735; PWR6-NEXT: and 5, 4, 6 22736; PWR6-NEXT: rotldi 4, 4, 62 22737; PWR6-NEXT: add 3, 8, 3 22738; PWR6-NEXT: lis 9, 257 22739; PWR6-NEXT: ori 7, 7, 3855 22740; PWR6-NEXT: and 4, 4, 6 22741; PWR6-NEXT: rldicl 6, 3, 60, 4 22742; PWR6-NEXT: ori 9, 9, 257 22743; PWR6-NEXT: rldimi 7, 7, 32, 0 22744; PWR6-NEXT: add 4, 5, 4 22745; PWR6-NEXT: add 3, 3, 6 22746; PWR6-NEXT: rldimi 9, 9, 32, 0 22747; PWR6-NEXT: rldicl 5, 4, 60, 4 22748; PWR6-NEXT: and 3, 3, 7 22749; PWR6-NEXT: add 4, 4, 5 22750; PWR6-NEXT: mulld 3, 3, 9 22751; PWR6-NEXT: and 4, 4, 7 22752; PWR6-NEXT: rldicl 3, 3, 8, 56 22753; PWR6-NEXT: li 5, 42 22754; PWR6-NEXT: mulld 4, 4, 9 22755; PWR6-NEXT: subc 6, 3, 5 22756; PWR6-NEXT: rldicl 4, 4, 8, 56 22757; PWR6-NEXT: subfe 3, 3, 3 22758; PWR6-NEXT: subc 5, 4, 5 22759; PWR6-NEXT: subfe 4, 4, 4 22760; PWR6-NEXT: blr 22761; 22762; PWR7-LABEL: ult_42_v2i64: 22763; PWR7: # %bb.0: 22764; PWR7-NEXT: addi 3, 1, -32 22765; PWR7-NEXT: li 5, -1 22766; PWR7-NEXT: stxvd2x 34, 0, 3 22767; PWR7-NEXT: ld 4, -24(1) 22768; PWR7-NEXT: ld 3, -32(1) 22769; PWR7-NEXT: popcntd 4, 4 22770; PWR7-NEXT: popcntd 3, 3 22771; PWR7-NEXT: cmpldi 4, 42 22772; PWR7-NEXT: li 4, 0 22773; PWR7-NEXT: isellt 6, 5, 4 22774; PWR7-NEXT: cmpldi 3, 42 22775; PWR7-NEXT: isellt 3, 5, 4 22776; PWR7-NEXT: std 6, -8(1) 22777; PWR7-NEXT: std 3, -16(1) 22778; PWR7-NEXT: addi 3, 1, -16 22779; PWR7-NEXT: lxvd2x 34, 0, 3 22780; PWR7-NEXT: blr 22781; 22782; PWR8-LABEL: ult_42_v2i64: 22783; PWR8: # %bb.0: 22784; PWR8-NEXT: addis 3, 2, .LCPI181_0@toc@ha 22785; PWR8-NEXT: vpopcntd 2, 2 22786; PWR8-NEXT: addi 3, 3, .LCPI181_0@toc@l 22787; PWR8-NEXT: lxvd2x 35, 0, 3 22788; PWR8-NEXT: vcmpgtud 2, 3, 2 22789; PWR8-NEXT: blr 22790; 22791; PWR9-LABEL: ult_42_v2i64: 22792; PWR9: # %bb.0: 22793; PWR9-NEXT: addis 3, 2, .LCPI181_0@toc@ha 22794; PWR9-NEXT: vpopcntd 2, 2 22795; PWR9-NEXT: addi 3, 3, .LCPI181_0@toc@l 22796; PWR9-NEXT: lxv 35, 0(3) 22797; PWR9-NEXT: vcmpgtud 2, 3, 2 22798; PWR9-NEXT: blr 22799 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22800 %3 = icmp ult <2 x i64> %2, <i64 42, i64 42> 22801 %4 = sext <2 x i1> %3 to <2 x i64> 22802 ret <2 x i64> %4 22803} 22804 22805define <2 x i64> @ugt_42_v2i64(<2 x i64> %0) { 22806; PWR5-LABEL: ugt_42_v2i64: 22807; PWR5: # %bb.0: 22808; PWR5-NEXT: lis 5, 21845 22809; PWR5-NEXT: lis 6, 13107 22810; PWR5-NEXT: ori 5, 5, 21845 22811; PWR5-NEXT: rotldi 8, 4, 63 22812; PWR5-NEXT: rotldi 9, 3, 63 22813; PWR5-NEXT: rldimi 5, 5, 32, 0 22814; PWR5-NEXT: and 8, 8, 5 22815; PWR5-NEXT: and 5, 9, 5 22816; PWR5-NEXT: ori 6, 6, 13107 22817; PWR5-NEXT: sub 3, 3, 5 22818; PWR5-NEXT: rldimi 6, 6, 32, 0 22819; PWR5-NEXT: sub 4, 4, 8 22820; PWR5-NEXT: and 8, 3, 6 22821; PWR5-NEXT: rotldi 3, 3, 62 22822; PWR5-NEXT: and 3, 3, 6 22823; PWR5-NEXT: lis 7, 3855 22824; PWR5-NEXT: and 5, 4, 6 22825; PWR5-NEXT: rotldi 4, 4, 62 22826; PWR5-NEXT: add 3, 8, 3 22827; PWR5-NEXT: lis 9, 257 22828; PWR5-NEXT: ori 7, 7, 3855 22829; PWR5-NEXT: and 4, 4, 6 22830; PWR5-NEXT: rldicl 6, 3, 60, 4 22831; PWR5-NEXT: ori 9, 9, 257 22832; PWR5-NEXT: rldimi 7, 7, 32, 0 22833; PWR5-NEXT: add 4, 5, 4 22834; PWR5-NEXT: add 3, 3, 6 22835; PWR5-NEXT: rldimi 9, 9, 32, 0 22836; PWR5-NEXT: rldicl 5, 4, 60, 4 22837; PWR5-NEXT: and 3, 3, 7 22838; PWR5-NEXT: add 4, 4, 5 22839; PWR5-NEXT: mulld 3, 3, 9 22840; PWR5-NEXT: and 4, 4, 7 22841; PWR5-NEXT: rldicl 3, 3, 8, 56 22842; PWR5-NEXT: mulld 4, 4, 9 22843; PWR5-NEXT: li 5, 42 22844; PWR5-NEXT: subfic 3, 3, 42 22845; PWR5-NEXT: rldicl 4, 4, 8, 56 22846; PWR5-NEXT: subfe 3, 5, 5 22847; PWR5-NEXT: subfic 4, 4, 42 22848; PWR5-NEXT: subfe 4, 5, 5 22849; PWR5-NEXT: blr 22850; 22851; PWR6-LABEL: ugt_42_v2i64: 22852; PWR6: # %bb.0: 22853; PWR6-NEXT: lis 5, 21845 22854; PWR6-NEXT: lis 6, 13107 22855; PWR6-NEXT: ori 5, 5, 21845 22856; PWR6-NEXT: rotldi 8, 4, 63 22857; PWR6-NEXT: rotldi 9, 3, 63 22858; PWR6-NEXT: rldimi 5, 5, 32, 0 22859; PWR6-NEXT: and 8, 8, 5 22860; PWR6-NEXT: and 5, 9, 5 22861; PWR6-NEXT: ori 6, 6, 13107 22862; PWR6-NEXT: sub 3, 3, 5 22863; PWR6-NEXT: rldimi 6, 6, 32, 0 22864; PWR6-NEXT: sub 4, 4, 8 22865; PWR6-NEXT: and 8, 3, 6 22866; PWR6-NEXT: rotldi 3, 3, 62 22867; PWR6-NEXT: and 3, 3, 6 22868; PWR6-NEXT: lis 7, 3855 22869; PWR6-NEXT: and 5, 4, 6 22870; PWR6-NEXT: rotldi 4, 4, 62 22871; PWR6-NEXT: add 3, 8, 3 22872; PWR6-NEXT: lis 9, 257 22873; PWR6-NEXT: ori 7, 7, 3855 22874; PWR6-NEXT: and 4, 4, 6 22875; PWR6-NEXT: rldicl 6, 3, 60, 4 22876; PWR6-NEXT: ori 9, 9, 257 22877; PWR6-NEXT: rldimi 7, 7, 32, 0 22878; PWR6-NEXT: add 4, 5, 4 22879; PWR6-NEXT: add 3, 3, 6 22880; PWR6-NEXT: rldimi 9, 9, 32, 0 22881; PWR6-NEXT: rldicl 5, 4, 60, 4 22882; PWR6-NEXT: and 3, 3, 7 22883; PWR6-NEXT: add 4, 4, 5 22884; PWR6-NEXT: mulld 3, 3, 9 22885; PWR6-NEXT: and 4, 4, 7 22886; PWR6-NEXT: rldicl 3, 3, 8, 56 22887; PWR6-NEXT: mulld 4, 4, 9 22888; PWR6-NEXT: li 5, 42 22889; PWR6-NEXT: subfic 3, 3, 42 22890; PWR6-NEXT: rldicl 4, 4, 8, 56 22891; PWR6-NEXT: subfe 3, 5, 5 22892; PWR6-NEXT: subfic 4, 4, 42 22893; PWR6-NEXT: subfe 4, 5, 5 22894; PWR6-NEXT: blr 22895; 22896; PWR7-LABEL: ugt_42_v2i64: 22897; PWR7: # %bb.0: 22898; PWR7-NEXT: addi 3, 1, -32 22899; PWR7-NEXT: li 5, -1 22900; PWR7-NEXT: stxvd2x 34, 0, 3 22901; PWR7-NEXT: ld 4, -24(1) 22902; PWR7-NEXT: ld 3, -32(1) 22903; PWR7-NEXT: popcntd 4, 4 22904; PWR7-NEXT: popcntd 3, 3 22905; PWR7-NEXT: cmpldi 4, 42 22906; PWR7-NEXT: li 4, 0 22907; PWR7-NEXT: iselgt 6, 5, 4 22908; PWR7-NEXT: cmpldi 3, 42 22909; PWR7-NEXT: iselgt 3, 5, 4 22910; PWR7-NEXT: std 6, -8(1) 22911; PWR7-NEXT: std 3, -16(1) 22912; PWR7-NEXT: addi 3, 1, -16 22913; PWR7-NEXT: lxvd2x 34, 0, 3 22914; PWR7-NEXT: blr 22915; 22916; PWR8-LABEL: ugt_42_v2i64: 22917; PWR8: # %bb.0: 22918; PWR8-NEXT: addis 3, 2, .LCPI182_0@toc@ha 22919; PWR8-NEXT: vpopcntd 2, 2 22920; PWR8-NEXT: addi 3, 3, .LCPI182_0@toc@l 22921; PWR8-NEXT: lxvd2x 35, 0, 3 22922; PWR8-NEXT: vcmpgtud 2, 2, 3 22923; PWR8-NEXT: blr 22924; 22925; PWR9-LABEL: ugt_42_v2i64: 22926; PWR9: # %bb.0: 22927; PWR9-NEXT: addis 3, 2, .LCPI182_0@toc@ha 22928; PWR9-NEXT: vpopcntd 2, 2 22929; PWR9-NEXT: addi 3, 3, .LCPI182_0@toc@l 22930; PWR9-NEXT: lxv 35, 0(3) 22931; PWR9-NEXT: vcmpgtud 2, 2, 3 22932; PWR9-NEXT: blr 22933 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 22934 %3 = icmp ugt <2 x i64> %2, <i64 42, i64 42> 22935 %4 = sext <2 x i1> %3 to <2 x i64> 22936 ret <2 x i64> %4 22937} 22938 22939define <2 x i64> @ult_43_v2i64(<2 x i64> %0) { 22940; PWR5-LABEL: ult_43_v2i64: 22941; PWR5: # %bb.0: 22942; PWR5-NEXT: lis 5, 21845 22943; PWR5-NEXT: lis 6, 13107 22944; PWR5-NEXT: ori 5, 5, 21845 22945; PWR5-NEXT: rotldi 8, 4, 63 22946; PWR5-NEXT: rotldi 9, 3, 63 22947; PWR5-NEXT: rldimi 5, 5, 32, 0 22948; PWR5-NEXT: and 8, 8, 5 22949; PWR5-NEXT: and 5, 9, 5 22950; PWR5-NEXT: ori 6, 6, 13107 22951; PWR5-NEXT: sub 3, 3, 5 22952; PWR5-NEXT: rldimi 6, 6, 32, 0 22953; PWR5-NEXT: sub 4, 4, 8 22954; PWR5-NEXT: and 8, 3, 6 22955; PWR5-NEXT: rotldi 3, 3, 62 22956; PWR5-NEXT: and 3, 3, 6 22957; PWR5-NEXT: lis 7, 3855 22958; PWR5-NEXT: and 5, 4, 6 22959; PWR5-NEXT: rotldi 4, 4, 62 22960; PWR5-NEXT: add 3, 8, 3 22961; PWR5-NEXT: lis 9, 257 22962; PWR5-NEXT: ori 7, 7, 3855 22963; PWR5-NEXT: and 4, 4, 6 22964; PWR5-NEXT: rldicl 6, 3, 60, 4 22965; PWR5-NEXT: ori 9, 9, 257 22966; PWR5-NEXT: rldimi 7, 7, 32, 0 22967; PWR5-NEXT: add 4, 5, 4 22968; PWR5-NEXT: add 3, 3, 6 22969; PWR5-NEXT: rldimi 9, 9, 32, 0 22970; PWR5-NEXT: rldicl 5, 4, 60, 4 22971; PWR5-NEXT: and 3, 3, 7 22972; PWR5-NEXT: add 4, 4, 5 22973; PWR5-NEXT: mulld 3, 3, 9 22974; PWR5-NEXT: and 4, 4, 7 22975; PWR5-NEXT: rldicl 3, 3, 8, 56 22976; PWR5-NEXT: li 5, 43 22977; PWR5-NEXT: mulld 4, 4, 9 22978; PWR5-NEXT: subc 6, 3, 5 22979; PWR5-NEXT: rldicl 4, 4, 8, 56 22980; PWR5-NEXT: subfe 3, 3, 3 22981; PWR5-NEXT: subc 5, 4, 5 22982; PWR5-NEXT: subfe 4, 4, 4 22983; PWR5-NEXT: blr 22984; 22985; PWR6-LABEL: ult_43_v2i64: 22986; PWR6: # %bb.0: 22987; PWR6-NEXT: lis 5, 21845 22988; PWR6-NEXT: lis 6, 13107 22989; PWR6-NEXT: ori 5, 5, 21845 22990; PWR6-NEXT: rotldi 8, 4, 63 22991; PWR6-NEXT: rotldi 9, 3, 63 22992; PWR6-NEXT: rldimi 5, 5, 32, 0 22993; PWR6-NEXT: and 8, 8, 5 22994; PWR6-NEXT: and 5, 9, 5 22995; PWR6-NEXT: ori 6, 6, 13107 22996; PWR6-NEXT: sub 3, 3, 5 22997; PWR6-NEXT: rldimi 6, 6, 32, 0 22998; PWR6-NEXT: sub 4, 4, 8 22999; PWR6-NEXT: and 8, 3, 6 23000; PWR6-NEXT: rotldi 3, 3, 62 23001; PWR6-NEXT: and 3, 3, 6 23002; PWR6-NEXT: lis 7, 3855 23003; PWR6-NEXT: and 5, 4, 6 23004; PWR6-NEXT: rotldi 4, 4, 62 23005; PWR6-NEXT: add 3, 8, 3 23006; PWR6-NEXT: lis 9, 257 23007; PWR6-NEXT: ori 7, 7, 3855 23008; PWR6-NEXT: and 4, 4, 6 23009; PWR6-NEXT: rldicl 6, 3, 60, 4 23010; PWR6-NEXT: ori 9, 9, 257 23011; PWR6-NEXT: rldimi 7, 7, 32, 0 23012; PWR6-NEXT: add 4, 5, 4 23013; PWR6-NEXT: add 3, 3, 6 23014; PWR6-NEXT: rldimi 9, 9, 32, 0 23015; PWR6-NEXT: rldicl 5, 4, 60, 4 23016; PWR6-NEXT: and 3, 3, 7 23017; PWR6-NEXT: add 4, 4, 5 23018; PWR6-NEXT: mulld 3, 3, 9 23019; PWR6-NEXT: and 4, 4, 7 23020; PWR6-NEXT: rldicl 3, 3, 8, 56 23021; PWR6-NEXT: li 5, 43 23022; PWR6-NEXT: mulld 4, 4, 9 23023; PWR6-NEXT: subc 6, 3, 5 23024; PWR6-NEXT: rldicl 4, 4, 8, 56 23025; PWR6-NEXT: subfe 3, 3, 3 23026; PWR6-NEXT: subc 5, 4, 5 23027; PWR6-NEXT: subfe 4, 4, 4 23028; PWR6-NEXT: blr 23029; 23030; PWR7-LABEL: ult_43_v2i64: 23031; PWR7: # %bb.0: 23032; PWR7-NEXT: addi 3, 1, -32 23033; PWR7-NEXT: li 5, -1 23034; PWR7-NEXT: stxvd2x 34, 0, 3 23035; PWR7-NEXT: ld 4, -24(1) 23036; PWR7-NEXT: ld 3, -32(1) 23037; PWR7-NEXT: popcntd 4, 4 23038; PWR7-NEXT: popcntd 3, 3 23039; PWR7-NEXT: cmpldi 4, 43 23040; PWR7-NEXT: li 4, 0 23041; PWR7-NEXT: isellt 6, 5, 4 23042; PWR7-NEXT: cmpldi 3, 43 23043; PWR7-NEXT: isellt 3, 5, 4 23044; PWR7-NEXT: std 6, -8(1) 23045; PWR7-NEXT: std 3, -16(1) 23046; PWR7-NEXT: addi 3, 1, -16 23047; PWR7-NEXT: lxvd2x 34, 0, 3 23048; PWR7-NEXT: blr 23049; 23050; PWR8-LABEL: ult_43_v2i64: 23051; PWR8: # %bb.0: 23052; PWR8-NEXT: addis 3, 2, .LCPI183_0@toc@ha 23053; PWR8-NEXT: vpopcntd 2, 2 23054; PWR8-NEXT: addi 3, 3, .LCPI183_0@toc@l 23055; PWR8-NEXT: lxvd2x 35, 0, 3 23056; PWR8-NEXT: vcmpgtud 2, 3, 2 23057; PWR8-NEXT: blr 23058; 23059; PWR9-LABEL: ult_43_v2i64: 23060; PWR9: # %bb.0: 23061; PWR9-NEXT: addis 3, 2, .LCPI183_0@toc@ha 23062; PWR9-NEXT: vpopcntd 2, 2 23063; PWR9-NEXT: addi 3, 3, .LCPI183_0@toc@l 23064; PWR9-NEXT: lxv 35, 0(3) 23065; PWR9-NEXT: vcmpgtud 2, 3, 2 23066; PWR9-NEXT: blr 23067 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23068 %3 = icmp ult <2 x i64> %2, <i64 43, i64 43> 23069 %4 = sext <2 x i1> %3 to <2 x i64> 23070 ret <2 x i64> %4 23071} 23072 23073define <2 x i64> @ugt_43_v2i64(<2 x i64> %0) { 23074; PWR5-LABEL: ugt_43_v2i64: 23075; PWR5: # %bb.0: 23076; PWR5-NEXT: lis 5, 21845 23077; PWR5-NEXT: lis 6, 13107 23078; PWR5-NEXT: ori 5, 5, 21845 23079; PWR5-NEXT: rotldi 8, 4, 63 23080; PWR5-NEXT: rotldi 9, 3, 63 23081; PWR5-NEXT: rldimi 5, 5, 32, 0 23082; PWR5-NEXT: and 8, 8, 5 23083; PWR5-NEXT: and 5, 9, 5 23084; PWR5-NEXT: ori 6, 6, 13107 23085; PWR5-NEXT: sub 3, 3, 5 23086; PWR5-NEXT: rldimi 6, 6, 32, 0 23087; PWR5-NEXT: sub 4, 4, 8 23088; PWR5-NEXT: and 8, 3, 6 23089; PWR5-NEXT: rotldi 3, 3, 62 23090; PWR5-NEXT: and 3, 3, 6 23091; PWR5-NEXT: lis 7, 3855 23092; PWR5-NEXT: and 5, 4, 6 23093; PWR5-NEXT: rotldi 4, 4, 62 23094; PWR5-NEXT: add 3, 8, 3 23095; PWR5-NEXT: lis 9, 257 23096; PWR5-NEXT: ori 7, 7, 3855 23097; PWR5-NEXT: and 4, 4, 6 23098; PWR5-NEXT: rldicl 6, 3, 60, 4 23099; PWR5-NEXT: ori 9, 9, 257 23100; PWR5-NEXT: rldimi 7, 7, 32, 0 23101; PWR5-NEXT: add 4, 5, 4 23102; PWR5-NEXT: add 3, 3, 6 23103; PWR5-NEXT: rldimi 9, 9, 32, 0 23104; PWR5-NEXT: rldicl 5, 4, 60, 4 23105; PWR5-NEXT: and 3, 3, 7 23106; PWR5-NEXT: add 4, 4, 5 23107; PWR5-NEXT: mulld 3, 3, 9 23108; PWR5-NEXT: and 4, 4, 7 23109; PWR5-NEXT: rldicl 3, 3, 8, 56 23110; PWR5-NEXT: mulld 4, 4, 9 23111; PWR5-NEXT: li 5, 43 23112; PWR5-NEXT: subfic 3, 3, 43 23113; PWR5-NEXT: rldicl 4, 4, 8, 56 23114; PWR5-NEXT: subfe 3, 5, 5 23115; PWR5-NEXT: subfic 4, 4, 43 23116; PWR5-NEXT: subfe 4, 5, 5 23117; PWR5-NEXT: blr 23118; 23119; PWR6-LABEL: ugt_43_v2i64: 23120; PWR6: # %bb.0: 23121; PWR6-NEXT: lis 5, 21845 23122; PWR6-NEXT: lis 6, 13107 23123; PWR6-NEXT: ori 5, 5, 21845 23124; PWR6-NEXT: rotldi 8, 4, 63 23125; PWR6-NEXT: rotldi 9, 3, 63 23126; PWR6-NEXT: rldimi 5, 5, 32, 0 23127; PWR6-NEXT: and 8, 8, 5 23128; PWR6-NEXT: and 5, 9, 5 23129; PWR6-NEXT: ori 6, 6, 13107 23130; PWR6-NEXT: sub 3, 3, 5 23131; PWR6-NEXT: rldimi 6, 6, 32, 0 23132; PWR6-NEXT: sub 4, 4, 8 23133; PWR6-NEXT: and 8, 3, 6 23134; PWR6-NEXT: rotldi 3, 3, 62 23135; PWR6-NEXT: and 3, 3, 6 23136; PWR6-NEXT: lis 7, 3855 23137; PWR6-NEXT: and 5, 4, 6 23138; PWR6-NEXT: rotldi 4, 4, 62 23139; PWR6-NEXT: add 3, 8, 3 23140; PWR6-NEXT: lis 9, 257 23141; PWR6-NEXT: ori 7, 7, 3855 23142; PWR6-NEXT: and 4, 4, 6 23143; PWR6-NEXT: rldicl 6, 3, 60, 4 23144; PWR6-NEXT: ori 9, 9, 257 23145; PWR6-NEXT: rldimi 7, 7, 32, 0 23146; PWR6-NEXT: add 4, 5, 4 23147; PWR6-NEXT: add 3, 3, 6 23148; PWR6-NEXT: rldimi 9, 9, 32, 0 23149; PWR6-NEXT: rldicl 5, 4, 60, 4 23150; PWR6-NEXT: and 3, 3, 7 23151; PWR6-NEXT: add 4, 4, 5 23152; PWR6-NEXT: mulld 3, 3, 9 23153; PWR6-NEXT: and 4, 4, 7 23154; PWR6-NEXT: rldicl 3, 3, 8, 56 23155; PWR6-NEXT: mulld 4, 4, 9 23156; PWR6-NEXT: li 5, 43 23157; PWR6-NEXT: subfic 3, 3, 43 23158; PWR6-NEXT: rldicl 4, 4, 8, 56 23159; PWR6-NEXT: subfe 3, 5, 5 23160; PWR6-NEXT: subfic 4, 4, 43 23161; PWR6-NEXT: subfe 4, 5, 5 23162; PWR6-NEXT: blr 23163; 23164; PWR7-LABEL: ugt_43_v2i64: 23165; PWR7: # %bb.0: 23166; PWR7-NEXT: addi 3, 1, -32 23167; PWR7-NEXT: li 5, -1 23168; PWR7-NEXT: stxvd2x 34, 0, 3 23169; PWR7-NEXT: ld 4, -24(1) 23170; PWR7-NEXT: ld 3, -32(1) 23171; PWR7-NEXT: popcntd 4, 4 23172; PWR7-NEXT: popcntd 3, 3 23173; PWR7-NEXT: cmpldi 4, 43 23174; PWR7-NEXT: li 4, 0 23175; PWR7-NEXT: iselgt 6, 5, 4 23176; PWR7-NEXT: cmpldi 3, 43 23177; PWR7-NEXT: iselgt 3, 5, 4 23178; PWR7-NEXT: std 6, -8(1) 23179; PWR7-NEXT: std 3, -16(1) 23180; PWR7-NEXT: addi 3, 1, -16 23181; PWR7-NEXT: lxvd2x 34, 0, 3 23182; PWR7-NEXT: blr 23183; 23184; PWR8-LABEL: ugt_43_v2i64: 23185; PWR8: # %bb.0: 23186; PWR8-NEXT: addis 3, 2, .LCPI184_0@toc@ha 23187; PWR8-NEXT: vpopcntd 2, 2 23188; PWR8-NEXT: addi 3, 3, .LCPI184_0@toc@l 23189; PWR8-NEXT: lxvd2x 35, 0, 3 23190; PWR8-NEXT: vcmpgtud 2, 2, 3 23191; PWR8-NEXT: blr 23192; 23193; PWR9-LABEL: ugt_43_v2i64: 23194; PWR9: # %bb.0: 23195; PWR9-NEXT: addis 3, 2, .LCPI184_0@toc@ha 23196; PWR9-NEXT: vpopcntd 2, 2 23197; PWR9-NEXT: addi 3, 3, .LCPI184_0@toc@l 23198; PWR9-NEXT: lxv 35, 0(3) 23199; PWR9-NEXT: vcmpgtud 2, 2, 3 23200; PWR9-NEXT: blr 23201 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23202 %3 = icmp ugt <2 x i64> %2, <i64 43, i64 43> 23203 %4 = sext <2 x i1> %3 to <2 x i64> 23204 ret <2 x i64> %4 23205} 23206 23207define <2 x i64> @ult_44_v2i64(<2 x i64> %0) { 23208; PWR5-LABEL: ult_44_v2i64: 23209; PWR5: # %bb.0: 23210; PWR5-NEXT: lis 5, 21845 23211; PWR5-NEXT: lis 6, 13107 23212; PWR5-NEXT: ori 5, 5, 21845 23213; PWR5-NEXT: rotldi 8, 4, 63 23214; PWR5-NEXT: rotldi 9, 3, 63 23215; PWR5-NEXT: rldimi 5, 5, 32, 0 23216; PWR5-NEXT: and 8, 8, 5 23217; PWR5-NEXT: and 5, 9, 5 23218; PWR5-NEXT: ori 6, 6, 13107 23219; PWR5-NEXT: sub 3, 3, 5 23220; PWR5-NEXT: rldimi 6, 6, 32, 0 23221; PWR5-NEXT: sub 4, 4, 8 23222; PWR5-NEXT: and 8, 3, 6 23223; PWR5-NEXT: rotldi 3, 3, 62 23224; PWR5-NEXT: and 3, 3, 6 23225; PWR5-NEXT: lis 7, 3855 23226; PWR5-NEXT: and 5, 4, 6 23227; PWR5-NEXT: rotldi 4, 4, 62 23228; PWR5-NEXT: add 3, 8, 3 23229; PWR5-NEXT: lis 9, 257 23230; PWR5-NEXT: ori 7, 7, 3855 23231; PWR5-NEXT: and 4, 4, 6 23232; PWR5-NEXT: rldicl 6, 3, 60, 4 23233; PWR5-NEXT: ori 9, 9, 257 23234; PWR5-NEXT: rldimi 7, 7, 32, 0 23235; PWR5-NEXT: add 4, 5, 4 23236; PWR5-NEXT: add 3, 3, 6 23237; PWR5-NEXT: rldimi 9, 9, 32, 0 23238; PWR5-NEXT: rldicl 5, 4, 60, 4 23239; PWR5-NEXT: and 3, 3, 7 23240; PWR5-NEXT: add 4, 4, 5 23241; PWR5-NEXT: mulld 3, 3, 9 23242; PWR5-NEXT: and 4, 4, 7 23243; PWR5-NEXT: rldicl 3, 3, 8, 56 23244; PWR5-NEXT: li 5, 44 23245; PWR5-NEXT: mulld 4, 4, 9 23246; PWR5-NEXT: subc 6, 3, 5 23247; PWR5-NEXT: rldicl 4, 4, 8, 56 23248; PWR5-NEXT: subfe 3, 3, 3 23249; PWR5-NEXT: subc 5, 4, 5 23250; PWR5-NEXT: subfe 4, 4, 4 23251; PWR5-NEXT: blr 23252; 23253; PWR6-LABEL: ult_44_v2i64: 23254; PWR6: # %bb.0: 23255; PWR6-NEXT: lis 5, 21845 23256; PWR6-NEXT: lis 6, 13107 23257; PWR6-NEXT: ori 5, 5, 21845 23258; PWR6-NEXT: rotldi 8, 4, 63 23259; PWR6-NEXT: rotldi 9, 3, 63 23260; PWR6-NEXT: rldimi 5, 5, 32, 0 23261; PWR6-NEXT: and 8, 8, 5 23262; PWR6-NEXT: and 5, 9, 5 23263; PWR6-NEXT: ori 6, 6, 13107 23264; PWR6-NEXT: sub 3, 3, 5 23265; PWR6-NEXT: rldimi 6, 6, 32, 0 23266; PWR6-NEXT: sub 4, 4, 8 23267; PWR6-NEXT: and 8, 3, 6 23268; PWR6-NEXT: rotldi 3, 3, 62 23269; PWR6-NEXT: and 3, 3, 6 23270; PWR6-NEXT: lis 7, 3855 23271; PWR6-NEXT: and 5, 4, 6 23272; PWR6-NEXT: rotldi 4, 4, 62 23273; PWR6-NEXT: add 3, 8, 3 23274; PWR6-NEXT: lis 9, 257 23275; PWR6-NEXT: ori 7, 7, 3855 23276; PWR6-NEXT: and 4, 4, 6 23277; PWR6-NEXT: rldicl 6, 3, 60, 4 23278; PWR6-NEXT: ori 9, 9, 257 23279; PWR6-NEXT: rldimi 7, 7, 32, 0 23280; PWR6-NEXT: add 4, 5, 4 23281; PWR6-NEXT: add 3, 3, 6 23282; PWR6-NEXT: rldimi 9, 9, 32, 0 23283; PWR6-NEXT: rldicl 5, 4, 60, 4 23284; PWR6-NEXT: and 3, 3, 7 23285; PWR6-NEXT: add 4, 4, 5 23286; PWR6-NEXT: mulld 3, 3, 9 23287; PWR6-NEXT: and 4, 4, 7 23288; PWR6-NEXT: rldicl 3, 3, 8, 56 23289; PWR6-NEXT: li 5, 44 23290; PWR6-NEXT: mulld 4, 4, 9 23291; PWR6-NEXT: subc 6, 3, 5 23292; PWR6-NEXT: rldicl 4, 4, 8, 56 23293; PWR6-NEXT: subfe 3, 3, 3 23294; PWR6-NEXT: subc 5, 4, 5 23295; PWR6-NEXT: subfe 4, 4, 4 23296; PWR6-NEXT: blr 23297; 23298; PWR7-LABEL: ult_44_v2i64: 23299; PWR7: # %bb.0: 23300; PWR7-NEXT: addi 3, 1, -32 23301; PWR7-NEXT: li 5, -1 23302; PWR7-NEXT: stxvd2x 34, 0, 3 23303; PWR7-NEXT: ld 4, -24(1) 23304; PWR7-NEXT: ld 3, -32(1) 23305; PWR7-NEXT: popcntd 4, 4 23306; PWR7-NEXT: popcntd 3, 3 23307; PWR7-NEXT: cmpldi 4, 44 23308; PWR7-NEXT: li 4, 0 23309; PWR7-NEXT: isellt 6, 5, 4 23310; PWR7-NEXT: cmpldi 3, 44 23311; PWR7-NEXT: isellt 3, 5, 4 23312; PWR7-NEXT: std 6, -8(1) 23313; PWR7-NEXT: std 3, -16(1) 23314; PWR7-NEXT: addi 3, 1, -16 23315; PWR7-NEXT: lxvd2x 34, 0, 3 23316; PWR7-NEXT: blr 23317; 23318; PWR8-LABEL: ult_44_v2i64: 23319; PWR8: # %bb.0: 23320; PWR8-NEXT: addis 3, 2, .LCPI185_0@toc@ha 23321; PWR8-NEXT: vpopcntd 2, 2 23322; PWR8-NEXT: addi 3, 3, .LCPI185_0@toc@l 23323; PWR8-NEXT: lxvd2x 35, 0, 3 23324; PWR8-NEXT: vcmpgtud 2, 3, 2 23325; PWR8-NEXT: blr 23326; 23327; PWR9-LABEL: ult_44_v2i64: 23328; PWR9: # %bb.0: 23329; PWR9-NEXT: addis 3, 2, .LCPI185_0@toc@ha 23330; PWR9-NEXT: vpopcntd 2, 2 23331; PWR9-NEXT: addi 3, 3, .LCPI185_0@toc@l 23332; PWR9-NEXT: lxv 35, 0(3) 23333; PWR9-NEXT: vcmpgtud 2, 3, 2 23334; PWR9-NEXT: blr 23335 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23336 %3 = icmp ult <2 x i64> %2, <i64 44, i64 44> 23337 %4 = sext <2 x i1> %3 to <2 x i64> 23338 ret <2 x i64> %4 23339} 23340 23341define <2 x i64> @ugt_44_v2i64(<2 x i64> %0) { 23342; PWR5-LABEL: ugt_44_v2i64: 23343; PWR5: # %bb.0: 23344; PWR5-NEXT: lis 5, 21845 23345; PWR5-NEXT: lis 6, 13107 23346; PWR5-NEXT: ori 5, 5, 21845 23347; PWR5-NEXT: rotldi 8, 4, 63 23348; PWR5-NEXT: rotldi 9, 3, 63 23349; PWR5-NEXT: rldimi 5, 5, 32, 0 23350; PWR5-NEXT: and 8, 8, 5 23351; PWR5-NEXT: and 5, 9, 5 23352; PWR5-NEXT: ori 6, 6, 13107 23353; PWR5-NEXT: sub 3, 3, 5 23354; PWR5-NEXT: rldimi 6, 6, 32, 0 23355; PWR5-NEXT: sub 4, 4, 8 23356; PWR5-NEXT: and 8, 3, 6 23357; PWR5-NEXT: rotldi 3, 3, 62 23358; PWR5-NEXT: and 3, 3, 6 23359; PWR5-NEXT: lis 7, 3855 23360; PWR5-NEXT: and 5, 4, 6 23361; PWR5-NEXT: rotldi 4, 4, 62 23362; PWR5-NEXT: add 3, 8, 3 23363; PWR5-NEXT: lis 9, 257 23364; PWR5-NEXT: ori 7, 7, 3855 23365; PWR5-NEXT: and 4, 4, 6 23366; PWR5-NEXT: rldicl 6, 3, 60, 4 23367; PWR5-NEXT: ori 9, 9, 257 23368; PWR5-NEXT: rldimi 7, 7, 32, 0 23369; PWR5-NEXT: add 4, 5, 4 23370; PWR5-NEXT: add 3, 3, 6 23371; PWR5-NEXT: rldimi 9, 9, 32, 0 23372; PWR5-NEXT: rldicl 5, 4, 60, 4 23373; PWR5-NEXT: and 3, 3, 7 23374; PWR5-NEXT: add 4, 4, 5 23375; PWR5-NEXT: mulld 3, 3, 9 23376; PWR5-NEXT: and 4, 4, 7 23377; PWR5-NEXT: rldicl 3, 3, 8, 56 23378; PWR5-NEXT: mulld 4, 4, 9 23379; PWR5-NEXT: li 5, 44 23380; PWR5-NEXT: subfic 3, 3, 44 23381; PWR5-NEXT: rldicl 4, 4, 8, 56 23382; PWR5-NEXT: subfe 3, 5, 5 23383; PWR5-NEXT: subfic 4, 4, 44 23384; PWR5-NEXT: subfe 4, 5, 5 23385; PWR5-NEXT: blr 23386; 23387; PWR6-LABEL: ugt_44_v2i64: 23388; PWR6: # %bb.0: 23389; PWR6-NEXT: lis 5, 21845 23390; PWR6-NEXT: lis 6, 13107 23391; PWR6-NEXT: ori 5, 5, 21845 23392; PWR6-NEXT: rotldi 8, 4, 63 23393; PWR6-NEXT: rotldi 9, 3, 63 23394; PWR6-NEXT: rldimi 5, 5, 32, 0 23395; PWR6-NEXT: and 8, 8, 5 23396; PWR6-NEXT: and 5, 9, 5 23397; PWR6-NEXT: ori 6, 6, 13107 23398; PWR6-NEXT: sub 3, 3, 5 23399; PWR6-NEXT: rldimi 6, 6, 32, 0 23400; PWR6-NEXT: sub 4, 4, 8 23401; PWR6-NEXT: and 8, 3, 6 23402; PWR6-NEXT: rotldi 3, 3, 62 23403; PWR6-NEXT: and 3, 3, 6 23404; PWR6-NEXT: lis 7, 3855 23405; PWR6-NEXT: and 5, 4, 6 23406; PWR6-NEXT: rotldi 4, 4, 62 23407; PWR6-NEXT: add 3, 8, 3 23408; PWR6-NEXT: lis 9, 257 23409; PWR6-NEXT: ori 7, 7, 3855 23410; PWR6-NEXT: and 4, 4, 6 23411; PWR6-NEXT: rldicl 6, 3, 60, 4 23412; PWR6-NEXT: ori 9, 9, 257 23413; PWR6-NEXT: rldimi 7, 7, 32, 0 23414; PWR6-NEXT: add 4, 5, 4 23415; PWR6-NEXT: add 3, 3, 6 23416; PWR6-NEXT: rldimi 9, 9, 32, 0 23417; PWR6-NEXT: rldicl 5, 4, 60, 4 23418; PWR6-NEXT: and 3, 3, 7 23419; PWR6-NEXT: add 4, 4, 5 23420; PWR6-NEXT: mulld 3, 3, 9 23421; PWR6-NEXT: and 4, 4, 7 23422; PWR6-NEXT: rldicl 3, 3, 8, 56 23423; PWR6-NEXT: mulld 4, 4, 9 23424; PWR6-NEXT: li 5, 44 23425; PWR6-NEXT: subfic 3, 3, 44 23426; PWR6-NEXT: rldicl 4, 4, 8, 56 23427; PWR6-NEXT: subfe 3, 5, 5 23428; PWR6-NEXT: subfic 4, 4, 44 23429; PWR6-NEXT: subfe 4, 5, 5 23430; PWR6-NEXT: blr 23431; 23432; PWR7-LABEL: ugt_44_v2i64: 23433; PWR7: # %bb.0: 23434; PWR7-NEXT: addi 3, 1, -32 23435; PWR7-NEXT: li 5, -1 23436; PWR7-NEXT: stxvd2x 34, 0, 3 23437; PWR7-NEXT: ld 4, -24(1) 23438; PWR7-NEXT: ld 3, -32(1) 23439; PWR7-NEXT: popcntd 4, 4 23440; PWR7-NEXT: popcntd 3, 3 23441; PWR7-NEXT: cmpldi 4, 44 23442; PWR7-NEXT: li 4, 0 23443; PWR7-NEXT: iselgt 6, 5, 4 23444; PWR7-NEXT: cmpldi 3, 44 23445; PWR7-NEXT: iselgt 3, 5, 4 23446; PWR7-NEXT: std 6, -8(1) 23447; PWR7-NEXT: std 3, -16(1) 23448; PWR7-NEXT: addi 3, 1, -16 23449; PWR7-NEXT: lxvd2x 34, 0, 3 23450; PWR7-NEXT: blr 23451; 23452; PWR8-LABEL: ugt_44_v2i64: 23453; PWR8: # %bb.0: 23454; PWR8-NEXT: addis 3, 2, .LCPI186_0@toc@ha 23455; PWR8-NEXT: vpopcntd 2, 2 23456; PWR8-NEXT: addi 3, 3, .LCPI186_0@toc@l 23457; PWR8-NEXT: lxvd2x 35, 0, 3 23458; PWR8-NEXT: vcmpgtud 2, 2, 3 23459; PWR8-NEXT: blr 23460; 23461; PWR9-LABEL: ugt_44_v2i64: 23462; PWR9: # %bb.0: 23463; PWR9-NEXT: addis 3, 2, .LCPI186_0@toc@ha 23464; PWR9-NEXT: vpopcntd 2, 2 23465; PWR9-NEXT: addi 3, 3, .LCPI186_0@toc@l 23466; PWR9-NEXT: lxv 35, 0(3) 23467; PWR9-NEXT: vcmpgtud 2, 2, 3 23468; PWR9-NEXT: blr 23469 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23470 %3 = icmp ugt <2 x i64> %2, <i64 44, i64 44> 23471 %4 = sext <2 x i1> %3 to <2 x i64> 23472 ret <2 x i64> %4 23473} 23474 23475define <2 x i64> @ult_45_v2i64(<2 x i64> %0) { 23476; PWR5-LABEL: ult_45_v2i64: 23477; PWR5: # %bb.0: 23478; PWR5-NEXT: lis 5, 21845 23479; PWR5-NEXT: lis 6, 13107 23480; PWR5-NEXT: ori 5, 5, 21845 23481; PWR5-NEXT: rotldi 8, 4, 63 23482; PWR5-NEXT: rotldi 9, 3, 63 23483; PWR5-NEXT: rldimi 5, 5, 32, 0 23484; PWR5-NEXT: and 8, 8, 5 23485; PWR5-NEXT: and 5, 9, 5 23486; PWR5-NEXT: ori 6, 6, 13107 23487; PWR5-NEXT: sub 3, 3, 5 23488; PWR5-NEXT: rldimi 6, 6, 32, 0 23489; PWR5-NEXT: sub 4, 4, 8 23490; PWR5-NEXT: and 8, 3, 6 23491; PWR5-NEXT: rotldi 3, 3, 62 23492; PWR5-NEXT: and 3, 3, 6 23493; PWR5-NEXT: lis 7, 3855 23494; PWR5-NEXT: and 5, 4, 6 23495; PWR5-NEXT: rotldi 4, 4, 62 23496; PWR5-NEXT: add 3, 8, 3 23497; PWR5-NEXT: lis 9, 257 23498; PWR5-NEXT: ori 7, 7, 3855 23499; PWR5-NEXT: and 4, 4, 6 23500; PWR5-NEXT: rldicl 6, 3, 60, 4 23501; PWR5-NEXT: ori 9, 9, 257 23502; PWR5-NEXT: rldimi 7, 7, 32, 0 23503; PWR5-NEXT: add 4, 5, 4 23504; PWR5-NEXT: add 3, 3, 6 23505; PWR5-NEXT: rldimi 9, 9, 32, 0 23506; PWR5-NEXT: rldicl 5, 4, 60, 4 23507; PWR5-NEXT: and 3, 3, 7 23508; PWR5-NEXT: add 4, 4, 5 23509; PWR5-NEXT: mulld 3, 3, 9 23510; PWR5-NEXT: and 4, 4, 7 23511; PWR5-NEXT: rldicl 3, 3, 8, 56 23512; PWR5-NEXT: li 5, 45 23513; PWR5-NEXT: mulld 4, 4, 9 23514; PWR5-NEXT: subc 6, 3, 5 23515; PWR5-NEXT: rldicl 4, 4, 8, 56 23516; PWR5-NEXT: subfe 3, 3, 3 23517; PWR5-NEXT: subc 5, 4, 5 23518; PWR5-NEXT: subfe 4, 4, 4 23519; PWR5-NEXT: blr 23520; 23521; PWR6-LABEL: ult_45_v2i64: 23522; PWR6: # %bb.0: 23523; PWR6-NEXT: lis 5, 21845 23524; PWR6-NEXT: lis 6, 13107 23525; PWR6-NEXT: ori 5, 5, 21845 23526; PWR6-NEXT: rotldi 8, 4, 63 23527; PWR6-NEXT: rotldi 9, 3, 63 23528; PWR6-NEXT: rldimi 5, 5, 32, 0 23529; PWR6-NEXT: and 8, 8, 5 23530; PWR6-NEXT: and 5, 9, 5 23531; PWR6-NEXT: ori 6, 6, 13107 23532; PWR6-NEXT: sub 3, 3, 5 23533; PWR6-NEXT: rldimi 6, 6, 32, 0 23534; PWR6-NEXT: sub 4, 4, 8 23535; PWR6-NEXT: and 8, 3, 6 23536; PWR6-NEXT: rotldi 3, 3, 62 23537; PWR6-NEXT: and 3, 3, 6 23538; PWR6-NEXT: lis 7, 3855 23539; PWR6-NEXT: and 5, 4, 6 23540; PWR6-NEXT: rotldi 4, 4, 62 23541; PWR6-NEXT: add 3, 8, 3 23542; PWR6-NEXT: lis 9, 257 23543; PWR6-NEXT: ori 7, 7, 3855 23544; PWR6-NEXT: and 4, 4, 6 23545; PWR6-NEXT: rldicl 6, 3, 60, 4 23546; PWR6-NEXT: ori 9, 9, 257 23547; PWR6-NEXT: rldimi 7, 7, 32, 0 23548; PWR6-NEXT: add 4, 5, 4 23549; PWR6-NEXT: add 3, 3, 6 23550; PWR6-NEXT: rldimi 9, 9, 32, 0 23551; PWR6-NEXT: rldicl 5, 4, 60, 4 23552; PWR6-NEXT: and 3, 3, 7 23553; PWR6-NEXT: add 4, 4, 5 23554; PWR6-NEXT: mulld 3, 3, 9 23555; PWR6-NEXT: and 4, 4, 7 23556; PWR6-NEXT: rldicl 3, 3, 8, 56 23557; PWR6-NEXT: li 5, 45 23558; PWR6-NEXT: mulld 4, 4, 9 23559; PWR6-NEXT: subc 6, 3, 5 23560; PWR6-NEXT: rldicl 4, 4, 8, 56 23561; PWR6-NEXT: subfe 3, 3, 3 23562; PWR6-NEXT: subc 5, 4, 5 23563; PWR6-NEXT: subfe 4, 4, 4 23564; PWR6-NEXT: blr 23565; 23566; PWR7-LABEL: ult_45_v2i64: 23567; PWR7: # %bb.0: 23568; PWR7-NEXT: addi 3, 1, -32 23569; PWR7-NEXT: li 5, -1 23570; PWR7-NEXT: stxvd2x 34, 0, 3 23571; PWR7-NEXT: ld 4, -24(1) 23572; PWR7-NEXT: ld 3, -32(1) 23573; PWR7-NEXT: popcntd 4, 4 23574; PWR7-NEXT: popcntd 3, 3 23575; PWR7-NEXT: cmpldi 4, 45 23576; PWR7-NEXT: li 4, 0 23577; PWR7-NEXT: isellt 6, 5, 4 23578; PWR7-NEXT: cmpldi 3, 45 23579; PWR7-NEXT: isellt 3, 5, 4 23580; PWR7-NEXT: std 6, -8(1) 23581; PWR7-NEXT: std 3, -16(1) 23582; PWR7-NEXT: addi 3, 1, -16 23583; PWR7-NEXT: lxvd2x 34, 0, 3 23584; PWR7-NEXT: blr 23585; 23586; PWR8-LABEL: ult_45_v2i64: 23587; PWR8: # %bb.0: 23588; PWR8-NEXT: addis 3, 2, .LCPI187_0@toc@ha 23589; PWR8-NEXT: vpopcntd 2, 2 23590; PWR8-NEXT: addi 3, 3, .LCPI187_0@toc@l 23591; PWR8-NEXT: lxvd2x 35, 0, 3 23592; PWR8-NEXT: vcmpgtud 2, 3, 2 23593; PWR8-NEXT: blr 23594; 23595; PWR9-LABEL: ult_45_v2i64: 23596; PWR9: # %bb.0: 23597; PWR9-NEXT: addis 3, 2, .LCPI187_0@toc@ha 23598; PWR9-NEXT: vpopcntd 2, 2 23599; PWR9-NEXT: addi 3, 3, .LCPI187_0@toc@l 23600; PWR9-NEXT: lxv 35, 0(3) 23601; PWR9-NEXT: vcmpgtud 2, 3, 2 23602; PWR9-NEXT: blr 23603 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23604 %3 = icmp ult <2 x i64> %2, <i64 45, i64 45> 23605 %4 = sext <2 x i1> %3 to <2 x i64> 23606 ret <2 x i64> %4 23607} 23608 23609define <2 x i64> @ugt_45_v2i64(<2 x i64> %0) { 23610; PWR5-LABEL: ugt_45_v2i64: 23611; PWR5: # %bb.0: 23612; PWR5-NEXT: lis 5, 21845 23613; PWR5-NEXT: lis 6, 13107 23614; PWR5-NEXT: ori 5, 5, 21845 23615; PWR5-NEXT: rotldi 8, 4, 63 23616; PWR5-NEXT: rotldi 9, 3, 63 23617; PWR5-NEXT: rldimi 5, 5, 32, 0 23618; PWR5-NEXT: and 8, 8, 5 23619; PWR5-NEXT: and 5, 9, 5 23620; PWR5-NEXT: ori 6, 6, 13107 23621; PWR5-NEXT: sub 3, 3, 5 23622; PWR5-NEXT: rldimi 6, 6, 32, 0 23623; PWR5-NEXT: sub 4, 4, 8 23624; PWR5-NEXT: and 8, 3, 6 23625; PWR5-NEXT: rotldi 3, 3, 62 23626; PWR5-NEXT: and 3, 3, 6 23627; PWR5-NEXT: lis 7, 3855 23628; PWR5-NEXT: and 5, 4, 6 23629; PWR5-NEXT: rotldi 4, 4, 62 23630; PWR5-NEXT: add 3, 8, 3 23631; PWR5-NEXT: lis 9, 257 23632; PWR5-NEXT: ori 7, 7, 3855 23633; PWR5-NEXT: and 4, 4, 6 23634; PWR5-NEXT: rldicl 6, 3, 60, 4 23635; PWR5-NEXT: ori 9, 9, 257 23636; PWR5-NEXT: rldimi 7, 7, 32, 0 23637; PWR5-NEXT: add 4, 5, 4 23638; PWR5-NEXT: add 3, 3, 6 23639; PWR5-NEXT: rldimi 9, 9, 32, 0 23640; PWR5-NEXT: rldicl 5, 4, 60, 4 23641; PWR5-NEXT: and 3, 3, 7 23642; PWR5-NEXT: add 4, 4, 5 23643; PWR5-NEXT: mulld 3, 3, 9 23644; PWR5-NEXT: and 4, 4, 7 23645; PWR5-NEXT: rldicl 3, 3, 8, 56 23646; PWR5-NEXT: mulld 4, 4, 9 23647; PWR5-NEXT: li 5, 45 23648; PWR5-NEXT: subfic 3, 3, 45 23649; PWR5-NEXT: rldicl 4, 4, 8, 56 23650; PWR5-NEXT: subfe 3, 5, 5 23651; PWR5-NEXT: subfic 4, 4, 45 23652; PWR5-NEXT: subfe 4, 5, 5 23653; PWR5-NEXT: blr 23654; 23655; PWR6-LABEL: ugt_45_v2i64: 23656; PWR6: # %bb.0: 23657; PWR6-NEXT: lis 5, 21845 23658; PWR6-NEXT: lis 6, 13107 23659; PWR6-NEXT: ori 5, 5, 21845 23660; PWR6-NEXT: rotldi 8, 4, 63 23661; PWR6-NEXT: rotldi 9, 3, 63 23662; PWR6-NEXT: rldimi 5, 5, 32, 0 23663; PWR6-NEXT: and 8, 8, 5 23664; PWR6-NEXT: and 5, 9, 5 23665; PWR6-NEXT: ori 6, 6, 13107 23666; PWR6-NEXT: sub 3, 3, 5 23667; PWR6-NEXT: rldimi 6, 6, 32, 0 23668; PWR6-NEXT: sub 4, 4, 8 23669; PWR6-NEXT: and 8, 3, 6 23670; PWR6-NEXT: rotldi 3, 3, 62 23671; PWR6-NEXT: and 3, 3, 6 23672; PWR6-NEXT: lis 7, 3855 23673; PWR6-NEXT: and 5, 4, 6 23674; PWR6-NEXT: rotldi 4, 4, 62 23675; PWR6-NEXT: add 3, 8, 3 23676; PWR6-NEXT: lis 9, 257 23677; PWR6-NEXT: ori 7, 7, 3855 23678; PWR6-NEXT: and 4, 4, 6 23679; PWR6-NEXT: rldicl 6, 3, 60, 4 23680; PWR6-NEXT: ori 9, 9, 257 23681; PWR6-NEXT: rldimi 7, 7, 32, 0 23682; PWR6-NEXT: add 4, 5, 4 23683; PWR6-NEXT: add 3, 3, 6 23684; PWR6-NEXT: rldimi 9, 9, 32, 0 23685; PWR6-NEXT: rldicl 5, 4, 60, 4 23686; PWR6-NEXT: and 3, 3, 7 23687; PWR6-NEXT: add 4, 4, 5 23688; PWR6-NEXT: mulld 3, 3, 9 23689; PWR6-NEXT: and 4, 4, 7 23690; PWR6-NEXT: rldicl 3, 3, 8, 56 23691; PWR6-NEXT: mulld 4, 4, 9 23692; PWR6-NEXT: li 5, 45 23693; PWR6-NEXT: subfic 3, 3, 45 23694; PWR6-NEXT: rldicl 4, 4, 8, 56 23695; PWR6-NEXT: subfe 3, 5, 5 23696; PWR6-NEXT: subfic 4, 4, 45 23697; PWR6-NEXT: subfe 4, 5, 5 23698; PWR6-NEXT: blr 23699; 23700; PWR7-LABEL: ugt_45_v2i64: 23701; PWR7: # %bb.0: 23702; PWR7-NEXT: addi 3, 1, -32 23703; PWR7-NEXT: li 5, -1 23704; PWR7-NEXT: stxvd2x 34, 0, 3 23705; PWR7-NEXT: ld 4, -24(1) 23706; PWR7-NEXT: ld 3, -32(1) 23707; PWR7-NEXT: popcntd 4, 4 23708; PWR7-NEXT: popcntd 3, 3 23709; PWR7-NEXT: cmpldi 4, 45 23710; PWR7-NEXT: li 4, 0 23711; PWR7-NEXT: iselgt 6, 5, 4 23712; PWR7-NEXT: cmpldi 3, 45 23713; PWR7-NEXT: iselgt 3, 5, 4 23714; PWR7-NEXT: std 6, -8(1) 23715; PWR7-NEXT: std 3, -16(1) 23716; PWR7-NEXT: addi 3, 1, -16 23717; PWR7-NEXT: lxvd2x 34, 0, 3 23718; PWR7-NEXT: blr 23719; 23720; PWR8-LABEL: ugt_45_v2i64: 23721; PWR8: # %bb.0: 23722; PWR8-NEXT: addis 3, 2, .LCPI188_0@toc@ha 23723; PWR8-NEXT: vpopcntd 2, 2 23724; PWR8-NEXT: addi 3, 3, .LCPI188_0@toc@l 23725; PWR8-NEXT: lxvd2x 35, 0, 3 23726; PWR8-NEXT: vcmpgtud 2, 2, 3 23727; PWR8-NEXT: blr 23728; 23729; PWR9-LABEL: ugt_45_v2i64: 23730; PWR9: # %bb.0: 23731; PWR9-NEXT: addis 3, 2, .LCPI188_0@toc@ha 23732; PWR9-NEXT: vpopcntd 2, 2 23733; PWR9-NEXT: addi 3, 3, .LCPI188_0@toc@l 23734; PWR9-NEXT: lxv 35, 0(3) 23735; PWR9-NEXT: vcmpgtud 2, 2, 3 23736; PWR9-NEXT: blr 23737 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23738 %3 = icmp ugt <2 x i64> %2, <i64 45, i64 45> 23739 %4 = sext <2 x i1> %3 to <2 x i64> 23740 ret <2 x i64> %4 23741} 23742 23743define <2 x i64> @ult_46_v2i64(<2 x i64> %0) { 23744; PWR5-LABEL: ult_46_v2i64: 23745; PWR5: # %bb.0: 23746; PWR5-NEXT: lis 5, 21845 23747; PWR5-NEXT: lis 6, 13107 23748; PWR5-NEXT: ori 5, 5, 21845 23749; PWR5-NEXT: rotldi 8, 4, 63 23750; PWR5-NEXT: rotldi 9, 3, 63 23751; PWR5-NEXT: rldimi 5, 5, 32, 0 23752; PWR5-NEXT: and 8, 8, 5 23753; PWR5-NEXT: and 5, 9, 5 23754; PWR5-NEXT: ori 6, 6, 13107 23755; PWR5-NEXT: sub 3, 3, 5 23756; PWR5-NEXT: rldimi 6, 6, 32, 0 23757; PWR5-NEXT: sub 4, 4, 8 23758; PWR5-NEXT: and 8, 3, 6 23759; PWR5-NEXT: rotldi 3, 3, 62 23760; PWR5-NEXT: and 3, 3, 6 23761; PWR5-NEXT: lis 7, 3855 23762; PWR5-NEXT: and 5, 4, 6 23763; PWR5-NEXT: rotldi 4, 4, 62 23764; PWR5-NEXT: add 3, 8, 3 23765; PWR5-NEXT: lis 9, 257 23766; PWR5-NEXT: ori 7, 7, 3855 23767; PWR5-NEXT: and 4, 4, 6 23768; PWR5-NEXT: rldicl 6, 3, 60, 4 23769; PWR5-NEXT: ori 9, 9, 257 23770; PWR5-NEXT: rldimi 7, 7, 32, 0 23771; PWR5-NEXT: add 4, 5, 4 23772; PWR5-NEXT: add 3, 3, 6 23773; PWR5-NEXT: rldimi 9, 9, 32, 0 23774; PWR5-NEXT: rldicl 5, 4, 60, 4 23775; PWR5-NEXT: and 3, 3, 7 23776; PWR5-NEXT: add 4, 4, 5 23777; PWR5-NEXT: mulld 3, 3, 9 23778; PWR5-NEXT: and 4, 4, 7 23779; PWR5-NEXT: rldicl 3, 3, 8, 56 23780; PWR5-NEXT: li 5, 46 23781; PWR5-NEXT: mulld 4, 4, 9 23782; PWR5-NEXT: subc 6, 3, 5 23783; PWR5-NEXT: rldicl 4, 4, 8, 56 23784; PWR5-NEXT: subfe 3, 3, 3 23785; PWR5-NEXT: subc 5, 4, 5 23786; PWR5-NEXT: subfe 4, 4, 4 23787; PWR5-NEXT: blr 23788; 23789; PWR6-LABEL: ult_46_v2i64: 23790; PWR6: # %bb.0: 23791; PWR6-NEXT: lis 5, 21845 23792; PWR6-NEXT: lis 6, 13107 23793; PWR6-NEXT: ori 5, 5, 21845 23794; PWR6-NEXT: rotldi 8, 4, 63 23795; PWR6-NEXT: rotldi 9, 3, 63 23796; PWR6-NEXT: rldimi 5, 5, 32, 0 23797; PWR6-NEXT: and 8, 8, 5 23798; PWR6-NEXT: and 5, 9, 5 23799; PWR6-NEXT: ori 6, 6, 13107 23800; PWR6-NEXT: sub 3, 3, 5 23801; PWR6-NEXT: rldimi 6, 6, 32, 0 23802; PWR6-NEXT: sub 4, 4, 8 23803; PWR6-NEXT: and 8, 3, 6 23804; PWR6-NEXT: rotldi 3, 3, 62 23805; PWR6-NEXT: and 3, 3, 6 23806; PWR6-NEXT: lis 7, 3855 23807; PWR6-NEXT: and 5, 4, 6 23808; PWR6-NEXT: rotldi 4, 4, 62 23809; PWR6-NEXT: add 3, 8, 3 23810; PWR6-NEXT: lis 9, 257 23811; PWR6-NEXT: ori 7, 7, 3855 23812; PWR6-NEXT: and 4, 4, 6 23813; PWR6-NEXT: rldicl 6, 3, 60, 4 23814; PWR6-NEXT: ori 9, 9, 257 23815; PWR6-NEXT: rldimi 7, 7, 32, 0 23816; PWR6-NEXT: add 4, 5, 4 23817; PWR6-NEXT: add 3, 3, 6 23818; PWR6-NEXT: rldimi 9, 9, 32, 0 23819; PWR6-NEXT: rldicl 5, 4, 60, 4 23820; PWR6-NEXT: and 3, 3, 7 23821; PWR6-NEXT: add 4, 4, 5 23822; PWR6-NEXT: mulld 3, 3, 9 23823; PWR6-NEXT: and 4, 4, 7 23824; PWR6-NEXT: rldicl 3, 3, 8, 56 23825; PWR6-NEXT: li 5, 46 23826; PWR6-NEXT: mulld 4, 4, 9 23827; PWR6-NEXT: subc 6, 3, 5 23828; PWR6-NEXT: rldicl 4, 4, 8, 56 23829; PWR6-NEXT: subfe 3, 3, 3 23830; PWR6-NEXT: subc 5, 4, 5 23831; PWR6-NEXT: subfe 4, 4, 4 23832; PWR6-NEXT: blr 23833; 23834; PWR7-LABEL: ult_46_v2i64: 23835; PWR7: # %bb.0: 23836; PWR7-NEXT: addi 3, 1, -32 23837; PWR7-NEXT: li 5, -1 23838; PWR7-NEXT: stxvd2x 34, 0, 3 23839; PWR7-NEXT: ld 4, -24(1) 23840; PWR7-NEXT: ld 3, -32(1) 23841; PWR7-NEXT: popcntd 4, 4 23842; PWR7-NEXT: popcntd 3, 3 23843; PWR7-NEXT: cmpldi 4, 46 23844; PWR7-NEXT: li 4, 0 23845; PWR7-NEXT: isellt 6, 5, 4 23846; PWR7-NEXT: cmpldi 3, 46 23847; PWR7-NEXT: isellt 3, 5, 4 23848; PWR7-NEXT: std 6, -8(1) 23849; PWR7-NEXT: std 3, -16(1) 23850; PWR7-NEXT: addi 3, 1, -16 23851; PWR7-NEXT: lxvd2x 34, 0, 3 23852; PWR7-NEXT: blr 23853; 23854; PWR8-LABEL: ult_46_v2i64: 23855; PWR8: # %bb.0: 23856; PWR8-NEXT: addis 3, 2, .LCPI189_0@toc@ha 23857; PWR8-NEXT: vpopcntd 2, 2 23858; PWR8-NEXT: addi 3, 3, .LCPI189_0@toc@l 23859; PWR8-NEXT: lxvd2x 35, 0, 3 23860; PWR8-NEXT: vcmpgtud 2, 3, 2 23861; PWR8-NEXT: blr 23862; 23863; PWR9-LABEL: ult_46_v2i64: 23864; PWR9: # %bb.0: 23865; PWR9-NEXT: addis 3, 2, .LCPI189_0@toc@ha 23866; PWR9-NEXT: vpopcntd 2, 2 23867; PWR9-NEXT: addi 3, 3, .LCPI189_0@toc@l 23868; PWR9-NEXT: lxv 35, 0(3) 23869; PWR9-NEXT: vcmpgtud 2, 3, 2 23870; PWR9-NEXT: blr 23871 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 23872 %3 = icmp ult <2 x i64> %2, <i64 46, i64 46> 23873 %4 = sext <2 x i1> %3 to <2 x i64> 23874 ret <2 x i64> %4 23875} 23876 23877define <2 x i64> @ugt_46_v2i64(<2 x i64> %0) { 23878; PWR5-LABEL: ugt_46_v2i64: 23879; PWR5: # %bb.0: 23880; PWR5-NEXT: lis 5, 21845 23881; PWR5-NEXT: lis 6, 13107 23882; PWR5-NEXT: ori 5, 5, 21845 23883; PWR5-NEXT: rotldi 8, 4, 63 23884; PWR5-NEXT: rotldi 9, 3, 63 23885; PWR5-NEXT: rldimi 5, 5, 32, 0 23886; PWR5-NEXT: and 8, 8, 5 23887; PWR5-NEXT: and 5, 9, 5 23888; PWR5-NEXT: ori 6, 6, 13107 23889; PWR5-NEXT: sub 3, 3, 5 23890; PWR5-NEXT: rldimi 6, 6, 32, 0 23891; PWR5-NEXT: sub 4, 4, 8 23892; PWR5-NEXT: and 8, 3, 6 23893; PWR5-NEXT: rotldi 3, 3, 62 23894; PWR5-NEXT: and 3, 3, 6 23895; PWR5-NEXT: lis 7, 3855 23896; PWR5-NEXT: and 5, 4, 6 23897; PWR5-NEXT: rotldi 4, 4, 62 23898; PWR5-NEXT: add 3, 8, 3 23899; PWR5-NEXT: lis 9, 257 23900; PWR5-NEXT: ori 7, 7, 3855 23901; PWR5-NEXT: and 4, 4, 6 23902; PWR5-NEXT: rldicl 6, 3, 60, 4 23903; PWR5-NEXT: ori 9, 9, 257 23904; PWR5-NEXT: rldimi 7, 7, 32, 0 23905; PWR5-NEXT: add 4, 5, 4 23906; PWR5-NEXT: add 3, 3, 6 23907; PWR5-NEXT: rldimi 9, 9, 32, 0 23908; PWR5-NEXT: rldicl 5, 4, 60, 4 23909; PWR5-NEXT: and 3, 3, 7 23910; PWR5-NEXT: add 4, 4, 5 23911; PWR5-NEXT: mulld 3, 3, 9 23912; PWR5-NEXT: and 4, 4, 7 23913; PWR5-NEXT: rldicl 3, 3, 8, 56 23914; PWR5-NEXT: mulld 4, 4, 9 23915; PWR5-NEXT: li 5, 46 23916; PWR5-NEXT: subfic 3, 3, 46 23917; PWR5-NEXT: rldicl 4, 4, 8, 56 23918; PWR5-NEXT: subfe 3, 5, 5 23919; PWR5-NEXT: subfic 4, 4, 46 23920; PWR5-NEXT: subfe 4, 5, 5 23921; PWR5-NEXT: blr 23922; 23923; PWR6-LABEL: ugt_46_v2i64: 23924; PWR6: # %bb.0: 23925; PWR6-NEXT: lis 5, 21845 23926; PWR6-NEXT: lis 6, 13107 23927; PWR6-NEXT: ori 5, 5, 21845 23928; PWR6-NEXT: rotldi 8, 4, 63 23929; PWR6-NEXT: rotldi 9, 3, 63 23930; PWR6-NEXT: rldimi 5, 5, 32, 0 23931; PWR6-NEXT: and 8, 8, 5 23932; PWR6-NEXT: and 5, 9, 5 23933; PWR6-NEXT: ori 6, 6, 13107 23934; PWR6-NEXT: sub 3, 3, 5 23935; PWR6-NEXT: rldimi 6, 6, 32, 0 23936; PWR6-NEXT: sub 4, 4, 8 23937; PWR6-NEXT: and 8, 3, 6 23938; PWR6-NEXT: rotldi 3, 3, 62 23939; PWR6-NEXT: and 3, 3, 6 23940; PWR6-NEXT: lis 7, 3855 23941; PWR6-NEXT: and 5, 4, 6 23942; PWR6-NEXT: rotldi 4, 4, 62 23943; PWR6-NEXT: add 3, 8, 3 23944; PWR6-NEXT: lis 9, 257 23945; PWR6-NEXT: ori 7, 7, 3855 23946; PWR6-NEXT: and 4, 4, 6 23947; PWR6-NEXT: rldicl 6, 3, 60, 4 23948; PWR6-NEXT: ori 9, 9, 257 23949; PWR6-NEXT: rldimi 7, 7, 32, 0 23950; PWR6-NEXT: add 4, 5, 4 23951; PWR6-NEXT: add 3, 3, 6 23952; PWR6-NEXT: rldimi 9, 9, 32, 0 23953; PWR6-NEXT: rldicl 5, 4, 60, 4 23954; PWR6-NEXT: and 3, 3, 7 23955; PWR6-NEXT: add 4, 4, 5 23956; PWR6-NEXT: mulld 3, 3, 9 23957; PWR6-NEXT: and 4, 4, 7 23958; PWR6-NEXT: rldicl 3, 3, 8, 56 23959; PWR6-NEXT: mulld 4, 4, 9 23960; PWR6-NEXT: li 5, 46 23961; PWR6-NEXT: subfic 3, 3, 46 23962; PWR6-NEXT: rldicl 4, 4, 8, 56 23963; PWR6-NEXT: subfe 3, 5, 5 23964; PWR6-NEXT: subfic 4, 4, 46 23965; PWR6-NEXT: subfe 4, 5, 5 23966; PWR6-NEXT: blr 23967; 23968; PWR7-LABEL: ugt_46_v2i64: 23969; PWR7: # %bb.0: 23970; PWR7-NEXT: addi 3, 1, -32 23971; PWR7-NEXT: li 5, -1 23972; PWR7-NEXT: stxvd2x 34, 0, 3 23973; PWR7-NEXT: ld 4, -24(1) 23974; PWR7-NEXT: ld 3, -32(1) 23975; PWR7-NEXT: popcntd 4, 4 23976; PWR7-NEXT: popcntd 3, 3 23977; PWR7-NEXT: cmpldi 4, 46 23978; PWR7-NEXT: li 4, 0 23979; PWR7-NEXT: iselgt 6, 5, 4 23980; PWR7-NEXT: cmpldi 3, 46 23981; PWR7-NEXT: iselgt 3, 5, 4 23982; PWR7-NEXT: std 6, -8(1) 23983; PWR7-NEXT: std 3, -16(1) 23984; PWR7-NEXT: addi 3, 1, -16 23985; PWR7-NEXT: lxvd2x 34, 0, 3 23986; PWR7-NEXT: blr 23987; 23988; PWR8-LABEL: ugt_46_v2i64: 23989; PWR8: # %bb.0: 23990; PWR8-NEXT: addis 3, 2, .LCPI190_0@toc@ha 23991; PWR8-NEXT: vpopcntd 2, 2 23992; PWR8-NEXT: addi 3, 3, .LCPI190_0@toc@l 23993; PWR8-NEXT: lxvd2x 35, 0, 3 23994; PWR8-NEXT: vcmpgtud 2, 2, 3 23995; PWR8-NEXT: blr 23996; 23997; PWR9-LABEL: ugt_46_v2i64: 23998; PWR9: # %bb.0: 23999; PWR9-NEXT: addis 3, 2, .LCPI190_0@toc@ha 24000; PWR9-NEXT: vpopcntd 2, 2 24001; PWR9-NEXT: addi 3, 3, .LCPI190_0@toc@l 24002; PWR9-NEXT: lxv 35, 0(3) 24003; PWR9-NEXT: vcmpgtud 2, 2, 3 24004; PWR9-NEXT: blr 24005 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24006 %3 = icmp ugt <2 x i64> %2, <i64 46, i64 46> 24007 %4 = sext <2 x i1> %3 to <2 x i64> 24008 ret <2 x i64> %4 24009} 24010 24011define <2 x i64> @ult_47_v2i64(<2 x i64> %0) { 24012; PWR5-LABEL: ult_47_v2i64: 24013; PWR5: # %bb.0: 24014; PWR5-NEXT: lis 5, 21845 24015; PWR5-NEXT: lis 6, 13107 24016; PWR5-NEXT: ori 5, 5, 21845 24017; PWR5-NEXT: rotldi 8, 4, 63 24018; PWR5-NEXT: rotldi 9, 3, 63 24019; PWR5-NEXT: rldimi 5, 5, 32, 0 24020; PWR5-NEXT: and 8, 8, 5 24021; PWR5-NEXT: and 5, 9, 5 24022; PWR5-NEXT: ori 6, 6, 13107 24023; PWR5-NEXT: sub 3, 3, 5 24024; PWR5-NEXT: rldimi 6, 6, 32, 0 24025; PWR5-NEXT: sub 4, 4, 8 24026; PWR5-NEXT: and 8, 3, 6 24027; PWR5-NEXT: rotldi 3, 3, 62 24028; PWR5-NEXT: and 3, 3, 6 24029; PWR5-NEXT: lis 7, 3855 24030; PWR5-NEXT: and 5, 4, 6 24031; PWR5-NEXT: rotldi 4, 4, 62 24032; PWR5-NEXT: add 3, 8, 3 24033; PWR5-NEXT: lis 9, 257 24034; PWR5-NEXT: ori 7, 7, 3855 24035; PWR5-NEXT: and 4, 4, 6 24036; PWR5-NEXT: rldicl 6, 3, 60, 4 24037; PWR5-NEXT: ori 9, 9, 257 24038; PWR5-NEXT: rldimi 7, 7, 32, 0 24039; PWR5-NEXT: add 4, 5, 4 24040; PWR5-NEXT: add 3, 3, 6 24041; PWR5-NEXT: rldimi 9, 9, 32, 0 24042; PWR5-NEXT: rldicl 5, 4, 60, 4 24043; PWR5-NEXT: and 3, 3, 7 24044; PWR5-NEXT: add 4, 4, 5 24045; PWR5-NEXT: mulld 3, 3, 9 24046; PWR5-NEXT: and 4, 4, 7 24047; PWR5-NEXT: rldicl 3, 3, 8, 56 24048; PWR5-NEXT: li 5, 47 24049; PWR5-NEXT: mulld 4, 4, 9 24050; PWR5-NEXT: subc 6, 3, 5 24051; PWR5-NEXT: rldicl 4, 4, 8, 56 24052; PWR5-NEXT: subfe 3, 3, 3 24053; PWR5-NEXT: subc 5, 4, 5 24054; PWR5-NEXT: subfe 4, 4, 4 24055; PWR5-NEXT: blr 24056; 24057; PWR6-LABEL: ult_47_v2i64: 24058; PWR6: # %bb.0: 24059; PWR6-NEXT: lis 5, 21845 24060; PWR6-NEXT: lis 6, 13107 24061; PWR6-NEXT: ori 5, 5, 21845 24062; PWR6-NEXT: rotldi 8, 4, 63 24063; PWR6-NEXT: rotldi 9, 3, 63 24064; PWR6-NEXT: rldimi 5, 5, 32, 0 24065; PWR6-NEXT: and 8, 8, 5 24066; PWR6-NEXT: and 5, 9, 5 24067; PWR6-NEXT: ori 6, 6, 13107 24068; PWR6-NEXT: sub 3, 3, 5 24069; PWR6-NEXT: rldimi 6, 6, 32, 0 24070; PWR6-NEXT: sub 4, 4, 8 24071; PWR6-NEXT: and 8, 3, 6 24072; PWR6-NEXT: rotldi 3, 3, 62 24073; PWR6-NEXT: and 3, 3, 6 24074; PWR6-NEXT: lis 7, 3855 24075; PWR6-NEXT: and 5, 4, 6 24076; PWR6-NEXT: rotldi 4, 4, 62 24077; PWR6-NEXT: add 3, 8, 3 24078; PWR6-NEXT: lis 9, 257 24079; PWR6-NEXT: ori 7, 7, 3855 24080; PWR6-NEXT: and 4, 4, 6 24081; PWR6-NEXT: rldicl 6, 3, 60, 4 24082; PWR6-NEXT: ori 9, 9, 257 24083; PWR6-NEXT: rldimi 7, 7, 32, 0 24084; PWR6-NEXT: add 4, 5, 4 24085; PWR6-NEXT: add 3, 3, 6 24086; PWR6-NEXT: rldimi 9, 9, 32, 0 24087; PWR6-NEXT: rldicl 5, 4, 60, 4 24088; PWR6-NEXT: and 3, 3, 7 24089; PWR6-NEXT: add 4, 4, 5 24090; PWR6-NEXT: mulld 3, 3, 9 24091; PWR6-NEXT: and 4, 4, 7 24092; PWR6-NEXT: rldicl 3, 3, 8, 56 24093; PWR6-NEXT: li 5, 47 24094; PWR6-NEXT: mulld 4, 4, 9 24095; PWR6-NEXT: subc 6, 3, 5 24096; PWR6-NEXT: rldicl 4, 4, 8, 56 24097; PWR6-NEXT: subfe 3, 3, 3 24098; PWR6-NEXT: subc 5, 4, 5 24099; PWR6-NEXT: subfe 4, 4, 4 24100; PWR6-NEXT: blr 24101; 24102; PWR7-LABEL: ult_47_v2i64: 24103; PWR7: # %bb.0: 24104; PWR7-NEXT: addi 3, 1, -32 24105; PWR7-NEXT: li 5, -1 24106; PWR7-NEXT: stxvd2x 34, 0, 3 24107; PWR7-NEXT: ld 4, -24(1) 24108; PWR7-NEXT: ld 3, -32(1) 24109; PWR7-NEXT: popcntd 4, 4 24110; PWR7-NEXT: popcntd 3, 3 24111; PWR7-NEXT: cmpldi 4, 47 24112; PWR7-NEXT: li 4, 0 24113; PWR7-NEXT: isellt 6, 5, 4 24114; PWR7-NEXT: cmpldi 3, 47 24115; PWR7-NEXT: isellt 3, 5, 4 24116; PWR7-NEXT: std 6, -8(1) 24117; PWR7-NEXT: std 3, -16(1) 24118; PWR7-NEXT: addi 3, 1, -16 24119; PWR7-NEXT: lxvd2x 34, 0, 3 24120; PWR7-NEXT: blr 24121; 24122; PWR8-LABEL: ult_47_v2i64: 24123; PWR8: # %bb.0: 24124; PWR8-NEXT: addis 3, 2, .LCPI191_0@toc@ha 24125; PWR8-NEXT: vpopcntd 2, 2 24126; PWR8-NEXT: addi 3, 3, .LCPI191_0@toc@l 24127; PWR8-NEXT: lxvd2x 35, 0, 3 24128; PWR8-NEXT: vcmpgtud 2, 3, 2 24129; PWR8-NEXT: blr 24130; 24131; PWR9-LABEL: ult_47_v2i64: 24132; PWR9: # %bb.0: 24133; PWR9-NEXT: addis 3, 2, .LCPI191_0@toc@ha 24134; PWR9-NEXT: vpopcntd 2, 2 24135; PWR9-NEXT: addi 3, 3, .LCPI191_0@toc@l 24136; PWR9-NEXT: lxv 35, 0(3) 24137; PWR9-NEXT: vcmpgtud 2, 3, 2 24138; PWR9-NEXT: blr 24139 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24140 %3 = icmp ult <2 x i64> %2, <i64 47, i64 47> 24141 %4 = sext <2 x i1> %3 to <2 x i64> 24142 ret <2 x i64> %4 24143} 24144 24145define <2 x i64> @ugt_47_v2i64(<2 x i64> %0) { 24146; PWR5-LABEL: ugt_47_v2i64: 24147; PWR5: # %bb.0: 24148; PWR5-NEXT: lis 5, 21845 24149; PWR5-NEXT: lis 6, 13107 24150; PWR5-NEXT: ori 5, 5, 21845 24151; PWR5-NEXT: rotldi 8, 4, 63 24152; PWR5-NEXT: rotldi 9, 3, 63 24153; PWR5-NEXT: rldimi 5, 5, 32, 0 24154; PWR5-NEXT: and 8, 8, 5 24155; PWR5-NEXT: and 5, 9, 5 24156; PWR5-NEXT: ori 6, 6, 13107 24157; PWR5-NEXT: sub 3, 3, 5 24158; PWR5-NEXT: rldimi 6, 6, 32, 0 24159; PWR5-NEXT: sub 4, 4, 8 24160; PWR5-NEXT: and 8, 3, 6 24161; PWR5-NEXT: rotldi 3, 3, 62 24162; PWR5-NEXT: and 3, 3, 6 24163; PWR5-NEXT: lis 7, 3855 24164; PWR5-NEXT: and 5, 4, 6 24165; PWR5-NEXT: rotldi 4, 4, 62 24166; PWR5-NEXT: add 3, 8, 3 24167; PWR5-NEXT: lis 9, 257 24168; PWR5-NEXT: ori 7, 7, 3855 24169; PWR5-NEXT: and 4, 4, 6 24170; PWR5-NEXT: rldicl 6, 3, 60, 4 24171; PWR5-NEXT: ori 9, 9, 257 24172; PWR5-NEXT: rldimi 7, 7, 32, 0 24173; PWR5-NEXT: add 4, 5, 4 24174; PWR5-NEXT: add 3, 3, 6 24175; PWR5-NEXT: rldimi 9, 9, 32, 0 24176; PWR5-NEXT: rldicl 5, 4, 60, 4 24177; PWR5-NEXT: and 3, 3, 7 24178; PWR5-NEXT: add 4, 4, 5 24179; PWR5-NEXT: mulld 3, 3, 9 24180; PWR5-NEXT: and 4, 4, 7 24181; PWR5-NEXT: rldicl 3, 3, 8, 56 24182; PWR5-NEXT: mulld 4, 4, 9 24183; PWR5-NEXT: li 5, 47 24184; PWR5-NEXT: subfic 3, 3, 47 24185; PWR5-NEXT: rldicl 4, 4, 8, 56 24186; PWR5-NEXT: subfe 3, 5, 5 24187; PWR5-NEXT: subfic 4, 4, 47 24188; PWR5-NEXT: subfe 4, 5, 5 24189; PWR5-NEXT: blr 24190; 24191; PWR6-LABEL: ugt_47_v2i64: 24192; PWR6: # %bb.0: 24193; PWR6-NEXT: lis 5, 21845 24194; PWR6-NEXT: lis 6, 13107 24195; PWR6-NEXT: ori 5, 5, 21845 24196; PWR6-NEXT: rotldi 8, 4, 63 24197; PWR6-NEXT: rotldi 9, 3, 63 24198; PWR6-NEXT: rldimi 5, 5, 32, 0 24199; PWR6-NEXT: and 8, 8, 5 24200; PWR6-NEXT: and 5, 9, 5 24201; PWR6-NEXT: ori 6, 6, 13107 24202; PWR6-NEXT: sub 3, 3, 5 24203; PWR6-NEXT: rldimi 6, 6, 32, 0 24204; PWR6-NEXT: sub 4, 4, 8 24205; PWR6-NEXT: and 8, 3, 6 24206; PWR6-NEXT: rotldi 3, 3, 62 24207; PWR6-NEXT: and 3, 3, 6 24208; PWR6-NEXT: lis 7, 3855 24209; PWR6-NEXT: and 5, 4, 6 24210; PWR6-NEXT: rotldi 4, 4, 62 24211; PWR6-NEXT: add 3, 8, 3 24212; PWR6-NEXT: lis 9, 257 24213; PWR6-NEXT: ori 7, 7, 3855 24214; PWR6-NEXT: and 4, 4, 6 24215; PWR6-NEXT: rldicl 6, 3, 60, 4 24216; PWR6-NEXT: ori 9, 9, 257 24217; PWR6-NEXT: rldimi 7, 7, 32, 0 24218; PWR6-NEXT: add 4, 5, 4 24219; PWR6-NEXT: add 3, 3, 6 24220; PWR6-NEXT: rldimi 9, 9, 32, 0 24221; PWR6-NEXT: rldicl 5, 4, 60, 4 24222; PWR6-NEXT: and 3, 3, 7 24223; PWR6-NEXT: add 4, 4, 5 24224; PWR6-NEXT: mulld 3, 3, 9 24225; PWR6-NEXT: and 4, 4, 7 24226; PWR6-NEXT: rldicl 3, 3, 8, 56 24227; PWR6-NEXT: mulld 4, 4, 9 24228; PWR6-NEXT: li 5, 47 24229; PWR6-NEXT: subfic 3, 3, 47 24230; PWR6-NEXT: rldicl 4, 4, 8, 56 24231; PWR6-NEXT: subfe 3, 5, 5 24232; PWR6-NEXT: subfic 4, 4, 47 24233; PWR6-NEXT: subfe 4, 5, 5 24234; PWR6-NEXT: blr 24235; 24236; PWR7-LABEL: ugt_47_v2i64: 24237; PWR7: # %bb.0: 24238; PWR7-NEXT: addi 3, 1, -32 24239; PWR7-NEXT: li 5, -1 24240; PWR7-NEXT: stxvd2x 34, 0, 3 24241; PWR7-NEXT: ld 4, -24(1) 24242; PWR7-NEXT: ld 3, -32(1) 24243; PWR7-NEXT: popcntd 4, 4 24244; PWR7-NEXT: popcntd 3, 3 24245; PWR7-NEXT: cmpldi 4, 47 24246; PWR7-NEXT: li 4, 0 24247; PWR7-NEXT: iselgt 6, 5, 4 24248; PWR7-NEXT: cmpldi 3, 47 24249; PWR7-NEXT: iselgt 3, 5, 4 24250; PWR7-NEXT: std 6, -8(1) 24251; PWR7-NEXT: std 3, -16(1) 24252; PWR7-NEXT: addi 3, 1, -16 24253; PWR7-NEXT: lxvd2x 34, 0, 3 24254; PWR7-NEXT: blr 24255; 24256; PWR8-LABEL: ugt_47_v2i64: 24257; PWR8: # %bb.0: 24258; PWR8-NEXT: addis 3, 2, .LCPI192_0@toc@ha 24259; PWR8-NEXT: vpopcntd 2, 2 24260; PWR8-NEXT: addi 3, 3, .LCPI192_0@toc@l 24261; PWR8-NEXT: lxvd2x 35, 0, 3 24262; PWR8-NEXT: vcmpgtud 2, 2, 3 24263; PWR8-NEXT: blr 24264; 24265; PWR9-LABEL: ugt_47_v2i64: 24266; PWR9: # %bb.0: 24267; PWR9-NEXT: addis 3, 2, .LCPI192_0@toc@ha 24268; PWR9-NEXT: vpopcntd 2, 2 24269; PWR9-NEXT: addi 3, 3, .LCPI192_0@toc@l 24270; PWR9-NEXT: lxv 35, 0(3) 24271; PWR9-NEXT: vcmpgtud 2, 2, 3 24272; PWR9-NEXT: blr 24273 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24274 %3 = icmp ugt <2 x i64> %2, <i64 47, i64 47> 24275 %4 = sext <2 x i1> %3 to <2 x i64> 24276 ret <2 x i64> %4 24277} 24278 24279define <2 x i64> @ult_48_v2i64(<2 x i64> %0) { 24280; PWR5-LABEL: ult_48_v2i64: 24281; PWR5: # %bb.0: 24282; PWR5-NEXT: lis 5, 21845 24283; PWR5-NEXT: lis 6, 13107 24284; PWR5-NEXT: ori 5, 5, 21845 24285; PWR5-NEXT: rotldi 8, 4, 63 24286; PWR5-NEXT: rotldi 9, 3, 63 24287; PWR5-NEXT: rldimi 5, 5, 32, 0 24288; PWR5-NEXT: and 8, 8, 5 24289; PWR5-NEXT: and 5, 9, 5 24290; PWR5-NEXT: ori 6, 6, 13107 24291; PWR5-NEXT: sub 3, 3, 5 24292; PWR5-NEXT: rldimi 6, 6, 32, 0 24293; PWR5-NEXT: sub 4, 4, 8 24294; PWR5-NEXT: and 8, 3, 6 24295; PWR5-NEXT: rotldi 3, 3, 62 24296; PWR5-NEXT: and 3, 3, 6 24297; PWR5-NEXT: lis 7, 3855 24298; PWR5-NEXT: and 5, 4, 6 24299; PWR5-NEXT: rotldi 4, 4, 62 24300; PWR5-NEXT: add 3, 8, 3 24301; PWR5-NEXT: lis 9, 257 24302; PWR5-NEXT: ori 7, 7, 3855 24303; PWR5-NEXT: and 4, 4, 6 24304; PWR5-NEXT: rldicl 6, 3, 60, 4 24305; PWR5-NEXT: ori 9, 9, 257 24306; PWR5-NEXT: rldimi 7, 7, 32, 0 24307; PWR5-NEXT: add 4, 5, 4 24308; PWR5-NEXT: add 3, 3, 6 24309; PWR5-NEXT: rldimi 9, 9, 32, 0 24310; PWR5-NEXT: rldicl 5, 4, 60, 4 24311; PWR5-NEXT: and 3, 3, 7 24312; PWR5-NEXT: add 4, 4, 5 24313; PWR5-NEXT: mulld 3, 3, 9 24314; PWR5-NEXT: and 4, 4, 7 24315; PWR5-NEXT: rldicl 3, 3, 8, 56 24316; PWR5-NEXT: li 5, 48 24317; PWR5-NEXT: mulld 4, 4, 9 24318; PWR5-NEXT: subc 6, 3, 5 24319; PWR5-NEXT: rldicl 4, 4, 8, 56 24320; PWR5-NEXT: subfe 3, 3, 3 24321; PWR5-NEXT: subc 5, 4, 5 24322; PWR5-NEXT: subfe 4, 4, 4 24323; PWR5-NEXT: blr 24324; 24325; PWR6-LABEL: ult_48_v2i64: 24326; PWR6: # %bb.0: 24327; PWR6-NEXT: lis 5, 21845 24328; PWR6-NEXT: lis 6, 13107 24329; PWR6-NEXT: ori 5, 5, 21845 24330; PWR6-NEXT: rotldi 8, 4, 63 24331; PWR6-NEXT: rotldi 9, 3, 63 24332; PWR6-NEXT: rldimi 5, 5, 32, 0 24333; PWR6-NEXT: and 8, 8, 5 24334; PWR6-NEXT: and 5, 9, 5 24335; PWR6-NEXT: ori 6, 6, 13107 24336; PWR6-NEXT: sub 3, 3, 5 24337; PWR6-NEXT: rldimi 6, 6, 32, 0 24338; PWR6-NEXT: sub 4, 4, 8 24339; PWR6-NEXT: and 8, 3, 6 24340; PWR6-NEXT: rotldi 3, 3, 62 24341; PWR6-NEXT: and 3, 3, 6 24342; PWR6-NEXT: lis 7, 3855 24343; PWR6-NEXT: and 5, 4, 6 24344; PWR6-NEXT: rotldi 4, 4, 62 24345; PWR6-NEXT: add 3, 8, 3 24346; PWR6-NEXT: lis 9, 257 24347; PWR6-NEXT: ori 7, 7, 3855 24348; PWR6-NEXT: and 4, 4, 6 24349; PWR6-NEXT: rldicl 6, 3, 60, 4 24350; PWR6-NEXT: ori 9, 9, 257 24351; PWR6-NEXT: rldimi 7, 7, 32, 0 24352; PWR6-NEXT: add 4, 5, 4 24353; PWR6-NEXT: add 3, 3, 6 24354; PWR6-NEXT: rldimi 9, 9, 32, 0 24355; PWR6-NEXT: rldicl 5, 4, 60, 4 24356; PWR6-NEXT: and 3, 3, 7 24357; PWR6-NEXT: add 4, 4, 5 24358; PWR6-NEXT: mulld 3, 3, 9 24359; PWR6-NEXT: and 4, 4, 7 24360; PWR6-NEXT: rldicl 3, 3, 8, 56 24361; PWR6-NEXT: li 5, 48 24362; PWR6-NEXT: mulld 4, 4, 9 24363; PWR6-NEXT: subc 6, 3, 5 24364; PWR6-NEXT: rldicl 4, 4, 8, 56 24365; PWR6-NEXT: subfe 3, 3, 3 24366; PWR6-NEXT: subc 5, 4, 5 24367; PWR6-NEXT: subfe 4, 4, 4 24368; PWR6-NEXT: blr 24369; 24370; PWR7-LABEL: ult_48_v2i64: 24371; PWR7: # %bb.0: 24372; PWR7-NEXT: addi 3, 1, -32 24373; PWR7-NEXT: li 5, -1 24374; PWR7-NEXT: stxvd2x 34, 0, 3 24375; PWR7-NEXT: ld 4, -24(1) 24376; PWR7-NEXT: ld 3, -32(1) 24377; PWR7-NEXT: popcntd 4, 4 24378; PWR7-NEXT: popcntd 3, 3 24379; PWR7-NEXT: cmpldi 4, 48 24380; PWR7-NEXT: li 4, 0 24381; PWR7-NEXT: isellt 6, 5, 4 24382; PWR7-NEXT: cmpldi 3, 48 24383; PWR7-NEXT: isellt 3, 5, 4 24384; PWR7-NEXT: std 6, -8(1) 24385; PWR7-NEXT: std 3, -16(1) 24386; PWR7-NEXT: addi 3, 1, -16 24387; PWR7-NEXT: lxvd2x 34, 0, 3 24388; PWR7-NEXT: blr 24389; 24390; PWR8-LABEL: ult_48_v2i64: 24391; PWR8: # %bb.0: 24392; PWR8-NEXT: addis 3, 2, .LCPI193_0@toc@ha 24393; PWR8-NEXT: vpopcntd 2, 2 24394; PWR8-NEXT: addi 3, 3, .LCPI193_0@toc@l 24395; PWR8-NEXT: lxvd2x 35, 0, 3 24396; PWR8-NEXT: vcmpgtud 2, 3, 2 24397; PWR8-NEXT: blr 24398; 24399; PWR9-LABEL: ult_48_v2i64: 24400; PWR9: # %bb.0: 24401; PWR9-NEXT: addis 3, 2, .LCPI193_0@toc@ha 24402; PWR9-NEXT: vpopcntd 2, 2 24403; PWR9-NEXT: addi 3, 3, .LCPI193_0@toc@l 24404; PWR9-NEXT: lxv 35, 0(3) 24405; PWR9-NEXT: vcmpgtud 2, 3, 2 24406; PWR9-NEXT: blr 24407 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24408 %3 = icmp ult <2 x i64> %2, <i64 48, i64 48> 24409 %4 = sext <2 x i1> %3 to <2 x i64> 24410 ret <2 x i64> %4 24411} 24412 24413define <2 x i64> @ugt_48_v2i64(<2 x i64> %0) { 24414; PWR5-LABEL: ugt_48_v2i64: 24415; PWR5: # %bb.0: 24416; PWR5-NEXT: lis 5, 21845 24417; PWR5-NEXT: lis 6, 13107 24418; PWR5-NEXT: ori 5, 5, 21845 24419; PWR5-NEXT: rotldi 8, 4, 63 24420; PWR5-NEXT: rotldi 9, 3, 63 24421; PWR5-NEXT: rldimi 5, 5, 32, 0 24422; PWR5-NEXT: and 8, 8, 5 24423; PWR5-NEXT: and 5, 9, 5 24424; PWR5-NEXT: ori 6, 6, 13107 24425; PWR5-NEXT: sub 3, 3, 5 24426; PWR5-NEXT: rldimi 6, 6, 32, 0 24427; PWR5-NEXT: sub 4, 4, 8 24428; PWR5-NEXT: and 8, 3, 6 24429; PWR5-NEXT: rotldi 3, 3, 62 24430; PWR5-NEXT: and 3, 3, 6 24431; PWR5-NEXT: lis 7, 3855 24432; PWR5-NEXT: and 5, 4, 6 24433; PWR5-NEXT: rotldi 4, 4, 62 24434; PWR5-NEXT: add 3, 8, 3 24435; PWR5-NEXT: lis 9, 257 24436; PWR5-NEXT: ori 7, 7, 3855 24437; PWR5-NEXT: and 4, 4, 6 24438; PWR5-NEXT: rldicl 6, 3, 60, 4 24439; PWR5-NEXT: ori 9, 9, 257 24440; PWR5-NEXT: rldimi 7, 7, 32, 0 24441; PWR5-NEXT: add 4, 5, 4 24442; PWR5-NEXT: add 3, 3, 6 24443; PWR5-NEXT: rldimi 9, 9, 32, 0 24444; PWR5-NEXT: rldicl 5, 4, 60, 4 24445; PWR5-NEXT: and 3, 3, 7 24446; PWR5-NEXT: add 4, 4, 5 24447; PWR5-NEXT: mulld 3, 3, 9 24448; PWR5-NEXT: and 4, 4, 7 24449; PWR5-NEXT: rldicl 3, 3, 8, 56 24450; PWR5-NEXT: mulld 4, 4, 9 24451; PWR5-NEXT: li 5, 48 24452; PWR5-NEXT: subfic 3, 3, 48 24453; PWR5-NEXT: rldicl 4, 4, 8, 56 24454; PWR5-NEXT: subfe 3, 5, 5 24455; PWR5-NEXT: subfic 4, 4, 48 24456; PWR5-NEXT: subfe 4, 5, 5 24457; PWR5-NEXT: blr 24458; 24459; PWR6-LABEL: ugt_48_v2i64: 24460; PWR6: # %bb.0: 24461; PWR6-NEXT: lis 5, 21845 24462; PWR6-NEXT: lis 6, 13107 24463; PWR6-NEXT: ori 5, 5, 21845 24464; PWR6-NEXT: rotldi 8, 4, 63 24465; PWR6-NEXT: rotldi 9, 3, 63 24466; PWR6-NEXT: rldimi 5, 5, 32, 0 24467; PWR6-NEXT: and 8, 8, 5 24468; PWR6-NEXT: and 5, 9, 5 24469; PWR6-NEXT: ori 6, 6, 13107 24470; PWR6-NEXT: sub 3, 3, 5 24471; PWR6-NEXT: rldimi 6, 6, 32, 0 24472; PWR6-NEXT: sub 4, 4, 8 24473; PWR6-NEXT: and 8, 3, 6 24474; PWR6-NEXT: rotldi 3, 3, 62 24475; PWR6-NEXT: and 3, 3, 6 24476; PWR6-NEXT: lis 7, 3855 24477; PWR6-NEXT: and 5, 4, 6 24478; PWR6-NEXT: rotldi 4, 4, 62 24479; PWR6-NEXT: add 3, 8, 3 24480; PWR6-NEXT: lis 9, 257 24481; PWR6-NEXT: ori 7, 7, 3855 24482; PWR6-NEXT: and 4, 4, 6 24483; PWR6-NEXT: rldicl 6, 3, 60, 4 24484; PWR6-NEXT: ori 9, 9, 257 24485; PWR6-NEXT: rldimi 7, 7, 32, 0 24486; PWR6-NEXT: add 4, 5, 4 24487; PWR6-NEXT: add 3, 3, 6 24488; PWR6-NEXT: rldimi 9, 9, 32, 0 24489; PWR6-NEXT: rldicl 5, 4, 60, 4 24490; PWR6-NEXT: and 3, 3, 7 24491; PWR6-NEXT: add 4, 4, 5 24492; PWR6-NEXT: mulld 3, 3, 9 24493; PWR6-NEXT: and 4, 4, 7 24494; PWR6-NEXT: rldicl 3, 3, 8, 56 24495; PWR6-NEXT: mulld 4, 4, 9 24496; PWR6-NEXT: li 5, 48 24497; PWR6-NEXT: subfic 3, 3, 48 24498; PWR6-NEXT: rldicl 4, 4, 8, 56 24499; PWR6-NEXT: subfe 3, 5, 5 24500; PWR6-NEXT: subfic 4, 4, 48 24501; PWR6-NEXT: subfe 4, 5, 5 24502; PWR6-NEXT: blr 24503; 24504; PWR7-LABEL: ugt_48_v2i64: 24505; PWR7: # %bb.0: 24506; PWR7-NEXT: addi 3, 1, -32 24507; PWR7-NEXT: li 5, -1 24508; PWR7-NEXT: stxvd2x 34, 0, 3 24509; PWR7-NEXT: ld 4, -24(1) 24510; PWR7-NEXT: ld 3, -32(1) 24511; PWR7-NEXT: popcntd 4, 4 24512; PWR7-NEXT: popcntd 3, 3 24513; PWR7-NEXT: cmpldi 4, 48 24514; PWR7-NEXT: li 4, 0 24515; PWR7-NEXT: iselgt 6, 5, 4 24516; PWR7-NEXT: cmpldi 3, 48 24517; PWR7-NEXT: iselgt 3, 5, 4 24518; PWR7-NEXT: std 6, -8(1) 24519; PWR7-NEXT: std 3, -16(1) 24520; PWR7-NEXT: addi 3, 1, -16 24521; PWR7-NEXT: lxvd2x 34, 0, 3 24522; PWR7-NEXT: blr 24523; 24524; PWR8-LABEL: ugt_48_v2i64: 24525; PWR8: # %bb.0: 24526; PWR8-NEXT: addis 3, 2, .LCPI194_0@toc@ha 24527; PWR8-NEXT: vpopcntd 2, 2 24528; PWR8-NEXT: addi 3, 3, .LCPI194_0@toc@l 24529; PWR8-NEXT: lxvd2x 35, 0, 3 24530; PWR8-NEXT: vcmpgtud 2, 2, 3 24531; PWR8-NEXT: blr 24532; 24533; PWR9-LABEL: ugt_48_v2i64: 24534; PWR9: # %bb.0: 24535; PWR9-NEXT: addis 3, 2, .LCPI194_0@toc@ha 24536; PWR9-NEXT: vpopcntd 2, 2 24537; PWR9-NEXT: addi 3, 3, .LCPI194_0@toc@l 24538; PWR9-NEXT: lxv 35, 0(3) 24539; PWR9-NEXT: vcmpgtud 2, 2, 3 24540; PWR9-NEXT: blr 24541 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24542 %3 = icmp ugt <2 x i64> %2, <i64 48, i64 48> 24543 %4 = sext <2 x i1> %3 to <2 x i64> 24544 ret <2 x i64> %4 24545} 24546 24547define <2 x i64> @ult_49_v2i64(<2 x i64> %0) { 24548; PWR5-LABEL: ult_49_v2i64: 24549; PWR5: # %bb.0: 24550; PWR5-NEXT: lis 5, 21845 24551; PWR5-NEXT: lis 6, 13107 24552; PWR5-NEXT: ori 5, 5, 21845 24553; PWR5-NEXT: rotldi 8, 4, 63 24554; PWR5-NEXT: rotldi 9, 3, 63 24555; PWR5-NEXT: rldimi 5, 5, 32, 0 24556; PWR5-NEXT: and 8, 8, 5 24557; PWR5-NEXT: and 5, 9, 5 24558; PWR5-NEXT: ori 6, 6, 13107 24559; PWR5-NEXT: sub 3, 3, 5 24560; PWR5-NEXT: rldimi 6, 6, 32, 0 24561; PWR5-NEXT: sub 4, 4, 8 24562; PWR5-NEXT: and 8, 3, 6 24563; PWR5-NEXT: rotldi 3, 3, 62 24564; PWR5-NEXT: and 3, 3, 6 24565; PWR5-NEXT: lis 7, 3855 24566; PWR5-NEXT: and 5, 4, 6 24567; PWR5-NEXT: rotldi 4, 4, 62 24568; PWR5-NEXT: add 3, 8, 3 24569; PWR5-NEXT: lis 9, 257 24570; PWR5-NEXT: ori 7, 7, 3855 24571; PWR5-NEXT: and 4, 4, 6 24572; PWR5-NEXT: rldicl 6, 3, 60, 4 24573; PWR5-NEXT: ori 9, 9, 257 24574; PWR5-NEXT: rldimi 7, 7, 32, 0 24575; PWR5-NEXT: add 4, 5, 4 24576; PWR5-NEXT: add 3, 3, 6 24577; PWR5-NEXT: rldimi 9, 9, 32, 0 24578; PWR5-NEXT: rldicl 5, 4, 60, 4 24579; PWR5-NEXT: and 3, 3, 7 24580; PWR5-NEXT: add 4, 4, 5 24581; PWR5-NEXT: mulld 3, 3, 9 24582; PWR5-NEXT: and 4, 4, 7 24583; PWR5-NEXT: rldicl 3, 3, 8, 56 24584; PWR5-NEXT: li 5, 49 24585; PWR5-NEXT: mulld 4, 4, 9 24586; PWR5-NEXT: subc 6, 3, 5 24587; PWR5-NEXT: rldicl 4, 4, 8, 56 24588; PWR5-NEXT: subfe 3, 3, 3 24589; PWR5-NEXT: subc 5, 4, 5 24590; PWR5-NEXT: subfe 4, 4, 4 24591; PWR5-NEXT: blr 24592; 24593; PWR6-LABEL: ult_49_v2i64: 24594; PWR6: # %bb.0: 24595; PWR6-NEXT: lis 5, 21845 24596; PWR6-NEXT: lis 6, 13107 24597; PWR6-NEXT: ori 5, 5, 21845 24598; PWR6-NEXT: rotldi 8, 4, 63 24599; PWR6-NEXT: rotldi 9, 3, 63 24600; PWR6-NEXT: rldimi 5, 5, 32, 0 24601; PWR6-NEXT: and 8, 8, 5 24602; PWR6-NEXT: and 5, 9, 5 24603; PWR6-NEXT: ori 6, 6, 13107 24604; PWR6-NEXT: sub 3, 3, 5 24605; PWR6-NEXT: rldimi 6, 6, 32, 0 24606; PWR6-NEXT: sub 4, 4, 8 24607; PWR6-NEXT: and 8, 3, 6 24608; PWR6-NEXT: rotldi 3, 3, 62 24609; PWR6-NEXT: and 3, 3, 6 24610; PWR6-NEXT: lis 7, 3855 24611; PWR6-NEXT: and 5, 4, 6 24612; PWR6-NEXT: rotldi 4, 4, 62 24613; PWR6-NEXT: add 3, 8, 3 24614; PWR6-NEXT: lis 9, 257 24615; PWR6-NEXT: ori 7, 7, 3855 24616; PWR6-NEXT: and 4, 4, 6 24617; PWR6-NEXT: rldicl 6, 3, 60, 4 24618; PWR6-NEXT: ori 9, 9, 257 24619; PWR6-NEXT: rldimi 7, 7, 32, 0 24620; PWR6-NEXT: add 4, 5, 4 24621; PWR6-NEXT: add 3, 3, 6 24622; PWR6-NEXT: rldimi 9, 9, 32, 0 24623; PWR6-NEXT: rldicl 5, 4, 60, 4 24624; PWR6-NEXT: and 3, 3, 7 24625; PWR6-NEXT: add 4, 4, 5 24626; PWR6-NEXT: mulld 3, 3, 9 24627; PWR6-NEXT: and 4, 4, 7 24628; PWR6-NEXT: rldicl 3, 3, 8, 56 24629; PWR6-NEXT: li 5, 49 24630; PWR6-NEXT: mulld 4, 4, 9 24631; PWR6-NEXT: subc 6, 3, 5 24632; PWR6-NEXT: rldicl 4, 4, 8, 56 24633; PWR6-NEXT: subfe 3, 3, 3 24634; PWR6-NEXT: subc 5, 4, 5 24635; PWR6-NEXT: subfe 4, 4, 4 24636; PWR6-NEXT: blr 24637; 24638; PWR7-LABEL: ult_49_v2i64: 24639; PWR7: # %bb.0: 24640; PWR7-NEXT: addi 3, 1, -32 24641; PWR7-NEXT: li 5, -1 24642; PWR7-NEXT: stxvd2x 34, 0, 3 24643; PWR7-NEXT: ld 4, -24(1) 24644; PWR7-NEXT: ld 3, -32(1) 24645; PWR7-NEXT: popcntd 4, 4 24646; PWR7-NEXT: popcntd 3, 3 24647; PWR7-NEXT: cmpldi 4, 49 24648; PWR7-NEXT: li 4, 0 24649; PWR7-NEXT: isellt 6, 5, 4 24650; PWR7-NEXT: cmpldi 3, 49 24651; PWR7-NEXT: isellt 3, 5, 4 24652; PWR7-NEXT: std 6, -8(1) 24653; PWR7-NEXT: std 3, -16(1) 24654; PWR7-NEXT: addi 3, 1, -16 24655; PWR7-NEXT: lxvd2x 34, 0, 3 24656; PWR7-NEXT: blr 24657; 24658; PWR8-LABEL: ult_49_v2i64: 24659; PWR8: # %bb.0: 24660; PWR8-NEXT: addis 3, 2, .LCPI195_0@toc@ha 24661; PWR8-NEXT: vpopcntd 2, 2 24662; PWR8-NEXT: addi 3, 3, .LCPI195_0@toc@l 24663; PWR8-NEXT: lxvd2x 35, 0, 3 24664; PWR8-NEXT: vcmpgtud 2, 3, 2 24665; PWR8-NEXT: blr 24666; 24667; PWR9-LABEL: ult_49_v2i64: 24668; PWR9: # %bb.0: 24669; PWR9-NEXT: addis 3, 2, .LCPI195_0@toc@ha 24670; PWR9-NEXT: vpopcntd 2, 2 24671; PWR9-NEXT: addi 3, 3, .LCPI195_0@toc@l 24672; PWR9-NEXT: lxv 35, 0(3) 24673; PWR9-NEXT: vcmpgtud 2, 3, 2 24674; PWR9-NEXT: blr 24675 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24676 %3 = icmp ult <2 x i64> %2, <i64 49, i64 49> 24677 %4 = sext <2 x i1> %3 to <2 x i64> 24678 ret <2 x i64> %4 24679} 24680 24681define <2 x i64> @ugt_49_v2i64(<2 x i64> %0) { 24682; PWR5-LABEL: ugt_49_v2i64: 24683; PWR5: # %bb.0: 24684; PWR5-NEXT: lis 5, 21845 24685; PWR5-NEXT: lis 6, 13107 24686; PWR5-NEXT: ori 5, 5, 21845 24687; PWR5-NEXT: rotldi 8, 4, 63 24688; PWR5-NEXT: rotldi 9, 3, 63 24689; PWR5-NEXT: rldimi 5, 5, 32, 0 24690; PWR5-NEXT: and 8, 8, 5 24691; PWR5-NEXT: and 5, 9, 5 24692; PWR5-NEXT: ori 6, 6, 13107 24693; PWR5-NEXT: sub 3, 3, 5 24694; PWR5-NEXT: rldimi 6, 6, 32, 0 24695; PWR5-NEXT: sub 4, 4, 8 24696; PWR5-NEXT: and 8, 3, 6 24697; PWR5-NEXT: rotldi 3, 3, 62 24698; PWR5-NEXT: and 3, 3, 6 24699; PWR5-NEXT: lis 7, 3855 24700; PWR5-NEXT: and 5, 4, 6 24701; PWR5-NEXT: rotldi 4, 4, 62 24702; PWR5-NEXT: add 3, 8, 3 24703; PWR5-NEXT: lis 9, 257 24704; PWR5-NEXT: ori 7, 7, 3855 24705; PWR5-NEXT: and 4, 4, 6 24706; PWR5-NEXT: rldicl 6, 3, 60, 4 24707; PWR5-NEXT: ori 9, 9, 257 24708; PWR5-NEXT: rldimi 7, 7, 32, 0 24709; PWR5-NEXT: add 4, 5, 4 24710; PWR5-NEXT: add 3, 3, 6 24711; PWR5-NEXT: rldimi 9, 9, 32, 0 24712; PWR5-NEXT: rldicl 5, 4, 60, 4 24713; PWR5-NEXT: and 3, 3, 7 24714; PWR5-NEXT: add 4, 4, 5 24715; PWR5-NEXT: mulld 3, 3, 9 24716; PWR5-NEXT: and 4, 4, 7 24717; PWR5-NEXT: rldicl 3, 3, 8, 56 24718; PWR5-NEXT: mulld 4, 4, 9 24719; PWR5-NEXT: li 5, 49 24720; PWR5-NEXT: subfic 3, 3, 49 24721; PWR5-NEXT: rldicl 4, 4, 8, 56 24722; PWR5-NEXT: subfe 3, 5, 5 24723; PWR5-NEXT: subfic 4, 4, 49 24724; PWR5-NEXT: subfe 4, 5, 5 24725; PWR5-NEXT: blr 24726; 24727; PWR6-LABEL: ugt_49_v2i64: 24728; PWR6: # %bb.0: 24729; PWR6-NEXT: lis 5, 21845 24730; PWR6-NEXT: lis 6, 13107 24731; PWR6-NEXT: ori 5, 5, 21845 24732; PWR6-NEXT: rotldi 8, 4, 63 24733; PWR6-NEXT: rotldi 9, 3, 63 24734; PWR6-NEXT: rldimi 5, 5, 32, 0 24735; PWR6-NEXT: and 8, 8, 5 24736; PWR6-NEXT: and 5, 9, 5 24737; PWR6-NEXT: ori 6, 6, 13107 24738; PWR6-NEXT: sub 3, 3, 5 24739; PWR6-NEXT: rldimi 6, 6, 32, 0 24740; PWR6-NEXT: sub 4, 4, 8 24741; PWR6-NEXT: and 8, 3, 6 24742; PWR6-NEXT: rotldi 3, 3, 62 24743; PWR6-NEXT: and 3, 3, 6 24744; PWR6-NEXT: lis 7, 3855 24745; PWR6-NEXT: and 5, 4, 6 24746; PWR6-NEXT: rotldi 4, 4, 62 24747; PWR6-NEXT: add 3, 8, 3 24748; PWR6-NEXT: lis 9, 257 24749; PWR6-NEXT: ori 7, 7, 3855 24750; PWR6-NEXT: and 4, 4, 6 24751; PWR6-NEXT: rldicl 6, 3, 60, 4 24752; PWR6-NEXT: ori 9, 9, 257 24753; PWR6-NEXT: rldimi 7, 7, 32, 0 24754; PWR6-NEXT: add 4, 5, 4 24755; PWR6-NEXT: add 3, 3, 6 24756; PWR6-NEXT: rldimi 9, 9, 32, 0 24757; PWR6-NEXT: rldicl 5, 4, 60, 4 24758; PWR6-NEXT: and 3, 3, 7 24759; PWR6-NEXT: add 4, 4, 5 24760; PWR6-NEXT: mulld 3, 3, 9 24761; PWR6-NEXT: and 4, 4, 7 24762; PWR6-NEXT: rldicl 3, 3, 8, 56 24763; PWR6-NEXT: mulld 4, 4, 9 24764; PWR6-NEXT: li 5, 49 24765; PWR6-NEXT: subfic 3, 3, 49 24766; PWR6-NEXT: rldicl 4, 4, 8, 56 24767; PWR6-NEXT: subfe 3, 5, 5 24768; PWR6-NEXT: subfic 4, 4, 49 24769; PWR6-NEXT: subfe 4, 5, 5 24770; PWR6-NEXT: blr 24771; 24772; PWR7-LABEL: ugt_49_v2i64: 24773; PWR7: # %bb.0: 24774; PWR7-NEXT: addi 3, 1, -32 24775; PWR7-NEXT: li 5, -1 24776; PWR7-NEXT: stxvd2x 34, 0, 3 24777; PWR7-NEXT: ld 4, -24(1) 24778; PWR7-NEXT: ld 3, -32(1) 24779; PWR7-NEXT: popcntd 4, 4 24780; PWR7-NEXT: popcntd 3, 3 24781; PWR7-NEXT: cmpldi 4, 49 24782; PWR7-NEXT: li 4, 0 24783; PWR7-NEXT: iselgt 6, 5, 4 24784; PWR7-NEXT: cmpldi 3, 49 24785; PWR7-NEXT: iselgt 3, 5, 4 24786; PWR7-NEXT: std 6, -8(1) 24787; PWR7-NEXT: std 3, -16(1) 24788; PWR7-NEXT: addi 3, 1, -16 24789; PWR7-NEXT: lxvd2x 34, 0, 3 24790; PWR7-NEXT: blr 24791; 24792; PWR8-LABEL: ugt_49_v2i64: 24793; PWR8: # %bb.0: 24794; PWR8-NEXT: addis 3, 2, .LCPI196_0@toc@ha 24795; PWR8-NEXT: vpopcntd 2, 2 24796; PWR8-NEXT: addi 3, 3, .LCPI196_0@toc@l 24797; PWR8-NEXT: lxvd2x 35, 0, 3 24798; PWR8-NEXT: vcmpgtud 2, 2, 3 24799; PWR8-NEXT: blr 24800; 24801; PWR9-LABEL: ugt_49_v2i64: 24802; PWR9: # %bb.0: 24803; PWR9-NEXT: addis 3, 2, .LCPI196_0@toc@ha 24804; PWR9-NEXT: vpopcntd 2, 2 24805; PWR9-NEXT: addi 3, 3, .LCPI196_0@toc@l 24806; PWR9-NEXT: lxv 35, 0(3) 24807; PWR9-NEXT: vcmpgtud 2, 2, 3 24808; PWR9-NEXT: blr 24809 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24810 %3 = icmp ugt <2 x i64> %2, <i64 49, i64 49> 24811 %4 = sext <2 x i1> %3 to <2 x i64> 24812 ret <2 x i64> %4 24813} 24814 24815define <2 x i64> @ult_50_v2i64(<2 x i64> %0) { 24816; PWR5-LABEL: ult_50_v2i64: 24817; PWR5: # %bb.0: 24818; PWR5-NEXT: lis 5, 21845 24819; PWR5-NEXT: lis 6, 13107 24820; PWR5-NEXT: ori 5, 5, 21845 24821; PWR5-NEXT: rotldi 8, 4, 63 24822; PWR5-NEXT: rotldi 9, 3, 63 24823; PWR5-NEXT: rldimi 5, 5, 32, 0 24824; PWR5-NEXT: and 8, 8, 5 24825; PWR5-NEXT: and 5, 9, 5 24826; PWR5-NEXT: ori 6, 6, 13107 24827; PWR5-NEXT: sub 3, 3, 5 24828; PWR5-NEXT: rldimi 6, 6, 32, 0 24829; PWR5-NEXT: sub 4, 4, 8 24830; PWR5-NEXT: and 8, 3, 6 24831; PWR5-NEXT: rotldi 3, 3, 62 24832; PWR5-NEXT: and 3, 3, 6 24833; PWR5-NEXT: lis 7, 3855 24834; PWR5-NEXT: and 5, 4, 6 24835; PWR5-NEXT: rotldi 4, 4, 62 24836; PWR5-NEXT: add 3, 8, 3 24837; PWR5-NEXT: lis 9, 257 24838; PWR5-NEXT: ori 7, 7, 3855 24839; PWR5-NEXT: and 4, 4, 6 24840; PWR5-NEXT: rldicl 6, 3, 60, 4 24841; PWR5-NEXT: ori 9, 9, 257 24842; PWR5-NEXT: rldimi 7, 7, 32, 0 24843; PWR5-NEXT: add 4, 5, 4 24844; PWR5-NEXT: add 3, 3, 6 24845; PWR5-NEXT: rldimi 9, 9, 32, 0 24846; PWR5-NEXT: rldicl 5, 4, 60, 4 24847; PWR5-NEXT: and 3, 3, 7 24848; PWR5-NEXT: add 4, 4, 5 24849; PWR5-NEXT: mulld 3, 3, 9 24850; PWR5-NEXT: and 4, 4, 7 24851; PWR5-NEXT: rldicl 3, 3, 8, 56 24852; PWR5-NEXT: li 5, 50 24853; PWR5-NEXT: mulld 4, 4, 9 24854; PWR5-NEXT: subc 6, 3, 5 24855; PWR5-NEXT: rldicl 4, 4, 8, 56 24856; PWR5-NEXT: subfe 3, 3, 3 24857; PWR5-NEXT: subc 5, 4, 5 24858; PWR5-NEXT: subfe 4, 4, 4 24859; PWR5-NEXT: blr 24860; 24861; PWR6-LABEL: ult_50_v2i64: 24862; PWR6: # %bb.0: 24863; PWR6-NEXT: lis 5, 21845 24864; PWR6-NEXT: lis 6, 13107 24865; PWR6-NEXT: ori 5, 5, 21845 24866; PWR6-NEXT: rotldi 8, 4, 63 24867; PWR6-NEXT: rotldi 9, 3, 63 24868; PWR6-NEXT: rldimi 5, 5, 32, 0 24869; PWR6-NEXT: and 8, 8, 5 24870; PWR6-NEXT: and 5, 9, 5 24871; PWR6-NEXT: ori 6, 6, 13107 24872; PWR6-NEXT: sub 3, 3, 5 24873; PWR6-NEXT: rldimi 6, 6, 32, 0 24874; PWR6-NEXT: sub 4, 4, 8 24875; PWR6-NEXT: and 8, 3, 6 24876; PWR6-NEXT: rotldi 3, 3, 62 24877; PWR6-NEXT: and 3, 3, 6 24878; PWR6-NEXT: lis 7, 3855 24879; PWR6-NEXT: and 5, 4, 6 24880; PWR6-NEXT: rotldi 4, 4, 62 24881; PWR6-NEXT: add 3, 8, 3 24882; PWR6-NEXT: lis 9, 257 24883; PWR6-NEXT: ori 7, 7, 3855 24884; PWR6-NEXT: and 4, 4, 6 24885; PWR6-NEXT: rldicl 6, 3, 60, 4 24886; PWR6-NEXT: ori 9, 9, 257 24887; PWR6-NEXT: rldimi 7, 7, 32, 0 24888; PWR6-NEXT: add 4, 5, 4 24889; PWR6-NEXT: add 3, 3, 6 24890; PWR6-NEXT: rldimi 9, 9, 32, 0 24891; PWR6-NEXT: rldicl 5, 4, 60, 4 24892; PWR6-NEXT: and 3, 3, 7 24893; PWR6-NEXT: add 4, 4, 5 24894; PWR6-NEXT: mulld 3, 3, 9 24895; PWR6-NEXT: and 4, 4, 7 24896; PWR6-NEXT: rldicl 3, 3, 8, 56 24897; PWR6-NEXT: li 5, 50 24898; PWR6-NEXT: mulld 4, 4, 9 24899; PWR6-NEXT: subc 6, 3, 5 24900; PWR6-NEXT: rldicl 4, 4, 8, 56 24901; PWR6-NEXT: subfe 3, 3, 3 24902; PWR6-NEXT: subc 5, 4, 5 24903; PWR6-NEXT: subfe 4, 4, 4 24904; PWR6-NEXT: blr 24905; 24906; PWR7-LABEL: ult_50_v2i64: 24907; PWR7: # %bb.0: 24908; PWR7-NEXT: addi 3, 1, -32 24909; PWR7-NEXT: li 5, -1 24910; PWR7-NEXT: stxvd2x 34, 0, 3 24911; PWR7-NEXT: ld 4, -24(1) 24912; PWR7-NEXT: ld 3, -32(1) 24913; PWR7-NEXT: popcntd 4, 4 24914; PWR7-NEXT: popcntd 3, 3 24915; PWR7-NEXT: cmpldi 4, 50 24916; PWR7-NEXT: li 4, 0 24917; PWR7-NEXT: isellt 6, 5, 4 24918; PWR7-NEXT: cmpldi 3, 50 24919; PWR7-NEXT: isellt 3, 5, 4 24920; PWR7-NEXT: std 6, -8(1) 24921; PWR7-NEXT: std 3, -16(1) 24922; PWR7-NEXT: addi 3, 1, -16 24923; PWR7-NEXT: lxvd2x 34, 0, 3 24924; PWR7-NEXT: blr 24925; 24926; PWR8-LABEL: ult_50_v2i64: 24927; PWR8: # %bb.0: 24928; PWR8-NEXT: addis 3, 2, .LCPI197_0@toc@ha 24929; PWR8-NEXT: vpopcntd 2, 2 24930; PWR8-NEXT: addi 3, 3, .LCPI197_0@toc@l 24931; PWR8-NEXT: lxvd2x 35, 0, 3 24932; PWR8-NEXT: vcmpgtud 2, 3, 2 24933; PWR8-NEXT: blr 24934; 24935; PWR9-LABEL: ult_50_v2i64: 24936; PWR9: # %bb.0: 24937; PWR9-NEXT: addis 3, 2, .LCPI197_0@toc@ha 24938; PWR9-NEXT: vpopcntd 2, 2 24939; PWR9-NEXT: addi 3, 3, .LCPI197_0@toc@l 24940; PWR9-NEXT: lxv 35, 0(3) 24941; PWR9-NEXT: vcmpgtud 2, 3, 2 24942; PWR9-NEXT: blr 24943 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 24944 %3 = icmp ult <2 x i64> %2, <i64 50, i64 50> 24945 %4 = sext <2 x i1> %3 to <2 x i64> 24946 ret <2 x i64> %4 24947} 24948 24949define <2 x i64> @ugt_50_v2i64(<2 x i64> %0) { 24950; PWR5-LABEL: ugt_50_v2i64: 24951; PWR5: # %bb.0: 24952; PWR5-NEXT: lis 5, 21845 24953; PWR5-NEXT: lis 6, 13107 24954; PWR5-NEXT: ori 5, 5, 21845 24955; PWR5-NEXT: rotldi 8, 4, 63 24956; PWR5-NEXT: rotldi 9, 3, 63 24957; PWR5-NEXT: rldimi 5, 5, 32, 0 24958; PWR5-NEXT: and 8, 8, 5 24959; PWR5-NEXT: and 5, 9, 5 24960; PWR5-NEXT: ori 6, 6, 13107 24961; PWR5-NEXT: sub 3, 3, 5 24962; PWR5-NEXT: rldimi 6, 6, 32, 0 24963; PWR5-NEXT: sub 4, 4, 8 24964; PWR5-NEXT: and 8, 3, 6 24965; PWR5-NEXT: rotldi 3, 3, 62 24966; PWR5-NEXT: and 3, 3, 6 24967; PWR5-NEXT: lis 7, 3855 24968; PWR5-NEXT: and 5, 4, 6 24969; PWR5-NEXT: rotldi 4, 4, 62 24970; PWR5-NEXT: add 3, 8, 3 24971; PWR5-NEXT: lis 9, 257 24972; PWR5-NEXT: ori 7, 7, 3855 24973; PWR5-NEXT: and 4, 4, 6 24974; PWR5-NEXT: rldicl 6, 3, 60, 4 24975; PWR5-NEXT: ori 9, 9, 257 24976; PWR5-NEXT: rldimi 7, 7, 32, 0 24977; PWR5-NEXT: add 4, 5, 4 24978; PWR5-NEXT: add 3, 3, 6 24979; PWR5-NEXT: rldimi 9, 9, 32, 0 24980; PWR5-NEXT: rldicl 5, 4, 60, 4 24981; PWR5-NEXT: and 3, 3, 7 24982; PWR5-NEXT: add 4, 4, 5 24983; PWR5-NEXT: mulld 3, 3, 9 24984; PWR5-NEXT: and 4, 4, 7 24985; PWR5-NEXT: rldicl 3, 3, 8, 56 24986; PWR5-NEXT: mulld 4, 4, 9 24987; PWR5-NEXT: li 5, 50 24988; PWR5-NEXT: subfic 3, 3, 50 24989; PWR5-NEXT: rldicl 4, 4, 8, 56 24990; PWR5-NEXT: subfe 3, 5, 5 24991; PWR5-NEXT: subfic 4, 4, 50 24992; PWR5-NEXT: subfe 4, 5, 5 24993; PWR5-NEXT: blr 24994; 24995; PWR6-LABEL: ugt_50_v2i64: 24996; PWR6: # %bb.0: 24997; PWR6-NEXT: lis 5, 21845 24998; PWR6-NEXT: lis 6, 13107 24999; PWR6-NEXT: ori 5, 5, 21845 25000; PWR6-NEXT: rotldi 8, 4, 63 25001; PWR6-NEXT: rotldi 9, 3, 63 25002; PWR6-NEXT: rldimi 5, 5, 32, 0 25003; PWR6-NEXT: and 8, 8, 5 25004; PWR6-NEXT: and 5, 9, 5 25005; PWR6-NEXT: ori 6, 6, 13107 25006; PWR6-NEXT: sub 3, 3, 5 25007; PWR6-NEXT: rldimi 6, 6, 32, 0 25008; PWR6-NEXT: sub 4, 4, 8 25009; PWR6-NEXT: and 8, 3, 6 25010; PWR6-NEXT: rotldi 3, 3, 62 25011; PWR6-NEXT: and 3, 3, 6 25012; PWR6-NEXT: lis 7, 3855 25013; PWR6-NEXT: and 5, 4, 6 25014; PWR6-NEXT: rotldi 4, 4, 62 25015; PWR6-NEXT: add 3, 8, 3 25016; PWR6-NEXT: lis 9, 257 25017; PWR6-NEXT: ori 7, 7, 3855 25018; PWR6-NEXT: and 4, 4, 6 25019; PWR6-NEXT: rldicl 6, 3, 60, 4 25020; PWR6-NEXT: ori 9, 9, 257 25021; PWR6-NEXT: rldimi 7, 7, 32, 0 25022; PWR6-NEXT: add 4, 5, 4 25023; PWR6-NEXT: add 3, 3, 6 25024; PWR6-NEXT: rldimi 9, 9, 32, 0 25025; PWR6-NEXT: rldicl 5, 4, 60, 4 25026; PWR6-NEXT: and 3, 3, 7 25027; PWR6-NEXT: add 4, 4, 5 25028; PWR6-NEXT: mulld 3, 3, 9 25029; PWR6-NEXT: and 4, 4, 7 25030; PWR6-NEXT: rldicl 3, 3, 8, 56 25031; PWR6-NEXT: mulld 4, 4, 9 25032; PWR6-NEXT: li 5, 50 25033; PWR6-NEXT: subfic 3, 3, 50 25034; PWR6-NEXT: rldicl 4, 4, 8, 56 25035; PWR6-NEXT: subfe 3, 5, 5 25036; PWR6-NEXT: subfic 4, 4, 50 25037; PWR6-NEXT: subfe 4, 5, 5 25038; PWR6-NEXT: blr 25039; 25040; PWR7-LABEL: ugt_50_v2i64: 25041; PWR7: # %bb.0: 25042; PWR7-NEXT: addi 3, 1, -32 25043; PWR7-NEXT: li 5, -1 25044; PWR7-NEXT: stxvd2x 34, 0, 3 25045; PWR7-NEXT: ld 4, -24(1) 25046; PWR7-NEXT: ld 3, -32(1) 25047; PWR7-NEXT: popcntd 4, 4 25048; PWR7-NEXT: popcntd 3, 3 25049; PWR7-NEXT: cmpldi 4, 50 25050; PWR7-NEXT: li 4, 0 25051; PWR7-NEXT: iselgt 6, 5, 4 25052; PWR7-NEXT: cmpldi 3, 50 25053; PWR7-NEXT: iselgt 3, 5, 4 25054; PWR7-NEXT: std 6, -8(1) 25055; PWR7-NEXT: std 3, -16(1) 25056; PWR7-NEXT: addi 3, 1, -16 25057; PWR7-NEXT: lxvd2x 34, 0, 3 25058; PWR7-NEXT: blr 25059; 25060; PWR8-LABEL: ugt_50_v2i64: 25061; PWR8: # %bb.0: 25062; PWR8-NEXT: addis 3, 2, .LCPI198_0@toc@ha 25063; PWR8-NEXT: vpopcntd 2, 2 25064; PWR8-NEXT: addi 3, 3, .LCPI198_0@toc@l 25065; PWR8-NEXT: lxvd2x 35, 0, 3 25066; PWR8-NEXT: vcmpgtud 2, 2, 3 25067; PWR8-NEXT: blr 25068; 25069; PWR9-LABEL: ugt_50_v2i64: 25070; PWR9: # %bb.0: 25071; PWR9-NEXT: addis 3, 2, .LCPI198_0@toc@ha 25072; PWR9-NEXT: vpopcntd 2, 2 25073; PWR9-NEXT: addi 3, 3, .LCPI198_0@toc@l 25074; PWR9-NEXT: lxv 35, 0(3) 25075; PWR9-NEXT: vcmpgtud 2, 2, 3 25076; PWR9-NEXT: blr 25077 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25078 %3 = icmp ugt <2 x i64> %2, <i64 50, i64 50> 25079 %4 = sext <2 x i1> %3 to <2 x i64> 25080 ret <2 x i64> %4 25081} 25082 25083define <2 x i64> @ult_51_v2i64(<2 x i64> %0) { 25084; PWR5-LABEL: ult_51_v2i64: 25085; PWR5: # %bb.0: 25086; PWR5-NEXT: lis 5, 21845 25087; PWR5-NEXT: lis 6, 13107 25088; PWR5-NEXT: ori 5, 5, 21845 25089; PWR5-NEXT: rotldi 8, 4, 63 25090; PWR5-NEXT: rotldi 9, 3, 63 25091; PWR5-NEXT: rldimi 5, 5, 32, 0 25092; PWR5-NEXT: and 8, 8, 5 25093; PWR5-NEXT: and 5, 9, 5 25094; PWR5-NEXT: ori 6, 6, 13107 25095; PWR5-NEXT: sub 3, 3, 5 25096; PWR5-NEXT: rldimi 6, 6, 32, 0 25097; PWR5-NEXT: sub 4, 4, 8 25098; PWR5-NEXT: and 8, 3, 6 25099; PWR5-NEXT: rotldi 3, 3, 62 25100; PWR5-NEXT: and 3, 3, 6 25101; PWR5-NEXT: lis 7, 3855 25102; PWR5-NEXT: and 5, 4, 6 25103; PWR5-NEXT: rotldi 4, 4, 62 25104; PWR5-NEXT: add 3, 8, 3 25105; PWR5-NEXT: lis 9, 257 25106; PWR5-NEXT: ori 7, 7, 3855 25107; PWR5-NEXT: and 4, 4, 6 25108; PWR5-NEXT: rldicl 6, 3, 60, 4 25109; PWR5-NEXT: ori 9, 9, 257 25110; PWR5-NEXT: rldimi 7, 7, 32, 0 25111; PWR5-NEXT: add 4, 5, 4 25112; PWR5-NEXT: add 3, 3, 6 25113; PWR5-NEXT: rldimi 9, 9, 32, 0 25114; PWR5-NEXT: rldicl 5, 4, 60, 4 25115; PWR5-NEXT: and 3, 3, 7 25116; PWR5-NEXT: add 4, 4, 5 25117; PWR5-NEXT: mulld 3, 3, 9 25118; PWR5-NEXT: and 4, 4, 7 25119; PWR5-NEXT: rldicl 3, 3, 8, 56 25120; PWR5-NEXT: li 5, 51 25121; PWR5-NEXT: mulld 4, 4, 9 25122; PWR5-NEXT: subc 6, 3, 5 25123; PWR5-NEXT: rldicl 4, 4, 8, 56 25124; PWR5-NEXT: subfe 3, 3, 3 25125; PWR5-NEXT: subc 5, 4, 5 25126; PWR5-NEXT: subfe 4, 4, 4 25127; PWR5-NEXT: blr 25128; 25129; PWR6-LABEL: ult_51_v2i64: 25130; PWR6: # %bb.0: 25131; PWR6-NEXT: lis 5, 21845 25132; PWR6-NEXT: lis 6, 13107 25133; PWR6-NEXT: ori 5, 5, 21845 25134; PWR6-NEXT: rotldi 8, 4, 63 25135; PWR6-NEXT: rotldi 9, 3, 63 25136; PWR6-NEXT: rldimi 5, 5, 32, 0 25137; PWR6-NEXT: and 8, 8, 5 25138; PWR6-NEXT: and 5, 9, 5 25139; PWR6-NEXT: ori 6, 6, 13107 25140; PWR6-NEXT: sub 3, 3, 5 25141; PWR6-NEXT: rldimi 6, 6, 32, 0 25142; PWR6-NEXT: sub 4, 4, 8 25143; PWR6-NEXT: and 8, 3, 6 25144; PWR6-NEXT: rotldi 3, 3, 62 25145; PWR6-NEXT: and 3, 3, 6 25146; PWR6-NEXT: lis 7, 3855 25147; PWR6-NEXT: and 5, 4, 6 25148; PWR6-NEXT: rotldi 4, 4, 62 25149; PWR6-NEXT: add 3, 8, 3 25150; PWR6-NEXT: lis 9, 257 25151; PWR6-NEXT: ori 7, 7, 3855 25152; PWR6-NEXT: and 4, 4, 6 25153; PWR6-NEXT: rldicl 6, 3, 60, 4 25154; PWR6-NEXT: ori 9, 9, 257 25155; PWR6-NEXT: rldimi 7, 7, 32, 0 25156; PWR6-NEXT: add 4, 5, 4 25157; PWR6-NEXT: add 3, 3, 6 25158; PWR6-NEXT: rldimi 9, 9, 32, 0 25159; PWR6-NEXT: rldicl 5, 4, 60, 4 25160; PWR6-NEXT: and 3, 3, 7 25161; PWR6-NEXT: add 4, 4, 5 25162; PWR6-NEXT: mulld 3, 3, 9 25163; PWR6-NEXT: and 4, 4, 7 25164; PWR6-NEXT: rldicl 3, 3, 8, 56 25165; PWR6-NEXT: li 5, 51 25166; PWR6-NEXT: mulld 4, 4, 9 25167; PWR6-NEXT: subc 6, 3, 5 25168; PWR6-NEXT: rldicl 4, 4, 8, 56 25169; PWR6-NEXT: subfe 3, 3, 3 25170; PWR6-NEXT: subc 5, 4, 5 25171; PWR6-NEXT: subfe 4, 4, 4 25172; PWR6-NEXT: blr 25173; 25174; PWR7-LABEL: ult_51_v2i64: 25175; PWR7: # %bb.0: 25176; PWR7-NEXT: addi 3, 1, -32 25177; PWR7-NEXT: li 5, -1 25178; PWR7-NEXT: stxvd2x 34, 0, 3 25179; PWR7-NEXT: ld 4, -24(1) 25180; PWR7-NEXT: ld 3, -32(1) 25181; PWR7-NEXT: popcntd 4, 4 25182; PWR7-NEXT: popcntd 3, 3 25183; PWR7-NEXT: cmpldi 4, 51 25184; PWR7-NEXT: li 4, 0 25185; PWR7-NEXT: isellt 6, 5, 4 25186; PWR7-NEXT: cmpldi 3, 51 25187; PWR7-NEXT: isellt 3, 5, 4 25188; PWR7-NEXT: std 6, -8(1) 25189; PWR7-NEXT: std 3, -16(1) 25190; PWR7-NEXT: addi 3, 1, -16 25191; PWR7-NEXT: lxvd2x 34, 0, 3 25192; PWR7-NEXT: blr 25193; 25194; PWR8-LABEL: ult_51_v2i64: 25195; PWR8: # %bb.0: 25196; PWR8-NEXT: addis 3, 2, .LCPI199_0@toc@ha 25197; PWR8-NEXT: vpopcntd 2, 2 25198; PWR8-NEXT: addi 3, 3, .LCPI199_0@toc@l 25199; PWR8-NEXT: lxvd2x 35, 0, 3 25200; PWR8-NEXT: vcmpgtud 2, 3, 2 25201; PWR8-NEXT: blr 25202; 25203; PWR9-LABEL: ult_51_v2i64: 25204; PWR9: # %bb.0: 25205; PWR9-NEXT: addis 3, 2, .LCPI199_0@toc@ha 25206; PWR9-NEXT: vpopcntd 2, 2 25207; PWR9-NEXT: addi 3, 3, .LCPI199_0@toc@l 25208; PWR9-NEXT: lxv 35, 0(3) 25209; PWR9-NEXT: vcmpgtud 2, 3, 2 25210; PWR9-NEXT: blr 25211 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25212 %3 = icmp ult <2 x i64> %2, <i64 51, i64 51> 25213 %4 = sext <2 x i1> %3 to <2 x i64> 25214 ret <2 x i64> %4 25215} 25216 25217define <2 x i64> @ugt_51_v2i64(<2 x i64> %0) { 25218; PWR5-LABEL: ugt_51_v2i64: 25219; PWR5: # %bb.0: 25220; PWR5-NEXT: lis 5, 21845 25221; PWR5-NEXT: lis 6, 13107 25222; PWR5-NEXT: ori 5, 5, 21845 25223; PWR5-NEXT: rotldi 8, 4, 63 25224; PWR5-NEXT: rotldi 9, 3, 63 25225; PWR5-NEXT: rldimi 5, 5, 32, 0 25226; PWR5-NEXT: and 8, 8, 5 25227; PWR5-NEXT: and 5, 9, 5 25228; PWR5-NEXT: ori 6, 6, 13107 25229; PWR5-NEXT: sub 3, 3, 5 25230; PWR5-NEXT: rldimi 6, 6, 32, 0 25231; PWR5-NEXT: sub 4, 4, 8 25232; PWR5-NEXT: and 8, 3, 6 25233; PWR5-NEXT: rotldi 3, 3, 62 25234; PWR5-NEXT: and 3, 3, 6 25235; PWR5-NEXT: lis 7, 3855 25236; PWR5-NEXT: and 5, 4, 6 25237; PWR5-NEXT: rotldi 4, 4, 62 25238; PWR5-NEXT: add 3, 8, 3 25239; PWR5-NEXT: lis 9, 257 25240; PWR5-NEXT: ori 7, 7, 3855 25241; PWR5-NEXT: and 4, 4, 6 25242; PWR5-NEXT: rldicl 6, 3, 60, 4 25243; PWR5-NEXT: ori 9, 9, 257 25244; PWR5-NEXT: rldimi 7, 7, 32, 0 25245; PWR5-NEXT: add 4, 5, 4 25246; PWR5-NEXT: add 3, 3, 6 25247; PWR5-NEXT: rldimi 9, 9, 32, 0 25248; PWR5-NEXT: rldicl 5, 4, 60, 4 25249; PWR5-NEXT: and 3, 3, 7 25250; PWR5-NEXT: add 4, 4, 5 25251; PWR5-NEXT: mulld 3, 3, 9 25252; PWR5-NEXT: and 4, 4, 7 25253; PWR5-NEXT: rldicl 3, 3, 8, 56 25254; PWR5-NEXT: mulld 4, 4, 9 25255; PWR5-NEXT: li 5, 51 25256; PWR5-NEXT: subfic 3, 3, 51 25257; PWR5-NEXT: rldicl 4, 4, 8, 56 25258; PWR5-NEXT: subfe 3, 5, 5 25259; PWR5-NEXT: subfic 4, 4, 51 25260; PWR5-NEXT: subfe 4, 5, 5 25261; PWR5-NEXT: blr 25262; 25263; PWR6-LABEL: ugt_51_v2i64: 25264; PWR6: # %bb.0: 25265; PWR6-NEXT: lis 5, 21845 25266; PWR6-NEXT: lis 6, 13107 25267; PWR6-NEXT: ori 5, 5, 21845 25268; PWR6-NEXT: rotldi 8, 4, 63 25269; PWR6-NEXT: rotldi 9, 3, 63 25270; PWR6-NEXT: rldimi 5, 5, 32, 0 25271; PWR6-NEXT: and 8, 8, 5 25272; PWR6-NEXT: and 5, 9, 5 25273; PWR6-NEXT: ori 6, 6, 13107 25274; PWR6-NEXT: sub 3, 3, 5 25275; PWR6-NEXT: rldimi 6, 6, 32, 0 25276; PWR6-NEXT: sub 4, 4, 8 25277; PWR6-NEXT: and 8, 3, 6 25278; PWR6-NEXT: rotldi 3, 3, 62 25279; PWR6-NEXT: and 3, 3, 6 25280; PWR6-NEXT: lis 7, 3855 25281; PWR6-NEXT: and 5, 4, 6 25282; PWR6-NEXT: rotldi 4, 4, 62 25283; PWR6-NEXT: add 3, 8, 3 25284; PWR6-NEXT: lis 9, 257 25285; PWR6-NEXT: ori 7, 7, 3855 25286; PWR6-NEXT: and 4, 4, 6 25287; PWR6-NEXT: rldicl 6, 3, 60, 4 25288; PWR6-NEXT: ori 9, 9, 257 25289; PWR6-NEXT: rldimi 7, 7, 32, 0 25290; PWR6-NEXT: add 4, 5, 4 25291; PWR6-NEXT: add 3, 3, 6 25292; PWR6-NEXT: rldimi 9, 9, 32, 0 25293; PWR6-NEXT: rldicl 5, 4, 60, 4 25294; PWR6-NEXT: and 3, 3, 7 25295; PWR6-NEXT: add 4, 4, 5 25296; PWR6-NEXT: mulld 3, 3, 9 25297; PWR6-NEXT: and 4, 4, 7 25298; PWR6-NEXT: rldicl 3, 3, 8, 56 25299; PWR6-NEXT: mulld 4, 4, 9 25300; PWR6-NEXT: li 5, 51 25301; PWR6-NEXT: subfic 3, 3, 51 25302; PWR6-NEXT: rldicl 4, 4, 8, 56 25303; PWR6-NEXT: subfe 3, 5, 5 25304; PWR6-NEXT: subfic 4, 4, 51 25305; PWR6-NEXT: subfe 4, 5, 5 25306; PWR6-NEXT: blr 25307; 25308; PWR7-LABEL: ugt_51_v2i64: 25309; PWR7: # %bb.0: 25310; PWR7-NEXT: addi 3, 1, -32 25311; PWR7-NEXT: li 5, -1 25312; PWR7-NEXT: stxvd2x 34, 0, 3 25313; PWR7-NEXT: ld 4, -24(1) 25314; PWR7-NEXT: ld 3, -32(1) 25315; PWR7-NEXT: popcntd 4, 4 25316; PWR7-NEXT: popcntd 3, 3 25317; PWR7-NEXT: cmpldi 4, 51 25318; PWR7-NEXT: li 4, 0 25319; PWR7-NEXT: iselgt 6, 5, 4 25320; PWR7-NEXT: cmpldi 3, 51 25321; PWR7-NEXT: iselgt 3, 5, 4 25322; PWR7-NEXT: std 6, -8(1) 25323; PWR7-NEXT: std 3, -16(1) 25324; PWR7-NEXT: addi 3, 1, -16 25325; PWR7-NEXT: lxvd2x 34, 0, 3 25326; PWR7-NEXT: blr 25327; 25328; PWR8-LABEL: ugt_51_v2i64: 25329; PWR8: # %bb.0: 25330; PWR8-NEXT: addis 3, 2, .LCPI200_0@toc@ha 25331; PWR8-NEXT: vpopcntd 2, 2 25332; PWR8-NEXT: addi 3, 3, .LCPI200_0@toc@l 25333; PWR8-NEXT: lxvd2x 35, 0, 3 25334; PWR8-NEXT: vcmpgtud 2, 2, 3 25335; PWR8-NEXT: blr 25336; 25337; PWR9-LABEL: ugt_51_v2i64: 25338; PWR9: # %bb.0: 25339; PWR9-NEXT: addis 3, 2, .LCPI200_0@toc@ha 25340; PWR9-NEXT: vpopcntd 2, 2 25341; PWR9-NEXT: addi 3, 3, .LCPI200_0@toc@l 25342; PWR9-NEXT: lxv 35, 0(3) 25343; PWR9-NEXT: vcmpgtud 2, 2, 3 25344; PWR9-NEXT: blr 25345 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25346 %3 = icmp ugt <2 x i64> %2, <i64 51, i64 51> 25347 %4 = sext <2 x i1> %3 to <2 x i64> 25348 ret <2 x i64> %4 25349} 25350 25351define <2 x i64> @ult_52_v2i64(<2 x i64> %0) { 25352; PWR5-LABEL: ult_52_v2i64: 25353; PWR5: # %bb.0: 25354; PWR5-NEXT: lis 5, 21845 25355; PWR5-NEXT: lis 6, 13107 25356; PWR5-NEXT: ori 5, 5, 21845 25357; PWR5-NEXT: rotldi 8, 4, 63 25358; PWR5-NEXT: rotldi 9, 3, 63 25359; PWR5-NEXT: rldimi 5, 5, 32, 0 25360; PWR5-NEXT: and 8, 8, 5 25361; PWR5-NEXT: and 5, 9, 5 25362; PWR5-NEXT: ori 6, 6, 13107 25363; PWR5-NEXT: sub 3, 3, 5 25364; PWR5-NEXT: rldimi 6, 6, 32, 0 25365; PWR5-NEXT: sub 4, 4, 8 25366; PWR5-NEXT: and 8, 3, 6 25367; PWR5-NEXT: rotldi 3, 3, 62 25368; PWR5-NEXT: and 3, 3, 6 25369; PWR5-NEXT: lis 7, 3855 25370; PWR5-NEXT: and 5, 4, 6 25371; PWR5-NEXT: rotldi 4, 4, 62 25372; PWR5-NEXT: add 3, 8, 3 25373; PWR5-NEXT: lis 9, 257 25374; PWR5-NEXT: ori 7, 7, 3855 25375; PWR5-NEXT: and 4, 4, 6 25376; PWR5-NEXT: rldicl 6, 3, 60, 4 25377; PWR5-NEXT: ori 9, 9, 257 25378; PWR5-NEXT: rldimi 7, 7, 32, 0 25379; PWR5-NEXT: add 4, 5, 4 25380; PWR5-NEXT: add 3, 3, 6 25381; PWR5-NEXT: rldimi 9, 9, 32, 0 25382; PWR5-NEXT: rldicl 5, 4, 60, 4 25383; PWR5-NEXT: and 3, 3, 7 25384; PWR5-NEXT: add 4, 4, 5 25385; PWR5-NEXT: mulld 3, 3, 9 25386; PWR5-NEXT: and 4, 4, 7 25387; PWR5-NEXT: rldicl 3, 3, 8, 56 25388; PWR5-NEXT: li 5, 52 25389; PWR5-NEXT: mulld 4, 4, 9 25390; PWR5-NEXT: subc 6, 3, 5 25391; PWR5-NEXT: rldicl 4, 4, 8, 56 25392; PWR5-NEXT: subfe 3, 3, 3 25393; PWR5-NEXT: subc 5, 4, 5 25394; PWR5-NEXT: subfe 4, 4, 4 25395; PWR5-NEXT: blr 25396; 25397; PWR6-LABEL: ult_52_v2i64: 25398; PWR6: # %bb.0: 25399; PWR6-NEXT: lis 5, 21845 25400; PWR6-NEXT: lis 6, 13107 25401; PWR6-NEXT: ori 5, 5, 21845 25402; PWR6-NEXT: rotldi 8, 4, 63 25403; PWR6-NEXT: rotldi 9, 3, 63 25404; PWR6-NEXT: rldimi 5, 5, 32, 0 25405; PWR6-NEXT: and 8, 8, 5 25406; PWR6-NEXT: and 5, 9, 5 25407; PWR6-NEXT: ori 6, 6, 13107 25408; PWR6-NEXT: sub 3, 3, 5 25409; PWR6-NEXT: rldimi 6, 6, 32, 0 25410; PWR6-NEXT: sub 4, 4, 8 25411; PWR6-NEXT: and 8, 3, 6 25412; PWR6-NEXT: rotldi 3, 3, 62 25413; PWR6-NEXT: and 3, 3, 6 25414; PWR6-NEXT: lis 7, 3855 25415; PWR6-NEXT: and 5, 4, 6 25416; PWR6-NEXT: rotldi 4, 4, 62 25417; PWR6-NEXT: add 3, 8, 3 25418; PWR6-NEXT: lis 9, 257 25419; PWR6-NEXT: ori 7, 7, 3855 25420; PWR6-NEXT: and 4, 4, 6 25421; PWR6-NEXT: rldicl 6, 3, 60, 4 25422; PWR6-NEXT: ori 9, 9, 257 25423; PWR6-NEXT: rldimi 7, 7, 32, 0 25424; PWR6-NEXT: add 4, 5, 4 25425; PWR6-NEXT: add 3, 3, 6 25426; PWR6-NEXT: rldimi 9, 9, 32, 0 25427; PWR6-NEXT: rldicl 5, 4, 60, 4 25428; PWR6-NEXT: and 3, 3, 7 25429; PWR6-NEXT: add 4, 4, 5 25430; PWR6-NEXT: mulld 3, 3, 9 25431; PWR6-NEXT: and 4, 4, 7 25432; PWR6-NEXT: rldicl 3, 3, 8, 56 25433; PWR6-NEXT: li 5, 52 25434; PWR6-NEXT: mulld 4, 4, 9 25435; PWR6-NEXT: subc 6, 3, 5 25436; PWR6-NEXT: rldicl 4, 4, 8, 56 25437; PWR6-NEXT: subfe 3, 3, 3 25438; PWR6-NEXT: subc 5, 4, 5 25439; PWR6-NEXT: subfe 4, 4, 4 25440; PWR6-NEXT: blr 25441; 25442; PWR7-LABEL: ult_52_v2i64: 25443; PWR7: # %bb.0: 25444; PWR7-NEXT: addi 3, 1, -32 25445; PWR7-NEXT: li 5, -1 25446; PWR7-NEXT: stxvd2x 34, 0, 3 25447; PWR7-NEXT: ld 4, -24(1) 25448; PWR7-NEXT: ld 3, -32(1) 25449; PWR7-NEXT: popcntd 4, 4 25450; PWR7-NEXT: popcntd 3, 3 25451; PWR7-NEXT: cmpldi 4, 52 25452; PWR7-NEXT: li 4, 0 25453; PWR7-NEXT: isellt 6, 5, 4 25454; PWR7-NEXT: cmpldi 3, 52 25455; PWR7-NEXT: isellt 3, 5, 4 25456; PWR7-NEXT: std 6, -8(1) 25457; PWR7-NEXT: std 3, -16(1) 25458; PWR7-NEXT: addi 3, 1, -16 25459; PWR7-NEXT: lxvd2x 34, 0, 3 25460; PWR7-NEXT: blr 25461; 25462; PWR8-LABEL: ult_52_v2i64: 25463; PWR8: # %bb.0: 25464; PWR8-NEXT: addis 3, 2, .LCPI201_0@toc@ha 25465; PWR8-NEXT: vpopcntd 2, 2 25466; PWR8-NEXT: addi 3, 3, .LCPI201_0@toc@l 25467; PWR8-NEXT: lxvd2x 35, 0, 3 25468; PWR8-NEXT: vcmpgtud 2, 3, 2 25469; PWR8-NEXT: blr 25470; 25471; PWR9-LABEL: ult_52_v2i64: 25472; PWR9: # %bb.0: 25473; PWR9-NEXT: addis 3, 2, .LCPI201_0@toc@ha 25474; PWR9-NEXT: vpopcntd 2, 2 25475; PWR9-NEXT: addi 3, 3, .LCPI201_0@toc@l 25476; PWR9-NEXT: lxv 35, 0(3) 25477; PWR9-NEXT: vcmpgtud 2, 3, 2 25478; PWR9-NEXT: blr 25479 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25480 %3 = icmp ult <2 x i64> %2, <i64 52, i64 52> 25481 %4 = sext <2 x i1> %3 to <2 x i64> 25482 ret <2 x i64> %4 25483} 25484 25485define <2 x i64> @ugt_52_v2i64(<2 x i64> %0) { 25486; PWR5-LABEL: ugt_52_v2i64: 25487; PWR5: # %bb.0: 25488; PWR5-NEXT: lis 5, 21845 25489; PWR5-NEXT: lis 6, 13107 25490; PWR5-NEXT: ori 5, 5, 21845 25491; PWR5-NEXT: rotldi 8, 4, 63 25492; PWR5-NEXT: rotldi 9, 3, 63 25493; PWR5-NEXT: rldimi 5, 5, 32, 0 25494; PWR5-NEXT: and 8, 8, 5 25495; PWR5-NEXT: and 5, 9, 5 25496; PWR5-NEXT: ori 6, 6, 13107 25497; PWR5-NEXT: sub 3, 3, 5 25498; PWR5-NEXT: rldimi 6, 6, 32, 0 25499; PWR5-NEXT: sub 4, 4, 8 25500; PWR5-NEXT: and 8, 3, 6 25501; PWR5-NEXT: rotldi 3, 3, 62 25502; PWR5-NEXT: and 3, 3, 6 25503; PWR5-NEXT: lis 7, 3855 25504; PWR5-NEXT: and 5, 4, 6 25505; PWR5-NEXT: rotldi 4, 4, 62 25506; PWR5-NEXT: add 3, 8, 3 25507; PWR5-NEXT: lis 9, 257 25508; PWR5-NEXT: ori 7, 7, 3855 25509; PWR5-NEXT: and 4, 4, 6 25510; PWR5-NEXT: rldicl 6, 3, 60, 4 25511; PWR5-NEXT: ori 9, 9, 257 25512; PWR5-NEXT: rldimi 7, 7, 32, 0 25513; PWR5-NEXT: add 4, 5, 4 25514; PWR5-NEXT: add 3, 3, 6 25515; PWR5-NEXT: rldimi 9, 9, 32, 0 25516; PWR5-NEXT: rldicl 5, 4, 60, 4 25517; PWR5-NEXT: and 3, 3, 7 25518; PWR5-NEXT: add 4, 4, 5 25519; PWR5-NEXT: mulld 3, 3, 9 25520; PWR5-NEXT: and 4, 4, 7 25521; PWR5-NEXT: rldicl 3, 3, 8, 56 25522; PWR5-NEXT: mulld 4, 4, 9 25523; PWR5-NEXT: li 5, 52 25524; PWR5-NEXT: subfic 3, 3, 52 25525; PWR5-NEXT: rldicl 4, 4, 8, 56 25526; PWR5-NEXT: subfe 3, 5, 5 25527; PWR5-NEXT: subfic 4, 4, 52 25528; PWR5-NEXT: subfe 4, 5, 5 25529; PWR5-NEXT: blr 25530; 25531; PWR6-LABEL: ugt_52_v2i64: 25532; PWR6: # %bb.0: 25533; PWR6-NEXT: lis 5, 21845 25534; PWR6-NEXT: lis 6, 13107 25535; PWR6-NEXT: ori 5, 5, 21845 25536; PWR6-NEXT: rotldi 8, 4, 63 25537; PWR6-NEXT: rotldi 9, 3, 63 25538; PWR6-NEXT: rldimi 5, 5, 32, 0 25539; PWR6-NEXT: and 8, 8, 5 25540; PWR6-NEXT: and 5, 9, 5 25541; PWR6-NEXT: ori 6, 6, 13107 25542; PWR6-NEXT: sub 3, 3, 5 25543; PWR6-NEXT: rldimi 6, 6, 32, 0 25544; PWR6-NEXT: sub 4, 4, 8 25545; PWR6-NEXT: and 8, 3, 6 25546; PWR6-NEXT: rotldi 3, 3, 62 25547; PWR6-NEXT: and 3, 3, 6 25548; PWR6-NEXT: lis 7, 3855 25549; PWR6-NEXT: and 5, 4, 6 25550; PWR6-NEXT: rotldi 4, 4, 62 25551; PWR6-NEXT: add 3, 8, 3 25552; PWR6-NEXT: lis 9, 257 25553; PWR6-NEXT: ori 7, 7, 3855 25554; PWR6-NEXT: and 4, 4, 6 25555; PWR6-NEXT: rldicl 6, 3, 60, 4 25556; PWR6-NEXT: ori 9, 9, 257 25557; PWR6-NEXT: rldimi 7, 7, 32, 0 25558; PWR6-NEXT: add 4, 5, 4 25559; PWR6-NEXT: add 3, 3, 6 25560; PWR6-NEXT: rldimi 9, 9, 32, 0 25561; PWR6-NEXT: rldicl 5, 4, 60, 4 25562; PWR6-NEXT: and 3, 3, 7 25563; PWR6-NEXT: add 4, 4, 5 25564; PWR6-NEXT: mulld 3, 3, 9 25565; PWR6-NEXT: and 4, 4, 7 25566; PWR6-NEXT: rldicl 3, 3, 8, 56 25567; PWR6-NEXT: mulld 4, 4, 9 25568; PWR6-NEXT: li 5, 52 25569; PWR6-NEXT: subfic 3, 3, 52 25570; PWR6-NEXT: rldicl 4, 4, 8, 56 25571; PWR6-NEXT: subfe 3, 5, 5 25572; PWR6-NEXT: subfic 4, 4, 52 25573; PWR6-NEXT: subfe 4, 5, 5 25574; PWR6-NEXT: blr 25575; 25576; PWR7-LABEL: ugt_52_v2i64: 25577; PWR7: # %bb.0: 25578; PWR7-NEXT: addi 3, 1, -32 25579; PWR7-NEXT: li 5, -1 25580; PWR7-NEXT: stxvd2x 34, 0, 3 25581; PWR7-NEXT: ld 4, -24(1) 25582; PWR7-NEXT: ld 3, -32(1) 25583; PWR7-NEXT: popcntd 4, 4 25584; PWR7-NEXT: popcntd 3, 3 25585; PWR7-NEXT: cmpldi 4, 52 25586; PWR7-NEXT: li 4, 0 25587; PWR7-NEXT: iselgt 6, 5, 4 25588; PWR7-NEXT: cmpldi 3, 52 25589; PWR7-NEXT: iselgt 3, 5, 4 25590; PWR7-NEXT: std 6, -8(1) 25591; PWR7-NEXT: std 3, -16(1) 25592; PWR7-NEXT: addi 3, 1, -16 25593; PWR7-NEXT: lxvd2x 34, 0, 3 25594; PWR7-NEXT: blr 25595; 25596; PWR8-LABEL: ugt_52_v2i64: 25597; PWR8: # %bb.0: 25598; PWR8-NEXT: addis 3, 2, .LCPI202_0@toc@ha 25599; PWR8-NEXT: vpopcntd 2, 2 25600; PWR8-NEXT: addi 3, 3, .LCPI202_0@toc@l 25601; PWR8-NEXT: lxvd2x 35, 0, 3 25602; PWR8-NEXT: vcmpgtud 2, 2, 3 25603; PWR8-NEXT: blr 25604; 25605; PWR9-LABEL: ugt_52_v2i64: 25606; PWR9: # %bb.0: 25607; PWR9-NEXT: addis 3, 2, .LCPI202_0@toc@ha 25608; PWR9-NEXT: vpopcntd 2, 2 25609; PWR9-NEXT: addi 3, 3, .LCPI202_0@toc@l 25610; PWR9-NEXT: lxv 35, 0(3) 25611; PWR9-NEXT: vcmpgtud 2, 2, 3 25612; PWR9-NEXT: blr 25613 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25614 %3 = icmp ugt <2 x i64> %2, <i64 52, i64 52> 25615 %4 = sext <2 x i1> %3 to <2 x i64> 25616 ret <2 x i64> %4 25617} 25618 25619define <2 x i64> @ult_53_v2i64(<2 x i64> %0) { 25620; PWR5-LABEL: ult_53_v2i64: 25621; PWR5: # %bb.0: 25622; PWR5-NEXT: lis 5, 21845 25623; PWR5-NEXT: lis 6, 13107 25624; PWR5-NEXT: ori 5, 5, 21845 25625; PWR5-NEXT: rotldi 8, 4, 63 25626; PWR5-NEXT: rotldi 9, 3, 63 25627; PWR5-NEXT: rldimi 5, 5, 32, 0 25628; PWR5-NEXT: and 8, 8, 5 25629; PWR5-NEXT: and 5, 9, 5 25630; PWR5-NEXT: ori 6, 6, 13107 25631; PWR5-NEXT: sub 3, 3, 5 25632; PWR5-NEXT: rldimi 6, 6, 32, 0 25633; PWR5-NEXT: sub 4, 4, 8 25634; PWR5-NEXT: and 8, 3, 6 25635; PWR5-NEXT: rotldi 3, 3, 62 25636; PWR5-NEXT: and 3, 3, 6 25637; PWR5-NEXT: lis 7, 3855 25638; PWR5-NEXT: and 5, 4, 6 25639; PWR5-NEXT: rotldi 4, 4, 62 25640; PWR5-NEXT: add 3, 8, 3 25641; PWR5-NEXT: lis 9, 257 25642; PWR5-NEXT: ori 7, 7, 3855 25643; PWR5-NEXT: and 4, 4, 6 25644; PWR5-NEXT: rldicl 6, 3, 60, 4 25645; PWR5-NEXT: ori 9, 9, 257 25646; PWR5-NEXT: rldimi 7, 7, 32, 0 25647; PWR5-NEXT: add 4, 5, 4 25648; PWR5-NEXT: add 3, 3, 6 25649; PWR5-NEXT: rldimi 9, 9, 32, 0 25650; PWR5-NEXT: rldicl 5, 4, 60, 4 25651; PWR5-NEXT: and 3, 3, 7 25652; PWR5-NEXT: add 4, 4, 5 25653; PWR5-NEXT: mulld 3, 3, 9 25654; PWR5-NEXT: and 4, 4, 7 25655; PWR5-NEXT: rldicl 3, 3, 8, 56 25656; PWR5-NEXT: li 5, 53 25657; PWR5-NEXT: mulld 4, 4, 9 25658; PWR5-NEXT: subc 6, 3, 5 25659; PWR5-NEXT: rldicl 4, 4, 8, 56 25660; PWR5-NEXT: subfe 3, 3, 3 25661; PWR5-NEXT: subc 5, 4, 5 25662; PWR5-NEXT: subfe 4, 4, 4 25663; PWR5-NEXT: blr 25664; 25665; PWR6-LABEL: ult_53_v2i64: 25666; PWR6: # %bb.0: 25667; PWR6-NEXT: lis 5, 21845 25668; PWR6-NEXT: lis 6, 13107 25669; PWR6-NEXT: ori 5, 5, 21845 25670; PWR6-NEXT: rotldi 8, 4, 63 25671; PWR6-NEXT: rotldi 9, 3, 63 25672; PWR6-NEXT: rldimi 5, 5, 32, 0 25673; PWR6-NEXT: and 8, 8, 5 25674; PWR6-NEXT: and 5, 9, 5 25675; PWR6-NEXT: ori 6, 6, 13107 25676; PWR6-NEXT: sub 3, 3, 5 25677; PWR6-NEXT: rldimi 6, 6, 32, 0 25678; PWR6-NEXT: sub 4, 4, 8 25679; PWR6-NEXT: and 8, 3, 6 25680; PWR6-NEXT: rotldi 3, 3, 62 25681; PWR6-NEXT: and 3, 3, 6 25682; PWR6-NEXT: lis 7, 3855 25683; PWR6-NEXT: and 5, 4, 6 25684; PWR6-NEXT: rotldi 4, 4, 62 25685; PWR6-NEXT: add 3, 8, 3 25686; PWR6-NEXT: lis 9, 257 25687; PWR6-NEXT: ori 7, 7, 3855 25688; PWR6-NEXT: and 4, 4, 6 25689; PWR6-NEXT: rldicl 6, 3, 60, 4 25690; PWR6-NEXT: ori 9, 9, 257 25691; PWR6-NEXT: rldimi 7, 7, 32, 0 25692; PWR6-NEXT: add 4, 5, 4 25693; PWR6-NEXT: add 3, 3, 6 25694; PWR6-NEXT: rldimi 9, 9, 32, 0 25695; PWR6-NEXT: rldicl 5, 4, 60, 4 25696; PWR6-NEXT: and 3, 3, 7 25697; PWR6-NEXT: add 4, 4, 5 25698; PWR6-NEXT: mulld 3, 3, 9 25699; PWR6-NEXT: and 4, 4, 7 25700; PWR6-NEXT: rldicl 3, 3, 8, 56 25701; PWR6-NEXT: li 5, 53 25702; PWR6-NEXT: mulld 4, 4, 9 25703; PWR6-NEXT: subc 6, 3, 5 25704; PWR6-NEXT: rldicl 4, 4, 8, 56 25705; PWR6-NEXT: subfe 3, 3, 3 25706; PWR6-NEXT: subc 5, 4, 5 25707; PWR6-NEXT: subfe 4, 4, 4 25708; PWR6-NEXT: blr 25709; 25710; PWR7-LABEL: ult_53_v2i64: 25711; PWR7: # %bb.0: 25712; PWR7-NEXT: addi 3, 1, -32 25713; PWR7-NEXT: li 5, -1 25714; PWR7-NEXT: stxvd2x 34, 0, 3 25715; PWR7-NEXT: ld 4, -24(1) 25716; PWR7-NEXT: ld 3, -32(1) 25717; PWR7-NEXT: popcntd 4, 4 25718; PWR7-NEXT: popcntd 3, 3 25719; PWR7-NEXT: cmpldi 4, 53 25720; PWR7-NEXT: li 4, 0 25721; PWR7-NEXT: isellt 6, 5, 4 25722; PWR7-NEXT: cmpldi 3, 53 25723; PWR7-NEXT: isellt 3, 5, 4 25724; PWR7-NEXT: std 6, -8(1) 25725; PWR7-NEXT: std 3, -16(1) 25726; PWR7-NEXT: addi 3, 1, -16 25727; PWR7-NEXT: lxvd2x 34, 0, 3 25728; PWR7-NEXT: blr 25729; 25730; PWR8-LABEL: ult_53_v2i64: 25731; PWR8: # %bb.0: 25732; PWR8-NEXT: addis 3, 2, .LCPI203_0@toc@ha 25733; PWR8-NEXT: vpopcntd 2, 2 25734; PWR8-NEXT: addi 3, 3, .LCPI203_0@toc@l 25735; PWR8-NEXT: lxvd2x 35, 0, 3 25736; PWR8-NEXT: vcmpgtud 2, 3, 2 25737; PWR8-NEXT: blr 25738; 25739; PWR9-LABEL: ult_53_v2i64: 25740; PWR9: # %bb.0: 25741; PWR9-NEXT: addis 3, 2, .LCPI203_0@toc@ha 25742; PWR9-NEXT: vpopcntd 2, 2 25743; PWR9-NEXT: addi 3, 3, .LCPI203_0@toc@l 25744; PWR9-NEXT: lxv 35, 0(3) 25745; PWR9-NEXT: vcmpgtud 2, 3, 2 25746; PWR9-NEXT: blr 25747 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25748 %3 = icmp ult <2 x i64> %2, <i64 53, i64 53> 25749 %4 = sext <2 x i1> %3 to <2 x i64> 25750 ret <2 x i64> %4 25751} 25752 25753define <2 x i64> @ugt_53_v2i64(<2 x i64> %0) { 25754; PWR5-LABEL: ugt_53_v2i64: 25755; PWR5: # %bb.0: 25756; PWR5-NEXT: lis 5, 21845 25757; PWR5-NEXT: lis 6, 13107 25758; PWR5-NEXT: ori 5, 5, 21845 25759; PWR5-NEXT: rotldi 8, 4, 63 25760; PWR5-NEXT: rotldi 9, 3, 63 25761; PWR5-NEXT: rldimi 5, 5, 32, 0 25762; PWR5-NEXT: and 8, 8, 5 25763; PWR5-NEXT: and 5, 9, 5 25764; PWR5-NEXT: ori 6, 6, 13107 25765; PWR5-NEXT: sub 3, 3, 5 25766; PWR5-NEXT: rldimi 6, 6, 32, 0 25767; PWR5-NEXT: sub 4, 4, 8 25768; PWR5-NEXT: and 8, 3, 6 25769; PWR5-NEXT: rotldi 3, 3, 62 25770; PWR5-NEXT: and 3, 3, 6 25771; PWR5-NEXT: lis 7, 3855 25772; PWR5-NEXT: and 5, 4, 6 25773; PWR5-NEXT: rotldi 4, 4, 62 25774; PWR5-NEXT: add 3, 8, 3 25775; PWR5-NEXT: lis 9, 257 25776; PWR5-NEXT: ori 7, 7, 3855 25777; PWR5-NEXT: and 4, 4, 6 25778; PWR5-NEXT: rldicl 6, 3, 60, 4 25779; PWR5-NEXT: ori 9, 9, 257 25780; PWR5-NEXT: rldimi 7, 7, 32, 0 25781; PWR5-NEXT: add 4, 5, 4 25782; PWR5-NEXT: add 3, 3, 6 25783; PWR5-NEXT: rldimi 9, 9, 32, 0 25784; PWR5-NEXT: rldicl 5, 4, 60, 4 25785; PWR5-NEXT: and 3, 3, 7 25786; PWR5-NEXT: add 4, 4, 5 25787; PWR5-NEXT: mulld 3, 3, 9 25788; PWR5-NEXT: and 4, 4, 7 25789; PWR5-NEXT: rldicl 3, 3, 8, 56 25790; PWR5-NEXT: mulld 4, 4, 9 25791; PWR5-NEXT: li 5, 53 25792; PWR5-NEXT: subfic 3, 3, 53 25793; PWR5-NEXT: rldicl 4, 4, 8, 56 25794; PWR5-NEXT: subfe 3, 5, 5 25795; PWR5-NEXT: subfic 4, 4, 53 25796; PWR5-NEXT: subfe 4, 5, 5 25797; PWR5-NEXT: blr 25798; 25799; PWR6-LABEL: ugt_53_v2i64: 25800; PWR6: # %bb.0: 25801; PWR6-NEXT: lis 5, 21845 25802; PWR6-NEXT: lis 6, 13107 25803; PWR6-NEXT: ori 5, 5, 21845 25804; PWR6-NEXT: rotldi 8, 4, 63 25805; PWR6-NEXT: rotldi 9, 3, 63 25806; PWR6-NEXT: rldimi 5, 5, 32, 0 25807; PWR6-NEXT: and 8, 8, 5 25808; PWR6-NEXT: and 5, 9, 5 25809; PWR6-NEXT: ori 6, 6, 13107 25810; PWR6-NEXT: sub 3, 3, 5 25811; PWR6-NEXT: rldimi 6, 6, 32, 0 25812; PWR6-NEXT: sub 4, 4, 8 25813; PWR6-NEXT: and 8, 3, 6 25814; PWR6-NEXT: rotldi 3, 3, 62 25815; PWR6-NEXT: and 3, 3, 6 25816; PWR6-NEXT: lis 7, 3855 25817; PWR6-NEXT: and 5, 4, 6 25818; PWR6-NEXT: rotldi 4, 4, 62 25819; PWR6-NEXT: add 3, 8, 3 25820; PWR6-NEXT: lis 9, 257 25821; PWR6-NEXT: ori 7, 7, 3855 25822; PWR6-NEXT: and 4, 4, 6 25823; PWR6-NEXT: rldicl 6, 3, 60, 4 25824; PWR6-NEXT: ori 9, 9, 257 25825; PWR6-NEXT: rldimi 7, 7, 32, 0 25826; PWR6-NEXT: add 4, 5, 4 25827; PWR6-NEXT: add 3, 3, 6 25828; PWR6-NEXT: rldimi 9, 9, 32, 0 25829; PWR6-NEXT: rldicl 5, 4, 60, 4 25830; PWR6-NEXT: and 3, 3, 7 25831; PWR6-NEXT: add 4, 4, 5 25832; PWR6-NEXT: mulld 3, 3, 9 25833; PWR6-NEXT: and 4, 4, 7 25834; PWR6-NEXT: rldicl 3, 3, 8, 56 25835; PWR6-NEXT: mulld 4, 4, 9 25836; PWR6-NEXT: li 5, 53 25837; PWR6-NEXT: subfic 3, 3, 53 25838; PWR6-NEXT: rldicl 4, 4, 8, 56 25839; PWR6-NEXT: subfe 3, 5, 5 25840; PWR6-NEXT: subfic 4, 4, 53 25841; PWR6-NEXT: subfe 4, 5, 5 25842; PWR6-NEXT: blr 25843; 25844; PWR7-LABEL: ugt_53_v2i64: 25845; PWR7: # %bb.0: 25846; PWR7-NEXT: addi 3, 1, -32 25847; PWR7-NEXT: li 5, -1 25848; PWR7-NEXT: stxvd2x 34, 0, 3 25849; PWR7-NEXT: ld 4, -24(1) 25850; PWR7-NEXT: ld 3, -32(1) 25851; PWR7-NEXT: popcntd 4, 4 25852; PWR7-NEXT: popcntd 3, 3 25853; PWR7-NEXT: cmpldi 4, 53 25854; PWR7-NEXT: li 4, 0 25855; PWR7-NEXT: iselgt 6, 5, 4 25856; PWR7-NEXT: cmpldi 3, 53 25857; PWR7-NEXT: iselgt 3, 5, 4 25858; PWR7-NEXT: std 6, -8(1) 25859; PWR7-NEXT: std 3, -16(1) 25860; PWR7-NEXT: addi 3, 1, -16 25861; PWR7-NEXT: lxvd2x 34, 0, 3 25862; PWR7-NEXT: blr 25863; 25864; PWR8-LABEL: ugt_53_v2i64: 25865; PWR8: # %bb.0: 25866; PWR8-NEXT: addis 3, 2, .LCPI204_0@toc@ha 25867; PWR8-NEXT: vpopcntd 2, 2 25868; PWR8-NEXT: addi 3, 3, .LCPI204_0@toc@l 25869; PWR8-NEXT: lxvd2x 35, 0, 3 25870; PWR8-NEXT: vcmpgtud 2, 2, 3 25871; PWR8-NEXT: blr 25872; 25873; PWR9-LABEL: ugt_53_v2i64: 25874; PWR9: # %bb.0: 25875; PWR9-NEXT: addis 3, 2, .LCPI204_0@toc@ha 25876; PWR9-NEXT: vpopcntd 2, 2 25877; PWR9-NEXT: addi 3, 3, .LCPI204_0@toc@l 25878; PWR9-NEXT: lxv 35, 0(3) 25879; PWR9-NEXT: vcmpgtud 2, 2, 3 25880; PWR9-NEXT: blr 25881 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 25882 %3 = icmp ugt <2 x i64> %2, <i64 53, i64 53> 25883 %4 = sext <2 x i1> %3 to <2 x i64> 25884 ret <2 x i64> %4 25885} 25886 25887define <2 x i64> @ult_54_v2i64(<2 x i64> %0) { 25888; PWR5-LABEL: ult_54_v2i64: 25889; PWR5: # %bb.0: 25890; PWR5-NEXT: lis 5, 21845 25891; PWR5-NEXT: lis 6, 13107 25892; PWR5-NEXT: ori 5, 5, 21845 25893; PWR5-NEXT: rotldi 8, 4, 63 25894; PWR5-NEXT: rotldi 9, 3, 63 25895; PWR5-NEXT: rldimi 5, 5, 32, 0 25896; PWR5-NEXT: and 8, 8, 5 25897; PWR5-NEXT: and 5, 9, 5 25898; PWR5-NEXT: ori 6, 6, 13107 25899; PWR5-NEXT: sub 3, 3, 5 25900; PWR5-NEXT: rldimi 6, 6, 32, 0 25901; PWR5-NEXT: sub 4, 4, 8 25902; PWR5-NEXT: and 8, 3, 6 25903; PWR5-NEXT: rotldi 3, 3, 62 25904; PWR5-NEXT: and 3, 3, 6 25905; PWR5-NEXT: lis 7, 3855 25906; PWR5-NEXT: and 5, 4, 6 25907; PWR5-NEXT: rotldi 4, 4, 62 25908; PWR5-NEXT: add 3, 8, 3 25909; PWR5-NEXT: lis 9, 257 25910; PWR5-NEXT: ori 7, 7, 3855 25911; PWR5-NEXT: and 4, 4, 6 25912; PWR5-NEXT: rldicl 6, 3, 60, 4 25913; PWR5-NEXT: ori 9, 9, 257 25914; PWR5-NEXT: rldimi 7, 7, 32, 0 25915; PWR5-NEXT: add 4, 5, 4 25916; PWR5-NEXT: add 3, 3, 6 25917; PWR5-NEXT: rldimi 9, 9, 32, 0 25918; PWR5-NEXT: rldicl 5, 4, 60, 4 25919; PWR5-NEXT: and 3, 3, 7 25920; PWR5-NEXT: add 4, 4, 5 25921; PWR5-NEXT: mulld 3, 3, 9 25922; PWR5-NEXT: and 4, 4, 7 25923; PWR5-NEXT: rldicl 3, 3, 8, 56 25924; PWR5-NEXT: li 5, 54 25925; PWR5-NEXT: mulld 4, 4, 9 25926; PWR5-NEXT: subc 6, 3, 5 25927; PWR5-NEXT: rldicl 4, 4, 8, 56 25928; PWR5-NEXT: subfe 3, 3, 3 25929; PWR5-NEXT: subc 5, 4, 5 25930; PWR5-NEXT: subfe 4, 4, 4 25931; PWR5-NEXT: blr 25932; 25933; PWR6-LABEL: ult_54_v2i64: 25934; PWR6: # %bb.0: 25935; PWR6-NEXT: lis 5, 21845 25936; PWR6-NEXT: lis 6, 13107 25937; PWR6-NEXT: ori 5, 5, 21845 25938; PWR6-NEXT: rotldi 8, 4, 63 25939; PWR6-NEXT: rotldi 9, 3, 63 25940; PWR6-NEXT: rldimi 5, 5, 32, 0 25941; PWR6-NEXT: and 8, 8, 5 25942; PWR6-NEXT: and 5, 9, 5 25943; PWR6-NEXT: ori 6, 6, 13107 25944; PWR6-NEXT: sub 3, 3, 5 25945; PWR6-NEXT: rldimi 6, 6, 32, 0 25946; PWR6-NEXT: sub 4, 4, 8 25947; PWR6-NEXT: and 8, 3, 6 25948; PWR6-NEXT: rotldi 3, 3, 62 25949; PWR6-NEXT: and 3, 3, 6 25950; PWR6-NEXT: lis 7, 3855 25951; PWR6-NEXT: and 5, 4, 6 25952; PWR6-NEXT: rotldi 4, 4, 62 25953; PWR6-NEXT: add 3, 8, 3 25954; PWR6-NEXT: lis 9, 257 25955; PWR6-NEXT: ori 7, 7, 3855 25956; PWR6-NEXT: and 4, 4, 6 25957; PWR6-NEXT: rldicl 6, 3, 60, 4 25958; PWR6-NEXT: ori 9, 9, 257 25959; PWR6-NEXT: rldimi 7, 7, 32, 0 25960; PWR6-NEXT: add 4, 5, 4 25961; PWR6-NEXT: add 3, 3, 6 25962; PWR6-NEXT: rldimi 9, 9, 32, 0 25963; PWR6-NEXT: rldicl 5, 4, 60, 4 25964; PWR6-NEXT: and 3, 3, 7 25965; PWR6-NEXT: add 4, 4, 5 25966; PWR6-NEXT: mulld 3, 3, 9 25967; PWR6-NEXT: and 4, 4, 7 25968; PWR6-NEXT: rldicl 3, 3, 8, 56 25969; PWR6-NEXT: li 5, 54 25970; PWR6-NEXT: mulld 4, 4, 9 25971; PWR6-NEXT: subc 6, 3, 5 25972; PWR6-NEXT: rldicl 4, 4, 8, 56 25973; PWR6-NEXT: subfe 3, 3, 3 25974; PWR6-NEXT: subc 5, 4, 5 25975; PWR6-NEXT: subfe 4, 4, 4 25976; PWR6-NEXT: blr 25977; 25978; PWR7-LABEL: ult_54_v2i64: 25979; PWR7: # %bb.0: 25980; PWR7-NEXT: addi 3, 1, -32 25981; PWR7-NEXT: li 5, -1 25982; PWR7-NEXT: stxvd2x 34, 0, 3 25983; PWR7-NEXT: ld 4, -24(1) 25984; PWR7-NEXT: ld 3, -32(1) 25985; PWR7-NEXT: popcntd 4, 4 25986; PWR7-NEXT: popcntd 3, 3 25987; PWR7-NEXT: cmpldi 4, 54 25988; PWR7-NEXT: li 4, 0 25989; PWR7-NEXT: isellt 6, 5, 4 25990; PWR7-NEXT: cmpldi 3, 54 25991; PWR7-NEXT: isellt 3, 5, 4 25992; PWR7-NEXT: std 6, -8(1) 25993; PWR7-NEXT: std 3, -16(1) 25994; PWR7-NEXT: addi 3, 1, -16 25995; PWR7-NEXT: lxvd2x 34, 0, 3 25996; PWR7-NEXT: blr 25997; 25998; PWR8-LABEL: ult_54_v2i64: 25999; PWR8: # %bb.0: 26000; PWR8-NEXT: addis 3, 2, .LCPI205_0@toc@ha 26001; PWR8-NEXT: vpopcntd 2, 2 26002; PWR8-NEXT: addi 3, 3, .LCPI205_0@toc@l 26003; PWR8-NEXT: lxvd2x 35, 0, 3 26004; PWR8-NEXT: vcmpgtud 2, 3, 2 26005; PWR8-NEXT: blr 26006; 26007; PWR9-LABEL: ult_54_v2i64: 26008; PWR9: # %bb.0: 26009; PWR9-NEXT: addis 3, 2, .LCPI205_0@toc@ha 26010; PWR9-NEXT: vpopcntd 2, 2 26011; PWR9-NEXT: addi 3, 3, .LCPI205_0@toc@l 26012; PWR9-NEXT: lxv 35, 0(3) 26013; PWR9-NEXT: vcmpgtud 2, 3, 2 26014; PWR9-NEXT: blr 26015 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26016 %3 = icmp ult <2 x i64> %2, <i64 54, i64 54> 26017 %4 = sext <2 x i1> %3 to <2 x i64> 26018 ret <2 x i64> %4 26019} 26020 26021define <2 x i64> @ugt_54_v2i64(<2 x i64> %0) { 26022; PWR5-LABEL: ugt_54_v2i64: 26023; PWR5: # %bb.0: 26024; PWR5-NEXT: lis 5, 21845 26025; PWR5-NEXT: lis 6, 13107 26026; PWR5-NEXT: ori 5, 5, 21845 26027; PWR5-NEXT: rotldi 8, 4, 63 26028; PWR5-NEXT: rotldi 9, 3, 63 26029; PWR5-NEXT: rldimi 5, 5, 32, 0 26030; PWR5-NEXT: and 8, 8, 5 26031; PWR5-NEXT: and 5, 9, 5 26032; PWR5-NEXT: ori 6, 6, 13107 26033; PWR5-NEXT: sub 3, 3, 5 26034; PWR5-NEXT: rldimi 6, 6, 32, 0 26035; PWR5-NEXT: sub 4, 4, 8 26036; PWR5-NEXT: and 8, 3, 6 26037; PWR5-NEXT: rotldi 3, 3, 62 26038; PWR5-NEXT: and 3, 3, 6 26039; PWR5-NEXT: lis 7, 3855 26040; PWR5-NEXT: and 5, 4, 6 26041; PWR5-NEXT: rotldi 4, 4, 62 26042; PWR5-NEXT: add 3, 8, 3 26043; PWR5-NEXT: lis 9, 257 26044; PWR5-NEXT: ori 7, 7, 3855 26045; PWR5-NEXT: and 4, 4, 6 26046; PWR5-NEXT: rldicl 6, 3, 60, 4 26047; PWR5-NEXT: ori 9, 9, 257 26048; PWR5-NEXT: rldimi 7, 7, 32, 0 26049; PWR5-NEXT: add 4, 5, 4 26050; PWR5-NEXT: add 3, 3, 6 26051; PWR5-NEXT: rldimi 9, 9, 32, 0 26052; PWR5-NEXT: rldicl 5, 4, 60, 4 26053; PWR5-NEXT: and 3, 3, 7 26054; PWR5-NEXT: add 4, 4, 5 26055; PWR5-NEXT: mulld 3, 3, 9 26056; PWR5-NEXT: and 4, 4, 7 26057; PWR5-NEXT: rldicl 3, 3, 8, 56 26058; PWR5-NEXT: mulld 4, 4, 9 26059; PWR5-NEXT: li 5, 54 26060; PWR5-NEXT: subfic 3, 3, 54 26061; PWR5-NEXT: rldicl 4, 4, 8, 56 26062; PWR5-NEXT: subfe 3, 5, 5 26063; PWR5-NEXT: subfic 4, 4, 54 26064; PWR5-NEXT: subfe 4, 5, 5 26065; PWR5-NEXT: blr 26066; 26067; PWR6-LABEL: ugt_54_v2i64: 26068; PWR6: # %bb.0: 26069; PWR6-NEXT: lis 5, 21845 26070; PWR6-NEXT: lis 6, 13107 26071; PWR6-NEXT: ori 5, 5, 21845 26072; PWR6-NEXT: rotldi 8, 4, 63 26073; PWR6-NEXT: rotldi 9, 3, 63 26074; PWR6-NEXT: rldimi 5, 5, 32, 0 26075; PWR6-NEXT: and 8, 8, 5 26076; PWR6-NEXT: and 5, 9, 5 26077; PWR6-NEXT: ori 6, 6, 13107 26078; PWR6-NEXT: sub 3, 3, 5 26079; PWR6-NEXT: rldimi 6, 6, 32, 0 26080; PWR6-NEXT: sub 4, 4, 8 26081; PWR6-NEXT: and 8, 3, 6 26082; PWR6-NEXT: rotldi 3, 3, 62 26083; PWR6-NEXT: and 3, 3, 6 26084; PWR6-NEXT: lis 7, 3855 26085; PWR6-NEXT: and 5, 4, 6 26086; PWR6-NEXT: rotldi 4, 4, 62 26087; PWR6-NEXT: add 3, 8, 3 26088; PWR6-NEXT: lis 9, 257 26089; PWR6-NEXT: ori 7, 7, 3855 26090; PWR6-NEXT: and 4, 4, 6 26091; PWR6-NEXT: rldicl 6, 3, 60, 4 26092; PWR6-NEXT: ori 9, 9, 257 26093; PWR6-NEXT: rldimi 7, 7, 32, 0 26094; PWR6-NEXT: add 4, 5, 4 26095; PWR6-NEXT: add 3, 3, 6 26096; PWR6-NEXT: rldimi 9, 9, 32, 0 26097; PWR6-NEXT: rldicl 5, 4, 60, 4 26098; PWR6-NEXT: and 3, 3, 7 26099; PWR6-NEXT: add 4, 4, 5 26100; PWR6-NEXT: mulld 3, 3, 9 26101; PWR6-NEXT: and 4, 4, 7 26102; PWR6-NEXT: rldicl 3, 3, 8, 56 26103; PWR6-NEXT: mulld 4, 4, 9 26104; PWR6-NEXT: li 5, 54 26105; PWR6-NEXT: subfic 3, 3, 54 26106; PWR6-NEXT: rldicl 4, 4, 8, 56 26107; PWR6-NEXT: subfe 3, 5, 5 26108; PWR6-NEXT: subfic 4, 4, 54 26109; PWR6-NEXT: subfe 4, 5, 5 26110; PWR6-NEXT: blr 26111; 26112; PWR7-LABEL: ugt_54_v2i64: 26113; PWR7: # %bb.0: 26114; PWR7-NEXT: addi 3, 1, -32 26115; PWR7-NEXT: li 5, -1 26116; PWR7-NEXT: stxvd2x 34, 0, 3 26117; PWR7-NEXT: ld 4, -24(1) 26118; PWR7-NEXT: ld 3, -32(1) 26119; PWR7-NEXT: popcntd 4, 4 26120; PWR7-NEXT: popcntd 3, 3 26121; PWR7-NEXT: cmpldi 4, 54 26122; PWR7-NEXT: li 4, 0 26123; PWR7-NEXT: iselgt 6, 5, 4 26124; PWR7-NEXT: cmpldi 3, 54 26125; PWR7-NEXT: iselgt 3, 5, 4 26126; PWR7-NEXT: std 6, -8(1) 26127; PWR7-NEXT: std 3, -16(1) 26128; PWR7-NEXT: addi 3, 1, -16 26129; PWR7-NEXT: lxvd2x 34, 0, 3 26130; PWR7-NEXT: blr 26131; 26132; PWR8-LABEL: ugt_54_v2i64: 26133; PWR8: # %bb.0: 26134; PWR8-NEXT: addis 3, 2, .LCPI206_0@toc@ha 26135; PWR8-NEXT: vpopcntd 2, 2 26136; PWR8-NEXT: addi 3, 3, .LCPI206_0@toc@l 26137; PWR8-NEXT: lxvd2x 35, 0, 3 26138; PWR8-NEXT: vcmpgtud 2, 2, 3 26139; PWR8-NEXT: blr 26140; 26141; PWR9-LABEL: ugt_54_v2i64: 26142; PWR9: # %bb.0: 26143; PWR9-NEXT: addis 3, 2, .LCPI206_0@toc@ha 26144; PWR9-NEXT: vpopcntd 2, 2 26145; PWR9-NEXT: addi 3, 3, .LCPI206_0@toc@l 26146; PWR9-NEXT: lxv 35, 0(3) 26147; PWR9-NEXT: vcmpgtud 2, 2, 3 26148; PWR9-NEXT: blr 26149 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26150 %3 = icmp ugt <2 x i64> %2, <i64 54, i64 54> 26151 %4 = sext <2 x i1> %3 to <2 x i64> 26152 ret <2 x i64> %4 26153} 26154 26155define <2 x i64> @ult_55_v2i64(<2 x i64> %0) { 26156; PWR5-LABEL: ult_55_v2i64: 26157; PWR5: # %bb.0: 26158; PWR5-NEXT: lis 5, 21845 26159; PWR5-NEXT: lis 6, 13107 26160; PWR5-NEXT: ori 5, 5, 21845 26161; PWR5-NEXT: rotldi 8, 4, 63 26162; PWR5-NEXT: rotldi 9, 3, 63 26163; PWR5-NEXT: rldimi 5, 5, 32, 0 26164; PWR5-NEXT: and 8, 8, 5 26165; PWR5-NEXT: and 5, 9, 5 26166; PWR5-NEXT: ori 6, 6, 13107 26167; PWR5-NEXT: sub 3, 3, 5 26168; PWR5-NEXT: rldimi 6, 6, 32, 0 26169; PWR5-NEXT: sub 4, 4, 8 26170; PWR5-NEXT: and 8, 3, 6 26171; PWR5-NEXT: rotldi 3, 3, 62 26172; PWR5-NEXT: and 3, 3, 6 26173; PWR5-NEXT: lis 7, 3855 26174; PWR5-NEXT: and 5, 4, 6 26175; PWR5-NEXT: rotldi 4, 4, 62 26176; PWR5-NEXT: add 3, 8, 3 26177; PWR5-NEXT: lis 9, 257 26178; PWR5-NEXT: ori 7, 7, 3855 26179; PWR5-NEXT: and 4, 4, 6 26180; PWR5-NEXT: rldicl 6, 3, 60, 4 26181; PWR5-NEXT: ori 9, 9, 257 26182; PWR5-NEXT: rldimi 7, 7, 32, 0 26183; PWR5-NEXT: add 4, 5, 4 26184; PWR5-NEXT: add 3, 3, 6 26185; PWR5-NEXT: rldimi 9, 9, 32, 0 26186; PWR5-NEXT: rldicl 5, 4, 60, 4 26187; PWR5-NEXT: and 3, 3, 7 26188; PWR5-NEXT: add 4, 4, 5 26189; PWR5-NEXT: mulld 3, 3, 9 26190; PWR5-NEXT: and 4, 4, 7 26191; PWR5-NEXT: rldicl 3, 3, 8, 56 26192; PWR5-NEXT: li 5, 55 26193; PWR5-NEXT: mulld 4, 4, 9 26194; PWR5-NEXT: subc 6, 3, 5 26195; PWR5-NEXT: rldicl 4, 4, 8, 56 26196; PWR5-NEXT: subfe 3, 3, 3 26197; PWR5-NEXT: subc 5, 4, 5 26198; PWR5-NEXT: subfe 4, 4, 4 26199; PWR5-NEXT: blr 26200; 26201; PWR6-LABEL: ult_55_v2i64: 26202; PWR6: # %bb.0: 26203; PWR6-NEXT: lis 5, 21845 26204; PWR6-NEXT: lis 6, 13107 26205; PWR6-NEXT: ori 5, 5, 21845 26206; PWR6-NEXT: rotldi 8, 4, 63 26207; PWR6-NEXT: rotldi 9, 3, 63 26208; PWR6-NEXT: rldimi 5, 5, 32, 0 26209; PWR6-NEXT: and 8, 8, 5 26210; PWR6-NEXT: and 5, 9, 5 26211; PWR6-NEXT: ori 6, 6, 13107 26212; PWR6-NEXT: sub 3, 3, 5 26213; PWR6-NEXT: rldimi 6, 6, 32, 0 26214; PWR6-NEXT: sub 4, 4, 8 26215; PWR6-NEXT: and 8, 3, 6 26216; PWR6-NEXT: rotldi 3, 3, 62 26217; PWR6-NEXT: and 3, 3, 6 26218; PWR6-NEXT: lis 7, 3855 26219; PWR6-NEXT: and 5, 4, 6 26220; PWR6-NEXT: rotldi 4, 4, 62 26221; PWR6-NEXT: add 3, 8, 3 26222; PWR6-NEXT: lis 9, 257 26223; PWR6-NEXT: ori 7, 7, 3855 26224; PWR6-NEXT: and 4, 4, 6 26225; PWR6-NEXT: rldicl 6, 3, 60, 4 26226; PWR6-NEXT: ori 9, 9, 257 26227; PWR6-NEXT: rldimi 7, 7, 32, 0 26228; PWR6-NEXT: add 4, 5, 4 26229; PWR6-NEXT: add 3, 3, 6 26230; PWR6-NEXT: rldimi 9, 9, 32, 0 26231; PWR6-NEXT: rldicl 5, 4, 60, 4 26232; PWR6-NEXT: and 3, 3, 7 26233; PWR6-NEXT: add 4, 4, 5 26234; PWR6-NEXT: mulld 3, 3, 9 26235; PWR6-NEXT: and 4, 4, 7 26236; PWR6-NEXT: rldicl 3, 3, 8, 56 26237; PWR6-NEXT: li 5, 55 26238; PWR6-NEXT: mulld 4, 4, 9 26239; PWR6-NEXT: subc 6, 3, 5 26240; PWR6-NEXT: rldicl 4, 4, 8, 56 26241; PWR6-NEXT: subfe 3, 3, 3 26242; PWR6-NEXT: subc 5, 4, 5 26243; PWR6-NEXT: subfe 4, 4, 4 26244; PWR6-NEXT: blr 26245; 26246; PWR7-LABEL: ult_55_v2i64: 26247; PWR7: # %bb.0: 26248; PWR7-NEXT: addi 3, 1, -32 26249; PWR7-NEXT: li 5, -1 26250; PWR7-NEXT: stxvd2x 34, 0, 3 26251; PWR7-NEXT: ld 4, -24(1) 26252; PWR7-NEXT: ld 3, -32(1) 26253; PWR7-NEXT: popcntd 4, 4 26254; PWR7-NEXT: popcntd 3, 3 26255; PWR7-NEXT: cmpldi 4, 55 26256; PWR7-NEXT: li 4, 0 26257; PWR7-NEXT: isellt 6, 5, 4 26258; PWR7-NEXT: cmpldi 3, 55 26259; PWR7-NEXT: isellt 3, 5, 4 26260; PWR7-NEXT: std 6, -8(1) 26261; PWR7-NEXT: std 3, -16(1) 26262; PWR7-NEXT: addi 3, 1, -16 26263; PWR7-NEXT: lxvd2x 34, 0, 3 26264; PWR7-NEXT: blr 26265; 26266; PWR8-LABEL: ult_55_v2i64: 26267; PWR8: # %bb.0: 26268; PWR8-NEXT: addis 3, 2, .LCPI207_0@toc@ha 26269; PWR8-NEXT: vpopcntd 2, 2 26270; PWR8-NEXT: addi 3, 3, .LCPI207_0@toc@l 26271; PWR8-NEXT: lxvd2x 35, 0, 3 26272; PWR8-NEXT: vcmpgtud 2, 3, 2 26273; PWR8-NEXT: blr 26274; 26275; PWR9-LABEL: ult_55_v2i64: 26276; PWR9: # %bb.0: 26277; PWR9-NEXT: addis 3, 2, .LCPI207_0@toc@ha 26278; PWR9-NEXT: vpopcntd 2, 2 26279; PWR9-NEXT: addi 3, 3, .LCPI207_0@toc@l 26280; PWR9-NEXT: lxv 35, 0(3) 26281; PWR9-NEXT: vcmpgtud 2, 3, 2 26282; PWR9-NEXT: blr 26283 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26284 %3 = icmp ult <2 x i64> %2, <i64 55, i64 55> 26285 %4 = sext <2 x i1> %3 to <2 x i64> 26286 ret <2 x i64> %4 26287} 26288 26289define <2 x i64> @ugt_55_v2i64(<2 x i64> %0) { 26290; PWR5-LABEL: ugt_55_v2i64: 26291; PWR5: # %bb.0: 26292; PWR5-NEXT: lis 5, 21845 26293; PWR5-NEXT: lis 6, 13107 26294; PWR5-NEXT: ori 5, 5, 21845 26295; PWR5-NEXT: rotldi 8, 4, 63 26296; PWR5-NEXT: rotldi 9, 3, 63 26297; PWR5-NEXT: rldimi 5, 5, 32, 0 26298; PWR5-NEXT: and 8, 8, 5 26299; PWR5-NEXT: and 5, 9, 5 26300; PWR5-NEXT: ori 6, 6, 13107 26301; PWR5-NEXT: sub 3, 3, 5 26302; PWR5-NEXT: rldimi 6, 6, 32, 0 26303; PWR5-NEXT: sub 4, 4, 8 26304; PWR5-NEXT: and 8, 3, 6 26305; PWR5-NEXT: rotldi 3, 3, 62 26306; PWR5-NEXT: and 3, 3, 6 26307; PWR5-NEXT: lis 7, 3855 26308; PWR5-NEXT: and 5, 4, 6 26309; PWR5-NEXT: rotldi 4, 4, 62 26310; PWR5-NEXT: add 3, 8, 3 26311; PWR5-NEXT: lis 9, 257 26312; PWR5-NEXT: ori 7, 7, 3855 26313; PWR5-NEXT: and 4, 4, 6 26314; PWR5-NEXT: rldicl 6, 3, 60, 4 26315; PWR5-NEXT: ori 9, 9, 257 26316; PWR5-NEXT: rldimi 7, 7, 32, 0 26317; PWR5-NEXT: add 4, 5, 4 26318; PWR5-NEXT: add 3, 3, 6 26319; PWR5-NEXT: rldimi 9, 9, 32, 0 26320; PWR5-NEXT: rldicl 5, 4, 60, 4 26321; PWR5-NEXT: and 3, 3, 7 26322; PWR5-NEXT: add 4, 4, 5 26323; PWR5-NEXT: mulld 3, 3, 9 26324; PWR5-NEXT: and 4, 4, 7 26325; PWR5-NEXT: rldicl 3, 3, 8, 56 26326; PWR5-NEXT: mulld 4, 4, 9 26327; PWR5-NEXT: li 5, 55 26328; PWR5-NEXT: subfic 3, 3, 55 26329; PWR5-NEXT: rldicl 4, 4, 8, 56 26330; PWR5-NEXT: subfe 3, 5, 5 26331; PWR5-NEXT: subfic 4, 4, 55 26332; PWR5-NEXT: subfe 4, 5, 5 26333; PWR5-NEXT: blr 26334; 26335; PWR6-LABEL: ugt_55_v2i64: 26336; PWR6: # %bb.0: 26337; PWR6-NEXT: lis 5, 21845 26338; PWR6-NEXT: lis 6, 13107 26339; PWR6-NEXT: ori 5, 5, 21845 26340; PWR6-NEXT: rotldi 8, 4, 63 26341; PWR6-NEXT: rotldi 9, 3, 63 26342; PWR6-NEXT: rldimi 5, 5, 32, 0 26343; PWR6-NEXT: and 8, 8, 5 26344; PWR6-NEXT: and 5, 9, 5 26345; PWR6-NEXT: ori 6, 6, 13107 26346; PWR6-NEXT: sub 3, 3, 5 26347; PWR6-NEXT: rldimi 6, 6, 32, 0 26348; PWR6-NEXT: sub 4, 4, 8 26349; PWR6-NEXT: and 8, 3, 6 26350; PWR6-NEXT: rotldi 3, 3, 62 26351; PWR6-NEXT: and 3, 3, 6 26352; PWR6-NEXT: lis 7, 3855 26353; PWR6-NEXT: and 5, 4, 6 26354; PWR6-NEXT: rotldi 4, 4, 62 26355; PWR6-NEXT: add 3, 8, 3 26356; PWR6-NEXT: lis 9, 257 26357; PWR6-NEXT: ori 7, 7, 3855 26358; PWR6-NEXT: and 4, 4, 6 26359; PWR6-NEXT: rldicl 6, 3, 60, 4 26360; PWR6-NEXT: ori 9, 9, 257 26361; PWR6-NEXT: rldimi 7, 7, 32, 0 26362; PWR6-NEXT: add 4, 5, 4 26363; PWR6-NEXT: add 3, 3, 6 26364; PWR6-NEXT: rldimi 9, 9, 32, 0 26365; PWR6-NEXT: rldicl 5, 4, 60, 4 26366; PWR6-NEXT: and 3, 3, 7 26367; PWR6-NEXT: add 4, 4, 5 26368; PWR6-NEXT: mulld 3, 3, 9 26369; PWR6-NEXT: and 4, 4, 7 26370; PWR6-NEXT: rldicl 3, 3, 8, 56 26371; PWR6-NEXT: mulld 4, 4, 9 26372; PWR6-NEXT: li 5, 55 26373; PWR6-NEXT: subfic 3, 3, 55 26374; PWR6-NEXT: rldicl 4, 4, 8, 56 26375; PWR6-NEXT: subfe 3, 5, 5 26376; PWR6-NEXT: subfic 4, 4, 55 26377; PWR6-NEXT: subfe 4, 5, 5 26378; PWR6-NEXT: blr 26379; 26380; PWR7-LABEL: ugt_55_v2i64: 26381; PWR7: # %bb.0: 26382; PWR7-NEXT: addi 3, 1, -32 26383; PWR7-NEXT: li 5, -1 26384; PWR7-NEXT: stxvd2x 34, 0, 3 26385; PWR7-NEXT: ld 4, -24(1) 26386; PWR7-NEXT: ld 3, -32(1) 26387; PWR7-NEXT: popcntd 4, 4 26388; PWR7-NEXT: popcntd 3, 3 26389; PWR7-NEXT: cmpldi 4, 55 26390; PWR7-NEXT: li 4, 0 26391; PWR7-NEXT: iselgt 6, 5, 4 26392; PWR7-NEXT: cmpldi 3, 55 26393; PWR7-NEXT: iselgt 3, 5, 4 26394; PWR7-NEXT: std 6, -8(1) 26395; PWR7-NEXT: std 3, -16(1) 26396; PWR7-NEXT: addi 3, 1, -16 26397; PWR7-NEXT: lxvd2x 34, 0, 3 26398; PWR7-NEXT: blr 26399; 26400; PWR8-LABEL: ugt_55_v2i64: 26401; PWR8: # %bb.0: 26402; PWR8-NEXT: addis 3, 2, .LCPI208_0@toc@ha 26403; PWR8-NEXT: vpopcntd 2, 2 26404; PWR8-NEXT: addi 3, 3, .LCPI208_0@toc@l 26405; PWR8-NEXT: lxvd2x 35, 0, 3 26406; PWR8-NEXT: vcmpgtud 2, 2, 3 26407; PWR8-NEXT: blr 26408; 26409; PWR9-LABEL: ugt_55_v2i64: 26410; PWR9: # %bb.0: 26411; PWR9-NEXT: addis 3, 2, .LCPI208_0@toc@ha 26412; PWR9-NEXT: vpopcntd 2, 2 26413; PWR9-NEXT: addi 3, 3, .LCPI208_0@toc@l 26414; PWR9-NEXT: lxv 35, 0(3) 26415; PWR9-NEXT: vcmpgtud 2, 2, 3 26416; PWR9-NEXT: blr 26417 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26418 %3 = icmp ugt <2 x i64> %2, <i64 55, i64 55> 26419 %4 = sext <2 x i1> %3 to <2 x i64> 26420 ret <2 x i64> %4 26421} 26422 26423define <2 x i64> @ult_56_v2i64(<2 x i64> %0) { 26424; PWR5-LABEL: ult_56_v2i64: 26425; PWR5: # %bb.0: 26426; PWR5-NEXT: lis 5, 21845 26427; PWR5-NEXT: lis 6, 13107 26428; PWR5-NEXT: ori 5, 5, 21845 26429; PWR5-NEXT: rotldi 8, 4, 63 26430; PWR5-NEXT: rotldi 9, 3, 63 26431; PWR5-NEXT: rldimi 5, 5, 32, 0 26432; PWR5-NEXT: and 8, 8, 5 26433; PWR5-NEXT: and 5, 9, 5 26434; PWR5-NEXT: ori 6, 6, 13107 26435; PWR5-NEXT: sub 3, 3, 5 26436; PWR5-NEXT: rldimi 6, 6, 32, 0 26437; PWR5-NEXT: sub 4, 4, 8 26438; PWR5-NEXT: and 8, 3, 6 26439; PWR5-NEXT: rotldi 3, 3, 62 26440; PWR5-NEXT: and 3, 3, 6 26441; PWR5-NEXT: lis 7, 3855 26442; PWR5-NEXT: and 5, 4, 6 26443; PWR5-NEXT: rotldi 4, 4, 62 26444; PWR5-NEXT: add 3, 8, 3 26445; PWR5-NEXT: lis 9, 257 26446; PWR5-NEXT: ori 7, 7, 3855 26447; PWR5-NEXT: and 4, 4, 6 26448; PWR5-NEXT: rldicl 6, 3, 60, 4 26449; PWR5-NEXT: ori 9, 9, 257 26450; PWR5-NEXT: rldimi 7, 7, 32, 0 26451; PWR5-NEXT: add 4, 5, 4 26452; PWR5-NEXT: add 3, 3, 6 26453; PWR5-NEXT: rldimi 9, 9, 32, 0 26454; PWR5-NEXT: rldicl 5, 4, 60, 4 26455; PWR5-NEXT: and 3, 3, 7 26456; PWR5-NEXT: add 4, 4, 5 26457; PWR5-NEXT: mulld 3, 3, 9 26458; PWR5-NEXT: and 4, 4, 7 26459; PWR5-NEXT: rldicl 3, 3, 8, 56 26460; PWR5-NEXT: li 5, 56 26461; PWR5-NEXT: mulld 4, 4, 9 26462; PWR5-NEXT: subc 6, 3, 5 26463; PWR5-NEXT: rldicl 4, 4, 8, 56 26464; PWR5-NEXT: subfe 3, 3, 3 26465; PWR5-NEXT: subc 5, 4, 5 26466; PWR5-NEXT: subfe 4, 4, 4 26467; PWR5-NEXT: blr 26468; 26469; PWR6-LABEL: ult_56_v2i64: 26470; PWR6: # %bb.0: 26471; PWR6-NEXT: lis 5, 21845 26472; PWR6-NEXT: lis 6, 13107 26473; PWR6-NEXT: ori 5, 5, 21845 26474; PWR6-NEXT: rotldi 8, 4, 63 26475; PWR6-NEXT: rotldi 9, 3, 63 26476; PWR6-NEXT: rldimi 5, 5, 32, 0 26477; PWR6-NEXT: and 8, 8, 5 26478; PWR6-NEXT: and 5, 9, 5 26479; PWR6-NEXT: ori 6, 6, 13107 26480; PWR6-NEXT: sub 3, 3, 5 26481; PWR6-NEXT: rldimi 6, 6, 32, 0 26482; PWR6-NEXT: sub 4, 4, 8 26483; PWR6-NEXT: and 8, 3, 6 26484; PWR6-NEXT: rotldi 3, 3, 62 26485; PWR6-NEXT: and 3, 3, 6 26486; PWR6-NEXT: lis 7, 3855 26487; PWR6-NEXT: and 5, 4, 6 26488; PWR6-NEXT: rotldi 4, 4, 62 26489; PWR6-NEXT: add 3, 8, 3 26490; PWR6-NEXT: lis 9, 257 26491; PWR6-NEXT: ori 7, 7, 3855 26492; PWR6-NEXT: and 4, 4, 6 26493; PWR6-NEXT: rldicl 6, 3, 60, 4 26494; PWR6-NEXT: ori 9, 9, 257 26495; PWR6-NEXT: rldimi 7, 7, 32, 0 26496; PWR6-NEXT: add 4, 5, 4 26497; PWR6-NEXT: add 3, 3, 6 26498; PWR6-NEXT: rldimi 9, 9, 32, 0 26499; PWR6-NEXT: rldicl 5, 4, 60, 4 26500; PWR6-NEXT: and 3, 3, 7 26501; PWR6-NEXT: add 4, 4, 5 26502; PWR6-NEXT: mulld 3, 3, 9 26503; PWR6-NEXT: and 4, 4, 7 26504; PWR6-NEXT: rldicl 3, 3, 8, 56 26505; PWR6-NEXT: li 5, 56 26506; PWR6-NEXT: mulld 4, 4, 9 26507; PWR6-NEXT: subc 6, 3, 5 26508; PWR6-NEXT: rldicl 4, 4, 8, 56 26509; PWR6-NEXT: subfe 3, 3, 3 26510; PWR6-NEXT: subc 5, 4, 5 26511; PWR6-NEXT: subfe 4, 4, 4 26512; PWR6-NEXT: blr 26513; 26514; PWR7-LABEL: ult_56_v2i64: 26515; PWR7: # %bb.0: 26516; PWR7-NEXT: addi 3, 1, -32 26517; PWR7-NEXT: li 5, -1 26518; PWR7-NEXT: stxvd2x 34, 0, 3 26519; PWR7-NEXT: ld 4, -24(1) 26520; PWR7-NEXT: ld 3, -32(1) 26521; PWR7-NEXT: popcntd 4, 4 26522; PWR7-NEXT: popcntd 3, 3 26523; PWR7-NEXT: cmpldi 4, 56 26524; PWR7-NEXT: li 4, 0 26525; PWR7-NEXT: isellt 6, 5, 4 26526; PWR7-NEXT: cmpldi 3, 56 26527; PWR7-NEXT: isellt 3, 5, 4 26528; PWR7-NEXT: std 6, -8(1) 26529; PWR7-NEXT: std 3, -16(1) 26530; PWR7-NEXT: addi 3, 1, -16 26531; PWR7-NEXT: lxvd2x 34, 0, 3 26532; PWR7-NEXT: blr 26533; 26534; PWR8-LABEL: ult_56_v2i64: 26535; PWR8: # %bb.0: 26536; PWR8-NEXT: addis 3, 2, .LCPI209_0@toc@ha 26537; PWR8-NEXT: vpopcntd 2, 2 26538; PWR8-NEXT: addi 3, 3, .LCPI209_0@toc@l 26539; PWR8-NEXT: lxvd2x 35, 0, 3 26540; PWR8-NEXT: vcmpgtud 2, 3, 2 26541; PWR8-NEXT: blr 26542; 26543; PWR9-LABEL: ult_56_v2i64: 26544; PWR9: # %bb.0: 26545; PWR9-NEXT: addis 3, 2, .LCPI209_0@toc@ha 26546; PWR9-NEXT: vpopcntd 2, 2 26547; PWR9-NEXT: addi 3, 3, .LCPI209_0@toc@l 26548; PWR9-NEXT: lxv 35, 0(3) 26549; PWR9-NEXT: vcmpgtud 2, 3, 2 26550; PWR9-NEXT: blr 26551 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26552 %3 = icmp ult <2 x i64> %2, <i64 56, i64 56> 26553 %4 = sext <2 x i1> %3 to <2 x i64> 26554 ret <2 x i64> %4 26555} 26556 26557define <2 x i64> @ugt_56_v2i64(<2 x i64> %0) { 26558; PWR5-LABEL: ugt_56_v2i64: 26559; PWR5: # %bb.0: 26560; PWR5-NEXT: lis 5, 21845 26561; PWR5-NEXT: lis 6, 13107 26562; PWR5-NEXT: ori 5, 5, 21845 26563; PWR5-NEXT: rotldi 8, 4, 63 26564; PWR5-NEXT: rotldi 9, 3, 63 26565; PWR5-NEXT: rldimi 5, 5, 32, 0 26566; PWR5-NEXT: and 8, 8, 5 26567; PWR5-NEXT: and 5, 9, 5 26568; PWR5-NEXT: ori 6, 6, 13107 26569; PWR5-NEXT: sub 3, 3, 5 26570; PWR5-NEXT: rldimi 6, 6, 32, 0 26571; PWR5-NEXT: sub 4, 4, 8 26572; PWR5-NEXT: and 8, 3, 6 26573; PWR5-NEXT: rotldi 3, 3, 62 26574; PWR5-NEXT: and 3, 3, 6 26575; PWR5-NEXT: lis 7, 3855 26576; PWR5-NEXT: and 5, 4, 6 26577; PWR5-NEXT: rotldi 4, 4, 62 26578; PWR5-NEXT: add 3, 8, 3 26579; PWR5-NEXT: lis 9, 257 26580; PWR5-NEXT: ori 7, 7, 3855 26581; PWR5-NEXT: and 4, 4, 6 26582; PWR5-NEXT: rldicl 6, 3, 60, 4 26583; PWR5-NEXT: ori 9, 9, 257 26584; PWR5-NEXT: rldimi 7, 7, 32, 0 26585; PWR5-NEXT: add 4, 5, 4 26586; PWR5-NEXT: add 3, 3, 6 26587; PWR5-NEXT: rldimi 9, 9, 32, 0 26588; PWR5-NEXT: rldicl 5, 4, 60, 4 26589; PWR5-NEXT: and 3, 3, 7 26590; PWR5-NEXT: add 4, 4, 5 26591; PWR5-NEXT: mulld 3, 3, 9 26592; PWR5-NEXT: and 4, 4, 7 26593; PWR5-NEXT: rldicl 3, 3, 8, 56 26594; PWR5-NEXT: mulld 4, 4, 9 26595; PWR5-NEXT: li 5, 56 26596; PWR5-NEXT: subfic 3, 3, 56 26597; PWR5-NEXT: rldicl 4, 4, 8, 56 26598; PWR5-NEXT: subfe 3, 5, 5 26599; PWR5-NEXT: subfic 4, 4, 56 26600; PWR5-NEXT: subfe 4, 5, 5 26601; PWR5-NEXT: blr 26602; 26603; PWR6-LABEL: ugt_56_v2i64: 26604; PWR6: # %bb.0: 26605; PWR6-NEXT: lis 5, 21845 26606; PWR6-NEXT: lis 6, 13107 26607; PWR6-NEXT: ori 5, 5, 21845 26608; PWR6-NEXT: rotldi 8, 4, 63 26609; PWR6-NEXT: rotldi 9, 3, 63 26610; PWR6-NEXT: rldimi 5, 5, 32, 0 26611; PWR6-NEXT: and 8, 8, 5 26612; PWR6-NEXT: and 5, 9, 5 26613; PWR6-NEXT: ori 6, 6, 13107 26614; PWR6-NEXT: sub 3, 3, 5 26615; PWR6-NEXT: rldimi 6, 6, 32, 0 26616; PWR6-NEXT: sub 4, 4, 8 26617; PWR6-NEXT: and 8, 3, 6 26618; PWR6-NEXT: rotldi 3, 3, 62 26619; PWR6-NEXT: and 3, 3, 6 26620; PWR6-NEXT: lis 7, 3855 26621; PWR6-NEXT: and 5, 4, 6 26622; PWR6-NEXT: rotldi 4, 4, 62 26623; PWR6-NEXT: add 3, 8, 3 26624; PWR6-NEXT: lis 9, 257 26625; PWR6-NEXT: ori 7, 7, 3855 26626; PWR6-NEXT: and 4, 4, 6 26627; PWR6-NEXT: rldicl 6, 3, 60, 4 26628; PWR6-NEXT: ori 9, 9, 257 26629; PWR6-NEXT: rldimi 7, 7, 32, 0 26630; PWR6-NEXT: add 4, 5, 4 26631; PWR6-NEXT: add 3, 3, 6 26632; PWR6-NEXT: rldimi 9, 9, 32, 0 26633; PWR6-NEXT: rldicl 5, 4, 60, 4 26634; PWR6-NEXT: and 3, 3, 7 26635; PWR6-NEXT: add 4, 4, 5 26636; PWR6-NEXT: mulld 3, 3, 9 26637; PWR6-NEXT: and 4, 4, 7 26638; PWR6-NEXT: rldicl 3, 3, 8, 56 26639; PWR6-NEXT: mulld 4, 4, 9 26640; PWR6-NEXT: li 5, 56 26641; PWR6-NEXT: subfic 3, 3, 56 26642; PWR6-NEXT: rldicl 4, 4, 8, 56 26643; PWR6-NEXT: subfe 3, 5, 5 26644; PWR6-NEXT: subfic 4, 4, 56 26645; PWR6-NEXT: subfe 4, 5, 5 26646; PWR6-NEXT: blr 26647; 26648; PWR7-LABEL: ugt_56_v2i64: 26649; PWR7: # %bb.0: 26650; PWR7-NEXT: addi 3, 1, -32 26651; PWR7-NEXT: li 5, -1 26652; PWR7-NEXT: stxvd2x 34, 0, 3 26653; PWR7-NEXT: ld 4, -24(1) 26654; PWR7-NEXT: ld 3, -32(1) 26655; PWR7-NEXT: popcntd 4, 4 26656; PWR7-NEXT: popcntd 3, 3 26657; PWR7-NEXT: cmpldi 4, 56 26658; PWR7-NEXT: li 4, 0 26659; PWR7-NEXT: iselgt 6, 5, 4 26660; PWR7-NEXT: cmpldi 3, 56 26661; PWR7-NEXT: iselgt 3, 5, 4 26662; PWR7-NEXT: std 6, -8(1) 26663; PWR7-NEXT: std 3, -16(1) 26664; PWR7-NEXT: addi 3, 1, -16 26665; PWR7-NEXT: lxvd2x 34, 0, 3 26666; PWR7-NEXT: blr 26667; 26668; PWR8-LABEL: ugt_56_v2i64: 26669; PWR8: # %bb.0: 26670; PWR8-NEXT: addis 3, 2, .LCPI210_0@toc@ha 26671; PWR8-NEXT: vpopcntd 2, 2 26672; PWR8-NEXT: addi 3, 3, .LCPI210_0@toc@l 26673; PWR8-NEXT: lxvd2x 35, 0, 3 26674; PWR8-NEXT: vcmpgtud 2, 2, 3 26675; PWR8-NEXT: blr 26676; 26677; PWR9-LABEL: ugt_56_v2i64: 26678; PWR9: # %bb.0: 26679; PWR9-NEXT: addis 3, 2, .LCPI210_0@toc@ha 26680; PWR9-NEXT: vpopcntd 2, 2 26681; PWR9-NEXT: addi 3, 3, .LCPI210_0@toc@l 26682; PWR9-NEXT: lxv 35, 0(3) 26683; PWR9-NEXT: vcmpgtud 2, 2, 3 26684; PWR9-NEXT: blr 26685 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26686 %3 = icmp ugt <2 x i64> %2, <i64 56, i64 56> 26687 %4 = sext <2 x i1> %3 to <2 x i64> 26688 ret <2 x i64> %4 26689} 26690 26691define <2 x i64> @ult_57_v2i64(<2 x i64> %0) { 26692; PWR5-LABEL: ult_57_v2i64: 26693; PWR5: # %bb.0: 26694; PWR5-NEXT: lis 5, 21845 26695; PWR5-NEXT: lis 6, 13107 26696; PWR5-NEXT: ori 5, 5, 21845 26697; PWR5-NEXT: rotldi 8, 4, 63 26698; PWR5-NEXT: rotldi 9, 3, 63 26699; PWR5-NEXT: rldimi 5, 5, 32, 0 26700; PWR5-NEXT: and 8, 8, 5 26701; PWR5-NEXT: and 5, 9, 5 26702; PWR5-NEXT: ori 6, 6, 13107 26703; PWR5-NEXT: sub 3, 3, 5 26704; PWR5-NEXT: rldimi 6, 6, 32, 0 26705; PWR5-NEXT: sub 4, 4, 8 26706; PWR5-NEXT: and 8, 3, 6 26707; PWR5-NEXT: rotldi 3, 3, 62 26708; PWR5-NEXT: and 3, 3, 6 26709; PWR5-NEXT: lis 7, 3855 26710; PWR5-NEXT: and 5, 4, 6 26711; PWR5-NEXT: rotldi 4, 4, 62 26712; PWR5-NEXT: add 3, 8, 3 26713; PWR5-NEXT: lis 9, 257 26714; PWR5-NEXT: ori 7, 7, 3855 26715; PWR5-NEXT: and 4, 4, 6 26716; PWR5-NEXT: rldicl 6, 3, 60, 4 26717; PWR5-NEXT: ori 9, 9, 257 26718; PWR5-NEXT: rldimi 7, 7, 32, 0 26719; PWR5-NEXT: add 4, 5, 4 26720; PWR5-NEXT: add 3, 3, 6 26721; PWR5-NEXT: rldimi 9, 9, 32, 0 26722; PWR5-NEXT: rldicl 5, 4, 60, 4 26723; PWR5-NEXT: and 3, 3, 7 26724; PWR5-NEXT: add 4, 4, 5 26725; PWR5-NEXT: mulld 3, 3, 9 26726; PWR5-NEXT: and 4, 4, 7 26727; PWR5-NEXT: rldicl 3, 3, 8, 56 26728; PWR5-NEXT: li 5, 57 26729; PWR5-NEXT: mulld 4, 4, 9 26730; PWR5-NEXT: subc 6, 3, 5 26731; PWR5-NEXT: rldicl 4, 4, 8, 56 26732; PWR5-NEXT: subfe 3, 3, 3 26733; PWR5-NEXT: subc 5, 4, 5 26734; PWR5-NEXT: subfe 4, 4, 4 26735; PWR5-NEXT: blr 26736; 26737; PWR6-LABEL: ult_57_v2i64: 26738; PWR6: # %bb.0: 26739; PWR6-NEXT: lis 5, 21845 26740; PWR6-NEXT: lis 6, 13107 26741; PWR6-NEXT: ori 5, 5, 21845 26742; PWR6-NEXT: rotldi 8, 4, 63 26743; PWR6-NEXT: rotldi 9, 3, 63 26744; PWR6-NEXT: rldimi 5, 5, 32, 0 26745; PWR6-NEXT: and 8, 8, 5 26746; PWR6-NEXT: and 5, 9, 5 26747; PWR6-NEXT: ori 6, 6, 13107 26748; PWR6-NEXT: sub 3, 3, 5 26749; PWR6-NEXT: rldimi 6, 6, 32, 0 26750; PWR6-NEXT: sub 4, 4, 8 26751; PWR6-NEXT: and 8, 3, 6 26752; PWR6-NEXT: rotldi 3, 3, 62 26753; PWR6-NEXT: and 3, 3, 6 26754; PWR6-NEXT: lis 7, 3855 26755; PWR6-NEXT: and 5, 4, 6 26756; PWR6-NEXT: rotldi 4, 4, 62 26757; PWR6-NEXT: add 3, 8, 3 26758; PWR6-NEXT: lis 9, 257 26759; PWR6-NEXT: ori 7, 7, 3855 26760; PWR6-NEXT: and 4, 4, 6 26761; PWR6-NEXT: rldicl 6, 3, 60, 4 26762; PWR6-NEXT: ori 9, 9, 257 26763; PWR6-NEXT: rldimi 7, 7, 32, 0 26764; PWR6-NEXT: add 4, 5, 4 26765; PWR6-NEXT: add 3, 3, 6 26766; PWR6-NEXT: rldimi 9, 9, 32, 0 26767; PWR6-NEXT: rldicl 5, 4, 60, 4 26768; PWR6-NEXT: and 3, 3, 7 26769; PWR6-NEXT: add 4, 4, 5 26770; PWR6-NEXT: mulld 3, 3, 9 26771; PWR6-NEXT: and 4, 4, 7 26772; PWR6-NEXT: rldicl 3, 3, 8, 56 26773; PWR6-NEXT: li 5, 57 26774; PWR6-NEXT: mulld 4, 4, 9 26775; PWR6-NEXT: subc 6, 3, 5 26776; PWR6-NEXT: rldicl 4, 4, 8, 56 26777; PWR6-NEXT: subfe 3, 3, 3 26778; PWR6-NEXT: subc 5, 4, 5 26779; PWR6-NEXT: subfe 4, 4, 4 26780; PWR6-NEXT: blr 26781; 26782; PWR7-LABEL: ult_57_v2i64: 26783; PWR7: # %bb.0: 26784; PWR7-NEXT: addi 3, 1, -32 26785; PWR7-NEXT: li 5, -1 26786; PWR7-NEXT: stxvd2x 34, 0, 3 26787; PWR7-NEXT: ld 4, -24(1) 26788; PWR7-NEXT: ld 3, -32(1) 26789; PWR7-NEXT: popcntd 4, 4 26790; PWR7-NEXT: popcntd 3, 3 26791; PWR7-NEXT: cmpldi 4, 57 26792; PWR7-NEXT: li 4, 0 26793; PWR7-NEXT: isellt 6, 5, 4 26794; PWR7-NEXT: cmpldi 3, 57 26795; PWR7-NEXT: isellt 3, 5, 4 26796; PWR7-NEXT: std 6, -8(1) 26797; PWR7-NEXT: std 3, -16(1) 26798; PWR7-NEXT: addi 3, 1, -16 26799; PWR7-NEXT: lxvd2x 34, 0, 3 26800; PWR7-NEXT: blr 26801; 26802; PWR8-LABEL: ult_57_v2i64: 26803; PWR8: # %bb.0: 26804; PWR8-NEXT: addis 3, 2, .LCPI211_0@toc@ha 26805; PWR8-NEXT: vpopcntd 2, 2 26806; PWR8-NEXT: addi 3, 3, .LCPI211_0@toc@l 26807; PWR8-NEXT: lxvd2x 35, 0, 3 26808; PWR8-NEXT: vcmpgtud 2, 3, 2 26809; PWR8-NEXT: blr 26810; 26811; PWR9-LABEL: ult_57_v2i64: 26812; PWR9: # %bb.0: 26813; PWR9-NEXT: addis 3, 2, .LCPI211_0@toc@ha 26814; PWR9-NEXT: vpopcntd 2, 2 26815; PWR9-NEXT: addi 3, 3, .LCPI211_0@toc@l 26816; PWR9-NEXT: lxv 35, 0(3) 26817; PWR9-NEXT: vcmpgtud 2, 3, 2 26818; PWR9-NEXT: blr 26819 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26820 %3 = icmp ult <2 x i64> %2, <i64 57, i64 57> 26821 %4 = sext <2 x i1> %3 to <2 x i64> 26822 ret <2 x i64> %4 26823} 26824 26825define <2 x i64> @ugt_57_v2i64(<2 x i64> %0) { 26826; PWR5-LABEL: ugt_57_v2i64: 26827; PWR5: # %bb.0: 26828; PWR5-NEXT: lis 5, 21845 26829; PWR5-NEXT: lis 6, 13107 26830; PWR5-NEXT: ori 5, 5, 21845 26831; PWR5-NEXT: rotldi 8, 4, 63 26832; PWR5-NEXT: rotldi 9, 3, 63 26833; PWR5-NEXT: rldimi 5, 5, 32, 0 26834; PWR5-NEXT: and 8, 8, 5 26835; PWR5-NEXT: and 5, 9, 5 26836; PWR5-NEXT: ori 6, 6, 13107 26837; PWR5-NEXT: sub 3, 3, 5 26838; PWR5-NEXT: rldimi 6, 6, 32, 0 26839; PWR5-NEXT: sub 4, 4, 8 26840; PWR5-NEXT: and 8, 3, 6 26841; PWR5-NEXT: rotldi 3, 3, 62 26842; PWR5-NEXT: and 3, 3, 6 26843; PWR5-NEXT: lis 7, 3855 26844; PWR5-NEXT: and 5, 4, 6 26845; PWR5-NEXT: rotldi 4, 4, 62 26846; PWR5-NEXT: add 3, 8, 3 26847; PWR5-NEXT: lis 9, 257 26848; PWR5-NEXT: ori 7, 7, 3855 26849; PWR5-NEXT: and 4, 4, 6 26850; PWR5-NEXT: rldicl 6, 3, 60, 4 26851; PWR5-NEXT: ori 9, 9, 257 26852; PWR5-NEXT: rldimi 7, 7, 32, 0 26853; PWR5-NEXT: add 4, 5, 4 26854; PWR5-NEXT: add 3, 3, 6 26855; PWR5-NEXT: rldimi 9, 9, 32, 0 26856; PWR5-NEXT: rldicl 5, 4, 60, 4 26857; PWR5-NEXT: and 3, 3, 7 26858; PWR5-NEXT: add 4, 4, 5 26859; PWR5-NEXT: mulld 3, 3, 9 26860; PWR5-NEXT: and 4, 4, 7 26861; PWR5-NEXT: rldicl 3, 3, 8, 56 26862; PWR5-NEXT: mulld 4, 4, 9 26863; PWR5-NEXT: li 5, 57 26864; PWR5-NEXT: subfic 3, 3, 57 26865; PWR5-NEXT: rldicl 4, 4, 8, 56 26866; PWR5-NEXT: subfe 3, 5, 5 26867; PWR5-NEXT: subfic 4, 4, 57 26868; PWR5-NEXT: subfe 4, 5, 5 26869; PWR5-NEXT: blr 26870; 26871; PWR6-LABEL: ugt_57_v2i64: 26872; PWR6: # %bb.0: 26873; PWR6-NEXT: lis 5, 21845 26874; PWR6-NEXT: lis 6, 13107 26875; PWR6-NEXT: ori 5, 5, 21845 26876; PWR6-NEXT: rotldi 8, 4, 63 26877; PWR6-NEXT: rotldi 9, 3, 63 26878; PWR6-NEXT: rldimi 5, 5, 32, 0 26879; PWR6-NEXT: and 8, 8, 5 26880; PWR6-NEXT: and 5, 9, 5 26881; PWR6-NEXT: ori 6, 6, 13107 26882; PWR6-NEXT: sub 3, 3, 5 26883; PWR6-NEXT: rldimi 6, 6, 32, 0 26884; PWR6-NEXT: sub 4, 4, 8 26885; PWR6-NEXT: and 8, 3, 6 26886; PWR6-NEXT: rotldi 3, 3, 62 26887; PWR6-NEXT: and 3, 3, 6 26888; PWR6-NEXT: lis 7, 3855 26889; PWR6-NEXT: and 5, 4, 6 26890; PWR6-NEXT: rotldi 4, 4, 62 26891; PWR6-NEXT: add 3, 8, 3 26892; PWR6-NEXT: lis 9, 257 26893; PWR6-NEXT: ori 7, 7, 3855 26894; PWR6-NEXT: and 4, 4, 6 26895; PWR6-NEXT: rldicl 6, 3, 60, 4 26896; PWR6-NEXT: ori 9, 9, 257 26897; PWR6-NEXT: rldimi 7, 7, 32, 0 26898; PWR6-NEXT: add 4, 5, 4 26899; PWR6-NEXT: add 3, 3, 6 26900; PWR6-NEXT: rldimi 9, 9, 32, 0 26901; PWR6-NEXT: rldicl 5, 4, 60, 4 26902; PWR6-NEXT: and 3, 3, 7 26903; PWR6-NEXT: add 4, 4, 5 26904; PWR6-NEXT: mulld 3, 3, 9 26905; PWR6-NEXT: and 4, 4, 7 26906; PWR6-NEXT: rldicl 3, 3, 8, 56 26907; PWR6-NEXT: mulld 4, 4, 9 26908; PWR6-NEXT: li 5, 57 26909; PWR6-NEXT: subfic 3, 3, 57 26910; PWR6-NEXT: rldicl 4, 4, 8, 56 26911; PWR6-NEXT: subfe 3, 5, 5 26912; PWR6-NEXT: subfic 4, 4, 57 26913; PWR6-NEXT: subfe 4, 5, 5 26914; PWR6-NEXT: blr 26915; 26916; PWR7-LABEL: ugt_57_v2i64: 26917; PWR7: # %bb.0: 26918; PWR7-NEXT: addi 3, 1, -32 26919; PWR7-NEXT: li 5, -1 26920; PWR7-NEXT: stxvd2x 34, 0, 3 26921; PWR7-NEXT: ld 4, -24(1) 26922; PWR7-NEXT: ld 3, -32(1) 26923; PWR7-NEXT: popcntd 4, 4 26924; PWR7-NEXT: popcntd 3, 3 26925; PWR7-NEXT: cmpldi 4, 57 26926; PWR7-NEXT: li 4, 0 26927; PWR7-NEXT: iselgt 6, 5, 4 26928; PWR7-NEXT: cmpldi 3, 57 26929; PWR7-NEXT: iselgt 3, 5, 4 26930; PWR7-NEXT: std 6, -8(1) 26931; PWR7-NEXT: std 3, -16(1) 26932; PWR7-NEXT: addi 3, 1, -16 26933; PWR7-NEXT: lxvd2x 34, 0, 3 26934; PWR7-NEXT: blr 26935; 26936; PWR8-LABEL: ugt_57_v2i64: 26937; PWR8: # %bb.0: 26938; PWR8-NEXT: addis 3, 2, .LCPI212_0@toc@ha 26939; PWR8-NEXT: vpopcntd 2, 2 26940; PWR8-NEXT: addi 3, 3, .LCPI212_0@toc@l 26941; PWR8-NEXT: lxvd2x 35, 0, 3 26942; PWR8-NEXT: vcmpgtud 2, 2, 3 26943; PWR8-NEXT: blr 26944; 26945; PWR9-LABEL: ugt_57_v2i64: 26946; PWR9: # %bb.0: 26947; PWR9-NEXT: addis 3, 2, .LCPI212_0@toc@ha 26948; PWR9-NEXT: vpopcntd 2, 2 26949; PWR9-NEXT: addi 3, 3, .LCPI212_0@toc@l 26950; PWR9-NEXT: lxv 35, 0(3) 26951; PWR9-NEXT: vcmpgtud 2, 2, 3 26952; PWR9-NEXT: blr 26953 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 26954 %3 = icmp ugt <2 x i64> %2, <i64 57, i64 57> 26955 %4 = sext <2 x i1> %3 to <2 x i64> 26956 ret <2 x i64> %4 26957} 26958 26959define <2 x i64> @ult_58_v2i64(<2 x i64> %0) { 26960; PWR5-LABEL: ult_58_v2i64: 26961; PWR5: # %bb.0: 26962; PWR5-NEXT: lis 5, 21845 26963; PWR5-NEXT: lis 6, 13107 26964; PWR5-NEXT: ori 5, 5, 21845 26965; PWR5-NEXT: rotldi 8, 4, 63 26966; PWR5-NEXT: rotldi 9, 3, 63 26967; PWR5-NEXT: rldimi 5, 5, 32, 0 26968; PWR5-NEXT: and 8, 8, 5 26969; PWR5-NEXT: and 5, 9, 5 26970; PWR5-NEXT: ori 6, 6, 13107 26971; PWR5-NEXT: sub 3, 3, 5 26972; PWR5-NEXT: rldimi 6, 6, 32, 0 26973; PWR5-NEXT: sub 4, 4, 8 26974; PWR5-NEXT: and 8, 3, 6 26975; PWR5-NEXT: rotldi 3, 3, 62 26976; PWR5-NEXT: and 3, 3, 6 26977; PWR5-NEXT: lis 7, 3855 26978; PWR5-NEXT: and 5, 4, 6 26979; PWR5-NEXT: rotldi 4, 4, 62 26980; PWR5-NEXT: add 3, 8, 3 26981; PWR5-NEXT: lis 9, 257 26982; PWR5-NEXT: ori 7, 7, 3855 26983; PWR5-NEXT: and 4, 4, 6 26984; PWR5-NEXT: rldicl 6, 3, 60, 4 26985; PWR5-NEXT: ori 9, 9, 257 26986; PWR5-NEXT: rldimi 7, 7, 32, 0 26987; PWR5-NEXT: add 4, 5, 4 26988; PWR5-NEXT: add 3, 3, 6 26989; PWR5-NEXT: rldimi 9, 9, 32, 0 26990; PWR5-NEXT: rldicl 5, 4, 60, 4 26991; PWR5-NEXT: and 3, 3, 7 26992; PWR5-NEXT: add 4, 4, 5 26993; PWR5-NEXT: mulld 3, 3, 9 26994; PWR5-NEXT: and 4, 4, 7 26995; PWR5-NEXT: rldicl 3, 3, 8, 56 26996; PWR5-NEXT: li 5, 58 26997; PWR5-NEXT: mulld 4, 4, 9 26998; PWR5-NEXT: subc 6, 3, 5 26999; PWR5-NEXT: rldicl 4, 4, 8, 56 27000; PWR5-NEXT: subfe 3, 3, 3 27001; PWR5-NEXT: subc 5, 4, 5 27002; PWR5-NEXT: subfe 4, 4, 4 27003; PWR5-NEXT: blr 27004; 27005; PWR6-LABEL: ult_58_v2i64: 27006; PWR6: # %bb.0: 27007; PWR6-NEXT: lis 5, 21845 27008; PWR6-NEXT: lis 6, 13107 27009; PWR6-NEXT: ori 5, 5, 21845 27010; PWR6-NEXT: rotldi 8, 4, 63 27011; PWR6-NEXT: rotldi 9, 3, 63 27012; PWR6-NEXT: rldimi 5, 5, 32, 0 27013; PWR6-NEXT: and 8, 8, 5 27014; PWR6-NEXT: and 5, 9, 5 27015; PWR6-NEXT: ori 6, 6, 13107 27016; PWR6-NEXT: sub 3, 3, 5 27017; PWR6-NEXT: rldimi 6, 6, 32, 0 27018; PWR6-NEXT: sub 4, 4, 8 27019; PWR6-NEXT: and 8, 3, 6 27020; PWR6-NEXT: rotldi 3, 3, 62 27021; PWR6-NEXT: and 3, 3, 6 27022; PWR6-NEXT: lis 7, 3855 27023; PWR6-NEXT: and 5, 4, 6 27024; PWR6-NEXT: rotldi 4, 4, 62 27025; PWR6-NEXT: add 3, 8, 3 27026; PWR6-NEXT: lis 9, 257 27027; PWR6-NEXT: ori 7, 7, 3855 27028; PWR6-NEXT: and 4, 4, 6 27029; PWR6-NEXT: rldicl 6, 3, 60, 4 27030; PWR6-NEXT: ori 9, 9, 257 27031; PWR6-NEXT: rldimi 7, 7, 32, 0 27032; PWR6-NEXT: add 4, 5, 4 27033; PWR6-NEXT: add 3, 3, 6 27034; PWR6-NEXT: rldimi 9, 9, 32, 0 27035; PWR6-NEXT: rldicl 5, 4, 60, 4 27036; PWR6-NEXT: and 3, 3, 7 27037; PWR6-NEXT: add 4, 4, 5 27038; PWR6-NEXT: mulld 3, 3, 9 27039; PWR6-NEXT: and 4, 4, 7 27040; PWR6-NEXT: rldicl 3, 3, 8, 56 27041; PWR6-NEXT: li 5, 58 27042; PWR6-NEXT: mulld 4, 4, 9 27043; PWR6-NEXT: subc 6, 3, 5 27044; PWR6-NEXT: rldicl 4, 4, 8, 56 27045; PWR6-NEXT: subfe 3, 3, 3 27046; PWR6-NEXT: subc 5, 4, 5 27047; PWR6-NEXT: subfe 4, 4, 4 27048; PWR6-NEXT: blr 27049; 27050; PWR7-LABEL: ult_58_v2i64: 27051; PWR7: # %bb.0: 27052; PWR7-NEXT: addi 3, 1, -32 27053; PWR7-NEXT: li 5, -1 27054; PWR7-NEXT: stxvd2x 34, 0, 3 27055; PWR7-NEXT: ld 4, -24(1) 27056; PWR7-NEXT: ld 3, -32(1) 27057; PWR7-NEXT: popcntd 4, 4 27058; PWR7-NEXT: popcntd 3, 3 27059; PWR7-NEXT: cmpldi 4, 58 27060; PWR7-NEXT: li 4, 0 27061; PWR7-NEXT: isellt 6, 5, 4 27062; PWR7-NEXT: cmpldi 3, 58 27063; PWR7-NEXT: isellt 3, 5, 4 27064; PWR7-NEXT: std 6, -8(1) 27065; PWR7-NEXT: std 3, -16(1) 27066; PWR7-NEXT: addi 3, 1, -16 27067; PWR7-NEXT: lxvd2x 34, 0, 3 27068; PWR7-NEXT: blr 27069; 27070; PWR8-LABEL: ult_58_v2i64: 27071; PWR8: # %bb.0: 27072; PWR8-NEXT: addis 3, 2, .LCPI213_0@toc@ha 27073; PWR8-NEXT: vpopcntd 2, 2 27074; PWR8-NEXT: addi 3, 3, .LCPI213_0@toc@l 27075; PWR8-NEXT: lxvd2x 35, 0, 3 27076; PWR8-NEXT: vcmpgtud 2, 3, 2 27077; PWR8-NEXT: blr 27078; 27079; PWR9-LABEL: ult_58_v2i64: 27080; PWR9: # %bb.0: 27081; PWR9-NEXT: addis 3, 2, .LCPI213_0@toc@ha 27082; PWR9-NEXT: vpopcntd 2, 2 27083; PWR9-NEXT: addi 3, 3, .LCPI213_0@toc@l 27084; PWR9-NEXT: lxv 35, 0(3) 27085; PWR9-NEXT: vcmpgtud 2, 3, 2 27086; PWR9-NEXT: blr 27087 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27088 %3 = icmp ult <2 x i64> %2, <i64 58, i64 58> 27089 %4 = sext <2 x i1> %3 to <2 x i64> 27090 ret <2 x i64> %4 27091} 27092 27093define <2 x i64> @ugt_58_v2i64(<2 x i64> %0) { 27094; PWR5-LABEL: ugt_58_v2i64: 27095; PWR5: # %bb.0: 27096; PWR5-NEXT: lis 5, 21845 27097; PWR5-NEXT: lis 6, 13107 27098; PWR5-NEXT: ori 5, 5, 21845 27099; PWR5-NEXT: rotldi 8, 4, 63 27100; PWR5-NEXT: rotldi 9, 3, 63 27101; PWR5-NEXT: rldimi 5, 5, 32, 0 27102; PWR5-NEXT: and 8, 8, 5 27103; PWR5-NEXT: and 5, 9, 5 27104; PWR5-NEXT: ori 6, 6, 13107 27105; PWR5-NEXT: sub 3, 3, 5 27106; PWR5-NEXT: rldimi 6, 6, 32, 0 27107; PWR5-NEXT: sub 4, 4, 8 27108; PWR5-NEXT: and 8, 3, 6 27109; PWR5-NEXT: rotldi 3, 3, 62 27110; PWR5-NEXT: and 3, 3, 6 27111; PWR5-NEXT: lis 7, 3855 27112; PWR5-NEXT: and 5, 4, 6 27113; PWR5-NEXT: rotldi 4, 4, 62 27114; PWR5-NEXT: add 3, 8, 3 27115; PWR5-NEXT: lis 9, 257 27116; PWR5-NEXT: ori 7, 7, 3855 27117; PWR5-NEXT: and 4, 4, 6 27118; PWR5-NEXT: rldicl 6, 3, 60, 4 27119; PWR5-NEXT: ori 9, 9, 257 27120; PWR5-NEXT: rldimi 7, 7, 32, 0 27121; PWR5-NEXT: add 4, 5, 4 27122; PWR5-NEXT: add 3, 3, 6 27123; PWR5-NEXT: rldimi 9, 9, 32, 0 27124; PWR5-NEXT: rldicl 5, 4, 60, 4 27125; PWR5-NEXT: and 3, 3, 7 27126; PWR5-NEXT: add 4, 4, 5 27127; PWR5-NEXT: mulld 3, 3, 9 27128; PWR5-NEXT: and 4, 4, 7 27129; PWR5-NEXT: rldicl 3, 3, 8, 56 27130; PWR5-NEXT: mulld 4, 4, 9 27131; PWR5-NEXT: li 5, 58 27132; PWR5-NEXT: subfic 3, 3, 58 27133; PWR5-NEXT: rldicl 4, 4, 8, 56 27134; PWR5-NEXT: subfe 3, 5, 5 27135; PWR5-NEXT: subfic 4, 4, 58 27136; PWR5-NEXT: subfe 4, 5, 5 27137; PWR5-NEXT: blr 27138; 27139; PWR6-LABEL: ugt_58_v2i64: 27140; PWR6: # %bb.0: 27141; PWR6-NEXT: lis 5, 21845 27142; PWR6-NEXT: lis 6, 13107 27143; PWR6-NEXT: ori 5, 5, 21845 27144; PWR6-NEXT: rotldi 8, 4, 63 27145; PWR6-NEXT: rotldi 9, 3, 63 27146; PWR6-NEXT: rldimi 5, 5, 32, 0 27147; PWR6-NEXT: and 8, 8, 5 27148; PWR6-NEXT: and 5, 9, 5 27149; PWR6-NEXT: ori 6, 6, 13107 27150; PWR6-NEXT: sub 3, 3, 5 27151; PWR6-NEXT: rldimi 6, 6, 32, 0 27152; PWR6-NEXT: sub 4, 4, 8 27153; PWR6-NEXT: and 8, 3, 6 27154; PWR6-NEXT: rotldi 3, 3, 62 27155; PWR6-NEXT: and 3, 3, 6 27156; PWR6-NEXT: lis 7, 3855 27157; PWR6-NEXT: and 5, 4, 6 27158; PWR6-NEXT: rotldi 4, 4, 62 27159; PWR6-NEXT: add 3, 8, 3 27160; PWR6-NEXT: lis 9, 257 27161; PWR6-NEXT: ori 7, 7, 3855 27162; PWR6-NEXT: and 4, 4, 6 27163; PWR6-NEXT: rldicl 6, 3, 60, 4 27164; PWR6-NEXT: ori 9, 9, 257 27165; PWR6-NEXT: rldimi 7, 7, 32, 0 27166; PWR6-NEXT: add 4, 5, 4 27167; PWR6-NEXT: add 3, 3, 6 27168; PWR6-NEXT: rldimi 9, 9, 32, 0 27169; PWR6-NEXT: rldicl 5, 4, 60, 4 27170; PWR6-NEXT: and 3, 3, 7 27171; PWR6-NEXT: add 4, 4, 5 27172; PWR6-NEXT: mulld 3, 3, 9 27173; PWR6-NEXT: and 4, 4, 7 27174; PWR6-NEXT: rldicl 3, 3, 8, 56 27175; PWR6-NEXT: mulld 4, 4, 9 27176; PWR6-NEXT: li 5, 58 27177; PWR6-NEXT: subfic 3, 3, 58 27178; PWR6-NEXT: rldicl 4, 4, 8, 56 27179; PWR6-NEXT: subfe 3, 5, 5 27180; PWR6-NEXT: subfic 4, 4, 58 27181; PWR6-NEXT: subfe 4, 5, 5 27182; PWR6-NEXT: blr 27183; 27184; PWR7-LABEL: ugt_58_v2i64: 27185; PWR7: # %bb.0: 27186; PWR7-NEXT: addi 3, 1, -32 27187; PWR7-NEXT: li 5, -1 27188; PWR7-NEXT: stxvd2x 34, 0, 3 27189; PWR7-NEXT: ld 4, -24(1) 27190; PWR7-NEXT: ld 3, -32(1) 27191; PWR7-NEXT: popcntd 4, 4 27192; PWR7-NEXT: popcntd 3, 3 27193; PWR7-NEXT: cmpldi 4, 58 27194; PWR7-NEXT: li 4, 0 27195; PWR7-NEXT: iselgt 6, 5, 4 27196; PWR7-NEXT: cmpldi 3, 58 27197; PWR7-NEXT: iselgt 3, 5, 4 27198; PWR7-NEXT: std 6, -8(1) 27199; PWR7-NEXT: std 3, -16(1) 27200; PWR7-NEXT: addi 3, 1, -16 27201; PWR7-NEXT: lxvd2x 34, 0, 3 27202; PWR7-NEXT: blr 27203; 27204; PWR8-LABEL: ugt_58_v2i64: 27205; PWR8: # %bb.0: 27206; PWR8-NEXT: addis 3, 2, .LCPI214_0@toc@ha 27207; PWR8-NEXT: vpopcntd 2, 2 27208; PWR8-NEXT: addi 3, 3, .LCPI214_0@toc@l 27209; PWR8-NEXT: lxvd2x 35, 0, 3 27210; PWR8-NEXT: vcmpgtud 2, 2, 3 27211; PWR8-NEXT: blr 27212; 27213; PWR9-LABEL: ugt_58_v2i64: 27214; PWR9: # %bb.0: 27215; PWR9-NEXT: addis 3, 2, .LCPI214_0@toc@ha 27216; PWR9-NEXT: vpopcntd 2, 2 27217; PWR9-NEXT: addi 3, 3, .LCPI214_0@toc@l 27218; PWR9-NEXT: lxv 35, 0(3) 27219; PWR9-NEXT: vcmpgtud 2, 2, 3 27220; PWR9-NEXT: blr 27221 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27222 %3 = icmp ugt <2 x i64> %2, <i64 58, i64 58> 27223 %4 = sext <2 x i1> %3 to <2 x i64> 27224 ret <2 x i64> %4 27225} 27226 27227define <2 x i64> @ult_59_v2i64(<2 x i64> %0) { 27228; PWR5-LABEL: ult_59_v2i64: 27229; PWR5: # %bb.0: 27230; PWR5-NEXT: lis 5, 21845 27231; PWR5-NEXT: lis 6, 13107 27232; PWR5-NEXT: ori 5, 5, 21845 27233; PWR5-NEXT: rotldi 8, 4, 63 27234; PWR5-NEXT: rotldi 9, 3, 63 27235; PWR5-NEXT: rldimi 5, 5, 32, 0 27236; PWR5-NEXT: and 8, 8, 5 27237; PWR5-NEXT: and 5, 9, 5 27238; PWR5-NEXT: ori 6, 6, 13107 27239; PWR5-NEXT: sub 3, 3, 5 27240; PWR5-NEXT: rldimi 6, 6, 32, 0 27241; PWR5-NEXT: sub 4, 4, 8 27242; PWR5-NEXT: and 8, 3, 6 27243; PWR5-NEXT: rotldi 3, 3, 62 27244; PWR5-NEXT: and 3, 3, 6 27245; PWR5-NEXT: lis 7, 3855 27246; PWR5-NEXT: and 5, 4, 6 27247; PWR5-NEXT: rotldi 4, 4, 62 27248; PWR5-NEXT: add 3, 8, 3 27249; PWR5-NEXT: lis 9, 257 27250; PWR5-NEXT: ori 7, 7, 3855 27251; PWR5-NEXT: and 4, 4, 6 27252; PWR5-NEXT: rldicl 6, 3, 60, 4 27253; PWR5-NEXT: ori 9, 9, 257 27254; PWR5-NEXT: rldimi 7, 7, 32, 0 27255; PWR5-NEXT: add 4, 5, 4 27256; PWR5-NEXT: add 3, 3, 6 27257; PWR5-NEXT: rldimi 9, 9, 32, 0 27258; PWR5-NEXT: rldicl 5, 4, 60, 4 27259; PWR5-NEXT: and 3, 3, 7 27260; PWR5-NEXT: add 4, 4, 5 27261; PWR5-NEXT: mulld 3, 3, 9 27262; PWR5-NEXT: and 4, 4, 7 27263; PWR5-NEXT: rldicl 3, 3, 8, 56 27264; PWR5-NEXT: li 5, 59 27265; PWR5-NEXT: mulld 4, 4, 9 27266; PWR5-NEXT: subc 6, 3, 5 27267; PWR5-NEXT: rldicl 4, 4, 8, 56 27268; PWR5-NEXT: subfe 3, 3, 3 27269; PWR5-NEXT: subc 5, 4, 5 27270; PWR5-NEXT: subfe 4, 4, 4 27271; PWR5-NEXT: blr 27272; 27273; PWR6-LABEL: ult_59_v2i64: 27274; PWR6: # %bb.0: 27275; PWR6-NEXT: lis 5, 21845 27276; PWR6-NEXT: lis 6, 13107 27277; PWR6-NEXT: ori 5, 5, 21845 27278; PWR6-NEXT: rotldi 8, 4, 63 27279; PWR6-NEXT: rotldi 9, 3, 63 27280; PWR6-NEXT: rldimi 5, 5, 32, 0 27281; PWR6-NEXT: and 8, 8, 5 27282; PWR6-NEXT: and 5, 9, 5 27283; PWR6-NEXT: ori 6, 6, 13107 27284; PWR6-NEXT: sub 3, 3, 5 27285; PWR6-NEXT: rldimi 6, 6, 32, 0 27286; PWR6-NEXT: sub 4, 4, 8 27287; PWR6-NEXT: and 8, 3, 6 27288; PWR6-NEXT: rotldi 3, 3, 62 27289; PWR6-NEXT: and 3, 3, 6 27290; PWR6-NEXT: lis 7, 3855 27291; PWR6-NEXT: and 5, 4, 6 27292; PWR6-NEXT: rotldi 4, 4, 62 27293; PWR6-NEXT: add 3, 8, 3 27294; PWR6-NEXT: lis 9, 257 27295; PWR6-NEXT: ori 7, 7, 3855 27296; PWR6-NEXT: and 4, 4, 6 27297; PWR6-NEXT: rldicl 6, 3, 60, 4 27298; PWR6-NEXT: ori 9, 9, 257 27299; PWR6-NEXT: rldimi 7, 7, 32, 0 27300; PWR6-NEXT: add 4, 5, 4 27301; PWR6-NEXT: add 3, 3, 6 27302; PWR6-NEXT: rldimi 9, 9, 32, 0 27303; PWR6-NEXT: rldicl 5, 4, 60, 4 27304; PWR6-NEXT: and 3, 3, 7 27305; PWR6-NEXT: add 4, 4, 5 27306; PWR6-NEXT: mulld 3, 3, 9 27307; PWR6-NEXT: and 4, 4, 7 27308; PWR6-NEXT: rldicl 3, 3, 8, 56 27309; PWR6-NEXT: li 5, 59 27310; PWR6-NEXT: mulld 4, 4, 9 27311; PWR6-NEXT: subc 6, 3, 5 27312; PWR6-NEXT: rldicl 4, 4, 8, 56 27313; PWR6-NEXT: subfe 3, 3, 3 27314; PWR6-NEXT: subc 5, 4, 5 27315; PWR6-NEXT: subfe 4, 4, 4 27316; PWR6-NEXT: blr 27317; 27318; PWR7-LABEL: ult_59_v2i64: 27319; PWR7: # %bb.0: 27320; PWR7-NEXT: addi 3, 1, -32 27321; PWR7-NEXT: li 5, -1 27322; PWR7-NEXT: stxvd2x 34, 0, 3 27323; PWR7-NEXT: ld 4, -24(1) 27324; PWR7-NEXT: ld 3, -32(1) 27325; PWR7-NEXT: popcntd 4, 4 27326; PWR7-NEXT: popcntd 3, 3 27327; PWR7-NEXT: cmpldi 4, 59 27328; PWR7-NEXT: li 4, 0 27329; PWR7-NEXT: isellt 6, 5, 4 27330; PWR7-NEXT: cmpldi 3, 59 27331; PWR7-NEXT: isellt 3, 5, 4 27332; PWR7-NEXT: std 6, -8(1) 27333; PWR7-NEXT: std 3, -16(1) 27334; PWR7-NEXT: addi 3, 1, -16 27335; PWR7-NEXT: lxvd2x 34, 0, 3 27336; PWR7-NEXT: blr 27337; 27338; PWR8-LABEL: ult_59_v2i64: 27339; PWR8: # %bb.0: 27340; PWR8-NEXT: addis 3, 2, .LCPI215_0@toc@ha 27341; PWR8-NEXT: vpopcntd 2, 2 27342; PWR8-NEXT: addi 3, 3, .LCPI215_0@toc@l 27343; PWR8-NEXT: lxvd2x 35, 0, 3 27344; PWR8-NEXT: vcmpgtud 2, 3, 2 27345; PWR8-NEXT: blr 27346; 27347; PWR9-LABEL: ult_59_v2i64: 27348; PWR9: # %bb.0: 27349; PWR9-NEXT: addis 3, 2, .LCPI215_0@toc@ha 27350; PWR9-NEXT: vpopcntd 2, 2 27351; PWR9-NEXT: addi 3, 3, .LCPI215_0@toc@l 27352; PWR9-NEXT: lxv 35, 0(3) 27353; PWR9-NEXT: vcmpgtud 2, 3, 2 27354; PWR9-NEXT: blr 27355 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27356 %3 = icmp ult <2 x i64> %2, <i64 59, i64 59> 27357 %4 = sext <2 x i1> %3 to <2 x i64> 27358 ret <2 x i64> %4 27359} 27360 27361define <2 x i64> @ugt_59_v2i64(<2 x i64> %0) { 27362; PWR5-LABEL: ugt_59_v2i64: 27363; PWR5: # %bb.0: 27364; PWR5-NEXT: lis 5, 21845 27365; PWR5-NEXT: lis 6, 13107 27366; PWR5-NEXT: ori 5, 5, 21845 27367; PWR5-NEXT: rotldi 8, 4, 63 27368; PWR5-NEXT: rotldi 9, 3, 63 27369; PWR5-NEXT: rldimi 5, 5, 32, 0 27370; PWR5-NEXT: and 8, 8, 5 27371; PWR5-NEXT: and 5, 9, 5 27372; PWR5-NEXT: ori 6, 6, 13107 27373; PWR5-NEXT: sub 3, 3, 5 27374; PWR5-NEXT: rldimi 6, 6, 32, 0 27375; PWR5-NEXT: sub 4, 4, 8 27376; PWR5-NEXT: and 8, 3, 6 27377; PWR5-NEXT: rotldi 3, 3, 62 27378; PWR5-NEXT: and 3, 3, 6 27379; PWR5-NEXT: lis 7, 3855 27380; PWR5-NEXT: and 5, 4, 6 27381; PWR5-NEXT: rotldi 4, 4, 62 27382; PWR5-NEXT: add 3, 8, 3 27383; PWR5-NEXT: lis 9, 257 27384; PWR5-NEXT: ori 7, 7, 3855 27385; PWR5-NEXT: and 4, 4, 6 27386; PWR5-NEXT: rldicl 6, 3, 60, 4 27387; PWR5-NEXT: ori 9, 9, 257 27388; PWR5-NEXT: rldimi 7, 7, 32, 0 27389; PWR5-NEXT: add 4, 5, 4 27390; PWR5-NEXT: add 3, 3, 6 27391; PWR5-NEXT: rldimi 9, 9, 32, 0 27392; PWR5-NEXT: rldicl 5, 4, 60, 4 27393; PWR5-NEXT: and 3, 3, 7 27394; PWR5-NEXT: add 4, 4, 5 27395; PWR5-NEXT: mulld 3, 3, 9 27396; PWR5-NEXT: and 4, 4, 7 27397; PWR5-NEXT: rldicl 3, 3, 8, 56 27398; PWR5-NEXT: mulld 4, 4, 9 27399; PWR5-NEXT: li 5, 59 27400; PWR5-NEXT: subfic 3, 3, 59 27401; PWR5-NEXT: rldicl 4, 4, 8, 56 27402; PWR5-NEXT: subfe 3, 5, 5 27403; PWR5-NEXT: subfic 4, 4, 59 27404; PWR5-NEXT: subfe 4, 5, 5 27405; PWR5-NEXT: blr 27406; 27407; PWR6-LABEL: ugt_59_v2i64: 27408; PWR6: # %bb.0: 27409; PWR6-NEXT: lis 5, 21845 27410; PWR6-NEXT: lis 6, 13107 27411; PWR6-NEXT: ori 5, 5, 21845 27412; PWR6-NEXT: rotldi 8, 4, 63 27413; PWR6-NEXT: rotldi 9, 3, 63 27414; PWR6-NEXT: rldimi 5, 5, 32, 0 27415; PWR6-NEXT: and 8, 8, 5 27416; PWR6-NEXT: and 5, 9, 5 27417; PWR6-NEXT: ori 6, 6, 13107 27418; PWR6-NEXT: sub 3, 3, 5 27419; PWR6-NEXT: rldimi 6, 6, 32, 0 27420; PWR6-NEXT: sub 4, 4, 8 27421; PWR6-NEXT: and 8, 3, 6 27422; PWR6-NEXT: rotldi 3, 3, 62 27423; PWR6-NEXT: and 3, 3, 6 27424; PWR6-NEXT: lis 7, 3855 27425; PWR6-NEXT: and 5, 4, 6 27426; PWR6-NEXT: rotldi 4, 4, 62 27427; PWR6-NEXT: add 3, 8, 3 27428; PWR6-NEXT: lis 9, 257 27429; PWR6-NEXT: ori 7, 7, 3855 27430; PWR6-NEXT: and 4, 4, 6 27431; PWR6-NEXT: rldicl 6, 3, 60, 4 27432; PWR6-NEXT: ori 9, 9, 257 27433; PWR6-NEXT: rldimi 7, 7, 32, 0 27434; PWR6-NEXT: add 4, 5, 4 27435; PWR6-NEXT: add 3, 3, 6 27436; PWR6-NEXT: rldimi 9, 9, 32, 0 27437; PWR6-NEXT: rldicl 5, 4, 60, 4 27438; PWR6-NEXT: and 3, 3, 7 27439; PWR6-NEXT: add 4, 4, 5 27440; PWR6-NEXT: mulld 3, 3, 9 27441; PWR6-NEXT: and 4, 4, 7 27442; PWR6-NEXT: rldicl 3, 3, 8, 56 27443; PWR6-NEXT: mulld 4, 4, 9 27444; PWR6-NEXT: li 5, 59 27445; PWR6-NEXT: subfic 3, 3, 59 27446; PWR6-NEXT: rldicl 4, 4, 8, 56 27447; PWR6-NEXT: subfe 3, 5, 5 27448; PWR6-NEXT: subfic 4, 4, 59 27449; PWR6-NEXT: subfe 4, 5, 5 27450; PWR6-NEXT: blr 27451; 27452; PWR7-LABEL: ugt_59_v2i64: 27453; PWR7: # %bb.0: 27454; PWR7-NEXT: addi 3, 1, -32 27455; PWR7-NEXT: li 5, -1 27456; PWR7-NEXT: stxvd2x 34, 0, 3 27457; PWR7-NEXT: ld 4, -24(1) 27458; PWR7-NEXT: ld 3, -32(1) 27459; PWR7-NEXT: popcntd 4, 4 27460; PWR7-NEXT: popcntd 3, 3 27461; PWR7-NEXT: cmpldi 4, 59 27462; PWR7-NEXT: li 4, 0 27463; PWR7-NEXT: iselgt 6, 5, 4 27464; PWR7-NEXT: cmpldi 3, 59 27465; PWR7-NEXT: iselgt 3, 5, 4 27466; PWR7-NEXT: std 6, -8(1) 27467; PWR7-NEXT: std 3, -16(1) 27468; PWR7-NEXT: addi 3, 1, -16 27469; PWR7-NEXT: lxvd2x 34, 0, 3 27470; PWR7-NEXT: blr 27471; 27472; PWR8-LABEL: ugt_59_v2i64: 27473; PWR8: # %bb.0: 27474; PWR8-NEXT: addis 3, 2, .LCPI216_0@toc@ha 27475; PWR8-NEXT: vpopcntd 2, 2 27476; PWR8-NEXT: addi 3, 3, .LCPI216_0@toc@l 27477; PWR8-NEXT: lxvd2x 35, 0, 3 27478; PWR8-NEXT: vcmpgtud 2, 2, 3 27479; PWR8-NEXT: blr 27480; 27481; PWR9-LABEL: ugt_59_v2i64: 27482; PWR9: # %bb.0: 27483; PWR9-NEXT: addis 3, 2, .LCPI216_0@toc@ha 27484; PWR9-NEXT: vpopcntd 2, 2 27485; PWR9-NEXT: addi 3, 3, .LCPI216_0@toc@l 27486; PWR9-NEXT: lxv 35, 0(3) 27487; PWR9-NEXT: vcmpgtud 2, 2, 3 27488; PWR9-NEXT: blr 27489 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27490 %3 = icmp ugt <2 x i64> %2, <i64 59, i64 59> 27491 %4 = sext <2 x i1> %3 to <2 x i64> 27492 ret <2 x i64> %4 27493} 27494 27495define <2 x i64> @ult_60_v2i64(<2 x i64> %0) { 27496; PWR5-LABEL: ult_60_v2i64: 27497; PWR5: # %bb.0: 27498; PWR5-NEXT: lis 5, 21845 27499; PWR5-NEXT: lis 6, 13107 27500; PWR5-NEXT: ori 5, 5, 21845 27501; PWR5-NEXT: rotldi 8, 4, 63 27502; PWR5-NEXT: rotldi 9, 3, 63 27503; PWR5-NEXT: rldimi 5, 5, 32, 0 27504; PWR5-NEXT: and 8, 8, 5 27505; PWR5-NEXT: and 5, 9, 5 27506; PWR5-NEXT: ori 6, 6, 13107 27507; PWR5-NEXT: sub 3, 3, 5 27508; PWR5-NEXT: rldimi 6, 6, 32, 0 27509; PWR5-NEXT: sub 4, 4, 8 27510; PWR5-NEXT: and 8, 3, 6 27511; PWR5-NEXT: rotldi 3, 3, 62 27512; PWR5-NEXT: and 3, 3, 6 27513; PWR5-NEXT: lis 7, 3855 27514; PWR5-NEXT: and 5, 4, 6 27515; PWR5-NEXT: rotldi 4, 4, 62 27516; PWR5-NEXT: add 3, 8, 3 27517; PWR5-NEXT: lis 9, 257 27518; PWR5-NEXT: ori 7, 7, 3855 27519; PWR5-NEXT: and 4, 4, 6 27520; PWR5-NEXT: rldicl 6, 3, 60, 4 27521; PWR5-NEXT: ori 9, 9, 257 27522; PWR5-NEXT: rldimi 7, 7, 32, 0 27523; PWR5-NEXT: add 4, 5, 4 27524; PWR5-NEXT: add 3, 3, 6 27525; PWR5-NEXT: rldimi 9, 9, 32, 0 27526; PWR5-NEXT: rldicl 5, 4, 60, 4 27527; PWR5-NEXT: and 3, 3, 7 27528; PWR5-NEXT: add 4, 4, 5 27529; PWR5-NEXT: mulld 3, 3, 9 27530; PWR5-NEXT: and 4, 4, 7 27531; PWR5-NEXT: rldicl 3, 3, 8, 56 27532; PWR5-NEXT: li 5, 60 27533; PWR5-NEXT: mulld 4, 4, 9 27534; PWR5-NEXT: subc 6, 3, 5 27535; PWR5-NEXT: rldicl 4, 4, 8, 56 27536; PWR5-NEXT: subfe 3, 3, 3 27537; PWR5-NEXT: subc 5, 4, 5 27538; PWR5-NEXT: subfe 4, 4, 4 27539; PWR5-NEXT: blr 27540; 27541; PWR6-LABEL: ult_60_v2i64: 27542; PWR6: # %bb.0: 27543; PWR6-NEXT: lis 5, 21845 27544; PWR6-NEXT: lis 6, 13107 27545; PWR6-NEXT: ori 5, 5, 21845 27546; PWR6-NEXT: rotldi 8, 4, 63 27547; PWR6-NEXT: rotldi 9, 3, 63 27548; PWR6-NEXT: rldimi 5, 5, 32, 0 27549; PWR6-NEXT: and 8, 8, 5 27550; PWR6-NEXT: and 5, 9, 5 27551; PWR6-NEXT: ori 6, 6, 13107 27552; PWR6-NEXT: sub 3, 3, 5 27553; PWR6-NEXT: rldimi 6, 6, 32, 0 27554; PWR6-NEXT: sub 4, 4, 8 27555; PWR6-NEXT: and 8, 3, 6 27556; PWR6-NEXT: rotldi 3, 3, 62 27557; PWR6-NEXT: and 3, 3, 6 27558; PWR6-NEXT: lis 7, 3855 27559; PWR6-NEXT: and 5, 4, 6 27560; PWR6-NEXT: rotldi 4, 4, 62 27561; PWR6-NEXT: add 3, 8, 3 27562; PWR6-NEXT: lis 9, 257 27563; PWR6-NEXT: ori 7, 7, 3855 27564; PWR6-NEXT: and 4, 4, 6 27565; PWR6-NEXT: rldicl 6, 3, 60, 4 27566; PWR6-NEXT: ori 9, 9, 257 27567; PWR6-NEXT: rldimi 7, 7, 32, 0 27568; PWR6-NEXT: add 4, 5, 4 27569; PWR6-NEXT: add 3, 3, 6 27570; PWR6-NEXT: rldimi 9, 9, 32, 0 27571; PWR6-NEXT: rldicl 5, 4, 60, 4 27572; PWR6-NEXT: and 3, 3, 7 27573; PWR6-NEXT: add 4, 4, 5 27574; PWR6-NEXT: mulld 3, 3, 9 27575; PWR6-NEXT: and 4, 4, 7 27576; PWR6-NEXT: rldicl 3, 3, 8, 56 27577; PWR6-NEXT: li 5, 60 27578; PWR6-NEXT: mulld 4, 4, 9 27579; PWR6-NEXT: subc 6, 3, 5 27580; PWR6-NEXT: rldicl 4, 4, 8, 56 27581; PWR6-NEXT: subfe 3, 3, 3 27582; PWR6-NEXT: subc 5, 4, 5 27583; PWR6-NEXT: subfe 4, 4, 4 27584; PWR6-NEXT: blr 27585; 27586; PWR7-LABEL: ult_60_v2i64: 27587; PWR7: # %bb.0: 27588; PWR7-NEXT: addi 3, 1, -32 27589; PWR7-NEXT: li 5, -1 27590; PWR7-NEXT: stxvd2x 34, 0, 3 27591; PWR7-NEXT: ld 4, -24(1) 27592; PWR7-NEXT: ld 3, -32(1) 27593; PWR7-NEXT: popcntd 4, 4 27594; PWR7-NEXT: popcntd 3, 3 27595; PWR7-NEXT: cmpldi 4, 60 27596; PWR7-NEXT: li 4, 0 27597; PWR7-NEXT: isellt 6, 5, 4 27598; PWR7-NEXT: cmpldi 3, 60 27599; PWR7-NEXT: isellt 3, 5, 4 27600; PWR7-NEXT: std 6, -8(1) 27601; PWR7-NEXT: std 3, -16(1) 27602; PWR7-NEXT: addi 3, 1, -16 27603; PWR7-NEXT: lxvd2x 34, 0, 3 27604; PWR7-NEXT: blr 27605; 27606; PWR8-LABEL: ult_60_v2i64: 27607; PWR8: # %bb.0: 27608; PWR8-NEXT: addis 3, 2, .LCPI217_0@toc@ha 27609; PWR8-NEXT: vpopcntd 2, 2 27610; PWR8-NEXT: addi 3, 3, .LCPI217_0@toc@l 27611; PWR8-NEXT: lxvd2x 35, 0, 3 27612; PWR8-NEXT: vcmpgtud 2, 3, 2 27613; PWR8-NEXT: blr 27614; 27615; PWR9-LABEL: ult_60_v2i64: 27616; PWR9: # %bb.0: 27617; PWR9-NEXT: addis 3, 2, .LCPI217_0@toc@ha 27618; PWR9-NEXT: vpopcntd 2, 2 27619; PWR9-NEXT: addi 3, 3, .LCPI217_0@toc@l 27620; PWR9-NEXT: lxv 35, 0(3) 27621; PWR9-NEXT: vcmpgtud 2, 3, 2 27622; PWR9-NEXT: blr 27623 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27624 %3 = icmp ult <2 x i64> %2, <i64 60, i64 60> 27625 %4 = sext <2 x i1> %3 to <2 x i64> 27626 ret <2 x i64> %4 27627} 27628 27629define <2 x i64> @ugt_60_v2i64(<2 x i64> %0) { 27630; PWR5-LABEL: ugt_60_v2i64: 27631; PWR5: # %bb.0: 27632; PWR5-NEXT: lis 5, 21845 27633; PWR5-NEXT: lis 6, 13107 27634; PWR5-NEXT: ori 5, 5, 21845 27635; PWR5-NEXT: rotldi 8, 4, 63 27636; PWR5-NEXT: rotldi 9, 3, 63 27637; PWR5-NEXT: rldimi 5, 5, 32, 0 27638; PWR5-NEXT: and 8, 8, 5 27639; PWR5-NEXT: and 5, 9, 5 27640; PWR5-NEXT: ori 6, 6, 13107 27641; PWR5-NEXT: sub 3, 3, 5 27642; PWR5-NEXT: rldimi 6, 6, 32, 0 27643; PWR5-NEXT: sub 4, 4, 8 27644; PWR5-NEXT: and 8, 3, 6 27645; PWR5-NEXT: rotldi 3, 3, 62 27646; PWR5-NEXT: and 3, 3, 6 27647; PWR5-NEXT: lis 7, 3855 27648; PWR5-NEXT: and 5, 4, 6 27649; PWR5-NEXT: rotldi 4, 4, 62 27650; PWR5-NEXT: add 3, 8, 3 27651; PWR5-NEXT: lis 9, 257 27652; PWR5-NEXT: ori 7, 7, 3855 27653; PWR5-NEXT: and 4, 4, 6 27654; PWR5-NEXT: rldicl 6, 3, 60, 4 27655; PWR5-NEXT: ori 9, 9, 257 27656; PWR5-NEXT: rldimi 7, 7, 32, 0 27657; PWR5-NEXT: add 4, 5, 4 27658; PWR5-NEXT: add 3, 3, 6 27659; PWR5-NEXT: rldimi 9, 9, 32, 0 27660; PWR5-NEXT: rldicl 5, 4, 60, 4 27661; PWR5-NEXT: and 3, 3, 7 27662; PWR5-NEXT: add 4, 4, 5 27663; PWR5-NEXT: mulld 3, 3, 9 27664; PWR5-NEXT: and 4, 4, 7 27665; PWR5-NEXT: rldicl 3, 3, 8, 56 27666; PWR5-NEXT: mulld 4, 4, 9 27667; PWR5-NEXT: li 5, 60 27668; PWR5-NEXT: subfic 3, 3, 60 27669; PWR5-NEXT: rldicl 4, 4, 8, 56 27670; PWR5-NEXT: subfe 3, 5, 5 27671; PWR5-NEXT: subfic 4, 4, 60 27672; PWR5-NEXT: subfe 4, 5, 5 27673; PWR5-NEXT: blr 27674; 27675; PWR6-LABEL: ugt_60_v2i64: 27676; PWR6: # %bb.0: 27677; PWR6-NEXT: lis 5, 21845 27678; PWR6-NEXT: lis 6, 13107 27679; PWR6-NEXT: ori 5, 5, 21845 27680; PWR6-NEXT: rotldi 8, 4, 63 27681; PWR6-NEXT: rotldi 9, 3, 63 27682; PWR6-NEXT: rldimi 5, 5, 32, 0 27683; PWR6-NEXT: and 8, 8, 5 27684; PWR6-NEXT: and 5, 9, 5 27685; PWR6-NEXT: ori 6, 6, 13107 27686; PWR6-NEXT: sub 3, 3, 5 27687; PWR6-NEXT: rldimi 6, 6, 32, 0 27688; PWR6-NEXT: sub 4, 4, 8 27689; PWR6-NEXT: and 8, 3, 6 27690; PWR6-NEXT: rotldi 3, 3, 62 27691; PWR6-NEXT: and 3, 3, 6 27692; PWR6-NEXT: lis 7, 3855 27693; PWR6-NEXT: and 5, 4, 6 27694; PWR6-NEXT: rotldi 4, 4, 62 27695; PWR6-NEXT: add 3, 8, 3 27696; PWR6-NEXT: lis 9, 257 27697; PWR6-NEXT: ori 7, 7, 3855 27698; PWR6-NEXT: and 4, 4, 6 27699; PWR6-NEXT: rldicl 6, 3, 60, 4 27700; PWR6-NEXT: ori 9, 9, 257 27701; PWR6-NEXT: rldimi 7, 7, 32, 0 27702; PWR6-NEXT: add 4, 5, 4 27703; PWR6-NEXT: add 3, 3, 6 27704; PWR6-NEXT: rldimi 9, 9, 32, 0 27705; PWR6-NEXT: rldicl 5, 4, 60, 4 27706; PWR6-NEXT: and 3, 3, 7 27707; PWR6-NEXT: add 4, 4, 5 27708; PWR6-NEXT: mulld 3, 3, 9 27709; PWR6-NEXT: and 4, 4, 7 27710; PWR6-NEXT: rldicl 3, 3, 8, 56 27711; PWR6-NEXT: mulld 4, 4, 9 27712; PWR6-NEXT: li 5, 60 27713; PWR6-NEXT: subfic 3, 3, 60 27714; PWR6-NEXT: rldicl 4, 4, 8, 56 27715; PWR6-NEXT: subfe 3, 5, 5 27716; PWR6-NEXT: subfic 4, 4, 60 27717; PWR6-NEXT: subfe 4, 5, 5 27718; PWR6-NEXT: blr 27719; 27720; PWR7-LABEL: ugt_60_v2i64: 27721; PWR7: # %bb.0: 27722; PWR7-NEXT: addi 3, 1, -32 27723; PWR7-NEXT: li 5, -1 27724; PWR7-NEXT: stxvd2x 34, 0, 3 27725; PWR7-NEXT: ld 4, -24(1) 27726; PWR7-NEXT: ld 3, -32(1) 27727; PWR7-NEXT: popcntd 4, 4 27728; PWR7-NEXT: popcntd 3, 3 27729; PWR7-NEXT: cmpldi 4, 60 27730; PWR7-NEXT: li 4, 0 27731; PWR7-NEXT: iselgt 6, 5, 4 27732; PWR7-NEXT: cmpldi 3, 60 27733; PWR7-NEXT: iselgt 3, 5, 4 27734; PWR7-NEXT: std 6, -8(1) 27735; PWR7-NEXT: std 3, -16(1) 27736; PWR7-NEXT: addi 3, 1, -16 27737; PWR7-NEXT: lxvd2x 34, 0, 3 27738; PWR7-NEXT: blr 27739; 27740; PWR8-LABEL: ugt_60_v2i64: 27741; PWR8: # %bb.0: 27742; PWR8-NEXT: addis 3, 2, .LCPI218_0@toc@ha 27743; PWR8-NEXT: vpopcntd 2, 2 27744; PWR8-NEXT: addi 3, 3, .LCPI218_0@toc@l 27745; PWR8-NEXT: lxvd2x 35, 0, 3 27746; PWR8-NEXT: vcmpgtud 2, 2, 3 27747; PWR8-NEXT: blr 27748; 27749; PWR9-LABEL: ugt_60_v2i64: 27750; PWR9: # %bb.0: 27751; PWR9-NEXT: addis 3, 2, .LCPI218_0@toc@ha 27752; PWR9-NEXT: vpopcntd 2, 2 27753; PWR9-NEXT: addi 3, 3, .LCPI218_0@toc@l 27754; PWR9-NEXT: lxv 35, 0(3) 27755; PWR9-NEXT: vcmpgtud 2, 2, 3 27756; PWR9-NEXT: blr 27757 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27758 %3 = icmp ugt <2 x i64> %2, <i64 60, i64 60> 27759 %4 = sext <2 x i1> %3 to <2 x i64> 27760 ret <2 x i64> %4 27761} 27762 27763define <2 x i64> @ult_61_v2i64(<2 x i64> %0) { 27764; PWR5-LABEL: ult_61_v2i64: 27765; PWR5: # %bb.0: 27766; PWR5-NEXT: lis 5, 21845 27767; PWR5-NEXT: lis 6, 13107 27768; PWR5-NEXT: ori 5, 5, 21845 27769; PWR5-NEXT: rotldi 8, 4, 63 27770; PWR5-NEXT: rotldi 9, 3, 63 27771; PWR5-NEXT: rldimi 5, 5, 32, 0 27772; PWR5-NEXT: and 8, 8, 5 27773; PWR5-NEXT: and 5, 9, 5 27774; PWR5-NEXT: ori 6, 6, 13107 27775; PWR5-NEXT: sub 3, 3, 5 27776; PWR5-NEXT: rldimi 6, 6, 32, 0 27777; PWR5-NEXT: sub 4, 4, 8 27778; PWR5-NEXT: and 8, 3, 6 27779; PWR5-NEXT: rotldi 3, 3, 62 27780; PWR5-NEXT: and 3, 3, 6 27781; PWR5-NEXT: lis 7, 3855 27782; PWR5-NEXT: and 5, 4, 6 27783; PWR5-NEXT: rotldi 4, 4, 62 27784; PWR5-NEXT: add 3, 8, 3 27785; PWR5-NEXT: lis 9, 257 27786; PWR5-NEXT: ori 7, 7, 3855 27787; PWR5-NEXT: and 4, 4, 6 27788; PWR5-NEXT: rldicl 6, 3, 60, 4 27789; PWR5-NEXT: ori 9, 9, 257 27790; PWR5-NEXT: rldimi 7, 7, 32, 0 27791; PWR5-NEXT: add 4, 5, 4 27792; PWR5-NEXT: add 3, 3, 6 27793; PWR5-NEXT: rldimi 9, 9, 32, 0 27794; PWR5-NEXT: rldicl 5, 4, 60, 4 27795; PWR5-NEXT: and 3, 3, 7 27796; PWR5-NEXT: add 4, 4, 5 27797; PWR5-NEXT: mulld 3, 3, 9 27798; PWR5-NEXT: and 4, 4, 7 27799; PWR5-NEXT: rldicl 3, 3, 8, 56 27800; PWR5-NEXT: li 5, 61 27801; PWR5-NEXT: mulld 4, 4, 9 27802; PWR5-NEXT: subc 6, 3, 5 27803; PWR5-NEXT: rldicl 4, 4, 8, 56 27804; PWR5-NEXT: subfe 3, 3, 3 27805; PWR5-NEXT: subc 5, 4, 5 27806; PWR5-NEXT: subfe 4, 4, 4 27807; PWR5-NEXT: blr 27808; 27809; PWR6-LABEL: ult_61_v2i64: 27810; PWR6: # %bb.0: 27811; PWR6-NEXT: lis 5, 21845 27812; PWR6-NEXT: lis 6, 13107 27813; PWR6-NEXT: ori 5, 5, 21845 27814; PWR6-NEXT: rotldi 8, 4, 63 27815; PWR6-NEXT: rotldi 9, 3, 63 27816; PWR6-NEXT: rldimi 5, 5, 32, 0 27817; PWR6-NEXT: and 8, 8, 5 27818; PWR6-NEXT: and 5, 9, 5 27819; PWR6-NEXT: ori 6, 6, 13107 27820; PWR6-NEXT: sub 3, 3, 5 27821; PWR6-NEXT: rldimi 6, 6, 32, 0 27822; PWR6-NEXT: sub 4, 4, 8 27823; PWR6-NEXT: and 8, 3, 6 27824; PWR6-NEXT: rotldi 3, 3, 62 27825; PWR6-NEXT: and 3, 3, 6 27826; PWR6-NEXT: lis 7, 3855 27827; PWR6-NEXT: and 5, 4, 6 27828; PWR6-NEXT: rotldi 4, 4, 62 27829; PWR6-NEXT: add 3, 8, 3 27830; PWR6-NEXT: lis 9, 257 27831; PWR6-NEXT: ori 7, 7, 3855 27832; PWR6-NEXT: and 4, 4, 6 27833; PWR6-NEXT: rldicl 6, 3, 60, 4 27834; PWR6-NEXT: ori 9, 9, 257 27835; PWR6-NEXT: rldimi 7, 7, 32, 0 27836; PWR6-NEXT: add 4, 5, 4 27837; PWR6-NEXT: add 3, 3, 6 27838; PWR6-NEXT: rldimi 9, 9, 32, 0 27839; PWR6-NEXT: rldicl 5, 4, 60, 4 27840; PWR6-NEXT: and 3, 3, 7 27841; PWR6-NEXT: add 4, 4, 5 27842; PWR6-NEXT: mulld 3, 3, 9 27843; PWR6-NEXT: and 4, 4, 7 27844; PWR6-NEXT: rldicl 3, 3, 8, 56 27845; PWR6-NEXT: li 5, 61 27846; PWR6-NEXT: mulld 4, 4, 9 27847; PWR6-NEXT: subc 6, 3, 5 27848; PWR6-NEXT: rldicl 4, 4, 8, 56 27849; PWR6-NEXT: subfe 3, 3, 3 27850; PWR6-NEXT: subc 5, 4, 5 27851; PWR6-NEXT: subfe 4, 4, 4 27852; PWR6-NEXT: blr 27853; 27854; PWR7-LABEL: ult_61_v2i64: 27855; PWR7: # %bb.0: 27856; PWR7-NEXT: addi 3, 1, -32 27857; PWR7-NEXT: li 5, -1 27858; PWR7-NEXT: stxvd2x 34, 0, 3 27859; PWR7-NEXT: ld 4, -24(1) 27860; PWR7-NEXT: ld 3, -32(1) 27861; PWR7-NEXT: popcntd 4, 4 27862; PWR7-NEXT: popcntd 3, 3 27863; PWR7-NEXT: cmpldi 4, 61 27864; PWR7-NEXT: li 4, 0 27865; PWR7-NEXT: isellt 6, 5, 4 27866; PWR7-NEXT: cmpldi 3, 61 27867; PWR7-NEXT: isellt 3, 5, 4 27868; PWR7-NEXT: std 6, -8(1) 27869; PWR7-NEXT: std 3, -16(1) 27870; PWR7-NEXT: addi 3, 1, -16 27871; PWR7-NEXT: lxvd2x 34, 0, 3 27872; PWR7-NEXT: blr 27873; 27874; PWR8-LABEL: ult_61_v2i64: 27875; PWR8: # %bb.0: 27876; PWR8-NEXT: addis 3, 2, .LCPI219_0@toc@ha 27877; PWR8-NEXT: vpopcntd 2, 2 27878; PWR8-NEXT: addi 3, 3, .LCPI219_0@toc@l 27879; PWR8-NEXT: lxvd2x 35, 0, 3 27880; PWR8-NEXT: vcmpgtud 2, 3, 2 27881; PWR8-NEXT: blr 27882; 27883; PWR9-LABEL: ult_61_v2i64: 27884; PWR9: # %bb.0: 27885; PWR9-NEXT: addis 3, 2, .LCPI219_0@toc@ha 27886; PWR9-NEXT: vpopcntd 2, 2 27887; PWR9-NEXT: addi 3, 3, .LCPI219_0@toc@l 27888; PWR9-NEXT: lxv 35, 0(3) 27889; PWR9-NEXT: vcmpgtud 2, 3, 2 27890; PWR9-NEXT: blr 27891 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 27892 %3 = icmp ult <2 x i64> %2, <i64 61, i64 61> 27893 %4 = sext <2 x i1> %3 to <2 x i64> 27894 ret <2 x i64> %4 27895} 27896 27897define <2 x i64> @ugt_61_v2i64(<2 x i64> %0) { 27898; PWR5-LABEL: ugt_61_v2i64: 27899; PWR5: # %bb.0: 27900; PWR5-NEXT: lis 5, 21845 27901; PWR5-NEXT: lis 6, 13107 27902; PWR5-NEXT: ori 5, 5, 21845 27903; PWR5-NEXT: rotldi 8, 4, 63 27904; PWR5-NEXT: rotldi 9, 3, 63 27905; PWR5-NEXT: rldimi 5, 5, 32, 0 27906; PWR5-NEXT: and 8, 8, 5 27907; PWR5-NEXT: and 5, 9, 5 27908; PWR5-NEXT: ori 6, 6, 13107 27909; PWR5-NEXT: sub 3, 3, 5 27910; PWR5-NEXT: rldimi 6, 6, 32, 0 27911; PWR5-NEXT: sub 4, 4, 8 27912; PWR5-NEXT: and 8, 3, 6 27913; PWR5-NEXT: rotldi 3, 3, 62 27914; PWR5-NEXT: and 3, 3, 6 27915; PWR5-NEXT: lis 7, 3855 27916; PWR5-NEXT: and 5, 4, 6 27917; PWR5-NEXT: rotldi 4, 4, 62 27918; PWR5-NEXT: add 3, 8, 3 27919; PWR5-NEXT: lis 9, 257 27920; PWR5-NEXT: ori 7, 7, 3855 27921; PWR5-NEXT: and 4, 4, 6 27922; PWR5-NEXT: rldicl 6, 3, 60, 4 27923; PWR5-NEXT: ori 9, 9, 257 27924; PWR5-NEXT: rldimi 7, 7, 32, 0 27925; PWR5-NEXT: add 4, 5, 4 27926; PWR5-NEXT: add 3, 3, 6 27927; PWR5-NEXT: rldimi 9, 9, 32, 0 27928; PWR5-NEXT: rldicl 5, 4, 60, 4 27929; PWR5-NEXT: and 3, 3, 7 27930; PWR5-NEXT: add 4, 4, 5 27931; PWR5-NEXT: mulld 3, 3, 9 27932; PWR5-NEXT: and 4, 4, 7 27933; PWR5-NEXT: rldicl 3, 3, 8, 56 27934; PWR5-NEXT: mulld 4, 4, 9 27935; PWR5-NEXT: li 5, 61 27936; PWR5-NEXT: subfic 3, 3, 61 27937; PWR5-NEXT: rldicl 4, 4, 8, 56 27938; PWR5-NEXT: subfe 3, 5, 5 27939; PWR5-NEXT: subfic 4, 4, 61 27940; PWR5-NEXT: subfe 4, 5, 5 27941; PWR5-NEXT: blr 27942; 27943; PWR6-LABEL: ugt_61_v2i64: 27944; PWR6: # %bb.0: 27945; PWR6-NEXT: lis 5, 21845 27946; PWR6-NEXT: lis 6, 13107 27947; PWR6-NEXT: ori 5, 5, 21845 27948; PWR6-NEXT: rotldi 8, 4, 63 27949; PWR6-NEXT: rotldi 9, 3, 63 27950; PWR6-NEXT: rldimi 5, 5, 32, 0 27951; PWR6-NEXT: and 8, 8, 5 27952; PWR6-NEXT: and 5, 9, 5 27953; PWR6-NEXT: ori 6, 6, 13107 27954; PWR6-NEXT: sub 3, 3, 5 27955; PWR6-NEXT: rldimi 6, 6, 32, 0 27956; PWR6-NEXT: sub 4, 4, 8 27957; PWR6-NEXT: and 8, 3, 6 27958; PWR6-NEXT: rotldi 3, 3, 62 27959; PWR6-NEXT: and 3, 3, 6 27960; PWR6-NEXT: lis 7, 3855 27961; PWR6-NEXT: and 5, 4, 6 27962; PWR6-NEXT: rotldi 4, 4, 62 27963; PWR6-NEXT: add 3, 8, 3 27964; PWR6-NEXT: lis 9, 257 27965; PWR6-NEXT: ori 7, 7, 3855 27966; PWR6-NEXT: and 4, 4, 6 27967; PWR6-NEXT: rldicl 6, 3, 60, 4 27968; PWR6-NEXT: ori 9, 9, 257 27969; PWR6-NEXT: rldimi 7, 7, 32, 0 27970; PWR6-NEXT: add 4, 5, 4 27971; PWR6-NEXT: add 3, 3, 6 27972; PWR6-NEXT: rldimi 9, 9, 32, 0 27973; PWR6-NEXT: rldicl 5, 4, 60, 4 27974; PWR6-NEXT: and 3, 3, 7 27975; PWR6-NEXT: add 4, 4, 5 27976; PWR6-NEXT: mulld 3, 3, 9 27977; PWR6-NEXT: and 4, 4, 7 27978; PWR6-NEXT: rldicl 3, 3, 8, 56 27979; PWR6-NEXT: mulld 4, 4, 9 27980; PWR6-NEXT: li 5, 61 27981; PWR6-NEXT: subfic 3, 3, 61 27982; PWR6-NEXT: rldicl 4, 4, 8, 56 27983; PWR6-NEXT: subfe 3, 5, 5 27984; PWR6-NEXT: subfic 4, 4, 61 27985; PWR6-NEXT: subfe 4, 5, 5 27986; PWR6-NEXT: blr 27987; 27988; PWR7-LABEL: ugt_61_v2i64: 27989; PWR7: # %bb.0: 27990; PWR7-NEXT: addi 3, 1, -32 27991; PWR7-NEXT: li 5, -1 27992; PWR7-NEXT: stxvd2x 34, 0, 3 27993; PWR7-NEXT: ld 4, -24(1) 27994; PWR7-NEXT: ld 3, -32(1) 27995; PWR7-NEXT: popcntd 4, 4 27996; PWR7-NEXT: popcntd 3, 3 27997; PWR7-NEXT: cmpldi 4, 61 27998; PWR7-NEXT: li 4, 0 27999; PWR7-NEXT: iselgt 6, 5, 4 28000; PWR7-NEXT: cmpldi 3, 61 28001; PWR7-NEXT: iselgt 3, 5, 4 28002; PWR7-NEXT: std 6, -8(1) 28003; PWR7-NEXT: std 3, -16(1) 28004; PWR7-NEXT: addi 3, 1, -16 28005; PWR7-NEXT: lxvd2x 34, 0, 3 28006; PWR7-NEXT: blr 28007; 28008; PWR8-LABEL: ugt_61_v2i64: 28009; PWR8: # %bb.0: 28010; PWR8-NEXT: addis 3, 2, .LCPI220_0@toc@ha 28011; PWR8-NEXT: vpopcntd 2, 2 28012; PWR8-NEXT: addi 3, 3, .LCPI220_0@toc@l 28013; PWR8-NEXT: lxvd2x 35, 0, 3 28014; PWR8-NEXT: vcmpgtud 2, 2, 3 28015; PWR8-NEXT: blr 28016; 28017; PWR9-LABEL: ugt_61_v2i64: 28018; PWR9: # %bb.0: 28019; PWR9-NEXT: addis 3, 2, .LCPI220_0@toc@ha 28020; PWR9-NEXT: vpopcntd 2, 2 28021; PWR9-NEXT: addi 3, 3, .LCPI220_0@toc@l 28022; PWR9-NEXT: lxv 35, 0(3) 28023; PWR9-NEXT: vcmpgtud 2, 2, 3 28024; PWR9-NEXT: blr 28025 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 28026 %3 = icmp ugt <2 x i64> %2, <i64 61, i64 61> 28027 %4 = sext <2 x i1> %3 to <2 x i64> 28028 ret <2 x i64> %4 28029} 28030 28031define <2 x i64> @ult_62_v2i64(<2 x i64> %0) { 28032; PWR5-LABEL: ult_62_v2i64: 28033; PWR5: # %bb.0: 28034; PWR5-NEXT: lis 5, 21845 28035; PWR5-NEXT: lis 6, 13107 28036; PWR5-NEXT: ori 5, 5, 21845 28037; PWR5-NEXT: rotldi 8, 4, 63 28038; PWR5-NEXT: rotldi 9, 3, 63 28039; PWR5-NEXT: rldimi 5, 5, 32, 0 28040; PWR5-NEXT: and 8, 8, 5 28041; PWR5-NEXT: and 5, 9, 5 28042; PWR5-NEXT: ori 6, 6, 13107 28043; PWR5-NEXT: sub 3, 3, 5 28044; PWR5-NEXT: rldimi 6, 6, 32, 0 28045; PWR5-NEXT: sub 4, 4, 8 28046; PWR5-NEXT: and 8, 3, 6 28047; PWR5-NEXT: rotldi 3, 3, 62 28048; PWR5-NEXT: and 3, 3, 6 28049; PWR5-NEXT: lis 7, 3855 28050; PWR5-NEXT: and 5, 4, 6 28051; PWR5-NEXT: rotldi 4, 4, 62 28052; PWR5-NEXT: add 3, 8, 3 28053; PWR5-NEXT: lis 9, 257 28054; PWR5-NEXT: ori 7, 7, 3855 28055; PWR5-NEXT: and 4, 4, 6 28056; PWR5-NEXT: rldicl 6, 3, 60, 4 28057; PWR5-NEXT: ori 9, 9, 257 28058; PWR5-NEXT: rldimi 7, 7, 32, 0 28059; PWR5-NEXT: add 4, 5, 4 28060; PWR5-NEXT: add 3, 3, 6 28061; PWR5-NEXT: rldimi 9, 9, 32, 0 28062; PWR5-NEXT: rldicl 5, 4, 60, 4 28063; PWR5-NEXT: and 3, 3, 7 28064; PWR5-NEXT: add 4, 4, 5 28065; PWR5-NEXT: mulld 3, 3, 9 28066; PWR5-NEXT: and 4, 4, 7 28067; PWR5-NEXT: rldicl 3, 3, 8, 56 28068; PWR5-NEXT: li 5, 62 28069; PWR5-NEXT: mulld 4, 4, 9 28070; PWR5-NEXT: subc 6, 3, 5 28071; PWR5-NEXT: rldicl 4, 4, 8, 56 28072; PWR5-NEXT: subfe 3, 3, 3 28073; PWR5-NEXT: subc 5, 4, 5 28074; PWR5-NEXT: subfe 4, 4, 4 28075; PWR5-NEXT: blr 28076; 28077; PWR6-LABEL: ult_62_v2i64: 28078; PWR6: # %bb.0: 28079; PWR6-NEXT: lis 5, 21845 28080; PWR6-NEXT: lis 6, 13107 28081; PWR6-NEXT: ori 5, 5, 21845 28082; PWR6-NEXT: rotldi 8, 4, 63 28083; PWR6-NEXT: rotldi 9, 3, 63 28084; PWR6-NEXT: rldimi 5, 5, 32, 0 28085; PWR6-NEXT: and 8, 8, 5 28086; PWR6-NEXT: and 5, 9, 5 28087; PWR6-NEXT: ori 6, 6, 13107 28088; PWR6-NEXT: sub 3, 3, 5 28089; PWR6-NEXT: rldimi 6, 6, 32, 0 28090; PWR6-NEXT: sub 4, 4, 8 28091; PWR6-NEXT: and 8, 3, 6 28092; PWR6-NEXT: rotldi 3, 3, 62 28093; PWR6-NEXT: and 3, 3, 6 28094; PWR6-NEXT: lis 7, 3855 28095; PWR6-NEXT: and 5, 4, 6 28096; PWR6-NEXT: rotldi 4, 4, 62 28097; PWR6-NEXT: add 3, 8, 3 28098; PWR6-NEXT: lis 9, 257 28099; PWR6-NEXT: ori 7, 7, 3855 28100; PWR6-NEXT: and 4, 4, 6 28101; PWR6-NEXT: rldicl 6, 3, 60, 4 28102; PWR6-NEXT: ori 9, 9, 257 28103; PWR6-NEXT: rldimi 7, 7, 32, 0 28104; PWR6-NEXT: add 4, 5, 4 28105; PWR6-NEXT: add 3, 3, 6 28106; PWR6-NEXT: rldimi 9, 9, 32, 0 28107; PWR6-NEXT: rldicl 5, 4, 60, 4 28108; PWR6-NEXT: and 3, 3, 7 28109; PWR6-NEXT: add 4, 4, 5 28110; PWR6-NEXT: mulld 3, 3, 9 28111; PWR6-NEXT: and 4, 4, 7 28112; PWR6-NEXT: rldicl 3, 3, 8, 56 28113; PWR6-NEXT: li 5, 62 28114; PWR6-NEXT: mulld 4, 4, 9 28115; PWR6-NEXT: subc 6, 3, 5 28116; PWR6-NEXT: rldicl 4, 4, 8, 56 28117; PWR6-NEXT: subfe 3, 3, 3 28118; PWR6-NEXT: subc 5, 4, 5 28119; PWR6-NEXT: subfe 4, 4, 4 28120; PWR6-NEXT: blr 28121; 28122; PWR7-LABEL: ult_62_v2i64: 28123; PWR7: # %bb.0: 28124; PWR7-NEXT: addi 3, 1, -32 28125; PWR7-NEXT: li 5, -1 28126; PWR7-NEXT: stxvd2x 34, 0, 3 28127; PWR7-NEXT: ld 4, -24(1) 28128; PWR7-NEXT: ld 3, -32(1) 28129; PWR7-NEXT: popcntd 4, 4 28130; PWR7-NEXT: popcntd 3, 3 28131; PWR7-NEXT: cmpldi 4, 62 28132; PWR7-NEXT: li 4, 0 28133; PWR7-NEXT: isellt 6, 5, 4 28134; PWR7-NEXT: cmpldi 3, 62 28135; PWR7-NEXT: isellt 3, 5, 4 28136; PWR7-NEXT: std 6, -8(1) 28137; PWR7-NEXT: std 3, -16(1) 28138; PWR7-NEXT: addi 3, 1, -16 28139; PWR7-NEXT: lxvd2x 34, 0, 3 28140; PWR7-NEXT: blr 28141; 28142; PWR8-LABEL: ult_62_v2i64: 28143; PWR8: # %bb.0: 28144; PWR8-NEXT: addis 3, 2, .LCPI221_0@toc@ha 28145; PWR8-NEXT: vpopcntd 2, 2 28146; PWR8-NEXT: addi 3, 3, .LCPI221_0@toc@l 28147; PWR8-NEXT: lxvd2x 35, 0, 3 28148; PWR8-NEXT: vcmpgtud 2, 3, 2 28149; PWR8-NEXT: blr 28150; 28151; PWR9-LABEL: ult_62_v2i64: 28152; PWR9: # %bb.0: 28153; PWR9-NEXT: addis 3, 2, .LCPI221_0@toc@ha 28154; PWR9-NEXT: vpopcntd 2, 2 28155; PWR9-NEXT: addi 3, 3, .LCPI221_0@toc@l 28156; PWR9-NEXT: lxv 35, 0(3) 28157; PWR9-NEXT: vcmpgtud 2, 3, 2 28158; PWR9-NEXT: blr 28159 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 28160 %3 = icmp ult <2 x i64> %2, <i64 62, i64 62> 28161 %4 = sext <2 x i1> %3 to <2 x i64> 28162 ret <2 x i64> %4 28163} 28164 28165define <2 x i64> @ugt_62_v2i64(<2 x i64> %0) { 28166; PWR5-LABEL: ugt_62_v2i64: 28167; PWR5: # %bb.0: 28168; PWR5-NEXT: lis 5, 21845 28169; PWR5-NEXT: lis 6, 13107 28170; PWR5-NEXT: ori 5, 5, 21845 28171; PWR5-NEXT: rotldi 8, 4, 63 28172; PWR5-NEXT: rotldi 9, 3, 63 28173; PWR5-NEXT: rldimi 5, 5, 32, 0 28174; PWR5-NEXT: and 8, 8, 5 28175; PWR5-NEXT: and 5, 9, 5 28176; PWR5-NEXT: ori 6, 6, 13107 28177; PWR5-NEXT: sub 3, 3, 5 28178; PWR5-NEXT: rldimi 6, 6, 32, 0 28179; PWR5-NEXT: sub 4, 4, 8 28180; PWR5-NEXT: and 8, 3, 6 28181; PWR5-NEXT: rotldi 3, 3, 62 28182; PWR5-NEXT: and 3, 3, 6 28183; PWR5-NEXT: lis 7, 3855 28184; PWR5-NEXT: and 5, 4, 6 28185; PWR5-NEXT: rotldi 4, 4, 62 28186; PWR5-NEXT: add 3, 8, 3 28187; PWR5-NEXT: lis 9, 257 28188; PWR5-NEXT: ori 7, 7, 3855 28189; PWR5-NEXT: and 4, 4, 6 28190; PWR5-NEXT: rldicl 6, 3, 60, 4 28191; PWR5-NEXT: ori 9, 9, 257 28192; PWR5-NEXT: rldimi 7, 7, 32, 0 28193; PWR5-NEXT: add 4, 5, 4 28194; PWR5-NEXT: add 3, 3, 6 28195; PWR5-NEXT: rldimi 9, 9, 32, 0 28196; PWR5-NEXT: rldicl 5, 4, 60, 4 28197; PWR5-NEXT: and 3, 3, 7 28198; PWR5-NEXT: add 4, 4, 5 28199; PWR5-NEXT: mulld 3, 3, 9 28200; PWR5-NEXT: and 4, 4, 7 28201; PWR5-NEXT: rldicl 3, 3, 8, 56 28202; PWR5-NEXT: mulld 4, 4, 9 28203; PWR5-NEXT: li 5, 62 28204; PWR5-NEXT: subfic 3, 3, 62 28205; PWR5-NEXT: rldicl 4, 4, 8, 56 28206; PWR5-NEXT: subfe 3, 5, 5 28207; PWR5-NEXT: subfic 4, 4, 62 28208; PWR5-NEXT: subfe 4, 5, 5 28209; PWR5-NEXT: blr 28210; 28211; PWR6-LABEL: ugt_62_v2i64: 28212; PWR6: # %bb.0: 28213; PWR6-NEXT: lis 5, 21845 28214; PWR6-NEXT: lis 6, 13107 28215; PWR6-NEXT: ori 5, 5, 21845 28216; PWR6-NEXT: rotldi 8, 4, 63 28217; PWR6-NEXT: rotldi 9, 3, 63 28218; PWR6-NEXT: rldimi 5, 5, 32, 0 28219; PWR6-NEXT: and 8, 8, 5 28220; PWR6-NEXT: and 5, 9, 5 28221; PWR6-NEXT: ori 6, 6, 13107 28222; PWR6-NEXT: sub 3, 3, 5 28223; PWR6-NEXT: rldimi 6, 6, 32, 0 28224; PWR6-NEXT: sub 4, 4, 8 28225; PWR6-NEXT: and 8, 3, 6 28226; PWR6-NEXT: rotldi 3, 3, 62 28227; PWR6-NEXT: and 3, 3, 6 28228; PWR6-NEXT: lis 7, 3855 28229; PWR6-NEXT: and 5, 4, 6 28230; PWR6-NEXT: rotldi 4, 4, 62 28231; PWR6-NEXT: add 3, 8, 3 28232; PWR6-NEXT: lis 9, 257 28233; PWR6-NEXT: ori 7, 7, 3855 28234; PWR6-NEXT: and 4, 4, 6 28235; PWR6-NEXT: rldicl 6, 3, 60, 4 28236; PWR6-NEXT: ori 9, 9, 257 28237; PWR6-NEXT: rldimi 7, 7, 32, 0 28238; PWR6-NEXT: add 4, 5, 4 28239; PWR6-NEXT: add 3, 3, 6 28240; PWR6-NEXT: rldimi 9, 9, 32, 0 28241; PWR6-NEXT: rldicl 5, 4, 60, 4 28242; PWR6-NEXT: and 3, 3, 7 28243; PWR6-NEXT: add 4, 4, 5 28244; PWR6-NEXT: mulld 3, 3, 9 28245; PWR6-NEXT: and 4, 4, 7 28246; PWR6-NEXT: rldicl 3, 3, 8, 56 28247; PWR6-NEXT: mulld 4, 4, 9 28248; PWR6-NEXT: li 5, 62 28249; PWR6-NEXT: subfic 3, 3, 62 28250; PWR6-NEXT: rldicl 4, 4, 8, 56 28251; PWR6-NEXT: subfe 3, 5, 5 28252; PWR6-NEXT: subfic 4, 4, 62 28253; PWR6-NEXT: subfe 4, 5, 5 28254; PWR6-NEXT: blr 28255; 28256; PWR7-LABEL: ugt_62_v2i64: 28257; PWR7: # %bb.0: 28258; PWR7-NEXT: addi 3, 1, -32 28259; PWR7-NEXT: li 5, -1 28260; PWR7-NEXT: stxvd2x 34, 0, 3 28261; PWR7-NEXT: ld 4, -24(1) 28262; PWR7-NEXT: ld 3, -32(1) 28263; PWR7-NEXT: popcntd 4, 4 28264; PWR7-NEXT: popcntd 3, 3 28265; PWR7-NEXT: cmpldi 4, 62 28266; PWR7-NEXT: li 4, 0 28267; PWR7-NEXT: iselgt 6, 5, 4 28268; PWR7-NEXT: cmpldi 3, 62 28269; PWR7-NEXT: iselgt 3, 5, 4 28270; PWR7-NEXT: std 6, -8(1) 28271; PWR7-NEXT: std 3, -16(1) 28272; PWR7-NEXT: addi 3, 1, -16 28273; PWR7-NEXT: lxvd2x 34, 0, 3 28274; PWR7-NEXT: blr 28275; 28276; PWR8-LABEL: ugt_62_v2i64: 28277; PWR8: # %bb.0: 28278; PWR8-NEXT: addis 3, 2, .LCPI222_0@toc@ha 28279; PWR8-NEXT: vpopcntd 2, 2 28280; PWR8-NEXT: addi 3, 3, .LCPI222_0@toc@l 28281; PWR8-NEXT: lxvd2x 35, 0, 3 28282; PWR8-NEXT: vcmpgtud 2, 2, 3 28283; PWR8-NEXT: blr 28284; 28285; PWR9-LABEL: ugt_62_v2i64: 28286; PWR9: # %bb.0: 28287; PWR9-NEXT: addis 3, 2, .LCPI222_0@toc@ha 28288; PWR9-NEXT: vpopcntd 2, 2 28289; PWR9-NEXT: addi 3, 3, .LCPI222_0@toc@l 28290; PWR9-NEXT: lxv 35, 0(3) 28291; PWR9-NEXT: vcmpgtud 2, 2, 3 28292; PWR9-NEXT: blr 28293 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 28294 %3 = icmp ugt <2 x i64> %2, <i64 62, i64 62> 28295 %4 = sext <2 x i1> %3 to <2 x i64> 28296 ret <2 x i64> %4 28297} 28298 28299define <2 x i64> @ult_63_v2i64(<2 x i64> %0) { 28300; PWR5-LABEL: ult_63_v2i64: 28301; PWR5: # %bb.0: 28302; PWR5-NEXT: lis 5, 21845 28303; PWR5-NEXT: lis 6, 13107 28304; PWR5-NEXT: ori 5, 5, 21845 28305; PWR5-NEXT: rotldi 8, 4, 63 28306; PWR5-NEXT: rotldi 9, 3, 63 28307; PWR5-NEXT: rldimi 5, 5, 32, 0 28308; PWR5-NEXT: and 8, 8, 5 28309; PWR5-NEXT: and 5, 9, 5 28310; PWR5-NEXT: ori 6, 6, 13107 28311; PWR5-NEXT: sub 3, 3, 5 28312; PWR5-NEXT: rldimi 6, 6, 32, 0 28313; PWR5-NEXT: sub 4, 4, 8 28314; PWR5-NEXT: and 8, 3, 6 28315; PWR5-NEXT: rotldi 3, 3, 62 28316; PWR5-NEXT: and 3, 3, 6 28317; PWR5-NEXT: lis 7, 3855 28318; PWR5-NEXT: and 5, 4, 6 28319; PWR5-NEXT: rotldi 4, 4, 62 28320; PWR5-NEXT: add 3, 8, 3 28321; PWR5-NEXT: lis 9, 257 28322; PWR5-NEXT: ori 7, 7, 3855 28323; PWR5-NEXT: and 4, 4, 6 28324; PWR5-NEXT: rldicl 6, 3, 60, 4 28325; PWR5-NEXT: ori 9, 9, 257 28326; PWR5-NEXT: rldimi 7, 7, 32, 0 28327; PWR5-NEXT: add 4, 5, 4 28328; PWR5-NEXT: add 3, 3, 6 28329; PWR5-NEXT: rldimi 9, 9, 32, 0 28330; PWR5-NEXT: rldicl 5, 4, 60, 4 28331; PWR5-NEXT: and 3, 3, 7 28332; PWR5-NEXT: add 4, 4, 5 28333; PWR5-NEXT: mulld 3, 3, 9 28334; PWR5-NEXT: and 4, 4, 7 28335; PWR5-NEXT: rldicl 3, 3, 8, 56 28336; PWR5-NEXT: li 5, 63 28337; PWR5-NEXT: mulld 4, 4, 9 28338; PWR5-NEXT: subc 6, 3, 5 28339; PWR5-NEXT: rldicl 4, 4, 8, 56 28340; PWR5-NEXT: subfe 3, 3, 3 28341; PWR5-NEXT: subc 5, 4, 5 28342; PWR5-NEXT: subfe 4, 4, 4 28343; PWR5-NEXT: blr 28344; 28345; PWR6-LABEL: ult_63_v2i64: 28346; PWR6: # %bb.0: 28347; PWR6-NEXT: lis 5, 21845 28348; PWR6-NEXT: lis 6, 13107 28349; PWR6-NEXT: ori 5, 5, 21845 28350; PWR6-NEXT: rotldi 8, 4, 63 28351; PWR6-NEXT: rotldi 9, 3, 63 28352; PWR6-NEXT: rldimi 5, 5, 32, 0 28353; PWR6-NEXT: and 8, 8, 5 28354; PWR6-NEXT: and 5, 9, 5 28355; PWR6-NEXT: ori 6, 6, 13107 28356; PWR6-NEXT: sub 3, 3, 5 28357; PWR6-NEXT: rldimi 6, 6, 32, 0 28358; PWR6-NEXT: sub 4, 4, 8 28359; PWR6-NEXT: and 8, 3, 6 28360; PWR6-NEXT: rotldi 3, 3, 62 28361; PWR6-NEXT: and 3, 3, 6 28362; PWR6-NEXT: lis 7, 3855 28363; PWR6-NEXT: and 5, 4, 6 28364; PWR6-NEXT: rotldi 4, 4, 62 28365; PWR6-NEXT: add 3, 8, 3 28366; PWR6-NEXT: lis 9, 257 28367; PWR6-NEXT: ori 7, 7, 3855 28368; PWR6-NEXT: and 4, 4, 6 28369; PWR6-NEXT: rldicl 6, 3, 60, 4 28370; PWR6-NEXT: ori 9, 9, 257 28371; PWR6-NEXT: rldimi 7, 7, 32, 0 28372; PWR6-NEXT: add 4, 5, 4 28373; PWR6-NEXT: add 3, 3, 6 28374; PWR6-NEXT: rldimi 9, 9, 32, 0 28375; PWR6-NEXT: rldicl 5, 4, 60, 4 28376; PWR6-NEXT: and 3, 3, 7 28377; PWR6-NEXT: add 4, 4, 5 28378; PWR6-NEXT: mulld 3, 3, 9 28379; PWR6-NEXT: and 4, 4, 7 28380; PWR6-NEXT: rldicl 3, 3, 8, 56 28381; PWR6-NEXT: li 5, 63 28382; PWR6-NEXT: mulld 4, 4, 9 28383; PWR6-NEXT: subc 6, 3, 5 28384; PWR6-NEXT: rldicl 4, 4, 8, 56 28385; PWR6-NEXT: subfe 3, 3, 3 28386; PWR6-NEXT: subc 5, 4, 5 28387; PWR6-NEXT: subfe 4, 4, 4 28388; PWR6-NEXT: blr 28389; 28390; PWR7-LABEL: ult_63_v2i64: 28391; PWR7: # %bb.0: 28392; PWR7-NEXT: addi 3, 1, -32 28393; PWR7-NEXT: li 5, -1 28394; PWR7-NEXT: stxvd2x 34, 0, 3 28395; PWR7-NEXT: ld 4, -24(1) 28396; PWR7-NEXT: ld 3, -32(1) 28397; PWR7-NEXT: popcntd 4, 4 28398; PWR7-NEXT: popcntd 3, 3 28399; PWR7-NEXT: cmpldi 4, 63 28400; PWR7-NEXT: li 4, 0 28401; PWR7-NEXT: isellt 6, 5, 4 28402; PWR7-NEXT: cmpldi 3, 63 28403; PWR7-NEXT: isellt 3, 5, 4 28404; PWR7-NEXT: std 6, -8(1) 28405; PWR7-NEXT: std 3, -16(1) 28406; PWR7-NEXT: addi 3, 1, -16 28407; PWR7-NEXT: lxvd2x 34, 0, 3 28408; PWR7-NEXT: blr 28409; 28410; PWR8-LABEL: ult_63_v2i64: 28411; PWR8: # %bb.0: 28412; PWR8-NEXT: addis 3, 2, .LCPI223_0@toc@ha 28413; PWR8-NEXT: vpopcntd 2, 2 28414; PWR8-NEXT: addi 3, 3, .LCPI223_0@toc@l 28415; PWR8-NEXT: lxvd2x 35, 0, 3 28416; PWR8-NEXT: vcmpgtud 2, 3, 2 28417; PWR8-NEXT: blr 28418; 28419; PWR9-LABEL: ult_63_v2i64: 28420; PWR9: # %bb.0: 28421; PWR9-NEXT: addis 3, 2, .LCPI223_0@toc@ha 28422; PWR9-NEXT: vpopcntd 2, 2 28423; PWR9-NEXT: addi 3, 3, .LCPI223_0@toc@l 28424; PWR9-NEXT: lxv 35, 0(3) 28425; PWR9-NEXT: vcmpgtud 2, 3, 2 28426; PWR9-NEXT: blr 28427 %2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0) 28428 %3 = icmp ult <2 x i64> %2, <i64 63, i64 63> 28429 %4 = sext <2 x i1> %3 to <2 x i64> 28430 ret <2 x i64> %4 28431} 28432 28433declare <16 x i8> @llvm.ctpop.v16i8(<16 x i8>) 28434declare <8 x i16> @llvm.ctpop.v8i16(<8 x i16>) 28435declare <4 x i32> @llvm.ctpop.v4i32(<4 x i32>) 28436declare <2 x i64> @llvm.ctpop.v2i64(<2 x i64>) 28437