brintos

brintos / llvm-project-archived public Read only

0
0
Text · 29.9 KiB · 00b880a Raw
1192 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -run-pass x86-fixup-LEAs -mtriple=x86_64-gnu-unknown -verify-machineinstrs -mcpu=corei7-avx -o - %s | FileCheck %s3--- |4  ; ModuleID = 'lea-2.ll'5  source_filename = "lea-2.ll"6  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"7  ;generated using: llc -stop-after x86-pad-short-functions lea-2.ll > leaFinxup64.mir8 9  ;testleaadd_64_32_1: 3 operands LEA64_32r cannot be replaced with 2 add instructions10  ; but can be replaced with 1 lea + 1 add11  define i32 @testleaadd_64_32_1() {12    ret i32 013  }14 15  ;testleaadd_rbp_64_32_1: 3 operands LEA64_32r cannot be replaced with 2 add instructions16  ; where the base is rbp/r13/ebp register but it can be replaced with 1 lea + 1 add17  define i32 @testleaadd_rbp_64_32_1() {18    ret i32 019  }20 21  ;test1lea_rbp_64_32_1: 2 operands LEA64_32r where base register is rbp/r13/ebp and can not22  ; be replaced with an add instruction but can be replaced with 1 lea instruction23  define i32 @test1lea_rbp_64_32_1() {24    ret i32 025  }26 27  ;test2add_64: 3 operands LEA64r that can be replaced with 2 add instructions28  define i32 @test2add_64() {29    ret i32 030  }31 32  ;test2add_rbp_64: 3 operands LEA64r that can be replaced with 2 add instructions33  ; where the base is rbp/r13/ebp register34  define i32 @test2add_rbp_64() {35    ret i32 036  }37 38  ;test1add_rbp_64: 2 operands LEA64r where base register is rbp/r13/ebp and can be replaced39  ; with an add instruction40  define i32 @test1add_rbp_64() {41    ret i32 042  }43 44  ;testleaadd_64_32: 3 operands LEA64_32r that can be replaced with 1 lea 1 add instructions45  define i32 @testleaadd_64_32() {46    ret i32 047  }48 49  ;testleaadd_rbp_64_32: 3 operands LEA64_32r that can be replaced with 1 lea 1 add instructions50  ; where the base is rbp/r13/ebp register51  define i32 @testleaadd_rbp_64_32() {52    ret i32 053  }54 55  ;test1lea_rbp_64_32: 2 operands LEA64_32r where base register is rbp/r13/ebp and can be replaced56  ; with a lea instruction57  define i32 @test1lea_rbp_64_32() {58    ret i32 059  }60 61  ;testleaadd_64: 3 operands LEA64r that can be replaced with 1 lea 1 add instructions62  define i32 @testleaadd_64() {63    ret i32 064  }65 66  ;testleaadd_rbp_64: 3 operands LEA64r that can be replaced with 1 lea 1 add instructions67  ; where the base is rbp/r13/ebp register68  define i32 @testleaadd_rbp_64() {69    ret i32 070  }71 72  ;test1lea_rbp_64: 2 operands LEA64r wher base register is rbp/r13/ebp and can be replaced73  ; with a lea instruction74  define i32 @test1lea_rbp_64() {75    ret i32 076  }77 78  ;test8: dst = base & scale!=1, can't optimize79  define i32 @test8() {80      ret i32 081  }82 83  ;testleaaddi32_64_32: 3 operands LEA64_32r that can be replaced with 1 lea + 1 add instructions where84  ; ADD64ri32 is chosen85  define i32 @testleaaddi32_64_32() {86    ret i32 087  }88 89  ;test_leab_rbp_leais_64_32: 2 operands LEA64_32r that can be replaced with LEA_IS form90  ; where the base is rbp/r13/ebp register91  define i32 @test_leab_rbp_leais_64_32() {92    ret i32 093  }94 95  ;test_leabi_rbp_leais_64_32: 3 operands LEA64_32r that can be replaced with LEA_IS form96  ; where the base and the index are ebp register and there is offset97  define i32 @test_leabi_rbp_leais_64_32() {98    ret i32 099  }100 101  ;testleaadd_rbp_index2_64_32: 3 operands LEA64_32r that cannot replaced with 1 lea 1 add instructions102  ; where the base and the index are ebp register and there is scale103  define i32 @testleaadd_rbp_index2_64_32() {104    ret i32 0105  }106 107  ;test2addi32_64: 3 operands LEA64r that can be replaced with 2 add instructions where ADD64ri32108  ; is chosen109  define i32 @test2addi32_64() {110    ret i32 0111  }112 113  ;test_leab_rbp_leais_64: 2 operands LEA64r that can be replaced with LEA_IS form114  ; where the base is rbp/r13/ebp register115  define i32 @test_leab_rbp_leais_64() {116    ret i32 0117  }118 119  ;test_leabi_rbp_leais_64: 3 operands LEA64r that can be replaced with LEA_IS form120  ; where the base and the index are ebp register and there is offset121  define i32 @test_leabi_rbp_leais_64() {122    ret i32 0123  }124 125  ;testleaadd_rbp_index2_64: 3 operands LEA64r that can be replaced with 1 lea 1 add instructions126  ; where the base and the index are ebp register and there is scale127  define i32 @testleaadd_rbp_index2_64() {128    ret i32 0129  }130 131  ;test_skip_opt_64: 3 operands LEA64r that can not be replaced with 2 instructions132  define i32 @test_skip_opt_64() {133    ret i32 0134  }135 136  ;test_skip_eflags_64: LEA64r that cannot be replaced since its not safe to clobber eflags137  define i32 @test_skip_eflags_64() {138    ret i32 0139  }140 141  ;test_skip_opt_64_32: 3 operands LEA64_32r that can not be replaced with 2 instructions142  define i32 @test_skip_opt_64_32() {143    ret i32 0144  }145 146  ;test_skip_eflags_64_32: LEA64_32r that cannot be replaced since its not safe to clobber eflags147  define i32 @test_skip_eflags_64_32() {148    ret i32 0149  }150 151  define i32 @pr43758() {152    ret i32 0153  }154 155 156...157---158name:            testleaadd_64_32_1159alignment:       16160exposesReturnsTwice: false161legalized:       false162regBankSelected: false163selected:        false164tracksRegLiveness: true165liveins:166  - { reg: '$rax' }167  - { reg: '$rbp' }168frameInfo:169  isFrameAddressTaken: false170  isReturnAddressTaken: false171  hasStackMap:     false172  hasPatchPoint:   false173  stackSize:       0174  offsetAdjustment: 0175  maxAlignment:    0176  adjustsStack:    false177  hasCalls:        false178  maxCallFrameSize: 0179  hasOpaqueSPAdjustment: false180  hasVAStart:      false181  hasMustTailInVarArgFunc: false182body:             |183  bb.0 (%ir-block.0):184    liveins: $rax, $rbp185 186    ; CHECK-LABEL: name: testleaadd_64_32_1187    ; CHECK: liveins: $rax, $rbp188    ; CHECK: $eax = ADD32rr $eax, $ebp, implicit-def $eflags, implicit $rax, implicit $rbp189    ; CHECK: $eax = ADD32ri $eax, -5, implicit-def $eflags190    ; CHECK: RET64 $eax191    $eax = LEA64_32r killed $rax, 1, killed $rbp, -5, $noreg192    RET64 $eax193 194...195---196name:            testleaadd_rbp_64_32_1197alignment:       16198exposesReturnsTwice: false199legalized:       false200regBankSelected: false201selected:        false202tracksRegLiveness: true203liveins:204  - { reg: '$rax' }205  - { reg: '$rbp' }206frameInfo:207  isFrameAddressTaken: false208  isReturnAddressTaken: false209  hasStackMap:     false210  hasPatchPoint:   false211  stackSize:       0212  offsetAdjustment: 0213  maxAlignment:    0214  adjustsStack:    false215  hasCalls:        false216  maxCallFrameSize: 0217  hasOpaqueSPAdjustment: false218  hasVAStart:      false219  hasMustTailInVarArgFunc: false220body:             |221  bb.0 (%ir-block.0):222    liveins: $rax, $rbp223 224    ; CHECK-LABEL: name: testleaadd_rbp_64_32_1225    ; CHECK: liveins: $rax, $rbp226    ; CHECK: $ebp = ADD32rr $ebp, $eax, implicit-def $eflags, implicit $rbp, implicit $rax227    ; CHECK: $ebp = ADD32ri $ebp, -5, implicit-def $eflags228    ; CHECK: RET64 $ebp229    $ebp = LEA64_32r killed $rbp, 1, killed $rax, -5, $noreg230    RET64 $ebp231 232...233---234name:            test1lea_rbp_64_32_1235alignment:       16236exposesReturnsTwice: false237legalized:       false238regBankSelected: false239selected:        false240tracksRegLiveness: true241liveins:242  - { reg: '$rax' }243  - { reg: '$rbp' }244frameInfo:245  isFrameAddressTaken: false246  isReturnAddressTaken: false247  hasStackMap:     false248  hasPatchPoint:   false249  stackSize:       0250  offsetAdjustment: 0251  maxAlignment:    0252  adjustsStack:    false253  hasCalls:        false254  maxCallFrameSize: 0255  hasOpaqueSPAdjustment: false256  hasVAStart:      false257  hasMustTailInVarArgFunc: false258body:             |259  bb.0 (%ir-block.0):260    liveins: $rax, $rbp261 262    ; CHECK-LABEL: name: test1lea_rbp_64_32_1263    ; CHECK: liveins: $rax, $rbp264    ; CHECK: $ebp = ADD32rr $ebp, $eax, implicit-def $eflags, implicit $rbp, implicit $rax265    ; CHECK: RET64 $ebp266    $ebp = LEA64_32r killed $rbp, 1, killed $rax, 0, $noreg267    RET64 $ebp268 269...270---271name:            test2add_64272alignment:       16273exposesReturnsTwice: false274legalized:       false275regBankSelected: false276selected:        false277tracksRegLiveness: true278liveins:279  - { reg: '$rax' }280  - { reg: '$rbp' }281frameInfo:282  isFrameAddressTaken: false283  isReturnAddressTaken: false284  hasStackMap:     false285  hasPatchPoint:   false286  stackSize:       0287  offsetAdjustment: 0288  maxAlignment:    0289  adjustsStack:    false290  hasCalls:        false291  maxCallFrameSize: 0292  hasOpaqueSPAdjustment: false293  hasVAStart:      false294  hasMustTailInVarArgFunc: false295body:             |296  bb.0 (%ir-block.0):297    liveins: $rax, $rbp298 299    ; CHECK-LABEL: name: test2add_64300    ; CHECK: liveins: $rax, $rbp301    ; CHECK: $rax = ADD64rr $rax, $rbp, implicit-def $eflags302    ; CHECK: $rax = ADD64ri32 $rax, -5, implicit-def $eflags303    ; CHECK: RET64 $eax304    $rax = LEA64r killed $rax, 1, killed $rbp, -5, $noreg305    RET64 $eax306 307...308---309name:            test2add_rbp_64310alignment:       16311exposesReturnsTwice: false312legalized:       false313regBankSelected: false314selected:        false315tracksRegLiveness: true316liveins:317  - { reg: '$rax' }318  - { reg: '$rbp' }319frameInfo:320  isFrameAddressTaken: false321  isReturnAddressTaken: false322  hasStackMap:     false323  hasPatchPoint:   false324  stackSize:       0325  offsetAdjustment: 0326  maxAlignment:    0327  adjustsStack:    false328  hasCalls:        false329  maxCallFrameSize: 0330  hasOpaqueSPAdjustment: false331  hasVAStart:      false332  hasMustTailInVarArgFunc: false333body:             |334  bb.0 (%ir-block.0):335    liveins: $rax, $rbp336 337    ; CHECK-LABEL: name: test2add_rbp_64338    ; CHECK: liveins: $rax, $rbp339    ; CHECK: $rbp = ADD64rr $rbp, $rax, implicit-def $eflags340    ; CHECK: $rbp = ADD64ri32 $rbp, -5, implicit-def $eflags341    ; CHECK: RET64 $ebp342    $rbp = LEA64r killed $rbp, 1, killed $rax, -5, $noreg343    RET64 $ebp344 345...346---347name:            test1add_rbp_64348alignment:       16349exposesReturnsTwice: false350legalized:       false351regBankSelected: false352selected:        false353tracksRegLiveness: true354liveins:355  - { reg: '$rax' }356  - { reg: '$rbp' }357frameInfo:358  isFrameAddressTaken: false359  isReturnAddressTaken: false360  hasStackMap:     false361  hasPatchPoint:   false362  stackSize:       0363  offsetAdjustment: 0364  maxAlignment:    0365  adjustsStack:    false366  hasCalls:        false367  maxCallFrameSize: 0368  hasOpaqueSPAdjustment: false369  hasVAStart:      false370  hasMustTailInVarArgFunc: false371body:             |372  bb.0 (%ir-block.0):373    liveins: $rax, $rbp374 375    ; CHECK-LABEL: name: test1add_rbp_64376    ; CHECK: liveins: $rax, $rbp377    ; CHECK: $rbp = ADD64rr $rbp, $rax, implicit-def $eflags378    ; CHECK: RET64 $ebp379    $rbp = LEA64r killed $rbp, 1, killed $rax, 0, $noreg380    RET64 $ebp381 382...383---384name:            testleaadd_64_32385alignment:       16386exposesReturnsTwice: false387legalized:       false388regBankSelected: false389selected:        false390tracksRegLiveness: true391liveins:392  - { reg: '$rax' }393  - { reg: '$rbp' }394  - { reg: '$rbx' }395frameInfo:396  isFrameAddressTaken: false397  isReturnAddressTaken: false398  hasStackMap:     false399  hasPatchPoint:   false400  stackSize:       0401  offsetAdjustment: 0402  maxAlignment:    0403  adjustsStack:    false404  hasCalls:        false405  maxCallFrameSize: 0406  hasOpaqueSPAdjustment: false407  hasVAStart:      false408  hasMustTailInVarArgFunc: false409body:             |410  bb.0 (%ir-block.0):411    liveins: $rax, $rbp412 413    ; CHECK-LABEL: name: testleaadd_64_32414    ; CHECK: liveins: $rax, $rbp415    ; CHECK: $ebx = LEA64_32r killed $rax, 1, killed $rbp, 0, $noreg416    ; CHECK: $ebx = ADD32ri $ebx, -5, implicit-def $eflags417    ; CHECK: RET64 $ebx418    $ebx = LEA64_32r killed $rax, 1, killed $rbp, -5, $noreg419    RET64 $ebx420 421...422---423name:            testleaadd_rbp_64_32424alignment:       16425exposesReturnsTwice: false426legalized:       false427regBankSelected: false428selected:        false429tracksRegLiveness: true430liveins:431  - { reg: '$rax' }432  - { reg: '$rbp' }433  - { reg: '$rbx' }434frameInfo:435  isFrameAddressTaken: false436  isReturnAddressTaken: false437  hasStackMap:     false438  hasPatchPoint:   false439  stackSize:       0440  offsetAdjustment: 0441  maxAlignment:    0442  adjustsStack:    false443  hasCalls:        false444  maxCallFrameSize: 0445  hasOpaqueSPAdjustment: false446  hasVAStart:      false447  hasMustTailInVarArgFunc: false448body:             |449  bb.0 (%ir-block.0):450    liveins: $rax, $rbp451 452    ; CHECK-LABEL: name: testleaadd_rbp_64_32453    ; CHECK: liveins: $rax, $rbp454    ; CHECK: $ebx = LEA64_32r killed $rax, 1, killed $rbp, 0, $noreg455    ; CHECK: $ebx = ADD32ri $ebx, -5, implicit-def $eflags456    ; CHECK: RET64 $ebx457    $ebx = LEA64_32r killed $rbp, 1, killed $rax, -5, $noreg458    RET64 $ebx459 460...461---462name:            test1lea_rbp_64_32463alignment:       16464exposesReturnsTwice: false465legalized:       false466regBankSelected: false467selected:        false468tracksRegLiveness: true469liveins:470  - { reg: '$rax' }471  - { reg: '$rbp' }472  - { reg: '$rbx' }473frameInfo:474  isFrameAddressTaken: false475  isReturnAddressTaken: false476  hasStackMap:     false477  hasPatchPoint:   false478  stackSize:       0479  offsetAdjustment: 0480  maxAlignment:    0481  adjustsStack:    false482  hasCalls:        false483  maxCallFrameSize: 0484  hasOpaqueSPAdjustment: false485  hasVAStart:      false486  hasMustTailInVarArgFunc: false487body:             |488  bb.0 (%ir-block.0):489    liveins: $rax, $rbp490 491    ; CHECK-LABEL: name: test1lea_rbp_64_32492    ; CHECK: liveins: $rax, $rbp493    ; CHECK: $ebx = LEA64_32r killed $rax, 1, killed $rbp, 0, $noreg494    ; CHECK: RET64 $ebx495    $ebx = LEA64_32r killed $rbp, 1, killed $rax, 0, $noreg496    RET64 $ebx497 498...499---500name:            testleaadd_64501alignment:       16502exposesReturnsTwice: false503legalized:       false504regBankSelected: false505selected:        false506tracksRegLiveness: true507liveins:508  - { reg: '$rax' }509  - { reg: '$rbp' }510  - { reg: '$rbx' }511frameInfo:512  isFrameAddressTaken: false513  isReturnAddressTaken: false514  hasStackMap:     false515  hasPatchPoint:   false516  stackSize:       0517  offsetAdjustment: 0518  maxAlignment:    0519  adjustsStack:    false520  hasCalls:        false521  maxCallFrameSize: 0522  hasOpaqueSPAdjustment: false523  hasVAStart:      false524  hasMustTailInVarArgFunc: false525body:             |526  bb.0 (%ir-block.0):527    liveins: $rax, $rbp528 529    ; CHECK-LABEL: name: testleaadd_64530    ; CHECK: liveins: $rax, $rbp531    ; CHECK: $rbx = LEA64r killed $rax, 1, killed $rbp, 0, $noreg532    ; CHECK: $rbx = ADD64ri32 $rbx, -5, implicit-def $eflags533    ; CHECK: RET64 $ebx534    $rbx = LEA64r killed $rax, 1, killed $rbp, -5, $noreg535    RET64 $ebx536 537...538---539name:            testleaadd_rbp_64540alignment:       16541exposesReturnsTwice: false542legalized:       false543regBankSelected: false544selected:        false545tracksRegLiveness: true546liveins:547  - { reg: '$rax' }548  - { reg: '$rbp' }549  - { reg: '$rbx' }550frameInfo:551  isFrameAddressTaken: false552  isReturnAddressTaken: false553  hasStackMap:     false554  hasPatchPoint:   false555  stackSize:       0556  offsetAdjustment: 0557  maxAlignment:    0558  adjustsStack:    false559  hasCalls:        false560  maxCallFrameSize: 0561  hasOpaqueSPAdjustment: false562  hasVAStart:      false563  hasMustTailInVarArgFunc: false564body:             |565  bb.0 (%ir-block.0):566    liveins: $rax, $rbp567 568    ; CHECK-LABEL: name: testleaadd_rbp_64569    ; CHECK: liveins: $rax, $rbp570    ; CHECK: $rbx = LEA64r killed $rax, 1, killed $rbp, 0, $noreg571    ; CHECK: $rbx = ADD64ri32 $rbx, -5, implicit-def $eflags572    ; CHECK: RET64 $ebx573    $rbx = LEA64r killed $rbp, 1, killed $rax, -5, $noreg574    RET64 $ebx575 576...577---578name:            test1lea_rbp_64579alignment:       16580exposesReturnsTwice: false581legalized:       false582regBankSelected: false583selected:        false584tracksRegLiveness: true585liveins:586  - { reg: '$rax' }587  - { reg: '$rbp' }588  - { reg: '$rbx' }589frameInfo:590  isFrameAddressTaken: false591  isReturnAddressTaken: false592  hasStackMap:     false593  hasPatchPoint:   false594  stackSize:       0595  offsetAdjustment: 0596  maxAlignment:    0597  adjustsStack:    false598  hasCalls:        false599  maxCallFrameSize: 0600  hasOpaqueSPAdjustment: false601  hasVAStart:      false602  hasMustTailInVarArgFunc: false603body:             |604  bb.0 (%ir-block.0):605    liveins: $rax, $rbp606 607    ; CHECK-LABEL: name: test1lea_rbp_64608    ; CHECK: liveins: $rax, $rbp609    ; CHECK: $rbx = LEA64r killed $rax, 1, killed $rbp, 0, $noreg610    ; CHECK: RET64 $ebx611    $rbx = LEA64r killed $rbp, 1, killed $rax, 0, $noreg612    RET64 $ebx613 614...615---616name:            test8617alignment:       16618exposesReturnsTwice: false619legalized:       false620regBankSelected: false621selected:        false622tracksRegLiveness: true623liveins:624  - { reg: '$rdi' }625  - { reg: '$rbp' }626frameInfo:627  isFrameAddressTaken: false628  isReturnAddressTaken: false629  hasStackMap:     false630  hasPatchPoint:   false631  stackSize:       0632  offsetAdjustment: 0633  maxAlignment:    0634  adjustsStack:    false635  hasCalls:        false636  maxCallFrameSize: 0637  hasOpaqueSPAdjustment: false638  hasVAStart:      false639  hasMustTailInVarArgFunc: false640body:             |641  bb.0 (%ir-block.0):642    liveins: $rdi, $rbp643    ; CHECK-LABEL: name: test8644    ; CHECK: liveins: $rdi, $rbp645    ; CHECK: $rbp = KILL $rbp, implicit-def $rbp646    ; CHECK: $r13 = KILL $rdi, implicit-def $r13647    ; CHECK: $r12 = LEA64r $noreg, 2, killed $r13, 5, $noreg648    ; CHECK: $r12 = ADD64rr $r12, killed $rbp, implicit-def $eflags649    ; CHECK: RET64 $r12650    $rbp = KILL $rbp, implicit-def $rbp651    $r13 = KILL $rdi, implicit-def $r13652    $r12 = LEA64r killed $rbp, 2, killed $r13, 5, $noreg653    RET64 $r12654 655...656---657name:            testleaaddi32_64_32658alignment:       16659exposesReturnsTwice: false660legalized:       false661regBankSelected: false662selected:        false663tracksRegLiveness: true664liveins:665  - { reg: '$rax' }666  - { reg: '$rbp' }667frameInfo:668  isFrameAddressTaken: false669  isReturnAddressTaken: false670  hasStackMap:     false671  hasPatchPoint:   false672  stackSize:       0673  offsetAdjustment: 0674  maxAlignment:    0675  adjustsStack:    false676  hasCalls:        false677  maxCallFrameSize: 0678  hasOpaqueSPAdjustment: false679  hasVAStart:      false680  hasMustTailInVarArgFunc: false681body:             |682  bb.0 (%ir-block.0):683    liveins: $rax, $rbp684 685    ; CHECK-LABEL: name: testleaaddi32_64_32686    ; CHECK: liveins: $rax, $rbp687    ; CHECK: $eax = ADD32rr $eax, $ebp, implicit-def $eflags, implicit $rax, implicit $rbp688    ; CHECK: $eax = ADD32ri $eax, 129, implicit-def $eflags689    ; CHECK: RET64 $eax690    $eax = LEA64_32r killed $rax, 1, killed $rbp, 129, $noreg691    RET64 $eax692 693...694---695name:            test_leab_rbp_leais_64_32696alignment:       16697exposesReturnsTwice: false698legalized:       false699regBankSelected: false700selected:        false701tracksRegLiveness: true702liveins:703  - { reg: '$rax' }704  - { reg: '$rbp' }705frameInfo:706  isFrameAddressTaken: false707  isReturnAddressTaken: false708  hasStackMap:     false709  hasPatchPoint:   false710  stackSize:       0711  offsetAdjustment: 0712  maxAlignment:    0713  adjustsStack:    false714  hasCalls:        false715  maxCallFrameSize: 0716  hasOpaqueSPAdjustment: false717  hasVAStart:      false718  hasMustTailInVarArgFunc: false719body:             |720  bb.0 (%ir-block.0):721    liveins: $rax, $rbp, $rbx722 723    ; CHECK-LABEL: name: test_leab_rbp_leais_64_32724    ; CHECK: liveins: $rax, $rbp, $rbx725    ; CHECK: $ebx = LEA64_32r $noreg, 2, killed $rbp, 0, $noreg726    ; CHECK: RET64 $ebx727    $ebx = LEA64_32r killed $rbp, 1, killed $rbp, 0, $noreg728    RET64 $ebx729 730...731---732name:            test_leabi_rbp_leais_64_32733alignment:       16734exposesReturnsTwice: false735legalized:       false736regBankSelected: false737selected:        false738tracksRegLiveness: true739liveins:740  - { reg: '$rbx' }741  - { reg: '$rbp' }742frameInfo:743  isFrameAddressTaken: false744  isReturnAddressTaken: false745  hasStackMap:     false746  hasPatchPoint:   false747  stackSize:       0748  offsetAdjustment: 0749  maxAlignment:    0750  adjustsStack:    false751  hasCalls:        false752  maxCallFrameSize: 0753  hasOpaqueSPAdjustment: false754  hasVAStart:      false755  hasMustTailInVarArgFunc: false756body:             |757  bb.0 (%ir-block.0):758    liveins: $rax, $rbp, $rbx759 760    ; CHECK-LABEL: name: test_leabi_rbp_leais_64_32761    ; CHECK: liveins: $rax, $rbp, $rbx762    ; CHECK: $ebx = LEA64_32r $noreg, 2, killed $rbp, 5, $noreg763    ; CHECK: RET64 $ebx764    $ebx = LEA64_32r killed $rbp, 1, killed $rbp, 5, $noreg765    RET64 $ebx766 767...768---769name:            testleaadd_rbp_index2_64_32770alignment:       16771exposesReturnsTwice: false772legalized:       false773regBankSelected: false774selected:        false775tracksRegLiveness: true776liveins:777  - { reg: '$rbx' }778  - { reg: '$rbp' }779frameInfo:780  isFrameAddressTaken: false781  isReturnAddressTaken: false782  hasStackMap:     false783  hasPatchPoint:   false784  stackSize:       0785  offsetAdjustment: 0786  maxAlignment:    0787  adjustsStack:    false788  hasCalls:        false789  maxCallFrameSize: 0790  hasOpaqueSPAdjustment: false791  hasVAStart:      false792  hasMustTailInVarArgFunc: false793body:             |794  bb.0 (%ir-block.0):795    liveins: $eax, $ebp, $ebx796 797    ; CHECK-LABEL: name: testleaadd_rbp_index2_64_32798    ; CHECK: liveins: $eax, $ebp, $ebx799    ; CHECK: $ebx = LEA64_32r killed $rbp, 4, killed $rbp, 5, $noreg800    ; CHECK: RET64 $ebx801    $ebx = LEA64_32r killed $rbp, 4, killed $rbp, 5, $noreg802    RET64 $ebx803 804...805---806name:            test2addi32_64807alignment:       16808exposesReturnsTwice: false809legalized:       false810regBankSelected: false811selected:        false812tracksRegLiveness: true813liveins:814  - { reg: '$rax' }815  - { reg: '$rbp' }816frameInfo:817  isFrameAddressTaken: false818  isReturnAddressTaken: false819  hasStackMap:     false820  hasPatchPoint:   false821  stackSize:       0822  offsetAdjustment: 0823  maxAlignment:    0824  adjustsStack:    false825  hasCalls:        false826  maxCallFrameSize: 0827  hasOpaqueSPAdjustment: false828  hasVAStart:      false829  hasMustTailInVarArgFunc: false830body:             |831  bb.0 (%ir-block.0):832    liveins: $rax, $rbp833 834    ; CHECK-LABEL: name: test2addi32_64835    ; CHECK: liveins: $rax, $rbp836    ; CHECK: $rax = ADD64rr $rax, $rbp, implicit-def $eflags837    ; CHECK: $rax = ADD64ri32 $rax, 129, implicit-def $eflags838    ; CHECK: RET64 $eax839    $rax = LEA64r killed $rax, 1, killed $rbp, 129, $noreg840    RET64 $eax841 842...843---844name:            test_leab_rbp_leais_64845alignment:       16846exposesReturnsTwice: false847legalized:       false848regBankSelected: false849selected:        false850tracksRegLiveness: true851liveins:852  - { reg: '$rax' }853  - { reg: '$rbp' }854frameInfo:855  isFrameAddressTaken: false856  isReturnAddressTaken: false857  hasStackMap:     false858  hasPatchPoint:   false859  stackSize:       0860  offsetAdjustment: 0861  maxAlignment:    0862  adjustsStack:    false863  hasCalls:        false864  maxCallFrameSize: 0865  hasOpaqueSPAdjustment: false866  hasVAStart:      false867  hasMustTailInVarArgFunc: false868body:             |869  bb.0 (%ir-block.0):870    liveins: $rax, $rbp, $rbx871 872    ; CHECK-LABEL: name: test_leab_rbp_leais_64873    ; CHECK: liveins: $rax, $rbp, $rbx874    ; CHECK: $rbx = LEA64r $noreg, 2, $rbp, 0, $noreg875    ; CHECK: RET64 $ebx876    $rbx = LEA64r killed $rbp, 1, $rbp, 0, $noreg877    RET64 $ebx878 879...880---881name:            test_leabi_rbp_leais_64882alignment:       16883exposesReturnsTwice: false884legalized:       false885regBankSelected: false886selected:        false887tracksRegLiveness: true888liveins:889  - { reg: '$rbx' }890  - { reg: '$rbp' }891frameInfo:892  isFrameAddressTaken: false893  isReturnAddressTaken: false894  hasStackMap:     false895  hasPatchPoint:   false896  stackSize:       0897  offsetAdjustment: 0898  maxAlignment:    0899  adjustsStack:    false900  hasCalls:        false901  maxCallFrameSize: 0902  hasOpaqueSPAdjustment: false903  hasVAStart:      false904  hasMustTailInVarArgFunc: false905body:             |906  bb.0 (%ir-block.0):907    liveins: $rax, $rbp, $rbx908 909    ; CHECK-LABEL: name: test_leabi_rbp_leais_64910    ; CHECK: liveins: $rax, $rbp, $rbx911    ; CHECK: $rbx = LEA64r $noreg, 2, $rbp, 5, $noreg912    ; CHECK: RET64 $ebx913    $rbx = LEA64r $rbp, 1, $rbp, 5, $noreg914    RET64 $ebx915 916...917---918name:            testleaadd_rbp_index2_64919alignment:       16920exposesReturnsTwice: false921legalized:       false922regBankSelected: false923selected:        false924tracksRegLiveness: true925liveins:926  - { reg: '$rbx' }927  - { reg: '$rbp' }928frameInfo:929  isFrameAddressTaken: false930  isReturnAddressTaken: false931  hasStackMap:     false932  hasPatchPoint:   false933  stackSize:       0934  offsetAdjustment: 0935  maxAlignment:    0936  adjustsStack:    false937  hasCalls:        false938  maxCallFrameSize: 0939  hasOpaqueSPAdjustment: false940  hasVAStart:      false941  hasMustTailInVarArgFunc: false942body:             |943  bb.0 (%ir-block.0):944    liveins: $rax, $rbp, $rbx945 946    ; CHECK-LABEL: name: testleaadd_rbp_index2_64947    ; CHECK: liveins: $rax, $rbp, $rbx948    ; CHECK: $rbx = LEA64r $noreg, 4, $rbp, 5, $noreg949    ; CHECK: $rbx = ADD64rr $rbx, $rbp, implicit-def $eflags950    ; CHECK: RET64 $ebx951    $rbx = LEA64r $rbp, 4,  $rbp, 5, $noreg952    RET64 $ebx953 954...955---956name:            test_skip_opt_64957alignment:       16958exposesReturnsTwice: false959legalized:       false960regBankSelected: false961selected:        false962tracksRegLiveness: true963liveins:964  - { reg: '$rbx' }965  - { reg: '$rbp' }966frameInfo:967  isFrameAddressTaken: false968  isReturnAddressTaken: false969  hasStackMap:     false970  hasPatchPoint:   false971  stackSize:       0972  offsetAdjustment: 0973  maxAlignment:    0974  adjustsStack:    false975  hasCalls:        false976  maxCallFrameSize: 0977  hasOpaqueSPAdjustment: false978  hasVAStart:      false979  hasMustTailInVarArgFunc: false980body:             |981  bb.0 (%ir-block.0):982    liveins: $rax, $rbp, $rbx983 984    ; CHECK-LABEL: name: test_skip_opt_64985    ; CHECK: liveins: $rax, $rbp, $rbx986    ; CHECK: $rbp = LEA64r killed $rbp, 4, killed $rbp, 0, $noreg987    ; CHECK: RET64 $ebp988    $rbp = LEA64r killed $rbp, 4, killed $rbp, 0, $noreg989    RET64 $ebp990 991...992---993name:            test_skip_eflags_64994alignment:       16995exposesReturnsTwice: false996legalized:       false997regBankSelected: false998selected:        false999tracksRegLiveness: true1000liveins:1001  - { reg: '$rbp' }1002  - { reg: '$rax' }1003frameInfo:1004  isFrameAddressTaken: false1005  isReturnAddressTaken: false1006  hasStackMap:     false1007  hasPatchPoint:   false1008  stackSize:       01009  offsetAdjustment: 01010  maxAlignment:    01011  adjustsStack:    false1012  hasCalls:        false1013  maxCallFrameSize: 01014  hasOpaqueSPAdjustment: false1015  hasVAStart:      false1016  hasMustTailInVarArgFunc: false1017body:             |1018  ; CHECK-LABEL: name: test_skip_eflags_641019  ; CHECK: bb.0 (%ir-block.0):1020  ; CHECK:   successors: %bb.1(0x80000000)1021  ; CHECK:   liveins: $rax, $rbp, $rbx1022  ; CHECK:   CMP64rr $rax, killed $rbx, implicit-def $eflags1023  ; CHECK:   $rbx = LEA64r killed $rax, 4, killed $rax, 5, $noreg1024  ; CHECK:   JCC_1 %bb.1, 4, implicit $eflags1025  ; CHECK:   RET64 $ebx1026  ; CHECK: bb.1:1027  ; CHECK:   liveins: $rax, $rbp, $rbx1028  ; CHECK:   $rbp = LEA64r killed $rbx, 4, killed $rbx, 0, $noreg1029  ; CHECK:   $rbp = ADD64ri32 $rbp, 5, implicit-def $eflags1030  ; CHECK:   RET64 $ebp1031  bb.0 (%ir-block.0):1032    liveins: $rax, $rbp, $rbx1033 1034    CMP64rr   $rax, killed $rbx, implicit-def $eflags1035    $rbx = LEA64r killed $rax, 4, killed $rax, 5, $noreg1036    JCC_1 %bb.1, 4, implicit $eflags1037    RET64 $ebx1038  bb.1:1039    liveins: $rax, $rbp, $rbx1040    $rbp = LEA64r killed $rbx, 4, killed $rbx, 5, $noreg1041    RET64 $ebp1042 1043...1044---1045name:            test_skip_opt_64_321046alignment:       161047exposesReturnsTwice: false1048legalized:       false1049regBankSelected: false1050selected:        false1051tracksRegLiveness: true1052liveins:1053  - { reg: '$rbx' }1054  - { reg: '$rbp' }1055frameInfo:1056  isFrameAddressTaken: false1057  isReturnAddressTaken: false1058  hasStackMap:     false1059  hasPatchPoint:   false1060  stackSize:       01061  offsetAdjustment: 01062  maxAlignment:    01063  adjustsStack:    false1064  hasCalls:        false1065  maxCallFrameSize: 01066  hasOpaqueSPAdjustment: false1067  hasVAStart:      false1068  hasMustTailInVarArgFunc: false1069body:             |1070  bb.0 (%ir-block.0):1071    liveins: $rax, $rbp, $rbx1072 1073    ; CHECK-LABEL: name: test_skip_opt_64_321074    ; CHECK: liveins: $rax, $rbp, $rbx1075    ; CHECK: $ebp = LEA64_32r killed $rbp, 4, killed $rbp, 0, $noreg1076    ; CHECK: RET64 $ebp1077    $ebp = LEA64_32r killed $rbp, 4, killed $rbp, 0, $noreg1078    RET64 $ebp1079 1080...1081---1082name:            test_skip_eflags_64_321083alignment:       161084exposesReturnsTwice: false1085legalized:       false1086regBankSelected: false1087selected:        false1088tracksRegLiveness: true1089liveins:1090  - { reg: '$rbp' }1091  - { reg: '$rax' }1092frameInfo:1093  isFrameAddressTaken: false1094  isReturnAddressTaken: false1095  hasStackMap:     false1096  hasPatchPoint:   false1097  stackSize:       01098  offsetAdjustment: 01099  maxAlignment:    01100  adjustsStack:    false1101  hasCalls:        false1102  maxCallFrameSize: 01103  hasOpaqueSPAdjustment: false1104  hasVAStart:      false1105  hasMustTailInVarArgFunc: false1106body:             |1107  ; CHECK-LABEL: name: test_skip_eflags_64_321108  ; CHECK: bb.0 (%ir-block.0):1109  ; CHECK:   successors: %bb.1(0x80000000)1110  ; CHECK:   liveins: $rax, $rbp, $rbx1111  ; CHECK:   CMP64rr $rax, killed $rbx, implicit-def $eflags1112  ; CHECK:   $ebx = LEA64_32r killed $rax, 4, killed $rax, 5, $noreg1113  ; CHECK:   JCC_1 %bb.1, 4, implicit $eflags1114  ; CHECK:   RET64 $ebx1115  ; CHECK: bb.1:1116  ; CHECK:   liveins: $rax, $rbp, $rbx1117  ; CHECK:   $ebp = LEA64_32r killed $rbx, 4, killed $rbx, 0, $noreg1118  ; CHECK:   $ebp = ADD32ri $ebp, 5, implicit-def $eflags1119  ; CHECK:   RET64 $ebp1120  bb.0 (%ir-block.0):1121    liveins: $rax, $rbp, $rbx1122 1123    CMP64rr   $rax, killed $rbx, implicit-def $eflags1124    $ebx = LEA64_32r killed $rax, 4, killed $rax, 5, $noreg1125    JCC_1 %bb.1, 4, implicit $eflags1126    RET64 $ebx1127  bb.1:1128    liveins: $rax, $rbp, $rbx1129    $ebp = LEA64_32r killed $rbx, 4, killed $rbx, 5, $noreg1130    RET64 $ebp1131 1132...1133---1134name:            pr437581135alignment:       161136exposesReturnsTwice: false1137legalized:       false1138regBankSelected: false1139selected:        false1140tracksRegLiveness: true1141liveins:1142  - { reg: '$rax' }1143  - { reg: '$rbp' }1144frameInfo:1145  isFrameAddressTaken: false1146  isReturnAddressTaken: false1147  hasStackMap:     false1148  hasPatchPoint:   false1149  stackSize:       01150  offsetAdjustment: 01151  maxAlignment:    01152  adjustsStack:    false1153  hasCalls:        false1154  maxCallFrameSize: 01155  hasOpaqueSPAdjustment: false1156  hasVAStart:      false1157  hasMustTailInVarArgFunc: false1158body:             |1159  bb.0 (%ir-block.0):1160    liveins: $rax, $rbp1161 1162    ; CHECK-LABEL: name: pr437581163    ; CHECK: liveins: $rax, $rbp1164    ; CHECK: DBG_VALUE 0, $noreg1165    ; CHECK: NOOP1166    ; CHECK: NOOP1167    ; CHECK: NOOP1168    ; CHECK: NOOP1169    ; CHECK: $ebp = ADD32rr $ebp, $eax, implicit-def $eflags, implicit $rbp, implicit $rax1170    ; CHECK: NOOP1171    ; CHECK: NOOP1172    ; CHECK: NOOP1173    ; CHECK: NOOP1174    ; CHECK: RET64 $ebp1175    DBG_VALUE 0, $noreg1176    NOOP1177    NOOP1178    NOOP1179    NOOP1180    $ebp = LEA64_32r killed $rbp, 1, killed $rax, 0, $noreg1181    NOOP1182    NOOP1183    NOOP1184    NOOP1185    RET64 $ebp1186 1187...1188...1189 1190 1191 1192