mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-04 06:09:05 +00:00
[X86][SSE] Added (V)ROUNDSD + (V)ROUNDSS stack folding support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241671 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3c1e74be73
commit
796a06d4eb
@ -1107,6 +1107,8 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI)
|
||||
{ X86::PUNPCKLQDQrr, X86::PUNPCKLQDQrm, TB_ALIGN_16 },
|
||||
{ X86::PUNPCKLWDrr, X86::PUNPCKLWDrm, TB_ALIGN_16 },
|
||||
{ X86::PXORrr, X86::PXORrm, TB_ALIGN_16 },
|
||||
{ X86::ROUNDSDr, X86::ROUNDSDm, 0 },
|
||||
{ X86::ROUNDSSr, X86::ROUNDSSm, 0 },
|
||||
{ X86::SBB32rr, X86::SBB32rm, 0 },
|
||||
{ X86::SBB64rr, X86::SBB64rm, 0 },
|
||||
{ X86::SHUFPDrri, X86::SHUFPDrmi, TB_ALIGN_16 },
|
||||
@ -1403,6 +1405,8 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI)
|
||||
{ X86::VPUNPCKLQDQrr, X86::VPUNPCKLQDQrm, 0 },
|
||||
{ X86::VPUNPCKLWDrr, X86::VPUNPCKLWDrm, 0 },
|
||||
{ X86::VPXORrr, X86::VPXORrm, 0 },
|
||||
{ X86::VROUNDSDr, X86::VROUNDSDm, 0 },
|
||||
{ X86::VROUNDSSr, X86::VROUNDSSm, 0 },
|
||||
{ X86::VSHUFPDrri, X86::VSHUFPDrmi, 0 },
|
||||
{ X86::VSHUFPSrri, X86::VSHUFPSrmi, 0 },
|
||||
{ X86::VSUBPDrr, X86::VSUBPDrm, 0 },
|
||||
|
@ -1409,12 +1409,26 @@ define <8 x float> @stack_fold_roundps_ymm(<8 x float> %a0) {
|
||||
}
|
||||
declare <8 x float> @llvm.x86.avx.round.ps.256(<8 x float>, i32) nounwind readnone
|
||||
|
||||
; TODO stack_fold_roundsd
|
||||
define double @stack_fold_roundsd(double %a0) optsize {
|
||||
;CHECK-LABEL: stack_fold_roundsd
|
||||
;CHECK: vroundsd $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
|
||||
%1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
|
||||
%2 = call double @llvm.floor.f64(double %a0)
|
||||
ret double %2
|
||||
}
|
||||
declare double @llvm.floor.f64(double) nounwind readnone
|
||||
|
||||
; TODO stack_fold_roundsd_int
|
||||
declare <2 x double> @llvm.x86.sse41.round.sd(<2 x double>, <2 x double>, i32) nounwind readnone
|
||||
|
||||
; TODO stack_fold_roundss
|
||||
define float @stack_fold_roundss(float %a0) optsize {
|
||||
;CHECK-LABEL: stack_fold_roundss
|
||||
;CHECK: vroundss $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
|
||||
%1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
|
||||
%2 = call float @llvm.floor.f32(float %a0)
|
||||
ret float %2
|
||||
}
|
||||
declare float @llvm.floor.f32(float) nounwind readnone
|
||||
|
||||
; TODO stack_fold_roundss_int
|
||||
declare <4 x float> @llvm.x86.sse41.round.ss(<4 x float>, <4 x float>, i32) nounwind readnone
|
||||
|
@ -884,11 +884,29 @@ define <4 x float> @stack_fold_roundps(<4 x float> %a0) {
|
||||
}
|
||||
declare <4 x float> @llvm.x86.sse41.round.ps(<4 x float>, i32) nounwind readnone
|
||||
|
||||
; TODO stack_fold_roundsd
|
||||
; TODO stack_fold_roundsd_int
|
||||
define double @stack_fold_roundsd(double %a0) optsize {
|
||||
;CHECK-LABEL: stack_fold_roundsd
|
||||
;CHECK: roundsd $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
|
||||
%1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
|
||||
%2 = call double @llvm.floor.f64(double %a0)
|
||||
ret double %2
|
||||
}
|
||||
declare double @llvm.floor.f64(double) nounwind readnone
|
||||
|
||||
; TODO stack_fold_roundsd_int
|
||||
declare <2 x double> @llvm.x86.sse41.round.sd(<2 x double>, <2 x double>, i32) nounwind readnone
|
||||
|
||||
define float @stack_fold_roundss(float %a0) optsize {
|
||||
;CHECK-LABEL: stack_fold_roundss
|
||||
;CHECK: roundss $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
|
||||
%1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
|
||||
%2 = call float @llvm.floor.f32(float %a0)
|
||||
ret float %2
|
||||
}
|
||||
declare float @llvm.floor.f32(float) nounwind readnone
|
||||
|
||||
; TODO stack_fold_roundss
|
||||
; TODO stack_fold_roundss_int
|
||||
declare <4 x float> @llvm.x86.sse41.round.ss(<4 x float>, <4 x float>, i32) nounwind readnone
|
||||
|
||||
; TODO stack_fold_rsqrtps
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user