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