mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-07-21 02:29:22 +00:00
X86: Split (v)rounds[sd] into a normal and an intrinsic version.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146256 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
32f9763017
commit
a73fb9adbb
@ -2772,7 +2772,9 @@ static bool hasPartialRegUpdate(unsigned Opcode) {
|
||||
case X86::RCPSSr:
|
||||
case X86::RCPSSr_Int:
|
||||
case X86::ROUNDSDr:
|
||||
case X86::ROUNDSDr_Int:
|
||||
case X86::ROUNDSSr:
|
||||
case X86::ROUNDSSr_Int:
|
||||
case X86::RSQRTSSr:
|
||||
case X86::RSQRTSSr_Int:
|
||||
case X86::SQRTSSr:
|
||||
@ -2784,7 +2786,9 @@ static bool hasPartialRegUpdate(unsigned Opcode) {
|
||||
case X86::Int_VCVTSS2SDrr:
|
||||
case X86::VRCPSSr:
|
||||
case X86::VROUNDSDr:
|
||||
case X86::VROUNDSDr_Int:
|
||||
case X86::VROUNDSSr:
|
||||
case X86::VROUNDSSr_Int:
|
||||
case X86::VRSQRTSSr:
|
||||
case X86::VSQRTSSr:
|
||||
return true;
|
||||
|
@ -6052,8 +6052,18 @@ multiclass sse41_fp_binop_rm<bits<8> opcss, bits<8> opcsd,
|
||||
Intrinsic F32Int,
|
||||
Intrinsic F64Int, bit Is2Addr = 1> {
|
||||
let ExeDomain = GenericDomain in {
|
||||
// Intrinsic operation, reg.
|
||||
// Operation, reg.
|
||||
def SSr : SS4AIi8<opcss, MRMSrcReg,
|
||||
(outs FR32:$dst), (ins FR32:$src1, FR32:$src2, i32i8imm:$src3),
|
||||
!if(Is2Addr,
|
||||
!strconcat(OpcodeStr,
|
||||
"ss\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
|
||||
!strconcat(OpcodeStr,
|
||||
"ss\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
|
||||
[]>, OpSize;
|
||||
|
||||
// Intrinsic operation, reg.
|
||||
def SSr_Int : SS4AIi8<opcss, MRMSrcReg,
|
||||
(outs VR128:$dst), (ins VR128:$src1, VR128:$src2, i32i8imm:$src3),
|
||||
!if(Is2Addr,
|
||||
!strconcat(OpcodeStr,
|
||||
@ -6075,8 +6085,18 @@ let ExeDomain = GenericDomain in {
|
||||
(F32Int VR128:$src1, sse_load_f32:$src2, imm:$src3))]>,
|
||||
OpSize;
|
||||
|
||||
// Intrinsic operation, reg.
|
||||
// Operation, reg.
|
||||
def SDr : SS4AIi8<opcsd, MRMSrcReg,
|
||||
(outs FR64:$dst), (ins FR64:$src1, FR64:$src2, i32i8imm:$src3),
|
||||
!if(Is2Addr,
|
||||
!strconcat(OpcodeStr,
|
||||
"sd\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
|
||||
!strconcat(OpcodeStr,
|
||||
"sd\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
|
||||
[]>, OpSize;
|
||||
|
||||
// Intrinsic operation, reg.
|
||||
def SDr_Int : SS4AIi8<opcsd, MRMSrcReg,
|
||||
(outs VR128:$dst), (ins VR128:$src1, VR128:$src2, i32i8imm:$src3),
|
||||
!if(Is2Addr,
|
||||
!strconcat(OpcodeStr,
|
||||
|
Loading…
Reference in New Issue
Block a user