231 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \3; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -disable-auto-paired-vec-st=false \4; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s5; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \6; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -disable-auto-paired-vec-st=false \7; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=CHECK-BE8 9; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \10; RUN: -mcpu=pwr11 -ppc-asm-full-reg-names -disable-auto-paired-vec-st=false \11; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s12; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \13; RUN: -mcpu=pwr11 -ppc-asm-full-reg-names -disable-auto-paired-vec-st=false \14; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=CHECK-BE15 16; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \17; RUN: -mcpu=future -ppc-asm-full-reg-names -disable-auto-paired-vec-st=false \18; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=CHECK-LE-WACC19; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \20; RUN: -mcpu=future -ppc-asm-full-reg-names -disable-auto-paired-vec-st=false \21; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=CHECK-BE-WACC22 23declare <512 x i1> @llvm.ppc.mma.xvf16ger2pp(<512 x i1>, <16 x i8>, <16 x i8>)24declare <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8>, <16 x i8>, <16 x i8>, <16 x i8>)25declare void @foo()26define void @intrinsics1(<16 x i8> %vc1, <16 x i8> %vc2, <16 x i8> %vc3, <16 x i8> %vc4, ptr %ptr) {27; CHECK-LABEL: intrinsics1:28; CHECK: # %bb.0:29; CHECK-NEXT: mflr r030; CHECK-NEXT: std r0, 16(r1)31; CHECK-NEXT: stdu r1, -176(r1)32; CHECK-NEXT: .cfi_def_cfa_offset 17633; CHECK-NEXT: .cfi_offset lr, 1634; CHECK-NEXT: .cfi_offset r30, -1635; CHECK-NEXT: .cfi_offset v28, -8036; CHECK-NEXT: .cfi_offset v29, -6437; CHECK-NEXT: .cfi_offset v30, -4838; CHECK-NEXT: .cfi_offset v31, -3239; CHECK-NEXT: stxv v28, 96(r1) # 16-byte Folded Spill40; CHECK-NEXT: stxv v29, 112(r1) # 16-byte Folded Spill41; CHECK-NEXT: vmr v29, v342; CHECK-NEXT: vmr v28, v243; CHECK-NEXT: xxlor vs0, v28, v2844; CHECK-NEXT: stxv v30, 128(r1) # 16-byte Folded Spill45; CHECK-NEXT: stxv v31, 144(r1) # 16-byte Folded Spill46; CHECK-NEXT: vmr v31, v547; CHECK-NEXT: vmr v30, v448; CHECK-NEXT: xxlor vs2, v30, v3049; CHECK-NEXT: xxlor vs3, v31, v3150; CHECK-NEXT: xxlor vs1, v29, v2951; CHECK-NEXT: std r30, 160(r1) # 8-byte Folded Spill52; CHECK-NEXT: ld r30, 272(r1)53; CHECK-NEXT: xxmtacc acc054; CHECK-NEXT: xvf16ger2pp acc0, v2, v455; CHECK-NEXT: xxmfacc acc056; CHECK-NEXT: stxvp vsp0, 64(r1)57; CHECK-NEXT: stxvp vsp2, 32(r1)58; CHECK-NEXT: bl foo@notoc59; CHECK-NEXT: lxvp vsp0, 64(r1)60; CHECK-NEXT: lxvp vsp2, 32(r1)61; CHECK-NEXT: xxmtacc acc062; CHECK-NEXT: xvf16ger2pp acc0, v28, v3063; CHECK-NEXT: lxv v31, 144(r1) # 16-byte Folded Reload64; CHECK-NEXT: lxv v30, 128(r1) # 16-byte Folded Reload65; CHECK-NEXT: lxv v29, 112(r1) # 16-byte Folded Reload66; CHECK-NEXT: lxv v28, 96(r1) # 16-byte Folded Reload67; CHECK-NEXT: xxmfacc acc068; CHECK-NEXT: stxv vs0, 48(r30)69; CHECK-NEXT: stxv vs1, 32(r30)70; CHECK-NEXT: stxv vs2, 16(r30)71; CHECK-NEXT: stxv vs3, 0(r30)72; CHECK-NEXT: ld r30, 160(r1) # 8-byte Folded Reload73; CHECK-NEXT: addi r1, r1, 17674; CHECK-NEXT: ld r0, 16(r1)75; CHECK-NEXT: mtlr r076; CHECK-NEXT: blr77;78; CHECK-BE-LABEL: intrinsics1:79; CHECK-BE: # %bb.0:80; CHECK-BE-NEXT: mflr r081; CHECK-BE-NEXT: std r0, 16(r1)82; CHECK-BE-NEXT: stdu r1, -256(r1)83; CHECK-BE-NEXT: .cfi_def_cfa_offset 25684; CHECK-BE-NEXT: .cfi_offset lr, 1685; CHECK-BE-NEXT: .cfi_offset r30, -1686; CHECK-BE-NEXT: .cfi_offset v28, -8087; CHECK-BE-NEXT: .cfi_offset v29, -6488; CHECK-BE-NEXT: .cfi_offset v30, -4889; CHECK-BE-NEXT: .cfi_offset v31, -3290; CHECK-BE-NEXT: stxv v28, 176(r1) # 16-byte Folded Spill91; CHECK-BE-NEXT: stxv v29, 192(r1) # 16-byte Folded Spill92; CHECK-BE-NEXT: vmr v29, v393; CHECK-BE-NEXT: vmr v28, v294; CHECK-BE-NEXT: xxlor vs0, v28, v2895; CHECK-BE-NEXT: stxv v30, 208(r1) # 16-byte Folded Spill96; CHECK-BE-NEXT: stxv v31, 224(r1) # 16-byte Folded Spill97; CHECK-BE-NEXT: vmr v31, v598; CHECK-BE-NEXT: vmr v30, v499; CHECK-BE-NEXT: xxlor vs2, v30, v30100; CHECK-BE-NEXT: xxlor vs3, v31, v31101; CHECK-BE-NEXT: xxlor vs1, v29, v29102; CHECK-BE-NEXT: std r30, 240(r1) # 8-byte Folded Spill103; CHECK-BE-NEXT: ld r30, 368(r1)104; CHECK-BE-NEXT: xxmtacc acc0105; CHECK-BE-NEXT: xvf16ger2pp acc0, v2, v4106; CHECK-BE-NEXT: xxmfacc acc0107; CHECK-BE-NEXT: stxvp vsp0, 112(r1)108; CHECK-BE-NEXT: stxvp vsp2, 144(r1)109; CHECK-BE-NEXT: bl foo110; CHECK-BE-NEXT: nop111; CHECK-BE-NEXT: lxvp vsp0, 112(r1)112; CHECK-BE-NEXT: lxvp vsp2, 144(r1)113; CHECK-BE-NEXT: xxmtacc acc0114; CHECK-BE-NEXT: xvf16ger2pp acc0, v28, v30115; CHECK-BE-NEXT: lxv v31, 224(r1) # 16-byte Folded Reload116; CHECK-BE-NEXT: lxv v30, 208(r1) # 16-byte Folded Reload117; CHECK-BE-NEXT: lxv v29, 192(r1) # 16-byte Folded Reload118; CHECK-BE-NEXT: lxv v28, 176(r1) # 16-byte Folded Reload119; CHECK-BE-NEXT: xxmfacc acc0120; CHECK-BE-NEXT: stxv vs1, 16(r30)121; CHECK-BE-NEXT: stxv vs0, 0(r30)122; CHECK-BE-NEXT: stxv vs3, 48(r30)123; CHECK-BE-NEXT: stxv vs2, 32(r30)124; CHECK-BE-NEXT: ld r30, 240(r1) # 8-byte Folded Reload125; CHECK-BE-NEXT: addi r1, r1, 256126; CHECK-BE-NEXT: ld r0, 16(r1)127; CHECK-BE-NEXT: mtlr r0128; CHECK-BE-NEXT: blr129;130; CHECK-LE-WACC-LABEL: intrinsics1:131; CHECK-LE-WACC: # %bb.0:132; CHECK-LE-WACC-NEXT: mflr r0133; CHECK-LE-WACC-NEXT: std r0, 16(r1)134; CHECK-LE-WACC-NEXT: stdu r1, -176(r1)135; CHECK-LE-WACC-NEXT: .cfi_def_cfa_offset 176136; CHECK-LE-WACC-NEXT: .cfi_offset lr, 16137; CHECK-LE-WACC-NEXT: .cfi_offset r30, -16138; CHECK-LE-WACC-NEXT: .cfi_offset v28, -80139; CHECK-LE-WACC-NEXT: .cfi_offset v29, -64140; CHECK-LE-WACC-NEXT: .cfi_offset v30, -48141; CHECK-LE-WACC-NEXT: .cfi_offset v31, -32142; CHECK-LE-WACC-NEXT: stxv v28, 96(r1) # 16-byte Folded Spill143; CHECK-LE-WACC-NEXT: stxv v29, 112(r1) # 16-byte Folded Spill144; CHECK-LE-WACC-NEXT: stxv v30, 128(r1) # 16-byte Folded Spill145; CHECK-LE-WACC-NEXT: stxv v31, 144(r1) # 16-byte Folded Spill146; CHECK-LE-WACC-NEXT: vmr v31, v5147; CHECK-LE-WACC-NEXT: vmr v29, v3148; CHECK-LE-WACC-NEXT: vmr v30, v4149; CHECK-LE-WACC-NEXT: vmr v28, v2150; CHECK-LE-WACC-NEXT: std r30, 160(r1) # 8-byte Folded Spill151; CHECK-LE-WACC-NEXT: ld r30, 272(r1)152; CHECK-LE-WACC-NEXT: dmxxinstdmr512 wacc0, vsp60, vsp62, 0153; CHECK-LE-WACC-NEXT: xvf16ger2pp wacc0, v2, v4154; CHECK-LE-WACC-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc0, 0155; CHECK-LE-WACC-NEXT: stxvp vsp36, 64(r1)156; CHECK-LE-WACC-NEXT: stxvp vsp34, 32(r1)157; CHECK-LE-WACC-NEXT: bl foo@notoc158; CHECK-LE-WACC-NEXT: lxvp vsp34, 64(r1)159; CHECK-LE-WACC-NEXT: lxvp vsp36, 32(r1)160; CHECK-LE-WACC-NEXT: dmxxinstdmr512 wacc0, vsp34, vsp36, 0161; CHECK-LE-WACC-NEXT: xvf16ger2pp wacc0, v28, v30162; CHECK-LE-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0163; CHECK-LE-WACC-NEXT: stxv v4, 48(r30)164; CHECK-LE-WACC-NEXT: stxv v5, 32(r30)165; CHECK-LE-WACC-NEXT: stxv v2, 16(r30)166; CHECK-LE-WACC-NEXT: stxv v3, 0(r30)167; CHECK-LE-WACC-NEXT: lxv v31, 144(r1) # 16-byte Folded Reload168; CHECK-LE-WACC-NEXT: lxv v30, 128(r1) # 16-byte Folded Reload169; CHECK-LE-WACC-NEXT: lxv v29, 112(r1) # 16-byte Folded Reload170; CHECK-LE-WACC-NEXT: lxv v28, 96(r1) # 16-byte Folded Reload171; CHECK-LE-WACC-NEXT: ld r30, 160(r1) # 8-byte Folded Reload172; CHECK-LE-WACC-NEXT: addi r1, r1, 176173; CHECK-LE-WACC-NEXT: ld r0, 16(r1)174; CHECK-LE-WACC-NEXT: mtlr r0175; CHECK-LE-WACC-NEXT: blr176;177; CHECK-BE-WACC-LABEL: intrinsics1:178; CHECK-BE-WACC: # %bb.0:179; CHECK-BE-WACC-NEXT: mflr r0180; CHECK-BE-WACC-NEXT: std r0, 16(r1)181; CHECK-BE-WACC-NEXT: stdu r1, -256(r1)182; CHECK-BE-WACC-NEXT: .cfi_def_cfa_offset 256183; CHECK-BE-WACC-NEXT: .cfi_offset lr, 16184; CHECK-BE-WACC-NEXT: .cfi_offset r30, -16185; CHECK-BE-WACC-NEXT: .cfi_offset v28, -80186; CHECK-BE-WACC-NEXT: .cfi_offset v29, -64187; CHECK-BE-WACC-NEXT: .cfi_offset v30, -48188; CHECK-BE-WACC-NEXT: .cfi_offset v31, -32189; CHECK-BE-WACC-NEXT: stxv v28, 176(r1) # 16-byte Folded Spill190; CHECK-BE-WACC-NEXT: stxv v29, 192(r1) # 16-byte Folded Spill191; CHECK-BE-WACC-NEXT: stxv v30, 208(r1) # 16-byte Folded Spill192; CHECK-BE-WACC-NEXT: stxv v31, 224(r1) # 16-byte Folded Spill193; CHECK-BE-WACC-NEXT: vmr v31, v5194; CHECK-BE-WACC-NEXT: vmr v29, v3195; CHECK-BE-WACC-NEXT: vmr v30, v4196; CHECK-BE-WACC-NEXT: vmr v28, v2197; CHECK-BE-WACC-NEXT: std r30, 240(r1) # 8-byte Folded Spill198; CHECK-BE-WACC-NEXT: ld r30, 368(r1)199; CHECK-BE-WACC-NEXT: dmxxinstdmr512 wacc0, vsp60, vsp62, 0200; CHECK-BE-WACC-NEXT: xvf16ger2pp wacc0, v2, v4201; CHECK-BE-WACC-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc0, 0202; CHECK-BE-WACC-NEXT: stxvp vsp36, 112(r1)203; CHECK-BE-WACC-NEXT: stxvp vsp34, 144(r1)204; CHECK-BE-WACC-NEXT: bl foo205; CHECK-BE-WACC-NEXT: nop206; CHECK-BE-WACC-NEXT: lxvp vsp34, 112(r1)207; CHECK-BE-WACC-NEXT: lxvp vsp36, 144(r1)208; CHECK-BE-WACC-NEXT: dmxxinstdmr512 wacc0, vsp34, vsp36, 0209; CHECK-BE-WACC-NEXT: xvf16ger2pp wacc0, v28, v30210; CHECK-BE-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0211; CHECK-BE-WACC-NEXT: stxv v5, 48(r30)212; CHECK-BE-WACC-NEXT: stxv v4, 32(r30)213; CHECK-BE-WACC-NEXT: stxv v3, 16(r30)214; CHECK-BE-WACC-NEXT: stxv v2, 0(r30)215; CHECK-BE-WACC-NEXT: lxv v31, 224(r1) # 16-byte Folded Reload216; CHECK-BE-WACC-NEXT: lxv v30, 208(r1) # 16-byte Folded Reload217; CHECK-BE-WACC-NEXT: lxv v29, 192(r1) # 16-byte Folded Reload218; CHECK-BE-WACC-NEXT: lxv v28, 176(r1) # 16-byte Folded Reload219; CHECK-BE-WACC-NEXT: ld r30, 240(r1) # 8-byte Folded Reload220; CHECK-BE-WACC-NEXT: addi r1, r1, 256221; CHECK-BE-WACC-NEXT: ld r0, 16(r1)222; CHECK-BE-WACC-NEXT: mtlr r0223; CHECK-BE-WACC-NEXT: blr224 %1 = tail call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %vc1, <16 x i8> %vc2, <16 x i8> %vc3, <16 x i8> %vc4)225 %2 = tail call <512 x i1> @llvm.ppc.mma.xvf16ger2pp(<512 x i1> %1, <16 x i8> %vc1, <16 x i8> %vc3)226 tail call void @foo()227 %3 = tail call <512 x i1> @llvm.ppc.mma.xvf16ger2pp(<512 x i1> %2, <16 x i8> %vc1, <16 x i8> %vc3)228 store <512 x i1> %3, ptr %ptr, align 64229 ret void230}231