xref: /llvm-project/llvm/test/CodeGen/Hexagon/isel-setcc-legalize-loop.ll (revision 2208c97c1bec2512d4e47b6223db6d95a7037956)
1; RUN: llc -mtriple=hexagon < %s | FileCheck %s
2
3; Check that we scalarize the comparison. This testcase used to loop forever
4; due to the repeated split-widen operations in legalizing SETCC.
5
6; CHECK: fred:
7; CHECK: sfcmp.gt
8; CHECK: vinsert
9
10define <32 x i32> @fred(<32 x i32> %a0, <32 x i32> %a1) #0 {
11b0:
12  %v0 = bitcast <32 x i32> %a0 to <32 x float>
13  %v1 = bitcast <32 x i32> %a1 to <32 x float>
14  %v2 = fcmp ogt <32 x float> %v0, %v1
15  %v3 = select <32 x i1> %v2, <32 x float> zeroinitializer, <32 x float> %v0
16  %v4 = bitcast <32 x float> %v3 to <32 x i32>
17  ret <32 x i32> %v4
18}
19
20attributes #0 = { nounwind "target-cpu"="hexagonv66" "target-features"="+hvxv66,+hvx-length128b" }
21