xref: /llvm-project/clang/test/Frontend/fixed_point_unary.c (revision c5de4dd1eab00df76c1a68c5f397304ceacb71f2)
144ebc2c8SBevin Hansson // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2*c5de4dd1SFangrui Song // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -ffixed-point -emit-llvm %s -o - | FileCheck %s --check-prefixes=CHECK,SIGNED
3*c5de4dd1SFangrui Song // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -ffixed-point -fpadding-on-unsigned-fixed-point -emit-llvm %s -o - | FileCheck %s --check-prefixes=CHECK,UNSIGNED
439baaabfSBevin Hansson 
539baaabfSBevin Hansson _Accum a;
639baaabfSBevin Hansson _Fract f;
739baaabfSBevin Hansson long _Fract lf;
839baaabfSBevin Hansson unsigned _Accum ua;
939baaabfSBevin Hansson short unsigned _Accum usa;
1039baaabfSBevin Hansson unsigned _Fract uf;
1139baaabfSBevin Hansson 
1239baaabfSBevin Hansson _Sat _Accum sa;
1339baaabfSBevin Hansson _Sat _Fract sf;
1439baaabfSBevin Hansson _Sat long _Fract slf;
1539baaabfSBevin Hansson _Sat unsigned _Accum sua;
1639baaabfSBevin Hansson _Sat short unsigned _Accum susa;
1739baaabfSBevin Hansson _Sat unsigned _Fract suf;
1839baaabfSBevin Hansson 
1944ebc2c8SBevin Hansson int i;
2044ebc2c8SBevin Hansson 
2144ebc2c8SBevin Hansson // CHECK-LABEL: @inc_a(
2244ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
239466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @a, align 4
2439baaabfSBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = sub i32 [[TMP0]], -32768
259466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP1]], ptr @a, align 4
2644ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
2744ebc2c8SBevin Hansson //
inc_a(void)287de71613SAaron Ballman void inc_a(void) {
2939baaabfSBevin Hansson   a++;
3044ebc2c8SBevin Hansson }
3139baaabfSBevin Hansson 
3244ebc2c8SBevin Hansson // CHECK-LABEL: @inc_f(
3344ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
349466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @f, align 2
3544ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = sub i16 [[TMP0]], -32768
369466b491SNikita Popov // CHECK-NEXT:    store i16 [[TMP1]], ptr @f, align 2
3744ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
3844ebc2c8SBevin Hansson //
inc_f(void)397de71613SAaron Ballman void inc_f(void) {
4039baaabfSBevin Hansson   f++;
4144ebc2c8SBevin Hansson }
4239baaabfSBevin Hansson 
4344ebc2c8SBevin Hansson // CHECK-LABEL: @inc_lf(
4444ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
459466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @lf, align 4
4644ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = sub i32 [[TMP0]], -2147483648
479466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP1]], ptr @lf, align 4
4844ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
4944ebc2c8SBevin Hansson //
inc_lf(void)507de71613SAaron Ballman void inc_lf(void) {
5139baaabfSBevin Hansson   lf++;
5244ebc2c8SBevin Hansson }
5339baaabfSBevin Hansson 
5444ebc2c8SBevin Hansson // SIGNED-LABEL: @inc_ua(
5544ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
569466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i32, ptr @ua, align 4
5744ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = add i32 [[TMP0]], 65536
589466b491SNikita Popov // SIGNED-NEXT:    store i32 [[TMP1]], ptr @ua, align 4
5944ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
6044ebc2c8SBevin Hansson //
6144ebc2c8SBevin Hansson // UNSIGNED-LABEL: @inc_ua(
6244ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
639466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i32, ptr @ua, align 4
6444ebc2c8SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = add i32 [[TMP0]], 32768
659466b491SNikita Popov // UNSIGNED-NEXT:    store i32 [[TMP1]], ptr @ua, align 4
6644ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
6744ebc2c8SBevin Hansson //
inc_ua(void)687de71613SAaron Ballman void inc_ua(void) {
6939baaabfSBevin Hansson   ua++;
7044ebc2c8SBevin Hansson }
7139baaabfSBevin Hansson 
7244ebc2c8SBevin Hansson // SIGNED-LABEL: @inc_usa(
7344ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
749466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @usa, align 2
7544ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = add i16 [[TMP0]], 256
769466b491SNikita Popov // SIGNED-NEXT:    store i16 [[TMP1]], ptr @usa, align 2
7744ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
7844ebc2c8SBevin Hansson //
7944ebc2c8SBevin Hansson // UNSIGNED-LABEL: @inc_usa(
8044ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
819466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @usa, align 2
8244ebc2c8SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = add i16 [[TMP0]], 128
839466b491SNikita Popov // UNSIGNED-NEXT:    store i16 [[TMP1]], ptr @usa, align 2
8444ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
8544ebc2c8SBevin Hansson //
inc_usa(void)867de71613SAaron Ballman void inc_usa(void) {
8739baaabfSBevin Hansson   usa++;
8844ebc2c8SBevin Hansson }
8939baaabfSBevin Hansson 
9044ebc2c8SBevin Hansson // SIGNED-LABEL: @inc_uf(
9144ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
929466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @uf, align 2
93395607afSJuneyoung Lee // SIGNED-NEXT:    [[TMP1:%.*]] = add i16 [[TMP0]], poison
949466b491SNikita Popov // SIGNED-NEXT:    store i16 [[TMP1]], ptr @uf, align 2
9544ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
9644ebc2c8SBevin Hansson //
9744ebc2c8SBevin Hansson // UNSIGNED-LABEL: @inc_uf(
9844ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
999466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @uf, align 2
10044ebc2c8SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = add i16 [[TMP0]], -32768
1019466b491SNikita Popov // UNSIGNED-NEXT:    store i16 [[TMP1]], ptr @uf, align 2
10244ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
10344ebc2c8SBevin Hansson //
inc_uf(void)1047de71613SAaron Ballman void inc_uf(void) {
10539baaabfSBevin Hansson   uf++;
10644ebc2c8SBevin Hansson }
10739baaabfSBevin Hansson 
10844ebc2c8SBevin Hansson // CHECK-LABEL: @inc_sa(
10944ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
1109466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @sa, align 4
11144ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.ssub.sat.i32(i32 [[TMP0]], i32 -32768)
1129466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP1]], ptr @sa, align 4
11344ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
11444ebc2c8SBevin Hansson //
inc_sa(void)1157de71613SAaron Ballman void inc_sa(void) {
11639baaabfSBevin Hansson   sa++;
11744ebc2c8SBevin Hansson }
11839baaabfSBevin Hansson 
11944ebc2c8SBevin Hansson // CHECK-LABEL: @inc_sf(
12044ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
1219466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @sf, align 2
12244ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 [[TMP0]], i16 -32768)
1239466b491SNikita Popov // CHECK-NEXT:    store i16 [[TMP1]], ptr @sf, align 2
12444ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
12544ebc2c8SBevin Hansson //
inc_sf(void)1267de71613SAaron Ballman void inc_sf(void) {
12739baaabfSBevin Hansson   sf++;
12844ebc2c8SBevin Hansson }
12939baaabfSBevin Hansson 
13044ebc2c8SBevin Hansson // CHECK-LABEL: @inc_slf(
13144ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
1329466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @slf, align 4
13344ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.ssub.sat.i32(i32 [[TMP0]], i32 -2147483648)
1349466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP1]], ptr @slf, align 4
13544ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
13644ebc2c8SBevin Hansson //
inc_slf(void)1377de71613SAaron Ballman void inc_slf(void) {
13839baaabfSBevin Hansson   slf++;
13944ebc2c8SBevin Hansson }
14039baaabfSBevin Hansson 
14144ebc2c8SBevin Hansson // SIGNED-LABEL: @inc_sua(
14244ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
1439466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i32, ptr @sua, align 4
14444ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = call i32 @llvm.uadd.sat.i32(i32 [[TMP0]], i32 65536)
1459466b491SNikita Popov // SIGNED-NEXT:    store i32 [[TMP1]], ptr @sua, align 4
14644ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
14744ebc2c8SBevin Hansson //
14844ebc2c8SBevin Hansson // UNSIGNED-LABEL: @inc_sua(
14944ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
1509466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i32, ptr @sua, align 4
151808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = call i32 @llvm.sadd.sat.i32(i32 [[TMP0]], i32 32768)
152808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE:%.*]] = trunc i32 [[TMP1]] to i31
153808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE1:%.*]] = zext i31 [[RESIZE]] to i32
1549466b491SNikita Popov // UNSIGNED-NEXT:    store i32 [[RESIZE1]], ptr @sua, align 4
15544ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
15644ebc2c8SBevin Hansson //
inc_sua(void)1577de71613SAaron Ballman void inc_sua(void) {
15839baaabfSBevin Hansson   sua++;
15944ebc2c8SBevin Hansson }
16039baaabfSBevin Hansson 
16144ebc2c8SBevin Hansson // SIGNED-LABEL: @inc_susa(
16244ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
1639466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @susa, align 2
16444ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.uadd.sat.i16(i16 [[TMP0]], i16 256)
1659466b491SNikita Popov // SIGNED-NEXT:    store i16 [[TMP1]], ptr @susa, align 2
16644ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
16744ebc2c8SBevin Hansson //
16844ebc2c8SBevin Hansson // UNSIGNED-LABEL: @inc_susa(
16944ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
1709466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @susa, align 2
171808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.sadd.sat.i16(i16 [[TMP0]], i16 128)
172808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE:%.*]] = trunc i16 [[TMP1]] to i15
173808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16
1749466b491SNikita Popov // UNSIGNED-NEXT:    store i16 [[RESIZE1]], ptr @susa, align 2
17544ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
17644ebc2c8SBevin Hansson //
inc_susa(void)1777de71613SAaron Ballman void inc_susa(void) {
17839baaabfSBevin Hansson   susa++;
17944ebc2c8SBevin Hansson }
18039baaabfSBevin Hansson 
18144ebc2c8SBevin Hansson // SIGNED-LABEL: @inc_suf(
18244ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
1839466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @suf, align 2
18444ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.uadd.sat.i16(i16 [[TMP0]], i16 -1)
1859466b491SNikita Popov // SIGNED-NEXT:    store i16 [[TMP1]], ptr @suf, align 2
18644ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
18744ebc2c8SBevin Hansson //
18844ebc2c8SBevin Hansson // UNSIGNED-LABEL: @inc_suf(
18944ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
1909466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @suf, align 2
191808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.sadd.sat.i16(i16 [[TMP0]], i16 32767)
192808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE:%.*]] = trunc i16 [[TMP1]] to i15
193808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16
1949466b491SNikita Popov // UNSIGNED-NEXT:    store i16 [[RESIZE1]], ptr @suf, align 2
19544ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
19644ebc2c8SBevin Hansson //
inc_suf(void)1977de71613SAaron Ballman void inc_suf(void) {
19839baaabfSBevin Hansson   suf++;
19939baaabfSBevin Hansson }
20039baaabfSBevin Hansson 
20144ebc2c8SBevin Hansson 
20244ebc2c8SBevin Hansson // CHECK-LABEL: @dec_a(
20344ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
2049466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @a, align 4
20539baaabfSBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = add i32 [[TMP0]], -32768
2069466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP1]], ptr @a, align 4
20744ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
20844ebc2c8SBevin Hansson //
dec_a(void)2097de71613SAaron Ballman void dec_a(void) {
21039baaabfSBevin Hansson   a--;
21144ebc2c8SBevin Hansson }
21239baaabfSBevin Hansson 
21344ebc2c8SBevin Hansson // CHECK-LABEL: @dec_f(
21444ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
2159466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @f, align 2
21644ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = add i16 [[TMP0]], -32768
2179466b491SNikita Popov // CHECK-NEXT:    store i16 [[TMP1]], ptr @f, align 2
21844ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
21944ebc2c8SBevin Hansson //
dec_f(void)2207de71613SAaron Ballman void dec_f(void) {
22139baaabfSBevin Hansson   f--;
22244ebc2c8SBevin Hansson }
22339baaabfSBevin Hansson 
22444ebc2c8SBevin Hansson // CHECK-LABEL: @dec_lf(
22544ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
2269466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @lf, align 4
22744ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = add i32 [[TMP0]], -2147483648
2289466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP1]], ptr @lf, align 4
22944ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
23044ebc2c8SBevin Hansson //
dec_lf(void)2317de71613SAaron Ballman void dec_lf(void) {
23239baaabfSBevin Hansson   lf--;
23344ebc2c8SBevin Hansson }
23439baaabfSBevin Hansson 
23544ebc2c8SBevin Hansson // SIGNED-LABEL: @dec_ua(
23644ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
2379466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i32, ptr @ua, align 4
23844ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = sub i32 [[TMP0]], 65536
2399466b491SNikita Popov // SIGNED-NEXT:    store i32 [[TMP1]], ptr @ua, align 4
24044ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
24144ebc2c8SBevin Hansson //
24244ebc2c8SBevin Hansson // UNSIGNED-LABEL: @dec_ua(
24344ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
2449466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i32, ptr @ua, align 4
24544ebc2c8SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = sub i32 [[TMP0]], 32768
2469466b491SNikita Popov // UNSIGNED-NEXT:    store i32 [[TMP1]], ptr @ua, align 4
24744ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
24844ebc2c8SBevin Hansson //
dec_ua(void)2497de71613SAaron Ballman void dec_ua(void) {
25039baaabfSBevin Hansson   ua--;
25144ebc2c8SBevin Hansson }
25239baaabfSBevin Hansson 
25344ebc2c8SBevin Hansson // SIGNED-LABEL: @dec_usa(
25444ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
2559466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @usa, align 2
25644ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = sub i16 [[TMP0]], 256
2579466b491SNikita Popov // SIGNED-NEXT:    store i16 [[TMP1]], ptr @usa, align 2
25844ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
25944ebc2c8SBevin Hansson //
26044ebc2c8SBevin Hansson // UNSIGNED-LABEL: @dec_usa(
26144ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
2629466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @usa, align 2
26344ebc2c8SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = sub i16 [[TMP0]], 128
2649466b491SNikita Popov // UNSIGNED-NEXT:    store i16 [[TMP1]], ptr @usa, align 2
26544ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
26644ebc2c8SBevin Hansson //
dec_usa(void)2677de71613SAaron Ballman void dec_usa(void) {
26839baaabfSBevin Hansson   usa--;
26944ebc2c8SBevin Hansson }
27039baaabfSBevin Hansson 
27144ebc2c8SBevin Hansson // SIGNED-LABEL: @dec_uf(
27244ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
2739466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @uf, align 2
274395607afSJuneyoung Lee // SIGNED-NEXT:    [[TMP1:%.*]] = sub i16 [[TMP0]], poison
2759466b491SNikita Popov // SIGNED-NEXT:    store i16 [[TMP1]], ptr @uf, align 2
27644ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
27744ebc2c8SBevin Hansson //
27844ebc2c8SBevin Hansson // UNSIGNED-LABEL: @dec_uf(
27944ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
2809466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @uf, align 2
28144ebc2c8SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = sub i16 [[TMP0]], -32768
2829466b491SNikita Popov // UNSIGNED-NEXT:    store i16 [[TMP1]], ptr @uf, align 2
28344ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
28444ebc2c8SBevin Hansson //
dec_uf(void)2857de71613SAaron Ballman void dec_uf(void) {
28639baaabfSBevin Hansson   uf--;
28744ebc2c8SBevin Hansson }
28839baaabfSBevin Hansson 
28944ebc2c8SBevin Hansson // CHECK-LABEL: @dec_sa(
29044ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
2919466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @sa, align 4
29244ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.sadd.sat.i32(i32 [[TMP0]], i32 -32768)
2939466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP1]], ptr @sa, align 4
29444ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
29544ebc2c8SBevin Hansson //
dec_sa(void)2967de71613SAaron Ballman void dec_sa(void) {
29739baaabfSBevin Hansson   sa--;
29844ebc2c8SBevin Hansson }
29939baaabfSBevin Hansson 
30044ebc2c8SBevin Hansson // CHECK-LABEL: @dec_sf(
30144ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
3029466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @sf, align 2
30344ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = call i16 @llvm.sadd.sat.i16(i16 [[TMP0]], i16 -32768)
3049466b491SNikita Popov // CHECK-NEXT:    store i16 [[TMP1]], ptr @sf, align 2
30544ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
30644ebc2c8SBevin Hansson //
dec_sf(void)3077de71613SAaron Ballman void dec_sf(void) {
30839baaabfSBevin Hansson   sf--;
30944ebc2c8SBevin Hansson }
31039baaabfSBevin Hansson 
31144ebc2c8SBevin Hansson // CHECK-LABEL: @dec_slf(
31244ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
3139466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @slf, align 4
31444ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.sadd.sat.i32(i32 [[TMP0]], i32 -2147483648)
3159466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP1]], ptr @slf, align 4
31644ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
31744ebc2c8SBevin Hansson //
dec_slf(void)3187de71613SAaron Ballman void dec_slf(void) {
31939baaabfSBevin Hansson   slf--;
32044ebc2c8SBevin Hansson }
32139baaabfSBevin Hansson 
32244ebc2c8SBevin Hansson // SIGNED-LABEL: @dec_sua(
32344ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
3249466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i32, ptr @sua, align 4
32544ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[TMP0]], i32 65536)
3269466b491SNikita Popov // SIGNED-NEXT:    store i32 [[TMP1]], ptr @sua, align 4
32744ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
32844ebc2c8SBevin Hansson //
32944ebc2c8SBevin Hansson // UNSIGNED-LABEL: @dec_sua(
33044ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
3319466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i32, ptr @sua, align 4
332808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = call i32 @llvm.ssub.sat.i32(i32 [[TMP0]], i32 32768)
333808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP2:%.*]] = icmp slt i32 [[TMP1]], 0
334808ac546SBevin Hansson // UNSIGNED-NEXT:    [[SATMIN:%.*]] = select i1 [[TMP2]], i32 0, i32 [[TMP1]]
335808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE:%.*]] = trunc i32 [[SATMIN]] to i31
336808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE1:%.*]] = zext i31 [[RESIZE]] to i32
3379466b491SNikita Popov // UNSIGNED-NEXT:    store i32 [[RESIZE1]], ptr @sua, align 4
33844ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
33944ebc2c8SBevin Hansson //
dec_sua(void)3407de71613SAaron Ballman void dec_sua(void) {
34139baaabfSBevin Hansson   sua--;
34244ebc2c8SBevin Hansson }
34339baaabfSBevin Hansson 
34444ebc2c8SBevin Hansson // SIGNED-LABEL: @dec_susa(
34544ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
3469466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @susa, align 2
34744ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.usub.sat.i16(i16 [[TMP0]], i16 256)
3489466b491SNikita Popov // SIGNED-NEXT:    store i16 [[TMP1]], ptr @susa, align 2
34944ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
35044ebc2c8SBevin Hansson //
35144ebc2c8SBevin Hansson // UNSIGNED-LABEL: @dec_susa(
35244ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
3539466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @susa, align 2
354808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 [[TMP0]], i16 128)
355808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP2:%.*]] = icmp slt i16 [[TMP1]], 0
356808ac546SBevin Hansson // UNSIGNED-NEXT:    [[SATMIN:%.*]] = select i1 [[TMP2]], i16 0, i16 [[TMP1]]
357808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE:%.*]] = trunc i16 [[SATMIN]] to i15
358808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16
3599466b491SNikita Popov // UNSIGNED-NEXT:    store i16 [[RESIZE1]], ptr @susa, align 2
36044ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
36144ebc2c8SBevin Hansson //
dec_susa(void)3627de71613SAaron Ballman void dec_susa(void) {
36339baaabfSBevin Hansson   susa--;
36444ebc2c8SBevin Hansson }
36539baaabfSBevin Hansson 
36644ebc2c8SBevin Hansson // SIGNED-LABEL: @dec_suf(
36744ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
3689466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @suf, align 2
36944ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.usub.sat.i16(i16 [[TMP0]], i16 -1)
3709466b491SNikita Popov // SIGNED-NEXT:    store i16 [[TMP1]], ptr @suf, align 2
37144ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
37244ebc2c8SBevin Hansson //
37344ebc2c8SBevin Hansson // UNSIGNED-LABEL: @dec_suf(
37444ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
3759466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @suf, align 2
376808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 [[TMP0]], i16 32767)
377808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP2:%.*]] = icmp slt i16 [[TMP1]], 0
378808ac546SBevin Hansson // UNSIGNED-NEXT:    [[SATMIN:%.*]] = select i1 [[TMP2]], i16 0, i16 [[TMP1]]
379808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE:%.*]] = trunc i16 [[SATMIN]] to i15
380808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16
3819466b491SNikita Popov // UNSIGNED-NEXT:    store i16 [[RESIZE1]], ptr @suf, align 2
38244ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
38344ebc2c8SBevin Hansson //
dec_suf(void)3847de71613SAaron Ballman void dec_suf(void) {
38539baaabfSBevin Hansson   suf--;
38639baaabfSBevin Hansson }
38739baaabfSBevin Hansson 
38844ebc2c8SBevin Hansson 
38944ebc2c8SBevin Hansson // CHECK-LABEL: @neg_a(
39044ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
3919466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @a, align 4
39239baaabfSBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = sub i32 0, [[TMP0]]
3939466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP1]], ptr @a, align 4
39444ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
39544ebc2c8SBevin Hansson //
neg_a(void)3967de71613SAaron Ballman void neg_a(void) {
39739baaabfSBevin Hansson   a = -a;
39844ebc2c8SBevin Hansson }
39939baaabfSBevin Hansson 
40044ebc2c8SBevin Hansson // CHECK-LABEL: @neg_f(
40144ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
4029466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @f, align 2
40344ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = sub i16 0, [[TMP0]]
4049466b491SNikita Popov // CHECK-NEXT:    store i16 [[TMP1]], ptr @f, align 2
40544ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
40644ebc2c8SBevin Hansson //
neg_f(void)4077de71613SAaron Ballman void neg_f(void) {
40839baaabfSBevin Hansson   f = -f;
40944ebc2c8SBevin Hansson }
41039baaabfSBevin Hansson 
41144ebc2c8SBevin Hansson // CHECK-LABEL: @neg_usa(
41244ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
4139466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @usa, align 2
41444ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = sub i16 0, [[TMP0]]
4159466b491SNikita Popov // CHECK-NEXT:    store i16 [[TMP1]], ptr @usa, align 2
41644ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
41744ebc2c8SBevin Hansson //
neg_usa(void)4187de71613SAaron Ballman void neg_usa(void) {
41939baaabfSBevin Hansson   usa = -usa;
42044ebc2c8SBevin Hansson }
42139baaabfSBevin Hansson 
42244ebc2c8SBevin Hansson // CHECK-LABEL: @neg_uf(
42344ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
4249466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @uf, align 2
42544ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = sub i16 0, [[TMP0]]
4269466b491SNikita Popov // CHECK-NEXT:    store i16 [[TMP1]], ptr @uf, align 2
42744ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
42844ebc2c8SBevin Hansson //
neg_uf(void)4297de71613SAaron Ballman void neg_uf(void) {
43039baaabfSBevin Hansson   uf = -uf;
43144ebc2c8SBevin Hansson }
43239baaabfSBevin Hansson 
43344ebc2c8SBevin Hansson // CHECK-LABEL: @neg_sa(
43444ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
4359466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @sa, align 4
43644ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.ssub.sat.i32(i32 0, i32 [[TMP0]])
4379466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP1]], ptr @sa, align 4
43844ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
43944ebc2c8SBevin Hansson //
neg_sa(void)4407de71613SAaron Ballman void neg_sa(void) {
44139baaabfSBevin Hansson   sa = -sa;
44244ebc2c8SBevin Hansson }
44339baaabfSBevin Hansson 
44444ebc2c8SBevin Hansson // CHECK-LABEL: @neg_sf(
44544ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
4469466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @sf, align 2
44744ebc2c8SBevin Hansson // CHECK-NEXT:    [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 0, i16 [[TMP0]])
4489466b491SNikita Popov // CHECK-NEXT:    store i16 [[TMP1]], ptr @sf, align 2
44944ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
45044ebc2c8SBevin Hansson //
neg_sf(void)4517de71613SAaron Ballman void neg_sf(void) {
45239baaabfSBevin Hansson   sf = -sf;
45344ebc2c8SBevin Hansson }
45439baaabfSBevin Hansson 
45544ebc2c8SBevin Hansson // SIGNED-LABEL: @neg_susa(
45644ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
4579466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @susa, align 2
45844ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.usub.sat.i16(i16 0, i16 [[TMP0]])
4599466b491SNikita Popov // SIGNED-NEXT:    store i16 [[TMP1]], ptr @susa, align 2
46044ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
46144ebc2c8SBevin Hansson //
46244ebc2c8SBevin Hansson // UNSIGNED-LABEL: @neg_susa(
46344ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
4649466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @susa, align 2
465808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 0, i16 [[TMP0]])
466808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP2:%.*]] = icmp slt i16 [[TMP1]], 0
467808ac546SBevin Hansson // UNSIGNED-NEXT:    [[SATMIN:%.*]] = select i1 [[TMP2]], i16 0, i16 [[TMP1]]
468808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE:%.*]] = trunc i16 [[SATMIN]] to i15
469808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16
4709466b491SNikita Popov // UNSIGNED-NEXT:    store i16 [[RESIZE1]], ptr @susa, align 2
47144ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
47244ebc2c8SBevin Hansson //
neg_susa(void)4737de71613SAaron Ballman void neg_susa(void) {
47439baaabfSBevin Hansson   susa = -susa;
47544ebc2c8SBevin Hansson }
47639baaabfSBevin Hansson 
47744ebc2c8SBevin Hansson // SIGNED-LABEL: @neg_suf(
47844ebc2c8SBevin Hansson // SIGNED-NEXT:  entry:
4799466b491SNikita Popov // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @suf, align 2
48044ebc2c8SBevin Hansson // SIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.usub.sat.i16(i16 0, i16 [[TMP0]])
4819466b491SNikita Popov // SIGNED-NEXT:    store i16 [[TMP1]], ptr @suf, align 2
48244ebc2c8SBevin Hansson // SIGNED-NEXT:    ret void
48344ebc2c8SBevin Hansson //
48444ebc2c8SBevin Hansson // UNSIGNED-LABEL: @neg_suf(
48544ebc2c8SBevin Hansson // UNSIGNED-NEXT:  entry:
4869466b491SNikita Popov // UNSIGNED-NEXT:    [[TMP0:%.*]] = load i16, ptr @suf, align 2
487808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP1:%.*]] = call i16 @llvm.ssub.sat.i16(i16 0, i16 [[TMP0]])
488808ac546SBevin Hansson // UNSIGNED-NEXT:    [[TMP2:%.*]] = icmp slt i16 [[TMP1]], 0
489808ac546SBevin Hansson // UNSIGNED-NEXT:    [[SATMIN:%.*]] = select i1 [[TMP2]], i16 0, i16 [[TMP1]]
490808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE:%.*]] = trunc i16 [[SATMIN]] to i15
491808ac546SBevin Hansson // UNSIGNED-NEXT:    [[RESIZE1:%.*]] = zext i15 [[RESIZE]] to i16
4929466b491SNikita Popov // UNSIGNED-NEXT:    store i16 [[RESIZE1]], ptr @suf, align 2
49344ebc2c8SBevin Hansson // UNSIGNED-NEXT:    ret void
49444ebc2c8SBevin Hansson //
neg_suf(void)4957de71613SAaron Ballman void neg_suf(void) {
49639baaabfSBevin Hansson   suf = -suf;
49739baaabfSBevin Hansson }
49839baaabfSBevin Hansson 
49944ebc2c8SBevin Hansson 
50044ebc2c8SBevin Hansson // CHECK-LABEL: @plus_a(
50144ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
5029466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @a, align 4
5039466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP0]], ptr @a, align 4
50444ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
50544ebc2c8SBevin Hansson //
plus_a(void)5067de71613SAaron Ballman void plus_a(void) {
50739baaabfSBevin Hansson   a = +a;
50844ebc2c8SBevin Hansson }
50939baaabfSBevin Hansson 
51044ebc2c8SBevin Hansson // CHECK-LABEL: @plus_uf(
51144ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
5129466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @uf, align 2
5139466b491SNikita Popov // CHECK-NEXT:    store i16 [[TMP0]], ptr @uf, align 2
51444ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
51544ebc2c8SBevin Hansson //
plus_uf(void)5167de71613SAaron Ballman void plus_uf(void) {
51739baaabfSBevin Hansson   uf = +uf;
51844ebc2c8SBevin Hansson }
51939baaabfSBevin Hansson 
52044ebc2c8SBevin Hansson // CHECK-LABEL: @plus_sa(
52144ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
5229466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @sa, align 4
5239466b491SNikita Popov // CHECK-NEXT:    store i32 [[TMP0]], ptr @sa, align 4
52444ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
52544ebc2c8SBevin Hansson //
plus_sa(void)5267de71613SAaron Ballman void plus_sa(void) {
52739baaabfSBevin Hansson   sa = +sa;
52839baaabfSBevin Hansson }
52939baaabfSBevin Hansson 
53039baaabfSBevin Hansson 
53144ebc2c8SBevin Hansson // CHECK-LABEL: @not_a(
53244ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
5339466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @a, align 4
53439baaabfSBevin Hansson // CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[TMP0]], 0
53539baaabfSBevin Hansson // CHECK-NEXT:    [[LNOT:%.*]] = xor i1 [[TOBOOL]], true
53639baaabfSBevin Hansson // CHECK-NEXT:    [[LNOT_EXT:%.*]] = zext i1 [[LNOT]] to i32
5379466b491SNikita Popov // CHECK-NEXT:    store i32 [[LNOT_EXT]], ptr @i, align 4
53844ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
53944ebc2c8SBevin Hansson //
not_a(void)5407de71613SAaron Ballman void not_a(void) {
54139baaabfSBevin Hansson   i = !a;
54244ebc2c8SBevin Hansson }
54339baaabfSBevin Hansson 
54444ebc2c8SBevin Hansson // CHECK-LABEL: @not_uf(
54544ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
5469466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @uf, align 2
54744ebc2c8SBevin Hansson // CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i16 [[TMP0]], 0
54844ebc2c8SBevin Hansson // CHECK-NEXT:    [[LNOT:%.*]] = xor i1 [[TOBOOL]], true
54944ebc2c8SBevin Hansson // CHECK-NEXT:    [[LNOT_EXT:%.*]] = zext i1 [[LNOT]] to i32
5509466b491SNikita Popov // CHECK-NEXT:    store i32 [[LNOT_EXT]], ptr @i, align 4
55144ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
55244ebc2c8SBevin Hansson //
not_uf(void)5537de71613SAaron Ballman void not_uf(void) {
55439baaabfSBevin Hansson   i = !uf;
55544ebc2c8SBevin Hansson }
55639baaabfSBevin Hansson 
55744ebc2c8SBevin Hansson // CHECK-LABEL: @not_susa(
55844ebc2c8SBevin Hansson // CHECK-NEXT:  entry:
5599466b491SNikita Popov // CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr @susa, align 2
56044ebc2c8SBevin Hansson // CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i16 [[TMP0]], 0
56144ebc2c8SBevin Hansson // CHECK-NEXT:    [[LNOT:%.*]] = xor i1 [[TOBOOL]], true
56244ebc2c8SBevin Hansson // CHECK-NEXT:    [[LNOT_EXT:%.*]] = zext i1 [[LNOT]] to i32
5639466b491SNikita Popov // CHECK-NEXT:    store i32 [[LNOT_EXT]], ptr @i, align 4
56444ebc2c8SBevin Hansson // CHECK-NEXT:    ret void
56544ebc2c8SBevin Hansson //
not_susa(void)5667de71613SAaron Ballman void not_susa(void) {
56739baaabfSBevin Hansson   i = !susa;
56839baaabfSBevin Hansson }
569