xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/mips64ext.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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