File: reduce-register-uses.mir

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (63 lines) | stat: -rw-r--r-- 2,458 bytes parent folder | download | duplicates (17)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# REQUIRES: amdgpu-registered-target
# RUN: llvm-reduce -abort-on-invalid-reduction -simplify-mir --delta-passes=register-uses -mtriple=amdgcn-amd-amdhsa --test FileCheck --test-arg --check-prefix=CHECK-INTERESTINGNESS --test-arg %s --test-arg --input-file %s -o %t 2> %t.log
# RUN: FileCheck --match-full-lines --check-prefix=RESULT %s < %t

# CHECK-INTERESTINGNESS: V_MUL_F32_e32 %vgpr0
# CHECK-INTERESTINGNESS: V_MUL_F32_e32 {{.*}}%vgpr1, %vgpr0

# CHECK-INTERESTINGNESS: SI_CALL {{.*}}$vgpr0
# CHECK-INTERESTINGNESS: SI_CALL {{.*}}$vgpr3


# RESULT: %mul0:vgpr_32 = V_MUL_F32_e32 %vgpr0, undef %vgpr1, implicit $mode, implicit $exec
# RESULT: %mul1:vgpr_32 = V_MUL_F32_e32 undef %vgpr1, %vgpr0, implicit $mode, implicit $exec
# RESULT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
# RESULT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec
# RESULT: $sgpr30_sgpr31 = SI_CALL undef %call_target, @callee, csr_amdgpu, implicit $vgpr0
# RESULT: $sgpr30_sgpr31 = SI_CALL undef %call_target, @callee, csr_amdgpu, implicit $vgpr3
# RESULT: %impdef:vreg_64 = IMPLICIT_DEF
# RESULT: GLOBAL_STORE_DWORD undef %ptr, undef %impdef.sub1, 0, 0, implicit $exec
# RESULT: undef %impdef.sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
# RESULT: S_CBRANCH_SCC1 %bb.1, implicit undef $scc
# RESULT: S_BARRIER
# RESULT: S_ENDPGM 0

--- |
  define void @func()  {
    ret void
  }

  declare void @callee()
...

---
name: func
tracksRegLiveness: true
body:             |
  bb.0:
    liveins: $vgpr0, $vgpr1

    S_WAITCNT 0
    %vgpr0:vgpr_32 = COPY $vgpr0
    %vgpr1:vgpr_32 = COPY $vgpr1
    %mul0:vgpr_32 = V_MUL_F32_e32 %vgpr0, %vgpr1, implicit $mode, implicit $exec
    %mul1:vgpr_32 = V_MUL_F32_e32 %vgpr1, %vgpr0, implicit $mode, implicit $exec
    %call_target:sreg_64 = IMPLICIT_DEF
    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
    $vgpr1 = V_MOV_B32_e32 1, implicit $exec
    $sgpr30_sgpr31 = SI_CALL %call_target, @callee, csr_amdgpu, implicit $vgpr0, implicit $vgpr1
    $vgpr2 = V_MOV_B32_e32 2, implicit $exec
    $vgpr3 = V_MOV_B32_e32 3, implicit $exec
    $sgpr30_sgpr31 = SI_CALL %call_target, @callee, csr_amdgpu, implicit $vgpr2, implicit $vgpr3
    %impdef:vreg_64 = IMPLICIT_DEF
    %ptr:vreg_64 = IMPLICIT_DEF
    GLOBAL_STORE_DWORD %ptr, %impdef.sub1, 0, 0, implicit $exec
    %impdef.sub0 = V_MOV_B32_e32 0, implicit $exec
    $scc = IMPLICIT_DEF
    S_CBRANCH_SCC1 %bb.1, implicit $scc

  bb.1:
    S_BARRIER
    S_ENDPGM 0, implicit %mul0, implicit %mul1
...