[clang] [NFC] Remove invalid features from test and autogenerate checks. (PR #124130)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `openmp-offload-amdgpu-runtime` running on `omp-vega20-0` while building `clang` at step 7 "Add check check-offload". Full details are available at: https://lab.llvm.org/buildbot/#/builders/30/builds/1 Here is the relevant piece of the build log for the reference ``` Step 7 (Add check check-offload) failure: test (failure) TEST 'libomptarget :: amdgcn-amd-amdhsa :: offloading/pgo1.c' FAILED Exit Code: 1 Command Output (stdout): -- # RUN: at line 1 /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/./bin/clang -fopenmp-I /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.src/offload/test -I /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/openmp/runtime/src -L /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/offload -L /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/./lib -L /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/openmp/runtime/src -nogpulib -Wl,-rpath,/home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/offload -Wl,-rpath,/home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/openmp/runtime/src -Wl,-rpath,/home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/./lib -fopenmp-targets=amdgcn-amd-amdhsa /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.src/offload/test/offloading/pgo1.c -o /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/offload/test/amdgcn-amd-amdhsa/offloading/Output/pgo1.c.tmp /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/./lib/libomptarget.devicertl.a -fprofile-instr-generate -Xclang "-fprofile-instrument=clang" # executed command: /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/./bin/clang -fopenmp -I /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.src/offload/test -I /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/openmp/runtime/src -L /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/offload -L /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/./lib -L /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/openmp/runtime/src -nogpulib -Wl,-rpath,/home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/offload -Wl,-rpath,/home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/openmp/runtime/src -Wl,-rpath,/home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/./lib -fopenmp-targets=amdgcn-amd-amdhsa /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.src/offload/test/offloading/pgo1.c -o /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/offload/test/amdgcn-amd-amdhsa/offloading/Output/pgo1.c.tmp /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/./lib/libomptarget.devicertl.a -fprofile-instr-generate -Xclang -fprofile-instrument=clang # note: command had no output on stdout or stderr # RUN: at line 3 /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/offload/test/amdgcn-amd-amdhsa/offloading/Output/pgo1.c.tmp 2>&1 | /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/./bin/FileCheck /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.src/offload/test/offloading/pgo1.c --check-prefix="CLANG-PGO" # executed command: /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/runtimes/runtimes-bins/offload/test/amdgcn-amd-amdhsa/offloading/Output/pgo1.c.tmp # note: command had no output on stdout or stderr # executed command: /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.build/./bin/FileCheck /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.src/offload/test/offloading/pgo1.c --check-prefix=CLANG-PGO # .---command stderr # | /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.src/offload/test/offloading/pgo1.c:32:20: error: CLANG-PGO-NEXT: expected string not found in input # | // CLANG-PGO-NEXT: [ 0 11 20 ] # |^ # | :3:28: note: scanning from here # | Counters = # |^ # | :4:1: note: possible intended match here # | [ 0 13 20 ] # | ^ # | # | Input file: # | Check file: /home/ompworker/bbot/openmp-offload-amdgpu-runtime/llvm.src/offload/test/offloading/pgo1.c # | # | -dump-input=help explains the following input dump. # | # | Input was: # | << # |1: === GPU Profile === # |2: Target: amdgcn-amd-amdhsa # |3: Counters = # | next:32'0X error: no match found # |4: [ 0 13 20 ] # | next:32'0 # | next:32'1 ?
[clang] [NFC] Remove invalid features from test and autogenerate checks. (PR #124130)
https://github.com/labrinea closed https://github.com/llvm/llvm-project/pull/124130 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [NFC] Remove invalid features from test and autogenerate checks. (PR #124130)
https://github.com/ilinpv approved this pull request. Thanks for updating `__builtin_cpu_supports `tests accordingly. https://github.com/llvm/llvm-project/pull/124130 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [NFC] Remove invalid features from test and autogenerate checks. (PR #124130)
https://github.com/labrinea updated https://github.com/llvm/llvm-project/pull/124130 >From 1611549295c5f6964839200b828243d0a33d1a37 Mon Sep 17 00:00:00 2001 From: Alexandros Lamprineas Date: Thu, 23 Jan 2025 15:00:52 + Subject: [PATCH 1/2] [NFC] Remove invalid features from test and autogenerate checks. --- .../CodeGen/AArch64/cpu-supports-target.c | 203 -- 1 file changed, 189 insertions(+), 14 deletions(-) diff --git a/clang/test/CodeGen/AArch64/cpu-supports-target.c b/clang/test/CodeGen/AArch64/cpu-supports-target.c index b185dda2881080..a39ffd4e4a74d4 100644 --- a/clang/test/CodeGen/AArch64/cpu-supports-target.c +++ b/clang/test/CodeGen/AArch64/cpu-supports-target.c @@ -1,27 +1,150 @@ +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-attributes --check-globals all --version 5 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s -int check_all_feature() { +//. +// CHECK: @__aarch64_cpu_features = external dso_local global { i64 } +//. +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: define dso_local i32 @check_all_features( +// CHECK-SAME: ) #[[ATTR0:[0-9]+]] { +// CHECK-NEXT: [[ENTRY:.*:]] +// CHECK-NEXT:[[RETVAL:%.*]] = alloca i32, align 4 +// CHECK-NEXT:[[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP1:%.*]] = and i64 [[TMP0]], 66367 +// CHECK-NEXT:[[TMP2:%.*]] = icmp eq i64 [[TMP1]], 66367 +// CHECK-NEXT:[[TMP3:%.*]] = and i1 true, [[TMP2]] +// CHECK-NEXT:br i1 [[TMP3]], label %[[IF_THEN:.*]], label %[[IF_ELSE:.*]] +// CHECK: [[IF_THEN]]: +// CHECK-NEXT:store i32 1, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN:.*]] +// CHECK: [[IF_ELSE]]: +// CHECK-NEXT:[[TMP4:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP5:%.*]] = and i64 [[TMP4]], 14272 +// CHECK-NEXT:[[TMP6:%.*]] = icmp eq i64 [[TMP5]], 14272 +// CHECK-NEXT:[[TMP7:%.*]] = and i1 true, [[TMP6]] +// CHECK-NEXT:br i1 [[TMP7]], label %[[IF_THEN1:.*]], label %[[IF_ELSE2:.*]] +// CHECK: [[IF_THEN1]]: +// CHECK-NEXT:store i32 2, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE2]]: +// CHECK-NEXT:[[TMP8:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP9:%.*]] = and i64 [[TMP8]], 2065152 +// CHECK-NEXT:[[TMP10:%.*]] = icmp eq i64 [[TMP9]], 2065152 +// CHECK-NEXT:[[TMP11:%.*]] = and i1 true, [[TMP10]] +// CHECK-NEXT:br i1 [[TMP11]], label %[[IF_THEN3:.*]], label %[[IF_ELSE4:.*]] +// CHECK: [[IF_THEN3]]: +// CHECK-NEXT:store i32 3, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE4]]: +// CHECK-NEXT:[[TMP12:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP13:%.*]] = and i64 [[TMP12]], 288230376183169792 +// CHECK-NEXT:[[TMP14:%.*]] = icmp eq i64 [[TMP13]], 288230376183169792 +// CHECK-NEXT:[[TMP15:%.*]] = and i1 true, [[TMP14]] +// CHECK-NEXT:br i1 [[TMP15]], label %[[IF_THEN5:.*]], label %[[IF_ELSE6:.*]] +// CHECK: [[IF_THEN5]]: +// CHECK-NEXT:store i32 4, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE6]]: +// CHECK-NEXT:[[TMP16:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP17:%.*]] = and i64 [[TMP16]], 1275134720 +// CHECK-NEXT:[[TMP18:%.*]] = icmp eq i64 [[TMP17]], 1275134720 +// CHECK-NEXT:[[TMP19:%.*]] = and i1 true, [[TMP18]] +// CHECK-NEXT:br i1 [[TMP19]], label %[[IF_THEN7:.*]], label %[[IF_ELSE8:.*]] +// CHECK: [[IF_THEN7]]: +// CHECK-NEXT:store i32 5, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE8]]: +// CHECK-NEXT:[[TMP20:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP21:%.*]] = and i64 [[TMP20]], 52814742272 +// CHECK-NEXT:[[TMP22:%.*]] = icmp eq i64 [[TMP21]], 52814742272 +// CHECK-NEXT:[[TMP23:%.*]] = and i1 true, [[TMP22]] +// CHECK-NEXT:br i1 [[TMP23]], label %[[IF_THEN9:.*]], label %[[IF_ELSE10:.*]] +// CHECK: [[IF_THEN9]]: +// CHECK-NEXT:store i32 6, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE10]]: +// CHECK-NEXT:[[TMP24:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP25:%.*]] = and i64 [[TMP24]], 344671224576 +// CHECK-NEXT:[[TMP26:%.*]] = icmp eq i64 [[TMP25]], 344671224576 +// CHECK-NEXT:[[TMP27:%.*]] = and i1 true, [[TMP26]] +// CHECK-NEXT:br i1 [[TMP27]], label %[[IF_THEN11:.*]], label %[[IF_ELSE12:.*]] +// CHECK: [[IF_THEN11]]: +// CHECK-NEXT:store i32 7, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE12]]: +// CHECK-NEXT:[[TMP28:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:
[clang] [NFC] Remove invalid features from test and autogenerate checks. (PR #124130)
llvmbot wrote: @llvm/pr-subscribers-clang Author: Alexandros Lamprineas (labrinea) Changes --- Full diff: https://github.com/llvm/llvm-project/pull/124130.diff 1 Files Affected: - (modified) clang/test/CodeGen/AArch64/cpu-supports-target.c (+189-14) ``diff diff --git a/clang/test/CodeGen/AArch64/cpu-supports-target.c b/clang/test/CodeGen/AArch64/cpu-supports-target.c index b185dda2881080..a39ffd4e4a74d4 100644 --- a/clang/test/CodeGen/AArch64/cpu-supports-target.c +++ b/clang/test/CodeGen/AArch64/cpu-supports-target.c @@ -1,27 +1,150 @@ +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-attributes --check-globals all --version 5 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s -int check_all_feature() { +//. +// CHECK: @__aarch64_cpu_features = external dso_local global { i64 } +//. +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: define dso_local i32 @check_all_features( +// CHECK-SAME: ) #[[ATTR0:[0-9]+]] { +// CHECK-NEXT: [[ENTRY:.*:]] +// CHECK-NEXT:[[RETVAL:%.*]] = alloca i32, align 4 +// CHECK-NEXT:[[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP1:%.*]] = and i64 [[TMP0]], 66367 +// CHECK-NEXT:[[TMP2:%.*]] = icmp eq i64 [[TMP1]], 66367 +// CHECK-NEXT:[[TMP3:%.*]] = and i1 true, [[TMP2]] +// CHECK-NEXT:br i1 [[TMP3]], label %[[IF_THEN:.*]], label %[[IF_ELSE:.*]] +// CHECK: [[IF_THEN]]: +// CHECK-NEXT:store i32 1, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN:.*]] +// CHECK: [[IF_ELSE]]: +// CHECK-NEXT:[[TMP4:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP5:%.*]] = and i64 [[TMP4]], 14272 +// CHECK-NEXT:[[TMP6:%.*]] = icmp eq i64 [[TMP5]], 14272 +// CHECK-NEXT:[[TMP7:%.*]] = and i1 true, [[TMP6]] +// CHECK-NEXT:br i1 [[TMP7]], label %[[IF_THEN1:.*]], label %[[IF_ELSE2:.*]] +// CHECK: [[IF_THEN1]]: +// CHECK-NEXT:store i32 2, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE2]]: +// CHECK-NEXT:[[TMP8:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP9:%.*]] = and i64 [[TMP8]], 2065152 +// CHECK-NEXT:[[TMP10:%.*]] = icmp eq i64 [[TMP9]], 2065152 +// CHECK-NEXT:[[TMP11:%.*]] = and i1 true, [[TMP10]] +// CHECK-NEXT:br i1 [[TMP11]], label %[[IF_THEN3:.*]], label %[[IF_ELSE4:.*]] +// CHECK: [[IF_THEN3]]: +// CHECK-NEXT:store i32 3, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE4]]: +// CHECK-NEXT:[[TMP12:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP13:%.*]] = and i64 [[TMP12]], 288230376183169792 +// CHECK-NEXT:[[TMP14:%.*]] = icmp eq i64 [[TMP13]], 288230376183169792 +// CHECK-NEXT:[[TMP15:%.*]] = and i1 true, [[TMP14]] +// CHECK-NEXT:br i1 [[TMP15]], label %[[IF_THEN5:.*]], label %[[IF_ELSE6:.*]] +// CHECK: [[IF_THEN5]]: +// CHECK-NEXT:store i32 4, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE6]]: +// CHECK-NEXT:[[TMP16:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP17:%.*]] = and i64 [[TMP16]], 1275134720 +// CHECK-NEXT:[[TMP18:%.*]] = icmp eq i64 [[TMP17]], 1275134720 +// CHECK-NEXT:[[TMP19:%.*]] = and i1 true, [[TMP18]] +// CHECK-NEXT:br i1 [[TMP19]], label %[[IF_THEN7:.*]], label %[[IF_ELSE8:.*]] +// CHECK: [[IF_THEN7]]: +// CHECK-NEXT:store i32 5, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE8]]: +// CHECK-NEXT:[[TMP20:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP21:%.*]] = and i64 [[TMP20]], 52814742272 +// CHECK-NEXT:[[TMP22:%.*]] = icmp eq i64 [[TMP21]], 52814742272 +// CHECK-NEXT:[[TMP23:%.*]] = and i1 true, [[TMP22]] +// CHECK-NEXT:br i1 [[TMP23]], label %[[IF_THEN9:.*]], label %[[IF_ELSE10:.*]] +// CHECK: [[IF_THEN9]]: +// CHECK-NEXT:store i32 6, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE10]]: +// CHECK-NEXT:[[TMP24:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP25:%.*]] = and i64 [[TMP24]], 344671224576 +// CHECK-NEXT:[[TMP26:%.*]] = icmp eq i64 [[TMP25]], 344671224576 +// CHECK-NEXT:[[TMP27:%.*]] = and i1 true, [[TMP26]] +// CHECK-NEXT:br i1 [[TMP27]], label %[[IF_THEN11:.*]], label %[[IF_ELSE12:.*]] +// CHECK: [[IF_THEN11]]: +// CHECK-NEXT:store i32 7, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE12]]: +// CHECK-NEXT:[[TMP28:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP29:%.*]] = and i64 [[TMP28]], 3918083994400 +// CHECK-NEXT:[[TMP30:%.*]] = icmp eq i64 [[TMP29]], 3918083994400 +// CHECK-NEXT:[[TMP31:%.*]] = an
[clang] [NFC] Remove invalid features from test and autogenerate checks. (PR #124130)
https://github.com/labrinea created https://github.com/llvm/llvm-project/pull/124130 None >From 1611549295c5f6964839200b828243d0a33d1a37 Mon Sep 17 00:00:00 2001 From: Alexandros Lamprineas Date: Thu, 23 Jan 2025 15:00:52 + Subject: [PATCH] [NFC] Remove invalid features from test and autogenerate checks. --- .../CodeGen/AArch64/cpu-supports-target.c | 203 -- 1 file changed, 189 insertions(+), 14 deletions(-) diff --git a/clang/test/CodeGen/AArch64/cpu-supports-target.c b/clang/test/CodeGen/AArch64/cpu-supports-target.c index b185dda2881080..a39ffd4e4a74d4 100644 --- a/clang/test/CodeGen/AArch64/cpu-supports-target.c +++ b/clang/test/CodeGen/AArch64/cpu-supports-target.c @@ -1,27 +1,150 @@ +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-attributes --check-globals all --version 5 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s -int check_all_feature() { +//. +// CHECK: @__aarch64_cpu_features = external dso_local global { i64 } +//. +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: define dso_local i32 @check_all_features( +// CHECK-SAME: ) #[[ATTR0:[0-9]+]] { +// CHECK-NEXT: [[ENTRY:.*:]] +// CHECK-NEXT:[[RETVAL:%.*]] = alloca i32, align 4 +// CHECK-NEXT:[[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP1:%.*]] = and i64 [[TMP0]], 66367 +// CHECK-NEXT:[[TMP2:%.*]] = icmp eq i64 [[TMP1]], 66367 +// CHECK-NEXT:[[TMP3:%.*]] = and i1 true, [[TMP2]] +// CHECK-NEXT:br i1 [[TMP3]], label %[[IF_THEN:.*]], label %[[IF_ELSE:.*]] +// CHECK: [[IF_THEN]]: +// CHECK-NEXT:store i32 1, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN:.*]] +// CHECK: [[IF_ELSE]]: +// CHECK-NEXT:[[TMP4:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP5:%.*]] = and i64 [[TMP4]], 14272 +// CHECK-NEXT:[[TMP6:%.*]] = icmp eq i64 [[TMP5]], 14272 +// CHECK-NEXT:[[TMP7:%.*]] = and i1 true, [[TMP6]] +// CHECK-NEXT:br i1 [[TMP7]], label %[[IF_THEN1:.*]], label %[[IF_ELSE2:.*]] +// CHECK: [[IF_THEN1]]: +// CHECK-NEXT:store i32 2, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE2]]: +// CHECK-NEXT:[[TMP8:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP9:%.*]] = and i64 [[TMP8]], 2065152 +// CHECK-NEXT:[[TMP10:%.*]] = icmp eq i64 [[TMP9]], 2065152 +// CHECK-NEXT:[[TMP11:%.*]] = and i1 true, [[TMP10]] +// CHECK-NEXT:br i1 [[TMP11]], label %[[IF_THEN3:.*]], label %[[IF_ELSE4:.*]] +// CHECK: [[IF_THEN3]]: +// CHECK-NEXT:store i32 3, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE4]]: +// CHECK-NEXT:[[TMP12:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP13:%.*]] = and i64 [[TMP12]], 288230376183169792 +// CHECK-NEXT:[[TMP14:%.*]] = icmp eq i64 [[TMP13]], 288230376183169792 +// CHECK-NEXT:[[TMP15:%.*]] = and i1 true, [[TMP14]] +// CHECK-NEXT:br i1 [[TMP15]], label %[[IF_THEN5:.*]], label %[[IF_ELSE6:.*]] +// CHECK: [[IF_THEN5]]: +// CHECK-NEXT:store i32 4, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE6]]: +// CHECK-NEXT:[[TMP16:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP17:%.*]] = and i64 [[TMP16]], 1275134720 +// CHECK-NEXT:[[TMP18:%.*]] = icmp eq i64 [[TMP17]], 1275134720 +// CHECK-NEXT:[[TMP19:%.*]] = and i1 true, [[TMP18]] +// CHECK-NEXT:br i1 [[TMP19]], label %[[IF_THEN7:.*]], label %[[IF_ELSE8:.*]] +// CHECK: [[IF_THEN7]]: +// CHECK-NEXT:store i32 5, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE8]]: +// CHECK-NEXT:[[TMP20:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP21:%.*]] = and i64 [[TMP20]], 52814742272 +// CHECK-NEXT:[[TMP22:%.*]] = icmp eq i64 [[TMP21]], 52814742272 +// CHECK-NEXT:[[TMP23:%.*]] = and i1 true, [[TMP22]] +// CHECK-NEXT:br i1 [[TMP23]], label %[[IF_THEN9:.*]], label %[[IF_ELSE10:.*]] +// CHECK: [[IF_THEN9]]: +// CHECK-NEXT:store i32 6, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE10]]: +// CHECK-NEXT:[[TMP24:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT:[[TMP25:%.*]] = and i64 [[TMP24]], 344671224576 +// CHECK-NEXT:[[TMP26:%.*]] = icmp eq i64 [[TMP25]], 344671224576 +// CHECK-NEXT:[[TMP27:%.*]] = and i1 true, [[TMP26]] +// CHECK-NEXT:br i1 [[TMP27]], label %[[IF_THEN11:.*]], label %[[IF_ELSE12:.*]] +// CHECK: [[IF_THEN11]]: +// CHECK-NEXT:store i32 7, ptr [[RETVAL]], align 4 +// CHECK-NEXT:br label %[[RETURN]] +// CHECK: [[IF_ELSE12]]: +// CHECK-NEXT:[[TMP28:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEX