Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/test/CodeGen/X86/avx-intrinsics-x86.ll
Show First 20 Lines • Show All 910 Lines • ▼ Show 20 Lines | |||||
declare void @llvm.x86.avx.vzeroupper() nounwind | declare void @llvm.x86.avx.vzeroupper() nounwind | ||||
define void @movnt_dq(i8* %p, <2 x i64> %a1) nounwind { | define void @movnt_dq(i8* %p, <2 x i64> %a1) nounwind { | ||||
; X86-AVX-LABEL: movnt_dq: | ; X86-AVX-LABEL: movnt_dq: | ||||
; X86-AVX: # %bb.0: | ; X86-AVX: # %bb.0: | ||||
; X86-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | ; X86-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | ||||
; X86-AVX-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0x76,0xc9] | ; X86-AVX-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0x76,0xc9] | ||||
; X86-AVX-NEXT: vpsubq %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xfb,0xc1] | ; X86-AVX-NEXT: vpsubq %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xfb,0xc1] | ||||
; X86-AVX-NEXT: vmovntdq %ymm0, (%eax) # encoding: [0xc5,0xfd,0xe7,0x00] | ; X86-AVX-NEXT: vmovntdq %xmm0, (%eax) # encoding: [0xc5,0xf9,0xe7,0x00] | ||||
; X86-AVX-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77] | |||||
; X86-AVX-NEXT: retl # encoding: [0xc3] | ; X86-AVX-NEXT: retl # encoding: [0xc3] | ||||
; | ; | ||||
; X86-AVX512VL-LABEL: movnt_dq: | ; X86-AVX512VL-LABEL: movnt_dq: | ||||
; X86-AVX512VL: # %bb.0: | ; X86-AVX512VL: # %bb.0: | ||||
; X86-AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | ; X86-AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | ||||
; X86-AVX512VL-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0x76,0xc9] | ; X86-AVX512VL-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0x76,0xc9] | ||||
; X86-AVX512VL-NEXT: vpsubq %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xfb,0xc1] | ; X86-AVX512VL-NEXT: vpsubq %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xfb,0xc1] | ||||
; X86-AVX512VL-NEXT: vmovntdq %ymm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe7,0x00] | ; X86-AVX512VL-NEXT: vmovntdq %xmm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe7,0x00] | ||||
; X86-AVX512VL-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77] | |||||
; X86-AVX512VL-NEXT: retl # encoding: [0xc3] | ; X86-AVX512VL-NEXT: retl # encoding: [0xc3] | ||||
; | ; | ||||
; X64-AVX-LABEL: movnt_dq: | ; X64-AVX-LABEL: movnt_dq: | ||||
; X64-AVX: # %bb.0: | ; X64-AVX: # %bb.0: | ||||
; X64-AVX-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0x76,0xc9] | ; X64-AVX-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0x76,0xc9] | ||||
; X64-AVX-NEXT: vpsubq %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xfb,0xc1] | ; X64-AVX-NEXT: vpsubq %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xfb,0xc1] | ||||
; X64-AVX-NEXT: vmovntdq %ymm0, (%rdi) # encoding: [0xc5,0xfd,0xe7,0x07] | ; X64-AVX-NEXT: vmovntdq %xmm0, (%rdi) # encoding: [0xc5,0xf9,0xe7,0x07] | ||||
; X64-AVX-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77] | |||||
; X64-AVX-NEXT: retq # encoding: [0xc3] | ; X64-AVX-NEXT: retq # encoding: [0xc3] | ||||
; | ; | ||||
; X64-AVX512VL-LABEL: movnt_dq: | ; X64-AVX512VL-LABEL: movnt_dq: | ||||
; X64-AVX512VL: # %bb.0: | ; X64-AVX512VL: # %bb.0: | ||||
; X64-AVX512VL-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0x76,0xc9] | ; X64-AVX512VL-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0x76,0xc9] | ||||
; X64-AVX512VL-NEXT: vpsubq %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xfb,0xc1] | ; X64-AVX512VL-NEXT: vpsubq %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xfb,0xc1] | ||||
; X64-AVX512VL-NEXT: vmovntdq %ymm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe7,0x07] | ; X64-AVX512VL-NEXT: vmovntdq %xmm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe7,0x07] | ||||
; X64-AVX512VL-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77] | |||||
; X64-AVX512VL-NEXT: retq # encoding: [0xc3] | ; X64-AVX512VL-NEXT: retq # encoding: [0xc3] | ||||
%a2 = add <2 x i64> %a1, <i64 1, i64 1> | %a2 = add <2 x i64> %a1, <i64 1, i64 1> | ||||
%a3 = shufflevector <2 x i64> %a2, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef> | %a3 = shufflevector <2 x i64> %a2, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef> | ||||
tail call void @llvm.x86.avx.movnt.dq.256(i8* %p, <4 x i64> %a3) nounwind | tail call void @llvm.x86.avx.movnt.dq.256(i8* %p, <4 x i64> %a3) nounwind | ||||
ret void | ret void | ||||
} | } | ||||
declare void @llvm.x86.avx.movnt.dq.256(i8*, <4 x i64>) nounwind | declare void @llvm.x86.avx.movnt.dq.256(i8*, <4 x i64>) nounwind | ||||
▲ Show 20 Lines • Show All 83 Lines • Show Last 20 Lines |