1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ 3; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 4; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P10 5; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ 6; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 7; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P10 8; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ 9; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 10; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P9 11; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ 12; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 13; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P9 14; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ 15; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 16; RUN: < %s | FileCheck %s --check-prefixes=CHECK-P8-LE 17; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ 18; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 19; RUN: < %s | FileCheck %s --check-prefixes=CHECK-P8-BE 20 21; Function Attrs: norecurse nounwind readonly uwtable willreturn 22define dso_local <16 x i8> @ld_0_vector(i64 %ptr) { 23; CHECK-LABEL: ld_0_vector: 24; CHECK: # %bb.0: # %entry 25; CHECK-NEXT: lxv v2, 0(r3) 26; CHECK-NEXT: blr 27; 28; CHECK-P8-LE-LABEL: ld_0_vector: 29; CHECK-P8-LE: # %bb.0: # %entry 30; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 31; CHECK-P8-LE-NEXT: xxswapd v2, vs0 32; CHECK-P8-LE-NEXT: blr 33; 34; CHECK-P8-BE-LABEL: ld_0_vector: 35; CHECK-P8-BE: # %bb.0: # %entry 36; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 37; CHECK-P8-BE-NEXT: blr 38entry: 39 %0 = inttoptr i64 %ptr to ptr 40 %1 = load <16 x i8>, ptr %0, align 16 41 ret <16 x i8> %1 42} 43 44; Function Attrs: norecurse nounwind readonly uwtable willreturn 45define dso_local <16 x i8> @ld_unalign16_vector(ptr nocapture readonly %ptr) { 46; CHECK-P10-LABEL: ld_unalign16_vector: 47; CHECK-P10: # %bb.0: # %entry 48; CHECK-P10-NEXT: plxv v2, 1(r3), 0 49; CHECK-P10-NEXT: blr 50; 51; CHECK-P9-LABEL: ld_unalign16_vector: 52; CHECK-P9: # %bb.0: # %entry 53; CHECK-P9-NEXT: li r4, 1 54; CHECK-P9-NEXT: lxvx v2, r3, r4 55; CHECK-P9-NEXT: blr 56; 57; CHECK-P8-LE-LABEL: ld_unalign16_vector: 58; CHECK-P8-LE: # %bb.0: # %entry 59; CHECK-P8-LE-NEXT: addi r3, r3, 1 60; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 61; CHECK-P8-LE-NEXT: xxswapd v2, vs0 62; CHECK-P8-LE-NEXT: blr 63; 64; CHECK-P8-BE-LABEL: ld_unalign16_vector: 65; CHECK-P8-BE: # %bb.0: # %entry 66; CHECK-P8-BE-NEXT: addi r3, r3, 1 67; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 68; CHECK-P8-BE-NEXT: blr 69entry: 70 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1 71 %0 = load <16 x i8>, ptr %add.ptr, align 16 72 ret <16 x i8> %0 73} 74 75; Function Attrs: norecurse nounwind readonly uwtable willreturn 76define dso_local <16 x i8> @ld_align16_vector(ptr nocapture readonly %ptr) { 77; CHECK-P10-LABEL: ld_align16_vector: 78; CHECK-P10: # %bb.0: # %entry 79; CHECK-P10-NEXT: plxv v2, 8(r3), 0 80; CHECK-P10-NEXT: blr 81; 82; CHECK-P9-LABEL: ld_align16_vector: 83; CHECK-P9: # %bb.0: # %entry 84; CHECK-P9-NEXT: li r4, 8 85; CHECK-P9-NEXT: lxvx v2, r3, r4 86; CHECK-P9-NEXT: blr 87; 88; CHECK-P8-LE-LABEL: ld_align16_vector: 89; CHECK-P8-LE: # %bb.0: # %entry 90; CHECK-P8-LE-NEXT: addi r3, r3, 8 91; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 92; CHECK-P8-LE-NEXT: xxswapd v2, vs0 93; CHECK-P8-LE-NEXT: blr 94; 95; CHECK-P8-BE-LABEL: ld_align16_vector: 96; CHECK-P8-BE: # %bb.0: # %entry 97; CHECK-P8-BE-NEXT: addi r3, r3, 8 98; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 99; CHECK-P8-BE-NEXT: blr 100entry: 101 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8 102 %0 = load <16 x i8>, ptr %add.ptr, align 16 103 ret <16 x i8> %0 104} 105 106; Function Attrs: norecurse nounwind readonly uwtable willreturn 107define dso_local <16 x i8> @ld_unalign32_vector(ptr nocapture readonly %ptr) { 108; CHECK-P10-LABEL: ld_unalign32_vector: 109; CHECK-P10: # %bb.0: # %entry 110; CHECK-P10-NEXT: plxv v2, 99999(r3), 0 111; CHECK-P10-NEXT: blr 112; 113; CHECK-P9-LABEL: ld_unalign32_vector: 114; CHECK-P9: # %bb.0: # %entry 115; CHECK-P9-NEXT: lis r4, 1 116; CHECK-P9-NEXT: ori r4, r4, 34463 117; CHECK-P9-NEXT: lxvx v2, r3, r4 118; CHECK-P9-NEXT: blr 119; 120; CHECK-P8-LE-LABEL: ld_unalign32_vector: 121; CHECK-P8-LE: # %bb.0: # %entry 122; CHECK-P8-LE-NEXT: lis r4, 1 123; CHECK-P8-LE-NEXT: ori r4, r4, 34463 124; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 125; CHECK-P8-LE-NEXT: xxswapd v2, vs0 126; CHECK-P8-LE-NEXT: blr 127; 128; CHECK-P8-BE-LABEL: ld_unalign32_vector: 129; CHECK-P8-BE: # %bb.0: # %entry 130; CHECK-P8-BE-NEXT: lis r4, 1 131; CHECK-P8-BE-NEXT: ori r4, r4, 34463 132; CHECK-P8-BE-NEXT: lxvw4x v2, r3, r4 133; CHECK-P8-BE-NEXT: blr 134entry: 135 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999 136 %0 = load <16 x i8>, ptr %add.ptr, align 16 137 ret <16 x i8> %0 138} 139 140; Function Attrs: norecurse nounwind readonly uwtable willreturn 141define dso_local <16 x i8> @ld_align32_vector(ptr nocapture readonly %ptr) { 142; CHECK-P10-LABEL: ld_align32_vector: 143; CHECK-P10: # %bb.0: # %entry 144; CHECK-P10-NEXT: plxv v2, 99999000(r3), 0 145; CHECK-P10-NEXT: blr 146; 147; CHECK-P9-LABEL: ld_align32_vector: 148; CHECK-P9: # %bb.0: # %entry 149; CHECK-P9-NEXT: lis r4, 1525 150; CHECK-P9-NEXT: ori r4, r4, 56600 151; CHECK-P9-NEXT: lxvx v2, r3, r4 152; CHECK-P9-NEXT: blr 153; 154; CHECK-P8-LE-LABEL: ld_align32_vector: 155; CHECK-P8-LE: # %bb.0: # %entry 156; CHECK-P8-LE-NEXT: lis r4, 1525 157; CHECK-P8-LE-NEXT: ori r4, r4, 56600 158; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 159; CHECK-P8-LE-NEXT: xxswapd v2, vs0 160; CHECK-P8-LE-NEXT: blr 161; 162; CHECK-P8-BE-LABEL: ld_align32_vector: 163; CHECK-P8-BE: # %bb.0: # %entry 164; CHECK-P8-BE-NEXT: lis r4, 1525 165; CHECK-P8-BE-NEXT: ori r4, r4, 56600 166; CHECK-P8-BE-NEXT: lxvw4x v2, r3, r4 167; CHECK-P8-BE-NEXT: blr 168entry: 169 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000 170 %0 = load <16 x i8>, ptr %add.ptr, align 16 171 ret <16 x i8> %0 172} 173 174; Function Attrs: norecurse nounwind readonly uwtable willreturn 175define dso_local <16 x i8> @ld_unalign64_vector(ptr nocapture readonly %ptr) { 176; CHECK-P10-LABEL: ld_unalign64_vector: 177; CHECK-P10: # %bb.0: # %entry 178; CHECK-P10-NEXT: pli r4, 232 179; CHECK-P10-NEXT: pli r5, 3567587329 180; CHECK-P10-NEXT: rldimi r5, r4, 32, 0 181; CHECK-P10-NEXT: lxvx v2, r3, r5 182; CHECK-P10-NEXT: blr 183; 184; CHECK-P9-LABEL: ld_unalign64_vector: 185; CHECK-P9: # %bb.0: # %entry 186; CHECK-P9-NEXT: li r4, 29 187; CHECK-P9-NEXT: rldic r4, r4, 35, 24 188; CHECK-P9-NEXT: oris r4, r4, 54437 189; CHECK-P9-NEXT: ori r4, r4, 4097 190; CHECK-P9-NEXT: lxvx v2, r3, r4 191; CHECK-P9-NEXT: blr 192; 193; CHECK-P8-LE-LABEL: ld_unalign64_vector: 194; CHECK-P8-LE: # %bb.0: # %entry 195; CHECK-P8-LE-NEXT: li r4, 29 196; CHECK-P8-LE-NEXT: rldic r4, r4, 35, 24 197; CHECK-P8-LE-NEXT: oris r4, r4, 54437 198; CHECK-P8-LE-NEXT: ori r4, r4, 4097 199; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 200; CHECK-P8-LE-NEXT: xxswapd v2, vs0 201; CHECK-P8-LE-NEXT: blr 202; 203; CHECK-P8-BE-LABEL: ld_unalign64_vector: 204; CHECK-P8-BE: # %bb.0: # %entry 205; CHECK-P8-BE-NEXT: li r4, 29 206; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 24 207; CHECK-P8-BE-NEXT: oris r4, r4, 54437 208; CHECK-P8-BE-NEXT: ori r4, r4, 4097 209; CHECK-P8-BE-NEXT: lxvw4x v2, r3, r4 210; CHECK-P8-BE-NEXT: blr 211entry: 212 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000001 213 %0 = load <16 x i8>, ptr %add.ptr, align 16 214 ret <16 x i8> %0 215} 216 217; Function Attrs: norecurse nounwind readonly uwtable willreturn 218define dso_local <16 x i8> @ld_align64_vector(ptr nocapture readonly %ptr) { 219; CHECK-P10-LABEL: ld_align64_vector: 220; CHECK-P10: # %bb.0: # %entry 221; CHECK-P10-NEXT: pli r4, 244140625 222; CHECK-P10-NEXT: rldic r4, r4, 12, 24 223; CHECK-P10-NEXT: lxvx v2, r3, r4 224; CHECK-P10-NEXT: blr 225; 226; CHECK-P9-LABEL: ld_align64_vector: 227; CHECK-P9: # %bb.0: # %entry 228; CHECK-P9-NEXT: lis r4, 3725 229; CHECK-P9-NEXT: ori r4, r4, 19025 230; CHECK-P9-NEXT: rldic r4, r4, 12, 24 231; CHECK-P9-NEXT: lxvx v2, r3, r4 232; CHECK-P9-NEXT: blr 233; 234; CHECK-P8-LE-LABEL: ld_align64_vector: 235; CHECK-P8-LE: # %bb.0: # %entry 236; CHECK-P8-LE-NEXT: lis r4, 3725 237; CHECK-P8-LE-NEXT: ori r4, r4, 19025 238; CHECK-P8-LE-NEXT: rldic r4, r4, 12, 24 239; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 240; CHECK-P8-LE-NEXT: xxswapd v2, vs0 241; CHECK-P8-LE-NEXT: blr 242; 243; CHECK-P8-BE-LABEL: ld_align64_vector: 244; CHECK-P8-BE: # %bb.0: # %entry 245; CHECK-P8-BE-NEXT: lis r4, 3725 246; CHECK-P8-BE-NEXT: ori r4, r4, 19025 247; CHECK-P8-BE-NEXT: rldic r4, r4, 12, 24 248; CHECK-P8-BE-NEXT: lxvw4x v2, r3, r4 249; CHECK-P8-BE-NEXT: blr 250entry: 251 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000 252 %0 = load <16 x i8>, ptr %add.ptr, align 16 253 ret <16 x i8> %0 254} 255 256; Function Attrs: norecurse nounwind readonly uwtable willreturn 257define dso_local <16 x i8> @ld_reg_vector(ptr nocapture readonly %ptr, i64 %off) { 258; CHECK-LABEL: ld_reg_vector: 259; CHECK: # %bb.0: # %entry 260; CHECK-NEXT: lxvx v2, r3, r4 261; CHECK-NEXT: blr 262; 263; CHECK-P8-LE-LABEL: ld_reg_vector: 264; CHECK-P8-LE: # %bb.0: # %entry 265; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 266; CHECK-P8-LE-NEXT: xxswapd v2, vs0 267; CHECK-P8-LE-NEXT: blr 268; 269; CHECK-P8-BE-LABEL: ld_reg_vector: 270; CHECK-P8-BE: # %bb.0: # %entry 271; CHECK-P8-BE-NEXT: lxvw4x v2, r3, r4 272; CHECK-P8-BE-NEXT: blr 273entry: 274 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off 275 %0 = load <16 x i8>, ptr %add.ptr, align 16 276 ret <16 x i8> %0 277} 278 279; Function Attrs: norecurse nounwind readonly uwtable willreturn 280define dso_local <16 x i8> @ld_or_vector(i64 %ptr, i8 zeroext %off) { 281; CHECK-LABEL: ld_or_vector: 282; CHECK: # %bb.0: # %entry 283; CHECK-NEXT: or r3, r4, r3 284; CHECK-NEXT: lxv v2, 0(r3) 285; CHECK-NEXT: blr 286; 287; CHECK-P8-LE-LABEL: ld_or_vector: 288; CHECK-P8-LE: # %bb.0: # %entry 289; CHECK-P8-LE-NEXT: or r3, r4, r3 290; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 291; CHECK-P8-LE-NEXT: xxswapd v2, vs0 292; CHECK-P8-LE-NEXT: blr 293; 294; CHECK-P8-BE-LABEL: ld_or_vector: 295; CHECK-P8-BE: # %bb.0: # %entry 296; CHECK-P8-BE-NEXT: or r3, r4, r3 297; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 298; CHECK-P8-BE-NEXT: blr 299entry: 300 %conv = zext i8 %off to i64 301 %or = or i64 %conv, %ptr 302 %0 = inttoptr i64 %or to ptr 303 %1 = load <16 x i8>, ptr %0, align 16 304 ret <16 x i8> %1 305} 306 307; Function Attrs: norecurse nounwind readonly uwtable willreturn 308define dso_local <16 x i8> @ld_or2_vector(i64 %ptr, i8 zeroext %off) { 309; CHECK-LABEL: ld_or2_vector: 310; CHECK: # %bb.0: # %entry 311; CHECK-NEXT: rldicr r3, r3, 0, 51 312; CHECK-NEXT: lxvx v2, r3, r4 313; CHECK-NEXT: blr 314; 315; CHECK-P8-LE-LABEL: ld_or2_vector: 316; CHECK-P8-LE: # %bb.0: # %entry 317; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 51 318; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 319; CHECK-P8-LE-NEXT: xxswapd v2, vs0 320; CHECK-P8-LE-NEXT: blr 321; 322; CHECK-P8-BE-LABEL: ld_or2_vector: 323; CHECK-P8-BE: # %bb.0: # %entry 324; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 51 325; CHECK-P8-BE-NEXT: lxvw4x v2, r3, r4 326; CHECK-P8-BE-NEXT: blr 327entry: 328 %and = and i64 %ptr, -4096 329 %conv = zext i8 %off to i64 330 %or = or i64 %and, %conv 331 %0 = inttoptr i64 %or to ptr 332 %1 = load <16 x i8>, ptr %0, align 16 333 ret <16 x i8> %1 334} 335 336; Function Attrs: norecurse nounwind readonly uwtable willreturn 337define dso_local <16 x i8> @ld_not_disjoint16_vector(i64 %ptr) { 338; CHECK-LABEL: ld_not_disjoint16_vector: 339; CHECK: # %bb.0: # %entry 340; CHECK-NEXT: ori r3, r3, 6 341; CHECK-NEXT: lxv v2, 0(r3) 342; CHECK-NEXT: blr 343; 344; CHECK-P8-LE-LABEL: ld_not_disjoint16_vector: 345; CHECK-P8-LE: # %bb.0: # %entry 346; CHECK-P8-LE-NEXT: ori r3, r3, 6 347; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 348; CHECK-P8-LE-NEXT: xxswapd v2, vs0 349; CHECK-P8-LE-NEXT: blr 350; 351; CHECK-P8-BE-LABEL: ld_not_disjoint16_vector: 352; CHECK-P8-BE: # %bb.0: # %entry 353; CHECK-P8-BE-NEXT: ori r3, r3, 6 354; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 355; CHECK-P8-BE-NEXT: blr 356entry: 357 %or = or i64 %ptr, 6 358 %0 = inttoptr i64 %or to ptr 359 %1 = load <16 x i8>, ptr %0, align 16 360 ret <16 x i8> %1 361} 362 363; Function Attrs: norecurse nounwind readonly uwtable willreturn 364define dso_local <16 x i8> @ld_disjoint_unalign16_vector(i64 %ptr) { 365; CHECK-P10-LABEL: ld_disjoint_unalign16_vector: 366; CHECK-P10: # %bb.0: # %entry 367; CHECK-P10-NEXT: rldicr r3, r3, 0, 51 368; CHECK-P10-NEXT: plxv v2, 6(r3), 0 369; CHECK-P10-NEXT: blr 370; 371; CHECK-P9-LABEL: ld_disjoint_unalign16_vector: 372; CHECK-P9: # %bb.0: # %entry 373; CHECK-P9-NEXT: rldicr r3, r3, 0, 51 374; CHECK-P9-NEXT: li r4, 6 375; CHECK-P9-NEXT: lxvx v2, r3, r4 376; CHECK-P9-NEXT: blr 377; 378; CHECK-P8-LE-LABEL: ld_disjoint_unalign16_vector: 379; CHECK-P8-LE: # %bb.0: # %entry 380; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 51 381; CHECK-P8-LE-NEXT: ori r3, r3, 6 382; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 383; CHECK-P8-LE-NEXT: xxswapd v2, vs0 384; CHECK-P8-LE-NEXT: blr 385; 386; CHECK-P8-BE-LABEL: ld_disjoint_unalign16_vector: 387; CHECK-P8-BE: # %bb.0: # %entry 388; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 51 389; CHECK-P8-BE-NEXT: ori r3, r3, 6 390; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 391; CHECK-P8-BE-NEXT: blr 392entry: 393 %and = and i64 %ptr, -4096 394 %or = or i64 %and, 6 395 %0 = inttoptr i64 %or to ptr 396 %1 = load <16 x i8>, ptr %0, align 16 397 ret <16 x i8> %1 398} 399 400; Function Attrs: norecurse nounwind readonly uwtable willreturn 401define dso_local <16 x i8> @ld_disjoint_align16_vector(i64 %ptr) { 402; CHECK-P10-LABEL: ld_disjoint_align16_vector: 403; CHECK-P10: # %bb.0: # %entry 404; CHECK-P10-NEXT: rldicr r3, r3, 0, 51 405; CHECK-P10-NEXT: plxv v2, 24(r3), 0 406; CHECK-P10-NEXT: blr 407; 408; CHECK-P9-LABEL: ld_disjoint_align16_vector: 409; CHECK-P9: # %bb.0: # %entry 410; CHECK-P9-NEXT: rldicr r3, r3, 0, 51 411; CHECK-P9-NEXT: li r4, 24 412; CHECK-P9-NEXT: lxvx v2, r3, r4 413; CHECK-P9-NEXT: blr 414; 415; CHECK-P8-LE-LABEL: ld_disjoint_align16_vector: 416; CHECK-P8-LE: # %bb.0: # %entry 417; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 51 418; CHECK-P8-LE-NEXT: ori r3, r3, 24 419; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 420; CHECK-P8-LE-NEXT: xxswapd v2, vs0 421; CHECK-P8-LE-NEXT: blr 422; 423; CHECK-P8-BE-LABEL: ld_disjoint_align16_vector: 424; CHECK-P8-BE: # %bb.0: # %entry 425; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 51 426; CHECK-P8-BE-NEXT: ori r3, r3, 24 427; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 428; CHECK-P8-BE-NEXT: blr 429entry: 430 %and = and i64 %ptr, -4096 431 %or = or i64 %and, 24 432 %0 = inttoptr i64 %or to ptr 433 %1 = load <16 x i8>, ptr %0, align 16 434 ret <16 x i8> %1 435} 436 437; Function Attrs: norecurse nounwind readonly uwtable willreturn 438define dso_local <16 x i8> @ld_not_disjoint32_vector(i64 %ptr) { 439; CHECK-LABEL: ld_not_disjoint32_vector: 440; CHECK: # %bb.0: # %entry 441; CHECK-NEXT: ori r3, r3, 34463 442; CHECK-NEXT: oris r3, r3, 1 443; CHECK-NEXT: lxv v2, 0(r3) 444; CHECK-NEXT: blr 445; 446; CHECK-P8-LE-LABEL: ld_not_disjoint32_vector: 447; CHECK-P8-LE: # %bb.0: # %entry 448; CHECK-P8-LE-NEXT: ori r3, r3, 34463 449; CHECK-P8-LE-NEXT: oris r3, r3, 1 450; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 451; CHECK-P8-LE-NEXT: xxswapd v2, vs0 452; CHECK-P8-LE-NEXT: blr 453; 454; CHECK-P8-BE-LABEL: ld_not_disjoint32_vector: 455; CHECK-P8-BE: # %bb.0: # %entry 456; CHECK-P8-BE-NEXT: ori r3, r3, 34463 457; CHECK-P8-BE-NEXT: oris r3, r3, 1 458; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 459; CHECK-P8-BE-NEXT: blr 460entry: 461 %or = or i64 %ptr, 99999 462 %0 = inttoptr i64 %or to ptr 463 %1 = load <16 x i8>, ptr %0, align 16 464 ret <16 x i8> %1 465} 466 467; Function Attrs: norecurse nounwind readonly uwtable willreturn 468define dso_local <16 x i8> @ld_disjoint_unalign32_vector(i64 %ptr) { 469; CHECK-P10-LABEL: ld_disjoint_unalign32_vector: 470; CHECK-P10: # %bb.0: # %entry 471; CHECK-P10-NEXT: rldicr r3, r3, 0, 43 472; CHECK-P10-NEXT: plxv v2, 99999(r3), 0 473; CHECK-P10-NEXT: blr 474; 475; CHECK-P9-LABEL: ld_disjoint_unalign32_vector: 476; CHECK-P9: # %bb.0: # %entry 477; CHECK-P9-NEXT: lis r4, 1 478; CHECK-P9-NEXT: rldicr r3, r3, 0, 43 479; CHECK-P9-NEXT: ori r4, r4, 34463 480; CHECK-P9-NEXT: lxvx v2, r3, r4 481; CHECK-P9-NEXT: blr 482; 483; CHECK-P8-LE-LABEL: ld_disjoint_unalign32_vector: 484; CHECK-P8-LE: # %bb.0: # %entry 485; CHECK-P8-LE-NEXT: lis r4, 1 486; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 43 487; CHECK-P8-LE-NEXT: ori r4, r4, 34463 488; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 489; CHECK-P8-LE-NEXT: xxswapd v2, vs0 490; CHECK-P8-LE-NEXT: blr 491; 492; CHECK-P8-BE-LABEL: ld_disjoint_unalign32_vector: 493; CHECK-P8-BE: # %bb.0: # %entry 494; CHECK-P8-BE-NEXT: lis r4, 1 495; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 43 496; CHECK-P8-BE-NEXT: ori r4, r4, 34463 497; CHECK-P8-BE-NEXT: lxvw4x v2, r3, r4 498; CHECK-P8-BE-NEXT: blr 499entry: 500 %and = and i64 %ptr, -1048576 501 %or = or i64 %and, 99999 502 %0 = inttoptr i64 %or to ptr 503 %1 = load <16 x i8>, ptr %0, align 16 504 ret <16 x i8> %1 505} 506 507; Function Attrs: norecurse nounwind readonly uwtable willreturn 508define dso_local <16 x i8> @ld_disjoint_align32_vector(i64 %ptr) { 509; CHECK-P10-LABEL: ld_disjoint_align32_vector: 510; CHECK-P10: # %bb.0: # %entry 511; CHECK-P10-NEXT: lis r4, -15264 512; CHECK-P10-NEXT: and r3, r3, r4 513; CHECK-P10-NEXT: plxv v2, 999990000(r3), 0 514; CHECK-P10-NEXT: blr 515; 516; CHECK-P9-LABEL: ld_disjoint_align32_vector: 517; CHECK-P9: # %bb.0: # %entry 518; CHECK-P9-NEXT: lis r4, -15264 519; CHECK-P9-NEXT: and r3, r3, r4 520; CHECK-P9-NEXT: lis r4, 15258 521; CHECK-P9-NEXT: ori r4, r4, 41712 522; CHECK-P9-NEXT: lxvx v2, r3, r4 523; CHECK-P9-NEXT: blr 524; 525; CHECK-P8-LE-LABEL: ld_disjoint_align32_vector: 526; CHECK-P8-LE: # %bb.0: # %entry 527; CHECK-P8-LE-NEXT: lis r4, -15264 528; CHECK-P8-LE-NEXT: and r3, r3, r4 529; CHECK-P8-LE-NEXT: lis r4, 15258 530; CHECK-P8-LE-NEXT: ori r4, r4, 41712 531; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 532; CHECK-P8-LE-NEXT: xxswapd v2, vs0 533; CHECK-P8-LE-NEXT: blr 534; 535; CHECK-P8-BE-LABEL: ld_disjoint_align32_vector: 536; CHECK-P8-BE: # %bb.0: # %entry 537; CHECK-P8-BE-NEXT: lis r4, -15264 538; CHECK-P8-BE-NEXT: and r3, r3, r4 539; CHECK-P8-BE-NEXT: lis r4, 15258 540; CHECK-P8-BE-NEXT: ori r4, r4, 41712 541; CHECK-P8-BE-NEXT: lxvw4x v2, r3, r4 542; CHECK-P8-BE-NEXT: blr 543entry: 544 %and = and i64 %ptr, -1000341504 545 %or = or i64 %and, 999990000 546 %0 = inttoptr i64 %or to ptr 547 %1 = load <16 x i8>, ptr %0, align 16 548 ret <16 x i8> %1 549} 550 551; Function Attrs: norecurse nounwind readonly uwtable willreturn 552define dso_local <16 x i8> @ld_not_disjoint64_vector(i64 %ptr) { 553; CHECK-P10-LABEL: ld_not_disjoint64_vector: 554; CHECK-P10: # %bb.0: # %entry 555; CHECK-P10-NEXT: pli r4, 232 556; CHECK-P10-NEXT: pli r5, 3567587329 557; CHECK-P10-NEXT: rldimi r5, r4, 32, 0 558; CHECK-P10-NEXT: or r3, r3, r5 559; CHECK-P10-NEXT: lxv v2, 0(r3) 560; CHECK-P10-NEXT: blr 561; 562; CHECK-P9-LABEL: ld_not_disjoint64_vector: 563; CHECK-P9: # %bb.0: # %entry 564; CHECK-P9-NEXT: li r4, 29 565; CHECK-P9-NEXT: rldic r4, r4, 35, 24 566; CHECK-P9-NEXT: oris r4, r4, 54437 567; CHECK-P9-NEXT: ori r4, r4, 4097 568; CHECK-P9-NEXT: or r3, r3, r4 569; CHECK-P9-NEXT: lxv v2, 0(r3) 570; CHECK-P9-NEXT: blr 571; 572; CHECK-P8-LE-LABEL: ld_not_disjoint64_vector: 573; CHECK-P8-LE: # %bb.0: # %entry 574; CHECK-P8-LE-NEXT: li r4, 29 575; CHECK-P8-LE-NEXT: rldic r4, r4, 35, 24 576; CHECK-P8-LE-NEXT: oris r4, r4, 54437 577; CHECK-P8-LE-NEXT: ori r4, r4, 4097 578; CHECK-P8-LE-NEXT: or r3, r3, r4 579; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 580; CHECK-P8-LE-NEXT: xxswapd v2, vs0 581; CHECK-P8-LE-NEXT: blr 582; 583; CHECK-P8-BE-LABEL: ld_not_disjoint64_vector: 584; CHECK-P8-BE: # %bb.0: # %entry 585; CHECK-P8-BE-NEXT: li r4, 29 586; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 24 587; CHECK-P8-BE-NEXT: oris r4, r4, 54437 588; CHECK-P8-BE-NEXT: ori r4, r4, 4097 589; CHECK-P8-BE-NEXT: or r3, r3, r4 590; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 591; CHECK-P8-BE-NEXT: blr 592entry: 593 %or = or i64 %ptr, 1000000000001 594 %0 = inttoptr i64 %or to ptr 595 %1 = load <16 x i8>, ptr %0, align 16 596 ret <16 x i8> %1 597} 598 599; Function Attrs: norecurse nounwind readonly uwtable willreturn 600define dso_local <16 x i8> @ld_disjoint_unalign64_vector(i64 %ptr) { 601; CHECK-P10-LABEL: ld_disjoint_unalign64_vector: 602; CHECK-P10: # %bb.0: # %entry 603; CHECK-P10-NEXT: pli r4, 232 604; CHECK-P10-NEXT: pli r5, 3567587329 605; CHECK-P10-NEXT: rldicr r3, r3, 0, 23 606; CHECK-P10-NEXT: rldimi r5, r4, 32, 0 607; CHECK-P10-NEXT: lxvx v2, r3, r5 608; CHECK-P10-NEXT: blr 609; 610; CHECK-P9-LABEL: ld_disjoint_unalign64_vector: 611; CHECK-P9: # %bb.0: # %entry 612; CHECK-P9-NEXT: li r4, 29 613; CHECK-P9-NEXT: rldicr r3, r3, 0, 23 614; CHECK-P9-NEXT: rldic r4, r4, 35, 24 615; CHECK-P9-NEXT: oris r4, r4, 54437 616; CHECK-P9-NEXT: ori r4, r4, 4097 617; CHECK-P9-NEXT: lxvx v2, r3, r4 618; CHECK-P9-NEXT: blr 619; 620; CHECK-P8-LE-LABEL: ld_disjoint_unalign64_vector: 621; CHECK-P8-LE: # %bb.0: # %entry 622; CHECK-P8-LE-NEXT: li r4, 29 623; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 23 624; CHECK-P8-LE-NEXT: rldic r4, r4, 35, 24 625; CHECK-P8-LE-NEXT: oris r4, r4, 54437 626; CHECK-P8-LE-NEXT: ori r4, r4, 4097 627; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 628; CHECK-P8-LE-NEXT: xxswapd v2, vs0 629; CHECK-P8-LE-NEXT: blr 630; 631; CHECK-P8-BE-LABEL: ld_disjoint_unalign64_vector: 632; CHECK-P8-BE: # %bb.0: # %entry 633; CHECK-P8-BE-NEXT: li r4, 29 634; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 23 635; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 24 636; CHECK-P8-BE-NEXT: oris r4, r4, 54437 637; CHECK-P8-BE-NEXT: ori r4, r4, 4097 638; CHECK-P8-BE-NEXT: lxvw4x v2, r3, r4 639; CHECK-P8-BE-NEXT: blr 640entry: 641 %and = and i64 %ptr, -1099511627776 642 %or = or i64 %and, 1000000000001 643 %0 = inttoptr i64 %or to ptr 644 %1 = load <16 x i8>, ptr %0, align 16 645 ret <16 x i8> %1 646} 647 648; Function Attrs: norecurse nounwind readonly uwtable willreturn 649define dso_local <16 x i8> @ld_disjoint_align64_vector(i64 %ptr) { 650; CHECK-P10-LABEL: ld_disjoint_align64_vector: 651; CHECK-P10: # %bb.0: # %entry 652; CHECK-P10-NEXT: pli r4, 244140625 653; CHECK-P10-NEXT: rldicr r3, r3, 0, 23 654; CHECK-P10-NEXT: rldic r4, r4, 12, 24 655; CHECK-P10-NEXT: lxvx v2, r3, r4 656; CHECK-P10-NEXT: blr 657; 658; CHECK-P9-LABEL: ld_disjoint_align64_vector: 659; CHECK-P9: # %bb.0: # %entry 660; CHECK-P9-NEXT: lis r4, 3725 661; CHECK-P9-NEXT: rldicr r3, r3, 0, 23 662; CHECK-P9-NEXT: ori r4, r4, 19025 663; CHECK-P9-NEXT: rldic r4, r4, 12, 24 664; CHECK-P9-NEXT: lxvx v2, r3, r4 665; CHECK-P9-NEXT: blr 666; 667; CHECK-P8-LE-LABEL: ld_disjoint_align64_vector: 668; CHECK-P8-LE: # %bb.0: # %entry 669; CHECK-P8-LE-NEXT: lis r4, 3725 670; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 23 671; CHECK-P8-LE-NEXT: ori r4, r4, 19025 672; CHECK-P8-LE-NEXT: rldic r4, r4, 12, 24 673; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 674; CHECK-P8-LE-NEXT: xxswapd v2, vs0 675; CHECK-P8-LE-NEXT: blr 676; 677; CHECK-P8-BE-LABEL: ld_disjoint_align64_vector: 678; CHECK-P8-BE: # %bb.0: # %entry 679; CHECK-P8-BE-NEXT: lis r4, 3725 680; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 23 681; CHECK-P8-BE-NEXT: ori r4, r4, 19025 682; CHECK-P8-BE-NEXT: rldic r4, r4, 12, 24 683; CHECK-P8-BE-NEXT: lxvw4x v2, r3, r4 684; CHECK-P8-BE-NEXT: blr 685entry: 686 %and = and i64 %ptr, -1099511627776 687 %or = or i64 %and, 1000000000000 688 %0 = inttoptr i64 %or to ptr 689 %1 = load <16 x i8>, ptr %0, align 4096 690 ret <16 x i8> %1 691} 692 693; Function Attrs: norecurse nounwind readonly uwtable willreturn 694define dso_local <16 x i8> @ld_cst_unalign16_vector() { 695; CHECK-LABEL: ld_cst_unalign16_vector: 696; CHECK: # %bb.0: # %entry 697; CHECK-NEXT: li r3, 255 698; CHECK-NEXT: lxv v2, 0(r3) 699; CHECK-NEXT: blr 700; 701; CHECK-P8-LE-LABEL: ld_cst_unalign16_vector: 702; CHECK-P8-LE: # %bb.0: # %entry 703; CHECK-P8-LE-NEXT: li r3, 255 704; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 705; CHECK-P8-LE-NEXT: xxswapd v2, vs0 706; CHECK-P8-LE-NEXT: blr 707; 708; CHECK-P8-BE-LABEL: ld_cst_unalign16_vector: 709; CHECK-P8-BE: # %bb.0: # %entry 710; CHECK-P8-BE-NEXT: li r3, 255 711; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 712; CHECK-P8-BE-NEXT: blr 713entry: 714 %0 = load <16 x i8>, ptr inttoptr (i64 255 to ptr), align 16 715 ret <16 x i8> %0 716} 717 718; Function Attrs: norecurse nounwind readonly uwtable willreturn 719define dso_local <16 x i8> @ld_cst_align16_vector() { 720; CHECK-LABEL: ld_cst_align16_vector: 721; CHECK: # %bb.0: # %entry 722; CHECK-NEXT: lxv v2, 4080(0) 723; CHECK-NEXT: blr 724; 725; CHECK-P8-LE-LABEL: ld_cst_align16_vector: 726; CHECK-P8-LE: # %bb.0: # %entry 727; CHECK-P8-LE-NEXT: li r3, 4080 728; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 729; CHECK-P8-LE-NEXT: xxswapd v2, vs0 730; CHECK-P8-LE-NEXT: blr 731; 732; CHECK-P8-BE-LABEL: ld_cst_align16_vector: 733; CHECK-P8-BE: # %bb.0: # %entry 734; CHECK-P8-BE-NEXT: li r3, 4080 735; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 736; CHECK-P8-BE-NEXT: blr 737entry: 738 %0 = load <16 x i8>, ptr inttoptr (i64 4080 to ptr), align 16 739 ret <16 x i8> %0 740} 741 742; Function Attrs: norecurse nounwind readonly uwtable willreturn 743define dso_local <16 x i8> @ld_cst_unalign32_vector() { 744; CHECK-P10-LABEL: ld_cst_unalign32_vector: 745; CHECK-P10: # %bb.0: # %entry 746; CHECK-P10-NEXT: pli r3, 99999 747; CHECK-P10-NEXT: lxv v2, 0(r3) 748; CHECK-P10-NEXT: blr 749; 750; CHECK-P9-LABEL: ld_cst_unalign32_vector: 751; CHECK-P9: # %bb.0: # %entry 752; CHECK-P9-NEXT: lis r3, 1 753; CHECK-P9-NEXT: ori r3, r3, 34463 754; CHECK-P9-NEXT: lxv v2, 0(r3) 755; CHECK-P9-NEXT: blr 756; 757; CHECK-P8-LE-LABEL: ld_cst_unalign32_vector: 758; CHECK-P8-LE: # %bb.0: # %entry 759; CHECK-P8-LE-NEXT: lis r3, 1 760; CHECK-P8-LE-NEXT: ori r3, r3, 34463 761; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 762; CHECK-P8-LE-NEXT: xxswapd v2, vs0 763; CHECK-P8-LE-NEXT: blr 764; 765; CHECK-P8-BE-LABEL: ld_cst_unalign32_vector: 766; CHECK-P8-BE: # %bb.0: # %entry 767; CHECK-P8-BE-NEXT: lis r3, 1 768; CHECK-P8-BE-NEXT: ori r3, r3, 34463 769; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 770; CHECK-P8-BE-NEXT: blr 771entry: 772 %0 = load <16 x i8>, ptr inttoptr (i64 99999 to ptr), align 16 773 ret <16 x i8> %0 774} 775 776; Function Attrs: norecurse nounwind readonly uwtable willreturn 777define dso_local <16 x i8> @ld_cst_align32_vector() { 778; CHECK-P10-LABEL: ld_cst_align32_vector: 779; CHECK-P10: # %bb.0: # %entry 780; CHECK-P10-NEXT: pli r3, 9999900 781; CHECK-P10-NEXT: lxv v2, 0(r3) 782; CHECK-P10-NEXT: blr 783; 784; CHECK-P9-LABEL: ld_cst_align32_vector: 785; CHECK-P9: # %bb.0: # %entry 786; CHECK-P9-NEXT: lis r3, 152 787; CHECK-P9-NEXT: ori r3, r3, 38428 788; CHECK-P9-NEXT: lxv v2, 0(r3) 789; CHECK-P9-NEXT: blr 790; 791; CHECK-P8-LE-LABEL: ld_cst_align32_vector: 792; CHECK-P8-LE: # %bb.0: # %entry 793; CHECK-P8-LE-NEXT: lis r3, 152 794; CHECK-P8-LE-NEXT: ori r3, r3, 38428 795; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 796; CHECK-P8-LE-NEXT: xxswapd v2, vs0 797; CHECK-P8-LE-NEXT: blr 798; 799; CHECK-P8-BE-LABEL: ld_cst_align32_vector: 800; CHECK-P8-BE: # %bb.0: # %entry 801; CHECK-P8-BE-NEXT: lis r3, 152 802; CHECK-P8-BE-NEXT: ori r3, r3, 38428 803; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 804; CHECK-P8-BE-NEXT: blr 805entry: 806 %0 = load <16 x i8>, ptr inttoptr (i64 9999900 to ptr), align 16 807 ret <16 x i8> %0 808} 809 810; Function Attrs: norecurse nounwind readonly uwtable willreturn 811define dso_local <16 x i8> @ld_cst_unalign64_vector() { 812; CHECK-P10-LABEL: ld_cst_unalign64_vector: 813; CHECK-P10: # %bb.0: # %entry 814; CHECK-P10-NEXT: pli r3, 232 815; CHECK-P10-NEXT: pli r4, 3567587329 816; CHECK-P10-NEXT: rldimi r4, r3, 32, 0 817; CHECK-P10-NEXT: lxv v2, 0(r4) 818; CHECK-P10-NEXT: blr 819; 820; CHECK-P9-LABEL: ld_cst_unalign64_vector: 821; CHECK-P9: # %bb.0: # %entry 822; CHECK-P9-NEXT: li r3, 29 823; CHECK-P9-NEXT: rldic r3, r3, 35, 24 824; CHECK-P9-NEXT: oris r3, r3, 54437 825; CHECK-P9-NEXT: ori r3, r3, 4097 826; CHECK-P9-NEXT: lxv v2, 0(r3) 827; CHECK-P9-NEXT: blr 828; 829; CHECK-P8-LE-LABEL: ld_cst_unalign64_vector: 830; CHECK-P8-LE: # %bb.0: # %entry 831; CHECK-P8-LE-NEXT: li r3, 29 832; CHECK-P8-LE-NEXT: rldic r3, r3, 35, 24 833; CHECK-P8-LE-NEXT: oris r3, r3, 54437 834; CHECK-P8-LE-NEXT: ori r3, r3, 4097 835; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 836; CHECK-P8-LE-NEXT: xxswapd v2, vs0 837; CHECK-P8-LE-NEXT: blr 838; 839; CHECK-P8-BE-LABEL: ld_cst_unalign64_vector: 840; CHECK-P8-BE: # %bb.0: # %entry 841; CHECK-P8-BE-NEXT: li r3, 29 842; CHECK-P8-BE-NEXT: rldic r3, r3, 35, 24 843; CHECK-P8-BE-NEXT: oris r3, r3, 54437 844; CHECK-P8-BE-NEXT: ori r3, r3, 4097 845; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 846; CHECK-P8-BE-NEXT: blr 847entry: 848 %0 = load <16 x i8>, ptr inttoptr (i64 1000000000001 to ptr), align 16 849 ret <16 x i8> %0 850} 851 852; Function Attrs: norecurse nounwind readonly uwtable willreturn 853define dso_local <16 x i8> @ld_cst_align64_vector() { 854; CHECK-P10-LABEL: ld_cst_align64_vector: 855; CHECK-P10: # %bb.0: # %entry 856; CHECK-P10-NEXT: pli r3, 244140625 857; CHECK-P10-NEXT: rldic r3, r3, 12, 24 858; CHECK-P10-NEXT: lxv v2, 0(r3) 859; CHECK-P10-NEXT: blr 860; 861; CHECK-P9-LABEL: ld_cst_align64_vector: 862; CHECK-P9: # %bb.0: # %entry 863; CHECK-P9-NEXT: lis r3, 3725 864; CHECK-P9-NEXT: ori r3, r3, 19025 865; CHECK-P9-NEXT: rldic r3, r3, 12, 24 866; CHECK-P9-NEXT: lxv v2, 0(r3) 867; CHECK-P9-NEXT: blr 868; 869; CHECK-P8-LE-LABEL: ld_cst_align64_vector: 870; CHECK-P8-LE: # %bb.0: # %entry 871; CHECK-P8-LE-NEXT: lis r3, 3725 872; CHECK-P8-LE-NEXT: ori r3, r3, 19025 873; CHECK-P8-LE-NEXT: rldic r3, r3, 12, 24 874; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 875; CHECK-P8-LE-NEXT: xxswapd v2, vs0 876; CHECK-P8-LE-NEXT: blr 877; 878; CHECK-P8-BE-LABEL: ld_cst_align64_vector: 879; CHECK-P8-BE: # %bb.0: # %entry 880; CHECK-P8-BE-NEXT: lis r3, 3725 881; CHECK-P8-BE-NEXT: ori r3, r3, 19025 882; CHECK-P8-BE-NEXT: rldic r3, r3, 12, 24 883; CHECK-P8-BE-NEXT: lxvw4x v2, 0, r3 884; CHECK-P8-BE-NEXT: blr 885entry: 886 %0 = load <16 x i8>, ptr inttoptr (i64 1000000000000 to ptr), align 4096 887 ret <16 x i8> %0 888} 889 890; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 891define dso_local void @st_0_vector(i64 %ptr, <16 x i8> %str) { 892; CHECK-LABEL: st_0_vector: 893; CHECK: # %bb.0: # %entry 894; CHECK-NEXT: stxv v2, 0(r3) 895; CHECK-NEXT: blr 896; 897; CHECK-P8-LE-LABEL: st_0_vector: 898; CHECK-P8-LE: # %bb.0: # %entry 899; CHECK-P8-LE-NEXT: xxswapd vs0, v2 900; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 901; CHECK-P8-LE-NEXT: blr 902; 903; CHECK-P8-BE-LABEL: st_0_vector: 904; CHECK-P8-BE: # %bb.0: # %entry 905; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 906; CHECK-P8-BE-NEXT: blr 907entry: 908 %0 = inttoptr i64 %ptr to ptr 909 store <16 x i8> %str, ptr %0, align 16 910 ret void 911} 912 913; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 914define dso_local void @st_unalign16_vector(ptr nocapture %ptr, <16 x i8> %str) { 915; CHECK-P10-LABEL: st_unalign16_vector: 916; CHECK-P10: # %bb.0: # %entry 917; CHECK-P10-NEXT: pstxv v2, 1(r3), 0 918; CHECK-P10-NEXT: blr 919; 920; CHECK-P9-LABEL: st_unalign16_vector: 921; CHECK-P9: # %bb.0: # %entry 922; CHECK-P9-NEXT: li r4, 1 923; CHECK-P9-NEXT: stxvx v2, r3, r4 924; CHECK-P9-NEXT: blr 925; 926; CHECK-P8-LE-LABEL: st_unalign16_vector: 927; CHECK-P8-LE: # %bb.0: # %entry 928; CHECK-P8-LE-NEXT: xxswapd vs0, v2 929; CHECK-P8-LE-NEXT: addi r3, r3, 1 930; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 931; CHECK-P8-LE-NEXT: blr 932; 933; CHECK-P8-BE-LABEL: st_unalign16_vector: 934; CHECK-P8-BE: # %bb.0: # %entry 935; CHECK-P8-BE-NEXT: addi r3, r3, 1 936; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 937; CHECK-P8-BE-NEXT: blr 938entry: 939 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1 940 store <16 x i8> %str, ptr %add.ptr, align 16 941 ret void 942} 943 944; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 945define dso_local void @st_align16_vector(ptr nocapture %ptr, <16 x i8> %str) { 946; CHECK-P10-LABEL: st_align16_vector: 947; CHECK-P10: # %bb.0: # %entry 948; CHECK-P10-NEXT: pstxv v2, 8(r3), 0 949; CHECK-P10-NEXT: blr 950; 951; CHECK-P9-LABEL: st_align16_vector: 952; CHECK-P9: # %bb.0: # %entry 953; CHECK-P9-NEXT: li r4, 8 954; CHECK-P9-NEXT: stxvx v2, r3, r4 955; CHECK-P9-NEXT: blr 956; 957; CHECK-P8-LE-LABEL: st_align16_vector: 958; CHECK-P8-LE: # %bb.0: # %entry 959; CHECK-P8-LE-NEXT: xxswapd vs0, v2 960; CHECK-P8-LE-NEXT: addi r3, r3, 8 961; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 962; CHECK-P8-LE-NEXT: blr 963; 964; CHECK-P8-BE-LABEL: st_align16_vector: 965; CHECK-P8-BE: # %bb.0: # %entry 966; CHECK-P8-BE-NEXT: addi r3, r3, 8 967; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 968; CHECK-P8-BE-NEXT: blr 969entry: 970 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8 971 store <16 x i8> %str, ptr %add.ptr, align 16 972 ret void 973} 974 975; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 976define dso_local void @st_unalign32_vector(ptr nocapture %ptr, <16 x i8> %str) { 977; CHECK-P10-LABEL: st_unalign32_vector: 978; CHECK-P10: # %bb.0: # %entry 979; CHECK-P10-NEXT: pstxv v2, 99999(r3), 0 980; CHECK-P10-NEXT: blr 981; 982; CHECK-P9-LABEL: st_unalign32_vector: 983; CHECK-P9: # %bb.0: # %entry 984; CHECK-P9-NEXT: lis r4, 1 985; CHECK-P9-NEXT: ori r4, r4, 34463 986; CHECK-P9-NEXT: stxvx v2, r3, r4 987; CHECK-P9-NEXT: blr 988; 989; CHECK-P8-LE-LABEL: st_unalign32_vector: 990; CHECK-P8-LE: # %bb.0: # %entry 991; CHECK-P8-LE-NEXT: lis r4, 1 992; CHECK-P8-LE-NEXT: xxswapd vs0, v2 993; CHECK-P8-LE-NEXT: ori r4, r4, 34463 994; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 995; CHECK-P8-LE-NEXT: blr 996; 997; CHECK-P8-BE-LABEL: st_unalign32_vector: 998; CHECK-P8-BE: # %bb.0: # %entry 999; CHECK-P8-BE-NEXT: lis r4, 1 1000; CHECK-P8-BE-NEXT: ori r4, r4, 34463 1001; CHECK-P8-BE-NEXT: stxvw4x v2, r3, r4 1002; CHECK-P8-BE-NEXT: blr 1003entry: 1004 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999 1005 store <16 x i8> %str, ptr %add.ptr, align 16 1006 ret void 1007} 1008 1009; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1010define dso_local void @st_align32_vector(ptr nocapture %ptr, <16 x i8> %str) { 1011; CHECK-P10-LABEL: st_align32_vector: 1012; CHECK-P10: # %bb.0: # %entry 1013; CHECK-P10-NEXT: pstxv v2, 99999000(r3), 0 1014; CHECK-P10-NEXT: blr 1015; 1016; CHECK-P9-LABEL: st_align32_vector: 1017; CHECK-P9: # %bb.0: # %entry 1018; CHECK-P9-NEXT: lis r4, 1525 1019; CHECK-P9-NEXT: ori r4, r4, 56600 1020; CHECK-P9-NEXT: stxvx v2, r3, r4 1021; CHECK-P9-NEXT: blr 1022; 1023; CHECK-P8-LE-LABEL: st_align32_vector: 1024; CHECK-P8-LE: # %bb.0: # %entry 1025; CHECK-P8-LE-NEXT: lis r4, 1525 1026; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1027; CHECK-P8-LE-NEXT: ori r4, r4, 56600 1028; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1029; CHECK-P8-LE-NEXT: blr 1030; 1031; CHECK-P8-BE-LABEL: st_align32_vector: 1032; CHECK-P8-BE: # %bb.0: # %entry 1033; CHECK-P8-BE-NEXT: lis r4, 1525 1034; CHECK-P8-BE-NEXT: ori r4, r4, 56600 1035; CHECK-P8-BE-NEXT: stxvw4x v2, r3, r4 1036; CHECK-P8-BE-NEXT: blr 1037entry: 1038 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000 1039 store <16 x i8> %str, ptr %add.ptr, align 16 1040 ret void 1041} 1042 1043; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1044define dso_local void @st_unalign64_vector(ptr nocapture %ptr, <16 x i8> %str) { 1045; CHECK-P10-LABEL: st_unalign64_vector: 1046; CHECK-P10: # %bb.0: # %entry 1047; CHECK-P10-NEXT: pli r4, 232 1048; CHECK-P10-NEXT: pli r5, 3567587329 1049; CHECK-P10-NEXT: rldimi r5, r4, 32, 0 1050; CHECK-P10-NEXT: stxvx v2, r3, r5 1051; CHECK-P10-NEXT: blr 1052; 1053; CHECK-P9-LABEL: st_unalign64_vector: 1054; CHECK-P9: # %bb.0: # %entry 1055; CHECK-P9-NEXT: li r4, 29 1056; CHECK-P9-NEXT: rldic r4, r4, 35, 24 1057; CHECK-P9-NEXT: oris r4, r4, 54437 1058; CHECK-P9-NEXT: ori r4, r4, 4097 1059; CHECK-P9-NEXT: stxvx v2, r3, r4 1060; CHECK-P9-NEXT: blr 1061; 1062; CHECK-P8-LE-LABEL: st_unalign64_vector: 1063; CHECK-P8-LE: # %bb.0: # %entry 1064; CHECK-P8-LE-NEXT: li r4, 29 1065; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1066; CHECK-P8-LE-NEXT: rldic r4, r4, 35, 24 1067; CHECK-P8-LE-NEXT: oris r4, r4, 54437 1068; CHECK-P8-LE-NEXT: ori r4, r4, 4097 1069; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1070; CHECK-P8-LE-NEXT: blr 1071; 1072; CHECK-P8-BE-LABEL: st_unalign64_vector: 1073; CHECK-P8-BE: # %bb.0: # %entry 1074; CHECK-P8-BE-NEXT: li r4, 29 1075; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 24 1076; CHECK-P8-BE-NEXT: oris r4, r4, 54437 1077; CHECK-P8-BE-NEXT: ori r4, r4, 4097 1078; CHECK-P8-BE-NEXT: stxvw4x v2, r3, r4 1079; CHECK-P8-BE-NEXT: blr 1080entry: 1081 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000001 1082 store <16 x i8> %str, ptr %add.ptr, align 16 1083 ret void 1084} 1085 1086; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1087define dso_local void @st_align64_vector(ptr nocapture %ptr, <16 x i8> %str) { 1088; CHECK-P10-LABEL: st_align64_vector: 1089; CHECK-P10: # %bb.0: # %entry 1090; CHECK-P10-NEXT: pli r4, 244140625 1091; CHECK-P10-NEXT: rldic r4, r4, 12, 24 1092; CHECK-P10-NEXT: stxvx v2, r3, r4 1093; CHECK-P10-NEXT: blr 1094; 1095; CHECK-P9-LABEL: st_align64_vector: 1096; CHECK-P9: # %bb.0: # %entry 1097; CHECK-P9-NEXT: lis r4, 3725 1098; CHECK-P9-NEXT: ori r4, r4, 19025 1099; CHECK-P9-NEXT: rldic r4, r4, 12, 24 1100; CHECK-P9-NEXT: stxvx v2, r3, r4 1101; CHECK-P9-NEXT: blr 1102; 1103; CHECK-P8-LE-LABEL: st_align64_vector: 1104; CHECK-P8-LE: # %bb.0: # %entry 1105; CHECK-P8-LE-NEXT: lis r4, 3725 1106; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1107; CHECK-P8-LE-NEXT: ori r4, r4, 19025 1108; CHECK-P8-LE-NEXT: rldic r4, r4, 12, 24 1109; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1110; CHECK-P8-LE-NEXT: blr 1111; 1112; CHECK-P8-BE-LABEL: st_align64_vector: 1113; CHECK-P8-BE: # %bb.0: # %entry 1114; CHECK-P8-BE-NEXT: lis r4, 3725 1115; CHECK-P8-BE-NEXT: ori r4, r4, 19025 1116; CHECK-P8-BE-NEXT: rldic r4, r4, 12, 24 1117; CHECK-P8-BE-NEXT: stxvw4x v2, r3, r4 1118; CHECK-P8-BE-NEXT: blr 1119entry: 1120 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000 1121 store <16 x i8> %str, ptr %add.ptr, align 16 1122 ret void 1123} 1124 1125; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1126define dso_local void @st_reg_vector(ptr nocapture %ptr, i64 %off, <16 x i8> %str) { 1127; CHECK-LABEL: st_reg_vector: 1128; CHECK: # %bb.0: # %entry 1129; CHECK-NEXT: stxvx v2, r3, r4 1130; CHECK-NEXT: blr 1131; 1132; CHECK-P8-LE-LABEL: st_reg_vector: 1133; CHECK-P8-LE: # %bb.0: # %entry 1134; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1135; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1136; CHECK-P8-LE-NEXT: blr 1137; 1138; CHECK-P8-BE-LABEL: st_reg_vector: 1139; CHECK-P8-BE: # %bb.0: # %entry 1140; CHECK-P8-BE-NEXT: stxvw4x v2, r3, r4 1141; CHECK-P8-BE-NEXT: blr 1142entry: 1143 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off 1144 store <16 x i8> %str, ptr %add.ptr, align 16 1145 ret void 1146} 1147 1148; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1149define dso_local void @st_or1_vector(i64 %ptr, i8 zeroext %off, <16 x i8> %str) { 1150; CHECK-LABEL: st_or1_vector: 1151; CHECK: # %bb.0: # %entry 1152; CHECK-NEXT: or r3, r4, r3 1153; CHECK-NEXT: stxv v2, 0(r3) 1154; CHECK-NEXT: blr 1155; 1156; CHECK-P8-LE-LABEL: st_or1_vector: 1157; CHECK-P8-LE: # %bb.0: # %entry 1158; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1159; CHECK-P8-LE-NEXT: or r3, r4, r3 1160; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1161; CHECK-P8-LE-NEXT: blr 1162; 1163; CHECK-P8-BE-LABEL: st_or1_vector: 1164; CHECK-P8-BE: # %bb.0: # %entry 1165; CHECK-P8-BE-NEXT: or r3, r4, r3 1166; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1167; CHECK-P8-BE-NEXT: blr 1168entry: 1169 %conv = zext i8 %off to i64 1170 %or = or i64 %conv, %ptr 1171 %0 = inttoptr i64 %or to ptr 1172 store <16 x i8> %str, ptr %0, align 16 1173 ret void 1174} 1175 1176; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1177define dso_local void @st_or2_vector(i64 %ptr, i8 zeroext %off, <16 x i8> %str) { 1178; CHECK-LABEL: st_or2_vector: 1179; CHECK: # %bb.0: # %entry 1180; CHECK-NEXT: rldicr r3, r3, 0, 51 1181; CHECK-NEXT: stxvx v2, r3, r4 1182; CHECK-NEXT: blr 1183; 1184; CHECK-P8-LE-LABEL: st_or2_vector: 1185; CHECK-P8-LE: # %bb.0: # %entry 1186; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1187; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 51 1188; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1189; CHECK-P8-LE-NEXT: blr 1190; 1191; CHECK-P8-BE-LABEL: st_or2_vector: 1192; CHECK-P8-BE: # %bb.0: # %entry 1193; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 51 1194; CHECK-P8-BE-NEXT: stxvw4x v2, r3, r4 1195; CHECK-P8-BE-NEXT: blr 1196entry: 1197 %and = and i64 %ptr, -4096 1198 %conv = zext i8 %off to i64 1199 %or = or i64 %and, %conv 1200 %0 = inttoptr i64 %or to ptr 1201 store <16 x i8> %str, ptr %0, align 16 1202 ret void 1203} 1204 1205; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1206define dso_local void @st_not_disjoint16_vector(i64 %ptr, <16 x i8> %str) { 1207; CHECK-LABEL: st_not_disjoint16_vector: 1208; CHECK: # %bb.0: # %entry 1209; CHECK-NEXT: ori r3, r3, 6 1210; CHECK-NEXT: stxv v2, 0(r3) 1211; CHECK-NEXT: blr 1212; 1213; CHECK-P8-LE-LABEL: st_not_disjoint16_vector: 1214; CHECK-P8-LE: # %bb.0: # %entry 1215; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1216; CHECK-P8-LE-NEXT: ori r3, r3, 6 1217; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1218; CHECK-P8-LE-NEXT: blr 1219; 1220; CHECK-P8-BE-LABEL: st_not_disjoint16_vector: 1221; CHECK-P8-BE: # %bb.0: # %entry 1222; CHECK-P8-BE-NEXT: ori r3, r3, 6 1223; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1224; CHECK-P8-BE-NEXT: blr 1225entry: 1226 %or = or i64 %ptr, 6 1227 %0 = inttoptr i64 %or to ptr 1228 store <16 x i8> %str, ptr %0, align 16 1229 ret void 1230} 1231 1232; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1233define dso_local void @st_disjoint_unalign16_vector(i64 %ptr, <16 x i8> %str) { 1234; CHECK-P10-LABEL: st_disjoint_unalign16_vector: 1235; CHECK-P10: # %bb.0: # %entry 1236; CHECK-P10-NEXT: rldicr r3, r3, 0, 51 1237; CHECK-P10-NEXT: pstxv v2, 6(r3), 0 1238; CHECK-P10-NEXT: blr 1239; 1240; CHECK-P9-LABEL: st_disjoint_unalign16_vector: 1241; CHECK-P9: # %bb.0: # %entry 1242; CHECK-P9-NEXT: rldicr r3, r3, 0, 51 1243; CHECK-P9-NEXT: li r4, 6 1244; CHECK-P9-NEXT: stxvx v2, r3, r4 1245; CHECK-P9-NEXT: blr 1246; 1247; CHECK-P8-LE-LABEL: st_disjoint_unalign16_vector: 1248; CHECK-P8-LE: # %bb.0: # %entry 1249; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 51 1250; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1251; CHECK-P8-LE-NEXT: ori r3, r3, 6 1252; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1253; CHECK-P8-LE-NEXT: blr 1254; 1255; CHECK-P8-BE-LABEL: st_disjoint_unalign16_vector: 1256; CHECK-P8-BE: # %bb.0: # %entry 1257; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 51 1258; CHECK-P8-BE-NEXT: ori r3, r3, 6 1259; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1260; CHECK-P8-BE-NEXT: blr 1261entry: 1262 %and = and i64 %ptr, -4096 1263 %or = or i64 %and, 6 1264 %0 = inttoptr i64 %or to ptr 1265 store <16 x i8> %str, ptr %0, align 16 1266 ret void 1267} 1268 1269; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1270define dso_local void @st_disjoint_align16_vector(i64 %ptr, <16 x i8> %str) { 1271; CHECK-P10-LABEL: st_disjoint_align16_vector: 1272; CHECK-P10: # %bb.0: # %entry 1273; CHECK-P10-NEXT: rldicr r3, r3, 0, 51 1274; CHECK-P10-NEXT: pstxv v2, 24(r3), 0 1275; CHECK-P10-NEXT: blr 1276; 1277; CHECK-P9-LABEL: st_disjoint_align16_vector: 1278; CHECK-P9: # %bb.0: # %entry 1279; CHECK-P9-NEXT: rldicr r3, r3, 0, 51 1280; CHECK-P9-NEXT: li r4, 24 1281; CHECK-P9-NEXT: stxvx v2, r3, r4 1282; CHECK-P9-NEXT: blr 1283; 1284; CHECK-P8-LE-LABEL: st_disjoint_align16_vector: 1285; CHECK-P8-LE: # %bb.0: # %entry 1286; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 51 1287; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1288; CHECK-P8-LE-NEXT: ori r3, r3, 24 1289; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1290; CHECK-P8-LE-NEXT: blr 1291; 1292; CHECK-P8-BE-LABEL: st_disjoint_align16_vector: 1293; CHECK-P8-BE: # %bb.0: # %entry 1294; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 51 1295; CHECK-P8-BE-NEXT: ori r3, r3, 24 1296; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1297; CHECK-P8-BE-NEXT: blr 1298entry: 1299 %and = and i64 %ptr, -4096 1300 %or = or i64 %and, 24 1301 %0 = inttoptr i64 %or to ptr 1302 store <16 x i8> %str, ptr %0, align 16 1303 ret void 1304} 1305 1306; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1307define dso_local void @st_not_disjoint32_vector(i64 %ptr, <16 x i8> %str) { 1308; CHECK-LABEL: st_not_disjoint32_vector: 1309; CHECK: # %bb.0: # %entry 1310; CHECK-NEXT: ori r3, r3, 34463 1311; CHECK-NEXT: oris r3, r3, 1 1312; CHECK-NEXT: stxv v2, 0(r3) 1313; CHECK-NEXT: blr 1314; 1315; CHECK-P8-LE-LABEL: st_not_disjoint32_vector: 1316; CHECK-P8-LE: # %bb.0: # %entry 1317; CHECK-P8-LE-NEXT: ori r3, r3, 34463 1318; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1319; CHECK-P8-LE-NEXT: oris r3, r3, 1 1320; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1321; CHECK-P8-LE-NEXT: blr 1322; 1323; CHECK-P8-BE-LABEL: st_not_disjoint32_vector: 1324; CHECK-P8-BE: # %bb.0: # %entry 1325; CHECK-P8-BE-NEXT: ori r3, r3, 34463 1326; CHECK-P8-BE-NEXT: oris r3, r3, 1 1327; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1328; CHECK-P8-BE-NEXT: blr 1329entry: 1330 %or = or i64 %ptr, 99999 1331 %0 = inttoptr i64 %or to ptr 1332 store <16 x i8> %str, ptr %0, align 16 1333 ret void 1334} 1335 1336; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1337define dso_local void @st_disjoint_unalign32_vector(i64 %ptr, <16 x i8> %str) { 1338; CHECK-P10-LABEL: st_disjoint_unalign32_vector: 1339; CHECK-P10: # %bb.0: # %entry 1340; CHECK-P10-NEXT: rldicr r3, r3, 0, 43 1341; CHECK-P10-NEXT: pstxv v2, 99999(r3), 0 1342; CHECK-P10-NEXT: blr 1343; 1344; CHECK-P9-LABEL: st_disjoint_unalign32_vector: 1345; CHECK-P9: # %bb.0: # %entry 1346; CHECK-P9-NEXT: lis r4, 1 1347; CHECK-P9-NEXT: rldicr r3, r3, 0, 43 1348; CHECK-P9-NEXT: ori r4, r4, 34463 1349; CHECK-P9-NEXT: stxvx v2, r3, r4 1350; CHECK-P9-NEXT: blr 1351; 1352; CHECK-P8-LE-LABEL: st_disjoint_unalign32_vector: 1353; CHECK-P8-LE: # %bb.0: # %entry 1354; CHECK-P8-LE-NEXT: lis r4, 1 1355; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1356; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 43 1357; CHECK-P8-LE-NEXT: ori r4, r4, 34463 1358; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1359; CHECK-P8-LE-NEXT: blr 1360; 1361; CHECK-P8-BE-LABEL: st_disjoint_unalign32_vector: 1362; CHECK-P8-BE: # %bb.0: # %entry 1363; CHECK-P8-BE-NEXT: lis r4, 1 1364; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 43 1365; CHECK-P8-BE-NEXT: ori r4, r4, 34463 1366; CHECK-P8-BE-NEXT: stxvw4x v2, r3, r4 1367; CHECK-P8-BE-NEXT: blr 1368entry: 1369 %and = and i64 %ptr, -1048576 1370 %or = or i64 %and, 99999 1371 %0 = inttoptr i64 %or to ptr 1372 store <16 x i8> %str, ptr %0, align 16 1373 ret void 1374} 1375 1376; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1377define dso_local void @st_disjoint_align32_vector(i64 %ptr, <16 x i8> %str) { 1378; CHECK-P10-LABEL: st_disjoint_align32_vector: 1379; CHECK-P10: # %bb.0: # %entry 1380; CHECK-P10-NEXT: lis r4, -15264 1381; CHECK-P10-NEXT: and r3, r3, r4 1382; CHECK-P10-NEXT: pstxv v2, 999990000(r3), 0 1383; CHECK-P10-NEXT: blr 1384; 1385; CHECK-P9-LABEL: st_disjoint_align32_vector: 1386; CHECK-P9: # %bb.0: # %entry 1387; CHECK-P9-NEXT: lis r4, -15264 1388; CHECK-P9-NEXT: and r3, r3, r4 1389; CHECK-P9-NEXT: lis r4, 15258 1390; CHECK-P9-NEXT: ori r4, r4, 41712 1391; CHECK-P9-NEXT: stxvx v2, r3, r4 1392; CHECK-P9-NEXT: blr 1393; 1394; CHECK-P8-LE-LABEL: st_disjoint_align32_vector: 1395; CHECK-P8-LE: # %bb.0: # %entry 1396; CHECK-P8-LE-NEXT: lis r4, -15264 1397; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1398; CHECK-P8-LE-NEXT: and r3, r3, r4 1399; CHECK-P8-LE-NEXT: lis r4, 15258 1400; CHECK-P8-LE-NEXT: ori r4, r4, 41712 1401; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1402; CHECK-P8-LE-NEXT: blr 1403; 1404; CHECK-P8-BE-LABEL: st_disjoint_align32_vector: 1405; CHECK-P8-BE: # %bb.0: # %entry 1406; CHECK-P8-BE-NEXT: lis r4, -15264 1407; CHECK-P8-BE-NEXT: and r3, r3, r4 1408; CHECK-P8-BE-NEXT: lis r4, 15258 1409; CHECK-P8-BE-NEXT: ori r4, r4, 41712 1410; CHECK-P8-BE-NEXT: stxvw4x v2, r3, r4 1411; CHECK-P8-BE-NEXT: blr 1412entry: 1413 %and = and i64 %ptr, -1000341504 1414 %or = or i64 %and, 999990000 1415 %0 = inttoptr i64 %or to ptr 1416 store <16 x i8> %str, ptr %0, align 16 1417 ret void 1418} 1419 1420; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1421define dso_local void @st_not_disjoint64_vector(i64 %ptr, <16 x i8> %str) { 1422; CHECK-P10-LABEL: st_not_disjoint64_vector: 1423; CHECK-P10: # %bb.0: # %entry 1424; CHECK-P10-NEXT: pli r4, 232 1425; CHECK-P10-NEXT: pli r5, 3567587329 1426; CHECK-P10-NEXT: rldimi r5, r4, 32, 0 1427; CHECK-P10-NEXT: or r3, r3, r5 1428; CHECK-P10-NEXT: stxv v2, 0(r3) 1429; CHECK-P10-NEXT: blr 1430; 1431; CHECK-P9-LABEL: st_not_disjoint64_vector: 1432; CHECK-P9: # %bb.0: # %entry 1433; CHECK-P9-NEXT: li r4, 29 1434; CHECK-P9-NEXT: rldic r4, r4, 35, 24 1435; CHECK-P9-NEXT: oris r4, r4, 54437 1436; CHECK-P9-NEXT: ori r4, r4, 4097 1437; CHECK-P9-NEXT: or r3, r3, r4 1438; CHECK-P9-NEXT: stxv v2, 0(r3) 1439; CHECK-P9-NEXT: blr 1440; 1441; CHECK-P8-LE-LABEL: st_not_disjoint64_vector: 1442; CHECK-P8-LE: # %bb.0: # %entry 1443; CHECK-P8-LE-NEXT: li r4, 29 1444; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1445; CHECK-P8-LE-NEXT: rldic r4, r4, 35, 24 1446; CHECK-P8-LE-NEXT: oris r4, r4, 54437 1447; CHECK-P8-LE-NEXT: ori r4, r4, 4097 1448; CHECK-P8-LE-NEXT: or r3, r3, r4 1449; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1450; CHECK-P8-LE-NEXT: blr 1451; 1452; CHECK-P8-BE-LABEL: st_not_disjoint64_vector: 1453; CHECK-P8-BE: # %bb.0: # %entry 1454; CHECK-P8-BE-NEXT: li r4, 29 1455; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 24 1456; CHECK-P8-BE-NEXT: oris r4, r4, 54437 1457; CHECK-P8-BE-NEXT: ori r4, r4, 4097 1458; CHECK-P8-BE-NEXT: or r3, r3, r4 1459; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1460; CHECK-P8-BE-NEXT: blr 1461entry: 1462 %or = or i64 %ptr, 1000000000001 1463 %0 = inttoptr i64 %or to ptr 1464 store <16 x i8> %str, ptr %0, align 16 1465 ret void 1466} 1467 1468; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1469define dso_local void @st_disjoint_unalign64_vector(i64 %ptr, <16 x i8> %str) { 1470; CHECK-P10-LABEL: st_disjoint_unalign64_vector: 1471; CHECK-P10: # %bb.0: # %entry 1472; CHECK-P10-NEXT: pli r4, 232 1473; CHECK-P10-NEXT: pli r5, 3567587329 1474; CHECK-P10-NEXT: rldicr r3, r3, 0, 23 1475; CHECK-P10-NEXT: rldimi r5, r4, 32, 0 1476; CHECK-P10-NEXT: stxvx v2, r3, r5 1477; CHECK-P10-NEXT: blr 1478; 1479; CHECK-P9-LABEL: st_disjoint_unalign64_vector: 1480; CHECK-P9: # %bb.0: # %entry 1481; CHECK-P9-NEXT: li r4, 29 1482; CHECK-P9-NEXT: rldicr r3, r3, 0, 23 1483; CHECK-P9-NEXT: rldic r4, r4, 35, 24 1484; CHECK-P9-NEXT: oris r4, r4, 54437 1485; CHECK-P9-NEXT: ori r4, r4, 4097 1486; CHECK-P9-NEXT: stxvx v2, r3, r4 1487; CHECK-P9-NEXT: blr 1488; 1489; CHECK-P8-LE-LABEL: st_disjoint_unalign64_vector: 1490; CHECK-P8-LE: # %bb.0: # %entry 1491; CHECK-P8-LE-NEXT: li r4, 29 1492; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1493; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 23 1494; CHECK-P8-LE-NEXT: rldic r4, r4, 35, 24 1495; CHECK-P8-LE-NEXT: oris r4, r4, 54437 1496; CHECK-P8-LE-NEXT: ori r4, r4, 4097 1497; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1498; CHECK-P8-LE-NEXT: blr 1499; 1500; CHECK-P8-BE-LABEL: st_disjoint_unalign64_vector: 1501; CHECK-P8-BE: # %bb.0: # %entry 1502; CHECK-P8-BE-NEXT: li r4, 29 1503; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 23 1504; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 24 1505; CHECK-P8-BE-NEXT: oris r4, r4, 54437 1506; CHECK-P8-BE-NEXT: ori r4, r4, 4097 1507; CHECK-P8-BE-NEXT: stxvw4x v2, r3, r4 1508; CHECK-P8-BE-NEXT: blr 1509entry: 1510 %and = and i64 %ptr, -1099511627776 1511 %or = or i64 %and, 1000000000001 1512 %0 = inttoptr i64 %or to ptr 1513 store <16 x i8> %str, ptr %0, align 16 1514 ret void 1515} 1516 1517; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1518define dso_local void @st_disjoint_align64_vector(i64 %ptr, <16 x i8> %str) { 1519; CHECK-P10-LABEL: st_disjoint_align64_vector: 1520; CHECK-P10: # %bb.0: # %entry 1521; CHECK-P10-NEXT: pli r4, 244140625 1522; CHECK-P10-NEXT: rldicr r3, r3, 0, 23 1523; CHECK-P10-NEXT: rldic r4, r4, 12, 24 1524; CHECK-P10-NEXT: stxvx v2, r3, r4 1525; CHECK-P10-NEXT: blr 1526; 1527; CHECK-P9-LABEL: st_disjoint_align64_vector: 1528; CHECK-P9: # %bb.0: # %entry 1529; CHECK-P9-NEXT: lis r4, 3725 1530; CHECK-P9-NEXT: rldicr r3, r3, 0, 23 1531; CHECK-P9-NEXT: ori r4, r4, 19025 1532; CHECK-P9-NEXT: rldic r4, r4, 12, 24 1533; CHECK-P9-NEXT: stxvx v2, r3, r4 1534; CHECK-P9-NEXT: blr 1535; 1536; CHECK-P8-LE-LABEL: st_disjoint_align64_vector: 1537; CHECK-P8-LE: # %bb.0: # %entry 1538; CHECK-P8-LE-NEXT: lis r4, 3725 1539; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1540; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 23 1541; CHECK-P8-LE-NEXT: ori r4, r4, 19025 1542; CHECK-P8-LE-NEXT: rldic r4, r4, 12, 24 1543; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1544; CHECK-P8-LE-NEXT: blr 1545; 1546; CHECK-P8-BE-LABEL: st_disjoint_align64_vector: 1547; CHECK-P8-BE: # %bb.0: # %entry 1548; CHECK-P8-BE-NEXT: lis r4, 3725 1549; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 23 1550; CHECK-P8-BE-NEXT: ori r4, r4, 19025 1551; CHECK-P8-BE-NEXT: rldic r4, r4, 12, 24 1552; CHECK-P8-BE-NEXT: stxvw4x v2, r3, r4 1553; CHECK-P8-BE-NEXT: blr 1554entry: 1555 %and = and i64 %ptr, -1099511627776 1556 %or = or i64 %and, 1000000000000 1557 %0 = inttoptr i64 %or to ptr 1558 store <16 x i8> %str, ptr %0, align 4096 1559 ret void 1560} 1561 1562; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1563define dso_local void @st_cst_unalign16_vector(<16 x i8> %str) { 1564; CHECK-LABEL: st_cst_unalign16_vector: 1565; CHECK: # %bb.0: # %entry 1566; CHECK-NEXT: li r3, 255 1567; CHECK-NEXT: stxv v2, 0(r3) 1568; CHECK-NEXT: blr 1569; 1570; CHECK-P8-LE-LABEL: st_cst_unalign16_vector: 1571; CHECK-P8-LE: # %bb.0: # %entry 1572; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1573; CHECK-P8-LE-NEXT: li r3, 255 1574; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1575; CHECK-P8-LE-NEXT: blr 1576; 1577; CHECK-P8-BE-LABEL: st_cst_unalign16_vector: 1578; CHECK-P8-BE: # %bb.0: # %entry 1579; CHECK-P8-BE-NEXT: li r3, 255 1580; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1581; CHECK-P8-BE-NEXT: blr 1582entry: 1583 store <16 x i8> %str, ptr inttoptr (i64 255 to ptr), align 16 1584 ret void 1585} 1586 1587; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1588define dso_local void @st_cst_align16_vector(<16 x i8> %str) { 1589; CHECK-LABEL: st_cst_align16_vector: 1590; CHECK: # %bb.0: # %entry 1591; CHECK-NEXT: stxv v2, 4080(0) 1592; CHECK-NEXT: blr 1593; 1594; CHECK-P8-LE-LABEL: st_cst_align16_vector: 1595; CHECK-P8-LE: # %bb.0: # %entry 1596; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1597; CHECK-P8-LE-NEXT: li r3, 4080 1598; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1599; CHECK-P8-LE-NEXT: blr 1600; 1601; CHECK-P8-BE-LABEL: st_cst_align16_vector: 1602; CHECK-P8-BE: # %bb.0: # %entry 1603; CHECK-P8-BE-NEXT: li r3, 4080 1604; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1605; CHECK-P8-BE-NEXT: blr 1606entry: 1607 store <16 x i8> %str, ptr inttoptr (i64 4080 to ptr), align 16 1608 ret void 1609} 1610 1611; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1612define dso_local void @st_cst_unalign32_vector(<16 x i8> %str) { 1613; CHECK-P10-LABEL: st_cst_unalign32_vector: 1614; CHECK-P10: # %bb.0: # %entry 1615; CHECK-P10-NEXT: pli r3, 99999 1616; CHECK-P10-NEXT: stxv v2, 0(r3) 1617; CHECK-P10-NEXT: blr 1618; 1619; CHECK-P9-LABEL: st_cst_unalign32_vector: 1620; CHECK-P9: # %bb.0: # %entry 1621; CHECK-P9-NEXT: lis r3, 1 1622; CHECK-P9-NEXT: ori r3, r3, 34463 1623; CHECK-P9-NEXT: stxv v2, 0(r3) 1624; CHECK-P9-NEXT: blr 1625; 1626; CHECK-P8-LE-LABEL: st_cst_unalign32_vector: 1627; CHECK-P8-LE: # %bb.0: # %entry 1628; CHECK-P8-LE-NEXT: lis r3, 1 1629; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1630; CHECK-P8-LE-NEXT: ori r3, r3, 34463 1631; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1632; CHECK-P8-LE-NEXT: blr 1633; 1634; CHECK-P8-BE-LABEL: st_cst_unalign32_vector: 1635; CHECK-P8-BE: # %bb.0: # %entry 1636; CHECK-P8-BE-NEXT: lis r3, 1 1637; CHECK-P8-BE-NEXT: ori r3, r3, 34463 1638; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1639; CHECK-P8-BE-NEXT: blr 1640entry: 1641 store <16 x i8> %str, ptr inttoptr (i64 99999 to ptr), align 16 1642 ret void 1643} 1644 1645; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1646define dso_local void @st_cst_align32_vector(<16 x i8> %str) { 1647; CHECK-P10-LABEL: st_cst_align32_vector: 1648; CHECK-P10: # %bb.0: # %entry 1649; CHECK-P10-NEXT: pli r3, 9999900 1650; CHECK-P10-NEXT: stxv v2, 0(r3) 1651; CHECK-P10-NEXT: blr 1652; 1653; CHECK-P9-LABEL: st_cst_align32_vector: 1654; CHECK-P9: # %bb.0: # %entry 1655; CHECK-P9-NEXT: lis r3, 152 1656; CHECK-P9-NEXT: ori r3, r3, 38428 1657; CHECK-P9-NEXT: stxv v2, 0(r3) 1658; CHECK-P9-NEXT: blr 1659; 1660; CHECK-P8-LE-LABEL: st_cst_align32_vector: 1661; CHECK-P8-LE: # %bb.0: # %entry 1662; CHECK-P8-LE-NEXT: lis r3, 152 1663; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1664; CHECK-P8-LE-NEXT: ori r3, r3, 38428 1665; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1666; CHECK-P8-LE-NEXT: blr 1667; 1668; CHECK-P8-BE-LABEL: st_cst_align32_vector: 1669; CHECK-P8-BE: # %bb.0: # %entry 1670; CHECK-P8-BE-NEXT: lis r3, 152 1671; CHECK-P8-BE-NEXT: ori r3, r3, 38428 1672; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1673; CHECK-P8-BE-NEXT: blr 1674entry: 1675 store <16 x i8> %str, ptr inttoptr (i64 9999900 to ptr), align 16 1676 ret void 1677} 1678 1679; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1680define dso_local void @st_cst_unalign64_vector(<16 x i8> %str) { 1681; CHECK-P10-LABEL: st_cst_unalign64_vector: 1682; CHECK-P10: # %bb.0: # %entry 1683; CHECK-P10-NEXT: pli r3, 232 1684; CHECK-P10-NEXT: pli r4, 3567587329 1685; CHECK-P10-NEXT: rldimi r4, r3, 32, 0 1686; CHECK-P10-NEXT: stxv v2, 0(r4) 1687; CHECK-P10-NEXT: blr 1688; 1689; CHECK-P9-LABEL: st_cst_unalign64_vector: 1690; CHECK-P9: # %bb.0: # %entry 1691; CHECK-P9-NEXT: li r3, 29 1692; CHECK-P9-NEXT: rldic r3, r3, 35, 24 1693; CHECK-P9-NEXT: oris r3, r3, 54437 1694; CHECK-P9-NEXT: ori r3, r3, 4097 1695; CHECK-P9-NEXT: stxv v2, 0(r3) 1696; CHECK-P9-NEXT: blr 1697; 1698; CHECK-P8-LE-LABEL: st_cst_unalign64_vector: 1699; CHECK-P8-LE: # %bb.0: # %entry 1700; CHECK-P8-LE-NEXT: li r3, 29 1701; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1702; CHECK-P8-LE-NEXT: rldic r3, r3, 35, 24 1703; CHECK-P8-LE-NEXT: oris r3, r3, 54437 1704; CHECK-P8-LE-NEXT: ori r3, r3, 4097 1705; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1706; CHECK-P8-LE-NEXT: blr 1707; 1708; CHECK-P8-BE-LABEL: st_cst_unalign64_vector: 1709; CHECK-P8-BE: # %bb.0: # %entry 1710; CHECK-P8-BE-NEXT: li r3, 29 1711; CHECK-P8-BE-NEXT: rldic r3, r3, 35, 24 1712; CHECK-P8-BE-NEXT: oris r3, r3, 54437 1713; CHECK-P8-BE-NEXT: ori r3, r3, 4097 1714; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1715; CHECK-P8-BE-NEXT: blr 1716entry: 1717 store <16 x i8> %str, ptr inttoptr (i64 1000000000001 to ptr), align 16 1718 ret void 1719} 1720 1721; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 1722define dso_local void @st_cst_align64_vector(<16 x i8> %str) { 1723; CHECK-P10-LABEL: st_cst_align64_vector: 1724; CHECK-P10: # %bb.0: # %entry 1725; CHECK-P10-NEXT: pli r3, 244140625 1726; CHECK-P10-NEXT: rldic r3, r3, 12, 24 1727; CHECK-P10-NEXT: stxv v2, 0(r3) 1728; CHECK-P10-NEXT: blr 1729; 1730; CHECK-P9-LABEL: st_cst_align64_vector: 1731; CHECK-P9: # %bb.0: # %entry 1732; CHECK-P9-NEXT: lis r3, 3725 1733; CHECK-P9-NEXT: ori r3, r3, 19025 1734; CHECK-P9-NEXT: rldic r3, r3, 12, 24 1735; CHECK-P9-NEXT: stxv v2, 0(r3) 1736; CHECK-P9-NEXT: blr 1737; 1738; CHECK-P8-LE-LABEL: st_cst_align64_vector: 1739; CHECK-P8-LE: # %bb.0: # %entry 1740; CHECK-P8-LE-NEXT: lis r3, 3725 1741; CHECK-P8-LE-NEXT: xxswapd vs0, v2 1742; CHECK-P8-LE-NEXT: ori r3, r3, 19025 1743; CHECK-P8-LE-NEXT: rldic r3, r3, 12, 24 1744; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1745; CHECK-P8-LE-NEXT: blr 1746; 1747; CHECK-P8-BE-LABEL: st_cst_align64_vector: 1748; CHECK-P8-BE: # %bb.0: # %entry 1749; CHECK-P8-BE-NEXT: lis r3, 3725 1750; CHECK-P8-BE-NEXT: ori r3, r3, 19025 1751; CHECK-P8-BE-NEXT: rldic r3, r3, 12, 24 1752; CHECK-P8-BE-NEXT: stxvw4x v2, 0, r3 1753; CHECK-P8-BE-NEXT: blr 1754entry: 1755 store <16 x i8> %str, ptr inttoptr (i64 1000000000000 to ptr), align 4096 1756 ret void 1757} 1758