[llvm-commits] CVS: llvm/lib/Target/Alpha/README.txt

2007-03-31 Thread Andrew Lenharth


Changes in directory llvm/lib/Target/Alpha:

README.txt updated: 1.8 -> 1.9
---
Log message:

Readme

---
Diffs of the changes:  (+42 -1)

 README.txt |   43 ++-
 1 files changed, 42 insertions(+), 1 deletion(-)


Index: llvm/lib/Target/Alpha/README.txt
diff -u llvm/lib/Target/Alpha/README.txt:1.8 
llvm/lib/Target/Alpha/README.txt:1.9
--- llvm/lib/Target/Alpha/README.txt:1.8Thu Feb 15 20:11:59 2007
+++ llvm/lib/Target/Alpha/README.txtSat Mar 31 10:05:44 2007
@@ -1 +1,42 @@
-* EMPTY *
+***
+
+add gcc builtins for alpha instructions
+
+
+***
+
+custom expand byteswap into nifty 
+extract/insert/mask byte/word/longword/quadword low/high
+sequences
+
+***
+
+see if any of the extract/insert/mask operations can be added
+
+***
+
+match more interesting things for cmovlbc cmovlbs (move if low bit clear/set)
+
+***
+
+lower srem and urem
+
+remq(i,j):  i - (j * divq(i,j)) if j != 0
+remqu(i,j): i - (j * divqu(i,j)) if j != 0
+reml(i,j):  i - (j * divl(i,j)) if j != 0
+remlu(i,j): i - (j * divlu(i,j)) if j != 0
+
+***
+
+add crazy vector instructions (MVI):
+
+(MIN|MAX)(U|S)(B8|W4) min and max, signed and unsigned, byte and word
+PKWB, UNPKBW pack/unpack word to byte
+PKLB UNPKBL pack/unpack long to byte
+PERR pixel error (sum accross bytes of bytewise abs(i8v8 a - i8v8 b))
+
+cmpbytes bytewise cmpeq of i8v8 a and i8v8 b (not part of MVI extentions)
+
+this has some good examples for other operations that can be synthesised well 
+from these rather meager vector ops (such as saturating add).
+http://www.alphalinux.org/docs/MVI-full.html



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/Alpha/README.txt

2007-02-15 Thread Andrew Lenharth


Changes in directory llvm/lib/Target/Alpha:

README.txt updated: 1.7 -> 1.8
---
Log message:

This was done recently

---
Diffs of the changes:  (+1 -3)

 README.txt |4 +---
 1 files changed, 1 insertion(+), 3 deletions(-)


Index: llvm/lib/Target/Alpha/README.txt
diff -u llvm/lib/Target/Alpha/README.txt:1.7 
llvm/lib/Target/Alpha/README.txt:1.8
--- llvm/lib/Target/Alpha/README.txt:1.7Tue Oct 10 20:48:03 2006
+++ llvm/lib/Target/Alpha/README.txtThu Feb 15 20:11:59 2007
@@ -1,3 +1 @@
-%%
-Fix Ordered/Unordered FP stuff
-
+* EMPTY *



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/Alpha/README.txt

2006-10-10 Thread Andrew Lenharth


Changes in directory llvm/lib/Target/Alpha:

README.txt updated: 1.6 -> 1.7
---
Log message:

This entry is done.  switched to the gcc way of doing things.

---
Diffs of the changes:  (+0 -150)

 README.txt |  150 -
 1 files changed, 150 deletions(-)


