mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-13 10:32:06 +00:00
Merge intrinsic pattern and no pattern versions of VCVTSD2SI intruction definitions. Matches non-AVX version of same instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148914 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e8e7b29fd9
commit
042883f5da
@ -1412,15 +1412,6 @@ multiclass sse12_cvt_s<bits<8> opc, RegisterClass SrcRC, RegisterClass DstRC,
|
|||||||
[(set DstRC:$dst, (OpNode (ld_frag addr:$src)))]>;
|
[(set DstRC:$dst, (OpNode (ld_frag addr:$src)))]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
multiclass sse12_cvt_s_np<bits<8> opc, RegisterClass SrcRC, RegisterClass DstRC,
|
|
||||||
X86MemOperand x86memop, string asm> {
|
|
||||||
let neverHasSideEffects = 1 in {
|
|
||||||
def rr : SI<opc, MRMSrcReg, (outs DstRC:$dst), (ins SrcRC:$src), asm, []>;
|
|
||||||
let mayLoad = 1 in
|
|
||||||
def rm : SI<opc, MRMSrcMem, (outs DstRC:$dst), (ins x86memop:$src), asm, []>;
|
|
||||||
} // neverHasSideEffects = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
multiclass sse12_cvt_p<bits<8> opc, RegisterClass SrcRC, RegisterClass DstRC,
|
multiclass sse12_cvt_p<bits<8> opc, RegisterClass SrcRC, RegisterClass DstRC,
|
||||||
SDNode OpNode, X86MemOperand x86memop, PatFrag ld_frag,
|
SDNode OpNode, X86MemOperand x86memop, PatFrag ld_frag,
|
||||||
string asm, Domain d> {
|
string asm, Domain d> {
|
||||||
@ -1537,21 +1528,11 @@ multiclass sse12_cvt_sint_3addr<bits<8> opc, RegisterClass SrcRC,
|
|||||||
[(set DstRC:$dst, (Int DstRC:$src1, (ld_frag addr:$src2)))]>;
|
[(set DstRC:$dst, (Int DstRC:$src1, (ld_frag addr:$src2)))]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
defm Int_VCVTSD2SI : sse12_cvt_sint<0x2D, VR128, GR32, int_x86_sse2_cvtsd2si,
|
defm VCVTSD2SI : sse12_cvt_sint<0x2D, VR128, GR32, int_x86_sse2_cvtsd2si,
|
||||||
f128mem, load, "cvtsd2si">, XD, VEX;
|
f128mem, load, "cvtsd2si">, XD, VEX, VEX_LIG;
|
||||||
defm Int_VCVTSD2SI64 : sse12_cvt_sint<0x2D, VR128, GR64,
|
defm VCVTSD2SI64 : sse12_cvt_sint<0x2D, VR128, GR64,
|
||||||
int_x86_sse2_cvtsd2si64, f128mem, load, "cvtsd2si">,
|
int_x86_sse2_cvtsd2si64, f128mem, load, "cvtsd2si">,
|
||||||
XD, VEX, VEX_W;
|
XD, VEX, VEX_W, VEX_LIG;
|
||||||
|
|
||||||
// FIXME: The asm matcher has a hack to ignore instructions with _Int and Int_
|
|
||||||
// Get rid of this hack or rename the intrinsics, there are several
|
|
||||||
// intructions that only match with the intrinsic form, why create duplicates
|
|
||||||
// to let them be recognized by the assembler?
|
|
||||||
defm VCVTSD2SI : sse12_cvt_s_np<0x2D, FR64, GR32, f64mem,
|
|
||||||
"cvtsd2si\t{$src, $dst|$dst, $src}">, XD, VEX, VEX_LIG;
|
|
||||||
defm VCVTSD2SI64 : sse12_cvt_s_np<0x2D, FR64, GR64, f64mem,
|
|
||||||
"cvtsd2si\t{$src, $dst|$dst, $src}">, XD, VEX, VEX_W,
|
|
||||||
VEX_LIG;
|
|
||||||
|
|
||||||
defm CVTSD2SI : sse12_cvt_sint<0x2D, VR128, GR32, int_x86_sse2_cvtsd2si,
|
defm CVTSD2SI : sse12_cvt_sint<0x2D, VR128, GR32, int_x86_sse2_cvtsd2si,
|
||||||
f128mem, load, "cvtsd2si{l}">, XD;
|
f128mem, load, "cvtsd2si{l}">, XD;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user