Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在LLVM后端中定义多用途(i32/f32)寄存器?_Llvm - Fatal编程技术网

如何在LLVM后端中定义多用途(i32/f32)寄存器?

如何在LLVM后端中定义多用途(i32/f32)寄存器?,llvm,Llvm,我想将寄存器定义为LLVM后端上的多用途浮点和整数寄存器。有人知道怎么做吗 谢谢 我相信您可以看到它是如何在LLVM后端实现的 您熟悉的体系结构。例如,ARM有32个 D寄存器(D0..D31),可保存双浮点或矢量 价值观在这种情况下,RegisterClass定义非常简单 直截了当: // Scalar double precision floating point / generic 64-bit vector register class. def DPR : RegisterClass&

我想将寄存器定义为LLVM后端上的多用途浮点和整数寄存器。有人知道怎么做吗


谢谢

我相信您可以看到它是如何在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; }];
}
//标量双精度浮点/通用64位向量寄存器类。
def DPR:注册表类{
//首先分配非VFP2寄存器D16-D31。
让AltOrders=[(rotl DPR,16)];
让AltOrderSelect=[{return 1;}];
}