-
-
Save nikic/61b5ac3390755b17dd542cd8131b926a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# *** IR Dump After X86 Optimize Call Frame ***: | |
# Machine code for function test_offset: IsSSA, TracksLiveness | |
Frame Objects: | |
fi#0: size=128, align=16, at location [SP+8] | |
Function Live Ins: $rdi in %0 | |
bb.0.entry: | |
liveins: $rdi | |
%0:gr64 = COPY $rdi | |
MOV8mi %0:gr64, 1, $noreg, 7, $noreg, 0 :: (volatile store 1 into %ir.gep0) | |
MOV16mi %0:gr64, 1, $noreg, 5, $noreg, 0 :: (volatile store 2 into %ir.bc1) | |
MOV32mi %0:gr64, 1, $noreg, 1, $noreg, 0 :: (volatile store 4 into %ir.bc2) | |
%1:vr128 = VMOVDQUrm %0:gr64, 1, $noreg, -4, $noreg :: (load 16 from %ir.y1, align 1) | |
VMOVDQAmr %stack.0.z, 1, $noreg, 0, $noreg, killed %1:vr128 :: (store 16 into %ir.y2) | |
%2:gr8 = MOV8rm %stack.0.z, 1, $noreg, 4, $noreg :: (dereferenceable load 1 from %ir.gep4, align 4) | |
$al = COPY %2:gr8 | |
RET 0, $al | |
# End machine code for function test_offset. | |
# *** IR Dump After X86 Avoid Store Forwarding Blocks ***: | |
# Machine code for function test_offset: IsSSA, TracksLiveness | |
Frame Objects: | |
fi#0: size=128, align=16, at location [SP+8] | |
Function Live Ins: $rdi in %0 | |
bb.0.entry: | |
liveins: $rdi | |
%0:gr64 = COPY $rdi | |
MOV8mi %0:gr64, 1, $noreg, 7, $noreg, 0 :: (volatile store 1 into %ir.gep0) | |
MOV16mi %0:gr64, 1, $noreg, 5, $noreg, 0 :: (volatile store 2 into %ir.bc1) | |
MOV32mi %0:gr64, 1, $noreg, 1, $noreg, 0 :: (volatile store 4 into %ir.bc2) | |
%3:gr16 = MOV16rm %0:gr64, 1, $noreg, -4, $noreg :: (load 2 from %ir.y1, align 1) | |
MOV16mr %stack.0.z, 1, $noreg, 0, $noreg, killed %3:gr16 :: (store 2 into %ir.y2, align 16) | |
%4:gr8 = MOV8rm %0:gr64, 1, $noreg, -2, $noreg :: (load 1 from %ir.y1 + 2) | |
MOV8mr %stack.0.z, 1, $noreg, 2, $noreg, killed %4:gr8 :: (store 1 into %ir.y2 + 2, align 16) | |
%5:gr32 = MOV32rm %0:gr64, 1, $noreg, 1, $noreg :: (load 4 from %ir.y1 + 3, align 1) | |
MOV32mr %stack.0.z, 1, $noreg, 5, $noreg, killed %5:gr32 :: (store 4 into %ir.y2 + 3, align 16) | |
%6:gr16 = MOV16rm %0:gr64, 1, $noreg, 5, $noreg :: (load 2 from %ir.y1 + 7, align 1) | |
MOV16mr %stack.0.z, 1, $noreg, 9, $noreg, killed %6:gr16 :: (store 2 into %ir.y2 + 7, align 16) | |
%7:gr8 = MOV8rm %0:gr64, 1, $noreg, 7, $noreg :: (load 1 from %ir.y1 + 9) | |
MOV8mr %stack.0.z, 1, $noreg, 11, $noreg, killed %7:gr8 :: (store 1 into %ir.y2 + 9, align 16) | |
%8:gr32 = MOV32rm %0:gr64, 1, $noreg, 8, $noreg :: (load 4 from %ir.y1 + 10, align 1) | |
MOV32mr %stack.0.z, 1, $noreg, 12, $noreg, killed %8:gr32 :: (store 4 into %ir.y2 + 10, align 16) | |
%2:gr8 = MOV8rm %stack.0.z, 1, $noreg, 4, $noreg :: (dereferenceable load 1 from %ir.gep4, align 4) | |
$al = COPY %2:gr8 | |
RET 0, $al | |
# End machine code for function test_offset. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment