Skip to content
This repository was archived by the owner on Apr 23, 2020. It is now read-only.

Commit 6c560b5

Browse files
committed
[X86] Allow GHC calling convention to use YMM and ZMM registers
GHC 8.4 will know how to use YMM and ZMM registers for calls. Submitted on behalf of @bgamari (Ben Gamari) Differential Revision: https://reviews.llvm.org/D34854 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307504 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 5cd68f3 commit 6c560b5

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

lib/Target/X86/X86CallingConv.td

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,15 @@ def CC_X86_64_GHC : CallingConv<[
651651
// Pass in STG registers: F1, F2, F3, F4, D1, D2
652652
CCIfType<[f32, f64, v16i8, v8i16, v4i32, v2i64, v4f32, v2f64],
653653
CCIfSubtarget<"hasSSE1()",
654-
CCAssignToReg<[XMM1, XMM2, XMM3, XMM4, XMM5, XMM6]>>>
654+
CCAssignToReg<[XMM1, XMM2, XMM3, XMM4, XMM5, XMM6]>>>,
655+
// AVX
656+
CCIfType<[v32i8, v16i16, v8i32, v4i64, v8f32, v4f64],
657+
CCIfSubtarget<"hasAVX()",
658+
CCAssignToReg<[YMM1, YMM2, YMM3, YMM4, YMM5, YMM6]>>>,
659+
// AVX-512
660+
CCIfType<[v64i8, v32i16, v16i32, v8i64, v16f32, v8f64],
661+
CCIfSubtarget<"hasAVX512()",
662+
CCAssignToReg<[ZMM1, ZMM2, ZMM3, ZMM4, ZMM5, ZMM6]>>>
655663
]>;
656664

657665
def CC_X86_64_HiPE : CallingConv<[

0 commit comments

Comments
 (0)