mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-24 09:29:42 +00:00
Add AVX 128-bit sqrt versions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135404 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
45473c1b15
commit
3aaa010ece
@ -1894,6 +1894,17 @@ let Predicates = [HasAVX] in {
|
||||
sse1_fp_unop_p_int<0x53, "vrcp", int_x86_sse_rcp_ps>, VEX;
|
||||
}
|
||||
|
||||
def : Pat<(f32 (fsqrt FR32:$src)),
|
||||
(VSQRTSSr (f32 (IMPLICIT_DEF)), FR32:$src)>, Requires<[HasAVX]>;
|
||||
def : Pat<(f64 (fsqrt FR64:$src)),
|
||||
(VSQRTSDr (f64 (IMPLICIT_DEF)), FR64:$src)>, Requires<[HasAVX]>;
|
||||
def : Pat<(f64 (fsqrt (load addr:$src))),
|
||||
(VSQRTSDm (f64 (IMPLICIT_DEF)), addr:$src)>,
|
||||
Requires<[HasAVX, OptForSize]>;
|
||||
def : Pat<(f32 (fsqrt (load addr:$src))),
|
||||
(VSQRTSSm (f32 (IMPLICIT_DEF)), addr:$src)>,
|
||||
Requires<[HasAVX, OptForSize]>;
|
||||
|
||||
// Square root.
|
||||
defm SQRT : sse1_fp_unop_s<0x51, "sqrt", fsqrt, int_x86_sse_sqrt_ss>,
|
||||
sse1_fp_unop_p<0x51, "sqrt", fsqrt>,
|
||||
|
@ -52,3 +52,21 @@ entry:
|
||||
%conv = sitofp i64 %tmp1 to float
|
||||
ret float %conv
|
||||
}
|
||||
|
||||
; CHECK: vsqrtss
|
||||
define float @sqrtA(float %a) nounwind uwtable readnone ssp {
|
||||
entry:
|
||||
%conv1 = tail call float @sqrtf(float %a) nounwind readnone
|
||||
ret float %conv1
|
||||
}
|
||||
|
||||
declare double @sqrt(double) readnone
|
||||
|
||||
; CHECK: vsqrtsd
|
||||
define double @sqrtB(double %a) nounwind uwtable readnone ssp {
|
||||
entry:
|
||||
%call = tail call double @sqrt(double %a) nounwind readnone
|
||||
ret double %call
|
||||
}
|
||||
|
||||
declare float @sqrtf(float) readnone
|
||||
|
Loading…
Reference in New Issue
Block a user