[clang] [libclc] [llvm] [libclc] Add initial LIT tests (PR #87989)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 7 05:04:31 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions h,cpp,cl -- clang/test/Driver/opencl-libclc.cl libclc/test/geometric/cross.cl libclc/test/integer/add_sat.cl libclc/test/integer/sub_sat.cl libclc/test/math/cos.cl libclc/test/math/fabs.cl libclc/test/math/rsqrt.cl libclc/test/misc/as_type.cl libclc/test/misc/convert.cl libclc/test/work-item/get_group_id.cl clang/include/clang/Driver/CommonArgs.h clang/lib/Driver/ToolChains/AMDGPU.cpp clang/lib/Driver/ToolChains/CommonArgs.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/libclc/test/geometric/cross.cl b/libclc/test/geometric/cross.cl
index 4cb8c53be..1a8462489 100644
--- a/libclc/test/geometric/cross.cl
+++ b/libclc/test/geometric/cross.cl
@@ -1,4 +1,5 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+// UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -7,38 +8,44 @@
//
//===----------------------------------------------------------------------===//
-// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s
+// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o -
+// --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s |
+// FileCheck %s
// CHECK-LABEL: define protected amdgpu_kernel void @foo(
-// CHECK-SAME: ptr addrspace(1) noundef align 16 captures(none) [[F:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META9:![0-9]+]] !kernel_arg_type_qual [[META10:![0-9]+]] {
-// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr addrspace(1) [[F]], align 16, !tbaa [[TBAA11:![0-9]+]]
-// CHECK-NEXT: [[ARRAYIDX1_I:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(1) [[F]], i64 16
-// CHECK-NEXT: [[TMP1:%.*]] = load <4 x float>, ptr addrspace(1) [[ARRAYIDX1_I]], align 16, !tbaa [[TBAA11]]
-// CHECK-NEXT: [[TMP2:%.*]] = extractelement <4 x float> [[TMP0]], i64 1
-// CHECK-NEXT: [[TMP3:%.*]] = extractelement <4 x float> [[TMP1]], i64 2
-// CHECK-NEXT: [[TMP4:%.*]] = extractelement <4 x float> [[TMP0]], i64 2
-// CHECK-NEXT: [[TMP5:%.*]] = extractelement <4 x float> [[TMP1]], i64 1
-// CHECK-NEXT: [[TMP6:%.*]] = fneg float [[TMP5]]
-// CHECK-NEXT: [[NEG_I_I:%.*]] = fmul float [[TMP4]], [[TMP6]]
-// CHECK-NEXT: [[TMP7:%.*]] = tail call float @llvm.fmuladd.f32(float [[TMP2]], float [[TMP3]], float [[NEG_I_I]])
+// CHECK-SAME: ptr addrspace(1) noundef align 16 captures(none) [[F:%.*]])
+// local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]]
+// !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]]
+// !kernel_arg_base_type [[META9:![0-9]+]] !kernel_arg_type_qual
+// [[META10:![0-9]+]] { CHECK-NEXT: [[ENTRY:.*:]] CHECK-NEXT: [[TMP0:%.*]] =
+// load <4 x float>, ptr addrspace(1) [[F]], align 16, !tbaa [[TBAA11:![0-9]+]]
+// CHECK-NEXT: [[ARRAYIDX1_I:%.*]] = getelementptr inbounds nuw i8, ptr
+// addrspace(1) [[F]], i64 16 CHECK-NEXT: [[TMP1:%.*]] = load <4 x float>,
+// ptr addrspace(1) [[ARRAYIDX1_I]], align 16, !tbaa [[TBAA11]] CHECK-NEXT:
+// [[TMP2:%.*]] = extractelement <4 x float> [[TMP0]], i64 1 CHECK-NEXT:
+// [[TMP3:%.*]] = extractelement <4 x float> [[TMP1]], i64 2 CHECK-NEXT:
+// [[TMP4:%.*]] = extractelement <4 x float> [[TMP0]], i64 2 CHECK-NEXT:
+// [[TMP5:%.*]] = extractelement <4 x float> [[TMP1]], i64 1 CHECK-NEXT:
+// [[TMP6:%.*]] = fneg float [[TMP5]] CHECK-NEXT: [[NEG_I_I:%.*]] = fmul
+// float [[TMP4]], [[TMP6]] CHECK-NEXT: [[TMP7:%.*]] = tail call float
+// @llvm.fmuladd.f32(float [[TMP2]], float [[TMP3]], float [[NEG_I_I]])
// CHECK-NEXT: [[TMP8:%.*]] = extractelement <4 x float> [[TMP1]], i64 0
// CHECK-NEXT: [[TMP9:%.*]] = extractelement <4 x float> [[TMP0]], i64 0
// CHECK-NEXT: [[TMP10:%.*]] = fneg float [[TMP3]]
// CHECK-NEXT: [[NEG3_I_I:%.*]] = fmul float [[TMP9]], [[TMP10]]
-// CHECK-NEXT: [[TMP11:%.*]] = tail call float @llvm.fmuladd.f32(float [[TMP4]], float [[TMP8]], float [[NEG3_I_I]])
-// CHECK-NEXT: [[TMP12:%.*]] = fneg float [[TMP8]]
-// CHECK-NEXT: [[NEG6_I_I:%.*]] = fmul float [[TMP2]], [[TMP12]]
-// CHECK-NEXT: [[TMP13:%.*]] = tail call float @llvm.fmuladd.f32(float [[TMP9]], float [[TMP5]], float [[NEG6_I_I]])
-// CHECK-NEXT: [[TMP14:%.*]] = insertelement <4 x float> <float poison, float poison, float poison, float 0.000000e+00>, float [[TMP7]], i64 0
-// CHECK-NEXT: [[TMP15:%.*]] = insertelement <4 x float> [[TMP14]], float [[TMP11]], i64 1
-// CHECK-NEXT: [[VECINIT8_I_I:%.*]] = insertelement <4 x float> [[TMP15]], float [[TMP13]], i64 2
-// CHECK-NEXT: store <4 x float> [[VECINIT8_I_I]], ptr addrspace(1) [[F]], align 16, !tbaa [[TBAA11]]
-// CHECK-NEXT: ret void
+// CHECK-NEXT: [[TMP11:%.*]] = tail call float @llvm.fmuladd.f32(float
+// [[TMP4]], float [[TMP8]], float [[NEG3_I_I]]) CHECK-NEXT: [[TMP12:%.*]] =
+// fneg float [[TMP8]] CHECK-NEXT: [[NEG6_I_I:%.*]] = fmul float [[TMP2]],
+// [[TMP12]] CHECK-NEXT: [[TMP13:%.*]] = tail call float
+// @llvm.fmuladd.f32(float [[TMP9]], float [[TMP5]], float [[NEG6_I_I]])
+// CHECK-NEXT: [[TMP14:%.*]] = insertelement <4 x float> <float poison, float
+// poison, float poison, float 0.000000e+00>, float [[TMP7]], i64 0 CHECK-NEXT:
+// [[TMP15:%.*]] = insertelement <4 x float> [[TMP14]], float [[TMP11]], i64 1
+// CHECK-NEXT: [[VECINIT8_I_I:%.*]] = insertelement <4 x float> [[TMP15]],
+// float [[TMP13]], i64 2 CHECK-NEXT: store <4 x float> [[VECINIT8_I_I]], ptr
+// addrspace(1) [[F]], align 16, !tbaa [[TBAA11]] CHECK-NEXT: ret void
//
-__kernel void foo(__global float4 *f) {
- *f = cross(f[0], f[1]);
-}
+__kernel void foo(__global float4 *f) { *f = cross(f[0], f[1]); }
//.
// CHECK: [[META6]] = !{i32 1}
// CHECK: [[META7]] = !{!"none"}
diff --git a/libclc/test/integer/add_sat.cl b/libclc/test/integer/add_sat.cl
index ef5bf77b6..8c16b2371 100644
--- a/libclc/test/integer/add_sat.cl
+++ b/libclc/test/integer/add_sat.cl
@@ -1,4 +1,5 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+// UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -7,15 +8,23 @@
//
//===----------------------------------------------------------------------===//
-// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s
+// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o -
+// --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s |
+// FileCheck %s
// CHECK-LABEL: define protected amdgpu_kernel void @foo(
-// CHECK-SAME: ptr addrspace(1) noundef writeonly align 1 captures(none) initializes((0, 1)) [[A:%.*]], ptr addrspace(1) noundef readonly align 1 captures(none) [[B:%.*]], ptr addrspace(1) noundef readonly align 1 captures(none) [[C:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META8]] !kernel_arg_type_qual [[META9:![0-9]+]] {
-// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr addrspace(1) [[B]], align 1, !tbaa [[TBAA10:![0-9]+]]
-// CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr addrspace(1) [[C]], align 1, !tbaa [[TBAA10]]
-// CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail call noundef i8 @llvm.sadd.sat.i8(i8 [[TMP0]], i8 [[TMP1]])
-// CHECK-NEXT: store i8 [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 1, !tbaa [[TBAA10]]
+// CHECK-SAME: ptr addrspace(1) noundef writeonly align 1 captures(none)
+// initializes((0, 1)) [[A:%.*]], ptr addrspace(1) noundef readonly align 1
+// captures(none) [[B:%.*]], ptr addrspace(1) noundef readonly align 1
+// captures(none) [[C:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]]
+// !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual
+// [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type
+// [[META8]] !kernel_arg_type_qual [[META9:![0-9]+]] { CHECK-NEXT: [[ENTRY:.*:]]
+// CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr addrspace(1) [[B]], align 1, !tbaa
+// [[TBAA10:![0-9]+]] CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr addrspace(1)
+// [[C]], align 1, !tbaa [[TBAA10]] CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail
+// call noundef i8 @llvm.sadd.sat.i8(i8 [[TMP0]], i8 [[TMP1]]) CHECK-NEXT: store
+// i8 [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 1, !tbaa [[TBAA10]]
// CHECK-NEXT: ret void
//
__kernel void foo(__global char *a, __global char *b, __global char *c) {
diff --git a/libclc/test/integer/sub_sat.cl b/libclc/test/integer/sub_sat.cl
index 7c3f0a3aa..5da7c6f7c 100644
--- a/libclc/test/integer/sub_sat.cl
+++ b/libclc/test/integer/sub_sat.cl
@@ -1,4 +1,5 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+// UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -7,13 +8,20 @@
//
//===----------------------------------------------------------------------===//
-// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s
+// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o -
+// --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s |
+// FileCheck %s
// CHECK-LABEL: define protected amdgpu_kernel void @test_subsat_char(
-// CHECK-SAME: ptr addrspace(1) noundef writeonly align 1 captures(none) initializes((0, 1)) [[A:%.*]], i8 noundef [[X:%.*]], i8 noundef [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META8]] !kernel_arg_type_qual [[META9:![0-9]+]] {
+// CHECK-SAME: ptr addrspace(1) noundef writeonly align 1 captures(none)
+// initializes((0, 1)) [[A:%.*]], i8 noundef [[X:%.*]], i8 noundef [[Y:%.*]])
+// local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]]
+// !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]]
+// !kernel_arg_base_type [[META8]] !kernel_arg_type_qual [[META9:![0-9]+]] {
// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail call noundef i8 @llvm.ssub.sat.i8(i8 [[X]], i8 [[Y]])
-// CHECK-NEXT: store i8 [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 1, !tbaa [[TBAA10:![0-9]+]]
+// CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail call noundef i8
+// @llvm.ssub.sat.i8(i8 [[X]], i8 [[Y]]) CHECK-NEXT: store i8
+// [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 1, !tbaa [[TBAA10:![0-9]+]]
// CHECK-NEXT: ret void
//
__kernel void test_subsat_char(__global char *a, char x, char y) {
@@ -22,10 +30,15 @@ __kernel void test_subsat_char(__global char *a, char x, char y) {
}
// CHECK-LABEL: define protected amdgpu_kernel void @test_subsat_uchar(
-// CHECK-SAME: ptr addrspace(1) noundef writeonly align 1 captures(none) initializes((0, 1)) [[A:%.*]], i8 noundef [[X:%.*]], i8 noundef [[Y:%.*]]) local_unnamed_addr #[[ATTR0]] !kernel_arg_addr_space [[META6]] !kernel_arg_access_qual [[META7]] !kernel_arg_type [[META13:![0-9]+]] !kernel_arg_base_type [[META13]] !kernel_arg_type_qual [[META9]] {
+// CHECK-SAME: ptr addrspace(1) noundef writeonly align 1 captures(none)
+// initializes((0, 1)) [[A:%.*]], i8 noundef [[X:%.*]], i8 noundef [[Y:%.*]])
+// local_unnamed_addr #[[ATTR0]] !kernel_arg_addr_space [[META6]]
+// !kernel_arg_access_qual [[META7]] !kernel_arg_type [[META13:![0-9]+]]
+// !kernel_arg_base_type [[META13]] !kernel_arg_type_qual [[META9]] {
// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail call noundef i8 @llvm.usub.sat.i8(i8 [[X]], i8 [[Y]])
-// CHECK-NEXT: store i8 [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 1, !tbaa [[TBAA10]]
+// CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail call noundef i8
+// @llvm.usub.sat.i8(i8 [[X]], i8 [[Y]]) CHECK-NEXT: store i8
+// [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 1, !tbaa [[TBAA10]]
// CHECK-NEXT: ret void
//
__kernel void test_subsat_uchar(__global uchar *a, uchar x, uchar y) {
@@ -34,10 +47,15 @@ __kernel void test_subsat_uchar(__global uchar *a, uchar x, uchar y) {
}
// CHECK-LABEL: define protected amdgpu_kernel void @test_subsat_long(
-// CHECK-SAME: ptr addrspace(1) noundef writeonly align 8 captures(none) initializes((0, 8)) [[A:%.*]], i64 noundef [[X:%.*]], i64 noundef [[Y:%.*]]) local_unnamed_addr #[[ATTR0]] !kernel_arg_addr_space [[META6]] !kernel_arg_access_qual [[META7]] !kernel_arg_type [[META14:![0-9]+]] !kernel_arg_base_type [[META14]] !kernel_arg_type_qual [[META9]] {
+// CHECK-SAME: ptr addrspace(1) noundef writeonly align 8 captures(none)
+// initializes((0, 8)) [[A:%.*]], i64 noundef [[X:%.*]], i64 noundef [[Y:%.*]])
+// local_unnamed_addr #[[ATTR0]] !kernel_arg_addr_space [[META6]]
+// !kernel_arg_access_qual [[META7]] !kernel_arg_type [[META14:![0-9]+]]
+// !kernel_arg_base_type [[META14]] !kernel_arg_type_qual [[META9]] {
// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail call noundef i64 @llvm.ssub.sat.i64(i64 [[X]], i64 [[Y]])
-// CHECK-NEXT: store i64 [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 8, !tbaa [[TBAA15:![0-9]+]]
+// CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail call noundef i64
+// @llvm.ssub.sat.i64(i64 [[X]], i64 [[Y]]) CHECK-NEXT: store i64
+// [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 8, !tbaa [[TBAA15:![0-9]+]]
// CHECK-NEXT: ret void
//
__kernel void test_subsat_long(__global long *a, long x, long y) {
@@ -46,10 +64,15 @@ __kernel void test_subsat_long(__global long *a, long x, long y) {
}
// CHECK-LABEL: define protected amdgpu_kernel void @test_subsat_ulong(
-// CHECK-SAME: ptr addrspace(1) noundef writeonly align 8 captures(none) initializes((0, 8)) [[A:%.*]], i64 noundef [[X:%.*]], i64 noundef [[Y:%.*]]) local_unnamed_addr #[[ATTR0]] !kernel_arg_addr_space [[META6]] !kernel_arg_access_qual [[META7]] !kernel_arg_type [[META17:![0-9]+]] !kernel_arg_base_type [[META17]] !kernel_arg_type_qual [[META9]] {
+// CHECK-SAME: ptr addrspace(1) noundef writeonly align 8 captures(none)
+// initializes((0, 8)) [[A:%.*]], i64 noundef [[X:%.*]], i64 noundef [[Y:%.*]])
+// local_unnamed_addr #[[ATTR0]] !kernel_arg_addr_space [[META6]]
+// !kernel_arg_access_qual [[META7]] !kernel_arg_type [[META17:![0-9]+]]
+// !kernel_arg_base_type [[META17]] !kernel_arg_type_qual [[META9]] {
// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail call noundef i64 @llvm.usub.sat.i64(i64 [[X]], i64 [[Y]])
-// CHECK-NEXT: store i64 [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 8, !tbaa [[TBAA15]]
+// CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail call noundef i64
+// @llvm.usub.sat.i64(i64 [[X]], i64 [[Y]]) CHECK-NEXT: store i64
+// [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 8, !tbaa [[TBAA15]]
// CHECK-NEXT: ret void
//
__kernel void test_subsat_ulong(__global ulong *a, ulong x, ulong y) {
diff --git a/libclc/test/math/cos.cl b/libclc/test/math/cos.cl
index 79272cce4..4a95787e8 100644
--- a/libclc/test/math/cos.cl
+++ b/libclc/test/math/cos.cl
@@ -1,4 +1,5 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+// UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -7,283 +8,393 @@
//
//===----------------------------------------------------------------------===//
-// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s
+// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o -
+// --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s |
+// FileCheck %s
// CHECK-LABEL: define protected amdgpu_kernel void @foo(
-// CHECK-SAME: ptr addrspace(1) noundef align 16 captures(none) [[F:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META9:![0-9]+]] !kernel_arg_type_qual [[META10:![0-9]+]] {
-// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr addrspace(1) [[F]], align 16, !tbaa [[TBAA11:![0-9]+]]
-// CHECK-NEXT: [[ELT_ABS_I_I_I:%.*]] = tail call <4 x float> @llvm.fabs.v4f32(<4 x float> [[TMP0]])
-// CHECK-NEXT: [[CMP_I_I:%.*]] = fcmp olt <4 x float> [[ELT_ABS_I_I_I]], splat (float 0x4160000000000000)
-// CHECK-NEXT: [[TMP1:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[ELT_ABS_I_I_I]], <4 x float> splat (float 0x3FE45F3060000000), <4 x float> splat (float 5.000000e-01))
-// CHECK-NEXT: [[ELT_TRUNC_I_I:%.*]] = tail call noundef <4 x float> @llvm.trunc.v4f32(<4 x float> [[TMP1]])
-// CHECK-NEXT: [[MUL_I30_I_I_I_I:%.*]] = fmul <4 x float> [[ELT_TRUNC_I_I]], splat (float 0x3FF921FB40000000)
-// CHECK-NEXT: [[FNEG_I31_I_I_I_I:%.*]] = fneg <4 x float> [[MUL_I30_I_I_I_I]]
-// CHECK-NEXT: [[TMP2:%.*]] = tail call noundef <4 x float> @llvm.fma.v4f32(<4 x float> [[ELT_TRUNC_I_I]], <4 x float> splat (float 0x3FF921FB40000000), <4 x float> [[FNEG_I31_I_I_I_I]])
-// CHECK-NEXT: [[SUB_I_I_I_I:%.*]] = fsub <4 x float> [[ELT_ABS_I_I_I]], [[MUL_I30_I_I_I_I]]
-// CHECK-NEXT: [[SUB2_I_I_I_I:%.*]] = fsub <4 x float> [[ELT_ABS_I_I_I]], [[SUB_I_I_I_I]]
-// CHECK-NEXT: [[SUB3_I_I_I_I:%.*]] = fsub <4 x float> [[SUB2_I_I_I_I]], [[MUL_I30_I_I_I_I]]
-// CHECK-NEXT: [[SUB4_I_I_I_I:%.*]] = fsub <4 x float> [[SUB3_I_I_I_I]], [[TMP2]]
-// CHECK-NEXT: [[ADD_I_I_I_I:%.*]] = fadd <4 x float> [[SUB_I_I_I_I]], [[SUB4_I_I_I_I]]
-// CHECK-NEXT: [[MUL_I27_I_I_I_I:%.*]] = fmul <4 x float> [[ELT_TRUNC_I_I]], splat (float 0x3E74442D00000000)
-// CHECK-NEXT: [[FNEG_I28_I_I_I_I:%.*]] = fneg <4 x float> [[MUL_I27_I_I_I_I]]
-// CHECK-NEXT: [[TMP3:%.*]] = tail call noundef <4 x float> @llvm.fma.v4f32(<4 x float> [[ELT_TRUNC_I_I]], <4 x float> splat (float 0x3E74442D00000000), <4 x float> [[FNEG_I28_I_I_I_I]])
-// CHECK-NEXT: [[SUB5_I_I_I_I:%.*]] = fsub <4 x float> [[ADD_I_I_I_I]], [[MUL_I27_I_I_I_I]]
-// CHECK-NEXT: [[SUB6_I_I_I_I:%.*]] = fsub <4 x float> [[ADD_I_I_I_I]], [[SUB5_I_I_I_I]]
-// CHECK-NEXT: [[SUB7_I_I_I_I:%.*]] = fsub <4 x float> [[SUB6_I_I_I_I]], [[MUL_I27_I_I_I_I]]
-// CHECK-NEXT: [[SUB8_I_I_I_I:%.*]] = fsub <4 x float> [[SUB7_I_I_I_I]], [[TMP3]]
-// CHECK-NEXT: [[ADD9_I_I_I_I:%.*]] = fadd <4 x float> [[SUB5_I_I_I_I]], [[SUB8_I_I_I_I]]
-// CHECK-NEXT: [[MUL_I_I_I_I_I:%.*]] = fmul <4 x float> [[ELT_TRUNC_I_I]], splat (float 0x3CF8469880000000)
-// CHECK-NEXT: [[FNEG_I_I_I_I_I:%.*]] = fneg <4 x float> [[MUL_I_I_I_I_I]]
-// CHECK-NEXT: [[TMP4:%.*]] = tail call noundef <4 x float> @llvm.fma.v4f32(<4 x float> [[ELT_TRUNC_I_I]], <4 x float> splat (float 0x3CF8469880000000), <4 x float> [[FNEG_I_I_I_I_I]])
-// CHECK-NEXT: [[SUB10_I_I_I_I:%.*]] = fsub <4 x float> [[ADD9_I_I_I_I]], [[MUL_I_I_I_I_I]]
-// CHECK-NEXT: [[SUB11_I_I_I_I:%.*]] = fsub <4 x float> [[ADD9_I_I_I_I]], [[SUB10_I_I_I_I]]
-// CHECK-NEXT: [[SUB12_I_I_I_I:%.*]] = fsub <4 x float> [[SUB11_I_I_I_I]], [[MUL_I_I_I_I_I]]
-// CHECK-NEXT: [[ADD13_I_I_I_I:%.*]] = fadd <4 x float> [[SUB10_I_I_I_I]], [[SUB12_I_I_I_I]]
-// CHECK-NEXT: [[FNEG_I_I_I_I:%.*]] = fneg <4 x float> [[TMP4]]
-// CHECK-NEXT: [[CONV_I_I_I:%.*]] = fptosi <4 x float> [[ELT_TRUNC_I_I]] to <4 x i32>
-// CHECK-NEXT: [[ASTYPE_I_I_I:%.*]] = bitcast <4 x float> [[ELT_ABS_I_I_I]] to <4 x i32>
-// CHECK-NEXT: [[SHR_I_I_I:%.*]] = lshr <4 x i32> [[ASTYPE_I_I_I]], splat (i32 23)
-// CHECK-NEXT: [[AND_I11_I_I:%.*]] = and <4 x i32> [[ASTYPE_I_I_I]], splat (i32 8388607)
-// CHECK-NEXT: [[OR_I_I_I:%.*]] = or disjoint <4 x i32> [[AND_I11_I_I]], splat (i32 8388608)
-// CHECK-NEXT: [[MUL_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 -28220501)
-// CHECK-NEXT: [[CONV_I1_I27_I_I:%.*]] = zext nneg <4 x i32> [[OR_I_I_I]] to <4 x i64>
-// CHECK-NEXT: [[MUL_I28_I_I:%.*]] = mul nuw nsw <4 x i64> [[CONV_I1_I27_I_I]], splat (i64 4266746795)
-// CHECK-NEXT: [[SHR_I29_I_I:%.*]] = lshr <4 x i64> [[MUL_I28_I_I]], splat (i64 32)
-// CHECK-NEXT: [[CONV_I2_I30_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I29_I_I]] to <4 x i32>
-// CHECK-NEXT: [[MUL2_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 1011060801)
-// CHECK-NEXT: [[ADD_I_I_I:%.*]] = add <4 x i32> [[MUL2_I_I_I]], [[CONV_I2_I30_I_I]]
-// CHECK-NEXT: [[MUL_I24_I_I:%.*]] = mul nuw nsw <4 x i64> [[CONV_I1_I27_I_I]], splat (i64 1011060801)
-// CHECK-NEXT: [[SHR_I25_I_I:%.*]] = lshr <4 x i64> [[MUL_I24_I_I]], splat (i64 32)
-// CHECK-NEXT: [[CONV_I2_I26_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I25_I_I]] to <4 x i32>
-// CHECK-NEXT: [[CMP_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD_I_I_I]], [[CONV_I2_I30_I_I]]
-// CHECK-NEXT: [[SEXT_I_I1_I:%.*]] = zext <4 x i1> [[CMP_I_I_I]] to <4 x i32>
-// CHECK-NEXT: [[ADD5_I_I_I:%.*]] = add nuw nsw <4 x i32> [[SEXT_I_I1_I]], [[CONV_I2_I26_I_I]]
-// CHECK-NEXT: [[MUL6_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 -614296167)
-// CHECK-NEXT: [[ADD7_I_I_I:%.*]] = add <4 x i32> [[ADD5_I_I_I]], [[MUL6_I_I_I]]
-// CHECK-NEXT: [[MUL_I20_I_I:%.*]] = mul nuw nsw <4 x i64> [[CONV_I1_I27_I_I]], splat (i64 3680671129)
-// CHECK-NEXT: [[SHR_I21_I_I:%.*]] = lshr <4 x i64> [[MUL_I20_I_I]], splat (i64 32)
-// CHECK-NEXT: [[CONV_I2_I22_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I21_I_I]] to <4 x i32>
-// CHECK-NEXT: [[CMP9_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD7_I_I_I]], [[ADD5_I_I_I]]
-// CHECK-NEXT: [[SEXT10_I_I_I:%.*]] = zext <4 x i1> [[CMP9_I_I_I]] to <4 x i32>
-// CHECK-NEXT: [[ADD13_I_I_I:%.*]] = add nuw nsw <4 x i32> [[SEXT10_I_I_I]], [[CONV_I2_I22_I_I]]
-// CHECK-NEXT: [[MUL14_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 -181084736)
-// CHECK-NEXT: [[ADD15_I_I_I:%.*]] = add <4 x i32> [[ADD13_I_I_I]], [[MUL14_I_I_I]]
-// CHECK-NEXT: [[MUL_I16_I_I:%.*]] = mul nuw nsw <4 x i64> [[CONV_I1_I27_I_I]], splat (i64 4113882560)
-// CHECK-NEXT: [[SHR_I17_I_I:%.*]] = lshr <4 x i64> [[MUL_I16_I_I]], splat (i64 32)
-// CHECK-NEXT: [[CONV_I2_I18_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I17_I_I]] to <4 x i32>
-// CHECK-NEXT: [[CMP17_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD15_I_I_I]], [[ADD13_I_I_I]]
-// CHECK-NEXT: [[SEXT18_I_I_I:%.*]] = zext <4 x i1> [[CMP17_I_I_I]] to <4 x i32>
-// CHECK-NEXT: [[ADD21_I_I_I:%.*]] = add nuw nsw <4 x i32> [[SEXT18_I_I_I]], [[CONV_I2_I18_I_I]]
-// CHECK-NEXT: [[MUL22_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 -64530479)
-// CHECK-NEXT: [[ADD23_I_I_I:%.*]] = add <4 x i32> [[ADD21_I_I_I]], [[MUL22_I_I_I]]
-// CHECK-NEXT: [[MUL_I12_I_I:%.*]] = mul nuw nsw <4 x i64> [[CONV_I1_I27_I_I]], splat (i64 4230436817)
-// CHECK-NEXT: [[SHR_I13_I_I:%.*]] = lshr <4 x i64> [[MUL_I12_I_I]], splat (i64 32)
-// CHECK-NEXT: [[CONV_I2_I14_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I13_I_I]] to <4 x i32>
-// CHECK-NEXT: [[CMP25_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD23_I_I_I]], [[ADD21_I_I_I]]
-// CHECK-NEXT: [[SEXT26_I_I_I:%.*]] = zext <4 x i1> [[CMP25_I_I_I]] to <4 x i32>
-// CHECK-NEXT: [[ADD29_I_I_I:%.*]] = add nuw nsw <4 x i32> [[SEXT26_I_I_I]], [[CONV_I2_I14_I_I]]
-// CHECK-NEXT: [[MUL30_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 1313084713)
-// CHECK-NEXT: [[ADD31_I_I_I:%.*]] = add <4 x i32> [[ADD29_I_I_I]], [[MUL30_I_I_I]]
-// CHECK-NEXT: [[MUL_I8_I_I:%.*]] = mul nuw nsw <4 x i64> [[CONV_I1_I27_I_I]], splat (i64 1313084713)
-// CHECK-NEXT: [[SHR_I9_I_I:%.*]] = lshr <4 x i64> [[MUL_I8_I_I]], splat (i64 32)
-// CHECK-NEXT: [[CONV_I2_I10_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I9_I_I]] to <4 x i32>
-// CHECK-NEXT: [[CMP33_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD31_I_I_I]], [[ADD29_I_I_I]]
-// CHECK-NEXT: [[SEXT34_I_I_I:%.*]] = zext <4 x i1> [[CMP33_I_I_I]] to <4 x i32>
-// CHECK-NEXT: [[ADD37_I_I_I:%.*]] = add nuw nsw <4 x i32> [[SEXT34_I_I_I]], [[CONV_I2_I10_I_I]]
-// CHECK-NEXT: [[MUL38_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 -1560706194)
-// CHECK-NEXT: [[ADD39_I_I_I:%.*]] = add <4 x i32> [[ADD37_I_I_I]], [[MUL38_I_I_I]]
-// CHECK-NEXT: [[MUL_I5_I_I:%.*]] = mul nuw nsw <4 x i64> [[CONV_I1_I27_I_I]], splat (i64 2734261102)
-// CHECK-NEXT: [[SHR_I6_I_I:%.*]] = lshr <4 x i64> [[MUL_I5_I_I]], splat (i64 32)
-// CHECK-NEXT: [[CONV_I2_I_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I6_I_I]] to <4 x i32>
-// CHECK-NEXT: [[CMP41_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD39_I_I_I]], [[ADD37_I_I_I]]
-// CHECK-NEXT: [[SEXT42_I_I_I:%.*]] = zext <4 x i1> [[CMP41_I_I_I]] to <4 x i32>
-// CHECK-NEXT: [[ADD45_I_I_I:%.*]] = add nuw nsw <4 x i32> [[SEXT42_I_I_I]], [[CONV_I2_I_I_I]]
-// CHECK-NEXT: [[SUB47_I_I_I:%.*]] = add nsw <4 x i32> [[SHR_I_I_I]], splat (i32 -120)
-// CHECK-NEXT: [[CMP48_I_I_I:%.*]] = icmp ugt <4 x i32> [[SUB47_I_I_I]], splat (i32 31)
-// CHECK-NEXT: [[COND51_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x i32> [[ADD39_I_I_I]], <4 x i32> [[ADD45_I_I_I]]
-// CHECK-NEXT: [[COND53_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x i32> [[ADD31_I_I_I]], <4 x i32> [[ADD39_I_I_I]]
-// CHECK-NEXT: [[COND55_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x i32> [[ADD23_I_I_I]], <4 x i32> [[ADD31_I_I_I]]
-// CHECK-NEXT: [[COND57_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x i32> [[ADD15_I_I_I]], <4 x i32> [[ADD23_I_I_I]]
-// CHECK-NEXT: [[COND59_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x i32> [[ADD7_I_I_I]], <4 x i32> [[ADD15_I_I_I]]
-// CHECK-NEXT: [[COND61_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x i32> [[ADD_I_I_I]], <4 x i32> [[ADD7_I_I_I]]
-// CHECK-NEXT: [[COND63_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x i32> [[MUL_I_I_I]], <4 x i32> [[ADD_I_I_I]]
-// CHECK-NEXT: [[DOTNEG_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x i32> splat (i32 -32), <4 x i32> zeroinitializer
-// CHECK-NEXT: [[SUB66_I_I_I:%.*]] = add nsw <4 x i32> [[DOTNEG_I_I_I]], [[SUB47_I_I_I]]
-// CHECK-NEXT: [[CMP67_I_I_I:%.*]] = icmp ugt <4 x i32> [[SUB66_I_I_I]], splat (i32 31)
-// CHECK-NEXT: [[COND70_I_I_I:%.*]] = select <4 x i1> [[CMP67_I_I_I]], <4 x i32> [[COND53_I_I_I]], <4 x i32> [[COND51_I_I_I]]
-// CHECK-NEXT: [[COND72_I_I_I:%.*]] = select <4 x i1> [[CMP67_I_I_I]], <4 x i32> [[COND55_I_I_I]], <4 x i32> [[COND53_I_I_I]]
-// CHECK-NEXT: [[COND74_I_I_I:%.*]] = select <4 x i1> [[CMP67_I_I_I]], <4 x i32> [[COND57_I_I_I]], <4 x i32> [[COND55_I_I_I]]
-// CHECK-NEXT: [[COND76_I_I_I:%.*]] = select <4 x i1> [[CMP67_I_I_I]], <4 x i32> [[COND59_I_I_I]], <4 x i32> [[COND57_I_I_I]]
-// CHECK-NEXT: [[COND78_I_I_I:%.*]] = select <4 x i1> [[CMP67_I_I_I]], <4 x i32> [[COND61_I_I_I]], <4 x i32> [[COND59_I_I_I]]
-// CHECK-NEXT: [[COND80_I_I_I:%.*]] = select <4 x i1> [[CMP67_I_I_I]], <4 x i32> [[COND63_I_I_I]], <4 x i32> [[COND61_I_I_I]]
-// CHECK-NEXT: [[DOTNEG379_I_I_I:%.*]] = select <4 x i1> [[CMP67_I_I_I]], <4 x i32> splat (i32 -32), <4 x i32> zeroinitializer
-// CHECK-NEXT: [[SUB83_I_I_I:%.*]] = add nsw <4 x i32> [[DOTNEG379_I_I_I]], [[SUB66_I_I_I]]
-// CHECK-NEXT: [[CMP84_I_I_I:%.*]] = icmp ugt <4 x i32> [[SUB83_I_I_I]], splat (i32 31)
-// CHECK-NEXT: [[COND87_I_I_I:%.*]] = select <4 x i1> [[CMP84_I_I_I]], <4 x i32> [[COND72_I_I_I]], <4 x i32> [[COND70_I_I_I]]
-// CHECK-NEXT: [[COND89_I_I_I:%.*]] = select <4 x i1> [[CMP84_I_I_I]], <4 x i32> [[COND74_I_I_I]], <4 x i32> [[COND72_I_I_I]]
-// CHECK-NEXT: [[COND91_I_I_I:%.*]] = select <4 x i1> [[CMP84_I_I_I]], <4 x i32> [[COND76_I_I_I]], <4 x i32> [[COND74_I_I_I]]
-// CHECK-NEXT: [[COND93_I_I_I:%.*]] = select <4 x i1> [[CMP84_I_I_I]], <4 x i32> [[COND78_I_I_I]], <4 x i32> [[COND76_I_I_I]]
-// CHECK-NEXT: [[COND95_I_I_I:%.*]] = select <4 x i1> [[CMP84_I_I_I]], <4 x i32> [[COND80_I_I_I]], <4 x i32> [[COND78_I_I_I]]
-// CHECK-NEXT: [[DOTNEG380_I_I_I:%.*]] = select <4 x i1> [[CMP84_I_I_I]], <4 x i32> splat (i32 -32), <4 x i32> zeroinitializer
-// CHECK-NEXT: [[SUB98_I_I_I:%.*]] = add nsw <4 x i32> [[DOTNEG380_I_I_I]], [[SUB83_I_I_I]]
-// CHECK-NEXT: [[CMP99_I_I_I:%.*]] = icmp ugt <4 x i32> [[SUB98_I_I_I]], splat (i32 31)
-// CHECK-NEXT: [[COND102_I_I_I:%.*]] = select <4 x i1> [[CMP99_I_I_I]], <4 x i32> [[COND89_I_I_I]], <4 x i32> [[COND87_I_I_I]]
-// CHECK-NEXT: [[COND104_I_I_I:%.*]] = select <4 x i1> [[CMP99_I_I_I]], <4 x i32> [[COND91_I_I_I]], <4 x i32> [[COND89_I_I_I]]
-// CHECK-NEXT: [[COND106_I_I_I:%.*]] = select <4 x i1> [[CMP99_I_I_I]], <4 x i32> [[COND93_I_I_I]], <4 x i32> [[COND91_I_I_I]]
-// CHECK-NEXT: [[COND108_I_I_I:%.*]] = select <4 x i1> [[CMP99_I_I_I]], <4 x i32> [[COND95_I_I_I]], <4 x i32> [[COND93_I_I_I]]
-// CHECK-NEXT: [[DOTNEG381_I_I_I:%.*]] = select <4 x i1> [[CMP99_I_I_I]], <4 x i32> splat (i32 -32), <4 x i32> zeroinitializer
-// CHECK-NEXT: [[SUB111_I_I_I:%.*]] = sub nsw <4 x i32> zeroinitializer, [[SUB98_I_I_I]]
-// CHECK-NEXT: [[CMP112_NOT_I_I_I:%.*]] = icmp eq <4 x i32> [[DOTNEG381_I_I_I]], [[SUB111_I_I_I]]
-// CHECK-NEXT: [[SUB114_I_I_I:%.*]] = sub nsw <4 x i32> splat (i32 24), [[SHR_I_I_I]]
-// CHECK-NEXT: [[SHL_MASK_I_I_I:%.*]] = and <4 x i32> [[SUB47_I_I_I]], splat (i32 31)
-// CHECK-NEXT: [[SHL_I_I_I:%.*]] = shl <4 x i32> [[COND102_I_I_I]], [[SHL_MASK_I_I_I]]
-// CHECK-NEXT: [[SHR_MASK_I_I_I:%.*]] = and <4 x i32> [[SUB114_I_I_I]], splat (i32 31)
-// CHECK-NEXT: [[SHR116_I_I_I:%.*]] = lshr <4 x i32> [[COND104_I_I_I]], [[SHR_MASK_I_I_I]]
-// CHECK-NEXT: [[OR117_I_I_I:%.*]] = or <4 x i32> [[SHL_I_I_I]], [[SHR116_I_I_I]]
-// CHECK-NEXT: [[SHL120_I_I_I:%.*]] = shl <4 x i32> [[COND104_I_I_I]], [[SHL_MASK_I_I_I]]
-// CHECK-NEXT: [[SHR122_I_I_I:%.*]] = lshr <4 x i32> [[COND106_I_I_I]], [[SHR_MASK_I_I_I]]
-// CHECK-NEXT: [[OR123_I_I_I:%.*]] = or <4 x i32> [[SHL120_I_I_I]], [[SHR122_I_I_I]]
-// CHECK-NEXT: [[SHL126_I_I_I:%.*]] = shl <4 x i32> [[COND106_I_I_I]], [[SHL_MASK_I_I_I]]
-// CHECK-NEXT: [[SHR128_I_I_I:%.*]] = lshr <4 x i32> [[COND108_I_I_I]], [[SHR_MASK_I_I_I]]
-// CHECK-NEXT: [[OR129_I_I_I:%.*]] = or <4 x i32> [[SHL126_I_I_I]], [[SHR128_I_I_I]]
-// CHECK-NEXT: [[COND131_I_I_I:%.*]] = select <4 x i1> [[CMP112_NOT_I_I_I]], <4 x i32> [[COND102_I_I_I]], <4 x i32> [[OR117_I_I_I]]
-// CHECK-NEXT: [[COND133_I_I_I:%.*]] = select <4 x i1> [[CMP112_NOT_I_I_I]], <4 x i32> [[COND104_I_I_I]], <4 x i32> [[OR123_I_I_I]]
-// CHECK-NEXT: [[COND135_I_I_I:%.*]] = select <4 x i1> [[CMP112_NOT_I_I_I]], <4 x i32> [[COND106_I_I_I]], <4 x i32> [[OR129_I_I_I]]
-// CHECK-NEXT: [[SHR136_I_I_I:%.*]] = lshr <4 x i32> [[COND131_I_I_I]], splat (i32 29)
-// CHECK-NEXT: [[OR139_I_I_I:%.*]] = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> [[COND131_I_I_I]], <4 x i32> [[COND133_I_I_I]], <4 x i32> splat (i32 2))
-// CHECK-NEXT: [[OR142_I_I_I:%.*]] = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> [[COND133_I_I_I]], <4 x i32> [[COND135_I_I_I]], <4 x i32> splat (i32 2))
-// CHECK-NEXT: [[OR145_I_I_I:%.*]] = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> [[COND135_I_I_I]], <4 x i32> [[COND108_I_I_I]], <4 x i32> splat (i32 2))
-// CHECK-NEXT: [[AND146_I_I_I:%.*]] = and <4 x i32> [[SHR136_I_I_I]], splat (i32 1)
-// CHECK-NEXT: [[SEXT148_I_I_I:%.*]] = sub nsw <4 x i32> zeroinitializer, [[AND146_I_I_I]]
-// CHECK-NEXT: [[TMP5:%.*]] = and <4 x i32> [[SEXT148_I_I_I]], splat (i32 -2147483648)
-// CHECK-NEXT: [[XOR_I_I_I:%.*]] = xor <4 x i32> [[OR139_I_I_I]], [[SEXT148_I_I_I]]
-// CHECK-NEXT: [[XOR156_I_I_I:%.*]] = xor <4 x i32> [[OR142_I_I_I]], [[SEXT148_I_I_I]]
-// CHECK-NEXT: [[XOR157_I_I_I:%.*]] = xor <4 x i32> [[OR145_I_I_I]], [[SEXT148_I_I_I]]
-// CHECK-NEXT: [[TMP6:%.*]] = extractelement <4 x i32> [[XOR_I_I_I]], i64 0
-// CHECK-NEXT: [[TMP7:%.*]] = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP6]], i1 false)
-// CHECK-NEXT: [[VECINIT_I1_I_I:%.*]] = insertelement <4 x i32> poison, i32 [[TMP7]], i64 0
-// CHECK-NEXT: [[TMP8:%.*]] = extractelement <4 x i32> [[XOR_I_I_I]], i64 1
-// CHECK-NEXT: [[TMP9:%.*]] = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP8]], i1 false)
-// CHECK-NEXT: [[VECINIT2_I2_I_I:%.*]] = insertelement <4 x i32> [[VECINIT_I1_I_I]], i32 [[TMP9]], i64 1
-// CHECK-NEXT: [[TMP10:%.*]] = extractelement <4 x i32> [[XOR_I_I_I]], i64 2
-// CHECK-NEXT: [[TMP11:%.*]] = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP10]], i1 false)
-// CHECK-NEXT: [[VECINIT4_I3_I_I:%.*]] = insertelement <4 x i32> [[VECINIT2_I2_I_I]], i32 [[TMP11]], i64 2
-// CHECK-NEXT: [[TMP12:%.*]] = extractelement <4 x i32> [[XOR_I_I_I]], i64 3
-// CHECK-NEXT: [[TMP13:%.*]] = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP12]], i1 false)
-// CHECK-NEXT: [[VECINIT6_I4_I_I:%.*]] = insertelement <4 x i32> [[VECINIT4_I3_I_I]], i32 [[TMP13]], i64 3
-// CHECK-NEXT: [[ADD159_I_I_I:%.*]] = add nuw nsw <4 x i32> [[VECINIT6_I4_I_I]], splat (i32 1)
-// CHECK-NEXT: [[SHL_MASK162_I_I_I:%.*]] = and <4 x i32> [[ADD159_I_I_I]], splat (i32 31)
-// CHECK-NEXT: [[SHL163_I_I_I:%.*]] = shl <4 x i32> [[XOR_I_I_I]], [[SHL_MASK162_I_I_I]]
-// CHECK-NEXT: [[TMP14:%.*]] = and <4 x i32> [[VECINIT6_I4_I_I]], splat (i32 31)
-// CHECK-NEXT: [[SHR_MASK164_I_I_I:%.*]] = xor <4 x i32> [[TMP14]], splat (i32 31)
-// CHECK-NEXT: [[SHR165_I_I_I:%.*]] = lshr <4 x i32> [[XOR156_I_I_I]], [[SHR_MASK164_I_I_I]]
-// CHECK-NEXT: [[OR166_I_I_I:%.*]] = or <4 x i32> [[SHL163_I_I_I]], [[SHR165_I_I_I]]
-// CHECK-NEXT: [[SHL169_I_I_I:%.*]] = shl <4 x i32> [[XOR156_I_I_I]], [[SHL_MASK162_I_I_I]]
-// CHECK-NEXT: [[SHR171_I_I_I:%.*]] = lshr <4 x i32> [[XOR157_I_I_I]], [[SHR_MASK164_I_I_I]]
-// CHECK-NEXT: [[OR172_I_I_I:%.*]] = or <4 x i32> [[SHL169_I_I_I]], [[SHR171_I_I_I]]
-// CHECK-NEXT: [[SHR176_I_I_I:%.*]] = lshr <4 x i32> [[OR166_I_I_I]], splat (i32 9)
-// CHECK-NEXT: [[TMP15:%.*]] = shl nuw nsw <4 x i32> [[VECINIT6_I4_I_I]], splat (i32 23)
-// CHECK-NEXT: [[REASS_SUB:%.*]] = sub nsw <4 x i32> [[SHR176_I_I_I]], [[TMP15]]
-// CHECK-NEXT: [[TMP16:%.*]] = add <4 x i32> [[REASS_SUB]], splat (i32 1056964608)
+// CHECK-SAME: ptr addrspace(1) noundef align 16 captures(none) [[F:%.*]])
+// local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]]
+// !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]]
+// !kernel_arg_base_type [[META9:![0-9]+]] !kernel_arg_type_qual
+// [[META10:![0-9]+]] { CHECK-NEXT: [[ENTRY:.*:]] CHECK-NEXT: [[TMP0:%.*]] =
+// load <4 x float>, ptr addrspace(1) [[F]], align 16, !tbaa [[TBAA11:![0-9]+]]
+// CHECK-NEXT: [[ELT_ABS_I_I_I:%.*]] = tail call <4 x float>
+// @llvm.fabs.v4f32(<4 x float> [[TMP0]]) CHECK-NEXT: [[CMP_I_I:%.*]] = fcmp
+// olt <4 x float> [[ELT_ABS_I_I_I]], splat (float 0x4160000000000000)
+// CHECK-NEXT: [[TMP1:%.*]] = tail call noundef <4 x float>
+// @llvm.fmuladd.v4f32(<4 x float> [[ELT_ABS_I_I_I]], <4 x float> splat (float
+// 0x3FE45F3060000000), <4 x float> splat (float 5.000000e-01)) CHECK-NEXT:
+// [[ELT_TRUNC_I_I:%.*]] = tail call noundef <4 x float> @llvm.trunc.v4f32(<4 x
+// float> [[TMP1]]) CHECK-NEXT: [[MUL_I30_I_I_I_I:%.*]] = fmul <4 x float>
+// [[ELT_TRUNC_I_I]], splat (float 0x3FF921FB40000000) CHECK-NEXT:
+// [[FNEG_I31_I_I_I_I:%.*]] = fneg <4 x float> [[MUL_I30_I_I_I_I]] CHECK-NEXT:
+// [[TMP2:%.*]] = tail call noundef <4 x float> @llvm.fma.v4f32(<4 x float>
+// [[ELT_TRUNC_I_I]], <4 x float> splat (float 0x3FF921FB40000000), <4 x float>
+// [[FNEG_I31_I_I_I_I]]) CHECK-NEXT: [[SUB_I_I_I_I:%.*]] = fsub <4 x float>
+// [[ELT_ABS_I_I_I]], [[MUL_I30_I_I_I_I]] CHECK-NEXT: [[SUB2_I_I_I_I:%.*]] =
+// fsub <4 x float> [[ELT_ABS_I_I_I]], [[SUB_I_I_I_I]] CHECK-NEXT:
+// [[SUB3_I_I_I_I:%.*]] = fsub <4 x float> [[SUB2_I_I_I_I]], [[MUL_I30_I_I_I_I]]
+// CHECK-NEXT: [[SUB4_I_I_I_I:%.*]] = fsub <4 x float> [[SUB3_I_I_I_I]],
+// [[TMP2]] CHECK-NEXT: [[ADD_I_I_I_I:%.*]] = fadd <4 x float>
+// [[SUB_I_I_I_I]], [[SUB4_I_I_I_I]] CHECK-NEXT: [[MUL_I27_I_I_I_I:%.*]] =
+// fmul <4 x float> [[ELT_TRUNC_I_I]], splat (float 0x3E74442D00000000)
+// CHECK-NEXT: [[FNEG_I28_I_I_I_I:%.*]] = fneg <4 x float>
+// [[MUL_I27_I_I_I_I]] CHECK-NEXT: [[TMP3:%.*]] = tail call noundef <4 x
+// float> @llvm.fma.v4f32(<4 x float> [[ELT_TRUNC_I_I]], <4 x float> splat
+// (float 0x3E74442D00000000), <4 x float> [[FNEG_I28_I_I_I_I]]) CHECK-NEXT:
+// [[SUB5_I_I_I_I:%.*]] = fsub <4 x float> [[ADD_I_I_I_I]], [[MUL_I27_I_I_I_I]]
+// CHECK-NEXT: [[SUB6_I_I_I_I:%.*]] = fsub <4 x float> [[ADD_I_I_I_I]],
+// [[SUB5_I_I_I_I]] CHECK-NEXT: [[SUB7_I_I_I_I:%.*]] = fsub <4 x float>
+// [[SUB6_I_I_I_I]], [[MUL_I27_I_I_I_I]] CHECK-NEXT: [[SUB8_I_I_I_I:%.*]] =
+// fsub <4 x float> [[SUB7_I_I_I_I]], [[TMP3]] CHECK-NEXT: [[ADD9_I_I_I_I:%.*]]
+// = fadd <4 x float> [[SUB5_I_I_I_I]], [[SUB8_I_I_I_I]] CHECK-NEXT:
+// [[MUL_I_I_I_I_I:%.*]] = fmul <4 x float> [[ELT_TRUNC_I_I]], splat (float
+// 0x3CF8469880000000) CHECK-NEXT: [[FNEG_I_I_I_I_I:%.*]] = fneg <4 x float>
+// [[MUL_I_I_I_I_I]] CHECK-NEXT: [[TMP4:%.*]] = tail call noundef <4 x float>
+// @llvm.fma.v4f32(<4 x float> [[ELT_TRUNC_I_I]], <4 x float> splat (float
+// 0x3CF8469880000000), <4 x float> [[FNEG_I_I_I_I_I]]) CHECK-NEXT:
+// [[SUB10_I_I_I_I:%.*]] = fsub <4 x float> [[ADD9_I_I_I_I]], [[MUL_I_I_I_I_I]]
+// CHECK-NEXT: [[SUB11_I_I_I_I:%.*]] = fsub <4 x float> [[ADD9_I_I_I_I]],
+// [[SUB10_I_I_I_I]] CHECK-NEXT: [[SUB12_I_I_I_I:%.*]] = fsub <4 x float>
+// [[SUB11_I_I_I_I]], [[MUL_I_I_I_I_I]] CHECK-NEXT: [[ADD13_I_I_I_I:%.*]] =
+// fadd <4 x float> [[SUB10_I_I_I_I]], [[SUB12_I_I_I_I]] CHECK-NEXT:
+// [[FNEG_I_I_I_I:%.*]] = fneg <4 x float> [[TMP4]] CHECK-NEXT:
+// [[CONV_I_I_I:%.*]] = fptosi <4 x float> [[ELT_TRUNC_I_I]] to <4 x i32>
+// CHECK-NEXT: [[ASTYPE_I_I_I:%.*]] = bitcast <4 x float> [[ELT_ABS_I_I_I]]
+// to <4 x i32> CHECK-NEXT: [[SHR_I_I_I:%.*]] = lshr <4 x i32>
+// [[ASTYPE_I_I_I]], splat (i32 23) CHECK-NEXT: [[AND_I11_I_I:%.*]] = and <4
+// x i32> [[ASTYPE_I_I_I]], splat (i32 8388607) CHECK-NEXT: [[OR_I_I_I:%.*]]
+// = or disjoint <4 x i32> [[AND_I11_I_I]], splat (i32 8388608) CHECK-NEXT:
+// [[MUL_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 -28220501)
+// CHECK-NEXT: [[CONV_I1_I27_I_I:%.*]] = zext nneg <4 x i32> [[OR_I_I_I]] to
+// <4 x i64> CHECK-NEXT: [[MUL_I28_I_I:%.*]] = mul nuw nsw <4 x i64>
+// [[CONV_I1_I27_I_I]], splat (i64 4266746795) CHECK-NEXT: [[SHR_I29_I_I:%.*]] =
+// lshr <4 x i64> [[MUL_I28_I_I]], splat (i64 32) CHECK-NEXT:
+// [[CONV_I2_I30_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I29_I_I]] to <4 x
+// i32> CHECK-NEXT: [[MUL2_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat
+// (i32 1011060801) CHECK-NEXT: [[ADD_I_I_I:%.*]] = add <4 x i32>
+// [[MUL2_I_I_I]], [[CONV_I2_I30_I_I]] CHECK-NEXT: [[MUL_I24_I_I:%.*]] = mul
+// nuw nsw <4 x i64> [[CONV_I1_I27_I_I]], splat (i64 1011060801) CHECK-NEXT:
+// [[SHR_I25_I_I:%.*]] = lshr <4 x i64> [[MUL_I24_I_I]], splat (i64 32)
+// CHECK-NEXT: [[CONV_I2_I26_I_I:%.*]] = trunc nuw nsw <4 x i64>
+// [[SHR_I25_I_I]] to <4 x i32> CHECK-NEXT: [[CMP_I_I_I:%.*]] = icmp ult <4 x
+// i32> [[ADD_I_I_I]], [[CONV_I2_I30_I_I]] CHECK-NEXT: [[SEXT_I_I1_I:%.*]] =
+// zext <4 x i1> [[CMP_I_I_I]] to <4 x i32> CHECK-NEXT: [[ADD5_I_I_I:%.*]] =
+// add nuw nsw <4 x i32> [[SEXT_I_I1_I]], [[CONV_I2_I26_I_I]] CHECK-NEXT:
+// [[MUL6_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 -614296167)
+// CHECK-NEXT: [[ADD7_I_I_I:%.*]] = add <4 x i32> [[ADD5_I_I_I]],
+// [[MUL6_I_I_I]] CHECK-NEXT: [[MUL_I20_I_I:%.*]] = mul nuw nsw <4 x i64>
+// [[CONV_I1_I27_I_I]], splat (i64 3680671129) CHECK-NEXT: [[SHR_I21_I_I:%.*]] =
+// lshr <4 x i64> [[MUL_I20_I_I]], splat (i64 32) CHECK-NEXT:
+// [[CONV_I2_I22_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I21_I_I]] to <4 x
+// i32> CHECK-NEXT: [[CMP9_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD7_I_I_I]],
+// [[ADD5_I_I_I]] CHECK-NEXT: [[SEXT10_I_I_I:%.*]] = zext <4 x i1>
+// [[CMP9_I_I_I]] to <4 x i32> CHECK-NEXT: [[ADD13_I_I_I:%.*]] = add nuw nsw
+// <4 x i32> [[SEXT10_I_I_I]], [[CONV_I2_I22_I_I]] CHECK-NEXT:
+// [[MUL14_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 -181084736)
+// CHECK-NEXT: [[ADD15_I_I_I:%.*]] = add <4 x i32> [[ADD13_I_I_I]],
+// [[MUL14_I_I_I]] CHECK-NEXT: [[MUL_I16_I_I:%.*]] = mul nuw nsw <4 x i64>
+// [[CONV_I1_I27_I_I]], splat (i64 4113882560) CHECK-NEXT: [[SHR_I17_I_I:%.*]] =
+// lshr <4 x i64> [[MUL_I16_I_I]], splat (i64 32) CHECK-NEXT:
+// [[CONV_I2_I18_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I17_I_I]] to <4 x
+// i32> CHECK-NEXT: [[CMP17_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD15_I_I_I]],
+// [[ADD13_I_I_I]] CHECK-NEXT: [[SEXT18_I_I_I:%.*]] = zext <4 x i1>
+// [[CMP17_I_I_I]] to <4 x i32> CHECK-NEXT: [[ADD21_I_I_I:%.*]] = add nuw nsw
+// <4 x i32> [[SEXT18_I_I_I]], [[CONV_I2_I18_I_I]] CHECK-NEXT:
+// [[MUL22_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 -64530479)
+// CHECK-NEXT: [[ADD23_I_I_I:%.*]] = add <4 x i32> [[ADD21_I_I_I]],
+// [[MUL22_I_I_I]] CHECK-NEXT: [[MUL_I12_I_I:%.*]] = mul nuw nsw <4 x i64>
+// [[CONV_I1_I27_I_I]], splat (i64 4230436817) CHECK-NEXT: [[SHR_I13_I_I:%.*]] =
+// lshr <4 x i64> [[MUL_I12_I_I]], splat (i64 32) CHECK-NEXT:
+// [[CONV_I2_I14_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I13_I_I]] to <4 x
+// i32> CHECK-NEXT: [[CMP25_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD23_I_I_I]],
+// [[ADD21_I_I_I]] CHECK-NEXT: [[SEXT26_I_I_I:%.*]] = zext <4 x i1>
+// [[CMP25_I_I_I]] to <4 x i32> CHECK-NEXT: [[ADD29_I_I_I:%.*]] = add nuw nsw
+// <4 x i32> [[SEXT26_I_I_I]], [[CONV_I2_I14_I_I]] CHECK-NEXT:
+// [[MUL30_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 1313084713)
+// CHECK-NEXT: [[ADD31_I_I_I:%.*]] = add <4 x i32> [[ADD29_I_I_I]],
+// [[MUL30_I_I_I]] CHECK-NEXT: [[MUL_I8_I_I:%.*]] = mul nuw nsw <4 x i64>
+// [[CONV_I1_I27_I_I]], splat (i64 1313084713) CHECK-NEXT: [[SHR_I9_I_I:%.*]]
+// = lshr <4 x i64> [[MUL_I8_I_I]], splat (i64 32) CHECK-NEXT:
+// [[CONV_I2_I10_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I9_I_I]] to <4 x i32>
+// CHECK-NEXT: [[CMP33_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD31_I_I_I]],
+// [[ADD29_I_I_I]] CHECK-NEXT: [[SEXT34_I_I_I:%.*]] = zext <4 x i1>
+// [[CMP33_I_I_I]] to <4 x i32> CHECK-NEXT: [[ADD37_I_I_I:%.*]] = add nuw nsw
+// <4 x i32> [[SEXT34_I_I_I]], [[CONV_I2_I10_I_I]] CHECK-NEXT:
+// [[MUL38_I_I_I:%.*]] = mul <4 x i32> [[OR_I_I_I]], splat (i32 -1560706194)
+// CHECK-NEXT: [[ADD39_I_I_I:%.*]] = add <4 x i32> [[ADD37_I_I_I]],
+// [[MUL38_I_I_I]] CHECK-NEXT: [[MUL_I5_I_I:%.*]] = mul nuw nsw <4 x i64>
+// [[CONV_I1_I27_I_I]], splat (i64 2734261102) CHECK-NEXT: [[SHR_I6_I_I:%.*]]
+// = lshr <4 x i64> [[MUL_I5_I_I]], splat (i64 32) CHECK-NEXT:
+// [[CONV_I2_I_I_I:%.*]] = trunc nuw nsw <4 x i64> [[SHR_I6_I_I]] to <4 x i32>
+// CHECK-NEXT: [[CMP41_I_I_I:%.*]] = icmp ult <4 x i32> [[ADD39_I_I_I]],
+// [[ADD37_I_I_I]] CHECK-NEXT: [[SEXT42_I_I_I:%.*]] = zext <4 x i1>
+// [[CMP41_I_I_I]] to <4 x i32> CHECK-NEXT: [[ADD45_I_I_I:%.*]] = add nuw nsw
+// <4 x i32> [[SEXT42_I_I_I]], [[CONV_I2_I_I_I]] CHECK-NEXT: [[SUB47_I_I_I:%.*]]
+// = add nsw <4 x i32> [[SHR_I_I_I]], splat (i32 -120) CHECK-NEXT:
+// [[CMP48_I_I_I:%.*]] = icmp ugt <4 x i32> [[SUB47_I_I_I]], splat (i32 31)
+// CHECK-NEXT: [[COND51_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x
+// i32> [[ADD39_I_I_I]], <4 x i32> [[ADD45_I_I_I]] CHECK-NEXT:
+// [[COND53_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x i32>
+// [[ADD31_I_I_I]], <4 x i32> [[ADD39_I_I_I]] CHECK-NEXT: [[COND55_I_I_I:%.*]] =
+// select <4 x i1> [[CMP48_I_I_I]], <4 x i32> [[ADD23_I_I_I]], <4 x i32>
+// [[ADD31_I_I_I]] CHECK-NEXT: [[COND57_I_I_I:%.*]] = select <4 x i1>
+// [[CMP48_I_I_I]], <4 x i32> [[ADD15_I_I_I]], <4 x i32> [[ADD23_I_I_I]]
+// CHECK-NEXT: [[COND59_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x
+// i32> [[ADD7_I_I_I]], <4 x i32> [[ADD15_I_I_I]] CHECK-NEXT:
+// [[COND61_I_I_I:%.*]] = select <4 x i1> [[CMP48_I_I_I]], <4 x i32>
+// [[ADD_I_I_I]], <4 x i32> [[ADD7_I_I_I]] CHECK-NEXT: [[COND63_I_I_I:%.*]] =
+// select <4 x i1> [[CMP48_I_I_I]], <4 x i32> [[MUL_I_I_I]], <4 x i32>
+// [[ADD_I_I_I]] CHECK-NEXT: [[DOTNEG_I_I_I:%.*]] = select <4 x i1>
+// [[CMP48_I_I_I]], <4 x i32> splat (i32 -32), <4 x i32> zeroinitializer
+// CHECK-NEXT: [[SUB66_I_I_I:%.*]] = add nsw <4 x i32> [[DOTNEG_I_I_I]],
+// [[SUB47_I_I_I]] CHECK-NEXT: [[CMP67_I_I_I:%.*]] = icmp ugt <4 x i32>
+// [[SUB66_I_I_I]], splat (i32 31) CHECK-NEXT: [[COND70_I_I_I:%.*]] = select
+// <4 x i1> [[CMP67_I_I_I]], <4 x i32> [[COND53_I_I_I]], <4 x i32>
+// [[COND51_I_I_I]] CHECK-NEXT: [[COND72_I_I_I:%.*]] = select <4 x i1>
+// [[CMP67_I_I_I]], <4 x i32> [[COND55_I_I_I]], <4 x i32> [[COND53_I_I_I]]
+// CHECK-NEXT: [[COND74_I_I_I:%.*]] = select <4 x i1> [[CMP67_I_I_I]], <4 x
+// i32> [[COND57_I_I_I]], <4 x i32> [[COND55_I_I_I]] CHECK-NEXT:
+// [[COND76_I_I_I:%.*]] = select <4 x i1> [[CMP67_I_I_I]], <4 x i32>
+// [[COND59_I_I_I]], <4 x i32> [[COND57_I_I_I]] CHECK-NEXT: [[COND78_I_I_I:%.*]]
+// = select <4 x i1> [[CMP67_I_I_I]], <4 x i32> [[COND61_I_I_I]], <4 x i32>
+// [[COND59_I_I_I]] CHECK-NEXT: [[COND80_I_I_I:%.*]] = select <4 x i1>
+// [[CMP67_I_I_I]], <4 x i32> [[COND63_I_I_I]], <4 x i32> [[COND61_I_I_I]]
+// CHECK-NEXT: [[DOTNEG379_I_I_I:%.*]] = select <4 x i1> [[CMP67_I_I_I]], <4
+// x i32> splat (i32 -32), <4 x i32> zeroinitializer CHECK-NEXT:
+// [[SUB83_I_I_I:%.*]] = add nsw <4 x i32> [[DOTNEG379_I_I_I]], [[SUB66_I_I_I]]
+// CHECK-NEXT: [[CMP84_I_I_I:%.*]] = icmp ugt <4 x i32> [[SUB83_I_I_I]],
+// splat (i32 31) CHECK-NEXT: [[COND87_I_I_I:%.*]] = select <4 x i1>
+// [[CMP84_I_I_I]], <4 x i32> [[COND72_I_I_I]], <4 x i32> [[COND70_I_I_I]]
+// CHECK-NEXT: [[COND89_I_I_I:%.*]] = select <4 x i1> [[CMP84_I_I_I]], <4 x
+// i32> [[COND74_I_I_I]], <4 x i32> [[COND72_I_I_I]] CHECK-NEXT:
+// [[COND91_I_I_I:%.*]] = select <4 x i1> [[CMP84_I_I_I]], <4 x i32>
+// [[COND76_I_I_I]], <4 x i32> [[COND74_I_I_I]] CHECK-NEXT: [[COND93_I_I_I:%.*]]
+// = select <4 x i1> [[CMP84_I_I_I]], <4 x i32> [[COND78_I_I_I]], <4 x i32>
+// [[COND76_I_I_I]] CHECK-NEXT: [[COND95_I_I_I:%.*]] = select <4 x i1>
+// [[CMP84_I_I_I]], <4 x i32> [[COND80_I_I_I]], <4 x i32> [[COND78_I_I_I]]
+// CHECK-NEXT: [[DOTNEG380_I_I_I:%.*]] = select <4 x i1> [[CMP84_I_I_I]], <4
+// x i32> splat (i32 -32), <4 x i32> zeroinitializer CHECK-NEXT:
+// [[SUB98_I_I_I:%.*]] = add nsw <4 x i32> [[DOTNEG380_I_I_I]], [[SUB83_I_I_I]]
+// CHECK-NEXT: [[CMP99_I_I_I:%.*]] = icmp ugt <4 x i32> [[SUB98_I_I_I]],
+// splat (i32 31) CHECK-NEXT: [[COND102_I_I_I:%.*]] = select <4 x i1>
+// [[CMP99_I_I_I]], <4 x i32> [[COND89_I_I_I]], <4 x i32> [[COND87_I_I_I]]
+// CHECK-NEXT: [[COND104_I_I_I:%.*]] = select <4 x i1> [[CMP99_I_I_I]], <4 x
+// i32> [[COND91_I_I_I]], <4 x i32> [[COND89_I_I_I]] CHECK-NEXT:
+// [[COND106_I_I_I:%.*]] = select <4 x i1> [[CMP99_I_I_I]], <4 x i32>
+// [[COND93_I_I_I]], <4 x i32> [[COND91_I_I_I]] CHECK-NEXT:
+// [[COND108_I_I_I:%.*]] = select <4 x i1> [[CMP99_I_I_I]], <4 x i32>
+// [[COND95_I_I_I]], <4 x i32> [[COND93_I_I_I]] CHECK-NEXT:
+// [[DOTNEG381_I_I_I:%.*]] = select <4 x i1> [[CMP99_I_I_I]], <4 x i32> splat
+// (i32 -32), <4 x i32> zeroinitializer CHECK-NEXT: [[SUB111_I_I_I:%.*]] =
+// sub nsw <4 x i32> zeroinitializer, [[SUB98_I_I_I]] CHECK-NEXT:
+// [[CMP112_NOT_I_I_I:%.*]] = icmp eq <4 x i32> [[DOTNEG381_I_I_I]],
+// [[SUB111_I_I_I]] CHECK-NEXT: [[SUB114_I_I_I:%.*]] = sub nsw <4 x i32>
+// splat (i32 24), [[SHR_I_I_I]] CHECK-NEXT: [[SHL_MASK_I_I_I:%.*]] = and <4
+// x i32> [[SUB47_I_I_I]], splat (i32 31) CHECK-NEXT: [[SHL_I_I_I:%.*]] = shl
+// <4 x i32> [[COND102_I_I_I]], [[SHL_MASK_I_I_I]] CHECK-NEXT:
+// [[SHR_MASK_I_I_I:%.*]] = and <4 x i32> [[SUB114_I_I_I]], splat (i32 31)
+// CHECK-NEXT: [[SHR116_I_I_I:%.*]] = lshr <4 x i32> [[COND104_I_I_I]],
+// [[SHR_MASK_I_I_I]] CHECK-NEXT: [[OR117_I_I_I:%.*]] = or <4 x i32>
+// [[SHL_I_I_I]], [[SHR116_I_I_I]] CHECK-NEXT: [[SHL120_I_I_I:%.*]] = shl <4
+// x i32> [[COND104_I_I_I]], [[SHL_MASK_I_I_I]] CHECK-NEXT: [[SHR122_I_I_I:%.*]]
+// = lshr <4 x i32> [[COND106_I_I_I]], [[SHR_MASK_I_I_I]] CHECK-NEXT:
+// [[OR123_I_I_I:%.*]] = or <4 x i32> [[SHL120_I_I_I]], [[SHR122_I_I_I]]
+// CHECK-NEXT: [[SHL126_I_I_I:%.*]] = shl <4 x i32> [[COND106_I_I_I]],
+// [[SHL_MASK_I_I_I]] CHECK-NEXT: [[SHR128_I_I_I:%.*]] = lshr <4 x i32>
+// [[COND108_I_I_I]], [[SHR_MASK_I_I_I]] CHECK-NEXT: [[OR129_I_I_I:%.*]] = or
+// <4 x i32> [[SHL126_I_I_I]], [[SHR128_I_I_I]] CHECK-NEXT:
+// [[COND131_I_I_I:%.*]] = select <4 x i1> [[CMP112_NOT_I_I_I]], <4 x i32>
+// [[COND102_I_I_I]], <4 x i32> [[OR117_I_I_I]] CHECK-NEXT:
+// [[COND133_I_I_I:%.*]] = select <4 x i1> [[CMP112_NOT_I_I_I]], <4 x i32>
+// [[COND104_I_I_I]], <4 x i32> [[OR123_I_I_I]] CHECK-NEXT:
+// [[COND135_I_I_I:%.*]] = select <4 x i1> [[CMP112_NOT_I_I_I]], <4 x i32>
+// [[COND106_I_I_I]], <4 x i32> [[OR129_I_I_I]] CHECK-NEXT: [[SHR136_I_I_I:%.*]]
+// = lshr <4 x i32> [[COND131_I_I_I]], splat (i32 29) CHECK-NEXT:
+// [[OR139_I_I_I:%.*]] = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32>
+// [[COND131_I_I_I]], <4 x i32> [[COND133_I_I_I]], <4 x i32> splat (i32 2))
+// CHECK-NEXT: [[OR142_I_I_I:%.*]] = tail call <4 x i32> @llvm.fshl.v4i32(<4
+// x i32> [[COND133_I_I_I]], <4 x i32> [[COND135_I_I_I]], <4 x i32> splat (i32
+// 2)) CHECK-NEXT: [[OR145_I_I_I:%.*]] = tail call <4 x i32>
+// @llvm.fshl.v4i32(<4 x i32> [[COND135_I_I_I]], <4 x i32> [[COND108_I_I_I]], <4
+// x i32> splat (i32 2)) CHECK-NEXT: [[AND146_I_I_I:%.*]] = and <4 x i32>
+// [[SHR136_I_I_I]], splat (i32 1) CHECK-NEXT: [[SEXT148_I_I_I:%.*]] = sub
+// nsw <4 x i32> zeroinitializer, [[AND146_I_I_I]] CHECK-NEXT: [[TMP5:%.*]] =
+// and <4 x i32> [[SEXT148_I_I_I]], splat (i32 -2147483648) CHECK-NEXT:
+// [[XOR_I_I_I:%.*]] = xor <4 x i32> [[OR139_I_I_I]], [[SEXT148_I_I_I]]
+// CHECK-NEXT: [[XOR156_I_I_I:%.*]] = xor <4 x i32> [[OR142_I_I_I]],
+// [[SEXT148_I_I_I]] CHECK-NEXT: [[XOR157_I_I_I:%.*]] = xor <4 x i32>
+// [[OR145_I_I_I]], [[SEXT148_I_I_I]] CHECK-NEXT: [[TMP6:%.*]] =
+// extractelement <4 x i32> [[XOR_I_I_I]], i64 0 CHECK-NEXT: [[TMP7:%.*]] =
+// tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP6]], i1 false)
+// CHECK-NEXT: [[VECINIT_I1_I_I:%.*]] = insertelement <4 x i32> poison, i32
+// [[TMP7]], i64 0 CHECK-NEXT: [[TMP8:%.*]] = extractelement <4 x i32>
+// [[XOR_I_I_I]], i64 1 CHECK-NEXT: [[TMP9:%.*]] = tail call range(i32 0, 33)
+// i32 @llvm.ctlz.i32(i32 [[TMP8]], i1 false) CHECK-NEXT:
+// [[VECINIT2_I2_I_I:%.*]] = insertelement <4 x i32> [[VECINIT_I1_I_I]], i32
+// [[TMP9]], i64 1 CHECK-NEXT: [[TMP10:%.*]] = extractelement <4 x i32>
+// [[XOR_I_I_I]], i64 2 CHECK-NEXT: [[TMP11:%.*]] = tail call range(i32 0,
+// 33) i32 @llvm.ctlz.i32(i32 [[TMP10]], i1 false) CHECK-NEXT:
+// [[VECINIT4_I3_I_I:%.*]] = insertelement <4 x i32> [[VECINIT2_I2_I_I]], i32
+// [[TMP11]], i64 2 CHECK-NEXT: [[TMP12:%.*]] = extractelement <4 x i32>
+// [[XOR_I_I_I]], i64 3 CHECK-NEXT: [[TMP13:%.*]] = tail call range(i32 0,
+// 33) i32 @llvm.ctlz.i32(i32 [[TMP12]], i1 false) CHECK-NEXT:
+// [[VECINIT6_I4_I_I:%.*]] = insertelement <4 x i32> [[VECINIT4_I3_I_I]], i32
+// [[TMP13]], i64 3 CHECK-NEXT: [[ADD159_I_I_I:%.*]] = add nuw nsw <4 x i32>
+// [[VECINIT6_I4_I_I]], splat (i32 1) CHECK-NEXT: [[SHL_MASK162_I_I_I:%.*]] =
+// and <4 x i32> [[ADD159_I_I_I]], splat (i32 31) CHECK-NEXT:
+// [[SHL163_I_I_I:%.*]] = shl <4 x i32> [[XOR_I_I_I]], [[SHL_MASK162_I_I_I]]
+// CHECK-NEXT: [[TMP14:%.*]] = and <4 x i32> [[VECINIT6_I4_I_I]], splat (i32
+// 31) CHECK-NEXT: [[SHR_MASK164_I_I_I:%.*]] = xor <4 x i32> [[TMP14]], splat
+// (i32 31) CHECK-NEXT: [[SHR165_I_I_I:%.*]] = lshr <4 x i32>
+// [[XOR156_I_I_I]], [[SHR_MASK164_I_I_I]] CHECK-NEXT: [[OR166_I_I_I:%.*]] =
+// or <4 x i32> [[SHL163_I_I_I]], [[SHR165_I_I_I]] CHECK-NEXT:
+// [[SHL169_I_I_I:%.*]] = shl <4 x i32> [[XOR156_I_I_I]], [[SHL_MASK162_I_I_I]]
+// CHECK-NEXT: [[SHR171_I_I_I:%.*]] = lshr <4 x i32> [[XOR157_I_I_I]],
+// [[SHR_MASK164_I_I_I]] CHECK-NEXT: [[OR172_I_I_I:%.*]] = or <4 x i32>
+// [[SHL169_I_I_I]], [[SHR171_I_I_I]] CHECK-NEXT: [[SHR176_I_I_I:%.*]] = lshr
+// <4 x i32> [[OR166_I_I_I]], splat (i32 9) CHECK-NEXT: [[TMP15:%.*]] = shl
+// nuw nsw <4 x i32> [[VECINIT6_I4_I_I]], splat (i32 23) CHECK-NEXT:
+// [[REASS_SUB:%.*]] = sub nsw <4 x i32> [[SHR176_I_I_I]], [[TMP15]] CHECK-NEXT:
+// [[TMP16:%.*]] = add <4 x i32> [[REASS_SUB]], splat (i32 1056964608)
// CHECK-NEXT: [[OR177_I_I_I:%.*]] = or <4 x i32> [[TMP16]], [[TMP5]]
-// CHECK-NEXT: [[ASTYPE178_I_I_I:%.*]] = bitcast <4 x i32> [[OR177_I_I_I]] to <4 x float>
-// CHECK-NEXT: [[OR181_I_I_I:%.*]] = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> [[OR166_I_I_I]], <4 x i32> [[OR172_I_I_I]], <4 x i32> splat (i32 23))
-// CHECK-NEXT: [[TMP17:%.*]] = extractelement <4 x i32> [[OR181_I_I_I]], i64 0
-// CHECK-NEXT: [[TMP18:%.*]] = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP17]], i1 false)
-// CHECK-NEXT: [[VECINIT_I_I_I:%.*]] = insertelement <4 x i32> poison, i32 [[TMP18]], i64 0
-// CHECK-NEXT: [[TMP19:%.*]] = extractelement <4 x i32> [[OR181_I_I_I]], i64 1
-// CHECK-NEXT: [[TMP20:%.*]] = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP19]], i1 false)
-// CHECK-NEXT: [[VECINIT2_I_I_I:%.*]] = insertelement <4 x i32> [[VECINIT_I_I_I]], i32 [[TMP20]], i64 1
-// CHECK-NEXT: [[TMP21:%.*]] = extractelement <4 x i32> [[OR181_I_I_I]], i64 2
-// CHECK-NEXT: [[TMP22:%.*]] = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP21]], i1 false)
-// CHECK-NEXT: [[VECINIT4_I_I_I:%.*]] = insertelement <4 x i32> [[VECINIT2_I_I_I]], i32 [[TMP22]], i64 2
-// CHECK-NEXT: [[TMP23:%.*]] = extractelement <4 x i32> [[OR181_I_I_I]], i64 3
-// CHECK-NEXT: [[TMP24:%.*]] = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP23]], i1 false)
-// CHECK-NEXT: [[VECINIT6_I_I_I:%.*]] = insertelement <4 x i32> [[VECINIT4_I_I_I]], i32 [[TMP24]], i64 3
-// CHECK-NEXT: [[ADD183_I_I_NEG_I:%.*]] = xor <4 x i32> [[VECINIT6_I_I_I]], splat (i32 -1)
-// CHECK-NEXT: [[ADD183_I_I_I:%.*]] = add nuw nsw <4 x i32> [[VECINIT6_I_I_I]], splat (i32 1)
-// CHECK-NEXT: [[SHL_MASK186_I_I_I:%.*]] = and <4 x i32> [[ADD183_I_I_I]], splat (i32 31)
-// CHECK-NEXT: [[SHL187_I_I_I:%.*]] = shl <4 x i32> [[OR181_I_I_I]], [[SHL_MASK186_I_I_I]]
-// CHECK-NEXT: [[TMP25:%.*]] = and <4 x i32> [[VECINIT6_I_I_I]], splat (i32 31)
-// CHECK-NEXT: [[SHR_MASK189_I_I_I:%.*]] = xor <4 x i32> [[TMP25]], splat (i32 31)
-// CHECK-NEXT: [[SHR190_I_I_I:%.*]] = lshr <4 x i32> [[OR172_I_I_I]], [[SHR_MASK189_I_I_I]]
-// CHECK-NEXT: [[OR191_I_I_I:%.*]] = or <4 x i32> [[SHL187_I_I_I]], [[SHR190_I_I_I]]
-// CHECK-NEXT: [[REASS_SUB10_I:%.*]] = sub nuw nsw <4 x i32> [[ADD183_I_I_NEG_I]], [[VECINIT6_I4_I_I]]
-// CHECK-NEXT: [[ADD193_I_I_NEG_I:%.*]] = shl <4 x i32> [[REASS_SUB10_I]], splat (i32 23)
-// CHECK-NEXT: [[SHR197_I_I_I:%.*]] = lshr <4 x i32> [[OR191_I_I_I]], splat (i32 9)
-// CHECK-NEXT: [[REASS_SUB16_I_I:%.*]] = add <4 x i32> [[ADD193_I_I_NEG_I]], splat (i32 864026624)
-// CHECK-NEXT: [[TMP26:%.*]] = or disjoint <4 x i32> [[SHR197_I_I_I]], [[REASS_SUB16_I_I]]
-// CHECK-NEXT: [[OR198_I_I_I:%.*]] = or <4 x i32> [[TMP26]], [[TMP5]]
-// CHECK-NEXT: [[ASTYPE199_I_I_I:%.*]] = bitcast <4 x i32> [[OR198_I_I_I]] to <4 x float>
-// CHECK-NEXT: [[MUL200_I_I_I:%.*]] = fmul <4 x float> [[ASTYPE178_I_I_I]], splat (float 0x3FF921FB40000000)
-// CHECK-NEXT: [[FNEG_I_I_I:%.*]] = fneg <4 x float> [[MUL200_I_I_I]]
-// CHECK-NEXT: [[TMP27:%.*]] = tail call noundef <4 x float> @llvm.fma.v4f32(<4 x float> [[ASTYPE178_I_I_I]], <4 x float> splat (float 0x3FF921FB40000000), <4 x float> [[FNEG_I_I_I]])
-// CHECK-NEXT: [[TMP28:%.*]] = tail call noundef <4 x float> @llvm.fma.v4f32(<4 x float> [[ASTYPE178_I_I_I]], <4 x float> splat (float 0x3E74442D00000000), <4 x float> [[TMP27]])
-// CHECK-NEXT: [[TMP29:%.*]] = tail call noundef <4 x float> @llvm.fma.v4f32(<4 x float> [[ASTYPE199_I_I_I]], <4 x float> splat (float 0x3FF921FB40000000), <4 x float> [[TMP28]])
-// CHECK-NEXT: [[ADD204_I_I_I:%.*]] = fadd <4 x float> [[MUL200_I_I_I]], [[TMP29]]
-// CHECK-NEXT: [[SUB205_I_I_I:%.*]] = fsub <4 x float> [[ADD204_I_I_I]], [[MUL200_I_I_I]]
-// CHECK-NEXT: [[SUB206_I_I_I:%.*]] = fsub <4 x float> [[TMP29]], [[SUB205_I_I_I]]
-// CHECK-NEXT: [[SHR207_I_I_I:%.*]] = lshr <4 x i32> [[COND131_I_I_I]], splat (i32 30)
-// CHECK-NEXT: [[ADD209_I_I_I:%.*]] = add nuw nsw <4 x i32> [[AND146_I_I_I]], [[SHR207_I_I_I]]
-// CHECK-NEXT: [[COND_V_I2_I:%.*]] = select <4 x i1> [[CMP_I_I]], <4 x float> [[ADD13_I_I_I_I]], <4 x float> [[ADD204_I_I_I]]
-// CHECK-NEXT: [[COND4_V_I_I:%.*]] = select <4 x i1> [[CMP_I_I]], <4 x float> [[FNEG_I_I_I_I]], <4 x float> [[SUB206_I_I_I]]
-// CHECK-NEXT: [[COND6_V_I_I:%.*]] = select <4 x i1> [[CMP_I_I]], <4 x i32> [[CONV_I_I_I]], <4 x i32> [[ADD209_I_I_I]]
-// CHECK-NEXT: [[COND6_I_I:%.*]] = and <4 x i32> [[COND6_V_I_I]], splat (i32 2)
-// CHECK-NEXT: [[MUL_I_I:%.*]] = fmul <4 x float> [[COND_V_I2_I]], [[COND_V_I2_I]]
-// CHECK-NEXT: [[MUL1_I_I:%.*]] = fmul <4 x float> [[COND_V_I2_I]], [[MUL_I_I]]
-// CHECK-NEXT: [[TMP30:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> splat (float 0x3DE5D93A60000000), <4 x float> splat (float 0xBE5AE5E680000000))
-// CHECK-NEXT: [[TMP31:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP30]], <4 x float> splat (float 0x3EC6DBE4A0000000))
-// CHECK-NEXT: [[TMP32:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP31]], <4 x float> splat (float 0xBF2A013A80000000))
-// CHECK-NEXT: [[TMP33:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP32]], <4 x float> splat (float 0x3F811110E0000000))
-// CHECK-NEXT: [[FNEG_I3_I:%.*]] = fneg <4 x float> [[MUL1_I_I]]
-// CHECK-NEXT: [[MUL5_I_I:%.*]] = fmul <4 x float> [[TMP33]], [[FNEG_I3_I]]
-// CHECK-NEXT: [[TMP34:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[COND4_V_I_I]], <4 x float> splat (float 5.000000e-01), <4 x float> [[MUL5_I_I]])
-// CHECK-NEXT: [[FNEG7_I_I:%.*]] = fneg <4 x float> [[COND4_V_I_I]]
-// CHECK-NEXT: [[TMP35:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP34]], <4 x float> [[FNEG7_I_I]])
-// CHECK-NEXT: [[TMP36:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL1_I_I]], <4 x float> splat (float 0x3FC5555560000000), <4 x float> [[TMP35]])
-// CHECK-NEXT: [[SUB_I_I:%.*]] = fsub <4 x float> [[COND_V_I2_I]], [[TMP36]]
-// CHECK-NEXT: [[FNEG_I_I:%.*]] = fneg <4 x float> [[SUB_I_I]]
-// CHECK-NEXT: [[TMP37:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> splat (float 0xBDA8FAE9C0000000), <4 x float> splat (float 0x3E21EE9EC0000000))
-// CHECK-NEXT: [[TMP38:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP37]], <4 x float> splat (float 0xBE92524740000000))
-// CHECK-NEXT: [[TMP39:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP38]], <4 x float> splat (float 0x3EFA015C40000000))
-// CHECK-NEXT: [[TMP40:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP39]], <4 x float> splat (float 0xBF56C16C00000000))
-// CHECK-NEXT: [[TMP41:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP40]], <4 x float> splat (float 0x3FA5555560000000))
-// CHECK-NEXT: [[MUL5_I5_I:%.*]] = fmul <4 x float> [[MUL_I_I]], [[TMP41]]
-// CHECK-NEXT: [[TMP42:%.*]] = tail call <4 x float> @llvm.fabs.v4f32(<4 x float> [[COND_V_I2_I]])
-// CHECK-NEXT: [[AND_I_I:%.*]] = bitcast <4 x float> [[TMP42]] to <4 x i32>
-// CHECK-NEXT: [[SUB_I6_I:%.*]] = add nsw <4 x i32> [[AND_I_I]], splat (i32 -16777216)
-// CHECK-NEXT: [[TMP43:%.*]] = add nsw <4 x i32> [[AND_I_I]], splat (i32 -1050253722)
-// CHECK-NEXT: [[AND938_I_I:%.*]] = icmp ult <4 x i32> [[TMP43]], splat (i32 11429479)
-// CHECK-NEXT: [[TMP44:%.*]] = select <4 x i1> [[AND938_I_I]], <4 x i32> [[SUB_I6_I]], <4 x i32> zeroinitializer
-// CHECK-NEXT: [[CMP11_I_I:%.*]] = icmp samesign ugt <4 x i32> [[AND_I_I]], splat (i32 1061683200)
-// CHECK-NEXT: [[COND14_I_I:%.*]] = select <4 x i1> [[CMP11_I_I]], <4 x i32> splat (i32 1049624576), <4 x i32> [[TMP44]]
-// CHECK-NEXT: [[TMP45:%.*]] = bitcast <4 x i32> [[COND14_I_I]] to <4 x float>
-// CHECK-NEXT: [[FNEG_I7_I:%.*]] = fneg <4 x float> [[TMP45]]
-// CHECK-NEXT: [[TMP46:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> splat (float 5.000000e-01), <4 x float> [[FNEG_I7_I]])
-// CHECK-NEXT: [[SUB16_I_I:%.*]] = fsub <4 x float> splat (float 1.000000e+00), [[TMP45]]
+// CHECK-NEXT: [[ASTYPE178_I_I_I:%.*]] = bitcast <4 x i32> [[OR177_I_I_I]] to
+// <4 x float> CHECK-NEXT: [[OR181_I_I_I:%.*]] = tail call <4 x i32>
+// @llvm.fshl.v4i32(<4 x i32> [[OR166_I_I_I]], <4 x i32> [[OR172_I_I_I]], <4 x
+// i32> splat (i32 23)) CHECK-NEXT: [[TMP17:%.*]] = extractelement <4 x i32>
+// [[OR181_I_I_I]], i64 0 CHECK-NEXT: [[TMP18:%.*]] = tail call range(i32 0,
+// 33) i32 @llvm.ctlz.i32(i32 [[TMP17]], i1 false) CHECK-NEXT:
+// [[VECINIT_I_I_I:%.*]] = insertelement <4 x i32> poison, i32 [[TMP18]], i64 0
+// CHECK-NEXT: [[TMP19:%.*]] = extractelement <4 x i32> [[OR181_I_I_I]], i64
+// 1 CHECK-NEXT: [[TMP20:%.*]] = tail call range(i32 0, 33) i32
+// @llvm.ctlz.i32(i32 [[TMP19]], i1 false) CHECK-NEXT: [[VECINIT2_I_I_I:%.*]]
+// = insertelement <4 x i32> [[VECINIT_I_I_I]], i32 [[TMP20]], i64 1 CHECK-NEXT:
+// [[TMP21:%.*]] = extractelement <4 x i32> [[OR181_I_I_I]], i64 2 CHECK-NEXT:
+// [[TMP22:%.*]] = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP21]],
+// i1 false) CHECK-NEXT: [[VECINIT4_I_I_I:%.*]] = insertelement <4 x i32>
+// [[VECINIT2_I_I_I]], i32 [[TMP22]], i64 2 CHECK-NEXT: [[TMP23:%.*]] =
+// extractelement <4 x i32> [[OR181_I_I_I]], i64 3 CHECK-NEXT: [[TMP24:%.*]]
+// = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[TMP23]], i1 false)
+// CHECK-NEXT: [[VECINIT6_I_I_I:%.*]] = insertelement <4 x i32>
+// [[VECINIT4_I_I_I]], i32 [[TMP24]], i64 3 CHECK-NEXT: [[ADD183_I_I_NEG_I:%.*]]
+// = xor <4 x i32> [[VECINIT6_I_I_I]], splat (i32 -1) CHECK-NEXT:
+// [[ADD183_I_I_I:%.*]] = add nuw nsw <4 x i32> [[VECINIT6_I_I_I]], splat (i32
+// 1) CHECK-NEXT: [[SHL_MASK186_I_I_I:%.*]] = and <4 x i32> [[ADD183_I_I_I]],
+// splat (i32 31) CHECK-NEXT: [[SHL187_I_I_I:%.*]] = shl <4 x i32>
+// [[OR181_I_I_I]], [[SHL_MASK186_I_I_I]] CHECK-NEXT: [[TMP25:%.*]] = and <4
+// x i32> [[VECINIT6_I_I_I]], splat (i32 31) CHECK-NEXT:
+// [[SHR_MASK189_I_I_I:%.*]] = xor <4 x i32> [[TMP25]], splat (i32 31)
+// CHECK-NEXT: [[SHR190_I_I_I:%.*]] = lshr <4 x i32> [[OR172_I_I_I]],
+// [[SHR_MASK189_I_I_I]] CHECK-NEXT: [[OR191_I_I_I:%.*]] = or <4 x i32>
+// [[SHL187_I_I_I]], [[SHR190_I_I_I]] CHECK-NEXT: [[REASS_SUB10_I:%.*]] = sub
+// nuw nsw <4 x i32> [[ADD183_I_I_NEG_I]], [[VECINIT6_I4_I_I]] CHECK-NEXT:
+// [[ADD193_I_I_NEG_I:%.*]] = shl <4 x i32> [[REASS_SUB10_I]], splat (i32 23)
+// CHECK-NEXT: [[SHR197_I_I_I:%.*]] = lshr <4 x i32> [[OR191_I_I_I]], splat
+// (i32 9) CHECK-NEXT: [[REASS_SUB16_I_I:%.*]] = add <4 x i32>
+// [[ADD193_I_I_NEG_I]], splat (i32 864026624) CHECK-NEXT: [[TMP26:%.*]] = or
+// disjoint <4 x i32> [[SHR197_I_I_I]], [[REASS_SUB16_I_I]] CHECK-NEXT:
+// [[OR198_I_I_I:%.*]] = or <4 x i32> [[TMP26]], [[TMP5]] CHECK-NEXT:
+// [[ASTYPE199_I_I_I:%.*]] = bitcast <4 x i32> [[OR198_I_I_I]] to <4 x float>
+// CHECK-NEXT: [[MUL200_I_I_I:%.*]] = fmul <4 x float> [[ASTYPE178_I_I_I]],
+// splat (float 0x3FF921FB40000000) CHECK-NEXT: [[FNEG_I_I_I:%.*]] = fneg <4
+// x float> [[MUL200_I_I_I]] CHECK-NEXT: [[TMP27:%.*]] = tail call noundef <4
+// x float> @llvm.fma.v4f32(<4 x float> [[ASTYPE178_I_I_I]], <4 x float> splat
+// (float 0x3FF921FB40000000), <4 x float> [[FNEG_I_I_I]]) CHECK-NEXT:
+// [[TMP28:%.*]] = tail call noundef <4 x float> @llvm.fma.v4f32(<4 x float>
+// [[ASTYPE178_I_I_I]], <4 x float> splat (float 0x3E74442D00000000), <4 x
+// float> [[TMP27]]) CHECK-NEXT: [[TMP29:%.*]] = tail call noundef <4 x
+// float> @llvm.fma.v4f32(<4 x float> [[ASTYPE199_I_I_I]], <4 x float> splat
+// (float 0x3FF921FB40000000), <4 x float> [[TMP28]]) CHECK-NEXT:
+// [[ADD204_I_I_I:%.*]] = fadd <4 x float> [[MUL200_I_I_I]], [[TMP29]]
+// CHECK-NEXT: [[SUB205_I_I_I:%.*]] = fsub <4 x float> [[ADD204_I_I_I]],
+// [[MUL200_I_I_I]] CHECK-NEXT: [[SUB206_I_I_I:%.*]] = fsub <4 x float>
+// [[TMP29]], [[SUB205_I_I_I]] CHECK-NEXT: [[SHR207_I_I_I:%.*]] = lshr <4 x
+// i32> [[COND131_I_I_I]], splat (i32 30) CHECK-NEXT: [[ADD209_I_I_I:%.*]] =
+// add nuw nsw <4 x i32> [[AND146_I_I_I]], [[SHR207_I_I_I]] CHECK-NEXT:
+// [[COND_V_I2_I:%.*]] = select <4 x i1> [[CMP_I_I]], <4 x float>
+// [[ADD13_I_I_I_I]], <4 x float> [[ADD204_I_I_I]] CHECK-NEXT:
+// [[COND4_V_I_I:%.*]] = select <4 x i1> [[CMP_I_I]], <4 x float>
+// [[FNEG_I_I_I_I]], <4 x float> [[SUB206_I_I_I]] CHECK-NEXT:
+// [[COND6_V_I_I:%.*]] = select <4 x i1> [[CMP_I_I]], <4 x i32> [[CONV_I_I_I]],
+// <4 x i32> [[ADD209_I_I_I]] CHECK-NEXT: [[COND6_I_I:%.*]] = and <4 x i32>
+// [[COND6_V_I_I]], splat (i32 2) CHECK-NEXT: [[MUL_I_I:%.*]] = fmul <4 x
+// float> [[COND_V_I2_I]], [[COND_V_I2_I]] CHECK-NEXT: [[MUL1_I_I:%.*]] =
+// fmul <4 x float> [[COND_V_I2_I]], [[MUL_I_I]] CHECK-NEXT: [[TMP30:%.*]] =
+// tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4
+// x float> splat (float 0x3DE5D93A60000000), <4 x float> splat (float
+// 0xBE5AE5E680000000)) CHECK-NEXT: [[TMP31:%.*]] = tail call noundef <4 x
+// float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP30]], <4
+// x float> splat (float 0x3EC6DBE4A0000000)) CHECK-NEXT: [[TMP32:%.*]] =
+// tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4
+// x float> [[TMP31]], <4 x float> splat (float 0xBF2A013A80000000)) CHECK-NEXT:
+// [[TMP33:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float>
+// [[MUL_I_I]], <4 x float> [[TMP32]], <4 x float> splat (float
+// 0x3F811110E0000000)) CHECK-NEXT: [[FNEG_I3_I:%.*]] = fneg <4 x float>
+// [[MUL1_I_I]] CHECK-NEXT: [[MUL5_I_I:%.*]] = fmul <4 x float> [[TMP33]],
+// [[FNEG_I3_I]] CHECK-NEXT: [[TMP34:%.*]] = tail call noundef <4 x float>
+// @llvm.fmuladd.v4f32(<4 x float> [[COND4_V_I_I]], <4 x float> splat
+// (float 5.000000e-01), <4 x float> [[MUL5_I_I]]) CHECK-NEXT: [[FNEG7_I_I:%.*]]
+// = fneg <4 x float> [[COND4_V_I_I]] CHECK-NEXT: [[TMP35:%.*]] = tail call
+// noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float>
+// [[TMP34]], <4 x float> [[FNEG7_I_I]]) CHECK-NEXT: [[TMP36:%.*]] = tail
+// call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL1_I_I]], <4 x
+// float> splat (float 0x3FC5555560000000), <4 x float> [[TMP35]]) CHECK-NEXT:
+// [[SUB_I_I:%.*]] = fsub <4 x float> [[COND_V_I2_I]], [[TMP36]] CHECK-NEXT:
+// [[FNEG_I_I:%.*]] = fneg <4 x float> [[SUB_I_I]] CHECK-NEXT: [[TMP37:%.*]]
+// = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]],
+// <4 x float> splat (float 0xBDA8FAE9C0000000), <4 x float> splat (float
+// 0x3E21EE9EC0000000)) CHECK-NEXT: [[TMP38:%.*]] = tail call noundef <4 x
+// float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP37]], <4
+// x float> splat (float 0xBE92524740000000)) CHECK-NEXT: [[TMP39:%.*]] =
+// tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4
+// x float> [[TMP38]], <4 x float> splat (float 0x3EFA015C40000000)) CHECK-NEXT:
+// [[TMP40:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float>
+// [[MUL_I_I]], <4 x float> [[TMP39]], <4 x float> splat (float
+// 0xBF56C16C00000000)) CHECK-NEXT: [[TMP41:%.*]] = tail call noundef <4 x
+// float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[TMP40]], <4
+// x float> splat (float 0x3FA5555560000000)) CHECK-NEXT: [[MUL5_I5_I:%.*]] =
+// fmul <4 x float> [[MUL_I_I]], [[TMP41]] CHECK-NEXT: [[TMP42:%.*]] = tail
+// call <4 x float> @llvm.fabs.v4f32(<4 x float> [[COND_V_I2_I]]) CHECK-NEXT:
+// [[AND_I_I:%.*]] = bitcast <4 x float> [[TMP42]] to <4 x i32> CHECK-NEXT:
+// [[SUB_I6_I:%.*]] = add nsw <4 x i32> [[AND_I_I]], splat (i32 -16777216)
+// CHECK-NEXT: [[TMP43:%.*]] = add nsw <4 x i32> [[AND_I_I]], splat (i32
+// -1050253722) CHECK-NEXT: [[AND938_I_I:%.*]] = icmp ult <4 x i32>
+// [[TMP43]], splat (i32 11429479) CHECK-NEXT: [[TMP44:%.*]] = select <4 x
+// i1> [[AND938_I_I]], <4 x i32> [[SUB_I6_I]], <4 x i32> zeroinitializer
+// CHECK-NEXT: [[CMP11_I_I:%.*]] = icmp samesign ugt <4 x i32> [[AND_I_I]],
+// splat (i32 1061683200) CHECK-NEXT: [[COND14_I_I:%.*]] = select <4 x i1>
+// [[CMP11_I_I]], <4 x i32> splat (i32 1049624576), <4 x i32> [[TMP44]]
+// CHECK-NEXT: [[TMP45:%.*]] = bitcast <4 x i32> [[COND14_I_I]] to <4 x
+// float> CHECK-NEXT: [[FNEG_I7_I:%.*]] = fneg <4 x float> [[TMP45]]
+// CHECK-NEXT: [[TMP46:%.*]] = tail call noundef <4 x float>
+// @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> splat
+// (float 5.000000e-01), <4 x float> [[FNEG_I7_I]]) CHECK-NEXT:
+// [[SUB16_I_I:%.*]] = fsub <4 x float> splat (float 1.000000e+00), [[TMP45]]
// CHECK-NEXT: [[FNEG17_I_I:%.*]] = fneg <4 x float> [[COND_V_I2_I]]
-// CHECK-NEXT: [[MUL18_I_I:%.*]] = fmul <4 x float> [[COND4_V_I_I]], [[FNEG17_I_I]]
-// CHECK-NEXT: [[TMP47:%.*]] = tail call noundef <4 x float> @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[MUL5_I5_I]], <4 x float> [[MUL18_I_I]])
-// CHECK-NEXT: [[TMP48:%.*]] = fsub <4 x float> [[TMP47]], [[TMP46]]
-// CHECK-NEXT: [[SUB21_I_I:%.*]] = fadd <4 x float> [[SUB16_I_I]], [[TMP48]]
-// CHECK-NEXT: [[TMP49:%.*]] = and <4 x i32> [[COND6_V_I_I]], splat (i32 1)
-// CHECK-NEXT: [[TMP50:%.*]] = icmp eq <4 x i32> [[TMP49]], zeroinitializer
-// CHECK-NEXT: [[COND_V_I_I:%.*]] = select <4 x i1> [[TMP50]], <4 x float> [[SUB21_I_I]], <4 x float> [[FNEG_I_I]]
-// CHECK-NEXT: [[COND_I_I:%.*]] = bitcast <4 x float> [[COND_V_I_I]] to <4 x i32>
-// CHECK-NEXT: [[CMP5_I_I:%.*]] = icmp ne <4 x i32> [[COND6_I_I]], zeroinitializer
-// CHECK-NEXT: [[SEXT6_I_I:%.*]] = sext <4 x i1> [[CMP5_I_I]] to <4 x i32>
-// CHECK-NEXT: [[SHL_I_I:%.*]] = shl nsw <4 x i32> [[SEXT6_I_I]], splat (i32 31)
-// CHECK-NEXT: [[XOR_I_I:%.*]] = xor <4 x i32> [[SHL_I_I]], [[COND_I_I]]
-// CHECK-NEXT: [[ASTYPE7_I_I:%.*]] = bitcast <4 x i32> [[XOR_I_I]] to <4 x float>
-// CHECK-NEXT: [[TMP51:%.*]] = fcmp ueq <4 x float> [[ELT_ABS_I_I_I]], splat (float 0x7FF0000000000000)
-// CHECK-NEXT: [[COND_V_I_I_I:%.*]] = select <4 x i1> [[TMP51]], <4 x float> splat (float 0x7FF8000000000000), <4 x float> [[ASTYPE7_I_I]]
-// CHECK-NEXT: store <4 x float> [[COND_V_I_I_I]], ptr addrspace(1) [[F]], align 16, !tbaa [[TBAA11]]
+// CHECK-NEXT: [[MUL18_I_I:%.*]] = fmul <4 x float> [[COND4_V_I_I]],
+// [[FNEG17_I_I]] CHECK-NEXT: [[TMP47:%.*]] = tail call noundef <4 x float>
+// @llvm.fmuladd.v4f32(<4 x float> [[MUL_I_I]], <4 x float> [[MUL5_I5_I]], <4 x
+// float> [[MUL18_I_I]]) CHECK-NEXT: [[TMP48:%.*]] = fsub <4 x float>
+// [[TMP47]], [[TMP46]] CHECK-NEXT: [[SUB21_I_I:%.*]] = fadd <4 x float>
+// [[SUB16_I_I]], [[TMP48]] CHECK-NEXT: [[TMP49:%.*]] = and <4 x i32>
+// [[COND6_V_I_I]], splat (i32 1) CHECK-NEXT: [[TMP50:%.*]] = icmp eq <4 x
+// i32> [[TMP49]], zeroinitializer CHECK-NEXT: [[COND_V_I_I:%.*]] = select <4
+// x i1> [[TMP50]], <4 x float> [[SUB21_I_I]], <4 x float> [[FNEG_I_I]]
+// CHECK-NEXT: [[COND_I_I:%.*]] = bitcast <4 x float> [[COND_V_I_I]] to <4 x
+// i32> CHECK-NEXT: [[CMP5_I_I:%.*]] = icmp ne <4 x i32> [[COND6_I_I]],
+// zeroinitializer CHECK-NEXT: [[SEXT6_I_I:%.*]] = sext <4 x i1> [[CMP5_I_I]]
+// to <4 x i32> CHECK-NEXT: [[SHL_I_I:%.*]] = shl nsw <4 x i32>
+// [[SEXT6_I_I]], splat (i32 31) CHECK-NEXT: [[XOR_I_I:%.*]] = xor <4 x i32>
+// [[SHL_I_I]], [[COND_I_I]] CHECK-NEXT: [[ASTYPE7_I_I:%.*]] = bitcast <4 x
+// i32> [[XOR_I_I]] to <4 x float> CHECK-NEXT: [[TMP51:%.*]] = fcmp ueq <4 x
+// float> [[ELT_ABS_I_I_I]], splat (float 0x7FF0000000000000) CHECK-NEXT:
+// [[COND_V_I_I_I:%.*]] = select <4 x i1> [[TMP51]], <4 x float> splat (float
+// 0x7FF8000000000000), <4 x float> [[ASTYPE7_I_I]] CHECK-NEXT: store <4 x
+// float> [[COND_V_I_I_I]], ptr addrspace(1) [[F]], align 16, !tbaa [[TBAA11]]
// CHECK-NEXT: ret void
//
-__kernel void foo(__global float4 *f) {
- *f = cos(*f);
-}
+__kernel void foo(__global float4 *f) { *f = cos(*f); }
//.
// CHECK: [[META6]] = !{i32 1}
// CHECK: [[META7]] = !{!"none"}
diff --git a/libclc/test/math/fabs.cl b/libclc/test/math/fabs.cl
index 5935fc9f6..1ee1074b0 100644
--- a/libclc/test/math/fabs.cl
+++ b/libclc/test/math/fabs.cl
@@ -1,4 +1,5 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+// UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -7,19 +8,23 @@
//
//===----------------------------------------------------------------------===//
-// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s
+// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o -
+// --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s |
+// FileCheck %s
// CHECK-LABEL: define protected amdgpu_kernel void @foo(
-// CHECK-SAME: ptr addrspace(1) noundef align 4 captures(none) [[F:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META8]] !kernel_arg_type_qual [[META9:![0-9]+]] {
+// CHECK-SAME: ptr addrspace(1) noundef align 4 captures(none) [[F:%.*]])
+// local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]]
+// !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]]
+// !kernel_arg_base_type [[META8]] !kernel_arg_type_qual [[META9:![0-9]+]] {
// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(1) [[F]], align 4, !tbaa [[TBAA10:![0-9]+]]
-// CHECK-NEXT: [[ELT_ABS_I_I:%.*]] = tail call noundef float @llvm.fabs.f32(float [[TMP0]])
-// CHECK-NEXT: store float [[ELT_ABS_I_I]], ptr addrspace(1) [[F]], align 4, !tbaa [[TBAA10]]
+// CHECK-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(1) [[F]], align 4,
+// !tbaa [[TBAA10:![0-9]+]] CHECK-NEXT: [[ELT_ABS_I_I:%.*]] = tail call
+// noundef float @llvm.fabs.f32(float [[TMP0]]) CHECK-NEXT: store float
+// [[ELT_ABS_I_I]], ptr addrspace(1) [[F]], align 4, !tbaa [[TBAA10]]
// CHECK-NEXT: ret void
//
-__kernel void foo(__global float *f) {
- *f = fabs(*f);
-}
+__kernel void foo(__global float *f) { *f = fabs(*f); }
//.
// CHECK: [[META6]] = !{i32 1}
// CHECK: [[META7]] = !{!"none"}
diff --git a/libclc/test/math/rsqrt.cl b/libclc/test/math/rsqrt.cl
index fa5e13f27..ce5c54485 100644
--- a/libclc/test/math/rsqrt.cl
+++ b/libclc/test/math/rsqrt.cl
@@ -1,4 +1,5 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+// UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -7,25 +8,36 @@
//
//===----------------------------------------------------------------------===//
-// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s
+// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o -
+// --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s |
+// FileCheck %s
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
#if defined(cl_khr_fp64)
// CHECK-LABEL: define protected amdgpu_kernel void @foo(
-// CHECK-SAME: ptr addrspace(1) noundef align 16 captures(none) initializes((16, 32)) [[X:%.*]], ptr addrspace(1) noundef align 32 captures(none) initializes((32, 64)) [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META9:![0-9]+]] !kernel_arg_type_qual [[META10:![0-9]+]] {
-// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr addrspace(1) [[X]], align 16, !tbaa [[TBAA11:![0-9]+]]
-// CHECK-NEXT: [[TMP1:%.*]] = tail call contract <4 x float> @llvm.sqrt.v4f32(<4 x float> [[TMP0]]), !fpmath [[META14:![0-9]+]]
-// CHECK-NEXT: [[DIV_I_I:%.*]] = fdiv contract <4 x float> splat (float 1.000000e+00), [[TMP1]], !fpmath [[META15:![0-9]+]]
-// CHECK-NEXT: [[ARRAYIDX1_I:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(1) [[X]], i64 16
-// CHECK-NEXT: store <4 x float> [[DIV_I_I]], ptr addrspace(1) [[ARRAYIDX1_I]], align 16, !tbaa [[TBAA11]]
-// CHECK-NEXT: [[TMP2:%.*]] = load <4 x double>, ptr addrspace(1) [[Y]], align 32, !tbaa [[TBAA11]]
-// CHECK-NEXT: [[TMP3:%.*]] = tail call contract <4 x double> @llvm.sqrt.v4f64(<4 x double> [[TMP2]])
-// CHECK-NEXT: [[DIV_I_I1:%.*]] = fdiv contract <4 x double> splat (double 1.000000e+00), [[TMP3]]
-// CHECK-NEXT: [[ARRAYIDX4_I:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(1) [[Y]], i64 32
-// CHECK-NEXT: store <4 x double> [[DIV_I_I1]], ptr addrspace(1) [[ARRAYIDX4_I]], align 32, !tbaa [[TBAA11]]
+// CHECK-SAME: ptr addrspace(1) noundef align 16 captures(none) initializes((16,
+// 32)) [[X:%.*]], ptr addrspace(1) noundef align 32 captures(none)
+// initializes((32, 64)) [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]]
+// !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual
+// [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type
+// [[META9:![0-9]+]] !kernel_arg_type_qual [[META10:![0-9]+]] { CHECK-NEXT:
+// [[ENTRY:.*:]] CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr
+// addrspace(1) [[X]], align 16, !tbaa [[TBAA11:![0-9]+]] CHECK-NEXT:
+// [[TMP1:%.*]] = tail call contract <4 x float> @llvm.sqrt.v4f32(<4 x float>
+// [[TMP0]]), !fpmath [[META14:![0-9]+]] CHECK-NEXT: [[DIV_I_I:%.*]] = fdiv
+// contract <4 x float> splat (float 1.000000e+00), [[TMP1]], !fpmath
+// [[META15:![0-9]+]] CHECK-NEXT: [[ARRAYIDX1_I:%.*]] = getelementptr
+// inbounds nuw i8, ptr addrspace(1) [[X]], i64 16 CHECK-NEXT: store <4 x
+// float> [[DIV_I_I]], ptr addrspace(1) [[ARRAYIDX1_I]], align 16, !tbaa
+// [[TBAA11]] CHECK-NEXT: [[TMP2:%.*]] = load <4 x double>, ptr addrspace(1)
+// [[Y]], align 32, !tbaa [[TBAA11]] CHECK-NEXT: [[TMP3:%.*]] = tail call
+// contract <4 x double> @llvm.sqrt.v4f64(<4 x double> [[TMP2]]) CHECK-NEXT:
+// [[DIV_I_I1:%.*]] = fdiv contract <4 x double> splat (double 1.000000e+00),
+// [[TMP3]] CHECK-NEXT: [[ARRAYIDX4_I:%.*]] = getelementptr inbounds nuw i8,
+// ptr addrspace(1) [[Y]], i64 32 CHECK-NEXT: store <4 x double>
+// [[DIV_I_I1]], ptr addrspace(1) [[ARRAYIDX4_I]], align 32, !tbaa [[TBAA11]]
// CHECK-NEXT: ret void
//
__kernel void foo(__global float4 *x, __global double4 *y) {
@@ -38,11 +50,10 @@ __kernel void foo(__global float4 *x, __global double4 *y) {
// CHECK: [[META6]] = !{i32 1, i32 1}
// CHECK: [[META7]] = !{!"none", !"none"}
// CHECK: [[META8]] = !{!"float4*", !"double4*"}
-// CHECK: [[META9]] = !{!"float __attribute__((ext_vector_type(4)))*", !"double __attribute__((ext_vector_type(4)))*"}
-// CHECK: [[META10]] = !{!"", !""}
-// CHECK: [[TBAA11]] = !{[[META12:![0-9]+]], [[META12]], i64 0}
-// CHECK: [[META12]] = !{!"omnipotent char", [[META13:![0-9]+]], i64 0}
-// CHECK: [[META13]] = !{!"Simple C/C++ TBAA"}
-// CHECK: [[META14]] = !{float 3.000000e+00}
-// CHECK: [[META15]] = !{float 2.500000e+00}
+// CHECK: [[META9]] = !{!"float __attribute__((ext_vector_type(4)))*", !"double
+// __attribute__((ext_vector_type(4)))*"} CHECK: [[META10]] = !{!"", !""} CHECK:
+// [[TBAA11]] = !{[[META12:![0-9]+]], [[META12]], i64 0} CHECK: [[META12]] =
+// !{!"omnipotent char", [[META13:![0-9]+]], i64 0} CHECK: [[META13]] =
+// !{!"Simple C/C++ TBAA"} CHECK: [[META14]] = !{float 3.000000e+00} CHECK:
+// [[META15]] = !{float 2.500000e+00}
//.
diff --git a/libclc/test/misc/as_type.cl b/libclc/test/misc/as_type.cl
index a475956e6..fa00577f3 100644
--- a/libclc/test/misc/as_type.cl
+++ b/libclc/test/misc/as_type.cl
@@ -1,4 +1,5 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+// UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -7,25 +8,30 @@
//
//===----------------------------------------------------------------------===//
-// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s
+// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o -
+// --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s |
+// FileCheck %s
// CHECK-LABEL: define protected amdgpu_kernel void @foo(
-// CHECK-SAME: ptr addrspace(1) noundef writeonly align 16 captures(none) initializes((0, 16)) [[X:%.*]], ptr addrspace(1) noundef readonly align 16 captures(none) [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META9:![0-9]+]] !kernel_arg_type_qual [[META10:![0-9]+]] {
-// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[TMP0:%.*]] = load <4 x i32>, ptr addrspace(1) [[Y]], align 16, !tbaa [[TBAA11:![0-9]+]]
-// CHECK-NEXT: store <4 x i32> [[TMP0]], ptr addrspace(1) [[X]], align 16, !tbaa [[TBAA11]]
-// CHECK-NEXT: ret void
+// CHECK-SAME: ptr addrspace(1) noundef writeonly align 16 captures(none)
+// initializes((0, 16)) [[X:%.*]], ptr addrspace(1) noundef readonly align 16
+// captures(none) [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]]
+// !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual
+// [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type
+// [[META9:![0-9]+]] !kernel_arg_type_qual [[META10:![0-9]+]] { CHECK-NEXT:
+// [[ENTRY:.*:]] CHECK-NEXT: [[TMP0:%.*]] = load <4 x i32>, ptr addrspace(1)
+// [[Y]], align 16, !tbaa [[TBAA11:![0-9]+]] CHECK-NEXT: store <4 x i32>
+// [[TMP0]], ptr addrspace(1) [[X]], align 16, !tbaa [[TBAA11]] CHECK-NEXT: ret
+// void
//
-__kernel void foo(__global int4 *x, __global float4 *y) {
- *x = as_int4(*y);
-}
+__kernel void foo(__global int4 *x, __global float4 *y) { *x = as_int4(*y); }
//.
// CHECK: [[META6]] = !{i32 1, i32 1}
// CHECK: [[META7]] = !{!"none", !"none"}
// CHECK: [[META8]] = !{!"int4*", !"float4*"}
-// CHECK: [[META9]] = !{!"int __attribute__((ext_vector_type(4)))*", !"float __attribute__((ext_vector_type(4)))*"}
-// CHECK: [[META10]] = !{!"", !""}
-// CHECK: [[TBAA11]] = !{[[META12:![0-9]+]], [[META12]], i64 0}
-// CHECK: [[META12]] = !{!"omnipotent char", [[META13:![0-9]+]], i64 0}
-// CHECK: [[META13]] = !{!"Simple C/C++ TBAA"}
+// CHECK: [[META9]] = !{!"int __attribute__((ext_vector_type(4)))*", !"float
+// __attribute__((ext_vector_type(4)))*"} CHECK: [[META10]] = !{!"", !""} CHECK:
+// [[TBAA11]] = !{[[META12:![0-9]+]], [[META12]], i64 0} CHECK: [[META12]] =
+// !{!"omnipotent char", [[META13:![0-9]+]], i64 0} CHECK: [[META13]] =
+// !{!"Simple C/C++ TBAA"}
//.
diff --git a/libclc/test/misc/convert.cl b/libclc/test/misc/convert.cl
index cd8c41465..2959ab1e8 100644
--- a/libclc/test/misc/convert.cl
+++ b/libclc/test/misc/convert.cl
@@ -1,4 +1,5 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+// UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -7,14 +8,21 @@
//
//===----------------------------------------------------------------------===//
-// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s
+// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o -
+// --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s |
+// FileCheck %s
// CHECK-LABEL: define protected amdgpu_kernel void @foo(
-// CHECK-SAME: ptr addrspace(1) noundef writeonly align 16 captures(none) initializes((0, 16)) [[X:%.*]], ptr addrspace(1) noundef readonly align 16 captures(none) [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META9:![0-9]+]] !kernel_arg_type_qual [[META10:![0-9]+]] {
-// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr addrspace(1) [[Y]], align 16, !tbaa [[TBAA11:![0-9]+]]
-// CHECK-NEXT: [[CONV_I_I:%.*]] = fptosi <4 x float> [[TMP0]] to <4 x i32>
-// CHECK-NEXT: store <4 x i32> [[CONV_I_I]], ptr addrspace(1) [[X]], align 16, !tbaa [[TBAA11]]
+// CHECK-SAME: ptr addrspace(1) noundef writeonly align 16 captures(none)
+// initializes((0, 16)) [[X:%.*]], ptr addrspace(1) noundef readonly align 16
+// captures(none) [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]]
+// !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual
+// [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type
+// [[META9:![0-9]+]] !kernel_arg_type_qual [[META10:![0-9]+]] { CHECK-NEXT:
+// [[ENTRY:.*:]] CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr
+// addrspace(1) [[Y]], align 16, !tbaa [[TBAA11:![0-9]+]] CHECK-NEXT:
+// [[CONV_I_I:%.*]] = fptosi <4 x float> [[TMP0]] to <4 x i32> CHECK-NEXT: store
+// <4 x i32> [[CONV_I_I]], ptr addrspace(1) [[X]], align 16, !tbaa [[TBAA11]]
// CHECK-NEXT: ret void
//
__kernel void foo(__global int4 *x, __global float4 *y) {
@@ -24,9 +32,9 @@ __kernel void foo(__global int4 *x, __global float4 *y) {
// CHECK: [[META6]] = !{i32 1, i32 1}
// CHECK: [[META7]] = !{!"none", !"none"}
// CHECK: [[META8]] = !{!"int4*", !"float4*"}
-// CHECK: [[META9]] = !{!"int __attribute__((ext_vector_type(4)))*", !"float __attribute__((ext_vector_type(4)))*"}
-// CHECK: [[META10]] = !{!"", !""}
-// CHECK: [[TBAA11]] = !{[[META12:![0-9]+]], [[META12]], i64 0}
-// CHECK: [[META12]] = !{!"omnipotent char", [[META13:![0-9]+]], i64 0}
-// CHECK: [[META13]] = !{!"Simple C/C++ TBAA"}
+// CHECK: [[META9]] = !{!"int __attribute__((ext_vector_type(4)))*", !"float
+// __attribute__((ext_vector_type(4)))*"} CHECK: [[META10]] = !{!"", !""} CHECK:
+// [[TBAA11]] = !{[[META12:![0-9]+]], [[META12]], i64 0} CHECK: [[META12]] =
+// !{!"omnipotent char", [[META13:![0-9]+]], i64 0} CHECK: [[META13]] =
+// !{!"Simple C/C++ TBAA"}
//.
diff --git a/libclc/test/work-item/get_group_id.cl b/libclc/test/work-item/get_group_id.cl
index f73f8f76c..6a51a2280 100644
--- a/libclc/test/work-item/get_group_id.cl
+++ b/libclc/test/work-item/get_group_id.cl
@@ -1,4 +1,5 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+// UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -7,20 +8,23 @@
//
//===----------------------------------------------------------------------===//
-// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s
+// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o -
+// --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s |
+// FileCheck %s
// CHECK-LABEL: define protected amdgpu_kernel void @foo(
-// CHECK-SAME: ptr addrspace(1) noundef writeonly align 4 captures(none) [[I:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META8]] !kernel_arg_type_qual [[META9:![0-9]+]] {
-// CHECK-NEXT: [[ENTRY:.*:]]
-// CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.amdgcn.workgroup.id.x()
-// CHECK-NEXT: [[RETVAL_0_I:%.*]] = zext i32 [[TMP0]] to i64
-// CHECK-NEXT: [[ARRAYIDX_I:%.*]] = getelementptr inbounds nuw i32, ptr addrspace(1) [[I]], i64 [[RETVAL_0_I]]
-// CHECK-NEXT: store i32 1, ptr addrspace(1) [[ARRAYIDX_I]], align 4, !tbaa [[TBAA10:![0-9]+]]
-// CHECK-NEXT: ret void
+// CHECK-SAME: ptr addrspace(1) noundef writeonly align 4 captures(none)
+// [[I:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space
+// [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type
+// [[META8:![0-9]+]] !kernel_arg_base_type [[META8]] !kernel_arg_type_qual
+// [[META9:![0-9]+]] { CHECK-NEXT: [[ENTRY:.*:]] CHECK-NEXT: [[TMP0:%.*]] =
+// tail call i32 @llvm.amdgcn.workgroup.id.x() CHECK-NEXT: [[RETVAL_0_I:%.*]]
+// = zext i32 [[TMP0]] to i64 CHECK-NEXT: [[ARRAYIDX_I:%.*]] = getelementptr
+// inbounds nuw i32, ptr addrspace(1) [[I]], i64 [[RETVAL_0_I]] CHECK-NEXT:
+// store i32 1, ptr addrspace(1) [[ARRAYIDX_I]], align 4, !tbaa
+// [[TBAA10:![0-9]+]] CHECK-NEXT: ret void
//
-__kernel void foo(__global int *i) {
- i[get_group_id(0)] = 1;
-}
+__kernel void foo(__global int *i) { i[get_group_id(0)] = 1; }
//.
// CHECK: [[META6]] = !{i32 1}
// CHECK: [[META7]] = !{!"none"}
``````````
</details>
https://github.com/llvm/llvm-project/pull/87989
More information about the llvm-commits
mailing list