blob: 26f2b126d0f944a616cdb2ef2b312eee08648392 [file] [log] [blame]
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -march=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize32 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
---
name: trans_use_1_hazard
body: |
bb.0:
; GCN-LABEL: name: trans_use_1_hazard
; GCN: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
$vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_1_no_hazard_1
body: |
bb.0:
; GCN-LABEL: name: trans_use_1_no_hazard_1
; GCN: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
S_WAITCNT_DEPCTR 4095
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
$vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_2_hazard
body: |
bb.0:
; GCN-LABEL: name: trans_use_2_hazard
; GCN: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: $sgpr0 = S_MOV_B32 0
; GCN-NEXT: $sgpr1 = S_MOV_B32 0
; GCN-NEXT: $sgpr2 = S_MOV_B32 0
; GCN-NEXT: $sgpr3 = S_MOV_B32 0
; GCN-NEXT: $sgpr4 = S_MOV_B32 0
; GCN-NEXT: $sgpr5 = S_MOV_B32 0
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $sgpr6 = S_MOV_B32 0
; GCN-NEXT: $sgpr7 = S_MOV_B32 0
; GCN-NEXT: $sgpr8 = S_MOV_B32 0
; GCN-NEXT: $sgpr9 = S_MOV_B32 0
; GCN-NEXT: $sgpr10 = S_MOV_B32 0
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
$sgpr0 = S_MOV_B32 0
$sgpr1 = S_MOV_B32 0
$sgpr2 = S_MOV_B32 0
$sgpr3 = S_MOV_B32 0
$sgpr4 = S_MOV_B32 0
$sgpr5 = S_MOV_B32 0
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
$sgpr6 = S_MOV_B32 0
$sgpr7 = S_MOV_B32 0
$sgpr8 = S_MOV_B32 0
$sgpr9 = S_MOV_B32 0
$sgpr10 = S_MOV_B32 0
$vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_3_hazard
body: |
bb.0:
; GCN-LABEL: name: trans_use_3_hazard
; GCN: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
$vgpr10 = V_MOV_B32_e32 0, implicit $exec
$vgpr11 = V_MOV_B32_e32 0, implicit $exec
$vgpr12 = V_MOV_B32_e32 0, implicit $exec
$vgpr13 = V_MOV_B32_e32 0, implicit $exec
$vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_3_no_hazard_1
body: |
bb.0:
; GCN-LABEL: name: trans_use_3_no_hazard_1
; GCN: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
$vgpr10 = V_MOV_B32_e32 0, implicit $exec
$vgpr11 = V_MOV_B32_e32 0, implicit $exec
$vgpr12 = V_MOV_B32_e32 0, implicit $exec
$vgpr13 = V_MOV_B32_e32 0, implicit $exec
$vgpr14 = V_MOV_B32_e32 0, implicit $exec
$vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_3_no_hazard_2
body: |
bb.0:
; GCN-LABEL: name: trans_use_3_no_hazard_2
; GCN: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
$vgpr10 = V_MOV_B32_e32 0, implicit $exec
$vgpr11 = V_MOV_B32_e32 0, implicit $exec
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
$vgpr12 = V_MOV_B32_e32 0, implicit $exec
$vgpr13 = V_MOV_B32_e32 0, implicit $exec
$vgpr14 = V_MOV_B32_e32 0, implicit $exec
$vgpr15 = V_MOV_B32_e32 0, implicit $exec
$vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_3_no_hazard_3
body: |
bb.0:
; GCN-LABEL: name: trans_use_3_no_hazard_3
; GCN: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr10 = V_SQRT_F32_e32 $vgpr11, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr12 = V_SQRT_F32_e32 $vgpr13, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
$vgpr10 = V_SQRT_F32_e32 $vgpr11, implicit $mode, implicit $exec
$vgpr12 = V_SQRT_F32_e32 $vgpr13, implicit $mode, implicit $exec
$vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_4_one_depctr_1
body: |
bb.0:
; GCN-LABEL: name: trans_use_4_one_depctr_1
; GCN: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr3 = V_SQRT_F32_e32 $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: $vgpr5 = V_ADD_F32_e32 $vgpr1, $vgpr4, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr7 = V_ADD_F32_e32 $vgpr3, $vgpr6, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
$vgpr3 = V_SQRT_F32_e32 $vgpr2, implicit $mode, implicit $exec
$vgpr5 = V_ADD_F32_e32 $vgpr1, $vgpr4, implicit $mode, implicit $exec
$vgpr7 = V_ADD_F32_e32 $vgpr3, $vgpr6, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_4_one_depctr_2
body: |
bb.0:
; GCN-LABEL: name: trans_use_4_one_depctr_2
; GCN: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr3 = V_SQRT_F32_e32 $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: $vgpr5 = V_ADD_F32_e32 $vgpr3, $vgpr4, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr7 = V_ADD_F32_e32 $vgpr1, $vgpr6, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
$vgpr3 = V_SQRT_F32_e32 $vgpr2, implicit $mode, implicit $exec
$vgpr5 = V_ADD_F32_e32 $vgpr3, $vgpr4, implicit $mode, implicit $exec
$vgpr7 = V_ADD_F32_e32 $vgpr1, $vgpr6, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_4
body: |
bb.0:
; GCN-LABEL: name: trans_use_4
; GCN: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr10 = V_SQRT_F32_e32 $vgpr11, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
$vgpr10 = V_SQRT_F32_e32 $vgpr11, implicit $mode, implicit $exec
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
$vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_branching_1a
body: |
; GCN-LABEL: name: trans_use_branching_1a
; GCN: bb.0:
; GCN-NEXT: successors: %bb.2(0x80000000)
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: S_BRANCH %bb.2
; GCN-NEXT: {{ $}}
; GCN-NEXT: bb.1:
; GCN-NEXT: successors: %bb.2(0x80000000)
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr30 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr31 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr32 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr33 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: S_BRANCH %bb.2
; GCN-NEXT: {{ $}}
; GCN-NEXT: bb.2:
; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: $vgpr4 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
bb.0:
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
S_BRANCH %bb.2
bb.1:
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
$vgpr30 = V_MOV_B32_e32 0, implicit $exec
$vgpr31 = V_MOV_B32_e32 0, implicit $exec
$vgpr32 = V_MOV_B32_e32 0, implicit $exec
$vgpr33 = V_MOV_B32_e32 0, implicit $exec
S_BRANCH %bb.2
bb.2:
$vgpr3 = V_MOV_B32_e32 0, implicit $exec
$vgpr4 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_branching_1b
body: |
; GCN-LABEL: name: trans_use_branching_1b
; GCN: bb.0:
; GCN-NEXT: successors: %bb.2(0x80000000)
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: S_BRANCH %bb.2
; GCN-NEXT: {{ $}}
; GCN-NEXT: bb.1:
; GCN-NEXT: successors: %bb.2(0x80000000)
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr30 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: S_BRANCH %bb.2
; GCN-NEXT: {{ $}}
; GCN-NEXT: bb.2:
; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: $vgpr4 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
bb.0:
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
S_BRANCH %bb.2
bb.1:
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
$vgpr30 = V_MOV_B32_e32 0, implicit $exec
S_WAITCNT_DEPCTR 4095
S_BRANCH %bb.2
bb.2:
$vgpr3 = V_MOV_B32_e32 0, implicit $exec
$vgpr4 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: trans_use_branching_1c_no_hazard_1
body: |
; GCN-LABEL: name: trans_use_branching_1c_no_hazard_1
; GCN: bb.0:
; GCN-NEXT: successors: %bb.2(0x80000000)
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
; GCN-NEXT: S_WAITCNT_DEPCTR 4095
; GCN-NEXT: S_BRANCH %bb.2
; GCN-NEXT: {{ $}}
; GCN-NEXT: bb.1:
; GCN-NEXT: successors: %bb.2(0x80000000)
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr30 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: S_BRANCH %bb.2
; GCN-NEXT: {{ $}}
; GCN-NEXT: bb.2:
; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: $vgpr4 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0
bb.0:
$vgpr1 = V_SQRT_F32_e32 $vgpr0, implicit $mode, implicit $exec
S_WAITCNT_DEPCTR 4095
S_BRANCH %bb.2
bb.1:
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
$vgpr30 = V_MOV_B32_e32 0, implicit $exec
S_BRANCH %bb.2
bb.2:
$vgpr3 = V_MOV_B32_e32 0, implicit $exec
$vgpr4 = V_ADD_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
S_ENDPGM 0
...