mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 06:00:28 +00:00
ExecutionDepsFix - Fix bug in clearance calculation
The clearance calculation did not take into account registers defined as outputs or clobbers in inline assembly machine instructions because these register defs are implicit. Differential Revision: http://reviews.llvm.org/D22580 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@276266 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
367e93b45c
commit
a264c851a4
@ -520,8 +520,6 @@ void ExeDepsFix::processDefs(MachineInstr *MI, bool Kill) {
|
||||
MachineOperand &MO = MI->getOperand(i);
|
||||
if (!MO.isReg())
|
||||
continue;
|
||||
if (MO.isImplicit())
|
||||
break;
|
||||
if (MO.isUse())
|
||||
continue;
|
||||
for (int rx : regIndices(MO.getReg())) {
|
||||
|
@ -199,3 +199,13 @@ for.end16: ; preds = %for.inc14
|
||||
;AVX-NEXT: vmulsd {{.*}}, [[XMM0]], [[XMM0]]
|
||||
;AVX-NEXT: vmovsd [[XMM0]],
|
||||
}
|
||||
|
||||
define double @inlineasmdep(i64 %arg) {
|
||||
top:
|
||||
tail call void asm sideeffect "", "~{xmm0},~{dirflag},~{fpsr},~{flags}"()
|
||||
%tmp1 = sitofp i64 %arg to double
|
||||
ret double %tmp1
|
||||
;AVX-LABEL:@inlineasmdep
|
||||
;AVX: vxorps [[XMM0:%xmm[0-9]+]], [[XMM0]], [[XMM0]]
|
||||
;AVX-NEXT: vcvtsi2sdq {{.*}}, [[XMM0]], {{%xmm[0-9]+}}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user