Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/test/CodeGen/X86/avx-intrinsics-x86-upgrade.ll
Show First 20 Lines • Show All 719 Lines • ▼ Show 20 Lines | |||||
define void @test_x86_avx_storeu_dq_256(i8* %a0, <32 x i8> %a1) { | define void @test_x86_avx_storeu_dq_256(i8* %a0, <32 x i8> %a1) { | ||||
; FIXME: unfortunately the execution domain fix pass changes this to vmovups and its hard to force with no 256-bit integer instructions | ; FIXME: unfortunately the execution domain fix pass changes this to vmovups and its hard to force with no 256-bit integer instructions | ||||
; add operation forces the execution domain. | ; add operation forces the execution domain. | ||||
; X86-AVX-LABEL: test_x86_avx_storeu_dq_256: | ; X86-AVX-LABEL: test_x86_avx_storeu_dq_256: | ||||
; 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: vextractf128 $1, %ymm0, %xmm1 # encoding: [0xc4,0xe3,0x7d,0x19,0xc1,0x01] | ; X86-AVX-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0x76,0xc9] | ||||
; X86-AVX-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2 # encoding: [0xc5,0xe9,0x76,0xd2] | ; X86-AVX-NEXT: vpsubb %xmm1, %xmm0, %xmm2 # encoding: [0xc5,0xf9,0xf8,0xd1] | ||||
; X86-AVX-NEXT: vpsubb %xmm2, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0xf8,0xca] | ; X86-AVX-NEXT: vextractf128 $1, %ymm0, %xmm0 # encoding: [0xc4,0xe3,0x7d,0x19,0xc0,0x01] | ||||
; X86-AVX-NEXT: vpsubb %xmm2, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf8,0xc2] | ; X86-AVX-NEXT: vpsubb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf8,0xc1] | ||||
; X86-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 # encoding: [0xc4,0xe3,0x7d,0x18,0xc1,0x01] | ; X86-AVX-NEXT: vmovdqu %xmm0, 16(%eax) # encoding: [0xc5,0xfa,0x7f,0x40,0x10] | ||||
; X86-AVX-NEXT: vmovups %ymm0, (%eax) # encoding: [0xc5,0xfc,0x11,0x00] | ; X86-AVX-NEXT: vmovdqu %xmm2, (%eax) # encoding: [0xc5,0xfa,0x7f,0x10] | ||||
; X86-AVX-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77] | ; X86-AVX-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77] | ||||
; X86-AVX-NEXT: retl # encoding: [0xc3] | ; X86-AVX-NEXT: retl # encoding: [0xc3] | ||||
; | ; | ||||
; X86-AVX512VL-LABEL: test_x86_avx_storeu_dq_256: | ; X86-AVX512VL-LABEL: test_x86_avx_storeu_dq_256: | ||||
; 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 %ymm1, %ymm1, %ymm1 # encoding: [0xc5,0xf5,0x76,0xc9] | ; X86-AVX512VL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 # encoding: [0xc5,0xf5,0x76,0xc9] | ||||
; X86-AVX512VL-NEXT: vpsubb %ymm1, %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf8,0xc1] | ; X86-AVX512VL-NEXT: vpsubb %ymm1, %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf8,0xc1] | ||||
; X86-AVX512VL-NEXT: vmovdqu %ymm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xfe,0x7f,0x00] | ; X86-AVX512VL-NEXT: vmovdqu %ymm0, (%eax) # EVEX TO VEX Compression encoding: [0xc5,0xfe,0x7f,0x00] | ||||
; X86-AVX512VL-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77] | ; X86-AVX512VL-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77] | ||||
; X86-AVX512VL-NEXT: retl # encoding: [0xc3] | ; X86-AVX512VL-NEXT: retl # encoding: [0xc3] | ||||
; | ; | ||||
; X64-AVX-LABEL: test_x86_avx_storeu_dq_256: | ; X64-AVX-LABEL: test_x86_avx_storeu_dq_256: | ||||
; X64-AVX: # %bb.0: | ; X64-AVX: # %bb.0: | ||||
; X64-AVX-NEXT: vextractf128 $1, %ymm0, %xmm1 # encoding: [0xc4,0xe3,0x7d,0x19,0xc1,0x01] | ; X64-AVX-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0x76,0xc9] | ||||
; X64-AVX-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2 # encoding: [0xc5,0xe9,0x76,0xd2] | ; X64-AVX-NEXT: vpsubb %xmm1, %xmm0, %xmm2 # encoding: [0xc5,0xf9,0xf8,0xd1] | ||||
; X64-AVX-NEXT: vpsubb %xmm2, %xmm1, %xmm1 # encoding: [0xc5,0xf1,0xf8,0xca] | ; X64-AVX-NEXT: vextractf128 $1, %ymm0, %xmm0 # encoding: [0xc4,0xe3,0x7d,0x19,0xc0,0x01] | ||||
; X64-AVX-NEXT: vpsubb %xmm2, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf8,0xc2] | ; X64-AVX-NEXT: vpsubb %xmm1, %xmm0, %xmm0 # encoding: [0xc5,0xf9,0xf8,0xc1] | ||||
; X64-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 # encoding: [0xc4,0xe3,0x7d,0x18,0xc1,0x01] | ; X64-AVX-NEXT: vmovdqu %xmm0, 16(%rdi) # encoding: [0xc5,0xfa,0x7f,0x47,0x10] | ||||
; X64-AVX-NEXT: vmovups %ymm0, (%rdi) # encoding: [0xc5,0xfc,0x11,0x07] | ; X64-AVX-NEXT: vmovdqu %xmm2, (%rdi) # encoding: [0xc5,0xfa,0x7f,0x17] | ||||
; X64-AVX-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77] | ; X64-AVX-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77] | ||||
; X64-AVX-NEXT: retq # encoding: [0xc3] | ; X64-AVX-NEXT: retq # encoding: [0xc3] | ||||
; | ; | ||||
; X64-AVX512VL-LABEL: test_x86_avx_storeu_dq_256: | ; X64-AVX512VL-LABEL: test_x86_avx_storeu_dq_256: | ||||
; X64-AVX512VL: # %bb.0: | ; X64-AVX512VL: # %bb.0: | ||||
; X64-AVX512VL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 # encoding: [0xc5,0xf5,0x76,0xc9] | ; X64-AVX512VL-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1 # encoding: [0xc5,0xf5,0x76,0xc9] | ||||
; X64-AVX512VL-NEXT: vpsubb %ymm1, %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf8,0xc1] | ; X64-AVX512VL-NEXT: vpsubb %ymm1, %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf8,0xc1] | ||||
; X64-AVX512VL-NEXT: vmovdqu %ymm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xfe,0x7f,0x07] | ; X64-AVX512VL-NEXT: vmovdqu %ymm0, (%rdi) # EVEX TO VEX Compression encoding: [0xc5,0xfe,0x7f,0x07] | ||||
▲ Show 20 Lines • Show All 223 Lines • Show Last 20 Lines |