brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.7 KiB · 019d593 Raw
258 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=hexagon -enable-subreg-liveness -start-after machine-scheduler -stop-after stack-slot-coloring -o - %s | FileCheck %s3 4--- |5  target triple = "hexagon"6 7  define void @main() #0 {8  entry:9    br label %for.body10 11  for.body:                                         ; preds = %if.end82, %entry12    %lsr.iv = phi i32 [ %lsr.iv.next, %if.end82 ], [ 524288, %entry ]13    %call9 = tail call i32 @lrand48() #014    %conv10 = sext i32 %call9 to i6415    %shr11 = lshr i64 %conv10, 916    %or12 = or i64 0, %shr1117    %call14 = tail call i32 @lrand48() #018    %conv15138 = zext i32 %call14 to i6419    %shr16 = lshr i64 %conv15138, 920    %0 = call i64 @llvm.hexagon.S2.extractup(i64 %conv15138, i32 22, i32 9)21    %1 = shl i64 %0, 4222    %shl17 = shl i64 %shr16, 4223    %or22 = or i64 0, %124    %or26 = or i64 %or22, 025    %shr30 = lshr i64 undef, 2526    %2 = call i64 @llvm.hexagon.S2.extractup(i64 undef, i32 6, i32 25)27    %and = and i64 %shr30, 6328    %sub = shl i64 2, %229    %add = add i64 %sub, -130    %shl37 = shl i64 %add, 031    %call38 = tail call i32 @lrand48() #032    %conv39141 = zext i32 %call38 to i6433    %shr40 = lshr i64 %conv39141, 2534    %3 = call i64 @llvm.hexagon.S2.extractup(i64 %conv39141, i32 6, i32 25)35    %and41 = and i64 %shr40, 6336    %sub43 = shl i64 2, %337    %add45 = add i64 %sub43, -138    %call46 = tail call i32 @lrand48() #039    %shr48 = lshr i64 undef, 2540    %4 = call i64 @llvm.hexagon.S2.extractup(i64 undef, i32 6, i32 25)41    %and49 = and i64 %shr48, 6342    %shl50 = shl i64 %add45, %443    %and52 = and i64 %shl37, %or1244    %and54 = and i64 %shl50, %or2645    store i64 %and54, ptr undef, align 846    %cmp56 = icmp eq i64 %and52, 047    br i1 %cmp56, label %for.end, label %if.end8248 49  if.end82:                                         ; preds = %for.body50    %lsr.iv.next = add nsw i32 %lsr.iv, -151    %exitcond = icmp eq i32 %lsr.iv.next, 052    br i1 %exitcond, label %for.end, label %for.body53 54  for.end:                                          ; preds = %if.end82, %for.body55    unreachable56  }57 58  declare i32 @lrand48() #059  declare i64 @llvm.hexagon.S2.extractup(i64, i32, i32) #160 61  attributes #0 = { nounwind optsize "target-cpu"="hexagonv55" "target-features"="-hvx" }62  attributes #1 = { nounwind readnone }63 64...65---66name:            main67alignment:       468tracksRegLiveness: true69registers:70  - { id: 0, class: intregs }71  - { id: 1, class: intregs }72  - { id: 2, class: intregs }73  - { id: 3, class: intregs }74  - { id: 4, class: doubleregs }75  - { id: 5, class: intregs }76  - { id: 6, class: doubleregs }77  - { id: 7, class: doubleregs }78  - { id: 8, class: doubleregs }79  - { id: 9, class: doubleregs }80  - { id: 10, class: intregs }81  - { id: 11, class: doubleregs }82  - { id: 12, class: doubleregs }83  - { id: 13, class: doubleregs }84  - { id: 14, class: intregs }85  - { id: 15, class: doubleregs }86  - { id: 16, class: doubleregs }87  - { id: 17, class: intregs }88  - { id: 18, class: doubleregs }89  - { id: 19, class: intregs }90  - { id: 20, class: doubleregs }91  - { id: 21, class: doubleregs }92  - { id: 22, class: doubleregs }93  - { id: 23, class: intregs }94  - { id: 24, class: doubleregs }95  - { id: 25, class: predregs }96  - { id: 26, class: predregs }97  - { id: 27, class: intregs }98  - { id: 28, class: intregs }99  - { id: 29, class: doubleregs }100  - { id: 30, class: intregs }101  - { id: 31, class: intregs }102  - { id: 32, class: doubleregs }103  - { id: 33, class: intregs }104  - { id: 34, class: intregs }105  - { id: 35, class: doubleregs }106  - { id: 36, class: doubleregs }107  - { id: 37, class: intregs }108  - { id: 38, class: intregs }109  - { id: 39, class: doubleregs }110  - { id: 40, class: doubleregs }111  - { id: 41, class: intregs }112  - { id: 42, class: intregs }113  - { id: 43, class: doubleregs }114  - { id: 44, class: intregs }115  - { id: 45, class: intregs }116  - { id: 46, class: doubleregs }117  - { id: 47, class: doubleregs }118  - { id: 48, class: doubleregs }119  - { id: 49, class: doubleregs }120  - { id: 50, class: doubleregs }121  - { id: 51, class: doubleregs }122  - { id: 52, class: intregs }123  - { id: 53, class: intregs }124  - { id: 54, class: intregs }125  - { id: 55, class: doubleregs }126  - { id: 56, class: doubleregs }127  - { id: 57, class: intregs }128  - { id: 58, class: intregs }129  - { id: 59, class: intregs }130frameInfo:131  isFrameAddressTaken: false132  isReturnAddressTaken: false133  hasStackMap:     false134  hasPatchPoint:   false135  stackSize:       0136  offsetAdjustment: 0137  maxAlignment:    0138  adjustsStack:    true139  hasCalls:        true140  maxCallFrameSize: 0141  hasOpaqueSPAdjustment: false142  hasVAStart:      false143  hasMustTailInVarArgFunc: false144body:             |145  ; CHECK-LABEL: name: main146  ; CHECK: bb.0.entry:147  ; CHECK-NEXT:   successors: %bb.1(0x80000000)148  ; CHECK-NEXT: {{  $}}149  ; CHECK-NEXT:   renamable $r20 = A2_tfrsi 524288150  ; CHECK-NEXT:   renamable $r17 = A2_tfrsi 0151  ; CHECK-NEXT:   renamable $d2 = S2_extractup undef renamable $d0, 6, 25152  ; CHECK-NEXT:   renamable $d0 = A2_tfrpi 2153  ; CHECK-NEXT:   renamable $d13 = A2_tfrpi -1154  ; CHECK-NEXT:   renamable $d13 = S2_asl_r_p_acc killed renamable $d13, killed renamable $d0, renamable $r4155  ; CHECK-NEXT:   S2_storerd_io %stack.0, 0, renamable $d2 :: (store (s64) into %stack.0)156  ; CHECK-NEXT: {{  $}}157  ; CHECK-NEXT: bb.1.for.body:158  ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.2(0x40000000)159  ; CHECK-NEXT:   liveins: $d8:0x0000000000000001, $d13, $r20160  ; CHECK-NEXT: {{  $}}161  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit $r31, implicit $r30, implicit $r29162  ; CHECK-NEXT:   J2_call @lrand48, implicit-def dead $d0, implicit-def dead $d1, implicit-def dead $d2, implicit-def dead $d3, implicit-def dead $d4, implicit-def dead $d5, implicit-def dead $d6, implicit-def dead $d7, implicit-def dead $r28, implicit-def dead $r31, implicit-def dead $p0, implicit-def dead $p1, implicit-def dead $p2, implicit-def dead $p3, implicit-def dead $m0, implicit-def dead $m1, implicit-def dead $lc0, implicit-def dead $lc1, implicit-def dead $sa0, implicit-def dead $sa1, implicit-def dead $usr, implicit-def $usr_ovf, implicit-def dead $cs0, implicit-def dead $cs1, implicit-def dead $w0, implicit-def dead $w1, implicit-def dead $w2, implicit-def dead $w3, implicit-def dead $w4, implicit-def dead $w5, implicit-def dead $w6, implicit-def dead $w7, implicit-def dead $w8, implicit-def dead $w9, implicit-def dead $w10, implicit-def dead $w11, implicit-def dead $w12, implicit-def dead $w13, implicit-def dead $w14, implicit-def dead $w15, implicit-def dead $q0, implicit-def dead $q1, implicit-def dead $q2, implicit-def dead $q3, implicit-def $r0163  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit-def dead $r31, implicit $r29164  ; CHECK-NEXT:   renamable $r18 = COPY $r0165  ; CHECK-NEXT:   renamable $r19 = S2_asr_i_r renamable $r18, 31166  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit $r31, implicit $r30, implicit $r29167  ; CHECK-NEXT:   J2_call @lrand48, implicit-def dead $d0, implicit-def dead $d1, implicit-def dead $d2, implicit-def dead $d3, implicit-def dead $d4, implicit-def dead $d5, implicit-def dead $d6, implicit-def dead $d7, implicit-def dead $r28, implicit-def dead $r31, implicit-def dead $p0, implicit-def dead $p1, implicit-def dead $p2, implicit-def dead $p3, implicit-def dead $m0, implicit-def dead $m1, implicit-def dead $lc0, implicit-def dead $lc1, implicit-def dead $sa0, implicit-def dead $sa1, implicit-def dead $usr, implicit-def $usr_ovf, implicit-def dead $cs0, implicit-def dead $cs1, implicit-def dead $w0, implicit-def dead $w1, implicit-def dead $w2, implicit-def dead $w3, implicit-def dead $w4, implicit-def dead $w5, implicit-def dead $w6, implicit-def dead $w7, implicit-def dead $w8, implicit-def dead $w9, implicit-def dead $w10, implicit-def dead $w11, implicit-def dead $w12, implicit-def dead $w13, implicit-def dead $w14, implicit-def dead $w15, implicit-def dead $q0, implicit-def dead $q1, implicit-def dead $q2, implicit-def dead $q3, implicit-def $r0168  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit-def dead $r31, implicit $r29169  ; CHECK-NEXT:   renamable $r16 = COPY $r0170  ; CHECK-NEXT:   renamable $d12 = S2_extractup renamable $d8, 22, 9171  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit $r31, implicit $r30, implicit $r29172  ; CHECK-NEXT:   J2_call @lrand48, implicit-def dead $d0, implicit-def dead $d1, implicit-def dead $d2, implicit-def dead $d3, implicit-def dead $d4, implicit-def dead $d5, implicit-def dead $d6, implicit-def dead $d7, implicit-def dead $r28, implicit-def dead $r31, implicit-def dead $p0, implicit-def dead $p1, implicit-def dead $p2, implicit-def dead $p3, implicit-def dead $m0, implicit-def dead $m1, implicit-def dead $lc0, implicit-def dead $lc1, implicit-def dead $sa0, implicit-def dead $sa1, implicit-def dead $usr, implicit-def $usr_ovf, implicit-def dead $cs0, implicit-def dead $cs1, implicit-def dead $w0, implicit-def dead $w1, implicit-def dead $w2, implicit-def dead $w3, implicit-def dead $w4, implicit-def dead $w5, implicit-def dead $w6, implicit-def dead $w7, implicit-def dead $w8, implicit-def dead $w9, implicit-def dead $w10, implicit-def dead $w11, implicit-def dead $w12, implicit-def dead $w13, implicit-def dead $w14, implicit-def dead $w15, implicit-def dead $q0, implicit-def dead $q1, implicit-def dead $q2, implicit-def dead $q3, implicit-def $r0173  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit-def dead $r31, implicit $r29174  ; CHECK-NEXT:   renamable $r1 = COPY renamable $r17175  ; CHECK-NEXT:   renamable $d0 = S2_extractup killed renamable $d0, 6, 25176  ; CHECK-NEXT:   renamable $d11 = A2_tfrpi -1177  ; CHECK-NEXT:   renamable $d1 = A2_tfrpi 2178  ; CHECK-NEXT:   renamable $d11 = S2_asl_r_p_acc killed renamable $d11, killed renamable $d1, killed renamable $r0179  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit $r31, implicit $r30, implicit $r29180  ; CHECK-NEXT:   J2_call @lrand48, implicit-def dead $d0, implicit-def dead $d1, implicit-def dead $d2, implicit-def dead $d3, implicit-def dead $d4, implicit-def dead $d5, implicit-def dead $d6, implicit-def dead $d7, implicit-def dead $r28, implicit-def dead $r31, implicit-def dead $p0, implicit-def dead $p1, implicit-def dead $p2, implicit-def dead $p3, implicit-def dead $m0, implicit-def dead $m1, implicit-def dead $lc0, implicit-def dead $lc1, implicit-def dead $sa0, implicit-def dead $sa1, implicit-def dead $usr, implicit-def $usr_ovf, implicit-def dead $cs0, implicit-def dead $cs1, implicit-def dead $w0, implicit-def dead $w1, implicit-def dead $w2, implicit-def dead $w3, implicit-def dead $w4, implicit-def dead $w5, implicit-def dead $w6, implicit-def dead $w7, implicit-def dead $w8, implicit-def dead $w9, implicit-def dead $w10, implicit-def dead $w11, implicit-def dead $w12, implicit-def dead $w13, implicit-def dead $w14, implicit-def dead $w15, implicit-def dead $q0, implicit-def dead $q1, implicit-def dead $q2, implicit-def dead $q3181  ; CHECK-NEXT:   renamable $d2 = L2_loadrd_io %stack.0, 0 :: (load (s64) from %stack.0)182  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit-def dead $r31, implicit $r29183  ; CHECK-NEXT:   renamable $d0 = S2_asl_r_p killed renamable $d11, killed renamable $r4184  ; CHECK-NEXT:   renamable $d1 = COPY renamable $d13185  ; CHECK-NEXT:   renamable $d1 = S2_lsr_i_p_and killed renamable $d1, killed renamable $d9, 9186  ; CHECK-NEXT:   renamable $d0 = S2_asl_i_p_and killed renamable $d0, killed renamable $d12, 42187  ; CHECK-NEXT:   S2_storerd_io undef renamable $r0, 0, killed renamable $d0 :: (store (s64) into `ptr undef`)188  ; CHECK-NEXT:   renamable $d0 = A2_tfrpi 0189  ; CHECK-NEXT:   renamable $p0 = C2_cmpeqp killed renamable $d1, killed renamable $d0190  ; CHECK-NEXT:   J2_jumpt killed renamable $p0, %bb.3, implicit-def dead $pc191  ; CHECK-NEXT:   J2_jump %bb.2, implicit-def dead $pc192  ; CHECK-NEXT: {{  $}}193  ; CHECK-NEXT: bb.2.if.end82:194  ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.1(0x40000000)195  ; CHECK-NEXT:   liveins: $d8:0x0000000000000001, $d13, $r20196  ; CHECK-NEXT: {{  $}}197  ; CHECK-NEXT:   renamable $r20 = A2_addi killed renamable $r20, -1198  ; CHECK-NEXT:   renamable $p0 = C2_cmpeqi renamable $r20, 0199  ; CHECK-NEXT:   J2_jumpf killed renamable $p0, %bb.1, implicit-def dead $pc200  ; CHECK-NEXT:   J2_jump %bb.3, implicit-def dead $pc201  ; CHECK-NEXT: {{  $}}202  ; CHECK-NEXT: bb.3.for.end:203  bb.0.entry:204    successors: %bb.1.for.body205 206    %59 = A2_tfrsi 524288207    undef %32.isub_hi = A2_tfrsi 0208    %8 = S2_extractup undef %9, 6, 25209    %47 = A2_tfrpi 2210    %13 = A2_tfrpi -1211    %13 = S2_asl_r_p_acc %13, %47, %8.isub_lo212    %51 = A2_tfrpi 0213 214  bb.1.for.body:215    successors: %bb.3.for.end, %bb.2.if.end82216 217    ADJCALLSTACKDOWN 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit $r31, implicit $r30, implicit $r29218    J2_call @lrand48, implicit-def dead $d0, implicit-def dead $d1, implicit-def dead $d2, implicit-def dead $d3, implicit-def dead $d4, implicit-def dead $d5, implicit-def dead $d6, implicit-def dead $d7, implicit-def dead $r28, implicit-def dead $r31, implicit-def dead $p0, implicit-def dead $p1, implicit-def dead $p2, implicit-def dead $p3, implicit-def dead $m0, implicit-def dead $m1, implicit-def dead $lc0, implicit-def dead $lc1, implicit-def dead $sa0, implicit-def dead $sa1, implicit-def dead $usr, implicit-def $usr_ovf, implicit-def dead $cs0, implicit-def dead $cs1, implicit-def dead $w0, implicit-def dead $w1, implicit-def dead $w2, implicit-def dead $w3, implicit-def dead $w4, implicit-def dead $w5, implicit-def dead $w6, implicit-def dead $w7, implicit-def dead $w8, implicit-def dead $w9, implicit-def dead $w10, implicit-def dead $w11, implicit-def dead $w12, implicit-def dead $w13, implicit-def dead $w14, implicit-def dead $w15, implicit-def dead $q0, implicit-def dead $q1, implicit-def dead $q2, implicit-def dead $q3, implicit-def $r0219    ADJCALLSTACKUP 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit-def dead $r31, implicit $r29220    undef %29.isub_lo = COPY killed $r0221    %29.isub_hi = S2_asr_i_r %29.isub_lo, 31222    ADJCALLSTACKDOWN 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit $r31, implicit $r30, implicit $r29223    J2_call @lrand48, implicit-def dead $d0, implicit-def dead $d1, implicit-def dead $d2, implicit-def dead $d3, implicit-def dead $d4, implicit-def dead $d5, implicit-def dead $d6, implicit-def dead $d7, implicit-def dead $r28, implicit-def dead $r31, implicit-def dead $p0, implicit-def dead $p1, implicit-def dead $p2, implicit-def dead $p3, implicit-def dead $m0, implicit-def dead $m1, implicit-def dead $lc0, implicit-def dead $lc1, implicit-def dead $sa0, implicit-def dead $sa1, implicit-def dead $usr, implicit-def $usr_ovf, implicit-def dead $cs0, implicit-def dead $cs1, implicit-def dead $w0, implicit-def dead $w1, implicit-def dead $w2, implicit-def dead $w3, implicit-def dead $w4, implicit-def dead $w5, implicit-def dead $w6, implicit-def dead $w7, implicit-def dead $w8, implicit-def dead $w9, implicit-def dead $w10, implicit-def dead $w11, implicit-def dead $w12, implicit-def dead $w13, implicit-def dead $w14, implicit-def dead $w15, implicit-def dead $q0, implicit-def dead $q1, implicit-def dead $q2, implicit-def dead $q3, implicit-def $r0224    ADJCALLSTACKUP 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit-def dead $r31, implicit $r29225    %32.isub_lo = COPY killed $r0226    %7 = S2_extractup %32, 22, 9227    ADJCALLSTACKDOWN 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit $r31, implicit $r30, implicit $r29228    J2_call @lrand48, implicit-def dead $d0, implicit-def dead $d1, implicit-def dead $d2, implicit-def dead $d3, implicit-def dead $d4, implicit-def dead $d5, implicit-def dead $d6, implicit-def dead $d7, implicit-def dead $r28, implicit-def dead $r31, implicit-def dead $p0, implicit-def dead $p1, implicit-def dead $p2, implicit-def dead $p3, implicit-def dead $m0, implicit-def dead $m1, implicit-def dead $lc0, implicit-def dead $lc1, implicit-def dead $sa0, implicit-def dead $sa1, implicit-def dead $usr, implicit-def $usr_ovf, implicit-def dead $cs0, implicit-def dead $cs1, implicit-def dead $w0, implicit-def dead $w1, implicit-def dead $w2, implicit-def dead $w3, implicit-def dead $w4, implicit-def dead $w5, implicit-def dead $w6, implicit-def dead $w7, implicit-def dead $w8, implicit-def dead $w9, implicit-def dead $w10, implicit-def dead $w11, implicit-def dead $w12, implicit-def dead $w13, implicit-def dead $w14, implicit-def dead $w15, implicit-def dead $q0, implicit-def dead $q1, implicit-def dead $q2, implicit-def dead $q3, implicit-def $r0229    ADJCALLSTACKUP 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit-def dead $r31, implicit $r29230    undef %43.isub_lo = COPY killed $r0231    %43.isub_hi = COPY %32.isub_hi232    %16 = S2_extractup %43, 6, 25233    %18 = A2_tfrpi -1234    %18 = S2_asl_r_p_acc %18, %47, %16.isub_lo235    ADJCALLSTACKDOWN 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit $r31, implicit $r30, implicit $r29236    J2_call @lrand48, implicit-def dead $d0, implicit-def dead $d1, implicit-def dead $d2, implicit-def dead $d3, implicit-def dead $d4, implicit-def dead $d5, implicit-def dead $d6, implicit-def dead $d7, implicit-def dead $r28, implicit-def dead $r31, implicit-def dead $p0, implicit-def dead $p1, implicit-def dead $p2, implicit-def dead $p3, implicit-def dead $m0, implicit-def dead $m1, implicit-def dead $lc0, implicit-def dead $lc1, implicit-def dead $sa0, implicit-def dead $sa1, implicit-def dead $usr, implicit-def $usr_ovf, implicit-def dead $cs0, implicit-def dead $cs1, implicit-def dead $w0, implicit-def dead $w1, implicit-def dead $w2, implicit-def dead $w3, implicit-def dead $w4, implicit-def dead $w5, implicit-def dead $w6, implicit-def dead $w7, implicit-def dead $w8, implicit-def dead $w9, implicit-def dead $w10, implicit-def dead $w11, implicit-def dead $w12, implicit-def dead $w13, implicit-def dead $w14, implicit-def dead $w15, implicit-def dead $q0, implicit-def dead $q1, implicit-def dead $q2, implicit-def dead $q3237    ADJCALLSTACKUP 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit-def dead $r31, implicit $r29238    %22 = S2_asl_r_p %18, %8.isub_lo239    %21 = COPY %13240    %21 = S2_lsr_i_p_and %21, %29, 9241    %22 = S2_asl_i_p_and %22, %7, 42242    S2_storerd_io undef %23, 0, %22 :: (store (s64) into `ptr undef`)243    %25 = C2_cmpeqp %21, %51244    J2_jumpt %25, %bb.3.for.end, implicit-def dead $pc245    J2_jump %bb.2.if.end82, implicit-def dead $pc246 247  bb.2.if.end82:248    successors: %bb.3.for.end, %bb.1.for.body249 250    %59 = A2_addi %59, -1251    %26 = C2_cmpeqi %59, 0252    J2_jumpf %26, %bb.1.for.body, implicit-def dead $pc253    J2_jump %bb.3.for.end, implicit-def dead $pc254 255  bb.3.for.end:256 257...258