[clang] [llvm] [AArch64] Add soft-float ABI (PR #74460)

Nathan Chancellor via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 16 08:59:05 PST 2024


nathanchance wrote:

For what it's worth, this breaks building the Linux kernel for `ARCH=arm64` pretty badly, with errors in several drivers:

```
$ make -skj"$(nrpoc)" ARCH=arm64 LLVM=1 mrproper defconfig all
...
drivers/clk/qcom/gcc-ipq6018.c:896:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
  896 |         F(533000000, P_GPLL0, 1.5, 0, 0),
      |         ^
drivers/clk/qcom/clk-rcg.h:10:41: note: expanded from macro 'F'
   10 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
      |                                         ^
...
In file included from drivers/gpu/drm/msm/adreno/a2xx_gpu.c:4:
In file included from drivers/gpu/drm/msm/adreno/a2xx_gpu.h:13:
drivers/gpu/drm/msm/adreno/a2xx.xml.h:1849:24: error: 'A2XX_PA_CL_VPORT_XSCALE' requires 'float' type support, but ABI 'aapcs' does not support it
 1849 | static inline uint32_t A2XX_PA_CL_VPORT_XSCALE(float val)
      |                        ^
drivers/gpu/drm/msm/adreno/a2xx.xml.h:1849:24: note: 'A2XX_PA_CL_VPORT_XSCALE' defined here
drivers/gpu/drm/msm/adreno/a2xx.xml.h:1857:24: error: 'A2XX_PA_CL_VPORT_XOFFSET' requires 'float' type support, but ABI 'aapcs' does not support it
 1857 | static inline uint32_t A2XX_PA_CL_VPORT_XOFFSET(float val)
      |                        ^
drivers/gpu/drm/msm/adreno/a2xx.xml.h:1857:24: note: 'A2XX_PA_CL_VPORT_XOFFSET' defined here
drivers/gpu/drm/msm/adreno/a2xx.xml.h:1865:24: error: 'A2XX_PA_CL_VPORT_YSCALE' requires 'float' type support, but ABI 'aapcs' does not support it
 1865 | static inline uint32_t A2XX_PA_CL_VPORT_YSCALE(float val)
      |                        ^
drivers/gpu/drm/msm/adreno/a2xx.xml.h:1865:24: note: 'A2XX_PA_CL_VPORT_YSCALE' defined here
...
```

I suspect this may be related to the kernel's use of `-mgeneral-regs-only`? Up until this point though, there have been no reported issues with code generation or runtime time impact with `clang`-built kernels.

https://github.com/llvm/llvm-project/pull/74460


More information about the cfe-commits mailing list