1*3c3c850aSMikhail Gudim# RUN: llc %s -mtriple=riscv64 -run-pass=reaching-defs-analysis -print-all-reaching-defs -o - 2>&1 | FileCheck %s 2*3c3c850aSMikhail Gudim 3*3c3c850aSMikhail Gudim--- 4*3c3c850aSMikhail Gudimname: test0 5*3c3c850aSMikhail GudimtracksRegLiveness: true 6*3c3c850aSMikhail Gudimstack: 7*3c3c850aSMikhail Gudim - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, 8*3c3c850aSMikhail Gudim stack-id: default, callee-saved-register: '', callee-saved-restored: true, 9*3c3c850aSMikhail Gudim debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } 10*3c3c850aSMikhail Gudimbody: | 11*3c3c850aSMikhail Gudim ; CHECK-LABEL: RDA results for test0 12*3c3c850aSMikhail Gudim ; CHECK-NEXT: %stack.0:{ } 13*3c3c850aSMikhail Gudim ; CHECK-NEXT:0: $x10 = LD %stack.0, 0 :: (load (s64)) 14*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 15*3c3c850aSMikhail Gudim ; CHECK-NEXT: implicit $x10:{ 0 } 16*3c3c850aSMikhail Gudim ; CHECK-NEXT:1: PseudoRET implicit $x10 17*3c3c850aSMikhail Gudim 18*3c3c850aSMikhail Gudim bb.0.entry: 19*3c3c850aSMikhail Gudim $x10 = LD %stack.0, 0 :: (load (s64)) 20*3c3c850aSMikhail Gudim PseudoRET implicit $x10 21*3c3c850aSMikhail Gudim 22*3c3c850aSMikhail Gudim... 23*3c3c850aSMikhail Gudim--- 24*3c3c850aSMikhail Gudimname: test1 25*3c3c850aSMikhail GudimtracksRegLiveness: true 26*3c3c850aSMikhail Gudimstack: 27*3c3c850aSMikhail Gudim - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, 28*3c3c850aSMikhail Gudim stack-id: default, callee-saved-register: '', callee-saved-restored: true, 29*3c3c850aSMikhail Gudim debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } 30*3c3c850aSMikhail Gudim - { id: 1, name: '', type: default, offset: 0, size: 4, alignment: 4, 31*3c3c850aSMikhail Gudim stack-id: default, callee-saved-register: '', callee-saved-restored: true, 32*3c3c850aSMikhail Gudim debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } 33*3c3c850aSMikhail Gudimbody: | 34*3c3c850aSMikhail Gudim ; CHECK-LABEL: RDA results for test1 35*3c3c850aSMikhail Gudim ; CHECK-NEXT: %stack.0:{ } 36*3c3c850aSMikhail Gudim ; CHECK-NEXT: 0: $x10 = LD %stack.0, 0 :: (load (s64)) 37*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 38*3c3c850aSMikhail Gudim ; CHECK-NEXT: %stack.1:{ } 39*3c3c850aSMikhail Gudim ; CHECK-NEXT: 1: $x11 = LD %stack.1, 0 :: (load (s64)) 40*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 41*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x10:{ 0 } 42*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x11:{ 1 } 43*3c3c850aSMikhail Gudim ; CHECK-NEXT: 2: $x10 = ADD $x10, $x11 44*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 45*3c3c850aSMikhail Gudim ; CHECK-NEXT: implicit $x10:{ 2 } 46*3c3c850aSMikhail Gudim ; CHECK-NEXT: 3: PseudoRET implicit $x10 47*3c3c850aSMikhail Gudim 48*3c3c850aSMikhail Gudim bb.0.entry: 49*3c3c850aSMikhail Gudim $x10 = LD %stack.0, 0 :: (load (s64)) 50*3c3c850aSMikhail Gudim $x11 = LD %stack.1, 0 :: (load (s64)) 51*3c3c850aSMikhail Gudim $x10 = ADD $x10, $x11 52*3c3c850aSMikhail Gudim PseudoRET implicit $x10 53*3c3c850aSMikhail Gudim 54*3c3c850aSMikhail Gudim... 55*3c3c850aSMikhail Gudim--- 56*3c3c850aSMikhail Gudimname: test2 57*3c3c850aSMikhail GudimtracksRegLiveness: true 58*3c3c850aSMikhail Gudimstack: 59*3c3c850aSMikhail Gudim - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, 60*3c3c850aSMikhail Gudim stack-id: default, callee-saved-register: '', callee-saved-restored: true, 61*3c3c850aSMikhail Gudim debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } 62*3c3c850aSMikhail Gudim - { id: 1, name: '', type: default, offset: 0, size: 4, alignment: 4, 63*3c3c850aSMikhail Gudim stack-id: default, callee-saved-register: '', callee-saved-restored: true, 64*3c3c850aSMikhail Gudim debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } 65*3c3c850aSMikhail Gudimbody: | 66*3c3c850aSMikhail Gudim ; CHECK-LABEL: RDA results for test2 67*3c3c850aSMikhail Gudim ; CHECK-NEXT: %stack.0:{ } 68*3c3c850aSMikhail Gudim ; CHECK-NEXT: 0: $x10 = LD %stack.0, 0 :: (load (s64)) 69*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 70*3c3c850aSMikhail Gudim ; CHECK-NEXT: %stack.1:{ } 71*3c3c850aSMikhail Gudim ; CHECK-NEXT: 1: $x11 = LD %stack.1, 0 :: (load (s64)) 72*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 73*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x10:{ 0 } 74*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x11:{ 1 } 75*3c3c850aSMikhail Gudim ; CHECK-NEXT: 2: $x10 = ADD $x10, $x11 76*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 77*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x10:{ 2 } 78*3c3c850aSMikhail Gudim ; CHECK-NEXT: %stack.0:{ } 79*3c3c850aSMikhail Gudim ; CHECK-NEXT: 3: SD $x10, %stack.0, 0 :: (store (s64)) 80*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 81*3c3c850aSMikhail Gudim ; CHECK-NEXT: %stack.0:{ 3 } 82*3c3c850aSMikhail Gudim ; CHECK-NEXT: 4: $x10 = LD %stack.0, 0 :: (load (s64)) 83*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 84*3c3c850aSMikhail Gudim ; CHECK-NEXT: implicit $x10:{ 4 } 85*3c3c850aSMikhail Gudim ; CHECK-NEXT: 5: PseudoRET implicit $x10 86*3c3c850aSMikhail Gudim 87*3c3c850aSMikhail Gudim bb.0.entry: 88*3c3c850aSMikhail Gudim $x10 = LD %stack.0, 0 :: (load (s64)) 89*3c3c850aSMikhail Gudim $x11 = LD %stack.1, 0 :: (load (s64)) 90*3c3c850aSMikhail Gudim $x10 = ADD $x10, $x11 91*3c3c850aSMikhail Gudim SD $x10, %stack.0, 0 :: (store (s64)) 92*3c3c850aSMikhail Gudim $x10 = LD %stack.0, 0 :: (load (s64)) 93*3c3c850aSMikhail Gudim PseudoRET implicit $x10 94*3c3c850aSMikhail Gudim 95*3c3c850aSMikhail Gudim... 96*3c3c850aSMikhail Gudim--- 97*3c3c850aSMikhail Gudimname: test3 98*3c3c850aSMikhail GudimtracksRegLiveness: true 99*3c3c850aSMikhail Gudimstack: 100*3c3c850aSMikhail Gudim - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4, 101*3c3c850aSMikhail Gudim stack-id: default, callee-saved-register: '', callee-saved-restored: true, 102*3c3c850aSMikhail Gudim debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } 103*3c3c850aSMikhail Gudimbody: | 104*3c3c850aSMikhail Gudim ; CHECK-LABEL: RDA results for test3 105*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x10:{ } 106*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x0:{ } 107*3c3c850aSMikhail Gudim ; CHECK-NEXT: 0: BEQ $x10, $x0, %bb.2 108*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 109*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x10:{ } 110*3c3c850aSMikhail Gudim ; CHECK-NEXT: 1: $x10 = ADDI $x10, 1 111*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 112*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x10:{ 1 } 113*3c3c850aSMikhail Gudim ; CHECK-NEXT: %stack.0:{ } 114*3c3c850aSMikhail Gudim ; CHECK-NEXT: 2: SD $x10, %stack.0, 0 :: (store (s64)) 115*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 116*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x0:{ } 117*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x0:{ } 118*3c3c850aSMikhail Gudim ; CHECK-NEXT: 3: BEQ $x0, $x0, %bb.3 119*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 120*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x10:{ 1 } 121*3c3c850aSMikhail Gudim ; CHECK-NEXT: 4: $x10 = ADDI $x10, 2 122*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 123*3c3c850aSMikhail Gudim ; CHECK-NEXT: $x10:{ 4 } 124*3c3c850aSMikhail Gudim ; CHECK-NEXT: %stack.0:{ 2 } 125*3c3c850aSMikhail Gudim ; CHECK-NEXT: 5: SD $x10, %stack.0, 0 :: (store (s64)) 126*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 127*3c3c850aSMikhail Gudim ; CHECK-NEXT: %stack.0:{ 2 5 } 128*3c3c850aSMikhail Gudim ; CHECK-NEXT: 6: $x10 = LD %stack.0, 0 :: (load (s64)) 129*3c3c850aSMikhail Gudim ; CHECK-EMPTY: 130*3c3c850aSMikhail Gudim ; CHECK-NEXT: implicit $x10:{ 6 } 131*3c3c850aSMikhail Gudim ; CHECK-NEXT: 7: PseudoRET implicit $x10 132*3c3c850aSMikhail Gudim 133*3c3c850aSMikhail Gudim bb.0.entry: 134*3c3c850aSMikhail Gudim liveins: $x10 135*3c3c850aSMikhail Gudim BEQ $x10, $x0, %bb.2 136*3c3c850aSMikhail Gudim 137*3c3c850aSMikhail Gudim bb.1: 138*3c3c850aSMikhail Gudim liveins: $x10 139*3c3c850aSMikhail Gudim $x10 = ADDI $x10, 1 140*3c3c850aSMikhail Gudim SD $x10, %stack.0, 0 :: (store (s64)) 141*3c3c850aSMikhail Gudim BEQ $x0, $x0, %bb.3 142*3c3c850aSMikhail Gudim 143*3c3c850aSMikhail Gudim bb.2: 144*3c3c850aSMikhail Gudim liveins: $x10 145*3c3c850aSMikhail Gudim $x10 = ADDI $x10, 2 146*3c3c850aSMikhail Gudim SD $x10, %stack.0, 0 :: (store (s64)) 147*3c3c850aSMikhail Gudim 148*3c3c850aSMikhail Gudim bb.3: 149*3c3c850aSMikhail Gudim $x10 = LD %stack.0, 0 :: (load (s64)) 150*3c3c850aSMikhail Gudim PseudoRET implicit $x10 151*3c3c850aSMikhail Gudim... 152