1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=ppc32-unknown-unknown | FileCheck %s --check-prefixes=ALL,PPC32 3; RUN: llc < %s -mtriple=powerpc64-unknown-unknown | FileCheck %s --check-prefixes=ALL,PPC64,PPC64BE 4; RUN: llc < %s -mtriple=powerpc64le-unknown-unknown | FileCheck %s --check-prefixes=ALL,PPC64,PPC64LE 5 6; These two forms are equivalent: 7; sub %y, (xor %x, -1) 8; add (add %x, 1), %y 9; Some targets may prefer one to the other. 10 11define i8 @scalar_i8(i8 %x, i8 %y) nounwind { 12; ALL-LABEL: scalar_i8: 13; ALL: # %bb.0: 14; ALL-NEXT: add 3, 4, 3 15; ALL-NEXT: addi 3, 3, 1 16; ALL-NEXT: blr 17 %t0 = xor i8 %x, -1 18 %t1 = sub i8 %y, %t0 19 ret i8 %t1 20} 21 22define i16 @scalar_i16(i16 %x, i16 %y) nounwind { 23; ALL-LABEL: scalar_i16: 24; ALL: # %bb.0: 25; ALL-NEXT: add 3, 4, 3 26; ALL-NEXT: addi 3, 3, 1 27; ALL-NEXT: blr 28 %t0 = xor i16 %x, -1 29 %t1 = sub i16 %y, %t0 30 ret i16 %t1 31} 32 33define i32 @scalar_i32(i32 %x, i32 %y) nounwind { 34; ALL-LABEL: scalar_i32: 35; ALL: # %bb.0: 36; ALL-NEXT: add 3, 4, 3 37; ALL-NEXT: addi 3, 3, 1 38; ALL-NEXT: blr 39 %t0 = xor i32 %x, -1 40 %t1 = sub i32 %y, %t0 41 ret i32 %t1 42} 43 44define i64 @scalar_i64(i64 %x, i64 %y) nounwind { 45; PPC32-LABEL: scalar_i64: 46; PPC32: # %bb.0: 47; PPC32-NEXT: addc 4, 6, 4 48; PPC32-NEXT: adde 3, 5, 3 49; PPC32-NEXT: addic 4, 4, 1 50; PPC32-NEXT: addze 3, 3 51; PPC32-NEXT: blr 52; 53; PPC64-LABEL: scalar_i64: 54; PPC64: # %bb.0: 55; PPC64-NEXT: add 3, 4, 3 56; PPC64-NEXT: addi 3, 3, 1 57; PPC64-NEXT: blr 58 %t0 = xor i64 %x, -1 59 %t1 = sub i64 %y, %t0 60 ret i64 %t1 61} 62 63define <16 x i8> @vector_i128_i8(<16 x i8> %x, <16 x i8> %y) nounwind { 64; PPC32-LABEL: vector_i128_i8: 65; PPC32: # %bb.0: 66; PPC32-NEXT: stwu 1, -64(1) 67; PPC32-NEXT: stw 21, 20(1) # 4-byte Folded Spill 68; PPC32-NEXT: lbz 21, 123(1) 69; PPC32-NEXT: stw 22, 24(1) # 4-byte Folded Spill 70; PPC32-NEXT: stw 23, 28(1) # 4-byte Folded Spill 71; PPC32-NEXT: add 7, 21, 7 72; PPC32-NEXT: lbz 23, 115(1) 73; PPC32-NEXT: lbz 22, 119(1) 74; PPC32-NEXT: lbz 21, 135(1) 75; PPC32-NEXT: add 5, 23, 5 76; PPC32-NEXT: lbz 23, 127(1) 77; PPC32-NEXT: add 6, 22, 6 78; PPC32-NEXT: lbz 22, 131(1) 79; PPC32-NEXT: add 10, 21, 10 80; PPC32-NEXT: stw 26, 40(1) # 4-byte Folded Spill 81; PPC32-NEXT: add 8, 23, 8 82; PPC32-NEXT: lbz 26, 83(1) 83; PPC32-NEXT: add 9, 22, 9 84; PPC32-NEXT: lbz 21, 147(1) 85; PPC32-NEXT: stw 24, 32(1) # 4-byte Folded Spill 86; PPC32-NEXT: stw 25, 36(1) # 4-byte Folded Spill 87; PPC32-NEXT: add 26, 21, 26 88; PPC32-NEXT: lbz 25, 79(1) 89; PPC32-NEXT: lbz 24, 75(1) 90; PPC32-NEXT: lbz 23, 139(1) 91; PPC32-NEXT: lbz 22, 143(1) 92; PPC32-NEXT: stw 29, 52(1) # 4-byte Folded Spill 93; PPC32-NEXT: add 24, 23, 24 94; PPC32-NEXT: lbz 29, 95(1) 95; PPC32-NEXT: add 25, 22, 25 96; PPC32-NEXT: lbz 21, 159(1) 97; PPC32-NEXT: stw 27, 44(1) # 4-byte Folded Spill 98; PPC32-NEXT: stw 28, 48(1) # 4-byte Folded Spill 99; PPC32-NEXT: add 29, 21, 29 100; PPC32-NEXT: lbz 28, 91(1) 101; PPC32-NEXT: lbz 27, 87(1) 102; PPC32-NEXT: lbz 23, 151(1) 103; PPC32-NEXT: lbz 22, 155(1) 104; PPC32-NEXT: lbz 4, 111(1) 105; PPC32-NEXT: add 27, 23, 27 106; PPC32-NEXT: lbz 21, 175(1) 107; PPC32-NEXT: add 28, 22, 28 108; PPC32-NEXT: lbz 11, 107(1) 109; PPC32-NEXT: lbz 12, 171(1) 110; PPC32-NEXT: add 4, 21, 4 111; PPC32-NEXT: stw 30, 56(1) # 4-byte Folded Spill 112; PPC32-NEXT: addi 4, 4, 1 113; PPC32-NEXT: lbz 0, 103(1) 114; PPC32-NEXT: add 11, 12, 11 115; PPC32-NEXT: lbz 30, 99(1) 116; PPC32-NEXT: lbz 23, 163(1) 117; PPC32-NEXT: lbz 22, 167(1) 118; PPC32-NEXT: add 30, 23, 30 119; PPC32-NEXT: stb 4, 15(3) 120; PPC32-NEXT: add 23, 22, 0 121; PPC32-NEXT: addi 4, 11, 1 122; PPC32-NEXT: stb 4, 14(3) 123; PPC32-NEXT: addi 4, 23, 1 124; PPC32-NEXT: stb 4, 13(3) 125; PPC32-NEXT: addi 4, 30, 1 126; PPC32-NEXT: stb 4, 12(3) 127; PPC32-NEXT: addi 4, 29, 1 128; PPC32-NEXT: stb 4, 11(3) 129; PPC32-NEXT: addi 4, 28, 1 130; PPC32-NEXT: stb 4, 10(3) 131; PPC32-NEXT: addi 4, 27, 1 132; PPC32-NEXT: stb 4, 9(3) 133; PPC32-NEXT: addi 4, 26, 1 134; PPC32-NEXT: stb 4, 8(3) 135; PPC32-NEXT: addi 4, 25, 1 136; PPC32-NEXT: stb 4, 7(3) 137; PPC32-NEXT: addi 4, 24, 1 138; PPC32-NEXT: stb 4, 6(3) 139; PPC32-NEXT: addi 4, 10, 1 140; PPC32-NEXT: stb 4, 5(3) 141; PPC32-NEXT: addi 4, 9, 1 142; PPC32-NEXT: stb 4, 4(3) 143; PPC32-NEXT: addi 4, 8, 1 144; PPC32-NEXT: stb 4, 3(3) 145; PPC32-NEXT: addi 4, 7, 1 146; PPC32-NEXT: stb 4, 2(3) 147; PPC32-NEXT: addi 4, 6, 1 148; PPC32-NEXT: stb 4, 1(3) 149; PPC32-NEXT: addi 4, 5, 1 150; PPC32-NEXT: stb 4, 0(3) 151; PPC32-NEXT: lwz 30, 56(1) # 4-byte Folded Reload 152; PPC32-NEXT: lwz 29, 52(1) # 4-byte Folded Reload 153; PPC32-NEXT: lwz 28, 48(1) # 4-byte Folded Reload 154; PPC32-NEXT: lwz 27, 44(1) # 4-byte Folded Reload 155; PPC32-NEXT: lwz 26, 40(1) # 4-byte Folded Reload 156; PPC32-NEXT: lwz 25, 36(1) # 4-byte Folded Reload 157; PPC32-NEXT: lwz 24, 32(1) # 4-byte Folded Reload 158; PPC32-NEXT: lwz 23, 28(1) # 4-byte Folded Reload 159; PPC32-NEXT: lwz 22, 24(1) # 4-byte Folded Reload 160; PPC32-NEXT: lwz 21, 20(1) # 4-byte Folded Reload 161; PPC32-NEXT: addi 1, 1, 64 162; PPC32-NEXT: blr 163; 164; PPC64BE-LABEL: vector_i128_i8: 165; PPC64BE: # %bb.0: 166; PPC64BE-NEXT: std 21, -88(1) # 8-byte Folded Spill 167; PPC64BE-NEXT: lbz 21, 207(1) 168; PPC64BE-NEXT: std 22, -80(1) # 8-byte Folded Spill 169; PPC64BE-NEXT: std 23, -72(1) # 8-byte Folded Spill 170; PPC64BE-NEXT: std 25, -56(1) # 8-byte Folded Spill 171; PPC64BE-NEXT: std 24, -64(1) # 8-byte Folded Spill 172; PPC64BE-NEXT: std 28, -32(1) # 8-byte Folded Spill 173; PPC64BE-NEXT: std 27, -40(1) # 8-byte Folded Spill 174; PPC64BE-NEXT: std 26, -48(1) # 8-byte Folded Spill 175; PPC64BE-NEXT: std 30, -16(1) # 8-byte Folded Spill 176; PPC64BE-NEXT: std 29, -24(1) # 8-byte Folded Spill 177; PPC64BE-NEXT: lbz 22, 199(1) 178; PPC64BE-NEXT: lbz 23, 191(1) 179; PPC64BE-NEXT: add 6, 21, 6 180; PPC64BE-NEXT: lbz 21, 231(1) 181; PPC64BE-NEXT: add 5, 22, 5 182; PPC64BE-NEXT: lbz 22, 223(1) 183; PPC64BE-NEXT: add 4, 23, 4 184; PPC64BE-NEXT: lbz 23, 215(1) 185; PPC64BE-NEXT: add 9, 21, 9 186; PPC64BE-NEXT: lbz 25, 127(1) 187; PPC64BE-NEXT: add 8, 22, 8 188; PPC64BE-NEXT: lbz 21, 255(1) 189; PPC64BE-NEXT: add 7, 23, 7 190; PPC64BE-NEXT: lbz 24, 119(1) 191; PPC64BE-NEXT: addi 9, 9, 1 192; PPC64BE-NEXT: lbz 22, 247(1) 193; PPC64BE-NEXT: add 25, 21, 25 194; PPC64BE-NEXT: lbz 23, 239(1) 195; PPC64BE-NEXT: addi 8, 8, 1 196; PPC64BE-NEXT: lbz 28, 151(1) 197; PPC64BE-NEXT: add 24, 22, 24 198; PPC64BE-NEXT: lbz 21, 279(1) 199; PPC64BE-NEXT: add 10, 23, 10 200; PPC64BE-NEXT: lbz 27, 143(1) 201; PPC64BE-NEXT: addi 10, 10, 1 202; PPC64BE-NEXT: lbz 22, 271(1) 203; PPC64BE-NEXT: add 28, 21, 28 204; PPC64BE-NEXT: lbz 26, 135(1) 205; PPC64BE-NEXT: addi 7, 7, 1 206; PPC64BE-NEXT: lbz 23, 263(1) 207; PPC64BE-NEXT: add 27, 22, 27 208; PPC64BE-NEXT: lbz 11, 183(1) 209; PPC64BE-NEXT: addi 6, 6, 1 210; PPC64BE-NEXT: lbz 21, 311(1) 211; PPC64BE-NEXT: add 26, 23, 26 212; PPC64BE-NEXT: lbz 12, 175(1) 213; PPC64BE-NEXT: addi 5, 5, 1 214; PPC64BE-NEXT: lbz 0, 303(1) 215; PPC64BE-NEXT: add 11, 21, 11 216; PPC64BE-NEXT: lbz 30, 167(1) 217; PPC64BE-NEXT: addi 11, 11, 1 218; PPC64BE-NEXT: lbz 22, 295(1) 219; PPC64BE-NEXT: add 12, 0, 12 220; PPC64BE-NEXT: lbz 29, 159(1) 221; PPC64BE-NEXT: addi 4, 4, 1 222; PPC64BE-NEXT: lbz 23, 287(1) 223; PPC64BE-NEXT: add 30, 22, 30 224; PPC64BE-NEXT: stb 11, 15(3) 225; PPC64BE-NEXT: addi 11, 12, 1 226; PPC64BE-NEXT: add 29, 23, 29 227; PPC64BE-NEXT: stb 11, 14(3) 228; PPC64BE-NEXT: addi 11, 30, 1 229; PPC64BE-NEXT: stb 11, 13(3) 230; PPC64BE-NEXT: addi 11, 29, 1 231; PPC64BE-NEXT: stb 11, 12(3) 232; PPC64BE-NEXT: addi 11, 28, 1 233; PPC64BE-NEXT: stb 11, 11(3) 234; PPC64BE-NEXT: addi 11, 27, 1 235; PPC64BE-NEXT: stb 11, 10(3) 236; PPC64BE-NEXT: addi 11, 26, 1 237; PPC64BE-NEXT: stb 11, 9(3) 238; PPC64BE-NEXT: addi 11, 25, 1 239; PPC64BE-NEXT: stb 11, 8(3) 240; PPC64BE-NEXT: addi 11, 24, 1 241; PPC64BE-NEXT: stb 11, 7(3) 242; PPC64BE-NEXT: stb 10, 6(3) 243; PPC64BE-NEXT: stb 9, 5(3) 244; PPC64BE-NEXT: stb 8, 4(3) 245; PPC64BE-NEXT: stb 7, 3(3) 246; PPC64BE-NEXT: stb 6, 2(3) 247; PPC64BE-NEXT: stb 5, 1(3) 248; PPC64BE-NEXT: stb 4, 0(3) 249; PPC64BE-NEXT: ld 30, -16(1) # 8-byte Folded Reload 250; PPC64BE-NEXT: ld 29, -24(1) # 8-byte Folded Reload 251; PPC64BE-NEXT: ld 28, -32(1) # 8-byte Folded Reload 252; PPC64BE-NEXT: ld 27, -40(1) # 8-byte Folded Reload 253; PPC64BE-NEXT: ld 26, -48(1) # 8-byte Folded Reload 254; PPC64BE-NEXT: ld 25, -56(1) # 8-byte Folded Reload 255; PPC64BE-NEXT: ld 24, -64(1) # 8-byte Folded Reload 256; PPC64BE-NEXT: ld 23, -72(1) # 8-byte Folded Reload 257; PPC64BE-NEXT: ld 22, -80(1) # 8-byte Folded Reload 258; PPC64BE-NEXT: ld 21, -88(1) # 8-byte Folded Reload 259; PPC64BE-NEXT: blr 260; 261; PPC64LE-LABEL: vector_i128_i8: 262; PPC64LE: # %bb.0: 263; PPC64LE-NEXT: xxlnor 34, 34, 34 264; PPC64LE-NEXT: vsububm 2, 3, 2 265; PPC64LE-NEXT: blr 266 %t0 = xor <16 x i8> %x, <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> 267 %t1 = sub <16 x i8> %y, %t0 268 ret <16 x i8> %t1 269} 270 271define <8 x i16> @vector_i128_i16(<8 x i16> %x, <8 x i16> %y) nounwind { 272; PPC32-LABEL: vector_i128_i16: 273; PPC32: # %bb.0: 274; PPC32-NEXT: stwu 1, -32(1) 275; PPC32-NEXT: stw 26, 8(1) # 4-byte Folded Spill 276; PPC32-NEXT: stw 27, 12(1) # 4-byte Folded Spill 277; PPC32-NEXT: stw 28, 16(1) # 4-byte Folded Spill 278; PPC32-NEXT: stw 29, 20(1) # 4-byte Folded Spill 279; PPC32-NEXT: stw 30, 24(1) # 4-byte Folded Spill 280; PPC32-NEXT: lhz 11, 70(1) 281; PPC32-NEXT: lhz 12, 66(1) 282; PPC32-NEXT: lhz 0, 62(1) 283; PPC32-NEXT: add 10, 11, 10 284; PPC32-NEXT: lhz 30, 58(1) 285; PPC32-NEXT: add 9, 12, 9 286; PPC32-NEXT: lhz 29, 50(1) 287; PPC32-NEXT: add 8, 0, 8 288; PPC32-NEXT: lhz 28, 42(1) 289; PPC32-NEXT: add 7, 30, 7 290; PPC32-NEXT: lhz 27, 46(1) 291; PPC32-NEXT: add 5, 29, 5 292; PPC32-NEXT: lhz 26, 54(1) 293; PPC32-NEXT: add 3, 28, 3 294; PPC32-NEXT: add 4, 27, 4 295; PPC32-NEXT: addi 3, 3, 1 296; PPC32-NEXT: add 6, 26, 6 297; PPC32-NEXT: addi 4, 4, 1 298; PPC32-NEXT: addi 5, 5, 1 299; PPC32-NEXT: addi 6, 6, 1 300; PPC32-NEXT: addi 7, 7, 1 301; PPC32-NEXT: addi 8, 8, 1 302; PPC32-NEXT: addi 9, 9, 1 303; PPC32-NEXT: addi 10, 10, 1 304; PPC32-NEXT: lwz 30, 24(1) # 4-byte Folded Reload 305; PPC32-NEXT: lwz 29, 20(1) # 4-byte Folded Reload 306; PPC32-NEXT: lwz 28, 16(1) # 4-byte Folded Reload 307; PPC32-NEXT: lwz 27, 12(1) # 4-byte Folded Reload 308; PPC32-NEXT: lwz 26, 8(1) # 4-byte Folded Reload 309; PPC32-NEXT: addi 1, 1, 32 310; PPC32-NEXT: blr 311; 312; PPC64BE-LABEL: vector_i128_i16: 313; PPC64BE: # %bb.0: 314; PPC64BE-NEXT: std 25, -56(1) # 8-byte Folded Spill 315; PPC64BE-NEXT: std 26, -48(1) # 8-byte Folded Spill 316; PPC64BE-NEXT: std 27, -40(1) # 8-byte Folded Spill 317; PPC64BE-NEXT: std 28, -32(1) # 8-byte Folded Spill 318; PPC64BE-NEXT: std 29, -24(1) # 8-byte Folded Spill 319; PPC64BE-NEXT: std 30, -16(1) # 8-byte Folded Spill 320; PPC64BE-NEXT: lhz 11, 118(1) 321; PPC64BE-NEXT: lhz 12, 182(1) 322; PPC64BE-NEXT: lhz 0, 174(1) 323; PPC64BE-NEXT: lhz 30, 166(1) 324; PPC64BE-NEXT: add 11, 12, 11 325; PPC64BE-NEXT: lhz 29, 158(1) 326; PPC64BE-NEXT: add 10, 0, 10 327; PPC64BE-NEXT: lhz 28, 142(1) 328; PPC64BE-NEXT: add 9, 30, 9 329; PPC64BE-NEXT: lhz 27, 126(1) 330; PPC64BE-NEXT: add 8, 29, 8 331; PPC64BE-NEXT: lhz 26, 134(1) 332; PPC64BE-NEXT: add 6, 28, 6 333; PPC64BE-NEXT: lhz 25, 150(1) 334; PPC64BE-NEXT: add 4, 27, 4 335; PPC64BE-NEXT: add 5, 26, 5 336; PPC64BE-NEXT: addi 11, 11, 1 337; PPC64BE-NEXT: add 7, 25, 7 338; PPC64BE-NEXT: addi 10, 10, 1 339; PPC64BE-NEXT: addi 9, 9, 1 340; PPC64BE-NEXT: addi 8, 8, 1 341; PPC64BE-NEXT: addi 7, 7, 1 342; PPC64BE-NEXT: addi 6, 6, 1 343; PPC64BE-NEXT: addi 5, 5, 1 344; PPC64BE-NEXT: addi 4, 4, 1 345; PPC64BE-NEXT: sth 11, 14(3) 346; PPC64BE-NEXT: sth 10, 12(3) 347; PPC64BE-NEXT: sth 9, 10(3) 348; PPC64BE-NEXT: sth 8, 8(3) 349; PPC64BE-NEXT: sth 7, 6(3) 350; PPC64BE-NEXT: sth 6, 4(3) 351; PPC64BE-NEXT: sth 5, 2(3) 352; PPC64BE-NEXT: sth 4, 0(3) 353; PPC64BE-NEXT: ld 30, -16(1) # 8-byte Folded Reload 354; PPC64BE-NEXT: ld 29, -24(1) # 8-byte Folded Reload 355; PPC64BE-NEXT: ld 28, -32(1) # 8-byte Folded Reload 356; PPC64BE-NEXT: ld 27, -40(1) # 8-byte Folded Reload 357; PPC64BE-NEXT: ld 26, -48(1) # 8-byte Folded Reload 358; PPC64BE-NEXT: ld 25, -56(1) # 8-byte Folded Reload 359; PPC64BE-NEXT: blr 360; 361; PPC64LE-LABEL: vector_i128_i16: 362; PPC64LE: # %bb.0: 363; PPC64LE-NEXT: xxlnor 34, 34, 34 364; PPC64LE-NEXT: vsubuhm 2, 3, 2 365; PPC64LE-NEXT: blr 366 %t0 = xor <8 x i16> %x, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> 367 %t1 = sub <8 x i16> %y, %t0 368 ret <8 x i16> %t1 369} 370 371define <4 x i32> @vector_i128_i32(<4 x i32> %x, <4 x i32> %y) nounwind { 372; PPC32-LABEL: vector_i128_i32: 373; PPC32: # %bb.0: 374; PPC32-NEXT: add 3, 7, 3 375; PPC32-NEXT: add 4, 8, 4 376; PPC32-NEXT: add 5, 9, 5 377; PPC32-NEXT: add 6, 10, 6 378; PPC32-NEXT: addi 3, 3, 1 379; PPC32-NEXT: addi 4, 4, 1 380; PPC32-NEXT: addi 5, 5, 1 381; PPC32-NEXT: addi 6, 6, 1 382; PPC32-NEXT: blr 383; 384; PPC64BE-LABEL: vector_i128_i32: 385; PPC64BE: # %bb.0: 386; PPC64BE-NEXT: add 6, 10, 6 387; PPC64BE-NEXT: add 5, 9, 5 388; PPC64BE-NEXT: add 4, 8, 4 389; PPC64BE-NEXT: add 3, 7, 3 390; PPC64BE-NEXT: addi 6, 6, 1 391; PPC64BE-NEXT: addi 5, 5, 1 392; PPC64BE-NEXT: addi 4, 4, 1 393; PPC64BE-NEXT: addi 3, 3, 1 394; PPC64BE-NEXT: blr 395; 396; PPC64LE-LABEL: vector_i128_i32: 397; PPC64LE: # %bb.0: 398; PPC64LE-NEXT: xxlnor 34, 34, 34 399; PPC64LE-NEXT: vsubuwm 2, 3, 2 400; PPC64LE-NEXT: blr 401 %t0 = xor <4 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1> 402 %t1 = sub <4 x i32> %y, %t0 403 ret <4 x i32> %t1 404} 405 406define <2 x i64> @vector_i128_i64(<2 x i64> %x, <2 x i64> %y) nounwind { 407; PPC32-LABEL: vector_i128_i64: 408; PPC32: # %bb.0: 409; PPC32-NEXT: not 4, 4 410; PPC32-NEXT: not 3, 3 411; PPC32-NEXT: subc 4, 8, 4 412; PPC32-NEXT: not 6, 6 413; PPC32-NEXT: subfe 3, 3, 7 414; PPC32-NEXT: not 5, 5 415; PPC32-NEXT: subc 6, 10, 6 416; PPC32-NEXT: subfe 5, 5, 9 417; PPC32-NEXT: blr 418; 419; PPC64BE-LABEL: vector_i128_i64: 420; PPC64BE: # %bb.0: 421; PPC64BE-NEXT: add 3, 5, 3 422; PPC64BE-NEXT: add 4, 6, 4 423; PPC64BE-NEXT: addi 3, 3, 1 424; PPC64BE-NEXT: addi 4, 4, 1 425; PPC64BE-NEXT: blr 426; 427; PPC64LE-LABEL: vector_i128_i64: 428; PPC64LE: # %bb.0: 429; PPC64LE-NEXT: xxlnor 34, 34, 34 430; PPC64LE-NEXT: vsubudm 2, 3, 2 431; PPC64LE-NEXT: blr 432 %t0 = xor <2 x i64> %x, <i64 -1, i64 -1> 433 %t1 = sub <2 x i64> %y, %t0 434 ret <2 x i64> %t1 435} 436