OLD | NEW |
(Empty) | |
| 1 ; RUN: not pnacl-abicheck < %s | FileCheck %s |
| 2 |
| 3 ; Test type-checking of function signatures. |
| 4 |
| 5 ; CHECK: Function f_arg_i1 has disallowed type: void (i1) |
| 6 ; CHECK: Function f_ret_i1 has disallowed type: i1 () |
| 7 define internal void @f_arg_i1(i1 %a) { |
| 8 ret void |
| 9 } |
| 10 define internal i1 @f_ret_i1() { |
| 11 ret i1 undef |
| 12 } |
| 13 |
| 14 ; CHECK: Function f_arg_i8 has disallowed type: void (i8) |
| 15 ; CHECK: Function f_ret_i8 has disallowed type: i8 () |
| 16 define internal void @f_arg_i8(i8 %a) { |
| 17 ret void |
| 18 } |
| 19 define internal i8 @f_ret_i8() { |
| 20 ret i8 undef |
| 21 } |
| 22 |
| 23 ; CHECK: Function f_arg_i16 has disallowed type: void (i16) |
| 24 ; CHECK: Function f_ret_i16 has disallowed type: i16 () |
| 25 define internal void @f_arg_i16(i16 %a) { |
| 26 ret void |
| 27 } |
| 28 define internal i16 @f_ret_i16() { |
| 29 ret i16 undef |
| 30 } |
| 31 |
| 32 ; CHECK-NOT: f_{{[a-z]+}}_i32 {{.*}} disallowed |
| 33 define internal void @f_arg_i32(i32 %a) { |
| 34 ret void |
| 35 } |
| 36 define internal i32 @f_ret_i32() { |
| 37 ret i32 undef |
| 38 } |
| 39 |
| 40 ; CHECK-NOT: f_{{[a-z]+}}_i64 {{.*}} disallowed |
| 41 define internal void @f_arg_i64(i64 %a) { |
| 42 ret void |
| 43 } |
| 44 define internal i64 @f_ret_i64() { |
| 45 ret i64 undef |
| 46 } |
| 47 |
| 48 ; CHECK: Function f_arg_i128 has disallowed type: void (i128) |
| 49 ; CHECK: Function f_ret_i128 has disallowed type: i128 () |
| 50 define internal void @f_arg_i128(i128 %a) { |
| 51 ret void |
| 52 } |
| 53 define internal i128 @f_ret_i128() { |
| 54 ret i128 undef |
| 55 } |
| 56 |
| 57 ; CHECK-NOT: f_{{[a-z]+}}_float {{.*}} disallowed |
| 58 define internal void @f_arg_float(float %a) { |
| 59 ret void |
| 60 } |
| 61 define internal float @f_ret_float() { |
| 62 ret float undef |
| 63 } |
| 64 |
| 65 ; CHECK-NOT: f_{{[a-z]+}}_double {{.*}} disallowed |
| 66 define internal void @f_arg_double(double %a) { |
| 67 ret void |
| 68 } |
| 69 define internal double @f_ret_double() { |
| 70 ret double undef |
| 71 } |
| 72 |
| 73 ; CHECK: Function f_arg_1xi1 has disallowed type: void (<1 x i1>) |
| 74 ; CHECK: Function f_ret_1xi1 has disallowed type: <1 x i1> () |
| 75 define internal void @f_arg_1xi1(<1 x i1> %a) { |
| 76 ret void |
| 77 } |
| 78 define internal <1 x i1> @f_ret_1xi1() { |
| 79 ret <1 x i1> undef |
| 80 } |
| 81 |
| 82 ; CHECK: Function f_arg_2xi1 has disallowed type: void (<2 x i1>) |
| 83 ; CHECK: Function f_ret_2xi1 has disallowed type: <2 x i1> () |
| 84 define internal void @f_arg_2xi1(<2 x i1> %a) { |
| 85 ret void |
| 86 } |
| 87 define internal <2 x i1> @f_ret_2xi1() { |
| 88 ret <2 x i1> undef |
| 89 } |
| 90 |
| 91 ; CHECK-NOT: f_{{[a-z]+}}_4xi1 {{.*}} disallowed |
| 92 define internal void @f_arg_4xi1(<4 x i1> %a) { |
| 93 ret void |
| 94 } |
| 95 define internal <4 x i1> @f_ret_4xi1() { |
| 96 ret <4 x i1> undef |
| 97 } |
| 98 |
| 99 ; CHECK-NOT: f_{{[a-z]+}}_8xi1 {{.*}} disallowed |
| 100 define internal void @f_arg_8xi1(<8 x i1> %a) { |
| 101 ret void |
| 102 } |
| 103 define internal <8 x i1> @f_ret_8xi1() { |
| 104 ret <8 x i1> undef |
| 105 } |
| 106 |
| 107 ; CHECK-NOT: f_{{[a-z]+}}_16xi1 {{.*}} disallowed |
| 108 define internal void @f_arg_16xi1(<16 x i1> %a) { |
| 109 ret void |
| 110 } |
| 111 define internal <16 x i1> @f_ret_16xi1() { |
| 112 ret <16 x i1> undef |
| 113 } |
| 114 |
| 115 ; CHECK: Function f_arg_32xi1 has disallowed type: void (<32 x i1>) |
| 116 ; CHECK: Function f_ret_32xi1 has disallowed type: <32 x i1> () |
| 117 define internal void @f_arg_32xi1(<32 x i1> %a) { |
| 118 ret void |
| 119 } |
| 120 define internal <32 x i1> @f_ret_32xi1() { |
| 121 ret <32 x i1> undef |
| 122 } |
| 123 |
| 124 ; CHECK: Function f_arg_64xi1 has disallowed type: void (<64 x i1>) |
| 125 ; CHECK: Function f_ret_64xi1 has disallowed type: <64 x i1> () |
| 126 define internal void @f_arg_64xi1(<64 x i1> %a) { |
| 127 ret void |
| 128 } |
| 129 define internal <64 x i1> @f_ret_64xi1() { |
| 130 ret <64 x i1> undef |
| 131 } |
| 132 |
| 133 ; CHECK-NOT: f_{{[a-z]+}}_16xi8 {{.*}} disallowed |
| 134 define internal void @f_arg_16xi8(<16 x i8> %a) { |
| 135 ret void |
| 136 } |
| 137 define internal <16 x i8> @f_ret_16xi8() { |
| 138 ret <16 x i8> undef |
| 139 } |
| 140 |
| 141 ; CHECK-NOT: f_{{[a-z]+}}_8xi16 {{.*}} disallowed |
| 142 define internal void @f_arg_8xi16(<8 x i16> %a) { |
| 143 ret void |
| 144 } |
| 145 define internal <8 x i16> @f_ret_8xi16() { |
| 146 ret <8 x i16> undef |
| 147 } |
| 148 |
| 149 ; CHECK-NOT: f_{{[a-z]+}}_4xi32 {{.*}} disallowed |
| 150 define internal void @f_arg_4xi32(<4 x i32> %a) { |
| 151 ret void |
| 152 } |
| 153 define internal <4 x i32> @f_ret_4xi32() { |
| 154 ret <4 x i32> undef |
| 155 } |
| 156 |
| 157 ; CHECK: Function f_arg_2xi64 has disallowed type: void (<2 x i64>) |
| 158 ; CHECK: Function f_ret_2xi64 has disallowed type: <2 x i64> () |
| 159 define internal void @f_arg_2xi64(<2 x i64> %a) { |
| 160 ret void |
| 161 } |
| 162 define internal <2 x i64> @f_ret_2xi64() { |
| 163 ret <2 x i64> undef |
| 164 } |
| 165 |
| 166 ; CHECK-NOT: f_{{[a-z]+}}_4xfloat {{.*}} disallowed |
| 167 define internal void @f_arg_4xfloat(<4 x float> %a) { |
| 168 ret void |
| 169 } |
| 170 define internal <4 x float> @f_ret_4xfloat() { |
| 171 ret <4 x float> undef |
| 172 } |
| 173 |
| 174 ; CHECK: Function f_arg_2xdouble has disallowed type: void (<2 x double>) |
| 175 ; CHECK: Function f_ret_2xdouble has disallowed type: <2 x double> () |
| 176 define internal void @f_arg_2xdouble(<2 x double> %a) { |
| 177 ret void |
| 178 } |
| 179 define internal <2 x double> @f_ret_2xdouble() { |
| 180 ret <2 x double> undef |
| 181 } |
OLD | NEW |