brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 983fce4 Raw
152 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \3; RUN:   -ppc-asm-full-reg-names \4; RUN:   -ppc-vsr-nums-as-vr -mcpu=future < %s | FileCheck %s5; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-aix \6; RUN:   -ppc-asm-full-reg-names \7; RUN:   -ppc-vsr-nums-as-vr -mcpu=future < %s | FileCheck %s --check-prefix=AIX8; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-aix \9; RUN:   -ppc-asm-full-reg-names \10; RUN:   -ppc-vsr-nums-as-vr -mcpu=future < %s | FileCheck %s --check-prefix=AIX3211 12declare <1024 x i1> @llvm.ppc.mma.dmxvbf16gerx2pp(<1024 x i1>, <256 x i1>, <16 x i8>)13declare void @dummy_func()14 15define void @spillDMRreg(ptr %vop, ptr %vpp, ptr %vcp, ptr %resp) nounwind {16; CHECK-LABEL: spillDMRreg:17; CHECK:       # %bb.0:18; CHECK-NEXT:    mflr r019; CHECK-NEXT:    std r30, -16(r1) # 8-byte Folded Spill20; CHECK-NEXT:    std r0, 16(r1)21; CHECK-NEXT:    stdu r1, -176(r1)22; CHECK-NEXT:    lxvp vsp34, 0(r3)23; CHECK-NEXT:    lxvp vsp36, 32(r3)24; CHECK-NEXT:    mr r30, r625; CHECK-NEXT:    dmxxinstdmr512 wacc_hi0, vsp36, vsp34, 126; CHECK-NEXT:    lxvp vsp34, 64(r3)27; CHECK-NEXT:    lxvp vsp36, 96(r3)28; CHECK-NEXT:    dmxxinstdmr512 wacc0, vsp36, vsp34, 029; CHECK-NEXT:    lxv v2, 16(r4)30; CHECK-NEXT:    lxv v3, 0(r4)31; CHECK-NEXT:    lxv vs0, 0(r5)32; CHECK-NEXT:    dmxvbf16gerx2pp dmr0, vsp34, vs033; CHECK-NEXT:    dmxxextfdmr512 vsp36, vsp34, wacc0, 034; CHECK-NEXT:    stxvp vsp36, 128(r1)35; CHECK-NEXT:    stxvp vsp34, 96(r1)36; CHECK-NEXT:    dmxxextfdmr512 vsp36, vsp34, wacc_hi0, 137; CHECK-NEXT:    stxvp vsp36, 64(r1)38; CHECK-NEXT:    stxvp vsp34, 32(r1)39; CHECK-NEXT:    bl dummy_func@notoc40; CHECK-NEXT:    lxvp vsp34, 128(r1)41; CHECK-NEXT:    lxvp vsp36, 96(r1)42; CHECK-NEXT:    dmxxinstdmr512 wacc0, vsp34, vsp36, 043; CHECK-NEXT:    lxvp vsp34, 64(r1)44; CHECK-NEXT:    lxvp vsp36, 32(r1)45; CHECK-NEXT:    dmxxinstdmr512 wacc_hi0, vsp34, vsp36, 146; CHECK-NEXT:    dmxxextfdmr512 vsp34, vsp36, wacc0, 047; CHECK-NEXT:    stxvp vsp34, 96(r30)48; CHECK-NEXT:    stxvp vsp36, 64(r30)49; CHECK-NEXT:    dmxxextfdmr512 vsp34, vsp36, wacc_hi0, 150; CHECK-NEXT:    stxvp vsp34, 32(r30)51; CHECK-NEXT:    stxvp vsp36, 0(r30)52; CHECK-NEXT:    addi r1, r1, 17653; CHECK-NEXT:    ld r0, 16(r1)54; CHECK-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload55; CHECK-NEXT:    mtlr r056; CHECK-NEXT:    blr57;58; AIX-LABEL: spillDMRreg:59; AIX:       # %bb.0:60; AIX-NEXT:    mflr r061; AIX-NEXT:    std r0, 16(r1)62; AIX-NEXT:    stdu r1, -256(r1)63; AIX-NEXT:    std r31, 248(r1) # 8-byte Folded Spill64; AIX-NEXT:    lxvp vsp34, 96(r3)65; AIX-NEXT:    lxvp vsp36, 64(r3)66; AIX-NEXT:    mr r31, r667; AIX-NEXT:    dmxxinstdmr512 wacc_hi0, vsp36, vsp34, 168; AIX-NEXT:    lxvp vsp34, 32(r3)69; AIX-NEXT:    lxvp vsp36, 0(r3)70; AIX-NEXT:    dmxxinstdmr512 wacc0, vsp36, vsp34, 071; AIX-NEXT:    lxv v2, 0(r4)72; AIX-NEXT:    lxv v3, 16(r4)73; AIX-NEXT:    lxv vs0, 0(r5)74; AIX-NEXT:    dmxvbf16gerx2pp dmr0, vsp34, vs075; AIX-NEXT:    dmxxextfdmr512 vsp36, vsp34, wacc0, 076; AIX-NEXT:    stxvp vsp36, 112(r1)77; AIX-NEXT:    stxvp vsp34, 144(r1)78; AIX-NEXT:    dmxxextfdmr512 vsp36, vsp34, wacc_hi0, 179; AIX-NEXT:    stxvp vsp36, 176(r1)80; AIX-NEXT:    stxvp vsp34, 208(r1)81; AIX-NEXT:    bl .dummy_func[PR]82; AIX-NEXT:    nop83; AIX-NEXT:    lxvp vsp34, 112(r1)84; AIX-NEXT:    lxvp vsp36, 144(r1)85; AIX-NEXT:    dmxxinstdmr512 wacc0, vsp34, vsp36, 086; AIX-NEXT:    lxvp vsp34, 176(r1)87; AIX-NEXT:    lxvp vsp36, 208(r1)88; AIX-NEXT:    dmxxinstdmr512 wacc_hi0, vsp34, vsp36, 189; AIX-NEXT:    dmxxextfdmr512 vsp34, vsp36, wacc_hi0, 190; AIX-NEXT:    stxvp vsp36, 96(r31)91; AIX-NEXT:    stxvp vsp34, 64(r31)92; AIX-NEXT:    dmxxextfdmr512 vsp34, vsp36, wacc0, 093; AIX-NEXT:    stxvp vsp36, 32(r31)94; AIX-NEXT:    stxvp vsp34, 0(r31)95; AIX-NEXT:    ld r31, 248(r1) # 8-byte Folded Reload96; AIX-NEXT:    addi r1, r1, 25697; AIX-NEXT:    ld r0, 16(r1)98; AIX-NEXT:    mtlr r099; AIX-NEXT:    blr100;101; AIX32-LABEL: spillDMRreg:102; AIX32:       # %bb.0:103; AIX32-NEXT:    mflr r0104; AIX32-NEXT:    stw r0, 8(r1)105; AIX32-NEXT:    stwu r1, -208(r1)106; AIX32-NEXT:    stw r31, 204(r1) # 4-byte Folded Spill107; AIX32-NEXT:    lxvp vsp34, 96(r3)108; AIX32-NEXT:    lxvp vsp36, 64(r3)109; AIX32-NEXT:    mr r31, r6110; AIX32-NEXT:    dmxxinstdmr512 wacc_hi0, vsp36, vsp34, 1111; AIX32-NEXT:    lxvp vsp34, 32(r3)112; AIX32-NEXT:    lxvp vsp36, 0(r3)113; AIX32-NEXT:    dmxxinstdmr512 wacc0, vsp36, vsp34, 0114; AIX32-NEXT:    lxv v2, 0(r4)115; AIX32-NEXT:    lxv v3, 16(r4)116; AIX32-NEXT:    lxv vs0, 0(r5)117; AIX32-NEXT:    dmxvbf16gerx2pp dmr0, vsp34, vs0118; AIX32-NEXT:    dmxxextfdmr512 vsp36, vsp34, wacc0, 0119; AIX32-NEXT:    stxvp vsp36, 64(r1)120; AIX32-NEXT:    stxvp vsp34, 96(r1)121; AIX32-NEXT:    dmxxextfdmr512 vsp36, vsp34, wacc_hi0, 1122; AIX32-NEXT:    stxvp vsp36, 128(r1)123; AIX32-NEXT:    stxvp vsp34, 160(r1)124; AIX32-NEXT:    bl .dummy_func[PR]125; AIX32-NEXT:    nop126; AIX32-NEXT:    lxvp vsp34, 64(r1)127; AIX32-NEXT:    lxvp vsp36, 96(r1)128; AIX32-NEXT:    dmxxinstdmr512 wacc0, vsp34, vsp36, 0129; AIX32-NEXT:    lxvp vsp34, 128(r1)130; AIX32-NEXT:    lxvp vsp36, 160(r1)131; AIX32-NEXT:    dmxxinstdmr512 wacc_hi0, vsp34, vsp36, 1132; AIX32-NEXT:    dmxxextfdmr512 vsp34, vsp36, wacc_hi0, 1133; AIX32-NEXT:    stxvp vsp36, 96(r31)134; AIX32-NEXT:    stxvp vsp34, 64(r31)135; AIX32-NEXT:    dmxxextfdmr512 vsp34, vsp36, wacc0, 0136; AIX32-NEXT:    stxvp vsp36, 32(r31)137; AIX32-NEXT:    stxvp vsp34, 0(r31)138; AIX32-NEXT:    lwz r31, 204(r1) # 4-byte Folded Reload139; AIX32-NEXT:    addi r1, r1, 208140; AIX32-NEXT:    lwz r0, 8(r1)141; AIX32-NEXT:    mtlr r0142; AIX32-NEXT:    blr143  %v.dmr = load <1024 x i1>, ptr %vop, align 64144  %v1 = load <256 x i1>, ptr %vpp, align 32145  %v2 = load <16 x i8>, ptr %vcp, align 32146  %call = tail call <1024 x i1> @llvm.ppc.mma.dmxvbf16gerx2pp(<1024 x i1> %v.dmr, <256 x i1> %v1, <16 x i8> %v2)147  tail call void @dummy_func()148  %call2 = tail call <1024 x i1> @llvm.ppc.mma.dmxvbf16gerx2pp(<1024 x i1> %v.dmr, <256 x i1> %v1, <16 x i8> %v2)149  store <1024 x i1> %call, ptr %resp, align 64150  ret void151}152