[PATCH] D14701: [x86] add vmovss/sd missing encoding
Igor Breger via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 1 06:34:36 PST 2015
igorb added a comment.
please add encoding tests for intel style assembler.
Is it possible to implement movss/sd load intrinsic in this patch?
================
Comment at: ../trunk/lib/Target/X86/X86InstrAVX512.td:2957
@@ +2956,3 @@
+ (_.VT _.RC:$src2))), IIC_SSE_MOV_S_RR>, EVEX_4V;
+ defm rm_Int : AVX512_maskable_scalar<0x10, MRMSrcMem, _, (outs _.RC:$dst),
+ (ins _.MemOp:$src), "v"#asm,"$src","$src",
----------------
1. dest is also source in case k[0] == 0
2. (ins _.MemOp:$src) should be (ins _.ScalarMemOp:$src)
3. please add mayLoad = 1
something like
let Constraints = "$src1 = $dst" , mayLoad = 1 in
defm rm_Int : AVX512_maskable_3src_scalar<0x10, MRMSrcMem, _,
(outs _.RC:$dst),
(ins _.ScalarMemOp:$src),
asm,"$src","$src",
(_.VT (OpNode (_.VT _.RC:$src1),
(_.VT (scalar_to_vector
(_.ScalarLdFrag addr:$src)))))>, EVEX;
================
Comment at: ../trunk/lib/Target/X86/X86InstrAVX512.td:2963
@@ +2962,3 @@
+ let isCodeGenOnly = 1 in {
+ def rr : SI<0x10, MRMSrcReg, (outs VR128X:$dst), (ins VR128X:$src1, _.FRC:$src2),
+ !strconcat(asm, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
----------------
You can use AVX512PI , and pass vmovss as parameter to avx512_move_scalar to avoid "v"#asm above ( in rr_Int )
================
Comment at: ../trunk/lib/Target/X86/X86InstrAVX512.td:2968
@@ +2967,3 @@
+ IIC_SSE_MOV_S_RR>, EVEX_4V;
+ def rm : SI<0x10, MRMSrcMem, (outs _.FRC:$dst), (ins _.ScalarMemOp:$src),
+ !strconcat(asm, "\t{$src, $dst|$dst, $src}"),
----------------
let mayLoad = 1 in
http://reviews.llvm.org/D14701
More information about the llvm-commits
mailing list