Changeset View
Changeset View
Standalone View
Standalone View
test/CodeGen/X86/avx512bw-intrinsics.ll
Show First 20 Lines • Show All 751 Lines • ▼ Show 20 Lines | |||||
; X64-NEXT: retq # encoding: [0xc3] | ; X64-NEXT: retq # encoding: [0xc3] | ||||
%b = load <32 x i16>, <32 x i16>* %ptr_b | %b = load <32 x i16>, <32 x i16>* %ptr_b | ||||
%res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) | %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) | ||||
ret <32 x i16> %res | ret <32 x i16> %res | ||||
} | } | ||||
declare <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) | declare <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) | ||||
define <32 x i16> @test_mask_adds_epu16_rr_512(<32 x i16> %a, <32 x i16> %b) { | |||||
; CHECK-LABEL: test_mask_adds_epu16_rr_512: | |||||
; CHECK: # %bb.0: | |||||
; CHECK-NEXT: vpaddusw %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf1,0x7d,0x48,0xdd,0xc1] | |||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) | |||||
ret <32 x i16> %res | |||||
} | |||||
define <32 x i16> @test_mask_adds_epu16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rrk_512: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpaddusw %zmm1, %zmm0, %zmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x49,0xdd,0xd1] | |||||
; X86-NEXT: vmovdqa64 %zmm2, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc2] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rrk_512: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpaddusw %zmm1, %zmm0, %zmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x49,0xdd,0xd1] | |||||
; X64-NEXT: vmovdqa64 %zmm2, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc2] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) | |||||
ret <32 x i16> %res | |||||
} | |||||
define <32 x i16> @test_mask_adds_epu16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rrkz_512: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpaddusw %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xc9,0xdd,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rrkz_512: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpaddusw %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xc9,0xdd,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) | |||||
ret <32 x i16> %res | |||||
} | |||||
define <32 x i16> @test_mask_adds_epu16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) { | |||||
; X86-LABEL: test_mask_adds_epu16_rm_512: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpaddusw (%eax), %zmm0, %zmm0 # encoding: [0x62,0xf1,0x7d,0x48,0xdd,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rm_512: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: vpaddusw (%rdi), %zmm0, %zmm0 # encoding: [0x62,0xf1,0x7d,0x48,0xdd,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i16>, <32 x i16>* %ptr_b | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) | |||||
ret <32 x i16> %res | |||||
} | |||||
define <32 x i16> @test_mask_adds_epu16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rmk_512: | |||||
; 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: vpaddusw (%eax), %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x49,0xdd,0x08] | |||||
; X86-NEXT: vmovdqa64 %zmm1, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rmk_512: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpaddusw (%rdi), %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x49,0xdd,0x0f] | |||||
; X64-NEXT: vmovdqa64 %zmm1, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i16>, <32 x i16>* %ptr_b | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) | |||||
ret <32 x i16> %res | |||||
} | |||||
define <32 x i16> @test_mask_adds_epu16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) { | |||||
; X86-LABEL: test_mask_adds_epu16_rmkz_512: | |||||
; 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: vpaddusw (%eax), %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xc9,0xdd,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_adds_epu16_rmkz_512: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpaddusw (%rdi), %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xc9,0xdd,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i16>, <32 x i16>* %ptr_b | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) | |||||
ret <32 x i16> %res | |||||
} | |||||
declare <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) | |||||
define <32 x i16> @test_mask_subs_epu16_rr_512(<32 x i16> %a, <32 x i16> %b) { | |||||
; CHECK-LABEL: test_mask_subs_epu16_rr_512: | |||||
; CHECK: # %bb.0: | |||||
; CHECK-NEXT: vpsubusw %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf1,0x7d,0x48,0xd9,0xc1] | |||||
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3] | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) | |||||
ret <32 x i16> %res | |||||
} | |||||
define <32 x i16> @test_mask_subs_epu16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rrk_512: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpsubusw %zmm1, %zmm0, %zmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x49,0xd9,0xd1] | |||||
; X86-NEXT: vmovdqa64 %zmm2, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc2] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rrk_512: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpsubusw %zmm1, %zmm0, %zmm2 {%k1} # encoding: [0x62,0xf1,0x7d,0x49,0xd9,0xd1] | |||||
; X64-NEXT: vmovdqa64 %zmm2, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc2] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) | |||||
ret <32 x i16> %res | |||||
} | |||||
define <32 x i16> @test_mask_subs_epu16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rrkz_512: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04] | |||||
; X86-NEXT: vpsubusw %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xc9,0xd9,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rrkz_512: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf] | |||||
; X64-NEXT: vpsubusw %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xc9,0xd9,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) | |||||
ret <32 x i16> %res | |||||
} | |||||
define <32 x i16> @test_mask_subs_epu16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) { | |||||
; X86-LABEL: test_mask_subs_epu16_rm_512: | |||||
; X86: # %bb.0: | |||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04] | |||||
; X86-NEXT: vpsubusw (%eax), %zmm0, %zmm0 # encoding: [0x62,0xf1,0x7d,0x48,0xd9,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rm_512: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: vpsubusw (%rdi), %zmm0, %zmm0 # encoding: [0x62,0xf1,0x7d,0x48,0xd9,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i16>, <32 x i16>* %ptr_b | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) | |||||
ret <32 x i16> %res | |||||
} | |||||
define <32 x i16> @test_mask_subs_epu16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rmk_512: | |||||
; 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: vpsubusw (%eax), %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x49,0xd9,0x08] | |||||
; X86-NEXT: vmovdqa64 %zmm1, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc1] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rmk_512: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpsubusw (%rdi), %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf1,0x7d,0x49,0xd9,0x0f] | |||||
; X64-NEXT: vmovdqa64 %zmm1, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc1] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i16>, <32 x i16>* %ptr_b | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) | |||||
ret <32 x i16> %res | |||||
} | |||||
define <32 x i16> @test_mask_subs_epu16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) { | |||||
; X86-LABEL: test_mask_subs_epu16_rmkz_512: | |||||
; 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: vpsubusw (%eax), %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xc9,0xd9,0x00] | |||||
; X86-NEXT: retl # encoding: [0xc3] | |||||
; | |||||
; X64-LABEL: test_mask_subs_epu16_rmkz_512: | |||||
; X64: # %bb.0: | |||||
; X64-NEXT: kmovd %esi, %k1 # encoding: [0xc5,0xfb,0x92,0xce] | |||||
; X64-NEXT: vpsubusw (%rdi), %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0x7d,0xc9,0xd9,0x07] | |||||
; X64-NEXT: retq # encoding: [0xc3] | |||||
%b = load <32 x i16>, <32 x i16>* %ptr_b | |||||
%res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) | |||||
ret <32 x i16> %res | |||||
} | |||||
declare <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) | |||||
define <32 x i16>@test_int_x86_avx512_mask_vpermt2var_hi_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { | define <32 x i16>@test_int_x86_avx512_mask_vpermt2var_hi_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { | ||||
; X86-LABEL: test_int_x86_avx512_mask_vpermt2var_hi_512: | ; X86-LABEL: test_int_x86_avx512_mask_vpermt2var_hi_512: | ||||
; X86: # %bb.0: | ; X86: # %bb.0: | ||||
; X86-NEXT: vmovdqa64 %zmm1, %zmm3 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xd9] | ; X86-NEXT: vmovdqa64 %zmm1, %zmm3 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xd9] | ||||
; X86-NEXT: vpermt2w %zmm2, %zmm0, %zmm3 # encoding: [0x62,0xf2,0xfd,0x48,0x7d,0xda] | ; X86-NEXT: vpermt2w %zmm2, %zmm0, %zmm3 # encoding: [0x62,0xf2,0xfd,0x48,0x7d,0xda] | ||||
; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04] | ; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04] | ||||
; X86-NEXT: vpermt2w %zmm2, %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf2,0xfd,0x49,0x7d,0xca] | ; X86-NEXT: vpermt2w %zmm2, %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf2,0xfd,0x49,0x7d,0xca] | ||||
▲ Show 20 Lines • Show All 891 Lines • Show Last 20 Lines |