mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
AVX-512: implemented extractelement with variable index.
Added parsing of mask register and "zeroing" semantic, like {%k1} {z}. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190595 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -61,3 +61,40 @@ define void @test6(<4 x float> %x, float* %out) nounwind {
|
||||
ret void
|
||||
}
|
||||
|
||||
;CHECK-LABEL: test7
|
||||
;CHECK: vmovdz
|
||||
;CHECK: vpermps %zmm
|
||||
;CHECK: ret
|
||||
define float @test7(<16 x float> %x, i32 %ind) nounwind {
|
||||
%e = extractelement <16 x float> %x, i32 %ind
|
||||
ret float %e
|
||||
}
|
||||
|
||||
;CHECK-LABEL: test8
|
||||
;CHECK: vmovqz
|
||||
;CHECK: vpermpd %zmm
|
||||
;CHECK: ret
|
||||
define double @test8(<8 x double> %x, i32 %ind) nounwind {
|
||||
%e = extractelement <8 x double> %x, i32 %ind
|
||||
ret double %e
|
||||
}
|
||||
|
||||
;CHECK-LABEL: test9
|
||||
;CHECK: vmovd
|
||||
;CHECK: vpermps %ymm
|
||||
;CHECK: ret
|
||||
define float @test9(<8 x float> %x, i32 %ind) nounwind {
|
||||
%e = extractelement <8 x float> %x, i32 %ind
|
||||
ret float %e
|
||||
}
|
||||
|
||||
;CHECK-LABEL: test10
|
||||
;CHECK: vmovdz
|
||||
;CHECK: vpermd %zmm
|
||||
;CHEKK: vmovdz %xmm0, %eax
|
||||
;CHECK: ret
|
||||
define i32 @test10(<16 x i32> %x, i32 %ind) nounwind {
|
||||
%e = extractelement <16 x i32> %x, i32 %ind
|
||||
ret i32 %e
|
||||
}
|
||||
|
||||
|
@@ -67,7 +67,7 @@ define <8 x double> @fpext_test(<8 x float> %a) nounwind readnone {
|
||||
}
|
||||
|
||||
; CHECK-LABEL: zext_16i1_to_16xi32
|
||||
; CHECK: vpbroadcastd LCP{{.*}}(%rip), %zmm0{%k1}{z}
|
||||
; CHECK: vpbroadcastd LCP{{.*}}(%rip), %zmm0 {%k1} {z}
|
||||
; CHECK: ret
|
||||
define <16 x i32> @zext_16i1_to_16xi32(i16 %b) {
|
||||
%a = bitcast i16 %b to <16 x i1>
|
||||
@@ -76,7 +76,7 @@ define <16 x i32> @zext_16i1_to_16xi32(i16 %b) {
|
||||
}
|
||||
|
||||
; CHECK-LABEL: zext_8i1_to_8xi64
|
||||
; CHECK: vpbroadcastq LCP{{.*}}(%rip), %zmm0{%k1}{z}
|
||||
; CHECK: vpbroadcastq LCP{{.*}}(%rip), %zmm0 {%k1} {z}
|
||||
; CHECK: ret
|
||||
define <8 x i64> @zext_8i1_to_8xi64(i8 %b) {
|
||||
%a = bitcast i8 %b to <8 x i1>
|
||||
@@ -117,7 +117,7 @@ define i8 @trunc_8i16_to_8i1(<8 x i16> %a) {
|
||||
}
|
||||
|
||||
; CHECK: sext_8i1_8i32
|
||||
; CHECK: vpbroadcastq LCP{{.*}}(%rip), %zmm0{%k1}{z}
|
||||
; CHECK: vpbroadcastq LCP{{.*}}(%rip), %zmm0 {%k1} {z}
|
||||
; CHECK: ret
|
||||
define <8 x i32> @sext_8i1_8i32(<8 x i32> %a1, <8 x i32> %a2) nounwind {
|
||||
%x = icmp slt <8 x i32> %a1, %a2
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s
|
||||
// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=knl --show-encoding %s | FileCheck %s
|
||||
|
||||
// CHECK: vinserti32x4
|
||||
// CHECK: encoding: [0x62,0xa3,0x55,0x48,0x38,0xcd,0x01]
|
||||
@@ -35,3 +35,11 @@ vpsrad %xmm17, %zmm12, %zmm25
|
||||
// CHECK: vpsrad
|
||||
// CHECK: encoding: [0x62,0x61,0x1d,0x48,0xe2,0x4c,0xb7,0x20]
|
||||
vpsrad 512(%rdi, %rsi, 4), %zmm12, %zmm25
|
||||
|
||||
// CHECK: vpbroadcastd {{.*}} {%k1} {z}
|
||||
// CHECK: encoding: [0x62,0xf2,0x7d,0xc9,0x58,0xc8]
|
||||
vpbroadcastd %xmm0, %zmm1 {%k1} {z}
|
||||
|
||||
// CHECK: vmovdqu64 {{.*}} {%k3}
|
||||
// CHECK: encoding: [0x62,0xf1,0xfe,0x4b,0x6f,0xc8]
|
||||
vmovdqu64 %zmm0, %zmm1 {%k3}
|
Reference in New Issue
Block a user