[HEXAGON] Fix semantics of ordered FP compares (#131089) · llvm/llvm-project@d60baf3 (original) (raw)

`@@ -721,23 +721,13 @@ def: OpR_RR_pat<A2_vcmpwgtu, setugt, v2i1, V2I32>;

`

721

721

`def: OpR_RR_pat<F2_sfcmpeq, seteq, i1, F32>;

`

722

722

`def: OpR_RR_pat<F2_sfcmpgt, setgt, i1, F32>;

`

723

723

`def: OpR_RR_pat<F2_sfcmpge, setge, i1, F32>;

`

724

``

`-

def: OpR_RR_pat<F2_sfcmpeq, setoeq, i1, F32>;

`

725

``

`-

def: OpR_RR_pat<F2_sfcmpgt, setogt, i1, F32>;

`

726

``

`-

def: OpR_RR_pat<F2_sfcmpge, setoge, i1, F32>;

`

727

``

`-

def: OpR_RR_pat<F2_sfcmpgt, RevCmp, i1, F32>;

`

728

``

`-

def: OpR_RR_pat<F2_sfcmpge, RevCmp, i1, F32>;

`

729

724

`def: OpR_RR_pat<F2_sfcmpgt, RevCmp, i1, F32>;

`

730

725

`def: OpR_RR_pat<F2_sfcmpge, RevCmp, i1, F32>;

`

731

726

`def: OpR_RR_pat<F2_sfcmpuo, setuo, i1, F32>;

`

732

727

``

733

728

`def: OpR_RR_pat<F2_dfcmpeq, seteq, i1, F64>;

`

734

729

`def: OpR_RR_pat<F2_dfcmpgt, setgt, i1, F64>;

`

735

730

`def: OpR_RR_pat<F2_dfcmpge, setge, i1, F64>;

`

736

``

`-

def: OpR_RR_pat<F2_dfcmpeq, setoeq, i1, F64>;

`

737

``

`-

def: OpR_RR_pat<F2_dfcmpgt, setogt, i1, F64>;

`

738

``

`-

def: OpR_RR_pat<F2_dfcmpge, setoge, i1, F64>;

`

739

``

`-

def: OpR_RR_pat<F2_dfcmpgt, RevCmp, i1, F64>;

`

740

``

`-

def: OpR_RR_pat<F2_dfcmpge, RevCmp, i1, F64>;

`

741

731

`def: OpR_RR_pat<F2_dfcmpgt, RevCmp, i1, F64>;

`

742

732

`def: OpR_RR_pat<F2_dfcmpge, RevCmp, i1, F64>;

`

743

733

`def: OpR_RR_pat<F2_dfcmpuo, setuo, i1, F64>;

`

`@@ -900,15 +890,35 @@ def: OpmR_RR_pat<Cmpud, RevCmp, i1, F64>;

`

900

890

`def: OpmR_RR_pat<Cmpud, RevCmp, i1, F64>;

`

901

891

`def: OpmR_RR_pat<Cmpudn, setune, i1, F64>;

`

902

892

``

903

``

`-

def: OpmR_RR_pat<Outn, setone, i1, F32>;

`

904

``

`-

def: OpmR_RR_pat<Outn, setne, i1, F32>;

`

``

893

`+

class T4<InstHexagon MI1, InstHexagon MI2, InstHexagon MI3, InstHexagon MI4>

`

``

894

`+

: OutPatFrag<(ops node:$Rs, node:$Rt),

`

``

895

`+

(MI1 (MI2 (MI3 Rs,Rs, Rs,Rt), (MI4 Rs,Rs, Rs,Rt)))>;

`

905

896

``

906

``

`-

def: OpmR_RR_pat<Outn, setone, i1, F64>;

`

907

``

`-

def: OpmR_RR_pat<Outn, setne, i1, F64>;

`

``

897

`+

class Cmpof: T3<C2_andn, MI, F2_sfcmpuo>;

`

``

898

`+

class Cmpod: T3<C2_andn, MI, F2_dfcmpuo>;

`

``

899

+

``

900

`+

class Cmpofn: T4<C2_not, C2_or, MI, F2_sfcmpuo>;

`

``

901

`+

class Cmpodn: T4<C2_not, C2_or, MI, F2_dfcmpuo>;

`

``

902

+

``

903

`+

def: OpmR_RR_pat<Cmpof, setoeq, i1, F32>;

`

``

904

`+

def: OpmR_RR_pat<Cmpof, setoge, i1, F32>;

`

``

905

`+

def: OpmR_RR_pat<Cmpof, setogt, i1, F32>;

`

``

906

`+

def: OpmR_RR_pat<Cmpof, RevCmp, i1, F32>;

`

``

907

`+

def: OpmR_RR_pat<Cmpof, RevCmp, i1, F32>;

`

``

908

`+

def: OpmR_RR_pat<Cmpofn, setone, i1, F32>;

`

``

909

+

``

910

`+

def: OpmR_RR_pat<Cmpod, setoeq, i1, F64>;

`

``

911

`+

def: OpmR_RR_pat<Cmpod, setoge, i1, F64>;

`

``

912

`+

def: OpmR_RR_pat<Cmpod, setogt, i1, F64>;

`

``

913

`+

def: OpmR_RR_pat<Cmpod, RevCmp, i1, F64>;

`

``

914

`+

def: OpmR_RR_pat<Cmpod, RevCmp, i1, F64>;

`

``

915

`+

def: OpmR_RR_pat<Cmpodn, setone, i1, F64>;

`

908

916

``

909

917

`def: OpmR_RR_pat<Outn, seto, i1, F32>;

`

910

918

`def: OpmR_RR_pat<Outn, seto, i1, F64>;

`

911

919

``

``

920

`+

def: OpmR_RR_pat<Outn, setne, i1, F32>;

`

``

921

`+

def: OpmR_RR_pat<Outn, setne, i1, F64>;

`

912

922

``

913

923

`// --(6) Select ----------------------------------------------------------

`

914

924

`//

`