Skip to content

Commit 0d64f46

Browse files
author
mattarde
committed
rebase test
1 parent 10d8f3f commit 0d64f46

File tree

1 file changed

+127
-0
lines changed

1 file changed

+127
-0
lines changed

llvm/test/CodeGen/X86/isel-fpclass.ll

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefixes=X64,X64-SDAGISEL
44
; RUN: llc < %s -mtriple=i686-linux -fast-isel -fast-isel-abort=1 | FileCheck %s -check-prefixes=X86-FASTISEL
55
; RUN: llc < %s -mtriple=x86_64-linux -fast-isel -fast-isel-abort=1 | FileCheck %s -check-prefixes=X64,X64-FASTISEL
6+
; RUN: llc < %s -mtriple=i686-linux -global-isel -global-isel-abort=1 | FileCheck %s -check-prefixes=X86,X86-GISEL
7+
; RUN: llc < %s -mtriple=x86_64-linux -global-isel -global-isel-abort=1 | FileCheck %s -check-prefixes=X64,X64-GISEL
68

79
; FIXME: We can reuse/delete llvm/test/CodeGen/X86/is_fpclass.ll when all patches are included.
810

@@ -23,6 +25,11 @@ define i1 @isnone_f(float %x) {
2325
; X86-FASTISEL-NEXT: fstp %st(0)
2426
; X86-FASTISEL-NEXT: xorl %eax, %eax
2527
; X86-FASTISEL-NEXT: retl
28+
;
29+
; X86-LABEL: isnone_f:
30+
; X86: # %bb.0: # %entry
31+
; X86-NEXT: xorl %eax, %eax
32+
; X86-NEXT: retl
2633
entry:
2734
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 0)
2835
ret i1 %0
@@ -45,6 +52,11 @@ define i1 @isany_f(float %x) {
4552
; X86-FASTISEL-NEXT: fstp %st(0)
4653
; X86-FASTISEL-NEXT: movb $1, %al
4754
; X86-FASTISEL-NEXT: retl
55+
;
56+
; X86-LABEL: isany_f:
57+
; X86: # %bb.0: # %entry
58+
; X86-NEXT: movb $1, %al
59+
; X86-NEXT: retl
4860
entry:
4961
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1023)
5062
ret i1 %0
@@ -89,6 +101,17 @@ define i1 @issignaling_f(float %x) {
89101
; X86-FASTISEL-NEXT: popl %ecx
90102
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
91103
; X86-FASTISEL-NEXT: retl
104+
;
105+
; X86-LABEL: issignaling_f:
106+
; X86: # %bb.0:
107+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
108+
; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
109+
; X86-NEXT: cmpl $2143289344, %eax # imm = 0x7FC00000
110+
; X86-NEXT: setl %cl
111+
; X86-NEXT: cmpl $2139095041, %eax # imm = 0x7F800001
112+
; X86-NEXT: setge %al
113+
; X86-NEXT: andb %cl, %al
114+
; X86-NEXT: retl
92115
%a0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1) ; "snan"
93116
ret i1 %a0
94117
}
@@ -123,6 +146,14 @@ define i1 @issignaling_f(float %x) {
123146
; X86-FASTISEL-NEXT: popl %ecx
124147
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
125148
; X86-FASTISEL-NEXT: retl
149+
;
150+
; X86-LABEL: isquiet_f:
151+
; X86: # %bb.0: # %entry
152+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
153+
; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
154+
; X86-NEXT: cmpl $2143289344, %eax # imm = 0x7FC00000
155+
; X86-NEXT: setge %al
156+
; X86-NEXT: retl
126157
entry:
127158
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 2) ; "qnan"
128159
ret i1 %0
@@ -158,6 +189,14 @@ define i1 @not_isquiet_f(float %x) {
158189
; X86-FASTISEL-NEXT: popl %ecx
159190
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
160191
; X86-FASTISEL-NEXT: retl
192+
;
193+
; X86-LABEL: not_isquiet_f:
194+
; X86: # %bb.0: # %entry
195+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
196+
; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
197+
; X86-NEXT: cmpl $2143289344, %eax # imm = 0x7FC00000
198+
; X86-NEXT: setl %al
199+
; X86-NEXT: retl
161200
entry:
162201
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1021) ; ~"qnan"
163202
ret i1 %0
@@ -193,6 +232,14 @@ define i1 @isinf_f(float %x) {
193232
; X86-FASTISEL-NEXT: popl %ecx
194233
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
195234
; X86-FASTISEL-NEXT: retl
235+
;
236+
; X86-LABEL: isinf_f:
237+
; X86: # %bb.0: # %entry
238+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
239+
; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
240+
; X86-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
241+
; X86-NEXT: sete %al
242+
; X86-NEXT: retl
196243
entry:
197244
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 516) ; 0x204 = "inf"
198245
ret i1 %0
@@ -228,6 +275,14 @@ define i1 @not_isinf_f(float %x) {
228275
; X86-FASTISEL-NEXT: popl %ecx
229276
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
230277
; X86-FASTISEL-NEXT: retl
278+
;
279+
; X86-LABEL: not_isinf_f:
280+
; X86: # %bb.0: # %entry
281+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
282+
; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
283+
; X86-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
284+
; X86-NEXT: setne %al
285+
; X86-NEXT: retl
231286
entry:
232287
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 507) ; ~0x204 = "~inf"
233288
ret i1 %0
@@ -258,6 +313,12 @@ define i1 @is_plus_inf_f(float %x) {
258313
; X86-FASTISEL-NEXT: popl %ecx
259314
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
260315
; X86-FASTISEL-NEXT: retl
316+
;
317+
; X86-LABEL: is_plus_inf_f:
318+
; X86: # %bb.0: # %entry
319+
; X86-NEXT: cmpl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
320+
; X86-NEXT: sete %al
321+
; X86-NEXT: retl
261322
entry:
262323
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 512) ; 0x200 = "+inf"
263324
ret i1 %0
@@ -288,6 +349,12 @@ define i1 @is_minus_inf_f(float %x) {
288349
; X86-FASTISEL-NEXT: popl %ecx
289350
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
290351
; X86-FASTISEL-NEXT: retl
352+
;
353+
; X86-LABEL: is_minus_inf_f:
354+
; X86: # %bb.0: # %entry
355+
; X86-NEXT: cmpl $-8388608, {{[0-9]+}}(%esp) # imm = 0xFF800000
356+
; X86-NEXT: sete %al
357+
; X86-NEXT: retl
291358
entry:
292359
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 4) ; "-inf"
293360
ret i1 %0
@@ -318,6 +385,12 @@ define i1 @not_is_minus_inf_f(float %x) {
318385
; X86-FASTISEL-NEXT: popl %ecx
319386
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
320387
; X86-FASTISEL-NEXT: retl
388+
;
389+
; X86-LABEL: not_is_minus_inf_f:
390+
; X86: # %bb.0: # %entry
391+
; X86-NEXT: cmpl $-8388608, {{[0-9]+}}(%esp) # imm = 0xFF800000
392+
; X86-NEXT: setne %al
393+
; X86-NEXT: retl
321394
entry:
322395
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1019) ; ~"-inf"
323396
ret i1 %0
@@ -353,6 +426,14 @@ define i1 @isfinite_f(float %x) {
353426
; X86-FASTISEL-NEXT: popl %ecx
354427
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
355428
; X86-FASTISEL-NEXT: retl
429+
;
430+
; X86-LABEL: isfinite_f:
431+
; X86: # %bb.0: # %entry
432+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
433+
; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
434+
; X86-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
435+
; X86-NEXT: setl %al
436+
; X86-NEXT: retl
356437
entry:
357438
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 504) ; 0x1f8 = "finite"
358439
ret i1 %0
@@ -388,6 +469,14 @@ define i1 @not_isfinite_f(float %x) {
388469
; X86-FASTISEL-NEXT: popl %ecx
389470
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
390471
; X86-FASTISEL-NEXT: retl
472+
;
473+
; X86-LABEL: not_isfinite_f:
474+
; X86: # %bb.0: # %entry
475+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
476+
; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
477+
; X86-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
478+
; X86-NEXT: setge %al
479+
; X86-NEXT: retl
391480
entry:
392481
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 519) ; ~0x1f8 = "~finite"
393482
ret i1 %0
@@ -418,6 +507,12 @@ define i1 @is_plus_finite_f(float %x) {
418507
; X86-FASTISEL-NEXT: popl %ecx
419508
; X86-FASTISEL-NEXT: .cfi_def_cfa_offset 4
420509
; X86-FASTISEL-NEXT: retl
510+
;
511+
; X86-LABEL: is_plus_finite_f:
512+
; X86: # %bb.0: # %entry
513+
; X86-NEXT: cmpl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
514+
; X86-NEXT: setb %al
515+
; X86-NEXT: retl
421516
entry:
422517
%0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 448) ; 0x1c0 = "+finite"
423518
ret i1 %0
@@ -440,6 +535,11 @@ define i1 @isnone_d(double %x) nounwind {
440535
; X86-FASTISEL-NEXT: fstp %st(0)
441536
; X86-FASTISEL-NEXT: xorl %eax, %eax
442537
; X86-FASTISEL-NEXT: retl
538+
;
539+
; X86-LABEL: isnone_d:
540+
; X86: # %bb.0: # %entry
541+
; X86-NEXT: xorl %eax, %eax
542+
; X86-NEXT: retl
443543
entry:
444544
%0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 0)
445545
ret i1 %0
@@ -462,6 +562,11 @@ define i1 @isany_d(double %x) nounwind {
462562
; X86-FASTISEL-NEXT: fstp %st(0)
463563
; X86-FASTISEL-NEXT: movb $1, %al
464564
; X86-FASTISEL-NEXT: retl
565+
;
566+
; X86-LABEL: isany_d:
567+
; X86: # %bb.0: # %entry
568+
; X86-NEXT: movb $1, %al
569+
; X86-NEXT: retl
465570
entry:
466571
%0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 1023)
467572
ret i1 %0
@@ -491,6 +596,16 @@ define i1 @isnone_f80(x86_fp80 %x) nounwind {
491596
; X64-FASTISEL-NEXT: fstp %st(0)
492597
; X64-FASTISEL-NEXT: xorl %eax, %eax
493598
; X64-FASTISEL-NEXT: retq
599+
;
600+
; X86-LABEL: isnone_f80:
601+
; X86: # %bb.0: # %entry
602+
; X86-NEXT: xorl %eax, %eax
603+
; X86-NEXT: retl
604+
;
605+
; X64-GISEL-LABEL: isnone_f80:
606+
; X64-GISEL: # %bb.0: # %entry
607+
; X64-GISEL-NEXT: xorl %eax, %eax
608+
; X64-GISEL-NEXT: retq
494609
entry:
495610
%0 = tail call i1 @llvm.is.fpclass.f80(x86_fp80 %x, i32 0)
496611
ret i1 %0
@@ -520,7 +635,19 @@ define i1 @isany_f80(x86_fp80 %x) nounwind {
520635
; X64-FASTISEL-NEXT: fstp %st(0)
521636
; X64-FASTISEL-NEXT: movb $1, %al
522637
; X64-FASTISEL-NEXT: retq
638+
;
639+
; X86-LABEL: isany_f80:
640+
; X86: # %bb.0: # %entry
641+
; X86-NEXT: movb $1, %al
642+
; X86-NEXT: retl
643+
;
644+
; X64-GISEL-LABEL: isany_f80:
645+
; X64-GISEL: # %bb.0: # %entry
646+
; X64-GISEL-NEXT: movb $1, %al
647+
; X64-GISEL-NEXT: retq
523648
entry:
524649
%0 = tail call i1 @llvm.is.fpclass.f80(x86_fp80 %x, i32 1023)
525650
ret i1 %0
526651
}
652+
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
653+
; X86-GISEL: {{.*}}

0 commit comments

Comments
 (0)