arm64: Support bool constants

Copyright (c) 2020, Arm Limited.
This commit is contained in:
Joey Gouly
2020-04-09 17:32:26 +01:00
committed by Benjamin Bouvier
parent 3638f8a764
commit ad9be0d445
2 changed files with 27 additions and 0 deletions

View File

@@ -184,6 +184,7 @@ fn output_to_const<C: LowerCtx<I = Inst>>(ctx: &mut C, out: InsnOutput) -> Optio
let imm: i64 = imm.into();
Some(imm as u64)
}
&InstructionData::UnaryBool { opcode: _, imm } => Some(u64::from(imm)),
&InstructionData::UnaryIeee32 { opcode: _, imm } => Some(u64::from(imm.bits())),
&InstructionData::UnaryIeee64 { opcode: _, imm } => Some(imm.bits()),
_ => None,

View File

@@ -1,6 +1,32 @@
test vcode
target aarch64
function %f() -> b8 {
block0:
v0 = bconst.b8 true
return v0
}
; check: stp fp, lr, [sp, #-16]!
; nextln: mov fp, sp
; nextln: movz x0, #1
; nextln: mov sp, fp
; nextln: ldp fp, lr, [sp], #16
; nextln: ret
function %f() -> b16 {
block0:
v0 = bconst.b16 false
return v0
}
; check: stp fp, lr, [sp, #-16]!
; nextln: mov fp, sp
; nextln: movz x0, #0
; nextln: mov sp, fp
; nextln: ldp fp, lr, [sp], #16
; nextln: ret
function %f() -> i64 {
block0:
v0 = iconst.i64 0