| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 The Native Client Authors. All rights reserved. | 2 * Copyright 2013 The Native Client Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can | 3 * Use of this source code is governed by a BSD-style license that can |
| 4 * be found in the LICENSE file. | 4 * be found in the LICENSE file. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 // DO NOT EDIT: GENERATED CODE | 7 // DO NOT EDIT: GENERATED CODE |
| 8 | 8 |
| 9 #include "native_client/src/trusted/validator_arm/gen/arm32_decode_baselines.h" | 9 #include "native_client/src/trusted/validator_arm/gen/arm32_decode_baselines.h" |
| 10 #include "native_client/src/trusted/validator_arm/inst_classes.h" | 10 #include "native_client/src/trusted/validator_arm/inst_classes.h" |
| (...skipping 4260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4271 // VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_0: | 4271 // VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_0: |
| 4272 // | 4272 // |
| 4273 // {D: D(22), | 4273 // {D: D(22), |
| 4274 // Q: Q(6), | 4274 // Q: Q(6), |
| 4275 // Vd: Vd(15:12), | 4275 // Vd: Vd(15:12), |
| 4276 // arch: ASIMD, | 4276 // arch: ASIMD, |
| 4277 // baseline: Vector1RegisterImmediate_MOV, | 4277 // baseline: Vector1RegisterImmediate_MOV, |
| 4278 // cmode: cmode(11:8), | 4278 // cmode: cmode(11:8), |
| 4279 // constraints: , | 4279 // constraints: , |
| 4280 // d: D:Vd, | 4280 // d: D:Vd, |
| 4281 // defs: {}, |
| 4281 // false: false, | 4282 // false: false, |
| 4282 // fields: [i(24), | 4283 // fields: [i(24), |
| 4283 // D(22), | 4284 // D(22), |
| 4284 // imm3(18:16), | 4285 // imm3(18:16), |
| 4285 // Vd(15:12), | 4286 // Vd(15:12), |
| 4286 // cmode(11:8), | 4287 // cmode(11:8), |
| 4287 // Q(6), | 4288 // Q(6), |
| 4288 // op(5), | 4289 // op(5), |
| 4289 // imm4(3:0)], | 4290 // imm4(3:0)], |
| 4290 // generated_baseline: VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_cas
e_0, | 4291 // generated_baseline: VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_cas
e_0, |
| 4291 // i: i(24), | 4292 // i: i(24), |
| 4292 // imm3: imm3(18:16), | 4293 // imm3: imm3(18:16), |
| 4293 // imm4: imm4(3:0), | 4294 // imm4: imm4(3:0), |
| 4294 // imm64: AdvSIMDExpandImm(op, cmode, i:imm3:imm4), | 4295 // imm64: AdvSIMDExpandImm(op, cmode, i:imm3:imm4), |
| 4295 // op: op(5), | 4296 // op: op(5), |
| 4296 // pattern: 1111001m1d000mmmddddcccc0qp1mmmm, | 4297 // pattern: 1111001m1d000mmmddddcccc0qp1mmmm, |
| 4297 // regs: 1 | 4298 // regs: 1 |
| 4298 // if Q(6)=0 | 4299 // if Q(6)=0 |
| 4299 // else 2, | 4300 // else 2, |
| 4300 // rule: VMOV_immediate_A1, | 4301 // rule: VMOV_immediate_A1, |
| 4301 // safety: [op(5)=0 && | 4302 // safety: [op(5)=0 && |
| 4302 // cmode(0)=1 && | 4303 // cmode(0)=1 && |
| 4303 // cmode(3:2)=~11 => DECODER_ERROR, | 4304 // cmode(3:2)=~11 => DECODER_ERROR, |
| 4304 // op(5)=1 && | 4305 // op(5)=1 && |
| 4305 // cmode(11:8)=~1110 => DECODER_ERROR, | 4306 // cmode(11:8)=~1110 => DECODER_ERROR, |
| 4306 // Q(6)=1 && | 4307 // Q(6)=1 && |
| 4307 // Vd(0)=1 => UNDEFINED], | 4308 // Vd(0)=1 => UNDEFINED], |
| 4308 // single_register: false} | 4309 // single_register: false, |
| 4310 // uses: {}} |
| 4311 RegisterList VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_0:: |
| 4312 defs(Instruction inst) const { |
| 4313 UNREFERENCED_PARAMETER(inst); // To silence compiler. |
| 4314 // defs: '{}' |
| 4315 return RegisterList(); |
| 4316 } |
| 4317 |
| 4309 SafetyLevel VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_0:: | 4318 SafetyLevel VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_0:: |
| 4310 safety(Instruction inst) const { | 4319 safety(Instruction inst) const { |
| 4311 UNREFERENCED_PARAMETER(inst); // To silence compiler. | 4320 UNREFERENCED_PARAMETER(inst); // To silence compiler. |
| 4312 | 4321 |
| 4313 // inst(5)=0 && | 4322 // inst(5)=0 && |
| 4314 // inst(11:8)(0)=1 && | 4323 // inst(11:8)(0)=1 && |
| 4315 // inst(11:8)(3:2)=~11 => DECODER_ERROR | 4324 // inst(11:8)(3:2)=~11 => DECODER_ERROR |
| 4316 if (((inst.Bits() & 0x00000020) == | 4325 if (((inst.Bits() & 0x00000020) == |
| 4317 0x00000000) && | 4326 0x00000000) && |
| 4318 ((((inst.Bits() & 0x00000F00) >> 8) & 0x00000001) == | 4327 ((((inst.Bits() & 0x00000F00) >> 8) & 0x00000001) == |
| (...skipping 15 matching lines...) Expand all Loading... |
| 4334 if (((inst.Bits() & 0x00000040) == | 4343 if (((inst.Bits() & 0x00000040) == |
| 4335 0x00000040) && | 4344 0x00000040) && |
| 4336 ((((inst.Bits() & 0x0000F000) >> 12) & 0x00000001) == | 4345 ((((inst.Bits() & 0x0000F000) >> 12) & 0x00000001) == |
| 4337 0x00000001)) | 4346 0x00000001)) |
| 4338 return UNDEFINED; | 4347 return UNDEFINED; |
| 4339 | 4348 |
| 4340 return MAY_BE_SAFE; | 4349 return MAY_BE_SAFE; |
| 4341 } | 4350 } |
| 4342 | 4351 |
| 4343 | 4352 |
| 4353 RegisterList VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_0:: |
| 4354 uses(Instruction inst) const { |
| 4355 UNREFERENCED_PARAMETER(inst); // To silence compiler. |
| 4356 // uses: '{}' |
| 4357 return RegisterList(); |
| 4358 } |
| 4359 |
| 4344 // VMOV_immediate_cccc11101d11iiiidddd101s0000iiii_case_0: | 4360 // VMOV_immediate_cccc11101d11iiiidddd101s0000iiii_case_0: |
| 4345 // | 4361 // |
| 4346 // {D: D(22), | 4362 // {D: D(22), |
| 4347 // Vd: Vd(15:12), | 4363 // Vd: Vd(15:12), |
| 4348 // advsimd: false, | 4364 // advsimd: false, |
| 4349 // arch: VFPv3, | 4365 // arch: VFPv3, |
| 4350 // baseline: CondVfpOp, | 4366 // baseline: CondVfpOp, |
| 4351 // cond: cond(31:28), | 4367 // cond: cond(31:28), |
| 4352 // constraints: , | 4368 // constraints: , |
| 4353 // d: Vd:D | 4369 // d: Vd:D |
| (...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5267 // VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_0: | 5283 // VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_0: |
| 5268 // | 5284 // |
| 5269 // {D: D(22), | 5285 // {D: D(22), |
| 5270 // Q: Q(6), | 5286 // Q: Q(6), |
| 5271 // Vd: Vd(15:12), | 5287 // Vd: Vd(15:12), |
| 5272 // arch: ASIMD, | 5288 // arch: ASIMD, |
| 5273 // baseline: Vector1RegisterImmediate_MVN, | 5289 // baseline: Vector1RegisterImmediate_MVN, |
| 5274 // cmode: cmode(11:8), | 5290 // cmode: cmode(11:8), |
| 5275 // constraints: , | 5291 // constraints: , |
| 5276 // d: D:Vd, | 5292 // d: D:Vd, |
| 5293 // defs: {}, |
| 5277 // fields: [i(24), | 5294 // fields: [i(24), |
| 5278 // D(22), | 5295 // D(22), |
| 5279 // imm3(18:16), | 5296 // imm3(18:16), |
| 5280 // Vd(15:12), | 5297 // Vd(15:12), |
| 5281 // cmode(11:8), | 5298 // cmode(11:8), |
| 5282 // Q(6), | 5299 // Q(6), |
| 5283 // op(5), | 5300 // op(5), |
| 5284 // imm4(3:0)], | 5301 // imm4(3:0)], |
| 5285 // generated_baseline: VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_0
, | 5302 // generated_baseline: VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_0
, |
| 5286 // i: i(24), | 5303 // i: i(24), |
| 5287 // imm3: imm3(18:16), | 5304 // imm3: imm3(18:16), |
| 5288 // imm4: imm4(3:0), | 5305 // imm4: imm4(3:0), |
| 5289 // imm64: AdvSIMDExpandImm(op, cmode, i:imm3:imm4), | 5306 // imm64: AdvSIMDExpandImm(op, cmode, i:imm3:imm4), |
| 5290 // op: op(5), | 5307 // op: op(5), |
| 5291 // pattern: 1111001i1d000mmmddddcccc0q11mmmm, | 5308 // pattern: 1111001i1d000mmmddddcccc0q11mmmm, |
| 5292 // regs: 1 | 5309 // regs: 1 |
| 5293 // if Q(6)=0 | 5310 // if Q(6)=0 |
| 5294 // else 2, | 5311 // else 2, |
| 5295 // rule: VMVN_immediate, | 5312 // rule: VMVN_immediate, |
| 5296 // safety: [(cmode(0)=1 && | 5313 // safety: [(cmode(0)=1 && |
| 5297 // cmode(3:2)=~11) || | 5314 // cmode(3:2)=~11) || |
| 5298 // cmode(3:1)=111 => DECODER_ERROR, | 5315 // cmode(3:1)=111 => DECODER_ERROR, |
| 5299 // Q(6)=1 && | 5316 // Q(6)=1 && |
| 5300 // Vd(0)=1 => UNDEFINED]} | 5317 // Vd(0)=1 => UNDEFINED], |
| 5318 // uses: {}} |
| 5319 RegisterList VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_0:: |
| 5320 defs(Instruction inst) const { |
| 5321 UNREFERENCED_PARAMETER(inst); // To silence compiler. |
| 5322 // defs: '{}' |
| 5323 return RegisterList(); |
| 5324 } |
| 5325 |
| 5301 SafetyLevel VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_0:: | 5326 SafetyLevel VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_0:: |
| 5302 safety(Instruction inst) const { | 5327 safety(Instruction inst) const { |
| 5303 UNREFERENCED_PARAMETER(inst); // To silence compiler. | 5328 UNREFERENCED_PARAMETER(inst); // To silence compiler. |
| 5304 | 5329 |
| 5305 // (inst(11:8)(0)=1 && | 5330 // (inst(11:8)(0)=1 && |
| 5306 // inst(11:8)(3:2)=~11) || | 5331 // inst(11:8)(3:2)=~11) || |
| 5307 // inst(11:8)(3:1)=111 => DECODER_ERROR | 5332 // inst(11:8)(3:1)=111 => DECODER_ERROR |
| 5308 if (((((((inst.Bits() & 0x00000F00) >> 8) & 0x00000001) == | 5333 if (((((((inst.Bits() & 0x00000F00) >> 8) & 0x00000001) == |
| 5309 0x00000001) && | 5334 0x00000001) && |
| 5310 ((((inst.Bits() & 0x00000F00) >> 8) & 0x0000000C) != | 5335 ((((inst.Bits() & 0x00000F00) >> 8) & 0x0000000C) != |
| 5311 0x0000000C))) || | 5336 0x0000000C))) || |
| 5312 ((((inst.Bits() & 0x00000F00) >> 8) & 0x0000000E) == | 5337 ((((inst.Bits() & 0x00000F00) >> 8) & 0x0000000E) == |
| 5313 0x0000000E)) | 5338 0x0000000E)) |
| 5314 return DECODER_ERROR; | 5339 return DECODER_ERROR; |
| 5315 | 5340 |
| 5316 // inst(6)=1 && | 5341 // inst(6)=1 && |
| 5317 // inst(15:12)(0)=1 => UNDEFINED | 5342 // inst(15:12)(0)=1 => UNDEFINED |
| 5318 if (((inst.Bits() & 0x00000040) == | 5343 if (((inst.Bits() & 0x00000040) == |
| 5319 0x00000040) && | 5344 0x00000040) && |
| 5320 ((((inst.Bits() & 0x0000F000) >> 12) & 0x00000001) == | 5345 ((((inst.Bits() & 0x0000F000) >> 12) & 0x00000001) == |
| 5321 0x00000001)) | 5346 0x00000001)) |
| 5322 return UNDEFINED; | 5347 return UNDEFINED; |
| 5323 | 5348 |
| 5324 return MAY_BE_SAFE; | 5349 return MAY_BE_SAFE; |
| 5325 } | 5350 } |
| 5326 | 5351 |
| 5327 | 5352 |
| 5353 RegisterList VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_0:: |
| 5354 uses(Instruction inst) const { |
| 5355 UNREFERENCED_PARAMETER(inst); // To silence compiler. |
| 5356 // uses: '{}' |
| 5357 return RegisterList(); |
| 5358 } |
| 5359 |
| 5328 // VMVN_register_111100111d11ss00dddd01011qm0mmmm_case_0: | 5360 // VMVN_register_111100111d11ss00dddd01011qm0mmmm_case_0: |
| 5329 // | 5361 // |
| 5330 // {D: D(22), | 5362 // {D: D(22), |
| 5331 // F: F(10), | 5363 // F: F(10), |
| 5332 // M: M(5), | 5364 // M: M(5), |
| 5333 // Q: Q(6), | 5365 // Q: Q(6), |
| 5334 // Vd: Vd(15:12), | 5366 // Vd: Vd(15:12), |
| 5335 // Vm: Vm(3:0), | 5367 // Vm: Vm(3:0), |
| 5336 // arch: ASIMD, | 5368 // arch: ASIMD, |
| 5337 // baseline: Vector2RegisterMiscellaneous_V8, | 5369 // baseline: Vector2RegisterMiscellaneous_V8, |
| (...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5820 // VORR_immediate_1111001i1d000mmmddddcccc0q01mmmm_case_0: | 5852 // VORR_immediate_1111001i1d000mmmddddcccc0q01mmmm_case_0: |
| 5821 // | 5853 // |
| 5822 // {D: D(22), | 5854 // {D: D(22), |
| 5823 // Q: Q(6), | 5855 // Q: Q(6), |
| 5824 // Vd: Vd(15:12), | 5856 // Vd: Vd(15:12), |
| 5825 // arch: ASIMD, | 5857 // arch: ASIMD, |
| 5826 // baseline: Vector1RegisterImmediate_BIT, | 5858 // baseline: Vector1RegisterImmediate_BIT, |
| 5827 // cmode: cmode(11:8), | 5859 // cmode: cmode(11:8), |
| 5828 // constraints: , | 5860 // constraints: , |
| 5829 // d: D:Vd, | 5861 // d: D:Vd, |
| 5862 // defs: {}, |
| 5830 // fields: [i(24), | 5863 // fields: [i(24), |
| 5831 // D(22), | 5864 // D(22), |
| 5832 // imm3(18:16), | 5865 // imm3(18:16), |
| 5833 // Vd(15:12), | 5866 // Vd(15:12), |
| 5834 // cmode(11:8), | 5867 // cmode(11:8), |
| 5835 // Q(6), | 5868 // Q(6), |
| 5836 // op(5), | 5869 // op(5), |
| 5837 // imm4(3:0)], | 5870 // imm4(3:0)], |
| 5838 // generated_baseline: VORR_immediate_1111001i1d000mmmddddcccc0q01mmmm_case_0
, | 5871 // generated_baseline: VORR_immediate_1111001i1d000mmmddddcccc0q01mmmm_case_0
, |
| 5839 // i: i(24), | 5872 // i: i(24), |
| 5840 // imm3: imm3(18:16), | 5873 // imm3: imm3(18:16), |
| 5841 // imm4: imm4(3:0), | 5874 // imm4: imm4(3:0), |
| 5842 // imm64: AdvSIMDExpandImm(op, cmode, i:imm3:imm4), | 5875 // imm64: AdvSIMDExpandImm(op, cmode, i:imm3:imm4), |
| 5843 // op: op(5), | 5876 // op: op(5), |
| 5844 // pattern: 1111001i1d000mmmddddcccc0q01mmmm, | 5877 // pattern: 1111001i1d000mmmddddcccc0q01mmmm, |
| 5845 // regs: 1 | 5878 // regs: 1 |
| 5846 // if Q(6)=0 | 5879 // if Q(6)=0 |
| 5847 // else 2, | 5880 // else 2, |
| 5848 // rule: VORR_immediate, | 5881 // rule: VORR_immediate, |
| 5849 // safety: [cmode(0)=0 || | 5882 // safety: [cmode(0)=0 || |
| 5850 // cmode(3:2)=11 => DECODER_ERROR, | 5883 // cmode(3:2)=11 => DECODER_ERROR, |
| 5851 // Q(6)=1 && | 5884 // Q(6)=1 && |
| 5852 // Vd(0)=1 => UNDEFINED]} | 5885 // Vd(0)=1 => UNDEFINED], |
| 5886 // uses: {}} |
| 5887 RegisterList VORR_immediate_1111001i1d000mmmddddcccc0q01mmmm_case_0:: |
| 5888 defs(Instruction inst) const { |
| 5889 UNREFERENCED_PARAMETER(inst); // To silence compiler. |
| 5890 // defs: '{}' |
| 5891 return RegisterList(); |
| 5892 } |
| 5893 |
| 5853 SafetyLevel VORR_immediate_1111001i1d000mmmddddcccc0q01mmmm_case_0:: | 5894 SafetyLevel VORR_immediate_1111001i1d000mmmddddcccc0q01mmmm_case_0:: |
| 5854 safety(Instruction inst) const { | 5895 safety(Instruction inst) const { |
| 5855 UNREFERENCED_PARAMETER(inst); // To silence compiler. | 5896 UNREFERENCED_PARAMETER(inst); // To silence compiler. |
| 5856 | 5897 |
| 5857 // inst(11:8)(0)=0 || | 5898 // inst(11:8)(0)=0 || |
| 5858 // inst(11:8)(3:2)=11 => DECODER_ERROR | 5899 // inst(11:8)(3:2)=11 => DECODER_ERROR |
| 5859 if (((((inst.Bits() & 0x00000F00) >> 8) & 0x00000001) == | 5900 if (((((inst.Bits() & 0x00000F00) >> 8) & 0x00000001) == |
| 5860 0x00000000) || | 5901 0x00000000) || |
| 5861 ((((inst.Bits() & 0x00000F00) >> 8) & 0x0000000C) == | 5902 ((((inst.Bits() & 0x00000F00) >> 8) & 0x0000000C) == |
| 5862 0x0000000C)) | 5903 0x0000000C)) |
| 5863 return DECODER_ERROR; | 5904 return DECODER_ERROR; |
| 5864 | 5905 |
| 5865 // inst(6)=1 && | 5906 // inst(6)=1 && |
| 5866 // inst(15:12)(0)=1 => UNDEFINED | 5907 // inst(15:12)(0)=1 => UNDEFINED |
| 5867 if (((inst.Bits() & 0x00000040) == | 5908 if (((inst.Bits() & 0x00000040) == |
| 5868 0x00000040) && | 5909 0x00000040) && |
| 5869 ((((inst.Bits() & 0x0000F000) >> 12) & 0x00000001) == | 5910 ((((inst.Bits() & 0x0000F000) >> 12) & 0x00000001) == |
| 5870 0x00000001)) | 5911 0x00000001)) |
| 5871 return UNDEFINED; | 5912 return UNDEFINED; |
| 5872 | 5913 |
| 5873 return MAY_BE_SAFE; | 5914 return MAY_BE_SAFE; |
| 5874 } | 5915 } |
| 5875 | 5916 |
| 5876 | 5917 |
| 5918 RegisterList VORR_immediate_1111001i1d000mmmddddcccc0q01mmmm_case_0:: |
| 5919 uses(Instruction inst) const { |
| 5920 UNREFERENCED_PARAMETER(inst); // To silence compiler. |
| 5921 // uses: '{}' |
| 5922 return RegisterList(); |
| 5923 } |
| 5924 |
| 5877 // VORR_register_or_VMOV_register_A1_111100100d10nnnndddd0001nqm1mmmm_case_0: | 5925 // VORR_register_or_VMOV_register_A1_111100100d10nnnndddd0001nqm1mmmm_case_0: |
| 5878 // | 5926 // |
| 5879 // {D: D(22), | 5927 // {D: D(22), |
| 5880 // M: M(5), | 5928 // M: M(5), |
| 5881 // N: N(7), | 5929 // N: N(7), |
| 5882 // Q: Q(6), | 5930 // Q: Q(6), |
| 5883 // U: U(24), | 5931 // U: U(24), |
| 5884 // Vd: Vd(15:12), | 5932 // Vd: Vd(15:12), |
| 5885 // Vm: Vm(3:0), | 5933 // Vm: Vm(3:0), |
| 5886 // Vn: Vn(19:16), | 5934 // Vn: Vn(19:16), |
| (...skipping 7726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13613 | 13661 |
| 13614 | 13662 |
| 13615 RegisterList YIELD_cccc0011001000001111000000000001_case_0:: | 13663 RegisterList YIELD_cccc0011001000001111000000000001_case_0:: |
| 13616 uses(Instruction inst) const { | 13664 uses(Instruction inst) const { |
| 13617 UNREFERENCED_PARAMETER(inst); // To silence compiler. | 13665 UNREFERENCED_PARAMETER(inst); // To silence compiler. |
| 13618 // uses: '{}' | 13666 // uses: '{}' |
| 13619 return RegisterList(); | 13667 return RegisterList(); |
| 13620 } | 13668 } |
| 13621 | 13669 |
| 13622 } // namespace nacl_arm_dec | 13670 } // namespace nacl_arm_dec |
| OLD | NEW |