136 lines · plain
1# RUN: llc -mtriple=x86_64-- -run-pass branch-folder -O3 -o - %s | FileCheck %s2 3---4name: test1a5body: |6 ; CHECK-LABEL: name: test1a7 ; CHECK: bb.0:8 ; CHECK: TEST8rr killed renamable $al, renamable $al, implicit-def $eflags9 ; CHECK: JCC_1 %bb.2, 5, implicit $eflags10 ; CHECK: bb.1:11 ; CHECK: successors: %bb.2(0x80000000)12 ; CHECK: MOV8mi $r12, 1, $noreg, 0, $noreg, 013 ; CHECK-NOT: RET14 ; CHECK: bb.2:15 ; CHECK: MOV8mi $r13, 1, $noreg, 0, $noreg, 016 ; CHECK: RET 017 bb.0:18 TEST8rr killed renamable $al, renamable $al, implicit-def $eflags19 JCC_1 %bb.2, 5, implicit killed $eflags20 21 bb.1:22 MOV8mi $r12, 1, $noreg, 0, $noreg, 023 MOV8mi $r13, 1, $noreg, 0, $noreg, 024 RET 025 26 bb.2:27 MOV8mi $r13, 1, $noreg, 0, $noreg, 028 RET 029...30 31---32name: test1b33body: |34 35 ; Verify that we get the same rewrites as in test1a when adding some36 ; DBG_VALUE instructions in the mix.37 ;38 ; CHECK-LABEL: name: test1b39 ; CHECK: bb.0:40 ; CHECK: TEST8rr killed renamable $al, renamable $al, implicit-def $eflags41 ; CHECK: JCC_1 %bb.2, 5, implicit $eflags42 ; CHECK: bb.1:43 ; CHECK: successors: %bb.2(0x80000000)44 ; CHECK: MOV8mi $r12, 1, $noreg, 0, $noreg, 045 ; CHECK-NOT: RET46 ; CHECK: bb.2:47 ; CHECK: DBG_VALUE48 ; CHECK: DBG_VALUE49 ; CHECK: MOV8mi $r13, 1, $noreg, 0, $noreg, 050 ; CHECK: RET 051 bb.0:52 TEST8rr killed renamable $al, renamable $al, implicit-def $eflags53 JCC_1 %bb.2, 5, implicit killed $eflags54 55 bb.1:56 MOV8mi $r12, 1, $noreg, 0, $noreg, 057 MOV8mi $r13, 1, $noreg, 0, $noreg, 058 RET 059 60 bb.2:61 DBG_VALUE62 DBG_VALUE63 MOV8mi $r13, 1, $noreg, 0, $noreg, 064 RET 065...66 67---68name: test2a69body: |70 ; CFI instruction currently prevents the rewrite here (although technically71 ; I suppose that branch folding could let bb.1 fallthrough into bb.2 here).72 ;73 ; CHECK-LABEL: name: test2a74 ; CHECK: bb.0:75 ; CHECK: TEST8rr killed renamable $al, renamable $al, implicit-def $eflags76 ; CHECK: JCC_1 %bb.2, 5, implicit killed $eflags77 ; CHECK: bb.1:78 ; CHECK: MOV8mi $r12, 1, $noreg, 0, $noreg, 079 ; CHECK: MOV8mi $r13, 1, $noreg, 0, $noreg, 080 ; CHECK: RET 081 ; CHECK: bb.2:82 ; CHECK: CFI_INSTRUCTION def_cfa_offset 883 ; CHECK: MOV8mi $r13, 1, $noreg, 0, $noreg, 084 ; CHECK: RET 085 bb.0:86 TEST8rr killed renamable $al, renamable $al, implicit-def $eflags87 JCC_1 %bb.2, 5, implicit killed $eflags88 89 bb.1:90 MOV8mi $r12, 1, $noreg, 0, $noreg, 091 MOV8mi $r13, 1, $noreg, 0, $noreg, 092 RET 093 94 bb.2:95 CFI_INSTRUCTION def_cfa_offset 896 MOV8mi $r13, 1, $noreg, 0, $noreg, 097 RET 098...99 100---101name: test2b102body: |103 ; Verify that we get the same rewrites as in test1a when adding some104 ; DBG_VALUE instructions in the mix.105 ;106 ; CHECK-LABEL: name: test2b107 ; CHECK: bb.0:108 ; CHECK: TEST8rr killed renamable $al, renamable $al, implicit-def $eflags109 ; CHECK: JCC_1 %bb.2, 5, implicit killed $eflags110 ; CHECK: bb.1:111 ; CHECK: MOV8mi $r12, 1, $noreg, 0, $noreg, 0112 ; CHECK: MOV8mi $r13, 1, $noreg, 0, $noreg, 0113 ; CHECK: RET 0114 ; CHECK: bb.2:115 ; CHECK: DBG_VALUE116 ; CHECK: CFI_INSTRUCTION def_cfa_offset 8117 ; CHECK: DBG_VALUE118 ; CHECK: MOV8mi $r13, 1, $noreg, 0, $noreg, 0119 ; CHECK: RET 0120 bb.0:121 TEST8rr killed renamable $al, renamable $al, implicit-def $eflags122 JCC_1 %bb.2, 5, implicit killed $eflags123 124 bb.1:125 MOV8mi $r12, 1, $noreg, 0, $noreg, 0126 MOV8mi $r13, 1, $noreg, 0, $noreg, 0127 RET 0128 129 bb.2:130 DBG_VALUE131 CFI_INSTRUCTION def_cfa_offset 8132 DBG_VALUE133 MOV8mi $r13, 1, $noreg, 0, $noreg, 0134 RET 0135...136