1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=ppc64le -mcpu=pwr8 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=ppc64le -mcpu=pwr8 -O0 < %s | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=ppc64le < %s | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=ppc64le -O0 < %s | FileCheck %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; The second run of the test case is to ensure the behaviour is the same 7*9880d681SAndroid Build Coastguard Worker; without specifying -mcpu=pwr8 as that is now the baseline for ppc64le. 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-i64:64-n32:64" 10*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64le-unknown-linux-gnu" 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker@number64 = global i64 10, align 8 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; CHECK: .abiversion 2 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerdefine i64 @use_toc(i64 %a) nounwind { 17*9880d681SAndroid Build Coastguard Workerentry: 18*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @use_toc 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .L{{.*}}: 20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .Lfunc_gep[[FN:[0-9]+]]: 21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addis 2, 12, .TOC.-.Lfunc_gep[[FN]]@ha 22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addi 2, 2, .TOC.-.Lfunc_gep[[FN]]@l 23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .Lfunc_lep[[FN]]: 24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .localentry use_toc, .Lfunc_lep[[FN]]-.Lfunc_gep[[FN]] 25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %entry 26*9880d681SAndroid Build Coastguard Worker %0 = load i64, i64* @number64, align 8 27*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i64 %0, %a 28*9880d681SAndroid Build Coastguard Worker %conv1 = zext i1 %cmp to i64 29*9880d681SAndroid Build Coastguard Worker ret i64 %conv1 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdeclare void @callee() 33*9880d681SAndroid Build Coastguard Workerdefine void @use_toc_implicit() nounwind { 34*9880d681SAndroid Build Coastguard Workerentry: 35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @use_toc_implicit 36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .L{{.*}}: 37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .Lfunc_gep[[FN:[0-9]+]]: 38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addis 2, 12, .TOC.-.Lfunc_gep[[FN]]@ha 39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addi 2, 2, .TOC.-.Lfunc_gep[[FN]]@l 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .Lfunc_lep[[FN]]: 41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .localentry use_toc_implicit, .Lfunc_lep[[FN]]-.Lfunc_gep[[FN]] 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %entry 43*9880d681SAndroid Build Coastguard Worker call void @callee() 44*9880d681SAndroid Build Coastguard Worker ret void 45*9880d681SAndroid Build Coastguard Worker} 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Workerdefine i64 @no_toc(i64 %a) nounwind { 48*9880d681SAndroid Build Coastguard Workerentry: 49*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @no_toc 50*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .L{{.*}}: 51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %entry 52*9880d681SAndroid Build Coastguard Worker ret i64 %a 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Worker 55