forked from flang-compiler/classic-flang-llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[X86] Add test case for PR47000. NFC
- Loading branch information
Showing
1 changed file
with
151 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --no_x86_scrub_rip | ||
; RUN: llc < %s -mcpu=pentium4 -O0 | FileCheck %s | ||
|
||
target datalayout = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-f80:32-n8:16:32-S128" | ||
target triple = "i386-unknown-linux-unknown" | ||
|
||
define <4 x half> @doTheTestMod(<4 x half> %0, <4 x half> %1) nounwind { | ||
; CHECK-LABEL: doTheTestMod: | ||
; CHECK: # %bb.0: # %Entry | ||
; CHECK-NEXT: pushl %ebp | ||
; CHECK-NEXT: pushl %ebx | ||
; CHECK-NEXT: pushl %edi | ||
; CHECK-NEXT: pushl %esi | ||
; CHECK-NEXT: subl $124, %esp | ||
; CHECK-NEXT: movl 144(%esp), %eax | ||
; CHECK-NEXT: movl %eax, %ecx | ||
; CHECK-NEXT: movw 176(%esp), %dx | ||
; CHECK-NEXT: movw 172(%esp), %si | ||
; CHECK-NEXT: movw 164(%esp), %di | ||
; CHECK-NEXT: movw 166(%esp), %bx | ||
; CHECK-NEXT: movw 160(%esp), %bp | ||
; CHECK-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill | ||
; CHECK-NEXT: movw 156(%esp), %ax | ||
; CHECK-NEXT: movw %ax, {{[-0-9]+}}(%e{{[sb]}}p) # 2-byte Spill | ||
; CHECK-NEXT: movw 148(%esp), %ax | ||
; CHECK-NEXT: movw %ax, {{[-0-9]+}}(%e{{[sb]}}p) # 2-byte Spill | ||
; CHECK-NEXT: movw 150(%esp), %ax | ||
; CHECK-NEXT: movw %ax, {{[-0-9]+}}(%e{{[sb]}}p) # 2-byte Spill | ||
; CHECK-NEXT: movw {{[-0-9]+}}(%e{{[sb]}}p), %ax # 2-byte Reload | ||
; CHECK-NEXT: movw %ax, 112(%esp) | ||
; CHECK-NEXT: movw {{[-0-9]+}}(%e{{[sb]}}p), %ax # 2-byte Reload | ||
; CHECK-NEXT: movw %ax, 114(%esp) | ||
; CHECK-NEXT: movw {{[-0-9]+}}(%e{{[sb]}}p), %ax # 2-byte Reload | ||
; CHECK-NEXT: movw %ax, 116(%esp) | ||
; CHECK-NEXT: movw %bp, 118(%esp) | ||
; CHECK-NEXT: movw %dx, 110(%esp) | ||
; CHECK-NEXT: movw %si, 108(%esp) | ||
; CHECK-NEXT: movw %bx, 106(%esp) | ||
; CHECK-NEXT: movw %di, 104(%esp) | ||
; CHECK-NEXT: movzwl 118(%esp), %edx | ||
; CHECK-NEXT: movzwl 116(%esp), %esi | ||
; CHECK-NEXT: movzwl 114(%esp), %edi | ||
; CHECK-NEXT: movzwl 112(%esp), %ebx | ||
; CHECK-NEXT: movzwl 110(%esp), %ebp | ||
; CHECK-NEXT: movzwl 108(%esp), %eax | ||
; CHECK-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill | ||
; CHECK-NEXT: movzwl 106(%esp), %eax | ||
; CHECK-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill | ||
; CHECK-NEXT: movzwl 104(%esp), %eax | ||
; CHECK-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: movl %ebx, (%eax) | ||
; CHECK-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill | ||
; CHECK-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill | ||
; CHECK-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill | ||
; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill | ||
; CHECK-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill | ||
; CHECK-NEXT: calll __gnu_h2f_ieee | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload | ||
; CHECK-NEXT: movl %ecx, (%eax) | ||
; CHECK-NEXT: fstpt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Spill | ||
; CHECK-NEXT: calll __gnu_h2f_ieee | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: fstps 4(%eax) | ||
; CHECK-NEXT: fldt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Reload | ||
; CHECK-NEXT: fstps (%eax) | ||
; CHECK-NEXT: calll fmodf | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: fstps (%eax) | ||
; CHECK-NEXT: calll __gnu_f2h_ieee | ||
; CHECK-NEXT: movl %esp, %ecx | ||
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload | ||
; CHECK-NEXT: movl %edx, (%ecx) | ||
; CHECK-NEXT: movw %ax, {{[-0-9]+}}(%e{{[sb]}}p) # 2-byte Spill | ||
; CHECK-NEXT: calll __gnu_h2f_ieee | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload | ||
; CHECK-NEXT: movl %ecx, (%eax) | ||
; CHECK-NEXT: fstpt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Spill | ||
; CHECK-NEXT: calll __gnu_h2f_ieee | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: fstps 4(%eax) | ||
; CHECK-NEXT: fldt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Reload | ||
; CHECK-NEXT: fstps (%eax) | ||
; CHECK-NEXT: calll fmodf | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: fstps (%eax) | ||
; CHECK-NEXT: calll __gnu_f2h_ieee | ||
; CHECK-NEXT: movl %esp, %ecx | ||
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload | ||
; CHECK-NEXT: movl %edx, (%ecx) | ||
; CHECK-NEXT: movw %ax, {{[-0-9]+}}(%e{{[sb]}}p) # 2-byte Spill | ||
; CHECK-NEXT: calll __gnu_h2f_ieee | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload | ||
; CHECK-NEXT: movl %ecx, (%eax) | ||
; CHECK-NEXT: fstpt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Spill | ||
; CHECK-NEXT: calll __gnu_h2f_ieee | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: fstps 4(%eax) | ||
; CHECK-NEXT: fldt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Reload | ||
; CHECK-NEXT: fstps (%eax) | ||
; CHECK-NEXT: calll fmodf | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: fstps (%eax) | ||
; CHECK-NEXT: calll __gnu_f2h_ieee | ||
; CHECK-NEXT: movl %esp, %ecx | ||
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload | ||
; CHECK-NEXT: movl %edx, (%ecx) | ||
; CHECK-NEXT: movw %ax, {{[-0-9]+}}(%e{{[sb]}}p) # 2-byte Spill | ||
; CHECK-NEXT: calll __gnu_h2f_ieee | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload | ||
; CHECK-NEXT: movl %ecx, (%eax) | ||
; CHECK-NEXT: fstpt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Spill | ||
; CHECK-NEXT: calll __gnu_h2f_ieee | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: fstps 4(%eax) | ||
; CHECK-NEXT: fldt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Reload | ||
; CHECK-NEXT: fstps (%eax) | ||
; CHECK-NEXT: calll fmodf | ||
; CHECK-NEXT: movl %esp, %eax | ||
; CHECK-NEXT: fstps (%eax) | ||
; CHECK-NEXT: calll __gnu_f2h_ieee | ||
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload | ||
; CHECK-NEXT: movw %ax, 6(%ecx) | ||
; CHECK-NEXT: movw {{[-0-9]+}}(%e{{[sb]}}p), %ax # 2-byte Reload | ||
; CHECK-NEXT: movw %ax, 4(%ecx) | ||
; CHECK-NEXT: movw {{[-0-9]+}}(%e{{[sb]}}p), %dx # 2-byte Reload | ||
; CHECK-NEXT: movw %dx, 2(%ecx) | ||
; CHECK-NEXT: movw {{[-0-9]+}}(%e{{[sb]}}p), %si # 2-byte Reload | ||
; CHECK-NEXT: movw %si, (%ecx) | ||
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload | ||
; CHECK-NEXT: addl $124, %esp | ||
; CHECK-NEXT: popl %esi | ||
; CHECK-NEXT: popl %edi | ||
; CHECK-NEXT: popl %ebx | ||
; CHECK-NEXT: popl %ebp | ||
; CHECK-NEXT: retl $4 | ||
Entry: | ||
%x = alloca <4 x half>, align 8 | ||
%y = alloca <4 x half>, align 8 | ||
store <4 x half> %0, <4 x half>* %x, align 8 | ||
store <4 x half> %1, <4 x half>* %y, align 8 | ||
%2 = load <4 x half>, <4 x half>* %x, align 8 | ||
%3 = load <4 x half>, <4 x half>* %y, align 8 | ||
%4 = frem <4 x half> %2, %3 | ||
ret <4 x half> %4 | ||
} | ||
|