Files
TheRock/compiler/amd-llvm/llvm/test/CodeGen/PowerPC/mi-peepholes-trap-opt.mir
T
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

768 lines
16 KiB
YAML

# RUN: llc -mtriple powerpc64le-unknown-linux-gnu -mcpu=pwr8 -x mir < %s \
# RUN: -verify-machineinstrs -start-before=ppc-mi-peepholes \
# RUN: -ppc-opt-conditional-trap | FileCheck %s
---
name: conditional_trap_opt_reg_implicit_def
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = IMPLICIT_DEF
%1:gprc = IMPLICIT_DEF
%2:g8rc = IMPLICIT_DEF
%3:g8rc = IMPLICIT_DEF
TW 8, %0, %1
TD 8, %2, %3
TWI 24, %0, 0
TDI 24, %2, 0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_reg_implicit_def
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: twgt 3, 3
# CHECK-NEXT: tdgt 3, 3
# CHECK-NEXT: twnei 3, 0
# CHECK-NEXT: tdnei 3, 0
# CHECK-NEXT: blr
---
name: conditional_trap_opt_int_return
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
liveins: $x3
%0:g8rc = COPY $x3
%1:g8rc = LI8 3
%2:g8rc = LI8 0
TD 24, %2, %1
$x3 = COPY %0
BLR8 implicit $lr8, implicit $rm, implicit $x3
...
# CHECK-LABEL: conditional_trap_opt_int_return
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TW_31
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 3
%1:gprc = LI 0
TW 31, %1, %0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TW_31
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TW_24
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 3
%1:gprc = LI 0
TW 24, %1, %0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TW_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_no_trap_TW_24
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 3
%1:gprc = LI 3
TW 24, %1, %0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TW_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_TW_20
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 3
%1:gprc = LI 3
TW 20, %1, %0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TW_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_no_trap_TW_20
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 3
%1:gprc = LI 5
TW 20, %1, %0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TW_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_no_trap_TW_16
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 5
%1:gprc = LI 1
TW 16, %0, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TW_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_TW_16
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 5
%1:gprc = LI 1
TW 16, %1, %0
TW 16, %0, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TW_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TW_8
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI -1
%1:gprc = LI 10
TW 8, %1, %0
TW 8, %0, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TW_8
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TW_2
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI -1
%1:gprc = LI 2
TW 2, %1, %0
TW 2, %0, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TW_2
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TW_1
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI -3
%1:gprc = LI 4
TW 1, %1, %0
TW 1, %0, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TW_1
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TW_4
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 5
%1:gprc = LI 1
TW 4, %1, %0
TW 4, %1, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TW_4
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TWI_31
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 3
TWI 31, %0, 0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TWI_31
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TWI_24
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 3
TWI 24, %0, 0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TWI_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_no_trap_TWI_24
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 0
TWI 24, %0, 0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TWI_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_TWI_20
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 3
TWI 20, %0, 3
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TWI_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_no_trap_TWI_20
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 3
TWI 20, %0, 0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TWI_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_no_trap_TWI_16
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 5
TWI 16, %0, 1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TWI_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_TWI_16
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 5
%1:gprc = LI 1
TWI 16, %1, 5
TWI 16, %0, 1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TWI_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TWI_8
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI -1
%1:gprc = LI 10
TWI 8, %1, -1
TWI 8, %0, 10
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TWI_8
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TWI_2
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI -1
%1:gprc = LI 2
TWI 2, %1, -1
TWI 2, %0, 2
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TWI_2
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TWI_1
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI -3
%1:gprc = LI 4
TWI 1, %1, -3
TWI 1, %0, 4
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TWI_1
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TWI_4
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 5
%1:gprc = LI 1
TWI 4, %1, 5
TWI 4, %1, 1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TWI_4
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TD_31
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 3
%1:g8rc = LI8 0
TD 31, %1, %0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TD_31
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TD_24
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 3
%1:g8rc = LI8 0
TD 24, %1, %0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TD_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_no_trap_TD_24
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 3
%1:g8rc = LI8 3
TD 24, %1, %0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TD_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_TD_20
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 3
%1:g8rc = LI8 3
TD 20, %1, %0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TD_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_no_trap_TD_20
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 3
%1:g8rc = LI8 5
TD 20, %1, %0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TD_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_no_trap_TD_16
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 5
%1:g8rc = LI8 1
TD 16, %0, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TD_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_TD_16
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 5
%1:g8rc = LI8 1
TD 16, %1, %0
TD 16, %0, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TD_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TD_8
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 -1
%1:g8rc = LI8 10
TD 8, %1, %0
TD 8, %0, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TD_8
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TD_2
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 -1
%1:g8rc = LI8 2
TD 2, %1, %0
TD 2, %0, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TD_2
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TD_1
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 -3
%1:g8rc = LI8 4
TD 1, %1, %0
TD 1, %0, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TD_1
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TD_4
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 5
%1:g8rc = LI8 1
TD 4, %1, %0
TD 4, %1, %1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TD_4
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TDI_31
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 3
TDI 31, %0, 0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TDI_31
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TDI_24
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 3
TDI 24, %0, 0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TDI_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_no_trap_TDI_24
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 0
TDI 24, %0, 0
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TDI_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_TDI_20
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 3
TDI 20, %0, 3
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TDI_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_no_trap_TDI_20
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 5
TDI 20, %0, 3
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TDI_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_no_trap_TDI_16
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 5
TDI 16, %0, 1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_no_trap_TDI_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: blr
---
name: conditional_trap_opt_TDI_16
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 5
%1:g8rc = LI8 1
TDI 16, %1, 5
TDI 16, %0, 1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TDI_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TDI_8
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 -1
%1:g8rc = LI8 10
TDI 8, %1, -1
TDI 8, %0, 10
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TDI_8
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TDI_2
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 -1
%1:g8rc = LI8 2
TDI 2, %1, -1
TDI 2, %0, 2
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TDI_2
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TDI_1
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 -3
%1:g8rc = LI8 4
TDI 1, %1, -3
TDI 1, %0, 4
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TDI_1
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_TDI_4
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:g8rc = LI8 5
%1:g8rc = LI8 1
TDI 4, %1, 5
TDI 4, %1, 1
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_TDI_4
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr
---
name: conditional_trap_opt_multiple_traps
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
%0:gprc = LI 5
%1:gprc = LI 1
%2:g8rc = LI8 -1
%3:g8rc = LI8 0
TWI 31, %1, 5
TDI 31, %3, 0
TW 31, %0, %1
TD 31, %2, %2
BLR8 implicit $lr8, implicit $rm
...
# CHECK-LABEL: conditional_trap_opt_multiple_traps
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NOT: blr