[LLVMbugs] [Bug 8804] New: Missing MemOperands on movss caust lost LICM opportunity
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Fri Dec 17 20:36:57 PST 2010
http://llvm.org/bugs/show_bug.cgi?id=8804
Summary: Missing MemOperands on movss caust lost LICM
opportunity
Product: libraries
Version: trunk
Platform: PC
OS/Version: All
Status: NEW
Severity: normal
Priority: P
Component: Backend: X86
AssignedTo: unassignedbugs at nondot.org
ReportedBy: stoklund at 2pi.dk
CC: llvmbugs at cs.uiuc.edu
Created an attachment (id=5905)
--> (http://llvm.org/bugs/attachment.cgi?id=5905)
SingleSource/UnitTests/Vector/build2
The X86 instruction selector can use movss for zextloads of vectors:
def : Pat<(v4f32 (X86vzmovl (v4f32 (scalar_to_vector (loadf32 addr:$src))))),
(SUBREG_TO_REG (i32 0), (MOVSSrm addr:$src), sub_ss)>;
Unfortunately, this pattern causes the memory operands to be attached to the
SUBREG_TO_REG node instead of the MOVSSrm node:
ISEL: Starting pattern match on root node: 0x101058610: v4f32 =
X86ISD::VZEXT_MOVL 0x101058110 [ID=64]
Initial Opcode index to 12237
OpcodeSwitch from 12242 to 12247
Match failed at index 12262
Continuing at 12286
Match failed at index 12288
Continuing at 12303
Match failed at index 12315
Continuing at 12413
Skipped scope entry (due to false predicate) at index 12417, continuing at
12446
Skipped scope entry (due to false predicate) at index 12447, continuing at
12476
Match failed at index 12415
Continuing at 12477
Continuing at 12673
Match failed at index 12675
Continuing at 12733
OpcodeSwitch from 12737 to 12742
TypeSwitch[f32] from 12757 to 12760
MatchAddress: X86ISelAddressMode 0x7fff5fbfdc10
Base_Reg nul Base.FrameIndex 0
Scale1
IndexReg nul Disp 0
GV nul CP nul
ES nul JT-1 Align0
Created node: 0x101056e10: f32,ch = MOVSSrm 0x10105d310, 0x10104fc10,
0x10104f310, 0x101056f10, 0x10104f710, 0x100f1e998
Morphed node: 0x101058610: v4f32,ch = SUBREG_TO_REG 0x101057010, 0x101056e10,
0x101058a10, 0x101056e10:1<Mem:LD4[ConstantPool]>
ISEL: Match complete!
=> 0x101058610: v4f32,ch = SUBREG_TO_REG 0x101057010, 0x101056e10, 0x101058a10,
0x101056e10:1<Mem:LD4[ConstantPool]>
Without the memory operands, machine LICM can't hoist the constant pool load.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list