compare_strings.py (5081:2ccce8600a9d) | compare_strings.py (5420:dc0041a51920) |
---|---|
1# Copyright (c) 2007 The Hewlett-Packard Development Company | 1# Copyright (c) 2007-2008 The Hewlett-Packard Development Company |
2# All rights reserved. 3# 4# Redistribution and use of this software in source and binary forms, 5# with or without modification, are permitted provided that the 6# following conditions are met: 7# 8# The software must be used only for Non-Commercial Use which means any 9# use which is NOT directed to receiving any direct monetary --- 60 unchanged lines hidden (view full) --- 70}; 71 72# 73# Versions which have the rep prefix. These could benefit from some loop 74# unrolling. 75# 76 77def macroop CMPS_E_M_M { | 2# All rights reserved. 3# 4# Redistribution and use of this software in source and binary forms, 5# with or without modification, are permitted provided that the 6# following conditions are met: 7# 8# The software must be used only for Non-Commercial Use which means any 9# use which is NOT directed to receiving any direct monetary --- 60 unchanged lines hidden (view full) --- 70}; 71 72# 73# Versions which have the rep prefix. These could benefit from some loop 74# unrolling. 75# 76 77def macroop CMPS_E_M_M { |
78 and t0, rcx, rcx, flags=(EZF,), dataSize=asz 79 bri t0, label("end"), flags=(CEZF,) 80 |
|
78 # Find the constant we need to either add or subtract from rdi 79 ruflag t0, 10 80 movi t3, t3, dsz, flags=(CEZF,), dataSize=asz 81 subi t4, t0, dsz, dataSize=asz 82 mov t3, t3, t4, flags=(nCEZF,), dataSize=asz 83 | 81 # Find the constant we need to either add or subtract from rdi 82 ruflag t0, 10 83 movi t3, t3, dsz, flags=(CEZF,), dataSize=asz 84 subi t4, t0, dsz, dataSize=asz 85 mov t3, t3, t4, flags=(nCEZF,), dataSize=asz 86 |
87topOfLoop: |
|
84 ld t1, seg, [1, t0, rsi] 85 ld t2, es, [1, t0, rdi] 86 sub t0, t1, t2, flags=(OF, SF, ZF, AF, PF, CF) 87 88 subi rcx, rcx, 1, flags=(EZF,), dataSize=asz 89 add rdi, rdi, t3, dataSize=asz 90 add rsi, rsi, t3, dataSize=asz | 88 ld t1, seg, [1, t0, rsi] 89 ld t2, es, [1, t0, rdi] 90 sub t0, t1, t2, flags=(OF, SF, ZF, AF, PF, CF) 91 92 subi rcx, rcx, 1, flags=(EZF,), dataSize=asz 93 add rdi, rdi, t3, dataSize=asz 94 add rsi, rsi, t3, dataSize=asz |
91 bri t0, 4, flags=(CSTRZnEZF,) | 95 bri t0, label("topOfLoop"), flags=(CSTRZnEZF,) 96end: |
92 fault "NoFault" 93}; 94 95def macroop CMPS_N_M_M { | 97 fault "NoFault" 98}; 99 100def macroop CMPS_N_M_M { |
101 and t0, rcx, rcx, flags=(EZF,), dataSize=asz 102 bri t0, label("end"), flags=(CEZF,) 103 |
|
96 # Find the constant we need to either add or subtract from rdi 97 ruflag t0, 10 98 movi t3, t3, dsz, flags=(CEZF,), dataSize=asz 99 subi t4, t0, dsz, dataSize=asz 100 mov t3, t3, t4, flags=(nCEZF,), dataSize=asz 101 | 104 # Find the constant we need to either add or subtract from rdi 105 ruflag t0, 10 106 movi t3, t3, dsz, flags=(CEZF,), dataSize=asz 107 subi t4, t0, dsz, dataSize=asz 108 mov t3, t3, t4, flags=(nCEZF,), dataSize=asz 109 |
110topOfLoop: |
|
102 ld t1, seg, [1, t0, rsi] 103 ld t2, es, [1, t0, rdi] 104 sub t0, t1, t2, flags=(OF, SF, ZF, AF, PF, CF) 105 106 subi rcx, rcx, 1, flags=(EZF,), dataSize=asz 107 add rdi, rdi, t3, dataSize=asz 108 add rsi, rsi, t3, dataSize=asz | 111 ld t1, seg, [1, t0, rsi] 112 ld t2, es, [1, t0, rdi] 113 sub t0, t1, t2, flags=(OF, SF, ZF, AF, PF, CF) 114 115 subi rcx, rcx, 1, flags=(EZF,), dataSize=asz 116 add rdi, rdi, t3, dataSize=asz 117 add rsi, rsi, t3, dataSize=asz |
109 bri t0, 4, flags=(CSTRnZnEZF,) | 118 bri t0, label("topOfLoop"), flags=(CSTRnZnEZF,) 119end: |
110 fault "NoFault" 111}; 112''' | 120 fault "NoFault" 121}; 122''' |