brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.5 KiB · 0a5b47e Raw
347 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=thumbv8.1m.main %s -run-pass=arm-cp-islands --verify-machineinstrs -o - | FileCheck %s --check-prefix=CHECK-LOB3# RUN: llc -mtriple=thumbv8.1m.main -mattr=-lob %s -run-pass=arm-cp-islands --verify-machineinstrs -o - | FileCheck %s --check-prefix=CHECK-NOLOB4 5--- |6  %struct.head_s = type { ptr, ptr }7  %struct.data_s = type { i16, i16 }8 9  define dso_local arm_aapcscc ptr @search(ptr readonly %list, ptr nocapture readonly %info) local_unnamed_addr {10  entry:11    %idx = getelementptr inbounds %struct.data_s, ptr %info, i32 0, i32 112    %0 = load i16, ptr %idx, align 213    %cmp = icmp sgt i16 %0, -114    br i1 %cmp, label %while.cond.preheader, label %while.cond9.preheader15 16  while.cond9.preheader:                            ; preds = %entry17    %1 = icmp eq ptr %list, null18    br i1 %1, label %return, label %land.rhs11.lr.ph19 20  land.rhs11.lr.ph:                                 ; preds = %while.cond9.preheader21    %data16143 = bitcast ptr %info to ptr22    %2 = load i16, ptr %data16143, align 223    %conv15 = sext i16 %2 to i3224    br label %land.rhs1125 26  while.cond.preheader:                             ; preds = %entry27    %3 = icmp eq ptr %list, null28    br i1 %3, label %return, label %land.rhs.preheader29 30  land.rhs.preheader:                               ; preds = %while.cond.preheader31    br label %land.rhs32 33  land.rhs:                                         ; preds = %land.rhs.preheader, %while.body34    %list.addr.033 = phi ptr [ %6, %while.body ], [ %list, %land.rhs.preheader ]35    %info2 = getelementptr inbounds %struct.head_s, ptr %list.addr.033, i32 0, i32 136    %4 = load ptr, ptr %info2, align 437    %idx3 = getelementptr inbounds %struct.data_s, ptr %4, i32 0, i32 138    %5 = load i16, ptr %idx3, align 239    %cmp7 = icmp eq i16 %5, %040    br i1 %cmp7, label %return, label %while.body41 42  while.body:                                       ; preds = %land.rhs43    %next4 = bitcast ptr %list.addr.033 to ptr44    %6 = load ptr, ptr %next4, align 445    %tobool = icmp ne ptr %6, null46    br i1 %tobool, label %return, label %land.rhs47 48  land.rhs11:                                       ; preds = %while.body19, %land.rhs11.lr.ph49    %list.addr.136 = phi ptr [ %list, %land.rhs11.lr.ph ], [ %10, %while.body19 ]50    %info12 = getelementptr inbounds %struct.head_s, ptr %list.addr.136, i32 0, i32 151    %7 = load ptr, ptr %info12, align 452    %data165 = bitcast ptr %7 to ptr53    %8 = load i16, ptr %data165, align 254    %9 = and i16 %8, 25555    %and = zext i16 %9 to i3256    %cmp16 = icmp eq i32 %and, %conv1557    br i1 %cmp16, label %return, label %while.body1958 59  while.body19:                                     ; preds = %land.rhs1160    %next206 = bitcast ptr %list.addr.136 to ptr61    %10 = load ptr, ptr %next206, align 462    %tobool10 = icmp eq ptr %10, null63    br i1 %tobool10, label %return, label %land.rhs1164 65  return:                                           ; preds = %while.body19, %land.rhs11, %while.body, %land.rhs, %while.cond.preheader, %while.cond9.preheader66    %retval.0 = phi ptr [ null, %while.cond.preheader ], [ null, %while.cond9.preheader ], [ null, %while.body ], [ %list.addr.033, %land.rhs ], [ null, %while.body19 ], [ %list.addr.136, %land.rhs11 ]67    ret ptr %retval.068  }69 70...71---72name:            search73alignment:       274exposesReturnsTwice: false75legalized:       false76regBankSelected: false77selected:        false78failedISel:      false79tracksRegLiveness: true80hasWinCFI:       false81registers:       []82liveins:83  - { reg: '$r0', virtual-reg: '' }84  - { reg: '$r1', virtual-reg: '' }85frameInfo:86  isFrameAddressTaken: false87  isReturnAddressTaken: false88  hasStackMap:     false89  hasPatchPoint:   false90  stackSize:       091  offsetAdjustment: 092  maxAlignment:    193  adjustsStack:    false94  hasCalls:        false95  stackProtector:  ''96  maxCallFrameSize: 097  cvBytesOfCalleeSavedRegisters: 098  hasOpaqueSPAdjustment: false99  hasVAStart:      false100  hasMustTailInVarArgFunc: false101  localFrameSize:  0102  savePoint:       []103  restorePoint:    []104fixedStack:      []105stack:           []106callSites:       []107constants:       []108machineFunctionInfo: {}109body:             |110  ; CHECK-LOB-LABEL: name: search111  ; CHECK-LOB: bb.0.entry:112  ; CHECK-LOB-NEXT:   successors: %bb.1(0x50000000), %bb.5(0x30000000)113  ; CHECK-LOB-NEXT:   liveins: $r0, $r1114  ; CHECK-LOB-NEXT: {{  $}}115  ; CHECK-LOB-NEXT:   renamable $r2 = t2LDRSHi12 renamable $r1, 2, 14 /* CC::al */, $noreg :: (load (s16) from %ir.idx)116  ; CHECK-LOB-NEXT:   t2CMPri renamable $r2, -1, 14 /* CC::al */, $noreg, implicit-def $cpsr117  ; CHECK-LOB-NEXT:   tBcc %bb.5, 13 /* CC::le */, killed $cpsr118  ; CHECK-LOB-NEXT: {{  $}}119  ; CHECK-LOB-NEXT: bb.1.while.cond.preheader:120  ; CHECK-LOB-NEXT:   successors: %bb.9(0x30000000), %bb.2(0x50000000)121  ; CHECK-LOB-NEXT:   liveins: $r0, $r2122  ; CHECK-LOB-NEXT: {{  $}}123  ; CHECK-LOB-NEXT:   tCBZ renamable $r0, %bb.9124  ; CHECK-LOB-NEXT: {{  $}}125  ; CHECK-LOB-NEXT: bb.2.land.rhs.preheader:126  ; CHECK-LOB-NEXT:   successors: %bb.3(0x80000000)127  ; CHECK-LOB-NEXT:   liveins: $r0, $r2128  ; CHECK-LOB-NEXT: {{  $}}129  ; CHECK-LOB-NEXT:   renamable $r1 = tUXTH killed renamable $r2, 14 /* CC::al */, $noreg130  ; CHECK-LOB-NEXT: {{  $}}131  ; CHECK-LOB-NEXT: bb.3.land.rhs:132  ; CHECK-LOB-NEXT:   successors: %bb.4(0x80000000)133  ; CHECK-LOB-NEXT:   liveins: $r0, $r1134  ; CHECK-LOB-NEXT: {{  $}}135  ; CHECK-LOB-NEXT:   renamable $r2 = tLDRi renamable $r0, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.info2)136  ; CHECK-LOB-NEXT:   renamable $r2 = tLDRHi killed renamable $r2, 1, 14 /* CC::al */, $noreg :: (load (s16) from %ir.idx3)137  ; CHECK-LOB-NEXT:   tCMPr killed renamable $r2, renamable $r1, 14 /* CC::al */, $noreg, implicit-def $cpsr138  ; CHECK-LOB-NEXT:   t2IT 0, 8, implicit-def $itstate139  ; CHECK-LOB-NEXT:   tBX_RET 0 /* CC::eq */, killed $cpsr, implicit $r0, implicit killed $itstate140  ; CHECK-LOB-NEXT: {{  $}}141  ; CHECK-LOB-NEXT: bb.4.while.body:142  ; CHECK-LOB-NEXT:   successors: %bb.9(0x04000000), %bb.3(0x7c000000)143  ; CHECK-LOB-NEXT:   liveins: $r0, $r1144  ; CHECK-LOB-NEXT: {{  $}}145  ; CHECK-LOB-NEXT:   renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.next4)146  ; CHECK-LOB-NEXT:   tCBNZ renamable $r0, %bb.9147  ; CHECK-LOB-NEXT:   t2LE %bb.3148  ; CHECK-LOB-NEXT: {{  $}}149  ; CHECK-LOB-NEXT: bb.5.while.cond9.preheader:150  ; CHECK-LOB-NEXT:   successors: %bb.9(0x30000000), %bb.6(0x50000000)151  ; CHECK-LOB-NEXT:   liveins: $r0, $r1152  ; CHECK-LOB-NEXT: {{  $}}153  ; CHECK-LOB-NEXT:   tCBZ renamable $r0, %bb.9154  ; CHECK-LOB-NEXT: {{  $}}155  ; CHECK-LOB-NEXT: bb.6.land.rhs11.lr.ph:156  ; CHECK-LOB-NEXT:   successors: %bb.7(0x80000000)157  ; CHECK-LOB-NEXT:   liveins: $r0, $r1158  ; CHECK-LOB-NEXT: {{  $}}159  ; CHECK-LOB-NEXT:   renamable $r1 = t2LDRSHi12 killed renamable $r1, 0, 14 /* CC::al */, $noreg :: (load (s16) from %ir.data16143)160  ; CHECK-LOB-NEXT: {{  $}}161  ; CHECK-LOB-NEXT: bb.7.land.rhs11:162  ; CHECK-LOB-NEXT:   successors: %bb.10(0x04000000), %bb.8(0x7c000000)163  ; CHECK-LOB-NEXT:   liveins: $r0, $r1164  ; CHECK-LOB-NEXT: {{  $}}165  ; CHECK-LOB-NEXT:   renamable $r2 = tLDRi renamable $r0, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.info12)166  ; CHECK-LOB-NEXT:   renamable $r2 = tLDRBi killed renamable $r2, 0, 14 /* CC::al */, $noreg :: (load (s8) from %ir.data165, align 2)167  ; CHECK-LOB-NEXT:   tCMPr killed renamable $r2, renamable $r1, 14 /* CC::al */, $noreg, implicit-def $cpsr168  ; CHECK-LOB-NEXT:   tBcc %bb.10, 0 /* CC::eq */, killed $cpsr169  ; CHECK-LOB-NEXT: {{  $}}170  ; CHECK-LOB-NEXT: bb.8.while.body19:171  ; CHECK-LOB-NEXT:   successors: %bb.9(0x04000000), %bb.7(0x7c000000)172  ; CHECK-LOB-NEXT:   liveins: $r0, $r1173  ; CHECK-LOB-NEXT: {{  $}}174  ; CHECK-LOB-NEXT:   renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.next206)175  ; CHECK-LOB-NEXT:   tCBZ renamable $r0, %bb.9176  ; CHECK-LOB-NEXT:   t2LE %bb.7177  ; CHECK-LOB-NEXT: {{  $}}178  ; CHECK-LOB-NEXT: bb.9:179  ; CHECK-LOB-NEXT:   successors: %bb.10(0x80000000)180  ; CHECK-LOB-NEXT: {{  $}}181  ; CHECK-LOB-NEXT:   renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg182  ; CHECK-LOB-NEXT: {{  $}}183  ; CHECK-LOB-NEXT: bb.10.return:184  ; CHECK-LOB-NEXT:   liveins: $r0185  ; CHECK-LOB-NEXT: {{  $}}186  ; CHECK-LOB-NEXT:   tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0187  ;188  ; CHECK-NOLOB-LABEL: name: search189  ; CHECK-NOLOB: bb.0.entry:190  ; CHECK-NOLOB-NEXT:   successors: %bb.1(0x50000000), %bb.5(0x30000000)191  ; CHECK-NOLOB-NEXT:   liveins: $r0, $r1192  ; CHECK-NOLOB-NEXT: {{  $}}193  ; CHECK-NOLOB-NEXT:   renamable $r2 = t2LDRSHi12 renamable $r1, 2, 14 /* CC::al */, $noreg :: (load (s16) from %ir.idx)194  ; CHECK-NOLOB-NEXT:   t2CMPri renamable $r2, -1, 14 /* CC::al */, $noreg, implicit-def $cpsr195  ; CHECK-NOLOB-NEXT:   tBcc %bb.5, 13 /* CC::le */, killed $cpsr196  ; CHECK-NOLOB-NEXT: {{  $}}197  ; CHECK-NOLOB-NEXT: bb.1.while.cond.preheader:198  ; CHECK-NOLOB-NEXT:   successors: %bb.9(0x30000000), %bb.2(0x50000000)199  ; CHECK-NOLOB-NEXT:   liveins: $r0, $r2200  ; CHECK-NOLOB-NEXT: {{  $}}201  ; CHECK-NOLOB-NEXT:   tCBZ renamable $r0, %bb.9202  ; CHECK-NOLOB-NEXT: {{  $}}203  ; CHECK-NOLOB-NEXT: bb.2.land.rhs.preheader:204  ; CHECK-NOLOB-NEXT:   successors: %bb.3(0x80000000)205  ; CHECK-NOLOB-NEXT:   liveins: $r0, $r2206  ; CHECK-NOLOB-NEXT: {{  $}}207  ; CHECK-NOLOB-NEXT:   renamable $r1 = tUXTH killed renamable $r2, 14 /* CC::al */, $noreg208  ; CHECK-NOLOB-NEXT: {{  $}}209  ; CHECK-NOLOB-NEXT: bb.3.land.rhs:210  ; CHECK-NOLOB-NEXT:   successors: %bb.4(0x80000000)211  ; CHECK-NOLOB-NEXT:   liveins: $r0, $r1212  ; CHECK-NOLOB-NEXT: {{  $}}213  ; CHECK-NOLOB-NEXT:   renamable $r2 = tLDRi renamable $r0, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.info2)214  ; CHECK-NOLOB-NEXT:   renamable $r2 = tLDRHi killed renamable $r2, 1, 14 /* CC::al */, $noreg :: (load (s16) from %ir.idx3)215  ; CHECK-NOLOB-NEXT:   tCMPr killed renamable $r2, renamable $r1, 14 /* CC::al */, $noreg, implicit-def $cpsr216  ; CHECK-NOLOB-NEXT:   t2IT 0, 8, implicit-def $itstate217  ; CHECK-NOLOB-NEXT:   tBX_RET 0 /* CC::eq */, killed $cpsr, implicit $r0, implicit killed $itstate218  ; CHECK-NOLOB-NEXT: {{  $}}219  ; CHECK-NOLOB-NEXT: bb.4.while.body:220  ; CHECK-NOLOB-NEXT:   successors: %bb.9(0x04000000), %bb.3(0x7c000000)221  ; CHECK-NOLOB-NEXT:   liveins: $r0, $r1222  ; CHECK-NOLOB-NEXT: {{  $}}223  ; CHECK-NOLOB-NEXT:   renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.next4)224  ; CHECK-NOLOB-NEXT:   tCMPi8 renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr225  ; CHECK-NOLOB-NEXT:   tBcc %bb.3, 0 /* CC::eq */, killed $cpsr226  ; CHECK-NOLOB-NEXT:   tB %bb.9, 14 /* CC::al */, $noreg227  ; CHECK-NOLOB-NEXT: {{  $}}228  ; CHECK-NOLOB-NEXT: bb.5.while.cond9.preheader:229  ; CHECK-NOLOB-NEXT:   successors: %bb.9(0x30000000), %bb.6(0x50000000)230  ; CHECK-NOLOB-NEXT:   liveins: $r0, $r1231  ; CHECK-NOLOB-NEXT: {{  $}}232  ; CHECK-NOLOB-NEXT:   tCBZ renamable $r0, %bb.9233  ; CHECK-NOLOB-NEXT: {{  $}}234  ; CHECK-NOLOB-NEXT: bb.6.land.rhs11.lr.ph:235  ; CHECK-NOLOB-NEXT:   successors: %bb.7(0x80000000)236  ; CHECK-NOLOB-NEXT:   liveins: $r0, $r1237  ; CHECK-NOLOB-NEXT: {{  $}}238  ; CHECK-NOLOB-NEXT:   renamable $r1 = t2LDRSHi12 killed renamable $r1, 0, 14 /* CC::al */, $noreg :: (load (s16) from %ir.data16143)239  ; CHECK-NOLOB-NEXT: {{  $}}240  ; CHECK-NOLOB-NEXT: bb.7.land.rhs11:241  ; CHECK-NOLOB-NEXT:   successors: %bb.10(0x04000000), %bb.8(0x7c000000)242  ; CHECK-NOLOB-NEXT:   liveins: $r0, $r1243  ; CHECK-NOLOB-NEXT: {{  $}}244  ; CHECK-NOLOB-NEXT:   renamable $r2 = tLDRi renamable $r0, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.info12)245  ; CHECK-NOLOB-NEXT:   renamable $r2 = tLDRBi killed renamable $r2, 0, 14 /* CC::al */, $noreg :: (load (s8) from %ir.data165, align 2)246  ; CHECK-NOLOB-NEXT:   tCMPr killed renamable $r2, renamable $r1, 14 /* CC::al */, $noreg, implicit-def $cpsr247  ; CHECK-NOLOB-NEXT:   tBcc %bb.10, 0 /* CC::eq */, killed $cpsr248  ; CHECK-NOLOB-NEXT: {{  $}}249  ; CHECK-NOLOB-NEXT: bb.8.while.body19:250  ; CHECK-NOLOB-NEXT:   successors: %bb.9(0x04000000), %bb.7(0x7c000000)251  ; CHECK-NOLOB-NEXT:   liveins: $r0, $r1252  ; CHECK-NOLOB-NEXT: {{  $}}253  ; CHECK-NOLOB-NEXT:   renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.next206)254  ; CHECK-NOLOB-NEXT:   tCMPi8 renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr255  ; CHECK-NOLOB-NEXT:   tBcc %bb.7, 1 /* CC::ne */, killed $cpsr256  ; CHECK-NOLOB-NEXT: {{  $}}257  ; CHECK-NOLOB-NEXT: bb.9:258  ; CHECK-NOLOB-NEXT:   successors: %bb.10(0x80000000)259  ; CHECK-NOLOB-NEXT: {{  $}}260  ; CHECK-NOLOB-NEXT:   renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg261  ; CHECK-NOLOB-NEXT: {{  $}}262  ; CHECK-NOLOB-NEXT: bb.10.return:263  ; CHECK-NOLOB-NEXT:   liveins: $r0264  ; CHECK-NOLOB-NEXT: {{  $}}265  ; CHECK-NOLOB-NEXT:   tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0266  bb.0.entry:267    successors: %bb.5(0x50000000), %bb.1(0x30000000)268    liveins: $r0, $r1269 270    renamable $r2 = t2LDRSHi12 renamable $r1, 2, 14 /* CC::al */, $noreg :: (load (s16) from %ir.idx)271    t2CMPri renamable $r2, -1, 14 /* CC::al */, $noreg, implicit-def $cpsr272    t2Bcc %bb.1, 13 /* CC::le */, killed $cpsr273 274  bb.5.while.cond.preheader:275    successors: %bb.9(0x30000000), %bb.6(0x50000000)276    liveins: $r0, $r2277 278    tCMPi8 renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr279    t2Bcc %bb.9, 0 /* CC::eq */, killed $cpsr280 281  bb.6.land.rhs.preheader:282    successors: %bb.7(0x80000000)283    liveins: $r0, $r2284 285    renamable $r1 = tUXTH killed renamable $r2, 14 /* CC::al */, $noreg286 287  bb.7.land.rhs:288    successors: %bb.8(0x80000000)289    liveins: $r0, $r1290 291    renamable $r2 = tLDRi renamable $r0, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.info2)292    renamable $r2 = tLDRHi killed renamable $r2, 1, 14 /* CC::al */, $noreg :: (load (s16) from %ir.idx3)293    tCMPr killed renamable $r2, renamable $r1, 14 /* CC::al */, $noreg, implicit-def $cpsr294    t2IT 0, 8, implicit-def $itstate295    tBX_RET 0 /* CC::eq */, killed $cpsr, implicit $r0, implicit killed $itstate296 297  bb.8.while.body:298    successors: %bb.9(0x04000000), %bb.7(0x7c000000)299    liveins: $r0, $r1300 301    renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.next4)302    tCMPi8 renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr303    t2Bcc %bb.7, 0 /* CC::eq */, killed $cpsr304    t2B %bb.9, 14 /* CC::al */, $noreg305 306  bb.1.while.cond9.preheader:307    successors: %bb.9(0x30000000), %bb.2(0x50000000)308    liveins: $r0, $r1309 310    tCMPi8 renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr311    t2Bcc %bb.9, 0 /* CC::eq */, killed $cpsr312 313  bb.2.land.rhs11.lr.ph:314    successors: %bb.3(0x80000000)315    liveins: $r0, $r1316 317    renamable $r1 = t2LDRSHi12 killed renamable $r1, 0, 14 /* CC::al */, $noreg :: (load (s16) from %ir.data16143)318 319  bb.3.land.rhs11:320    successors: %bb.10(0x04000000), %bb.4(0x7c000000)321    liveins: $r0, $r1322 323    renamable $r2 = tLDRi renamable $r0, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.info12)324    renamable $r2 = tLDRBi killed renamable $r2, 0, 14 /* CC::al */, $noreg :: (load (s8) from %ir.data165, align 2)325    tCMPr killed renamable $r2, renamable $r1, 14 /* CC::al */, $noreg, implicit-def $cpsr326    t2Bcc %bb.10, 0 /* CC::eq */, killed $cpsr327 328  bb.4.while.body19:329    successors: %bb.9(0x04000000), %bb.3(0x7c000000)330    liveins: $r0, $r1331 332    renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.next206)333    tCMPi8 renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr334    t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr335 336  bb.9:337    successors: %bb.10(0x80000000)338 339    renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg340 341  bb.10.return:342    liveins: $r0343 344    tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0345 346...347