1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=ppc64 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc-unknown-linux-gnu -mcpu=ppc < %s | FileCheck -check-prefix=CHECK-32 %s 3*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-m:e-i64:64-n32:64" 4*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu" 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 7*9880d681SAndroid Build Coastguard Workerdefine signext i32 @foo4(i32 signext %a) #0 { 8*9880d681SAndroid Build Coastguard Workerentry: 9*9880d681SAndroid Build Coastguard Worker %div = sdiv i32 %a, 8 10*9880d681SAndroid Build Coastguard Worker ret i32 %div 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @foo4 13*9880d681SAndroid Build Coastguard Worker; CHECK: srawi [[REG1:[0-9]+]], 3, 3 14*9880d681SAndroid Build Coastguard Worker; CHECK: addze [[REG2:[0-9]+]], [[REG1]] 15*9880d681SAndroid Build Coastguard Worker; CHECK: extsw 3, [[REG2]] 16*9880d681SAndroid Build Coastguard Worker; CHECK: blr 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 20*9880d681SAndroid Build Coastguard Workerdefine i64 @foo8(i64 %a) #0 { 21*9880d681SAndroid Build Coastguard Workerentry: 22*9880d681SAndroid Build Coastguard Worker %div = sdiv i64 %a, 8 23*9880d681SAndroid Build Coastguard Worker ret i64 %div 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @foo8 26*9880d681SAndroid Build Coastguard Worker; CHECK: sradi [[REG1:[0-9]+]], 3, 3 27*9880d681SAndroid Build Coastguard Worker; CHECK: addze 3, [[REG1]] 28*9880d681SAndroid Build Coastguard Worker; CHECK: blr 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker; CHECK-32-LABEL: @foo8 31*9880d681SAndroid Build Coastguard Worker; CHECK-32-NOT: sradi 32*9880d681SAndroid Build Coastguard Worker; CHECK-32: blr 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 36*9880d681SAndroid Build Coastguard Workerdefine signext i32 @foo4n(i32 signext %a) #0 { 37*9880d681SAndroid Build Coastguard Workerentry: 38*9880d681SAndroid Build Coastguard Worker %div = sdiv i32 %a, -8 39*9880d681SAndroid Build Coastguard Worker ret i32 %div 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @foo4n 42*9880d681SAndroid Build Coastguard Worker; CHECK: srawi [[REG1:[0-9]+]], 3, 3 43*9880d681SAndroid Build Coastguard Worker; CHECK: addze [[REG2:[0-9]+]], [[REG1]] 44*9880d681SAndroid Build Coastguard Worker; CHECK: neg [[REG3:[0-9]+]], [[REG2]] 45*9880d681SAndroid Build Coastguard Worker; CHECK: extsw 3, [[REG3]] 46*9880d681SAndroid Build Coastguard Worker; CHECK: blr 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 50*9880d681SAndroid Build Coastguard Workerdefine i64 @foo8n(i64 %a) #0 { 51*9880d681SAndroid Build Coastguard Workerentry: 52*9880d681SAndroid Build Coastguard Worker %div = sdiv i64 %a, -8 53*9880d681SAndroid Build Coastguard Worker ret i64 %div 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @foo8n 56*9880d681SAndroid Build Coastguard Worker; CHECK: sradi [[REG1:[0-9]+]], 3, 3 57*9880d681SAndroid Build Coastguard Worker; CHECK: addze [[REG2:[0-9]+]], [[REG1]] 58*9880d681SAndroid Build Coastguard Worker; CHECK: neg 3, [[REG2]] 59*9880d681SAndroid Build Coastguard Worker; CHECK: blr 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker; CHECK-32-LABEL: @foo8n 62*9880d681SAndroid Build Coastguard Worker; CHECK-32-NOT: sradi 63*9880d681SAndroid Build Coastguard Worker; CHECK-32: blr 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone } 67*9880d681SAndroid Build Coastguard Worker 68