1; RUN: llc -mcpu=pwr4 -mattr=-altivec -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff \ 2; RUN: -stop-after=machine-cp < %s | FileCheck \ 3; RUN: --check-prefix=32BIT %s 4 5; RUN: llc -mcpu=pwr4 -mattr=-altivec -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \ 6; RUN: -stop-after=machine-cp < %s | FileCheck \ 7; RUN: --check-prefix=64BIT %s 8 9define i64 @call_divdi3(i64 %p, i64 %num) { 10entry: 11 %div = sdiv i64 %p, %num 12 ret i64 %div 13} 14 15; 32BIT: BL_NOP <mcsymbol .__divdi3> 16 17define i64 @call_fixunsdfdi(double %p) { 18entry: 19 %conv = fptoui double %p to i64 20 ret i64 %conv 21} 22 23; 32BIT: BL_NOP <mcsymbol .__fixunsdfdi> 24 25define double @call_floatundidf(i64 %p) { 26entry: 27 %conv = uitofp i64 %p to double 28 ret double %conv 29} 30 31; 32BIT: BL_NOP <mcsymbol .__floatundidf> 32 33define float @call_floatundisf(i64 %p) { 34entry: 35 %conv = uitofp i64 %p to float 36 ret float %conv 37} 38 39; 32BIT: BL_NOP <mcsymbol .__floatundisf> 40 41define i64 @call_moddi3(i64 %p, i64 %num) { 42entry: 43 %rem = srem i64 %p, %num 44 ret i64 %rem 45} 46 47; 32BIT: BL_NOP <mcsymbol .__moddi3> 48 49define i64 @call_udivdi3(i64 %p, i64 %q) { 50 %1 = udiv i64 %p, %q 51 ret i64 %1 52} 53 54; 32BIT: BL_NOP <mcsymbol .__udivdi3> 55 56define i64 @call_umoddi3(i64 %p, i64 %num) { 57entry: 58 %rem = urem i64 %p, %num 59 ret i64 %rem 60} 61 62; 32BIT: BL_NOP <mcsymbol .__umoddi3> 63 64define double @call_ceil(double %n) { 65entry: 66 %0 = call double @llvm.ceil.f64(double %n) 67 ret double %0 68} 69 70declare double @llvm.ceil.f64(double) 71 72; 32BIT: BL_NOP <mcsymbol .ceil> 73; 64BIT: BL8_NOP <mcsymbol .ceil> 74 75define double @call_floor(double %n) { 76entry: 77 %0 = call double @llvm.floor.f64(double %n) 78 ret double %0 79} 80 81declare double @llvm.floor.f64(double) 82 83; 32BIT: BL_NOP <mcsymbol .floor> 84; 64BIT: BL8_NOP <mcsymbol .floor> 85 86define void @call_memcpy(i8* %p, i8* %q, i32 %n) { 87entry: 88 call void @llvm.memcpy.p0i8.p0i8.i32(i8* %p, i8* %q, i32 %n, i1 false) 89 ret void 90} 91 92declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1) 93 94; 32BIT: BL_NOP <mcsymbol .memcpy> 95; 64BIT: BL8_NOP <mcsymbol .memcpy> 96 97define void @call_memmove(i8* %p, i8* %q, i32 %n) { 98entry: 99 call void @llvm.memmove.p0i8.p0i8.i32(i8* %p, i8* %q, i32 %n, i1 false) 100 ret void 101} 102 103declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i1) 104 105; 32BIT: BL_NOP <mcsymbol .memmove> 106; 64BIT: BL8_NOP <mcsymbol .memmove> 107 108define void @call_memset(i8* %p, i8 %q, i32 %n) #0 { 109entry: 110 call void @llvm.memset.p0i8.i32(i8* %p, i8 %q, i32 %n, i1 false) 111 ret void 112} 113 114declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i1) 115 116; 32BIT: BL_NOP <mcsymbol .memset> 117; 64BIT: BL8_NOP <mcsymbol .memset> 118 119define double @call_round(double %n) { 120entry: 121 %0 = call double @llvm.round.f64(double %n) 122 ret double %0 123} 124 125declare double @llvm.round.f64(double) 126 127; 32BIT: BL_NOP <mcsymbol .round> 128; 64BIT: BL8_NOP <mcsymbol .round> 129