1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i686-unknown-linux-gnu -mattr=+avx2 | FileCheck %s --check-prefix=X32 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+avx2 | FileCheck %s --check-prefix=X64 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine void @f(<8 x float> %A, i8* %B, <4 x double> %C, <4 x i64> %E, <8 x i32> %F, <16 x i16> %G, <32 x i8> %H) nounwind { 6*9880d681SAndroid Build Coastguard Worker; X32-LABEL: f: 7*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 8*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pushl %ebp 9*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl %esp, %ebp 10*9880d681SAndroid Build Coastguard Worker; X32-NEXT: andl $-32, %esp 11*9880d681SAndroid Build Coastguard Worker; X32-NEXT: subl $32, %esp 12*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovdqa 104(%ebp), %ymm3 13*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovdqa 72(%ebp), %ymm4 14*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovdqa 40(%ebp), %ymm5 15*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl 8(%ebp), %eax 16*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vaddps .LCPI0_0, %ymm0, %ymm0 17*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovntps %ymm0, (%eax) 18*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpaddq .LCPI0_1, %ymm2, %ymm0 19*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovntdq %ymm0, (%eax) 20*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vaddpd .LCPI0_2, %ymm1, %ymm0 21*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovntpd %ymm0, (%eax) 22*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpaddd .LCPI0_3, %ymm5, %ymm0 23*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovntdq %ymm0, (%eax) 24*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpaddw .LCPI0_4, %ymm4, %ymm0 25*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovntdq %ymm0, (%eax) 26*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpaddb .LCPI0_5, %ymm3, %ymm0 27*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovntdq %ymm0, (%eax) 28*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl %ebp, %esp 29*9880d681SAndroid Build Coastguard Worker; X32-NEXT: popl %ebp 30*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vzeroupper 31*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 32*9880d681SAndroid Build Coastguard Worker; 33*9880d681SAndroid Build Coastguard Worker; X64-LABEL: f: 34*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 35*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vaddps {{.*}}(%rip), %ymm0, %ymm0 36*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovntps %ymm0, (%rdi) 37*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpaddq {{.*}}(%rip), %ymm2, %ymm0 38*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovntdq %ymm0, (%rdi) 39*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vaddpd {{.*}}(%rip), %ymm1, %ymm0 40*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovntpd %ymm0, (%rdi) 41*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpaddd {{.*}}(%rip), %ymm3, %ymm0 42*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovntdq %ymm0, (%rdi) 43*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpaddw {{.*}}(%rip), %ymm4, %ymm0 44*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovntdq %ymm0, (%rdi) 45*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpaddb {{.*}}(%rip), %ymm5, %ymm0 46*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovntdq %ymm0, (%rdi) 47*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vzeroupper 48*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 49*9880d681SAndroid Build Coastguard Worker %cast = bitcast i8* %B to <8 x float>* 50*9880d681SAndroid Build Coastguard Worker %A2 = fadd <8 x float> %A, <float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, float 6.0, float 7.0, float 8.0> 51*9880d681SAndroid Build Coastguard Worker store <8 x float> %A2, <8 x float>* %cast, align 32, !nontemporal !0 52*9880d681SAndroid Build Coastguard Worker %cast1 = bitcast i8* %B to <4 x i64>* 53*9880d681SAndroid Build Coastguard Worker %E2 = add <4 x i64> %E, <i64 1, i64 2, i64 3, i64 4> 54*9880d681SAndroid Build Coastguard Worker store <4 x i64> %E2, <4 x i64>* %cast1, align 32, !nontemporal !0 55*9880d681SAndroid Build Coastguard Worker %cast2 = bitcast i8* %B to <4 x double>* 56*9880d681SAndroid Build Coastguard Worker %C2 = fadd <4 x double> %C, <double 1.0, double 2.0, double 3.0, double 4.0> 57*9880d681SAndroid Build Coastguard Worker store <4 x double> %C2, <4 x double>* %cast2, align 32, !nontemporal !0 58*9880d681SAndroid Build Coastguard Worker %cast3 = bitcast i8* %B to <8 x i32>* 59*9880d681SAndroid Build Coastguard Worker %F2 = add <8 x i32> %F, <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8> 60*9880d681SAndroid Build Coastguard Worker store <8 x i32> %F2, <8 x i32>* %cast3, align 32, !nontemporal !0 61*9880d681SAndroid Build Coastguard Worker %cast4 = bitcast i8* %B to <16 x i16>* 62*9880d681SAndroid Build Coastguard Worker %G2 = add <16 x i16> %G, <i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8> 63*9880d681SAndroid Build Coastguard Worker store <16 x i16> %G2, <16 x i16>* %cast4, align 32, !nontemporal !0 64*9880d681SAndroid Build Coastguard Worker %cast5 = bitcast i8* %B to <32 x i8>* 65*9880d681SAndroid Build Coastguard Worker %H2 = add <32 x i8> %H, <i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8> 66*9880d681SAndroid Build Coastguard Worker store <32 x i8> %H2, <32 x i8>* %cast5, align 32, !nontemporal !0 67*9880d681SAndroid Build Coastguard Worker ret void 68*9880d681SAndroid Build Coastguard Worker} 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Worker!0 = !{i32 1} 71