mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-04 21:31:03 +00:00
AVX-512: Added intrinsic for VMOVSS store form with mask.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216530 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3512034554
commit
fe0c6ead85
@ -2088,10 +2088,16 @@ multiclass avx512_move_scalar <string asm, RegisterClass RC,
|
||||
!strconcat(asm, " \t{$src, $dst|$dst, $src}"),
|
||||
[(set RC:$dst, (mem_pat addr:$src))], IIC_SSE_MOV_S_RM>,
|
||||
EVEX, VEX_LIG;
|
||||
let mayStore = 1 in {
|
||||
def mr: SI<0x11, MRMDestMem, (outs), (ins x86memop:$dst, RC:$src),
|
||||
!strconcat(asm, " \t{$src, $dst|$dst, $src}"),
|
||||
[(store RC:$src, addr:$dst)], IIC_SSE_MOV_S_MR>,
|
||||
EVEX, VEX_LIG;
|
||||
def mrk: SI<0x11, MRMDestMem, (outs), (ins x86memop:$dst, VK1WM:$mask, RC:$src),
|
||||
!strconcat(asm, " \t{$src, $dst {${mask}}|$dst {${mask}}, $src}"),
|
||||
[], IIC_SSE_MOV_S_MR>,
|
||||
EVEX, VEX_LIG, EVEX_K;
|
||||
} // mayStore
|
||||
} //hasSideEffects = 0
|
||||
}
|
||||
|
||||
@ -2111,6 +2117,10 @@ def : Pat<(f64 (X86select VK1WM:$mask, (f64 FR64X:$src1), (f64 FR64X:$src2))),
|
||||
(COPY_TO_REGCLASS (VMOVSDZrrk (COPY_TO_REGCLASS FR64X:$src2, VR128X),
|
||||
VK1WM:$mask, (f64 (IMPLICIT_DEF)), FR64X:$src1), FR64X)>;
|
||||
|
||||
def : Pat<(int_x86_avx512_mask_store_ss addr:$dst, VR128X:$src, GR8:$mask),
|
||||
(VMOVSSZmrk addr:$dst, (i1 (COPY_TO_REGCLASS GR8:$mask, VK1WM)),
|
||||
(COPY_TO_REGCLASS VR128X:$src, FR32X))>;
|
||||
|
||||
// For the disassembler
|
||||
let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in {
|
||||
def VMOVSSZrr_REV : SI<0x11, MRMDestReg, (outs VR128X:$dst),
|
||||
|
@ -636,3 +636,12 @@ define <16 x i32> @test_maskz_valign_d(<16 x i32> %a, <16 x i32> %b, i16 %mask)
|
||||
}
|
||||
|
||||
declare <16 x i32> @llvm.x86.avx512.mask.valign.d.512(<16 x i32>, <16 x i32>, i8, <16 x i32>, i16)
|
||||
|
||||
define void @test_mask_store_ss(i8* %ptr, <4 x float> %data, i8 %mask) {
|
||||
; CHECK-LABEL: test_mask_store_ss
|
||||
; CHECK: vmovss %xmm0, (%rdi) {%k1} ## encoding: [0x62,0xf1,0x7e,0x09,0x11,0x07]
|
||||
call void @llvm.x86.avx512.mask.store.ss(i8* %ptr, <4 x float> %data, i8 %mask)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.x86.avx512.mask.store.ss(i8*, <4 x float>, i8 )
|
Loading…
x
Reference in New Issue
Block a user