@@ -924,17 +924,16 @@ define i32 @freeze_usubo(i32 %a0, i32 %a1, i8 %a2, i8 %a3) nounwind {
924924 ret i32 %r
925925}
926926
927-
928927define i32 @freeze_scmp (i32 %a0 ) nounwind {
929928; X86-LABEL: freeze_scmp:
930929; X86: # %bb.0:
931- ; X86-NEXT: movl {{[0-9]+}}(%esp) , %eax
932- ; X86-NEXT: cmpl $2 , %eax
930+ ; X86-NEXT: movl $2 , %eax
931+ ; X86-NEXT: cmpl {{[0-9]+}}(%esp) , %eax
933932; X86-NEXT: setl %al
934933; X86-NEXT: setg %cl
935934; X86-NEXT: subb %al, %cl
936935; X86-NEXT: movsbl %cl, %eax
937- ; X86-NEXT: cmpl $2, %eax
936+ ; X86-NEXT: negl %eax
938937; X86-NEXT: setl %al
939938; X86-NEXT: setg %cl
940939; X86-NEXT: subb %al, %cl
@@ -943,55 +942,55 @@ define i32 @freeze_scmp(i32 %a0) nounwind {
943942;
944943; X64-LABEL: freeze_scmp:
945944; X64: # %bb.0:
946- ; X64-NEXT: cmpl $2, %edi
945+ ; X64-NEXT: movl $2, %eax
946+ ; X64-NEXT: cmpl %edi, %eax
947947; X64-NEXT: setl %al
948948; X64-NEXT: setg %cl
949949; X64-NEXT: subb %al, %cl
950950; X64-NEXT: movsbl %cl, %eax
951- ; X64-NEXT: cmpl $2, %eax
951+ ; X64-NEXT: negl %eax
952952; X64-NEXT: setl %al
953953; X64-NEXT: setg %cl
954954; X64-NEXT: subb %al, %cl
955955; X64-NEXT: movsbl %cl, %eax
956956; X64-NEXT: retq
957- %x = call i32 @llvm.scmp.i32 (i32 %a0 , i32 2 )
957+ %x = call i32 @llvm.scmp.i32 (i32 2 , i32 %a0 )
958958 %y = freeze i32 %x
959- %z = call i32 @llvm.scmp.i32 (i32 %y , i32 2 )
959+ %z = call i32 @llvm.scmp.i32 (i32 0 , i32 %y )
960960 ret i32 %z
961961}
962962
963963define i32 @freeze_ucmp (i32 %a0 ) nounwind {
964964; X86-LABEL: freeze_ucmp:
965965; X86: # %bb.0:
966- ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
967- ; X86-NEXT: cmpl $3, %eax
968- ; X86-NEXT: setae %cl
966+ ; X86-NEXT: movl $2, %eax
967+ ; X86-NEXT: cmpl {{[0-9]+}}(%esp), %eax
968+ ; X86-NEXT: seta %al
969+ ; X86-NEXT: sbbb $0, %al
970+ ; X86-NEXT: movsbl %al, %eax
969971; X86-NEXT: cmpl $2, %eax
970- ; X86-NEXT: sbbb $0, %cl
971- ; X86-NEXT: movsbl %cl, %eax
972- ; X86-NEXT: cmpl $3, %eax
973972; X86-NEXT: setae %cl
974- ; X86-NEXT: cmpl $2 , %eax
973+ ; X86-NEXT: cmpl $1 , %eax
975974; X86-NEXT: sbbb $0, %cl
976975; X86-NEXT: movsbl %cl, %eax
977976; X86-NEXT: retl
978977;
979978; X64-LABEL: freeze_ucmp:
980979; X64: # %bb.0:
981- ; X64-NEXT: cmpl $3 , %edi
982- ; X64-NEXT: setae %al
983- ; X64-NEXT: cmpl $2, %edi
980+ ; X64-NEXT: movl $2 , %eax
981+ ; X64-NEXT: cmpl %edi, %eax
982+ ; X64-NEXT: seta %al
984983; X64-NEXT: sbbb $0, %al
985984; X64-NEXT: movsbl %al, %eax
986- ; X64-NEXT: cmpl $3, %eax
987- ; X64-NEXT: setae %cl
988985; X64-NEXT: cmpl $2, %eax
986+ ; X64-NEXT: setae %cl
987+ ; X64-NEXT: cmpl $1, %eax
989988; X64-NEXT: sbbb $0, %cl
990989; X64-NEXT: movsbl %cl, %eax
991990; X64-NEXT: retq
992- %x = call i32 @llvm.ucmp.i32 (i32 %a0 , i32 2 )
991+ %x = call i32 @llvm.ucmp.i32 (i32 2 , i32 %a0 )
993992 %y = freeze i32 %x
994- %z = call i32 @llvm.ucmp.i32 (i32 %y , i32 2 )
993+ %z = call i32 @llvm.ucmp.i32 (i32 %y , i32 1 )
995994 ret i32 %z
996995}
997996
0 commit comments