Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 1 | // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py |
Bevin Hansson | e4ca64f | 2020-04-08 16:28:31 +0200 | [diff] [blame] | 2 | // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -ffixed-point -S -emit-llvm %s -o - | FileCheck %s --check-prefixes=CHECK,SIGNED |
| 3 | // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -ffixed-point -fpadding-on-unsigned-fixed-point -S -emit-llvm %s -o - | FileCheck %s --check-prefixes=CHECK,UNSIGNED |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 4 | |
| 5 | _Accum a; |
| 6 | _Fract f; |
| 7 | long _Fract lf; |
| 8 | unsigned _Accum ua; |
| 9 | short unsigned _Accum usa; |
| 10 | unsigned _Fract uf; |
| 11 | |
| 12 | _Sat _Accum sa; |
| 13 | _Sat _Fract sf; |
| 14 | _Sat long _Fract slf; |
| 15 | _Sat unsigned _Accum sua; |
| 16 | _Sat short unsigned _Accum susa; |
| 17 | _Sat unsigned _Fract suf; |
| 18 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 19 | int i; |
| 20 | |
| 21 | // CHECK-LABEL: @inc_a( |
| 22 | // CHECK-NEXT: entry: |
| 23 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @a, align 4 |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 24 | // CHECK-NEXT: [[TMP1:%.*]] = sub i32 [[TMP0]], -32768 |
| 25 | // CHECK-NEXT: store i32 [[TMP1]], i32* @a, align 4 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 26 | // CHECK-NEXT: ret void |
| 27 | // |
| 28 | void inc_a() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 29 | a++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 30 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 31 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 32 | // CHECK-LABEL: @inc_f( |
| 33 | // CHECK-NEXT: entry: |
| 34 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @f, align 2 |
| 35 | // CHECK-NEXT: [[TMP1:%.*]] = sub i16 [[TMP0]], -32768 |
| 36 | // CHECK-NEXT: store i16 [[TMP1]], i16* @f, align 2 |
| 37 | // CHECK-NEXT: ret void |
| 38 | // |
| 39 | void inc_f() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 40 | f++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 41 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 42 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 43 | // CHECK-LABEL: @inc_lf( |
| 44 | // CHECK-NEXT: entry: |
| 45 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @lf, align 4 |
| 46 | // CHECK-NEXT: [[TMP1:%.*]] = sub i32 [[TMP0]], -2147483648 |
| 47 | // CHECK-NEXT: store i32 [[TMP1]], i32* @lf, align 4 |
| 48 | // CHECK-NEXT: ret void |
| 49 | // |
| 50 | void inc_lf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 51 | lf++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 52 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 53 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 54 | // SIGNED-LABEL: @inc_ua( |
| 55 | // SIGNED-NEXT: entry: |
| 56 | // SIGNED-NEXT: [[TMP0:%.*]] = load i32, i32* @ua, align 4 |
| 57 | // SIGNED-NEXT: [[TMP1:%.*]] = add i32 [[TMP0]], 65536 |
| 58 | // SIGNED-NEXT: store i32 [[TMP1]], i32* @ua, align 4 |
| 59 | // SIGNED-NEXT: ret void |
| 60 | // |
| 61 | // UNSIGNED-LABEL: @inc_ua( |
| 62 | // UNSIGNED-NEXT: entry: |
| 63 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i32, i32* @ua, align 4 |
| 64 | // UNSIGNED-NEXT: [[TMP1:%.*]] = add i32 [[TMP0]], 32768 |
| 65 | // UNSIGNED-NEXT: store i32 [[TMP1]], i32* @ua, align 4 |
| 66 | // UNSIGNED-NEXT: ret void |
| 67 | // |
| 68 | void inc_ua() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 69 | ua++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 70 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 71 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 72 | // SIGNED-LABEL: @inc_usa( |
| 73 | // SIGNED-NEXT: entry: |
| 74 | // SIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @usa, align 2 |
| 75 | // SIGNED-NEXT: [[TMP1:%.*]] = add i16 [[TMP0]], 256 |
| 76 | // SIGNED-NEXT: store i16 [[TMP1]], i16* @usa, align 2 |
| 77 | // SIGNED-NEXT: ret void |
| 78 | // |
| 79 | // UNSIGNED-LABEL: @inc_usa( |
| 80 | // UNSIGNED-NEXT: entry: |
| 81 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @usa, align 2 |
| 82 | // UNSIGNED-NEXT: [[TMP1:%.*]] = add i16 [[TMP0]], 128 |
| 83 | // UNSIGNED-NEXT: store i16 [[TMP1]], i16* @usa, align 2 |
| 84 | // UNSIGNED-NEXT: ret void |
| 85 | // |
| 86 | void inc_usa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 87 | usa++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 88 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 89 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 90 | // SIGNED-LABEL: @inc_uf( |
| 91 | // SIGNED-NEXT: entry: |
| 92 | // SIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @uf, align 2 |
Juneyoung Lee | 395607a | 2020-11-29 04:26:44 +0900 | [diff] [blame] | 93 | // SIGNED-NEXT: [[TMP1:%.*]] = add i16 [[TMP0]], poison |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 94 | // SIGNED-NEXT: store i16 [[TMP1]], i16* @uf, align 2 |
| 95 | // SIGNED-NEXT: ret void |
| 96 | // |
| 97 | // UNSIGNED-LABEL: @inc_uf( |
| 98 | // UNSIGNED-NEXT: entry: |
| 99 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @uf, align 2 |
| 100 | // UNSIGNED-NEXT: [[TMP1:%.*]] = add i16 [[TMP0]], -32768 |
| 101 | // UNSIGNED-NEXT: store i16 [[TMP1]], i16* @uf, align 2 |
| 102 | // UNSIGNED-NEXT: ret void |
| 103 | // |
| 104 | void inc_uf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 105 | uf++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 106 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 107 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 108 | // CHECK-LABEL: @inc_sa( |
| 109 | // CHECK-NEXT: entry: |
| 110 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @sa, align 4 |
| 111 | // CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.ssub.sat.i32(i32 [[TMP0]], i32 -32768) |
| 112 | // CHECK-NEXT: store i32 [[TMP1]], i32* @sa, align 4 |
| 113 | // CHECK-NEXT: ret void |
| 114 | // |
| 115 | void inc_sa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 116 | sa++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 117 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 118 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 119 | // CHECK-LABEL: @inc_sf( |
| 120 | // CHECK-NEXT: entry: |
| 121 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @sf, align 2 |
| 122 | // CHECK-NEXT: [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 [[TMP0]], i16 -32768) |
| 123 | // CHECK-NEXT: store i16 [[TMP1]], i16* @sf, align 2 |
| 124 | // CHECK-NEXT: ret void |
| 125 | // |
| 126 | void inc_sf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 127 | sf++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 128 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 129 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 130 | // CHECK-LABEL: @inc_slf( |
| 131 | // CHECK-NEXT: entry: |
| 132 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @slf, align 4 |
| 133 | // CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.ssub.sat.i32(i32 [[TMP0]], i32 -2147483648) |
| 134 | // CHECK-NEXT: store i32 [[TMP1]], i32* @slf, align 4 |
| 135 | // CHECK-NEXT: ret void |
| 136 | // |
| 137 | void inc_slf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 138 | slf++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 139 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 140 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 141 | // SIGNED-LABEL: @inc_sua( |
| 142 | // SIGNED-NEXT: entry: |
| 143 | // SIGNED-NEXT: [[TMP0:%.*]] = load i32, i32* @sua, align 4 |
| 144 | // SIGNED-NEXT: [[TMP1:%.*]] = call i32 @llvm.uadd.sat.i32(i32 [[TMP0]], i32 65536) |
| 145 | // SIGNED-NEXT: store i32 [[TMP1]], i32* @sua, align 4 |
| 146 | // SIGNED-NEXT: ret void |
| 147 | // |
| 148 | // UNSIGNED-LABEL: @inc_sua( |
| 149 | // UNSIGNED-NEXT: entry: |
| 150 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i32, i32* @sua, align 4 |
Bevin Hansson | 808ac54 | 2020-08-20 14:36:35 +0200 | [diff] [blame] | 151 | // UNSIGNED-NEXT: [[TMP1:%.*]] = call i32 @llvm.sadd.sat.i32(i32 [[TMP0]], i32 32768) |
| 152 | // UNSIGNED-NEXT: [[RESIZE:%.*]] = trunc i32 [[TMP1]] to i31 |
| 153 | // UNSIGNED-NEXT: [[RESIZE1:%.*]] = zext i31 [[RESIZE]] to i32 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 154 | // UNSIGNED-NEXT: store i32 [[RESIZE1]], i32* @sua, align 4 |
| 155 | // UNSIGNED-NEXT: ret void |
| 156 | // |
| 157 | void inc_sua() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 158 | sua++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 159 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 160 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 161 | // SIGNED-LABEL: @inc_susa( |
| 162 | // SIGNED-NEXT: entry: |
| 163 | // SIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @susa, align 2 |
| 164 | // SIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.uadd.sat.i16(i16 [[TMP0]], i16 256) |
| 165 | // SIGNED-NEXT: store i16 [[TMP1]], i16* @susa, align 2 |
| 166 | // SIGNED-NEXT: ret void |
| 167 | // |
| 168 | // UNSIGNED-LABEL: @inc_susa( |
| 169 | // UNSIGNED-NEXT: entry: |
| 170 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @susa, align 2 |
Bevin Hansson | 808ac54 | 2020-08-20 14:36:35 +0200 | [diff] [blame] | 171 | // UNSIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.sadd.sat.i16(i16 [[TMP0]], i16 128) |
| 172 | // UNSIGNED-NEXT: [[RESIZE:%.*]] = trunc i16 [[TMP1]] to i15 |
| 173 | // UNSIGNED-NEXT: [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 174 | // UNSIGNED-NEXT: store i16 [[RESIZE1]], i16* @susa, align 2 |
| 175 | // UNSIGNED-NEXT: ret void |
| 176 | // |
| 177 | void inc_susa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 178 | susa++; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 179 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 180 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 181 | // SIGNED-LABEL: @inc_suf( |
| 182 | // SIGNED-NEXT: entry: |
| 183 | // SIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @suf, align 2 |
| 184 | // SIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.uadd.sat.i16(i16 [[TMP0]], i16 -1) |
| 185 | // SIGNED-NEXT: store i16 [[TMP1]], i16* @suf, align 2 |
| 186 | // SIGNED-NEXT: ret void |
| 187 | // |
| 188 | // UNSIGNED-LABEL: @inc_suf( |
| 189 | // UNSIGNED-NEXT: entry: |
| 190 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @suf, align 2 |
Bevin Hansson | 808ac54 | 2020-08-20 14:36:35 +0200 | [diff] [blame] | 191 | // UNSIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.sadd.sat.i16(i16 [[TMP0]], i16 32767) |
| 192 | // UNSIGNED-NEXT: [[RESIZE:%.*]] = trunc i16 [[TMP1]] to i15 |
| 193 | // UNSIGNED-NEXT: [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 194 | // UNSIGNED-NEXT: store i16 [[RESIZE1]], i16* @suf, align 2 |
| 195 | // UNSIGNED-NEXT: ret void |
| 196 | // |
| 197 | void inc_suf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 198 | suf++; |
| 199 | } |
| 200 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 201 | |
| 202 | // CHECK-LABEL: @dec_a( |
| 203 | // CHECK-NEXT: entry: |
| 204 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @a, align 4 |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 205 | // CHECK-NEXT: [[TMP1:%.*]] = add i32 [[TMP0]], -32768 |
| 206 | // CHECK-NEXT: store i32 [[TMP1]], i32* @a, align 4 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 207 | // CHECK-NEXT: ret void |
| 208 | // |
| 209 | void dec_a() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 210 | a--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 211 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 212 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 213 | // CHECK-LABEL: @dec_f( |
| 214 | // CHECK-NEXT: entry: |
| 215 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @f, align 2 |
| 216 | // CHECK-NEXT: [[TMP1:%.*]] = add i16 [[TMP0]], -32768 |
| 217 | // CHECK-NEXT: store i16 [[TMP1]], i16* @f, align 2 |
| 218 | // CHECK-NEXT: ret void |
| 219 | // |
| 220 | void dec_f() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 221 | f--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 222 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 223 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 224 | // CHECK-LABEL: @dec_lf( |
| 225 | // CHECK-NEXT: entry: |
| 226 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @lf, align 4 |
| 227 | // CHECK-NEXT: [[TMP1:%.*]] = add i32 [[TMP0]], -2147483648 |
| 228 | // CHECK-NEXT: store i32 [[TMP1]], i32* @lf, align 4 |
| 229 | // CHECK-NEXT: ret void |
| 230 | // |
| 231 | void dec_lf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 232 | lf--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 233 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 234 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 235 | // SIGNED-LABEL: @dec_ua( |
| 236 | // SIGNED-NEXT: entry: |
| 237 | // SIGNED-NEXT: [[TMP0:%.*]] = load i32, i32* @ua, align 4 |
| 238 | // SIGNED-NEXT: [[TMP1:%.*]] = sub i32 [[TMP0]], 65536 |
| 239 | // SIGNED-NEXT: store i32 [[TMP1]], i32* @ua, align 4 |
| 240 | // SIGNED-NEXT: ret void |
| 241 | // |
| 242 | // UNSIGNED-LABEL: @dec_ua( |
| 243 | // UNSIGNED-NEXT: entry: |
| 244 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i32, i32* @ua, align 4 |
| 245 | // UNSIGNED-NEXT: [[TMP1:%.*]] = sub i32 [[TMP0]], 32768 |
| 246 | // UNSIGNED-NEXT: store i32 [[TMP1]], i32* @ua, align 4 |
| 247 | // UNSIGNED-NEXT: ret void |
| 248 | // |
| 249 | void dec_ua() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 250 | ua--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 251 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 252 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 253 | // SIGNED-LABEL: @dec_usa( |
| 254 | // SIGNED-NEXT: entry: |
| 255 | // SIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @usa, align 2 |
| 256 | // SIGNED-NEXT: [[TMP1:%.*]] = sub i16 [[TMP0]], 256 |
| 257 | // SIGNED-NEXT: store i16 [[TMP1]], i16* @usa, align 2 |
| 258 | // SIGNED-NEXT: ret void |
| 259 | // |
| 260 | // UNSIGNED-LABEL: @dec_usa( |
| 261 | // UNSIGNED-NEXT: entry: |
| 262 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @usa, align 2 |
| 263 | // UNSIGNED-NEXT: [[TMP1:%.*]] = sub i16 [[TMP0]], 128 |
| 264 | // UNSIGNED-NEXT: store i16 [[TMP1]], i16* @usa, align 2 |
| 265 | // UNSIGNED-NEXT: ret void |
| 266 | // |
| 267 | void dec_usa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 268 | usa--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 269 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 270 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 271 | // SIGNED-LABEL: @dec_uf( |
| 272 | // SIGNED-NEXT: entry: |
| 273 | // SIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @uf, align 2 |
Juneyoung Lee | 395607a | 2020-11-29 04:26:44 +0900 | [diff] [blame] | 274 | // SIGNED-NEXT: [[TMP1:%.*]] = sub i16 [[TMP0]], poison |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 275 | // SIGNED-NEXT: store i16 [[TMP1]], i16* @uf, align 2 |
| 276 | // SIGNED-NEXT: ret void |
| 277 | // |
| 278 | // UNSIGNED-LABEL: @dec_uf( |
| 279 | // UNSIGNED-NEXT: entry: |
| 280 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @uf, align 2 |
| 281 | // UNSIGNED-NEXT: [[TMP1:%.*]] = sub i16 [[TMP0]], -32768 |
| 282 | // UNSIGNED-NEXT: store i16 [[TMP1]], i16* @uf, align 2 |
| 283 | // UNSIGNED-NEXT: ret void |
| 284 | // |
| 285 | void dec_uf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 286 | uf--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 287 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 288 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 289 | // CHECK-LABEL: @dec_sa( |
| 290 | // CHECK-NEXT: entry: |
| 291 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @sa, align 4 |
| 292 | // CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.sadd.sat.i32(i32 [[TMP0]], i32 -32768) |
| 293 | // CHECK-NEXT: store i32 [[TMP1]], i32* @sa, align 4 |
| 294 | // CHECK-NEXT: ret void |
| 295 | // |
| 296 | void dec_sa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 297 | sa--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 298 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 299 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 300 | // CHECK-LABEL: @dec_sf( |
| 301 | // CHECK-NEXT: entry: |
| 302 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @sf, align 2 |
| 303 | // CHECK-NEXT: [[TMP1:%.*]] = call i16 @llvm.sadd.sat.i16(i16 [[TMP0]], i16 -32768) |
| 304 | // CHECK-NEXT: store i16 [[TMP1]], i16* @sf, align 2 |
| 305 | // CHECK-NEXT: ret void |
| 306 | // |
| 307 | void dec_sf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 308 | sf--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 309 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 310 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 311 | // CHECK-LABEL: @dec_slf( |
| 312 | // CHECK-NEXT: entry: |
| 313 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @slf, align 4 |
| 314 | // CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.sadd.sat.i32(i32 [[TMP0]], i32 -2147483648) |
| 315 | // CHECK-NEXT: store i32 [[TMP1]], i32* @slf, align 4 |
| 316 | // CHECK-NEXT: ret void |
| 317 | // |
| 318 | void dec_slf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 319 | slf--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 320 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 321 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 322 | // SIGNED-LABEL: @dec_sua( |
| 323 | // SIGNED-NEXT: entry: |
| 324 | // SIGNED-NEXT: [[TMP0:%.*]] = load i32, i32* @sua, align 4 |
| 325 | // SIGNED-NEXT: [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[TMP0]], i32 65536) |
| 326 | // SIGNED-NEXT: store i32 [[TMP1]], i32* @sua, align 4 |
| 327 | // SIGNED-NEXT: ret void |
| 328 | // |
| 329 | // UNSIGNED-LABEL: @dec_sua( |
| 330 | // UNSIGNED-NEXT: entry: |
| 331 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i32, i32* @sua, align 4 |
Bevin Hansson | 808ac54 | 2020-08-20 14:36:35 +0200 | [diff] [blame] | 332 | // UNSIGNED-NEXT: [[TMP1:%.*]] = call i32 @llvm.ssub.sat.i32(i32 [[TMP0]], i32 32768) |
| 333 | // UNSIGNED-NEXT: [[TMP2:%.*]] = icmp slt i32 [[TMP1]], 0 |
| 334 | // UNSIGNED-NEXT: [[SATMIN:%.*]] = select i1 [[TMP2]], i32 0, i32 [[TMP1]] |
| 335 | // UNSIGNED-NEXT: [[RESIZE:%.*]] = trunc i32 [[SATMIN]] to i31 |
| 336 | // UNSIGNED-NEXT: [[RESIZE1:%.*]] = zext i31 [[RESIZE]] to i32 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 337 | // UNSIGNED-NEXT: store i32 [[RESIZE1]], i32* @sua, align 4 |
| 338 | // UNSIGNED-NEXT: ret void |
| 339 | // |
| 340 | void dec_sua() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 341 | sua--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 342 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 343 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 344 | // SIGNED-LABEL: @dec_susa( |
| 345 | // SIGNED-NEXT: entry: |
| 346 | // SIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @susa, align 2 |
| 347 | // SIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.usub.sat.i16(i16 [[TMP0]], i16 256) |
| 348 | // SIGNED-NEXT: store i16 [[TMP1]], i16* @susa, align 2 |
| 349 | // SIGNED-NEXT: ret void |
| 350 | // |
| 351 | // UNSIGNED-LABEL: @dec_susa( |
| 352 | // UNSIGNED-NEXT: entry: |
| 353 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @susa, align 2 |
Bevin Hansson | 808ac54 | 2020-08-20 14:36:35 +0200 | [diff] [blame] | 354 | // UNSIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 [[TMP0]], i16 128) |
| 355 | // UNSIGNED-NEXT: [[TMP2:%.*]] = icmp slt i16 [[TMP1]], 0 |
| 356 | // UNSIGNED-NEXT: [[SATMIN:%.*]] = select i1 [[TMP2]], i16 0, i16 [[TMP1]] |
| 357 | // UNSIGNED-NEXT: [[RESIZE:%.*]] = trunc i16 [[SATMIN]] to i15 |
| 358 | // UNSIGNED-NEXT: [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 359 | // UNSIGNED-NEXT: store i16 [[RESIZE1]], i16* @susa, align 2 |
| 360 | // UNSIGNED-NEXT: ret void |
| 361 | // |
| 362 | void dec_susa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 363 | susa--; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 364 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 365 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 366 | // SIGNED-LABEL: @dec_suf( |
| 367 | // SIGNED-NEXT: entry: |
| 368 | // SIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @suf, align 2 |
| 369 | // SIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.usub.sat.i16(i16 [[TMP0]], i16 -1) |
| 370 | // SIGNED-NEXT: store i16 [[TMP1]], i16* @suf, align 2 |
| 371 | // SIGNED-NEXT: ret void |
| 372 | // |
| 373 | // UNSIGNED-LABEL: @dec_suf( |
| 374 | // UNSIGNED-NEXT: entry: |
| 375 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @suf, align 2 |
Bevin Hansson | 808ac54 | 2020-08-20 14:36:35 +0200 | [diff] [blame] | 376 | // UNSIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 [[TMP0]], i16 32767) |
| 377 | // UNSIGNED-NEXT: [[TMP2:%.*]] = icmp slt i16 [[TMP1]], 0 |
| 378 | // UNSIGNED-NEXT: [[SATMIN:%.*]] = select i1 [[TMP2]], i16 0, i16 [[TMP1]] |
| 379 | // UNSIGNED-NEXT: [[RESIZE:%.*]] = trunc i16 [[SATMIN]] to i15 |
| 380 | // UNSIGNED-NEXT: [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 381 | // UNSIGNED-NEXT: store i16 [[RESIZE1]], i16* @suf, align 2 |
| 382 | // UNSIGNED-NEXT: ret void |
| 383 | // |
| 384 | void dec_suf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 385 | suf--; |
| 386 | } |
| 387 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 388 | |
| 389 | // CHECK-LABEL: @neg_a( |
| 390 | // CHECK-NEXT: entry: |
| 391 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @a, align 4 |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 392 | // CHECK-NEXT: [[TMP1:%.*]] = sub i32 0, [[TMP0]] |
| 393 | // CHECK-NEXT: store i32 [[TMP1]], i32* @a, align 4 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 394 | // CHECK-NEXT: ret void |
| 395 | // |
| 396 | void neg_a() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 397 | a = -a; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 398 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 399 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 400 | // CHECK-LABEL: @neg_f( |
| 401 | // CHECK-NEXT: entry: |
| 402 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @f, align 2 |
| 403 | // CHECK-NEXT: [[TMP1:%.*]] = sub i16 0, [[TMP0]] |
| 404 | // CHECK-NEXT: store i16 [[TMP1]], i16* @f, align 2 |
| 405 | // CHECK-NEXT: ret void |
| 406 | // |
| 407 | void neg_f() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 408 | f = -f; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 409 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 410 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 411 | // CHECK-LABEL: @neg_usa( |
| 412 | // CHECK-NEXT: entry: |
| 413 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @usa, align 2 |
| 414 | // CHECK-NEXT: [[TMP1:%.*]] = sub i16 0, [[TMP0]] |
| 415 | // CHECK-NEXT: store i16 [[TMP1]], i16* @usa, align 2 |
| 416 | // CHECK-NEXT: ret void |
| 417 | // |
| 418 | void neg_usa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 419 | usa = -usa; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 420 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 421 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 422 | // CHECK-LABEL: @neg_uf( |
| 423 | // CHECK-NEXT: entry: |
| 424 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @uf, align 2 |
| 425 | // CHECK-NEXT: [[TMP1:%.*]] = sub i16 0, [[TMP0]] |
| 426 | // CHECK-NEXT: store i16 [[TMP1]], i16* @uf, align 2 |
| 427 | // CHECK-NEXT: ret void |
| 428 | // |
| 429 | void neg_uf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 430 | uf = -uf; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 431 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 432 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 433 | // CHECK-LABEL: @neg_sa( |
| 434 | // CHECK-NEXT: entry: |
| 435 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @sa, align 4 |
| 436 | // CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.ssub.sat.i32(i32 0, i32 [[TMP0]]) |
| 437 | // CHECK-NEXT: store i32 [[TMP1]], i32* @sa, align 4 |
| 438 | // CHECK-NEXT: ret void |
| 439 | // |
| 440 | void neg_sa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 441 | sa = -sa; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 442 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 443 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 444 | // CHECK-LABEL: @neg_sf( |
| 445 | // CHECK-NEXT: entry: |
| 446 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @sf, align 2 |
| 447 | // CHECK-NEXT: [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 0, i16 [[TMP0]]) |
| 448 | // CHECK-NEXT: store i16 [[TMP1]], i16* @sf, align 2 |
| 449 | // CHECK-NEXT: ret void |
| 450 | // |
| 451 | void neg_sf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 452 | sf = -sf; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 453 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 454 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 455 | // SIGNED-LABEL: @neg_susa( |
| 456 | // SIGNED-NEXT: entry: |
| 457 | // SIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @susa, align 2 |
| 458 | // SIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.usub.sat.i16(i16 0, i16 [[TMP0]]) |
| 459 | // SIGNED-NEXT: store i16 [[TMP1]], i16* @susa, align 2 |
| 460 | // SIGNED-NEXT: ret void |
| 461 | // |
| 462 | // UNSIGNED-LABEL: @neg_susa( |
| 463 | // UNSIGNED-NEXT: entry: |
| 464 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @susa, align 2 |
Bevin Hansson | 808ac54 | 2020-08-20 14:36:35 +0200 | [diff] [blame] | 465 | // UNSIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 0, i16 [[TMP0]]) |
| 466 | // UNSIGNED-NEXT: [[TMP2:%.*]] = icmp slt i16 [[TMP1]], 0 |
| 467 | // UNSIGNED-NEXT: [[SATMIN:%.*]] = select i1 [[TMP2]], i16 0, i16 [[TMP1]] |
| 468 | // UNSIGNED-NEXT: [[RESIZE:%.*]] = trunc i16 [[SATMIN]] to i15 |
| 469 | // UNSIGNED-NEXT: [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 470 | // UNSIGNED-NEXT: store i16 [[RESIZE1]], i16* @susa, align 2 |
| 471 | // UNSIGNED-NEXT: ret void |
| 472 | // |
| 473 | void neg_susa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 474 | susa = -susa; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 475 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 476 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 477 | // SIGNED-LABEL: @neg_suf( |
| 478 | // SIGNED-NEXT: entry: |
| 479 | // SIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @suf, align 2 |
| 480 | // SIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.usub.sat.i16(i16 0, i16 [[TMP0]]) |
| 481 | // SIGNED-NEXT: store i16 [[TMP1]], i16* @suf, align 2 |
| 482 | // SIGNED-NEXT: ret void |
| 483 | // |
| 484 | // UNSIGNED-LABEL: @neg_suf( |
| 485 | // UNSIGNED-NEXT: entry: |
| 486 | // UNSIGNED-NEXT: [[TMP0:%.*]] = load i16, i16* @suf, align 2 |
Bevin Hansson | 808ac54 | 2020-08-20 14:36:35 +0200 | [diff] [blame] | 487 | // UNSIGNED-NEXT: [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 0, i16 [[TMP0]]) |
| 488 | // UNSIGNED-NEXT: [[TMP2:%.*]] = icmp slt i16 [[TMP1]], 0 |
| 489 | // UNSIGNED-NEXT: [[SATMIN:%.*]] = select i1 [[TMP2]], i16 0, i16 [[TMP1]] |
| 490 | // UNSIGNED-NEXT: [[RESIZE:%.*]] = trunc i16 [[SATMIN]] to i15 |
| 491 | // UNSIGNED-NEXT: [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 492 | // UNSIGNED-NEXT: store i16 [[RESIZE1]], i16* @suf, align 2 |
| 493 | // UNSIGNED-NEXT: ret void |
| 494 | // |
| 495 | void neg_suf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 496 | suf = -suf; |
| 497 | } |
| 498 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 499 | |
| 500 | // CHECK-LABEL: @plus_a( |
| 501 | // CHECK-NEXT: entry: |
| 502 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @a, align 4 |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 503 | // CHECK-NEXT: store i32 [[TMP0]], i32* @a, align 4 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 504 | // CHECK-NEXT: ret void |
| 505 | // |
| 506 | void plus_a() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 507 | a = +a; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 508 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 509 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 510 | // CHECK-LABEL: @plus_uf( |
| 511 | // CHECK-NEXT: entry: |
| 512 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @uf, align 2 |
| 513 | // CHECK-NEXT: store i16 [[TMP0]], i16* @uf, align 2 |
| 514 | // CHECK-NEXT: ret void |
| 515 | // |
| 516 | void plus_uf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 517 | uf = +uf; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 518 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 519 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 520 | // CHECK-LABEL: @plus_sa( |
| 521 | // CHECK-NEXT: entry: |
| 522 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @sa, align 4 |
| 523 | // CHECK-NEXT: store i32 [[TMP0]], i32* @sa, align 4 |
| 524 | // CHECK-NEXT: ret void |
| 525 | // |
| 526 | void plus_sa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 527 | sa = +sa; |
| 528 | } |
| 529 | |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 530 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 531 | // CHECK-LABEL: @not_a( |
| 532 | // CHECK-NEXT: entry: |
| 533 | // CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @a, align 4 |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 534 | // CHECK-NEXT: [[TOBOOL:%.*]] = icmp ne i32 [[TMP0]], 0 |
| 535 | // CHECK-NEXT: [[LNOT:%.*]] = xor i1 [[TOBOOL]], true |
| 536 | // CHECK-NEXT: [[LNOT_EXT:%.*]] = zext i1 [[LNOT]] to i32 |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 537 | // CHECK-NEXT: store i32 [[LNOT_EXT]], i32* @i, align 4 |
| 538 | // CHECK-NEXT: ret void |
| 539 | // |
| 540 | void not_a() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 541 | i = !a; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 542 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 543 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 544 | // CHECK-LABEL: @not_uf( |
| 545 | // CHECK-NEXT: entry: |
| 546 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @uf, align 2 |
| 547 | // CHECK-NEXT: [[TOBOOL:%.*]] = icmp ne i16 [[TMP0]], 0 |
| 548 | // CHECK-NEXT: [[LNOT:%.*]] = xor i1 [[TOBOOL]], true |
| 549 | // CHECK-NEXT: [[LNOT_EXT:%.*]] = zext i1 [[LNOT]] to i32 |
| 550 | // CHECK-NEXT: store i32 [[LNOT_EXT]], i32* @i, align 4 |
| 551 | // CHECK-NEXT: ret void |
| 552 | // |
| 553 | void not_uf() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 554 | i = !uf; |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 555 | } |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 556 | |
Bevin Hansson | 44ebc2c | 2020-08-20 10:24:03 +0200 | [diff] [blame] | 557 | // CHECK-LABEL: @not_susa( |
| 558 | // CHECK-NEXT: entry: |
| 559 | // CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* @susa, align 2 |
| 560 | // CHECK-NEXT: [[TOBOOL:%.*]] = icmp ne i16 [[TMP0]], 0 |
| 561 | // CHECK-NEXT: [[LNOT:%.*]] = xor i1 [[TOBOOL]], true |
| 562 | // CHECK-NEXT: [[LNOT_EXT:%.*]] = zext i1 [[LNOT]] to i32 |
| 563 | // CHECK-NEXT: store i32 [[LNOT_EXT]], i32* @i, align 4 |
| 564 | // CHECK-NEXT: ret void |
| 565 | // |
| 566 | void not_susa() { |
Bevin Hansson | 39baaab | 2020-01-08 11:12:55 +0100 | [diff] [blame] | 567 | i = !susa; |
| 568 | } |