1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -mcpu=pwr8 \ 3; RUN: -mtriple=powerpc64-unknown-aix < %s | FileCheck %s --check-prefix=P8-BE 4; RUN: llc -verify-machineinstrs -mcpu=pwr9 \ 5; RUN: -mtriple=powerpc64-unknown-aix < %s | FileCheck %s --check-prefix=P9-BE 6; RUN: llc -verify-machineinstrs -mcpu=pwr10 \ 7; RUN: -mtriple=powerpc64-unknown-aix < %s | FileCheck %s --check-prefix=P10-BE 8; RUN: llc -verify-machineinstrs -mcpu=pwr8 \ 9; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s --check-prefix=P8-LE 10; RUN: llc -verify-machineinstrs -mcpu=pwr9 \ 11; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s --check-prefix=P9-LE 12; RUN: llc -verify-machineinstrs -mcpu=pwr10 \ 13; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s --check-prefix=P10-LE 14 15define dso_local void @foo1(ptr nocapture noundef writeonly %a) local_unnamed_addr { 16; P8-BE-LABEL: foo1: 17; P8-BE: # %bb.0: # %entry 18; P8-BE-NEXT: ld 4, L..C0(2) # %const.0 19; P8-BE-NEXT: lxvw4x 0, 0, 4 20; P8-BE-NEXT: li 4, 3333 21; P8-BE-NEXT: sth 4, 16(3) 22; P8-BE-NEXT: stxvw4x 0, 0, 3 23; P8-BE-NEXT: blr 24; 25; P9-BE-LABEL: foo1: 26; P9-BE: # %bb.0: # %entry 27; P9-BE-NEXT: ld 4, L..C0(2) # %const.0 28; P9-BE-NEXT: lxv 0, 0(4) 29; P9-BE-NEXT: li 4, 3333 30; P9-BE-NEXT: sth 4, 16(3) 31; P9-BE-NEXT: stxv 0, 0(3) 32; P9-BE-NEXT: blr 33; 34; P10-BE-LABEL: foo1: 35; P10-BE: # %bb.0: # %entry 36; P10-BE-NEXT: xxspltiw 0, 218434821 37; P10-BE-NEXT: li 4, 3333 38; P10-BE-NEXT: sth 4, 16(3) 39; P10-BE-NEXT: stxv 0, 0(3) 40; P10-BE-NEXT: blr 41; 42; P8-LE-LABEL: foo1: 43; P8-LE: # %bb.0: # %entry 44; P8-LE-NEXT: addis 4, 2, .LCPI0_0@toc@ha 45; P8-LE-NEXT: addi 4, 4, .LCPI0_0@toc@l 46; P8-LE-NEXT: lxvd2x 0, 0, 4 47; P8-LE-NEXT: li 4, 3333 48; P8-LE-NEXT: sth 4, 16(3) 49; P8-LE-NEXT: stxvd2x 0, 0, 3 50; P8-LE-NEXT: blr 51; 52; P9-LE-LABEL: foo1: 53; P9-LE: # %bb.0: # %entry 54; P9-LE-NEXT: addis 4, 2, .LCPI0_0@toc@ha 55; P9-LE-NEXT: addi 4, 4, .LCPI0_0@toc@l 56; P9-LE-NEXT: lxv 0, 0(4) 57; P9-LE-NEXT: li 4, 3333 58; P9-LE-NEXT: sth 4, 16(3) 59; P9-LE-NEXT: stxv 0, 0(3) 60; P9-LE-NEXT: blr 61; 62; P10-LE-LABEL: foo1: 63; P10-LE: # %bb.0: # %entry 64; P10-LE-NEXT: xxspltiw 0, 218434821 65; P10-LE-NEXT: li 4, 3333 66; P10-LE-NEXT: sth 4, 16(3) 67; P10-LE-NEXT: stxv 0, 0(3) 68; P10-LE-NEXT: blr 69entry: 70 store <8 x i16> <i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333>, ptr %a, align 2 71 %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8 72 store i16 3333, ptr %arrayidx8, align 2 73 ret void 74} 75 76define dso_local void @foo2(ptr nocapture noundef writeonly %a) local_unnamed_addr { 77; P8-BE-LABEL: foo2: 78; P8-BE: # %bb.0: # %entry 79; P8-BE-NEXT: ld 4, L..C1(2) # %const.0 80; P8-BE-NEXT: lxvw4x 0, 0, 4 81; P8-BE-NEXT: lis 4, 3333 82; P8-BE-NEXT: ori 4, 4, 3333 83; P8-BE-NEXT: stw 4, 16(3) 84; P8-BE-NEXT: stxvw4x 0, 0, 3 85; P8-BE-NEXT: blr 86; 87; P9-BE-LABEL: foo2: 88; P9-BE: # %bb.0: # %entry 89; P9-BE-NEXT: ld 4, L..C1(2) # %const.0 90; P9-BE-NEXT: lxv 0, 0(4) 91; P9-BE-NEXT: lis 4, 3333 92; P9-BE-NEXT: ori 4, 4, 3333 93; P9-BE-NEXT: stw 4, 16(3) 94; P9-BE-NEXT: stxv 0, 0(3) 95; P9-BE-NEXT: blr 96; 97; P10-BE-LABEL: foo2: 98; P10-BE: # %bb.0: # %entry 99; P10-BE-NEXT: xxspltiw 0, 218434821 100; P10-BE-NEXT: pli 4, 218434821 101; P10-BE-NEXT: stw 4, 16(3) 102; P10-BE-NEXT: stxv 0, 0(3) 103; P10-BE-NEXT: blr 104; 105; P8-LE-LABEL: foo2: 106; P8-LE: # %bb.0: # %entry 107; P8-LE-NEXT: addis 4, 2, .LCPI1_0@toc@ha 108; P8-LE-NEXT: addi 4, 4, .LCPI1_0@toc@l 109; P8-LE-NEXT: lxvd2x 0, 0, 4 110; P8-LE-NEXT: lis 4, 3333 111; P8-LE-NEXT: ori 4, 4, 3333 112; P8-LE-NEXT: stw 4, 16(3) 113; P8-LE-NEXT: stxvd2x 0, 0, 3 114; P8-LE-NEXT: blr 115; 116; P9-LE-LABEL: foo2: 117; P9-LE: # %bb.0: # %entry 118; P9-LE-NEXT: addis 4, 2, .LCPI1_0@toc@ha 119; P9-LE-NEXT: addi 4, 4, .LCPI1_0@toc@l 120; P9-LE-NEXT: lxv 0, 0(4) 121; P9-LE-NEXT: lis 4, 3333 122; P9-LE-NEXT: ori 4, 4, 3333 123; P9-LE-NEXT: stw 4, 16(3) 124; P9-LE-NEXT: stxv 0, 0(3) 125; P9-LE-NEXT: blr 126; 127; P10-LE-LABEL: foo2: 128; P10-LE: # %bb.0: # %entry 129; P10-LE-NEXT: xxspltiw 0, 218434821 130; P10-LE-NEXT: pli 4, 218434821 131; P10-LE-NEXT: stw 4, 16(3) 132; P10-LE-NEXT: stxv 0, 0(3) 133; P10-LE-NEXT: blr 134entry: 135 store <8 x i16> <i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333>, ptr %a, align 2 136 %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8 137 store i16 3333, ptr %arrayidx8, align 2 138 %arrayidx9 = getelementptr inbounds i16, ptr %a, i64 9 139 store i16 3333, ptr %arrayidx9, align 2 140 ret void 141} 142 143define dso_local void @foo3(ptr nocapture noundef writeonly %a) local_unnamed_addr { 144; P8-BE-LABEL: foo3: 145; P8-BE: # %bb.0: # %entry 146; P8-BE-NEXT: ld 4, L..C2(2) # %const.0 147; P8-BE-NEXT: lxvw4x 0, 0, 4 148; P8-BE-NEXT: lis 4, 3333 149; P8-BE-NEXT: ori 4, 4, 3333 150; P8-BE-NEXT: stw 4, 16(3) 151; P8-BE-NEXT: li 4, 3333 152; P8-BE-NEXT: stxvw4x 0, 0, 3 153; P8-BE-NEXT: sth 4, 20(3) 154; P8-BE-NEXT: blr 155; 156; P9-BE-LABEL: foo3: 157; P9-BE: # %bb.0: # %entry 158; P9-BE-NEXT: ld 4, L..C2(2) # %const.0 159; P9-BE-NEXT: lxv 0, 0(4) 160; P9-BE-NEXT: lis 4, 3333 161; P9-BE-NEXT: ori 4, 4, 3333 162; P9-BE-NEXT: stw 4, 16(3) 163; P9-BE-NEXT: li 4, 3333 164; P9-BE-NEXT: stxv 0, 0(3) 165; P9-BE-NEXT: sth 4, 20(3) 166; P9-BE-NEXT: blr 167; 168; P10-BE-LABEL: foo3: 169; P10-BE: # %bb.0: # %entry 170; P10-BE-NEXT: pli 4, 218434821 171; P10-BE-NEXT: xxspltiw 0, 218434821 172; P10-BE-NEXT: stw 4, 16(3) 173; P10-BE-NEXT: li 4, 3333 174; P10-BE-NEXT: stxv 0, 0(3) 175; P10-BE-NEXT: sth 4, 20(3) 176; P10-BE-NEXT: blr 177; 178; P8-LE-LABEL: foo3: 179; P8-LE: # %bb.0: # %entry 180; P8-LE-NEXT: addis 4, 2, .LCPI2_0@toc@ha 181; P8-LE-NEXT: addi 4, 4, .LCPI2_0@toc@l 182; P8-LE-NEXT: lxvd2x 0, 0, 4 183; P8-LE-NEXT: lis 4, 3333 184; P8-LE-NEXT: ori 4, 4, 3333 185; P8-LE-NEXT: stw 4, 16(3) 186; P8-LE-NEXT: li 4, 3333 187; P8-LE-NEXT: stxvd2x 0, 0, 3 188; P8-LE-NEXT: sth 4, 20(3) 189; P8-LE-NEXT: blr 190; 191; P9-LE-LABEL: foo3: 192; P9-LE: # %bb.0: # %entry 193; P9-LE-NEXT: addis 4, 2, .LCPI2_0@toc@ha 194; P9-LE-NEXT: addi 4, 4, .LCPI2_0@toc@l 195; P9-LE-NEXT: lxv 0, 0(4) 196; P9-LE-NEXT: lis 4, 3333 197; P9-LE-NEXT: ori 4, 4, 3333 198; P9-LE-NEXT: stw 4, 16(3) 199; P9-LE-NEXT: li 4, 3333 200; P9-LE-NEXT: stxv 0, 0(3) 201; P9-LE-NEXT: sth 4, 20(3) 202; P9-LE-NEXT: blr 203; 204; P10-LE-LABEL: foo3: 205; P10-LE: # %bb.0: # %entry 206; P10-LE-NEXT: pli 4, 218434821 207; P10-LE-NEXT: xxspltiw 0, 218434821 208; P10-LE-NEXT: stw 4, 16(3) 209; P10-LE-NEXT: li 4, 3333 210; P10-LE-NEXT: stxv 0, 0(3) 211; P10-LE-NEXT: sth 4, 20(3) 212; P10-LE-NEXT: blr 213entry: 214 store <8 x i16> <i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333>, ptr %a, align 2 215 %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8 216 store i16 3333, ptr %arrayidx8, align 2 217 %arrayidx9 = getelementptr inbounds i16, ptr %a, i64 9 218 store i16 3333, ptr %arrayidx9, align 2 219 %arrayidx10 = getelementptr inbounds i16, ptr %a, i64 10 220 store i16 3333, ptr %arrayidx10, align 2 221 ret void 222} 223 224define dso_local void @foo4(ptr nocapture noundef writeonly %a) local_unnamed_addr { 225; P8-BE-LABEL: foo4: 226; P8-BE: # %bb.0: # %entry 227; P8-BE-NEXT: ld 4, L..C3(2) # %const.0 228; P8-BE-NEXT: lxvw4x 0, 0, 4 229; P8-BE-NEXT: lis 4, 3333 230; P8-BE-NEXT: ori 4, 4, 3333 231; P8-BE-NEXT: rldimi 4, 4, 32, 0 232; P8-BE-NEXT: stxvw4x 0, 0, 3 233; P8-BE-NEXT: std 4, 16(3) 234; P8-BE-NEXT: blr 235; 236; P9-BE-LABEL: foo4: 237; P9-BE: # %bb.0: # %entry 238; P9-BE-NEXT: ld 4, L..C3(2) # %const.0 239; P9-BE-NEXT: lxv 0, 0(4) 240; P9-BE-NEXT: lis 4, 3333 241; P9-BE-NEXT: ori 4, 4, 3333 242; P9-BE-NEXT: rldimi 4, 4, 32, 0 243; P9-BE-NEXT: stxv 0, 0(3) 244; P9-BE-NEXT: std 4, 16(3) 245; P9-BE-NEXT: blr 246; 247; P10-BE-LABEL: foo4: 248; P10-BE: # %bb.0: # %entry 249; P10-BE-NEXT: pli 4, 218434821 250; P10-BE-NEXT: xxspltiw 0, 218434821 251; P10-BE-NEXT: rldimi 4, 4, 32, 0 252; P10-BE-NEXT: stxv 0, 0(3) 253; P10-BE-NEXT: std 4, 16(3) 254; P10-BE-NEXT: blr 255; 256; P8-LE-LABEL: foo4: 257; P8-LE: # %bb.0: # %entry 258; P8-LE-NEXT: addis 4, 2, .LCPI3_0@toc@ha 259; P8-LE-NEXT: addi 4, 4, .LCPI3_0@toc@l 260; P8-LE-NEXT: lxvd2x 0, 0, 4 261; P8-LE-NEXT: lis 4, 3333 262; P8-LE-NEXT: ori 4, 4, 3333 263; P8-LE-NEXT: rldimi 4, 4, 32, 0 264; P8-LE-NEXT: stxvd2x 0, 0, 3 265; P8-LE-NEXT: std 4, 16(3) 266; P8-LE-NEXT: blr 267; 268; P9-LE-LABEL: foo4: 269; P9-LE: # %bb.0: # %entry 270; P9-LE-NEXT: addis 4, 2, .LCPI3_0@toc@ha 271; P9-LE-NEXT: addi 4, 4, .LCPI3_0@toc@l 272; P9-LE-NEXT: lxv 0, 0(4) 273; P9-LE-NEXT: lis 4, 3333 274; P9-LE-NEXT: ori 4, 4, 3333 275; P9-LE-NEXT: rldimi 4, 4, 32, 0 276; P9-LE-NEXT: stxv 0, 0(3) 277; P9-LE-NEXT: std 4, 16(3) 278; P9-LE-NEXT: blr 279; 280; P10-LE-LABEL: foo4: 281; P10-LE: # %bb.0: # %entry 282; P10-LE-NEXT: pli 4, 218434821 283; P10-LE-NEXT: xxspltiw 0, 218434821 284; P10-LE-NEXT: rldimi 4, 4, 32, 0 285; P10-LE-NEXT: stxv 0, 0(3) 286; P10-LE-NEXT: std 4, 16(3) 287; P10-LE-NEXT: blr 288entry: 289 store <8 x i16> <i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333>, ptr %a, align 2 290 %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8 291 store i16 3333, ptr %arrayidx8, align 2 292 %arrayidx9 = getelementptr inbounds i16, ptr %a, i64 9 293 store i16 3333, ptr %arrayidx9, align 2 294 %arrayidx10 = getelementptr inbounds i16, ptr %a, i64 10 295 store i16 3333, ptr %arrayidx10, align 2 296 %arrayidx11 = getelementptr inbounds i16, ptr %a, i64 11 297 store i16 3333, ptr %arrayidx11, align 2 298 ret void 299} 300 301define dso_local void @foo5(ptr nocapture noundef writeonly %a) local_unnamed_addr { 302; P8-BE-LABEL: foo5: 303; P8-BE: # %bb.0: # %entry 304; P8-BE-NEXT: ld 4, L..C4(2) # %const.0 305; P8-BE-NEXT: lxvw4x 0, 0, 4 306; P8-BE-NEXT: lis 4, 5 307; P8-BE-NEXT: ori 4, 4, 5653 308; P8-BE-NEXT: stw 4, 16(3) 309; P8-BE-NEXT: stxvw4x 0, 0, 3 310; P8-BE-NEXT: blr 311; 312; P9-BE-LABEL: foo5: 313; P9-BE: # %bb.0: # %entry 314; P9-BE-NEXT: ld 4, L..C4(2) # %const.0 315; P9-BE-NEXT: lxv 0, 0(4) 316; P9-BE-NEXT: lis 4, 5 317; P9-BE-NEXT: ori 4, 4, 5653 318; P9-BE-NEXT: stw 4, 16(3) 319; P9-BE-NEXT: stxv 0, 0(3) 320; P9-BE-NEXT: blr 321; 322; P10-BE-LABEL: foo5: 323; P10-BE: # %bb.0: # %entry 324; P10-BE-NEXT: xxspltiw 0, 333333 325; P10-BE-NEXT: pli 4, 333333 326; P10-BE-NEXT: stw 4, 16(3) 327; P10-BE-NEXT: stxv 0, 0(3) 328; P10-BE-NEXT: blr 329; 330; P8-LE-LABEL: foo5: 331; P8-LE: # %bb.0: # %entry 332; P8-LE-NEXT: addis 4, 2, .LCPI4_0@toc@ha 333; P8-LE-NEXT: addi 4, 4, .LCPI4_0@toc@l 334; P8-LE-NEXT: lxvd2x 0, 0, 4 335; P8-LE-NEXT: lis 4, 5 336; P8-LE-NEXT: ori 4, 4, 5653 337; P8-LE-NEXT: stw 4, 16(3) 338; P8-LE-NEXT: stxvd2x 0, 0, 3 339; P8-LE-NEXT: blr 340; 341; P9-LE-LABEL: foo5: 342; P9-LE: # %bb.0: # %entry 343; P9-LE-NEXT: addis 4, 2, .LCPI4_0@toc@ha 344; P9-LE-NEXT: addi 4, 4, .LCPI4_0@toc@l 345; P9-LE-NEXT: lxv 0, 0(4) 346; P9-LE-NEXT: lis 4, 5 347; P9-LE-NEXT: ori 4, 4, 5653 348; P9-LE-NEXT: stw 4, 16(3) 349; P9-LE-NEXT: stxv 0, 0(3) 350; P9-LE-NEXT: blr 351; 352; P10-LE-LABEL: foo5: 353; P10-LE: # %bb.0: # %entry 354; P10-LE-NEXT: xxspltiw 0, 333333 355; P10-LE-NEXT: pli 4, 333333 356; P10-LE-NEXT: stw 4, 16(3) 357; P10-LE-NEXT: stxv 0, 0(3) 358; P10-LE-NEXT: blr 359entry: 360 store <4 x i32> <i32 333333, i32 333333, i32 333333, i32 333333>, ptr %a, align 4 361 %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 4 362 store i32 333333, ptr %arrayidx4, align 4 363 ret void 364} 365 366define dso_local void @foo6(ptr nocapture noundef writeonly %a) local_unnamed_addr { 367; P8-BE-LABEL: foo6: 368; P8-BE: # %bb.0: # %entry 369; P8-BE-NEXT: ld 4, L..C5(2) # %const.0 370; P8-BE-NEXT: lxvw4x 0, 0, 4 371; P8-BE-NEXT: lis 4, 5 372; P8-BE-NEXT: ori 4, 4, 5653 373; P8-BE-NEXT: rldimi 4, 4, 32, 0 374; P8-BE-NEXT: stxvw4x 0, 0, 3 375; P8-BE-NEXT: std 4, 16(3) 376; P8-BE-NEXT: blr 377; 378; P9-BE-LABEL: foo6: 379; P9-BE: # %bb.0: # %entry 380; P9-BE-NEXT: ld 4, L..C5(2) # %const.0 381; P9-BE-NEXT: lxv 0, 0(4) 382; P9-BE-NEXT: lis 4, 5 383; P9-BE-NEXT: ori 4, 4, 5653 384; P9-BE-NEXT: rldimi 4, 4, 32, 0 385; P9-BE-NEXT: stxv 0, 0(3) 386; P9-BE-NEXT: std 4, 16(3) 387; P9-BE-NEXT: blr 388; 389; P10-BE-LABEL: foo6: 390; P10-BE: # %bb.0: # %entry 391; P10-BE-NEXT: pli 4, 333333 392; P10-BE-NEXT: xxspltiw 0, 333333 393; P10-BE-NEXT: rldimi 4, 4, 32, 0 394; P10-BE-NEXT: stxv 0, 0(3) 395; P10-BE-NEXT: std 4, 16(3) 396; P10-BE-NEXT: blr 397; 398; P8-LE-LABEL: foo6: 399; P8-LE: # %bb.0: # %entry 400; P8-LE-NEXT: addis 4, 2, .LCPI5_0@toc@ha 401; P8-LE-NEXT: addi 4, 4, .LCPI5_0@toc@l 402; P8-LE-NEXT: lxvd2x 0, 0, 4 403; P8-LE-NEXT: lis 4, 5 404; P8-LE-NEXT: ori 4, 4, 5653 405; P8-LE-NEXT: rldimi 4, 4, 32, 0 406; P8-LE-NEXT: stxvd2x 0, 0, 3 407; P8-LE-NEXT: std 4, 16(3) 408; P8-LE-NEXT: blr 409; 410; P9-LE-LABEL: foo6: 411; P9-LE: # %bb.0: # %entry 412; P9-LE-NEXT: addis 4, 2, .LCPI5_0@toc@ha 413; P9-LE-NEXT: addi 4, 4, .LCPI5_0@toc@l 414; P9-LE-NEXT: lxv 0, 0(4) 415; P9-LE-NEXT: lis 4, 5 416; P9-LE-NEXT: ori 4, 4, 5653 417; P9-LE-NEXT: rldimi 4, 4, 32, 0 418; P9-LE-NEXT: stxv 0, 0(3) 419; P9-LE-NEXT: std 4, 16(3) 420; P9-LE-NEXT: blr 421; 422; P10-LE-LABEL: foo6: 423; P10-LE: # %bb.0: # %entry 424; P10-LE-NEXT: pli 4, 333333 425; P10-LE-NEXT: xxspltiw 0, 333333 426; P10-LE-NEXT: rldimi 4, 4, 32, 0 427; P10-LE-NEXT: stxv 0, 0(3) 428; P10-LE-NEXT: std 4, 16(3) 429; P10-LE-NEXT: blr 430entry: 431 store <4 x i32> <i32 333333, i32 333333, i32 333333, i32 333333>, ptr %a, align 4 432 %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 4 433 store i32 333333, ptr %arrayidx4, align 4 434 %arrayidx5 = getelementptr inbounds i32, ptr %a, i64 5 435 store i32 333333, ptr %arrayidx5, align 4 436 ret void 437} 438 439define dso_local void @foo7(ptr nocapture noundef writeonly %a) local_unnamed_addr { 440; P8-BE-LABEL: foo7: 441; P8-BE: # %bb.0: # %entry 442; P8-BE-NEXT: ld 4, L..C6(2) # %const.0 443; P8-BE-NEXT: lxvd2x 0, 0, 4 444; P8-BE-NEXT: lis 4, 508 445; P8-BE-NEXT: ori 4, 4, 41045 446; P8-BE-NEXT: std 4, 16(3) 447; P8-BE-NEXT: stxvd2x 0, 0, 3 448; P8-BE-NEXT: blr 449; 450; P9-BE-LABEL: foo7: 451; P9-BE: # %bb.0: # %entry 452; P9-BE-NEXT: ld 4, L..C6(2) # %const.0 453; P9-BE-NEXT: lxv 0, 0(4) 454; P9-BE-NEXT: lis 4, 508 455; P9-BE-NEXT: ori 4, 4, 41045 456; P9-BE-NEXT: std 4, 16(3) 457; P9-BE-NEXT: stxv 0, 0(3) 458; P9-BE-NEXT: blr 459; 460; P10-BE-LABEL: foo7: 461; P10-BE: # %bb.0: # %entry 462; P10-BE-NEXT: xxlxor 0, 0, 0 463; P10-BE-NEXT: pli 4, 33333333 464; P10-BE-NEXT: xxsplti32dx 0, 1, 33333333 465; P10-BE-NEXT: std 4, 16(3) 466; P10-BE-NEXT: stxv 0, 0(3) 467; P10-BE-NEXT: blr 468; 469; P8-LE-LABEL: foo7: 470; P8-LE: # %bb.0: # %entry 471; P8-LE-NEXT: addis 4, 2, .LCPI6_0@toc@ha 472; P8-LE-NEXT: addi 4, 4, .LCPI6_0@toc@l 473; P8-LE-NEXT: lxvd2x 0, 0, 4 474; P8-LE-NEXT: lis 4, 508 475; P8-LE-NEXT: ori 4, 4, 41045 476; P8-LE-NEXT: std 4, 16(3) 477; P8-LE-NEXT: stxvd2x 0, 0, 3 478; P8-LE-NEXT: blr 479; 480; P9-LE-LABEL: foo7: 481; P9-LE: # %bb.0: # %entry 482; P9-LE-NEXT: addis 4, 2, .LCPI6_0@toc@ha 483; P9-LE-NEXT: addi 4, 4, .LCPI6_0@toc@l 484; P9-LE-NEXT: lxv 0, 0(4) 485; P9-LE-NEXT: lis 4, 508 486; P9-LE-NEXT: ori 4, 4, 41045 487; P9-LE-NEXT: std 4, 16(3) 488; P9-LE-NEXT: stxv 0, 0(3) 489; P9-LE-NEXT: blr 490; 491; P10-LE-LABEL: foo7: 492; P10-LE: # %bb.0: # %entry 493; P10-LE-NEXT: xxlxor 0, 0, 0 494; P10-LE-NEXT: pli 4, 33333333 495; P10-LE-NEXT: xxsplti32dx 0, 1, 33333333 496; P10-LE-NEXT: std 4, 16(3) 497; P10-LE-NEXT: stxv 0, 0(3) 498; P10-LE-NEXT: blr 499entry: 500 store <2 x i64> <i64 33333333, i64 33333333>, ptr %a, align 8 501 %arrayidx2 = getelementptr inbounds i64, ptr %a, i64 2 502 store i64 33333333, ptr %arrayidx2, align 8 503 ret void 504} 505 506define dso_local void @foo8(ptr nocapture noundef writeonly %a) local_unnamed_addr { 507; P8-BE-LABEL: foo8: 508; P8-BE: # %bb.0: # %entry 509; P8-BE-NEXT: ld 4, L..C7(2) # %const.0 510; P8-BE-NEXT: lxvw4x 0, 0, 4 511; P8-BE-NEXT: lis 4, 16469 512; P8-BE-NEXT: ori 4, 4, 7864 513; P8-BE-NEXT: stw 4, 16(3) 514; P8-BE-NEXT: stxvw4x 0, 0, 3 515; P8-BE-NEXT: blr 516; 517; P9-BE-LABEL: foo8: 518; P9-BE: # %bb.0: # %entry 519; P9-BE-NEXT: ld 4, L..C7(2) # %const.0 520; P9-BE-NEXT: lxv 0, 0(4) 521; P9-BE-NEXT: lis 4, 16469 522; P9-BE-NEXT: ori 4, 4, 7864 523; P9-BE-NEXT: stw 4, 16(3) 524; P9-BE-NEXT: stxv 0, 0(3) 525; P9-BE-NEXT: blr 526; 527; P10-BE-LABEL: foo8: 528; P10-BE: # %bb.0: # %entry 529; P10-BE-NEXT: xxspltiw 0, 1079320248 530; P10-BE-NEXT: pli 4, 1079320248 531; P10-BE-NEXT: stw 4, 16(3) 532; P10-BE-NEXT: stxv 0, 0(3) 533; P10-BE-NEXT: blr 534; 535; P8-LE-LABEL: foo8: 536; P8-LE: # %bb.0: # %entry 537; P8-LE-NEXT: addis 4, 2, .LCPI7_0@toc@ha 538; P8-LE-NEXT: addi 4, 4, .LCPI7_0@toc@l 539; P8-LE-NEXT: lxvd2x 0, 0, 4 540; P8-LE-NEXT: lis 4, 16469 541; P8-LE-NEXT: ori 4, 4, 7864 542; P8-LE-NEXT: stw 4, 16(3) 543; P8-LE-NEXT: stxvd2x 0, 0, 3 544; P8-LE-NEXT: blr 545; 546; P9-LE-LABEL: foo8: 547; P9-LE: # %bb.0: # %entry 548; P9-LE-NEXT: addis 4, 2, .LCPI7_0@toc@ha 549; P9-LE-NEXT: addi 4, 4, .LCPI7_0@toc@l 550; P9-LE-NEXT: lxv 0, 0(4) 551; P9-LE-NEXT: lis 4, 16469 552; P9-LE-NEXT: ori 4, 4, 7864 553; P9-LE-NEXT: stw 4, 16(3) 554; P9-LE-NEXT: stxv 0, 0(3) 555; P9-LE-NEXT: blr 556; 557; P10-LE-LABEL: foo8: 558; P10-LE: # %bb.0: # %entry 559; P10-LE-NEXT: xxspltiw 0, 1079320248 560; P10-LE-NEXT: pli 4, 1079320248 561; P10-LE-NEXT: stw 4, 16(3) 562; P10-LE-NEXT: stxv 0, 0(3) 563; P10-LE-NEXT: blr 564entry: 565 store <4 x float> <float 0x400AA3D700000000, float 0x400AA3D700000000, float 0x400AA3D700000000, float 0x400AA3D700000000>, ptr %a, align 4 566 %arrayidx4 = getelementptr inbounds float, ptr %a, i64 4 567 store float 0x400AA3D700000000, ptr %arrayidx4, align 4 568 ret void 569} 570 571define dso_local void @foo9(ptr nocapture noundef writeonly %a) local_unnamed_addr { 572; P8-BE-LABEL: foo9: 573; P8-BE: # %bb.0: # %entry 574; P8-BE-NEXT: ld 4, L..C8(2) # %const.0 575; P8-BE-NEXT: lxvd2x 0, 0, 4 576; P8-BE-NEXT: lis 4, 16394 577; P8-BE-NEXT: ori 4, 4, 41943 578; P8-BE-NEXT: rldic 4, 4, 32, 1 579; P8-BE-NEXT: stxvd2x 0, 0, 3 580; P8-BE-NEXT: oris 4, 4, 2621 581; P8-BE-NEXT: ori 4, 4, 28836 582; P8-BE-NEXT: std 4, 16(3) 583; P8-BE-NEXT: blr 584; 585; P9-BE-LABEL: foo9: 586; P9-BE: # %bb.0: # %entry 587; P9-BE-NEXT: ld 4, L..C8(2) # %const.0 588; P9-BE-NEXT: lxv 0, 0(4) 589; P9-BE-NEXT: lis 4, 16394 590; P9-BE-NEXT: ori 4, 4, 41943 591; P9-BE-NEXT: rldic 4, 4, 32, 1 592; P9-BE-NEXT: stxv 0, 0(3) 593; P9-BE-NEXT: oris 4, 4, 2621 594; P9-BE-NEXT: ori 4, 4, 28836 595; P9-BE-NEXT: std 4, 16(3) 596; P9-BE-NEXT: blr 597; 598; P10-BE-LABEL: foo9: 599; P10-BE: # %bb.0: # %entry 600; P10-BE-NEXT: xxsplti32dx 0, 0, 1074439127 601; P10-BE-NEXT: pli 4, 1074439127 602; P10-BE-NEXT: pli 5, 171798692 603; P10-BE-NEXT: rldimi 5, 4, 32, 0 604; P10-BE-NEXT: xxsplti32dx 0, 1, 171798692 605; P10-BE-NEXT: std 5, 16(3) 606; P10-BE-NEXT: stxv 0, 0(3) 607; P10-BE-NEXT: blr 608; 609; P8-LE-LABEL: foo9: 610; P8-LE: # %bb.0: # %entry 611; P8-LE-NEXT: addis 4, 2, .LCPI8_0@toc@ha 612; P8-LE-NEXT: addi 4, 4, .LCPI8_0@toc@l 613; P8-LE-NEXT: lxvd2x 0, 0, 4 614; P8-LE-NEXT: lis 4, 16394 615; P8-LE-NEXT: ori 4, 4, 41943 616; P8-LE-NEXT: rldic 4, 4, 32, 1 617; P8-LE-NEXT: stxvd2x 0, 0, 3 618; P8-LE-NEXT: oris 4, 4, 2621 619; P8-LE-NEXT: ori 4, 4, 28836 620; P8-LE-NEXT: std 4, 16(3) 621; P8-LE-NEXT: blr 622; 623; P9-LE-LABEL: foo9: 624; P9-LE: # %bb.0: # %entry 625; P9-LE-NEXT: addis 4, 2, .LCPI8_0@toc@ha 626; P9-LE-NEXT: addi 4, 4, .LCPI8_0@toc@l 627; P9-LE-NEXT: lxv 0, 0(4) 628; P9-LE-NEXT: lis 4, 16394 629; P9-LE-NEXT: ori 4, 4, 41943 630; P9-LE-NEXT: rldic 4, 4, 32, 1 631; P9-LE-NEXT: stxv 0, 0(3) 632; P9-LE-NEXT: oris 4, 4, 2621 633; P9-LE-NEXT: ori 4, 4, 28836 634; P9-LE-NEXT: std 4, 16(3) 635; P9-LE-NEXT: blr 636; 637; P10-LE-LABEL: foo9: 638; P10-LE: # %bb.0: # %entry 639; P10-LE-NEXT: xxsplti32dx 0, 0, 1074439127 640; P10-LE-NEXT: pli 4, 1074439127 641; P10-LE-NEXT: pli 5, 171798692 642; P10-LE-NEXT: rldimi 5, 4, 32, 0 643; P10-LE-NEXT: xxsplti32dx 0, 1, 171798692 644; P10-LE-NEXT: std 5, 16(3) 645; P10-LE-NEXT: stxv 0, 0(3) 646; P10-LE-NEXT: blr 647entry: 648 store <2 x double> <double 3.330000e+00, double 3.330000e+00>, ptr %a, align 8 649 %arrayidx2 = getelementptr inbounds double, ptr %a, i64 2 650 store double 3.330000e+00, ptr %arrayidx2, align 8 651 ret void 652} 653 654define dso_local void @foo10(ptr nocapture noundef writeonly %a) local_unnamed_addr { 655; P8-BE-LABEL: foo10: 656; P8-BE: # %bb.0: # %entry 657; P8-BE-NEXT: ld 4, L..C9(2) # %const.0 658; P8-BE-NEXT: lxvw4x 0, 0, 4 659; P8-BE-NEXT: lis 4, 16469 660; P8-BE-NEXT: ori 4, 4, 7864 661; P8-BE-NEXT: rldimi 4, 4, 32, 0 662; P8-BE-NEXT: stxvw4x 0, 0, 3 663; P8-BE-NEXT: std 4, 16(3) 664; P8-BE-NEXT: blr 665; 666; P9-BE-LABEL: foo10: 667; P9-BE: # %bb.0: # %entry 668; P9-BE-NEXT: ld 4, L..C9(2) # %const.0 669; P9-BE-NEXT: lxv 0, 0(4) 670; P9-BE-NEXT: lis 4, 16469 671; P9-BE-NEXT: ori 4, 4, 7864 672; P9-BE-NEXT: rldimi 4, 4, 32, 0 673; P9-BE-NEXT: stxv 0, 0(3) 674; P9-BE-NEXT: std 4, 16(3) 675; P9-BE-NEXT: blr 676; 677; P10-BE-LABEL: foo10: 678; P10-BE: # %bb.0: # %entry 679; P10-BE-NEXT: pli 4, 1079320248 680; P10-BE-NEXT: xxspltiw 0, 1079320248 681; P10-BE-NEXT: rldimi 4, 4, 32, 0 682; P10-BE-NEXT: stxv 0, 0(3) 683; P10-BE-NEXT: std 4, 16(3) 684; P10-BE-NEXT: blr 685; 686; P8-LE-LABEL: foo10: 687; P8-LE: # %bb.0: # %entry 688; P8-LE-NEXT: addis 4, 2, .LCPI9_0@toc@ha 689; P8-LE-NEXT: addi 4, 4, .LCPI9_0@toc@l 690; P8-LE-NEXT: lxvd2x 0, 0, 4 691; P8-LE-NEXT: lis 4, 16469 692; P8-LE-NEXT: ori 4, 4, 7864 693; P8-LE-NEXT: rldimi 4, 4, 32, 0 694; P8-LE-NEXT: stxvd2x 0, 0, 3 695; P8-LE-NEXT: std 4, 16(3) 696; P8-LE-NEXT: blr 697; 698; P9-LE-LABEL: foo10: 699; P9-LE: # %bb.0: # %entry 700; P9-LE-NEXT: addis 4, 2, .LCPI9_0@toc@ha 701; P9-LE-NEXT: addi 4, 4, .LCPI9_0@toc@l 702; P9-LE-NEXT: lxv 0, 0(4) 703; P9-LE-NEXT: lis 4, 16469 704; P9-LE-NEXT: ori 4, 4, 7864 705; P9-LE-NEXT: rldimi 4, 4, 32, 0 706; P9-LE-NEXT: stxv 0, 0(3) 707; P9-LE-NEXT: std 4, 16(3) 708; P9-LE-NEXT: blr 709; 710; P10-LE-LABEL: foo10: 711; P10-LE: # %bb.0: # %entry 712; P10-LE-NEXT: pli 4, 1079320248 713; P10-LE-NEXT: xxspltiw 0, 1079320248 714; P10-LE-NEXT: rldimi 4, 4, 32, 0 715; P10-LE-NEXT: stxv 0, 0(3) 716; P10-LE-NEXT: std 4, 16(3) 717; P10-LE-NEXT: blr 718entry: 719 store <4 x float> <float 0x400AA3D700000000, float 0x400AA3D700000000, float 0x400AA3D700000000, float 0x400AA3D700000000>, ptr %a, align 4 720 %arrayidx4 = getelementptr inbounds float, ptr %a, i64 4 721 store float 0x400AA3D700000000, ptr %arrayidx4, align 4 722 %arrayidx5 = getelementptr inbounds float, ptr %a, i64 5 723 store float 0x400AA3D700000000, ptr %arrayidx5, align 4 724 ret void 725} 726