128 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lasx < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s --check-prefix=LA644 5define <64 x i64> @test1(<64 x i64> %0) nounwind {6; LA32-LABEL: test1:7; LA32: # %bb.0: # %entry8; LA32-NEXT: addi.w $sp, $sp, -329; LA32-NEXT: st.w $ra, $sp, 28 # 4-byte Folded Spill10; LA32-NEXT: st.w $fp, $sp, 24 # 4-byte Folded Spill11; LA32-NEXT: addi.w $fp, $sp, 3212; LA32-NEXT: bstrins.w $sp, $zero, 4, 013; LA32-NEXT: xvld $xr8, $fp, 014; LA32-NEXT: xvld $xr9, $fp, 3215; LA32-NEXT: xvld $xr10, $fp, 6416; LA32-NEXT: xvld $xr11, $fp, 9617; LA32-NEXT: xvld $xr12, $fp, 22418; LA32-NEXT: xvld $xr13, $fp, 19219; LA32-NEXT: xvld $xr14, $fp, 16020; LA32-NEXT: xvld $xr15, $fp, 12821; LA32-NEXT: xvst $xr12, $a0, 48022; LA32-NEXT: xvst $xr13, $a0, 44823; LA32-NEXT: xvst $xr14, $a0, 41624; LA32-NEXT: xvst $xr15, $a0, 38425; LA32-NEXT: xvst $xr11, $a0, 35226; LA32-NEXT: xvst $xr10, $a0, 32027; LA32-NEXT: xvst $xr9, $a0, 28828; LA32-NEXT: xvst $xr8, $a0, 25629; LA32-NEXT: xvst $xr7, $a0, 22430; LA32-NEXT: xvst $xr6, $a0, 19231; LA32-NEXT: xvst $xr5, $a0, 16032; LA32-NEXT: xvst $xr4, $a0, 12833; LA32-NEXT: xvst $xr3, $a0, 9634; LA32-NEXT: xvst $xr2, $a0, 6435; LA32-NEXT: xvst $xr1, $a0, 3236; LA32-NEXT: xvst $xr0, $a0, 037; LA32-NEXT: addi.w $sp, $fp, -3238; LA32-NEXT: ld.w $fp, $sp, 24 # 4-byte Folded Reload39; LA32-NEXT: ld.w $ra, $sp, 28 # 4-byte Folded Reload40; LA32-NEXT: addi.w $sp, $sp, 3241; LA32-NEXT: ret42;43; LA64-LABEL: test1:44; LA64: # %bb.0: # %entry45; LA64-NEXT: addi.d $sp, $sp, -3246; LA64-NEXT: st.d $ra, $sp, 24 # 8-byte Folded Spill47; LA64-NEXT: st.d $fp, $sp, 16 # 8-byte Folded Spill48; LA64-NEXT: addi.d $fp, $sp, 3249; LA64-NEXT: bstrins.d $sp, $zero, 4, 050; LA64-NEXT: xvld $xr8, $fp, 051; LA64-NEXT: xvld $xr9, $fp, 3252; LA64-NEXT: xvld $xr10, $fp, 6453; LA64-NEXT: xvld $xr11, $fp, 9654; LA64-NEXT: xvld $xr12, $fp, 22455; LA64-NEXT: xvld $xr13, $fp, 19256; LA64-NEXT: xvld $xr14, $fp, 16057; LA64-NEXT: xvld $xr15, $fp, 12858; LA64-NEXT: xvst $xr12, $a0, 48059; LA64-NEXT: xvst $xr13, $a0, 44860; LA64-NEXT: xvst $xr14, $a0, 41661; LA64-NEXT: xvst $xr15, $a0, 38462; LA64-NEXT: xvst $xr11, $a0, 35263; LA64-NEXT: xvst $xr10, $a0, 32064; LA64-NEXT: xvst $xr9, $a0, 28865; LA64-NEXT: xvst $xr8, $a0, 25666; LA64-NEXT: xvst $xr7, $a0, 22467; LA64-NEXT: xvst $xr6, $a0, 19268; LA64-NEXT: xvst $xr5, $a0, 16069; LA64-NEXT: xvst $xr4, $a0, 12870; LA64-NEXT: xvst $xr3, $a0, 9671; LA64-NEXT: xvst $xr2, $a0, 6472; LA64-NEXT: xvst $xr1, $a0, 3273; LA64-NEXT: xvst $xr0, $a0, 074; LA64-NEXT: addi.d $sp, $fp, -3275; LA64-NEXT: ld.d $fp, $sp, 16 # 8-byte Folded Reload76; LA64-NEXT: ld.d $ra, $sp, 24 # 8-byte Folded Reload77; LA64-NEXT: addi.d $sp, $sp, 3278; LA64-NEXT: ret79entry:80 ret <64 x i64> %081}82 83define <32 x double> @test2(<32 x double> %0, <32 x double> %1) nounwind {84; LA32-LABEL: test2:85; LA32: # %bb.0: # %entry86; LA32-NEXT: addi.w $sp, $sp, -3287; LA32-NEXT: st.w $ra, $sp, 28 # 4-byte Folded Spill88; LA32-NEXT: st.w $fp, $sp, 24 # 4-byte Folded Spill89; LA32-NEXT: addi.w $fp, $sp, 3290; LA32-NEXT: bstrins.w $sp, $zero, 4, 091; LA32-NEXT: xvst $xr7, $a0, 22492; LA32-NEXT: xvst $xr6, $a0, 19293; LA32-NEXT: xvst $xr5, $a0, 16094; LA32-NEXT: xvst $xr4, $a0, 12895; LA32-NEXT: xvst $xr3, $a0, 9696; LA32-NEXT: xvst $xr2, $a0, 6497; LA32-NEXT: xvst $xr1, $a0, 3298; LA32-NEXT: xvst $xr0, $a0, 099; LA32-NEXT: addi.w $sp, $fp, -32100; LA32-NEXT: ld.w $fp, $sp, 24 # 4-byte Folded Reload101; LA32-NEXT: ld.w $ra, $sp, 28 # 4-byte Folded Reload102; LA32-NEXT: addi.w $sp, $sp, 32103; LA32-NEXT: ret104;105; LA64-LABEL: test2:106; LA64: # %bb.0: # %entry107; LA64-NEXT: addi.d $sp, $sp, -32108; LA64-NEXT: st.d $ra, $sp, 24 # 8-byte Folded Spill109; LA64-NEXT: st.d $fp, $sp, 16 # 8-byte Folded Spill110; LA64-NEXT: addi.d $fp, $sp, 32111; LA64-NEXT: bstrins.d $sp, $zero, 4, 0112; LA64-NEXT: xvst $xr7, $a0, 224113; LA64-NEXT: xvst $xr6, $a0, 192114; LA64-NEXT: xvst $xr5, $a0, 160115; LA64-NEXT: xvst $xr4, $a0, 128116; LA64-NEXT: xvst $xr3, $a0, 96117; LA64-NEXT: xvst $xr2, $a0, 64118; LA64-NEXT: xvst $xr1, $a0, 32119; LA64-NEXT: xvst $xr0, $a0, 0120; LA64-NEXT: addi.d $sp, $fp, -32121; LA64-NEXT: ld.d $fp, $sp, 16 # 8-byte Folded Reload122; LA64-NEXT: ld.d $ra, $sp, 24 # 8-byte Folded Reload123; LA64-NEXT: addi.d $sp, $sp, 32124; LA64-NEXT: ret125entry:126 ret <32 x double> %0127}128