Skip to content

[SystemZ] Register clobber in L128 expansion #91437

Closed
@nikic

Description

@nikic

Running https://gist.github.com/nikic/974087a15f48f4495f25361bae3015d2 through llc -mtriple=s390x-- gives something like this:

  lg  %r4, 14920(%r4,%r15)            # 16-byte Folded Reload
  lg  %r5, 14928(%r4,%r15)            # 16-byte Folded Reload

Note that %r4 is used in the load offset calculation, but also one of the result registers.

Originally, this is a L128:

  renamable $r2q = L128 $r15d, 14920, killed $r2d :: (load (s128) from %stack.13, align 8)

That gets expanded into two LG, resulting in the register clobber:

  $r2d = LG $r15d, 14920, $r2d :: (load (s128) from %stack.13, align 8)
  $r3d = LG $r15d, 14928, killed $r2d :: (load (s128) from %stack.13, align 8)

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions