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
270 lines
8.5 KiB
YAML
270 lines
8.5 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3
|
|
# RUN: llc -mtriple=riscv64 -mattr='+d,+zfa,+v,+xtheadmempair' -verify-machineinstrs -run-pass=riscv-opt-w-instrs %s -o - | FileCheck %s
|
|
|
|
---
|
|
name: fcvtmod_w_d
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0.entry:
|
|
liveins: $x10
|
|
|
|
; CHECK-LABEL: name: fcvtmod_w_d
|
|
; CHECK: liveins: $x10
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $x10
|
|
; CHECK-NEXT: [[FCVTMOD_W_D:%[0-9]+]]:gpr = nofpexcept FCVTMOD_W_D [[COPY]], 1
|
|
; CHECK-NEXT: $x10 = COPY [[FCVTMOD_W_D]]
|
|
; CHECK-NEXT: PseudoRET
|
|
%0:fpr64 = COPY $x10
|
|
|
|
%1:gpr = nofpexcept FCVTMOD_W_D %0, 1
|
|
%2:gpr = ADDIW %1, 0
|
|
$x10 = COPY %2
|
|
PseudoRET
|
|
...
|
|
|
|
---
|
|
name: physreg
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0.entry:
|
|
liveins: $x10, $x11
|
|
|
|
; CHECK-LABEL: name: physreg
|
|
; CHECK: liveins: $x10, $x11
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
|
|
; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[COPY]], 0
|
|
; CHECK-NEXT: $x10 = COPY [[ADDIW]]
|
|
; CHECK-NEXT: PseudoRET
|
|
%0:gpr = COPY $x10
|
|
%1:gpr = ADDIW %0, 0
|
|
$x10 = COPY %1
|
|
PseudoRET
|
|
...
|
|
---
|
|
name: vfirst
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0.entry:
|
|
liveins: $x10, $v8
|
|
|
|
; CHECK-LABEL: name: vfirst
|
|
; CHECK: liveins: $x10, $v8
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8
|
|
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gprnox0 = COPY $x10
|
|
; CHECK-NEXT: [[PseudoVFIRST_M_B1_:%[0-9]+]]:gpr = PseudoVFIRST_M_B1 [[COPY]], [[COPY1]] /* vl */, 0 /* e8 */
|
|
; CHECK-NEXT: $x11 = COPY [[PseudoVFIRST_M_B1_]]
|
|
; CHECK-NEXT: PseudoRET
|
|
%0:vr = COPY $v8
|
|
%1:gprnox0 = COPY $x10
|
|
|
|
%2:gpr = PseudoVFIRST_M_B1 %0:vr, %1:gprnox0, 0
|
|
%3:gpr = ADDIW %2, 0
|
|
$x11 = COPY %3
|
|
PseudoRET
|
|
...
|
|
---
|
|
name: vcpop
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0.entry:
|
|
liveins: $x10, $v8
|
|
|
|
; CHECK-LABEL: name: vcpop
|
|
; CHECK: liveins: $x10, $v8
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8
|
|
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gprnox0 = COPY $x10
|
|
; CHECK-NEXT: [[PseudoVCPOP_M_B1_:%[0-9]+]]:gpr = PseudoVCPOP_M_B1 [[COPY]], [[COPY1]] /* vl */, 0 /* e8 */
|
|
; CHECK-NEXT: $x11 = COPY [[PseudoVCPOP_M_B1_]]
|
|
; CHECK-NEXT: PseudoRET
|
|
%0:vr = COPY $v8
|
|
%1:gprnox0 = COPY $x10
|
|
|
|
%2:gpr = PseudoVCPOP_M_B1 %0:vr, %1:gprnox0, 0
|
|
%3:gpr = ADDIW %2, 0
|
|
$x11 = COPY %3
|
|
PseudoRET
|
|
...
|
|
---
|
|
name: th_lwd
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0.entry:
|
|
liveins: $x10
|
|
; CHECK-LABEL: name: th_lwd
|
|
; CHECK: liveins: $x10
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
|
|
; CHECK-NEXT: early-clobber %1:gpr, early-clobber %2:gpr = TH_LWD [[COPY]], 2, 3
|
|
; CHECK-NEXT: $x10 = COPY %1
|
|
; CHECK-NEXT: $x11 = COPY %2
|
|
; CHECK-NEXT: PseudoRET
|
|
%0:gpr = COPY $x10
|
|
early-clobber %1:gpr, early-clobber %2:gpr = TH_LWD %0, 2, 3
|
|
%3:gpr = ADDIW %1, 0
|
|
%4:gpr = ADDIW %2, 0
|
|
$x10 = COPY %3
|
|
$x11 = COPY %4
|
|
PseudoRET
|
|
...
|
|
---
|
|
name: movgprnox0_1
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $x10, $x11, $x12, $x13
|
|
; CHECK-LABEL: name: movgprnox0_1
|
|
; CHECK: liveins: $x10, $x11, $x12, $x13
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
|
|
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
|
|
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gprnox0 = COPY $x12
|
|
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gprnox0 = COPY $x13
|
|
; CHECK-NEXT: [[PseudoCCMOVGPRNoX0_:%[0-9]+]]:gprnox0 = PseudoCCMOVGPRNoX0 [[COPY2]], [[COPY3]], 1, [[COPY]], [[COPY1]]
|
|
; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[PseudoCCMOVGPRNoX0_]], 0
|
|
; CHECK-NEXT: $x10 = COPY [[ADDIW]]
|
|
; CHECK-NEXT: PseudoRET implicit $x10
|
|
%0:gpr = COPY $x10
|
|
%1:gpr = COPY $x11
|
|
%2:gpr = COPY $x12
|
|
%3:gpr = COPY $x13
|
|
%4:gprnox0 = ADDIW %2, 0
|
|
%5:gprnox0 = ADDIW %3, 0
|
|
%6:gprnox0 = PseudoCCMOVGPRNoX0 %4, %5, 1, %0, %1
|
|
%7:gpr = ADDIW %6, 0
|
|
$x10 = COPY %7
|
|
PseudoRET implicit $x10
|
|
|
|
...
|
|
---
|
|
name: movgprnox0_2
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $x10, $x11, $x12, $x13
|
|
; CHECK-LABEL: name: movgprnox0_2
|
|
; CHECK: liveins: $x10, $x11, $x12, $x13
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
|
|
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
|
|
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
|
|
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr = COPY $x13
|
|
; CHECK-NEXT: [[SRAIW:%[0-9]+]]:gprnox0 = SRAIW [[COPY2]], 0
|
|
; CHECK-NEXT: [[SRAIW1:%[0-9]+]]:gprnox0 = SRAIW [[COPY3]], 0
|
|
; CHECK-NEXT: [[PseudoCCMOVGPRNoX0_:%[0-9]+]]:gprnox0 = PseudoCCMOVGPRNoX0 [[SRAIW]], [[SRAIW1]], 1, [[COPY]], [[COPY1]]
|
|
; CHECK-NEXT: $x10 = COPY [[PseudoCCMOVGPRNoX0_]]
|
|
; CHECK-NEXT: PseudoRET implicit $x10
|
|
%0:gpr = COPY $x10
|
|
%1:gpr = COPY $x11
|
|
%2:gpr = COPY $x12
|
|
%3:gpr = COPY $x13
|
|
%4:gprnox0 = SRAIW %2, 0
|
|
%5:gprnox0 = SRAIW %3, 0
|
|
%6:gprnox0 = PseudoCCMOVGPRNoX0 %4, %5, 1, %0, %1
|
|
%7:gpr = ADDIW %6, 0
|
|
$x10 = COPY %7
|
|
PseudoRET implicit $x10
|
|
|
|
...
|
|
---
|
|
name: lui_addi_1
|
|
tracksRegLiveness: true
|
|
body: |
|
|
; CHECK-LABEL: name: lui_addi_1
|
|
; CHECK: bb.0:
|
|
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
|
|
; CHECK-NEXT: liveins: $x10
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
|
|
; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[COPY]], 0
|
|
; CHECK-NEXT: [[LUI:%[0-9]+]]:gpr = LUI 11
|
|
; CHECK-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI killed [[LUI]], -1756
|
|
; CHECK-NEXT: BEQ killed [[ADDIW]], [[ADDI]], %bb.2
|
|
; CHECK-NEXT: PseudoBR %bb.1
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.1:
|
|
; CHECK-NEXT: successors: %bb.2(0x80000000)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[LW:%[0-9]+]]:gpr = LW $x0, 0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.2:
|
|
; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr = PHI [[ADDI]], %bb.0, [[LW]], %bb.1
|
|
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gprtcnonx7 = COPY $x0
|
|
; CHECK-NEXT: $x10 = COPY [[COPY1]]
|
|
; CHECK-NEXT: $x11 = COPY [[PHI]]
|
|
; CHECK-NEXT: PseudoTAILIndirect [[COPY1]], csr_ilp32_lp64, implicit $x2, implicit $x10, implicit $x11
|
|
bb.0:
|
|
liveins: $x10
|
|
|
|
%2:gpr = COPY $x10
|
|
%4:gpr = ADDIW %2, 0
|
|
%5:gpr = LUI 11
|
|
%3:gpr = ADDI killed %5, -1756
|
|
BEQ killed %4, %3, %bb.2
|
|
PseudoBR %bb.1
|
|
|
|
bb.1:
|
|
%0:gpr = LW $x0, 0
|
|
|
|
bb.2:
|
|
%1:gpr = PHI %3, %bb.0, %0, %bb.1
|
|
%6:gpr = ADDIW %1, 0
|
|
%7:gprtcnonx7 = COPY $x0
|
|
$x10 = COPY %7
|
|
$x11 = COPY %6
|
|
PseudoTAILIndirect %7, csr_ilp32_lp64, implicit $x2, implicit $x10, implicit $x11
|
|
...
|
|
---
|
|
# The sext.w was erroneously removed in an earlier broken version of the patch
|
|
# for RISCVOptWInstrs that added lui/addi handling.
|
|
name: lui_addi_2
|
|
tracksRegLiveness: true
|
|
body: |
|
|
; CHECK-LABEL: name: lui_addi_2
|
|
; CHECK: bb.0.entry:
|
|
; CHECK-NEXT: successors: %bb.1(0x80000000)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[LUI:%[0-9]+]]:gpr = LUI 524289
|
|
; CHECK-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[LUI]], -2048
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.1:
|
|
; CHECK-NEXT: [[LWU:%[0-9]+]]:gpr = LWU $x0, 0 :: (load (s32) from `ptr null`)
|
|
; CHECK-NEXT: [[AND:%[0-9]+]]:gpr = AND [[LWU]], [[ADDI]]
|
|
; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW killed [[AND]], 0
|
|
; CHECK-NEXT: $x10 = COPY [[ADDIW]]
|
|
; CHECK-NEXT: PseudoRET implicit $x10
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.2:
|
|
; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2
|
|
; CHECK-NEXT: $x10 = COPY [[ADDIW]]
|
|
; CHECK-NEXT: %call_target_dummy:gprjalrnonx7 = COPY $x0
|
|
; CHECK-NEXT: PseudoCALLIndirect %call_target_dummy, csr_ilp32_lp64, implicit-def $x1, implicit $x10
|
|
; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2
|
|
; CHECK-NEXT: $x10 = COPY [[LWU]]
|
|
; CHECK-NEXT: PseudoRET implicit $x10
|
|
bb.0.entry:
|
|
%13:gpr = LUI 524289
|
|
%14:gpr = ADDI %13, -2048
|
|
|
|
bb.1:
|
|
%1:gpr = LWU $x0, 0 :: (load (s32) from `ptr null`)
|
|
%15:gpr = AND %1, %14
|
|
%16:gpr = ADDIW killed %15, 0
|
|
|
|
$x10 = COPY %16
|
|
PseudoRET implicit $x10
|
|
|
|
bb.2:
|
|
ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2
|
|
$x10 = COPY %16
|
|
%call_target_dummy:gprjalrnonx7 = COPY $x0
|
|
PseudoCALLIndirect %call_target_dummy, csr_ilp32_lp64, implicit-def $x1, implicit $x10
|
|
ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2
|
|
|
|
$x10 = COPY %1
|
|
PseudoRET implicit $x10
|
|
...
|