CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
402 lines
8.0 KiB
YAML
402 lines
8.0 KiB
YAML
# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass=postra-machine-sink -verify-machineinstrs -o - %s | FileCheck %s
|
|
# RUN: llc -mtriple=aarch64-none-linux-gnu -passes='postra-machine-sink' -o - %s | FileCheck %s
|
|
|
|
---
|
|
# Sink w19 to %bb.1.
|
|
# CHECK-LABEL: name: sinkcopy1
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK-NOT: $w19 = COPY killed $w0
|
|
# CHECK-LABEL: bb.1:
|
|
# CHECK: liveins: $w0, $w1
|
|
# CHECK: renamable $w19 = COPY killed $w0
|
|
|
|
name: sinkcopy1
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY killed $w0
|
|
Bcc 11, %bb.1, implicit $nzcv
|
|
B %bb.2
|
|
|
|
bb.1:
|
|
liveins: $w1, $w19
|
|
$w0 = ADDWrr $w1, $w19
|
|
RET $x0
|
|
|
|
bb.2:
|
|
$w0 = COPY $wzr
|
|
RET $x0
|
|
...
|
|
|
|
---
|
|
# Sink w19 to %bb.2.
|
|
# CHECK-LABEL: name: sinkcopy2
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK-NOT: renamable $w19 = COPY killed $w0
|
|
# CHECK-LABEL: bb.2:
|
|
# CHECK: liveins: $w0, $w1
|
|
# CHECK: renamable $w19 = COPY killed $w0
|
|
name: sinkcopy2
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY killed $w0
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
B %bb.1
|
|
|
|
bb.1:
|
|
$w0 = COPY $wzr
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $w1, $w19
|
|
$w0 = ADDWrr $w1, $w19
|
|
RET $x0
|
|
...
|
|
|
|
---
|
|
# Sink w19 and w20 to %bb.1.
|
|
# CHECK-LABEL: name: sinkcopy3
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK-NOT: renamable $w19 = COPY killed $w0
|
|
# CHECK-LABEL: bb.1:
|
|
# CHECK: liveins: $w0, $w1
|
|
# CHECK: renamable $w19 = COPY killed $w0
|
|
# CHECK: renamable $w20 = COPY killed $w1
|
|
name: sinkcopy3
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY killed $w0
|
|
renamable $w20 = COPY killed $w1
|
|
|
|
bb.1:
|
|
liveins: $w19, $w20
|
|
$w0 = COPY $w19
|
|
$w1 = COPY $w20
|
|
RET $x0
|
|
...
|
|
|
|
|
|
# Sink w19 to %bb.1 and w20 to %bb.2.
|
|
# CHECK-LABEL: name: sinkcopy4
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK-NOT: renamable $w19 = COPY $w0
|
|
# CHECK-NOT: renamable $w20 = COPY $w1
|
|
# CHECK-LABEL: bb.1:
|
|
# CHECK: liveins: $w0, $w1
|
|
# CHECK: renamable $w19 = COPY $w0
|
|
# CHECK-LABEL: bb.2:
|
|
# CHECK: liveins: $w0, $w1
|
|
# CHECK: renamable $w20 = COPY $w1
|
|
name: sinkcopy4
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY $w0
|
|
renamable $w20 = COPY $w1
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
B %bb.1
|
|
|
|
bb.1:
|
|
liveins: $w1, $w19
|
|
$w0 = ADDWrr $w1, $w19
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $w0, $w20
|
|
$w0 = ADDWrr $w0, $w20
|
|
RET $x0
|
|
...
|
|
|
|
# Sink w19 to %bb.3 through %bb.2.
|
|
# CHECK-LABEL: name: sinkcopy5
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK-NOT: renamable $w19 = COPY $w0
|
|
# CHECK-LABEL: bb.2:
|
|
# CHECK: $w1 = ADDWrr $w1, $w0
|
|
# CHECK-LABEL: bb.3:
|
|
# CHECK: liveins: $w0, $w1
|
|
# CHECK: renamable $w19 = COPY killed $w0
|
|
name: sinkcopy5
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY $w0
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
|
|
bb.1:
|
|
liveins: $x0
|
|
$w19 = COPY $wzr
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $w0, $w1, $w19
|
|
$w1 = ADDWrr $w1, killed $w0
|
|
|
|
bb.3:
|
|
liveins: $w1, $w19
|
|
$w0 = ADDWrr $w1, $w19
|
|
RET $x0
|
|
...
|
|
|
|
# Sink w19 to %bb.3, but through %bb.2.
|
|
# CHECK-LABEL: name: sinkcopy6
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK-NOT: renamable $w19 = COPY $w0
|
|
# CHECK-NOT: renamable $w20 = COPY $w0
|
|
# CHECK-LABEL: bb.2:
|
|
# CHECK: liveins: $w0, $w1
|
|
# CHECK: renamable $w19 = COPY $w0
|
|
# CHECK: renamable $w20 = COPY $w19
|
|
name: sinkcopy6
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY $w0
|
|
renamable $w20 = COPY $w19
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
|
|
bb.1:
|
|
$w0 = COPY $wzr
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $w1, $w20
|
|
$w0 = ADDWrr killed $w1, $w20
|
|
RET $x0
|
|
...
|
|
|
|
---
|
|
# Sink w19 regardless of the def of wzr in bb.0.
|
|
# CHECK-LABEL: name: sinkcopy7
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK-NOT: renamable $w19 = COPY $w0
|
|
# CHECK-LABEL: bb.2:
|
|
# CHECK: renamable $w19 = COPY $wzr
|
|
name: sinkcopy7
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
renamable $w19 = COPY $wzr
|
|
$wzr = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
B %bb.1
|
|
|
|
bb.1:
|
|
$x0 = COPY $xzr
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $w0, $w19
|
|
$w0 = ADDWrr $w0, $w19
|
|
RET $x0
|
|
...
|
|
|
|
---
|
|
# Sink w19 to %bb.3 through %bb.2.
|
|
# CHECK-LABEL: name: sinkcopy8
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK-NOT: renamable $w19 = COPY $w0, implicit-def $x19
|
|
# CHECK-LABEL: bb.2:
|
|
# CHECK: $w1 = ADDWrr $w1, $w0, implicit $x0
|
|
# CHECK-LABEL: bb.3:
|
|
# CHECK: liveins: $w0, $x1
|
|
# CHECK: renamable $w19 = COPY killed $w0, implicit-def $x19
|
|
name: sinkcopy8
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $x1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY $w0, implicit-def $x19
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
|
|
bb.1:
|
|
liveins: $x0
|
|
$w19 = COPY $wzr
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $w0, $x1, $x19
|
|
$w1 = ADDWrr $w1, $w0, implicit killed $x0
|
|
|
|
bb.3:
|
|
liveins: $x1, $x19
|
|
$x0 = ADDXrr $x1, $x19
|
|
RET $x0
|
|
...
|
|
|
|
---
|
|
# Don't sink w19 as w0 is defined in bb.0.
|
|
# CHECK-LABEL: name: donotsinkcopy1
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK: renamable $w19 = COPY $w0
|
|
# CHECK: $w0 = LDRWui $sp, 0
|
|
name: donotsinkcopy1
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY $w0
|
|
$w0 = LDRWui $sp, 0 :: (load (s32))
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
B %bb.1
|
|
|
|
bb.1:
|
|
$x0 = COPY $xzr
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $w0, $w19
|
|
$w0 = ADDWrr $w0, $w19
|
|
RET $x0
|
|
...
|
|
|
|
---
|
|
# Don't sink w19 as w19 is used in bb.0.
|
|
# CHECK-LABEL: name: donotsinkcopy2
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK: renamable $w19 = COPY $w0
|
|
# CHECK: STRWui $w1, $x19, 0
|
|
name: donotsinkcopy2
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY $w0
|
|
STRWui $w1, $x19, 0 :: (store (s32))
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
B %bb.1
|
|
|
|
bb.1:
|
|
$x0 = COPY $xzr
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $w0, $w19
|
|
$w0 = ADDWrr $w0, $w19
|
|
RET $x0
|
|
...
|
|
|
|
---
|
|
# Don't sink w19 as w19 is used in both %bb.1 and %bb.2.
|
|
# CHECK-LABEL: name: donotsinkcopy3
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK: renamable $w19 = COPY $w0
|
|
name: donotsinkcopy3
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY $w0
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
B %bb.1
|
|
|
|
bb.1:
|
|
liveins: $w19
|
|
$w0 = COPY $w19
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $w0, $w19
|
|
$w0 = ADDWrr $w0, $w19
|
|
RET $x0
|
|
...
|
|
|
|
---
|
|
# Don't sink w19 as %bb.2 has multiple predecessors.
|
|
# CHECK-LABEL: name: donotsinkcopy4
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK: renamable $w19 = COPY $w0
|
|
name: donotsinkcopy4
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY $w0
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
B %bb.1
|
|
|
|
bb.1:
|
|
liveins: $w0
|
|
$w19 = COPY $w0
|
|
B %bb.2
|
|
|
|
bb.2:
|
|
liveins: $w0, $w19
|
|
$w0 = ADDWrr $w0, $w19
|
|
RET $x0
|
|
...
|
|
|
|
|
|
# Don't sink w19 after sinking w20.
|
|
# CHECK-LABEL: name: donotsinkcopy5
|
|
# CHECK-LABEL: bb.0:
|
|
# CHECK: renamable $w19 = COPY $w0
|
|
# CHECK-LABEL: bb.2:
|
|
# CHECK: liveins: $w0, $w19
|
|
# CHECK: renamable $w20 = COPY $w19
|
|
name: donotsinkcopy5
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $w0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $w19 = COPY $w0
|
|
renamable $w20 = COPY $w19
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
|
|
bb.1:
|
|
liveins: $w19
|
|
$w0 = COPY $w19
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $w0, $w20
|
|
$w0 = ADDWrr killed $w0, $w20
|
|
RET $x0
|
|
...
|
|
|
|
---
|
|
# Don't sink w19 as x19 is live-in in %bb.2.
|
|
# CHECK-LABEL: name: donotsinkcopy6
|
|
# CHECK-LABEL: bb.0:
|
|
name: donotsinkcopy6
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $x0, $w1
|
|
$w1 = SUBSWri $w1, 1, 0, implicit-def $nzcv
|
|
renamable $x19 = COPY $x0
|
|
Bcc 11, %bb.2, implicit $nzcv
|
|
B %bb.1
|
|
|
|
bb.1:
|
|
liveins: $w19
|
|
$w0 = COPY $w19
|
|
RET $x0
|
|
|
|
bb.2:
|
|
liveins: $x0, $x19
|
|
$x0 = ADDXrr $x0, $x19
|
|
RET $x0
|
|
...
|