target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
-
-
-define <16 x float> @test1(float* %base) {
-; SKX-LABEL: test1:
+define <16 x float> @expandload_v16f32_const_undef(float* %base) {
+; SKX-LABEL: expandload_v16f32_const_undef:
; SKX: # %bb.0:
; SKX-NEXT: movw $-2049, %ax # imm = 0xF7FF
; SKX-NEXT: kmovd %eax, %k1
; SKX-NEXT: vexpandps (%rdi), %zmm0 {%k1} {z}
; SKX-NEXT: retq
;
-; KNL-LABEL: test1:
+; KNL-LABEL: expandload_v16f32_const_undef:
; KNL: # %bb.0:
; KNL-NEXT: movw $-2049, %ax # imm = 0xF7FF
; KNL-NEXT: kmovw %eax, %k1
ret <16 x float>%res
}
-define <16 x float> @test2(float* %base, <16 x float> %src0) {
-; SKX-LABEL: test2:
+define <16 x float> @expandload_v16f32_const(float* %base, <16 x float> %src0) {
+; SKX-LABEL: expandload_v16f32_const:
; SKX: # %bb.0:
; SKX-NEXT: movw $30719, %ax # imm = 0x77FF
; SKX-NEXT: kmovd %eax, %k1
; SKX-NEXT: vexpandps (%rdi), %zmm0 {%k1}
; SKX-NEXT: retq
;
-; KNL-LABEL: test2:
+; KNL-LABEL: expandload_v16f32_const:
; KNL: # %bb.0:
; KNL-NEXT: movw $30719, %ax # imm = 0x77FF
; KNL-NEXT: kmovw %eax, %k1
ret <16 x float>%res
}
-define <8 x double> @test3(double* %base, <8 x double> %src0, <8 x i1> %mask) {
-; SKX-LABEL: test3:
+define <8 x double> @expandload_v8f64_v8i1(double* %base, <8 x double> %src0, <8 x i1> %mask) {
+; SKX-LABEL: expandload_v8f64_v8i1:
; SKX: # %bb.0:
; SKX-NEXT: vpsllw $15, %xmm1, %xmm1
; SKX-NEXT: vpmovw2m %xmm1, %k1
; SKX-NEXT: vexpandpd (%rdi), %zmm0 {%k1}
; SKX-NEXT: retq
;
-; KNL-LABEL: test3:
+; KNL-LABEL: expandload_v8f64_v8i1:
; KNL: # %bb.0:
; KNL-NEXT: vpmovzxwq {{.*#+}} zmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero,xmm1[4],zero,zero,zero,xmm1[5],zero,zero,zero,xmm1[6],zero,zero,zero,xmm1[7],zero,zero,zero
; KNL-NEXT: vpsllq $63, %zmm1, %zmm1
ret <8 x double>%res
}
-define <4 x float> @test4(float* %base, <4 x float> %src0) {
-; SKX-LABEL: test4:
+define <4 x float> @expandload_v4f32_const(float* %base, <4 x float> %src0) {
+; SKX-LABEL: expandload_v4f32_const:
; SKX: # %bb.0:
; SKX-NEXT: movb $7, %al
; SKX-NEXT: kmovd %eax, %k1
; SKX-NEXT: vexpandps (%rdi), %xmm0 {%k1}
; SKX-NEXT: retq
;
-; KNL-LABEL: test4:
+; KNL-LABEL: expandload_v4f32_const:
; KNL: # %bb.0:
; KNL-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
; KNL-NEXT: movw $7, %ax
ret <4 x float>%res
}
-define <2 x i64> @test5(i64* %base, <2 x i64> %src0) {
-; SKX-LABEL: test5:
+define <2 x i64> @expandload_v2i64_const(i64* %base, <2 x i64> %src0) {
+; SKX-LABEL: expandload_v2i64_const:
; SKX: # %bb.0:
; SKX-NEXT: movb $2, %al
; SKX-NEXT: kmovd %eax, %k1
; SKX-NEXT: vpexpandq (%rdi), %xmm0 {%k1}
; SKX-NEXT: retq
;
-; KNL-LABEL: test5:
+; KNL-LABEL: expandload_v2i64_const:
; KNL: # %bb.0:
; KNL-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
; KNL-NEXT: movb $2, %al
declare <4 x float> @llvm.masked.expandload.v4f32(float*, <4 x i1>, <4 x float>)
declare <2 x i64> @llvm.masked.expandload.v2i64(i64*, <2 x i1>, <2 x i64>)
-define void @test6(float* %base, <16 x float> %V) {
-; SKX-LABEL: test6:
+define void @compressstore_v16f32_const(float* %base, <16 x float> %V) {
+; SKX-LABEL: compressstore_v16f32_const:
; SKX: # %bb.0:
; SKX-NEXT: movw $-2049, %ax # imm = 0xF7FF
; SKX-NEXT: kmovd %eax, %k1
; SKX-NEXT: vzeroupper
; SKX-NEXT: retq
;
-; KNL-LABEL: test6:
+; KNL-LABEL: compressstore_v16f32_const:
; KNL: # %bb.0:
; KNL-NEXT: movw $-2049, %ax # imm = 0xF7FF
; KNL-NEXT: kmovw %eax, %k1
ret void
}
-define void @test7(float* %base, <8 x float> %V, <8 x i1> %mask) {
-; SKX-LABEL: test7:
+define void @compressstore_v8f32_v8i1(float* %base, <8 x float> %V, <8 x i1> %mask) {
+; SKX-LABEL: compressstore_v8f32_v8i1:
; SKX: # %bb.0:
; SKX-NEXT: vpsllw $15, %xmm1, %xmm1
; SKX-NEXT: vpmovw2m %xmm1, %k1
; SKX-NEXT: vzeroupper
; SKX-NEXT: retq
;
-; KNL-LABEL: test7:
+; KNL-LABEL: compressstore_v8f32_v8i1:
; KNL: # %bb.0:
; KNL-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; KNL-NEXT: vpmovzxwq {{.*#+}} zmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero,xmm1[4],zero,zero,zero,xmm1[5],zero,zero,zero,xmm1[6],zero,zero,zero,xmm1[7],zero,zero,zero
ret void
}
-define void @test8(double* %base, <8 x double> %V, <8 x i1> %mask) {
-; SKX-LABEL: test8:
+define void @compressstore_v8f64_v8i1(double* %base, <8 x double> %V, <8 x i1> %mask) {
+; SKX-LABEL: compressstore_v8f64_v8i1:
; SKX: # %bb.0:
; SKX-NEXT: vpsllw $15, %xmm1, %xmm1
; SKX-NEXT: vpmovw2m %xmm1, %k1
; SKX-NEXT: vzeroupper
; SKX-NEXT: retq
;
-; KNL-LABEL: test8:
+; KNL-LABEL: compressstore_v8f64_v8i1:
; KNL: # %bb.0:
; KNL-NEXT: vpmovzxwq {{.*#+}} zmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero,xmm1[4],zero,zero,zero,xmm1[5],zero,zero,zero,xmm1[6],zero,zero,zero,xmm1[7],zero,zero,zero
; KNL-NEXT: vpsllq $63, %zmm1, %zmm1
ret void
}
-define void @test9(i64* %base, <8 x i64> %V, <8 x i1> %mask) {
-; SKX-LABEL: test9:
+define void @compressstore_v8i64_v8i1(i64* %base, <8 x i64> %V, <8 x i1> %mask) {
+; SKX-LABEL: compressstore_v8i64_v8i1:
; SKX: # %bb.0:
; SKX-NEXT: vpsllw $15, %xmm1, %xmm1
; SKX-NEXT: vpmovw2m %xmm1, %k1
; SKX-NEXT: vzeroupper
; SKX-NEXT: retq
;
-; KNL-LABEL: test9:
+; KNL-LABEL: compressstore_v8i64_v8i1:
; KNL: # %bb.0:
; KNL-NEXT: vpmovzxwq {{.*#+}} zmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero,xmm1[4],zero,zero,zero,xmm1[5],zero,zero,zero,xmm1[6],zero,zero,zero,xmm1[7],zero,zero,zero
; KNL-NEXT: vpsllq $63, %zmm1, %zmm1
ret void
}
-define void @test10(i64* %base, <4 x i64> %V, <4 x i1> %mask) {
-; SKX-LABEL: test10:
+define void @compressstore_v4i64_v4i1(i64* %base, <4 x i64> %V, <4 x i1> %mask) {
+; SKX-LABEL: compressstore_v4i64_v4i1:
; SKX: # %bb.0:
; SKX-NEXT: vpslld $31, %xmm1, %xmm1
; SKX-NEXT: vpmovd2m %xmm1, %k1
; SKX-NEXT: vzeroupper
; SKX-NEXT: retq
;
-; KNL-LABEL: test10:
+; KNL-LABEL: compressstore_v4i64_v4i1:
; KNL: # %bb.0:
; KNL-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; KNL-NEXT: vpslld $31, %xmm1, %xmm1
ret void
}
-define void @test11(i64* %base, <2 x i64> %V, <2 x i1> %mask) {
-; SKX-LABEL: test11:
+define void @compressstore_v2i64_v2i1(i64* %base, <2 x i64> %V, <2 x i1> %mask) {
+; SKX-LABEL: compressstore_v2i64_v2i1:
; SKX: # %bb.0:
; SKX-NEXT: vpsllq $63, %xmm1, %xmm1
; SKX-NEXT: vpmovq2m %xmm1, %k1
; SKX-NEXT: vpcompressq %xmm0, (%rdi) {%k1}
; SKX-NEXT: retq
;
-; KNL-LABEL: test11:
+; KNL-LABEL: compressstore_v2i64_v2i1:
; KNL: # %bb.0:
; KNL-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
; KNL-NEXT: vpsllq $63, %xmm1, %xmm1
ret void
}
-define void @test12(float* %base, <4 x float> %V, <4 x i1> %mask) {
-; SKX-LABEL: test12:
+define void @compressstore_v4f32_v4i1(float* %base, <4 x float> %V, <4 x i1> %mask) {
+; SKX-LABEL: compressstore_v4f32_v4i1:
; SKX: # %bb.0:
; SKX-NEXT: vpslld $31, %xmm1, %xmm1
; SKX-NEXT: vpmovd2m %xmm1, %k1
; SKX-NEXT: vcompressps %xmm0, (%rdi) {%k1}
; SKX-NEXT: retq
;
-; KNL-LABEL: test12:
+; KNL-LABEL: compressstore_v4f32_v4i1:
; KNL: # %bb.0:
; KNL-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
; KNL-NEXT: vpslld $31, %xmm1, %xmm1
ret void
}
-define <2 x float> @test13(float* %base, <2 x float> %src0, <2 x i32> %trigger) {
-; SKX-LABEL: test13:
+define <2 x float> @expandload_v2f32_v2i1(float* %base, <2 x float> %src0, <2 x i32> %trigger) {
+; SKX-LABEL: expandload_v2f32_v2i1:
; SKX: # %bb.0:
; SKX-NEXT: vpxor %xmm2, %xmm2, %xmm2
; SKX-NEXT: vpblendd {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3]
; SKX-NEXT: vexpandps (%rdi), %xmm0 {%k1}
; SKX-NEXT: retq
;
-; KNL-LABEL: test13:
+; KNL-LABEL: expandload_v2f32_v2i1:
; KNL: # %bb.0:
; KNL-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
; KNL-NEXT: vpxor %xmm2, %xmm2, %xmm2
ret <2 x float> %res
}
-define void @test14(float* %base, <2 x float> %V, <2 x i32> %trigger) {
-; SKX-LABEL: test14:
+define void @compressstore_v2f32_v2i32(float* %base, <2 x float> %V, <2 x i32> %trigger) {
+; SKX-LABEL: compressstore_v2f32_v2i32:
; SKX: # %bb.0:
; SKX-NEXT: vpxor %xmm2, %xmm2, %xmm2
; SKX-NEXT: vpblendd {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3]
; SKX-NEXT: vcompressps %xmm0, (%rdi) {%k1}
; SKX-NEXT: retq
;
-; KNL-LABEL: test14:
+; KNL-LABEL: compressstore_v2f32_v2i32:
; KNL: # %bb.0:
; KNL-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
; KNL-NEXT: vpxor %xmm2, %xmm2, %xmm2
ret void
}
-define <32 x float> @test15(float* %base, <32 x float> %src0, <32 x i32> %trigger) {
-; ALL-LABEL: test15:
+define <32 x float> @expandload_v32f32_v32i32(float* %base, <32 x float> %src0, <32 x i32> %trigger) {
+; ALL-LABEL: expandload_v32f32_v32i32:
; ALL: # %bb.0:
; ALL-NEXT: vptestnmd %zmm3, %zmm3, %k1
; ALL-NEXT: vptestnmd %zmm2, %zmm2, %k2
ret <32 x float> %res
}
-define <16 x double> @test16(double* %base, <16 x double> %src0, <16 x i32> %trigger) {
-; SKX-LABEL: test16:
+define <16 x double> @compressstore_v16f64_v16i32(double* %base, <16 x double> %src0, <16 x i32> %trigger) {
+; SKX-LABEL: compressstore_v16f64_v16i32:
; SKX: # %bb.0:
; SKX-NEXT: vextracti64x4 $1, %zmm2, %ymm3
; SKX-NEXT: vptestnmd %ymm3, %ymm3, %k1
; SKX-NEXT: vexpandpd (%rdi), %zmm0 {%k2}
; SKX-NEXT: retq
;
-; KNL-LABEL: test16:
+; KNL-LABEL: compressstore_v16f64_v16i32:
; KNL: # %bb.0:
; KNL-NEXT: vextracti64x4 $1, %zmm2, %ymm3
; KNL-NEXT: vptestnmd %zmm3, %zmm3, %k1
ret <16 x double> %res
}
-define void @test17(float* %base, <32 x float> %V, <32 x i32> %trigger) {
-; SKX-LABEL: test17:
+define void @compressstore_v32f32_v32i32(float* %base, <32 x float> %V, <32 x i32> %trigger) {
+; SKX-LABEL: compressstore_v32f32_v32i32:
; SKX: # %bb.0:
; SKX-NEXT: vptestnmd %zmm3, %zmm3, %k1
; SKX-NEXT: vptestnmd %zmm2, %zmm2, %k2
; SKX-NEXT: vzeroupper
; SKX-NEXT: retq
;
-; KNL-LABEL: test17:
+; KNL-LABEL: compressstore_v32f32_v32i32:
; KNL: # %bb.0:
; KNL-NEXT: vptestnmd %zmm3, %zmm3, %k1
; KNL-NEXT: vptestnmd %zmm2, %zmm2, %k2
ret void
}
-define void @test18(double* %base, <16 x double> %V, <16 x i1> %mask) {
-; SKX-LABEL: test18:
+define void @compressstore_v16f64_v16i1(double* %base, <16 x double> %V, <16 x i1> %mask) {
+; SKX-LABEL: compressstore_v16f64_v16i1:
; SKX: # %bb.0:
; SKX-NEXT: vpsllw $7, %xmm2, %xmm2
; SKX-NEXT: vpmovb2m %xmm2, %k1
; SKX-NEXT: vzeroupper
; SKX-NEXT: retq
;
-; KNL-LABEL: test18:
+; KNL-LABEL: compressstore_v16f64_v16i1:
; KNL: # %bb.0:
; KNL-NEXT: vpmovzxbd {{.*#+}} zmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero,xmm2[4],zero,zero,zero,xmm2[5],zero,zero,zero,xmm2[6],zero,zero,zero,xmm2[7],zero,zero,zero,xmm2[8],zero,zero,zero,xmm2[9],zero,zero,zero,xmm2[10],zero,zero,zero,xmm2[11],zero,zero,zero,xmm2[12],zero,zero,zero,xmm2[13],zero,zero,zero,xmm2[14],zero,zero,zero,xmm2[15],zero,zero,zero
; KNL-NEXT: vpslld $31, %zmm2, %zmm2