sve_2nd_level.isa (14028:44edf7dbe672) | sve_2nd_level.isa (14029:744989da399f) |
---|---|
1// Copyright (c) 2017-2019 ARM Limited 2// All rights reserved 3// 4// The license below extends only to copyright in the software and shall 5// not be construed as granting a license to any other intellectual 6// property including but not limited to intellectual property relating 7// to a hardware implementation of the functionality of the software 8// licensed hereunder. You may use the software subject to the license --- 2916 unchanged lines hidden (view full) --- 2925 return new Unknown64(machInst); 2926 } 2927 return decodeSveGatherLoadVIInsts( 2928 dtype, machInst, zt, pg, zn, imm, true, ff); 2929 } else { 2930 uint8_t b14_13 = bits(machInst, 14, 13); 2931 if (b14_13 == 0x2 && bits(machInst, 4) == 0) { 2932 // TODO: SVE contiguous prefetch (scalar plus scalar) | 1// Copyright (c) 2017-2019 ARM Limited 2// All rights reserved 3// 4// The license below extends only to copyright in the software and shall 5// not be construed as granting a license to any other intellectual 6// property including but not limited to intellectual property relating 7// to a hardware implementation of the functionality of the software 8// licensed hereunder. You may use the software subject to the license --- 2916 unchanged lines hidden (view full) --- 2925 return new Unknown64(machInst); 2926 } 2927 return decodeSveGatherLoadVIInsts( 2928 dtype, machInst, zt, pg, zn, imm, true, ff); 2929 } else { 2930 uint8_t b14_13 = bits(machInst, 14, 13); 2931 if (b14_13 == 0x2 && bits(machInst, 4) == 0) { 2932 // TODO: SVE contiguous prefetch (scalar plus scalar) |
2933 return new Unknown64(machInst); | 2933 return new WarnUnimplemented("prf[bhwd]", machInst); |
2934 } else if (b14_13 == 0x3 && bits(machInst, 4) == 0) { 2935 // TODO: SVE 32-bit gather prefetch (vector plus 2936 // immediate) | 2934 } else if (b14_13 == 0x3 && bits(machInst, 4) == 0) { 2935 // TODO: SVE 32-bit gather prefetch (vector plus 2936 // immediate) |
2937 return new Unknown64(machInst); | 2937 return new WarnUnimplemented("prf[bhwd]", machInst); |
2938 } 2939 } 2940 } 2941 } else { 2942 uint8_t b24_23 = bits(machInst, 24, 23); 2943 if (b24_23 != 0x3 && bits(machInst, 21) == 0) { 2944 // SVE 32-bit gather load (scalar plus 32-bit unscaled offsets) 2945 IntRegIndex zt = (IntRegIndex) (uint8_t) bits(machInst, 4, 0); --- 12 unchanged lines hidden (view full) --- 2958 return decodeSveGatherLoadSVInsts( 2959 dtype, machInst, zt, pg, rn, zm, 2960 true, true, xs, false, ff); 2961 } 2962 switch (b24_23) { 2963 case 0x0: 2964 if (bits(machInst, 21) && bits(machInst, 4) == 0) { 2965 // TODO: SVE 32-bit gather prefetch (vector plus immediate) | 2938 } 2939 } 2940 } 2941 } else { 2942 uint8_t b24_23 = bits(machInst, 24, 23); 2943 if (b24_23 != 0x3 && bits(machInst, 21) == 0) { 2944 // SVE 32-bit gather load (scalar plus 32-bit unscaled offsets) 2945 IntRegIndex zt = (IntRegIndex) (uint8_t) bits(machInst, 4, 0); --- 12 unchanged lines hidden (view full) --- 2958 return decodeSveGatherLoadSVInsts( 2959 dtype, machInst, zt, pg, rn, zm, 2960 true, true, xs, false, ff); 2961 } 2962 switch (b24_23) { 2963 case 0x0: 2964 if (bits(machInst, 21) && bits(machInst, 4) == 0) { 2965 // TODO: SVE 32-bit gather prefetch (vector plus immediate) |
2966 break; | 2966 return new WarnUnimplemented("prf[bhwd]", machInst); |
2967 } 2968 break; 2969 case 0x1: 2970 if (bits(machInst, 21)) { 2971 // SVE 32-bit gather load halfwords (scalar plus 32-bit 2972 // scaled offsets) 2973 IntRegIndex zt = (IntRegIndex) (uint8_t) 2974 bits(machInst, 4, 0); --- 60 unchanged lines hidden (view full) --- 3035 // SVE load vector register 3036 IntRegIndex zt = (IntRegIndex) (uint8_t) 3037 bits(machInst, 4, 0); 3038 IntRegIndex rn = (IntRegIndex) (uint8_t) 3039 bits(machInst, 9, 5); 3040 uint64_t imm = sext<9>((bits(machInst, 21, 16) << 3) | 3041 bits(machInst, 12, 10)); 3042 return new SveLdrVec(machInst, zt, rn, imm); | 2967 } 2968 break; 2969 case 0x1: 2970 if (bits(machInst, 21)) { 2971 // SVE 32-bit gather load halfwords (scalar plus 32-bit 2972 // scaled offsets) 2973 IntRegIndex zt = (IntRegIndex) (uint8_t) 2974 bits(machInst, 4, 0); --- 60 unchanged lines hidden (view full) --- 3035 // SVE load vector register 3036 IntRegIndex zt = (IntRegIndex) (uint8_t) 3037 bits(machInst, 4, 0); 3038 IntRegIndex rn = (IntRegIndex) (uint8_t) 3039 bits(machInst, 9, 5); 3040 uint64_t imm = sext<9>((bits(machInst, 21, 16) << 3) | 3041 bits(machInst, 12, 10)); 3042 return new SveLdrVec(machInst, zt, rn, imm); |
3043 } else if (bits(machInst, 22) == 1 && 3044 bits(machInst, 4) == 0) { 3045 // TODO: SVE contiguous prefetch (scalar plus immediate) 3046 return new WarnUnimplemented("prf[bhwd]", machInst); |
|
3043 } 3044 break; 3045 } 3046 } 3047 return new Unknown64(machInst); 3048 } // decodeSveMemGather32 3049 3050 StaticInstPtr --- 154 unchanged lines hidden (view full) --- 3205 return new Unknown64(machInst); 3206 } 3207 return decodeSveGatherLoadSVInsts( 3208 dtype, machInst, zt, pg, rn, zm, 3209 false, false, false, false, ff); 3210 } else { 3211 if (bits(machInst, 14, 13) == 0x3 && bits(machInst, 4) == 0) { 3212 // TODO: SVE 64-bit gather prefetch (vector plus immediate) | 3047 } 3048 break; 3049 } 3050 } 3051 return new Unknown64(machInst); 3052 } // decodeSveMemGather32 3053 3054 StaticInstPtr --- 154 unchanged lines hidden (view full) --- 3209 return new Unknown64(machInst); 3210 } 3211 return decodeSveGatherLoadSVInsts( 3212 dtype, machInst, zt, pg, rn, zm, 3213 false, false, false, false, ff); 3214 } else { 3215 if (bits(machInst, 14, 13) == 0x3 && bits(machInst, 4) == 0) { 3216 // TODO: SVE 64-bit gather prefetch (vector plus immediate) |
3213 break; | 3217 return new WarnUnimplemented("prf[bhwd]", machInst); |
3214 } 3215 } 3216 break; 3217 case 0x2: 3218 if (bits(machInst, 24, 23) != 0x0) { 3219 // SVE 64-bit gather load (scalar plus unpacked 32-bit scaled 3220 // offsets) 3221 IntRegIndex zt = (IntRegIndex) (uint8_t) bits(machInst, 4, 0); --- 10 unchanged lines hidden (view full) --- 3232 return new Unknown64(machInst); 3233 } 3234 return decodeSveGatherLoadSVInsts( 3235 dtype, machInst, zt, pg, rn, zm, 3236 false, true, xs, true, ff); 3237 } else if (bits(machInst, 4) == 0) { 3238 // TODO: SVE 64-bit gather prefetch (scalar plus unpacked 3239 // 32-bit scaled offsets) | 3218 } 3219 } 3220 break; 3221 case 0x2: 3222 if (bits(machInst, 24, 23) != 0x0) { 3223 // SVE 64-bit gather load (scalar plus unpacked 32-bit scaled 3224 // offsets) 3225 IntRegIndex zt = (IntRegIndex) (uint8_t) bits(machInst, 4, 0); --- 10 unchanged lines hidden (view full) --- 3236 return new Unknown64(machInst); 3237 } 3238 return decodeSveGatherLoadSVInsts( 3239 dtype, machInst, zt, pg, rn, zm, 3240 false, true, xs, true, ff); 3241 } else if (bits(machInst, 4) == 0) { 3242 // TODO: SVE 64-bit gather prefetch (scalar plus unpacked 3243 // 32-bit scaled offsets) |
3240 return new Unknown64(machInst); | 3244 return new WarnUnimplemented("prf[bhwd]", machInst); |
3241 } 3242 break; 3243 case 0x3: 3244 if (bits(machInst, 22) == 0) { 3245 // SVE 64-bit gather load (vector plus immediate) 3246 IntRegIndex zt = (IntRegIndex) (uint8_t) bits(machInst, 4, 0); 3247 IntRegIndex zn = (IntRegIndex) (uint8_t) bits(machInst, 9, 5); 3248 uint64_t imm = bits(machInst, 20, 16); --- 26 unchanged lines hidden (view full) --- 3275 return new Unknown64(machInst); 3276 } 3277 return decodeSveGatherLoadSVInsts( 3278 dtype, machInst, zt, pg, rn, zm, 3279 false, false, false, true, ff); 3280 } else if (bits(machInst, 4) == 0) { 3281 // TODO: SVE 64-bit gather prefetch (scalar plus 64-bit 3282 // scaled offsets) | 3245 } 3246 break; 3247 case 0x3: 3248 if (bits(machInst, 22) == 0) { 3249 // SVE 64-bit gather load (vector plus immediate) 3250 IntRegIndex zt = (IntRegIndex) (uint8_t) bits(machInst, 4, 0); 3251 IntRegIndex zn = (IntRegIndex) (uint8_t) bits(machInst, 9, 5); 3252 uint64_t imm = bits(machInst, 20, 16); --- 26 unchanged lines hidden (view full) --- 3279 return new Unknown64(machInst); 3280 } 3281 return decodeSveGatherLoadSVInsts( 3282 dtype, machInst, zt, pg, rn, zm, 3283 false, false, false, true, ff); 3284 } else if (bits(machInst, 4) == 0) { 3285 // TODO: SVE 64-bit gather prefetch (scalar plus 64-bit 3286 // scaled offsets) |
3283 break; | 3287 return new WarnUnimplemented("prf[bhwd]", machInst); |
3284 } 3285 } 3286 break; 3287 } 3288 return new Unknown64(machInst); 3289 } // decodeSveMemGather64 3290 3291 StaticInstPtr --- 216 unchanged lines hidden --- | 3288 } 3289 } 3290 break; 3291 } 3292 return new Unknown64(machInst); 3293 } // decodeSveMemGather64 3294 3295 StaticInstPtr --- 216 unchanged lines hidden --- |