118269c0fSSam Ravnborg/* 218269c0fSSam Ravnborg * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc 318269c0fSSam Ravnborg * generic strncmp routine. 418269c0fSSam Ravnborg */ 518269c0fSSam Ravnborg 68695c37dSDavid S. Miller#include <linux/linkage.h> 78695c37dSDavid S. Miller 818269c0fSSam Ravnborg .text 98695c37dSDavid S. MillerENTRY(strncmp) 1018269c0fSSam Ravnborg mov %o0, %g3 1118269c0fSSam Ravnborg mov 0, %o3 1218269c0fSSam Ravnborg 1318269c0fSSam Ravnborg cmp %o2, 3 1418269c0fSSam Ravnborg ble 7f 1518269c0fSSam Ravnborg mov 0, %g2 1618269c0fSSam Ravnborg 1718269c0fSSam Ravnborg sra %o2, 2, %o4 1818269c0fSSam Ravnborg ldub [%g3], %o3 1918269c0fSSam Ravnborg 2018269c0fSSam Ravnborg0: 2118269c0fSSam Ravnborg ldub [%o1], %g2 2218269c0fSSam Ravnborg add %g3, 1, %g3 2318269c0fSSam Ravnborg and %o3, 0xff, %o0 2418269c0fSSam Ravnborg 2518269c0fSSam Ravnborg cmp %o0, 0 2618269c0fSSam Ravnborg be 8f 2718269c0fSSam Ravnborg add %o1, 1, %o1 2818269c0fSSam Ravnborg 2918269c0fSSam Ravnborg cmp %o0, %g2 3018269c0fSSam Ravnborg be,a 1f 3118269c0fSSam Ravnborg ldub [%g3], %o3 3218269c0fSSam Ravnborg 3318269c0fSSam Ravnborg retl 3418269c0fSSam Ravnborg sub %o0, %g2, %o0 3518269c0fSSam Ravnborg 3618269c0fSSam Ravnborg1: 3718269c0fSSam Ravnborg ldub [%o1], %g2 3818269c0fSSam Ravnborg add %g3,1, %g3 3918269c0fSSam Ravnborg and %o3, 0xff, %o0 4018269c0fSSam Ravnborg 4118269c0fSSam Ravnborg cmp %o0, 0 4218269c0fSSam Ravnborg be 8f 4318269c0fSSam Ravnborg add %o1, 1, %o1 4418269c0fSSam Ravnborg 4518269c0fSSam Ravnborg cmp %o0, %g2 4618269c0fSSam Ravnborg be,a 1f 4718269c0fSSam Ravnborg ldub [%g3], %o3 4818269c0fSSam Ravnborg 4918269c0fSSam Ravnborg retl 5018269c0fSSam Ravnborg sub %o0, %g2, %o0 5118269c0fSSam Ravnborg 5218269c0fSSam Ravnborg1: 5318269c0fSSam Ravnborg ldub [%o1], %g2 5418269c0fSSam Ravnborg add %g3, 1, %g3 5518269c0fSSam Ravnborg and %o3, 0xff, %o0 5618269c0fSSam Ravnborg 5718269c0fSSam Ravnborg cmp %o0, 0 5818269c0fSSam Ravnborg be 8f 5918269c0fSSam Ravnborg add %o1, 1, %o1 6018269c0fSSam Ravnborg 6118269c0fSSam Ravnborg cmp %o0, %g2 6218269c0fSSam Ravnborg be,a 1f 6318269c0fSSam Ravnborg ldub [%g3], %o3 6418269c0fSSam Ravnborg 6518269c0fSSam Ravnborg retl 6618269c0fSSam Ravnborg sub %o0, %g2, %o0 6718269c0fSSam Ravnborg 6818269c0fSSam Ravnborg1: 6918269c0fSSam Ravnborg ldub [%o1], %g2 7018269c0fSSam Ravnborg add %g3, 1, %g3 7118269c0fSSam Ravnborg and %o3, 0xff, %o0 7218269c0fSSam Ravnborg 7318269c0fSSam Ravnborg cmp %o0, 0 7418269c0fSSam Ravnborg be 8f 7518269c0fSSam Ravnborg add %o1, 1, %o1 7618269c0fSSam Ravnborg 7718269c0fSSam Ravnborg cmp %o0, %g2 7818269c0fSSam Ravnborg be 1f 7918269c0fSSam Ravnborg add %o4, -1, %o4 8018269c0fSSam Ravnborg 8118269c0fSSam Ravnborg retl 8218269c0fSSam Ravnborg sub %o0, %g2, %o0 8318269c0fSSam Ravnborg 8418269c0fSSam Ravnborg1: 8518269c0fSSam Ravnborg 8618269c0fSSam Ravnborg cmp %o4, 0 8718269c0fSSam Ravnborg bg,a 0b 8818269c0fSSam Ravnborg ldub [%g3], %o3 8918269c0fSSam Ravnborg 9018269c0fSSam Ravnborg b 7f 9118269c0fSSam Ravnborg and %o2, 3, %o2 9218269c0fSSam Ravnborg 9318269c0fSSam Ravnborg9: 9418269c0fSSam Ravnborg ldub [%o1], %g2 9518269c0fSSam Ravnborg add %g3, 1, %g3 9618269c0fSSam Ravnborg and %o3, 0xff, %o0 9718269c0fSSam Ravnborg 9818269c0fSSam Ravnborg cmp %o0, 0 9918269c0fSSam Ravnborg be 8f 10018269c0fSSam Ravnborg add %o1, 1, %o1 10118269c0fSSam Ravnborg 10218269c0fSSam Ravnborg cmp %o0, %g2 10318269c0fSSam Ravnborg be 7f 10418269c0fSSam Ravnborg add %o2, -1, %o2 10518269c0fSSam Ravnborg 10618269c0fSSam Ravnborg8: 10718269c0fSSam Ravnborg retl 10818269c0fSSam Ravnborg sub %o0, %g2, %o0 10918269c0fSSam Ravnborg 11018269c0fSSam Ravnborg7: 11118269c0fSSam Ravnborg cmp %o2, 0 11218269c0fSSam Ravnborg bg,a 9b 11318269c0fSSam Ravnborg ldub [%g3], %o3 11418269c0fSSam Ravnborg 11518269c0fSSam Ravnborg and %g2, 0xff, %o0 11618269c0fSSam Ravnborg retl 11718269c0fSSam Ravnborg sub %o3, %o0, %o0 1188695c37dSDavid S. MillerENDPROC(strncmp) 119