Changeset View
Changeset View
Standalone View
Standalone View
test/CodeGen/X86/avx512bwvl-intrinsics.ll
Show First 20 Lines • Show All 1,525 Lines • ▼ Show 20 Lines | |||||
; X64-NEXT: retq # encoding: [0xc3] | ; X64-NEXT: retq # encoding: [0xc3] | ||||
%b = load <16 x i16>, <16 x i16>* %ptr_b | %b = load <16 x i16>, <16 x i16>* %ptr_b | ||||
%res = call <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask) | %res = call <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask) | ||||
ret <16 x i16> %res | ret <16 x i16> %res | ||||
} | } | ||||
declare <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16) | declare <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16) | ||||
define <8 x i16> @test_mask_adds_epu16_rr_128(<8 x i16> %a, <8 x i16> %b) { | |||||
; CHECK-LABEL: test_mask_adds_epu16_rr_128: | |||||
; CHECK: # %bb.0: | |||||
; CHECK-NEXT: vpaddusw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdd,0xc1] | |||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1) | |||||
ret <8 x i16> %res | |||||
} | |||||
define <8 x i16> @test_mask_adds_epu16_rrk_128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rrk_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovd %eax, %k1 # encoding: [0xc5,0xfb,0x92,0xc8] | |||||
; X86-NEXT: vpaddusw %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xdd,0xd1] | |||||
; X86-NEXT: vmovdqa %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc2] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rrk_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpaddusw %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xdd,0xd1] | |||||
; X64-NEXT: vmovdqa %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc2] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) | |||||
ret <8 x i16> %res | |||||
} | |||||
define <8 x i16> @test_mask_adds_epu16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rrkz_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovd %eax, %k1 # encoding: [0xc5,0xfb,0x92,0xc8] | |||||
; X86-NEXT: vpaddusw %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xdd,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rrkz_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpaddusw %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xdd,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask) | |||||
ret <8 x i16> %res | |||||
} | |||||
define <8 x i16> @test_mask_adds_epu16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) { | |||||
; X86-LABEL: test_mask_adds_epu16_rm_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpaddusw (%eax), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdd,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rm_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: vpaddusw (%rdi), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdd,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <8 x i16>, <8 x i16>* %ptr_b | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1) | |||||
ret <8 x i16> %res | |||||
} | |||||
define <8 x i16> @test_mask_adds_epu16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <8 x i16> %passThru, i8 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rmk_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08] | |||||
; X86-NEXT: kmovd %eax, %k1 # encoding: [0xc5,0xfb,0x92,0xc8] | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpaddusw (%eax), %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xdd,0x08] | |||||
; X86-NEXT: vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rmk_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpaddusw (%rdi), %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xdd,0x0f] | |||||
; X64-NEXT: vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <8 x i16>, <8 x i16>* %ptr_b | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) | |||||
ret <8 x i16> %res | |||||
} | |||||
define <8 x i16> @test_mask_adds_epu16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i8 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rmkz_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08] | |||||
; X86-NEXT: kmovd %eax, %k1 # encoding: [0xc5,0xfb,0x92,0xc8] | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpaddusw (%eax), %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xdd,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rmkz_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpaddusw (%rdi), %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xdd,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <8 x i16>, <8 x i16>* %ptr_b | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask) | |||||
ret <8 x i16> %res | |||||
} | |||||
declare <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8) | |||||
define <16 x i16> @test_mask_adds_epu16_rr_256(<16 x i16> %a, <16 x i16> %b) { | |||||
; CHECK-LABEL: test_mask_adds_epu16_rr_256: | |||||
; CHECK: # %bb.0: | |||||
; CHECK-NEXT: vpaddusw %ymm1, %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xdd,0xc1] | |||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1) | |||||
ret <16 x i16> %res | |||||
} | |||||
define <16 x i16> @test_mask_adds_epu16_rrk_256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rrk_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpaddusw %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xdd,0xd1] | |||||
; X86-NEXT: vmovdqa %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc2] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rrk_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpaddusw %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xdd,0xd1] | |||||
; X64-NEXT: vmovdqa %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc2] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) | |||||
ret <16 x i16> %res | |||||
} | |||||
define <16 x i16> @test_mask_adds_epu16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i16 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rrkz_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpaddusw %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xdd,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rrkz_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpaddusw %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xdd,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask) | |||||
ret <16 x i16> %res | |||||
} | |||||
define <16 x i16> @test_mask_adds_epu16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) { | |||||
; X86-LABEL: test_mask_adds_epu16_rm_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpaddusw (%eax), %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xdd,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rm_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: vpaddusw (%rdi), %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xdd,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i16>, <16 x i16>* %ptr_b | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1) | |||||
ret <16 x i16> %res | |||||
} | |||||
define <16 x i16> @test_mask_adds_epu16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <16 x i16> %passThru, i16 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rmk_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpaddusw (%eax), %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xdd,0x08] | |||||
; X86-NEXT: vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rmk_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpaddusw (%rdi), %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xdd,0x0f] | |||||
; X64-NEXT: vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i16>, <16 x i16>* %ptr_b | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) | |||||
ret <16 x i16> %res | |||||
} | |||||
define <16 x i16> @test_mask_adds_epu16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i16 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rmkz_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpaddusw (%eax), %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xdd,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rmkz_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpaddusw (%rdi), %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xdd,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i16>, <16 x i16>* %ptr_b | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask) | |||||
ret <16 x i16> %res | |||||
} | |||||
declare <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16) | |||||
define <8 x i16> @test_mask_subs_epu16_rr_128(<8 x i16> %a, <8 x i16> %b) { | |||||
; CHECK-LABEL: test_mask_subs_epu16_rr_128: | |||||
; CHECK: # %bb.0: | |||||
; CHECK-NEXT: vpsubusw %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd9,0xc1] | |||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1) | |||||
ret <8 x i16> %res | |||||
} | |||||
define <8 x i16> @test_mask_subs_epu16_rrk_128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rrk_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovd %eax, %k1 # encoding: [0xc5,0xfb,0x92,0xc8] | |||||
; X86-NEXT: vpsubusw %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xd9,0xd1] | |||||
; X86-NEXT: vmovdqa %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc2] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rrk_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpsubusw %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xd9,0xd1] | |||||
; X64-NEXT: vmovdqa %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc2] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) | |||||
ret <8 x i16> %res | |||||
} | |||||
define <8 x i16> @test_mask_subs_epu16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rrkz_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovd %eax, %k1 # encoding: [0xc5,0xfb,0x92,0xc8] | |||||
; X86-NEXT: vpsubusw %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xd9,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rrkz_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpsubusw %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xd9,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask) | |||||
ret <8 x i16> %res | |||||
} | |||||
define <8 x i16> @test_mask_subs_epu16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) { | |||||
; X86-LABEL: test_mask_subs_epu16_rm_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpsubusw (%eax), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd9,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rm_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: vpsubusw (%rdi), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd9,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <8 x i16>, <8 x i16>* %ptr_b | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1) | |||||
ret <8 x i16> %res | |||||
} | |||||
define <8 x i16> @test_mask_subs_epu16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <8 x i16> %passThru, i8 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rmk_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08] | |||||
; X86-NEXT: kmovd %eax, %k1 # encoding: [0xc5,0xfb,0x92,0xc8] | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpsubusw (%eax), %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xd9,0x08] | |||||
; X86-NEXT: vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rmk_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpsubusw (%rdi), %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xd9,0x0f] | |||||
; X64-NEXT: vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <8 x i16>, <8 x i16>* %ptr_b | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) | |||||
ret <8 x i16> %res | |||||
} | |||||
define <8 x i16> @test_mask_subs_epu16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i8 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rmkz_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x08] | |||||
; X86-NEXT: kmovd %eax, %k1 # encoding: [0xc5,0xfb,0x92,0xc8] | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpsubusw (%eax), %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xd9,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rmkz_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpsubusw (%rdi), %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xd9,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <8 x i16>, <8 x i16>* %ptr_b | |||||
%res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask) | |||||
ret <8 x i16> %res | |||||
} | |||||
declare <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8) | |||||
define <16 x i16> @test_mask_subs_epu16_rr_256(<16 x i16> %a, <16 x i16> %b) { | |||||
; CHECK-LABEL: test_mask_subs_epu16_rr_256: | |||||
; CHECK: # %bb.0: | |||||
; CHECK-NEXT: vpsubusw %ymm1, %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd9,0xc1] | |||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1) | |||||
ret <16 x i16> %res | |||||
} | |||||
define <16 x i16> @test_mask_subs_epu16_rrk_256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rrk_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpsubusw %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xd9,0xd1] | |||||
; X86-NEXT: vmovdqa %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc2] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rrk_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpsubusw %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xd9,0xd1] | |||||
; X64-NEXT: vmovdqa %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc2] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) | |||||
ret <16 x i16> %res | |||||
} | |||||
define <16 x i16> @test_mask_subs_epu16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i16 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rrkz_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpsubusw %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xd9,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rrkz_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpsubusw %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xd9,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask) | |||||
ret <16 x i16> %res | |||||
} | |||||
define <16 x i16> @test_mask_subs_epu16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) { | |||||
; X86-LABEL: test_mask_subs_epu16_rm_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpsubusw (%eax), %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd9,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rm_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: vpsubusw (%rdi), %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd9,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i16>, <16 x i16>* %ptr_b | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1) | |||||
ret <16 x i16> %res | |||||
} | |||||
define <16 x i16> @test_mask_subs_epu16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <16 x i16> %passThru, i16 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rmk_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpsubusw (%eax), %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xd9,0x08] | |||||
; X86-NEXT: vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rmk_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpsubusw (%rdi), %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xd9,0x0f] | |||||
; X64-NEXT: vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i16>, <16 x i16>* %ptr_b | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) | |||||
ret <16 x i16> %res | |||||
} | |||||
define <16 x i16> @test_mask_subs_epu16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i16 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rmkz_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpsubusw (%eax), %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xd9,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rmkz_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpsubusw (%rdi), %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xd9,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i16>, <16 x i16>* %ptr_b | |||||
%res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask) | |||||
ret <16 x i16> %res | |||||
} | |||||
declare <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16) | |||||
define <16 x i8> @test_mask_adds_epi8_rr_128(<16 x i8> %a, <16 x i8> %b) { | define <16 x i8> @test_mask_adds_epi8_rr_128(<16 x i8> %a, <16 x i8> %b) { | ||||
; CHECK-LABEL: test_mask_adds_epi8_rr_128: | ; CHECK-LABEL: test_mask_adds_epi8_rr_128: | ||||
; CHECK: # %bb.0: | ; CHECK: # %bb.0: | ||||
; CHECK-NEXT: vpaddsb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xec,0xc1] | ; CHECK-NEXT: vpaddsb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xec,0xc1] | ||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | ; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | ||||
%res = call <16 x i8> @llvm.x86.avx512.mask.padds.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1) | %res = call <16 x i8> @llvm.x86.avx512.mask.padds.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1) | ||||
ret <16 x i8> %res | ret <16 x i8> %res | ||||
} | } | ||||
▲ Show 20 Lines • Show All 380 Lines • ▼ Show 20 Lines | |||||
; X64-NEXT: retq # encoding: [0xc3] | ; X64-NEXT: retq # encoding: [0xc3] | ||||
%b = load <32 x i8>, <32 x i8>* %ptr_b | %b = load <32 x i8>, <32 x i8>* %ptr_b | ||||
%res = call <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask) | %res = call <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask) | ||||
ret <32 x i8> %res | ret <32 x i8> %res | ||||
} | } | ||||
declare <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) | declare <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) | ||||
define <16 x i8> @test_mask_adds_epu8_rr_128(<16 x i8> %a, <16 x i8> %b) { | |||||
; CHECK-LABEL: test_mask_adds_epu8_rr_128: | |||||
; CHECK: # %bb.0: | |||||
; CHECK-NEXT: vpaddusb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdc,0xc1] | |||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1) | |||||
ret <16 x i8> %res | |||||
} | |||||
define <16 x i8> @test_mask_adds_epu8_rrk_128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu8_rrk_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpaddusb %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xdc,0xd1] | |||||
; X86-NEXT: vmovdqa %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc2] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu8_rrk_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpaddusb %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xdc,0xd1] | |||||
; X64-NEXT: vmovdqa %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc2] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask) | |||||
ret <16 x i8> %res | |||||
} | |||||
define <16 x i8> @test_mask_adds_epu8_rrkz_128(<16 x i8> %a, <16 x i8> %b, i16 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu8_rrkz_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpaddusb %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xdc,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu8_rrkz_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpaddusb %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xdc,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask) | |||||
ret <16 x i8> %res | |||||
} | |||||
define <16 x i8> @test_mask_adds_epu8_rm_128(<16 x i8> %a, <16 x i8>* %ptr_b) { | |||||
; X86-LABEL: test_mask_adds_epu8_rm_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpaddusb (%eax), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdc,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu8_rm_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: vpaddusb (%rdi), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdc,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i8>, <16 x i8>* %ptr_b | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1) | |||||
ret <16 x i8> %res | |||||
} | |||||
define <16 x i8> @test_mask_adds_epu8_rmk_128(<16 x i8> %a, <16 x i8>* %ptr_b, <16 x i8> %passThru, i16 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu8_rmk_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpaddusb (%eax), %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xdc,0x08] | |||||
; X86-NEXT: vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu8_rmk_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpaddusb (%rdi), %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xdc,0x0f] | |||||
; X64-NEXT: vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i8>, <16 x i8>* %ptr_b | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask) | |||||
ret <16 x i8> %res | |||||
} | |||||
define <16 x i8> @test_mask_adds_epu8_rmkz_128(<16 x i8> %a, <16 x i8>* %ptr_b, i16 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu8_rmkz_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpaddusb (%eax), %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xdc,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu8_rmkz_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpaddusb (%rdi), %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xdc,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i8>, <16 x i8>* %ptr_b | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask) | |||||
ret <16 x i8> %res | |||||
} | |||||
declare <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16) | |||||
define <32 x i8> @test_mask_adds_epu8_rr_256(<32 x i8> %a, <32 x i8> %b) { | |||||
; CHECK-LABEL: test_mask_adds_epu8_rr_256: | |||||
; CHECK: # %bb.0: | |||||
; CHECK-NEXT: vpaddusb %ymm1, %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xdc,0xc1] | |||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1) | |||||
ret <32 x i8> %res | |||||
} | |||||
define <32 x i8> @test_mask_adds_epu8_rrk_256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu8_rrk_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpaddusb %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xdc,0xd1] | |||||
; X86-NEXT: vmovdqa %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc2] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu8_rrk_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpaddusb %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xdc,0xd1] | |||||
; X64-NEXT: vmovdqa %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc2] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask) | |||||
ret <32 x i8> %res | |||||
} | |||||
define <32 x i8> @test_mask_adds_epu8_rrkz_256(<32 x i8> %a, <32 x i8> %b, i32 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu8_rrkz_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpaddusb %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xdc,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu8_rrkz_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpaddusb %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xdc,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask) | |||||
ret <32 x i8> %res | |||||
} | |||||
define <32 x i8> @test_mask_adds_epu8_rm_256(<32 x i8> %a, <32 x i8>* %ptr_b) { | |||||
; X86-LABEL: test_mask_adds_epu8_rm_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpaddusb (%eax), %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xdc,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu8_rm_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: vpaddusb (%rdi), %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xdc,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i8>, <32 x i8>* %ptr_b | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1) | |||||
ret <32 x i8> %res | |||||
} | |||||
define <32 x i8> @test_mask_adds_epu8_rmk_256(<32 x i8> %a, <32 x i8>* %ptr_b, <32 x i8> %passThru, i32 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu8_rmk_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpaddusb (%eax), %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xdc,0x08] | |||||
; X86-NEXT: vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu8_rmk_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpaddusb (%rdi), %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xdc,0x0f] | |||||
; X64-NEXT: vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i8>, <32 x i8>* %ptr_b | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask) | |||||
ret <32 x i8> %res | |||||
} | |||||
define <32 x i8> @test_mask_adds_epu8_rmkz_256(<32 x i8> %a, <32 x i8>* %ptr_b, i32 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu8_rmkz_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpaddusb (%eax), %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xdc,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu8_rmkz_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpaddusb (%rdi), %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xdc,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i8>, <32 x i8>* %ptr_b | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask) | |||||
ret <32 x i8> %res | |||||
} | |||||
declare <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) | |||||
define <16 x i8> @test_mask_subs_epu8_rr_128(<16 x i8> %a, <16 x i8> %b) { | |||||
; CHECK-LABEL: test_mask_subs_epu8_rr_128: | |||||
; CHECK: # %bb.0: | |||||
; CHECK-NEXT: vpsubusb %xmm1, %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd8,0xc1] | |||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1) | |||||
ret <16 x i8> %res | |||||
} | |||||
define <16 x i8> @test_mask_subs_epu8_rrk_128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu8_rrk_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpsubusb %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xd8,0xd1] | |||||
; X86-NEXT: vmovdqa %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc2] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu8_rrk_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpsubusb %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xd8,0xd1] | |||||
; X64-NEXT: vmovdqa %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc2] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask) | |||||
ret <16 x i8> %res | |||||
} | |||||
define <16 x i8> @test_mask_subs_epu8_rrkz_128(<16 x i8> %a, <16 x i8> %b, i16 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu8_rrkz_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpsubusb %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xd8,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu8_rrkz_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpsubusb %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xd8,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask) | |||||
ret <16 x i8> %res | |||||
} | |||||
define <16 x i8> @test_mask_subs_epu8_rm_128(<16 x i8> %a, <16 x i8>* %ptr_b) { | |||||
; X86-LABEL: test_mask_subs_epu8_rm_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpsubusb (%eax), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd8,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu8_rm_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: vpsubusb (%rdi), %xmm0, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd8,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i8>, <16 x i8>* %ptr_b | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1) | |||||
ret <16 x i8> %res | |||||
} | |||||
define <16 x i8> @test_mask_subs_epu8_rmk_128(<16 x i8> %a, <16 x i8>* %ptr_b, <16 x i8> %passThru, i16 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu8_rmk_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpsubusb (%eax), %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xd8,0x08] | |||||
; X86-NEXT: vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu8_rmk_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpsubusb (%rdi), %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x09,0xd8,0x0f] | |||||
; X64-NEXT: vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i8>, <16 x i8>* %ptr_b | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask) | |||||
ret <16 x i8> %res | |||||
} | |||||
define <16 x i8> @test_mask_subs_epu8_rmkz_128(<16 x i8> %a, <16 x i8>* %ptr_b, i16 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu8_rmkz_128: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpsubusb (%eax), %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xd8,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu8_rmkz_128: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpsubusb (%rdi), %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0x89,0xd8,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <16 x i8>, <16 x i8>* %ptr_b | |||||
%res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask) | |||||
ret <16 x i8> %res | |||||
} | |||||
declare <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16) | |||||
define <32 x i8> @test_mask_subs_epu8_rr_256(<32 x i8> %a, <32 x i8> %b) { | |||||
; CHECK-LABEL: test_mask_subs_epu8_rr_256: | |||||
; CHECK: # %bb.0: | |||||
; CHECK-NEXT: vpsubusb %ymm1, %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd8,0xc1] | |||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1) | |||||
ret <32 x i8> %res | |||||
} | |||||
define <32 x i8> @test_mask_subs_epu8_rrk_256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu8_rrk_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpsubusb %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xd8,0xd1] | |||||
; X86-NEXT: vmovdqa %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc2] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu8_rrk_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpsubusb %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xd8,0xd1] | |||||
; X64-NEXT: vmovdqa %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc2] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask) | |||||
ret <32 x i8> %res | |||||
} | |||||
define <32 x i8> @test_mask_subs_epu8_rrkz_256(<32 x i8> %a, <32 x i8> %b, i32 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu8_rrkz_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpsubusb %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xd8,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu8_rrkz_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpsubusb %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xd8,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask) | |||||
ret <32 x i8> %res | |||||
} | |||||
define <32 x i8> @test_mask_subs_epu8_rm_256(<32 x i8> %a, <32 x i8>* %ptr_b) { | |||||
; X86-LABEL: test_mask_subs_epu8_rm_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpsubusb (%eax), %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd8,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu8_rm_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: vpsubusb (%rdi), %ymm0, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd8,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i8>, <32 x i8>* %ptr_b | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1) | |||||
ret <32 x i8> %res | |||||
} | |||||
define <32 x i8> @test_mask_subs_epu8_rmk_256(<32 x i8> %a, <32 x i8>* %ptr_b, <32 x i8> %passThru, i32 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu8_rmk_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpsubusb (%eax), %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xd8,0x08] | |||||
; X86-NEXT: vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu8_rmk_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpsubusb (%rdi), %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x29,0xd8,0x0f] | |||||
; X64-NEXT: vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i8>, <32 x i8>* %ptr_b | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask) | |||||
ret <32 x i8> %res | |||||
} | |||||
define <32 x i8> @test_mask_subs_epu8_rmkz_256(<32 x i8> %a, <32 x i8>* %ptr_b, i32 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu8_rmkz_256: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x08] | |||||
; X86-NEXT: vpsubusb (%eax), %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xd8,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu8_rmkz_256: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpsubusb (%rdi), %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xa9,0xd8,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i8>, <32 x i8>* %ptr_b | |||||
%res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask) | |||||
ret <32 x i8> %res | |||||
} | |||||
declare <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) | declare <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) | ||||
define <8 x i16>@test_int_x86_avx512_mask_vpermt2var_hi_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) { | define <8 x i16>@test_int_x86_avx512_mask_vpermt2var_hi_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) { | ||||
; X86-LABEL: test_int_x86_avx512_mask_vpermt2var_hi_128: | ; X86-LABEL: test_int_x86_avx512_mask_vpermt2var_hi_128: | ||||
; X86: # %bb.0: | ; X86: # %bb.0: | ||||
; X86-NEXT: vmovdqa %xmm1, %xmm3 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xd9] | ; X86-NEXT: vmovdqa %xmm1, %xmm3 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xd9] | ||||
; X86-NEXT: vpermt2w %xmm2, %xmm0, %xmm3 # encoding: [0x62,0xf2,0xfd,0x08,0x7d,0xda] | ; X86-NEXT: vpermt2w %xmm2, %xmm0, %xmm3 # encoding: [0x62,0xf2,0xfd,0x08,0x7d,0xda] | ||||
▲ Show 20 Lines • Show All 1,073 Lines • Show Last 20 Lines |