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
113 lines
6.1 KiB
YAML
113 lines
6.1 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
|
|
# RUN: llc -mtriple=x86_64-- -run-pass=greedy %s -o - | FileCheck %s
|
|
--- |
|
|
define fastcc void @fold_with_physical_reg(i64 %arg1) "target-features"="+ndd" {
|
|
%alloc = alloca i8, i64 %arg1, align 16
|
|
ret void
|
|
}
|
|
...
|
|
---
|
|
name: fold_with_physical_reg
|
|
alignment: 1
|
|
tracksRegLiveness: true
|
|
noPhis: true
|
|
isSSA: false
|
|
frameInfo:
|
|
adjustsStack: true
|
|
hasCalls: true
|
|
stack:
|
|
- { id: 0, name: alloc, type: variable-sized, offset: 0, alignment: 1,
|
|
stack-id: default, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
body: |
|
|
; CHECK-LABEL: name: fold_with_physical_reg
|
|
; CHECK: bb.0:
|
|
; CHECK-NEXT: successors: %bb.1(0x80000000)
|
|
; CHECK-NEXT: liveins: $rdi, $rsi, $rdx, $ecx
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $ecx
|
|
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gr64 = COPY $rdx
|
|
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gr64 = COPY $rsi
|
|
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gr64 = COPY $rdi
|
|
; CHECK-NEXT: [[LEA64r:%[0-9]+]]:gr64 = LEA64r [[COPY2]], 1, $noreg, 15, $noreg
|
|
; CHECK-NEXT: [[AND64ri32_ND:%[0-9]+]]:gr64 = AND64ri32_ND [[LEA64r]], -16, implicit-def dead $eflags
|
|
; CHECK-NEXT: MOV64mr %stack.1, 1, $noreg, 0, $noreg, [[AND64ri32_ND]] :: (store (s64) into %stack.1)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.1:
|
|
; CHECK-NEXT: successors: %bb.2(0x80000000)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
|
|
; CHECK-NEXT: [[COPY4:%[0-9]+]]:gr64 = COPY $rsp
|
|
; CHECK-NEXT: [[COPY4:%[0-9]+]]:gr64 = SUB64rm [[COPY4]], %stack.1, 1, $noreg, 0, $noreg, implicit-def dead $eflags :: (load (s64) from %stack.1)
|
|
; CHECK-NEXT: MOV64mr %stack.2, 1, $noreg, 0, $noreg, [[COPY4]] :: (store (s64) into %stack.2)
|
|
; CHECK-NEXT: $rsp = COPY [[COPY4]]
|
|
; CHECK-NEXT: ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
|
|
; CHECK-NEXT: undef [[MOV32r0_:%[0-9]+]].sub_32bit:gr64_nosp = MOV32r0 implicit-def dead $eflags
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.2:
|
|
; CHECK-NEXT: successors: %bb.1(0x04000000), %bb.2(0x7c000000)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
|
|
; CHECK-NEXT: $xmm0 = FsFLD0SS
|
|
; CHECK-NEXT: [[COPY5:%[0-9]+]]:gr64 = COPY [[COPY3]]
|
|
; CHECK-NEXT: $rdi = COPY [[COPY5]]
|
|
; CHECK-NEXT: [[COPY6:%[0-9]+]]:gr64 = COPY [[COPY2]]
|
|
; CHECK-NEXT: dead $esi = MOV32r0 implicit-def dead $eflags, implicit-def $rsi
|
|
; CHECK-NEXT: [[COPY7:%[0-9]+]]:gr64 = COPY [[COPY1]]
|
|
; CHECK-NEXT: dead $edx = MOV32r0 implicit-def dead $eflags, implicit-def $rdx
|
|
; CHECK-NEXT: [[COPY8:%[0-9]+]]:gr32 = COPY [[COPY]]
|
|
; CHECK-NEXT: dead $ecx = MOV32r0 implicit-def dead $eflags, implicit-def $rcx
|
|
; CHECK-NEXT: undef [[MOV32r0_1:%[0-9]+]].sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
|
|
; CHECK-NEXT: CALL64r [[MOV32r0_1]], csr_64, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, implicit $rdx, implicit $rcx, implicit killed $xmm0, implicit-def $rsp, implicit-def $ssp, implicit-def dead $rax
|
|
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gr64 = COPY [[COPY5]]
|
|
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gr64 = COPY [[COPY6]]
|
|
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gr64 = COPY [[COPY7]]
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY [[COPY8]]
|
|
; CHECK-NEXT: ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
|
|
; CHECK-NEXT: [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm %stack.2, 1, $noreg, 0, $noreg :: (load (s64) from %stack.2)
|
|
; CHECK-NEXT: MOV64mi32 [[MOV64rm]], 8, [[MOV32r0_]], 0, $noreg, 0 :: (store (s64))
|
|
; CHECK-NEXT: MOV64mi32 [[COPY1]], 1, $noreg, 0, $noreg, 0 :: (store (s64))
|
|
; CHECK-NEXT: TEST8ri [[COPY]].sub_8bit, 1, implicit-def $eflags
|
|
; CHECK-NEXT: [[MOV32r0_:%[0-9]+]]:gr64_nosp = COPY [[COPY2]]
|
|
; CHECK-NEXT: JCC_1 %bb.1, 5, implicit $eflags
|
|
; CHECK-NEXT: JMP_1 %bb.2
|
|
bb.0:
|
|
successors: %bb.1(0x80000000)
|
|
liveins: $rdi, $rsi, $rdx, $ecx
|
|
|
|
%5:gr32 = COPY $ecx
|
|
%4:gr64 = COPY $rdx
|
|
%3:gr64 = COPY $rsi
|
|
%2:gr64 = COPY $rdi
|
|
%8:gr64 = LEA64r %3, 1, $noreg, 15, $noreg
|
|
%9:gr64 = AND64ri32_ND %8, -16, implicit-def dead $eflags
|
|
undef %7.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
|
|
|
|
bb.1:
|
|
successors: %bb.2(0x80000000)
|
|
|
|
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
|
|
%0:gr64 = SUB64rr_ND $rsp, %9, implicit-def dead $eflags
|
|
$rsp = COPY %0
|
|
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
|
|
undef %16.sub_32bit:gr64_nosp = MOV32r0 implicit-def dead $eflags
|
|
|
|
bb.2:
|
|
successors: %bb.1(0x04000000), %bb.2(0x7c000000)
|
|
|
|
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
|
|
$xmm0 = FsFLD0SS
|
|
$rdi = COPY %2
|
|
dead $esi = MOV32r0 implicit-def dead $eflags, implicit-def $rsi
|
|
dead $edx = MOV32r0 implicit-def dead $eflags, implicit-def $rdx
|
|
dead $ecx = MOV32r0 implicit-def dead $eflags, implicit-def $rcx
|
|
CALL64r %7, csr_64, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, implicit $rdx, implicit $rcx, implicit killed $xmm0, implicit-def $rsp, implicit-def $ssp, implicit-def dead $rax
|
|
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
|
|
MOV64mi32 %0, 8, %16, 0, $noreg, 0 :: (store (s64))
|
|
MOV64mi32 %4, 1, $noreg, 0, $noreg, 0 :: (store (s64))
|
|
TEST8ri %5.sub_8bit, 1, implicit-def $eflags
|
|
%16:gr64_nosp = COPY %3
|
|
JCC_1 %bb.1, 5, implicit $eflags
|
|
JMP_1 %bb.2
|
|
...
|