|
|
1.1 ! root 1: .include "macros.inc" ! 2: ! 3: test_suite shift ! 4: ! 5: .macro test_shift prefix, dst, src, v, imm ! 6: \prefix\()_set \dst, \src, \v, \imm ! 7: \prefix\()_ver \dst, \v, \imm ! 8: .endm ! 9: ! 10: .macro test_shift_sd prefix, v, imm ! 11: test_shift \prefix, a3, a2, \v, \imm ! 12: test_shift \prefix, a2, a2, \v, \imm ! 13: .endm ! 14: ! 15: .macro tests_imm_shift prefix, v ! 16: test_shift_sd \prefix, \v, 1 ! 17: test_shift_sd \prefix, \v, 2 ! 18: test_shift_sd \prefix, \v, 7 ! 19: test_shift_sd \prefix, \v, 8 ! 20: test_shift_sd \prefix, \v, 15 ! 21: test_shift_sd \prefix, \v, 16 ! 22: test_shift_sd \prefix, \v, 31 ! 23: .endm ! 24: ! 25: .macro tests_shift prefix, v ! 26: test_shift_sd \prefix, \v, 0 ! 27: tests_imm_shift \prefix, \v ! 28: test_shift_sd \prefix, \v, 32 ! 29: .endm ! 30: ! 31: ! 32: .macro slli_set dst, src, v, imm ! 33: movi \src, \v ! 34: slli \dst, \src, \imm ! 35: .endm ! 36: ! 37: .macro slli_ver dst, v, imm ! 38: mov a2, \dst ! 39: movi a3, ((\v) << (\imm)) & 0xffffffff ! 40: assert eq, a2, a3 ! 41: .endm ! 42: ! 43: test slli ! 44: tests_imm_shift slli, 0xa3c51249 ! 45: test_end ! 46: ! 47: ! 48: .macro srai_set dst, src, v, imm ! 49: movi \src, \v ! 50: srai \dst, \src, \imm ! 51: .endm ! 52: ! 53: .macro srai_ver dst, v, imm ! 54: mov a2, \dst ! 55: .if (\imm) ! 56: movi a3, (((\v) >> (\imm)) & 0xffffffff) | \ ! 57: ~((((\v) & 0x80000000) >> ((\imm) - 1)) - 1) ! 58: .else ! 59: movi a3, \v ! 60: .endif ! 61: assert eq, a2, a3 ! 62: .endm ! 63: ! 64: test srai ! 65: tests_imm_shift srai, 0x49a3c512 ! 66: tests_imm_shift srai, 0xa3c51249 ! 67: test_end ! 68: ! 69: ! 70: .macro srli_set dst, src, v, imm ! 71: movi \src, \v ! 72: srli \dst, \src, \imm ! 73: .endm ! 74: ! 75: .macro srli_ver dst, v, imm ! 76: mov a2, \dst ! 77: movi a3, (((\v) >> (\imm)) & 0xffffffff) ! 78: assert eq, a2, a3 ! 79: .endm ! 80: ! 81: test srli ! 82: tests_imm_shift srli, 0x49a3c512 ! 83: tests_imm_shift srli, 0xa3c51249 ! 84: test_end ! 85: ! 86: ! 87: .macro sll_set dst, src, v, imm ! 88: movi a2, \imm ! 89: ssl a2 ! 90: movi \src, \v ! 91: sll \dst, \src ! 92: .endm ! 93: ! 94: .macro sll_sar_set dst, src, v, imm ! 95: movi a2, 32 - \imm ! 96: wsr a2, sar ! 97: movi \src, \v ! 98: sll \dst, \src ! 99: .endm ! 100: ! 101: .macro sll_ver dst, v, imm ! 102: slli_ver \dst, \v, (\imm) & 0x1f ! 103: .endm ! 104: ! 105: .macro sll_sar_ver dst, v, imm ! 106: slli_ver \dst, \v, \imm ! 107: .endm ! 108: ! 109: test sll ! 110: tests_shift sll, 0xa3c51249 ! 111: tests_shift sll_sar, 0xa3c51249 ! 112: test_end ! 113: ! 114: ! 115: .macro srl_set dst, src, v, imm ! 116: movi a2, \imm ! 117: ssr a2 ! 118: movi \src, \v ! 119: srl \dst, \src ! 120: .endm ! 121: ! 122: .macro srl_sar_set dst, src, v, imm ! 123: movi a2, \imm ! 124: wsr a2, sar ! 125: movi \src, \v ! 126: srl \dst, \src ! 127: .endm ! 128: ! 129: .macro srl_ver dst, v, imm ! 130: srli_ver \dst, \v, (\imm) & 0x1f ! 131: .endm ! 132: ! 133: .macro srl_sar_ver dst, v, imm ! 134: srli_ver \dst, \v, \imm ! 135: .endm ! 136: ! 137: test srl ! 138: tests_shift srl, 0xa3c51249 ! 139: tests_shift srl_sar, 0xa3c51249 ! 140: tests_shift srl, 0x49a3c512 ! 141: tests_shift srl_sar, 0x49a3c512 ! 142: test_end ! 143: ! 144: ! 145: .macro sra_set dst, src, v, imm ! 146: movi a2, \imm ! 147: ssr a2 ! 148: movi \src, \v ! 149: sra \dst, \src ! 150: .endm ! 151: ! 152: .macro sra_sar_set dst, src, v, imm ! 153: movi a2, \imm ! 154: wsr a2, sar ! 155: movi \src, \v ! 156: sra \dst, \src ! 157: .endm ! 158: ! 159: .macro sra_ver dst, v, imm ! 160: srai_ver \dst, \v, (\imm) & 0x1f ! 161: .endm ! 162: ! 163: .macro sra_sar_ver dst, v, imm ! 164: srai_ver \dst, \v, \imm ! 165: .endm ! 166: ! 167: test sra ! 168: tests_shift sra, 0xa3c51249 ! 169: tests_shift sra_sar, 0xa3c51249 ! 170: tests_shift sra, 0x49a3c512 ! 171: tests_shift sra_sar, 0x49a3c512 ! 172: test_end ! 173: ! 174: ! 175: .macro src_set dst, src, v, imm ! 176: movi a2, \imm ! 177: ssr a2 ! 178: movi \src, (\v) & 0xffffffff ! 179: movi a4, (\v) >> 32 ! 180: src \dst, a4, \src ! 181: .endm ! 182: ! 183: .macro src_sar_set dst, src, v, imm ! 184: movi a2, \imm ! 185: wsr a2, sar ! 186: movi \src, (\v) & 0xffffffff ! 187: movi a4, (\v) >> 32 ! 188: src \dst, a4, \src ! 189: .endm ! 190: ! 191: .macro src_ver dst, v, imm ! 192: src_sar_ver \dst, \v, (\imm) & 0x1f ! 193: .endm ! 194: ! 195: .macro src_sar_ver dst, v, imm ! 196: mov a2, \dst ! 197: movi a3, ((\v) >> (\imm)) & 0xffffffff ! 198: assert eq, a2, a3 ! 199: .endm ! 200: ! 201: test src ! 202: tests_shift src, 0xa3c51249215c3a94 ! 203: tests_shift src_sar, 0xa3c51249215c3a94 ! 204: test_end ! 205: ! 206: test_suite_end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.