forked from OSchip/llvm-project
Revert r334802 "[X86] Prevent folding stack reloads with instructions that have an undefined register update."
There's a typo causing the build to fail. llvm-svn: 334803
This commit is contained in:
parent
5ec210cc27
commit
c8a763ed84
|
@ -8916,15 +8916,12 @@ static bool shouldPreventUndefRegUpdateMemFold(MachineFunction &MF, MachineInstr
|
|||
if (MF.getFunction().optForSize() || !hasUndefRegUpdate(MI.getOpcode()) ||
|
||||
!MI.getOperand(1).isReg())
|
||||
return false;
|
||||
|
||||
// Check if the register is explicitly marked as undef.
|
||||
if (MI.getOperand(1).isUndef())
|
||||
return true;
|
||||
|
||||
// Another possibility is that it is defined by by an IMPLICIT_DEF pseudo.
|
||||
|
||||
MachineRegisterInfo &RegInfo = MF.getRegInfo();
|
||||
MachineInstr *VRegDef = RegInfo.getUniqueVRegDef(MI.getOperand(1).getReg());
|
||||
return VRegDef && VRegDef->isImplicitDef()
|
||||
if (VRegDef == nullptr)
|
||||
return false;
|
||||
return VRegDef->isImplicitDef();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -217,6 +217,7 @@ top:
|
|||
|
||||
; Make sure we are making a smart choice regarding undef registers and
|
||||
; hiding the false dependency behind a true dependency
|
||||
; TODO: We shouldn't be folding the load here.
|
||||
define double @truedeps(float %arg) {
|
||||
top:
|
||||
tail call void asm sideeffect "", "~{xmm6},~{dirflag},~{fpsr},~{flags}"()
|
||||
|
@ -227,8 +228,8 @@ top:
|
|||
%tmp1 = fpext float %arg to double
|
||||
ret double %tmp1
|
||||
;AVX-LABEL:@truedeps
|
||||
;AVX-NOT: vxorps
|
||||
;AVX: vcvtss2sd [[XMM0:%xmm[0-9]+]], [[XMM0]], {{%xmm[0-9]+}}
|
||||
;AVX: vxorps [[XMM6:%xmm6]], [[XMM6]], [[XMM6]]
|
||||
;AVX: vcvtss2sd {{.*}}, [[XMM6]], {{%xmm[0-9]+}}
|
||||
}
|
||||
|
||||
; Make sure we are making a smart choice regarding undef registers and
|
||||
|
|
|
@ -573,7 +573,7 @@ define i64 @stack_fold_cvtsd2si64_int(<2 x double> %a0) {
|
|||
}
|
||||
declare i64 @llvm.x86.sse2.cvtsd2si64(<2 x double>) nounwind readnone
|
||||
|
||||
define double @stack_fold_cvtsi2sd(i32 %a0) optsize {
|
||||
define double @stack_fold_cvtsi2sd(i32 %a0) {
|
||||
;CHECK-LABEL: stack_fold_cvtsi2sd
|
||||
;CHECK: vcvtsi2sdl {{-?[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,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
|
||||
|
@ -581,7 +581,7 @@ define double @stack_fold_cvtsi2sd(i32 %a0) optsize {
|
|||
ret double %2
|
||||
}
|
||||
|
||||
define <2 x double> @stack_fold_cvtsi2sd_int(i32 %a0) optsize {
|
||||
define <2 x double> @stack_fold_cvtsi2sd_int(i32 %a0) {
|
||||
;CHECK-LABEL: stack_fold_cvtsi2sd_int
|
||||
;CHECK: vcvtsi2sdl {{-?[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,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
|
||||
|
@ -590,7 +590,7 @@ define <2 x double> @stack_fold_cvtsi2sd_int(i32 %a0) optsize {
|
|||
}
|
||||
declare <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double>, i32) nounwind readnone
|
||||
|
||||
define double @stack_fold_cvtsi642sd(i64 %a0) optsize {
|
||||
define double @stack_fold_cvtsi642sd(i64 %a0) {
|
||||
;CHECK-LABEL: stack_fold_cvtsi642sd
|
||||
;CHECK: vcvtsi2sdq {{-?[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,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
|
||||
|
@ -598,7 +598,7 @@ define double @stack_fold_cvtsi642sd(i64 %a0) optsize {
|
|||
ret double %2
|
||||
}
|
||||
|
||||
define <2 x double> @stack_fold_cvtsi642sd_int(i64 %a0) optsize {
|
||||
define <2 x double> @stack_fold_cvtsi642sd_int(i64 %a0) {
|
||||
;CHECK-LABEL: stack_fold_cvtsi642sd_int
|
||||
;CHECK: vcvtsi2sdq {{-?[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,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
|
||||
|
@ -607,7 +607,7 @@ define <2 x double> @stack_fold_cvtsi642sd_int(i64 %a0) optsize {
|
|||
}
|
||||
declare <2 x double> @llvm.x86.sse2.cvtsi642sd(<2 x double>, i64) nounwind readnone
|
||||
|
||||
define float @stack_fold_cvtsi2ss(i32 %a0) optsize {
|
||||
define float @stack_fold_cvtsi2ss(i32 %a0) {
|
||||
;CHECK-LABEL: stack_fold_cvtsi2ss
|
||||
;CHECK: vcvtsi2ssl {{-?[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,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
|
||||
|
@ -615,7 +615,7 @@ define float @stack_fold_cvtsi2ss(i32 %a0) optsize {
|
|||
ret float %2
|
||||
}
|
||||
|
||||
define <4 x float> @stack_fold_cvtsi2ss_int(i32 %a0) optsize {
|
||||
define <4 x float> @stack_fold_cvtsi2ss_int(i32 %a0) {
|
||||
;CHECK-LABEL: stack_fold_cvtsi2ss_int
|
||||
;CHECK: vcvtsi2ssl {{-?[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,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
|
||||
|
@ -624,7 +624,7 @@ define <4 x float> @stack_fold_cvtsi2ss_int(i32 %a0) optsize {
|
|||
}
|
||||
declare <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float>, i32) nounwind readnone
|
||||
|
||||
define float @stack_fold_cvtsi642ss(i64 %a0) optsize {
|
||||
define float @stack_fold_cvtsi642ss(i64 %a0) {
|
||||
;CHECK-LABEL: stack_fold_cvtsi642ss
|
||||
;CHECK: vcvtsi2ssq {{-?[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,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
|
||||
|
@ -632,7 +632,7 @@ define float @stack_fold_cvtsi642ss(i64 %a0) optsize {
|
|||
ret float %2
|
||||
}
|
||||
|
||||
define <4 x float> @stack_fold_cvtsi642ss_int(i64 %a0) optsize {
|
||||
define <4 x float> @stack_fold_cvtsi642ss_int(i64 %a0) {
|
||||
;CHECK-LABEL: stack_fold_cvtsi642ss_int
|
||||
;CHECK: vcvtsi2ssq {{-?[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,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
|
||||
|
@ -1653,7 +1653,7 @@ define <8 x float> @stack_fold_sqrtps_ymm(<8 x float> %a0) {
|
|||
}
|
||||
declare <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float>) nounwind readnone
|
||||
|
||||
define double @stack_fold_sqrtsd(double %a0) optsize {
|
||||
define double @stack_fold_sqrtsd(double %a0) {
|
||||
;CHECK-LABEL: stack_fold_sqrtsd
|
||||
;CHECK: vsqrtsd {{-?[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}"()
|
||||
|
@ -1664,7 +1664,7 @@ declare double @llvm.sqrt.f64(double) nounwind readnone
|
|||
|
||||
; TODO stack_fold_sqrtsd_int
|
||||
|
||||
define float @stack_fold_sqrtss(float %a0) optsize {
|
||||
define float @stack_fold_sqrtss(float %a0) {
|
||||
;CHECK-LABEL: stack_fold_sqrtss
|
||||
;CHECK: vsqrtss {{-?[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}"()
|
||||
|
|
Loading…
Reference in New Issue