xref: /aosp_15_r20/external/llvm/test/CodeGen/AMDGPU/commute-compares.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=SI %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.workitem.id.x() #0
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; --------------------------------------------------------------------------------
6*9880d681SAndroid Build Coastguard Worker; i32 compares
7*9880d681SAndroid Build Coastguard Worker; --------------------------------------------------------------------------------
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_eq_64_i32:
10*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_eq_i32_e32 vcc, 64, v{{[0-9]+}}
11*9880d681SAndroid Build Coastguard Workerdefine void @commute_eq_64_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
12*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
13*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
14*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
15*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
16*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq i32 %val, 64
17*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
18*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
19*9880d681SAndroid Build Coastguard Worker  ret void
20*9880d681SAndroid Build Coastguard Worker}
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ne_64_i32:
23*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_ne_i32_e32 vcc, 64, v{{[0-9]+}}
24*9880d681SAndroid Build Coastguard Workerdefine void @commute_ne_64_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
25*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
26*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
27*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
28*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
29*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ne i32 %val, 64
30*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
31*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
32*9880d681SAndroid Build Coastguard Worker  ret void
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Worker; FIXME: Why isn't this being folded as a constant?
36*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ne_litk_i32:
37*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 [[K:v[0-9]+]], 0x3039
38*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_ne_i32_e32 vcc, [[K]], v{{[0-9]+}}
39*9880d681SAndroid Build Coastguard Workerdefine void @commute_ne_litk_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
40*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
41*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
42*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
43*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
44*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ne i32 %val, 12345
45*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
46*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
47*9880d681SAndroid Build Coastguard Worker  ret void
48*9880d681SAndroid Build Coastguard Worker}
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ugt_64_i32:
51*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lt_u32_e32 vcc, 64, v{{[0-9]+}}
52*9880d681SAndroid Build Coastguard Workerdefine void @commute_ugt_64_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
53*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
54*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
55*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
56*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
57*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ugt i32 %val, 64
58*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
59*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
60*9880d681SAndroid Build Coastguard Worker  ret void
61*9880d681SAndroid Build Coastguard Worker}
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_uge_64_i32:
64*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lt_u32_e32 vcc, 63, v{{[0-9]+}}
65*9880d681SAndroid Build Coastguard Workerdefine void @commute_uge_64_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
66*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
67*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
68*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
69*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
70*9880d681SAndroid Build Coastguard Worker  %cmp = icmp uge i32 %val, 64
71*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
72*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
73*9880d681SAndroid Build Coastguard Worker  ret void
74*9880d681SAndroid Build Coastguard Worker}
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ult_64_i32:
77*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_u32_e32 vcc, 64, v{{[0-9]+}}
78*9880d681SAndroid Build Coastguard Workerdefine void @commute_ult_64_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
79*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
80*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
81*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
82*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
83*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ult i32 %val, 64
84*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
85*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
86*9880d681SAndroid Build Coastguard Worker  ret void
87*9880d681SAndroid Build Coastguard Worker}
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ule_63_i32:
90*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_u32_e32 vcc, 64, v{{[0-9]+}}
91*9880d681SAndroid Build Coastguard Workerdefine void @commute_ule_63_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
92*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
93*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
94*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
95*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
96*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ule i32 %val, 63
97*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
98*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
99*9880d681SAndroid Build Coastguard Worker  ret void
100*9880d681SAndroid Build Coastguard Worker}
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Worker; FIXME: Undo canonicalization to gt (x + 1) since it doesn't use the inline imm
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ule_64_i32:
105*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 [[K:v[0-9]+]], 0x41{{$}}
106*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_u32_e32 vcc, [[K]], v{{[0-9]+}}
107*9880d681SAndroid Build Coastguard Workerdefine void @commute_ule_64_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
108*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
109*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
110*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
111*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
112*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ule i32 %val, 64
113*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
114*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
115*9880d681SAndroid Build Coastguard Worker  ret void
116*9880d681SAndroid Build Coastguard Worker}
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_sgt_neg1_i32:
119*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lt_i32_e32 vcc, -1, v{{[0-9]+}}
120*9880d681SAndroid Build Coastguard Workerdefine void @commute_sgt_neg1_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
121*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
122*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
123*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
124*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
125*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt i32 %val, -1
126*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
127*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
128*9880d681SAndroid Build Coastguard Worker  ret void
129*9880d681SAndroid Build Coastguard Worker}
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_sge_neg2_i32:
132*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lt_i32_e32 vcc, -3, v{{[0-9]+}}
133*9880d681SAndroid Build Coastguard Workerdefine void @commute_sge_neg2_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
134*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
135*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
136*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
137*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
138*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sge i32 %val, -2
139*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
140*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
141*9880d681SAndroid Build Coastguard Worker  ret void
142*9880d681SAndroid Build Coastguard Worker}
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_slt_neg16_i32:
145*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_i32_e32 vcc, -16, v{{[0-9]+}}
146*9880d681SAndroid Build Coastguard Workerdefine void @commute_slt_neg16_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
147*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
148*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
149*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
150*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
151*9880d681SAndroid Build Coastguard Worker  %cmp = icmp slt i32 %val, -16
152*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
153*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
154*9880d681SAndroid Build Coastguard Worker  ret void
155*9880d681SAndroid Build Coastguard Worker}
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_sle_5_i32:
158*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_i32_e32 vcc, 6, v{{[0-9]+}}
159*9880d681SAndroid Build Coastguard Workerdefine void @commute_sle_5_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #1 {
160*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
161*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i32, i32 addrspace(1)* %in, i32 %tid
162*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
163*9880d681SAndroid Build Coastguard Worker  %val = load i32, i32 addrspace(1)* %gep.in
164*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sle i32 %val, 5
165*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
166*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
167*9880d681SAndroid Build Coastguard Worker  ret void
168*9880d681SAndroid Build Coastguard Worker}
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Worker; --------------------------------------------------------------------------------
171*9880d681SAndroid Build Coastguard Worker; i64 compares
172*9880d681SAndroid Build Coastguard Worker; --------------------------------------------------------------------------------
173*9880d681SAndroid Build Coastguard Worker
174*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_eq_64_i64:
175*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_eq_i64_e32 vcc, 64, v{{\[[0-9]+:[0-9]+\]}}
176*9880d681SAndroid Build Coastguard Workerdefine void @commute_eq_64_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
177*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
178*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
179*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
180*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
181*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq i64 %val, 64
182*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
183*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
184*9880d681SAndroid Build Coastguard Worker  ret void
185*9880d681SAndroid Build Coastguard Worker}
186*9880d681SAndroid Build Coastguard Worker
187*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ne_64_i64:
188*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_ne_i64_e32 vcc, 64, v{{\[[0-9]+:[0-9]+\]}}
189*9880d681SAndroid Build Coastguard Workerdefine void @commute_ne_64_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
190*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
191*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
192*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
193*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
194*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ne i64 %val, 64
195*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
196*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
197*9880d681SAndroid Build Coastguard Worker  ret void
198*9880d681SAndroid Build Coastguard Worker}
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ugt_64_i64:
201*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lt_u64_e32 vcc, 64, v{{\[[0-9]+:[0-9]+\]}}
202*9880d681SAndroid Build Coastguard Workerdefine void @commute_ugt_64_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
203*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
204*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
205*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
206*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
207*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ugt i64 %val, 64
208*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
209*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
210*9880d681SAndroid Build Coastguard Worker  ret void
211*9880d681SAndroid Build Coastguard Worker}
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_uge_64_i64:
214*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lt_u64_e32 vcc, 63, v{{\[[0-9]+:[0-9]+\]}}
215*9880d681SAndroid Build Coastguard Workerdefine void @commute_uge_64_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
216*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
217*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
218*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
219*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
220*9880d681SAndroid Build Coastguard Worker  %cmp = icmp uge i64 %val, 64
221*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
222*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
223*9880d681SAndroid Build Coastguard Worker  ret void
224*9880d681SAndroid Build Coastguard Worker}
225*9880d681SAndroid Build Coastguard Worker
226*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ult_64_i64:
227*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_u64_e32 vcc, 64, v{{\[[0-9]+:[0-9]+\]}}
228*9880d681SAndroid Build Coastguard Workerdefine void @commute_ult_64_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
229*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
230*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
231*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
232*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
233*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ult i64 %val, 64
234*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
235*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
236*9880d681SAndroid Build Coastguard Worker  ret void
237*9880d681SAndroid Build Coastguard Worker}
238*9880d681SAndroid Build Coastguard Worker
239*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ule_63_i64:
240*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_u64_e32 vcc, 64, v{{\[[0-9]+:[0-9]+\]}}
241*9880d681SAndroid Build Coastguard Workerdefine void @commute_ule_63_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
242*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
243*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
244*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
245*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
246*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ule i64 %val, 63
247*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
248*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
249*9880d681SAndroid Build Coastguard Worker  ret void
250*9880d681SAndroid Build Coastguard Worker}
251*9880d681SAndroid Build Coastguard Worker
252*9880d681SAndroid Build Coastguard Worker; FIXME: Undo canonicalization to gt (x + 1) since it doesn't use the inline imm
253*9880d681SAndroid Build Coastguard Worker
254*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ule_64_i64:
255*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_movk_i32 s[[KLO:[0-9]+]], 0x41{{$}}
256*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_u64_e32 vcc, s{{\[}}[[KLO]]:{{[0-9]+\]}}, v{{\[[0-9]+:[0-9]+\]}}
257*9880d681SAndroid Build Coastguard Workerdefine void @commute_ule_64_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
258*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
259*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
260*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
261*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
262*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ule i64 %val, 64
263*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
264*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
265*9880d681SAndroid Build Coastguard Worker  ret void
266*9880d681SAndroid Build Coastguard Worker}
267*9880d681SAndroid Build Coastguard Worker
268*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_sgt_neg1_i64:
269*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lt_i64_e32 vcc, -1, v{{\[[0-9]+:[0-9]+\]}}
270*9880d681SAndroid Build Coastguard Workerdefine void @commute_sgt_neg1_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
271*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
272*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
273*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
274*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
275*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt i64 %val, -1
276*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
277*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
278*9880d681SAndroid Build Coastguard Worker  ret void
279*9880d681SAndroid Build Coastguard Worker}
280*9880d681SAndroid Build Coastguard Worker
281*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_sge_neg2_i64:
282*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lt_i64_e32 vcc, -3, v{{\[[0-9]+:[0-9]+\]}}
283*9880d681SAndroid Build Coastguard Workerdefine void @commute_sge_neg2_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
284*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
285*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
286*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
287*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
288*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sge i64 %val, -2
289*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
290*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
291*9880d681SAndroid Build Coastguard Worker  ret void
292*9880d681SAndroid Build Coastguard Worker}
293*9880d681SAndroid Build Coastguard Worker
294*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_slt_neg16_i64:
295*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_i64_e32 vcc, -16, v{{\[[0-9]+:[0-9]+\]}}
296*9880d681SAndroid Build Coastguard Workerdefine void @commute_slt_neg16_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
297*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
298*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
299*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
300*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
301*9880d681SAndroid Build Coastguard Worker  %cmp = icmp slt i64 %val, -16
302*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
303*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
304*9880d681SAndroid Build Coastguard Worker  ret void
305*9880d681SAndroid Build Coastguard Worker}
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_sle_5_i64:
308*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_i64_e32 vcc, 6, v{{\[[0-9]+:[0-9]+\]}}
309*9880d681SAndroid Build Coastguard Workerdefine void @commute_sle_5_i64(i32 addrspace(1)* %out, i64 addrspace(1)* %in) #1 {
310*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
311*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr i64, i64 addrspace(1)* %in, i32 %tid
312*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
313*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(1)* %gep.in
314*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sle i64 %val, 5
315*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
316*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
317*9880d681SAndroid Build Coastguard Worker  ret void
318*9880d681SAndroid Build Coastguard Worker}
319*9880d681SAndroid Build Coastguard Worker
320*9880d681SAndroid Build Coastguard Worker; --------------------------------------------------------------------------------
321*9880d681SAndroid Build Coastguard Worker; f32 compares
322*9880d681SAndroid Build Coastguard Worker; --------------------------------------------------------------------------------
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Worker
325*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_oeq_2.0_f32:
326*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_eq_f32_e32 vcc, 2.0, v{{[0-9]+}}
327*9880d681SAndroid Build Coastguard Workerdefine void @commute_oeq_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
328*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
329*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
330*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
331*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
332*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp oeq float %val, 2.0
333*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
334*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
335*9880d681SAndroid Build Coastguard Worker  ret void
336*9880d681SAndroid Build Coastguard Worker}
337*9880d681SAndroid Build Coastguard Worker
338*9880d681SAndroid Build Coastguard Worker
339*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ogt_2.0_f32:
340*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lt_f32_e32 vcc, 2.0, v{{[0-9]+}}
341*9880d681SAndroid Build Coastguard Workerdefine void @commute_ogt_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
342*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
343*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
344*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
345*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
346*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ogt float %val, 2.0
347*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
348*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
349*9880d681SAndroid Build Coastguard Worker  ret void
350*9880d681SAndroid Build Coastguard Worker}
351*9880d681SAndroid Build Coastguard Worker
352*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_oge_2.0_f32:
353*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_le_f32_e32 vcc, 2.0, v{{[0-9]+}}
354*9880d681SAndroid Build Coastguard Workerdefine void @commute_oge_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
355*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
356*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
357*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
358*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
359*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp oge float %val, 2.0
360*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
361*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
362*9880d681SAndroid Build Coastguard Worker  ret void
363*9880d681SAndroid Build Coastguard Worker}
364*9880d681SAndroid Build Coastguard Worker
365*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_olt_2.0_f32:
366*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_f32_e32 vcc, 2.0, v{{[0-9]+}}
367*9880d681SAndroid Build Coastguard Workerdefine void @commute_olt_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
368*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
369*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
370*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
371*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
372*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp olt float %val, 2.0
373*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
374*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
375*9880d681SAndroid Build Coastguard Worker  ret void
376*9880d681SAndroid Build Coastguard Worker}
377*9880d681SAndroid Build Coastguard Worker
378*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ole_2.0_f32:
379*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_ge_f32_e32 vcc, 2.0, v{{[0-9]+}}
380*9880d681SAndroid Build Coastguard Workerdefine void @commute_ole_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
381*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
382*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
383*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
384*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
385*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ole float %val, 2.0
386*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
387*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
388*9880d681SAndroid Build Coastguard Worker  ret void
389*9880d681SAndroid Build Coastguard Worker}
390*9880d681SAndroid Build Coastguard Worker
391*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_one_2.0_f32:
392*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lg_f32_e32 vcc, 2.0, v{{[0-9]+}}
393*9880d681SAndroid Build Coastguard Workerdefine void @commute_one_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
394*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
395*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
396*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
397*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
398*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp one float %val, 2.0
399*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
400*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
401*9880d681SAndroid Build Coastguard Worker  ret void
402*9880d681SAndroid Build Coastguard Worker}
403*9880d681SAndroid Build Coastguard Worker
404*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ord_2.0_f32:
405*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_o_f32_e32 vcc, [[REG:v[0-9]+]], [[REG]]
406*9880d681SAndroid Build Coastguard Workerdefine void @commute_ord_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
407*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
408*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
409*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
410*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
411*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ord float %val, 2.0
412*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
413*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
414*9880d681SAndroid Build Coastguard Worker  ret void
415*9880d681SAndroid Build Coastguard Worker}
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ueq_2.0_f32:
418*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_nlg_f32_e32 vcc, 2.0, v{{[0-9]+}}
419*9880d681SAndroid Build Coastguard Workerdefine void @commute_ueq_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
420*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
421*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
422*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
423*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
424*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ueq float %val, 2.0
425*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
426*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
427*9880d681SAndroid Build Coastguard Worker  ret void
428*9880d681SAndroid Build Coastguard Worker}
429*9880d681SAndroid Build Coastguard Worker
430*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ugt_2.0_f32:
431*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_nge_f32_e32 vcc, 2.0, v{{[0-9]+}}
432*9880d681SAndroid Build Coastguard Workerdefine void @commute_ugt_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
433*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
434*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
435*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
436*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
437*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ugt float %val, 2.0
438*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
439*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
440*9880d681SAndroid Build Coastguard Worker  ret void
441*9880d681SAndroid Build Coastguard Worker}
442*9880d681SAndroid Build Coastguard Worker
443*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_uge_2.0_f32:
444*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_ngt_f32_e32 vcc, 2.0, v{{[0-9]+}}
445*9880d681SAndroid Build Coastguard Workerdefine void @commute_uge_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
446*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
447*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
448*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
449*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
450*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp uge float %val, 2.0
451*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
452*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
453*9880d681SAndroid Build Coastguard Worker  ret void
454*9880d681SAndroid Build Coastguard Worker}
455*9880d681SAndroid Build Coastguard Worker
456*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ult_2.0_f32:
457*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_nle_f32_e32 vcc, 2.0, v{{[0-9]+}}
458*9880d681SAndroid Build Coastguard Workerdefine void @commute_ult_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
459*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
460*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
461*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
462*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
463*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ult float %val, 2.0
464*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
465*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
466*9880d681SAndroid Build Coastguard Worker  ret void
467*9880d681SAndroid Build Coastguard Worker}
468*9880d681SAndroid Build Coastguard Worker
469*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ule_2.0_f32:
470*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_nlt_f32_e32 vcc, 2.0, v{{[0-9]+}}
471*9880d681SAndroid Build Coastguard Workerdefine void @commute_ule_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
472*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
473*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
474*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
475*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
476*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ule float %val, 2.0
477*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
478*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
479*9880d681SAndroid Build Coastguard Worker  ret void
480*9880d681SAndroid Build Coastguard Worker}
481*9880d681SAndroid Build Coastguard Worker
482*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_une_2.0_f32:
483*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_neq_f32_e32 vcc, 2.0, v{{[0-9]+}}
484*9880d681SAndroid Build Coastguard Workerdefine void @commute_une_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
485*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
486*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
487*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
488*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
489*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp une float %val, 2.0
490*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
491*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
492*9880d681SAndroid Build Coastguard Worker  ret void
493*9880d681SAndroid Build Coastguard Worker}
494*9880d681SAndroid Build Coastguard Worker
495*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_uno_2.0_f32:
496*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_u_f32_e32 vcc, [[REG:v[0-9]+]], [[REG]]
497*9880d681SAndroid Build Coastguard Workerdefine void @commute_uno_2.0_f32(i32 addrspace(1)* %out, float addrspace(1)* %in) #1 {
498*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
499*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr float, float addrspace(1)* %in, i32 %tid
500*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
501*9880d681SAndroid Build Coastguard Worker  %val = load float, float addrspace(1)* %gep.in
502*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp uno float %val, 2.0
503*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
504*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
505*9880d681SAndroid Build Coastguard Worker  ret void
506*9880d681SAndroid Build Coastguard Worker}
507*9880d681SAndroid Build Coastguard Worker
508*9880d681SAndroid Build Coastguard Worker; --------------------------------------------------------------------------------
509*9880d681SAndroid Build Coastguard Worker; f64 compares
510*9880d681SAndroid Build Coastguard Worker; --------------------------------------------------------------------------------
511*9880d681SAndroid Build Coastguard Worker
512*9880d681SAndroid Build Coastguard Worker
513*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_oeq_2.0_f64:
514*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_eq_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
515*9880d681SAndroid Build Coastguard Workerdefine void @commute_oeq_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
516*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
517*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
518*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
519*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
520*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp oeq double %val, 2.0
521*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
522*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
523*9880d681SAndroid Build Coastguard Worker  ret void
524*9880d681SAndroid Build Coastguard Worker}
525*9880d681SAndroid Build Coastguard Worker
526*9880d681SAndroid Build Coastguard Worker
527*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ogt_2.0_f64:
528*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lt_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
529*9880d681SAndroid Build Coastguard Workerdefine void @commute_ogt_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
530*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
531*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
532*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
533*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
534*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ogt double %val, 2.0
535*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
536*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
537*9880d681SAndroid Build Coastguard Worker  ret void
538*9880d681SAndroid Build Coastguard Worker}
539*9880d681SAndroid Build Coastguard Worker
540*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_oge_2.0_f64:
541*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_le_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
542*9880d681SAndroid Build Coastguard Workerdefine void @commute_oge_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
543*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
544*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
545*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
546*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
547*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp oge double %val, 2.0
548*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
549*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
550*9880d681SAndroid Build Coastguard Worker  ret void
551*9880d681SAndroid Build Coastguard Worker}
552*9880d681SAndroid Build Coastguard Worker
553*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_olt_2.0_f64:
554*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_gt_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
555*9880d681SAndroid Build Coastguard Workerdefine void @commute_olt_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
556*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
557*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
558*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
559*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
560*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp olt double %val, 2.0
561*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
562*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
563*9880d681SAndroid Build Coastguard Worker  ret void
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Worker
566*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ole_2.0_f64:
567*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_ge_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
568*9880d681SAndroid Build Coastguard Workerdefine void @commute_ole_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
569*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
570*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
571*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
572*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
573*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ole double %val, 2.0
574*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
575*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
576*9880d681SAndroid Build Coastguard Worker  ret void
577*9880d681SAndroid Build Coastguard Worker}
578*9880d681SAndroid Build Coastguard Worker
579*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_one_2.0_f64:
580*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_lg_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
581*9880d681SAndroid Build Coastguard Workerdefine void @commute_one_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
582*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
583*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
584*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
585*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
586*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp one double %val, 2.0
587*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
588*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
589*9880d681SAndroid Build Coastguard Worker  ret void
590*9880d681SAndroid Build Coastguard Worker}
591*9880d681SAndroid Build Coastguard Worker
592*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ord_2.0_f64:
593*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_o_f64_e32 vcc, [[REG:v\[[0-9]+:[0-9]+\]]], [[REG]]
594*9880d681SAndroid Build Coastguard Workerdefine void @commute_ord_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
595*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
596*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
597*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
598*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
599*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ord double %val, 2.0
600*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
601*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
602*9880d681SAndroid Build Coastguard Worker  ret void
603*9880d681SAndroid Build Coastguard Worker}
604*9880d681SAndroid Build Coastguard Worker
605*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ueq_2.0_f64:
606*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_nlg_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
607*9880d681SAndroid Build Coastguard Workerdefine void @commute_ueq_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
608*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
609*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
610*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
611*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
612*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ueq double %val, 2.0
613*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
614*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
615*9880d681SAndroid Build Coastguard Worker  ret void
616*9880d681SAndroid Build Coastguard Worker}
617*9880d681SAndroid Build Coastguard Worker
618*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ugt_2.0_f64:
619*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_nge_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
620*9880d681SAndroid Build Coastguard Workerdefine void @commute_ugt_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
621*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
622*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
623*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
624*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
625*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ugt double %val, 2.0
626*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
627*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
628*9880d681SAndroid Build Coastguard Worker  ret void
629*9880d681SAndroid Build Coastguard Worker}
630*9880d681SAndroid Build Coastguard Worker
631*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_uge_2.0_f64:
632*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_ngt_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
633*9880d681SAndroid Build Coastguard Workerdefine void @commute_uge_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
634*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
635*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
636*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
637*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
638*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp uge double %val, 2.0
639*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
640*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
641*9880d681SAndroid Build Coastguard Worker  ret void
642*9880d681SAndroid Build Coastguard Worker}
643*9880d681SAndroid Build Coastguard Worker
644*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ult_2.0_f64:
645*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_nle_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
646*9880d681SAndroid Build Coastguard Workerdefine void @commute_ult_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
647*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
648*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
649*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
650*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
651*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ult double %val, 2.0
652*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
653*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
654*9880d681SAndroid Build Coastguard Worker  ret void
655*9880d681SAndroid Build Coastguard Worker}
656*9880d681SAndroid Build Coastguard Worker
657*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_ule_2.0_f64:
658*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_nlt_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
659*9880d681SAndroid Build Coastguard Workerdefine void @commute_ule_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
660*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
661*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
662*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
663*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
664*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ule double %val, 2.0
665*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
666*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
667*9880d681SAndroid Build Coastguard Worker  ret void
668*9880d681SAndroid Build Coastguard Worker}
669*9880d681SAndroid Build Coastguard Worker
670*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_une_2.0_f64:
671*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_neq_f64_e32 vcc, 2.0, v{{\[[0-9]+:[0-9]+\]}}
672*9880d681SAndroid Build Coastguard Workerdefine void @commute_une_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
673*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
674*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
675*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
676*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
677*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp une double %val, 2.0
678*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
679*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
680*9880d681SAndroid Build Coastguard Worker  ret void
681*9880d681SAndroid Build Coastguard Worker}
682*9880d681SAndroid Build Coastguard Worker
683*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}commute_uno_2.0_f64:
684*9880d681SAndroid Build Coastguard Worker; GCN: v_cmp_u_f64_e32 vcc, [[REG:v\[[0-9]+:[0-9]+\]]], [[REG]]
685*9880d681SAndroid Build Coastguard Workerdefine void @commute_uno_2.0_f64(i32 addrspace(1)* %out, double addrspace(1)* %in) #1 {
686*9880d681SAndroid Build Coastguard Worker  %tid = call i32 @llvm.amdgcn.workitem.id.x() #0
687*9880d681SAndroid Build Coastguard Worker  %gep.in = getelementptr double, double addrspace(1)* %in, i32 %tid
688*9880d681SAndroid Build Coastguard Worker  %gep.out = getelementptr i32, i32 addrspace(1)* %out, i32 %tid
689*9880d681SAndroid Build Coastguard Worker  %val = load double, double addrspace(1)* %gep.in
690*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp uno double %val, 2.0
691*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %cmp to i32
692*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %gep.out
693*9880d681SAndroid Build Coastguard Worker  ret void
694*9880d681SAndroid Build Coastguard Worker}
695*9880d681SAndroid Build Coastguard Worker
696*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone }
697*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind }
698