mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
[GlobalISel] Add G_INTRINSIC_LRINT and translate from llvm.lrint
Differential Revision: https://reviews.llvm.org/D84551
This commit is contained in:
parent
742638c542
commit
d7527ffdb2
@ -294,6 +294,9 @@ HANDLE_TARGET_OPCODE(G_INTRINSIC_TRUNC)
|
||||
/// INTRINSIC round intrinsic.
|
||||
HANDLE_TARGET_OPCODE(G_INTRINSIC_ROUND)
|
||||
|
||||
/// INTRINSIC round to integer intrinsic.
|
||||
HANDLE_TARGET_OPCODE(G_INTRINSIC_LRINT)
|
||||
|
||||
/// INTRINSIC readcyclecounter
|
||||
HANDLE_TARGET_OPCODE(G_READCYCLECOUNTER)
|
||||
|
||||
|
@ -912,6 +912,12 @@ def G_INTRINSIC_ROUND : GenericInstruction {
|
||||
let hasSideEffects = 0;
|
||||
}
|
||||
|
||||
def G_INTRINSIC_LRINT : GenericInstruction {
|
||||
let OutOperandList = (outs type0:$dst);
|
||||
let InOperandList = (ins type1:$src);
|
||||
let hasSideEffects = 0;
|
||||
}
|
||||
|
||||
def G_READCYCLECOUNTER : GenericInstruction {
|
||||
let OutOperandList = (outs type0:$dst);
|
||||
let InOperandList = (ins);
|
||||
|
@ -1290,6 +1290,8 @@ unsigned IRTranslator::getSimpleIntrinsicOpcode(Intrinsic::ID ID) {
|
||||
return TargetOpcode::G_READCYCLECOUNTER;
|
||||
case Intrinsic::ptrmask:
|
||||
return TargetOpcode::G_PTRMASK;
|
||||
case Intrinsic::lrint:
|
||||
return TargetOpcode::G_INTRINSIC_LRINT;
|
||||
}
|
||||
return Intrinsic::not_intrinsic;
|
||||
}
|
||||
|
@ -1391,6 +1391,16 @@ define float @test_intrinsic_round(float %a) {
|
||||
ret float %res
|
||||
}
|
||||
|
||||
declare i32 @llvm.lrint.i32.f32(float)
|
||||
define i32 @test_intrinsic_lrint(float %a) {
|
||||
; CHECK-LABEL: name: test_intrinsic_lrint
|
||||
; CHECK: [[A:%[0-9]+]]:_(s32) = COPY $s0
|
||||
; CHECK: [[RES:%[0-9]+]]:_(s32) = G_INTRINSIC_LRINT [[A]]
|
||||
; CHECK: $w0 = COPY [[RES]]
|
||||
%res = call i32 @llvm.lrint.i32.f32(float %a)
|
||||
ret i32 %res
|
||||
}
|
||||
|
||||
declare i32 @llvm.ctlz.i32(i32, i1)
|
||||
define i32 @test_ctlz_intrinsic_zero_not_undef(i32 %a) {
|
||||
; CHECK-LABEL: name: test_ctlz_intrinsic_zero_not_undef
|
||||
|
@ -129,6 +129,9 @@
|
||||
# DEBUG-NEXT: .. opcode {{[0-9]+}} is aliased to {{[0-9]+}}
|
||||
# DEBUG-NEXT: .. type index coverage check SKIPPED: user-defined predicate detected
|
||||
# DEBUG-NEXT: .. imm index coverage check SKIPPED: user-defined predicate detected
|
||||
# DEBUG-NEXT: G_INTRINSIC_LRINT (opcode {{[0-9]+}}): 2 type indices, 0 imm indices
|
||||
# DEBUG-NEXT: .. type index coverage check SKIPPED: no rules defined
|
||||
# DEBUG-NEXT:.. imm index coverage check SKIPPED: no rules defined
|
||||
|
||||
# DEBUG-NEXT: G_READCYCLECOUNTER (opcode {{[0-9]+}}): 1 type index, 0 imm indices
|
||||
# DEBUG-NEXT: .. type index coverage check SKIPPED: no rules defined
|
||||
|
Loading…
Reference in New Issue
Block a user