Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(335)

Unified Diff: test/NaCl/PNaClABI/function-signatures.ll

Issue 221693002: PNaCl: Add support for GCC/LLVM vector extensions (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: Address jvoung's comments. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/NaCl/PNaClABI/function-signatures.ll
diff --git a/test/NaCl/PNaClABI/function-signatures.ll b/test/NaCl/PNaClABI/function-signatures.ll
new file mode 100644
index 0000000000000000000000000000000000000000..ba4859ad8bc456449594d8352dfadd9a32a270c2
--- /dev/null
+++ b/test/NaCl/PNaClABI/function-signatures.ll
@@ -0,0 +1,181 @@
+; RUN: not pnacl-abicheck < %s | FileCheck %s
+
+; Test type-checking of function signatures.
+
+; CHECK: Function f_arg_i1 has disallowed type: void (i1)
+; CHECK: Function f_ret_i1 has disallowed type: i1 ()
+define internal void @f_arg_i1(i1 %a) {
+ ret void
+}
+define internal i1 @f_ret_i1() {
+ ret i1 undef
+}
+
+; CHECK: Function f_arg_i8 has disallowed type: void (i8)
+; CHECK: Function f_ret_i8 has disallowed type: i8 ()
+define internal void @f_arg_i8(i8 %a) {
+ ret void
+}
+define internal i8 @f_ret_i8() {
+ ret i8 undef
+}
+
+; CHECK: Function f_arg_i16 has disallowed type: void (i16)
+; CHECK: Function f_ret_i16 has disallowed type: i16 ()
+define internal void @f_arg_i16(i16 %a) {
+ ret void
+}
+define internal i16 @f_ret_i16() {
+ ret i16 undef
+}
+
+; CHECK-NOT: f_arg_i32 {{.*}} disallowed
jvoung (off chromium) 2014/04/16 22:03:12 I think you can regex the middle of the CHECK-NOT
JF 2014/04/16 22:35:36 Done.
+define internal void @f_arg_i32(i32 %a) {
+ ret void
+}
+define internal i32 @f_ret_i32() {
+ ret i32 undef
+}
+
+; CHECK-NOT: f_arg_i64 {{.*}} disallowed
+define internal void @f_arg_i64(i64 %a) {
+ ret void
+}
+define internal i64 @f_ret_i64() {
+ ret i64 undef
+}
+
+; CHECK: Function f_arg_i128 has disallowed type: void (i128)
+; CHECK: Function f_ret_i128 has disallowed type: i128 ()
+define internal void @f_arg_i128(i128 %a) {
+ ret void
+}
+define internal i128 @f_ret_i128() {
+ ret i128 undef
+}
+
+; CHECK-NOT: f_arg_float {{.*}} disallowed
+define internal void @f_arg_float(float %a) {
+ ret void
+}
+define internal float @f_ret_float() {
+ ret float undef
+}
+
+; CHECK-NOT: f_arg_double {{.*}} disallowed
+define internal void @f_arg_double(double %a) {
+ ret void
+}
+define internal double @f_ret_double() {
+ ret double undef
+}
+
+; CHECK: Function f_arg_1xi1 has disallowed type: void (<1 x i1>)
+; CHECK: Function f_ret_1xi1 has disallowed type: <1 x i1> ()
+define internal void @f_arg_1xi1(<1 x i1> %a) {
+ ret void
+}
+define internal <1 x i1> @f_ret_1xi1() {
+ ret <1 x i1> undef
+}
+
+; CHECK: Function f_arg_2xi1 has disallowed type: void (<2 x i1>)
+; CHECK: Function f_ret_2xi1 has disallowed type: <2 x i1> ()
+define internal void @f_arg_2xi1(<2 x i1> %a) {
+ ret void
+}
+define internal <2 x i1> @f_ret_2xi1() {
+ ret <2 x i1> undef
+}
+
+; CHECK-NOT: f_arg_4xi1 {{.*}} disallowed
+define internal void @f_arg_4xi1(<4 x i1> %a) {
+ ret void
+}
+define internal <4 x i1> @f_ret_4xi1() {
+ ret <4 x i1> undef
+}
+
+; CHECK-NOT: f_arg_8xi1 {{.*}} disallowed
+define internal void @f_arg_8xi1(<8 x i1> %a) {
+ ret void
+}
+define internal <8 x i1> @f_ret_8xi1() {
+ ret <8 x i1> undef
+}
+
+; CHECK-NOT: f_arg_16xi1 {{.*}} disallowed
+define internal void @f_arg_16xi1(<16 x i1> %a) {
+ ret void
+}
+define internal <16 x i1> @f_ret_16xi1() {
+ ret <16 x i1> undef
+}
+
+; CHECK: Function f_arg_32xi1 has disallowed type: void (<32 x i1>)
+; CHECK: Function f_ret_32xi1 has disallowed type: <32 x i1> ()
+define internal void @f_arg_32xi1(<32 x i1> %a) {
+ ret void
+}
+define internal <32 x i1> @f_ret_32xi1() {
+ ret <32 x i1> undef
+}
+
+; CHECK: Function f_arg_64xi1 has disallowed type: void (<64 x i1>)
+; CHECK: Function f_ret_64xi1 has disallowed type: <64 x i1> ()
+define internal void @f_arg_64xi1(<64 x i1> %a) {
+ ret void
+}
+define internal <64 x i1> @f_ret_64xi1() {
+ ret <64 x i1> undef
+}
+
+; CHECK-NOT: f_arg_16xi8 {{.*}} disallowed
+define internal void @f_arg_16xi8(<16 x i8> %a) {
+ ret void
+}
+define internal <16 x i8> @f_ret_16xi8() {
+ ret <16 x i8> undef
+}
+
+; CHECK-NOT: f_arg_8xi16 {{.*}} disallowed
+define internal void @f_arg_8xi16(<8 x i16> %a) {
+ ret void
+}
+define internal <8 x i16> @f_ret_8xi16() {
+ ret <8 x i16> undef
+}
+
+; CHECK-NOT: f_arg_4xi32 {{.*}} disallowed
+define internal void @f_arg_4xi32(<4 x i32> %a) {
+ ret void
+}
+define internal <4 x i32> @f_ret_4xi32() {
+ ret <4 x i32> undef
+}
+
+; CHECK: Function f_arg_2xi64 has disallowed type: void (<2 x i64>)
+; CHECK: Function f_ret_2xi64 has disallowed type: <2 x i64> ()
+define internal void @f_arg_2xi64(<2 x i64> %a) {
+ ret void
+}
+define internal <2 x i64> @f_ret_2xi64() {
+ ret <2 x i64> undef
+}
+
+; CHECK-NOT: f_arg_4xfloat {{.*}} disallowed
+define internal void @f_arg_4xfloat(<4 x float> %a) {
+ ret void
+}
+define internal <4 x float> @f_ret_4xfloat() {
+ ret <4 x float> undef
+}
+
+; CHECK: Function f_arg_2xdouble has disallowed type: void (<2 x double>)
+; CHECK: Function f_ret_2xdouble has disallowed type: <2 x double> ()
+define internal void @f_arg_2xdouble(<2 x double> %a) {
+ ret void
+}
+define internal <2 x double> @f_ret_2xdouble() {
+ ret <2 x double> undef
+}

Powered by Google App Engine
This is Rietveld 408576698