mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-22 22:11:50 +00:00
[X86][FastISel] Make sure we use the right register class when we select stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@267806 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d0d678f8fe
commit
6c76c8948d
@ -512,8 +512,16 @@ bool X86FastISel::X86FastEmitStore(EVT VT, unsigned ValReg, bool ValIsKill,
|
||||
break;
|
||||
}
|
||||
|
||||
const MCInstrDesc &Desc = TII.get(Opc);
|
||||
// Some of the instructions in the previous switch use FR128 instead
|
||||
// of FR32 for ValReg. Make sure the register we feed the instruction
|
||||
// matches its register class constraints.
|
||||
// Note: This is fine to do a copy from FR32 to FR128, this is the
|
||||
// same registers behind the scene and actually why it did not trigger
|
||||
// any bugs before.
|
||||
ValReg = constrainOperandRegClass(Desc, ValReg, Desc.getNumOperands() - 1);
|
||||
MachineInstrBuilder MIB =
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(Opc));
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, Desc);
|
||||
addFullAddress(MIB, AM).addReg(ValReg, getKillRegState(ValIsKill));
|
||||
if (MMO)
|
||||
MIB->addMemOperand(*FuncInfo.MF, MMO);
|
||||
|
@ -1,7 +1,7 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+sse2 -fast-isel -O0 < %s | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE2
|
||||
; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+sse4a -fast-isel -O0 < %s | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE4A
|
||||
; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+avx -fast-isel -O0 < %s | FileCheck %s --check-prefix=ALL --check-prefix=AVX
|
||||
; RUN: llc -verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+sse2 -fast-isel -O0 < %s | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE2
|
||||
; RUN: llc -verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+sse4a -fast-isel -O0 < %s | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE4A
|
||||
; RUN: llc -verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+avx -fast-isel -O0 < %s | FileCheck %s --check-prefix=ALL --check-prefix=AVX
|
||||
|
||||
define void @test_nti32(i32* nocapture %ptr, i32 %X) {
|
||||
; ALL-LABEL: test_nti32:
|
||||
|
Loading…
x
Reference in New Issue
Block a user