brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 27a651e Raw
118 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+sse \3; RUN:     -enable-legalize-types-checking | FileCheck %s --check-prefix=SSE4; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+sse \5; RUN:     -enable-legalize-types-checking | FileCheck %s --check-prefix=SSE6; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=-sse \7; RUN:     -enable-legalize-types-checking | FileCheck %s --check-prefix=NOSSE8; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=-sse \9; RUN:     -enable-legalize-types-checking | FileCheck %s --check-prefix=NOSSE10 11define void @test_select(ptr %p, ptr %q, i1 zeroext %c) nounwind {12; SSE-LABEL: test_select:13; SSE:       # %bb.0:14; SSE-NEXT:    testl %edx, %edx15; SSE-NEXT:    jne .LBB0_116; SSE-NEXT:  # %bb.2:17; SSE-NEXT:    movaps {{.*#+}} xmm0 = [NaN]18; SSE-NEXT:    movaps %xmm0, (%rsi)19; SSE-NEXT:    retq20; SSE-NEXT:  .LBB0_1:21; SSE-NEXT:    movups (%rdi), %xmm022; SSE-NEXT:    movaps %xmm0, (%rsi)23; SSE-NEXT:    retq24;25; NOSSE-LABEL: test_select:26; NOSSE:       # %bb.0:27; NOSSE-NEXT:    xorl %eax, %eax28; NOSSE-NEXT:    testl %edx, %edx29; NOSSE-NEXT:    cmovneq (%rdi), %rax30; NOSSE-NEXT:    movabsq $9223231299366420480, %rcx # imm = 0x7FFF80000000000031; NOSSE-NEXT:    cmovneq 8(%rdi), %rcx32; NOSSE-NEXT:    movq %rcx, 8(%rsi)33; NOSSE-NEXT:    movq %rax, (%rsi)34; NOSSE-NEXT:    retq35  %a = load fp128, ptr %p, align 236  %r = select i1 %c, fp128 %a, fp128 0xL00000000000000007FFF80000000000037  store fp128 %r, ptr %q38  ret void39}40 41; The uitofp will become a select_cc. This used to crash during type42; legalization because we didn't expect the operands to need to be softened.43define fp128 @test_select_cc(fp128, fp128) nounwind {44; SSE-LABEL: test_select_cc:45; SSE:       # %bb.0: # %BB046; SSE-NEXT:    pushq %rbx47; SSE-NEXT:    subq $32, %rsp48; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill49; SSE-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill50; SSE-NEXT:    callq __netf2@PLT51; SSE-NEXT:    movl %eax, %ebx52; SSE-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload53; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload54; SSE-NEXT:    callq __eqtf2@PLT55; SSE-NEXT:    testl %eax, %eax56; SSE-NEXT:    je .LBB1_157; SSE-NEXT:  # %bb.2: # %BB058; SSE-NEXT:    xorps %xmm1, %xmm159; SSE-NEXT:    jmp .LBB1_360; SSE-NEXT:  .LBB1_1:61; SSE-NEXT:    movaps {{.*#+}} xmm1 = [1.0E+0]62; SSE-NEXT:  .LBB1_3: # %BB063; SSE-NEXT:    testl %ebx, %ebx64; SSE-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload65; SSE-NEXT:    jne .LBB1_566; SSE-NEXT:  # %bb.4: # %BB167; SSE-NEXT:    movaps %xmm1, %xmm068; SSE-NEXT:  .LBB1_5: # %BB269; SSE-NEXT:    addq $32, %rsp70; SSE-NEXT:    popq %rbx71; SSE-NEXT:    retq72;73; NOSSE-LABEL: test_select_cc:74; NOSSE:       # %bb.0: # %BB075; NOSSE-NEXT:    pushq %rbp76; NOSSE-NEXT:    pushq %r1577; NOSSE-NEXT:    pushq %r1478; NOSSE-NEXT:    pushq %r1279; NOSSE-NEXT:    pushq %rbx80; NOSSE-NEXT:    movq %rcx, %r1581; NOSSE-NEXT:    movq %rdx, %r1282; NOSSE-NEXT:    movq %rsi, %rbx83; NOSSE-NEXT:    movq %rdi, %r1484; NOSSE-NEXT:    callq __netf2@PLT85; NOSSE-NEXT:    movl %eax, %ebp86; NOSSE-NEXT:    movq %r14, %rdi87; NOSSE-NEXT:    movq %rbx, %rsi88; NOSSE-NEXT:    movq %r12, %rdx89; NOSSE-NEXT:    movq %r15, %rcx90; NOSSE-NEXT:    callq __eqtf2@PLT91; NOSSE-NEXT:    movl %eax, %ecx92; NOSSE-NEXT:    xorl %eax, %eax93; NOSSE-NEXT:    testl %ecx, %ecx94; NOSSE-NEXT:    movabsq $4611404543450677248, %rdx # imm = 0x3FFF00000000000095; NOSSE-NEXT:    cmovneq %rax, %rdx96; NOSSE-NEXT:    testl %ebp, %ebp97; NOSSE-NEXT:    je .LBB1_298; NOSSE-NEXT:  # %bb.1:99; NOSSE-NEXT:    movq %r14, %rax100; NOSSE-NEXT:    movq %rbx, %rdx101; NOSSE-NEXT:  .LBB1_2: # %BB2102; NOSSE-NEXT:    popq %rbx103; NOSSE-NEXT:    popq %r12104; NOSSE-NEXT:    popq %r14105; NOSSE-NEXT:    popq %r15106; NOSSE-NEXT:    popq %rbp107; NOSSE-NEXT:    retq108BB0:109  %a = fcmp oeq fp128 %0, %1110  %b = uitofp i1 %a to fp128111  br i1 %a, label %BB1, label %BB2112BB1:113  br label %BB2114BB2:115  %c = phi fp128 [ %0, %BB0 ], [ %b, %BB1 ]116  ret fp128 %c117}118