214 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: -disable-auto-paired-vec-st=false -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: -disable-auto-paired-vec-st=false -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: -disable-auto-paired-vec-st=false -ppc-asm-full-reg-names \10; RUN: -ppc-vsr-nums-as-vr -mcpu=future < %s | FileCheck %s --check-prefix=AIX3211 12declare void @dummy_func()13declare <2048 x i1> @llvm.ppc.mma.dmsha3hash(<2048 x i1>, i32)14 15define dso_local void @test_dmsha3hash(ptr %vopp, ptr %resp) nounwind {16; CHECK-LABEL: test_dmsha3hash:17; CHECK: # %bb.0: # %entry18; CHECK-NEXT: mflr r019; CHECK-NEXT: std r0, 16(r1)20; CHECK-NEXT: stdu r1, -304(r1)21; CHECK-NEXT: std r30, 288(r1) # 8-byte Folded Spill22; CHECK-NEXT: lxvp vsp34, 0(r3)23; CHECK-NEXT: lxvp vsp36, 32(r3)24; CHECK-NEXT: mr r30, r425; CHECK-NEXT: dmxxinstdmr512 wacc_hi1, vsp36, vsp34, 126; CHECK-NEXT: lxvp vsp34, 64(r3)27; CHECK-NEXT: lxvp vsp36, 96(r3)28; CHECK-NEXT: dmxxinstdmr512 wacc1, vsp36, vsp34, 029; CHECK-NEXT: lxvp vsp34, 128(r3)30; CHECK-NEXT: lxvp vsp36, 160(r3)31; CHECK-NEXT: dmxxinstdmr512 wacc_hi0, vsp36, vsp34, 132; CHECK-NEXT: lxvp vsp34, 192(r3)33; CHECK-NEXT: lxvp vsp36, 224(r3)34; CHECK-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 035; CHECK-NEXT: dmsha3hash dmrp0, 536; CHECK-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc1, 037; CHECK-NEXT: stxvp vsp36, 128(r1)38; CHECK-NEXT: stxvp vsp34, 96(r1)39; CHECK-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc_hi1, 140; CHECK-NEXT: stxvp vsp36, 64(r1)41; CHECK-NEXT: stxvp vsp34, 32(r1)42; CHECK-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc0, 043; CHECK-NEXT: stxvp vsp36, 256(r1)44; CHECK-NEXT: stxvp vsp34, 224(r1)45; CHECK-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc_hi0, 146; CHECK-NEXT: stxvp vsp36, 192(r1)47; CHECK-NEXT: stxvp vsp34, 160(r1)48; CHECK-NEXT: bl dummy_func@notoc49; CHECK-NEXT: lxvp vsp34, 128(r1)50; CHECK-NEXT: lxvp vsp36, 96(r1)51; CHECK-NEXT: dmxxinstdmr512 wacc1, vsp34, vsp36, 052; CHECK-NEXT: lxvp vsp34, 64(r1)53; CHECK-NEXT: lxvp vsp36, 32(r1)54; CHECK-NEXT: dmxxinstdmr512 wacc_hi1, vsp34, vsp36, 155; CHECK-NEXT: lxvp vsp34, 256(r1)56; CHECK-NEXT: lxvp vsp36, 224(r1)57; CHECK-NEXT: dmxxinstdmr512 wacc0, vsp34, vsp36, 058; CHECK-NEXT: lxvp vsp34, 192(r1)59; CHECK-NEXT: lxvp vsp36, 160(r1)60; CHECK-NEXT: dmxxinstdmr512 wacc_hi0, vsp34, vsp36, 161; CHECK-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 062; CHECK-NEXT: stxvp vsp34, 224(r30)63; CHECK-NEXT: stxvp vsp36, 192(r30)64; CHECK-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc_hi0, 165; CHECK-NEXT: stxvp vsp34, 160(r30)66; CHECK-NEXT: stxvp vsp36, 128(r30)67; CHECK-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc1, 068; CHECK-NEXT: stxvp vsp34, 96(r30)69; CHECK-NEXT: stxvp vsp36, 64(r30)70; CHECK-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc_hi1, 171; CHECK-NEXT: stxvp vsp34, 32(r30)72; CHECK-NEXT: stxvp vsp36, 0(r30)73; CHECK-NEXT: ld r30, 288(r1) # 8-byte Folded Reload74; CHECK-NEXT: addi r1, r1, 30475; CHECK-NEXT: ld r0, 16(r1)76; CHECK-NEXT: mtlr r077; CHECK-NEXT: blr78;79; AIX-LABEL: test_dmsha3hash:80; AIX: # %bb.0: # %entry81; AIX-NEXT: mflr r082; AIX-NEXT: std r0, 16(r1)83; AIX-NEXT: stdu r1, -384(r1)84; AIX-NEXT: std r31, 376(r1) # 8-byte Folded Spill85; AIX-NEXT: lxvp vsp34, 224(r3)86; AIX-NEXT: lxvp vsp36, 192(r3)87; AIX-NEXT: mr r31, r488; AIX-NEXT: dmxxinstdmr512 wacc_hi1, vsp36, vsp34, 189; AIX-NEXT: lxvp vsp34, 160(r3)90; AIX-NEXT: lxvp vsp36, 128(r3)91; AIX-NEXT: dmxxinstdmr512 wacc1, vsp36, vsp34, 092; AIX-NEXT: lxvp vsp34, 96(r3)93; AIX-NEXT: lxvp vsp36, 64(r3)94; AIX-NEXT: dmxxinstdmr512 wacc_hi0, vsp36, vsp34, 195; AIX-NEXT: lxvp vsp34, 32(r3)96; AIX-NEXT: lxvp vsp36, 0(r3)97; AIX-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 098; AIX-NEXT: dmsha3hash dmrp0, 599; AIX-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc1, 0100; AIX-NEXT: stxvp vsp36, 112(r1)101; AIX-NEXT: stxvp vsp34, 144(r1)102; AIX-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc_hi1, 1103; AIX-NEXT: stxvp vsp36, 176(r1)104; AIX-NEXT: stxvp vsp34, 208(r1)105; AIX-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc0, 0106; AIX-NEXT: stxvp vsp36, 240(r1)107; AIX-NEXT: stxvp vsp34, 272(r1)108; AIX-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc_hi0, 1109; AIX-NEXT: stxvp vsp36, 304(r1)110; AIX-NEXT: stxvp vsp34, 336(r1)111; AIX-NEXT: bl .dummy_func[PR]112; AIX-NEXT: nop113; AIX-NEXT: lxvp vsp34, 112(r1)114; AIX-NEXT: lxvp vsp36, 144(r1)115; AIX-NEXT: dmxxinstdmr512 wacc1, vsp34, vsp36, 0116; AIX-NEXT: lxvp vsp34, 176(r1)117; AIX-NEXT: lxvp vsp36, 208(r1)118; AIX-NEXT: dmxxinstdmr512 wacc_hi1, vsp34, vsp36, 1119; AIX-NEXT: lxvp vsp34, 240(r1)120; AIX-NEXT: lxvp vsp36, 272(r1)121; AIX-NEXT: dmxxinstdmr512 wacc0, vsp34, vsp36, 0122; AIX-NEXT: lxvp vsp34, 304(r1)123; AIX-NEXT: lxvp vsp36, 336(r1)124; AIX-NEXT: dmxxinstdmr512 wacc_hi0, vsp34, vsp36, 1125; AIX-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc_hi1, 1126; AIX-NEXT: stxvp vsp36, 224(r31)127; AIX-NEXT: stxvp vsp34, 192(r31)128; AIX-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc1, 0129; AIX-NEXT: stxvp vsp36, 160(r31)130; AIX-NEXT: stxvp vsp34, 128(r31)131; AIX-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc_hi0, 1132; AIX-NEXT: stxvp vsp36, 96(r31)133; AIX-NEXT: stxvp vsp34, 64(r31)134; AIX-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0135; AIX-NEXT: stxvp vsp36, 32(r31)136; AIX-NEXT: stxvp vsp34, 0(r31)137; AIX-NEXT: ld r31, 376(r1) # 8-byte Folded Reload138; AIX-NEXT: addi r1, r1, 384139; AIX-NEXT: ld r0, 16(r1)140; AIX-NEXT: mtlr r0141; AIX-NEXT: blr142;143; AIX32-LABEL: test_dmsha3hash:144; AIX32: # %bb.0: # %entry145; AIX32-NEXT: mflr r0146; AIX32-NEXT: stw r0, 8(r1)147; AIX32-NEXT: stwu r1, -336(r1)148; AIX32-NEXT: stw r31, 332(r1) # 4-byte Folded Spill149; AIX32-NEXT: lxvp vsp34, 224(r3)150; AIX32-NEXT: lxvp vsp36, 192(r3)151; AIX32-NEXT: mr r31, r4152; AIX32-NEXT: dmxxinstdmr512 wacc_hi1, vsp36, vsp34, 1153; AIX32-NEXT: lxvp vsp34, 160(r3)154; AIX32-NEXT: lxvp vsp36, 128(r3)155; AIX32-NEXT: dmxxinstdmr512 wacc1, vsp36, vsp34, 0156; AIX32-NEXT: lxvp vsp34, 96(r3)157; AIX32-NEXT: lxvp vsp36, 64(r3)158; AIX32-NEXT: dmxxinstdmr512 wacc_hi0, vsp36, vsp34, 1159; AIX32-NEXT: lxvp vsp34, 32(r3)160; AIX32-NEXT: lxvp vsp36, 0(r3)161; AIX32-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0162; AIX32-NEXT: dmsha3hash dmrp0, 5163; AIX32-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc1, 0164; AIX32-NEXT: stxvp vsp36, 64(r1)165; AIX32-NEXT: stxvp vsp34, 96(r1)166; AIX32-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc_hi1, 1167; AIX32-NEXT: stxvp vsp36, 128(r1)168; AIX32-NEXT: stxvp vsp34, 160(r1)169; AIX32-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc0, 0170; AIX32-NEXT: stxvp vsp36, 192(r1)171; AIX32-NEXT: stxvp vsp34, 224(r1)172; AIX32-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc_hi0, 1173; AIX32-NEXT: stxvp vsp36, 256(r1)174; AIX32-NEXT: stxvp vsp34, 288(r1)175; AIX32-NEXT: bl .dummy_func[PR]176; AIX32-NEXT: nop177; AIX32-NEXT: lxvp vsp34, 64(r1)178; AIX32-NEXT: lxvp vsp36, 96(r1)179; AIX32-NEXT: dmxxinstdmr512 wacc1, vsp34, vsp36, 0180; AIX32-NEXT: lxvp vsp34, 128(r1)181; AIX32-NEXT: lxvp vsp36, 160(r1)182; AIX32-NEXT: dmxxinstdmr512 wacc_hi1, vsp34, vsp36, 1183; AIX32-NEXT: lxvp vsp34, 192(r1)184; AIX32-NEXT: lxvp vsp36, 224(r1)185; AIX32-NEXT: dmxxinstdmr512 wacc0, vsp34, vsp36, 0186; AIX32-NEXT: lxvp vsp34, 256(r1)187; AIX32-NEXT: lxvp vsp36, 288(r1)188; AIX32-NEXT: dmxxinstdmr512 wacc_hi0, vsp34, vsp36, 1189; AIX32-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc_hi1, 1190; AIX32-NEXT: stxvp vsp36, 224(r31)191; AIX32-NEXT: stxvp vsp34, 192(r31)192; AIX32-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc1, 0193; AIX32-NEXT: stxvp vsp36, 160(r31)194; AIX32-NEXT: stxvp vsp34, 128(r31)195; AIX32-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc_hi0, 1196; AIX32-NEXT: stxvp vsp36, 96(r31)197; AIX32-NEXT: stxvp vsp34, 64(r31)198; AIX32-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0199; AIX32-NEXT: stxvp vsp36, 32(r31)200; AIX32-NEXT: stxvp vsp34, 0(r31)201; AIX32-NEXT: lwz r31, 332(r1) # 4-byte Folded Reload202; AIX32-NEXT: addi r1, r1, 336203; AIX32-NEXT: lwz r0, 8(r1)204; AIX32-NEXT: mtlr r0205; AIX32-NEXT: blr206 entry:207 %0 = load <2048 x i1>, ptr %vopp, align 64208 %2 = tail call <2048 x i1> @llvm.ppc.mma.dmsha3hash(<2048 x i1> %0, i32 5)209 tail call void @dummy_func()210 %3 = tail call <2048 x i1> @llvm.ppc.mma.dmsha3hash(<2048 x i1> %0, i32 5)211 store <2048 x i1> %2, ptr %resp, align 64212 ret void213}214