Index: llvm/lib/Target/Alpha/README.txt
diff -u llvm/lib/Target/Alpha/README.txt:1.6 
llvm/lib/Target/Alpha/README.txt:1.7
--- llvm/lib/Target/Alpha/README.txt:1.6Tue Oct 10 20:44:46 2006
+++ llvm/lib/Target/Alpha/README.txtTue Oct 10 20:48:03 2006
@@ -1,153 +1,3 @@
-Fix jump table support.  currently it uses 64bit absolute address. 
-gcc uses gprel32.  This way I won't keep fighting Evan as he keeps
-breaking 64bit entries in jump tables...
-
-#include 
-#include 
-
-int main(int x, char** y)
-{
-char* foo;
-switch(x) {
-case 1:
-foo = "1";
-break;
-case 2:
-foo = "2";
-break;
-case 3:
-foo = "3";
-break;
-case 4:
-foo = "4";
-break;
-case 5:
-foo = "5";
-break;
-case 6:
-foo = "6";
-break;
-case 7:
-foo = "7";
-break;
-case 8:
-foo = "8";
-break;
-};
-print(foo);
-return 0;
-
-}
-
-
-.set noreorder
-.set volatile
-.set noat
-.set nomacro
-.section.rodata.str1.1,"aMS",@progbits,1
-$LC6:
-.ascii "7\0"
-$LC7:
-.ascii "8\0"
-$LC0:
-.ascii "1\0"
-$LC1:
-.ascii "2\0"
-$LC2:
-.ascii "3\0"
-$LC3:
-.ascii "4\0"
-$LC4:
-.ascii "5\0"
-$LC5:
-.ascii "6\0"
-.text
-.align 2
-.align 4
-.globl main
-.ent main
-main:
-.frame $30,16,$26,0
-.mask 0x400,-16
-ldah $29,0($27) !gpdisp!1
-lda $29,0($29)  !gpdisp!1
-$main..ng:
-zapnot $16,15,$16
-lda $30,-16($30)
-cmpule $16,8,$1
-stq $26,0($30)
-.prologue 1
-beq $1,$L2
-ldah $6,$L11($29)   !gprelhigh
-lda $5,$L11($6) !gprellow
-s4addq $16,$5,$0
-ldl $2,0($0)
-addq $29,$2,$3
-jmp $31,($3),$L2
-.section.rodata
-.align 2
-.align 2
-$L11:
-.gprel32 $L2
-.gprel32 $L3
-.gprel32 $L4
-.gprel32 $L5
-.gprel32 $L6
-.gprel32 $L7
-.gprel32 $L8
-.gprel32 $L9
-.gprel32 $L10
-.text
-$L9:
-ldah $20,$LC6($29)  !gprelhigh
-lda $4,$LC6($20)!gprellow
-.align 4
-$L2:
-mov $4,$16
-ldq $27,print($29)  !literal!2
-jsr $26,($27),print !lituse_jsr!2
-ldah $29,0($26) !gpdisp!3
-mov $31,$0
-bis $31,$31,$31
-lda $29,0($29)  !gpdisp!3
-ldq $26,0($30)
-lda $30,16($30)
-ret $31,($26),1
-$L10:
-ldah $21,$LC7($29)  !gprelhigh
-lda $4,$LC7($21)!gprellow
-br $31,$L2
-$L3:
-ldah $7,$LC0($29)   !gprelhigh
-lda $4,$LC0($7) !gprellow
-br $31,$L2
-$L4:
-ldah $8,$LC1($29)   !gprelhigh
-lda $4,$LC1($8) !gprellow
-br $31,$L2
-$L5:
-ldah $16,$LC2($29)  !gprelhigh
-lda $4,$LC2($16)!gprellow
-br $31,$L2
-$L6:
-ldah $17,$LC3($29)  !gprelhigh
-lda $4,$LC3($17)!gprellow
-br $31,$L2
-$L7:
-ldah $18,$LC4($29)  !gprelhigh
-lda $4,$LC4($18)!gprellow
-br $31,$L2
-$L8:
-ldah $19,$LC5($29)  !gprelhigh
-lda $4,$LC5($19)!gprellow
-br $31,$L2
-.end main
-.section.note.GNU-stack,"",@progbits
-.ident  "GCC: (GNU) 3.4.4 20050314 (prerelease) (Debian 3.4.3-13)"
-
-
-
-
 %%
 Fix Ordered/Unordered FP stuff
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/Alpha/README.txt

2006-10-10 Thread Chris Lattner


Changes in directory llvm/lib/Target/Alpha:

README.txt updated: 1.5 -> 1.6
---
Log message:

This has apparently been fixed


---
Diffs of the changes:  (+0 -30)

 README.txt |   30 --
 1 files changed, 30 deletions(-)


Index: llvm/lib/Target/Alpha/README.txt
diff -u llvm/lib/Target/Alpha/README.txt:1.5 
llvm/lib/Target/Alpha/README.txt:1.6
--- llvm/lib/Target/Alpha/README.txt:1.5Sun Sep 24 08:13:10 2006
+++ llvm/lib/Target/Alpha/README.txtTue Oct 10 20:44:46 2006
@@ -151,33 +151,3 @@
 %%
 Fix Ordered/Unordered FP stuff
 
