我想在LLVM后端将寄存器定义为多用途浮点数和整数寄存器。有谁知道怎么做?
谢谢!
答案 0 :(得分:1)
我相信你可以看到它是如何在LLVM后端实现的
你熟悉的建筑。例如,ARM有32个
D寄存器(D0..D31),可以保存双浮点数或向量
值。在这种情况下,RegisterClass
定义是完全正确的
简单的:
// Scalar double precision floating point / generic 64-bit vector register class.
def DPR : RegisterClass<"ARM", [f64, v8i8, v4i16, v2i32, v1i64, v2f32], 64,
(sequence "D%u", 0, 31)> {
// Allocate non-VFP2 registers D16-D31 first.
let AltOrders = [(rotl DPR, 16)];
let AltOrderSelect = [{ return 1; }];
}