1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64el -mcpu=mips4 -target-abi=n64 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64el -mcpu=mips64 -target-abi=n64 | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i64 @zext64_32(i32 %a) nounwind readnone { 5*9880d681SAndroid Build Coastguard Workerentry: 6*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[R0:[0-9]+]], ${{[0-9]+}}, 2 7*9880d681SAndroid Build Coastguard Worker; CHECK: dsll $[[R1:[0-9]+]], $[[R0]], 32 8*9880d681SAndroid Build Coastguard Worker; CHECK: dsrl ${{[0-9]+}}, $[[R1]], 32 9*9880d681SAndroid Build Coastguard Worker %add = add i32 %a, 2 10*9880d681SAndroid Build Coastguard Worker %conv = zext i32 %add to i64 11*9880d681SAndroid Build Coastguard Worker ret i64 %conv 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine i64 @sext64_32(i32 %a) nounwind readnone { 15*9880d681SAndroid Build Coastguard Workerentry: 16*9880d681SAndroid Build Coastguard Worker; CHECK: sll ${{[0-9]+}}, ${{[0-9]+}}, 0 17*9880d681SAndroid Build Coastguard Worker %conv = sext i32 %a to i64 18*9880d681SAndroid Build Coastguard Worker ret i64 %conv 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine i64 @i64_float(float %f) nounwind readnone { 22*9880d681SAndroid Build Coastguard Workerentry: 23*9880d681SAndroid Build Coastguard Worker; CHECK: trunc.l.s 24*9880d681SAndroid Build Coastguard Worker %conv = fptosi float %f to i64 25*9880d681SAndroid Build Coastguard Worker ret i64 %conv 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28