-
-%%
-improve bytezap opertunities
-ulong %foo(ulong %y) {
-entry:
-%tmp = and ulong %y,  65535
-%tmp2 = shr ulong %tmp,  ubyte 3
-ret ulong %tmp2
-}
-
-
-compiles to a 3 instruction sequence without instcombine
-zapnot $16,3,$0
-srl $0,3,$0
-ret $31,($26),1
- 
-After instcombine you get
-ulong %foo(ulong %y) {
-entry:
-%tmp = shr ulong %y, ubyte 3;  [#uses=1]
-%tmp2 = and ulong %tmp, 8191;  [#uses=1]
-ret ulong %tmp2
-}
-
-which compiles to
-lda $0,8191($31)
-srl $16,3,$1
-and $1,$0,$0
-ret $31,($26),1
-



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/Alpha/Readme.txt

2006-09-24 Thread Andrew Lenharth


Changes in directory llvm/lib/Target/Alpha:

Readme.txt updated: 1.4 -> 1.5
---
Log message:

jump table note

---
Diffs of the changes:  (+150 -0)

 Readme.txt |  150 +
 1 files changed, 150 insertions(+)


Index: llvm/lib/Target/Alpha/Readme.txt
diff -u llvm/lib/Target/Alpha/Readme.txt:1.4 
llvm/lib/Target/Alpha/Readme.txt:1.5
--- llvm/lib/Target/Alpha/Readme.txt:1.4Wed Sep 20 10:05:49 2006
+++ llvm/lib/Target/Alpha/Readme.txtSun Sep 24 08:13:10 2006
@@ -1,3 +1,153 @@
+Fix jump table support.  currently it uses 64bit absolute address. 
+gcc uses gprel32.  This way I won't keep fighting Evan as he keeps
+breaking 64bit entries in jump tables...
+
+#include 
+#include 
+
+int main(int x, char** y)
+{
+char* foo;
+switch(x) {
+case 1:
+foo = "1";
+break;
+case 2:
+foo = "2";
+break;
+case 3:
+foo = "3";
+break;
+case 4:
+foo = "4";
+break;
+case 5:
+foo = "5";
+break;
+case 6:
+foo = "6";
+break;
+case 7:
+foo = "7";
+break;
+case 8:
+foo = "8";
+break;
+};
+print(foo);
+return 0;
+
+}
+
+
+.set noreorder
+.set volatile
+.set noat
+.set nomacro
+.section.rodata.str1.1,"aMS",@progbits,1
+$LC6:
+.ascii "7\0"
+$LC7:
+.ascii "8\0"
+$LC0:
+.ascii "1\0"
+$LC1:
+.ascii "2\0"
+$LC2:
+.ascii "3\0"
+$LC3:
+.ascii "4\0"
+$LC4:
+.ascii "5\0"
+$LC5:
+.ascii "6\0"
+.text
+.align 2
+.align 4
+.globl main
+.ent main
+main:
+.frame $30,16,$26,0
+.mask 0x400,-16
+ldah $29,0($27) !gpdisp!1
+lda $29,0($29)  !gpdisp!1
+$main..ng:
+zapnot $16,15,$16
+lda $30,-16($30)
+cmpule $16,8,$1
+stq $26,0($30)
+.prologue 1
+beq $1,$L2
+ldah $6,$L11($29)   !gprelhigh
+lda $5,$L11($6) !gprellow
+s4addq $16,$5,$0
+ldl $2,0($0)
+addq $29,$2,$3
+jmp $31,($3),$L2
+.section.rodata
+.align 2
+.align 2
+$L11:
+.gprel32 $L2
+.gprel32 $L3
+.gprel32 $L4
+.gprel32 $L5
+.gprel32 $L6
+.gprel32 $L7
+.gprel32 $L8
+.gprel32 $L9
+.gprel32 $L10
+.text
+$L9:
+ldah $20,$LC6($29)  !gprelhigh
+lda $4,$LC6($20)!gprellow
+.align 4
+$L2:
+mov $4,$16
+ldq $27,print($29)  !literal!2
+jsr $26,($27),print !lituse_jsr!2
+ldah $29,0($26) !gpdisp!3
+mov $31,$0
+bis $31,$31,$31
+lda $29,0($29)  !gpdisp!3
+ldq $26,0($30)
+lda $30,16($30)
+ret $31,($26),1
+$L10:
+ldah $21,$LC7($29)  !gprelhigh
+lda $4,$LC7($21)!gprellow
+br $31,$L2
+$L3:
+ldah $7,$LC0($29)   !gprelhigh
+lda $4,$LC0($7) !gprellow
+br $31,$L2
+$L4:
+ldah $8,$LC1($29)   !gprelhigh
+lda $4,$LC1($8) !gprellow
+br $31,$L2
+$L5:
+ldah $16,$LC2($29)  !gprelhigh
+lda $4,$LC2($16)!gprellow
+br $31,$L2
+$L6:
+ldah $17,$LC3($29)  !gprelhigh
+lda $4,$LC3($17)!gprellow
+br $31,$L2
+$L7:
+ldah $18,$LC4($29)  !gprelhigh
+lda $4,$LC4($18)!gprellow
+br $31,$L2
+$L8:
+ldah $19,$LC5($29)  !gprelhigh
+lda $4,$LC5($19)!gprellow
+br $31,$L2
+.end main
+.section.note.GNU-stack,"",@progbits
+.ident  "GCC: (GNU) 3.4.4 20050314 (prerelease) (Debian 3.4.3-13)"
+
+
+
+
 %%
 Fix Ordered/Unordered FP stuff
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/Alpha/Readme.txt

2006-09-20 Thread Andrew Lenharth


Changes in directory llvm/lib/Target/Alpha:

Readme.txt updated: 1.2 -> 1.3
---
Log message:

clarify with test case

---
Diffs of the changes:  (+13 -0)

 Readme.txt |   13 +
 1 files changed, 13 insertions(+)


Index: llvm/lib/Target/Alpha/Readme.txt
diff -u llvm/lib/Target/Alpha/Readme.txt:1.2 
llvm/lib/Target/Alpha/Readme.txt:1.3
--- llvm/lib/Target/Alpha/Readme.txt:1.2Wed Sep 20 09:40:01 2006
+++ llvm/lib/Target/Alpha/Readme.txtWed Sep 20 09:48:00 2006
@@ -1,6 +1,19 @@
 %%
 Fix cmovs with a constant on the wrong side
 
+aka:
+lda $0,10($31)
+cmovlt $17,$0,$16
+
+is bad for:
+
+long %cmov_lt2(long %a, long %c) {
+entry:
+   %tmp.1 = setlt long %c, 0
+   %retval = select bool %tmp.1, long 10, long %a
+   ret long %retval
+}
+
 %%
 Fix Ordered/Unordered FP stuff
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/Alpha/Readme.txt

2006-09-20 Thread Andrew Lenharth


Changes in directory llvm/lib/Target/Alpha:

Readme.txt updated: 1.1 -> 1.2
---
Log message:

Add Note

---
Diffs of the changes:  (+3 -0)

 Readme.txt |3 +++
 1 files changed, 3 insertions(+)


Index: llvm/lib/Target/Alpha/Readme.txt
diff -u llvm/lib/Target/Alpha/Readme.txt:1.1 
llvm/lib/Target/Alpha/Readme.txt:1.2
--- llvm/lib/Target/Alpha/Readme.txt:1.1Sat Jun  3 19:25:51 2006
+++ llvm/lib/Target/Alpha/Readme.txtWed Sep 20 09:40:01 2006
@@ -1,4 +1,7 @@
 %%
+Fix cmovs with a constant on the wrong side
+
+%%
 Fix Ordered/Unordered FP stuff
 
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/Alpha/Readme.txt AlphaInstrInfo.td

2006-06-03 Thread Andrew Lenharth


Changes in directory llvm/lib/Target/Alpha:

Readme.txt added (r1.1)
AlphaInstrInfo.td updated: 1.119 -> 1.120
---
Log message:

ignore ordered/unordered for now

---
Diffs of the changes:  (+153 -0)

 AlphaInstrInfo.td |  120 ++
 Readme.txt|   33 ++
 2 files changed, 153 insertions(+)


Index: llvm/lib/Target/Alpha/Readme.txt
diff -c /dev/null llvm/lib/Target/Alpha/Readme.txt:1.1
*** /dev/null   Sat Jun  3 19:26:01 2006
--- llvm/lib/Target/Alpha/Readme.txtSat Jun  3 19:25:51 2006
***
*** 0 
--- 1,33 
+ %%
+ Fix Ordered/Unordered FP stuff
+ 
+ 
+ %%
+ improve bytezap opertunities
+ ulong %foo(ulong %y) {
+ entry:
+ %tmp = and ulong %y,  65535
+ %tmp2 = shr ulong %tmp,  ubyte 3
+ ret ulong %tmp2
+ }
+ 
+ 
+ compiles to a 3 instruction sequence without instcombine
+ zapnot $16,3,$0
+ srl $0,3,$0
+ ret $31,($26),1
+  
+ After instcombine you get
+ ulong %foo(ulong %y) {
+ entry:
+ %tmp = shr ulong %y, ubyte 3;  [#uses=1]
+ %tmp2 = and ulong %tmp, 8191;  [#uses=1]
+ ret ulong %tmp2
+ }
+ 
+ which compiles to
+ lda $0,8191($31)
+ srl $16,3,$1
+ and $1,$0,$0
+ ret $31,($26),1
+ 


Index: llvm/lib/Target/Alpha/AlphaInstrInfo.td
diff -u llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.119 
llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.120
--- llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.119   Sun Apr  2 23:19:17 2006
+++ llvm/lib/Target/Alpha/AlphaInstrInfo.td Sat Jun  3 19:25:51 2006
@@ -694,29 +694,88 @@
 //Select double
 def : Pat<(select (seteq F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
   (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setoeq F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setueq F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+
 def : Pat<(select (setne F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
   (FCMOVEQT F8RC:$sf, F8RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setone F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVEQT F8RC:$sf, F8RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setune F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVEQT F8RC:$sf, F8RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+
 def : Pat<(select (setgt F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
   (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLT F8RC:$RB, F8RC:$RA))>;
+def : Pat<(select (setogt F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLT F8RC:$RB, F8RC:$RA))>;
+def : Pat<(select (setugt F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLT F8RC:$RB, F8RC:$RA))>;
+
 def : Pat<(select (setge F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
   (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLE F8RC:$RB, F8RC:$RA))>;
+def : Pat<(select (setoge F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLE F8RC:$RB, F8RC:$RA))>;
+def : Pat<(select (setuge F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLE F8RC:$RB, F8RC:$RA))>;
+
 def : Pat<(select (setlt F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
   (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLT F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setolt F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLT F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setult F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLT F8RC:$RA, F8RC:$RB))>;
+
 def : Pat<(select (setle F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
   (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLE F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setole F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLE F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setule F8RC:$RA, F8RC:$RB), F8RC:$st, F8RC:$sf),
+  (FCMOVNET F8RC:$sf, F8RC:$st, (CMPTLE F8RC:$RA, F8RC:$RB))>;
+
 //Select single
 def : Pat<(select (seteq F8RC:$RA, F8RC:$RB), F4RC:$st, F4RC:$sf),
   (FCMOVNES F4RC:$sf, F4RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setoeq F8RC:$RA, F8RC:$RB), F4RC:$st, F4RC:$sf),
+  (FCMOVNES F4RC:$sf, F4RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setueq F8RC:$RA, F8RC:$RB), F4RC:$st, F4RC:$sf),
+  (FCMOVNES F4RC:$sf, F4RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+
 def : Pat<(select (setne F8RC:$RA, F8RC:$RB), F4RC:$st, F4RC:$sf),
   (FCMOVEQS F4RC:$sf, F4RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setone F8RC:$RA, F8RC:$RB), F4RC:$st, F4RC:$sf),
+  (FCMOVEQS F4RC:$sf, F4RC:$st, (CMPTEQ F8RC:$RA, F8RC:$RB))>;
+def : Pat<(select (setune F8RC:$RA, F8RC:$RB), F4RC:$st, F4RC:$sf),
+  (FCMOVEQS F4RC:$sf, F4RC:$st, (CMP