1fa2a7a25SAleksandr Bezzubikov; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV 2fa2a7a25SAleksandr Bezzubikov 3*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#bool:]] = OpTypeBool 4*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#bool2:]] = OpTypeVector %[[#bool]] 2 5fa2a7a25SAleksandr Bezzubikov 6fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 7*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 8*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 9*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpUGreaterThan %[[#bool2]] %[[#A]] %[[#B]] 10fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 11fa2a7a25SAleksandr Bezzubikov 12*4bd9d98bSAndrey Tretyakov;; kernel void testUGreaterThan(uint2 a, uint2 b, global int2 *res) { 13*4bd9d98bSAndrey Tretyakov;; res[0] = a > b; 14*4bd9d98bSAndrey Tretyakov;; } 15fa2a7a25SAleksandr Bezzubikov 16*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testUGreaterThan(<2 x i32> noundef %a, <2 x i32> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 17fa2a7a25SAleksandr Bezzubikoventry: 18fa2a7a25SAleksandr Bezzubikov %cmp = icmp ugt <2 x i32> %a, %b 19fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 20*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 21fa2a7a25SAleksandr Bezzubikov ret void 22fa2a7a25SAleksandr Bezzubikov} 23fa2a7a25SAleksandr Bezzubikov 24fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 25*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 26*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 27*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpSGreaterThan %[[#bool2]] %[[#A]] %[[#B]] 28fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 29fa2a7a25SAleksandr Bezzubikov 30*4bd9d98bSAndrey Tretyakov;; kernel void testSGreaterThan(int2 a, int2 b, global int2 *res) { 31*4bd9d98bSAndrey Tretyakov;; res[0] = a > b; 32*4bd9d98bSAndrey Tretyakov;; } 33fa2a7a25SAleksandr Bezzubikov 34*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testSGreaterThan(<2 x i32> noundef %a, <2 x i32> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 35fa2a7a25SAleksandr Bezzubikoventry: 36fa2a7a25SAleksandr Bezzubikov %cmp = icmp sgt <2 x i32> %a, %b 37fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 38*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 39fa2a7a25SAleksandr Bezzubikov ret void 40fa2a7a25SAleksandr Bezzubikov} 41fa2a7a25SAleksandr Bezzubikov 42fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 43*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 44*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 45*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpUGreaterThanEqual %[[#bool2]] %[[#A]] %[[#B]] 46fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 47fa2a7a25SAleksandr Bezzubikov 48*4bd9d98bSAndrey Tretyakov;; kernel void testUGreaterThanEqual(uint2 a, uint2 b, global int2 *res) { 49*4bd9d98bSAndrey Tretyakov;; res[0] = a >= b; 50*4bd9d98bSAndrey Tretyakov;; } 51fa2a7a25SAleksandr Bezzubikov 52*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testUGreaterThanEqual(<2 x i32> noundef %a, <2 x i32> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 53fa2a7a25SAleksandr Bezzubikoventry: 54fa2a7a25SAleksandr Bezzubikov %cmp = icmp uge <2 x i32> %a, %b 55fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 56*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 57fa2a7a25SAleksandr Bezzubikov ret void 58fa2a7a25SAleksandr Bezzubikov} 59fa2a7a25SAleksandr Bezzubikov 60fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 61*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 62*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 63*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpSGreaterThanEqual %[[#bool2]] %[[#A]] %[[#B]] 64fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 65fa2a7a25SAleksandr Bezzubikov 66*4bd9d98bSAndrey Tretyakov;; kernel void testSGreaterThanEqual(int2 a, int2 b, global int2 *res) { 67*4bd9d98bSAndrey Tretyakov;; res[0] = a >= b; 68*4bd9d98bSAndrey Tretyakov;; } 69fa2a7a25SAleksandr Bezzubikov 70*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testSGreaterThanEqual(<2 x i32> noundef %a, <2 x i32> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 71fa2a7a25SAleksandr Bezzubikoventry: 72fa2a7a25SAleksandr Bezzubikov %cmp = icmp sge <2 x i32> %a, %b 73fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 74*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 75fa2a7a25SAleksandr Bezzubikov ret void 76fa2a7a25SAleksandr Bezzubikov} 77fa2a7a25SAleksandr Bezzubikov 78fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 79*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 80*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 81*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpULessThan %[[#bool2]] %[[#A]] %[[#B]] 82fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 83fa2a7a25SAleksandr Bezzubikov 84*4bd9d98bSAndrey Tretyakov;; kernel void testULessThan(uint2 a, uint2 b, global int2 *res) { 85*4bd9d98bSAndrey Tretyakov;; res[0] = a < b; 86*4bd9d98bSAndrey Tretyakov;; } 87fa2a7a25SAleksandr Bezzubikov 88*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testULessThan(<2 x i32> noundef %a, <2 x i32> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 89fa2a7a25SAleksandr Bezzubikoventry: 90fa2a7a25SAleksandr Bezzubikov %cmp = icmp ult <2 x i32> %a, %b 91fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 92*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 93fa2a7a25SAleksandr Bezzubikov ret void 94fa2a7a25SAleksandr Bezzubikov} 95fa2a7a25SAleksandr Bezzubikov 96fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 97*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 98*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 99*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpSLessThan %[[#bool2]] %[[#A]] %[[#B]] 100fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 101fa2a7a25SAleksandr Bezzubikov 102*4bd9d98bSAndrey Tretyakov;; kernel void testSLessThan(int2 a, int2 b, global int2 *res) { 103*4bd9d98bSAndrey Tretyakov;; res[0] = a < b; 104*4bd9d98bSAndrey Tretyakov;; } 105fa2a7a25SAleksandr Bezzubikov 106*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testSLessThan(<2 x i32> noundef %a, <2 x i32> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 107fa2a7a25SAleksandr Bezzubikoventry: 108fa2a7a25SAleksandr Bezzubikov %cmp = icmp slt <2 x i32> %a, %b 109fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 110*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 111fa2a7a25SAleksandr Bezzubikov ret void 112fa2a7a25SAleksandr Bezzubikov} 113fa2a7a25SAleksandr Bezzubikov 114fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 115*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 116*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 117*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpULessThanEqual %[[#bool2]] %[[#A]] %[[#B]] 118fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 119fa2a7a25SAleksandr Bezzubikov 120*4bd9d98bSAndrey Tretyakov;; kernel void testULessThanEqual(uint2 a, uint2 b, global int2 *res) { 121*4bd9d98bSAndrey Tretyakov;; res[0] = a <= b; 122*4bd9d98bSAndrey Tretyakov;; } 123fa2a7a25SAleksandr Bezzubikov 124*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testULessThanEqual(<2 x i32> noundef %a, <2 x i32> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 125fa2a7a25SAleksandr Bezzubikoventry: 126fa2a7a25SAleksandr Bezzubikov %cmp = icmp ule <2 x i32> %a, %b 127fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 128*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 129fa2a7a25SAleksandr Bezzubikov ret void 130fa2a7a25SAleksandr Bezzubikov} 131fa2a7a25SAleksandr Bezzubikov 132fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 133*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 134*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 135*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpSLessThanEqual %[[#bool2]] %[[#A]] %[[#B]] 136fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 137fa2a7a25SAleksandr Bezzubikov 138*4bd9d98bSAndrey Tretyakov;; kernel void testSLessThanEqual(int2 a, int2 b, global int2 *res) { 139*4bd9d98bSAndrey Tretyakov;; res[0] = a <= b; 140*4bd9d98bSAndrey Tretyakov;; } 141fa2a7a25SAleksandr Bezzubikov 142*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testSLessThanEqual(<2 x i32> noundef %a, <2 x i32> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 143fa2a7a25SAleksandr Bezzubikoventry: 144fa2a7a25SAleksandr Bezzubikov %cmp = icmp sle <2 x i32> %a, %b 145fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 146*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 147fa2a7a25SAleksandr Bezzubikov ret void 148fa2a7a25SAleksandr Bezzubikov} 149fa2a7a25SAleksandr Bezzubikov 150fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 151*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 152*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 153*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpFOrdEqual %[[#bool2]] %[[#A]] %[[#B]] 154fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 155fa2a7a25SAleksandr Bezzubikov 156*4bd9d98bSAndrey Tretyakov;; kernel void testFOrdEqual(float2 a, float2 b, global int2 *res) { 157*4bd9d98bSAndrey Tretyakov;; res[0] = a == b; 158*4bd9d98bSAndrey Tretyakov;; } 159fa2a7a25SAleksandr Bezzubikov 160*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testFOrdEqual(<2 x float> noundef %a, <2 x float> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 161fa2a7a25SAleksandr Bezzubikoventry: 162fa2a7a25SAleksandr Bezzubikov %cmp = fcmp oeq <2 x float> %a, %b 163fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 164*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 165fa2a7a25SAleksandr Bezzubikov ret void 166fa2a7a25SAleksandr Bezzubikov} 167fa2a7a25SAleksandr Bezzubikov 168fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 169*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 170*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 171*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpFUnordNotEqual %[[#bool2]] %[[#A]] %[[#B]] 172fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 173fa2a7a25SAleksandr Bezzubikov 174*4bd9d98bSAndrey Tretyakov;; kernel void testFUnordNotEqual(float2 a, float2 b, global int2 *res) { 175*4bd9d98bSAndrey Tretyakov;; res[0] = a != b; 176*4bd9d98bSAndrey Tretyakov;; } 177fa2a7a25SAleksandr Bezzubikov 178*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testFUnordNotEqual(<2 x float> noundef %a, <2 x float> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 179fa2a7a25SAleksandr Bezzubikoventry: 180fa2a7a25SAleksandr Bezzubikov %cmp = fcmp une <2 x float> %a, %b 181fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 182*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 183fa2a7a25SAleksandr Bezzubikov ret void 184fa2a7a25SAleksandr Bezzubikov} 185fa2a7a25SAleksandr Bezzubikov 186fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 187*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 188*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 189*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpFOrdGreaterThan %[[#bool2]] %[[#A]] %[[#B]] 190fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 191fa2a7a25SAleksandr Bezzubikov 192*4bd9d98bSAndrey Tretyakov;; kernel void testFOrdGreaterThan(float2 a, float2 b, global int2 *res) { 193*4bd9d98bSAndrey Tretyakov;; res[0] = a > b; 194*4bd9d98bSAndrey Tretyakov;; } 195fa2a7a25SAleksandr Bezzubikov 196*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testFOrdGreaterThan(<2 x float> noundef %a, <2 x float> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 197fa2a7a25SAleksandr Bezzubikoventry: 198fa2a7a25SAleksandr Bezzubikov %cmp = fcmp ogt <2 x float> %a, %b 199fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 200*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 201fa2a7a25SAleksandr Bezzubikov ret void 202fa2a7a25SAleksandr Bezzubikov} 203fa2a7a25SAleksandr Bezzubikov 204fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 205*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 206*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 207*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpFOrdGreaterThanEqual %[[#bool2]] %[[#A]] %[[#B]] 208fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 209fa2a7a25SAleksandr Bezzubikov 210*4bd9d98bSAndrey Tretyakov;; kernel void testFOrdGreaterThanEqual(float2 a, float2 b, global int2 *res) { 211*4bd9d98bSAndrey Tretyakov;; res[0] = a >= b; 212*4bd9d98bSAndrey Tretyakov;; } 213fa2a7a25SAleksandr Bezzubikov 214*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testFOrdGreaterThanEqual(<2 x float> noundef %a, <2 x float> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 215fa2a7a25SAleksandr Bezzubikoventry: 216fa2a7a25SAleksandr Bezzubikov %cmp = fcmp oge <2 x float> %a, %b 217fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 218*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 219fa2a7a25SAleksandr Bezzubikov ret void 220fa2a7a25SAleksandr Bezzubikov} 221fa2a7a25SAleksandr Bezzubikov 222fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 223*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 224*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 225*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpFOrdLessThan %[[#bool2]] %[[#A]] %[[#B]] 226fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 227fa2a7a25SAleksandr Bezzubikov 228*4bd9d98bSAndrey Tretyakov;; kernel void testFOrdLessThan(float2 a, float2 b, global int2 *res) { 229*4bd9d98bSAndrey Tretyakov;; res[0] = a < b; 230*4bd9d98bSAndrey Tretyakov;; } 231fa2a7a25SAleksandr Bezzubikov 232*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testFOrdLessThan(<2 x float> noundef %a, <2 x float> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 233fa2a7a25SAleksandr Bezzubikoventry: 234fa2a7a25SAleksandr Bezzubikov %cmp = fcmp olt <2 x float> %a, %b 235fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 236*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 237fa2a7a25SAleksandr Bezzubikov ret void 238fa2a7a25SAleksandr Bezzubikov} 239fa2a7a25SAleksandr Bezzubikov 240fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunction 241*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#A:]] = OpFunctionParameter %[[#]] 242*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV-NEXT: %[[#B:]] = OpFunctionParameter %[[#]] 243*4bd9d98bSAndrey Tretyakov; CHECK-SPIRV: %[[#]] = OpFOrdLessThanEqual %[[#bool2]] %[[#A]] %[[#B]] 244fa2a7a25SAleksandr Bezzubikov; CHECK-SPIRV: OpFunctionEnd 245fa2a7a25SAleksandr Bezzubikov 246*4bd9d98bSAndrey Tretyakov;; kernel void testFOrdLessThanEqual(float2 a, float2 b, global int2 *res) { 247*4bd9d98bSAndrey Tretyakov;; res[0] = a <= b; 248*4bd9d98bSAndrey Tretyakov;; } 249fa2a7a25SAleksandr Bezzubikov 250*4bd9d98bSAndrey Tretyakovdefine dso_local spir_kernel void @testFOrdLessThanEqual(<2 x float> noundef %a, <2 x float> noundef %b, <2 x i32> addrspace(1)* nocapture noundef writeonly %res) local_unnamed_addr { 251fa2a7a25SAleksandr Bezzubikoventry: 252fa2a7a25SAleksandr Bezzubikov %cmp = fcmp ole <2 x float> %a, %b 253fa2a7a25SAleksandr Bezzubikov %sext = sext <2 x i1> %cmp to <2 x i32> 254*4bd9d98bSAndrey Tretyakov store <2 x i32> %sext, <2 x i32> addrspace(1)* %res, align 8 255fa2a7a25SAleksandr Bezzubikov ret void 256fa2a7a25SAleksandr Bezzubikov} 257