diff --git a/llvm/lib/Target/Hexagon/HexagonCallingConv.td b/llvm/lib/Target/Hexagon/HexagonCallingConv.td index 2378bbc928d49..e0302b85fa948 100644 --- a/llvm/lib/Target/Hexagon/HexagonCallingConv.td +++ b/llvm/lib/Target/Hexagon/HexagonCallingConv.td @@ -65,6 +65,7 @@ def CC_Hexagon: CallingConv<[ CCIfType<[i32], CCIfSplit< CCCustom<"CC_SkipOdd">>>, + CCIfType<[v2i1], CCPromoteToType>, CCIfType<[v4i1], CCPromoteToType>, CCIfType<[v8i1], CCPromoteToType>, diff --git a/llvm/test/CodeGen/Hexagon/calloperand-v2i1.ll b/llvm/test/CodeGen/Hexagon/calloperand-v2i1.ll new file mode 100644 index 0000000000000..2dcd5fe571e36 --- /dev/null +++ b/llvm/test/CodeGen/Hexagon/calloperand-v2i1.ll @@ -0,0 +1,14 @@ +;RUN: llc -mtriple=hexagon < %s | FileCheck %s + +; Check that v2i1 type is promoted to v2i32. +; CHECK: call f +; CHECK: r{{[0-9]+}}:{{[0-9]+}} = memd(r29+#8) + +define <2 x i1> @test(<2 x i1> %1) { +Entry: + %2 = call <2 x i1> @f(<2 x i1> %1) + ret <2 x i1> %2 + + } + +declare <2 x i1> @f(<2 x i1>)