Changeset View
Changeset View
Standalone View
Standalone View
test/CodeGen/X86/sse2-intrinsics-x86.ll
Show First 20 Lines • Show All 955 Lines • ▼ Show 20 Lines | |||||
; AVX512-NEXT: vpaddsw %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf9,0xed,0xc1] | ; AVX512-NEXT: vpaddsw %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf9,0xed,0xc1] | ||||
; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | ||||
%res = call <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] | %res = call <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] | ||||
ret <8 x i16> %res | ret <8 x i16> %res | ||||
} | } | ||||
declare <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16>, <8 x i16>) nounwind readnone | declare <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16>, <8 x i16>) nounwind readnone | ||||
define <16 x i8> @test_x86_sse2_paddus_b(<16 x i8> %a0, <16 x i8> %a1) { | |||||
; SSE-LABEL: test_x86_sse2_paddus_b: | |||||
; SSE: ## %bb.0: | |||||
; SSE-NEXT: paddusb %xmm1, %xmm0 ## encoding: [0x66,0x0f,0xdc,0xc1] | |||||
; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
; | |||||
; AVX1-LABEL: test_x86_sse2_paddus_b: | |||||
; AVX1: ## %bb.0: | |||||
; AVX1-NEXT: vpaddusb %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xf9,0xdc,0xc1] | |||||
; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
; | |||||
; AVX512-LABEL: test_x86_sse2_paddus_b: | |||||
; AVX512: ## %bb.0: | |||||
; AVX512-NEXT: vpaddusb %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdc,0xc1] | |||||
; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
%res = call <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] | |||||
ret <16 x i8> %res | |||||
} | |||||
declare <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8>, <16 x i8>) nounwind readnone | |||||
define <8 x i16> @test_x86_sse2_paddus_w(<8 x i16> %a0, <8 x i16> %a1) { | |||||
; SSE-LABEL: test_x86_sse2_paddus_w: | |||||
; SSE: ## %bb.0: | |||||
; SSE-NEXT: paddusw %xmm1, %xmm0 ## encoding: [0x66,0x0f,0xdd,0xc1] | |||||
; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
; | |||||
; AVX1-LABEL: test_x86_sse2_paddus_w: | |||||
; AVX1: ## %bb.0: | |||||
; AVX1-NEXT: vpaddusw %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xf9,0xdd,0xc1] | |||||
; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
; | |||||
; AVX512-LABEL: test_x86_sse2_paddus_w: | |||||
; AVX512: ## %bb.0: | |||||
; AVX512-NEXT: vpaddusw %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf9,0xdd,0xc1] | |||||
; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
%res = call <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] | |||||
ret <8 x i16> %res | |||||
} | |||||
declare <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16>, <8 x i16>) nounwind readnone | |||||
define <4 x i32> @test_x86_sse2_pmadd_wd(<8 x i16> %a0, <8 x i16> %a1) { | define <4 x i32> @test_x86_sse2_pmadd_wd(<8 x i16> %a0, <8 x i16> %a1) { | ||||
; SSE-LABEL: test_x86_sse2_pmadd_wd: | ; SSE-LABEL: test_x86_sse2_pmadd_wd: | ||||
; SSE: ## %bb.0: | ; SSE: ## %bb.0: | ||||
; SSE-NEXT: pmaddwd %xmm1, %xmm0 ## encoding: [0x66,0x0f,0xf5,0xc1] | ; SSE-NEXT: pmaddwd %xmm1, %xmm0 ## encoding: [0x66,0x0f,0xf5,0xc1] | ||||
; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | ||||
; | ; | ||||
; AVX1-LABEL: test_x86_sse2_pmadd_wd: | ; AVX1-LABEL: test_x86_sse2_pmadd_wd: | ||||
; AVX1: ## %bb.0: | ; AVX1: ## %bb.0: | ||||
▲ Show 20 Lines • Show All 546 Lines • ▼ Show 20 Lines | |||||
; AVX512-NEXT: vpsubsw %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe9,0xc1] | ; AVX512-NEXT: vpsubsw %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf9,0xe9,0xc1] | ||||
; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | ||||
%res = call <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] | %res = call <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] | ||||
ret <8 x i16> %res | ret <8 x i16> %res | ||||
} | } | ||||
declare <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16>, <8 x i16>) nounwind readnone | declare <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16>, <8 x i16>) nounwind readnone | ||||
define <16 x i8> @test_x86_sse2_psubus_b(<16 x i8> %a0, <16 x i8> %a1) { | |||||
; SSE-LABEL: test_x86_sse2_psubus_b: | |||||
; SSE: ## %bb.0: | |||||
; SSE-NEXT: psubusb %xmm1, %xmm0 ## encoding: [0x66,0x0f,0xd8,0xc1] | |||||
; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
; | |||||
; AVX1-LABEL: test_x86_sse2_psubus_b: | |||||
; AVX1: ## %bb.0: | |||||
; AVX1-NEXT: vpsubusb %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xf9,0xd8,0xc1] | |||||
; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
; | |||||
; AVX512-LABEL: test_x86_sse2_psubus_b: | |||||
; AVX512: ## %bb.0: | |||||
; AVX512-NEXT: vpsubusb %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd8,0xc1] | |||||
; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
%res = call <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] | |||||
ret <16 x i8> %res | |||||
} | |||||
declare <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8>, <16 x i8>) nounwind readnone | |||||
define <8 x i16> @test_x86_sse2_psubus_w(<8 x i16> %a0, <8 x i16> %a1) { | |||||
; SSE-LABEL: test_x86_sse2_psubus_w: | |||||
; SSE: ## %bb.0: | |||||
; SSE-NEXT: psubusw %xmm1, %xmm0 ## encoding: [0x66,0x0f,0xd9,0xc1] | |||||
; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
; | |||||
; AVX1-LABEL: test_x86_sse2_psubus_w: | |||||
; AVX1: ## %bb.0: | |||||
; AVX1-NEXT: vpsubusw %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xf9,0xd9,0xc1] | |||||
; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
; | |||||
; AVX512-LABEL: test_x86_sse2_psubus_w: | |||||
; AVX512: ## %bb.0: | |||||
; AVX512-NEXT: vpsubusw %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf9,0xd9,0xc1] | |||||
; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3] | |||||
%res = call <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] | |||||
ret <8 x i16> %res | |||||
} | |||||
declare <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16>, <8 x i16>) nounwind readnone | |||||
define i32 @test_x86_sse2_ucomieq_sd(<2 x double> %a0, <2 x double> %a1) { | define i32 @test_x86_sse2_ucomieq_sd(<2 x double> %a0, <2 x double> %a1) { | ||||
; SSE-LABEL: test_x86_sse2_ucomieq_sd: | ; SSE-LABEL: test_x86_sse2_ucomieq_sd: | ||||
; SSE: ## %bb.0: | ; SSE: ## %bb.0: | ||||
; SSE-NEXT: ucomisd %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x2e,0xc1] | ; SSE-NEXT: ucomisd %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x2e,0xc1] | ||||
; SSE-NEXT: setnp %al ## encoding: [0x0f,0x9b,0xc0] | ; SSE-NEXT: setnp %al ## encoding: [0x0f,0x9b,0xc0] | ||||
; SSE-NEXT: sete %cl ## encoding: [0x0f,0x94,0xc1] | ; SSE-NEXT: sete %cl ## encoding: [0x0f,0x94,0xc1] | ||||
; SSE-NEXT: andb %al, %cl ## encoding: [0x20,0xc1] | ; SSE-NEXT: andb %al, %cl ## encoding: [0x20,0xc1] | ||||
; SSE-NEXT: movzbl %cl, %eax ## encoding: [0x0f,0xb6,0xc1] | ; SSE-NEXT: movzbl %cl, %eax ## encoding: [0x0f,0xb6,0xc1] | ||||
▲ Show 20 Lines • Show All 210 Lines • Show Last 20 Lines |