Commit 38480999 authored by bbudge's avatar bbudge Committed by Commit bot

[Turbofan] Add support for 16 byte frame slots.

AllocateSpillSlot can now handle requests for 16 byte slots.

LOG=N
BUG=v8:4124

Review-Url: https://codereview.chromium.org/2139663002
Cr-Commit-Position: refs/heads/master@{#37661}
parent 69fd22da
......@@ -123,12 +123,20 @@ class Frame : public ZoneObject {
private:
int AllocateAlignedFrameSlot(int width) {
DCHECK(width == 4 || width == 8);
// Skip one slot if necessary.
if (width > kPointerSize) {
DCHECK(width == kPointerSize * 2);
frame_slot_count_++;
frame_slot_count_ |= 1;
DCHECK(width == 4 || width == 8 || width == 16);
if (kPointerSize == 4) {
// Skip one slot if necessary.
if (width > kPointerSize) {
frame_slot_count_++;
frame_slot_count_ |= 1;
// 2 extra slots if width == 16.
frame_slot_count_ += (width & 16) / 8;
}
} else {
// No alignment when slots are 8 bytes.
DCHECK_EQ(8, kPointerSize);
// 1 extra slot if width == 16.
frame_slot_count_ += (width & 16) / 16;
}
return frame_slot_count_++;
}
......
......@@ -695,8 +695,7 @@ class SpillRange final : public ZoneObject {
return live_ranges_;
}
ZoneVector<TopLevelLiveRange*>& live_ranges() { return live_ranges_; }
// Currently, only 4 or 8 byte slots are supported in stack frames.
// TODO(bbudge) Add 16 byte slots for SIMD.
// Spill slots can be 4, 8, or 16 bytes wide.
int byte_width() const { return byte_width_; }
void Print() const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment