325 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			325 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 | 
						|
; RUN: llc < %s | FileCheck %s
 | 
						|
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
 | 
						|
target triple = "x86_64-apple-darwin10"
 | 
						|
 | 
						|
declare void @f1() nounwind readnone
 | 
						|
declare void @f2() nounwind readnone
 | 
						|
declare void @f3() nounwind readnone
 | 
						|
declare void @f4() nounwind readnone
 | 
						|
declare void @f5() nounwind readnone
 | 
						|
declare void @f6() nounwind readnone
 | 
						|
declare void @f7() nounwind readnone
 | 
						|
declare void @f8() nounwind readnone
 | 
						|
declare void @f9() nounwind readnone
 | 
						|
declare void @f10() nounwind readnone
 | 
						|
declare void @f11() nounwind readnone
 | 
						|
declare void @f12() nounwind readnone
 | 
						|
declare void @f13() nounwind readnone
 | 
						|
declare void @f14() nounwind readnone
 | 
						|
declare void @f15() nounwind readnone
 | 
						|
declare void @f16() nounwind readnone
 | 
						|
declare void @f17() nounwind readnone
 | 
						|
declare void @f18() nounwind readnone
 | 
						|
declare void @f19() nounwind readnone
 | 
						|
declare void @f20() nounwind readnone
 | 
						|
declare void @f21() nounwind readnone
 | 
						|
declare void @f22() nounwind readnone
 | 
						|
declare void @f23() nounwind readnone
 | 
						|
declare void @f24() nounwind readnone
 | 
						|
declare void @f25() nounwind readnone
 | 
						|
declare void @f26() nounwind readnone
 | 
						|
 | 
						|
define internal fastcc i32 @foo(i64 %bar) nounwind ssp {
 | 
						|
; CHECK-LABEL: foo:
 | 
						|
; CHECK:       ## %bb.0: ## %entry
 | 
						|
; CHECK-NEXT:    pushq %rax
 | 
						|
; CHECK-NEXT:    addq $-2, %rdi
 | 
						|
; CHECK-NEXT:    cmpq $25, %rdi
 | 
						|
; CHECK-NEXT:    ja LBB0_2
 | 
						|
; CHECK-NEXT:  ## %bb.1: ## %bb49
 | 
						|
; CHECK-NEXT:    leaq {{.*}}(%rip), %rax
 | 
						|
; CHECK-NEXT:    movslq (%rax,%rdi,4), %rcx
 | 
						|
; CHECK-NEXT:    addq %rax, %rcx
 | 
						|
; CHECK-NEXT:    jmpq *%rcx
 | 
						|
; CHECK-NEXT:  LBB0_3: ## %RRETURN_6
 | 
						|
; CHECK-NEXT:    callq _f2
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_2: ## %RETURN
 | 
						|
; CHECK-NEXT:    callq _f1
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_4: ## %RRETURN_7
 | 
						|
; CHECK-NEXT:    callq _f3
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_5: ## %RRETURN_14
 | 
						|
; CHECK-NEXT:    callq _f4
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_6: ## %RRETURN_15
 | 
						|
; CHECK-NEXT:    callq _f5
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_7: ## %RRETURN_16
 | 
						|
; CHECK-NEXT:    callq _f6
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_8: ## %RRETURN_17
 | 
						|
; CHECK-NEXT:    callq _f7
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_9: ## %RRETURN_18
 | 
						|
; CHECK-NEXT:    callq _f8
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_10: ## %RRETURN_19
 | 
						|
; CHECK-NEXT:    callq _f9
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_11: ## %RRETURN_20
 | 
						|
; CHECK-NEXT:    callq _f10
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_12: ## %RRETURN_21
 | 
						|
; CHECK-NEXT:    callq _f11
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_13: ## %RRETURN_22
 | 
						|
; CHECK-NEXT:    callq _f12
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_14: ## %RRETURN_24
 | 
						|
; CHECK-NEXT:    callq _f13
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_15: ## %RRETURN_26
 | 
						|
; CHECK-NEXT:    callq _f14
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_16: ## %RRETURN_27
 | 
						|
; CHECK-NEXT:    callq _f15
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_17: ## %RRETURN_28
 | 
						|
; CHECK-NEXT:    callq _f16
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_18: ## %RRETURN_29
 | 
						|
; CHECK-NEXT:    callq _f17
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_19: ## %RRETURN_30
 | 
						|
; CHECK-NEXT:    callq _f18
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_20: ## %RRETURN_31
 | 
						|
; CHECK-NEXT:    callq _f19
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_21: ## %RRETURN_38
 | 
						|
; CHECK-NEXT:    callq _f20
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_22: ## %RRETURN_40
 | 
						|
; CHECK-NEXT:    callq _f21
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_23: ## %RRETURN_42
 | 
						|
; CHECK-NEXT:    callq _f22
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_24: ## %RRETURN_44
 | 
						|
; CHECK-NEXT:    callq _f23
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_25: ## %RRETURN_48
 | 
						|
; CHECK-NEXT:    callq _f24
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_26: ## %RRETURN_52
 | 
						|
; CHECK-NEXT:    callq _f25
 | 
						|
; CHECK-NEXT:    jmp LBB0_28
 | 
						|
; CHECK-NEXT:  LBB0_27: ## %RRETURN_1
 | 
						|
; CHECK-NEXT:    callq _f26
 | 
						|
; CHECK-NEXT:  LBB0_28: ## %EXIT
 | 
						|
; CHECK-NEXT:    xorl %eax, %eax
 | 
						|
; CHECK-NEXT:    popq %rcx
 | 
						|
; CHECK-NEXT:    retq
 | 
						|
; CHECK-NEXT:    .p2align 2, 0x90
 | 
						|
; CHECK-NEXT:    .data_region jt32
 | 
						|
; CHECK-NEXT:  .set L0_0_set_3, LBB0_3-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_4, LBB0_4-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_5, LBB0_5-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_6, LBB0_6-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_7, LBB0_7-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_8, LBB0_8-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_9, LBB0_9-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_10, LBB0_10-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_11, LBB0_11-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_12, LBB0_12-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_13, LBB0_13-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_14, LBB0_14-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_15, LBB0_15-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_16, LBB0_16-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_17, LBB0_17-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_18, LBB0_18-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_19, LBB0_19-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_20, LBB0_20-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_21, LBB0_21-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_22, LBB0_22-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_23, LBB0_23-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_24, LBB0_24-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_25, LBB0_25-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_26, LBB0_26-LJTI0_0
 | 
						|
; CHECK-NEXT:  .set L0_0_set_27, LBB0_27-LJTI0_0
 | 
						|
; CHECK-NEXT:  LJTI0_0:
 | 
						|
; CHECK-NEXT:    .long L0_0_set_3
 | 
						|
; CHECK-NEXT:    .long L0_0_set_3
 | 
						|
; CHECK-NEXT:    .long L0_0_set_4
 | 
						|
; CHECK-NEXT:    .long L0_0_set_5
 | 
						|
; CHECK-NEXT:    .long L0_0_set_6
 | 
						|
; CHECK-NEXT:    .long L0_0_set_7
 | 
						|
; CHECK-NEXT:    .long L0_0_set_8
 | 
						|
; CHECK-NEXT:    .long L0_0_set_9
 | 
						|
; CHECK-NEXT:    .long L0_0_set_10
 | 
						|
; CHECK-NEXT:    .long L0_0_set_11
 | 
						|
; CHECK-NEXT:    .long L0_0_set_12
 | 
						|
; CHECK-NEXT:    .long L0_0_set_13
 | 
						|
; CHECK-NEXT:    .long L0_0_set_14
 | 
						|
; CHECK-NEXT:    .long L0_0_set_15
 | 
						|
; CHECK-NEXT:    .long L0_0_set_16
 | 
						|
; CHECK-NEXT:    .long L0_0_set_17
 | 
						|
; CHECK-NEXT:    .long L0_0_set_18
 | 
						|
; CHECK-NEXT:    .long L0_0_set_19
 | 
						|
; CHECK-NEXT:    .long L0_0_set_20
 | 
						|
; CHECK-NEXT:    .long L0_0_set_21
 | 
						|
; CHECK-NEXT:    .long L0_0_set_22
 | 
						|
; CHECK-NEXT:    .long L0_0_set_23
 | 
						|
; CHECK-NEXT:    .long L0_0_set_24
 | 
						|
; CHECK-NEXT:    .long L0_0_set_25
 | 
						|
; CHECK-NEXT:    .long L0_0_set_26
 | 
						|
; CHECK-NEXT:    .long L0_0_set_27
 | 
						|
; CHECK-NEXT:    .end_data_region
 | 
						|
entry:
 | 
						|
        br label %bb49
 | 
						|
 | 
						|
bb49:
 | 
						|
	switch i64 %bar, label %RETURN [
 | 
						|
		i64 2, label %RRETURN_2
 | 
						|
		i64 3, label %RRETURN_6
 | 
						|
		i64 4, label %RRETURN_7
 | 
						|
		i64 5, label %RRETURN_14
 | 
						|
		i64 6, label %RRETURN_15
 | 
						|
		i64 7, label %RRETURN_16
 | 
						|
		i64 8, label %RRETURN_17
 | 
						|
		i64 9, label %RRETURN_18
 | 
						|
		i64 10, label %RRETURN_19
 | 
						|
		i64 11, label %RRETURN_20
 | 
						|
		i64 12, label %RRETURN_21
 | 
						|
		i64 13, label %RRETURN_22
 | 
						|
		i64 14, label %RRETURN_24
 | 
						|
		i64 15, label %RRETURN_26
 | 
						|
		i64 16, label %RRETURN_27
 | 
						|
		i64 17, label %RRETURN_28
 | 
						|
		i64 18, label %RRETURN_29
 | 
						|
		i64 19, label %RRETURN_30
 | 
						|
		i64 20, label %RRETURN_31
 | 
						|
		i64 21, label %RRETURN_38
 | 
						|
		i64 22, label %RRETURN_40
 | 
						|
		i64 23, label %RRETURN_42
 | 
						|
		i64 24, label %RRETURN_44
 | 
						|
		i64 25, label %RRETURN_48
 | 
						|
		i64 26, label %RRETURN_52
 | 
						|
		i64 27, label %RRETURN_1
 | 
						|
	]
 | 
						|
 | 
						|
RETURN:
 | 
						|
        call void @f1()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_2:		; preds = %bb49
 | 
						|
        call void @f2()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_6:		; preds = %bb49
 | 
						|
        call void @f2()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_7:		; preds = %bb49
 | 
						|
        call void @f3()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_14:		; preds = %bb49
 | 
						|
        call void @f4()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_15:		; preds = %bb49
 | 
						|
        call void @f5()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_16:		; preds = %bb49
 | 
						|
        call void @f6()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_17:		; preds = %bb49
 | 
						|
        call void @f7()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_18:		; preds = %bb49
 | 
						|
        call void @f8()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_19:		; preds = %bb49
 | 
						|
        call void @f9()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_20:		; preds = %bb49
 | 
						|
        call void @f10()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_21:		; preds = %bb49
 | 
						|
        call void @f11()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_22:		; preds = %bb49
 | 
						|
        call void @f12()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_24:		; preds = %bb49
 | 
						|
        call void @f13()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_26:		; preds = %bb49
 | 
						|
        call void @f14()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_27:		; preds = %bb49
 | 
						|
        call void @f15()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_28:		; preds = %bb49
 | 
						|
        call void @f16()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_29:		; preds = %bb49
 | 
						|
        call void @f17()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_30:		; preds = %bb49
 | 
						|
        call void @f18()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_31:		; preds = %bb49
 | 
						|
        call void @f19()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_38:		; preds = %bb49
 | 
						|
        call void @f20()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_40:		; preds = %bb49
 | 
						|
        call void @f21()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_42:		; preds = %bb49
 | 
						|
        call void @f22()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_44:		; preds = %bb49
 | 
						|
        call void @f23()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_48:		; preds = %bb49
 | 
						|
        call void @f24()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_52:		; preds = %bb49
 | 
						|
        call void @f25()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
RRETURN_1:		; preds = %bb49
 | 
						|
        call void @f26()
 | 
						|
        br label %EXIT
 | 
						|
 | 
						|
EXIT:
 | 
						|
        ret i32 0
 | 
						|
}
 |