Changeset View
Changeset View
Standalone View
Standalone View
test/CodeGen/X86/avx2-intrinsics-x86.ll
Show First 20 Lines • Show All 227 Lines • ▼ Show 20 Lines | |||||
; X64-AVX512VL-NEXT: vpaddsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xed,0xc1] | ; X64-AVX512VL-NEXT: vpaddsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xed,0xc1] | ||||
; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ||||
%res = call <16 x i16> @llvm.x86.avx2.padds.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] | %res = call <16 x i16> @llvm.x86.avx2.padds.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] | ||||
ret <16 x i16> %res | ret <16 x i16> %res | ||||
} | } | ||||
declare <16 x i16> @llvm.x86.avx2.padds.w(<16 x i16>, <16 x i16>) nounwind readnone | declare <16 x i16> @llvm.x86.avx2.padds.w(<16 x i16>, <16 x i16>) nounwind readnone | ||||
define <32 x i8> @test_x86_avx2_paddus_b(<32 x i8> %a0, <32 x i8> %a1) { | |||||
; X86-AVX-LABEL: test_x86_avx2_paddus_b: | |||||
; X86-AVX: ## %bb.0: | |||||
; X86-AVX-NEXT: vpaddusb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xdc,0xc1] | |||||
; X86-AVX-NEXT: retl ## encoding: [0xc3] | |||||
; | |||||
; X86-AVX512VL-LABEL: test_x86_avx2_paddus_b: | |||||
; X86-AVX512VL: ## %bb.0: | |||||
; X86-AVX512VL-NEXT: vpaddusb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xdc,0xc1] | |||||
; X86-AVX512VL-NEXT: retl ## encoding: [0xc3] | |||||
; | |||||
; X64-AVX-LABEL: test_x86_avx2_paddus_b: | |||||
; X64-AVX: ## %bb.0: | |||||
; X64-AVX-NEXT: vpaddusb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xdc,0xc1] | |||||
; X64-AVX-NEXT: retq ## encoding: [0xc3] | |||||
; | |||||
; X64-AVX512VL-LABEL: test_x86_avx2_paddus_b: | |||||
; X64-AVX512VL: ## %bb.0: | |||||
; X64-AVX512VL-NEXT: vpaddusb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xdc,0xc1] | |||||
; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | |||||
%res = call <32 x i8> @llvm.x86.avx2.paddus.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] | |||||
ret <32 x i8> %res | |||||
} | |||||
declare <32 x i8> @llvm.x86.avx2.paddus.b(<32 x i8>, <32 x i8>) nounwind readnone | |||||
define <16 x i16> @test_x86_avx2_paddus_w(<16 x i16> %a0, <16 x i16> %a1) { | |||||
; X86-AVX-LABEL: test_x86_avx2_paddus_w: | |||||
; X86-AVX: ## %bb.0: | |||||
; X86-AVX-NEXT: vpaddusw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xdd,0xc1] | |||||
; X86-AVX-NEXT: retl ## encoding: [0xc3] | |||||
; | |||||
; X86-AVX512VL-LABEL: test_x86_avx2_paddus_w: | |||||
; X86-AVX512VL: ## %bb.0: | |||||
; X86-AVX512VL-NEXT: vpaddusw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xdd,0xc1] | |||||
; X86-AVX512VL-NEXT: retl ## encoding: [0xc3] | |||||
; | |||||
; X64-AVX-LABEL: test_x86_avx2_paddus_w: | |||||
; X64-AVX: ## %bb.0: | |||||
; X64-AVX-NEXT: vpaddusw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xdd,0xc1] | |||||
; X64-AVX-NEXT: retq ## encoding: [0xc3] | |||||
; | |||||
; X64-AVX512VL-LABEL: test_x86_avx2_paddus_w: | |||||
; X64-AVX512VL: ## %bb.0: | |||||
; X64-AVX512VL-NEXT: vpaddusw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xdd,0xc1] | |||||
; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | |||||
%res = call <16 x i16> @llvm.x86.avx2.paddus.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] | |||||
ret <16 x i16> %res | |||||
} | |||||
declare <16 x i16> @llvm.x86.avx2.paddus.w(<16 x i16>, <16 x i16>) nounwind readnone | |||||
define <8 x i32> @test_x86_avx2_pmadd_wd(<16 x i16> %a0, <16 x i16> %a1) { | define <8 x i32> @test_x86_avx2_pmadd_wd(<16 x i16> %a0, <16 x i16> %a1) { | ||||
; X86-AVX-LABEL: test_x86_avx2_pmadd_wd: | ; X86-AVX-LABEL: test_x86_avx2_pmadd_wd: | ||||
; X86-AVX: ## %bb.0: | ; X86-AVX: ## %bb.0: | ||||
; X86-AVX-NEXT: vpmaddwd %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf5,0xc1] | ; X86-AVX-NEXT: vpmaddwd %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf5,0xc1] | ||||
; X86-AVX-NEXT: retl ## encoding: [0xc3] | ; X86-AVX-NEXT: retl ## encoding: [0xc3] | ||||
; | ; | ||||
; X86-AVX512VL-LABEL: test_x86_avx2_pmadd_wd: | ; X86-AVX512VL-LABEL: test_x86_avx2_pmadd_wd: | ||||
; X86-AVX512VL: ## %bb.0: | ; X86-AVX512VL: ## %bb.0: | ||||
▲ Show 20 Lines • Show All 677 Lines • ▼ Show 20 Lines | |||||
; X64-AVX512VL: ## %bb.0: | ; X64-AVX512VL: ## %bb.0: | ||||
; X64-AVX512VL-NEXT: vpsubsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe9,0xc1] | ; X64-AVX512VL-NEXT: vpsubsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe9,0xc1] | ||||
; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ||||
%res = call <16 x i16> @llvm.x86.avx2.psubs.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] | %res = call <16 x i16> @llvm.x86.avx2.psubs.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] | ||||
ret <16 x i16> %res | ret <16 x i16> %res | ||||
} | } | ||||
declare <16 x i16> @llvm.x86.avx2.psubs.w(<16 x i16>, <16 x i16>) nounwind readnone | declare <16 x i16> @llvm.x86.avx2.psubs.w(<16 x i16>, <16 x i16>) nounwind readnone | ||||
define <32 x i8> @test_x86_avx2_psubus_b(<32 x i8> %a0, <32 x i8> %a1) { | |||||
; X86-AVX-LABEL: test_x86_avx2_psubus_b: | |||||
; X86-AVX: ## %bb.0: | |||||
; X86-AVX-NEXT: vpsubusb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd8,0xc1] | |||||
; X86-AVX-NEXT: retl ## encoding: [0xc3] | |||||
; | |||||
; X86-AVX512VL-LABEL: test_x86_avx2_psubus_b: | |||||
; X86-AVX512VL: ## %bb.0: | |||||
; X86-AVX512VL-NEXT: vpsubusb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd8,0xc1] | |||||
; X86-AVX512VL-NEXT: retl ## encoding: [0xc3] | |||||
; | |||||
; X64-AVX-LABEL: test_x86_avx2_psubus_b: | |||||
; X64-AVX: ## %bb.0: | |||||
; X64-AVX-NEXT: vpsubusb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd8,0xc1] | |||||
; X64-AVX-NEXT: retq ## encoding: [0xc3] | |||||
; | |||||
; X64-AVX512VL-LABEL: test_x86_avx2_psubus_b: | |||||
; X64-AVX512VL: ## %bb.0: | |||||
; X64-AVX512VL-NEXT: vpsubusb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd8,0xc1] | |||||
; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | |||||
%res = call <32 x i8> @llvm.x86.avx2.psubus.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] | |||||
ret <32 x i8> %res | |||||
} | |||||
declare <32 x i8> @llvm.x86.avx2.psubus.b(<32 x i8>, <32 x i8>) nounwind readnone | |||||
define <16 x i16> @test_x86_avx2_psubus_w(<16 x i16> %a0, <16 x i16> %a1) { | |||||
; X86-AVX-LABEL: test_x86_avx2_psubus_w: | |||||
; X86-AVX: ## %bb.0: | |||||
; X86-AVX-NEXT: vpsubusw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd9,0xc1] | |||||
; X86-AVX-NEXT: retl ## encoding: [0xc3] | |||||
; | |||||
; X86-AVX512VL-LABEL: test_x86_avx2_psubus_w: | |||||
; X86-AVX512VL: ## %bb.0: | |||||
; X86-AVX512VL-NEXT: vpsubusw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd9,0xc1] | |||||
; X86-AVX512VL-NEXT: retl ## encoding: [0xc3] | |||||
; | |||||
; X64-AVX-LABEL: test_x86_avx2_psubus_w: | |||||
; X64-AVX: ## %bb.0: | |||||
; X64-AVX-NEXT: vpsubusw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd9,0xc1] | |||||
; X64-AVX-NEXT: retq ## encoding: [0xc3] | |||||
; | |||||
; X64-AVX512VL-LABEL: test_x86_avx2_psubus_w: | |||||
; X64-AVX512VL: ## %bb.0: | |||||
; X64-AVX512VL-NEXT: vpsubusw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd9,0xc1] | |||||
; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | |||||
%res = call <16 x i16> @llvm.x86.avx2.psubus.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] | |||||
ret <16 x i16> %res | |||||
} | |||||
declare <16 x i16> @llvm.x86.avx2.psubus.w(<16 x i16>, <16 x i16>) nounwind readnone | |||||
define <8 x i32> @test_x86_avx2_phadd_d(<8 x i32> %a0, <8 x i32> %a1) { | define <8 x i32> @test_x86_avx2_phadd_d(<8 x i32> %a0, <8 x i32> %a1) { | ||||
; X86-LABEL: test_x86_avx2_phadd_d: | ; X86-LABEL: test_x86_avx2_phadd_d: | ||||
; X86: ## %bb.0: | ; X86: ## %bb.0: | ||||
; X86-NEXT: vphaddd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x02,0xc1] | ; X86-NEXT: vphaddd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x02,0xc1] | ||||
; X86-NEXT: retl ## encoding: [0xc3] | ; X86-NEXT: retl ## encoding: [0xc3] | ||||
; | ; | ||||
; X64-LABEL: test_x86_avx2_phadd_d: | ; X64-LABEL: test_x86_avx2_phadd_d: | ||||
; X64: ## %bb.0: | ; X64: ## %bb.0: | ||||
▲ Show 20 Lines • Show All 284 Lines • ▼ Show 20 Lines | |||||
declare <16 x i16> @llvm.x86.avx2.packusdw(<8 x i32>, <8 x i32>) nounwind readnone | declare <16 x i16> @llvm.x86.avx2.packusdw(<8 x i32>, <8 x i32>) nounwind readnone | ||||
define <16 x i16> @test_x86_avx2_packusdw_fold() { | define <16 x i16> @test_x86_avx2_packusdw_fold() { | ||||
; X86-AVX-LABEL: test_x86_avx2_packusdw_fold: | ; X86-AVX-LABEL: test_x86_avx2_packusdw_fold: | ||||
; X86-AVX: ## %bb.0: | ; X86-AVX: ## %bb.0: | ||||
; X86-AVX-NEXT: vmovaps {{.*#+}} ymm0 = [0,0,0,0,255,32767,65535,0,0,0,0,0,0,0,0,0] | ; X86-AVX-NEXT: vmovaps {{.*#+}} ymm0 = [0,0,0,0,255,32767,65535,0,0,0,0,0,0,0,0,0] | ||||
; X86-AVX-NEXT: ## encoding: [0xc5,0xfc,0x28,0x05,A,A,A,A] | ; X86-AVX-NEXT: ## encoding: [0xc5,0xfc,0x28,0x05,A,A,A,A] | ||||
; X86-AVX-NEXT: ## fixup A - offset: 4, value: LCPI54_0, kind: FK_Data_4 | ; X86-AVX-NEXT: ## fixup A - offset: 4, value: LCPI50_0, kind: FK_Data_4 | ||||
; X86-AVX-NEXT: retl ## encoding: [0xc3] | ; X86-AVX-NEXT: retl ## encoding: [0xc3] | ||||
; | ; | ||||
; X86-AVX512VL-LABEL: test_x86_avx2_packusdw_fold: | ; X86-AVX512VL-LABEL: test_x86_avx2_packusdw_fold: | ||||
; X86-AVX512VL: ## %bb.0: | ; X86-AVX512VL: ## %bb.0: | ||||
; X86-AVX512VL-NEXT: vmovaps LCPI54_0, %ymm0 ## EVEX TO VEX Compression ymm0 = [0,0,0,0,255,32767,65535,0,0,0,0,0,0,0,0,0] | ; X86-AVX512VL-NEXT: vmovaps LCPI50_0, %ymm0 ## EVEX TO VEX Compression ymm0 = [0,0,0,0,255,32767,65535,0,0,0,0,0,0,0,0,0] | ||||
; X86-AVX512VL-NEXT: ## encoding: [0xc5,0xfc,0x28,0x05,A,A,A,A] | ; X86-AVX512VL-NEXT: ## encoding: [0xc5,0xfc,0x28,0x05,A,A,A,A] | ||||
; X86-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI54_0, kind: FK_Data_4 | ; X86-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI50_0, kind: FK_Data_4 | ||||
; X86-AVX512VL-NEXT: retl ## encoding: [0xc3] | ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3] | ||||
; | ; | ||||
; X64-AVX-LABEL: test_x86_avx2_packusdw_fold: | ; X64-AVX-LABEL: test_x86_avx2_packusdw_fold: | ||||
; X64-AVX: ## %bb.0: | ; X64-AVX: ## %bb.0: | ||||
; X64-AVX-NEXT: vmovaps {{.*#+}} ymm0 = [0,0,0,0,255,32767,65535,0,0,0,0,0,0,0,0,0] | ; X64-AVX-NEXT: vmovaps {{.*#+}} ymm0 = [0,0,0,0,255,32767,65535,0,0,0,0,0,0,0,0,0] | ||||
; X64-AVX-NEXT: ## encoding: [0xc5,0xfc,0x28,0x05,A,A,A,A] | ; X64-AVX-NEXT: ## encoding: [0xc5,0xfc,0x28,0x05,A,A,A,A] | ||||
; X64-AVX-NEXT: ## fixup A - offset: 4, value: LCPI54_0-4, kind: reloc_riprel_4byte | ; X64-AVX-NEXT: ## fixup A - offset: 4, value: LCPI50_0-4, kind: reloc_riprel_4byte | ||||
; X64-AVX-NEXT: retq ## encoding: [0xc3] | ; X64-AVX-NEXT: retq ## encoding: [0xc3] | ||||
; | ; | ||||
; X64-AVX512VL-LABEL: test_x86_avx2_packusdw_fold: | ; X64-AVX512VL-LABEL: test_x86_avx2_packusdw_fold: | ||||
; X64-AVX512VL: ## %bb.0: | ; X64-AVX512VL: ## %bb.0: | ||||
; X64-AVX512VL-NEXT: vmovaps {{.*}}(%rip), %ymm0 ## EVEX TO VEX Compression ymm0 = [0,0,0,0,255,32767,65535,0,0,0,0,0,0,0,0,0] | ; X64-AVX512VL-NEXT: vmovaps {{.*}}(%rip), %ymm0 ## EVEX TO VEX Compression ymm0 = [0,0,0,0,255,32767,65535,0,0,0,0,0,0,0,0,0] | ||||
; X64-AVX512VL-NEXT: ## encoding: [0xc5,0xfc,0x28,0x05,A,A,A,A] | ; X64-AVX512VL-NEXT: ## encoding: [0xc5,0xfc,0x28,0x05,A,A,A,A] | ||||
; X64-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI54_0-4, kind: reloc_riprel_4byte | ; X64-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI50_0-4, kind: reloc_riprel_4byte | ||||
; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ||||
%res = call <16 x i16> @llvm.x86.avx2.packusdw(<8 x i32> zeroinitializer, <8 x i32> <i32 255, i32 32767, i32 65535, i32 -1, i32 -32767, i32 -65535, i32 0, i32 -256>) | %res = call <16 x i16> @llvm.x86.avx2.packusdw(<8 x i32> zeroinitializer, <8 x i32> <i32 255, i32 32767, i32 65535, i32 -1, i32 -32767, i32 -65535, i32 0, i32 -256>) | ||||
ret <16 x i16> %res | ret <16 x i16> %res | ||||
} | } | ||||
define <32 x i8> @test_x86_avx2_pblendvb(<32 x i8> %a0, <32 x i8> %a1, <32 x i8> %a2) { | define <32 x i8> @test_x86_avx2_pblendvb(<32 x i8> %a0, <32 x i8> %a1, <32 x i8> %a2) { | ||||
; X86-LABEL: test_x86_avx2_pblendvb: | ; X86-LABEL: test_x86_avx2_pblendvb: | ||||
▲ Show 20 Lines • Show All 703 Lines • ▼ Show 20 Lines | ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ||||
ret <4 x i32> %res | ret <4 x i32> %res | ||||
} | } | ||||
define <4 x i32> @test_x86_avx2_psrav_d_const(<4 x i32> %a0, <4 x i32> %a1) { | define <4 x i32> @test_x86_avx2_psrav_d_const(<4 x i32> %a0, <4 x i32> %a1) { | ||||
; X86-AVX-LABEL: test_x86_avx2_psrav_d_const: | ; X86-AVX-LABEL: test_x86_avx2_psrav_d_const: | ||||
; X86-AVX: ## %bb.0: | ; X86-AVX: ## %bb.0: | ||||
; X86-AVX-NEXT: vmovdqa {{.*#+}} xmm0 = [2,9,4294967284,23] | ; X86-AVX-NEXT: vmovdqa {{.*#+}} xmm0 = [2,9,4294967284,23] | ||||
; X86-AVX-NEXT: ## encoding: [0xc5,0xf9,0x6f,0x05,A,A,A,A] | ; X86-AVX-NEXT: ## encoding: [0xc5,0xf9,0x6f,0x05,A,A,A,A] | ||||
; X86-AVX-NEXT: ## fixup A - offset: 4, value: LCPI86_0, kind: FK_Data_4 | ; X86-AVX-NEXT: ## fixup A - offset: 4, value: LCPI82_0, kind: FK_Data_4 | ||||
; X86-AVX-NEXT: vpsravd LCPI86_1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x46,0x05,A,A,A,A] | ; X86-AVX-NEXT: vpsravd LCPI82_1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x46,0x05,A,A,A,A] | ||||
; X86-AVX-NEXT: ## fixup A - offset: 5, value: LCPI86_1, kind: FK_Data_4 | ; X86-AVX-NEXT: ## fixup A - offset: 5, value: LCPI82_1, kind: FK_Data_4 | ||||
; X86-AVX-NEXT: retl ## encoding: [0xc3] | ; X86-AVX-NEXT: retl ## encoding: [0xc3] | ||||
; | ; | ||||
; X86-AVX512VL-LABEL: test_x86_avx2_psrav_d_const: | ; X86-AVX512VL-LABEL: test_x86_avx2_psrav_d_const: | ||||
; X86-AVX512VL: ## %bb.0: | ; X86-AVX512VL: ## %bb.0: | ||||
; X86-AVX512VL-NEXT: vmovdqa LCPI86_0, %xmm0 ## EVEX TO VEX Compression xmm0 = [2,9,4294967284,23] | ; X86-AVX512VL-NEXT: vmovdqa LCPI82_0, %xmm0 ## EVEX TO VEX Compression xmm0 = [2,9,4294967284,23] | ||||
; X86-AVX512VL-NEXT: ## encoding: [0xc5,0xf9,0x6f,0x05,A,A,A,A] | ; X86-AVX512VL-NEXT: ## encoding: [0xc5,0xf9,0x6f,0x05,A,A,A,A] | ||||
; X86-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI86_0, kind: FK_Data_4 | ; X86-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI82_0, kind: FK_Data_4 | ||||
; X86-AVX512VL-NEXT: vpsravd LCPI86_1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x46,0x05,A,A,A,A] | ; X86-AVX512VL-NEXT: vpsravd LCPI82_1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x46,0x05,A,A,A,A] | ||||
; X86-AVX512VL-NEXT: ## fixup A - offset: 5, value: LCPI86_1, kind: FK_Data_4 | ; X86-AVX512VL-NEXT: ## fixup A - offset: 5, value: LCPI82_1, kind: FK_Data_4 | ||||
; X86-AVX512VL-NEXT: retl ## encoding: [0xc3] | ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3] | ||||
; | ; | ||||
; X64-AVX-LABEL: test_x86_avx2_psrav_d_const: | ; X64-AVX-LABEL: test_x86_avx2_psrav_d_const: | ||||
; X64-AVX: ## %bb.0: | ; X64-AVX: ## %bb.0: | ||||
; X64-AVX-NEXT: vmovdqa {{.*#+}} xmm0 = [2,9,4294967284,23] | ; X64-AVX-NEXT: vmovdqa {{.*#+}} xmm0 = [2,9,4294967284,23] | ||||
; X64-AVX-NEXT: ## encoding: [0xc5,0xf9,0x6f,0x05,A,A,A,A] | ; X64-AVX-NEXT: ## encoding: [0xc5,0xf9,0x6f,0x05,A,A,A,A] | ||||
; X64-AVX-NEXT: ## fixup A - offset: 4, value: LCPI86_0-4, kind: reloc_riprel_4byte | ; X64-AVX-NEXT: ## fixup A - offset: 4, value: LCPI82_0-4, kind: reloc_riprel_4byte | ||||
; X64-AVX-NEXT: vpsravd {{.*}}(%rip), %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x46,0x05,A,A,A,A] | ; X64-AVX-NEXT: vpsravd {{.*}}(%rip), %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x46,0x05,A,A,A,A] | ||||
; X64-AVX-NEXT: ## fixup A - offset: 5, value: LCPI86_1-4, kind: reloc_riprel_4byte | ; X64-AVX-NEXT: ## fixup A - offset: 5, value: LCPI82_1-4, kind: reloc_riprel_4byte | ||||
; X64-AVX-NEXT: retq ## encoding: [0xc3] | ; X64-AVX-NEXT: retq ## encoding: [0xc3] | ||||
; | ; | ||||
; X64-AVX512VL-LABEL: test_x86_avx2_psrav_d_const: | ; X64-AVX512VL-LABEL: test_x86_avx2_psrav_d_const: | ||||
; X64-AVX512VL: ## %bb.0: | ; X64-AVX512VL: ## %bb.0: | ||||
; X64-AVX512VL-NEXT: vmovdqa {{.*}}(%rip), %xmm0 ## EVEX TO VEX Compression xmm0 = [2,9,4294967284,23] | ; X64-AVX512VL-NEXT: vmovdqa {{.*}}(%rip), %xmm0 ## EVEX TO VEX Compression xmm0 = [2,9,4294967284,23] | ||||
; X64-AVX512VL-NEXT: ## encoding: [0xc5,0xf9,0x6f,0x05,A,A,A,A] | ; X64-AVX512VL-NEXT: ## encoding: [0xc5,0xf9,0x6f,0x05,A,A,A,A] | ||||
; X64-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI86_0-4, kind: reloc_riprel_4byte | ; X64-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI82_0-4, kind: reloc_riprel_4byte | ||||
; X64-AVX512VL-NEXT: vpsravd {{.*}}(%rip), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x46,0x05,A,A,A,A] | ; X64-AVX512VL-NEXT: vpsravd {{.*}}(%rip), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x46,0x05,A,A,A,A] | ||||
; X64-AVX512VL-NEXT: ## fixup A - offset: 5, value: LCPI86_1-4, kind: reloc_riprel_4byte | ; X64-AVX512VL-NEXT: ## fixup A - offset: 5, value: LCPI82_1-4, kind: reloc_riprel_4byte | ||||
; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ||||
%res = call <4 x i32> @llvm.x86.avx2.psrav.d(<4 x i32> <i32 2, i32 9, i32 -12, i32 23>, <4 x i32> <i32 1, i32 18, i32 35, i32 52>) | %res = call <4 x i32> @llvm.x86.avx2.psrav.d(<4 x i32> <i32 2, i32 9, i32 -12, i32 23>, <4 x i32> <i32 1, i32 18, i32 35, i32 52>) | ||||
ret <4 x i32> %res | ret <4 x i32> %res | ||||
} | } | ||||
declare <4 x i32> @llvm.x86.avx2.psrav.d(<4 x i32>, <4 x i32>) nounwind readnone | declare <4 x i32> @llvm.x86.avx2.psrav.d(<4 x i32>, <4 x i32>) nounwind readnone | ||||
define <8 x i32> @test_x86_avx2_psrav_d_256(<8 x i32> %a0, <8 x i32> %a1) { | define <8 x i32> @test_x86_avx2_psrav_d_256(<8 x i32> %a0, <8 x i32> %a1) { | ||||
; X86-AVX-LABEL: test_x86_avx2_psrav_d_256: | ; X86-AVX-LABEL: test_x86_avx2_psrav_d_256: | ||||
Show All 19 Lines | ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ||||
ret <8 x i32> %res | ret <8 x i32> %res | ||||
} | } | ||||
define <8 x i32> @test_x86_avx2_psrav_d_256_const(<8 x i32> %a0, <8 x i32> %a1) { | define <8 x i32> @test_x86_avx2_psrav_d_256_const(<8 x i32> %a0, <8 x i32> %a1) { | ||||
; X86-AVX-LABEL: test_x86_avx2_psrav_d_256_const: | ; X86-AVX-LABEL: test_x86_avx2_psrav_d_256_const: | ||||
; X86-AVX: ## %bb.0: | ; X86-AVX: ## %bb.0: | ||||
; X86-AVX-NEXT: vmovdqa {{.*#+}} ymm0 = [2,9,4294967284,23,4294967270,37,4294967256,51] | ; X86-AVX-NEXT: vmovdqa {{.*#+}} ymm0 = [2,9,4294967284,23,4294967270,37,4294967256,51] | ||||
; X86-AVX-NEXT: ## encoding: [0xc5,0xfd,0x6f,0x05,A,A,A,A] | ; X86-AVX-NEXT: ## encoding: [0xc5,0xfd,0x6f,0x05,A,A,A,A] | ||||
; X86-AVX-NEXT: ## fixup A - offset: 4, value: LCPI88_0, kind: FK_Data_4 | ; X86-AVX-NEXT: ## fixup A - offset: 4, value: LCPI84_0, kind: FK_Data_4 | ||||
; X86-AVX-NEXT: vpsravd LCPI88_1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x46,0x05,A,A,A,A] | ; X86-AVX-NEXT: vpsravd LCPI84_1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x46,0x05,A,A,A,A] | ||||
; X86-AVX-NEXT: ## fixup A - offset: 5, value: LCPI88_1, kind: FK_Data_4 | ; X86-AVX-NEXT: ## fixup A - offset: 5, value: LCPI84_1, kind: FK_Data_4 | ||||
; X86-AVX-NEXT: retl ## encoding: [0xc3] | ; X86-AVX-NEXT: retl ## encoding: [0xc3] | ||||
; | ; | ||||
; X86-AVX512VL-LABEL: test_x86_avx2_psrav_d_256_const: | ; X86-AVX512VL-LABEL: test_x86_avx2_psrav_d_256_const: | ||||
; X86-AVX512VL: ## %bb.0: | ; X86-AVX512VL: ## %bb.0: | ||||
; X86-AVX512VL-NEXT: vmovdqa LCPI88_0, %ymm0 ## EVEX TO VEX Compression ymm0 = [2,9,4294967284,23,4294967270,37,4294967256,51] | ; X86-AVX512VL-NEXT: vmovdqa LCPI84_0, %ymm0 ## EVEX TO VEX Compression ymm0 = [2,9,4294967284,23,4294967270,37,4294967256,51] | ||||
; X86-AVX512VL-NEXT: ## encoding: [0xc5,0xfd,0x6f,0x05,A,A,A,A] | ; X86-AVX512VL-NEXT: ## encoding: [0xc5,0xfd,0x6f,0x05,A,A,A,A] | ||||
; X86-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI88_0, kind: FK_Data_4 | ; X86-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI84_0, kind: FK_Data_4 | ||||
; X86-AVX512VL-NEXT: vpsravd LCPI88_1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x46,0x05,A,A,A,A] | ; X86-AVX512VL-NEXT: vpsravd LCPI84_1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x46,0x05,A,A,A,A] | ||||
; X86-AVX512VL-NEXT: ## fixup A - offset: 5, value: LCPI88_1, kind: FK_Data_4 | ; X86-AVX512VL-NEXT: ## fixup A - offset: 5, value: LCPI84_1, kind: FK_Data_4 | ||||
; X86-AVX512VL-NEXT: retl ## encoding: [0xc3] | ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3] | ||||
; | ; | ||||
; X64-AVX-LABEL: test_x86_avx2_psrav_d_256_const: | ; X64-AVX-LABEL: test_x86_avx2_psrav_d_256_const: | ||||
; X64-AVX: ## %bb.0: | ; X64-AVX: ## %bb.0: | ||||
; X64-AVX-NEXT: vmovdqa {{.*#+}} ymm0 = [2,9,4294967284,23,4294967270,37,4294967256,51] | ; X64-AVX-NEXT: vmovdqa {{.*#+}} ymm0 = [2,9,4294967284,23,4294967270,37,4294967256,51] | ||||
; X64-AVX-NEXT: ## encoding: [0xc5,0xfd,0x6f,0x05,A,A,A,A] | ; X64-AVX-NEXT: ## encoding: [0xc5,0xfd,0x6f,0x05,A,A,A,A] | ||||
; X64-AVX-NEXT: ## fixup A - offset: 4, value: LCPI88_0-4, kind: reloc_riprel_4byte | ; X64-AVX-NEXT: ## fixup A - offset: 4, value: LCPI84_0-4, kind: reloc_riprel_4byte | ||||
; X64-AVX-NEXT: vpsravd {{.*}}(%rip), %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x46,0x05,A,A,A,A] | ; X64-AVX-NEXT: vpsravd {{.*}}(%rip), %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x46,0x05,A,A,A,A] | ||||
; X64-AVX-NEXT: ## fixup A - offset: 5, value: LCPI88_1-4, kind: reloc_riprel_4byte | ; X64-AVX-NEXT: ## fixup A - offset: 5, value: LCPI84_1-4, kind: reloc_riprel_4byte | ||||
; X64-AVX-NEXT: retq ## encoding: [0xc3] | ; X64-AVX-NEXT: retq ## encoding: [0xc3] | ||||
; | ; | ||||
; X64-AVX512VL-LABEL: test_x86_avx2_psrav_d_256_const: | ; X64-AVX512VL-LABEL: test_x86_avx2_psrav_d_256_const: | ||||
; X64-AVX512VL: ## %bb.0: | ; X64-AVX512VL: ## %bb.0: | ||||
; X64-AVX512VL-NEXT: vmovdqa {{.*}}(%rip), %ymm0 ## EVEX TO VEX Compression ymm0 = [2,9,4294967284,23,4294967270,37,4294967256,51] | ; X64-AVX512VL-NEXT: vmovdqa {{.*}}(%rip), %ymm0 ## EVEX TO VEX Compression ymm0 = [2,9,4294967284,23,4294967270,37,4294967256,51] | ||||
; X64-AVX512VL-NEXT: ## encoding: [0xc5,0xfd,0x6f,0x05,A,A,A,A] | ; X64-AVX512VL-NEXT: ## encoding: [0xc5,0xfd,0x6f,0x05,A,A,A,A] | ||||
; X64-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI88_0-4, kind: reloc_riprel_4byte | ; X64-AVX512VL-NEXT: ## fixup A - offset: 4, value: LCPI84_0-4, kind: reloc_riprel_4byte | ||||
; X64-AVX512VL-NEXT: vpsravd {{.*}}(%rip), %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x46,0x05,A,A,A,A] | ; X64-AVX512VL-NEXT: vpsravd {{.*}}(%rip), %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x46,0x05,A,A,A,A] | ||||
; X64-AVX512VL-NEXT: ## fixup A - offset: 5, value: LCPI88_1-4, kind: reloc_riprel_4byte | ; X64-AVX512VL-NEXT: ## fixup A - offset: 5, value: LCPI84_1-4, kind: reloc_riprel_4byte | ||||
; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3] | ||||
%res = call <8 x i32> @llvm.x86.avx2.psrav.d.256(<8 x i32> <i32 2, i32 9, i32 -12, i32 23, i32 -26, i32 37, i32 -40, i32 51>, <8 x i32> <i32 1, i32 18, i32 35, i32 52, i32 69, i32 15, i32 32, i32 49>) | %res = call <8 x i32> @llvm.x86.avx2.psrav.d.256(<8 x i32> <i32 2, i32 9, i32 -12, i32 23, i32 -26, i32 37, i32 -40, i32 51>, <8 x i32> <i32 1, i32 18, i32 35, i32 52, i32 69, i32 15, i32 32, i32 49>) | ||||
ret <8 x i32> %res | ret <8 x i32> %res | ||||
} | } | ||||
declare <8 x i32> @llvm.x86.avx2.psrav.d.256(<8 x i32>, <8 x i32>) nounwind readnone | declare <8 x i32> @llvm.x86.avx2.psrav.d.256(<8 x i32>, <8 x i32>) nounwind readnone | ||||
define <2 x double> @test_x86_avx2_gather_d_pd(<2 x double> %a0, i8* %a1, <4 x i32> %idx, <2 x double> %mask) { | define <2 x double> @test_x86_avx2_gather_d_pd(<2 x double> %a0, i8* %a1, <4 x i32> %idx, <2 x double> %mask) { | ||||
; X86-LABEL: test_x86_avx2_gather_d_pd: | ; X86-LABEL: test_x86_avx2_gather_d_pd: | ||||
▲ Show 20 Lines • Show All 334 Lines • Show Last 20 Lines |