brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.9 KiB · 77b3f26 Raw
209 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc < %s -mtriple=i686-linux-gnu -fast-isel                            | FileCheck %s --check-prefixes=X86,FASTISEL-X863; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 -fast-isel=0           | FileCheck %s --check-prefixes=X86,SDAG-X864; DISABLED: llc < %s -mtriple=i686-linux-gnu -global-isel=1 -global-isel-abort=2   | FileCheck %s --check-prefixes=X86,GISEL-X865; RUN: llc < %s -mtriple=i686-linux-gnu -fast-isel -mattr=+sse                            | FileCheck %s --check-prefixes=X86,SSE-X86,FASTISEL-SSE-X866; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 -fast-isel=0 -mattr=+sse           | FileCheck %s --check-prefixes=X86,SSE-X86,SDAG-SSE-X867; DISABLED: llc < %s -mtriple=i686-linux-gnu -global-isel=1 -global-isel-abort=2 -mattr=+sse   | FileCheck %s --check-prefixes=X86,SSE-X86,GISEL-SSE-X868; RUN: llc < %s -mtriple=x86_64-linux-gnu -fast-isel -mattr=+sse                          | FileCheck %s --check-prefixes=X64,SSE-X64,FASTISEL-SSE-X649; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel=0 -fast-isel=0 -mattr=+sse         | FileCheck %s --check-prefixes=X64,SSE-X64,SDAG-SSE-X6410; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel=1 -global-isel-abort=2 -mattr=+sse | FileCheck %s --check-prefixes=X64,SSE-X64,GISEL-SSE-X6411 12define double @fneg_f64(double %x) nounwind {13; X86-LABEL: fneg_f64:14; X86:       # %bb.0:15; X86-NEXT:    fldl {{[0-9]+}}(%esp)16; X86-NEXT:    fchs17; X86-NEXT:    retl18;19; FASTISEL-SSE-X64-LABEL: fneg_f64:20; FASTISEL-SSE-X64:       # %bb.0:21; FASTISEL-SSE-X64-NEXT:    movq %xmm0, %rax22; FASTISEL-SSE-X64-NEXT:    movabsq $-9223372036854775808, %rcx # imm = 0x800000000000000023; FASTISEL-SSE-X64-NEXT:    xorq %rax, %rcx24; FASTISEL-SSE-X64-NEXT:    movq %rcx, %xmm025; FASTISEL-SSE-X64-NEXT:    retq26;27; SDAG-SSE-X64-LABEL: fneg_f64:28; SDAG-SSE-X64:       # %bb.0:29; SDAG-SSE-X64-NEXT:    xorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm030; SDAG-SSE-X64-NEXT:    retq31;32; GISEL-SSE-X64-LABEL: fneg_f64:33; GISEL-SSE-X64:       # %bb.0:34; GISEL-SSE-X64-NEXT:    movabsq $-9223372036854775808, %rax # imm = 0x800000000000000035; GISEL-SSE-X64-NEXT:    movq %xmm0, %rcx36; GISEL-SSE-X64-NEXT:    xorq %rax, %rcx37; GISEL-SSE-X64-NEXT:    movq %rcx, %xmm038; GISEL-SSE-X64-NEXT:    retq39  %y = fneg double %x40  ret double %y41}42 43define float @fneg_f32(float %x) nounwind {44; FASTISEL-X86-LABEL: fneg_f32:45; FASTISEL-X86:       # %bb.0:46; FASTISEL-X86-NEXT:    flds {{[0-9]+}}(%esp)47; FASTISEL-X86-NEXT:    fchs48; FASTISEL-X86-NEXT:    retl49;50; SDAG-X86-LABEL: fneg_f32:51; SDAG-X86:       # %bb.0:52; SDAG-X86-NEXT:    flds {{[0-9]+}}(%esp)53; SDAG-X86-NEXT:    fchs54; SDAG-X86-NEXT:    retl55;56; SSE-X86-LABEL: fneg_f32:57; SSE-X86:       # %bb.0:58; SSE-X86-NEXT:    pushl %eax59; SSE-X86-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero60; SSE-X86-NEXT:    xorps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm061; SSE-X86-NEXT:    movss %xmm0, (%esp)62; SSE-X86-NEXT:    flds (%esp)63; SSE-X86-NEXT:    popl %eax64; SSE-X86-NEXT:    retl65;66; FASTISEL-SSE-X64-LABEL: fneg_f32:67; FASTISEL-SSE-X64:       # %bb.0:68; FASTISEL-SSE-X64-NEXT:    movd %xmm0, %eax69; FASTISEL-SSE-X64-NEXT:    xorl $2147483648, %eax # imm = 0x8000000070; FASTISEL-SSE-X64-NEXT:    movd %eax, %xmm071; FASTISEL-SSE-X64-NEXT:    retq72;73; SDAG-SSE-X64-LABEL: fneg_f32:74; SDAG-SSE-X64:       # %bb.0:75; SDAG-SSE-X64-NEXT:    xorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm076; SDAG-SSE-X64-NEXT:    retq77;78; GISEL-SSE-X64-LABEL: fneg_f32:79; GISEL-SSE-X64:       # %bb.0:80; GISEL-SSE-X64-NEXT:    movd %xmm0, %eax81; GISEL-SSE-X64-NEXT:    addl $-2147483648, %eax # imm = 0x8000000082; GISEL-SSE-X64-NEXT:    movd %eax, %xmm083; GISEL-SSE-X64-NEXT:    retq84  %y = fneg float %x85  ret float %y86}87 88define void @fneg_f64_mem(ptr %x, ptr %y) nounwind {89; X86-LABEL: fneg_f64_mem:90; X86:       # %bb.0:91; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax92; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx93; X86-NEXT:    fldl (%ecx)94; X86-NEXT:    fchs95; X86-NEXT:    fstpl (%eax)96; X86-NEXT:    retl97;98; FASTISEL-SSE-X64-LABEL: fneg_f64_mem:99; FASTISEL-SSE-X64:       # %bb.0:100; FASTISEL-SSE-X64-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero101; FASTISEL-SSE-X64-NEXT:    movq %xmm0, %rax102; FASTISEL-SSE-X64-NEXT:    movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000103; FASTISEL-SSE-X64-NEXT:    xorq %rax, %rcx104; FASTISEL-SSE-X64-NEXT:    movq %rcx, %xmm0105; FASTISEL-SSE-X64-NEXT:    movq %xmm0, (%rsi)106; FASTISEL-SSE-X64-NEXT:    retq107;108; SDAG-SSE-X64-LABEL: fneg_f64_mem:109; SDAG-SSE-X64:       # %bb.0:110; SDAG-SSE-X64-NEXT:    movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000111; SDAG-SSE-X64-NEXT:    xorq (%rdi), %rax112; SDAG-SSE-X64-NEXT:    movq %rax, (%rsi)113; SDAG-SSE-X64-NEXT:    retq114;115; GISEL-SSE-X64-LABEL: fneg_f64_mem:116; GISEL-SSE-X64:       # %bb.0:117; GISEL-SSE-X64-NEXT:    movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000118; GISEL-SSE-X64-NEXT:    xorq (%rdi), %rax119; GISEL-SSE-X64-NEXT:    movq %rax, (%rsi)120; GISEL-SSE-X64-NEXT:    retq121  %a = load double, ptr %x122  %b = fneg double %a123  store double %b, ptr %y124  ret void125}126 127define void @fneg_f32_mem(ptr %x, ptr %y) nounwind {128; FASTISEL-X86-LABEL: fneg_f32_mem:129; FASTISEL-X86:       # %bb.0:130; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax131; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx132; FASTISEL-X86-NEXT:    movl $-2147483648, %edx # imm = 0x80000000133; FASTISEL-X86-NEXT:    xorl (%ecx), %edx134; FASTISEL-X86-NEXT:    movl %edx, (%eax)135; FASTISEL-X86-NEXT:    retl136;137; SDAG-X86-LABEL: fneg_f32_mem:138; SDAG-X86:       # %bb.0:139; SDAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax140; SDAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx141; SDAG-X86-NEXT:    movl $-2147483648, %edx # imm = 0x80000000142; SDAG-X86-NEXT:    xorl (%ecx), %edx143; SDAG-X86-NEXT:    movl %edx, (%eax)144; SDAG-X86-NEXT:    retl145;146; FASTISEL-SSE-X86-LABEL: fneg_f32_mem:147; FASTISEL-SSE-X86:       # %bb.0:148; FASTISEL-SSE-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax149; FASTISEL-SSE-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx150; FASTISEL-SSE-X86-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero151; FASTISEL-SSE-X86-NEXT:    xorps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0152; FASTISEL-SSE-X86-NEXT:    movss %xmm0, (%eax)153; FASTISEL-SSE-X86-NEXT:    retl154;155; SDAG-SSE-X86-LABEL: fneg_f32_mem:156; SDAG-SSE-X86:       # %bb.0:157; SDAG-SSE-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax158; SDAG-SSE-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx159; SDAG-SSE-X86-NEXT:    movl $-2147483648, %edx # imm = 0x80000000160; SDAG-SSE-X86-NEXT:    xorl (%ecx), %edx161; SDAG-SSE-X86-NEXT:    movl %edx, (%eax)162; SDAG-SSE-X86-NEXT:    retl163;164; FASTISEL-SSE-X64-LABEL: fneg_f32_mem:165; FASTISEL-SSE-X64:       # %bb.0:166; FASTISEL-SSE-X64-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero167; FASTISEL-SSE-X64-NEXT:    movd %xmm0, %eax168; FASTISEL-SSE-X64-NEXT:    xorl $2147483648, %eax # imm = 0x80000000169; FASTISEL-SSE-X64-NEXT:    movd %eax, %xmm0170; FASTISEL-SSE-X64-NEXT:    movd %xmm0, (%rsi)171; FASTISEL-SSE-X64-NEXT:    retq172;173; SDAG-SSE-X64-LABEL: fneg_f32_mem:174; SDAG-SSE-X64:       # %bb.0:175; SDAG-SSE-X64-NEXT:    movl $-2147483648, %eax # imm = 0x80000000176; SDAG-SSE-X64-NEXT:    xorl (%rdi), %eax177; SDAG-SSE-X64-NEXT:    movl %eax, (%rsi)178; SDAG-SSE-X64-NEXT:    retq179;180; GISEL-SSE-X64-LABEL: fneg_f32_mem:181; GISEL-SSE-X64:       # %bb.0:182; GISEL-SSE-X64-NEXT:    movl $-2147483648, %eax # imm = 0x80000000183; GISEL-SSE-X64-NEXT:    xorl (%rdi), %eax184; GISEL-SSE-X64-NEXT:    movl %eax, (%rsi)185; GISEL-SSE-X64-NEXT:    retq186  %a = load float, ptr %x187  %b = fneg float %a188  store float %b, ptr %y189  ret void190}191 192define x86_fp80 @test_fp80(x86_fp80 %a) nounwind {193; X86-LABEL: test_fp80:194; X86:       # %bb.0:195; X86-NEXT:    fldt {{[0-9]+}}(%esp)196; X86-NEXT:    fchs197; X86-NEXT:    retl198;199; X64-LABEL: test_fp80:200; X64:       # %bb.0:201; X64-NEXT:    fldt {{[0-9]+}}(%rsp)202; X64-NEXT:    fchs203; X64-NEXT:    retq204  %1 = fneg x86_fp80 %a205  ret x86_fp80 %1206}207;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:208; SSE-X64: {{.*}}209