121 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+avx | FileCheck %s3 4define <8 x i32> @foo(<8 x i32> %arg1, i32 %n) #0 {5; CHECK-LABEL: foo:6; CHECK: # %bb.0: # %entry7; CHECK-NEXT: # kill: def $edi killed $edi def $rdi8; CHECK-NEXT: vmovups %ymm0, -{{[0-9]+}}(%rsp)9; CHECK-NEXT: andl $7, %edi10; CHECK-NEXT: movl $42, -40(%rsp,%rdi,4)11; CHECK-NEXT: vmovups -{{[0-9]+}}(%rsp), %ymm012; CHECK-NEXT: retq13entry:14 %a = insertelement <8 x i32> %arg1, i32 42, i32 %n15 ret <8 x i32> %a16}17 18define <8 x i32> @foo2(<8 x i32> %arg1, i32 %n) alignstack(8) #0 {19; CHECK-LABEL: foo2:20; CHECK: # %bb.0: # %entry21; CHECK-NEXT: # kill: def $edi killed $edi def $rdi22; CHECK-NEXT: vmovups %ymm0, -{{[0-9]+}}(%rsp)23; CHECK-NEXT: andl $7, %edi24; CHECK-NEXT: movl $42, -32(%rsp,%rdi,4)25; CHECK-NEXT: vmovups -{{[0-9]+}}(%rsp), %ymm026; CHECK-NEXT: retq27entry:28 %a = insertelement <8 x i32> %arg1, i32 42, i32 %n29 ret <8 x i32> %a30}31 32define <8 x i32> @foo3(<8 x i32> %arg1, i32 %n) alignstack(16) #0 {33; CHECK-LABEL: foo3:34; CHECK: # %bb.0: # %entry35; CHECK-NEXT: # kill: def $edi killed $edi def $rdi36; CHECK-NEXT: vmovups %ymm0, -{{[0-9]+}}(%rsp)37; CHECK-NEXT: andl $7, %edi38; CHECK-NEXT: movl $42, -40(%rsp,%rdi,4)39; CHECK-NEXT: vmovups -{{[0-9]+}}(%rsp), %ymm040; CHECK-NEXT: retq41entry:42 %a = insertelement <8 x i32> %arg1, i32 42, i32 %n43 ret <8 x i32> %a44}45 46define <8 x i32> @foo4(<8 x i32> %arg1, i32 %n) alignstack(64) #0 {47; CHECK-LABEL: foo4:48; CHECK: # %bb.0: # %entry49; CHECK-NEXT: # kill: def $edi killed $edi def $rdi50; CHECK-NEXT: vmovaps %ymm0, -{{[0-9]+}}(%rsp)51; CHECK-NEXT: andl $7, %edi52; CHECK-NEXT: movl $42, -56(%rsp,%rdi,4)53; CHECK-NEXT: vmovaps -{{[0-9]+}}(%rsp), %ymm054; CHECK-NEXT: retq55entry:56 %a = insertelement <8 x i32> %arg1, i32 42, i32 %n57 ret <8 x i32> %a58}59 60define <8 x i32> @foo5(<8 x i32> %arg1, i32 %n) alignstack(256) #0 {61; CHECK-LABEL: foo5:62; CHECK: # %bb.0: # %entry63; CHECK-NEXT: subq $120, %rsp64; CHECK-NEXT: # kill: def $edi killed $edi def $rdi65; CHECK-NEXT: vmovaps %ymm0, {{[0-9]+}}(%rsp)66; CHECK-NEXT: andl $7, %edi67; CHECK-NEXT: movl $42, 64(%rsp,%rdi,4)68; CHECK-NEXT: vmovaps {{[0-9]+}}(%rsp), %ymm069; CHECK-NEXT: addq $120, %rsp70; CHECK-NEXT: retq71entry:72 %a = insertelement <8 x i32> %arg1, i32 42, i32 %n73 ret <8 x i32> %a74}75 76define <8 x i16> @foo6(<8 x i16> %arg1, i32 %n) #0 {77; CHECK-LABEL: foo6:78; CHECK: # %bb.0: # %entry79; CHECK-NEXT: # kill: def $edi killed $edi def $rdi80; CHECK-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)81; CHECK-NEXT: andl $7, %edi82; CHECK-NEXT: movw $42, -24(%rsp,%rdi,2)83; CHECK-NEXT: vmovaps -{{[0-9]+}}(%rsp), %xmm084; CHECK-NEXT: retq85entry:86 %a = insertelement <8 x i16> %arg1, i16 42, i32 %n87 ret <8 x i16> %a88}89 90define <8 x i8> @foo7(<8 x i8> %arg1, i32 %n) #0 {91; CHECK-LABEL: foo7:92; CHECK: # %bb.0: # %entry93; CHECK-NEXT: # kill: def $edi killed $edi def $rdi94; CHECK-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)95; CHECK-NEXT: andl $15, %edi96; CHECK-NEXT: movb $42, -24(%rsp,%rdi)97; CHECK-NEXT: vmovaps -{{[0-9]+}}(%rsp), %xmm098; CHECK-NEXT: retq99entry:100 %a = insertelement <8 x i8> %arg1, i8 42, i32 %n101 ret <8 x i8> %a102}103 104define <8 x i64> @foo8(<8 x i64> %arg1, i32 %n) #0 {105; CHECK-LABEL: foo8:106; CHECK: # %bb.0: # %entry107; CHECK-NEXT: # kill: def $edi killed $edi def $rdi108; CHECK-NEXT: vmovups %ymm1, -{{[0-9]+}}(%rsp)109; CHECK-NEXT: vmovups %ymm0, -{{[0-9]+}}(%rsp)110; CHECK-NEXT: andl $7, %edi111; CHECK-NEXT: movq $42, -72(%rsp,%rdi,8)112; CHECK-NEXT: vmovups -{{[0-9]+}}(%rsp), %ymm0113; CHECK-NEXT: vmovups -{{[0-9]+}}(%rsp), %ymm1114; CHECK-NEXT: retq115entry:116 %a = insertelement <8 x i64> %arg1, i64 42, i32 %n117 ret <8 x i64> %a118}119 120attributes #0 = { "no-realign-stack" nounwind }121