116 lines · plain
1; RUN: llc -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8 \2; RUN: -verify-machineinstrs -stop-after=finalize-isel < %s | \3; RUN: FileCheck --check-prefixes=POWR8,VSX %s4; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr7 \5; RUN: -verify-machineinstrs -mattr=-vsx -stop-after=finalize-isel \6; RUN: < %s | FileCheck %s --check-prefixes=NOVSX,NOP8V7; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr7 \8; RUN: -verify-machineinstrs -mattr=vsx -stop-after=finalize-isel \9; RUN: < %s | FileCheck %s --check-prefixes=VSX,NOP8V10 11define float @vssr(float %a, float %b, float %c, float %d, float %e) {12entry:13 %add = fadd float %a, %b14 %add1 = fadd float %add, %c15 %add2 = fadd float %add1, %d16 %add3 = fadd float %add2, %e17 ret float %add318}19 20; POWR8-LABEL: name: vssr21; POWR8: - { id: 0, class: vssrc, preferred-register: '', flags: [ ] }22; POWR8: - { id: 1, class: vssrc, preferred-register: '', flags: [ ] }23; POWR8: - { id: 2, class: vssrc, preferred-register: '', flags: [ ] }24; POWR8: - { id: 3, class: vssrc, preferred-register: '', flags: [ ] }25; POWR8: - { id: 4, class: vssrc, preferred-register: '', flags: [ ] }26; POWR8: - { id: 5, class: vssrc, preferred-register: '', flags: [ ] }27; POWR8: - { id: 6, class: vssrc, preferred-register: '', flags: [ ] }28; POWR8: - { id: 7, class: vssrc, preferred-register: '', flags: [ ] }29; POWR8: - { id: 8, class: vssrc, preferred-register: '', flags: [ ] }30; POWR8: %4:vssrc = COPY $f531; POWR8: %3:vssrc = COPY $f432; POWR8: %2:vssrc = COPY $f333; POWR8: %1:vssrc = COPY $f234; POWR8: %0:vssrc = COPY $f135; POWR8: %5:vssrc = nofpexcept XSADDSP %0, %136; POWR8: %6:vssrc = nofpexcept XSADDSP killed %5, %237; POWR8: %7:vssrc = nofpexcept XSADDSP killed %6, %338; POWR8: %8:vssrc = nofpexcept XSADDSP killed %7, %439; POWR8: $f1 = COPY %840 41; NOP8V-LABEL: name: vssr42; NOP8V: registers:43; NOP8V: - { id: 0, class: f4rc, preferred-register: '', flags: [ ] }44; NOP8V: - { id: 1, class: f4rc, preferred-register: '', flags: [ ] }45; NOP8V: - { id: 2, class: f4rc, preferred-register: '', flags: [ ] }46; NOP8V: - { id: 3, class: f4rc, preferred-register: '', flags: [ ] }47; NOP8V: - { id: 4, class: f4rc, preferred-register: '', flags: [ ] }48; NOP8V: - { id: 5, class: f4rc, preferred-register: '', flags: [ ] }49; NOP8V: - { id: 6, class: f4rc, preferred-register: '', flags: [ ] }50; NOP8V: - { id: 7, class: f4rc, preferred-register: '', flags: [ ] }51; NOP8V: - { id: 8, class: f4rc, preferred-register: '', flags: [ ] }52; NOP8V: %4:f4rc = COPY $f553; NOP8V: %3:f4rc = COPY $f454; NOP8V: %2:f4rc = COPY $f355; NOP8V: %1:f4rc = COPY $f256; NOP8V: %0:f4rc = COPY $f157; NOP8V: %5:f4rc = nofpexcept FADDS %0, %1, implicit $rm58; NOP8V: %6:f4rc = nofpexcept FADDS killed %5, %2, implicit $rm59; NOP8V: %7:f4rc = nofpexcept FADDS killed %6, %3, implicit $rm60; NOP8V: %8:f4rc = nofpexcept FADDS killed %7, %4, implicit $rm61; NOP8V: $f1 = COPY %862 63define double @vsfr(double %a, double %b, double %c, double %d, double %e) {64entry:65 %add = fadd double %a, %b66 %add1 = fadd double %add, %c67 %add2 = fadd double %add1, %d68 %add3 = fadd double %add2, %e69 ret double %add370}71 72; VSX-LABEL: vsfr73; VSX: registers:74; VSX: - { id: 0, class: vsfrc, preferred-register: '', flags: [ ] }75; VSX: - { id: 1, class: vsfrc, preferred-register: '', flags: [ ] }76; VSX: - { id: 2, class: vsfrc, preferred-register: '', flags: [ ] }77; VSX: - { id: 3, class: vsfrc, preferred-register: '', flags: [ ] }78; VSX: - { id: 4, class: vsfrc, preferred-register: '', flags: [ ] }79; VSX: - { id: 5, class: vsfrc, preferred-register: '', flags: [ ] }80; VSX: - { id: 6, class: vsfrc, preferred-register: '', flags: [ ] }81; VSX: - { id: 7, class: vsfrc, preferred-register: '', flags: [ ] }82; VSX: - { id: 8, class: vsfrc, preferred-register: '', flags: [ ] }83; VSX: %4:vsfrc = COPY $f584; VSX: %3:vsfrc = COPY $f485; VSX: %2:vsfrc = COPY $f386; VSX: %1:vsfrc = COPY $f287; VSX: %0:vsfrc = COPY $f188; VSX: %5:vsfrc = nofpexcept XSADDDP %0, %1, implicit $rm89; VSX: %6:vsfrc = nofpexcept XSADDDP killed %5, %2, implicit $rm90; VSX: %7:vsfrc = nofpexcept XSADDDP killed %6, %3, implicit $rm91; VSX: %8:vsfrc = nofpexcept XSADDDP killed %7, %4, implicit $rm92; VSX: $f1 = COPY %893 94; NOVSX-LABEL: vsfr95; NOVSX: registers:96; NOVSX: - { id: 0, class: f8rc, preferred-register: '', flags: [ ] }97; NOVSX: - { id: 1, class: f8rc, preferred-register: '', flags: [ ] }98; NOVSX: - { id: 2, class: f8rc, preferred-register: '', flags: [ ] }99; NOVSX: - { id: 3, class: f8rc, preferred-register: '', flags: [ ] }100; NOVSX: - { id: 4, class: f8rc, preferred-register: '', flags: [ ] }101; NOVSX: - { id: 5, class: f8rc, preferred-register: '', flags: [ ] }102; NOVSX: - { id: 6, class: f8rc, preferred-register: '', flags: [ ] }103; NOVSX: - { id: 7, class: f8rc, preferred-register: '', flags: [ ] }104; NOVSX: - { id: 8, class: f8rc, preferred-register: '', flags: [ ] }105; NOVSX: %4:f8rc = COPY $f5106; NOVSX: %3:f8rc = COPY $f4107; NOVSX: %2:f8rc = COPY $f3108; NOVSX: %1:f8rc = COPY $f2109; NOVSX: %0:f8rc = COPY $f1110; NOVSX: %5:f8rc = nofpexcept FADD %0, %1, implicit $rm111; NOVSX: %6:f8rc = nofpexcept FADD killed %5, %2, implicit $rm112; NOVSX: %7:f8rc = nofpexcept FADD killed %6, %3, implicit $rm113; NOVSX: %8:f8rc = nofpexcept FADD killed %7, %4, implicit $rm114; NOVSX: $f1 = COPY %8115 116