Path: blob/main/cranelift/codegen/src/isa/aarch64/inst/emit_tests.rs
1693 views
use crate::ir::types::*;1use crate::ir::{ExternalName, TrapCode};2use crate::isa::aarch64::inst::*;34use alloc::boxed::Box;56#[cfg(test)]7fn simm9_zero() -> SImm9 {8SImm9::maybe_from_i64(0).unwrap()9}1011#[cfg(test)]12fn simm7_scaled_zero(scale_ty: Type) -> SImm7Scaled {13SImm7Scaled::maybe_from_i64(0, scale_ty).unwrap()14}1516#[test]17fn test_aarch64_binemit() {18let mut insns = Vec::<(Inst, &str, &str)>::new();1920// N.B.: the architecture is little-endian, so when transcribing the 32-bit21// hex instructions from e.g. objdump disassembly, one must swap the bytes22// seen below. (E.g., a `ret` is normally written as the u32 `D65F03C0`,23// but we write it here as C0035FD6.)2425// Useful helper script to produce the encodings from the text:26//27// #!/bin/sh28// tmp=`mktemp /tmp/XXXXXXXX.o`29// aarch64-linux-gnu-as /dev/stdin -o $tmp30// aarch64-linux-gnu-objdump -d $tmp31// rm -f $tmp32//33// Then:34//35// $ echo "mov x1, x2" | aarch64inst.sh36insns.push((Inst::Ret {}, "C0035FD6", "ret"));37insns.push((38Inst::AuthenticatedRet {39key: APIKey::ASP,40is_hint: true,41},42"BF2303D5C0035FD6",43"autiasp ; ret",44));45insns.push((46Inst::AuthenticatedRet {47key: APIKey::BSP,48is_hint: false,49},50"FF0F5FD6",51"retabsp",52));53insns.push((Inst::Paci { key: APIKey::BSP }, "7F2303D5", "pacibsp"));54insns.push((Inst::Xpaclri, "FF2003D5", "xpaclri"));55insns.push((56Inst::Bti {57targets: BranchTargetType::J,58},59"9F2403D5",60"bti j",61));62insns.push((Inst::Nop0, "", "nop-zero-len"));63insns.push((Inst::Nop4, "1F2003D5", "nop"));64insns.push((Inst::Csdb, "9F2203D5", "csdb"));65insns.push((66Inst::Udf {67trap_code: TrapCode::STACK_OVERFLOW,68},69"1FC10000",70"udf #0xc11f",71));72insns.push((73Inst::AluRRR {74alu_op: ALUOp::Add,75size: OperandSize::Size32,76rd: writable_xreg(1),77rn: xreg(2),78rm: xreg(3),79},80"4100030B",81"add w1, w2, w3",82));83insns.push((84Inst::AluRRR {85alu_op: ALUOp::Add,86size: OperandSize::Size64,87rd: writable_xreg(4),88rn: xreg(5),89rm: xreg(6),90},91"A400068B",92"add x4, x5, x6",93));94insns.push((95Inst::AluRRR {96alu_op: ALUOp::Adc,97size: OperandSize::Size32,98rd: writable_xreg(1),99rn: xreg(2),100rm: xreg(3),101},102"4100031A",103"adc w1, w2, w3",104));105insns.push((106Inst::AluRRR {107alu_op: ALUOp::Adc,108size: OperandSize::Size64,109rd: writable_xreg(4),110rn: xreg(5),111rm: xreg(6),112},113"A400069A",114"adc x4, x5, x6",115));116insns.push((117Inst::AluRRR {118alu_op: ALUOp::AdcS,119size: OperandSize::Size32,120rd: writable_xreg(1),121rn: xreg(2),122rm: xreg(3),123},124"4100033A",125"adcs w1, w2, w3",126));127insns.push((128Inst::AluRRR {129alu_op: ALUOp::AdcS,130size: OperandSize::Size64,131rd: writable_xreg(4),132rn: xreg(5),133rm: xreg(6),134},135"A40006BA",136"adcs x4, x5, x6",137));138insns.push((139Inst::AluRRR {140alu_op: ALUOp::Sub,141size: OperandSize::Size32,142rd: writable_xreg(1),143rn: xreg(2),144rm: xreg(3),145},146"4100034B",147"sub w1, w2, w3",148));149insns.push((150Inst::AluRRR {151alu_op: ALUOp::Sub,152size: OperandSize::Size64,153rd: writable_xreg(4),154rn: xreg(5),155rm: xreg(6),156},157"A40006CB",158"sub x4, x5, x6",159));160insns.push((161Inst::AluRRR {162alu_op: ALUOp::Sbc,163size: OperandSize::Size32,164rd: writable_xreg(1),165rn: xreg(2),166rm: xreg(3),167},168"4100035A",169"sbc w1, w2, w3",170));171insns.push((172Inst::AluRRR {173alu_op: ALUOp::Sbc,174size: OperandSize::Size64,175rd: writable_xreg(4),176rn: xreg(5),177rm: xreg(6),178},179"A40006DA",180"sbc x4, x5, x6",181));182insns.push((183Inst::AluRRR {184alu_op: ALUOp::SbcS,185size: OperandSize::Size32,186rd: writable_xreg(1),187rn: xreg(2),188rm: xreg(3),189},190"4100037A",191"sbcs w1, w2, w3",192));193insns.push((194Inst::AluRRR {195alu_op: ALUOp::SbcS,196size: OperandSize::Size64,197rd: writable_xreg(4),198rn: xreg(5),199rm: xreg(6),200},201"A40006FA",202"sbcs x4, x5, x6",203));204205insns.push((206Inst::AluRRR {207alu_op: ALUOp::Orr,208size: OperandSize::Size32,209rd: writable_xreg(1),210rn: xreg(2),211rm: xreg(3),212},213"4100032A",214"orr w1, w2, w3",215));216insns.push((217Inst::AluRRR {218alu_op: ALUOp::Orr,219size: OperandSize::Size64,220rd: writable_xreg(4),221rn: xreg(5),222rm: xreg(6),223},224"A40006AA",225"orr x4, x5, x6",226));227insns.push((228Inst::AluRRR {229alu_op: ALUOp::And,230size: OperandSize::Size32,231rd: writable_xreg(1),232rn: xreg(2),233rm: xreg(3),234},235"4100030A",236"and w1, w2, w3",237));238insns.push((239Inst::AluRRR {240alu_op: ALUOp::And,241size: OperandSize::Size64,242rd: writable_xreg(4),243rn: xreg(5),244rm: xreg(6),245},246"A400068A",247"and x4, x5, x6",248));249insns.push((250Inst::AluRRR {251alu_op: ALUOp::AndS,252size: OperandSize::Size32,253rd: writable_xreg(1),254rn: xreg(2),255rm: xreg(3),256},257"4100036A",258"ands w1, w2, w3",259));260insns.push((261Inst::AluRRR {262alu_op: ALUOp::AndS,263size: OperandSize::Size64,264rd: writable_xreg(4),265rn: xreg(5),266rm: xreg(6),267},268"A40006EA",269"ands x4, x5, x6",270));271insns.push((272Inst::AluRRR {273alu_op: ALUOp::SubS,274size: OperandSize::Size32,275rd: writable_zero_reg(),276rn: xreg(2),277rm: xreg(3),278},279"5F00036B",280// TODO: Display as cmp281"subs wzr, w2, w3",282));283insns.push((284Inst::AluRRR {285alu_op: ALUOp::SubS,286size: OperandSize::Size32,287rd: writable_xreg(1),288rn: xreg(2),289rm: xreg(3),290},291"4100036B",292"subs w1, w2, w3",293));294insns.push((295Inst::AluRRR {296alu_op: ALUOp::SubS,297size: OperandSize::Size64,298rd: writable_xreg(4),299rn: xreg(5),300rm: xreg(6),301},302"A40006EB",303"subs x4, x5, x6",304));305insns.push((306Inst::AluRRR {307alu_op: ALUOp::AddS,308size: OperandSize::Size32,309rd: writable_xreg(1),310rn: xreg(2),311rm: xreg(3),312},313"4100032B",314"adds w1, w2, w3",315));316insns.push((317Inst::AluRRR {318alu_op: ALUOp::AddS,319size: OperandSize::Size64,320rd: writable_xreg(4),321rn: xreg(5),322rm: xreg(6),323},324"A40006AB",325"adds x4, x5, x6",326));327insns.push((328Inst::AluRRImm12 {329alu_op: ALUOp::AddS,330size: OperandSize::Size64,331rd: writable_zero_reg(),332rn: xreg(5),333imm12: Imm12::maybe_from_u64(1).unwrap(),334},335"BF0400B1",336// TODO: Display as cmn.337"adds xzr, x5, #1",338));339insns.push((340Inst::AluRRR {341alu_op: ALUOp::SDiv,342size: OperandSize::Size64,343rd: writable_xreg(4),344rn: xreg(5),345rm: xreg(6),346},347"A40CC69A",348"sdiv x4, x5, x6",349));350insns.push((351Inst::AluRRR {352alu_op: ALUOp::UDiv,353size: OperandSize::Size64,354rd: writable_xreg(4),355rn: xreg(5),356rm: xreg(6),357},358"A408C69A",359"udiv x4, x5, x6",360));361362insns.push((363Inst::AluRRR {364alu_op: ALUOp::Eor,365size: OperandSize::Size32,366rd: writable_xreg(4),367rn: xreg(5),368rm: xreg(6),369},370"A400064A",371"eor w4, w5, w6",372));373insns.push((374Inst::AluRRR {375alu_op: ALUOp::Eor,376size: OperandSize::Size64,377rd: writable_xreg(4),378rn: xreg(5),379rm: xreg(6),380},381"A40006CA",382"eor x4, x5, x6",383));384insns.push((385Inst::AluRRR {386alu_op: ALUOp::AndNot,387size: OperandSize::Size32,388rd: writable_xreg(4),389rn: xreg(5),390rm: xreg(6),391},392"A400260A",393"bic w4, w5, w6",394));395insns.push((396Inst::AluRRR {397alu_op: ALUOp::AndNot,398size: OperandSize::Size64,399rd: writable_xreg(4),400rn: xreg(5),401rm: xreg(6),402},403"A400268A",404"bic x4, x5, x6",405));406insns.push((407Inst::AluRRR {408alu_op: ALUOp::OrrNot,409size: OperandSize::Size32,410rd: writable_xreg(4),411rn: xreg(5),412rm: xreg(6),413},414"A400262A",415"orn w4, w5, w6",416));417insns.push((418Inst::AluRRR {419alu_op: ALUOp::OrrNot,420size: OperandSize::Size64,421rd: writable_xreg(4),422rn: xreg(5),423rm: xreg(6),424},425"A40026AA",426"orn x4, x5, x6",427));428insns.push((429Inst::AluRRR {430alu_op: ALUOp::EorNot,431size: OperandSize::Size32,432rd: writable_xreg(4),433rn: xreg(5),434rm: xreg(6),435},436"A400264A",437"eon w4, w5, w6",438));439insns.push((440Inst::AluRRR {441alu_op: ALUOp::EorNot,442size: OperandSize::Size64,443rd: writable_xreg(4),444rn: xreg(5),445rm: xreg(6),446},447"A40026CA",448"eon x4, x5, x6",449));450451insns.push((452Inst::AluRRR {453alu_op: ALUOp::Extr,454size: OperandSize::Size32,455rd: writable_xreg(4),456rn: xreg(5),457rm: xreg(6),458},459"A42CC61A",460"extr w4, w5, w6",461));462insns.push((463Inst::AluRRR {464alu_op: ALUOp::Extr,465size: OperandSize::Size64,466rd: writable_xreg(4),467rn: xreg(5),468rm: xreg(6),469},470"A42CC69A",471"extr x4, x5, x6",472));473insns.push((474Inst::AluRRR {475alu_op: ALUOp::Lsr,476size: OperandSize::Size32,477rd: writable_xreg(4),478rn: xreg(5),479rm: xreg(6),480},481"A424C61A",482"lsr w4, w5, w6",483));484insns.push((485Inst::AluRRR {486alu_op: ALUOp::Lsr,487size: OperandSize::Size64,488rd: writable_xreg(4),489rn: xreg(5),490rm: xreg(6),491},492"A424C69A",493"lsr x4, x5, x6",494));495insns.push((496Inst::AluRRR {497alu_op: ALUOp::Asr,498size: OperandSize::Size32,499rd: writable_xreg(4),500rn: xreg(5),501rm: xreg(6),502},503"A428C61A",504"asr w4, w5, w6",505));506insns.push((507Inst::AluRRR {508alu_op: ALUOp::Asr,509size: OperandSize::Size64,510rd: writable_xreg(4),511rn: xreg(5),512rm: xreg(6),513},514"A428C69A",515"asr x4, x5, x6",516));517insns.push((518Inst::AluRRR {519alu_op: ALUOp::Lsl,520size: OperandSize::Size32,521rd: writable_xreg(4),522rn: xreg(5),523rm: xreg(6),524},525"A420C61A",526"lsl w4, w5, w6",527));528insns.push((529Inst::AluRRR {530alu_op: ALUOp::Lsl,531size: OperandSize::Size64,532rd: writable_xreg(4),533rn: xreg(5),534rm: xreg(6),535},536"A420C69A",537"lsl x4, x5, x6",538));539540insns.push((541Inst::AluRRImm12 {542alu_op: ALUOp::Add,543size: OperandSize::Size32,544rd: writable_xreg(7),545rn: xreg(8),546imm12: Imm12 {547bits: 0x123,548shift12: false,549},550},551"078D0411",552"add w7, w8, #291",553));554insns.push((555Inst::AluRRImm12 {556alu_op: ALUOp::Add,557size: OperandSize::Size32,558rd: writable_xreg(7),559rn: xreg(8),560imm12: Imm12 {561bits: 0x123,562shift12: true,563},564},565"078D4411",566"add w7, w8, #1191936",567));568insns.push((569Inst::AluRRImm12 {570alu_op: ALUOp::Add,571size: OperandSize::Size64,572rd: writable_xreg(7),573rn: xreg(8),574imm12: Imm12 {575bits: 0x123,576shift12: false,577},578},579"078D0491",580"add x7, x8, #291",581));582insns.push((583Inst::AluRRImm12 {584alu_op: ALUOp::Sub,585size: OperandSize::Size32,586rd: writable_xreg(7),587rn: xreg(8),588imm12: Imm12 {589bits: 0x123,590shift12: false,591},592},593"078D0451",594"sub w7, w8, #291",595));596insns.push((597Inst::AluRRImm12 {598alu_op: ALUOp::Sub,599size: OperandSize::Size64,600rd: writable_xreg(7),601rn: xreg(8),602imm12: Imm12 {603bits: 0x123,604shift12: false,605},606},607"078D04D1",608"sub x7, x8, #291",609));610insns.push((611Inst::AluRRImm12 {612alu_op: ALUOp::SubS,613size: OperandSize::Size32,614rd: writable_xreg(7),615rn: xreg(8),616imm12: Imm12 {617bits: 0x123,618shift12: false,619},620},621"078D0471",622"subs w7, w8, #291",623));624insns.push((625Inst::AluRRImm12 {626alu_op: ALUOp::SubS,627size: OperandSize::Size64,628rd: writable_xreg(7),629rn: xreg(8),630imm12: Imm12 {631bits: 0x123,632shift12: false,633},634},635"078D04F1",636"subs x7, x8, #291",637));638639insns.push((640Inst::AluRRRExtend {641alu_op: ALUOp::Add,642size: OperandSize::Size32,643rd: writable_xreg(7),644rn: xreg(8),645rm: xreg(9),646extendop: ExtendOp::SXTB,647},648"0781290B",649"add w7, w8, w9, SXTB",650));651652insns.push((653Inst::AluRRRExtend {654alu_op: ALUOp::Add,655size: OperandSize::Size64,656rd: writable_xreg(15),657rn: xreg(16),658rm: xreg(17),659extendop: ExtendOp::UXTB,660},661"0F02318B",662"add x15, x16, x17, UXTB",663));664665insns.push((666Inst::AluRRRExtend {667alu_op: ALUOp::Sub,668size: OperandSize::Size32,669rd: writable_xreg(1),670rn: xreg(2),671rm: xreg(3),672extendop: ExtendOp::SXTH,673},674"41A0234B",675"sub w1, w2, w3, SXTH",676));677678insns.push((679Inst::AluRRRExtend {680alu_op: ALUOp::Sub,681size: OperandSize::Size64,682rd: writable_xreg(20),683rn: xreg(21),684rm: xreg(22),685extendop: ExtendOp::UXTW,686},687"B44236CB",688"sub x20, x21, x22, UXTW",689));690691insns.push((692Inst::AluRRRShift {693alu_op: ALUOp::Add,694size: OperandSize::Size32,695rd: writable_xreg(10),696rn: xreg(11),697rm: xreg(12),698shiftop: ShiftOpAndAmt::new(699ShiftOp::LSL,700ShiftOpShiftImm::maybe_from_shift(20).unwrap(),701),702},703"6A510C0B",704"add w10, w11, w12, LSL 20",705));706insns.push((707Inst::AluRRRShift {708alu_op: ALUOp::Add,709size: OperandSize::Size64,710rd: writable_xreg(10),711rn: xreg(11),712rm: xreg(12),713shiftop: ShiftOpAndAmt::new(714ShiftOp::ASR,715ShiftOpShiftImm::maybe_from_shift(42).unwrap(),716),717},718"6AA98C8B",719"add x10, x11, x12, ASR 42",720));721insns.push((722Inst::AluRRRShift {723alu_op: ALUOp::Sub,724size: OperandSize::Size32,725rd: writable_xreg(10),726rn: xreg(11),727rm: xreg(12),728shiftop: ShiftOpAndAmt::new(729ShiftOp::LSL,730ShiftOpShiftImm::maybe_from_shift(23).unwrap(),731),732},733"6A5D0C4B",734"sub w10, w11, w12, LSL 23",735));736insns.push((737Inst::AluRRRShift {738alu_op: ALUOp::Sub,739size: OperandSize::Size64,740rd: writable_xreg(10),741rn: xreg(11),742rm: xreg(12),743shiftop: ShiftOpAndAmt::new(744ShiftOp::LSL,745ShiftOpShiftImm::maybe_from_shift(23).unwrap(),746),747},748"6A5D0CCB",749"sub x10, x11, x12, LSL 23",750));751insns.push((752Inst::AluRRRShift {753alu_op: ALUOp::Orr,754size: OperandSize::Size32,755rd: writable_xreg(10),756rn: xreg(11),757rm: xreg(12),758shiftop: ShiftOpAndAmt::new(759ShiftOp::LSL,760ShiftOpShiftImm::maybe_from_shift(23).unwrap(),761),762},763"6A5D0C2A",764"orr w10, w11, w12, LSL 23",765));766insns.push((767Inst::AluRRRShift {768alu_op: ALUOp::Orr,769size: OperandSize::Size64,770rd: writable_xreg(10),771rn: xreg(11),772rm: xreg(12),773shiftop: ShiftOpAndAmt::new(774ShiftOp::LSL,775ShiftOpShiftImm::maybe_from_shift(23).unwrap(),776),777},778"6A5D0CAA",779"orr x10, x11, x12, LSL 23",780));781insns.push((782Inst::AluRRRShift {783alu_op: ALUOp::And,784size: OperandSize::Size32,785rd: writable_xreg(10),786rn: xreg(11),787rm: xreg(12),788shiftop: ShiftOpAndAmt::new(789ShiftOp::LSL,790ShiftOpShiftImm::maybe_from_shift(23).unwrap(),791),792},793"6A5D0C0A",794"and w10, w11, w12, LSL 23",795));796insns.push((797Inst::AluRRRShift {798alu_op: ALUOp::And,799size: OperandSize::Size64,800rd: writable_xreg(10),801rn: xreg(11),802rm: xreg(12),803shiftop: ShiftOpAndAmt::new(804ShiftOp::LSL,805ShiftOpShiftImm::maybe_from_shift(23).unwrap(),806),807},808"6A5D0C8A",809"and x10, x11, x12, LSL 23",810));811insns.push((812Inst::AluRRRShift {813alu_op: ALUOp::AndS,814size: OperandSize::Size32,815rd: writable_xreg(10),816rn: xreg(11),817rm: xreg(12),818shiftop: ShiftOpAndAmt::new(819ShiftOp::LSL,820ShiftOpShiftImm::maybe_from_shift(23).unwrap(),821),822},823"6A5D0C6A",824"ands w10, w11, w12, LSL 23",825));826insns.push((827Inst::AluRRRShift {828alu_op: ALUOp::AndS,829size: OperandSize::Size64,830rd: writable_xreg(10),831rn: xreg(11),832rm: xreg(12),833shiftop: ShiftOpAndAmt::new(834ShiftOp::LSL,835ShiftOpShiftImm::maybe_from_shift(23).unwrap(),836),837},838"6A5D0CEA",839"ands x10, x11, x12, LSL 23",840));841insns.push((842Inst::AluRRRShift {843alu_op: ALUOp::Eor,844size: OperandSize::Size32,845rd: writable_xreg(10),846rn: xreg(11),847rm: xreg(12),848shiftop: ShiftOpAndAmt::new(849ShiftOp::LSL,850ShiftOpShiftImm::maybe_from_shift(23).unwrap(),851),852},853"6A5D0C4A",854"eor w10, w11, w12, LSL 23",855));856insns.push((857Inst::AluRRRShift {858alu_op: ALUOp::Eor,859size: OperandSize::Size64,860rd: writable_xreg(10),861rn: xreg(11),862rm: xreg(12),863shiftop: ShiftOpAndAmt::new(864ShiftOp::LSL,865ShiftOpShiftImm::maybe_from_shift(23).unwrap(),866),867},868"6A5D0CCA",869"eor x10, x11, x12, LSL 23",870));871insns.push((872Inst::AluRRRShift {873alu_op: ALUOp::OrrNot,874size: OperandSize::Size32,875rd: writable_xreg(10),876rn: xreg(11),877rm: xreg(12),878shiftop: ShiftOpAndAmt::new(879ShiftOp::LSL,880ShiftOpShiftImm::maybe_from_shift(23).unwrap(),881),882},883"6A5D2C2A",884"orn w10, w11, w12, LSL 23",885));886insns.push((887Inst::AluRRRShift {888alu_op: ALUOp::OrrNot,889size: OperandSize::Size64,890rd: writable_xreg(10),891rn: xreg(11),892rm: xreg(12),893shiftop: ShiftOpAndAmt::new(894ShiftOp::LSL,895ShiftOpShiftImm::maybe_from_shift(23).unwrap(),896),897},898"6A5D2CAA",899"orn x10, x11, x12, LSL 23",900));901insns.push((902Inst::AluRRRShift {903alu_op: ALUOp::AndNot,904size: OperandSize::Size32,905rd: writable_xreg(10),906rn: xreg(11),907rm: xreg(12),908shiftop: ShiftOpAndAmt::new(909ShiftOp::LSL,910ShiftOpShiftImm::maybe_from_shift(23).unwrap(),911),912},913"6A5D2C0A",914"bic w10, w11, w12, LSL 23",915));916insns.push((917Inst::AluRRRShift {918alu_op: ALUOp::AndNot,919size: OperandSize::Size64,920rd: writable_xreg(10),921rn: xreg(11),922rm: xreg(12),923shiftop: ShiftOpAndAmt::new(924ShiftOp::LSL,925ShiftOpShiftImm::maybe_from_shift(23).unwrap(),926),927},928"6A5D2C8A",929"bic x10, x11, x12, LSL 23",930));931insns.push((932Inst::AluRRRShift {933alu_op: ALUOp::EorNot,934size: OperandSize::Size32,935rd: writable_xreg(10),936rn: xreg(11),937rm: xreg(12),938shiftop: ShiftOpAndAmt::new(939ShiftOp::LSL,940ShiftOpShiftImm::maybe_from_shift(23).unwrap(),941),942},943"6A5D2C4A",944"eon w10, w11, w12, LSL 23",945));946insns.push((947Inst::AluRRRShift {948alu_op: ALUOp::EorNot,949size: OperandSize::Size64,950rd: writable_xreg(10),951rn: xreg(11),952rm: xreg(12),953shiftop: ShiftOpAndAmt::new(954ShiftOp::LSL,955ShiftOpShiftImm::maybe_from_shift(23).unwrap(),956),957},958"6A5D2CCA",959"eon x10, x11, x12, LSL 23",960));961insns.push((962Inst::AluRRRShift {963alu_op: ALUOp::AddS,964size: OperandSize::Size32,965rd: writable_xreg(10),966rn: xreg(11),967rm: xreg(12),968shiftop: ShiftOpAndAmt::new(969ShiftOp::LSL,970ShiftOpShiftImm::maybe_from_shift(23).unwrap(),971),972},973"6A5D0C2B",974"adds w10, w11, w12, LSL 23",975));976insns.push((977Inst::AluRRRShift {978alu_op: ALUOp::AddS,979size: OperandSize::Size64,980rd: writable_xreg(10),981rn: xreg(11),982rm: xreg(12),983shiftop: ShiftOpAndAmt::new(984ShiftOp::LSL,985ShiftOpShiftImm::maybe_from_shift(23).unwrap(),986),987},988"6A5D0CAB",989"adds x10, x11, x12, LSL 23",990));991insns.push((992Inst::AluRRRShift {993alu_op: ALUOp::SubS,994size: OperandSize::Size32,995rd: writable_xreg(10),996rn: xreg(11),997rm: xreg(12),998shiftop: ShiftOpAndAmt::new(999ShiftOp::LSL,1000ShiftOpShiftImm::maybe_from_shift(23).unwrap(),1001),1002},1003"6A5D0C6B",1004"subs w10, w11, w12, LSL 23",1005));1006insns.push((1007Inst::AluRRRShift {1008alu_op: ALUOp::SubS,1009size: OperandSize::Size64,1010rd: writable_xreg(10),1011rn: xreg(11),1012rm: xreg(12),1013shiftop: ShiftOpAndAmt::new(1014ShiftOp::LSL,1015ShiftOpShiftImm::maybe_from_shift(23).unwrap(),1016),1017},1018"6A5D0CEB",1019"subs x10, x11, x12, LSL 23",1020));10211022insns.push((1023Inst::AluRRRExtend {1024alu_op: ALUOp::SubS,1025size: OperandSize::Size64,1026rd: writable_zero_reg(),1027rn: stack_reg(),1028rm: xreg(12),1029extendop: ExtendOp::UXTX,1030},1031"FF632CEB",1032"subs xzr, sp, x12, UXTX",1033));10341035insns.push((1036Inst::AluRRRR {1037alu_op: ALUOp3::MAdd,1038size: OperandSize::Size32,1039rd: writable_xreg(1),1040rn: xreg(2),1041rm: xreg(3),1042ra: xreg(4),1043},1044"4110031B",1045"madd w1, w2, w3, w4",1046));1047insns.push((1048Inst::AluRRRR {1049alu_op: ALUOp3::MAdd,1050size: OperandSize::Size64,1051rd: writable_xreg(1),1052rn: xreg(2),1053rm: xreg(3),1054ra: xreg(4),1055},1056"4110039B",1057"madd x1, x2, x3, x4",1058));1059insns.push((1060Inst::AluRRRR {1061alu_op: ALUOp3::MSub,1062size: OperandSize::Size32,1063rd: writable_xreg(1),1064rn: xreg(2),1065rm: xreg(3),1066ra: xreg(4),1067},1068"4190031B",1069"msub w1, w2, w3, w4",1070));1071insns.push((1072Inst::AluRRRR {1073alu_op: ALUOp3::MSub,1074size: OperandSize::Size64,1075rd: writable_xreg(1),1076rn: xreg(2),1077rm: xreg(3),1078ra: xreg(4),1079},1080"4190039B",1081"msub x1, x2, x3, x4",1082));1083insns.push((1084Inst::AluRRRR {1085alu_op: ALUOp3::UMAddL,1086size: OperandSize::Size32,1087rd: writable_xreg(1),1088rn: xreg(2),1089rm: xreg(3),1090ra: xreg(4),1091},1092"4110A39B",1093"umaddl x1, w2, w3, x4",1094));1095insns.push((1096Inst::AluRRRR {1097alu_op: ALUOp3::SMAddL,1098size: OperandSize::Size32,1099rd: writable_xreg(1),1100rn: xreg(2),1101rm: xreg(3),1102ra: xreg(4),1103},1104"4110239B",1105"smaddl x1, w2, w3, x4",1106));1107insns.push((1108Inst::AluRRR {1109alu_op: ALUOp::SMulH,1110size: OperandSize::Size64,1111rd: writable_xreg(1),1112rn: xreg(2),1113rm: xreg(3),1114},1115"417C439B",1116"smulh x1, x2, x3",1117));1118insns.push((1119Inst::AluRRR {1120alu_op: ALUOp::UMulH,1121size: OperandSize::Size64,1122rd: writable_xreg(1),1123rn: xreg(2),1124rm: xreg(3),1125},1126"417CC39B",1127"umulh x1, x2, x3",1128));11291130insns.push((1131Inst::AluRRImmShift {1132alu_op: ALUOp::Extr,1133size: OperandSize::Size32,1134rd: writable_xreg(20),1135rn: xreg(21),1136immshift: ImmShift::maybe_from_u64(19).unwrap(),1137},1138"B44E9513",1139"extr w20, w21, #19",1140));1141insns.push((1142Inst::AluRRImmShift {1143alu_op: ALUOp::Extr,1144size: OperandSize::Size64,1145rd: writable_xreg(20),1146rn: xreg(21),1147immshift: ImmShift::maybe_from_u64(42).unwrap(),1148},1149"B4AAD593",1150"extr x20, x21, #42",1151));1152insns.push((1153Inst::AluRRImmShift {1154alu_op: ALUOp::Lsr,1155size: OperandSize::Size32,1156rd: writable_xreg(10),1157rn: xreg(11),1158immshift: ImmShift::maybe_from_u64(13).unwrap(),1159},1160"6A7D0D53",1161"lsr w10, w11, #13",1162));1163insns.push((1164Inst::AluRRImmShift {1165alu_op: ALUOp::Lsr,1166size: OperandSize::Size64,1167rd: writable_xreg(10),1168rn: xreg(11),1169immshift: ImmShift::maybe_from_u64(57).unwrap(),1170},1171"6AFD79D3",1172"lsr x10, x11, #57",1173));1174insns.push((1175Inst::AluRRImmShift {1176alu_op: ALUOp::Asr,1177size: OperandSize::Size32,1178rd: writable_xreg(4),1179rn: xreg(5),1180immshift: ImmShift::maybe_from_u64(7).unwrap(),1181},1182"A47C0713",1183"asr w4, w5, #7",1184));1185insns.push((1186Inst::AluRRImmShift {1187alu_op: ALUOp::Asr,1188size: OperandSize::Size64,1189rd: writable_xreg(4),1190rn: xreg(5),1191immshift: ImmShift::maybe_from_u64(35).unwrap(),1192},1193"A4FC6393",1194"asr x4, x5, #35",1195));1196insns.push((1197Inst::AluRRImmShift {1198alu_op: ALUOp::Lsl,1199size: OperandSize::Size32,1200rd: writable_xreg(8),1201rn: xreg(9),1202immshift: ImmShift::maybe_from_u64(24).unwrap(),1203},1204"281D0853",1205"lsl w8, w9, #24",1206));1207insns.push((1208Inst::AluRRImmShift {1209alu_op: ALUOp::Lsl,1210size: OperandSize::Size64,1211rd: writable_xreg(8),1212rn: xreg(9),1213immshift: ImmShift::maybe_from_u64(63).unwrap(),1214},1215"280141D3",1216"lsl x8, x9, #63",1217));1218insns.push((1219Inst::AluRRImmShift {1220alu_op: ALUOp::Lsl,1221size: OperandSize::Size32,1222rd: writable_xreg(10),1223rn: xreg(11),1224immshift: ImmShift::maybe_from_u64(0).unwrap(),1225},1226"6A7D0053",1227"lsl w10, w11, #0",1228));1229insns.push((1230Inst::AluRRImmShift {1231alu_op: ALUOp::Lsl,1232size: OperandSize::Size64,1233rd: writable_xreg(10),1234rn: xreg(11),1235immshift: ImmShift::maybe_from_u64(0).unwrap(),1236},1237"6AFD40D3",1238"lsl x10, x11, #0",1239));12401241insns.push((1242Inst::AluRRImmLogic {1243alu_op: ALUOp::And,1244size: OperandSize::Size32,1245rd: writable_xreg(21),1246rn: xreg(27),1247imml: ImmLogic::maybe_from_u64(0x80003fff, I32).unwrap(),1248},1249"753B0112",1250"and w21, w27, #2147500031",1251));1252insns.push((1253Inst::AluRRImmLogic {1254alu_op: ALUOp::And,1255size: OperandSize::Size64,1256rd: writable_xreg(7),1257rn: xreg(6),1258imml: ImmLogic::maybe_from_u64(0x3fff80003fff800, I64).unwrap(),1259},1260"C7381592",1261"and x7, x6, #288221580125796352",1262));1263insns.push((1264Inst::AluRRImmLogic {1265alu_op: ALUOp::AndS,1266size: OperandSize::Size32,1267rd: writable_xreg(21),1268rn: xreg(27),1269imml: ImmLogic::maybe_from_u64(0x80003fff, I32).unwrap(),1270},1271"753B0172",1272"ands w21, w27, #2147500031",1273));1274insns.push((1275Inst::AluRRImmLogic {1276alu_op: ALUOp::AndS,1277size: OperandSize::Size64,1278rd: writable_xreg(7),1279rn: xreg(6),1280imml: ImmLogic::maybe_from_u64(0x3fff80003fff800, I64).unwrap(),1281},1282"C73815F2",1283"ands x7, x6, #288221580125796352",1284));1285insns.push((1286Inst::AluRRImmLogic {1287alu_op: ALUOp::Orr,1288size: OperandSize::Size32,1289rd: writable_xreg(1),1290rn: xreg(5),1291imml: ImmLogic::maybe_from_u64(0x100000, I32).unwrap(),1292},1293"A1000C32",1294"orr w1, w5, #1048576",1295));1296insns.push((1297Inst::AluRRImmLogic {1298alu_op: ALUOp::Orr,1299size: OperandSize::Size64,1300rd: writable_xreg(4),1301rn: xreg(5),1302imml: ImmLogic::maybe_from_u64(0x8181818181818181, I64).unwrap(),1303},1304"A4C401B2",1305"orr x4, x5, #9331882296111890817",1306));1307insns.push((1308Inst::AluRRImmLogic {1309alu_op: ALUOp::Eor,1310size: OperandSize::Size32,1311rd: writable_xreg(1),1312rn: xreg(5),1313imml: ImmLogic::maybe_from_u64(0x00007fff, I32).unwrap(),1314},1315"A1380052",1316"eor w1, w5, #32767",1317));1318insns.push((1319Inst::AluRRImmLogic {1320alu_op: ALUOp::Eor,1321size: OperandSize::Size64,1322rd: writable_xreg(10),1323rn: xreg(8),1324imml: ImmLogic::maybe_from_u64(0x8181818181818181, I64).unwrap(),1325},1326"0AC501D2",1327"eor x10, x8, #9331882296111890817",1328));13291330insns.push((1331Inst::BitRR {1332op: BitOp::RBit,1333size: OperandSize::Size32,1334rd: writable_xreg(1),1335rn: xreg(10),1336},1337"4101C05A",1338"rbit w1, w10",1339));13401341insns.push((1342Inst::BitRR {1343op: BitOp::RBit,1344size: OperandSize::Size64,1345rd: writable_xreg(1),1346rn: xreg(10),1347},1348"4101C0DA",1349"rbit x1, x10",1350));13511352insns.push((1353Inst::BitRR {1354op: BitOp::Clz,1355size: OperandSize::Size32,1356rd: writable_xreg(15),1357rn: xreg(3),1358},1359"6F10C05A",1360"clz w15, w3",1361));13621363insns.push((1364Inst::BitRR {1365op: BitOp::Clz,1366size: OperandSize::Size64,1367rd: writable_xreg(15),1368rn: xreg(3),1369},1370"6F10C0DA",1371"clz x15, x3",1372));13731374insns.push((1375Inst::BitRR {1376op: BitOp::Cls,1377size: OperandSize::Size32,1378rd: writable_xreg(21),1379rn: xreg(16),1380},1381"1516C05A",1382"cls w21, w16",1383));13841385insns.push((1386Inst::BitRR {1387op: BitOp::Cls,1388size: OperandSize::Size64,1389rd: writable_xreg(21),1390rn: xreg(16),1391},1392"1516C0DA",1393"cls x21, x16",1394));13951396insns.push((1397Inst::BitRR {1398op: BitOp::Rev16,1399size: OperandSize::Size64,1400rd: writable_xreg(2),1401rn: xreg(11),1402},1403"6205C0DA",1404"rev16 x2, x11",1405));14061407insns.push((1408Inst::BitRR {1409op: BitOp::Rev16,1410size: OperandSize::Size32,1411rd: writable_xreg(3),1412rn: xreg(21),1413},1414"A306C05A",1415"rev16 w3, w21",1416));14171418insns.push((1419Inst::BitRR {1420op: BitOp::Rev32,1421size: OperandSize::Size64,1422rd: writable_xreg(2),1423rn: xreg(11),1424},1425"6209C0DA",1426"rev32 x2, x11",1427));14281429insns.push((1430Inst::BitRR {1431op: BitOp::Rev32,1432size: OperandSize::Size32,1433rd: writable_xreg(3),1434rn: xreg(21),1435},1436"A30AC05A",1437"rev32 w3, w21",1438));14391440insns.push((1441Inst::BitRR {1442op: BitOp::Rev64,1443size: OperandSize::Size64,1444rd: writable_xreg(1),1445rn: xreg(10),1446},1447"410DC0DA",1448"rev64 x1, x10",1449));14501451insns.push((1452Inst::ULoad8 {1453rd: writable_xreg(1),1454mem: AMode::Unscaled {1455rn: xreg(2),1456simm9: simm9_zero(),1457},1458flags: MemFlags::trusted(),1459},1460"41004038",1461"ldurb w1, [x2]",1462));1463insns.push((1464Inst::ULoad8 {1465rd: writable_xreg(1),1466mem: AMode::UnsignedOffset {1467rn: xreg(2),1468uimm12: UImm12Scaled::zero(I8),1469},1470flags: MemFlags::trusted(),1471},1472"41004039",1473"ldrb w1, [x2]",1474));1475insns.push((1476Inst::ULoad8 {1477rd: writable_xreg(1),1478mem: AMode::RegReg {1479rn: xreg(2),1480rm: xreg(5),1481},1482flags: MemFlags::trusted(),1483},1484"41686538",1485"ldrb w1, [x2, x5]",1486));1487insns.push((1488Inst::SLoad8 {1489rd: writable_xreg(1),1490mem: AMode::Unscaled {1491rn: xreg(2),1492simm9: simm9_zero(),1493},1494flags: MemFlags::trusted(),1495},1496"41008038",1497"ldursb x1, [x2]",1498));1499insns.push((1500Inst::SLoad8 {1501rd: writable_xreg(1),1502mem: AMode::UnsignedOffset {1503rn: xreg(2),1504uimm12: UImm12Scaled::maybe_from_i64(63, I8).unwrap(),1505},1506flags: MemFlags::trusted(),1507},1508"41FC8039",1509"ldrsb x1, [x2, #63]",1510));1511insns.push((1512Inst::SLoad8 {1513rd: writable_xreg(1),1514mem: AMode::RegReg {1515rn: xreg(2),1516rm: xreg(5),1517},1518flags: MemFlags::trusted(),1519},1520"4168A538",1521"ldrsb x1, [x2, x5]",1522));1523insns.push((1524Inst::ULoad16 {1525rd: writable_xreg(1),1526mem: AMode::Unscaled {1527rn: xreg(2),1528simm9: SImm9::maybe_from_i64(5).unwrap(),1529},1530flags: MemFlags::trusted(),1531},1532"41504078",1533"ldurh w1, [x2, #5]",1534));1535insns.push((1536Inst::ULoad16 {1537rd: writable_xreg(1),1538mem: AMode::UnsignedOffset {1539rn: xreg(2),1540uimm12: UImm12Scaled::maybe_from_i64(8, I16).unwrap(),1541},1542flags: MemFlags::trusted(),1543},1544"41104079",1545"ldrh w1, [x2, #8]",1546));1547insns.push((1548Inst::ULoad16 {1549rd: writable_xreg(1),1550mem: AMode::RegScaled {1551rn: xreg(2),1552rm: xreg(3),1553},1554flags: MemFlags::trusted(),1555},1556"41786378",1557"ldrh w1, [x2, x3, LSL #1]",1558));1559insns.push((1560Inst::SLoad16 {1561rd: writable_xreg(1),1562mem: AMode::Unscaled {1563rn: xreg(2),1564simm9: simm9_zero(),1565},1566flags: MemFlags::trusted(),1567},1568"41008078",1569"ldursh x1, [x2]",1570));1571insns.push((1572Inst::SLoad16 {1573rd: writable_xreg(28),1574mem: AMode::UnsignedOffset {1575rn: xreg(20),1576uimm12: UImm12Scaled::maybe_from_i64(24, I16).unwrap(),1577},1578flags: MemFlags::trusted(),1579},1580"9C328079",1581"ldrsh x28, [x20, #24]",1582));1583insns.push((1584Inst::SLoad16 {1585rd: writable_xreg(28),1586mem: AMode::RegScaled {1587rn: xreg(20),1588rm: xreg(20),1589},1590flags: MemFlags::trusted(),1591},1592"9C7AB478",1593"ldrsh x28, [x20, x20, LSL #1]",1594));1595insns.push((1596Inst::ULoad32 {1597rd: writable_xreg(1),1598mem: AMode::Unscaled {1599rn: xreg(2),1600simm9: simm9_zero(),1601},1602flags: MemFlags::trusted(),1603},1604"410040B8",1605"ldur w1, [x2]",1606));1607insns.push((1608Inst::ULoad32 {1609rd: writable_xreg(12),1610mem: AMode::UnsignedOffset {1611rn: xreg(0),1612uimm12: UImm12Scaled::maybe_from_i64(204, I32).unwrap(),1613},1614flags: MemFlags::trusted(),1615},1616"0CCC40B9",1617"ldr w12, [x0, #204]",1618));1619insns.push((1620Inst::ULoad32 {1621rd: writable_xreg(1),1622mem: AMode::RegScaled {1623rn: xreg(2),1624rm: xreg(12),1625},1626flags: MemFlags::trusted(),1627},1628"41786CB8",1629"ldr w1, [x2, x12, LSL #2]",1630));1631insns.push((1632Inst::SLoad32 {1633rd: writable_xreg(1),1634mem: AMode::Unscaled {1635rn: xreg(2),1636simm9: simm9_zero(),1637},1638flags: MemFlags::trusted(),1639},1640"410080B8",1641"ldursw x1, [x2]",1642));1643insns.push((1644Inst::SLoad32 {1645rd: writable_xreg(12),1646mem: AMode::UnsignedOffset {1647rn: xreg(1),1648uimm12: UImm12Scaled::maybe_from_i64(16380, I32).unwrap(),1649},1650flags: MemFlags::trusted(),1651},1652"2CFCBFB9",1653"ldrsw x12, [x1, #16380]",1654));1655insns.push((1656Inst::SLoad32 {1657rd: writable_xreg(1),1658mem: AMode::RegScaled {1659rn: xreg(5),1660rm: xreg(1),1661},1662flags: MemFlags::trusted(),1663},1664"A178A1B8",1665"ldrsw x1, [x5, x1, LSL #2]",1666));1667insns.push((1668Inst::ULoad64 {1669rd: writable_xreg(1),1670mem: AMode::Unscaled {1671rn: xreg(2),1672simm9: simm9_zero(),1673},1674flags: MemFlags::trusted(),1675},1676"410040F8",1677"ldur x1, [x2]",1678));1679insns.push((1680Inst::ULoad64 {1681rd: writable_xreg(1),1682mem: AMode::Unscaled {1683rn: xreg(2),1684simm9: SImm9::maybe_from_i64(-256).unwrap(),1685},1686flags: MemFlags::trusted(),1687},1688"410050F8",1689"ldur x1, [x2, #-256]",1690));1691insns.push((1692Inst::ULoad64 {1693rd: writable_xreg(1),1694mem: AMode::Unscaled {1695rn: xreg(2),1696simm9: SImm9::maybe_from_i64(255).unwrap(),1697},1698flags: MemFlags::trusted(),1699},1700"41F04FF8",1701"ldur x1, [x2, #255]",1702));1703insns.push((1704Inst::ULoad64 {1705rd: writable_xreg(1),1706mem: AMode::UnsignedOffset {1707rn: xreg(2),1708uimm12: UImm12Scaled::maybe_from_i64(32760, I64).unwrap(),1709},1710flags: MemFlags::trusted(),1711},1712"41FC7FF9",1713"ldr x1, [x2, #32760]",1714));1715insns.push((1716Inst::ULoad64 {1717rd: writable_xreg(1),1718mem: AMode::RegReg {1719rn: xreg(2),1720rm: xreg(3),1721},1722flags: MemFlags::trusted(),1723},1724"416863F8",1725"ldr x1, [x2, x3]",1726));1727insns.push((1728Inst::ULoad64 {1729rd: writable_xreg(1),1730mem: AMode::RegScaled {1731rn: xreg(2),1732rm: xreg(3),1733},1734flags: MemFlags::trusted(),1735},1736"417863F8",1737"ldr x1, [x2, x3, LSL #3]",1738));1739insns.push((1740Inst::ULoad64 {1741rd: writable_xreg(1),1742mem: AMode::RegScaledExtended {1743rn: xreg(2),1744rm: xreg(3),1745extendop: ExtendOp::SXTW,1746},1747flags: MemFlags::trusted(),1748},1749"41D863F8",1750"ldr x1, [x2, w3, SXTW #3]",1751));1752insns.push((1753Inst::ULoad64 {1754rd: writable_xreg(1),1755mem: AMode::RegExtended {1756rn: xreg(2),1757rm: xreg(3),1758extendop: ExtendOp::SXTW,1759},1760flags: MemFlags::trusted(),1761},1762"41C863F8",1763"ldr x1, [x2, w3, SXTW]",1764));1765insns.push((1766Inst::ULoad64 {1767rd: writable_xreg(1),1768mem: AMode::Label {1769label: MemLabel::PCRel(64),1770},1771flags: MemFlags::trusted(),1772},1773"01020058",1774"ldr x1, pc+64",1775));1776insns.push((1777Inst::ULoad64 {1778rd: writable_xreg(1),1779mem: AMode::SPPreIndexed {1780simm9: SImm9::maybe_from_i64(16).unwrap(),1781},1782flags: MemFlags::trusted(),1783},1784"E10F41F8",1785"ldr x1, [sp, #16]!",1786));1787insns.push((1788Inst::ULoad64 {1789rd: writable_xreg(1),1790mem: AMode::SPPostIndexed {1791simm9: SImm9::maybe_from_i64(16).unwrap(),1792},1793flags: MemFlags::trusted(),1794},1795"E10741F8",1796"ldr x1, [sp], #16",1797));1798insns.push((1799Inst::ULoad64 {1800rd: writable_xreg(1),1801mem: AMode::FPOffset { off: 32768 },1802flags: MemFlags::trusted(),1803},1804"100090D2A1EB70F8",1805"movz x16, #32768 ; ldr x1, [fp, x16, SXTX]",1806));1807insns.push((1808Inst::ULoad64 {1809rd: writable_xreg(1),1810mem: AMode::FPOffset { off: -32768 },1811flags: MemFlags::trusted(),1812},1813"F0FF8F92A1EB70F8",1814"movn x16, #32767 ; ldr x1, [fp, x16, SXTX]",1815));1816insns.push((1817Inst::ULoad64 {1818rd: writable_xreg(1),1819mem: AMode::FPOffset { off: 1048576 }, // 2^201820flags: MemFlags::trusted(),1821},1822"1002A0D2A1EB70F8",1823"movz x16, #16, LSL #16 ; ldr x1, [fp, x16, SXTX]",1824));1825insns.push((1826Inst::ULoad64 {1827rd: writable_xreg(1),1828mem: AMode::FPOffset { off: 1048576 + 1 }, // 2^20 + 11829flags: MemFlags::trusted(),1830},1831"300080521002A072A1EB70F8",1832"movz w16, #1 ; movk w16, w16, #16, LSL #16 ; ldr x1, [fp, x16, SXTX]",1833));18341835insns.push((1836Inst::ULoad64 {1837rd: writable_xreg(1),1838mem: AMode::RegOffset {1839rn: xreg(7),1840off: 8,1841},1842flags: MemFlags::trusted(),1843},1844"E18040F8",1845"ldr x1, [x7, #8]",1846));18471848insns.push((1849Inst::ULoad64 {1850rd: writable_xreg(1),1851mem: AMode::RegOffset {1852rn: xreg(7),1853off: 1024,1854},1855flags: MemFlags::trusted(),1856},1857"E10042F9",1858"ldr x1, [x7, #1024]",1859));18601861insns.push((1862Inst::ULoad64 {1863rd: writable_xreg(1),1864mem: AMode::RegOffset {1865rn: xreg(7),1866off: 1048576,1867},1868flags: MemFlags::trusted(),1869},1870"1002A0D2E1E870F8",1871"movz x16, #16, LSL #16 ; ldr x1, [x7, x16, SXTX]",1872));18731874insns.push((1875Inst::Store8 {1876rd: xreg(1),1877mem: AMode::Unscaled {1878rn: xreg(2),1879simm9: simm9_zero(),1880},1881flags: MemFlags::trusted(),1882},1883"41000038",1884"sturb w1, [x2]",1885));1886insns.push((1887Inst::Store8 {1888rd: xreg(1),1889mem: AMode::UnsignedOffset {1890rn: xreg(2),1891uimm12: UImm12Scaled::maybe_from_i64(4095, I8).unwrap(),1892},1893flags: MemFlags::trusted(),1894},1895"41FC3F39",1896"strb w1, [x2, #4095]",1897));1898insns.push((1899Inst::Store16 {1900rd: xreg(1),1901mem: AMode::Unscaled {1902rn: xreg(2),1903simm9: simm9_zero(),1904},1905flags: MemFlags::trusted(),1906},1907"41000078",1908"sturh w1, [x2]",1909));1910insns.push((1911Inst::Store16 {1912rd: xreg(1),1913mem: AMode::UnsignedOffset {1914rn: xreg(2),1915uimm12: UImm12Scaled::maybe_from_i64(8190, I16).unwrap(),1916},1917flags: MemFlags::trusted(),1918},1919"41FC3F79",1920"strh w1, [x2, #8190]",1921));1922insns.push((1923Inst::Store32 {1924rd: xreg(1),1925mem: AMode::Unscaled {1926rn: xreg(2),1927simm9: simm9_zero(),1928},1929flags: MemFlags::trusted(),1930},1931"410000B8",1932"stur w1, [x2]",1933));1934insns.push((1935Inst::Store32 {1936rd: xreg(1),1937mem: AMode::UnsignedOffset {1938rn: xreg(2),1939uimm12: UImm12Scaled::maybe_from_i64(16380, I32).unwrap(),1940},1941flags: MemFlags::trusted(),1942},1943"41FC3FB9",1944"str w1, [x2, #16380]",1945));1946insns.push((1947Inst::Store64 {1948rd: xreg(1),1949mem: AMode::Unscaled {1950rn: xreg(2),1951simm9: simm9_zero(),1952},1953flags: MemFlags::trusted(),1954},1955"410000F8",1956"stur x1, [x2]",1957));1958insns.push((1959Inst::Store64 {1960rd: xreg(1),1961mem: AMode::UnsignedOffset {1962rn: xreg(2),1963uimm12: UImm12Scaled::maybe_from_i64(32760, I64).unwrap(),1964},1965flags: MemFlags::trusted(),1966},1967"41FC3FF9",1968"str x1, [x2, #32760]",1969));1970insns.push((1971Inst::Store64 {1972rd: xreg(1),1973mem: AMode::RegReg {1974rn: xreg(2),1975rm: xreg(3),1976},1977flags: MemFlags::trusted(),1978},1979"416823F8",1980"str x1, [x2, x3]",1981));1982insns.push((1983Inst::Store64 {1984rd: xreg(1),1985mem: AMode::RegScaled {1986rn: xreg(2),1987rm: xreg(3),1988},1989flags: MemFlags::trusted(),1990},1991"417823F8",1992"str x1, [x2, x3, LSL #3]",1993));1994insns.push((1995Inst::Store64 {1996rd: xreg(1),1997mem: AMode::RegScaledExtended {1998rn: xreg(2),1999rm: xreg(3),2000extendop: ExtendOp::UXTW,2001},2002flags: MemFlags::trusted(),2003},2004"415823F8",2005"str x1, [x2, w3, UXTW #3]",2006));2007insns.push((2008Inst::Store64 {2009rd: xreg(1),2010mem: AMode::RegExtended {2011rn: xreg(2),2012rm: xreg(3),2013extendop: ExtendOp::UXTW,2014},2015flags: MemFlags::trusted(),2016},2017"414823F8",2018"str x1, [x2, w3, UXTW]",2019));2020insns.push((2021Inst::Store64 {2022rd: xreg(1),2023mem: AMode::SPPreIndexed {2024simm9: SImm9::maybe_from_i64(16).unwrap(),2025},2026flags: MemFlags::trusted(),2027},2028"E10F01F8",2029"str x1, [sp, #16]!",2030));2031insns.push((2032Inst::Store64 {2033rd: xreg(1),2034mem: AMode::SPPostIndexed {2035simm9: SImm9::maybe_from_i64(16).unwrap(),2036},2037flags: MemFlags::trusted(),2038},2039"E10701F8",2040"str x1, [sp], #16",2041));20422043insns.push((2044Inst::StoreP64 {2045rt: xreg(8),2046rt2: xreg(9),2047mem: PairAMode::SignedOffset {2048reg: xreg(10),2049simm7: simm7_scaled_zero(I64),2050},2051flags: MemFlags::trusted(),2052},2053"482500A9",2054"stp x8, x9, [x10]",2055));2056insns.push((2057Inst::StoreP64 {2058rt: xreg(8),2059rt2: xreg(9),2060mem: PairAMode::SignedOffset {2061reg: xreg(10),2062simm7: SImm7Scaled::maybe_from_i64(504, I64).unwrap(),2063},2064flags: MemFlags::trusted(),2065},2066"48A51FA9",2067"stp x8, x9, [x10, #504]",2068));2069insns.push((2070Inst::StoreP64 {2071rt: xreg(8),2072rt2: xreg(9),2073mem: PairAMode::SignedOffset {2074reg: xreg(10),2075simm7: SImm7Scaled::maybe_from_i64(-64, I64).unwrap(),2076},2077flags: MemFlags::trusted(),2078},2079"48253CA9",2080"stp x8, x9, [x10, #-64]",2081));2082insns.push((2083Inst::StoreP64 {2084rt: xreg(21),2085rt2: xreg(28),2086mem: PairAMode::SignedOffset {2087reg: xreg(1),2088simm7: SImm7Scaled::maybe_from_i64(-512, I64).unwrap(),2089},2090flags: MemFlags::trusted(),2091},2092"357020A9",2093"stp x21, x28, [x1, #-512]",2094));2095insns.push((2096Inst::StoreP64 {2097rt: xreg(8),2098rt2: xreg(9),2099mem: PairAMode::SPPreIndexed {2100simm7: SImm7Scaled::maybe_from_i64(-64, I64).unwrap(),2101},2102flags: MemFlags::trusted(),2103},2104"E827BCA9",2105"stp x8, x9, [sp, #-64]!",2106));2107insns.push((2108Inst::StoreP64 {2109rt: xreg(15),2110rt2: xreg(16),2111mem: PairAMode::SPPostIndexed {2112simm7: SImm7Scaled::maybe_from_i64(504, I64).unwrap(),2113},2114flags: MemFlags::trusted(),2115},2116"EFC39FA8",2117"stp x15, x16, [sp], #504",2118));21192120insns.push((2121Inst::LoadP64 {2122rt: writable_xreg(8),2123rt2: writable_xreg(9),2124mem: PairAMode::SignedOffset {2125reg: xreg(10),2126simm7: simm7_scaled_zero(I64),2127},2128flags: MemFlags::trusted(),2129},2130"482540A9",2131"ldp x8, x9, [x10]",2132));2133insns.push((2134Inst::LoadP64 {2135rt: writable_xreg(8),2136rt2: writable_xreg(9),2137mem: PairAMode::SignedOffset {2138reg: xreg(10),2139simm7: SImm7Scaled::maybe_from_i64(504, I64).unwrap(),2140},2141flags: MemFlags::trusted(),2142},2143"48A55FA9",2144"ldp x8, x9, [x10, #504]",2145));2146insns.push((2147Inst::LoadP64 {2148rt: writable_xreg(8),2149rt2: writable_xreg(9),2150mem: PairAMode::SignedOffset {2151reg: xreg(10),2152simm7: SImm7Scaled::maybe_from_i64(-64, I64).unwrap(),2153},2154flags: MemFlags::trusted(),2155},2156"48257CA9",2157"ldp x8, x9, [x10, #-64]",2158));2159insns.push((2160Inst::LoadP64 {2161rt: writable_xreg(8),2162rt2: writable_xreg(9),2163mem: PairAMode::SignedOffset {2164reg: xreg(10),2165simm7: SImm7Scaled::maybe_from_i64(-512, I64).unwrap(),2166},2167flags: MemFlags::trusted(),2168},2169"482560A9",2170"ldp x8, x9, [x10, #-512]",2171));2172insns.push((2173Inst::LoadP64 {2174rt: writable_xreg(8),2175rt2: writable_xreg(9),2176mem: PairAMode::SPPreIndexed {2177simm7: SImm7Scaled::maybe_from_i64(-64, I64).unwrap(),2178},2179flags: MemFlags::trusted(),2180},2181"E827FCA9",2182"ldp x8, x9, [sp, #-64]!",2183));2184insns.push((2185Inst::LoadP64 {2186rt: writable_xreg(8),2187rt2: writable_xreg(25),2188mem: PairAMode::SPPostIndexed {2189simm7: SImm7Scaled::maybe_from_i64(504, I64).unwrap(),2190},2191flags: MemFlags::trusted(),2192},2193"E8E7DFA8",2194"ldp x8, x25, [sp], #504",2195));21962197insns.push((2198Inst::Mov {2199size: OperandSize::Size64,2200rd: writable_xreg(8),2201rm: xreg(9),2202},2203"E80309AA",2204"mov x8, x9",2205));2206insns.push((2207Inst::Mov {2208size: OperandSize::Size32,2209rd: writable_xreg(8),2210rm: xreg(9),2211},2212"E803092A",2213"mov w8, w9",2214));22152216insns.push((2217Inst::MovWide {2218op: MoveWideOp::MovZ,2219rd: writable_xreg(8),2220imm: MoveWideConst::maybe_from_u64(0x0000_0000_0000_ffff).unwrap(),2221size: OperandSize::Size64,2222},2223"E8FF9FD2",2224"movz x8, #65535",2225));2226insns.push((2227Inst::MovWide {2228op: MoveWideOp::MovZ,2229rd: writable_xreg(8),2230imm: MoveWideConst::maybe_from_u64(0x0000_0000_ffff_0000).unwrap(),2231size: OperandSize::Size64,2232},2233"E8FFBFD2",2234"movz x8, #65535, LSL #16",2235));2236insns.push((2237Inst::MovWide {2238op: MoveWideOp::MovZ,2239rd: writable_xreg(8),2240imm: MoveWideConst::maybe_from_u64(0x0000_ffff_0000_0000).unwrap(),2241size: OperandSize::Size64,2242},2243"E8FFDFD2",2244"movz x8, #65535, LSL #32",2245));2246insns.push((2247Inst::MovWide {2248op: MoveWideOp::MovZ,2249rd: writable_xreg(8),2250imm: MoveWideConst::maybe_from_u64(0xffff_0000_0000_0000).unwrap(),2251size: OperandSize::Size64,2252},2253"E8FFFFD2",2254"movz x8, #65535, LSL #48",2255));2256insns.push((2257Inst::MovWide {2258op: MoveWideOp::MovZ,2259rd: writable_xreg(8),2260imm: MoveWideConst::maybe_from_u64(0x0000_0000_ffff_0000).unwrap(),2261size: OperandSize::Size32,2262},2263"E8FFBF52",2264"movz w8, #65535, LSL #16",2265));22662267insns.push((2268Inst::MovWide {2269op: MoveWideOp::MovN,2270rd: writable_xreg(8),2271imm: MoveWideConst::maybe_from_u64(0x0000_0000_0000_ffff).unwrap(),2272size: OperandSize::Size64,2273},2274"E8FF9F92",2275"movn x8, #65535",2276));2277insns.push((2278Inst::MovWide {2279op: MoveWideOp::MovN,2280rd: writable_xreg(8),2281imm: MoveWideConst::maybe_from_u64(0x0000_0000_ffff_0000).unwrap(),2282size: OperandSize::Size64,2283},2284"E8FFBF92",2285"movn x8, #65535, LSL #16",2286));2287insns.push((2288Inst::MovWide {2289op: MoveWideOp::MovN,2290rd: writable_xreg(8),2291imm: MoveWideConst::maybe_from_u64(0x0000_ffff_0000_0000).unwrap(),2292size: OperandSize::Size64,2293},2294"E8FFDF92",2295"movn x8, #65535, LSL #32",2296));2297insns.push((2298Inst::MovWide {2299op: MoveWideOp::MovN,2300rd: writable_xreg(8),2301imm: MoveWideConst::maybe_from_u64(0xffff_0000_0000_0000).unwrap(),2302size: OperandSize::Size64,2303},2304"E8FFFF92",2305"movn x8, #65535, LSL #48",2306));2307insns.push((2308Inst::MovWide {2309op: MoveWideOp::MovN,2310rd: writable_xreg(8),2311imm: MoveWideConst::maybe_from_u64(0x0000_0000_0000_ffff).unwrap(),2312size: OperandSize::Size32,2313},2314"E8FF9F12",2315"movn w8, #65535",2316));23172318insns.push((2319Inst::MovK {2320rd: writable_xreg(12),2321rn: xreg(12),2322imm: MoveWideConst::maybe_from_u64(0x0000_0000_0000_0000).unwrap(),2323size: OperandSize::Size64,2324},2325"0C0080F2",2326"movk x12, x12, #0",2327));2328insns.push((2329Inst::MovK {2330rd: writable_xreg(19),2331rn: xreg(19),2332imm: MoveWideConst::maybe_with_shift(0x0000, 16).unwrap(),2333size: OperandSize::Size64,2334},2335"1300A0F2",2336"movk x19, x19, #0, LSL #16",2337));2338insns.push((2339Inst::MovK {2340rd: writable_xreg(3),2341rn: xreg(3),2342imm: MoveWideConst::maybe_from_u64(0x0000_0000_0000_ffff).unwrap(),2343size: OperandSize::Size64,2344},2345"E3FF9FF2",2346"movk x3, x3, #65535",2347));2348insns.push((2349Inst::MovK {2350rd: writable_xreg(8),2351rn: xreg(8),2352imm: MoveWideConst::maybe_from_u64(0x0000_0000_ffff_0000).unwrap(),2353size: OperandSize::Size64,2354},2355"E8FFBFF2",2356"movk x8, x8, #65535, LSL #16",2357));2358insns.push((2359Inst::MovK {2360rd: writable_xreg(8),2361rn: xreg(8),2362imm: MoveWideConst::maybe_from_u64(0x0000_ffff_0000_0000).unwrap(),2363size: OperandSize::Size64,2364},2365"E8FFDFF2",2366"movk x8, x8, #65535, LSL #32",2367));2368insns.push((2369Inst::MovK {2370rd: writable_xreg(8),2371rn: xreg(8),2372imm: MoveWideConst::maybe_from_u64(0xffff_0000_0000_0000).unwrap(),2373size: OperandSize::Size64,2374},2375"E8FFFFF2",2376"movk x8, x8, #65535, LSL #48",2377));23782379insns.push((2380Inst::CSel {2381rd: writable_xreg(10),2382rn: xreg(12),2383rm: xreg(14),2384cond: Cond::Hs,2385},2386"8A218E9A",2387"csel x10, x12, x14, hs",2388));2389insns.push((2390Inst::CSNeg {2391rd: writable_xreg(10),2392rn: xreg(12),2393rm: xreg(14),2394cond: Cond::Hs,2395},2396"8A258EDA",2397"csneg x10, x12, x14, hs",2398));2399insns.push((2400Inst::CSet {2401rd: writable_xreg(15),2402cond: Cond::Ge,2403},2404"EFB79F9A",2405"cset x15, ge",2406));2407insns.push((2408Inst::CSetm {2409rd: writable_xreg(0),2410cond: Cond::Eq,2411},2412"E0139FDA",2413"csetm x0, eq",2414));2415insns.push((2416Inst::CSetm {2417rd: writable_xreg(16),2418cond: Cond::Vs,2419},2420"F0739FDA",2421"csetm x16, vs",2422));2423insns.push((2424Inst::CCmp {2425size: OperandSize::Size64,2426rn: xreg(22),2427rm: xreg(1),2428nzcv: NZCV::new(false, false, true, true),2429cond: Cond::Eq,2430},2431"C30241FA",2432"ccmp x22, x1, #nzCV, eq",2433));2434insns.push((2435Inst::CCmp {2436size: OperandSize::Size32,2437rn: xreg(3),2438rm: xreg(28),2439nzcv: NZCV::new(true, true, true, true),2440cond: Cond::Gt,2441},2442"6FC05C7A",2443"ccmp w3, w28, #NZCV, gt",2444));2445insns.push((2446Inst::CCmpImm {2447size: OperandSize::Size64,2448rn: xreg(22),2449imm: UImm5::maybe_from_u8(5).unwrap(),2450nzcv: NZCV::new(false, false, true, true),2451cond: Cond::Eq,2452},2453"C30A45FA",2454"ccmp x22, #5, #nzCV, eq",2455));2456insns.push((2457Inst::CCmpImm {2458size: OperandSize::Size32,2459rn: xreg(3),2460imm: UImm5::maybe_from_u8(30).unwrap(),2461nzcv: NZCV::new(true, true, true, true),2462cond: Cond::Gt,2463},2464"6FC85E7A",2465"ccmp w3, #30, #NZCV, gt",2466));2467insns.push((2468Inst::MovToFpu {2469rd: writable_vreg(31),2470rn: xreg(0),2471size: ScalarSize::Size64,2472},2473"1F00679E",2474"fmov d31, x0",2475));2476insns.push((2477Inst::MovToFpu {2478rd: writable_vreg(1),2479rn: xreg(28),2480size: ScalarSize::Size32,2481},2482"8103271E",2483"fmov s1, w28",2484));2485insns.push((2486Inst::FpuMoveFPImm {2487rd: writable_vreg(31),2488imm: ASIMDFPModImm::maybe_from_u64(f64::to_bits(1.0), ScalarSize::Size64).unwrap(),2489size: ScalarSize::Size64,2490},2491"1F106E1E",2492"fmov d31, #1",2493));2494insns.push((2495Inst::FpuMoveFPImm {2496rd: writable_vreg(1),2497imm: ASIMDFPModImm::maybe_from_u64(f32::to_bits(31.0).into(), ScalarSize::Size32)2498.unwrap(),2499size: ScalarSize::Size32,2500},2501"01F0271E",2502"fmov s1, #31",2503));2504insns.push((2505Inst::MovToVec {2506rd: writable_vreg(0),2507ri: vreg(0),2508rn: xreg(0),2509idx: 7,2510size: VectorSize::Size8x8,2511},2512"001C0F4E",2513"mov v0.b[7], v0.b[7], w0",2514));2515insns.push((2516Inst::MovToVec {2517rd: writable_vreg(20),2518ri: vreg(20),2519rn: xreg(21),2520idx: 0,2521size: VectorSize::Size64x2,2522},2523"B41E084E",2524"mov v20.d[0], v20.d[0], x21",2525));2526insns.push((2527Inst::MovFromVec {2528rd: writable_xreg(3),2529rn: vreg(27),2530idx: 14,2531size: ScalarSize::Size8,2532},2533"633F1D0E",2534"umov w3, v27.b[14]",2535));2536insns.push((2537Inst::MovFromVec {2538rd: writable_xreg(24),2539rn: vreg(5),2540idx: 3,2541size: ScalarSize::Size16,2542},2543"B83C0E0E",2544"umov w24, v5.h[3]",2545));2546insns.push((2547Inst::MovFromVec {2548rd: writable_xreg(12),2549rn: vreg(17),2550idx: 1,2551size: ScalarSize::Size32,2552},2553"2C3E0C0E",2554"mov w12, v17.s[1]",2555));2556insns.push((2557Inst::MovFromVec {2558rd: writable_xreg(21),2559rn: vreg(20),2560idx: 0,2561size: ScalarSize::Size64,2562},2563"953E084E",2564"mov x21, v20.d[0]",2565));2566insns.push((2567Inst::MovFromVecSigned {2568rd: writable_xreg(0),2569rn: vreg(0),2570idx: 15,2571size: VectorSize::Size8x16,2572scalar_size: OperandSize::Size32,2573},2574"002C1F0E",2575"smov w0, v0.b[15]",2576));2577insns.push((2578Inst::MovFromVecSigned {2579rd: writable_xreg(12),2580rn: vreg(13),2581idx: 7,2582size: VectorSize::Size8x8,2583scalar_size: OperandSize::Size64,2584},2585"AC2D0F4E",2586"smov x12, v13.b[7]",2587));2588insns.push((2589Inst::MovFromVecSigned {2590rd: writable_xreg(23),2591rn: vreg(31),2592idx: 7,2593size: VectorSize::Size16x8,2594scalar_size: OperandSize::Size32,2595},2596"F72F1E0E",2597"smov w23, v31.h[7]",2598));2599insns.push((2600Inst::MovFromVecSigned {2601rd: writable_xreg(24),2602rn: vreg(5),2603idx: 1,2604size: VectorSize::Size32x2,2605scalar_size: OperandSize::Size64,2606},2607"B82C0C4E",2608"smov x24, v5.s[1]",2609));2610insns.push((2611Inst::MovToNZCV { rn: xreg(13) },2612"0D421BD5",2613"msr nzcv, x13",2614));2615insns.push((2616Inst::MovFromNZCV {2617rd: writable_xreg(27),2618},2619"1B423BD5",2620"mrs x27, nzcv",2621));2622insns.push((2623Inst::VecDup {2624rd: writable_vreg(24),2625rn: xreg(8),2626size: VectorSize::Size8x8,2627},2628"180D010E",2629"dup v24.8b, w8",2630));2631insns.push((2632Inst::VecDup {2633rd: writable_vreg(25),2634rn: xreg(7),2635size: VectorSize::Size8x8,2636},2637"F90C010E",2638"dup v25.8b, w7",2639));2640insns.push((2641Inst::VecDup {2642rd: writable_vreg(1),2643rn: xreg(22),2644size: VectorSize::Size16x4,2645},2646"C10E020E",2647"dup v1.4h, w22",2648));2649insns.push((2650Inst::VecDup {2651rd: writable_vreg(2),2652rn: xreg(23),2653size: VectorSize::Size16x8,2654},2655"E20E024E",2656"dup v2.8h, w23",2657));2658insns.push((2659Inst::VecDup {2660rd: writable_vreg(30),2661rn: xreg(28),2662size: VectorSize::Size32x2,2663},2664"9E0F040E",2665"dup v30.2s, w28",2666));2667insns.push((2668Inst::VecDup {2669rd: writable_vreg(0),2670rn: xreg(28),2671size: VectorSize::Size32x2,2672},2673"800F040E",2674"dup v0.2s, w28",2675));2676insns.push((2677Inst::VecDup {2678rd: writable_vreg(31),2679rn: xreg(5),2680size: VectorSize::Size64x2,2681},2682"BF0C084E",2683"dup v31.2d, x5",2684));2685insns.push((2686Inst::VecDupFromFpu {2687rd: writable_vreg(14),2688rn: vreg(19),2689size: VectorSize::Size32x4,2690lane: 0,2691},2692"6E06044E",2693"dup v14.4s, v19.s[0]",2694));2695insns.push((2696Inst::VecDupFromFpu {2697rd: writable_vreg(18),2698rn: vreg(10),2699size: VectorSize::Size64x2,2700lane: 0,2701},2702"5205084E",2703"dup v18.2d, v10.d[0]",2704));2705insns.push((2706Inst::VecDupFPImm {2707rd: writable_vreg(31),2708imm: ASIMDFPModImm::maybe_from_u64(1_f32.to_bits() as u64, ScalarSize::Size32).unwrap(),2709size: VectorSize::Size32x2,2710},2711"1FF6030F",2712"fmov v31.2s, #1",2713));2714insns.push((2715Inst::VecDupFPImm {2716rd: writable_vreg(0),2717imm: ASIMDFPModImm::maybe_from_u64(2_f64.to_bits(), ScalarSize::Size64).unwrap(),2718size: VectorSize::Size64x2,2719},2720"00F4006F",2721"fmov v0.2d, #2",2722));2723insns.push((2724Inst::VecDupImm {2725rd: writable_vreg(31),2726imm: ASIMDMovModImm::maybe_from_u64(255, ScalarSize::Size8).unwrap(),2727invert: false,2728size: VectorSize::Size8x16,2729},2730"FFE7074F",2731"movi v31.16b, #255",2732));2733insns.push((2734Inst::VecDupImm {2735rd: writable_vreg(30),2736imm: ASIMDMovModImm::maybe_from_u64(0, ScalarSize::Size16).unwrap(),2737invert: false,2738size: VectorSize::Size16x8,2739},2740"1E84004F",2741"movi v30.8h, #0",2742));2743insns.push((2744Inst::VecDupImm {2745rd: writable_vreg(0),2746imm: ASIMDMovModImm::zero(ScalarSize::Size16),2747invert: true,2748size: VectorSize::Size16x4,2749},2750"0084002F",2751"mvni v0.4h, #0",2752));2753insns.push((2754Inst::VecDupImm {2755rd: writable_vreg(0),2756imm: ASIMDMovModImm::maybe_from_u64(256, ScalarSize::Size16).unwrap(),2757invert: false,2758size: VectorSize::Size16x8,2759},2760"20A4004F",2761"movi v0.8h, #1, LSL #8",2762));2763insns.push((2764Inst::VecDupImm {2765rd: writable_vreg(8),2766imm: ASIMDMovModImm::maybe_from_u64(2228223, ScalarSize::Size32).unwrap(),2767invert: false,2768size: VectorSize::Size32x4,2769},2770"28D4014F",2771"movi v8.4s, #33, MSL #16",2772));2773insns.push((2774Inst::VecDupImm {2775rd: writable_vreg(16),2776imm: ASIMDMovModImm::maybe_from_u64(35071, ScalarSize::Size32).unwrap(),2777invert: true,2778size: VectorSize::Size32x2,2779},2780"10C5042F",2781"mvni v16.2s, #136, MSL #8",2782));2783insns.push((2784Inst::VecDupImm {2785rd: writable_vreg(1),2786imm: ASIMDMovModImm::maybe_from_u64(0, ScalarSize::Size32).unwrap(),2787invert: false,2788size: VectorSize::Size32x2,2789},2790"0104000F",2791"movi v1.2s, #0",2792));2793insns.push((2794Inst::VecDupImm {2795rd: writable_vreg(24),2796imm: ASIMDMovModImm::maybe_from_u64(1107296256, ScalarSize::Size32).unwrap(),2797invert: false,2798size: VectorSize::Size32x4,2799},2800"5864024F",2801"movi v24.4s, #66, LSL #24",2802));2803insns.push((2804Inst::VecDupImm {2805rd: writable_vreg(8),2806imm: ASIMDMovModImm::zero(ScalarSize::Size64),2807invert: false,2808size: VectorSize::Size64x2,2809},2810"08E4006F",2811"movi v8.2d, #0",2812));2813insns.push((2814Inst::VecDupImm {2815rd: writable_vreg(7),2816imm: ASIMDMovModImm::maybe_from_u64(18374687574904995840, ScalarSize::Size64).unwrap(),2817invert: false,2818size: VectorSize::Size64x2,2819},2820"87E6046F",2821"movi v7.2d, #18374687574904995840",2822));2823insns.push((2824Inst::VecExtend {2825t: VecExtendOp::Sxtl,2826rd: writable_vreg(4),2827rn: vreg(27),2828high_half: false,2829lane_size: ScalarSize::Size16,2830},2831"64A7080F",2832"sxtl v4.8h, v27.8b",2833));2834insns.push((2835Inst::VecExtend {2836t: VecExtendOp::Sxtl,2837rd: writable_vreg(17),2838rn: vreg(19),2839high_half: true,2840lane_size: ScalarSize::Size32,2841},2842"71A6104F",2843"sxtl2 v17.4s, v19.8h",2844));2845insns.push((2846Inst::VecExtend {2847t: VecExtendOp::Sxtl,2848rd: writable_vreg(30),2849rn: vreg(6),2850high_half: false,2851lane_size: ScalarSize::Size64,2852},2853"DEA4200F",2854"sxtl v30.2d, v6.2s",2855));2856insns.push((2857Inst::VecExtend {2858t: VecExtendOp::Uxtl,2859rd: writable_vreg(3),2860rn: vreg(29),2861high_half: true,2862lane_size: ScalarSize::Size16,2863},2864"A3A7086F",2865"uxtl2 v3.8h, v29.16b",2866));2867insns.push((2868Inst::VecExtend {2869t: VecExtendOp::Uxtl,2870rd: writable_vreg(15),2871rn: vreg(12),2872high_half: false,2873lane_size: ScalarSize::Size32,2874},2875"8FA5102F",2876"uxtl v15.4s, v12.4h",2877));2878insns.push((2879Inst::VecExtend {2880t: VecExtendOp::Uxtl,2881rd: writable_vreg(28),2882rn: vreg(2),2883high_half: true,2884lane_size: ScalarSize::Size64,2885},2886"5CA4206F",2887"uxtl2 v28.2d, v2.4s",2888));28892890insns.push((2891Inst::VecMovElement {2892rd: writable_vreg(0),2893ri: vreg(0),2894rn: vreg(31),2895dest_idx: 7,2896src_idx: 7,2897size: VectorSize::Size16x8,2898},2899"E0771E6E",2900"mov v0.h[7], v0.h[7], v31.h[7]",2901));29022903insns.push((2904Inst::VecMovElement {2905rd: writable_vreg(31),2906ri: vreg(31),2907rn: vreg(16),2908dest_idx: 1,2909src_idx: 0,2910size: VectorSize::Size32x2,2911},2912"1F060C6E",2913"mov v31.s[1], v31.s[1], v16.s[0]",2914));29152916insns.push((2917Inst::VecRRLong {2918op: VecRRLongOp::Fcvtl16,2919rd: writable_vreg(0),2920rn: vreg(30),2921high_half: false,2922},2923"C07B210E",2924"fcvtl v0.4s, v30.4h",2925));29262927insns.push((2928Inst::VecRRLong {2929op: VecRRLongOp::Fcvtl32,2930rd: writable_vreg(16),2931rn: vreg(1),2932high_half: true,2933},2934"3078614E",2935"fcvtl2 v16.2d, v1.4s",2936));29372938insns.push((2939Inst::VecRRLong {2940op: VecRRLongOp::Shll8,2941rd: writable_vreg(12),2942rn: vreg(5),2943high_half: false,2944},2945"AC38212E",2946"shll v12.8h, v5.8b, #8",2947));29482949insns.push((2950Inst::VecRRLong {2951op: VecRRLongOp::Shll16,2952rd: writable_vreg(9),2953rn: vreg(1),2954high_half: true,2955},2956"2938616E",2957"shll2 v9.4s, v1.8h, #16",2958));29592960insns.push((2961Inst::VecRRLong {2962op: VecRRLongOp::Shll32,2963rd: writable_vreg(1),2964rn: vreg(10),2965high_half: false,2966},2967"4139A12E",2968"shll v1.2d, v10.2s, #32",2969));29702971insns.push((2972Inst::VecRRNarrowLow {2973op: VecRRNarrowOp::Xtn,2974rd: writable_vreg(25),2975rn: vreg(17),2976lane_size: ScalarSize::Size8,2977},2978"392A210E",2979"xtn v25.8b, v17.8h",2980));29812982insns.push((2983Inst::VecRRNarrowHigh {2984op: VecRRNarrowOp::Xtn,2985rd: writable_vreg(3),2986ri: vreg(3),2987rn: vreg(10),2988lane_size: ScalarSize::Size16,2989},2990"4329614E",2991"xtn2 v3.8h, v3.8h, v10.4s",2992));29932994insns.push((2995Inst::VecRRNarrowLow {2996op: VecRRNarrowOp::Xtn,2997rd: writable_vreg(22),2998rn: vreg(8),2999lane_size: ScalarSize::Size32,3000},3001"1629A10E",3002"xtn v22.2s, v8.2d",3003));30043005insns.push((3006Inst::VecRRNarrowHigh {3007op: VecRRNarrowOp::Sqxtn,3008rd: writable_vreg(7),3009ri: vreg(7),3010rn: vreg(22),3011lane_size: ScalarSize::Size8,3012},3013"C74A214E",3014"sqxtn2 v7.16b, v7.16b, v22.8h",3015));30163017insns.push((3018Inst::VecRRNarrowHigh {3019op: VecRRNarrowOp::Sqxtn,3020rd: writable_vreg(31),3021ri: vreg(31),3022rn: vreg(0),3023lane_size: ScalarSize::Size16,3024},3025"1F48614E",3026"sqxtn2 v31.8h, v31.8h, v0.4s",3027));30283029insns.push((3030Inst::VecRRNarrowLow {3031op: VecRRNarrowOp::Sqxtn,3032rd: writable_vreg(14),3033rn: vreg(20),3034lane_size: ScalarSize::Size32,3035},3036"8E4AA10E",3037"sqxtn v14.2s, v20.2d",3038));30393040insns.push((3041Inst::VecRRNarrowLow {3042op: VecRRNarrowOp::Sqxtun,3043rd: writable_vreg(16),3044rn: vreg(23),3045lane_size: ScalarSize::Size8,3046},3047"F02A212E",3048"sqxtun v16.8b, v23.8h",3049));30503051insns.push((3052Inst::VecRRNarrowHigh {3053op: VecRRNarrowOp::Sqxtun,3054rd: writable_vreg(28),3055ri: vreg(28),3056rn: vreg(9),3057lane_size: ScalarSize::Size16,3058},3059"3C29616E",3060"sqxtun2 v28.8h, v28.8h, v9.4s",3061));30623063insns.push((3064Inst::VecRRNarrowLow {3065op: VecRRNarrowOp::Sqxtun,3066rd: writable_vreg(15),3067rn: vreg(15),3068lane_size: ScalarSize::Size32,3069},3070"EF29A12E",3071"sqxtun v15.2s, v15.2d",3072));30733074insns.push((3075Inst::VecRRNarrowHigh {3076op: VecRRNarrowOp::Uqxtn,3077rd: writable_vreg(21),3078ri: vreg(21),3079rn: vreg(4),3080lane_size: ScalarSize::Size8,3081},3082"9548216E",3083"uqxtn2 v21.16b, v21.16b, v4.8h",3084));30853086insns.push((3087Inst::VecRRNarrowLow {3088op: VecRRNarrowOp::Uqxtn,3089rd: writable_vreg(31),3090rn: vreg(31),3091lane_size: ScalarSize::Size16,3092},3093"FF4B612E",3094"uqxtn v31.4h, v31.4s",3095));30963097insns.push((3098Inst::VecRRNarrowHigh {3099op: VecRRNarrowOp::Uqxtn,3100rd: writable_vreg(11),3101ri: vreg(11),3102rn: vreg(12),3103lane_size: ScalarSize::Size32,3104},3105"8B49A16E",3106"uqxtn2 v11.4s, v11.4s, v12.2d",3107));31083109insns.push((3110Inst::VecRRNarrowLow {3111op: VecRRNarrowOp::Fcvtn,3112rd: writable_vreg(0),3113rn: vreg(0),3114lane_size: ScalarSize::Size16,3115},3116"0068210E",3117"fcvtn v0.4h, v0.4s",3118));31193120insns.push((3121Inst::VecRRNarrowLow {3122op: VecRRNarrowOp::Fcvtn,3123rd: writable_vreg(2),3124rn: vreg(7),3125lane_size: ScalarSize::Size32,3126},3127"E268610E",3128"fcvtn v2.2s, v7.2d",3129));31303131insns.push((3132Inst::VecRRNarrowHigh {3133op: VecRRNarrowOp::Fcvtn,3134rd: writable_vreg(31),3135ri: vreg(31),3136rn: vreg(30),3137lane_size: ScalarSize::Size32,3138},3139"DF6B614E",3140"fcvtn2 v31.4s, v31.4s, v30.2d",3141));31423143insns.push((3144Inst::VecRRPair {3145op: VecPairOp::Addp,3146rd: writable_vreg(0),3147rn: vreg(30),3148},3149"C0BBF15E",3150"addp d0, v30.2d",3151));31523153insns.push((3154Inst::VecRRPairLong {3155op: VecRRPairLongOp::Uaddlp8,3156rd: writable_vreg(0),3157rn: vreg(1),3158},3159"2028206E",3160"uaddlp v0.8h, v1.16b",3161));31623163insns.push((3164Inst::VecRRPairLong {3165op: VecRRPairLongOp::Saddlp8,3166rd: writable_vreg(3),3167rn: vreg(11),3168},3169"6329204E",3170"saddlp v3.8h, v11.16b",3171));31723173insns.push((3174Inst::VecRRPairLong {3175op: VecRRPairLongOp::Uaddlp16,3176rd: writable_vreg(14),3177rn: vreg(23),3178},3179"EE2A606E",3180"uaddlp v14.4s, v23.8h",3181));31823183insns.push((3184Inst::VecRRPairLong {3185op: VecRRPairLongOp::Saddlp16,3186rd: writable_vreg(29),3187rn: vreg(0),3188},3189"1D28604E",3190"saddlp v29.4s, v0.8h",3191));31923193insns.push((3194Inst::VecRRR {3195alu_op: VecALUOp::Sqadd,3196rd: writable_vreg(1),3197rn: vreg(2),3198rm: vreg(8),3199size: VectorSize::Size8x16,3200},3201"410C284E",3202"sqadd v1.16b, v2.16b, v8.16b",3203));32043205insns.push((3206Inst::VecRRR {3207alu_op: VecALUOp::Sqadd,3208rd: writable_vreg(1),3209rn: vreg(12),3210rm: vreg(28),3211size: VectorSize::Size16x8,3212},3213"810D7C4E",3214"sqadd v1.8h, v12.8h, v28.8h",3215));32163217insns.push((3218Inst::VecRRR {3219alu_op: VecALUOp::Sqadd,3220rd: writable_vreg(12),3221rn: vreg(2),3222rm: vreg(6),3223size: VectorSize::Size32x4,3224},3225"4C0CA64E",3226"sqadd v12.4s, v2.4s, v6.4s",3227));32283229insns.push((3230Inst::VecRRR {3231alu_op: VecALUOp::Sqadd,3232rd: writable_vreg(20),3233rn: vreg(7),3234rm: vreg(13),3235size: VectorSize::Size64x2,3236},3237"F40CED4E",3238"sqadd v20.2d, v7.2d, v13.2d",3239));32403241insns.push((3242Inst::VecRRR {3243alu_op: VecALUOp::Sqsub,3244rd: writable_vreg(1),3245rn: vreg(2),3246rm: vreg(8),3247size: VectorSize::Size8x16,3248},3249"412C284E",3250"sqsub v1.16b, v2.16b, v8.16b",3251));32523253insns.push((3254Inst::VecRRR {3255alu_op: VecALUOp::Sqsub,3256rd: writable_vreg(1),3257rn: vreg(12),3258rm: vreg(28),3259size: VectorSize::Size16x8,3260},3261"812D7C4E",3262"sqsub v1.8h, v12.8h, v28.8h",3263));32643265insns.push((3266Inst::VecRRR {3267alu_op: VecALUOp::Sqsub,3268rd: writable_vreg(12),3269rn: vreg(2),3270rm: vreg(6),3271size: VectorSize::Size32x4,3272},3273"4C2CA64E",3274"sqsub v12.4s, v2.4s, v6.4s",3275));32763277insns.push((3278Inst::VecRRR {3279alu_op: VecALUOp::Sqsub,3280rd: writable_vreg(20),3281rn: vreg(7),3282rm: vreg(13),3283size: VectorSize::Size64x2,3284},3285"F42CED4E",3286"sqsub v20.2d, v7.2d, v13.2d",3287));32883289insns.push((3290Inst::VecRRR {3291alu_op: VecALUOp::Uqadd,3292rd: writable_vreg(1),3293rn: vreg(2),3294rm: vreg(8),3295size: VectorSize::Size8x16,3296},3297"410C286E",3298"uqadd v1.16b, v2.16b, v8.16b",3299));33003301insns.push((3302Inst::VecRRR {3303alu_op: VecALUOp::Uqadd,3304rd: writable_vreg(1),3305rn: vreg(12),3306rm: vreg(28),3307size: VectorSize::Size16x8,3308},3309"810D7C6E",3310"uqadd v1.8h, v12.8h, v28.8h",3311));33123313insns.push((3314Inst::VecRRR {3315alu_op: VecALUOp::Uqadd,3316rd: writable_vreg(12),3317rn: vreg(2),3318rm: vreg(6),3319size: VectorSize::Size32x4,3320},3321"4C0CA66E",3322"uqadd v12.4s, v2.4s, v6.4s",3323));33243325insns.push((3326Inst::VecRRR {3327alu_op: VecALUOp::Uqadd,3328rd: writable_vreg(20),3329rn: vreg(7),3330rm: vreg(13),3331size: VectorSize::Size64x2,3332},3333"F40CED6E",3334"uqadd v20.2d, v7.2d, v13.2d",3335));33363337insns.push((3338Inst::VecRRR {3339alu_op: VecALUOp::Uqsub,3340rd: writable_vreg(1),3341rn: vreg(2),3342rm: vreg(8),3343size: VectorSize::Size8x16,3344},3345"412C286E",3346"uqsub v1.16b, v2.16b, v8.16b",3347));33483349insns.push((3350Inst::VecRRR {3351alu_op: VecALUOp::Uqsub,3352rd: writable_vreg(1),3353rn: vreg(12),3354rm: vreg(28),3355size: VectorSize::Size16x8,3356},3357"812D7C6E",3358"uqsub v1.8h, v12.8h, v28.8h",3359));33603361insns.push((3362Inst::VecRRR {3363alu_op: VecALUOp::Uqsub,3364rd: writable_vreg(12),3365rn: vreg(2),3366rm: vreg(6),3367size: VectorSize::Size32x4,3368},3369"4C2CA66E",3370"uqsub v12.4s, v2.4s, v6.4s",3371));33723373insns.push((3374Inst::VecRRR {3375alu_op: VecALUOp::Uqsub,3376rd: writable_vreg(20),3377rn: vreg(7),3378rm: vreg(13),3379size: VectorSize::Size64x2,3380},3381"F42CED6E",3382"uqsub v20.2d, v7.2d, v13.2d",3383));33843385insns.push((3386Inst::VecRRR {3387alu_op: VecALUOp::Cmeq,3388rd: writable_vreg(3),3389rn: vreg(23),3390rm: vreg(24),3391size: VectorSize::Size8x16,3392},3393"E38E386E",3394"cmeq v3.16b, v23.16b, v24.16b",3395));33963397insns.push((3398Inst::VecRRR {3399alu_op: VecALUOp::Cmgt,3400rd: writable_vreg(3),3401rn: vreg(23),3402rm: vreg(24),3403size: VectorSize::Size8x16,3404},3405"E336384E",3406"cmgt v3.16b, v23.16b, v24.16b",3407));34083409insns.push((3410Inst::VecRRR {3411alu_op: VecALUOp::Cmge,3412rd: writable_vreg(23),3413rn: vreg(9),3414rm: vreg(12),3415size: VectorSize::Size8x16,3416},3417"373D2C4E",3418"cmge v23.16b, v9.16b, v12.16b",3419));34203421insns.push((3422Inst::VecRRR {3423alu_op: VecALUOp::Cmhi,3424rd: writable_vreg(5),3425rn: vreg(1),3426rm: vreg(1),3427size: VectorSize::Size8x16,3428},3429"2534216E",3430"cmhi v5.16b, v1.16b, v1.16b",3431));34323433insns.push((3434Inst::VecRRR {3435alu_op: VecALUOp::Cmhs,3436rd: writable_vreg(8),3437rn: vreg(2),3438rm: vreg(15),3439size: VectorSize::Size8x16,3440},3441"483C2F6E",3442"cmhs v8.16b, v2.16b, v15.16b",3443));34443445insns.push((3446Inst::VecRRR {3447alu_op: VecALUOp::Cmeq,3448rd: writable_vreg(3),3449rn: vreg(23),3450rm: vreg(24),3451size: VectorSize::Size16x8,3452},3453"E38E786E",3454"cmeq v3.8h, v23.8h, v24.8h",3455));34563457insns.push((3458Inst::VecRRR {3459alu_op: VecALUOp::Cmgt,3460rd: writable_vreg(3),3461rn: vreg(23),3462rm: vreg(24),3463size: VectorSize::Size16x8,3464},3465"E336784E",3466"cmgt v3.8h, v23.8h, v24.8h",3467));34683469insns.push((3470Inst::VecRRR {3471alu_op: VecALUOp::Cmge,3472rd: writable_vreg(23),3473rn: vreg(9),3474rm: vreg(12),3475size: VectorSize::Size16x8,3476},3477"373D6C4E",3478"cmge v23.8h, v9.8h, v12.8h",3479));34803481insns.push((3482Inst::VecRRR {3483alu_op: VecALUOp::Cmhi,3484rd: writable_vreg(5),3485rn: vreg(1),3486rm: vreg(1),3487size: VectorSize::Size16x8,3488},3489"2534616E",3490"cmhi v5.8h, v1.8h, v1.8h",3491));34923493insns.push((3494Inst::VecRRR {3495alu_op: VecALUOp::Cmhs,3496rd: writable_vreg(8),3497rn: vreg(2),3498rm: vreg(15),3499size: VectorSize::Size16x8,3500},3501"483C6F6E",3502"cmhs v8.8h, v2.8h, v15.8h",3503));35043505insns.push((3506Inst::VecRRR {3507alu_op: VecALUOp::Cmeq,3508rd: writable_vreg(3),3509rn: vreg(23),3510rm: vreg(24),3511size: VectorSize::Size32x4,3512},3513"E38EB86E",3514"cmeq v3.4s, v23.4s, v24.4s",3515));35163517insns.push((3518Inst::VecRRR {3519alu_op: VecALUOp::Cmgt,3520rd: writable_vreg(3),3521rn: vreg(23),3522rm: vreg(24),3523size: VectorSize::Size32x4,3524},3525"E336B84E",3526"cmgt v3.4s, v23.4s, v24.4s",3527));35283529insns.push((3530Inst::VecRRR {3531alu_op: VecALUOp::Cmge,3532rd: writable_vreg(23),3533rn: vreg(9),3534rm: vreg(12),3535size: VectorSize::Size32x4,3536},3537"373DAC4E",3538"cmge v23.4s, v9.4s, v12.4s",3539));35403541insns.push((3542Inst::VecRRR {3543alu_op: VecALUOp::Cmhi,3544rd: writable_vreg(5),3545rn: vreg(1),3546rm: vreg(1),3547size: VectorSize::Size32x4,3548},3549"2534A16E",3550"cmhi v5.4s, v1.4s, v1.4s",3551));35523553insns.push((3554Inst::VecRRR {3555alu_op: VecALUOp::Cmhs,3556rd: writable_vreg(8),3557rn: vreg(2),3558rm: vreg(15),3559size: VectorSize::Size32x4,3560},3561"483CAF6E",3562"cmhs v8.4s, v2.4s, v15.4s",3563));35643565insns.push((3566Inst::VecRRR {3567alu_op: VecALUOp::Fcmeq,3568rd: writable_vreg(28),3569rn: vreg(12),3570rm: vreg(4),3571size: VectorSize::Size32x2,3572},3573"9CE5240E",3574"fcmeq v28.2s, v12.2s, v4.2s",3575));35763577insns.push((3578Inst::VecRRR {3579alu_op: VecALUOp::Fcmgt,3580rd: writable_vreg(3),3581rn: vreg(16),3582rm: vreg(31),3583size: VectorSize::Size64x2,3584},3585"03E6FF6E",3586"fcmgt v3.2d, v16.2d, v31.2d",3587));35883589insns.push((3590Inst::VecRRR {3591alu_op: VecALUOp::Fcmge,3592rd: writable_vreg(18),3593rn: vreg(23),3594rm: vreg(0),3595size: VectorSize::Size64x2,3596},3597"F2E6606E",3598"fcmge v18.2d, v23.2d, v0.2d",3599));36003601insns.push((3602Inst::VecRRR {3603alu_op: VecALUOp::And,3604rd: writable_vreg(20),3605rn: vreg(19),3606rm: vreg(18),3607size: VectorSize::Size32x4,3608},3609"741E324E",3610"and v20.16b, v19.16b, v18.16b",3611));36123613insns.push((3614Inst::VecRRR {3615alu_op: VecALUOp::Bic,3616rd: writable_vreg(8),3617rn: vreg(11),3618rm: vreg(1),3619size: VectorSize::Size8x16,3620},3621"681D614E",3622"bic v8.16b, v11.16b, v1.16b",3623));36243625insns.push((3626Inst::VecRRR {3627alu_op: VecALUOp::Orr,3628rd: writable_vreg(15),3629rn: vreg(2),3630rm: vreg(12),3631size: VectorSize::Size16x8,3632},3633"4F1CAC4E",3634"orr v15.16b, v2.16b, v12.16b",3635));36363637insns.push((3638Inst::VecRRR {3639alu_op: VecALUOp::Eor,3640rd: writable_vreg(18),3641rn: vreg(3),3642rm: vreg(22),3643size: VectorSize::Size8x16,3644},3645"721C366E",3646"eor v18.16b, v3.16b, v22.16b",3647));36483649insns.push((3650Inst::VecRRRMod {3651alu_op: VecALUModOp::Bsl,3652rd: writable_vreg(8),3653ri: vreg(8),3654rn: vreg(9),3655rm: vreg(1),3656size: VectorSize::Size8x16,3657},3658"281D616E",3659"bsl v8.16b, v8.16b, v9.16b, v1.16b",3660));36613662insns.push((3663Inst::VecRRR {3664alu_op: VecALUOp::Umaxp,3665rd: writable_vreg(8),3666rn: vreg(12),3667rm: vreg(1),3668size: VectorSize::Size8x16,3669},3670"88A5216E",3671"umaxp v8.16b, v12.16b, v1.16b",3672));36733674insns.push((3675Inst::VecRRR {3676alu_op: VecALUOp::Umaxp,3677rd: writable_vreg(1),3678rn: vreg(6),3679rm: vreg(1),3680size: VectorSize::Size16x8,3681},3682"C1A4616E",3683"umaxp v1.8h, v6.8h, v1.8h",3684));36853686insns.push((3687Inst::VecRRR {3688alu_op: VecALUOp::Umaxp,3689rd: writable_vreg(1),3690rn: vreg(20),3691rm: vreg(16),3692size: VectorSize::Size32x4,3693},3694"81A6B06E",3695"umaxp v1.4s, v20.4s, v16.4s",3696));36973698insns.push((3699Inst::VecRRR {3700alu_op: VecALUOp::Add,3701rd: writable_vreg(5),3702rn: vreg(1),3703rm: vreg(1),3704size: VectorSize::Size8x16,3705},3706"2584214E",3707"add v5.16b, v1.16b, v1.16b",3708));37093710insns.push((3711Inst::VecRRR {3712alu_op: VecALUOp::Add,3713rd: writable_vreg(7),3714rn: vreg(13),3715rm: vreg(2),3716size: VectorSize::Size16x8,3717},3718"A785624E",3719"add v7.8h, v13.8h, v2.8h",3720));37213722insns.push((3723Inst::VecRRR {3724alu_op: VecALUOp::Add,3725rd: writable_vreg(18),3726rn: vreg(9),3727rm: vreg(6),3728size: VectorSize::Size32x4,3729},3730"3285A64E",3731"add v18.4s, v9.4s, v6.4s",3732));37333734insns.push((3735Inst::VecRRR {3736alu_op: VecALUOp::Add,3737rd: writable_vreg(1),3738rn: vreg(3),3739rm: vreg(2),3740size: VectorSize::Size64x2,3741},3742"6184E24E",3743"add v1.2d, v3.2d, v2.2d",3744));37453746insns.push((3747Inst::VecRRR {3748alu_op: VecALUOp::Sub,3749rd: writable_vreg(5),3750rn: vreg(1),3751rm: vreg(1),3752size: VectorSize::Size8x16,3753},3754"2584216E",3755"sub v5.16b, v1.16b, v1.16b",3756));37573758insns.push((3759Inst::VecRRR {3760alu_op: VecALUOp::Sub,3761rd: writable_vreg(7),3762rn: vreg(13),3763rm: vreg(2),3764size: VectorSize::Size16x8,3765},3766"A785626E",3767"sub v7.8h, v13.8h, v2.8h",3768));37693770insns.push((3771Inst::VecRRR {3772alu_op: VecALUOp::Sub,3773rd: writable_vreg(18),3774rn: vreg(9),3775rm: vreg(6),3776size: VectorSize::Size32x4,3777},3778"3285A66E",3779"sub v18.4s, v9.4s, v6.4s",3780));37813782insns.push((3783Inst::VecRRR {3784alu_op: VecALUOp::Sub,3785rd: writable_vreg(18),3786rn: vreg(0),3787rm: vreg(8),3788size: VectorSize::Size64x2,3789},3790"1284E86E",3791"sub v18.2d, v0.2d, v8.2d",3792));37933794insns.push((3795Inst::VecRRR {3796alu_op: VecALUOp::Mul,3797rd: writable_vreg(25),3798rn: vreg(9),3799rm: vreg(8),3800size: VectorSize::Size8x16,3801},3802"399D284E",3803"mul v25.16b, v9.16b, v8.16b",3804));38053806insns.push((3807Inst::VecRRR {3808alu_op: VecALUOp::Mul,3809rd: writable_vreg(30),3810rn: vreg(30),3811rm: vreg(12),3812size: VectorSize::Size16x8,3813},3814"DE9F6C4E",3815"mul v30.8h, v30.8h, v12.8h",3816));38173818insns.push((3819Inst::VecRRR {3820alu_op: VecALUOp::Mul,3821rd: writable_vreg(18),3822rn: vreg(18),3823rm: vreg(18),3824size: VectorSize::Size32x4,3825},3826"529EB24E",3827"mul v18.4s, v18.4s, v18.4s",3828));38293830insns.push((3831Inst::VecRRR {3832alu_op: VecALUOp::Ushl,3833rd: writable_vreg(18),3834rn: vreg(18),3835rm: vreg(18),3836size: VectorSize::Size8x16,3837},3838"5246326E",3839"ushl v18.16b, v18.16b, v18.16b",3840));38413842insns.push((3843Inst::VecRRR {3844alu_op: VecALUOp::Ushl,3845rd: writable_vreg(18),3846rn: vreg(18),3847rm: vreg(18),3848size: VectorSize::Size16x8,3849},3850"5246726E",3851"ushl v18.8h, v18.8h, v18.8h",3852));38533854insns.push((3855Inst::VecRRR {3856alu_op: VecALUOp::Ushl,3857rd: writable_vreg(18),3858rn: vreg(1),3859rm: vreg(21),3860size: VectorSize::Size32x4,3861},3862"3244B56E",3863"ushl v18.4s, v1.4s, v21.4s",3864));38653866insns.push((3867Inst::VecRRR {3868alu_op: VecALUOp::Ushl,3869rd: writable_vreg(5),3870rn: vreg(7),3871rm: vreg(19),3872size: VectorSize::Size64x2,3873},3874"E544F36E",3875"ushl v5.2d, v7.2d, v19.2d",3876));38773878insns.push((3879Inst::VecRRR {3880alu_op: VecALUOp::Sshl,3881rd: writable_vreg(18),3882rn: vreg(18),3883rm: vreg(18),3884size: VectorSize::Size8x16,3885},3886"5246324E",3887"sshl v18.16b, v18.16b, v18.16b",3888));38893890insns.push((3891Inst::VecRRR {3892alu_op: VecALUOp::Sshl,3893rd: writable_vreg(30),3894rn: vreg(1),3895rm: vreg(29),3896size: VectorSize::Size16x8,3897},3898"3E447D4E",3899"sshl v30.8h, v1.8h, v29.8h",3900));39013902insns.push((3903Inst::VecRRR {3904alu_op: VecALUOp::Sshl,3905rd: writable_vreg(8),3906rn: vreg(22),3907rm: vreg(21),3908size: VectorSize::Size32x4,3909},3910"C846B54E",3911"sshl v8.4s, v22.4s, v21.4s",3912));39133914insns.push((3915Inst::VecRRR {3916alu_op: VecALUOp::Sshl,3917rd: writable_vreg(8),3918rn: vreg(22),3919rm: vreg(2),3920size: VectorSize::Size64x2,3921},3922"C846E24E",3923"sshl v8.2d, v22.2d, v2.2d",3924));39253926insns.push((3927Inst::VecRRR {3928alu_op: VecALUOp::Umin,3929rd: writable_vreg(0),3930rn: vreg(11),3931rm: vreg(2),3932size: VectorSize::Size8x8,3933},3934"606D222E",3935"umin v0.8b, v11.8b, v2.8b",3936));39373938insns.push((3939Inst::VecRRR {3940alu_op: VecALUOp::Umin,3941rd: writable_vreg(1),3942rn: vreg(12),3943rm: vreg(3),3944size: VectorSize::Size8x16,3945},3946"816D236E",3947"umin v1.16b, v12.16b, v3.16b",3948));39493950insns.push((3951Inst::VecRRR {3952alu_op: VecALUOp::Umin,3953rd: writable_vreg(29),3954rn: vreg(19),3955rm: vreg(9),3956size: VectorSize::Size16x4,3957},3958"7D6E692E",3959"umin v29.4h, v19.4h, v9.4h",3960));39613962insns.push((3963Inst::VecRRR {3964alu_op: VecALUOp::Umin,3965rd: writable_vreg(30),3966rn: vreg(20),3967rm: vreg(10),3968size: VectorSize::Size16x8,3969},3970"9E6E6A6E",3971"umin v30.8h, v20.8h, v10.8h",3972));39733974insns.push((3975Inst::VecRRR {3976alu_op: VecALUOp::Umin,3977rd: writable_vreg(7),3978rn: vreg(21),3979rm: vreg(20),3980size: VectorSize::Size32x2,3981},3982"A76EB42E",3983"umin v7.2s, v21.2s, v20.2s",3984));39853986insns.push((3987Inst::VecRRR {3988alu_op: VecALUOp::Umin,3989rd: writable_vreg(8),3990rn: vreg(22),3991rm: vreg(21),3992size: VectorSize::Size32x4,3993},3994"C86EB56E",3995"umin v8.4s, v22.4s, v21.4s",3996));39973998insns.push((3999Inst::VecRRR {4000alu_op: VecALUOp::Smin,4001rd: writable_vreg(2),4002rn: vreg(13),4003rm: vreg(4),4004size: VectorSize::Size8x8,4005},4006"A26D240E",4007"smin v2.8b, v13.8b, v4.8b",4008));40094010insns.push((4011Inst::VecRRR {4012alu_op: VecALUOp::Smin,4013rd: writable_vreg(1),4014rn: vreg(12),4015rm: vreg(3),4016size: VectorSize::Size8x16,4017},4018"816D234E",4019"smin v1.16b, v12.16b, v3.16b",4020));40214022insns.push((4023Inst::VecRRR {4024alu_op: VecALUOp::Smin,4025rd: writable_vreg(3),4026rn: vreg(2),4027rm: vreg(1),4028size: VectorSize::Size16x4,4029},4030"436C610E",4031"smin v3.4h, v2.4h, v1.4h",4032));40334034insns.push((4035Inst::VecRRR {4036alu_op: VecALUOp::Smin,4037rd: writable_vreg(30),4038rn: vreg(20),4039rm: vreg(10),4040size: VectorSize::Size16x8,4041},4042"9E6E6A4E",4043"smin v30.8h, v20.8h, v10.8h",4044));40454046insns.push((4047Inst::VecRRR {4048alu_op: VecALUOp::Smin,4049rd: writable_vreg(9),4050rn: vreg(22),4051rm: vreg(20),4052size: VectorSize::Size32x2,4053},4054"C96EB40E",4055"smin v9.2s, v22.2s, v20.2s",4056));40574058insns.push((4059Inst::VecRRR {4060alu_op: VecALUOp::Smin,4061rd: writable_vreg(8),4062rn: vreg(22),4063rm: vreg(21),4064size: VectorSize::Size32x4,4065},4066"C86EB54E",4067"smin v8.4s, v22.4s, v21.4s",4068));40694070insns.push((4071Inst::VecRRR {4072alu_op: VecALUOp::Umax,4073rd: writable_vreg(6),4074rn: vreg(9),4075rm: vreg(8),4076size: VectorSize::Size8x8,4077},4078"2665282E",4079"umax v6.8b, v9.8b, v8.8b",4080));40814082insns.push((4083Inst::VecRRR {4084alu_op: VecALUOp::Umax,4085rd: writable_vreg(5),4086rn: vreg(15),4087rm: vreg(8),4088size: VectorSize::Size8x16,4089},4090"E565286E",4091"umax v5.16b, v15.16b, v8.16b",4092));40934094insns.push((4095Inst::VecRRR {4096alu_op: VecALUOp::Umax,4097rd: writable_vreg(12),4098rn: vreg(14),4099rm: vreg(3),4100size: VectorSize::Size16x4,4101},4102"CC65632E",4103"umax v12.4h, v14.4h, v3.4h",4104));41054106insns.push((4107Inst::VecRRR {4108alu_op: VecALUOp::Umax,4109rd: writable_vreg(11),4110rn: vreg(13),4111rm: vreg(2),4112size: VectorSize::Size16x8,4113},4114"AB65626E",4115"umax v11.8h, v13.8h, v2.8h",4116));41174118insns.push((4119Inst::VecRRR {4120alu_op: VecALUOp::Umax,4121rd: writable_vreg(9),4122rn: vreg(13),4123rm: vreg(15),4124size: VectorSize::Size32x2,4125},4126"A965AF2E",4127"umax v9.2s, v13.2s, v15.2s",4128));41294130insns.push((4131Inst::VecRRR {4132alu_op: VecALUOp::Umax,4133rd: writable_vreg(8),4134rn: vreg(12),4135rm: vreg(14),4136size: VectorSize::Size32x4,4137},4138"8865AE6E",4139"umax v8.4s, v12.4s, v14.4s",4140));41414142insns.push((4143Inst::VecRRR {4144alu_op: VecALUOp::Smax,4145rd: writable_vreg(7),4146rn: vreg(8),4147rm: vreg(9),4148size: VectorSize::Size8x8,4149},4150"0765290E",4151"smax v7.8b, v8.8b, v9.8b",4152));41534154insns.push((4155Inst::VecRRR {4156alu_op: VecALUOp::Smax,4157rd: writable_vreg(6),4158rn: vreg(9),4159rm: vreg(8),4160size: VectorSize::Size8x16,4161},4162"2665284E",4163"smax v6.16b, v9.16b, v8.16b",4164));41654166insns.push((4167Inst::VecRRR {4168alu_op: VecALUOp::Smax,4169rd: writable_vreg(11),4170rn: vreg(12),4171rm: vreg(13),4172size: VectorSize::Size16x4,4173},4174"8B656D0E",4175"smax v11.4h, v12.4h, v13.4h",4176));41774178insns.push((4179Inst::VecRRR {4180alu_op: VecALUOp::Smax,4181rd: writable_vreg(11),4182rn: vreg(13),4183rm: vreg(2),4184size: VectorSize::Size16x8,4185},4186"AB65624E",4187"smax v11.8h, v13.8h, v2.8h",4188));41894190insns.push((4191Inst::VecRRR {4192alu_op: VecALUOp::Smax,4193rd: writable_vreg(14),4194rn: vreg(16),4195rm: vreg(18),4196size: VectorSize::Size32x2,4197},4198"0E66B20E",4199"smax v14.2s, v16.2s, v18.2s",4200));42014202insns.push((4203Inst::VecRRR {4204alu_op: VecALUOp::Smax,4205rd: writable_vreg(8),4206rn: vreg(12),4207rm: vreg(14),4208size: VectorSize::Size32x4,4209},4210"8865AE4E",4211"smax v8.4s, v12.4s, v14.4s",4212));42134214insns.push((4215Inst::VecRRR {4216alu_op: VecALUOp::Urhadd,4217rd: writable_vreg(8),4218rn: vreg(1),4219rm: vreg(3),4220size: VectorSize::Size8x8,4221},4222"2814232E",4223"urhadd v8.8b, v1.8b, v3.8b",4224));42254226insns.push((4227Inst::VecRRR {4228alu_op: VecALUOp::Urhadd,4229rd: writable_vreg(8),4230rn: vreg(1),4231rm: vreg(3),4232size: VectorSize::Size8x16,4233},4234"2814236E",4235"urhadd v8.16b, v1.16b, v3.16b",4236));42374238insns.push((4239Inst::VecRRR {4240alu_op: VecALUOp::Urhadd,4241rd: writable_vreg(2),4242rn: vreg(13),4243rm: vreg(6),4244size: VectorSize::Size16x4,4245},4246"A215662E",4247"urhadd v2.4h, v13.4h, v6.4h",4248));42494250insns.push((4251Inst::VecRRR {4252alu_op: VecALUOp::Urhadd,4253rd: writable_vreg(2),4254rn: vreg(13),4255rm: vreg(6),4256size: VectorSize::Size16x8,4257},4258"A215666E",4259"urhadd v2.8h, v13.8h, v6.8h",4260));42614262insns.push((4263Inst::VecRRR {4264alu_op: VecALUOp::Urhadd,4265rd: writable_vreg(8),4266rn: vreg(12),4267rm: vreg(14),4268size: VectorSize::Size32x2,4269},4270"8815AE2E",4271"urhadd v8.2s, v12.2s, v14.2s",4272));42734274insns.push((4275Inst::VecRRR {4276alu_op: VecALUOp::Urhadd,4277rd: writable_vreg(8),4278rn: vreg(12),4279rm: vreg(14),4280size: VectorSize::Size32x4,4281},4282"8815AE6E",4283"urhadd v8.4s, v12.4s, v14.4s",4284));42854286insns.push((4287Inst::VecRRR {4288alu_op: VecALUOp::Fadd,4289rd: writable_vreg(31),4290rn: vreg(0),4291rm: vreg(16),4292size: VectorSize::Size32x4,4293},4294"1FD4304E",4295"fadd v31.4s, v0.4s, v16.4s",4296));42974298insns.push((4299Inst::VecRRR {4300alu_op: VecALUOp::Fsub,4301rd: writable_vreg(8),4302rn: vreg(7),4303rm: vreg(15),4304size: VectorSize::Size64x2,4305},4306"E8D4EF4E",4307"fsub v8.2d, v7.2d, v15.2d",4308));43094310insns.push((4311Inst::VecRRR {4312alu_op: VecALUOp::Fdiv,4313rd: writable_vreg(1),4314rn: vreg(3),4315rm: vreg(4),4316size: VectorSize::Size32x4,4317},4318"61FC246E",4319"fdiv v1.4s, v3.4s, v4.4s",4320));43214322insns.push((4323Inst::VecRRR {4324alu_op: VecALUOp::Fmax,4325rd: writable_vreg(31),4326rn: vreg(16),4327rm: vreg(0),4328size: VectorSize::Size64x2,4329},4330"1FF6604E",4331"fmax v31.2d, v16.2d, v0.2d",4332));43334334insns.push((4335Inst::VecRRR {4336alu_op: VecALUOp::Fmin,4337rd: writable_vreg(5),4338rn: vreg(19),4339rm: vreg(26),4340size: VectorSize::Size32x4,4341},4342"65F6BA4E",4343"fmin v5.4s, v19.4s, v26.4s",4344));43454346insns.push((4347Inst::VecRRR {4348alu_op: VecALUOp::Fmul,4349rd: writable_vreg(2),4350rn: vreg(0),4351rm: vreg(5),4352size: VectorSize::Size64x2,4353},4354"02DC656E",4355"fmul v2.2d, v0.2d, v5.2d",4356));43574358insns.push((4359Inst::VecRRRMod {4360alu_op: VecALUModOp::Fmla,4361rd: writable_vreg(2),4362ri: vreg(2),4363rn: vreg(0),4364rm: vreg(5),4365size: VectorSize::Size32x2,4366},4367"02CC250E",4368"fmla v2.2s, v2.2s, v0.2s, v5.2s",4369));43704371insns.push((4372Inst::VecRRRMod {4373alu_op: VecALUModOp::Fmla,4374rd: writable_vreg(2),4375ri: vreg(2),4376rn: vreg(0),4377rm: vreg(5),4378size: VectorSize::Size32x4,4379},4380"02CC254E",4381"fmla v2.4s, v2.4s, v0.4s, v5.4s",4382));43834384insns.push((4385Inst::VecRRRMod {4386alu_op: VecALUModOp::Fmla,4387rd: writable_vreg(2),4388ri: vreg(2),4389rn: vreg(0),4390rm: vreg(5),4391size: VectorSize::Size64x2,4392},4393"02CC654E",4394"fmla v2.2d, v2.2d, v0.2d, v5.2d",4395));43964397insns.push((4398Inst::VecRRR {4399alu_op: VecALUOp::Addp,4400rd: writable_vreg(16),4401rn: vreg(12),4402rm: vreg(1),4403size: VectorSize::Size8x8,4404},4405"90BD210E",4406"addp v16.8b, v12.8b, v1.8b",4407));44084409insns.push((4410Inst::VecRRR {4411alu_op: VecALUOp::Addp,4412rd: writable_vreg(16),4413rn: vreg(12),4414rm: vreg(1),4415size: VectorSize::Size8x16,4416},4417"90BD214E",4418"addp v16.16b, v12.16b, v1.16b",4419));44204421insns.push((4422Inst::VecRRR {4423alu_op: VecALUOp::Addp,4424rd: writable_vreg(8),4425rn: vreg(12),4426rm: vreg(14),4427size: VectorSize::Size32x4,4428},4429"88BDAE4E",4430"addp v8.4s, v12.4s, v14.4s",4431));44324433insns.push((4434Inst::VecRRR {4435alu_op: VecALUOp::Addp,4436rd: writable_vreg(8),4437rn: vreg(12),4438rm: vreg(14),4439size: VectorSize::Size32x2,4440},4441"88BDAE0E",4442"addp v8.2s, v12.2s, v14.2s",4443));44444445insns.push((4446Inst::VecRRR {4447alu_op: VecALUOp::Zip1,4448rd: writable_vreg(16),4449rn: vreg(12),4450rm: vreg(1),4451size: VectorSize::Size8x16,4452},4453"9039014E",4454"zip1 v16.16b, v12.16b, v1.16b",4455));44564457insns.push((4458Inst::VecRRR {4459alu_op: VecALUOp::Zip1,4460rd: writable_vreg(2),4461rn: vreg(13),4462rm: vreg(6),4463size: VectorSize::Size16x8,4464},4465"A239464E",4466"zip1 v2.8h, v13.8h, v6.8h",4467));44684469insns.push((4470Inst::VecRRR {4471alu_op: VecALUOp::Zip1,4472rd: writable_vreg(8),4473rn: vreg(12),4474rm: vreg(14),4475size: VectorSize::Size32x4,4476},4477"88398E4E",4478"zip1 v8.4s, v12.4s, v14.4s",4479));44804481insns.push((4482Inst::VecRRR {4483alu_op: VecALUOp::Zip1,4484rd: writable_vreg(9),4485rn: vreg(20),4486rm: vreg(17),4487size: VectorSize::Size64x2,4488},4489"893AD14E",4490"zip1 v9.2d, v20.2d, v17.2d",4491));44924493insns.push((4494Inst::VecRRRLong {4495alu_op: VecRRRLongOp::Smull8,4496rd: writable_vreg(16),4497rn: vreg(12),4498rm: vreg(1),4499high_half: false,4500},4501"90C1210E",4502"smull v16.8h, v12.8b, v1.8b",4503));45044505insns.push((4506Inst::VecRRRLong {4507alu_op: VecRRRLongOp::Umull8,4508rd: writable_vreg(15),4509rn: vreg(11),4510rm: vreg(2),4511high_half: false,4512},4513"6FC1222E",4514"umull v15.8h, v11.8b, v2.8b",4515));45164517insns.push((4518Inst::VecRRRLongMod {4519alu_op: VecRRRLongModOp::Umlal8,4520rd: writable_vreg(4),4521ri: vreg(4),4522rn: vreg(8),4523rm: vreg(16),4524high_half: false,4525},4526"0481302E",4527"umlal v4.8h, v4.8h, v8.8b, v16.8b",4528));45294530insns.push((4531Inst::VecRRRLong {4532alu_op: VecRRRLongOp::Smull16,4533rd: writable_vreg(2),4534rn: vreg(13),4535rm: vreg(6),4536high_half: false,4537},4538"A2C1660E",4539"smull v2.4s, v13.4h, v6.4h",4540));45414542insns.push((4543Inst::VecRRRLong {4544alu_op: VecRRRLongOp::Umull16,4545rd: writable_vreg(3),4546rn: vreg(14),4547rm: vreg(7),4548high_half: false,4549},4550"C3C1672E",4551"umull v3.4s, v14.4h, v7.4h",4552));45534554insns.push((4555Inst::VecRRRLongMod {4556alu_op: VecRRRLongModOp::Umlal16,4557rd: writable_vreg(7),4558ri: vreg(7),4559rn: vreg(14),4560rm: vreg(21),4561high_half: false,4562},4563"C781752E",4564"umlal v7.4s, v7.4s, v14.4h, v21.4h",4565));45664567insns.push((4568Inst::VecRRRLong {4569alu_op: VecRRRLongOp::Smull32,4570rd: writable_vreg(8),4571rn: vreg(12),4572rm: vreg(14),4573high_half: false,4574},4575"88C1AE0E",4576"smull v8.2d, v12.2s, v14.2s",4577));45784579insns.push((4580Inst::VecRRRLong {4581alu_op: VecRRRLongOp::Umull32,4582rd: writable_vreg(9),4583rn: vreg(5),4584rm: vreg(6),4585high_half: false,4586},4587"A9C0A62E",4588"umull v9.2d, v5.2s, v6.2s",4589));45904591insns.push((4592Inst::VecRRRLongMod {4593alu_op: VecRRRLongModOp::Umlal32,4594rd: writable_vreg(9),4595ri: vreg(9),4596rn: vreg(20),4597rm: vreg(17),4598high_half: false,4599},4600"8982B12E",4601"umlal v9.2d, v9.2d, v20.2s, v17.2s",4602));46034604insns.push((4605Inst::VecRRRLong {4606alu_op: VecRRRLongOp::Smull8,4607rd: writable_vreg(16),4608rn: vreg(12),4609rm: vreg(1),4610high_half: true,4611},4612"90C1214E",4613"smull2 v16.8h, v12.16b, v1.16b",4614));46154616insns.push((4617Inst::VecRRRLong {4618alu_op: VecRRRLongOp::Umull8,4619rd: writable_vreg(29),4620rn: vreg(22),4621rm: vreg(10),4622high_half: true,4623},4624"DDC22A6E",4625"umull2 v29.8h, v22.16b, v10.16b",4626));46274628insns.push((4629Inst::VecRRRLongMod {4630alu_op: VecRRRLongModOp::Umlal8,4631rd: writable_vreg(1),4632ri: vreg(1),4633rn: vreg(5),4634rm: vreg(15),4635high_half: true,4636},4637"A1802F6E",4638"umlal2 v1.8h, v1.8h, v5.16b, v15.16b",4639));46404641insns.push((4642Inst::VecRRRLong {4643alu_op: VecRRRLongOp::Smull16,4644rd: writable_vreg(2),4645rn: vreg(13),4646rm: vreg(6),4647high_half: true,4648},4649"A2C1664E",4650"smull2 v2.4s, v13.8h, v6.8h",4651));46524653insns.push((4654Inst::VecRRRLong {4655alu_op: VecRRRLongOp::Umull16,4656rd: writable_vreg(19),4657rn: vreg(18),4658rm: vreg(17),4659high_half: true,4660},4661"53C2716E",4662"umull2 v19.4s, v18.8h, v17.8h",4663));46644665insns.push((4666Inst::VecRRRLongMod {4667alu_op: VecRRRLongModOp::Umlal16,4668rd: writable_vreg(11),4669ri: vreg(11),4670rn: vreg(10),4671rm: vreg(12),4672high_half: true,4673},4674"4B816C6E",4675"umlal2 v11.4s, v11.4s, v10.8h, v12.8h",4676));46774678insns.push((4679Inst::VecRRRLong {4680alu_op: VecRRRLongOp::Smull32,4681rd: writable_vreg(8),4682rn: vreg(12),4683rm: vreg(14),4684high_half: true,4685},4686"88C1AE4E",4687"smull2 v8.2d, v12.4s, v14.4s",4688));46894690insns.push((4691Inst::VecRRRLong {4692alu_op: VecRRRLongOp::Umull32,4693rd: writable_vreg(4),4694rn: vreg(12),4695rm: vreg(16),4696high_half: true,4697},4698"84C1B06E",4699"umull2 v4.2d, v12.4s, v16.4s",4700));47014702insns.push((4703Inst::VecRRRLongMod {4704alu_op: VecRRRLongModOp::Umlal32,4705rd: writable_vreg(10),4706ri: vreg(10),4707rn: vreg(29),4708rm: vreg(2),4709high_half: true,4710},4711"AA83A26E",4712"umlal2 v10.2d, v10.2d, v29.4s, v2.4s",4713));47144715insns.push((4716Inst::VecRRR {4717alu_op: VecALUOp::Sqrdmulh,4718rd: writable_vreg(31),4719rn: vreg(0),4720rm: vreg(31),4721size: VectorSize::Size16x8,4722},4723"1FB47F6E",4724"sqrdmulh v31.8h, v0.8h, v31.8h",4725));47264727insns.push((4728Inst::VecRRR {4729alu_op: VecALUOp::Sqrdmulh,4730rd: writable_vreg(7),4731rn: vreg(7),4732rm: vreg(23),4733size: VectorSize::Size32x2,4734},4735"E7B4B72E",4736"sqrdmulh v7.2s, v7.2s, v23.2s",4737));47384739insns.push((4740Inst::VecMisc {4741op: VecMisc2::Not,4742rd: writable_vreg(20),4743rn: vreg(17),4744size: VectorSize::Size8x8,4745},4746"345A202E",4747"mvn v20.8b, v17.8b",4748));47494750insns.push((4751Inst::VecMisc {4752op: VecMisc2::Not,4753rd: writable_vreg(2),4754rn: vreg(1),4755size: VectorSize::Size32x4,4756},4757"2258206E",4758"mvn v2.16b, v1.16b",4759));47604761insns.push((4762Inst::VecMisc {4763op: VecMisc2::Neg,4764rd: writable_vreg(3),4765rn: vreg(7),4766size: VectorSize::Size8x8,4767},4768"E3B8202E",4769"neg v3.8b, v7.8b",4770));47714772insns.push((4773Inst::VecMisc {4774op: VecMisc2::Neg,4775rd: writable_vreg(8),4776rn: vreg(12),4777size: VectorSize::Size8x16,4778},4779"88B9206E",4780"neg v8.16b, v12.16b",4781));47824783insns.push((4784Inst::VecMisc {4785op: VecMisc2::Neg,4786rd: writable_vreg(0),4787rn: vreg(31),4788size: VectorSize::Size16x8,4789},4790"E0BB606E",4791"neg v0.8h, v31.8h",4792));47934794insns.push((4795Inst::VecMisc {4796op: VecMisc2::Neg,4797rd: writable_vreg(2),4798rn: vreg(3),4799size: VectorSize::Size32x4,4800},4801"62B8A06E",4802"neg v2.4s, v3.4s",4803));48044805insns.push((4806Inst::VecMisc {4807op: VecMisc2::Neg,4808rd: writable_vreg(10),4809rn: vreg(8),4810size: VectorSize::Size64x2,4811},4812"0AB9E06E",4813"neg v10.2d, v8.2d",4814));48154816insns.push((4817Inst::VecMisc {4818op: VecMisc2::Abs,4819rd: writable_vreg(3),4820rn: vreg(1),4821size: VectorSize::Size8x8,4822},4823"23B8200E",4824"abs v3.8b, v1.8b",4825));48264827insns.push((4828Inst::VecMisc {4829op: VecMisc2::Abs,4830rd: writable_vreg(1),4831rn: vreg(1),4832size: VectorSize::Size8x16,4833},4834"21B8204E",4835"abs v1.16b, v1.16b",4836));48374838insns.push((4839Inst::VecMisc {4840op: VecMisc2::Abs,4841rd: writable_vreg(29),4842rn: vreg(28),4843size: VectorSize::Size16x8,4844},4845"9DBB604E",4846"abs v29.8h, v28.8h",4847));48484849insns.push((4850Inst::VecMisc {4851op: VecMisc2::Abs,4852rd: writable_vreg(7),4853rn: vreg(8),4854size: VectorSize::Size32x4,4855},4856"07B9A04E",4857"abs v7.4s, v8.4s",4858));48594860insns.push((4861Inst::VecMisc {4862op: VecMisc2::Abs,4863rd: writable_vreg(1),4864rn: vreg(10),4865size: VectorSize::Size64x2,4866},4867"41B9E04E",4868"abs v1.2d, v10.2d",4869));48704871insns.push((4872Inst::VecMisc {4873op: VecMisc2::Fabs,4874rd: writable_vreg(15),4875rn: vreg(16),4876size: VectorSize::Size32x2,4877},4878"0FFAA00E",4879"fabs v15.2s, v16.2s",4880));48814882insns.push((4883Inst::VecMisc {4884op: VecMisc2::Fabs,4885rd: writable_vreg(15),4886rn: vreg(16),4887size: VectorSize::Size32x4,4888},4889"0FFAA04E",4890"fabs v15.4s, v16.4s",4891));48924893insns.push((4894Inst::VecMisc {4895op: VecMisc2::Fabs,4896rd: writable_vreg(3),4897rn: vreg(22),4898size: VectorSize::Size64x2,4899},4900"C3FAE04E",4901"fabs v3.2d, v22.2d",4902));49034904insns.push((4905Inst::VecMisc {4906op: VecMisc2::Fneg,4907rd: writable_vreg(31),4908rn: vreg(0),4909size: VectorSize::Size32x2,4910},4911"1FF8A02E",4912"fneg v31.2s, v0.2s",4913));49144915insns.push((4916Inst::VecMisc {4917op: VecMisc2::Fneg,4918rd: writable_vreg(31),4919rn: vreg(0),4920size: VectorSize::Size32x4,4921},4922"1FF8A06E",4923"fneg v31.4s, v0.4s",4924));49254926insns.push((4927Inst::VecMisc {4928op: VecMisc2::Fneg,4929rd: writable_vreg(11),4930rn: vreg(6),4931size: VectorSize::Size64x2,4932},4933"CBF8E06E",4934"fneg v11.2d, v6.2d",4935));49364937insns.push((4938Inst::VecMisc {4939op: VecMisc2::Fsqrt,4940rd: writable_vreg(18),4941rn: vreg(25),4942size: VectorSize::Size32x2,4943},4944"32FBA12E",4945"fsqrt v18.2s, v25.2s",4946));49474948insns.push((4949Inst::VecMisc {4950op: VecMisc2::Fsqrt,4951rd: writable_vreg(18),4952rn: vreg(25),4953size: VectorSize::Size32x4,4954},4955"32FBA16E",4956"fsqrt v18.4s, v25.4s",4957));49584959insns.push((4960Inst::VecMisc {4961op: VecMisc2::Fsqrt,4962rd: writable_vreg(7),4963rn: vreg(18),4964size: VectorSize::Size64x2,4965},4966"47FAE16E",4967"fsqrt v7.2d, v18.2d",4968));49694970insns.push((4971Inst::VecMisc {4972op: VecMisc2::Rev64,4973rd: writable_vreg(1),4974rn: vreg(10),4975size: VectorSize::Size32x4,4976},4977"4109A04E",4978"rev64 v1.4s, v10.4s",4979));49804981insns.push((4982Inst::VecMisc {4983op: VecMisc2::Fcvtzs,4984rd: writable_vreg(4),4985rn: vreg(22),4986size: VectorSize::Size32x4,4987},4988"C4BAA14E",4989"fcvtzs v4.4s, v22.4s",4990));49914992insns.push((4993Inst::VecMisc {4994op: VecMisc2::Fcvtzs,4995rd: writable_vreg(0),4996rn: vreg(31),4997size: VectorSize::Size64x2,4998},4999"E0BBE14E",5000"fcvtzs v0.2d, v31.2d",5001));50025003insns.push((5004Inst::VecMisc {5005op: VecMisc2::Fcvtzu,5006rd: writable_vreg(4),5007rn: vreg(26),5008size: VectorSize::Size32x2,5009},5010"44BBA12E",5011"fcvtzu v4.2s, v26.2s",5012));50135014insns.push((5015Inst::VecMisc {5016op: VecMisc2::Fcvtzu,5017rd: writable_vreg(29),5018rn: vreg(15),5019size: VectorSize::Size64x2,5020},5021"FDB9E16E",5022"fcvtzu v29.2d, v15.2d",5023));50245025insns.push((5026Inst::VecMisc {5027op: VecMisc2::Scvtf,5028rd: writable_vreg(20),5029rn: vreg(8),5030size: VectorSize::Size32x4,5031},5032"14D9214E",5033"scvtf v20.4s, v8.4s",5034));50355036insns.push((5037Inst::VecMisc {5038op: VecMisc2::Ucvtf,5039rd: writable_vreg(10),5040rn: vreg(19),5041size: VectorSize::Size64x2,5042},5043"6ADA616E",5044"ucvtf v10.2d, v19.2d",5045));50465047insns.push((5048Inst::VecMisc {5049op: VecMisc2::Frintn,5050rd: writable_vreg(20),5051rn: vreg(7),5052size: VectorSize::Size32x2,5053},5054"F488210E",5055"frintn v20.2s, v7.2s",5056));50575058insns.push((5059Inst::VecMisc {5060op: VecMisc2::Frintn,5061rd: writable_vreg(11),5062rn: vreg(18),5063size: VectorSize::Size32x4,5064},5065"4B8A214E",5066"frintn v11.4s, v18.4s",5067));50685069insns.push((5070Inst::VecMisc {5071op: VecMisc2::Frintn,5072rd: writable_vreg(12),5073rn: vreg(17),5074size: VectorSize::Size64x2,5075},5076"2C8A614E",5077"frintn v12.2d, v17.2d",5078));50795080insns.push((5081Inst::VecMisc {5082op: VecMisc2::Frintz,5083rd: writable_vreg(1),5084rn: vreg(30),5085size: VectorSize::Size32x2,5086},5087"C19BA10E",5088"frintz v1.2s, v30.2s",5089));50905091insns.push((5092Inst::VecMisc {5093op: VecMisc2::Frintz,5094rd: writable_vreg(11),5095rn: vreg(18),5096size: VectorSize::Size32x4,5097},5098"4B9AA14E",5099"frintz v11.4s, v18.4s",5100));51015102insns.push((5103Inst::VecMisc {5104op: VecMisc2::Frintz,5105rd: writable_vreg(12),5106rn: vreg(17),5107size: VectorSize::Size64x2,5108},5109"2C9AE14E",5110"frintz v12.2d, v17.2d",5111));51125113insns.push((5114Inst::VecMisc {5115op: VecMisc2::Frintm,5116rd: writable_vreg(15),5117rn: vreg(7),5118size: VectorSize::Size32x2,5119},5120"EF98210E",5121"frintm v15.2s, v7.2s",5122));51235124insns.push((5125Inst::VecMisc {5126op: VecMisc2::Frintm,5127rd: writable_vreg(11),5128rn: vreg(18),5129size: VectorSize::Size32x4,5130},5131"4B9A214E",5132"frintm v11.4s, v18.4s",5133));51345135insns.push((5136Inst::VecMisc {5137op: VecMisc2::Frintm,5138rd: writable_vreg(12),5139rn: vreg(17),5140size: VectorSize::Size64x2,5141},5142"2C9A614E",5143"frintm v12.2d, v17.2d",5144));51455146insns.push((5147Inst::VecMisc {5148op: VecMisc2::Frintp,5149rd: writable_vreg(3),5150rn: vreg(4),5151size: VectorSize::Size32x2,5152},5153"8388A10E",5154"frintp v3.2s, v4.2s",5155));51565157insns.push((5158Inst::VecMisc {5159op: VecMisc2::Frintp,5160rd: writable_vreg(11),5161rn: vreg(18),5162size: VectorSize::Size32x4,5163},5164"4B8AA14E",5165"frintp v11.4s, v18.4s",5166));51675168insns.push((5169Inst::VecMisc {5170op: VecMisc2::Frintp,5171rd: writable_vreg(12),5172rn: vreg(17),5173size: VectorSize::Size64x2,5174},5175"2C8AE14E",5176"frintp v12.2d, v17.2d",5177));51785179insns.push((5180Inst::VecMisc {5181op: VecMisc2::Cnt,5182rd: writable_vreg(23),5183rn: vreg(5),5184size: VectorSize::Size8x8,5185},5186"B758200E",5187"cnt v23.8b, v5.8b",5188));51895190insns.push((5191Inst::VecMisc {5192op: VecMisc2::Fcmeq0,5193rd: writable_vreg(5),5194rn: vreg(2),5195size: VectorSize::Size32x4,5196},5197"45D8A04E",5198"fcmeq v5.4s, v2.4s, #0.0",5199));52005201insns.push((5202Inst::VecMisc {5203op: VecMisc2::Fcmge0,5204rd: writable_vreg(3),5205rn: vreg(1),5206size: VectorSize::Size64x2,5207},5208"23C8E06E",5209"fcmge v3.2d, v1.2d, #0.0",5210));52115212insns.push((5213Inst::VecMisc {5214op: VecMisc2::Fcmgt0,5215rd: writable_vreg(5),5216rn: vreg(7),5217size: VectorSize::Size32x4,5218},5219"E5C8A04E",5220"fcmgt v5.4s, v7.4s, #0.0",5221));52225223insns.push((5224Inst::VecMisc {5225op: VecMisc2::Fcmle0,5226rd: writable_vreg(10),5227rn: vreg(2),5228size: VectorSize::Size32x4,5229},5230"4AD8A06E",5231"fcmle v10.4s, v2.4s, #0.0",5232));52335234insns.push((5235Inst::VecMisc {5236op: VecMisc2::Fcmlt0,5237rd: writable_vreg(12),5238rn: vreg(12),5239size: VectorSize::Size64x2,5240},5241"8CE9E04E",5242"fcmlt v12.2d, v12.2d, #0.0",5243));52445245insns.push((5246Inst::VecMisc {5247op: VecMisc2::Cmeq0,5248rd: writable_vreg(22),5249rn: vreg(27),5250size: VectorSize::Size16x8,5251},5252"769B604E",5253"cmeq v22.8h, v27.8h, #0",5254));52555256insns.push((5257Inst::VecMisc {5258op: VecMisc2::Cmge0,5259rd: writable_vreg(12),5260rn: vreg(27),5261size: VectorSize::Size16x8,5262},5263"6C8B606E",5264"cmge v12.8h, v27.8h, #0",5265));52665267insns.push((5268Inst::VecMisc {5269op: VecMisc2::Cmgt0,5270rd: writable_vreg(12),5271rn: vreg(27),5272size: VectorSize::Size8x16,5273},5274"6C8B204E",5275"cmgt v12.16b, v27.16b, #0",5276));52775278insns.push((5279Inst::VecMisc {5280op: VecMisc2::Cmle0,5281rd: writable_vreg(1),5282rn: vreg(27),5283size: VectorSize::Size32x4,5284},5285"619BA06E",5286"cmle v1.4s, v27.4s, #0",5287));52885289insns.push((5290Inst::VecMisc {5291op: VecMisc2::Cmlt0,5292rd: writable_vreg(0),5293rn: vreg(7),5294size: VectorSize::Size64x2,5295},5296"E0A8E04E",5297"cmlt v0.2d, v7.2d, #0",5298));52995300insns.push((5301Inst::VecLanes {5302op: VecLanesOp::Uminv,5303rd: writable_vreg(0),5304rn: vreg(31),5305size: VectorSize::Size8x8,5306},5307"E0AB312E",5308"uminv b0, v31.8b",5309));53105311insns.push((5312Inst::VecLanes {5313op: VecLanesOp::Uminv,5314rd: writable_vreg(2),5315rn: vreg(1),5316size: VectorSize::Size8x16,5317},5318"22A8316E",5319"uminv b2, v1.16b",5320));53215322insns.push((5323Inst::VecLanes {5324op: VecLanesOp::Uminv,5325rd: writable_vreg(3),5326rn: vreg(11),5327size: VectorSize::Size16x8,5328},5329"63A9716E",5330"uminv h3, v11.8h",5331));53325333insns.push((5334Inst::VecLanes {5335op: VecLanesOp::Uminv,5336rd: writable_vreg(18),5337rn: vreg(4),5338size: VectorSize::Size32x4,5339},5340"92A8B16E",5341"uminv s18, v4.4s",5342));53435344insns.push((5345Inst::VecLanes {5346op: VecLanesOp::Addv,5347rd: writable_vreg(2),5348rn: vreg(29),5349size: VectorSize::Size8x16,5350},5351"A2BB314E",5352"addv b2, v29.16b",5353));53545355insns.push((5356Inst::VecLanes {5357op: VecLanesOp::Addv,5358rd: writable_vreg(15),5359rn: vreg(7),5360size: VectorSize::Size16x4,5361},5362"EFB8710E",5363"addv h15, v7.4h",5364));53655366insns.push((5367Inst::VecLanes {5368op: VecLanesOp::Addv,5369rd: writable_vreg(3),5370rn: vreg(21),5371size: VectorSize::Size16x8,5372},5373"A3BA714E",5374"addv h3, v21.8h",5375));53765377insns.push((5378Inst::VecLanes {5379op: VecLanesOp::Addv,5380rd: writable_vreg(18),5381rn: vreg(5),5382size: VectorSize::Size32x4,5383},5384"B2B8B14E",5385"addv s18, v5.4s",5386));53875388insns.push((5389Inst::VecShiftImm {5390op: VecShiftImmOp::Shl,5391rd: writable_vreg(27),5392rn: vreg(5),5393imm: 7,5394size: VectorSize::Size8x16,5395},5396"BB540F4F",5397"shl v27.16b, v5.16b, #7",5398));53995400insns.push((5401Inst::VecShiftImm {5402op: VecShiftImmOp::Shl,5403rd: writable_vreg(1),5404rn: vreg(30),5405imm: 0,5406size: VectorSize::Size8x16,5407},5408"C157084F",5409"shl v1.16b, v30.16b, #0",5410));54115412insns.push((5413Inst::VecShiftImm {5414op: VecShiftImmOp::Sshr,5415rd: writable_vreg(26),5416rn: vreg(6),5417imm: 16,5418size: VectorSize::Size16x8,5419},5420"DA04104F",5421"sshr v26.8h, v6.8h, #16",5422));54235424insns.push((5425Inst::VecShiftImm {5426op: VecShiftImmOp::Sshr,5427rd: writable_vreg(3),5428rn: vreg(19),5429imm: 1,5430size: VectorSize::Size16x8,5431},5432"63061F4F",5433"sshr v3.8h, v19.8h, #1",5434));54355436insns.push((5437Inst::VecShiftImm {5438op: VecShiftImmOp::Ushr,5439rd: writable_vreg(25),5440rn: vreg(6),5441imm: 8,5442size: VectorSize::Size8x8,5443},5444"D904082F",5445"ushr v25.8b, v6.8b, #8",5446));54475448insns.push((5449Inst::VecShiftImm {5450op: VecShiftImmOp::Ushr,5451rd: writable_vreg(5),5452rn: vreg(21),5453imm: 1,5454size: VectorSize::Size8x8,5455},5456"A5060F2F",5457"ushr v5.8b, v21.8b, #1",5458));54595460insns.push((5461Inst::VecShiftImm {5462op: VecShiftImmOp::Ushr,5463rd: writable_vreg(25),5464rn: vreg(6),5465imm: 8,5466size: VectorSize::Size8x16,5467},5468"D904086F",5469"ushr v25.16b, v6.16b, #8",5470));54715472insns.push((5473Inst::VecShiftImm {5474op: VecShiftImmOp::Ushr,5475rd: writable_vreg(5),5476rn: vreg(21),5477imm: 1,5478size: VectorSize::Size8x16,5479},5480"A5060F6F",5481"ushr v5.16b, v21.16b, #1",5482));54835484insns.push((5485Inst::VecShiftImm {5486op: VecShiftImmOp::Ushr,5487rd: writable_vreg(25),5488rn: vreg(6),5489imm: 16,5490size: VectorSize::Size16x4,5491},5492"D904102F",5493"ushr v25.4h, v6.4h, #16",5494));54955496insns.push((5497Inst::VecShiftImm {5498op: VecShiftImmOp::Ushr,5499rd: writable_vreg(5),5500rn: vreg(21),5501imm: 1,5502size: VectorSize::Size16x4,5503},5504"A5061F2F",5505"ushr v5.4h, v21.4h, #1",5506));55075508insns.push((5509Inst::VecShiftImm {5510op: VecShiftImmOp::Ushr,5511rd: writable_vreg(25),5512rn: vreg(6),5513imm: 16,5514size: VectorSize::Size16x8,5515},5516"D904106F",5517"ushr v25.8h, v6.8h, #16",5518));55195520insns.push((5521Inst::VecShiftImm {5522op: VecShiftImmOp::Ushr,5523rd: writable_vreg(5),5524rn: vreg(21),5525imm: 1,5526size: VectorSize::Size16x8,5527},5528"A5061F6F",5529"ushr v5.8h, v21.8h, #1",5530));55315532insns.push((5533Inst::VecShiftImm {5534op: VecShiftImmOp::Ushr,5535rd: writable_vreg(25),5536rn: vreg(6),5537imm: 32,5538size: VectorSize::Size32x2,5539},5540"D904202F",5541"ushr v25.2s, v6.2s, #32",5542));55435544insns.push((5545Inst::VecShiftImm {5546op: VecShiftImmOp::Ushr,5547rd: writable_vreg(5),5548rn: vreg(21),5549imm: 1,5550size: VectorSize::Size32x2,5551},5552"A5063F2F",5553"ushr v5.2s, v21.2s, #1",5554));55555556insns.push((5557Inst::VecShiftImm {5558op: VecShiftImmOp::Ushr,5559rd: writable_vreg(25),5560rn: vreg(6),5561imm: 32,5562size: VectorSize::Size32x4,5563},5564"D904206F",5565"ushr v25.4s, v6.4s, #32",5566));55675568insns.push((5569Inst::VecShiftImm {5570op: VecShiftImmOp::Ushr,5571rd: writable_vreg(5),5572rn: vreg(21),5573imm: 1,5574size: VectorSize::Size32x4,5575},5576"A5063F6F",5577"ushr v5.4s, v21.4s, #1",5578));55795580insns.push((5581Inst::VecShiftImm {5582op: VecShiftImmOp::Ushr,5583rd: writable_vreg(25),5584rn: vreg(6),5585imm: 64,5586size: VectorSize::Size64x2,5587},5588"D904406F",5589"ushr v25.2d, v6.2d, #64",5590));55915592insns.push((5593Inst::VecShiftImm {5594op: VecShiftImmOp::Ushr,5595rd: writable_vreg(5),5596rn: vreg(21),5597imm: 1,5598size: VectorSize::Size64x2,5599},5600"A5067F6F",5601"ushr v5.2d, v21.2d, #1",5602));56035604insns.push((5605Inst::VecShiftImm {5606op: VecShiftImmOp::Shl,5607rd: writable_vreg(22),5608rn: vreg(13),5609imm: 63,5610size: VectorSize::Size64x2,5611},5612"B6557F4F",5613"shl v22.2d, v13.2d, #63",5614));56155616insns.push((5617Inst::VecShiftImm {5618op: VecShiftImmOp::Shl,5619rd: writable_vreg(23),5620rn: vreg(9),5621imm: 0,5622size: VectorSize::Size64x2,5623},5624"3755404F",5625"shl v23.2d, v9.2d, #0",5626));56275628insns.push((5629Inst::VecExtract {5630rd: writable_vreg(1),5631rn: vreg(30),5632rm: vreg(17),5633imm4: 0,5634},5635"C103116E",5636"ext v1.16b, v30.16b, v17.16b, #0",5637));56385639insns.push((5640Inst::VecExtract {5641rd: writable_vreg(1),5642rn: vreg(30),5643rm: vreg(17),5644imm4: 8,5645},5646"C143116E",5647"ext v1.16b, v30.16b, v17.16b, #8",5648));56495650insns.push((5651Inst::VecExtract {5652rd: writable_vreg(1),5653rn: vreg(30),5654rm: vreg(17),5655imm4: 15,5656},5657"C17B116E",5658"ext v1.16b, v30.16b, v17.16b, #15",5659));56605661insns.push((5662Inst::VecTbl {5663rd: writable_vreg(0),5664rn: vreg(31),5665rm: vreg(16),5666},5667"E003104E",5668"tbl v0.16b, { v31.16b }, v16.16b",5669));56705671insns.push((5672Inst::VecTblExt {5673rd: writable_vreg(4),5674ri: vreg(4),5675rn: vreg(12),5676rm: vreg(23),5677},5678"8411174E",5679"tbx v4.16b, v4.16b, { v12.16b }, v23.16b",5680));56815682insns.push((5683Inst::VecTbl2 {5684rd: writable_vreg(16),5685rn: vreg(31),5686rn2: vreg(0),5687rm: vreg(26),5688},5689"F0231A4E",5690"tbl v16.16b, { v31.16b, v0.16b }, v26.16b",5691));56925693insns.push((5694Inst::VecTbl2Ext {5695rd: writable_vreg(3),5696ri: vreg(3),5697rn: vreg(11),5698rn2: vreg(12),5699rm: vreg(19),5700},5701"6331134E",5702"tbx v3.16b, v3.16b, { v11.16b, v12.16b }, v19.16b",5703));57045705insns.push((5706Inst::VecLoadReplicate {5707rd: writable_vreg(31),5708rn: xreg(0),5709size: VectorSize::Size64x2,5710flags: MemFlags::trusted(),5711},5712"1FCC404D",5713"ld1r { v31.2d }, [x0]",5714));57155716insns.push((5717Inst::VecLoadReplicate {5718rd: writable_vreg(0),5719rn: xreg(25),5720size: VectorSize::Size8x8,5721flags: MemFlags::trusted(),5722},5723"20C3400D",5724"ld1r { v0.8b }, [x25]",5725));57265727insns.push((5728Inst::VecCSel {5729rd: writable_vreg(5),5730rn: vreg(10),5731rm: vreg(19),5732cond: Cond::Gt,5733},5734"6C000054651EB34E02000014451DAA4E",5735"vcsel v5.16b, v10.16b, v19.16b, gt (if-then-else diamond)",5736));57375738insns.push((5739Inst::Extend {5740rd: writable_xreg(3),5741rn: xreg(5),5742signed: false,5743from_bits: 1,5744to_bits: 32,5745},5746"A3000012",5747"and w3, w5, #1",5748));5749insns.push((5750Inst::Extend {5751rd: writable_xreg(3),5752rn: xreg(5),5753signed: false,5754from_bits: 1,5755to_bits: 64,5756},5757"A3000012",5758"and w3, w5, #1",5759));5760insns.push((5761Inst::Extend {5762rd: writable_xreg(10),5763rn: xreg(21),5764signed: true,5765from_bits: 1,5766to_bits: 32,5767},5768"AA020013",5769"sbfx w10, w21, #0, #1",5770));5771insns.push((5772Inst::Extend {5773rd: writable_xreg(1),5774rn: xreg(2),5775signed: true,5776from_bits: 1,5777to_bits: 64,5778},5779"41004093",5780"sbfx x1, x2, #0, #1",5781));5782insns.push((5783Inst::Extend {5784rd: writable_xreg(1),5785rn: xreg(2),5786signed: false,5787from_bits: 8,5788to_bits: 32,5789},5790"411C0053",5791"uxtb w1, w2",5792));5793insns.push((5794Inst::Extend {5795rd: writable_xreg(1),5796rn: xreg(2),5797signed: true,5798from_bits: 8,5799to_bits: 32,5800},5801"411C0013",5802"sxtb w1, w2",5803));5804insns.push((5805Inst::Extend {5806rd: writable_xreg(1),5807rn: xreg(2),5808signed: false,5809from_bits: 16,5810to_bits: 32,5811},5812"413C0053",5813"uxth w1, w2",5814));5815insns.push((5816Inst::Extend {5817rd: writable_xreg(1),5818rn: xreg(2),5819signed: true,5820from_bits: 16,5821to_bits: 32,5822},5823"413C0013",5824"sxth w1, w2",5825));5826insns.push((5827Inst::Extend {5828rd: writable_xreg(1),5829rn: xreg(2),5830signed: false,5831from_bits: 8,5832to_bits: 64,5833},5834"411C0053",5835"uxtb w1, w2",5836));5837insns.push((5838Inst::Extend {5839rd: writable_xreg(1),5840rn: xreg(2),5841signed: true,5842from_bits: 8,5843to_bits: 64,5844},5845"411C4093",5846"sxtb x1, w2",5847));5848insns.push((5849Inst::Extend {5850rd: writable_xreg(1),5851rn: xreg(2),5852signed: false,5853from_bits: 16,5854to_bits: 64,5855},5856"413C0053",5857"uxth w1, w2",5858));5859insns.push((5860Inst::Extend {5861rd: writable_xreg(1),5862rn: xreg(2),5863signed: true,5864from_bits: 16,5865to_bits: 64,5866},5867"413C4093",5868"sxth x1, w2",5869));5870insns.push((5871Inst::Extend {5872rd: writable_xreg(1),5873rn: xreg(2),5874signed: false,5875from_bits: 32,5876to_bits: 64,5877},5878"E103022A",5879"mov w1, w2",5880));5881insns.push((5882Inst::Extend {5883rd: writable_xreg(1),5884rn: xreg(2),5885signed: true,5886from_bits: 32,5887to_bits: 64,5888},5889"417C4093",5890"sxtw x1, w2",5891));58925893insns.push((5894Inst::Jump {5895dest: BranchTarget::ResolvedOffset(64),5896},5897"10000014",5898"b 64",5899));59005901insns.push((5902Inst::TrapIf {5903trap_code: TrapCode::STACK_OVERFLOW,5904kind: CondBrKind::NotZero(xreg(8), OperandSize::Size64),5905},5906"280000B51FC10000",5907"cbnz x8, #trap=stk_ovf",5908));5909insns.push((5910Inst::TrapIf {5911trap_code: TrapCode::STACK_OVERFLOW,5912kind: CondBrKind::Zero(xreg(8), OperandSize::Size64),5913},5914"280000B41FC10000",5915"cbz x8, #trap=stk_ovf",5916));5917insns.push((5918Inst::TrapIf {5919trap_code: TrapCode::STACK_OVERFLOW,5920kind: CondBrKind::Cond(Cond::Ne),5921},5922"210000541FC10000",5923"b.ne #trap=stk_ovf",5924));5925insns.push((5926Inst::TrapIf {5927trap_code: TrapCode::STACK_OVERFLOW,5928kind: CondBrKind::Cond(Cond::Eq),5929},5930"200000541FC10000",5931"b.eq #trap=stk_ovf",5932));5933insns.push((5934Inst::TrapIf {5935trap_code: TrapCode::STACK_OVERFLOW,5936kind: CondBrKind::Cond(Cond::Lo),5937},5938"230000541FC10000",5939"b.lo #trap=stk_ovf",5940));5941insns.push((5942Inst::TrapIf {5943trap_code: TrapCode::STACK_OVERFLOW,5944kind: CondBrKind::Cond(Cond::Hs),5945},5946"220000541FC10000",5947"b.hs #trap=stk_ovf",5948));5949insns.push((5950Inst::TrapIf {5951trap_code: TrapCode::STACK_OVERFLOW,5952kind: CondBrKind::Cond(Cond::Pl),5953},5954"250000541FC10000",5955"b.pl #trap=stk_ovf",5956));5957insns.push((5958Inst::TrapIf {5959trap_code: TrapCode::STACK_OVERFLOW,5960kind: CondBrKind::Cond(Cond::Mi),5961},5962"240000541FC10000",5963"b.mi #trap=stk_ovf",5964));5965insns.push((5966Inst::TrapIf {5967trap_code: TrapCode::STACK_OVERFLOW,5968kind: CondBrKind::Cond(Cond::Vc),5969},5970"270000541FC10000",5971"b.vc #trap=stk_ovf",5972));5973insns.push((5974Inst::TrapIf {5975trap_code: TrapCode::STACK_OVERFLOW,5976kind: CondBrKind::Cond(Cond::Vs),5977},5978"260000541FC10000",5979"b.vs #trap=stk_ovf",5980));5981insns.push((5982Inst::TrapIf {5983trap_code: TrapCode::STACK_OVERFLOW,5984kind: CondBrKind::Cond(Cond::Ls),5985},5986"290000541FC10000",5987"b.ls #trap=stk_ovf",5988));5989insns.push((5990Inst::TrapIf {5991trap_code: TrapCode::STACK_OVERFLOW,5992kind: CondBrKind::Cond(Cond::Hi),5993},5994"280000541FC10000",5995"b.hi #trap=stk_ovf",5996));5997insns.push((5998Inst::TrapIf {5999trap_code: TrapCode::STACK_OVERFLOW,6000kind: CondBrKind::Cond(Cond::Lt),6001},6002"2B0000541FC10000",6003"b.lt #trap=stk_ovf",6004));6005insns.push((6006Inst::TrapIf {6007trap_code: TrapCode::STACK_OVERFLOW,6008kind: CondBrKind::Cond(Cond::Ge),6009},6010"2A0000541FC10000",6011"b.ge #trap=stk_ovf",6012));6013insns.push((6014Inst::TrapIf {6015trap_code: TrapCode::STACK_OVERFLOW,6016kind: CondBrKind::Cond(Cond::Le),6017},6018"2D0000541FC10000",6019"b.le #trap=stk_ovf",6020));6021insns.push((6022Inst::TrapIf {6023trap_code: TrapCode::STACK_OVERFLOW,6024kind: CondBrKind::Cond(Cond::Gt),6025},6026"2C0000541FC10000",6027"b.gt #trap=stk_ovf",6028));6029insns.push((6030Inst::TrapIf {6031trap_code: TrapCode::STACK_OVERFLOW,6032kind: CondBrKind::Cond(Cond::Nv),6033},6034"2F0000541FC10000",6035"b.nv #trap=stk_ovf",6036));6037insns.push((6038Inst::TrapIf {6039trap_code: TrapCode::STACK_OVERFLOW,6040kind: CondBrKind::Cond(Cond::Al),6041},6042"2E0000541FC10000",6043"b.al #trap=stk_ovf",6044));60456046insns.push((6047Inst::CondBr {6048taken: BranchTarget::ResolvedOffset(64),6049not_taken: BranchTarget::ResolvedOffset(128),6050kind: CondBrKind::Cond(Cond::Le),6051},6052"0D02005420000014",6053"b.le 64 ; b 128",6054));60556056insns.push((6057Inst::Call {6058info: Box::new(CallInfo::empty(6059ExternalName::testcase("test0"),6060CallConv::SystemV,6061)),6062},6063"00000094",6064"bl 0",6065));60666067insns.push((6068Inst::CallInd {6069info: Box::new(CallInfo::empty(xreg(10), CallConv::SystemV)),6070},6071"40013FD6",6072"blr x10",6073));60746075insns.push((6076Inst::IndirectBr {6077rn: xreg(3),6078targets: vec![],6079},6080"60001FD6",6081"br x3",6082));60836084insns.push((Inst::Brk, "00003ED4", "brk #0xf000"));60856086insns.push((6087Inst::Adr {6088rd: writable_xreg(15),6089off: (1 << 20) - 4,6090},6091"EFFF7F10",6092"adr x15, pc+1048572",6093));60946095insns.push((6096Inst::Adrp {6097rd: writable_xreg(8),6098off: 0,6099},6100"08000090",6101"adrp x8, pc+0",6102));61036104insns.push((6105Inst::Adrp {6106rd: writable_xreg(3),6107off: 16,6108},6109"83000090",6110"adrp x3, pc+65536",6111));61126113insns.push((6114Inst::FpuMove64 {6115rd: writable_vreg(8),6116rn: vreg(4),6117},6118"8840601E",6119"fmov d8, d4",6120));61216122insns.push((6123Inst::FpuMove32 {6124rd: writable_vreg(8),6125rn: vreg(4),6126},6127"8840201E",6128"fmov s8, s4",6129));61306131insns.push((6132Inst::FpuMove128 {6133rd: writable_vreg(17),6134rn: vreg(26),6135},6136"511FBA4E",6137"mov v17.16b, v26.16b",6138));61396140insns.push((6141Inst::FpuMoveFromVec {6142rd: writable_vreg(1),6143rn: vreg(30),6144idx: 2,6145size: VectorSize::Size32x4,6146},6147"C107145E",6148"mov s1, v30.s[2]",6149));61506151insns.push((6152Inst::FpuMoveFromVec {6153rd: writable_vreg(23),6154rn: vreg(11),6155idx: 0,6156size: VectorSize::Size64x2,6157},6158"7705085E",6159"mov d23, v11.d[0]",6160));61616162insns.push((6163Inst::FpuExtend {6164rd: writable_vreg(31),6165rn: vreg(0),6166size: ScalarSize::Size32,6167},6168"1F40201E",6169"fmov s31, s0",6170));61716172insns.push((6173Inst::FpuExtend {6174rd: writable_vreg(31),6175rn: vreg(0),6176size: ScalarSize::Size64,6177},6178"1F40601E",6179"fmov d31, d0",6180));61816182insns.push((6183Inst::FpuRR {6184fpu_op: FPUOp1::Abs,6185size: ScalarSize::Size32,6186rd: writable_vreg(15),6187rn: vreg(30),6188},6189"CFC3201E",6190"fabs s15, s30",6191));61926193insns.push((6194Inst::FpuRR {6195fpu_op: FPUOp1::Abs,6196size: ScalarSize::Size64,6197rd: writable_vreg(15),6198rn: vreg(30),6199},6200"CFC3601E",6201"fabs d15, d30",6202));62036204insns.push((6205Inst::FpuRR {6206fpu_op: FPUOp1::Neg,6207size: ScalarSize::Size32,6208rd: writable_vreg(15),6209rn: vreg(30),6210},6211"CF43211E",6212"fneg s15, s30",6213));62146215insns.push((6216Inst::FpuRR {6217fpu_op: FPUOp1::Neg,6218size: ScalarSize::Size64,6219rd: writable_vreg(15),6220rn: vreg(30),6221},6222"CF43611E",6223"fneg d15, d30",6224));62256226insns.push((6227Inst::FpuRR {6228fpu_op: FPUOp1::Sqrt,6229size: ScalarSize::Size32,6230rd: writable_vreg(15),6231rn: vreg(30),6232},6233"CFC3211E",6234"fsqrt s15, s30",6235));62366237insns.push((6238Inst::FpuRR {6239fpu_op: FPUOp1::Sqrt,6240size: ScalarSize::Size64,6241rd: writable_vreg(15),6242rn: vreg(30),6243},6244"CFC3611E",6245"fsqrt d15, d30",6246));62476248insns.push((6249Inst::FpuRR {6250fpu_op: FPUOp1::Cvt32To64,6251size: ScalarSize::Size32,6252rd: writable_vreg(15),6253rn: vreg(30),6254},6255"CFC3221E",6256"fcvt d15, s30",6257));62586259insns.push((6260Inst::FpuRR {6261fpu_op: FPUOp1::Cvt64To32,6262size: ScalarSize::Size64,6263rd: writable_vreg(15),6264rn: vreg(30),6265},6266"CF43621E",6267"fcvt s15, d30",6268));62696270insns.push((6271Inst::FpuRRR {6272fpu_op: FPUOp2::Add,6273size: ScalarSize::Size32,6274rd: writable_vreg(15),6275rn: vreg(30),6276rm: vreg(31),6277},6278"CF2B3F1E",6279"fadd s15, s30, s31",6280));62816282insns.push((6283Inst::FpuRRR {6284fpu_op: FPUOp2::Add,6285size: ScalarSize::Size64,6286rd: writable_vreg(15),6287rn: vreg(30),6288rm: vreg(31),6289},6290"CF2B7F1E",6291"fadd d15, d30, d31",6292));62936294insns.push((6295Inst::FpuRRR {6296fpu_op: FPUOp2::Sub,6297size: ScalarSize::Size32,6298rd: writable_vreg(15),6299rn: vreg(30),6300rm: vreg(31),6301},6302"CF3B3F1E",6303"fsub s15, s30, s31",6304));63056306insns.push((6307Inst::FpuRRR {6308fpu_op: FPUOp2::Sub,6309size: ScalarSize::Size64,6310rd: writable_vreg(15),6311rn: vreg(30),6312rm: vreg(31),6313},6314"CF3B7F1E",6315"fsub d15, d30, d31",6316));63176318insns.push((6319Inst::FpuRRR {6320fpu_op: FPUOp2::Mul,6321size: ScalarSize::Size32,6322rd: writable_vreg(15),6323rn: vreg(30),6324rm: vreg(31),6325},6326"CF0B3F1E",6327"fmul s15, s30, s31",6328));63296330insns.push((6331Inst::FpuRRR {6332fpu_op: FPUOp2::Mul,6333size: ScalarSize::Size64,6334rd: writable_vreg(15),6335rn: vreg(30),6336rm: vreg(31),6337},6338"CF0B7F1E",6339"fmul d15, d30, d31",6340));63416342insns.push((6343Inst::FpuRRR {6344fpu_op: FPUOp2::Div,6345size: ScalarSize::Size32,6346rd: writable_vreg(15),6347rn: vreg(30),6348rm: vreg(31),6349},6350"CF1B3F1E",6351"fdiv s15, s30, s31",6352));63536354insns.push((6355Inst::FpuRRR {6356fpu_op: FPUOp2::Div,6357size: ScalarSize::Size64,6358rd: writable_vreg(15),6359rn: vreg(30),6360rm: vreg(31),6361},6362"CF1B7F1E",6363"fdiv d15, d30, d31",6364));63656366insns.push((6367Inst::FpuRRR {6368fpu_op: FPUOp2::Max,6369size: ScalarSize::Size32,6370rd: writable_vreg(15),6371rn: vreg(30),6372rm: vreg(31),6373},6374"CF4B3F1E",6375"fmax s15, s30, s31",6376));63776378insns.push((6379Inst::FpuRRR {6380fpu_op: FPUOp2::Max,6381size: ScalarSize::Size64,6382rd: writable_vreg(15),6383rn: vreg(30),6384rm: vreg(31),6385},6386"CF4B7F1E",6387"fmax d15, d30, d31",6388));63896390insns.push((6391Inst::FpuRRR {6392fpu_op: FPUOp2::Min,6393size: ScalarSize::Size32,6394rd: writable_vreg(15),6395rn: vreg(30),6396rm: vreg(31),6397},6398"CF5B3F1E",6399"fmin s15, s30, s31",6400));64016402insns.push((6403Inst::FpuRRR {6404fpu_op: FPUOp2::Min,6405size: ScalarSize::Size64,6406rd: writable_vreg(15),6407rn: vreg(30),6408rm: vreg(31),6409},6410"CF5B7F1E",6411"fmin d15, d30, d31",6412));64136414insns.push((6415Inst::FpuRRRR {6416fpu_op: FPUOp3::MAdd,6417size: ScalarSize::Size32,6418rd: writable_vreg(15),6419rn: vreg(30),6420rm: vreg(31),6421ra: vreg(1),6422},6423"CF071F1F",6424"fmadd s15, s30, s31, s1",6425));64266427insns.push((6428Inst::FpuRRRR {6429fpu_op: FPUOp3::MSub,6430size: ScalarSize::Size32,6431rd: writable_vreg(15),6432rn: vreg(30),6433rm: vreg(31),6434ra: vreg(1),6435},6436"CF871F1F",6437"fmsub s15, s30, s31, s1",6438));64396440insns.push((6441Inst::FpuRRRR {6442fpu_op: FPUOp3::MAdd,6443size: ScalarSize::Size64,6444rd: writable_vreg(15),6445rn: vreg(30),6446rm: vreg(31),6447ra: vreg(1),6448},6449"CF075F1F",6450"fmadd d15, d30, d31, d1",6451));64526453insns.push((6454Inst::FpuRRRR {6455fpu_op: FPUOp3::MSub,6456size: ScalarSize::Size64,6457rd: writable_vreg(15),6458rn: vreg(30),6459rm: vreg(31),6460ra: vreg(1),6461},6462"CF875F1F",6463"fmsub d15, d30, d31, d1",6464));64656466insns.push((6467Inst::FpuRRRR {6468fpu_op: FPUOp3::NMAdd,6469size: ScalarSize::Size64,6470rd: writable_vreg(15),6471rn: vreg(30),6472rm: vreg(31),6473ra: vreg(1),6474},6475"CF077F1F",6476"fnmadd d15, d30, d31, d1",6477));64786479insns.push((6480Inst::FpuRRRR {6481fpu_op: FPUOp3::NMSub,6482size: ScalarSize::Size64,6483rd: writable_vreg(15),6484rn: vreg(30),6485rm: vreg(31),6486ra: vreg(1),6487},6488"CF877F1F",6489"fnmsub d15, d30, d31, d1",6490));64916492insns.push((6493Inst::FpuRRI {6494fpu_op: FPUOpRI::UShr32(FPURightShiftImm::maybe_from_u8(32, 32).unwrap()),6495rd: writable_vreg(2),6496rn: vreg(5),6497},6498"A204202F",6499"ushr v2.2s, v5.2s, #32",6500));65016502insns.push((6503Inst::FpuRRI {6504fpu_op: FPUOpRI::UShr64(FPURightShiftImm::maybe_from_u8(63, 64).unwrap()),6505rd: writable_vreg(2),6506rn: vreg(5),6507},6508"A204417F",6509"ushr d2, d5, #63",6510));65116512insns.push((6513Inst::FpuRRIMod {6514fpu_op: FPUOpRIMod::Sli32(FPULeftShiftImm::maybe_from_u8(31, 32).unwrap()),6515rd: writable_vreg(4),6516ri: vreg(4),6517rn: vreg(10),6518},6519"44553F2F",6520"sli v4.2s, v4.2s, v10.2s, #31",6521));65226523insns.push((6524Inst::FpuRRIMod {6525fpu_op: FPUOpRIMod::Sli64(FPULeftShiftImm::maybe_from_u8(63, 64).unwrap()),6526rd: writable_vreg(4),6527ri: vreg(4),6528rn: vreg(10),6529},6530"44557F7F",6531"sli d4, d4, d10, #63",6532));65336534insns.push((6535Inst::FpuToInt {6536op: FpuToIntOp::F32ToU32,6537rd: writable_xreg(1),6538rn: vreg(4),6539},6540"8100391E",6541"fcvtzu w1, s4",6542));65436544insns.push((6545Inst::FpuToInt {6546op: FpuToIntOp::F32ToU64,6547rd: writable_xreg(1),6548rn: vreg(4),6549},6550"8100399E",6551"fcvtzu x1, s4",6552));65536554insns.push((6555Inst::FpuToInt {6556op: FpuToIntOp::F32ToI32,6557rd: writable_xreg(1),6558rn: vreg(4),6559},6560"8100381E",6561"fcvtzs w1, s4",6562));65636564insns.push((6565Inst::FpuToInt {6566op: FpuToIntOp::F32ToI64,6567rd: writable_xreg(1),6568rn: vreg(4),6569},6570"8100389E",6571"fcvtzs x1, s4",6572));65736574insns.push((6575Inst::FpuToInt {6576op: FpuToIntOp::F64ToU32,6577rd: writable_xreg(1),6578rn: vreg(4),6579},6580"8100791E",6581"fcvtzu w1, d4",6582));65836584insns.push((6585Inst::FpuToInt {6586op: FpuToIntOp::F64ToU64,6587rd: writable_xreg(1),6588rn: vreg(4),6589},6590"8100799E",6591"fcvtzu x1, d4",6592));65936594insns.push((6595Inst::FpuToInt {6596op: FpuToIntOp::F64ToI32,6597rd: writable_xreg(1),6598rn: vreg(4),6599},6600"8100781E",6601"fcvtzs w1, d4",6602));66036604insns.push((6605Inst::FpuToInt {6606op: FpuToIntOp::F64ToI64,6607rd: writable_xreg(1),6608rn: vreg(4),6609},6610"8100789E",6611"fcvtzs x1, d4",6612));66136614insns.push((6615Inst::IntToFpu {6616op: IntToFpuOp::U32ToF32,6617rd: writable_vreg(1),6618rn: xreg(4),6619},6620"8100231E",6621"ucvtf s1, w4",6622));66236624insns.push((6625Inst::IntToFpu {6626op: IntToFpuOp::I32ToF32,6627rd: writable_vreg(1),6628rn: xreg(4),6629},6630"8100221E",6631"scvtf s1, w4",6632));66336634insns.push((6635Inst::IntToFpu {6636op: IntToFpuOp::U32ToF64,6637rd: writable_vreg(1),6638rn: xreg(4),6639},6640"8100631E",6641"ucvtf d1, w4",6642));66436644insns.push((6645Inst::IntToFpu {6646op: IntToFpuOp::I32ToF64,6647rd: writable_vreg(1),6648rn: xreg(4),6649},6650"8100621E",6651"scvtf d1, w4",6652));66536654insns.push((6655Inst::IntToFpu {6656op: IntToFpuOp::U64ToF32,6657rd: writable_vreg(1),6658rn: xreg(4),6659},6660"8100239E",6661"ucvtf s1, x4",6662));66636664insns.push((6665Inst::IntToFpu {6666op: IntToFpuOp::I64ToF32,6667rd: writable_vreg(1),6668rn: xreg(4),6669},6670"8100229E",6671"scvtf s1, x4",6672));66736674insns.push((6675Inst::IntToFpu {6676op: IntToFpuOp::U64ToF64,6677rd: writable_vreg(1),6678rn: xreg(4),6679},6680"8100639E",6681"ucvtf d1, x4",6682));66836684insns.push((6685Inst::IntToFpu {6686op: IntToFpuOp::I64ToF64,6687rd: writable_vreg(1),6688rn: xreg(4),6689},6690"8100629E",6691"scvtf d1, x4",6692));66936694insns.push((6695Inst::FpuCmp {6696size: ScalarSize::Size32,6697rn: vreg(23),6698rm: vreg(24),6699},6700"E022381E",6701"fcmp s23, s24",6702));67036704insns.push((6705Inst::FpuCmp {6706size: ScalarSize::Size64,6707rn: vreg(23),6708rm: vreg(24),6709},6710"E022781E",6711"fcmp d23, d24",6712));67136714insns.push((6715Inst::FpuLoad16 {6716rd: writable_vreg(16),6717mem: AMode::RegScaled {6718rn: xreg(8),6719rm: xreg(9),6720},6721flags: MemFlags::trusted(),6722},6723"1079697C",6724"ldr h16, [x8, x9, LSL #1]",6725));67266727insns.push((6728Inst::FpuLoad32 {6729rd: writable_vreg(16),6730mem: AMode::RegScaled {6731rn: xreg(8),6732rm: xreg(9),6733},6734flags: MemFlags::trusted(),6735},6736"107969BC",6737"ldr s16, [x8, x9, LSL #2]",6738));67396740insns.push((6741Inst::FpuLoad64 {6742rd: writable_vreg(16),6743mem: AMode::RegScaled {6744rn: xreg(8),6745rm: xreg(9),6746},6747flags: MemFlags::trusted(),6748},6749"107969FC",6750"ldr d16, [x8, x9, LSL #3]",6751));67526753insns.push((6754Inst::FpuLoad128 {6755rd: writable_vreg(16),6756mem: AMode::RegScaled {6757rn: xreg(8),6758rm: xreg(9),6759},6760flags: MemFlags::trusted(),6761},6762"1079E93C",6763"ldr q16, [x8, x9, LSL #4]",6764));67656766insns.push((6767Inst::FpuLoad32 {6768rd: writable_vreg(16),6769mem: AMode::Label {6770label: MemLabel::PCRel(8),6771},6772flags: MemFlags::trusted(),6773},6774"5000001C",6775"ldr s16, pc+8",6776));67776778insns.push((6779Inst::FpuLoad64 {6780rd: writable_vreg(16),6781mem: AMode::Label {6782label: MemLabel::PCRel(8),6783},6784flags: MemFlags::trusted(),6785},6786"5000005C",6787"ldr d16, pc+8",6788));67896790insns.push((6791Inst::FpuLoad128 {6792rd: writable_vreg(16),6793mem: AMode::Label {6794label: MemLabel::PCRel(8),6795},6796flags: MemFlags::trusted(),6797},6798"5000009C",6799"ldr q16, pc+8",6800));68016802insns.push((6803Inst::FpuStore16 {6804rd: vreg(16),6805mem: AMode::RegScaled {6806rn: xreg(8),6807rm: xreg(9),6808},6809flags: MemFlags::trusted(),6810},6811"1079297C",6812"str h16, [x8, x9, LSL #1]",6813));68146815insns.push((6816Inst::FpuStore32 {6817rd: vreg(16),6818mem: AMode::RegScaled {6819rn: xreg(8),6820rm: xreg(9),6821},6822flags: MemFlags::trusted(),6823},6824"107929BC",6825"str s16, [x8, x9, LSL #2]",6826));68276828insns.push((6829Inst::FpuStore64 {6830rd: vreg(16),6831mem: AMode::RegScaled {6832rn: xreg(8),6833rm: xreg(9),6834},6835flags: MemFlags::trusted(),6836},6837"107929FC",6838"str d16, [x8, x9, LSL #3]",6839));68406841insns.push((6842Inst::FpuStore128 {6843rd: vreg(16),6844mem: AMode::RegScaled {6845rn: xreg(8),6846rm: xreg(9),6847},6848flags: MemFlags::trusted(),6849},6850"1079A93C",6851"str q16, [x8, x9, LSL #4]",6852));68536854insns.push((6855Inst::FpuLoadP64 {6856rt: writable_vreg(0),6857rt2: writable_vreg(31),6858mem: PairAMode::SignedOffset {6859reg: xreg(0),6860simm7: simm7_scaled_zero(F64),6861},6862flags: MemFlags::trusted(),6863},6864"007C406D",6865"ldp d0, d31, [x0]",6866));68676868insns.push((6869Inst::FpuLoadP64 {6870rt: writable_vreg(19),6871rt2: writable_vreg(11),6872mem: PairAMode::SPPreIndexed {6873simm7: SImm7Scaled::maybe_from_i64(-512, F64).unwrap(),6874},6875flags: MemFlags::trusted(),6876},6877"F32FE06D",6878"ldp d19, d11, [sp, #-512]!",6879));68806881insns.push((6882Inst::FpuLoadP64 {6883rt: writable_vreg(7),6884rt2: writable_vreg(20),6885mem: PairAMode::SPPostIndexed {6886simm7: SImm7Scaled::maybe_from_i64(64, F64).unwrap(),6887},6888flags: MemFlags::trusted(),6889},6890"E753C46C",6891"ldp d7, d20, [sp], #64",6892));68936894insns.push((6895Inst::FpuStoreP64 {6896rt: vreg(4),6897rt2: vreg(26),6898mem: PairAMode::SignedOffset {6899reg: stack_reg(),6900simm7: SImm7Scaled::maybe_from_i64(504, F64).unwrap(),6901},6902flags: MemFlags::trusted(),6903},6904"E4EB1F6D",6905"stp d4, d26, [sp, #504]",6906));69076908insns.push((6909Inst::FpuStoreP64 {6910rt: vreg(16),6911rt2: vreg(8),6912mem: PairAMode::SPPreIndexed {6913simm7: SImm7Scaled::maybe_from_i64(48, F64).unwrap(),6914},6915flags: MemFlags::trusted(),6916},6917"F023836D",6918"stp d16, d8, [sp, #48]!",6919));69206921insns.push((6922Inst::FpuStoreP64 {6923rt: vreg(5),6924rt2: vreg(6),6925mem: PairAMode::SPPostIndexed {6926simm7: SImm7Scaled::maybe_from_i64(-32, F64).unwrap(),6927},6928flags: MemFlags::trusted(),6929},6930"E51BBE6C",6931"stp d5, d6, [sp], #-32",6932));69336934insns.push((6935Inst::FpuLoadP128 {6936rt: writable_vreg(0),6937rt2: writable_vreg(17),6938mem: PairAMode::SignedOffset {6939reg: xreg(3),6940simm7: simm7_scaled_zero(I8X16),6941},6942flags: MemFlags::trusted(),6943},6944"604440AD",6945"ldp q0, q17, [x3]",6946));69476948insns.push((6949Inst::FpuLoadP128 {6950rt: writable_vreg(29),6951rt2: writable_vreg(9),6952mem: PairAMode::SPPreIndexed {6953simm7: SImm7Scaled::maybe_from_i64(-1024, I8X16).unwrap(),6954},6955flags: MemFlags::trusted(),6956},6957"FD27E0AD",6958"ldp q29, q9, [sp, #-1024]!",6959));69606961insns.push((6962Inst::FpuLoadP128 {6963rt: writable_vreg(10),6964rt2: writable_vreg(20),6965mem: PairAMode::SPPostIndexed {6966simm7: SImm7Scaled::maybe_from_i64(256, I8X16).unwrap(),6967},6968flags: MemFlags::trusted(),6969},6970"EA53C8AC",6971"ldp q10, q20, [sp], #256",6972));69736974insns.push((6975Inst::FpuStoreP128 {6976rt: vreg(9),6977rt2: vreg(31),6978mem: PairAMode::SignedOffset {6979reg: stack_reg(),6980simm7: SImm7Scaled::maybe_from_i64(1008, I8X16).unwrap(),6981},6982flags: MemFlags::trusted(),6983},6984"E9FF1FAD",6985"stp q9, q31, [sp, #1008]",6986));69876988insns.push((6989Inst::FpuStoreP128 {6990rt: vreg(27),6991rt2: vreg(13),6992mem: PairAMode::SPPreIndexed {6993simm7: SImm7Scaled::maybe_from_i64(-192, I8X16).unwrap(),6994},6995flags: MemFlags::trusted(),6996},6997"FB37BAAD",6998"stp q27, q13, [sp, #-192]!",6999));70007001insns.push((7002Inst::FpuStoreP128 {7003rt: vreg(18),7004rt2: vreg(22),7005mem: PairAMode::SPPostIndexed {7006simm7: SImm7Scaled::maybe_from_i64(304, I8X16).unwrap(),7007},7008flags: MemFlags::trusted(),7009},7010"F2DB89AC",7011"stp q18, q22, [sp], #304",7012));70137014insns.push((7015Inst::FpuCSel16 {7016rd: writable_vreg(1),7017rn: vreg(2),7018rm: vreg(3),7019cond: Cond::Hi,7020},7021"418CE31E",7022"fcsel h1, h2, h3, hi",7023));70247025insns.push((7026Inst::FpuCSel32 {7027rd: writable_vreg(1),7028rn: vreg(2),7029rm: vreg(3),7030cond: Cond::Hi,7031},7032"418C231E",7033"fcsel s1, s2, s3, hi",7034));70357036insns.push((7037Inst::FpuCSel64 {7038rd: writable_vreg(1),7039rn: vreg(2),7040rm: vreg(3),7041cond: Cond::Eq,7042},7043"410C631E",7044"fcsel d1, d2, d3, eq",7045));70467047insns.push((7048Inst::FpuRound {7049rd: writable_vreg(23),7050rn: vreg(24),7051op: FpuRoundMode::Minus32,7052},7053"1743251E",7054"frintm s23, s24",7055));7056insns.push((7057Inst::FpuRound {7058rd: writable_vreg(23),7059rn: vreg(24),7060op: FpuRoundMode::Minus64,7061},7062"1743651E",7063"frintm d23, d24",7064));7065insns.push((7066Inst::FpuRound {7067rd: writable_vreg(23),7068rn: vreg(24),7069op: FpuRoundMode::Plus32,7070},7071"17C3241E",7072"frintp s23, s24",7073));7074insns.push((7075Inst::FpuRound {7076rd: writable_vreg(23),7077rn: vreg(24),7078op: FpuRoundMode::Plus64,7079},7080"17C3641E",7081"frintp d23, d24",7082));7083insns.push((7084Inst::FpuRound {7085rd: writable_vreg(23),7086rn: vreg(24),7087op: FpuRoundMode::Zero32,7088},7089"17C3251E",7090"frintz s23, s24",7091));7092insns.push((7093Inst::FpuRound {7094rd: writable_vreg(23),7095rn: vreg(24),7096op: FpuRoundMode::Zero64,7097},7098"17C3651E",7099"frintz d23, d24",7100));7101insns.push((7102Inst::FpuRound {7103rd: writable_vreg(23),7104rn: vreg(24),7105op: FpuRoundMode::Nearest32,7106},7107"1743241E",7108"frintn s23, s24",7109));7110insns.push((7111Inst::FpuRound {7112rd: writable_vreg(23),7113rn: vreg(24),7114op: FpuRoundMode::Nearest64,7115},7116"1743641E",7117"frintn d23, d24",7118));71197120insns.push((7121Inst::AtomicRMWLoop {7122ty: I8,7123op: AtomicRMWLoopOp::Sub,7124flags: MemFlags::trusted(),7125addr: xreg(25),7126operand: xreg(26),7127oldval: writable_xreg(27),7128scratch1: writable_xreg(24),7129scratch2: writable_xreg(28),7130},7131"3BFF5F087C031A4B3CFF1808B8FFFFB5",7132"atomic_rmw_loop_sub_8 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7133));7134insns.push((7135Inst::AtomicRMWLoop {7136ty: I16,7137op: AtomicRMWLoopOp::Eor,7138flags: MemFlags::trusted(),7139addr: xreg(25),7140operand: xreg(26),7141oldval: writable_xreg(27),7142scratch1: writable_xreg(24),7143scratch2: writable_xreg(28),7144},7145"3BFF5F487C031A4A3CFF1848B8FFFFB5",7146"atomic_rmw_loop_eor_16 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7147));7148insns.push((7149Inst::AtomicRMWLoop {7150ty: I8,7151op: AtomicRMWLoopOp::Add,7152flags: MemFlags::trusted(),7153addr: xreg(25),7154operand: xreg(26),7155oldval: writable_xreg(27),7156scratch1: writable_xreg(24),7157scratch2: writable_xreg(28),7158},7159"3BFF5F087C031A0B3CFF1808B8FFFFB5",7160"atomic_rmw_loop_add_8 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7161));7162insns.push((7163Inst::AtomicRMWLoop {7164ty: I32,7165op: AtomicRMWLoopOp::Orr,7166flags: MemFlags::trusted(),7167addr: xreg(25),7168operand: xreg(26),7169oldval: writable_xreg(27),7170scratch1: writable_xreg(24),7171scratch2: writable_xreg(28),7172},7173"3BFF5F887C031A2A3CFF1888B8FFFFB5",7174"atomic_rmw_loop_orr_32 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7175));7176insns.push((7177Inst::AtomicRMWLoop {7178ty: I64,7179op: AtomicRMWLoopOp::And,7180flags: MemFlags::trusted(),7181addr: xreg(25),7182operand: xreg(26),7183oldval: writable_xreg(27),7184scratch1: writable_xreg(24),7185scratch2: writable_xreg(28),7186},7187"3BFF5FC87C031A8A3CFF18C8B8FFFFB5",7188"atomic_rmw_loop_and_64 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7189));7190insns.push((7191Inst::AtomicRMWLoop {7192ty: I8,7193op: AtomicRMWLoopOp::Xchg,7194flags: MemFlags::trusted(),7195addr: xreg(25),7196operand: xreg(26),7197oldval: writable_xreg(27),7198scratch1: writable_xreg(24),7199scratch2: writable_xreg(28),7200},7201"3BFF5F083AFF1808D8FFFFB5",7202"atomic_rmw_loop_xchg_8 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7203));7204insns.push((7205Inst::AtomicRMWLoop {7206ty: I16,7207op: AtomicRMWLoopOp::Nand,7208flags: MemFlags::trusted(),7209addr: xreg(25),7210operand: xreg(26),7211oldval: writable_xreg(27),7212scratch1: writable_xreg(24),7213scratch2: writable_xreg(28),7214},7215"3BFF5F487C031A0AFC033C2A3CFF184898FFFFB5",7216"atomic_rmw_loop_nand_16 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7217));7218insns.push((7219Inst::AtomicRMWLoop {7220ty: I16,7221op: AtomicRMWLoopOp::Smin,7222flags: MemFlags::trusted(),7223addr: xreg(25),7224operand: xreg(26),7225oldval: writable_xreg(27),7226scratch1: writable_xreg(24),7227scratch2: writable_xreg(28),7228},7229"3BFF5F487B3F00137FA33A6B7CB39A9A3CFF184878FFFFB5",7230"atomic_rmw_loop_smin_16 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7231));7232insns.push((7233Inst::AtomicRMWLoop {7234ty: I32,7235op: AtomicRMWLoopOp::Smin,7236flags: MemFlags::trusted(),7237addr: xreg(25),7238operand: xreg(26),7239oldval: writable_xreg(27),7240scratch1: writable_xreg(24),7241scratch2: writable_xreg(28),7242},7243"3BFF5F887F031A6B7CB39A9A3CFF188898FFFFB5",7244"atomic_rmw_loop_smin_32 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7245));7246insns.push((7247Inst::AtomicRMWLoop {7248ty: I64,7249op: AtomicRMWLoopOp::Smax,7250flags: MemFlags::trusted(),7251addr: xreg(25),7252operand: xreg(26),7253oldval: writable_xreg(27),7254scratch1: writable_xreg(24),7255scratch2: writable_xreg(28),7256},7257"3BFF5FC87F031AEB7CC39A9A3CFF18C898FFFFB5",7258"atomic_rmw_loop_smax_64 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7259));7260insns.push((7261Inst::AtomicRMWLoop {7262ty: I8,7263op: AtomicRMWLoopOp::Smax,7264flags: MemFlags::trusted(),7265addr: xreg(25),7266operand: xreg(26),7267oldval: writable_xreg(27),7268scratch1: writable_xreg(24),7269scratch2: writable_xreg(28),7270},7271"3BFF5F087B1F00137F833A6B7CC39A9A3CFF180878FFFFB5",7272"atomic_rmw_loop_smax_8 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7273));7274insns.push((7275Inst::AtomicRMWLoop {7276ty: I8,7277op: AtomicRMWLoopOp::Umin,7278flags: MemFlags::trusted(),7279addr: xreg(25),7280operand: xreg(26),7281oldval: writable_xreg(27),7282scratch1: writable_xreg(24),7283scratch2: writable_xreg(28),7284},7285"3BFF5F087F031A6B7C339A9A3CFF180898FFFFB5",7286"atomic_rmw_loop_umin_8 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7287));7288insns.push((7289Inst::AtomicRMWLoop {7290ty: I16,7291op: AtomicRMWLoopOp::Umax,7292flags: MemFlags::trusted(),7293addr: xreg(25),7294operand: xreg(26),7295oldval: writable_xreg(27),7296scratch1: writable_xreg(24),7297scratch2: writable_xreg(28),7298},7299"3BFF5F487F031A6B7C839A9A3CFF184898FFFFB5",7300"atomic_rmw_loop_umax_16 addr=x25 operand=x26 oldval=x27 scratch1=x24 scratch2=x28",7301));73027303insns.push((7304Inst::AtomicRMW {7305ty: I8,7306op: AtomicRMWOp::Add,7307rs: xreg(1),7308rt: writable_xreg(2),7309rn: xreg(3),7310flags: MemFlags::trusted(),7311},7312"6200E138",7313"ldaddalb w1, w2, [x3]",7314));7315insns.push((7316Inst::AtomicRMW {7317ty: I16,7318op: AtomicRMWOp::Add,7319rs: xreg(4),7320rt: writable_xreg(5),7321rn: xreg(6),7322flags: MemFlags::trusted(),7323},7324"C500E478",7325"ldaddalh w4, w5, [x6]",7326));7327insns.push((7328Inst::AtomicRMW {7329ty: I32,7330op: AtomicRMWOp::Add,7331rs: xreg(7),7332rt: writable_xreg(8),7333rn: xreg(9),7334flags: MemFlags::trusted(),7335},7336"2801E7B8",7337"ldaddal w7, w8, [x9]",7338));7339insns.push((7340Inst::AtomicRMW {7341ty: I64,7342op: AtomicRMWOp::Add,7343rs: xreg(10),7344rt: writable_xreg(11),7345rn: xreg(12),7346flags: MemFlags::trusted(),7347},7348"8B01EAF8",7349"ldaddal x10, x11, [x12]",7350));7351insns.push((7352Inst::AtomicRMW {7353ty: I8,7354op: AtomicRMWOp::Clr,7355rs: xreg(13),7356rt: writable_xreg(14),7357rn: xreg(15),7358flags: MemFlags::trusted(),7359},7360"EE11ED38",7361"ldclralb w13, w14, [x15]",7362));7363insns.push((7364Inst::AtomicRMW {7365ty: I16,7366op: AtomicRMWOp::Clr,7367rs: xreg(16),7368rt: writable_xreg(17),7369rn: xreg(18),7370flags: MemFlags::trusted(),7371},7372"5112F078",7373"ldclralh w16, w17, [x18]",7374));7375insns.push((7376Inst::AtomicRMW {7377ty: I32,7378op: AtomicRMWOp::Clr,7379rs: xreg(19),7380rt: writable_xreg(20),7381rn: xreg(21),7382flags: MemFlags::trusted(),7383},7384"B412F3B8",7385"ldclral w19, w20, [x21]",7386));7387insns.push((7388Inst::AtomicRMW {7389ty: I64,7390op: AtomicRMWOp::Clr,7391rs: xreg(22),7392rt: writable_xreg(23),7393rn: xreg(24),7394flags: MemFlags::trusted(),7395},7396"1713F6F8",7397"ldclral x22, x23, [x24]",7398));7399insns.push((7400Inst::AtomicRMW {7401ty: I8,7402op: AtomicRMWOp::Eor,7403rs: xreg(25),7404rt: writable_xreg(26),7405rn: xreg(27),7406flags: MemFlags::trusted(),7407},7408"7A23F938",7409"ldeoralb w25, w26, [x27]",7410));7411insns.push((7412Inst::AtomicRMW {7413ty: I16,7414op: AtomicRMWOp::Eor,7415rs: xreg(28),7416rt: writable_xreg(29),7417rn: xreg(30),7418flags: MemFlags::trusted(),7419},7420"DD23FC78",7421"ldeoralh w28, fp, [lr]",7422));7423insns.push((7424Inst::AtomicRMW {7425ty: I32,7426op: AtomicRMWOp::Eor,7427rs: xreg(29),7428rt: writable_xreg(28),7429rn: xreg(27),7430flags: MemFlags::trusted(),7431},7432"7C23FDB8",7433"ldeoral fp, w28, [x27]",7434));7435insns.push((7436Inst::AtomicRMW {7437ty: I64,7438op: AtomicRMWOp::Eor,7439rs: xreg(26),7440rt: writable_xreg(25),7441rn: xreg(24),7442flags: MemFlags::trusted(),7443},7444"1923FAF8",7445"ldeoral x26, x25, [x24]",7446));7447insns.push((7448Inst::AtomicRMW {7449ty: I8,7450op: AtomicRMWOp::Set,7451rs: xreg(23),7452rt: writable_xreg(22),7453rn: xreg(21),7454flags: MemFlags::trusted(),7455},7456"B632F738",7457"ldsetalb w23, w22, [x21]",7458));7459insns.push((7460Inst::AtomicRMW {7461ty: I16,7462op: AtomicRMWOp::Set,7463rs: xreg(20),7464rt: writable_xreg(19),7465rn: xreg(18),7466flags: MemFlags::trusted(),7467},7468"5332F478",7469"ldsetalh w20, w19, [x18]",7470));7471insns.push((7472Inst::AtomicRMW {7473ty: I32,7474op: AtomicRMWOp::Set,7475rs: xreg(17),7476rt: writable_xreg(16),7477rn: xreg(15),7478flags: MemFlags::trusted(),7479},7480"F031F1B8",7481"ldsetal w17, w16, [x15]",7482));7483insns.push((7484Inst::AtomicRMW {7485ty: I64,7486op: AtomicRMWOp::Set,7487rs: xreg(14),7488rt: writable_xreg(13),7489rn: xreg(12),7490flags: MemFlags::trusted(),7491},7492"8D31EEF8",7493"ldsetal x14, x13, [x12]",7494));7495insns.push((7496Inst::AtomicRMW {7497ty: I8,7498op: AtomicRMWOp::Smax,7499rs: xreg(11),7500rt: writable_xreg(10),7501rn: xreg(9),7502flags: MemFlags::trusted(),7503},7504"2A41EB38",7505"ldsmaxalb w11, w10, [x9]",7506));7507insns.push((7508Inst::AtomicRMW {7509ty: I16,7510op: AtomicRMWOp::Smax,7511rs: xreg(8),7512rt: writable_xreg(7),7513rn: xreg(6),7514flags: MemFlags::trusted(),7515},7516"C740E878",7517"ldsmaxalh w8, w7, [x6]",7518));7519insns.push((7520Inst::AtomicRMW {7521ty: I32,7522op: AtomicRMWOp::Smax,7523rs: xreg(5),7524rt: writable_xreg(4),7525rn: xreg(3),7526flags: MemFlags::trusted(),7527},7528"6440E5B8",7529"ldsmaxal w5, w4, [x3]",7530));7531insns.push((7532Inst::AtomicRMW {7533ty: I64,7534op: AtomicRMWOp::Smax,7535rs: xreg(2),7536rt: writable_xreg(1),7537rn: xreg(0),7538flags: MemFlags::trusted(),7539},7540"0140E2F8",7541"ldsmaxal x2, x1, [x0]",7542));7543insns.push((7544Inst::AtomicRMW {7545ty: I8,7546op: AtomicRMWOp::Smin,7547rs: xreg(1),7548rt: writable_xreg(2),7549rn: xreg(3),7550flags: MemFlags::trusted(),7551},7552"6250E138",7553"ldsminalb w1, w2, [x3]",7554));7555insns.push((7556Inst::AtomicRMW {7557ty: I16,7558op: AtomicRMWOp::Smin,7559rs: xreg(4),7560rt: writable_xreg(5),7561rn: xreg(6),7562flags: MemFlags::trusted(),7563},7564"C550E478",7565"ldsminalh w4, w5, [x6]",7566));7567insns.push((7568Inst::AtomicRMW {7569ty: I32,7570op: AtomicRMWOp::Smin,7571rs: xreg(7),7572rt: writable_xreg(8),7573rn: xreg(9),7574flags: MemFlags::trusted(),7575},7576"2851E7B8",7577"ldsminal w7, w8, [x9]",7578));7579insns.push((7580Inst::AtomicRMW {7581ty: I64,7582op: AtomicRMWOp::Smin,7583rs: xreg(10),7584rt: writable_xreg(11),7585rn: xreg(12),7586flags: MemFlags::trusted(),7587},7588"8B51EAF8",7589"ldsminal x10, x11, [x12]",7590));7591insns.push((7592Inst::AtomicRMW {7593ty: I8,7594op: AtomicRMWOp::Umax,7595rs: xreg(13),7596rt: writable_xreg(14),7597rn: xreg(15),7598flags: MemFlags::trusted(),7599},7600"EE61ED38",7601"ldumaxalb w13, w14, [x15]",7602));7603insns.push((7604Inst::AtomicRMW {7605ty: I16,7606op: AtomicRMWOp::Umax,7607rs: xreg(16),7608rt: writable_xreg(17),7609rn: xreg(18),7610flags: MemFlags::trusted(),7611},7612"5162F078",7613"ldumaxalh w16, w17, [x18]",7614));7615insns.push((7616Inst::AtomicRMW {7617ty: I32,7618op: AtomicRMWOp::Umax,7619rs: xreg(19),7620rt: writable_xreg(20),7621rn: xreg(21),7622flags: MemFlags::trusted(),7623},7624"B462F3B8",7625"ldumaxal w19, w20, [x21]",7626));7627insns.push((7628Inst::AtomicRMW {7629ty: I64,7630op: AtomicRMWOp::Umax,7631rs: xreg(22),7632rt: writable_xreg(23),7633rn: xreg(24),7634flags: MemFlags::trusted(),7635},7636"1763F6F8",7637"ldumaxal x22, x23, [x24]",7638));7639insns.push((7640Inst::AtomicRMW {7641ty: I8,7642op: AtomicRMWOp::Umin,7643rs: xreg(16),7644rt: writable_xreg(17),7645rn: xreg(18),7646flags: MemFlags::trusted(),7647},7648"5172F038",7649"lduminalb w16, w17, [x18]",7650));7651insns.push((7652Inst::AtomicRMW {7653ty: I16,7654op: AtomicRMWOp::Umin,7655rs: xreg(19),7656rt: writable_xreg(20),7657rn: xreg(21),7658flags: MemFlags::trusted(),7659},7660"B472F378",7661"lduminalh w19, w20, [x21]",7662));7663insns.push((7664Inst::AtomicRMW {7665ty: I32,7666op: AtomicRMWOp::Umin,7667rs: xreg(22),7668rt: writable_xreg(23),7669rn: xreg(24),7670flags: MemFlags::trusted(),7671},7672"1773F6B8",7673"lduminal w22, w23, [x24]",7674));7675insns.push((7676Inst::AtomicRMW {7677ty: I64,7678op: AtomicRMWOp::Umin,7679rs: xreg(25),7680rt: writable_xreg(26),7681rn: xreg(27),7682flags: MemFlags::trusted(),7683},7684"7A73F9F8",7685"lduminal x25, x26, [x27]",7686));7687insns.push((7688Inst::AtomicRMW {7689ty: I8,7690op: AtomicRMWOp::Swp,7691rs: xreg(28),7692rt: writable_xreg(29),7693rn: xreg(30),7694flags: MemFlags::trusted(),7695},7696"DD83FC38",7697"swpalb w28, fp, [lr]",7698));7699insns.push((7700Inst::AtomicRMW {7701ty: I16,7702op: AtomicRMWOp::Swp,7703rs: xreg(0),7704rt: writable_xreg(1),7705rn: xreg(2),7706flags: MemFlags::trusted(),7707},7708"4180E078",7709"swpalh w0, w1, [x2]",7710));7711insns.push((7712Inst::AtomicRMW {7713ty: I32,7714op: AtomicRMWOp::Swp,7715rs: xreg(3),7716rt: writable_xreg(4),7717rn: xreg(5),7718flags: MemFlags::trusted(),7719},7720"A480E3B8",7721"swpal w3, w4, [x5]",7722));7723insns.push((7724Inst::AtomicRMW {7725ty: I64,7726op: AtomicRMWOp::Swp,7727rs: xreg(6),7728rt: writable_xreg(7),7729rn: xreg(8),7730flags: MemFlags::trusted(),7731},7732"0781E6F8",7733"swpal x6, x7, [x8]",7734));77357736insns.push((7737Inst::AtomicCAS {7738rd: writable_xreg(28),7739rs: xreg(28),7740rt: xreg(20),7741rn: xreg(10),7742ty: I8,7743flags: MemFlags::trusted(),7744},7745"54FDFC08",7746"casalb w28, w28, w20, [x10]",7747));7748insns.push((7749Inst::AtomicCAS {7750rd: writable_xreg(2),7751rs: xreg(2),7752rt: xreg(19),7753rn: xreg(23),7754ty: I16,7755flags: MemFlags::trusted(),7756},7757"F3FEE248",7758"casalh w2, w2, w19, [x23]",7759));7760insns.push((7761Inst::AtomicCAS {7762rd: writable_xreg(0),7763rs: xreg(0),7764rt: zero_reg(),7765rn: stack_reg(),7766ty: I32,7767flags: MemFlags::trusted(),7768},7769"FFFFE088",7770"casal w0, w0, wzr, [sp]",7771));7772insns.push((7773Inst::AtomicCAS {7774rd: writable_xreg(7),7775rs: xreg(7),7776rt: xreg(15),7777rn: xreg(27),7778ty: I64,7779flags: MemFlags::trusted(),7780},7781"6FFFE7C8",7782"casal x7, x7, x15, [x27]",7783));7784insns.push((7785Inst::AtomicCASLoop {7786ty: I8,7787flags: MemFlags::trusted(),7788addr: xreg(25),7789expected: xreg(26),7790replacement: xreg(28),7791oldval: writable_xreg(27),7792scratch: writable_xreg(24),7793},7794"3BFF5F087F033AEB610000543CFF180898FFFFB5",7795"atomic_cas_loop_8 addr=x25, expect=x26, replacement=x28, oldval=x27, scratch=x24",7796));77977798insns.push((7799Inst::AtomicCASLoop {7800ty: I16,7801flags: MemFlags::trusted(),7802addr: xreg(25),7803expected: xreg(26),7804replacement: xreg(28),7805oldval: writable_xreg(27),7806scratch: writable_xreg(24),7807},7808"3BFF5F487F233AEB610000543CFF184898FFFFB5",7809"atomic_cas_loop_16 addr=x25, expect=x26, replacement=x28, oldval=x27, scratch=x24",7810));78117812insns.push((7813Inst::AtomicCASLoop {7814ty: I32,7815flags: MemFlags::trusted(),7816addr: xreg(25),7817expected: xreg(26),7818replacement: xreg(28),7819oldval: writable_xreg(27),7820scratch: writable_xreg(24),7821},7822"3BFF5F887F031AEB610000543CFF188898FFFFB5",7823"atomic_cas_loop_32 addr=x25, expect=x26, replacement=x28, oldval=x27, scratch=x24",7824));78257826insns.push((7827Inst::AtomicCASLoop {7828ty: I64,7829flags: MemFlags::trusted(),7830addr: xreg(25),7831expected: xreg(26),7832replacement: xreg(28),7833oldval: writable_xreg(27),7834scratch: writable_xreg(24),7835},7836"3BFF5FC87F031AEB610000543CFF18C898FFFFB5",7837"atomic_cas_loop_64 addr=x25, expect=x26, replacement=x28, oldval=x27, scratch=x24",7838));78397840insns.push((7841Inst::LoadAcquire {7842access_ty: I8,7843rt: writable_xreg(7),7844rn: xreg(28),7845flags: MemFlags::trusted(),7846},7847"87FFDF08",7848"ldarb w7, [x28]",7849));78507851insns.push((7852Inst::LoadAcquire {7853access_ty: I16,7854rt: writable_xreg(2),7855rn: xreg(3),7856flags: MemFlags::trusted(),7857},7858"62FCDF48",7859"ldarh w2, [x3]",7860));78617862insns.push((7863Inst::LoadAcquire {7864access_ty: I32,7865rt: writable_xreg(15),7866rn: xreg(0),7867flags: MemFlags::trusted(),7868},7869"0FFCDF88",7870"ldar w15, [x0]",7871));78727873insns.push((7874Inst::LoadAcquire {7875access_ty: I64,7876rt: writable_xreg(28),7877rn: xreg(7),7878flags: MemFlags::trusted(),7879},7880"FCFCDFC8",7881"ldar x28, [x7]",7882));78837884insns.push((7885Inst::StoreRelease {7886access_ty: I8,7887rt: xreg(7),7888rn: xreg(28),7889flags: MemFlags::trusted(),7890},7891"87FF9F08",7892"stlrb w7, [x28]",7893));78947895insns.push((7896Inst::StoreRelease {7897access_ty: I16,7898rt: xreg(2),7899rn: xreg(3),7900flags: MemFlags::trusted(),7901},7902"62FC9F48",7903"stlrh w2, [x3]",7904));79057906insns.push((7907Inst::StoreRelease {7908access_ty: I32,7909rt: xreg(15),7910rn: xreg(0),7911flags: MemFlags::trusted(),7912},7913"0FFC9F88",7914"stlr w15, [x0]",7915));79167917insns.push((7918Inst::StoreRelease {7919access_ty: I64,7920rt: xreg(28),7921rn: xreg(7),7922flags: MemFlags::trusted(),7923},7924"FCFC9FC8",7925"stlr x28, [x7]",7926));79277928insns.push((Inst::Fence {}, "BF3B03D5", "dmb ish"));79297930let flags = settings::Flags::new(settings::builder());7931let emit_info = EmitInfo::new(flags);7932for (insn, expected_encoding, expected_printing) in insns {7933println!("AArch64: {insn:?}, {expected_encoding}, {expected_printing}");79347935// Check the printed text is as expected.7936let actual_printing = insn.print_with_state(&mut EmitState::default());7937assert_eq!(expected_printing, actual_printing);79387939let mut buffer = MachBuffer::new();7940insn.emit(&mut buffer, &emit_info, &mut Default::default());7941let buffer = buffer.finish(&Default::default(), &mut Default::default());7942let actual_encoding = &buffer.stringify_code_bytes();7943assert_eq!(expected_encoding, actual_encoding);7944}7945}79467947#[test]7948fn test_cond_invert() {7949for cond in vec![7950Cond::Eq,7951Cond::Ne,7952Cond::Hs,7953Cond::Lo,7954Cond::Mi,7955Cond::Pl,7956Cond::Vs,7957Cond::Vc,7958Cond::Hi,7959Cond::Ls,7960Cond::Ge,7961Cond::Lt,7962Cond::Gt,7963Cond::Le,7964Cond::Al,7965Cond::Nv,7966]7967.into_iter()7968{7969assert_eq!(cond.invert().invert(), cond);7970}7971}797279737974