Ah, thanks. That seems easy enough. <br><br>Sorry to be pedantic, but does that snippet also handle cases where the frame pointer, %rbp, needs to be 32-byte aligned when dynamic allocas are present?<br><br>I've looked at the ABI, but I don't see any guarantees about 32-byte frame alignment for AVX. That can be trouble when spill slots are based off of the frame pointer, not the stack pointer. Please correct me if I'm wrong. <br>
<br>I am working off of a 2.9ish branch, so I would like to cherry pick the changes I need. If it's too much trouble to pinpoint the source, please say so. <br><br>Tx,<br>Cameron<br><br>On Thursday, September 1, 2011, Jakob Stoklund Olesen <<a href="mailto:stoklund@2pi.dk">stoklund@2pi.dk</a>> wrote:<br>
><br>> On Aug 25, 2011, at 4:17 PM, Cameron McInally wrote:<br>><br>>> Hey guys,<br>>><br>>> Are spills/reloads of AVX registers using aligned stores/loads?<br>><br>> Yes.<br>><br>>> I can't<br>
>> seem to find the code that aligns the stack slots to 32-bytes. Could<br>>> someone point me in the right direction?<br>><br>> The register class has 256-bit spill alignment:<br>><br>> def VR256 : RegisterClass<"X86", [v32i8, v16i16, v8i32, v4i64, v8f32, v4f64],<br>
> 256, (sequence "YMM%u", 0, 15)> {<br>> let SubRegClasses = [(FR32 sub_ss), (FR64 sub_sd), (VR128 sub_xmm)];<br>> }<br>><br>> /jakob<br>><br>>