From ad9be0d445477d4d0f04a81dd89e0dbeee4c7c05 Mon Sep 17 00:00:00 2001 From: Joey Gouly Date: Thu, 9 Apr 2020 17:32:26 +0100 Subject: [PATCH] arm64: Support bool constants Copyright (c) 2020, Arm Limited. --- cranelift/codegen/src/isa/aarch64/lower.rs | 1 + .../filetests/vcode/aarch64/constants.clif | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/cranelift/codegen/src/isa/aarch64/lower.rs b/cranelift/codegen/src/isa/aarch64/lower.rs index 209b3d6c83..08b70b96df 100644 --- a/cranelift/codegen/src/isa/aarch64/lower.rs +++ b/cranelift/codegen/src/isa/aarch64/lower.rs @@ -184,6 +184,7 @@ fn output_to_const>(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, diff --git a/cranelift/filetests/filetests/vcode/aarch64/constants.clif b/cranelift/filetests/filetests/vcode/aarch64/constants.clif index 67667d59c1..7470941dec 100644 --- a/cranelift/filetests/filetests/vcode/aarch64/constants.clif +++ b/cranelift/filetests/filetests/vcode/aarch64/constants.clif @@ -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