mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
1dae83cabb
Any def of EXEC prevents rematerialization of any VOP instruction because of the physreg use. Create a callback to check if the physreg use can be ingored to allow rematerialization. Differential Revision: https://reviews.llvm.org/D105836
516 lines
17 KiB
YAML
516 lines
17 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs --stress-regalloc=2 -start-before=greedy -stop-after=virtregrewriter -o - %s | FileCheck -check-prefix=GCN %s
|
|
|
|
---
|
|
name: test_remat_s_mov_b32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_mov_b32
|
|
; GCN: renamable $sgpr0 = S_MOV_B32 1
|
|
; GCN: renamable $sgpr1 = S_MOV_B32 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_MOV_B32 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_MOV_B32 1
|
|
%1:sreg_32 = S_MOV_B32 2
|
|
%2:sreg_32 = S_MOV_B32 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_no_remat_s_mov_b32_impuse_exec
|
|
tracksRegLiveness: true
|
|
machineFunctionInfo:
|
|
stackPtrOffsetReg: $sgpr32
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_no_remat_s_mov_b32_impuse_exec
|
|
; GCN: $exec = IMPLICIT_DEF
|
|
; GCN: renamable $sgpr0 = S_MOV_B32 1, implicit $exec
|
|
; GCN: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.1, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.1, addrspace 5)
|
|
; GCN: renamable $sgpr1 = S_MOV_B32 2, implicit $exec
|
|
; GCN: renamable $sgpr0 = S_MOV_B32 3, implicit $exec
|
|
; GCN: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.0, addrspace 5)
|
|
; GCN: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.1, addrspace 5)
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.0, addrspace 5)
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
$exec = IMPLICIT_DEF
|
|
%0:sreg_32 = S_MOV_B32 1, implicit $exec
|
|
%1:sreg_32 = S_MOV_B32 2, implicit $exec
|
|
%2:sreg_32 = S_MOV_B32 3, implicit $exec
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_mov_b64
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_mov_b64
|
|
; GCN: renamable $sgpr0_sgpr1 = S_MOV_B64 1
|
|
; GCN: renamable $sgpr2_sgpr3 = S_MOV_B64 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0_sgpr1
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr2_sgpr3
|
|
; GCN: renamable $sgpr0_sgpr1 = S_MOV_B64 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0_sgpr1
|
|
; GCN: S_ENDPGM 0
|
|
%0:sgpr_64 = S_MOV_B64 1
|
|
%1:sgpr_64 = S_MOV_B64 2
|
|
%2:sgpr_64 = S_MOV_B64 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_brev_b32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_brev_b32
|
|
; GCN: renamable $sgpr0 = S_BREV_B32 1
|
|
; GCN: renamable $sgpr1 = S_BREV_B32 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_BREV_B32 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_BREV_B32 1
|
|
%1:sreg_32 = S_BREV_B32 2
|
|
%2:sreg_32 = S_BREV_B32 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_brev_b64
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_brev_b64
|
|
; GCN: renamable $sgpr0_sgpr1 = S_BREV_B64 1
|
|
; GCN: renamable $sgpr2_sgpr3 = S_BREV_B64 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0_sgpr1
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr2_sgpr3
|
|
; GCN: renamable $sgpr0_sgpr1 = S_BREV_B64 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0_sgpr1
|
|
; GCN: S_ENDPGM 0
|
|
%0:sgpr_64 = S_BREV_B64 1
|
|
%1:sgpr_64 = S_BREV_B64 2
|
|
%2:sgpr_64 = S_BREV_B64 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_ff0_i32_b32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_ff0_i32_b32
|
|
; GCN: renamable $sgpr0 = S_FF0_I32_B32 1
|
|
; GCN: renamable $sgpr1 = S_FF0_I32_B32 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_FF0_I32_B32 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_FF0_I32_B32 1
|
|
%1:sreg_32 = S_FF0_I32_B32 2
|
|
%2:sreg_32 = S_FF0_I32_B32 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_ff1_i32_b32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_ff1_i32_b32
|
|
; GCN: renamable $sgpr0 = S_FF1_I32_B32 1
|
|
; GCN: renamable $sgpr1 = S_FF1_I32_B32 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_FF1_I32_B32 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_FF1_I32_B32 1
|
|
%1:sreg_32 = S_FF1_I32_B32 2
|
|
%2:sreg_32 = S_FF1_I32_B32 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_ff0_i32_b64
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_ff0_i32_b64
|
|
; GCN: renamable $sgpr0 = S_FF0_I32_B64 1
|
|
; GCN: renamable $sgpr1 = S_FF0_I32_B64 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_FF0_I32_B64 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_FF0_I32_B64 1
|
|
%1:sreg_32 = S_FF0_I32_B64 2
|
|
%2:sreg_32 = S_FF0_I32_B64 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_ff1_i32_b64
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_ff1_i32_b64
|
|
; GCN: renamable $sgpr0 = S_FF1_I32_B64 1
|
|
; GCN: renamable $sgpr1 = S_FF1_I32_B64 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_FF1_I32_B64 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_FF1_I32_B64 1
|
|
%1:sreg_32 = S_FF1_I32_B64 2
|
|
%2:sreg_32 = S_FF1_I32_B64 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_flbit_i32_b32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_flbit_i32_b32
|
|
; GCN: renamable $sgpr0 = S_FLBIT_I32_B32 1
|
|
; GCN: renamable $sgpr1 = S_FLBIT_I32_B32 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_FLBIT_I32_B32 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_FLBIT_I32_B32 1
|
|
%1:sreg_32 = S_FLBIT_I32_B32 2
|
|
%2:sreg_32 = S_FLBIT_I32_B32 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_flbit_i32_b64
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_flbit_i32_b64
|
|
; GCN: renamable $sgpr0 = S_FLBIT_I32_B64 1
|
|
; GCN: renamable $sgpr1 = S_FLBIT_I32_B64 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_FLBIT_I32_B64 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_FLBIT_I32_B64 1
|
|
%1:sreg_32 = S_FLBIT_I32_B64 2
|
|
%2:sreg_32 = S_FLBIT_I32_B64 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_flbit_i32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_flbit_i32
|
|
; GCN: renamable $sgpr0 = S_FLBIT_I32 1
|
|
; GCN: renamable $sgpr1 = S_FLBIT_I32 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_FLBIT_I32 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_FLBIT_I32 1
|
|
%1:sreg_32 = S_FLBIT_I32 2
|
|
%2:sreg_32 = S_FLBIT_I32 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_flbit_i32_i64
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_flbit_i32_i64
|
|
; GCN: renamable $sgpr0 = S_FLBIT_I32_I64 1
|
|
; GCN: renamable $sgpr1 = S_FLBIT_I32_I64 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_FLBIT_I32_I64 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_FLBIT_I32_I64 1
|
|
%1:sreg_32 = S_FLBIT_I32_I64 2
|
|
%2:sreg_32 = S_FLBIT_I32_I64 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_sext_i32_i8
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_sext_i32_i8
|
|
; GCN: renamable $sgpr0 = S_SEXT_I32_I8 1
|
|
; GCN: renamable $sgpr1 = S_SEXT_I32_I8 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_SEXT_I32_I8 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_SEXT_I32_I8 1
|
|
%1:sreg_32 = S_SEXT_I32_I8 2
|
|
%2:sreg_32 = S_SEXT_I32_I8 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_sext_i32_i16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_sext_i32_i16
|
|
; GCN: renamable $sgpr0 = S_SEXT_I32_I16 1
|
|
; GCN: renamable $sgpr1 = S_SEXT_I32_I16 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_SEXT_I32_I16 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_SEXT_I32_I16 1
|
|
%1:sreg_32 = S_SEXT_I32_I16 2
|
|
%2:sreg_32 = S_SEXT_I32_I16 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_bitreplicate_b64_b32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_bitreplicate_b64_b32
|
|
; GCN: renamable $sgpr0_sgpr1 = S_BITREPLICATE_B64_B32 1
|
|
; GCN: renamable $sgpr2_sgpr3 = S_BITREPLICATE_B64_B32 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0_sgpr1
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr2_sgpr3
|
|
; GCN: renamable $sgpr0_sgpr1 = S_BITREPLICATE_B64_B32 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0_sgpr1
|
|
; GCN: S_ENDPGM 0
|
|
%0:sgpr_64 = S_BITREPLICATE_B64_B32 1
|
|
%1:sgpr_64 = S_BITREPLICATE_B64_B32 2
|
|
%2:sgpr_64 = S_BITREPLICATE_B64_B32 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_bfm_b32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_bfm_b32
|
|
; GCN: renamable $sgpr0 = S_BFM_B32 1, 1
|
|
; GCN: renamable $sgpr1 = S_BFM_B32 2, 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_BFM_B32 3, 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_BFM_B32 1, 1
|
|
%1:sreg_32 = S_BFM_B32 2, 2
|
|
%2:sreg_32 = S_BFM_B32 3, 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_bfm_b64
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_bfm_b64
|
|
; GCN: renamable $sgpr0_sgpr1 = S_BFM_B64 1, 1
|
|
; GCN: renamable $sgpr2_sgpr3 = S_BFM_B64 2, 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0_sgpr1
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr2_sgpr3
|
|
; GCN: renamable $sgpr0_sgpr1 = S_BFM_B64 3, 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0_sgpr1
|
|
; GCN: S_ENDPGM 0
|
|
%0:sgpr_64 = S_BFM_B64 1, 1
|
|
%1:sgpr_64 = S_BFM_B64 2, 2
|
|
%2:sgpr_64 = S_BFM_B64 3, 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_mul_i32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_mul_i32
|
|
; GCN: renamable $sgpr0 = S_MUL_I32 1, 1
|
|
; GCN: renamable $sgpr1 = S_MUL_I32 2, 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_MUL_I32 3, 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_MUL_I32 1, 1
|
|
%1:sreg_32 = S_MUL_I32 2, 2
|
|
%2:sreg_32 = S_MUL_I32 3, 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_mul_hi_i32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_mul_hi_i32
|
|
; GCN: renamable $sgpr0 = S_MUL_HI_I32 1, 1
|
|
; GCN: renamable $sgpr1 = S_MUL_HI_I32 2, 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_MUL_HI_I32 3, 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_MUL_HI_I32 1, 1
|
|
%1:sreg_32 = S_MUL_HI_I32 2, 2
|
|
%2:sreg_32 = S_MUL_HI_I32 3, 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_mul_hi_u32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_mul_hi_u32
|
|
; GCN: renamable $sgpr0 = S_MUL_HI_U32 1, 1
|
|
; GCN: renamable $sgpr1 = S_MUL_HI_U32 2, 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_MUL_HI_U32 3, 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_MUL_HI_U32 1, 1
|
|
%1:sreg_32 = S_MUL_HI_U32 2, 2
|
|
%2:sreg_32 = S_MUL_HI_U32 3, 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_pack_ll_b32_b16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_pack_ll_b32_b16
|
|
; GCN: renamable $sgpr0 = S_PACK_LL_B32_B16 1, 1
|
|
; GCN: renamable $sgpr1 = S_PACK_LL_B32_B16 2, 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_PACK_LL_B32_B16 3, 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_PACK_LL_B32_B16 1, 1
|
|
%1:sreg_32 = S_PACK_LL_B32_B16 2, 2
|
|
%2:sreg_32 = S_PACK_LL_B32_B16 3, 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_pack_lh_b32_b16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_pack_lh_b32_b16
|
|
; GCN: renamable $sgpr0 = S_PACK_LH_B32_B16 1, 1
|
|
; GCN: renamable $sgpr1 = S_PACK_LH_B32_B16 2, 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_PACK_LH_B32_B16 3, 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_PACK_LH_B32_B16 1, 1
|
|
%1:sreg_32 = S_PACK_LH_B32_B16 2, 2
|
|
%2:sreg_32 = S_PACK_LH_B32_B16 3, 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|
|
---
|
|
name: test_remat_s_pack_hh_b32_b16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; GCN-LABEL: name: test_remat_s_pack_hh_b32_b16
|
|
; GCN: renamable $sgpr0 = S_PACK_HH_B32_B16 1, 1
|
|
; GCN: renamable $sgpr1 = S_PACK_HH_B32_B16 2, 2
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr1
|
|
; GCN: renamable $sgpr0 = S_PACK_HH_B32_B16 3, 3
|
|
; GCN: S_NOP 0, implicit killed renamable $sgpr0
|
|
; GCN: S_ENDPGM 0
|
|
%0:sreg_32 = S_PACK_HH_B32_B16 1, 1
|
|
%1:sreg_32 = S_PACK_HH_B32_B16 2, 2
|
|
%2:sreg_32 = S_PACK_HH_B32_B16 3, 3
|
|
S_NOP 0, implicit %0
|
|
S_NOP 0, implicit %1
|
|
S_NOP 0, implicit %2
|
|
S_ENDPGM 0
|
|
...
|