136 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
| # RUN: llc -mtriple=x86_64-- -run-pass branch-folder -O3 -o - %s | FileCheck %s
 | |
| 
 | |
| ---
 | |
| name:            test1a
 | |
| body:             |
 | |
|   ; CHECK-LABEL: name: test1a
 | |
|   ; CHECK: bb.0:
 | |
|   ; CHECK:   TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
 | |
|   ; CHECK:   JCC_1 %bb.2, 5, implicit $eflags
 | |
|   ; CHECK: bb.1:
 | |
|   ; CHECK:   successors: %bb.2(0x80000000)
 | |
|   ; CHECK:   MOV8mi $r12, 1, $noreg, 0, $noreg, 0
 | |
|   ; CHECK-NOT: RET
 | |
|   ; CHECK: bb.2:
 | |
|   ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|   ; CHECK:   RET 0
 | |
|   bb.0:
 | |
|     TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
 | |
|     JCC_1 %bb.2, 5, implicit killed $eflags
 | |
| 
 | |
|   bb.1:
 | |
|     MOV8mi $r12, 1, $noreg, 0, $noreg, 0
 | |
|     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|     RET 0
 | |
| 
 | |
|   bb.2:
 | |
|     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|     RET 0  
 | |
| ...
 | |
| 
 | |
| ---
 | |
| name:            test1b
 | |
| body:             |
 | |
| 
 | |
|   ; Verify that we get the same rewrites as in test1a when adding some
 | |
|   ; DBG_VALUE instructions in the mix.
 | |
|   ;
 | |
|   ; CHECK-LABEL: name: test1b
 | |
|   ; CHECK: bb.0:
 | |
|   ; CHECK:   TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
 | |
|   ; CHECK:   JCC_1 %bb.2, 5, implicit $eflags
 | |
|   ; CHECK: bb.1:
 | |
|   ; CHECK:   successors: %bb.2(0x80000000)
 | |
|   ; CHECK:   MOV8mi $r12, 1, $noreg, 0, $noreg, 0
 | |
|   ; CHECK-NOT: RET
 | |
|   ; CHECK: bb.2:
 | |
|   ; CHECK:   DBG_VALUE
 | |
|   ; CHECK:   DBG_VALUE
 | |
|   ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|   ; CHECK:   RET 0
 | |
|   bb.0:
 | |
|     TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
 | |
|     JCC_1 %bb.2, 5, implicit killed $eflags
 | |
| 
 | |
|   bb.1:
 | |
|     MOV8mi $r12, 1, $noreg, 0, $noreg, 0
 | |
|     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|     RET 0
 | |
| 
 | |
|   bb.2:
 | |
|     DBG_VALUE
 | |
|     DBG_VALUE
 | |
|     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|     RET 0
 | |
| ...
 | |
| 
 | |
| ---
 | |
| name:            test2a
 | |
| body:             |
 | |
|   ; CFI instruction currently prevents the rewrite here (although technically
 | |
|   ; I suppose that branch folding could let bb.1 fallthrough into bb.2 here).
 | |
|   ;
 | |
|   ; CHECK-LABEL: name: test2a
 | |
|   ; CHECK: bb.0:
 | |
|   ; CHECK:   TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
 | |
|   ; CHECK:   JCC_1 %bb.2, 5, implicit killed $eflags
 | |
|   ; CHECK: bb.1:
 | |
|   ; CHECK:   MOV8mi $r12, 1, $noreg, 0, $noreg, 0
 | |
|   ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|   ; CHECK:   RET 0
 | |
|   ; CHECK: bb.2:
 | |
|   ; CHECK:   CFI_INSTRUCTION def_cfa_offset 8
 | |
|   ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|   ; CHECK:   RET 0
 | |
|   bb.0:
 | |
|     TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
 | |
|     JCC_1 %bb.2, 5, implicit killed $eflags
 | |
| 
 | |
|   bb.1:
 | |
|     MOV8mi $r12, 1, $noreg, 0, $noreg, 0
 | |
|     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|     RET 0
 | |
| 
 | |
|   bb.2:
 | |
|     CFI_INSTRUCTION def_cfa_offset 8
 | |
|     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|     RET 0  
 | |
| ...
 | |
| 
 | |
| ---
 | |
| name:            test2b
 | |
| body:             |
 | |
|   ; Verify that we get the same rewrites as in test1a when adding some
 | |
|   ; DBG_VALUE instructions in the mix.
 | |
|   ;
 | |
|   ; CHECK-LABEL: name: test2b
 | |
|   ; CHECK: bb.0:
 | |
|   ; CHECK:   TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
 | |
|   ; CHECK:   JCC_1 %bb.2, 5, implicit killed $eflags
 | |
|   ; CHECK: bb.1:
 | |
|   ; CHECK:   MOV8mi $r12, 1, $noreg, 0, $noreg, 0
 | |
|   ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|   ; CHECK:   RET 0
 | |
|   ; CHECK: bb.2:
 | |
|   ; CHECK:   DBG_VALUE
 | |
|   ; CHECK:   CFI_INSTRUCTION def_cfa_offset 8
 | |
|   ; CHECK:   DBG_VALUE
 | |
|   ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|   ; CHECK:   RET 0
 | |
|   bb.0:
 | |
|     TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
 | |
|     JCC_1 %bb.2, 5, implicit killed $eflags
 | |
| 
 | |
|   bb.1:
 | |
|     MOV8mi $r12, 1, $noreg, 0, $noreg, 0
 | |
|     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|     RET 0
 | |
| 
 | |
|   bb.2:
 | |
|     DBG_VALUE
 | |
|     CFI_INSTRUCTION def_cfa_offset 8
 | |
|     DBG_VALUE
 | |
|     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
 | |
|     RET 0  
 | |
| ...
 |