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=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \ 4; RUN: FileCheck %s --check-prefix=CHECK-P8 5; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ 6; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \ 7; RUN: FileCheck %s --check-prefix=CHECK-P9 8; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ 9; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \ 10; RUN: FileCheck %s --check-prefix=CHECK-BE 11 12define i16 @test2elt(i64 %a.coerce) local_unnamed_addr #0 { 13; CHECK-P8-LABEL: test2elt: 14; CHECK-P8: # %bb.0: # %entry 15; CHECK-P8-NEXT: mtfprd f0, r3 16; CHECK-P8-NEXT: xxswapd v2, vs0 17; CHECK-P8-NEXT: xscvspdpn f0, vs0 18; CHECK-P8-NEXT: xxsldwi vs1, v2, v2, 3 19; CHECK-P8-NEXT: xscvspdpn f1, vs1 20; CHECK-P8-NEXT: xscvdpsxws f0, f0 21; CHECK-P8-NEXT: xscvdpsxws f1, f1 22; CHECK-P8-NEXT: mffprwz r4, f0 23; CHECK-P8-NEXT: mtvsrd v3, r4 24; CHECK-P8-NEXT: mffprwz r3, f1 25; CHECK-P8-NEXT: mtvsrd v2, r3 26; CHECK-P8-NEXT: vmrghb v2, v3, v2 27; CHECK-P8-NEXT: xxswapd vs0, v2 28; CHECK-P8-NEXT: mffprd r3, f0 29; CHECK-P8-NEXT: clrldi r3, r3, 48 30; CHECK-P8-NEXT: sth r3, -2(r1) 31; CHECK-P8-NEXT: lhz r3, -2(r1) 32; CHECK-P8-NEXT: blr 33; 34; CHECK-P9-LABEL: test2elt: 35; CHECK-P9: # %bb.0: # %entry 36; CHECK-P9-NEXT: mtfprd f0, r3 37; CHECK-P9-NEXT: xxswapd v2, vs0 38; CHECK-P9-NEXT: xscvspdpn f0, vs0 39; CHECK-P9-NEXT: xxsldwi vs1, v2, v2, 3 40; CHECK-P9-NEXT: xscvdpsxws f0, f0 41; CHECK-P9-NEXT: xscvspdpn f1, vs1 42; CHECK-P9-NEXT: xscvdpsxws f1, f1 43; CHECK-P9-NEXT: mffprwz r3, f1 44; CHECK-P9-NEXT: mtvsrd v2, r3 45; CHECK-P9-NEXT: mffprwz r3, f0 46; CHECK-P9-NEXT: mtvsrd v3, r3 47; CHECK-P9-NEXT: addi r3, r1, -2 48; CHECK-P9-NEXT: vmrghb v2, v3, v2 49; CHECK-P9-NEXT: vsldoi v2, v2, v2, 8 50; CHECK-P9-NEXT: stxsihx v2, 0, r3 51; CHECK-P9-NEXT: lhz r3, -2(r1) 52; CHECK-P9-NEXT: blr 53; 54; CHECK-BE-LABEL: test2elt: 55; CHECK-BE: # %bb.0: # %entry 56; CHECK-BE-NEXT: mtfprd f0, r3 57; CHECK-BE-NEXT: xscvspdpn f1, vs0 58; CHECK-BE-NEXT: xxsldwi vs0, vs0, vs0, 1 59; CHECK-BE-NEXT: xscvdpsxws f1, f1 60; CHECK-BE-NEXT: xscvspdpn f0, vs0 61; CHECK-BE-NEXT: xscvdpsxws f0, f0 62; CHECK-BE-NEXT: mffprwz r3, f1 63; CHECK-BE-NEXT: sldi r3, r3, 56 64; CHECK-BE-NEXT: mtvsrd v2, r3 65; CHECK-BE-NEXT: mffprwz r3, f0 66; CHECK-BE-NEXT: sldi r3, r3, 56 67; CHECK-BE-NEXT: mtvsrd v3, r3 68; CHECK-BE-NEXT: addi r3, r1, -2 69; CHECK-BE-NEXT: vmrghb v2, v2, v3 70; CHECK-BE-NEXT: vsldoi v2, v2, v2, 10 71; CHECK-BE-NEXT: stxsihx v2, 0, r3 72; CHECK-BE-NEXT: lhz r3, -2(r1) 73; CHECK-BE-NEXT: blr 74entry: 75 %0 = bitcast i64 %a.coerce to <2 x float> 76 %1 = fptoui <2 x float> %0 to <2 x i8> 77 %2 = bitcast <2 x i8> %1 to i16 78 ret i16 %2 79} 80 81define i32 @test4elt(<4 x float> %a) local_unnamed_addr #1 { 82; CHECK-P8-LABEL: test4elt: 83; CHECK-P8: # %bb.0: # %entry 84; CHECK-P8-NEXT: xxsldwi vs0, v2, v2, 3 85; CHECK-P8-NEXT: xscvspdpn f1, v2 86; CHECK-P8-NEXT: xxswapd vs2, v2 87; CHECK-P8-NEXT: xxsldwi vs3, v2, v2, 1 88; CHECK-P8-NEXT: xscvspdpn f0, vs0 89; CHECK-P8-NEXT: xscvspdpn f2, vs2 90; CHECK-P8-NEXT: xscvspdpn f3, vs3 91; CHECK-P8-NEXT: xscvdpsxws f1, f1 92; CHECK-P8-NEXT: xscvdpsxws f0, f0 93; CHECK-P8-NEXT: xscvdpsxws f2, f2 94; CHECK-P8-NEXT: xscvdpsxws f3, f3 95; CHECK-P8-NEXT: mffprwz r3, f1 96; CHECK-P8-NEXT: mtvsrd v2, r3 97; CHECK-P8-NEXT: mffprwz r3, f0 98; CHECK-P8-NEXT: mffprwz r4, f2 99; CHECK-P8-NEXT: mtvsrd v3, r3 100; CHECK-P8-NEXT: mffprwz r3, f3 101; CHECK-P8-NEXT: mtvsrd v4, r4 102; CHECK-P8-NEXT: mtvsrd v5, r3 103; CHECK-P8-NEXT: vmrghb v3, v4, v3 104; CHECK-P8-NEXT: vmrghb v2, v2, v5 105; CHECK-P8-NEXT: vmrglh v2, v2, v3 106; CHECK-P8-NEXT: xxswapd vs0, v2 107; CHECK-P8-NEXT: mffprwz r3, f0 108; CHECK-P8-NEXT: blr 109; 110; CHECK-P9-LABEL: test4elt: 111; CHECK-P9: # %bb.0: # %entry 112; CHECK-P9-NEXT: xxsldwi vs0, v2, v2, 3 113; CHECK-P9-NEXT: xscvspdpn f0, vs0 114; CHECK-P9-NEXT: xscvdpsxws f0, f0 115; CHECK-P9-NEXT: mffprwz r3, f0 116; CHECK-P9-NEXT: xxswapd vs0, v2 117; CHECK-P9-NEXT: mtvsrd v3, r3 118; CHECK-P9-NEXT: xscvspdpn f0, vs0 119; CHECK-P9-NEXT: xscvdpsxws f0, f0 120; CHECK-P9-NEXT: mffprwz r3, f0 121; CHECK-P9-NEXT: xscvspdpn f0, v2 122; CHECK-P9-NEXT: mtvsrd v4, r3 123; CHECK-P9-NEXT: xscvdpsxws f0, f0 124; CHECK-P9-NEXT: vmrghb v3, v4, v3 125; CHECK-P9-NEXT: mffprwz r3, f0 126; CHECK-P9-NEXT: xxsldwi vs0, v2, v2, 1 127; CHECK-P9-NEXT: mtvsrd v4, r3 128; CHECK-P9-NEXT: xscvspdpn f0, vs0 129; CHECK-P9-NEXT: xscvdpsxws f0, f0 130; CHECK-P9-NEXT: mffprwz r3, f0 131; CHECK-P9-NEXT: mtvsrd v2, r3 132; CHECK-P9-NEXT: li r3, 0 133; CHECK-P9-NEXT: vmrghb v2, v4, v2 134; CHECK-P9-NEXT: vmrglh v2, v2, v3 135; CHECK-P9-NEXT: vextuwrx r3, r3, v2 136; CHECK-P9-NEXT: blr 137; 138; CHECK-BE-LABEL: test4elt: 139; CHECK-BE: # %bb.0: # %entry 140; CHECK-BE-NEXT: xxsldwi vs0, v2, v2, 3 141; CHECK-BE-NEXT: xscvspdpn f0, vs0 142; CHECK-BE-NEXT: xscvdpsxws f0, f0 143; CHECK-BE-NEXT: mffprwz r3, f0 144; CHECK-BE-NEXT: xxswapd vs0, v2 145; CHECK-BE-NEXT: sldi r3, r3, 56 146; CHECK-BE-NEXT: xscvspdpn f0, vs0 147; CHECK-BE-NEXT: mtvsrd v3, r3 148; CHECK-BE-NEXT: xscvdpsxws f0, f0 149; CHECK-BE-NEXT: mffprwz r3, f0 150; CHECK-BE-NEXT: xscvspdpn f0, v2 151; CHECK-BE-NEXT: sldi r3, r3, 56 152; CHECK-BE-NEXT: xscvdpsxws f0, f0 153; CHECK-BE-NEXT: mtvsrd v4, r3 154; CHECK-BE-NEXT: vmrghb v3, v4, v3 155; CHECK-BE-NEXT: mffprwz r3, f0 156; CHECK-BE-NEXT: xxsldwi vs0, v2, v2, 1 157; CHECK-BE-NEXT: sldi r3, r3, 56 158; CHECK-BE-NEXT: xscvspdpn f0, vs0 159; CHECK-BE-NEXT: mtvsrd v4, r3 160; CHECK-BE-NEXT: xscvdpsxws f0, f0 161; CHECK-BE-NEXT: mffprwz r3, f0 162; CHECK-BE-NEXT: sldi r3, r3, 56 163; CHECK-BE-NEXT: mtvsrd v2, r3 164; CHECK-BE-NEXT: li r3, 0 165; CHECK-BE-NEXT: vmrghb v2, v4, v2 166; CHECK-BE-NEXT: vmrghh v2, v2, v3 167; CHECK-BE-NEXT: vextuwlx r3, r3, v2 168; CHECK-BE-NEXT: blr 169entry: 170 %0 = fptoui <4 x float> %a to <4 x i8> 171 %1 = bitcast <4 x i8> %0 to i32 172 ret i32 %1 173} 174 175define i64 @test8elt(<8 x float>* nocapture readonly) local_unnamed_addr #2 { 176; CHECK-P8-LABEL: test8elt: 177; CHECK-P8: # %bb.0: # %entry 178; CHECK-P8-NEXT: lvx v2, 0, r3 179; CHECK-P8-NEXT: li r4, 16 180; CHECK-P8-NEXT: lvx v3, r3, r4 181; CHECK-P8-NEXT: xxsldwi vs0, v2, v2, 3 182; CHECK-P8-NEXT: xxswapd vs1, v2 183; CHECK-P8-NEXT: xscvspdpn f2, v2 184; CHECK-P8-NEXT: xxsldwi vs4, v2, v2, 1 185; CHECK-P8-NEXT: xxsldwi vs5, v3, v3, 3 186; CHECK-P8-NEXT: xscvspdpn f3, v3 187; CHECK-P8-NEXT: xscvspdpn f0, vs0 188; CHECK-P8-NEXT: xscvspdpn f1, vs1 189; CHECK-P8-NEXT: xscvspdpn f4, vs4 190; CHECK-P8-NEXT: xscvspdpn f5, vs5 191; CHECK-P8-NEXT: xscvdpsxws f2, f2 192; CHECK-P8-NEXT: xscvdpsxws f3, f3 193; CHECK-P8-NEXT: xscvdpsxws f0, f0 194; CHECK-P8-NEXT: xscvdpsxws f1, f1 195; CHECK-P8-NEXT: mffprwz r3, f0 196; CHECK-P8-NEXT: xxswapd vs0, v3 197; CHECK-P8-NEXT: mffprwz r4, f1 198; CHECK-P8-NEXT: xxsldwi vs1, v3, v3, 1 199; CHECK-P8-NEXT: mtvsrd v2, r3 200; CHECK-P8-NEXT: xscvspdpn f0, vs0 201; CHECK-P8-NEXT: mffprwz r3, f2 202; CHECK-P8-NEXT: xscvdpsxws f2, f4 203; CHECK-P8-NEXT: xscvspdpn f1, vs1 204; CHECK-P8-NEXT: xscvdpsxws f4, f5 205; CHECK-P8-NEXT: mtvsrd v4, r4 206; CHECK-P8-NEXT: xscvdpsxws f0, f0 207; CHECK-P8-NEXT: vmrghb v2, v4, v2 208; CHECK-P8-NEXT: mffprwz r4, f2 209; CHECK-P8-NEXT: xscvdpsxws f1, f1 210; CHECK-P8-NEXT: mtvsrd v3, r3 211; CHECK-P8-NEXT: mffprwz r3, f3 212; CHECK-P8-NEXT: mtvsrd v4, r4 213; CHECK-P8-NEXT: mffprwz r4, f0 214; CHECK-P8-NEXT: vmrghb v3, v3, v4 215; CHECK-P8-NEXT: mtvsrd v4, r3 216; CHECK-P8-NEXT: mffprwz r3, f4 217; CHECK-P8-NEXT: mtvsrd v0, r4 218; CHECK-P8-NEXT: mtvsrd v5, r3 219; CHECK-P8-NEXT: mffprwz r3, f1 220; CHECK-P8-NEXT: vmrghb v5, v0, v5 221; CHECK-P8-NEXT: mtvsrd v1, r3 222; CHECK-P8-NEXT: vmrglh v2, v3, v2 223; CHECK-P8-NEXT: vmrghb v4, v4, v1 224; CHECK-P8-NEXT: vmrglh v3, v4, v5 225; CHECK-P8-NEXT: vmrglw v2, v3, v2 226; CHECK-P8-NEXT: xxswapd vs0, v2 227; CHECK-P8-NEXT: mffprd r3, f0 228; CHECK-P8-NEXT: blr 229; 230; CHECK-P9-LABEL: test8elt: 231; CHECK-P9: # %bb.0: # %entry 232; CHECK-P9-NEXT: lxv vs1, 0(r3) 233; CHECK-P9-NEXT: lxv vs0, 16(r3) 234; CHECK-P9-NEXT: xxsldwi vs2, vs1, vs1, 3 235; CHECK-P9-NEXT: xscvspdpn f2, vs2 236; CHECK-P9-NEXT: xscvdpsxws f2, f2 237; CHECK-P9-NEXT: mffprwz r3, f2 238; CHECK-P9-NEXT: xxswapd vs2, vs1 239; CHECK-P9-NEXT: mtvsrd v2, r3 240; CHECK-P9-NEXT: xscvspdpn f2, vs2 241; CHECK-P9-NEXT: xscvdpsxws f2, f2 242; CHECK-P9-NEXT: mffprwz r3, f2 243; CHECK-P9-NEXT: xscvspdpn f2, vs1 244; CHECK-P9-NEXT: xxsldwi vs1, vs1, vs1, 1 245; CHECK-P9-NEXT: mtvsrd v3, r3 246; CHECK-P9-NEXT: xscvspdpn f1, vs1 247; CHECK-P9-NEXT: xscvdpsxws f2, f2 248; CHECK-P9-NEXT: vmrghb v2, v3, v2 249; CHECK-P9-NEXT: xscvdpsxws f1, f1 250; CHECK-P9-NEXT: mffprwz r3, f2 251; CHECK-P9-NEXT: mtvsrd v3, r3 252; CHECK-P9-NEXT: mffprwz r3, f1 253; CHECK-P9-NEXT: xxsldwi vs1, vs0, vs0, 3 254; CHECK-P9-NEXT: mtvsrd v4, r3 255; CHECK-P9-NEXT: xscvspdpn f1, vs1 256; CHECK-P9-NEXT: vmrghb v3, v3, v4 257; CHECK-P9-NEXT: xscvdpsxws f1, f1 258; CHECK-P9-NEXT: vmrglh v2, v3, v2 259; CHECK-P9-NEXT: mffprwz r3, f1 260; CHECK-P9-NEXT: xxswapd vs1, vs0 261; CHECK-P9-NEXT: mtvsrd v3, r3 262; CHECK-P9-NEXT: xscvspdpn f1, vs1 263; CHECK-P9-NEXT: xscvdpsxws f1, f1 264; CHECK-P9-NEXT: mffprwz r3, f1 265; CHECK-P9-NEXT: xscvspdpn f1, vs0 266; CHECK-P9-NEXT: xxsldwi vs0, vs0, vs0, 1 267; CHECK-P9-NEXT: mtvsrd v4, r3 268; CHECK-P9-NEXT: xscvspdpn f0, vs0 269; CHECK-P9-NEXT: xscvdpsxws f1, f1 270; CHECK-P9-NEXT: vmrghb v3, v4, v3 271; CHECK-P9-NEXT: xscvdpsxws f0, f0 272; CHECK-P9-NEXT: mffprwz r3, f1 273; CHECK-P9-NEXT: mtvsrd v4, r3 274; CHECK-P9-NEXT: mffprwz r3, f0 275; CHECK-P9-NEXT: mtvsrd v5, r3 276; CHECK-P9-NEXT: vmrghb v4, v4, v5 277; CHECK-P9-NEXT: vmrglh v3, v4, v3 278; CHECK-P9-NEXT: vmrglw v2, v3, v2 279; CHECK-P9-NEXT: mfvsrld r3, v2 280; CHECK-P9-NEXT: blr 281; 282; CHECK-BE-LABEL: test8elt: 283; CHECK-BE: # %bb.0: # %entry 284; CHECK-BE-NEXT: lxv vs1, 16(r3) 285; CHECK-BE-NEXT: lxv vs0, 0(r3) 286; CHECK-BE-NEXT: xxsldwi vs2, vs1, vs1, 3 287; CHECK-BE-NEXT: xscvspdpn f2, vs2 288; CHECK-BE-NEXT: xscvdpsxws f2, f2 289; CHECK-BE-NEXT: mffprwz r3, f2 290; CHECK-BE-NEXT: xxswapd vs2, vs1 291; CHECK-BE-NEXT: sldi r3, r3, 56 292; CHECK-BE-NEXT: xscvspdpn f2, vs2 293; CHECK-BE-NEXT: mtvsrd v2, r3 294; CHECK-BE-NEXT: xscvdpsxws f2, f2 295; CHECK-BE-NEXT: mffprwz r3, f2 296; CHECK-BE-NEXT: xscvspdpn f2, vs1 297; CHECK-BE-NEXT: xxsldwi vs1, vs1, vs1, 1 298; CHECK-BE-NEXT: sldi r3, r3, 56 299; CHECK-BE-NEXT: xscvdpsxws f2, f2 300; CHECK-BE-NEXT: xscvspdpn f1, vs1 301; CHECK-BE-NEXT: mtvsrd v3, r3 302; CHECK-BE-NEXT: xscvdpsxws f1, f1 303; CHECK-BE-NEXT: vmrghb v2, v3, v2 304; CHECK-BE-NEXT: mffprwz r3, f2 305; CHECK-BE-NEXT: sldi r3, r3, 56 306; CHECK-BE-NEXT: mtvsrd v3, r3 307; CHECK-BE-NEXT: mffprwz r3, f1 308; CHECK-BE-NEXT: xxsldwi vs1, vs0, vs0, 3 309; CHECK-BE-NEXT: sldi r3, r3, 56 310; CHECK-BE-NEXT: xscvspdpn f1, vs1 311; CHECK-BE-NEXT: mtvsrd v4, r3 312; CHECK-BE-NEXT: xscvdpsxws f1, f1 313; CHECK-BE-NEXT: vmrghb v3, v3, v4 314; CHECK-BE-NEXT: vmrghh v2, v3, v2 315; CHECK-BE-NEXT: mffprwz r3, f1 316; CHECK-BE-NEXT: xxswapd vs1, vs0 317; CHECK-BE-NEXT: sldi r3, r3, 56 318; CHECK-BE-NEXT: xscvspdpn f1, vs1 319; CHECK-BE-NEXT: mtvsrd v3, r3 320; CHECK-BE-NEXT: xscvdpsxws f1, f1 321; CHECK-BE-NEXT: mffprwz r3, f1 322; CHECK-BE-NEXT: xscvspdpn f1, vs0 323; CHECK-BE-NEXT: xxsldwi vs0, vs0, vs0, 1 324; CHECK-BE-NEXT: sldi r3, r3, 56 325; CHECK-BE-NEXT: xscvdpsxws f1, f1 326; CHECK-BE-NEXT: xscvspdpn f0, vs0 327; CHECK-BE-NEXT: mtvsrd v4, r3 328; CHECK-BE-NEXT: xscvdpsxws f0, f0 329; CHECK-BE-NEXT: vmrghb v3, v4, v3 330; CHECK-BE-NEXT: mffprwz r3, f1 331; CHECK-BE-NEXT: sldi r3, r3, 56 332; CHECK-BE-NEXT: mtvsrd v4, r3 333; CHECK-BE-NEXT: mffprwz r3, f0 334; CHECK-BE-NEXT: sldi r3, r3, 56 335; CHECK-BE-NEXT: mtvsrd v5, r3 336; CHECK-BE-NEXT: vmrghb v4, v4, v5 337; CHECK-BE-NEXT: vmrghh v3, v4, v3 338; CHECK-BE-NEXT: vmrghw v2, v3, v2 339; CHECK-BE-NEXT: mfvsrd r3, v2 340; CHECK-BE-NEXT: blr 341entry: 342 %a = load <8 x float>, <8 x float>* %0, align 32 343 %1 = fptoui <8 x float> %a to <8 x i8> 344 %2 = bitcast <8 x i8> %1 to i64 345 ret i64 %2 346} 347 348define <16 x i8> @test16elt(<16 x float>* nocapture readonly) local_unnamed_addr #3 { 349; CHECK-P8-LABEL: test16elt: 350; CHECK-P8: # %bb.0: # %entry 351; CHECK-P8-NEXT: lvx v4, 0, r3 352; CHECK-P8-NEXT: li r4, 16 353; CHECK-P8-NEXT: li r5, 32 354; CHECK-P8-NEXT: lvx v3, r3, r4 355; CHECK-P8-NEXT: lvx v2, r3, r5 356; CHECK-P8-NEXT: xxsldwi vs0, v4, v4, 3 357; CHECK-P8-NEXT: xxswapd vs2, v4 358; CHECK-P8-NEXT: xxsldwi vs4, v4, v4, 1 359; CHECK-P8-NEXT: xscvspdpn f1, v4 360; CHECK-P8-NEXT: xscvspdpn f3, v3 361; CHECK-P8-NEXT: xxsldwi vs6, v3, v3, 3 362; CHECK-P8-NEXT: xscvspdpn f0, vs0 363; CHECK-P8-NEXT: xxswapd vs7, v3 364; CHECK-P8-NEXT: xscvspdpn f2, vs2 365; CHECK-P8-NEXT: xxsldwi vs8, v3, v3, 1 366; CHECK-P8-NEXT: xscvspdpn f4, vs4 367; CHECK-P8-NEXT: xxsldwi vs9, v2, v2, 3 368; CHECK-P8-NEXT: xscvspdpn f6, vs6 369; CHECK-P8-NEXT: xscvdpsxws f1, f1 370; CHECK-P8-NEXT: xscvspdpn f7, vs7 371; CHECK-P8-NEXT: xscvdpsxws f0, f0 372; CHECK-P8-NEXT: xscvdpsxws f2, f2 373; CHECK-P8-NEXT: xscvdpsxws f4, f4 374; CHECK-P8-NEXT: xscvspdpn f8, vs8 375; CHECK-P8-NEXT: xscvdpsxws f3, f3 376; CHECK-P8-NEXT: xscvspdpn f9, vs9 377; CHECK-P8-NEXT: mffprwz r4, f0 378; CHECK-P8-NEXT: xxswapd vs0, v2 379; CHECK-P8-NEXT: mffprwz r5, f2 380; CHECK-P8-NEXT: mtvsrd v3, r4 381; CHECK-P8-NEXT: xscvspdpn f0, vs0 382; CHECK-P8-NEXT: mffprwz r4, f1 383; CHECK-P8-NEXT: mtvsrd v4, r5 384; CHECK-P8-NEXT: mffprwz r5, f4 385; CHECK-P8-NEXT: xscvdpsxws f1, f6 386; CHECK-P8-NEXT: vmrghb v3, v4, v3 387; CHECK-P8-NEXT: mtvsrd v4, r5 388; CHECK-P8-NEXT: mffprwz r5, f3 389; CHECK-P8-NEXT: xscvdpsxws f3, f7 390; CHECK-P8-NEXT: xscvdpsxws f4, f8 391; CHECK-P8-NEXT: xscvdpsxws f0, f0 392; CHECK-P8-NEXT: mtvsrd v5, r4 393; CHECK-P8-NEXT: li r4, 48 394; CHECK-P8-NEXT: lvx v0, r3, r4 395; CHECK-P8-NEXT: mffprwz r3, f1 396; CHECK-P8-NEXT: xxsldwi vs1, v2, v2, 1 397; CHECK-P8-NEXT: xscvspdpn f5, v2 398; CHECK-P8-NEXT: mffprwz r4, f3 399; CHECK-P8-NEXT: xxsldwi vs3, v0, v0, 3 400; CHECK-P8-NEXT: mtvsrd v1, r3 401; CHECK-P8-NEXT: mffprwz r3, f4 402; CHECK-P8-NEXT: xxswapd vs4, v0 403; CHECK-P8-NEXT: xscvspdpn f1, vs1 404; CHECK-P8-NEXT: mtvsrd v7, r3 405; CHECK-P8-NEXT: mffprwz r3, f0 406; CHECK-P8-NEXT: xxsldwi vs0, v0, v0, 1 407; CHECK-P8-NEXT: xscvspdpn f2, v0 408; CHECK-P8-NEXT: xscvspdpn f3, vs3 409; CHECK-P8-NEXT: xscvdpsxws f6, f9 410; CHECK-P8-NEXT: xscvspdpn f4, vs4 411; CHECK-P8-NEXT: xscvspdpn f0, vs0 412; CHECK-P8-NEXT: xscvdpsxws f5, f5 413; CHECK-P8-NEXT: xscvdpsxws f1, f1 414; CHECK-P8-NEXT: xscvdpsxws f2, f2 415; CHECK-P8-NEXT: xscvdpsxws f3, f3 416; CHECK-P8-NEXT: mtvsrd v6, r4 417; CHECK-P8-NEXT: mffprwz r4, f6 418; CHECK-P8-NEXT: xscvdpsxws f4, f4 419; CHECK-P8-NEXT: xscvdpsxws f0, f0 420; CHECK-P8-NEXT: vmrghb v2, v6, v1 421; CHECK-P8-NEXT: mtvsrd v1, r4 422; CHECK-P8-NEXT: mffprwz r4, f5 423; CHECK-P8-NEXT: mtvsrd v6, r3 424; CHECK-P8-NEXT: mffprwz r3, f1 425; CHECK-P8-NEXT: vmrghb v4, v5, v4 426; CHECK-P8-NEXT: mtvsrd v5, r5 427; CHECK-P8-NEXT: vmrghb v0, v6, v1 428; CHECK-P8-NEXT: mtvsrd v1, r4 429; CHECK-P8-NEXT: mffprwz r4, f2 430; CHECK-P8-NEXT: mtvsrd v6, r3 431; CHECK-P8-NEXT: mffprwz r3, f3 432; CHECK-P8-NEXT: vmrghb v5, v5, v7 433; CHECK-P8-NEXT: vmrghb v1, v1, v6 434; CHECK-P8-NEXT: mtvsrd v6, r4 435; CHECK-P8-NEXT: mffprwz r4, f4 436; CHECK-P8-NEXT: mtvsrd v7, r3 437; CHECK-P8-NEXT: mffprwz r3, f0 438; CHECK-P8-NEXT: mtvsrd v8, r4 439; CHECK-P8-NEXT: mtvsrd v9, r3 440; CHECK-P8-NEXT: vmrghb v7, v8, v7 441; CHECK-P8-NEXT: vmrghb v6, v6, v9 442; CHECK-P8-NEXT: vmrglh v3, v4, v3 443; CHECK-P8-NEXT: vmrglh v2, v5, v2 444; CHECK-P8-NEXT: vmrglh v4, v1, v0 445; CHECK-P8-NEXT: vmrglh v5, v6, v7 446; CHECK-P8-NEXT: vmrglw v2, v2, v3 447; CHECK-P8-NEXT: vmrglw v3, v5, v4 448; CHECK-P8-NEXT: xxmrgld v2, v3, v2 449; CHECK-P8-NEXT: blr 450; 451; CHECK-P9-LABEL: test16elt: 452; CHECK-P9: # %bb.0: # %entry 453; CHECK-P9-NEXT: lxv vs3, 0(r3) 454; CHECK-P9-NEXT: lxv vs0, 48(r3) 455; CHECK-P9-NEXT: lxv vs1, 32(r3) 456; CHECK-P9-NEXT: lxv vs2, 16(r3) 457; CHECK-P9-NEXT: xxsldwi vs4, vs3, vs3, 3 458; CHECK-P9-NEXT: xscvspdpn f4, vs4 459; CHECK-P9-NEXT: xscvdpsxws f4, f4 460; CHECK-P9-NEXT: mffprwz r3, f4 461; CHECK-P9-NEXT: xxswapd vs4, vs3 462; CHECK-P9-NEXT: mtvsrd v2, r3 463; CHECK-P9-NEXT: xscvspdpn f4, vs4 464; CHECK-P9-NEXT: xscvdpsxws f4, f4 465; CHECK-P9-NEXT: mffprwz r3, f4 466; CHECK-P9-NEXT: xscvspdpn f4, vs3 467; CHECK-P9-NEXT: xxsldwi vs3, vs3, vs3, 1 468; CHECK-P9-NEXT: mtvsrd v3, r3 469; CHECK-P9-NEXT: xscvspdpn f3, vs3 470; CHECK-P9-NEXT: xscvdpsxws f4, f4 471; CHECK-P9-NEXT: vmrghb v2, v3, v2 472; CHECK-P9-NEXT: xscvdpsxws f3, f3 473; CHECK-P9-NEXT: mffprwz r3, f4 474; CHECK-P9-NEXT: mtvsrd v3, r3 475; CHECK-P9-NEXT: mffprwz r3, f3 476; CHECK-P9-NEXT: xxsldwi vs3, vs2, vs2, 3 477; CHECK-P9-NEXT: mtvsrd v4, r3 478; CHECK-P9-NEXT: xscvspdpn f3, vs3 479; CHECK-P9-NEXT: vmrghb v3, v3, v4 480; CHECK-P9-NEXT: xscvdpsxws f3, f3 481; CHECK-P9-NEXT: vmrglh v2, v3, v2 482; CHECK-P9-NEXT: mffprwz r3, f3 483; CHECK-P9-NEXT: xxswapd vs3, vs2 484; CHECK-P9-NEXT: mtvsrd v3, r3 485; CHECK-P9-NEXT: xscvspdpn f3, vs3 486; CHECK-P9-NEXT: xscvdpsxws f3, f3 487; CHECK-P9-NEXT: mffprwz r3, f3 488; CHECK-P9-NEXT: xscvspdpn f3, vs2 489; CHECK-P9-NEXT: xxsldwi vs2, vs2, vs2, 1 490; CHECK-P9-NEXT: mtvsrd v4, r3 491; CHECK-P9-NEXT: xscvspdpn f2, vs2 492; CHECK-P9-NEXT: xscvdpsxws f3, f3 493; CHECK-P9-NEXT: vmrghb v3, v4, v3 494; CHECK-P9-NEXT: xscvdpsxws f2, f2 495; CHECK-P9-NEXT: mffprwz r3, f3 496; CHECK-P9-NEXT: mtvsrd v4, r3 497; CHECK-P9-NEXT: mffprwz r3, f2 498; CHECK-P9-NEXT: xxsldwi vs2, vs1, vs1, 3 499; CHECK-P9-NEXT: mtvsrd v5, r3 500; CHECK-P9-NEXT: xscvspdpn f2, vs2 501; CHECK-P9-NEXT: vmrghb v4, v4, v5 502; CHECK-P9-NEXT: xscvdpsxws f2, f2 503; CHECK-P9-NEXT: vmrglh v3, v4, v3 504; CHECK-P9-NEXT: vmrglw v2, v3, v2 505; CHECK-P9-NEXT: mffprwz r3, f2 506; CHECK-P9-NEXT: xxswapd vs2, vs1 507; CHECK-P9-NEXT: mtvsrd v3, r3 508; CHECK-P9-NEXT: xscvspdpn f2, vs2 509; CHECK-P9-NEXT: xscvdpsxws f2, f2 510; CHECK-P9-NEXT: mffprwz r3, f2 511; CHECK-P9-NEXT: xscvspdpn f2, vs1 512; CHECK-P9-NEXT: xxsldwi vs1, vs1, vs1, 1 513; CHECK-P9-NEXT: mtvsrd v4, r3 514; CHECK-P9-NEXT: xscvspdpn f1, vs1 515; CHECK-P9-NEXT: xscvdpsxws f2, f2 516; CHECK-P9-NEXT: vmrghb v3, v4, v3 517; CHECK-P9-NEXT: xscvdpsxws f1, f1 518; CHECK-P9-NEXT: mffprwz r3, f2 519; CHECK-P9-NEXT: mtvsrd v4, r3 520; CHECK-P9-NEXT: mffprwz r3, f1 521; CHECK-P9-NEXT: xxsldwi vs1, vs0, vs0, 3 522; CHECK-P9-NEXT: mtvsrd v5, r3 523; CHECK-P9-NEXT: xscvspdpn f1, vs1 524; CHECK-P9-NEXT: vmrghb v4, v4, v5 525; CHECK-P9-NEXT: xscvdpsxws f1, f1 526; CHECK-P9-NEXT: vmrglh v3, v4, v3 527; CHECK-P9-NEXT: mffprwz r3, f1 528; CHECK-P9-NEXT: xxswapd vs1, vs0 529; CHECK-P9-NEXT: mtvsrd v4, r3 530; CHECK-P9-NEXT: xscvspdpn f1, vs1 531; CHECK-P9-NEXT: xscvdpsxws f1, f1 532; CHECK-P9-NEXT: mffprwz r3, f1 533; CHECK-P9-NEXT: xscvspdpn f1, vs0 534; CHECK-P9-NEXT: xxsldwi vs0, vs0, vs0, 1 535; CHECK-P9-NEXT: mtvsrd v5, r3 536; CHECK-P9-NEXT: xscvspdpn f0, vs0 537; CHECK-P9-NEXT: xscvdpsxws f1, f1 538; CHECK-P9-NEXT: vmrghb v4, v5, v4 539; CHECK-P9-NEXT: xscvdpsxws f0, f0 540; CHECK-P9-NEXT: mffprwz r3, f1 541; CHECK-P9-NEXT: mtvsrd v5, r3 542; CHECK-P9-NEXT: mffprwz r3, f0 543; CHECK-P9-NEXT: mtvsrd v0, r3 544; CHECK-P9-NEXT: vmrghb v5, v5, v0 545; CHECK-P9-NEXT: vmrglh v4, v5, v4 546; CHECK-P9-NEXT: vmrglw v3, v4, v3 547; CHECK-P9-NEXT: xxmrgld v2, v3, v2 548; CHECK-P9-NEXT: blr 549; 550; CHECK-BE-LABEL: test16elt: 551; CHECK-BE: # %bb.0: # %entry 552; CHECK-BE-NEXT: lxv vs3, 48(r3) 553; CHECK-BE-NEXT: lxv vs0, 0(r3) 554; CHECK-BE-NEXT: lxv vs1, 16(r3) 555; CHECK-BE-NEXT: lxv vs2, 32(r3) 556; CHECK-BE-NEXT: xxsldwi vs4, vs3, vs3, 3 557; CHECK-BE-NEXT: xscvspdpn f4, vs4 558; CHECK-BE-NEXT: xscvdpsxws f4, f4 559; CHECK-BE-NEXT: mffprwz r3, f4 560; CHECK-BE-NEXT: xxswapd vs4, vs3 561; CHECK-BE-NEXT: sldi r3, r3, 56 562; CHECK-BE-NEXT: xscvspdpn f4, vs4 563; CHECK-BE-NEXT: mtvsrd v2, r3 564; CHECK-BE-NEXT: xscvdpsxws f4, f4 565; CHECK-BE-NEXT: mffprwz r3, f4 566; CHECK-BE-NEXT: xscvspdpn f4, vs3 567; CHECK-BE-NEXT: xxsldwi vs3, vs3, vs3, 1 568; CHECK-BE-NEXT: sldi r3, r3, 56 569; CHECK-BE-NEXT: xscvdpsxws f4, f4 570; CHECK-BE-NEXT: xscvspdpn f3, vs3 571; CHECK-BE-NEXT: mtvsrd v3, r3 572; CHECK-BE-NEXT: xscvdpsxws f3, f3 573; CHECK-BE-NEXT: vmrghb v2, v3, v2 574; CHECK-BE-NEXT: mffprwz r3, f4 575; CHECK-BE-NEXT: sldi r3, r3, 56 576; CHECK-BE-NEXT: mtvsrd v3, r3 577; CHECK-BE-NEXT: mffprwz r3, f3 578; CHECK-BE-NEXT: xxsldwi vs3, vs2, vs2, 3 579; CHECK-BE-NEXT: sldi r3, r3, 56 580; CHECK-BE-NEXT: xscvspdpn f3, vs3 581; CHECK-BE-NEXT: mtvsrd v4, r3 582; CHECK-BE-NEXT: xscvdpsxws f3, f3 583; CHECK-BE-NEXT: vmrghb v3, v3, v4 584; CHECK-BE-NEXT: vmrghh v2, v3, v2 585; CHECK-BE-NEXT: mffprwz r3, f3 586; CHECK-BE-NEXT: xxswapd vs3, vs2 587; CHECK-BE-NEXT: sldi r3, r3, 56 588; CHECK-BE-NEXT: xscvspdpn f3, vs3 589; CHECK-BE-NEXT: mtvsrd v3, r3 590; CHECK-BE-NEXT: xscvdpsxws f3, f3 591; CHECK-BE-NEXT: mffprwz r3, f3 592; CHECK-BE-NEXT: xscvspdpn f3, vs2 593; CHECK-BE-NEXT: xxsldwi vs2, vs2, vs2, 1 594; CHECK-BE-NEXT: sldi r3, r3, 56 595; CHECK-BE-NEXT: xscvdpsxws f3, f3 596; CHECK-BE-NEXT: xscvspdpn f2, vs2 597; CHECK-BE-NEXT: mtvsrd v4, r3 598; CHECK-BE-NEXT: xscvdpsxws f2, f2 599; CHECK-BE-NEXT: vmrghb v3, v4, v3 600; CHECK-BE-NEXT: mffprwz r3, f3 601; CHECK-BE-NEXT: sldi r3, r3, 56 602; CHECK-BE-NEXT: mtvsrd v4, r3 603; CHECK-BE-NEXT: mffprwz r3, f2 604; CHECK-BE-NEXT: xxsldwi vs2, vs1, vs1, 3 605; CHECK-BE-NEXT: sldi r3, r3, 56 606; CHECK-BE-NEXT: xscvspdpn f2, vs2 607; CHECK-BE-NEXT: mtvsrd v5, r3 608; CHECK-BE-NEXT: xscvdpsxws f2, f2 609; CHECK-BE-NEXT: vmrghb v4, v4, v5 610; CHECK-BE-NEXT: vmrghh v3, v4, v3 611; CHECK-BE-NEXT: vmrghw v2, v3, v2 612; CHECK-BE-NEXT: mffprwz r3, f2 613; CHECK-BE-NEXT: xxswapd vs2, vs1 614; CHECK-BE-NEXT: sldi r3, r3, 56 615; CHECK-BE-NEXT: xscvspdpn f2, vs2 616; CHECK-BE-NEXT: mtvsrd v3, r3 617; CHECK-BE-NEXT: xscvdpsxws f2, f2 618; CHECK-BE-NEXT: mffprwz r3, f2 619; CHECK-BE-NEXT: xscvspdpn f2, vs1 620; CHECK-BE-NEXT: xxsldwi vs1, vs1, vs1, 1 621; CHECK-BE-NEXT: sldi r3, r3, 56 622; CHECK-BE-NEXT: xscvdpsxws f2, f2 623; CHECK-BE-NEXT: xscvspdpn f1, vs1 624; CHECK-BE-NEXT: mtvsrd v4, r3 625; CHECK-BE-NEXT: xscvdpsxws f1, f1 626; CHECK-BE-NEXT: vmrghb v3, v4, v3 627; CHECK-BE-NEXT: mffprwz r3, f2 628; CHECK-BE-NEXT: sldi r3, r3, 56 629; CHECK-BE-NEXT: mtvsrd v4, r3 630; CHECK-BE-NEXT: mffprwz r3, f1 631; CHECK-BE-NEXT: xxsldwi vs1, vs0, vs0, 3 632; CHECK-BE-NEXT: sldi r3, r3, 56 633; CHECK-BE-NEXT: xscvspdpn f1, vs1 634; CHECK-BE-NEXT: mtvsrd v5, r3 635; CHECK-BE-NEXT: xscvdpsxws f1, f1 636; CHECK-BE-NEXT: vmrghb v4, v4, v5 637; CHECK-BE-NEXT: vmrghh v3, v4, v3 638; CHECK-BE-NEXT: mffprwz r3, f1 639; CHECK-BE-NEXT: xxswapd vs1, vs0 640; CHECK-BE-NEXT: sldi r3, r3, 56 641; CHECK-BE-NEXT: xscvspdpn f1, vs1 642; CHECK-BE-NEXT: mtvsrd v4, r3 643; CHECK-BE-NEXT: xscvdpsxws f1, f1 644; CHECK-BE-NEXT: mffprwz r3, f1 645; CHECK-BE-NEXT: xscvspdpn f1, vs0 646; CHECK-BE-NEXT: xxsldwi vs0, vs0, vs0, 1 647; CHECK-BE-NEXT: sldi r3, r3, 56 648; CHECK-BE-NEXT: xscvdpsxws f1, f1 649; CHECK-BE-NEXT: xscvspdpn f0, vs0 650; CHECK-BE-NEXT: mtvsrd v5, r3 651; CHECK-BE-NEXT: xscvdpsxws f0, f0 652; CHECK-BE-NEXT: vmrghb v4, v5, v4 653; CHECK-BE-NEXT: mffprwz r3, f1 654; CHECK-BE-NEXT: sldi r3, r3, 56 655; CHECK-BE-NEXT: mtvsrd v5, r3 656; CHECK-BE-NEXT: mffprwz r3, f0 657; CHECK-BE-NEXT: sldi r3, r3, 56 658; CHECK-BE-NEXT: mtvsrd v0, r3 659; CHECK-BE-NEXT: vmrghb v5, v5, v0 660; CHECK-BE-NEXT: vmrghh v4, v5, v4 661; CHECK-BE-NEXT: vmrghw v3, v4, v3 662; CHECK-BE-NEXT: xxmrghd v2, v3, v2 663; CHECK-BE-NEXT: blr 664entry: 665 %a = load <16 x float>, <16 x float>* %0, align 64 666 %1 = fptoui <16 x float> %a to <16 x i8> 667 ret <16 x i8> %1 668} 669 670define i16 @test2elt_signed(i64 %a.coerce) local_unnamed_addr #0 { 671; CHECK-P8-LABEL: test2elt_signed: 672; CHECK-P8: # %bb.0: # %entry 673; CHECK-P8-NEXT: mtfprd f0, r3 674; CHECK-P8-NEXT: xxswapd v2, vs0 675; CHECK-P8-NEXT: xscvspdpn f0, vs0 676; CHECK-P8-NEXT: xxsldwi vs1, v2, v2, 3 677; CHECK-P8-NEXT: xscvspdpn f1, vs1 678; CHECK-P8-NEXT: xscvdpsxws f0, f0 679; CHECK-P8-NEXT: xscvdpsxws f1, f1 680; CHECK-P8-NEXT: mffprwz r4, f0 681; CHECK-P8-NEXT: mtvsrd v3, r4 682; CHECK-P8-NEXT: mffprwz r3, f1 683; CHECK-P8-NEXT: mtvsrd v2, r3 684; CHECK-P8-NEXT: vmrghb v2, v3, v2 685; CHECK-P8-NEXT: xxswapd vs0, v2 686; CHECK-P8-NEXT: mffprd r3, f0 687; CHECK-P8-NEXT: clrldi r3, r3, 48 688; CHECK-P8-NEXT: sth r3, -2(r1) 689; CHECK-P8-NEXT: lhz r3, -2(r1) 690; CHECK-P8-NEXT: blr 691; 692; CHECK-P9-LABEL: test2elt_signed: 693; CHECK-P9: # %bb.0: # %entry 694; CHECK-P9-NEXT: mtfprd f0, r3 695; CHECK-P9-NEXT: xxswapd v2, vs0 696; CHECK-P9-NEXT: xscvspdpn f0, vs0 697; CHECK-P9-NEXT: xxsldwi vs1, v2, v2, 3 698; CHECK-P9-NEXT: xscvdpsxws f0, f0 699; CHECK-P9-NEXT: xscvspdpn f1, vs1 700; CHECK-P9-NEXT: xscvdpsxws f1, f1 701; CHECK-P9-NEXT: mffprwz r3, f1 702; CHECK-P9-NEXT: mtvsrd v2, r3 703; CHECK-P9-NEXT: mffprwz r3, f0 704; CHECK-P9-NEXT: mtvsrd v3, r3 705; CHECK-P9-NEXT: addi r3, r1, -2 706; CHECK-P9-NEXT: vmrghb v2, v3, v2 707; CHECK-P9-NEXT: vsldoi v2, v2, v2, 8 708; CHECK-P9-NEXT: stxsihx v2, 0, r3 709; CHECK-P9-NEXT: lhz r3, -2(r1) 710; CHECK-P9-NEXT: blr 711; 712; CHECK-BE-LABEL: test2elt_signed: 713; CHECK-BE: # %bb.0: # %entry 714; CHECK-BE-NEXT: mtfprd f0, r3 715; CHECK-BE-NEXT: xscvspdpn f1, vs0 716; CHECK-BE-NEXT: xxsldwi vs0, vs0, vs0, 1 717; CHECK-BE-NEXT: xscvdpsxws f1, f1 718; CHECK-BE-NEXT: xscvspdpn f0, vs0 719; CHECK-BE-NEXT: xscvdpsxws f0, f0 720; CHECK-BE-NEXT: mffprwz r3, f1 721; CHECK-BE-NEXT: sldi r3, r3, 56 722; CHECK-BE-NEXT: mtvsrd v2, r3 723; CHECK-BE-NEXT: mffprwz r3, f0 724; CHECK-BE-NEXT: sldi r3, r3, 56 725; CHECK-BE-NEXT: mtvsrd v3, r3 726; CHECK-BE-NEXT: addi r3, r1, -2 727; CHECK-BE-NEXT: vmrghb v2, v2, v3 728; CHECK-BE-NEXT: vsldoi v2, v2, v2, 10 729; CHECK-BE-NEXT: stxsihx v2, 0, r3 730; CHECK-BE-NEXT: lhz r3, -2(r1) 731; CHECK-BE-NEXT: blr 732entry: 733 %0 = bitcast i64 %a.coerce to <2 x float> 734 %1 = fptosi <2 x float> %0 to <2 x i8> 735 %2 = bitcast <2 x i8> %1 to i16 736 ret i16 %2 737} 738 739define i32 @test4elt_signed(<4 x float> %a) local_unnamed_addr #1 { 740; CHECK-P8-LABEL: test4elt_signed: 741; CHECK-P8: # %bb.0: # %entry 742; CHECK-P8-NEXT: xxsldwi vs0, v2, v2, 3 743; CHECK-P8-NEXT: xscvspdpn f1, v2 744; CHECK-P8-NEXT: xxswapd vs2, v2 745; CHECK-P8-NEXT: xxsldwi vs3, v2, v2, 1 746; CHECK-P8-NEXT: xscvspdpn f0, vs0 747; CHECK-P8-NEXT: xscvspdpn f2, vs2 748; CHECK-P8-NEXT: xscvspdpn f3, vs3 749; CHECK-P8-NEXT: xscvdpsxws f1, f1 750; CHECK-P8-NEXT: xscvdpsxws f0, f0 751; CHECK-P8-NEXT: xscvdpsxws f2, f2 752; CHECK-P8-NEXT: xscvdpsxws f3, f3 753; CHECK-P8-NEXT: mffprwz r3, f1 754; CHECK-P8-NEXT: mtvsrd v2, r3 755; CHECK-P8-NEXT: mffprwz r3, f0 756; CHECK-P8-NEXT: mffprwz r4, f2 757; CHECK-P8-NEXT: mtvsrd v3, r3 758; CHECK-P8-NEXT: mffprwz r3, f3 759; CHECK-P8-NEXT: mtvsrd v4, r4 760; CHECK-P8-NEXT: mtvsrd v5, r3 761; CHECK-P8-NEXT: vmrghb v3, v4, v3 762; CHECK-P8-NEXT: vmrghb v2, v2, v5 763; CHECK-P8-NEXT: vmrglh v2, v2, v3 764; CHECK-P8-NEXT: xxswapd vs0, v2 765; CHECK-P8-NEXT: mffprwz r3, f0 766; CHECK-P8-NEXT: blr 767; 768; CHECK-P9-LABEL: test4elt_signed: 769; CHECK-P9: # %bb.0: # %entry 770; CHECK-P9-NEXT: xxsldwi vs0, v2, v2, 3 771; CHECK-P9-NEXT: xscvspdpn f0, vs0 772; CHECK-P9-NEXT: xscvdpsxws f0, f0 773; CHECK-P9-NEXT: mffprwz r3, f0 774; CHECK-P9-NEXT: xxswapd vs0, v2 775; CHECK-P9-NEXT: mtvsrd v3, r3 776; CHECK-P9-NEXT: xscvspdpn f0, vs0 777; CHECK-P9-NEXT: xscvdpsxws f0, f0 778; CHECK-P9-NEXT: mffprwz r3, f0 779; CHECK-P9-NEXT: xscvspdpn f0, v2 780; CHECK-P9-NEXT: mtvsrd v4, r3 781; CHECK-P9-NEXT: xscvdpsxws f0, f0 782; CHECK-P9-NEXT: vmrghb v3, v4, v3 783; CHECK-P9-NEXT: mffprwz r3, f0 784; CHECK-P9-NEXT: xxsldwi vs0, v2, v2, 1 785; CHECK-P9-NEXT: mtvsrd v4, r3 786; CHECK-P9-NEXT: xscvspdpn f0, vs0 787; CHECK-P9-NEXT: xscvdpsxws f0, f0 788; CHECK-P9-NEXT: mffprwz r3, f0 789; CHECK-P9-NEXT: mtvsrd v2, r3 790; CHECK-P9-NEXT: li r3, 0 791; CHECK-P9-NEXT: vmrghb v2, v4, v2 792; CHECK-P9-NEXT: vmrglh v2, v2, v3 793; CHECK-P9-NEXT: vextuwrx r3, r3, v2 794; CHECK-P9-NEXT: blr 795; 796; CHECK-BE-LABEL: test4elt_signed: 797; CHECK-BE: # %bb.0: # %entry 798; CHECK-BE-NEXT: xxsldwi vs0, v2, v2, 3 799; CHECK-BE-NEXT: xscvspdpn f0, vs0 800; CHECK-BE-NEXT: xscvdpsxws f0, f0 801; CHECK-BE-NEXT: mffprwz r3, f0 802; CHECK-BE-NEXT: xxswapd vs0, v2 803; CHECK-BE-NEXT: sldi r3, r3, 56 804; CHECK-BE-NEXT: xscvspdpn f0, vs0 805; CHECK-BE-NEXT: mtvsrd v3, r3 806; CHECK-BE-NEXT: xscvdpsxws f0, f0 807; CHECK-BE-NEXT: mffprwz r3, f0 808; CHECK-BE-NEXT: xscvspdpn f0, v2 809; CHECK-BE-NEXT: sldi r3, r3, 56 810; CHECK-BE-NEXT: xscvdpsxws f0, f0 811; CHECK-BE-NEXT: mtvsrd v4, r3 812; CHECK-BE-NEXT: vmrghb v3, v4, v3 813; CHECK-BE-NEXT: mffprwz r3, f0 814; CHECK-BE-NEXT: xxsldwi vs0, v2, v2, 1 815; CHECK-BE-NEXT: sldi r3, r3, 56 816; CHECK-BE-NEXT: xscvspdpn f0, vs0 817; CHECK-BE-NEXT: mtvsrd v4, r3 818; CHECK-BE-NEXT: xscvdpsxws f0, f0 819; CHECK-BE-NEXT: mffprwz r3, f0 820; CHECK-BE-NEXT: sldi r3, r3, 56 821; CHECK-BE-NEXT: mtvsrd v2, r3 822; CHECK-BE-NEXT: li r3, 0 823; CHECK-BE-NEXT: vmrghb v2, v4, v2 824; CHECK-BE-NEXT: vmrghh v2, v2, v3 825; CHECK-BE-NEXT: vextuwlx r3, r3, v2 826; CHECK-BE-NEXT: blr 827entry: 828 %0 = fptosi <4 x float> %a to <4 x i8> 829 %1 = bitcast <4 x i8> %0 to i32 830 ret i32 %1 831} 832 833define i64 @test8elt_signed(<8 x float>* nocapture readonly) local_unnamed_addr #2 { 834; CHECK-P8-LABEL: test8elt_signed: 835; CHECK-P8: # %bb.0: # %entry 836; CHECK-P8-NEXT: lvx v2, 0, r3 837; CHECK-P8-NEXT: li r4, 16 838; CHECK-P8-NEXT: lvx v3, r3, r4 839; CHECK-P8-NEXT: xxsldwi vs0, v2, v2, 3 840; CHECK-P8-NEXT: xxswapd vs1, v2 841; CHECK-P8-NEXT: xscvspdpn f2, v2 842; CHECK-P8-NEXT: xxsldwi vs4, v2, v2, 1 843; CHECK-P8-NEXT: xxsldwi vs5, v3, v3, 3 844; CHECK-P8-NEXT: xscvspdpn f3, v3 845; CHECK-P8-NEXT: xscvspdpn f0, vs0 846; CHECK-P8-NEXT: xscvspdpn f1, vs1 847; CHECK-P8-NEXT: xscvspdpn f4, vs4 848; CHECK-P8-NEXT: xscvspdpn f5, vs5 849; CHECK-P8-NEXT: xscvdpsxws f2, f2 850; CHECK-P8-NEXT: xscvdpsxws f3, f3 851; CHECK-P8-NEXT: xscvdpsxws f0, f0 852; CHECK-P8-NEXT: xscvdpsxws f1, f1 853; CHECK-P8-NEXT: mffprwz r3, f0 854; CHECK-P8-NEXT: xxswapd vs0, v3 855; CHECK-P8-NEXT: mffprwz r4, f1 856; CHECK-P8-NEXT: xxsldwi vs1, v3, v3, 1 857; CHECK-P8-NEXT: mtvsrd v2, r3 858; CHECK-P8-NEXT: xscvspdpn f0, vs0 859; CHECK-P8-NEXT: mffprwz r3, f2 860; CHECK-P8-NEXT: xscvdpsxws f2, f4 861; CHECK-P8-NEXT: xscvspdpn f1, vs1 862; CHECK-P8-NEXT: xscvdpsxws f4, f5 863; CHECK-P8-NEXT: mtvsrd v4, r4 864; CHECK-P8-NEXT: xscvdpsxws f0, f0 865; CHECK-P8-NEXT: vmrghb v2, v4, v2 866; CHECK-P8-NEXT: mffprwz r4, f2 867; CHECK-P8-NEXT: xscvdpsxws f1, f1 868; CHECK-P8-NEXT: mtvsrd v3, r3 869; CHECK-P8-NEXT: mffprwz r3, f3 870; CHECK-P8-NEXT: mtvsrd v4, r4 871; CHECK-P8-NEXT: mffprwz r4, f0 872; CHECK-P8-NEXT: vmrghb v3, v3, v4 873; CHECK-P8-NEXT: mtvsrd v4, r3 874; CHECK-P8-NEXT: mffprwz r3, f4 875; CHECK-P8-NEXT: mtvsrd v0, r4 876; CHECK-P8-NEXT: mtvsrd v5, r3 877; CHECK-P8-NEXT: mffprwz r3, f1 878; CHECK-P8-NEXT: vmrghb v5, v0, v5 879; CHECK-P8-NEXT: mtvsrd v1, r3 880; CHECK-P8-NEXT: vmrglh v2, v3, v2 881; CHECK-P8-NEXT: vmrghb v4, v4, v1 882; CHECK-P8-NEXT: vmrglh v3, v4, v5 883; CHECK-P8-NEXT: vmrglw v2, v3, v2 884; CHECK-P8-NEXT: xxswapd vs0, v2 885; CHECK-P8-NEXT: mffprd r3, f0 886; CHECK-P8-NEXT: blr 887; 888; CHECK-P9-LABEL: test8elt_signed: 889; CHECK-P9: # %bb.0: # %entry 890; CHECK-P9-NEXT: lxv vs1, 0(r3) 891; CHECK-P9-NEXT: lxv vs0, 16(r3) 892; CHECK-P9-NEXT: xxsldwi vs2, vs1, vs1, 3 893; CHECK-P9-NEXT: xscvspdpn f2, vs2 894; CHECK-P9-NEXT: xscvdpsxws f2, f2 895; CHECK-P9-NEXT: mffprwz r3, f2 896; CHECK-P9-NEXT: xxswapd vs2, vs1 897; CHECK-P9-NEXT: mtvsrd v2, r3 898; CHECK-P9-NEXT: xscvspdpn f2, vs2 899; CHECK-P9-NEXT: xscvdpsxws f2, f2 900; CHECK-P9-NEXT: mffprwz r3, f2 901; CHECK-P9-NEXT: xscvspdpn f2, vs1 902; CHECK-P9-NEXT: xxsldwi vs1, vs1, vs1, 1 903; CHECK-P9-NEXT: mtvsrd v3, r3 904; CHECK-P9-NEXT: xscvspdpn f1, vs1 905; CHECK-P9-NEXT: xscvdpsxws f2, f2 906; CHECK-P9-NEXT: vmrghb v2, v3, v2 907; CHECK-P9-NEXT: xscvdpsxws f1, f1 908; CHECK-P9-NEXT: mffprwz r3, f2 909; CHECK-P9-NEXT: mtvsrd v3, r3 910; CHECK-P9-NEXT: mffprwz r3, f1 911; CHECK-P9-NEXT: xxsldwi vs1, vs0, vs0, 3 912; CHECK-P9-NEXT: mtvsrd v4, r3 913; CHECK-P9-NEXT: xscvspdpn f1, vs1 914; CHECK-P9-NEXT: vmrghb v3, v3, v4 915; CHECK-P9-NEXT: xscvdpsxws f1, f1 916; CHECK-P9-NEXT: vmrglh v2, v3, v2 917; CHECK-P9-NEXT: mffprwz r3, f1 918; CHECK-P9-NEXT: xxswapd vs1, vs0 919; CHECK-P9-NEXT: mtvsrd v3, r3 920; CHECK-P9-NEXT: xscvspdpn f1, vs1 921; CHECK-P9-NEXT: xscvdpsxws f1, f1 922; CHECK-P9-NEXT: mffprwz r3, f1 923; CHECK-P9-NEXT: xscvspdpn f1, vs0 924; CHECK-P9-NEXT: xxsldwi vs0, vs0, vs0, 1 925; CHECK-P9-NEXT: mtvsrd v4, r3 926; CHECK-P9-NEXT: xscvspdpn f0, vs0 927; CHECK-P9-NEXT: xscvdpsxws f1, f1 928; CHECK-P9-NEXT: vmrghb v3, v4, v3 929; CHECK-P9-NEXT: xscvdpsxws f0, f0 930; CHECK-P9-NEXT: mffprwz r3, f1 931; CHECK-P9-NEXT: mtvsrd v4, r3 932; CHECK-P9-NEXT: mffprwz r3, f0 933; CHECK-P9-NEXT: mtvsrd v5, r3 934; CHECK-P9-NEXT: vmrghb v4, v4, v5 935; CHECK-P9-NEXT: vmrglh v3, v4, v3 936; CHECK-P9-NEXT: vmrglw v2, v3, v2 937; CHECK-P9-NEXT: mfvsrld r3, v2 938; CHECK-P9-NEXT: blr 939; 940; CHECK-BE-LABEL: test8elt_signed: 941; CHECK-BE: # %bb.0: # %entry 942; CHECK-BE-NEXT: lxv vs1, 16(r3) 943; CHECK-BE-NEXT: lxv vs0, 0(r3) 944; CHECK-BE-NEXT: xxsldwi vs2, vs1, vs1, 3 945; CHECK-BE-NEXT: xscvspdpn f2, vs2 946; CHECK-BE-NEXT: xscvdpsxws f2, f2 947; CHECK-BE-NEXT: mffprwz r3, f2 948; CHECK-BE-NEXT: xxswapd vs2, vs1 949; CHECK-BE-NEXT: sldi r3, r3, 56 950; CHECK-BE-NEXT: xscvspdpn f2, vs2 951; CHECK-BE-NEXT: mtvsrd v2, r3 952; CHECK-BE-NEXT: xscvdpsxws f2, f2 953; CHECK-BE-NEXT: mffprwz r3, f2 954; CHECK-BE-NEXT: xscvspdpn f2, vs1 955; CHECK-BE-NEXT: xxsldwi vs1, vs1, vs1, 1 956; CHECK-BE-NEXT: sldi r3, r3, 56 957; CHECK-BE-NEXT: xscvdpsxws f2, f2 958; CHECK-BE-NEXT: xscvspdpn f1, vs1 959; CHECK-BE-NEXT: mtvsrd v3, r3 960; CHECK-BE-NEXT: xscvdpsxws f1, f1 961; CHECK-BE-NEXT: vmrghb v2, v3, v2 962; CHECK-BE-NEXT: mffprwz r3, f2 963; CHECK-BE-NEXT: sldi r3, r3, 56 964; CHECK-BE-NEXT: mtvsrd v3, r3 965; CHECK-BE-NEXT: mffprwz r3, f1 966; CHECK-BE-NEXT: xxsldwi vs1, vs0, vs0, 3 967; CHECK-BE-NEXT: sldi r3, r3, 56 968; CHECK-BE-NEXT: xscvspdpn f1, vs1 969; CHECK-BE-NEXT: mtvsrd v4, r3 970; CHECK-BE-NEXT: xscvdpsxws f1, f1 971; CHECK-BE-NEXT: vmrghb v3, v3, v4 972; CHECK-BE-NEXT: vmrghh v2, v3, v2 973; CHECK-BE-NEXT: mffprwz r3, f1 974; CHECK-BE-NEXT: xxswapd vs1, vs0 975; CHECK-BE-NEXT: sldi r3, r3, 56 976; CHECK-BE-NEXT: xscvspdpn f1, vs1 977; CHECK-BE-NEXT: mtvsrd v3, r3 978; CHECK-BE-NEXT: xscvdpsxws f1, f1 979; CHECK-BE-NEXT: mffprwz r3, f1 980; CHECK-BE-NEXT: xscvspdpn f1, vs0 981; CHECK-BE-NEXT: xxsldwi vs0, vs0, vs0, 1 982; CHECK-BE-NEXT: sldi r3, r3, 56 983; CHECK-BE-NEXT: xscvdpsxws f1, f1 984; CHECK-BE-NEXT: xscvspdpn f0, vs0 985; CHECK-BE-NEXT: mtvsrd v4, r3 986; CHECK-BE-NEXT: xscvdpsxws f0, f0 987; CHECK-BE-NEXT: vmrghb v3, v4, v3 988; CHECK-BE-NEXT: mffprwz r3, f1 989; CHECK-BE-NEXT: sldi r3, r3, 56 990; CHECK-BE-NEXT: mtvsrd v4, r3 991; CHECK-BE-NEXT: mffprwz r3, f0 992; CHECK-BE-NEXT: sldi r3, r3, 56 993; CHECK-BE-NEXT: mtvsrd v5, r3 994; CHECK-BE-NEXT: vmrghb v4, v4, v5 995; CHECK-BE-NEXT: vmrghh v3, v4, v3 996; CHECK-BE-NEXT: vmrghw v2, v3, v2 997; CHECK-BE-NEXT: mfvsrd r3, v2 998; CHECK-BE-NEXT: blr 999entry: 1000 %a = load <8 x float>, <8 x float>* %0, align 32 1001 %1 = fptosi <8 x float> %a to <8 x i8> 1002 %2 = bitcast <8 x i8> %1 to i64 1003 ret i64 %2 1004} 1005 1006define <16 x i8> @test16elt_signed(<16 x float>* nocapture readonly) local_unnamed_addr #3 { 1007; CHECK-P8-LABEL: test16elt_signed: 1008; CHECK-P8: # %bb.0: # %entry 1009; CHECK-P8-NEXT: lvx v4, 0, r3 1010; CHECK-P8-NEXT: li r4, 16 1011; CHECK-P8-NEXT: li r5, 32 1012; CHECK-P8-NEXT: lvx v3, r3, r4 1013; CHECK-P8-NEXT: lvx v2, r3, r5 1014; CHECK-P8-NEXT: xxsldwi vs0, v4, v4, 3 1015; CHECK-P8-NEXT: xxswapd vs2, v4 1016; CHECK-P8-NEXT: xxsldwi vs4, v4, v4, 1 1017; CHECK-P8-NEXT: xscvspdpn f1, v4 1018; CHECK-P8-NEXT: xscvspdpn f3, v3 1019; CHECK-P8-NEXT: xxsldwi vs6, v3, v3, 3 1020; CHECK-P8-NEXT: xscvspdpn f0, vs0 1021; CHECK-P8-NEXT: xxswapd vs7, v3 1022; CHECK-P8-NEXT: xscvspdpn f2, vs2 1023; CHECK-P8-NEXT: xxsldwi vs8, v3, v3, 1 1024; CHECK-P8-NEXT: xscvspdpn f4, vs4 1025; CHECK-P8-NEXT: xxsldwi vs9, v2, v2, 3 1026; CHECK-P8-NEXT: xscvspdpn f6, vs6 1027; CHECK-P8-NEXT: xscvdpsxws f1, f1 1028; CHECK-P8-NEXT: xscvspdpn f7, vs7 1029; CHECK-P8-NEXT: xscvdpsxws f0, f0 1030; CHECK-P8-NEXT: xscvdpsxws f2, f2 1031; CHECK-P8-NEXT: xscvdpsxws f4, f4 1032; CHECK-P8-NEXT: xscvspdpn f8, vs8 1033; CHECK-P8-NEXT: xscvdpsxws f3, f3 1034; CHECK-P8-NEXT: xscvspdpn f9, vs9 1035; CHECK-P8-NEXT: mffprwz r4, f0 1036; CHECK-P8-NEXT: xxswapd vs0, v2 1037; CHECK-P8-NEXT: mffprwz r5, f2 1038; CHECK-P8-NEXT: mtvsrd v3, r4 1039; CHECK-P8-NEXT: xscvspdpn f0, vs0 1040; CHECK-P8-NEXT: mffprwz r4, f1 1041; CHECK-P8-NEXT: mtvsrd v4, r5 1042; CHECK-P8-NEXT: mffprwz r5, f4 1043; CHECK-P8-NEXT: xscvdpsxws f1, f6 1044; CHECK-P8-NEXT: vmrghb v3, v4, v3 1045; CHECK-P8-NEXT: mtvsrd v4, r5 1046; CHECK-P8-NEXT: mffprwz r5, f3 1047; CHECK-P8-NEXT: xscvdpsxws f3, f7 1048; CHECK-P8-NEXT: xscvdpsxws f4, f8 1049; CHECK-P8-NEXT: xscvdpsxws f0, f0 1050; CHECK-P8-NEXT: mtvsrd v5, r4 1051; CHECK-P8-NEXT: li r4, 48 1052; CHECK-P8-NEXT: lvx v0, r3, r4 1053; CHECK-P8-NEXT: mffprwz r3, f1 1054; CHECK-P8-NEXT: xxsldwi vs1, v2, v2, 1 1055; CHECK-P8-NEXT: xscvspdpn f5, v2 1056; CHECK-P8-NEXT: mffprwz r4, f3 1057; CHECK-P8-NEXT: xxsldwi vs3, v0, v0, 3 1058; CHECK-P8-NEXT: mtvsrd v1, r3 1059; CHECK-P8-NEXT: mffprwz r3, f4 1060; CHECK-P8-NEXT: xxswapd vs4, v0 1061; CHECK-P8-NEXT: xscvspdpn f1, vs1 1062; CHECK-P8-NEXT: mtvsrd v7, r3 1063; CHECK-P8-NEXT: mffprwz r3, f0 1064; CHECK-P8-NEXT: xxsldwi vs0, v0, v0, 1 1065; CHECK-P8-NEXT: xscvspdpn f2, v0 1066; CHECK-P8-NEXT: xscvspdpn f3, vs3 1067; CHECK-P8-NEXT: xscvdpsxws f6, f9 1068; CHECK-P8-NEXT: xscvspdpn f4, vs4 1069; CHECK-P8-NEXT: xscvspdpn f0, vs0 1070; CHECK-P8-NEXT: xscvdpsxws f5, f5 1071; CHECK-P8-NEXT: xscvdpsxws f1, f1 1072; CHECK-P8-NEXT: xscvdpsxws f2, f2 1073; CHECK-P8-NEXT: xscvdpsxws f3, f3 1074; CHECK-P8-NEXT: mtvsrd v6, r4 1075; CHECK-P8-NEXT: mffprwz r4, f6 1076; CHECK-P8-NEXT: xscvdpsxws f4, f4 1077; CHECK-P8-NEXT: xscvdpsxws f0, f0 1078; CHECK-P8-NEXT: vmrghb v2, v6, v1 1079; CHECK-P8-NEXT: mtvsrd v1, r4 1080; CHECK-P8-NEXT: mffprwz r4, f5 1081; CHECK-P8-NEXT: mtvsrd v6, r3 1082; CHECK-P8-NEXT: mffprwz r3, f1 1083; CHECK-P8-NEXT: vmrghb v4, v5, v4 1084; CHECK-P8-NEXT: mtvsrd v5, r5 1085; CHECK-P8-NEXT: vmrghb v0, v6, v1 1086; CHECK-P8-NEXT: mtvsrd v1, r4 1087; CHECK-P8-NEXT: mffprwz r4, f2 1088; CHECK-P8-NEXT: mtvsrd v6, r3 1089; CHECK-P8-NEXT: mffprwz r3, f3 1090; CHECK-P8-NEXT: vmrghb v5, v5, v7 1091; CHECK-P8-NEXT: vmrghb v1, v1, v6 1092; CHECK-P8-NEXT: mtvsrd v6, r4 1093; CHECK-P8-NEXT: mffprwz r4, f4 1094; CHECK-P8-NEXT: mtvsrd v7, r3 1095; CHECK-P8-NEXT: mffprwz r3, f0 1096; CHECK-P8-NEXT: mtvsrd v8, r4 1097; CHECK-P8-NEXT: mtvsrd v9, r3 1098; CHECK-P8-NEXT: vmrghb v7, v8, v7 1099; CHECK-P8-NEXT: vmrghb v6, v6, v9 1100; CHECK-P8-NEXT: vmrglh v3, v4, v3 1101; CHECK-P8-NEXT: vmrglh v2, v5, v2 1102; CHECK-P8-NEXT: vmrglh v4, v1, v0 1103; CHECK-P8-NEXT: vmrglh v5, v6, v7 1104; CHECK-P8-NEXT: vmrglw v2, v2, v3 1105; CHECK-P8-NEXT: vmrglw v3, v5, v4 1106; CHECK-P8-NEXT: xxmrgld v2, v3, v2 1107; CHECK-P8-NEXT: blr 1108; 1109; CHECK-P9-LABEL: test16elt_signed: 1110; CHECK-P9: # %bb.0: # %entry 1111; CHECK-P9-NEXT: lxv vs3, 0(r3) 1112; CHECK-P9-NEXT: lxv vs0, 48(r3) 1113; CHECK-P9-NEXT: lxv vs1, 32(r3) 1114; CHECK-P9-NEXT: lxv vs2, 16(r3) 1115; CHECK-P9-NEXT: xxsldwi vs4, vs3, vs3, 3 1116; CHECK-P9-NEXT: xscvspdpn f4, vs4 1117; CHECK-P9-NEXT: xscvdpsxws f4, f4 1118; CHECK-P9-NEXT: mffprwz r3, f4 1119; CHECK-P9-NEXT: xxswapd vs4, vs3 1120; CHECK-P9-NEXT: mtvsrd v2, r3 1121; CHECK-P9-NEXT: xscvspdpn f4, vs4 1122; CHECK-P9-NEXT: xscvdpsxws f4, f4 1123; CHECK-P9-NEXT: mffprwz r3, f4 1124; CHECK-P9-NEXT: xscvspdpn f4, vs3 1125; CHECK-P9-NEXT: xxsldwi vs3, vs3, vs3, 1 1126; CHECK-P9-NEXT: mtvsrd v3, r3 1127; CHECK-P9-NEXT: xscvspdpn f3, vs3 1128; CHECK-P9-NEXT: xscvdpsxws f4, f4 1129; CHECK-P9-NEXT: vmrghb v2, v3, v2 1130; CHECK-P9-NEXT: xscvdpsxws f3, f3 1131; CHECK-P9-NEXT: mffprwz r3, f4 1132; CHECK-P9-NEXT: mtvsrd v3, r3 1133; CHECK-P9-NEXT: mffprwz r3, f3 1134; CHECK-P9-NEXT: xxsldwi vs3, vs2, vs2, 3 1135; CHECK-P9-NEXT: mtvsrd v4, r3 1136; CHECK-P9-NEXT: xscvspdpn f3, vs3 1137; CHECK-P9-NEXT: vmrghb v3, v3, v4 1138; CHECK-P9-NEXT: xscvdpsxws f3, f3 1139; CHECK-P9-NEXT: vmrglh v2, v3, v2 1140; CHECK-P9-NEXT: mffprwz r3, f3 1141; CHECK-P9-NEXT: xxswapd vs3, vs2 1142; CHECK-P9-NEXT: mtvsrd v3, r3 1143; CHECK-P9-NEXT: xscvspdpn f3, vs3 1144; CHECK-P9-NEXT: xscvdpsxws f3, f3 1145; CHECK-P9-NEXT: mffprwz r3, f3 1146; CHECK-P9-NEXT: xscvspdpn f3, vs2 1147; CHECK-P9-NEXT: xxsldwi vs2, vs2, vs2, 1 1148; CHECK-P9-NEXT: mtvsrd v4, r3 1149; CHECK-P9-NEXT: xscvspdpn f2, vs2 1150; CHECK-P9-NEXT: xscvdpsxws f3, f3 1151; CHECK-P9-NEXT: vmrghb v3, v4, v3 1152; CHECK-P9-NEXT: xscvdpsxws f2, f2 1153; CHECK-P9-NEXT: mffprwz r3, f3 1154; CHECK-P9-NEXT: mtvsrd v4, r3 1155; CHECK-P9-NEXT: mffprwz r3, f2 1156; CHECK-P9-NEXT: xxsldwi vs2, vs1, vs1, 3 1157; CHECK-P9-NEXT: mtvsrd v5, r3 1158; CHECK-P9-NEXT: xscvspdpn f2, vs2 1159; CHECK-P9-NEXT: vmrghb v4, v4, v5 1160; CHECK-P9-NEXT: xscvdpsxws f2, f2 1161; CHECK-P9-NEXT: vmrglh v3, v4, v3 1162; CHECK-P9-NEXT: vmrglw v2, v3, v2 1163; CHECK-P9-NEXT: mffprwz r3, f2 1164; CHECK-P9-NEXT: xxswapd vs2, vs1 1165; CHECK-P9-NEXT: mtvsrd v3, r3 1166; CHECK-P9-NEXT: xscvspdpn f2, vs2 1167; CHECK-P9-NEXT: xscvdpsxws f2, f2 1168; CHECK-P9-NEXT: mffprwz r3, f2 1169; CHECK-P9-NEXT: xscvspdpn f2, vs1 1170; CHECK-P9-NEXT: xxsldwi vs1, vs1, vs1, 1 1171; CHECK-P9-NEXT: mtvsrd v4, r3 1172; CHECK-P9-NEXT: xscvspdpn f1, vs1 1173; CHECK-P9-NEXT: xscvdpsxws f2, f2 1174; CHECK-P9-NEXT: vmrghb v3, v4, v3 1175; CHECK-P9-NEXT: xscvdpsxws f1, f1 1176; CHECK-P9-NEXT: mffprwz r3, f2 1177; CHECK-P9-NEXT: mtvsrd v4, r3 1178; CHECK-P9-NEXT: mffprwz r3, f1 1179; CHECK-P9-NEXT: xxsldwi vs1, vs0, vs0, 3 1180; CHECK-P9-NEXT: mtvsrd v5, r3 1181; CHECK-P9-NEXT: xscvspdpn f1, vs1 1182; CHECK-P9-NEXT: vmrghb v4, v4, v5 1183; CHECK-P9-NEXT: xscvdpsxws f1, f1 1184; CHECK-P9-NEXT: vmrglh v3, v4, v3 1185; CHECK-P9-NEXT: mffprwz r3, f1 1186; CHECK-P9-NEXT: xxswapd vs1, vs0 1187; CHECK-P9-NEXT: mtvsrd v4, r3 1188; CHECK-P9-NEXT: xscvspdpn f1, vs1 1189; CHECK-P9-NEXT: xscvdpsxws f1, f1 1190; CHECK-P9-NEXT: mffprwz r3, f1 1191; CHECK-P9-NEXT: xscvspdpn f1, vs0 1192; CHECK-P9-NEXT: xxsldwi vs0, vs0, vs0, 1 1193; CHECK-P9-NEXT: mtvsrd v5, r3 1194; CHECK-P9-NEXT: xscvspdpn f0, vs0 1195; CHECK-P9-NEXT: xscvdpsxws f1, f1 1196; CHECK-P9-NEXT: vmrghb v4, v5, v4 1197; CHECK-P9-NEXT: xscvdpsxws f0, f0 1198; CHECK-P9-NEXT: mffprwz r3, f1 1199; CHECK-P9-NEXT: mtvsrd v5, r3 1200; CHECK-P9-NEXT: mffprwz r3, f0 1201; CHECK-P9-NEXT: mtvsrd v0, r3 1202; CHECK-P9-NEXT: vmrghb v5, v5, v0 1203; CHECK-P9-NEXT: vmrglh v4, v5, v4 1204; CHECK-P9-NEXT: vmrglw v3, v4, v3 1205; CHECK-P9-NEXT: xxmrgld v2, v3, v2 1206; CHECK-P9-NEXT: blr 1207; 1208; CHECK-BE-LABEL: test16elt_signed: 1209; CHECK-BE: # %bb.0: # %entry 1210; CHECK-BE-NEXT: lxv vs3, 48(r3) 1211; CHECK-BE-NEXT: lxv vs0, 0(r3) 1212; CHECK-BE-NEXT: lxv vs1, 16(r3) 1213; CHECK-BE-NEXT: lxv vs2, 32(r3) 1214; CHECK-BE-NEXT: xxsldwi vs4, vs3, vs3, 3 1215; CHECK-BE-NEXT: xscvspdpn f4, vs4 1216; CHECK-BE-NEXT: xscvdpsxws f4, f4 1217; CHECK-BE-NEXT: mffprwz r3, f4 1218; CHECK-BE-NEXT: xxswapd vs4, vs3 1219; CHECK-BE-NEXT: sldi r3, r3, 56 1220; CHECK-BE-NEXT: xscvspdpn f4, vs4 1221; CHECK-BE-NEXT: mtvsrd v2, r3 1222; CHECK-BE-NEXT: xscvdpsxws f4, f4 1223; CHECK-BE-NEXT: mffprwz r3, f4 1224; CHECK-BE-NEXT: xscvspdpn f4, vs3 1225; CHECK-BE-NEXT: xxsldwi vs3, vs3, vs3, 1 1226; CHECK-BE-NEXT: sldi r3, r3, 56 1227; CHECK-BE-NEXT: xscvdpsxws f4, f4 1228; CHECK-BE-NEXT: xscvspdpn f3, vs3 1229; CHECK-BE-NEXT: mtvsrd v3, r3 1230; CHECK-BE-NEXT: xscvdpsxws f3, f3 1231; CHECK-BE-NEXT: vmrghb v2, v3, v2 1232; CHECK-BE-NEXT: mffprwz r3, f4 1233; CHECK-BE-NEXT: sldi r3, r3, 56 1234; CHECK-BE-NEXT: mtvsrd v3, r3 1235; CHECK-BE-NEXT: mffprwz r3, f3 1236; CHECK-BE-NEXT: xxsldwi vs3, vs2, vs2, 3 1237; CHECK-BE-NEXT: sldi r3, r3, 56 1238; CHECK-BE-NEXT: xscvspdpn f3, vs3 1239; CHECK-BE-NEXT: mtvsrd v4, r3 1240; CHECK-BE-NEXT: xscvdpsxws f3, f3 1241; CHECK-BE-NEXT: vmrghb v3, v3, v4 1242; CHECK-BE-NEXT: vmrghh v2, v3, v2 1243; CHECK-BE-NEXT: mffprwz r3, f3 1244; CHECK-BE-NEXT: xxswapd vs3, vs2 1245; CHECK-BE-NEXT: sldi r3, r3, 56 1246; CHECK-BE-NEXT: xscvspdpn f3, vs3 1247; CHECK-BE-NEXT: mtvsrd v3, r3 1248; CHECK-BE-NEXT: xscvdpsxws f3, f3 1249; CHECK-BE-NEXT: mffprwz r3, f3 1250; CHECK-BE-NEXT: xscvspdpn f3, vs2 1251; CHECK-BE-NEXT: xxsldwi vs2, vs2, vs2, 1 1252; CHECK-BE-NEXT: sldi r3, r3, 56 1253; CHECK-BE-NEXT: xscvdpsxws f3, f3 1254; CHECK-BE-NEXT: xscvspdpn f2, vs2 1255; CHECK-BE-NEXT: mtvsrd v4, r3 1256; CHECK-BE-NEXT: xscvdpsxws f2, f2 1257; CHECK-BE-NEXT: vmrghb v3, v4, v3 1258; CHECK-BE-NEXT: mffprwz r3, f3 1259; CHECK-BE-NEXT: sldi r3, r3, 56 1260; CHECK-BE-NEXT: mtvsrd v4, r3 1261; CHECK-BE-NEXT: mffprwz r3, f2 1262; CHECK-BE-NEXT: xxsldwi vs2, vs1, vs1, 3 1263; CHECK-BE-NEXT: sldi r3, r3, 56 1264; CHECK-BE-NEXT: xscvspdpn f2, vs2 1265; CHECK-BE-NEXT: mtvsrd v5, r3 1266; CHECK-BE-NEXT: xscvdpsxws f2, f2 1267; CHECK-BE-NEXT: vmrghb v4, v4, v5 1268; CHECK-BE-NEXT: vmrghh v3, v4, v3 1269; CHECK-BE-NEXT: vmrghw v2, v3, v2 1270; CHECK-BE-NEXT: mffprwz r3, f2 1271; CHECK-BE-NEXT: xxswapd vs2, vs1 1272; CHECK-BE-NEXT: sldi r3, r3, 56 1273; CHECK-BE-NEXT: xscvspdpn f2, vs2 1274; CHECK-BE-NEXT: mtvsrd v3, r3 1275; CHECK-BE-NEXT: xscvdpsxws f2, f2 1276; CHECK-BE-NEXT: mffprwz r3, f2 1277; CHECK-BE-NEXT: xscvspdpn f2, vs1 1278; CHECK-BE-NEXT: xxsldwi vs1, vs1, vs1, 1 1279; CHECK-BE-NEXT: sldi r3, r3, 56 1280; CHECK-BE-NEXT: xscvdpsxws f2, f2 1281; CHECK-BE-NEXT: xscvspdpn f1, vs1 1282; CHECK-BE-NEXT: mtvsrd v4, r3 1283; CHECK-BE-NEXT: xscvdpsxws f1, f1 1284; CHECK-BE-NEXT: vmrghb v3, v4, v3 1285; CHECK-BE-NEXT: mffprwz r3, f2 1286; CHECK-BE-NEXT: sldi r3, r3, 56 1287; CHECK-BE-NEXT: mtvsrd v4, r3 1288; CHECK-BE-NEXT: mffprwz r3, f1 1289; CHECK-BE-NEXT: xxsldwi vs1, vs0, vs0, 3 1290; CHECK-BE-NEXT: sldi r3, r3, 56 1291; CHECK-BE-NEXT: xscvspdpn f1, vs1 1292; CHECK-BE-NEXT: mtvsrd v5, r3 1293; CHECK-BE-NEXT: xscvdpsxws f1, f1 1294; CHECK-BE-NEXT: vmrghb v4, v4, v5 1295; CHECK-BE-NEXT: vmrghh v3, v4, v3 1296; CHECK-BE-NEXT: mffprwz r3, f1 1297; CHECK-BE-NEXT: xxswapd vs1, vs0 1298; CHECK-BE-NEXT: sldi r3, r3, 56 1299; CHECK-BE-NEXT: xscvspdpn f1, vs1 1300; CHECK-BE-NEXT: mtvsrd v4, r3 1301; CHECK-BE-NEXT: xscvdpsxws f1, f1 1302; CHECK-BE-NEXT: mffprwz r3, f1 1303; CHECK-BE-NEXT: xscvspdpn f1, vs0 1304; CHECK-BE-NEXT: xxsldwi vs0, vs0, vs0, 1 1305; CHECK-BE-NEXT: sldi r3, r3, 56 1306; CHECK-BE-NEXT: xscvdpsxws f1, f1 1307; CHECK-BE-NEXT: xscvspdpn f0, vs0 1308; CHECK-BE-NEXT: mtvsrd v5, r3 1309; CHECK-BE-NEXT: xscvdpsxws f0, f0 1310; CHECK-BE-NEXT: vmrghb v4, v5, v4 1311; CHECK-BE-NEXT: mffprwz r3, f1 1312; CHECK-BE-NEXT: sldi r3, r3, 56 1313; CHECK-BE-NEXT: mtvsrd v5, r3 1314; CHECK-BE-NEXT: mffprwz r3, f0 1315; CHECK-BE-NEXT: sldi r3, r3, 56 1316; CHECK-BE-NEXT: mtvsrd v0, r3 1317; CHECK-BE-NEXT: vmrghb v5, v5, v0 1318; CHECK-BE-NEXT: vmrghh v4, v5, v4 1319; CHECK-BE-NEXT: vmrghw v3, v4, v3 1320; CHECK-BE-NEXT: xxmrghd v2, v3, v2 1321; CHECK-BE-NEXT: blr 1322entry: 1323 %a = load <16 x float>, <16 x float>* %0, align 64 1324 %1 = fptosi <16 x float> %a to <16 x i8> 1325 ret <16 x i8> %1 1326} 1327