- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Today I use iaca(a tool to analysis code), I find that the instruction "molvpd" and "movupd"
has difference numbers of uops .
the following is the instrucion I used in my assembly (AT&T style)
movlpd %mm1,(%rdx,%rcx,8)
movupd %mm1,(%rdx,%rcx,8)
movupd has 1 uops, while movlpd has 2 .
movlpd accupied port2(load port) and port 5(SIMD ALU).
I wonder why it occupied port 5?
I thinks the two instruction are almost the same .
but the result is they are not the same.
Why this could happend?
has difference numbers of uops .
the following is the instrucion I used in my assembly (AT&T style)
movlpd %mm1,(%rdx,%rcx,8)
movupd %mm1,(%rdx,%rcx,8)
movupd has 1 uops, while movlpd has 2 .
movlpd accupied port2(load port) and port 5(SIMD ALU).
I wonder why it occupied port 5?
I thinks the two instruction are almost the same .
but the result is they are not the same.
Why this could happend?
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
One difference is that for movlpd, "the high quadword of the xmm register remains unchanged", i.e. partof the old register value is still needed. How this is implemented depends on the micro-architecture.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page