diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td index 368665467859f..9f2f11bafe79f 100644 --- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td +++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td @@ -98,377 +98,452 @@ def V1Write_0c_0Z : SchedWriteRes<[]>; def V1Write_1c_1B : SchedWriteRes<[V1UnitB]> { let Latency = 1; } def V1Write_1c_1I : SchedWriteRes<[V1UnitI]> { let Latency = 1; } -def V1Write_1c_1I_1Flg : SchedWriteRes<[V1UnitI, V1UnitFlg]> { let Latency = 1; } +def V1Write_1c_1I_1Flg : SchedWriteRes<[V1UnitI, V1UnitFlg]> { let Latency = 1; + let NumMicroOps = 2; } def V1Write_4c_1L : SchedWriteRes<[V1UnitL]> { let Latency = 4; } +def V1Write_4c3_1L : SchedWriteRes<[V1UnitL]> { let Latency = 4; + let ReleaseAtCycles = [3]; } +def V1Write_5c3_1L : SchedWriteRes<[V1UnitL]> { let Latency = 5; + let ReleaseAtCycles = [3]; } + def V1Write_6c_1L : SchedWriteRes<[V1UnitL]> { let Latency = 6; } +def V1Write_6c2_1L : SchedWriteRes<[V1UnitL]> { let Latency = 6; + let ReleaseAtCycles = [2]; } +def V1Write_6c3_1L : SchedWriteRes<[V1UnitL]> { let Latency = 6; + let ReleaseAtCycles = [3]; } +def V1Write_7c4_1L : SchedWriteRes<[V1UnitL]> { let Latency = 7; + let ReleaseAtCycles = [4]; } def V1Write_1c_1L01 : SchedWriteRes<[V1UnitL01]> { let Latency = 1; } def V1Write_4c_1L01 : SchedWriteRes<[V1UnitL01]> { let Latency = 4; } def V1Write_6c_1L01 : SchedWriteRes<[V1UnitL01]> { let Latency = 6; } def V1Write_2c_1M : SchedWriteRes<[V1UnitM]> { let Latency = 2; } -def V1Write_2c_1M_1Flg : SchedWriteRes<[V1UnitM, V1UnitFlg]> { let Latency = 2; } +def V1Write_2c_1M_1Flg : SchedWriteRes<[V1UnitM, V1UnitFlg]> { let Latency = 2; + let NumMicroOps = 2; } def V1Write_3c_1M : SchedWriteRes<[V1UnitM]> { let Latency = 3; } -def V1Write_4c_1M : SchedWriteRes<[V1UnitM]> { let Latency = 4; } +def V1Write_4c6_1M : SchedWriteRes<[V1UnitM]> { let Latency = 4; + let ReleaseAtCycles = [6]; } def V1Write_1c_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 1; } def V1Write_2c_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 2; } +def V1Write_2c2_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 2; + let ReleaseAtCycles = [2]; } +def V1Write_3c2_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 3; + let ReleaseAtCycles = [2]; } def V1Write_3c_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 3; } def V1Write_5c_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 5; } -def V1Write_12c5_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 12; - let ReleaseAtCycles = [5]; } -def V1Write_20c5_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 20; - let ReleaseAtCycles = [5]; } +def V1Write_12c12_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 12; + let ReleaseAtCycles = [12]; } +def V1Write_20c20_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 20; + let ReleaseAtCycles = [20]; } def V1Write_2c_1V : SchedWriteRes<[V1UnitV]> { let Latency = 2; } +def V1Write_2c4_1V : SchedWriteRes<[V1UnitV]> { let Latency = 2; + let ReleaseAtCycles = [4]; } def V1Write_3c_1V : SchedWriteRes<[V1UnitV]> { let Latency = 3; } def V1Write_4c_1V : SchedWriteRes<[V1UnitV]> { let Latency = 4; } +def V1Write_4c2_1V : SchedWriteRes<[V1UnitV]> { let Latency = 4; + let ReleaseAtCycles = [2]; } def V1Write_5c_1V : SchedWriteRes<[V1UnitV]> { let Latency = 5; } +def V1Write_6c3_1V : SchedWriteRes<[V1UnitV]> { let Latency = 6; + let ReleaseAtCycles = [3]; } +def V1Write_12c2_1V : SchedWriteRes<[V1UnitV1]> { let Latency = 12; + let ReleaseAtCycles = [2]; } +def V1Write_14c2_1V : SchedWriteRes<[V1UnitV1]> { let Latency = 14; + let ReleaseAtCycles = [2]; } + def V1Write_2c_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 2; } def V1Write_3c_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 3; } def V1Write_4c_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 4; } +def V1Write_5c2_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 5; + let ReleaseAtCycles = [2]; } def V1Write_6c_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 6; } -def V1Write_10c7_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 10; - let ReleaseAtCycles = [7]; } -def V1Write_12c7_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 12; - let ReleaseAtCycles = [7]; } -def V1Write_13c10_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 13; - let ReleaseAtCycles = [10]; } -def V1Write_15c7_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 15; - let ReleaseAtCycles = [7]; } -def V1Write_16c7_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 16; - let ReleaseAtCycles = [7]; } -def V1Write_20c7_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 20; - let ReleaseAtCycles = [7]; } +def V1Write_6c4_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 6; + let ReleaseAtCycles = [4]; } +def V1Write_10c9_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 10; + let ReleaseAtCycles = [9]; } +def V1Write_11c10_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 11; + let ReleaseAtCycles = [10]; } +def V1Write_12c11_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 12; + let ReleaseAtCycles = [11]; } +def V1Write_13c12_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 13; + let ReleaseAtCycles = [12]; } +def V1Write_15c14_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 15; + let ReleaseAtCycles = [14]; } +def V1Write_16c14_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 16; + let ReleaseAtCycles = [14]; } +def V1Write_19c18_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 19; + let ReleaseAtCycles = [18]; } +def V1Write_20c20_1V0 : SchedWriteRes<[V1UnitV0]> { let Latency = 20; + let ReleaseAtCycles = [20]; } + def V1Write_2c_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 2; } def V1Write_3c_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 3; } def V1Write_4c_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 4; } -def V1Write_5c_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 5; } +def V1Write_4c2_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 4; + let ReleaseAtCycles = [2]; } +def V1Write_4c3_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 4; + let ReleaseAtCycles = [3]; } +def V1Write_6c3_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 6; + let ReleaseAtCycles = [3]; } +def V1Write_6c5_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 6; + let ReleaseAtCycles = [5]; } +def V1Write_8c3_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 8; + let ReleaseAtCycles = [3]; } +def V1Write_9c4_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 9; + let ReleaseAtCycles = [4]; } +def V1Write_12c4_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 12; + let ReleaseAtCycles = [4]; } +def V1Write_13c6_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 13; + let ReleaseAtCycles = [6]; } +def V1Write_11c5_1V01 : SchedWriteRes<[V1UnitV01]> { let Latency = 11; + let ReleaseAtCycles = [5]; } def V1Write_3c_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 3; } def V1Write_4c_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 4; } +def V1Write_4c2_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 4; + let ReleaseAtCycles = [2]; } +def V1Write_6c4_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 6; + let ReleaseAtCycles = [4]; } +def V1Write_7c2_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 7; + let ReleaseAtCycles = [2]; } def V1Write_7c7_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 7; let ReleaseAtCycles = [7]; } -def V1Write_10c7_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 10; - let ReleaseAtCycles = [7]; } -def V1Write_13c5_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 13; +def V1Write_9c3_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 9; + let ReleaseAtCycles = [2]; } +def V1Write_10c3_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 10; + let ReleaseAtCycles = [3]; } +def V1Write_10c5_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 10; let ReleaseAtCycles = [5]; } -def V1Write_13c11_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 13; - let ReleaseAtCycles = [11]; } +def V1Write_10c9_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 10; + let ReleaseAtCycles = [9]; } +def V1Write_13c13_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 13; + let ReleaseAtCycles = [13]; } def V1Write_15c7_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 15; let ReleaseAtCycles = [7]; } -def V1Write_16c7_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 16; - let ReleaseAtCycles = [7]; } +def V1Write_15c14_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 15; + let ReleaseAtCycles = [14]; } +def V1Write_16c8_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 16; + let ReleaseAtCycles = [8]; } +def V1Write_16c15_1V02 : SchedWriteRes<[V1UnitV02]> { let Latency = 16; + let ReleaseAtCycles = [15]; } def V1Write_2c_1V1 : SchedWriteRes<[V1UnitV1]> { let Latency = 2; } def V1Write_3c_1V1 : SchedWriteRes<[V1UnitV1]> { let Latency = 3; } def V1Write_4c_1V1 : SchedWriteRes<[V1UnitV1]> { let Latency = 4; } +def V1Write_8c2_1V1 : SchedWriteRes<[V1UnitV1]> { let Latency = 8; + let ReleaseAtCycles = [2]; } +def V1Write_10c2_1V1 : SchedWriteRes<[V1UnitV1]> { let Latency = 10; + let ReleaseAtCycles = [2]; } def V1Write_2c_1V13 : SchedWriteRes<[V1UnitV13]> { let Latency = 2; } def V1Write_4c_1V13 : SchedWriteRes<[V1UnitV13]> { let Latency = 4; } +def V1Write_4c2_1V13 : SchedWriteRes<[V1UnitV13]> { let Latency = 4; + let ReleaseAtCycles = [2]; } + //===----------------------------------------------------------------------===// // Define generic 2 micro-op types -let Latency = 1, NumMicroOps = 2 in -def V1Write_1c_1B_1S : SchedWriteRes<[V1UnitB, V1UnitS]>; -let Latency = 6, NumMicroOps = 2 in -def V1Write_6c_1B_1M0 : SchedWriteRes<[V1UnitB, V1UnitM0]>; -let Latency = 3, NumMicroOps = 2 in -def V1Write_3c_1I_1M : SchedWriteRes<[V1UnitI, V1UnitM]>; -let Latency = 5, NumMicroOps = 2 in -def V1Write_5c_1I_1L : SchedWriteRes<[V1UnitI, V1UnitL]>; -let Latency = 7, NumMicroOps = 2 in -def V1Write_7c_1I_1L : SchedWriteRes<[V1UnitI, V1UnitL]>; -let Latency = 6, NumMicroOps = 2 in -def V1Write_6c_2L : SchedWriteRes<[V1UnitL, V1UnitL]>; -let Latency = 6, NumMicroOps = 2 in -def V1Write_6c_1L_1M : SchedWriteRes<[V1UnitL, V1UnitM]>; -let Latency = 8, NumMicroOps = 2 in -def V1Write_8c_1L_1V : SchedWriteRes<[V1UnitL, V1UnitV]>; -let Latency = 9, NumMicroOps = 2 in -def V1Write_9c_1L_1V : SchedWriteRes<[V1UnitL, V1UnitV]>; -let Latency = 11, NumMicroOps = 2 in -def V1Write_11c_1L_1V : SchedWriteRes<[V1UnitL, V1UnitV]>; -let Latency = 1, NumMicroOps = 2 in -def V1Write_1c_1L01_1D : SchedWriteRes<[V1UnitL01, V1UnitD]>; -let Latency = 6, NumMicroOps = 2 in -def V1Write_6c_1L01_1S : SchedWriteRes<[V1UnitL01, V1UnitS]>; -let Latency = 7, NumMicroOps = 2 in -def V1Write_7c_1L01_1S : SchedWriteRes<[V1UnitL01, V1UnitS]>; -let Latency = 2, NumMicroOps = 2 in -def V1Write_2c_1L01_1V : SchedWriteRes<[V1UnitL01, V1UnitV]>; -let Latency = 4, NumMicroOps = 2 in -def V1Write_4c_1L01_1V : SchedWriteRes<[V1UnitL01, V1UnitV]>; -let Latency = 6, NumMicroOps = 2 in -def V1Write_6c_1L01_1V : SchedWriteRes<[V1UnitL01, V1UnitV]>; -let Latency = 2, NumMicroOps = 2 in -def V1Write_2c_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]>; -let Latency = 4, NumMicroOps = 2 in -def V1Write_4c_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]>; -let Latency = 2, NumMicroOps = 2 in -def V1Write_2c_2M0 : SchedWriteRes<[V1UnitM0, V1UnitM0]>; -let Latency = 3, NumMicroOps = 2 in -def V1Write_3c_2M0 : SchedWriteRes<[V1UnitM0, V1UnitM0]>; -let Latency = 9, NumMicroOps = 2 in -def V1Write_9c_1M0_1L : SchedWriteRes<[V1UnitM0, V1UnitL]>; -let Latency = 5, NumMicroOps = 2 in -def V1Write_5c_1M0_1V : SchedWriteRes<[V1UnitM0, V1UnitV]>; -let Latency = 4, NumMicroOps = 2 in -def V1Write_4c_1M0_1V0 : SchedWriteRes<[V1UnitM0, V1UnitV0]>; -let Latency = 7, NumMicroOps = 2 in -def V1Write_7c_1M0_1V0 : SchedWriteRes<[V1UnitM0, V1UnitV1]>; -let Latency = 5, NumMicroOps = 2 in -def V1Write_5c_1M0_1V01 : SchedWriteRes<[V1UnitM0, V1UnitV01]>; -let Latency = 6, NumMicroOps = 2 in -def V1Write_6c_1M0_1V1 : SchedWriteRes<[V1UnitM0, V1UnitV1]>; -let Latency = 9, NumMicroOps = 2 in -def V1Write_9c_1M0_1V1 : SchedWriteRes<[V1UnitM0, V1UnitV1]>; -let Latency = 4, NumMicroOps = 2 in -def V1Write_4c_2V : SchedWriteRes<[V1UnitV, V1UnitV]>; -let Latency = 8, NumMicroOps = 2 in -def V1Write_8c_1V_1V01 : SchedWriteRes<[V1UnitV, V1UnitV01]>; -let Latency = 4, NumMicroOps = 2 in -def V1Write_4c_2V0 : SchedWriteRes<[V1UnitV0, V1UnitV0]>; -let Latency = 5, NumMicroOps = 2 in -def V1Write_5c_2V0 : SchedWriteRes<[V1UnitV0, V1UnitV0]>; -let Latency = 2, NumMicroOps = 2 in -def V1Write_2c_2V01 : SchedWriteRes<[V1UnitV01, V1UnitV01]>; -let Latency = 4, NumMicroOps = 2 in -def V1Write_4c_2V01 : SchedWriteRes<[V1UnitV01, V1UnitV01]>; -let Latency = 4, NumMicroOps = 2 in -def V1Write_4c_2V02 : SchedWriteRes<[V1UnitV02, V1UnitV02]>; -let Latency = 6, NumMicroOps = 2 in -def V1Write_6c_2V02 : SchedWriteRes<[V1UnitV02, V1UnitV02]>; -let Latency = 4, NumMicroOps = 2 in -def V1Write_4c_1V13_1V : SchedWriteRes<[V1UnitV13, V1UnitV]>; -let Latency = 4, NumMicroOps = 2 in -def V1Write_4c_2V13 : SchedWriteRes<[V1UnitV13, V1UnitV13]>; +def V1Write_1c_1B_1S : SchedWriteRes<[V1UnitB, V1UnitS]> { + let Latency = 1; + let NumMicroOps = 2; +} -//===----------------------------------------------------------------------===// -// Define generic 3 micro-op types +def V1Write_6c_1B_1M0 : SchedWriteRes<[V1UnitB, V1UnitM0]> { + let Latency = 6; + let NumMicroOps = 2; +} -let Latency = 2, NumMicroOps = 3 in -def V1Write_2c_1I_1L01_1V01 : SchedWriteRes<[V1UnitI, V1UnitL01, V1UnitV01]>; -let Latency = 7, NumMicroOps = 3 in -def V1Write_7c_2M0_1V01 : SchedWriteRes<[V1UnitM0, V1UnitM0, V1UnitV01]>; -let Latency = 8, NumMicroOps = 3 in -def V1Write_8c_1L_2V : SchedWriteRes<[V1UnitL, V1UnitV, V1UnitV]>; -let Latency = 6, NumMicroOps = 3 in -def V1Write_6c_3L : SchedWriteRes<[V1UnitL, V1UnitL, V1UnitL]>; -let Latency = 2, NumMicroOps = 3 in -def V1Write_2c_1L01_1S_1V : SchedWriteRes<[V1UnitL01, V1UnitS, V1UnitV]>; -let Latency = 4, NumMicroOps = 3 in -def V1Write_4c_1L01_1S_1V : SchedWriteRes<[V1UnitL01, V1UnitS, V1UnitV]>; -let Latency = 2, NumMicroOps = 3 in -def V1Write_2c_2L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, V1UnitV01]>; -let Latency = 6, NumMicroOps = 3 in -def V1Write_6c_3V : SchedWriteRes<[V1UnitV, V1UnitV, V1UnitV]>; -let Latency = 4, NumMicroOps = 3 in -def V1Write_4c_3V01 : SchedWriteRes<[V1UnitV01, V1UnitV01, V1UnitV01]>; -let Latency = 6, NumMicroOps = 3 in -def V1Write_6c_3V01 : SchedWriteRes<[V1UnitV01, V1UnitV01, V1UnitV01]>; -let Latency = 8, NumMicroOps = 3 in -def V1Write_8c_3V01 : SchedWriteRes<[V1UnitV01, V1UnitV01, V1UnitV01]>; +def V1Write_5c_1I_1L : SchedWriteRes<[V1UnitI, V1UnitL]> { + let Latency = 5; + let NumMicroOps = 2; +} -//===----------------------------------------------------------------------===// -// Define generic 4 micro-op types - -let Latency = 8, NumMicroOps = 4 in -def V1Write_8c_2M0_2V0 : SchedWriteRes<[V1UnitM0, V1UnitM0, - V1UnitV0, V1UnitV0]>; -let Latency = 7, NumMicroOps = 4 in -def V1Write_7c_4L : SchedWriteRes<[V1UnitL, V1UnitL, V1UnitL, V1UnitL]>; -let Latency = 8, NumMicroOps = 4 in -def V1Write_8c_2L_2V : SchedWriteRes<[V1UnitL, V1UnitL, - V1UnitV, V1UnitV]>; -let Latency = 9, NumMicroOps = 4 in -def V1Write_9c_2L_2V : SchedWriteRes<[V1UnitL, V1UnitL, - V1UnitV, V1UnitV]>; -let Latency = 11, NumMicroOps = 4 in -def V1Write_11c_2L_2V : SchedWriteRes<[V1UnitL, V1UnitL, - V1UnitV, V1UnitV]>; -let Latency = 10, NumMicroOps = 4 in -def V1Write_10c_2L01_2V : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitV, V1UnitV]>; -let Latency = 2, NumMicroOps = 4 in -def V1Write_2c_2L01_2V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01]>; -let Latency = 4, NumMicroOps = 4 in -def V1Write_4c_2L01_2V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01]>; -let Latency = 8, NumMicroOps = 4 in -def V1Write_8c_2L01_2V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01]>; -let Latency = 9, NumMicroOps = 4 in -def V1Write_9c_2L01_2V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01]>; -let Latency = 10, NumMicroOps = 4 in -def V1Write_10c_2L01_2V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01]>; -let Latency = 10, NumMicroOps = 4 in -def V1Write_10c_1V_1V01_2V1 : SchedWriteRes<[V1UnitV, V1UnitV01, - V1UnitV1, V1UnitV1]>; -let Latency = 12, NumMicroOps = 4 in -def V1Write_12c_1V_1V01_2V1 : SchedWriteRes<[V1UnitV, V1UnitV01, - V1UnitV1, V1UnitV1]>; -let Latency = 6, NumMicroOps = 4 in -def V1Write_6c_4V0 : SchedWriteRes<[V1UnitV0, V1UnitV0, - V1UnitV0, V1UnitV0]>; -let Latency = 12, NumMicroOps = 4 in -def V1Write_12c_4V01 : SchedWriteRes<[V1UnitV01, V1UnitV01, - V1UnitV01, V1UnitV01]>; -let Latency = 6, NumMicroOps = 4 in -def V1Write_6c_4V02 : SchedWriteRes<[V1UnitV02, V1UnitV02]>; +def V1Write_5c3_1I_1L : SchedWriteRes<[V1UnitI, V1UnitL]> { + let Latency = 5; + let NumMicroOps = 2; + let ReleaseAtCycles = [1,3]; +} -//===----------------------------------------------------------------------===// -// Define generic 5 micro-op types - -let Latency = 8, NumMicroOps = 5 in -def V1Write_8c_2L_3V : SchedWriteRes<[V1UnitL, V1UnitL, - V1UnitV, V1UnitV, V1UnitV]>; -let Latency = 14, NumMicroOps = 5 in -def V1Write_14c_1V_1V0_2V1_1V13 : SchedWriteRes<[V1UnitV, - V1UnitV0, - V1UnitV1, V1UnitV1, - V1UnitV13]>; -let Latency = 9, NumMicroOps = 5 in -def V1Write_9c_1V_4V01 : SchedWriteRes<[V1UnitV, - V1UnitV01, V1UnitV01, - V1UnitV01, V1UnitV01]>; -let Latency = 6, NumMicroOps = 5 in -def V1Write_6c_5V01 : SchedWriteRes<[V1UnitV01, V1UnitV01, - V1UnitV01, V1UnitV01, V1UnitV01]>; +def V1Write_7c_1I_1L : SchedWriteRes<[V1UnitI, V1UnitL]> { + let Latency = 7; + let NumMicroOps = 2; +} -//===----------------------------------------------------------------------===// -// Define generic 6 micro-op types - -let Latency = 6, NumMicroOps = 6 in -def V1Write_6c_3L_3V : SchedWriteRes<[V1UnitL, V1UnitL, V1UnitL, - V1UnitV, V1UnitV, V1UnitV]>; -let Latency = 8, NumMicroOps = 6 in -def V1Write_8c_3L_3V : SchedWriteRes<[V1UnitL, V1UnitL, V1UnitL, - V1UnitV, V1UnitV, V1UnitV]>; -let Latency = 2, NumMicroOps = 6 in -def V1Write_2c_3L01_3V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01, V1UnitV01]>; -let Latency = 5, NumMicroOps = 6 in -def V1Write_5c_3L01_3V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01, V1UnitV01]>; -let Latency = 6, NumMicroOps = 6 in -def V1Write_6c_3L01_3V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01, V1UnitV01]>; -let Latency = 11, NumMicroOps = 6 in -def V1Write_11c_3L01_3V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01, V1UnitV01]>; -let Latency = 11, NumMicroOps = 6 in -def V1Write_11c_1V_5V01 : SchedWriteRes<[V1UnitV, - V1UnitV01, V1UnitV01, - V1UnitV01, V1UnitV01, V1UnitV01]>; -let Latency = 13, NumMicroOps = 6 in -def V1Write_13c_6V01 : SchedWriteRes<[V1UnitV01, V1UnitV01, V1UnitV01, - V1UnitV01, V1UnitV01, V1UnitV01]>; +def V1Write_6c_1L_1M : SchedWriteRes<[V1UnitL, V1UnitM]> { + let Latency = 6; + let NumMicroOps = 2; +} -//===----------------------------------------------------------------------===// -// Define generic 7 micro-op types +def V1Write_8c_1L_1V : SchedWriteRes<[V1UnitL, V1UnitV]> { + let Latency = 8; + let NumMicroOps = 2; +} -let Latency = 8, NumMicroOps = 7 in -def V1Write_8c_3L_4V : SchedWriteRes<[V1UnitL, V1UnitL, V1UnitL, - V1UnitV, V1UnitV, V1UnitV, V1UnitV]>; -let Latency = 8, NumMicroOps = 7 in -def V1Write_13c_3L01_1S_3V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitS, - V1UnitV01, V1UnitV01, V1UnitV01]>; +def V1Write_9c2_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 9; + let NumMicroOps = 2; + let ReleaseAtCycles = [2,2]; +} -//===----------------------------------------------------------------------===// -// Define generic 8 micro-op types - -let Latency = 9, NumMicroOps = 8 in -def V1Write_9c_4L_4V : SchedWriteRes<[V1UnitL, V1UnitL, - V1UnitL, V1UnitL, - V1UnitV, V1UnitV, - V1UnitV, V1UnitV]>; -let Latency = 2, NumMicroOps = 8 in -def V1Write_2c_4L01_4V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01, - V1UnitV01, V1UnitV01]>; -let Latency = 4, NumMicroOps = 8 in -def V1Write_4c_4L01_4V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01, - V1UnitV01, V1UnitV01]>; -let Latency = 12, NumMicroOps = 8 in -def V1Write_12c_4L01_4V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01, - V1UnitV01, V1UnitV01]>; +def V1Write_9c6_1L_1V : SchedWriteRes<[V1UnitL, V1UnitV]> { + let Latency = 9; + let NumMicroOps = 2; + let ReleaseAtCycles = [6, 6]; +} -//===----------------------------------------------------------------------===// -// Define generic 10 micro-op types - -let Latency = 13, NumMicroOps = 10 in -def V1Write_13c_4L01_2S_4V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, - V1UnitS, V1UnitS, - V1UnitV01, V1UnitV01, - V1UnitV01, V1UnitV01]>; -let Latency = 7, NumMicroOps = 10 in -def V1Write_7c_5L01_5V : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitV, V1UnitV, - V1UnitV, V1UnitV, V1UnitV]>; -let Latency = 11, NumMicroOps = 10 in -def V1Write_11c_10V0 : SchedWriteRes<[V1UnitV0, - V1UnitV0, V1UnitV0, V1UnitV0, - V1UnitV0, V1UnitV0, V1UnitV0, - V1UnitV0, V1UnitV0, V1UnitV0]>; +def V1Write_11c12_1L_1V : SchedWriteRes<[V1UnitL, V1UnitV]> { + let Latency = 11; + let NumMicroOps = 2; + let ReleaseAtCycles = [12, 12]; +} -//===----------------------------------------------------------------------===// -// Define generic 12 micro-op types +def V1Write_1c_1L01_1D : SchedWriteRes<[V1UnitL01, V1UnitD]> { + let Latency = 1; + let NumMicroOps = 2; +} -let Latency = 7, NumMicroOps = 12 in -def V1Write_7c_6L01_6V01 : SchedWriteRes<[V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitV01, V1UnitV01, V1UnitV01, - V1UnitV01, V1UnitV01, V1UnitV01]>; +def V1Write_6c_1L01_1S : SchedWriteRes<[V1UnitL01, V1UnitS]> { + let Latency = 6; + let NumMicroOps = 2; +} -//===----------------------------------------------------------------------===// -// Define generic 15 micro-op types +def V1Write_7c_1L01_1S : SchedWriteRes<[V1UnitL01, V1UnitS]> { + let Latency = 7; + let NumMicroOps = 2; +} -let Latency = 7, NumMicroOps = 15 in -def V1Write_7c_5L01_5S_5V : SchedWriteRes<[V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitS, V1UnitS, - V1UnitS, V1UnitS, V1UnitS, - V1UnitV, V1UnitV, - V1UnitV, V1UnitV, V1UnitV]>; +def V1Write_2c_1L01_1V : SchedWriteRes<[V1UnitL01, V1UnitV]> { + let Latency = 2; + let NumMicroOps = 2; +} +def V1Write_4c2_1L01_1V : SchedWriteRes<[V1UnitL01, V1UnitV]> { + let Latency = 4; + let NumMicroOps = 2; + let ReleaseAtCycles = [2,2]; +} + +def V1Write_6c4_1L01_1V : SchedWriteRes<[V1UnitL01, V1UnitV]> { + let Latency = 6; + let NumMicroOps = 2; + let ReleaseAtCycles = [4,4]; +} + +def V1Write_7c9_1L01_1V : SchedWriteRes<[V1UnitL01, V1UnitV]> { + let Latency = 7; + let NumMicroOps = 2; + let ReleaseAtCycles = [9,9]; +} + +def V1Write_11c18_1L01_1V : SchedWriteRes<[V1UnitL01, V1UnitV]> { + let Latency = 11; + let NumMicroOps = 2; + let ReleaseAtCycles = [18,18]; +} + +def V1Write_2c_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 2; + let NumMicroOps = 2; +} + +def V1Write_2c2_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 2; + let NumMicroOps = 2; + let ReleaseAtCycles = [2,2]; +} + +def V1Write_2c3_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 2; + let NumMicroOps = 2; + let ReleaseAtCycles = [3,3]; +} + +def V1Write_2c4_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 2; + let NumMicroOps = 2; + let ReleaseAtCycles = [4,4]; +} + +def V1Write_4c_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 4; + let NumMicroOps = 2; +} + +def V1Write_4c2_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 4; + let NumMicroOps = 2; + let ReleaseAtCycles = [2,2]; +} + +def V1Write_4c8_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 4; + let NumMicroOps = 2; + let ReleaseAtCycles = [8,8]; +} + +def V1Write_5c3_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 5; + let NumMicroOps = 2; + let ReleaseAtCycles = [3,3]; +} + +def V1Write_6c6_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 6; + let NumMicroOps = 2; + let ReleaseAtCycles = [6,6]; +} + +def V1Write_7c12_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 7; + let NumMicroOps = 2; + let ReleaseAtCycles = [12,12]; +} + +def V1Write_9c_1M0_1L : SchedWriteRes<[V1UnitM0, V1UnitL]> { + let Latency = 9; + let NumMicroOps = 2; +} + +def V1Write_5c_1M0_1V : SchedWriteRes<[V1UnitM0, V1UnitV]> { + let Latency = 5; + let NumMicroOps = 2; +} + +def V1Write_4c_1M0_1V0 : SchedWriteRes<[V1UnitM0, V1UnitV0]> { + let Latency = 4; + let NumMicroOps = 2; +} + +def V1Write_7c_1M0_1V0 : SchedWriteRes<[V1UnitM0, V1UnitV0]> { + let Latency = 7; + let NumMicroOps = 2; +} + +def V1Write_8c2_1M0_1V0 : SchedWriteRes<[V1UnitM0, V1UnitV0]> { + let Latency = 8; + let NumMicroOps = 2; + let ReleaseAtCycles = [2,2]; +} + +def V1Write_5c_1M0_1V01 : SchedWriteRes<[V1UnitM0, V1UnitV01]> { + let Latency = 5; + let NumMicroOps = 2; +} + +def V1Write_7c2_1M0_1V01 : SchedWriteRes<[V1UnitM0, V1UnitV01]> { + let Latency = 7; + let NumMicroOps = 2; + let ReleaseAtCycles = [2,2]; +} + +def V1Write_6c_1M0_1V1 : SchedWriteRes<[V1UnitM0, V1UnitV1]> { + let Latency = 6; + let NumMicroOps = 2; +} + +def V1Write_9c_1M0_1V1 : SchedWriteRes<[V1UnitM0, V1UnitV1]> { + let Latency = 9; + let NumMicroOps = 2; +} + +def V1Write_4c2_1V0 : SchedWriteRes<[V1UnitV0]> { + let Latency = 4; + let NumMicroOps = 1; + let ReleaseAtCycles = [2]; +} + +def V1Write_8c2_2L01_2V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 8; + let NumMicroOps = 2; + let ReleaseAtCycles = [2, 2]; +} + +def V1Write_8c2_1L_1V : SchedWriteRes<[V1UnitL, V1UnitV]> { + let Latency = 8; + let NumMicroOps = 2; + let ReleaseAtCycles = [2,2]; +} + +def V1Write_8c3_1L_1V : SchedWriteRes<[V1UnitL, V1UnitV]> { + let Latency = 8; + let NumMicroOps = 2; + let ReleaseAtCycles = [3,3]; +} + +def V1Write_10c8_1L01_1V : SchedWriteRes<[V1UnitL01, V1UnitV]> { + let Latency = 10; + let NumMicroOps = 2; + let ReleaseAtCycles = [8,8]; +} + +def V1Write_6c2_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 6; + let NumMicroOps = 2; + let ReleaseAtCycles = [2,2]; +} + +def V1Write_11c6_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 11; + let NumMicroOps = 2; + let ReleaseAtCycles = [6,6]; +} + +def V1Write_12c8_1L01_1V01 : SchedWriteRes<[V1UnitL01, V1UnitV01]> { + let Latency = 12; + let NumMicroOps = 2; + let ReleaseAtCycles = [8,8]; +} -//===----------------------------------------------------------------------===// -// Define generic 18 micro-op types - -let Latency = 19, NumMicroOps = 18 in -def V1Write_11c_9L01_9V : SchedWriteRes<[V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitV, V1UnitV, V1UnitV, - V1UnitV, V1UnitV, V1UnitV, - V1UnitV, V1UnitV, V1UnitV]>; -let Latency = 19, NumMicroOps = 18 in -def V1Write_19c_18V0 : SchedWriteRes<[V1UnitV0, V1UnitV0, V1UnitV0, - V1UnitV0, V1UnitV0, V1UnitV0, - V1UnitV0, V1UnitV0, V1UnitV0, - V1UnitV0, V1UnitV0, V1UnitV0, - V1UnitV0, V1UnitV0, V1UnitV0, - V1UnitV0, V1UnitV0, V1UnitV0]>; //===----------------------------------------------------------------------===// -// Define generic 27 micro-op types - -let Latency = 11, NumMicroOps = 27 in -def V1Write_11c_9L01_9S_9V : SchedWriteRes<[V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitL01, V1UnitL01, V1UnitL01, - V1UnitS, V1UnitS, V1UnitS, - V1UnitS, V1UnitS, V1UnitS, - V1UnitS, V1UnitS, V1UnitS, - V1UnitV, V1UnitV, V1UnitV, - V1UnitV, V1UnitV, V1UnitV, - V1UnitV, V1UnitV, V1UnitV]>; +// Define generic 3 micro-op types + +def V1Write_2c_1I_1L01_1D : SchedWriteRes<[V1UnitI, V1UnitL01, V1UnitD]> { + let Latency = 2; + let NumMicroOps = 3; +} + +def V1Write_2c_1I_1L01_1V01 : SchedWriteRes<[V1UnitI, V1UnitL01, V1UnitV01]> { + let Latency = 2; + let NumMicroOps = 3; +} + +def V1Write_2c_1L01_1S_1V : SchedWriteRes<[V1UnitL01, V1UnitS, V1UnitV]> { + let Latency = 2; + let NumMicroOps = 3; +} + +def V1Write_4c_1L01_1S_1V : SchedWriteRes<[V1UnitL01, V1UnitS, V1UnitV]> { + let Latency = 4; + let NumMicroOps = 3; + let ReleaseAtCycles = [2,2,2]; +} + +def V1Write_7c9_1L01_1S_1V : SchedWriteRes<[V1UnitL01, V1UnitS, V1UnitV]> { + let Latency = 7; + let NumMicroOps = 3; + let ReleaseAtCycles = [9,9,9]; +} + +def V1Write_11c18_1L01_1S_1V : SchedWriteRes<[V1UnitL01, V1UnitS, V1UnitV]> { + let Latency = 11; + let NumMicroOps = 3; + let ReleaseAtCycles = [18,18,18]; +} + +def V1Write_10c2_1L01_1V01_1S : SchedWriteRes<[V1UnitL01, V1UnitV01, V1UnitS]> { + let Latency = 10; + let NumMicroOps = 3; + let ReleaseAtCycles = [2,2,2]; +} + +def V1Write_13c6_1L01_1S_1V01 : SchedWriteRes<[V1UnitL01, V1UnitS, V1UnitV01]> { + let Latency = 13; + let NumMicroOps = 3; + let ReleaseAtCycles = [6,6,6]; +} + +def V1Write_13c8_1L01_1S_1V01 : SchedWriteRes<[V1UnitL01, V1UnitS, V1UnitV01]> { + let Latency = 13; + let NumMicroOps = 3; + let ReleaseAtCycles = [8,8,8]; +} //===----------------------------------------------------------------------===// // Define forwarded types @@ -528,7 +603,7 @@ def V1Rd_CRC : SchedReadAdvance<1, [V1Wr_CRC]>; def V1Wr_ZDOTB : SchedWriteRes<[V1UnitV01]> { let Latency = 3; } def V1Rd_ZDOTB : SchedReadAdvance<2, [V1Wr_ZDOTB]>; -def V1Wr_ZUDOTB : SchedWriteRes<[V1UnitV]> { let Latency = 3; } +def V1Wr_ZUDOTB : SchedWriteRes<[V1UnitV]> { let Latency = 3; let ReleaseAtCycles = [2]; } def V1Rd_ZUDOTB : SchedReadAdvance<2, [V1Wr_ZUDOTB]>; def V1Wr_ZDOTH : SchedWriteRes<[V1UnitV0]> { let Latency = 4; } @@ -537,7 +612,10 @@ def V1Rd_ZDOTH : SchedReadAdvance<3, [V1Wr_ZDOTH]>; def V1Wr_ZMMA : SchedWriteRes<[V1UnitV01]> { let Latency = 3; } def V1Rd_ZMMA : SchedReadAdvance<2, [V1Wr_ZMMA]>; -let Latency = 5, NumMicroOps = 2 in +def V1Wr_ZMABHS : SchedWriteRes<[V1UnitV0]> { let Latency = 4; } +def V1Rd_ZMABHS : SchedReadAdvance<2, [V1Wr_ZMABHS]>; + +let Latency = 5, NumMicroOps = 1 in def V1Wr_ZMAD : SchedWriteRes<[V1UnitV0, V1UnitV0]>; def V1Rd_ZMAD : SchedReadAdvance<3, [V1Wr_ZMAD]>; @@ -597,13 +675,19 @@ def : SchedAlias; // ALU, basic, flagset def : InstRW<[V1Write_1c_1I_1Flg], - (instregex "^(ADD|SUB)S[WX]r[ir]$", + (instregex "^(ADD|SUB)S[WX]rr$", "^(ADC|SBC)S[WX]r$", "^ANDS[WX]ri$", "^(AND|BIC)S[WX]rr$")>; +// ALU, basic, no flagset // ALU, extend and shift -def : SchedAlias; +def V1WriteIEReg : SchedWriteVariant< + [SchedVar, + SchedVar]>; +def : SchedAlias; +def : InstRW<[V1WriteIEReg], + (instregex "^(ADD|SUB)[WX]rx$")>; // Arithmetic, LSL shift, shift <= 4 // Arithmetic, LSR/ASR/ROR shift or LSL shift > 4 @@ -612,19 +696,33 @@ def V1WriteISReg : SchedWriteVariant< SchedVar]>; def : SchedAlias; +// ALU, basic, no flagset +// ALU, extend and shift +def V1WriteIERegS : SchedWriteVariant< + [SchedVar, + SchedVar]>; +def : InstRW<[V1WriteIERegS], + (instregex "^(ADD|SUB)S([WX]rx|Xrx64)$")>; + // Arithmetic, flagset, LSL shift, shift <= 4 // Arithmetic, flagset, LSR/ASR/ROR shift or LSL shift > 4 def V1WriteISRegS : SchedWriteVariant< [SchedVar, SchedVar]>; def : InstRW<[V1WriteISRegS], - (instregex "^(ADD|SUB)S(([WX]r[sx])|Xrx64)$")>; + (instregex "^(ADD|SUB)S(([WX]rs)|([WX]ri))$")>; // Logical, shift, no flagset def : InstRW<[V1Write_1c_1I], (instregex "^(AND|BIC|EON|EOR|ORN|ORR)[WX]rs$")>; -// Logical, shift, flagset -def : InstRW<[V1Write_2c_1M_1Flg], (instregex "^(AND|BIC)S[WX]rs$")>; +// AArch64: ALU, basic, flagset +// AArch64: Logical, shift, flagset +// AArch32: ALU, basic, unconditional, flagset +// AArch32: Logical, shift by immed, flagset, unconditional +def V1WriteLogSRegS : SchedWriteVariant< + [SchedVar, + SchedVar]>; +def : InstRW<[V1WriteLogSRegS], (instregex "^(AND|BIC)S[XW]rs$")>; // Flag manipulation instructions def : InstRW<[V1Write_1c_1I_1Flg], (instrs SETF8, SETF16, RMIF, CFINV)>; @@ -634,11 +732,11 @@ def : InstRW<[V1Write_1c_1I_1Flg], (instrs SETF8, SETF16, RMIF, CFINV)>; // ----------------------------------------------------------------------------- // Divide -def : SchedAlias; -def : SchedAlias; +def : SchedAlias; +def : SchedAlias; -def : SchedAlias; -def : SchedAlias; +def : SchedAlias; +def : SchedAlias; // Multiply // Multiply accumulate, W-form @@ -685,7 +783,7 @@ def : InstRW<[V1Write_2c_1M0], (instrs XPACD, XPACI, XPACLRI)>; // Bitfield extract, two regs def V1WriteExtr : SchedWriteVariant< [SchedVar, - SchedVar]>; + SchedVar]>; def : SchedAlias; // Bitfield move, basic @@ -709,18 +807,27 @@ def : SchedAlias; def : SchedAlias; def : SchedAlias; +// Load register, register offset, extend, scale by 2 +// Load register, register offset, extend +def V1WriteLDRH : SchedWriteVariant<[ + SchedVar, + SchedVar]>; +def : InstRW<[V1WriteLDRH, ReadAdrBase], (instregex "^LDRS?H[HWX]ro[WX]$")>; + // Load pair, immed offset def : SchedAlias; def : InstRW<[V1Write_4c_1L, V1Write_0c_0Z], (instrs LDPWi, LDNPWi)>; +def : InstRW<[V1Write_4c3_1L, V1Write_0c_0Z], (instrs LDPXi, LDNPXi)>; def : InstRW<[WriteAdr, V1Write_4c_1L, V1Write_0c_0Z], (instrs LDPWpost, LDPWpre)>; +def : InstRW<[WriteAdr, V1Write_4c3_1L, V1Write_0c_0Z], + (instrs LDPXpost, LDPXpre)>; // Load pair, signed immed offset, signed words -def : InstRW<[V1Write_5c_1I_1L, V1Write_0c_0Z], (instrs LDPSWi)>; +def : InstRW<[V1Write_5c3_1I_1L, V1Write_0c_0Z], (instrs LDPSWi)>; // Load pair, immed post or pre-index, signed words -def : InstRW<[WriteAdr, V1Write_5c_1I_1L, V1Write_0c_0Z], - (instrs LDPSWpost, LDPSWpre)>; +def : InstRW<[WriteAdr, V1Write_5c3_1L, V1Write_0c_0Z], (instrs LDPSWpost, LDPSWpre)>; // Store instructions @@ -729,12 +836,22 @@ def : InstRW<[WriteAdr, V1Write_5c_1I_1L, V1Write_0c_0Z], // Store register, immed offset def : SchedAlias; +// Store register, immed post-index +// Store register, immed pre-index +def : InstRW<[V1Write_1c_1L01_1D], (instrs STRXpost, STRXpre)>; + // Store register, immed offset, index def : SchedAlias; // Store pair, immed offset def : SchedAlias; +def V1WriteSTRH : SchedWriteVariant<[ + SchedVar, + SchedVar]>; +def : InstRW<[V1WriteSTRH, ReadAdrBase], + (instregex "^STRHHro[XW]$")>; + // FP data processing instructions // ----------------------------------------------------------------------------- @@ -750,21 +867,23 @@ def : SchedAlias; // FP divide // FP square root -def : SchedAlias; +def : SchedAlias; // FP divide, H-form // FP square root, H-form -def : InstRW<[V1Write_7c7_1V02], (instrs FDIVHrr, FSQRTHr)>; +def : InstRW<[V1Write_7c2_1V02], (instrs FDIVHrr, FSQRTHr)>; // FP divide, S-form +def : InstRW<[V1Write_10c3_1V02], (instrs FDIVSrr)>; + // FP square root, S-form -def : InstRW<[V1Write_10c7_1V02], (instrs FDIVSrr, FSQRTSr)>; +def : InstRW<[V1Write_9c3_1V02], (instrs FSQRTSr)>; // FP divide, D-form def : InstRW<[V1Write_15c7_1V02], (instrs FDIVDrr)>; // FP square root, D-form -def : InstRW<[V1Write_16c7_1V02], (instrs FSQRTDr)>; +def : InstRW<[V1Write_16c8_1V02], (instrs FSQRTDr)>; // FP multiply def : WriteRes { let Latency = 3; } @@ -788,7 +907,7 @@ def : InstRW<[V1Write_2c_1V01], (instregex "^FCSEL[HSD]rrr$")>; def : InstRW<[V1Write_3c_1M0], (instregex "^[SU]CVTF[SU][WX][HSD]ri$")>; // FP convert, from vec to gen reg -def : InstRW<[V1Write_3c_1V0], (instregex "^FCVT[AMNPZ][SU][SU][WX][HSD]r$")>; +def : InstRW<[V1Write_3c_1V0], (instregex "^FCVT[AMNPZ][SU][SU][WX][HSD]ri?$")>; // FP convert, Javascript from vec to gen reg def : InstRW<[V1Write_3c_1V0], (instrs FJCVTZS)>; @@ -835,13 +954,17 @@ def : InstRW<[V1Write_6c_1L, ReadAdrBase], (instregex "^LDR[BSD]ro[WX]$")>; // Load vector reg, register offset, scale, H/Q-form // Load vector reg, register offset, extend, scale, H/Q-form -def : InstRW<[V1Write_7c_1I_1L, ReadAdrBase], (instregex "^LDR[HQ]ro[WX]$")>; +def V1WriteLDRV : SchedWriteVariant<[ + SchedVar, + SchedVar]>; + +def : InstRW<[V1WriteLDRV, ReadAdrBase], (instregex "^LDR[HQ]ro[WX]$")>; // Load vector pair, immed offset, S/D-form def : InstRW<[V1Write_6c_1L, V1Write_0c_0Z], (instregex "^LDN?P[SD]i$")>; // Load vector pair, immed offset, Q-form -def : InstRW<[V1Write_6c_1L, WriteLDHi], (instrs LDPQi, LDNPQi)>; +def : InstRW<[V1Write_6c2_1L, V1Write_0c_0Z], (instrs LDPQi, LDNPQi)>; // Load vector pair, immed post-index, S/D-form // Load vector pair, immed pre-index, S/D-form @@ -850,7 +973,7 @@ def : InstRW<[WriteAdr, V1Write_6c_1L, V1Write_0c_0Z], // Load vector pair, immed post-index, Q-form // Load vector pair, immed pre-index, Q-form -def : InstRW<[WriteAdr, V1Write_6c_1L, WriteLDHi], +def : InstRW<[WriteAdr, V1Write_6c2_1L, V1Write_0c_0Z], (instrs LDPQpost, LDPQpre)>; @@ -862,25 +985,26 @@ def : InstRW<[V1Write_2c_1L01_1V01], (instregex "^STUR[BHSDQ]i$")>; // Store vector reg, immed post-index, B/H/S/D/Q-form // Store vector reg, immed pre-index, B/H/S/D/Q-form -def : InstRW<[WriteAdr, V1Write_2c_1L01_1V01], +def : InstRW<[V1Write_2c_1L01_1V01], (instregex "^STR[BHSDQ](pre|post)$")>; // Store vector reg, unsigned immed, B/H/S/D/Q-form def : InstRW<[V1Write_2c_1L01_1V01], (instregex "^STR[BHSDQ]ui$")>; -// Store vector reg, register offset, basic, B/S/D-form -// Store vector reg, register offset, scale, B/S/D-form -// Store vector reg, register offset, extend, B/S/D-form -// Store vector reg, register offset, extend, scale, B/S/D-form +// Store vector reg, register offset, extend, B/H/S/D-form +// Store vector reg, register offset, extend, Q-form +// Store vector reg, register offset, extend, scale, H-form +// Store vector reg, register offset, extend, scale, Q-form +def V1WriteSTRV : SchedWriteVariant<[ + SchedVar, + SchedVar]>; +def : InstRW<[V1WriteSTRV, ReadAdrBase], + (instregex "^STR[BHQ]ro[XW]$")>; + +// Store vector reg, register offset, extend, scale, S/D-form +// Store vector reg, register offset, scale, S/D-form def : InstRW<[V1Write_2c_1L01_1V01, ReadAdrBase], - (instregex "^STR[BSD]ro[WX]$")>; - -// Store vector reg, register offset, basic, H/Q-form -// Store vector reg, register offset, scale, H/Q-form -// Store vector reg, register offset, extend, H/Q-form -// Store vector reg, register offset, extend, scale, H/Q-form -def : InstRW<[V1Write_2c_1I_1L01_1V01, ReadAdrBase], - (instregex "^STR[HQ]ro[WX]$")>; + (instregex "^STR[DS]ro[XW]$")>; // Store vector pair, immed offset, S/D/Q-form def : InstRW<[V1Write_2c_1L01_1V01], (instregex "^STN?P[SDQ]i$")>; @@ -892,7 +1016,7 @@ def : InstRW<[WriteAdr, V1Write_2c_1L01_1V01], // Store vector pair, immed post-index, Q-form // Store vector pair, immed pre-index, Q-form -def : InstRW<[WriteAdr, V1Write_2c_2L01_1V01], (instrs STPQpre, STPQpost)>; +def : InstRW<[WriteAdr, V1Write_2c2_1L01_1V01], (instrs STPQpre, STPQpost)>; // ASIMD integer instructions @@ -921,12 +1045,12 @@ def : InstRW<[V1Write_2c_1V13], (instregex "^(ADD|[SU]ADDL)Vv4(i16|i32)v$", // ASIMD arith, reduce, 8B/8H // ASIMD max/min, reduce, 8B/8H -def : InstRW<[V1Write_4c_1V13_1V], (instregex "^(ADD|[SU]ADDL)Vv8(i8|i16)v$", +def : InstRW<[V1Write_4c_1V13], (instregex "^(ADD|[SU]ADDL)Vv8(i8|i16)v$", "^[SU](MAX|MIN)Vv8(i8|i16)v$")>; // ASIMD arith, reduce, 16B // ASIMD max/min, reduce, 16B -def : InstRW<[V1Write_4c_2V13], (instregex "^(ADD|[SU]ADDL)Vv16i8v$", +def : InstRW<[V1Write_4c2_1V13], (instregex "^(ADD|[SU]ADDL)Vv16i8v$", "[SU](MAX|MIN)Vv16i8v$")>; // ASIMD dot product @@ -956,23 +1080,25 @@ def : InstRW<[V1Write_4c_1V02], (instregex "^SQDML[AS]L[iv]")>; def : InstRW<[V1Write_3c_1V01], (instregex "^PMULL?v(8|16)i8$")>; // ASIMD multiply long -def : InstRW<[V1Write_3c_1V02], (instregex "^([SU]|SQD)MULLv")>; +def : InstRW<[V1Write_3c_1V02], (instregex "^([SU]|SQD)MULL[vi]")>; // ASIMD shift accumulate -def : InstRW<[V1Wr_VSA, V1Rd_VSA], (instregex "^[SU]SRAv", "^[SU]RSRAv")>; +def : InstRW<[V1Wr_VSA, V1Rd_VSA], (instregex "^[SU]R?SRA(v8i8|v16i8|v4i16|v8i16|v2i32|v4i32|v2i64)_shift$", + "^[SU]R?SRAd")>; // ASIMD shift by immed, complex // ASIMD shift by register, complex def : InstRW<[V1Write_4c_1V13], (instregex "^RSHRNv", "^SQRSHRU?Nv", "^(SQSHLU?|UQSHL)[bhsd]$", - "^(SQSHLU?|UQSHL)(v8i8|v16i8|v4i16|v8i16|v2i32|v4i32|v2i64)_shift$", - "^SQSHU?RNv", "^[SU]RSHRv", "^UQR?SHRNv", + "^(SQSHLU?|UQSHL|SQSHRUN)(v8i8|v16i8|v4i16|v8i16|v2i32|v4i32|v2i64)_shift$", + "^SQSHU?RNv", "^[SU]RSHRv", "^UQR?SHRNv", "^[SU]Q?R?SHRU?N[bhsd]", "^[SU]RSHRd", "^[SU]Q?RSHLv", "^[SU]QSHLv")>; // ASIMD shift by immed, basic // ASIMD shift by immed and insert, basic // ASIMD shift by register, basic def : InstRW<[V1Write_2c_1V13], (instregex "^SHLL?v", "^SHRNv", "^[SU]SHLLv", + "^[SU]S?H[LR]d$", "^S[LR]Id$", "^[SU]SHRv", "^S[LR]Iv", "^[SU]SHLv")>; @@ -994,7 +1120,7 @@ def : InstRW<[V1Write_4c_1V], (instregex "^FCADD(v[48]f16|v[24]f32|v2f64)$")>; def : InstRW<[V1Wr_FCMA, V1Rd_FCMA], (instregex "^FCMLAv")>; // ASIMD FP multiply -def : InstRW<[V1Wr_FPM], (instregex "^FMULX?v")>; +def : InstRW<[V1Wr_FPM], (instregex "^FMULX?(v|16|32|64)")>; // ASIMD FP multiply accumulate def : InstRW<[V1Wr_FPMA, V1Rd_FPMA], (instregex "^FML[AS]v")>; @@ -1003,13 +1129,13 @@ def : InstRW<[V1Wr_FPMA, V1Rd_FPMA], (instregex "^FML[AS]v")>; def : InstRW<[V1Wr_FPMAL, V1Rd_FPMAL], (instregex "^FML[AS]L2?v")>; // ASIMD FP convert, long (F16 to F32) -def : InstRW<[V1Write_4c_2V02], (instregex "^FCVTLv[48]i16$")>; +def : InstRW<[V1Write_4c2_1V02], (instregex "^FCVTLv[48]i16$")>; // ASIMD FP convert, long (F32 to F64) def : InstRW<[V1Write_3c_1V02], (instregex "^FCVTLv[24]i32$")>; // ASIMD FP convert, narrow (F32 to F16) -def : InstRW<[V1Write_4c_2V02], (instregex "^FCVTNv[48]i16$")>; +def : InstRW<[V1Write_4c2_1V02], (instregex "^FCVTNv[48]i16$")>; // ASIMD FP convert, narrow (F64 to F32) def : InstRW<[V1Write_3c_1V02], (instregex "^FCVTNv[24]i32$", @@ -1019,31 +1145,31 @@ def : InstRW<[V1Write_3c_1V02], (instregex "^FCVTNv[24]i32$", def : InstRW<[V1Write_3c_1V02], (instregex "^FCVT[AMNPZ][SU]v2f(32|64)$", "^FCVT[AMNPZ][SU]v2i(32|64)_shift$", "^FCVT[AMNPZ][SU]v1i64$", + "^FCVT[AMNPZ][SU]v1i32$", + "^FCVT[AMNPZ][SU]v1f16$", "^FCVTZ[SU]d$", + "^FCVTZ[SU]s$", + "^FCVTZ[SU]h$", "^[SU]CVTFv2f(32|64)$", "^[SU]CVTFv2i(32|64)_shift$", "^[SU]CVTFv1i64$", - "^[SU]CVTFd$")>; + "^[SU]CVTFv1i32$", + "^[SU]CVTFv1i16$", + "^[SU]CVTFd$", + "^[SU]CVTFs$", + "^[SU]CVTFh$")>; // ASIMD FP convert, other, D-form F16 and Q-form F32 -def : InstRW<[V1Write_4c_2V02], (instregex "^FCVT[AMNPZ][SU]v4f(16|32)$", +def : InstRW<[V1Write_4c2_1V02], (instregex "^FCVT[AMNPZ][SU]v4f(16|32)$", "^FCVT[AMNPZ][SU]v4i(16|32)_shift$", - "^FCVT[AMNPZ][SU]v1i32$", - "^FCVTZ[SU]s$", "^[SU]CVTFv4f(16|32)$", - "^[SU]CVTFv4i(16|32)_shift$", - "^[SU]CVTFv1i32$", - "^[SU]CVTFs$")>; + "^[SU]CVTFv4i(16|32)_shift$")>; // ASIMD FP convert, other, Q-form F16 -def : InstRW<[V1Write_6c_4V02], (instregex "^FCVT[AMNPZ][SU]v8f16$", +def : InstRW<[V1Write_6c4_1V02], (instregex "^FCVT[AMNPZ][SU]v8f16$", "^FCVT[AMNPZ][SU]v8i16_shift$", - "^FCVT[AMNPZ][SU]v1f16$", - "^FCVTZ[SU]h$", "^[SU]CVTFv8f16$", - "^[SU]CVTFv8i16_shift$", - "^[SU]CVTFv1i16$", - "^[SU]CVTFh$")>; + "^[SU]CVTFv8i16_shift$")>; // ASIMD FP divide, D-form, F16 // ASIMD FP square root, D-form, F16 @@ -1051,42 +1177,42 @@ def : InstRW<[V1Write_7c7_1V02], (instrs FDIVv4f16, FSQRTv4f16)>; // ASIMD FP divide, F32 // ASIMD FP square root, F32 -def : InstRW<[V1Write_10c7_1V02], (instrs FDIVv2f32, FDIVv4f32, - FSQRTv2f32, FSQRTv4f32)>; +def : InstRW<[V1Write_10c5_1V02], (instrs FDIVv2f32, FSQRTv2f32)>; +def : InstRW<[V1Write_10c9_1V02], (instrs FDIVv4f32, FSQRTv4f32)>; // ASIMD FP divide, Q-form, F16 -def : InstRW<[V1Write_13c5_1V02], (instrs FDIVv8f16)>; +def : InstRW<[V1Write_13c13_1V02], (instrs FDIVv8f16)>; // ASIMD FP divide, Q-form, F64 -def : InstRW<[V1Write_15c7_1V02], (instrs FDIVv2f64)>; +def : InstRW<[V1Write_15c14_1V02], (instrs FDIVv2f64)>; // ASIMD FP square root, Q-form, F16 -def : InstRW<[V1Write_13c11_1V02], (instrs FSQRTv8f16)>; +def : InstRW<[V1Write_13c13_1V02], (instrs FSQRTv8f16)>; // ASIMD FP square root, Q-form, F64 -def : InstRW<[V1Write_16c7_1V02], (instrs FSQRTv2f64)>; +def : InstRW<[V1Write_16c15_1V02], (instrs FSQRTv2f64)>; // ASIMD FP max/min, reduce, F32 and D-form F16 -def : InstRW<[V1Write_4c_2V], (instregex "^F(MAX|MIN)(NM)?Vv4(i16|i32)v$")>; +def : InstRW<[V1Write_4c2_1V], (instregex "^F(MAX|MIN)(NM)?Vv4(i16|i32)v$")>; // ASIMD FP max/min, reduce, Q-form F16 -def : InstRW<[V1Write_6c_3V], (instregex "^F(MAX|MIN)(NM)?Vv8i16v$")>; +def : InstRW<[V1Write_6c3_1V], (instregex "^F(MAX|MIN)(NM)?Vv8i16v$")>; // ASIMD FP round, D-form F32 and Q-form F64 def : InstRW<[V1Write_3c_1V02], (instregex "^FRINT[AIMNPXZ]v2f(32|64)$")>; // ASIMD FP round, D-form F16 and Q-form F32 -def : InstRW<[V1Write_4c_2V02], (instregex "^FRINT[AIMNPXZ]v4f(16|32)$")>; +def : InstRW<[V1Write_4c2_1V02], (instregex "^FRINT[AIMNPXZ]v4f(16|32)$")>; // ASIMD FP round, Q-form F16 -def : InstRW<[V1Write_6c_4V02], (instregex "^FRINT[AIMNPXZ]v8f16$")>; +def : InstRW<[V1Write_6c4_1V02], (instregex "^FRINT[AIMNPXZ]v8f16$")>; // ASIMD BF instructions // ----------------------------------------------------------------------------- // ASIMD convert, F32 to BF16 -def : InstRW<[V1Write_4c_1V02], (instrs BFCVTN, BFCVTN2)>; +def : InstRW<[V1Write_4c2_1V02], (instrs BFCVTN, BFCVTN2)>; // ASIMD dot product def : InstRW<[V1Wr_BFD, V1Rd_BFD], (instregex "^BF(DOT|16DOTlane)v[48]bf16$")>; @@ -1113,7 +1239,6 @@ def : InstRW<[V1Write_3c_1V02], (instrs BFCVT)>; // ASIMD insert, element to element // ASIMD move, FP immed // ASIMD move, integer immed -// ASIMD reverse // ASIMD table lookup, 1 or 2 table regs // ASIMD table lookup extension, 1 table reg // ASIMD transfer, element to gen reg @@ -1132,20 +1257,21 @@ def : InstRW<[V1Write_4c_1V13], (instregex "^[SU]QXTNv", "^SQXTUNv")>; // ASIMD reciprocal and square root estimate, D-form F32 and F64 def : InstRW<[V1Write_3c_1V02], (instrs URECPEv2i32, URSQRTEv2i32, - FRECPEv1i32, FRECPEv2f32, FRECPEv1i64, - FRSQRTEv1i32, FRSQRTEv2f32, FRSQRTEv1i64)>; + FRECPEv2f32, FRSQRTEv2f32, + FRECPEv1f16, FRECPEv1i32, FRECPEv1i64, + FRSQRTEv1f16, FRSQRTEv1i32, FRSQRTEv1i64)>; // ASIMD reciprocal and square root estimate, Q-form U32 // ASIMD reciprocal and square root estimate, D-form F16 and Q-form F32 and F64 -def : InstRW<[V1Write_4c_1V02], (instrs URECPEv4i32, +def : InstRW<[V1Write_4c2_1V02], (instrs URECPEv4i32, URSQRTEv4i32, - FRECPEv1f16, FRECPEv4f16, + FRECPEv4f16, FRECPEv4f32, FRECPEv2f64, - FRSQRTEv1f16, FRSQRTEv4f16, + FRSQRTEv4f16, FRSQRTEv4f32, FRSQRTEv2f64)>; // ASIMD reciprocal and square root estimate, Q-form F16 -def : InstRW<[V1Write_6c_2V02], (instrs FRECPEv8f16, +def : InstRW<[V1Write_6c4_1V02], (instrs FRECPEv8f16, FRSQRTEv8f16)>; // ASIMD reciprocal exponent @@ -1155,27 +1281,33 @@ def : InstRW<[V1Write_3c_1V02], (instrs FRECPXv1f16, FRECPXv1i32, FRECPXv1i64)>; def : InstRW<[V1Write_4c_1V], (instregex "^FRECPS(16|32|64)$", "^FRECPSv", "^FRSQRTS(16|32|64)$", "^FRSQRTSv")>; +// ASIMD reverse +def : InstRW<[V1Write_1c_1I], (instregex "^REVXr$")>; + + // ASIMD table lookup, 1 or 2 table regs // ASIMD table lookup extension, 1 table reg -def : InstRW<[V1Write_2c_2V01], (instregex "^TBLv(8|16)i8(One|Two)$", +def : InstRW<[V1Write_2c_1V01], (instregex "^TBLv(8|16)i8(One|Two)$", "^TBXv(8|16)i8One$")>; // ASIMD table lookup, 3 table regs // ASIMD table lookup extension, 2 table reg -def : InstRW<[V1Write_4c_2V01], (instrs TBLv8i8Three, TBLv16i8Three, +def : InstRW<[V1Write_4c2_1V01], (instrs TBLv8i8Three, TBLv16i8Three, TBXv8i8Two, TBXv16i8Two)>; // ASIMD table lookup, 4 table regs -def : InstRW<[V1Write_4c_3V01], (instrs TBLv8i8Four, TBLv16i8Four)>; +def : InstRW<[V1Write_4c3_1V01], (instrs TBLv8i8Four, TBLv16i8Four)>; // ASIMD table lookup extension, 3 table reg -def : InstRW<[V1Write_6c_3V01], (instrs TBXv8i8Three, TBXv16i8Three)>; +def : InstRW<[V1Write_6c3_1V01], (instrs TBXv8i8Three, TBXv16i8Three)>; // ASIMD table lookup extension, 4 table reg -def : InstRW<[V1Write_6c_5V01], (instrs TBXv8i8Four, TBXv16i8Four)>; +def : InstRW<[V1Write_6c5_1V01], (instrs TBXv8i8Four, TBXv16i8Four)>; // ASIMD transfer, element to gen reg -def : InstRW<[V1Write_2c_1V], (instregex "^SMOVvi(((8|16)to(32|64))|32to64)$", +def : InstRW<[V1Write_2c4_1V], (instregex "^SMOVvi(((8|16)to(32|64))|32to64)$", + "^UMOVvi(8|16|32|64)_idx0$", + "^SMOVvi(8|16|32)to(32|64)_idx0$", "^UMOVvi(8|16|32|64)$")>; // ASIMD transfer, gen reg to element @@ -1192,27 +1324,27 @@ def : InstRW<[WriteAdr, V1Write_6c_1L], (instregex "^LD1Onev(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>; // ASIMD load, 1 element, multiple, 2 reg -def : InstRW<[V1Write_6c_2L], +def : InstRW<[V1Write_6c2_1L], (instregex "^LD1Twov(8b|16b|4h|8h|2s|4s|1d|2d)$")>; -def : InstRW<[WriteAdr, V1Write_6c_2L], +def : InstRW<[WriteAdr, V1Write_6c2_1L], (instregex "^LD1Twov(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>; // ASIMD load, 1 element, multiple, 3 reg -def : InstRW<[V1Write_6c_3L], +def : InstRW<[V1Write_6c3_1L], (instregex "^LD1Threev(8b|16b|4h|8h|2s|4s|1d|2d)$")>; -def : InstRW<[WriteAdr, V1Write_6c_3L], +def : InstRW<[WriteAdr, V1Write_6c3_1L], (instregex "^LD1Threev(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>; // ASIMD load, 1 element, multiple, 4 reg, D-form -def : InstRW<[V1Write_6c_2L], +def : InstRW<[V1Write_6c2_1L], (instregex "^LD1Fourv(8b|4h|2s|1d)$")>; -def : InstRW<[WriteAdr, V1Write_6c_2L], +def : InstRW<[WriteAdr, V1Write_6c2_1L], (instregex "^LD1Fourv(8b|4h|2s|1d)_POST$")>; // ASIMD load, 1 element, multiple, 4 reg, Q-form -def : InstRW<[V1Write_7c_4L], +def : InstRW<[V1Write_7c4_1L], (instregex "^LD1Fourv(16b|8h|4s|2d)$")>; -def : InstRW<[WriteAdr, V1Write_7c_4L], +def : InstRW<[WriteAdr, V1Write_7c4_1L], (instregex "^LD1Fourv(16b|8h|4s|2d)_POST$")>; // ASIMD load, 1 element, one lane @@ -1225,60 +1357,60 @@ def : InstRW<[WriteAdr, V1Write_8c_1L_1V], "^LD1Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>; // ASIMD load, 2 element, multiple, D-form -def : InstRW<[V1Write_8c_1L_2V], +def : InstRW<[V1Write_8c_1L_1V], (instregex "^LD2Twov(8b|4h|2s)$")>; -def : InstRW<[WriteAdr, V1Write_8c_1L_2V], +def : InstRW<[WriteAdr, V1Write_8c_1L_1V], (instregex "^LD2Twov(8b|4h|2s)_POST$")>; // ASIMD load, 2 element, multiple, Q-form -def : InstRW<[V1Write_8c_2L_2V], +def : InstRW<[V1Write_8c2_1L_1V], (instregex "^LD2Twov(16b|8h|4s|2d)$")>; -def : InstRW<[WriteAdr, V1Write_8c_2L_2V], +def : InstRW<[WriteAdr, V1Write_8c2_1L_1V], (instregex "^LD2Twov(16b|8h|4s|2d)_POST$")>; // ASIMD load, 2 element, one lane // ASIMD load, 2 element, all lanes -def : InstRW<[V1Write_8c_1L_2V], +def : InstRW<[V1Write_8c2_1L_1V], (instregex "^LD2i(8|16|32|64)$", "^LD2Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>; -def : InstRW<[WriteAdr, V1Write_8c_1L_2V], +def : InstRW<[WriteAdr, V1Write_8c2_1L_1V], (instregex "^LD2i(8|16|32|64)_POST$", "^LD2Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>; // ASIMD load, 3 element, multiple, D-form // ASIMD load, 3 element, one lane // ASIMD load, 3 element, all lanes -def : InstRW<[V1Write_8c_2L_3V], +def : InstRW<[V1Write_8c3_1L_1V], (instregex "^LD3Threev(8b|4h|2s)$", "^LD3i(8|16|32|64)$", "^LD3Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>; -def : InstRW<[WriteAdr, V1Write_8c_2L_3V], +def : InstRW<[WriteAdr, V1Write_8c3_1L_1V], (instregex "^LD3Threev(8b|4h|2s)_POST$", "^LD3i(8|16|32|64)_POST$", "^LD3Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>; // ASIMD load, 3 element, multiple, Q-form -def : InstRW<[V1Write_8c_3L_3V], +def : InstRW<[V1Write_8c3_1L_1V], (instregex "^LD3Threev(16b|8h|4s|2d)$")>; -def : InstRW<[WriteAdr, V1Write_8c_3L_3V], +def : InstRW<[WriteAdr, V1Write_8c3_1L_1V], (instregex "^LD3Threev(16b|8h|4s|2d)_POST$")>; // ASIMD load, 4 element, multiple, D-form // ASIMD load, 4 element, one lane // ASIMD load, 4 element, all lanes -def : InstRW<[V1Write_8c_3L_4V], +def : InstRW<[V1Write_8c3_1L_1V], (instregex "^LD4Fourv(8b|4h|2s)$", "^LD4i(8|16|32|64)$", "^LD4Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>; -def : InstRW<[WriteAdr, V1Write_8c_3L_4V], +def : InstRW<[WriteAdr, V1Write_8c3_1L_1V], (instregex "^LD4Fourv(8b|4h|2s)_POST$", "^LD4i(8|16|32|64)_POST$", "^LD4Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>; // ASIMD load, 4 element, multiple, Q-form -def : InstRW<[V1Write_9c_4L_4V], +def : InstRW<[V1Write_9c6_1L_1V], (instregex "^LD4Fourv(16b|8h|4s|2d)$")>; -def : InstRW<[WriteAdr, V1Write_9c_4L_4V], +def : InstRW<[WriteAdr, V1Write_9c6_1L_1V], (instregex "^LD4Fourv(16b|8h|4s|2d)_POST$")>; @@ -1297,25 +1429,25 @@ def : InstRW<[WriteAdr, V1Write_2c_1L01_1V01], // ASIMD store, 1 element, multiple, 2 reg, Q-form // ASIMD store, 1 element, multiple, 3 reg, D-form // ASIMD store, 1 element, multiple, 4 reg, D-form -def : InstRW<[V1Write_2c_2L01_2V01], +def : InstRW<[V1Write_2c2_1L01_1V01], (instregex "^ST1Twov(16b|8h|4s|2d)$", "^ST1Threev(8b|4h|2s|1d)$", "^ST1Fourv(8b|4h|2s|1d)$")>; -def : InstRW<[WriteAdr, V1Write_2c_2L01_2V01], +def : InstRW<[WriteAdr, V1Write_2c2_1L01_1V01], (instregex "^ST1Twov(16b|8h|4s|2d)_POST$", "^ST1Threev(8b|4h|2s|1d)_POST$", "^ST1Fourv(8b|4h|2s|1d)_POST$")>; // ASIMD store, 1 element, multiple, 3 reg, Q-form -def : InstRW<[V1Write_2c_3L01_3V01], +def : InstRW<[V1Write_2c3_1L01_1V01], (instregex "^ST1Threev(16b|8h|4s|2d)$")>; -def : InstRW<[WriteAdr, V1Write_2c_3L01_3V01], +def : InstRW<[WriteAdr, V1Write_2c3_1L01_1V01], (instregex "^ST1Threev(16b|8h|4s|2d)_POST$")>; // ASIMD store, 1 element, multiple, 4 reg, Q-form -def : InstRW<[V1Write_2c_4L01_4V01], +def : InstRW<[V1Write_2c4_1L01_1V01], (instregex "^ST1Fourv(16b|8h|4s|2d)$")>; -def : InstRW<[WriteAdr, V1Write_2c_4L01_4V01], +def : InstRW<[WriteAdr, V1Write_2c4_1L01_1V01], (instregex "^ST1Fourv(16b|8h|4s|2d)_POST$")>; // ASIMD store, 1 element, one lane @@ -1334,45 +1466,45 @@ def : InstRW<[WriteAdr, V1Write_4c_1L01_1V01], // ASIMD store, 3 element, multiple, D-form // ASIMD store, 3 element, one lane // ASIMD store, 4 element, one lane, D -def : InstRW<[V1Write_4c_2L01_2V01], +def : InstRW<[V1Write_4c2_1L01_1V01], (instregex "^ST2Twov(16b|8h|4s|2d)$", "^ST3Threev(8b|4h|2s)$", "^ST3i(8|16|32|64)$", "^ST4i64$")>; -def : InstRW<[WriteAdr, V1Write_4c_2L01_2V01], +def : InstRW<[WriteAdr, V1Write_4c2_1L01_1V01], (instregex "^ST2Twov(16b|8h|4s|2d)_POST$", "^ST3Threev(8b|4h|2s)_POST$", "^ST3i(8|16|32|64)_POST$", "^ST4i64_POST$")>; // ASIMD store, 3 element, multiple, Q-form -def : InstRW<[V1Write_5c_3L01_3V01], +def : InstRW<[V1Write_5c3_1L01_1V01], (instregex "^ST3Threev(16b|8h|4s|2d)$")>; -def : InstRW<[WriteAdr, V1Write_5c_3L01_3V01], +def : InstRW<[WriteAdr, V1Write_5c3_1L01_1V01], (instregex "^ST3Threev(16b|8h|4s|2d)_POST$")>; // ASIMD store, 4 element, multiple, D-form -def : InstRW<[V1Write_6c_3L01_3V01], +def : InstRW<[V1Write_6c6_1L01_1V01], (instregex "^ST4Fourv(8b|4h|2s)$")>; -def : InstRW<[WriteAdr, V1Write_6c_3L01_3V01], +def : InstRW<[WriteAdr, V1Write_6c6_1L01_1V01], (instregex "^ST4Fourv(8b|4h|2s)_POST$")>; // ASIMD store, 4 element, multiple, Q-form, B/H/S -def : InstRW<[V1Write_7c_6L01_6V01], +def : InstRW<[V1Write_7c12_1L01_1V01], (instregex "^ST4Fourv(16b|8h|4s)$")>; -def : InstRW<[WriteAdr, V1Write_7c_6L01_6V01], +def : InstRW<[WriteAdr, V1Write_7c12_1L01_1V01], (instregex "^ST4Fourv(16b|8h|4s)_POST$")>; // ASIMD store, 4 element, multiple, Q-form, D -def : InstRW<[V1Write_4c_4L01_4V01], +def : InstRW<[V1Write_4c8_1L01_1V01], (instrs ST4Fourv2d)>; -def : InstRW<[WriteAdr, V1Write_4c_4L01_4V01], +def : InstRW<[WriteAdr, V1Write_4c8_1L01_1V01], (instrs ST4Fourv2d_POST)>; // ASIMD store, 4 element, one lane, B/H/S -def : InstRW<[V1Write_6c_3L_3V], +def : InstRW<[V1Write_6c2_1L01_1V01], (instregex "^ST4i(8|16|32)$")>; -def : InstRW<[WriteAdr, V1Write_6c_3L_3V], +def : InstRW<[WriteAdr, V1Write_6c2_1L01_1V01], (instregex "^ST4i(8|16|32)_POST$")>; @@ -1424,11 +1556,11 @@ def : InstRW<[V1Write_2c_1M0], (instregex "^BRK[AB]_PP[mz]P$")>; def : InstRW<[V1Write_2c_1M0], (instrs BRKN_PPzP, BRKPA_PPzPP, BRKPB_PPzPP)>; // Loop control, based on predicate and flag setting -def : InstRW<[V1Write_3c_2M0], (instrs BRKAS_PPzP, BRKBS_PPzP, BRKNS_PPzP, +def : InstRW<[V1Write_3c2_1M0], (instrs BRKAS_PPzP, BRKBS_PPzP, BRKNS_PPzP, BRKPAS_PPzPP, BRKPBS_PPzPP)>; // Loop control, based on GPR -def : InstRW<[V1Write_3c_2M0], (instregex "^WHILE(LE|LO|LS|LT)_P(WW|XX)_[BHSD]$")>; +def : InstRW<[V1Write_3c2_1M0], (instregex "^WHILE(LE|LO|LS|LT)_P(WW|XX)_[BHSD]$")>; // Loop terminate def : InstRW<[V1Write_1c_1M0], (instregex "^CTERM(EQ|NE)_(WW|XX)$")>; @@ -1445,14 +1577,14 @@ def : InstRW<[V1Write_2c_1M0], (instregex "^(CNT|([SU]Q)?(DEC|INC))[BHWD]_XPiI$" "^[SU]Q(DEC|INC)P_XPWd_[BHSD]$")>; // Predicate counting vector, active predicate -def : InstRW<[V1Write_7c_2M0_1V01], (instregex "^([SU]Q)?(DEC|INC)P_ZP_[HSD]$")>; +def : InstRW<[V1Write_7c2_1M0_1V01], (instregex "^([SU]Q)?(DEC|INC)P_ZP_[HSD]$")>; // Predicate logical def : InstRW<[V1Write_1c_1M0], (instregex "^(AND|BIC|EOR|NAND|NOR|ORN|ORR)_PPzPP$")>; // Predicate logical, flag setting -def : InstRW<[V1Write_2c_2M0], +def : InstRW<[V1Write_2c2_1M0], (instregex "^(AND|BIC|EOR|NAND|NOR|ORN|ORR)S_PPzPP$")>; // Predicate reverse @@ -1475,7 +1607,7 @@ def : InstRW<[V1Write_2c_1M0], (instrs PTEST_PP, def : InstRW<[V1Write_1c_1M0], (instrs SEL_PPPP)>; // Predicate set/initialize, set flags -def : InstRW<[V1Write_3c_2M0], (instregex "^PTRUES_[BHSD]$")>; +def : InstRW<[V1Write_3c2_1M0], (instregex "^PTRUES_[BHSD]$")>; @@ -1495,8 +1627,8 @@ def : InstRW<[V1Write_2c_1V01], "^SUBR_Z(I|P[mZ]Z)_[BHSD]", "^(AND|EOR|ORR)_ZI$", "^(AND|BIC|EOR|EOR(BT|TB)?|ORR)_ZP?ZZ", - "^EOR(BT|TB)_ZZZ_[BHSD]$", - "^(AND|BIC|EOR|NOT|ORR)_ZPmZ_[BHSD]")>; + "^EOR(BT|TB)_ZZZ_[BHSD]$", + "^(AND|BIC|EOR|NOT|ORR)_ZPmZ_[BHSD]")>; // Arithmetic, shift def : InstRW<[V1Write_2c_1V1], @@ -1529,14 +1661,15 @@ def : InstRW<[V1Write_3c_1V1], (instregex "^CLAST[AB]_[VZ]PZ_[BHSD]$", "^SPLICE_ZPZZ?_[BHSD]$")>; // Convert to floating point, 64b to float or convert to double -def : InstRW<[V1Write_3c_1V0], (instregex "^[SU]CVTF_ZPmZ_Dto[HSD]", - "^[SU]CVTF_ZPmZ_StoD")>; +def : InstRW<[V1Write_3c_1V0], (instregex "^[SU]CVTF_ZPmZ_Dto[HSD]")>; + // Convert to floating point, 32b to single or half -def : InstRW<[V1Write_4c_2V0], (instregex "^[SU]CVTF_ZPmZ_Sto[HS]")>; +def : InstRW<[V1Write_4c2_1V0], (instregex "^[SU]CVTF_ZPmZ_Sto[HS]", + "^[SU]CVTF_ZPmZ_StoD")>; // Convert to floating point, 16b to half -def : InstRW<[V1Write_6c_4V0], (instregex "^[SU]CVTF_ZPmZ_HtoH")>; +def : InstRW<[V1Write_6c4_1V0], (instregex "^[SU]CVTF_ZPmZ_HtoH")>; // Copy, scalar def : InstRW<[V1Write_5c_1M0_1V01], (instregex "^CPY_ZPmR_[BHSD]$")>; @@ -1545,11 +1678,11 @@ def : InstRW<[V1Write_5c_1M0_1V01], (instregex "^CPY_ZPmR_[BHSD]$")>; def : InstRW<[V1Write_2c_1V01], (instregex "^CPY_ZP([mz]I|mV)_[BHSD]$")>; // Divides, 32 bit -def : InstRW<[V1Write_12c7_1V0], (instregex "^[SU]DIVR?_ZPmZ_S", +def : InstRW<[V1Write_12c11_1V0], (instregex "^[SU]DIVR?_ZPmZ_S", "^[SU]DIV_ZPZZ_S")>; // Divides, 64 bit -def : InstRW<[V1Write_20c7_1V0], (instregex "^[SU]DIVR?_ZPmZ_D", +def : InstRW<[V1Write_20c20_1V0], (instregex "^[SU]DIVR?_ZPmZ_D", "^[SU]DIV_ZPZZ_D")>; // Dot product, 8 bit @@ -1592,10 +1725,10 @@ def : InstRW<[V1Write_4c_1V0], (instregex "^INDEX_II_[BHS]$")>; def : InstRW<[V1Write_7c_1M0_1V0], (instregex "^INDEX_(IR|RI|RR)_[BHS]$")>; // Horizontal operations, D form, imm, imm -def : InstRW<[V1Write_5c_2V0], (instrs INDEX_II_D)>; +def : InstRW<[V1Write_5c2_1V0], (instrs INDEX_II_D)>; // Horizontal operations, D form, scalar, imm / scalar / imm, scalar -def : InstRW<[V1Write_8c_2M0_2V0], (instregex "^INDEX_(IR|RI|RR)_D$")>; +def : InstRW<[V1Write_8c2_1M0_1V0], (instregex "^INDEX_(IR|RI|RR)_D$")>; // Move prefix def : InstRW<[V1Write_2c_1V01], (instregex "^MOVPRFX_ZP[mz]Z_[BHSD]$", @@ -1611,7 +1744,7 @@ def : InstRW<[V1Write_4c_1V0], (instregex "^MUL_(ZI|ZPmZ|ZZZI|ZZZ)_[BHS]", "^[SU]MULH_ZPZZ_[BHS]")>; // Multiply, D element size -def : InstRW<[V1Write_5c_2V0], (instregex "^MUL_(ZI|ZPmZ|ZZZI|ZZZ)_D", +def : InstRW<[V1Write_5c2_1V0], (instregex "^MUL_(ZI|ZPmZ|ZZZI|ZZZ)_D", "^MUL_ZPZZ_D", "^[SU]MULH_(ZPmZ|ZZZ)_D", "^[SU]MULH_ZPZZ_D")>; @@ -1624,29 +1757,29 @@ def : InstRW<[V1Wr_ZMAD, ReadDefault, V1Rd_ZMAD], // Multiply accumulate, B, H, S element size // NOTE: This is not specified in the SOG. -def : InstRW<[V1Write_4c_1V0], (instregex "^(ML[AS]|MAD|MSB)_(ZPmZZ|ZPZZZ)_[BHS]")>; +def : InstRW<[V1Wr_ZMABHS, ReadDefault, V1Rd_ZMABHS], (instregex "^(ML[AS]|MAD|MSB)_(ZPmZZ|ZPZZZ)_[BHS]")>; // Predicate counting vector -def : InstRW<[V1Write_2c_1V0], (instregex "^([SU]Q)?(DEC|INC)[HWD]_ZPiI$")>; +def : InstRW<[V1Write_2c_1V01], (instregex "^([SU]Q)?(DEC|INC)[HWD]_ZPiI$")>; // Reduction, arithmetic, B form -def : InstRW<[V1Write_14c_1V_1V0_2V1_1V13], +def : InstRW<[V1Write_14c2_1V], (instregex "^[SU](ADD|MAX|MIN)V_VPZ_B")>; // Reduction, arithmetic, H form -def : InstRW<[V1Write_12c_1V_1V01_2V1], +def : InstRW<[V1Write_12c2_1V], (instregex "^[SU](ADD|MAX|MIN)V_VPZ_H")>; // Reduction, arithmetic, S form -def : InstRW<[V1Write_10c_1V_1V01_2V1], +def : InstRW<[V1Write_10c2_1V1], (instregex "^[SU](ADD|MAX|MIN)V_VPZ_S")>; // Reduction, arithmetic, D form -def : InstRW<[V1Write_8c_1V_1V01], +def : InstRW<[V1Write_8c2_1V1], (instregex "^[SU](ADD|MAX|MIN)V_VPZ_D")>; // Reduction, logical -def : InstRW<[V1Write_12c_4V01], (instregex "^(AND|EOR|OR)V_VPZ_[BHSD]$")>; +def : InstRW<[V1Write_12c4_1V01], (instregex "^(AND|EOR|OR)V_VPZ_[BHSD]$")>; // Reverse, vector def : InstRW<[V1Write_2c_1V01], (instregex "^REV_ZZ_[BHSD]$", @@ -1684,13 +1817,13 @@ def : InstRW<[V1Write_2c_1V01], (instregex "^F(ADD|SUB)_(ZPm[IZ]|ZZZ)_[HSD]", "^FSUBR_(ZPZI|ZPZZ)_[HSD]")>; // Floating point associative add, F16 -def : InstRW<[V1Write_19c_18V0], (instrs FADDA_VPZ_H)>; +def : InstRW<[V1Write_19c18_1V0], (instrs FADDA_VPZ_H)>; // Floating point associative add, F32 -def : InstRW<[V1Write_11c_10V0], (instrs FADDA_VPZ_S)>; +def : InstRW<[V1Write_11c10_1V0], (instrs FADDA_VPZ_S)>; // Floating point associative add, F64 -def : InstRW<[V1Write_8c_3V01], (instrs FADDA_VPZ_D)>; +def : InstRW<[V1Write_8c3_1V01], (instrs FADDA_VPZ_D)>; // Floating point compare def : InstRW<[V1Write_2c_1V0], (instregex "^FAC(GE|GT)_PPzZZ_[HSD]$", @@ -1706,29 +1839,29 @@ def : InstRW<[V1Wr_ZFCMA, V1Rd_ZFCMA], (instregex "^FCMLA_ZZZI_[HS] // Floating point convert, long or narrow (F16 to F32 or F32 to F16) // Floating point convert to integer, F32 -def : InstRW<[V1Write_4c_2V0], (instregex "^FCVT_ZPmZ_(HtoS|StoH)", - "^FCVTZ[SU]_ZPmZ_(HtoS|StoS)")>; +def : InstRW<[V1Write_4c2_1V0], (instregex "^FCVT_ZPmZ_(HtoS|StoH)", + "^FCVTZ[SU]_ZPmZ_(StoS|StoD)")>; // Floating point convert, long or narrow (F16 to F64, F32 to F64, F64 to F32 or F64 to F16) // Floating point convert to integer, F64 def : InstRW<[V1Write_3c_1V0], (instregex "^FCVT_ZPmZ_(HtoD|StoD|DtoS|DtoH)", - "^FCVTZ[SU]_ZPmZ_(HtoD|StoD|DtoS|DtoD)")>; + "^FCVTZ[SU]_ZPmZ_(DtoS|DtoD)")>; // Floating point convert to integer, F16 -def : InstRW<[V1Write_6c_4V0], (instregex "^FCVTZ[SU]_ZPmZ_HtoH")>; +def : InstRW<[V1Write_6c4_1V0], (instregex "^FCVTZ[SU]_ZPmZ_(HtoH|HtoS|HtoD)")>; // Floating point copy def : InstRW<[V1Write_2c_1V01], (instregex "^FCPY_ZPmI_[HSD]$", "^FDUP_ZI_[HSD]$")>; // Floating point divide, F16 -def : InstRW<[V1Write_13c10_1V0], (instregex "^FDIVR?_(ZPmZ|ZPZZ)_H")>; +def : InstRW<[V1Write_13c12_1V0], (instregex "^FDIVR?_(ZPmZ|ZPZZ)_H")>; // Floating point divide, F32 -def : InstRW<[V1Write_10c7_1V0], (instregex "^FDIVR?_(ZPmZ|ZPZZ)_S")>; +def : InstRW<[V1Write_10c9_1V0], (instregex "^FDIVR?_(ZPmZ|ZPZZ)_S")>; // Floating point divide, F64 -def : InstRW<[V1Write_15c7_1V0], (instregex "^FDIVR?_(ZPmZ|ZPZZ)_D")>; +def : InstRW<[V1Write_15c14_1V0], (instregex "^FDIVR?_(ZPmZ|ZPZZ)_D")>; // Floating point min/max def : InstRW<[V1Write_2c_1V01], (instregex "^F(MAX|MIN)(NM)?_ZPm[IZ]_[HSD]", @@ -1752,10 +1885,10 @@ def : InstRW<[V1Wr_ZFMA, V1Rd_ZFMA], def : InstRW<[V1Write_4c_1V01], (instregex "^F(RECPS|RSQRTS)_ZZZ_[HSD]")>; // Floating point reciprocal estimate, F16 -def : InstRW<[V1Write_6c_4V0], (instrs FRECPE_ZZ_H, FRSQRTE_ZZ_H)>; +def : InstRW<[V1Write_6c_1V0], (instrs FRECPE_ZZ_H, FRSQRTE_ZZ_H)>; // Floating point reciprocal estimate, F32 -def : InstRW<[V1Write_4c_2V0], (instrs FRECPE_ZZ_S, FRSQRTE_ZZ_S)>; +def : InstRW<[V1Write_4c_1V0], (instrs FRECPE_ZZ_S, FRSQRTE_ZZ_S)>; // Floating point reciprocal estimate, F64 def : InstRW<[V1Write_3c_1V0], (instrs FRECPE_ZZ_D, FRSQRTE_ZZ_D)>; @@ -1764,13 +1897,13 @@ def : InstRW<[V1Write_3c_1V0], (instrs FRECPE_ZZ_D, FRSQRTE_ZZ_D)>; def : InstRW<[V1Write_3c_1V0], (instregex "^FRECPX_ZPmZ_[HSD]")>; // Floating point reduction, F16 -def : InstRW<[V1Write_13c_6V01], (instregex "^F(ADD|((MAX|MIN)(NM)?))V_VPZ_H$")>; +def : InstRW<[V1Write_13c6_1V01], (instregex "^F(ADD|((MAX|MIN)(NM)?))V_VPZ_H$")>; // Floating point reduction, F32 -def : InstRW<[V1Write_11c_1V_5V01], (instregex "^F(ADD|((MAX|MIN)(NM)?))V_VPZ_S$")>; +def : InstRW<[V1Write_11c5_1V01], (instregex "^F(ADD|((MAX|MIN)(NM)?))V_VPZ_S$")>; // Floating point reduction, F64 -def : InstRW<[V1Write_9c_1V_4V01], (instregex "^F(ADD|((MAX|MIN)(NM)?))V_VPZ_D$")>; +def : InstRW<[V1Write_9c4_1V01], (instregex "^F(ADD|((MAX|MIN)(NM)?))V_VPZ_D$")>; // Floating point round to integral, F16 def : InstRW<[V1Write_6c_1V0], (instregex "^FRINT[AIMNPXZ]_ZPmZ_H")>; @@ -1782,13 +1915,13 @@ def : InstRW<[V1Write_4c_1V0], (instregex "^FRINT[AIMNPXZ]_ZPmZ_S")>; def : InstRW<[V1Write_3c_1V0], (instregex "^FRINT[AIMNPXZ]_ZPmZ_D")>; // Floating point square root, F16 -def : InstRW<[V1Write_13c10_1V0], (instregex "^FSQRT_ZPmZ_H")>; +def : InstRW<[V1Write_13c12_1V0], (instregex "^FSQRT_ZPmZ_H")>; // Floating point square root, F32 -def : InstRW<[V1Write_10c7_1V0], (instregex "^FSQRT_ZPmZ_S")>; +def : InstRW<[V1Write_10c9_1V0], (instregex "^FSQRT_ZPmZ_S")>; // Floating point square root, F64 -def : InstRW<[V1Write_16c7_1V0], (instregex "^FSQRT_ZPmZ_D")>; +def : InstRW<[V1Write_16c14_1V0], (instregex "^FSQRT_ZPmZ_D")>; // Floating point trigonometric def : InstRW<[V1Write_3c_1V01], (instregex "^FEXPA_ZZ_[HSD]$", @@ -1825,9 +1958,9 @@ def : InstRW<[V1Write_6c_1L_1M], (instrs LDR_PXI)>; // Contiguous load, scalar + scalar // Contiguous load broadcast, scalar + imm // Contiguous load broadcast, scalar + scalar -def : InstRW<[V1Write_6c_1L01], (instregex "^LD1[BHWD]_IMM$", +def : InstRW<[V1Write_6c_1L01], (instregex "^LD1[BWD]_IMM$", "^LD1S?B_[HSD]_IMM$", - "^LD1S?H_[SD]_IMM$", + "^LD1SH_[SD]_IMM$", "^LD1S?W_D_IMM$", "^LD1[BWD]$", "^LD1S?B_[HSD]$", @@ -1838,8 +1971,11 @@ def : InstRW<[V1Write_6c_1L01], (instregex "^LD1[BHWD]_IMM$", "^LD1RS?H_[SD]_IMM$", "^LD1RS?W_D_IMM$", "^LD1RQ_[BHWD]_IMM$", - "^LD1RQ_[BWD]$")>; + "^LD1RQ_[BDW]$")>; + def : InstRW<[V1Write_7c_1L01_1S], (instregex "^LD1H$", + "^LD1H_IMM$", + "^LD1H_[SD]_IMM$", "^LD1S?H_[SD]$", "^LD1RQ_H$")>; @@ -1864,42 +2000,47 @@ def : InstRW<[V1Write_6c_1L01], (instregex "^LDNF1[BHWD]_IMM$", "^LDNF1S?W_D_IMM$")>; // Contiguous Load two structures to two vectors, scalar + imm -def : InstRW<[V1Write_8c_2L01_2V01], (instregex "^LD2[BHWD]_IMM$")>; +def : InstRW<[V1Write_8c2_2L01_2V01], (instregex "^LD2[BHWD]_IMM$")>; // Contiguous Load two structures to two vectors, scalar + scalar -def : InstRW<[V1Write_10c_2L01_2V01], (instrs LD2H)>; -def : InstRW<[V1Write_9c_2L01_2V01], (instregex "^LD2[BWD]$")>; +def : InstRW<[V1Write_10c2_1L01_1V01_1S], (instrs LD2H)>; +def : InstRW<[V1Write_9c2_1L01_1V01], (instregex "^LD2[BWD]$")>; // Contiguous Load three structures to three vectors, scalar + imm -def : InstRW<[V1Write_11c_3L01_3V01], (instregex "^LD3[BHWD]_IMM$")>; +def : InstRW<[V1Write_11c6_1L01_1V01], (instregex "^LD3[BHWD]_IMM$")>; // Contiguous Load three structures to three vectors, scalar + scalar -def : InstRW<[V1Write_13c_3L01_1S_3V01], (instregex "^LD3[BHWD]$")>; +def : InstRW<[V1Write_13c6_1L01_1S_1V01], (instregex "^LD3[BHWD]$")>; // Contiguous Load four structures to four vectors, scalar + imm -def : InstRW<[V1Write_12c_4L01_4V01], (instregex "^LD4[BHWD]_IMM$")>; +def : InstRW<[V1Write_12c8_1L01_1V01], (instregex "^LD4[BHWD]_IMM$")>; // Contiguous Load four structures to four vectors, scalar + scalar -def : InstRW<[V1Write_13c_4L01_2S_4V01], (instregex "^LD4[BHWD]$")>; +def : InstRW<[V1Write_13c8_1L01_1S_1V01], (instregex "^LD4[BHWD]$")>; // Gather load, vector + imm, 32-bit element size -def : InstRW<[V1Write_11c_1L_1V], (instregex "^GLD(FF)?1S?[BH]_S_IMM$", +def : InstRW<[V1Write_11c12_1L_1V], (instregex "^GLD(FF)?1S?[BH]_S_IMM$", "^GLD(FF)?1W_IMM$")>; // Gather load, vector + imm, 64-bit element size -def : InstRW<[V1Write_9c_2L_2V], +def : InstRW<[V1Write_9c6_1L_1V], (instregex "^GLD(FF)?1S?[BHW]_D_IMM$", - "^GLD(FF)?1S?[BHW]_D(_[SU]XTW)?(_SCALED)?$", + "^GLD(FF)?1S?[BHW]_D(_[SU]XTW)?$", "^GLD(FF)?1D_IMM$", - "^GLD(FF)?1D(_[SU]XTW)?(_SCALED)?$")>; + "^GLD(FF)?1D(_[SU]XTW)?$")>; + // Gather load, 32-bit scaled offset -def : InstRW<[V1Write_11c_2L_2V], - (instregex "^GLD(FF)?1S?[HW]_S_[SU]XTW_SCALED$", - "^GLD(FF)?1W_[SU]XTW_SCALED")>; +def : InstRW<[V1Write_11c12_1L_1V], + (instregex "^GLD(FF)?1D(_[US]XTW)?_SCALED$", + "^GLD(FF)?1S?[HW]_D(_[US]XTW)?_SCALED$", + "^GLD(FF)?1S?H_S_[US]XTW_SCALED$", + "^GLD(FF)?1W_[US]XTW_SCALED$", + "^GLDFF1W_D_[US]XTW_SCALED$", + "^GLD1SH_S_[US]XTW_SCALED$")>; // Gather load, 32-bit unpacked unscaled offset -def : InstRW<[V1Write_9c_1L_1V], +def : InstRW<[V1Write_9c6_1L_1V], (instregex "^GLD(FF)?1S?[BH]_S_[SU]XTW$", "^GLD(FF)?1W_[SU]XTW$")>; @@ -1918,33 +2059,34 @@ def : InstRW<[V1Write_1c_1L01], (instrs STR_PXI)>; def : InstRW<[V1Write_2c_1L01_1V], (instrs STR_ZXI)>; // Contiguous store, scalar + imm -// Contiguous store, scalar + scalar def : InstRW<[V1Write_2c_1L01_1V], (instregex "^ST1[BHWD]_IMM$", "^ST1B_[HSD]_IMM$", "^ST1H_[SD]_IMM$", - "^ST1W_D_IMM$", - "^ST1[BWD]$", + "^ST1W_D_IMM$")>; +// Contiguous store, scalar + scalar +def : InstRW<[V1Write_2c_1L01_1V], (instregex "^ST1[BWD]$", "^ST1B_[HSD]$", "^ST1W_D$")>; + def : InstRW<[V1Write_2c_1L01_1S_1V], (instregex "^ST1H(_[SD])?$")>; // Contiguous store two structures from two vectors, scalar + imm // Contiguous store two structures from two vectors, scalar + scalar -def : InstRW<[V1Write_4c_1L01_1V], (instregex "^ST2[BHWD]_IMM$", +def : InstRW<[V1Write_4c2_1L01_1V], (instregex "^ST2[BHWD]_IMM$", "^ST2[BWD]$")>; def : InstRW<[V1Write_4c_1L01_1S_1V], (instrs ST2H)>; // Contiguous store three structures from three vectors, scalar + imm -def : InstRW<[V1Write_7c_5L01_5V], (instregex "^ST3[BHWD]_IMM$")>; +def : InstRW<[V1Write_7c9_1L01_1V], (instregex "^ST3[BHWD]_IMM$")>; // Contiguous store three structures from three vectors, scalar + scalar -def : InstRW<[V1Write_7c_5L01_5S_5V], (instregex "^ST3[BHWD]$")>; +def : InstRW<[V1Write_7c9_1L01_1S_1V], (instregex "^ST3[BHWD]$")>; // Contiguous store four structures from four vectors, scalar + imm -def : InstRW<[V1Write_11c_9L01_9V], (instregex "^ST4[BHWD]_IMM$")>; +def : InstRW<[V1Write_11c18_1L01_1V], (instregex "^ST4[BHWD]_IMM$")>; // Contiguous store four structures from four vectors, scalar + scalar -def : InstRW<[V1Write_11c_9L01_9S_9V], (instregex "^ST4[BHWD]$")>; +def : InstRW<[V1Write_11c18_1L01_1S_1V], (instregex "^ST4[BHWD]$")>; // Non temporal store, scalar + imm // Non temporal store, scalar + scalar @@ -1953,29 +2095,34 @@ def : InstRW<[V1Write_2c_1L01_1V], (instregex "^STNT1[BHWD]_ZRI$", def : InstRW<[V1Write_2c_1L01_1S_1V], (instrs STNT1H_ZRR)>; // Scatter store vector + imm 32-bit element size +def : InstRW<[V1Write_10c8_1L01_1V], (instregex "^SST1[BH]_S_IMM$", + "^SST1W_IMM$")>; + // Scatter store, 32-bit scaled offset +def : InstRW<[V1Write_10c8_1L01_1V], (instregex "^SST1(H_S|W)_[SU]XTW_SCALED$")>; + // Scatter store, 32-bit unscaled offset -def : InstRW<[V1Write_10c_2L01_2V], (instregex "^SST1[BH]_S_IMM$", - "^SST1W_IMM$", - "^SST1(H_S|W)_[SU]XTW_SCALED$", - "^SST1[BH]_S_[SU]XTW$", +def : InstRW<[V1Write_10c8_1L01_1V], (instregex "^SST1[BH]_S_[SU]XTW$", "^SST1W_[SU]XTW$")>; // Scatter store, 32-bit unpacked unscaled offset +def : InstRW<[V1Write_6c4_1L01_1V], (instregex "^SST1[BHW]_D_[SU]XTW$", + "^SST1D_[SU]XTW$")>; + // Scatter store, 32-bit unpacked scaled offset -def : InstRW<[V1Write_6c_1L01_1V], (instregex "^SST1[BHW]_D_[SU]XTW$", - "^SST1D_[SU]XTW$", - "^SST1[HW]_D_[SU]XTW_SCALED$", +def : InstRW<[V1Write_6c4_1L01_1V], (instregex "^SST1[HW]_D_[SU]XTW_SCALED$", "^SST1D_[SU]XTW_SCALED$")>; // Scatter store vector + imm 64-bit element size +def : InstRW<[V1Write_6c4_1L01_1V], (instregex "^SST1[BHW]_D_IMM$", + "^SST1D_IMM$")>; + // Scatter store, 64-bit scaled offset +def : InstRW<[V1Write_6c4_1L01_1V], (instregex "^SST1[HW]_D_SCALED$", + "^SST1D_SCALED$")>; + // Scatter store, 64-bit unscaled offset -def : InstRW<[V1Write_6c_1L01_1V], (instregex "^SST1[BHW]_D_IMM$", - "^SST1D_IMM$", - "^SST1[HW]_D_SCALED$", - "^SST1D_SCALED$", - "^SST1[BHW]_D$", +def : InstRW<[V1Write_6c4_1L01_1V], (instregex "^SST1[BHW]_D$", "^SST1D$")>; @@ -1990,10 +2137,10 @@ def : InstRW<[V1Write_2c_1M0], (instrs RDFFR_P, WRFFR)>; // Read first fault register, predicated -def : InstRW<[V1Write_3c_2M0], (instrs RDFFR_PPz)>; +def : InstRW<[V1Write_3c2_1M0], (instrs RDFFR_PPz)>; // Read first fault register and set flags -def : InstRW<[V1Write_4c_1M], (instrs RDFFRS_PPz)>; +def : InstRW<[V1Write_4c6_1M], (instrs RDFFRS_PPz)>; } diff --git a/llvm/lib/Target/AArch64/AArch64SchedPredNeoverse.td b/llvm/lib/Target/AArch64/AArch64SchedPredNeoverse.td index 33b76a4f65f05..c26c9b94cc9fa 100644 --- a/llvm/lib/Target/AArch64/AArch64SchedPredNeoverse.td +++ b/llvm/lib/Target/AArch64/AArch64SchedPredNeoverse.td @@ -18,6 +18,38 @@ def NeoverseNoLSL : MCSchedPredicate< CheckAll<[CheckShiftLSL, CheckShiftBy0]>>; +def Check32Ext : CheckAny<[CheckExtUXTB, + CheckExtUXTH, + CheckExtUXTX, + CheckExtSXTB, + CheckExtSXTH, + CheckExtSXTW, + CheckExtSXTX]>; + +def Check64Ext : CheckAny<[CheckExtUXTB, + CheckExtUXTH, + CheckExtUXTW, + CheckExtSXTB, + CheckExtSXTH, + CheckExtSXTW, + CheckExtSXTX]>; + +// Identify arithmetic instructions with an extended register. +def RegExtendAndShiftFn : TIIPredicate<"hasExtendAndShiftReg", + MCOpcodeSwitchStatement< + [MCOpcodeSwitchCase< + IsArith64ExtOp.ValidOpcodes, + MCReturnStatement< + CheckAll<[ + Check64Ext, + CheckAny<[ + CheckExtBy1, + CheckExtBy2, + CheckExtBy3, + CheckExtBy4]>]>>>], + MCReturnStatement>>; +def RegExtendAndShiftPred : MCSchedPredicate; + // Identify LDR/STR H/Q-form scaled (and potentially extended) FP instructions def NeoverseHQForm : MCSchedPredicate< CheckAll<[ @@ -82,3 +114,14 @@ def NeoverseZeroMove : MCSchedPredicate< CheckAll<[CheckOpcode<[MOVID, MOVIv2d_ns]>, CheckImmOperand<1, 0>]> ]>>; + +// Identify a load or store using the register offset addressing mode +// with a scaled register. +def NeoverseScaledIdxFn : TIIPredicate<"isNeoverseScaledAddr", + MCOpcodeSwitchStatement< + [MCOpcodeSwitchCase< + IsLoadStoreRegOffsetOp.ValidOpcodes, + MCReturnStatement< + CheckAny<[CheckMemScaled]>>>], + MCReturnStatement>>; +def NeoverseScaledIdxPred : MCSchedPredicate; diff --git a/llvm/lib/Target/AArch64/AArch64SchedPredicates.td b/llvm/lib/Target/AArch64/AArch64SchedPredicates.td index 854d3ce564831..2872529ab202d 100644 --- a/llvm/lib/Target/AArch64/AArch64SchedPredicates.td +++ b/llvm/lib/Target/AArch64/AArch64SchedPredicates.td @@ -26,7 +26,7 @@ let FunctionMapper = "AArch64_AM::getArithExtendType" in { } // Check for shifting in extended arithmetic instructions. -foreach I = {0-3} in { +foreach I = {0-4} in { let FunctionMapper = "AArch64_AM::getArithShiftValue" in def CheckExtBy#I : CheckImmOperand<3, I>; } @@ -91,11 +91,17 @@ def CheckQForm : CheckFunctionPredicateWithTII< >; // Identify arithmetic instructions with extend. -def IsArithExtOp : CheckOpcode<[ADDWrx, ADDXrx, ADDSWrx, ADDSXrx, - SUBWrx, SUBXrx, SUBSWrx, SUBSXrx, +def IsArith32ExtOp : CheckOpcode<[ADDWrx, ADDSWrx, + SUBWrx, SUBSWrx]>; + +def IsArith64ExtOp : CheckOpcode<[ADDXrx, ADDSXrx, + SUBXrx, SUBSXrx, ADDXrx64, ADDSXrx64, SUBXrx64, SUBSXrx64]>; +def IsArithExtOp : CheckOpcode; + // Identify arithmetic immediate instructions. def IsArithImmOp : CheckOpcode<[ADDWri, ADDXri, ADDSWri, ADDSXri, SUBWri, SUBXri, SUBSWri, SUBSXri]>; @@ -276,6 +282,28 @@ def IsCheapLSL : MCSchedPredicate< CheckShiftBy3, CheckShiftBy4]>]>>; +// Check for arith LSL shift <= 4 +def IsCheapArithLSL : MCSchedPredicate< + CheckAll< + [CheckShiftLSL, + CheckAny< + [CheckExtBy0, + CheckExtBy1, + CheckExtBy2, + CheckExtBy3, + CheckExtBy4]>]>>; + +// Check if logical instruction has shifted operand +def hasShiftedOpndFn : TIIPredicate<"hasShiftedOpnd", + MCOpcodeSwitchStatement< + [MCOpcodeSwitchCase< + IsLogicShiftOp.ValidOpcodes, + MCReturnStatement< + CheckAll<[CheckAny<[CheckShiftLSL,CheckShiftLSR,CheckShiftASR]>, + CheckNot]>>>], + MCReturnStatement>>; +def hasShiftedOpndPred : MCSchedPredicate; + // Idioms. // Identify an instruction that effectively transfers a register to another. diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-basic-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-basic-instructions.s index a5330b9d6d2d6..ab89f98564cbc 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-basic-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-basic-instructions.s @@ -1392,16 +1392,16 @@ drps # CHECK-NEXT: 1 1 0.25 sub w4, w20, #546, lsl #12 # CHECK-NEXT: 1 1 0.25 sub sp, sp, #288 # CHECK-NEXT: 1 1 0.25 sub wsp, w19, #16 -# CHECK-NEXT: 1 1 0.33 adds w13, w23, #291, lsl #12 -# CHECK-NEXT: 1 1 0.33 cmn w2, #4095 -# CHECK-NEXT: 1 1 0.33 adds w20, wsp, #0 -# CHECK-NEXT: 1 1 0.33 cmn x3, #1, lsl #12 -# CHECK-NEXT: 1 1 0.33 cmp sp, #20, lsl #12 -# CHECK-NEXT: 1 1 0.33 cmp x30, #4095 -# CHECK-NEXT: 1 1 0.33 subs x4, sp, #3822 -# CHECK-NEXT: 1 1 0.33 cmn w3, #291, lsl #12 -# CHECK-NEXT: 1 1 0.33 cmn wsp, #1365 -# CHECK-NEXT: 1 1 0.33 cmn sp, #1092, lsl #12 +# CHECK-NEXT: 2 2 0.50 adds w13, w23, #291, lsl #12 +# CHECK-NEXT: 2 1 0.33 cmn w2, #4095 +# CHECK-NEXT: 2 1 0.33 adds w20, wsp, #0 +# CHECK-NEXT: 2 2 0.50 cmn x3, #1, lsl #12 +# CHECK-NEXT: 2 2 0.50 cmp sp, #20, lsl #12 +# CHECK-NEXT: 2 1 0.33 cmp x30, #4095 +# CHECK-NEXT: 2 1 0.33 subs x4, sp, #3822 +# CHECK-NEXT: 2 2 0.50 cmn w3, #291, lsl #12 +# CHECK-NEXT: 2 1 0.33 cmn wsp, #1365 +# CHECK-NEXT: 2 2 0.50 cmn sp, #1092, lsl #12 # CHECK-NEXT: 1 1 0.25 mov sp, x30 # CHECK-NEXT: 1 1 0.25 mov wsp, w20 # CHECK-NEXT: 1 1 0.25 mov x11, sp @@ -1432,32 +1432,32 @@ drps # CHECK-NEXT: 1 2 0.50 add x2, x3, x4, asr #0 # CHECK-NEXT: 1 2 0.50 add x5, x6, x7, asr #21 # CHECK-NEXT: 1 2 0.50 add x8, x9, x10, asr #63 -# CHECK-NEXT: 1 1 0.33 adds w3, w5, w7 -# CHECK-NEXT: 1 1 0.33 cmn w3, w5 -# CHECK-NEXT: 1 1 0.33 adds w20, wzr, w4 -# CHECK-NEXT: 1 1 0.33 adds w4, w6, wzr -# CHECK-NEXT: 1 1 0.33 adds w11, w13, w15 -# CHECK-NEXT: 1 1 0.33 adds w9, w3, wzr, lsl #1 -# CHECK-NEXT: 1 2 0.50 adds w17, w29, w20, lsl #31 -# CHECK-NEXT: 1 2 0.50 adds w21, w22, w23, lsr #0 -# CHECK-NEXT: 1 2 0.50 adds w24, w25, w26, lsr #18 -# CHECK-NEXT: 1 2 0.50 adds w27, w28, w29, lsr #31 -# CHECK-NEXT: 1 2 0.50 adds w2, w3, w4, asr #0 -# CHECK-NEXT: 1 2 0.50 adds w5, w6, w7, asr #21 -# CHECK-NEXT: 1 2 0.50 adds w8, w9, w10, asr #31 -# CHECK-NEXT: 1 1 0.33 adds x3, x5, x7 -# CHECK-NEXT: 1 1 0.33 cmn x3, x5 -# CHECK-NEXT: 1 1 0.33 adds x20, xzr, x4 -# CHECK-NEXT: 1 1 0.33 adds x4, x6, xzr -# CHECK-NEXT: 1 1 0.33 adds x11, x13, x15 -# CHECK-NEXT: 1 2 0.50 adds x9, x3, xzr, lsl #10 -# CHECK-NEXT: 1 1 0.33 adds x17, x29, x20, lsl #3 -# CHECK-NEXT: 1 2 0.50 adds x21, x22, x23, lsr #0 -# CHECK-NEXT: 1 2 0.50 adds x24, x25, x26, lsr #18 -# CHECK-NEXT: 1 2 0.50 adds x27, x28, x29, lsr #63 -# CHECK-NEXT: 1 2 0.50 adds x2, x3, x4, asr #0 -# CHECK-NEXT: 1 2 0.50 adds x5, x6, x7, asr #21 -# CHECK-NEXT: 1 2 0.50 adds x8, x9, x10, asr #63 +# CHECK-NEXT: 2 1 0.33 adds w3, w5, w7 +# CHECK-NEXT: 2 1 0.33 cmn w3, w5 +# CHECK-NEXT: 2 1 0.33 adds w20, wzr, w4 +# CHECK-NEXT: 2 1 0.33 adds w4, w6, wzr +# CHECK-NEXT: 2 1 0.33 adds w11, w13, w15 +# CHECK-NEXT: 2 1 0.33 adds w9, w3, wzr, lsl #1 +# CHECK-NEXT: 2 2 0.50 adds w17, w29, w20, lsl #31 +# CHECK-NEXT: 2 2 0.50 adds w21, w22, w23, lsr #0 +# CHECK-NEXT: 2 2 0.50 adds w24, w25, w26, lsr #18 +# CHECK-NEXT: 2 2 0.50 adds w27, w28, w29, lsr #31 +# CHECK-NEXT: 2 2 0.50 adds w2, w3, w4, asr #0 +# CHECK-NEXT: 2 2 0.50 adds w5, w6, w7, asr #21 +# CHECK-NEXT: 2 2 0.50 adds w8, w9, w10, asr #31 +# CHECK-NEXT: 2 1 0.33 adds x3, x5, x7 +# CHECK-NEXT: 2 1 0.33 cmn x3, x5 +# CHECK-NEXT: 2 1 0.33 adds x20, xzr, x4 +# CHECK-NEXT: 2 1 0.33 adds x4, x6, xzr +# CHECK-NEXT: 2 1 0.33 adds x11, x13, x15 +# CHECK-NEXT: 2 2 0.50 adds x9, x3, xzr, lsl #10 +# CHECK-NEXT: 2 1 0.33 adds x17, x29, x20, lsl #3 +# CHECK-NEXT: 2 2 0.50 adds x21, x22, x23, lsr #0 +# CHECK-NEXT: 2 2 0.50 adds x24, x25, x26, lsr #18 +# CHECK-NEXT: 2 2 0.50 adds x27, x28, x29, lsr #63 +# CHECK-NEXT: 2 2 0.50 adds x2, x3, x4, asr #0 +# CHECK-NEXT: 2 2 0.50 adds x5, x6, x7, asr #21 +# CHECK-NEXT: 2 2 0.50 adds x8, x9, x10, asr #63 # CHECK-NEXT: 1 1 0.25 sub w3, w5, w7 # CHECK-NEXT: 1 1 0.25 sub wzr, w3, w5 # CHECK-NEXT: 1 1 0.25 sub w4, w6, wzr @@ -1482,78 +1482,78 @@ drps # CHECK-NEXT: 1 2 0.50 sub x2, x3, x4, asr #0 # CHECK-NEXT: 1 2 0.50 sub x5, x6, x7, asr #21 # CHECK-NEXT: 1 2 0.50 sub x8, x9, x10, asr #63 -# CHECK-NEXT: 1 1 0.33 subs w3, w5, w7 -# CHECK-NEXT: 1 1 0.33 cmp w3, w5 -# CHECK-NEXT: 1 1 0.33 subs w4, w6, wzr -# CHECK-NEXT: 1 1 0.33 subs w11, w13, w15 -# CHECK-NEXT: 1 1 0.33 subs w9, w3, wzr, lsl #1 -# CHECK-NEXT: 1 2 0.50 subs w17, w29, w20, lsl #31 -# CHECK-NEXT: 1 2 0.50 subs w21, w22, w23, lsr #0 -# CHECK-NEXT: 1 2 0.50 subs w24, w25, w26, lsr #18 -# CHECK-NEXT: 1 2 0.50 subs w27, w28, w29, lsr #31 -# CHECK-NEXT: 1 2 0.50 subs w2, w3, w4, asr #0 -# CHECK-NEXT: 1 2 0.50 subs w5, w6, w7, asr #21 -# CHECK-NEXT: 1 2 0.50 subs w8, w9, w10, asr #31 -# CHECK-NEXT: 1 1 0.33 subs x3, x5, x7 -# CHECK-NEXT: 1 1 0.33 cmp x3, x5 -# CHECK-NEXT: 1 1 0.33 subs x4, x6, xzr -# CHECK-NEXT: 1 1 0.33 subs x11, x13, x15 -# CHECK-NEXT: 1 2 0.50 subs x9, x3, xzr, lsl #10 -# CHECK-NEXT: 1 1 0.33 subs x17, x29, x20, lsl #3 -# CHECK-NEXT: 1 2 0.50 subs x21, x22, x23, lsr #0 -# CHECK-NEXT: 1 2 0.50 subs x24, x25, x26, lsr #18 -# CHECK-NEXT: 1 2 0.50 subs x27, x28, x29, lsr #63 -# CHECK-NEXT: 1 2 0.50 subs x2, x3, x4, asr #0 -# CHECK-NEXT: 1 2 0.50 subs x5, x6, x7, asr #21 -# CHECK-NEXT: 1 2 0.50 subs x8, x9, x10, asr #63 -# CHECK-NEXT: 1 1 0.33 cmn wzr, w4 -# CHECK-NEXT: 1 1 0.33 cmn w5, wzr -# CHECK-NEXT: 1 1 0.33 cmn w6, w7 -# CHECK-NEXT: 1 1 0.33 cmn w8, w9, lsl #1 -# CHECK-NEXT: 1 2 0.50 cmn w10, w11, lsl #31 -# CHECK-NEXT: 1 2 0.50 cmn w12, w13, lsr #0 -# CHECK-NEXT: 1 2 0.50 cmn w14, w15, lsr #21 -# CHECK-NEXT: 1 2 0.50 cmn w16, w17, lsr #31 -# CHECK-NEXT: 1 2 0.50 cmn w18, w19, asr #0 -# CHECK-NEXT: 1 2 0.50 cmn w20, w21, asr #22 -# CHECK-NEXT: 1 2 0.50 cmn w22, w23, asr #31 -# CHECK-NEXT: 1 1 0.33 cmn x0, x3 -# CHECK-NEXT: 1 1 0.33 cmn xzr, x4 -# CHECK-NEXT: 1 1 0.33 cmn x5, xzr -# CHECK-NEXT: 1 1 0.33 cmn x6, x7 -# CHECK-NEXT: 1 2 0.50 cmn x8, x9, lsl #15 -# CHECK-NEXT: 1 1 0.33 cmn x10, x11, lsl #3 -# CHECK-NEXT: 1 2 0.50 cmn x12, x13, lsr #0 -# CHECK-NEXT: 1 2 0.50 cmn x14, x15, lsr #41 -# CHECK-NEXT: 1 2 0.50 cmn x16, x17, lsr #63 -# CHECK-NEXT: 1 2 0.50 cmn x18, x19, asr #0 -# CHECK-NEXT: 1 2 0.50 cmn x20, x21, asr #55 -# CHECK-NEXT: 1 2 0.50 cmn x22, x23, asr #63 -# CHECK-NEXT: 1 1 0.33 cmp w0, w3 -# CHECK-NEXT: 1 1 0.33 cmp wzr, w4 -# CHECK-NEXT: 1 1 0.33 cmp w5, wzr -# CHECK-NEXT: 1 1 0.33 cmp w6, w7 -# CHECK-NEXT: 1 1 0.33 cmp w8, w9, lsl #1 -# CHECK-NEXT: 1 2 0.50 cmp w10, w11, lsl #31 -# CHECK-NEXT: 1 2 0.50 cmp w12, w13, lsr #0 -# CHECK-NEXT: 1 2 0.50 cmp w14, w15, lsr #21 -# CHECK-NEXT: 1 2 0.50 cmp w18, w19, asr #0 -# CHECK-NEXT: 1 2 0.50 cmp w20, w21, asr #22 -# CHECK-NEXT: 1 2 0.50 cmp w22, w23, asr #31 -# CHECK-NEXT: 1 1 0.33 cmp x0, x3 -# CHECK-NEXT: 1 1 0.33 cmp xzr, x4 -# CHECK-NEXT: 1 1 0.33 cmp x5, xzr -# CHECK-NEXT: 1 1 0.33 cmp x6, x7 -# CHECK-NEXT: 1 2 0.50 cmp x8, x9, lsl #15 -# CHECK-NEXT: 1 1 0.33 cmp x10, x11, lsl #3 -# CHECK-NEXT: 1 2 0.50 cmp x12, x13, lsr #0 -# CHECK-NEXT: 1 2 0.50 cmp x14, x15, lsr #41 -# CHECK-NEXT: 1 2 0.50 cmp x16, x17, lsr #63 -# CHECK-NEXT: 1 2 0.50 cmp x18, x19, asr #0 -# CHECK-NEXT: 1 2 0.50 cmp x20, x21, asr #55 -# CHECK-NEXT: 1 2 0.50 cmp x22, x23, asr #63 -# CHECK-NEXT: 1 1 0.33 cmp wzr, w0 -# CHECK-NEXT: 1 1 0.33 cmp xzr, x0 +# CHECK-NEXT: 2 1 0.33 subs w3, w5, w7 +# CHECK-NEXT: 2 1 0.33 cmp w3, w5 +# CHECK-NEXT: 2 1 0.33 subs w4, w6, wzr +# CHECK-NEXT: 2 1 0.33 subs w11, w13, w15 +# CHECK-NEXT: 2 1 0.33 subs w9, w3, wzr, lsl #1 +# CHECK-NEXT: 2 2 0.50 subs w17, w29, w20, lsl #31 +# CHECK-NEXT: 2 2 0.50 subs w21, w22, w23, lsr #0 +# CHECK-NEXT: 2 2 0.50 subs w24, w25, w26, lsr #18 +# CHECK-NEXT: 2 2 0.50 subs w27, w28, w29, lsr #31 +# CHECK-NEXT: 2 2 0.50 subs w2, w3, w4, asr #0 +# CHECK-NEXT: 2 2 0.50 subs w5, w6, w7, asr #21 +# CHECK-NEXT: 2 2 0.50 subs w8, w9, w10, asr #31 +# CHECK-NEXT: 2 1 0.33 subs x3, x5, x7 +# CHECK-NEXT: 2 1 0.33 cmp x3, x5 +# CHECK-NEXT: 2 1 0.33 subs x4, x6, xzr +# CHECK-NEXT: 2 1 0.33 subs x11, x13, x15 +# CHECK-NEXT: 2 2 0.50 subs x9, x3, xzr, lsl #10 +# CHECK-NEXT: 2 1 0.33 subs x17, x29, x20, lsl #3 +# CHECK-NEXT: 2 2 0.50 subs x21, x22, x23, lsr #0 +# CHECK-NEXT: 2 2 0.50 subs x24, x25, x26, lsr #18 +# CHECK-NEXT: 2 2 0.50 subs x27, x28, x29, lsr #63 +# CHECK-NEXT: 2 2 0.50 subs x2, x3, x4, asr #0 +# CHECK-NEXT: 2 2 0.50 subs x5, x6, x7, asr #21 +# CHECK-NEXT: 2 2 0.50 subs x8, x9, x10, asr #63 +# CHECK-NEXT: 2 1 0.33 cmn wzr, w4 +# CHECK-NEXT: 2 1 0.33 cmn w5, wzr +# CHECK-NEXT: 2 1 0.33 cmn w6, w7 +# CHECK-NEXT: 2 1 0.33 cmn w8, w9, lsl #1 +# CHECK-NEXT: 2 2 0.50 cmn w10, w11, lsl #31 +# CHECK-NEXT: 2 2 0.50 cmn w12, w13, lsr #0 +# CHECK-NEXT: 2 2 0.50 cmn w14, w15, lsr #21 +# CHECK-NEXT: 2 2 0.50 cmn w16, w17, lsr #31 +# CHECK-NEXT: 2 2 0.50 cmn w18, w19, asr #0 +# CHECK-NEXT: 2 2 0.50 cmn w20, w21, asr #22 +# CHECK-NEXT: 2 2 0.50 cmn w22, w23, asr #31 +# CHECK-NEXT: 2 1 0.33 cmn x0, x3 +# CHECK-NEXT: 2 1 0.33 cmn xzr, x4 +# CHECK-NEXT: 2 1 0.33 cmn x5, xzr +# CHECK-NEXT: 2 1 0.33 cmn x6, x7 +# CHECK-NEXT: 2 2 0.50 cmn x8, x9, lsl #15 +# CHECK-NEXT: 2 1 0.33 cmn x10, x11, lsl #3 +# CHECK-NEXT: 2 2 0.50 cmn x12, x13, lsr #0 +# CHECK-NEXT: 2 2 0.50 cmn x14, x15, lsr #41 +# CHECK-NEXT: 2 2 0.50 cmn x16, x17, lsr #63 +# CHECK-NEXT: 2 2 0.50 cmn x18, x19, asr #0 +# CHECK-NEXT: 2 2 0.50 cmn x20, x21, asr #55 +# CHECK-NEXT: 2 2 0.50 cmn x22, x23, asr #63 +# CHECK-NEXT: 2 1 0.33 cmp w0, w3 +# CHECK-NEXT: 2 1 0.33 cmp wzr, w4 +# CHECK-NEXT: 2 1 0.33 cmp w5, wzr +# CHECK-NEXT: 2 1 0.33 cmp w6, w7 +# CHECK-NEXT: 2 1 0.33 cmp w8, w9, lsl #1 +# CHECK-NEXT: 2 2 0.50 cmp w10, w11, lsl #31 +# CHECK-NEXT: 2 2 0.50 cmp w12, w13, lsr #0 +# CHECK-NEXT: 2 2 0.50 cmp w14, w15, lsr #21 +# CHECK-NEXT: 2 2 0.50 cmp w18, w19, asr #0 +# CHECK-NEXT: 2 2 0.50 cmp w20, w21, asr #22 +# CHECK-NEXT: 2 2 0.50 cmp w22, w23, asr #31 +# CHECK-NEXT: 2 1 0.33 cmp x0, x3 +# CHECK-NEXT: 2 1 0.33 cmp xzr, x4 +# CHECK-NEXT: 2 1 0.33 cmp x5, xzr +# CHECK-NEXT: 2 1 0.33 cmp x6, x7 +# CHECK-NEXT: 2 2 0.50 cmp x8, x9, lsl #15 +# CHECK-NEXT: 2 1 0.33 cmp x10, x11, lsl #3 +# CHECK-NEXT: 2 2 0.50 cmp x12, x13, lsr #0 +# CHECK-NEXT: 2 2 0.50 cmp x14, x15, lsr #41 +# CHECK-NEXT: 2 2 0.50 cmp x16, x17, lsr #63 +# CHECK-NEXT: 2 2 0.50 cmp x18, x19, asr #0 +# CHECK-NEXT: 2 2 0.50 cmp x20, x21, asr #55 +# CHECK-NEXT: 2 2 0.50 cmp x22, x23, asr #63 +# CHECK-NEXT: 2 1 0.33 cmp wzr, w0 +# CHECK-NEXT: 2 1 0.33 cmp xzr, x0 # CHECK-NEXT: 1 1 0.25 adc w29, w27, w25 # CHECK-NEXT: 1 1 0.25 adc wzr, w3, w4 # CHECK-NEXT: 1 1 0.25 adc w9, wzr, w10 @@ -1562,14 +1562,14 @@ drps # CHECK-NEXT: 1 1 0.25 adc xzr, x3, x4 # CHECK-NEXT: 1 1 0.25 adc x9, xzr, x10 # CHECK-NEXT: 1 1 0.25 adc x20, x0, xzr -# CHECK-NEXT: 1 1 0.33 adcs w29, w27, w25 -# CHECK-NEXT: 1 1 0.33 adcs wzr, w3, w4 -# CHECK-NEXT: 1 1 0.33 adcs w9, wzr, w10 -# CHECK-NEXT: 1 1 0.33 adcs w20, w0, wzr -# CHECK-NEXT: 1 1 0.33 adcs x29, x27, x25 -# CHECK-NEXT: 1 1 0.33 adcs xzr, x3, x4 -# CHECK-NEXT: 1 1 0.33 adcs x9, xzr, x10 -# CHECK-NEXT: 1 1 0.33 adcs x20, x0, xzr +# CHECK-NEXT: 2 1 0.33 adcs w29, w27, w25 +# CHECK-NEXT: 2 1 0.33 adcs wzr, w3, w4 +# CHECK-NEXT: 2 1 0.33 adcs w9, wzr, w10 +# CHECK-NEXT: 2 1 0.33 adcs w20, w0, wzr +# CHECK-NEXT: 2 1 0.33 adcs x29, x27, x25 +# CHECK-NEXT: 2 1 0.33 adcs xzr, x3, x4 +# CHECK-NEXT: 2 1 0.33 adcs x9, xzr, x10 +# CHECK-NEXT: 2 1 0.33 adcs x20, x0, xzr # CHECK-NEXT: 1 1 0.25 sbc w29, w27, w25 # CHECK-NEXT: 1 1 0.25 sbc wzr, w3, w4 # CHECK-NEXT: 1 1 0.25 ngc w9, w10 @@ -1578,26 +1578,26 @@ drps # CHECK-NEXT: 1 1 0.25 sbc xzr, x3, x4 # CHECK-NEXT: 1 1 0.25 ngc x9, x10 # CHECK-NEXT: 1 1 0.25 sbc x20, x0, xzr -# CHECK-NEXT: 1 1 0.33 sbcs w29, w27, w25 -# CHECK-NEXT: 1 1 0.33 sbcs wzr, w3, w4 -# CHECK-NEXT: 1 1 0.33 ngcs w9, w10 -# CHECK-NEXT: 1 1 0.33 sbcs w20, w0, wzr -# CHECK-NEXT: 1 1 0.33 sbcs x29, x27, x25 -# CHECK-NEXT: 1 1 0.33 sbcs xzr, x3, x4 -# CHECK-NEXT: 1 1 0.33 ngcs x9, x10 -# CHECK-NEXT: 1 1 0.33 sbcs x20, x0, xzr +# CHECK-NEXT: 2 1 0.33 sbcs w29, w27, w25 +# CHECK-NEXT: 2 1 0.33 sbcs wzr, w3, w4 +# CHECK-NEXT: 2 1 0.33 ngcs w9, w10 +# CHECK-NEXT: 2 1 0.33 sbcs w20, w0, wzr +# CHECK-NEXT: 2 1 0.33 sbcs x29, x27, x25 +# CHECK-NEXT: 2 1 0.33 sbcs xzr, x3, x4 +# CHECK-NEXT: 2 1 0.33 ngcs x9, x10 +# CHECK-NEXT: 2 1 0.33 sbcs x20, x0, xzr # CHECK-NEXT: 1 1 0.25 ngc w3, w12 # CHECK-NEXT: 1 1 0.25 ngc wzr, w9 # CHECK-NEXT: 1 1 0.25 ngc w23, wzr # CHECK-NEXT: 1 1 0.25 ngc x29, x30 # CHECK-NEXT: 1 1 0.25 ngc xzr, x0 # CHECK-NEXT: 1 1 0.25 ngc x0, xzr -# CHECK-NEXT: 1 1 0.33 ngcs w3, w12 -# CHECK-NEXT: 1 1 0.33 ngcs wzr, w9 -# CHECK-NEXT: 1 1 0.33 ngcs w23, wzr -# CHECK-NEXT: 1 1 0.33 ngcs x29, x30 -# CHECK-NEXT: 1 1 0.33 ngcs xzr, x0 -# CHECK-NEXT: 1 1 0.33 ngcs x0, xzr +# CHECK-NEXT: 2 1 0.33 ngcs w3, w12 +# CHECK-NEXT: 2 1 0.33 ngcs wzr, w9 +# CHECK-NEXT: 2 1 0.33 ngcs w23, wzr +# CHECK-NEXT: 2 1 0.33 ngcs x29, x30 +# CHECK-NEXT: 2 1 0.33 ngcs xzr, x0 +# CHECK-NEXT: 2 1 0.33 ngcs x0, xzr # CHECK-NEXT: 1 1 0.25 sbfx x1, x2, #3, #2 # CHECK-NEXT: 1 1 0.25 asr x3, x4, #63 # CHECK-NEXT: 1 1 0.25 asr wzr, wzr, #31 @@ -1784,10 +1784,10 @@ drps # CHECK-NEXT: 1 1 0.25 clz x26, x4 # CHECK-NEXT: 1 1 0.25 cls w3, w5 # CHECK-NEXT: 1 1 0.25 cls x20, x5 -# CHECK-NEXT: 1 12 5.00 udiv w0, w7, w10 -# CHECK-NEXT: 1 20 5.00 udiv x9, x22, x4 -# CHECK-NEXT: 1 12 5.00 sdiv w12, w21, w0 -# CHECK-NEXT: 1 20 5.00 sdiv x13, x2, x1 +# CHECK-NEXT: 1 12 12.00 udiv w0, w7, w10 +# CHECK-NEXT: 1 20 20.00 udiv x9, x22, x4 +# CHECK-NEXT: 1 12 12.00 sdiv w12, w21, w0 +# CHECK-NEXT: 1 20 20.00 sdiv x13, x2, x1 # CHECK-NEXT: 1 1 0.25 lsl w11, w12, w13 # CHECK-NEXT: 1 1 0.25 lsl x14, x15, x16 # CHECK-NEXT: 1 1 0.25 lsr w17, w18, w19 @@ -1855,10 +1855,10 @@ drps # CHECK-NEXT: 1 2 0.50 umull x11, w13, w17 # CHECK-NEXT: 1 2 0.50 smnegl x11, w13, w17 # CHECK-NEXT: 1 2 0.50 umnegl x11, w13, w17 -# CHECK-NEXT: 2 3 0.50 extr w3, w5, w7, #0 -# CHECK-NEXT: 2 3 0.50 extr w11, w13, w17, #31 -# CHECK-NEXT: 2 3 0.50 extr x3, x5, x7, #15 -# CHECK-NEXT: 2 3 0.50 extr x11, x13, x17, #63 +# CHECK-NEXT: 1 3 0.50 extr w3, w5, w7, #0 +# CHECK-NEXT: 1 3 0.50 extr w11, w13, w17, #31 +# CHECK-NEXT: 1 3 0.50 extr x3, x5, x7, #15 +# CHECK-NEXT: 1 3 0.50 extr x11, x13, x17, #63 # CHECK-NEXT: 1 1 0.25 ror x19, x23, #24 # CHECK-NEXT: 1 1 0.25 ror x29, xzr, #63 # CHECK-NEXT: 1 1 0.25 ror w9, w13, #31 @@ -1891,7 +1891,7 @@ drps # CHECK-NEXT: 1 2 0.25 fmov s0, s1 # CHECK-NEXT: 1 2 0.25 fabs s2, s3 # CHECK-NEXT: 1 2 0.25 fneg s4, s5 -# CHECK-NEXT: 1 10 3.50 fsqrt s6, s7 +# CHECK-NEXT: 1 9 1.00 fsqrt s6, s7 # CHECK-NEXT: 1 3 0.50 fcvt d8, s9 # CHECK-NEXT: 1 3 0.50 fcvt h10, s11 # CHECK-NEXT: 1 3 0.50 frintn s12, s13 @@ -1904,7 +1904,7 @@ drps # CHECK-NEXT: 1 2 0.25 fmov d0, d1 # CHECK-NEXT: 1 2 0.25 fabs d2, d3 # CHECK-NEXT: 1 2 0.25 fneg d4, d5 -# CHECK-NEXT: 1 16 3.50 fsqrt d6, d7 +# CHECK-NEXT: 1 16 4.00 fsqrt d6, d7 # CHECK-NEXT: 1 3 0.50 fcvt s8, d9 # CHECK-NEXT: 1 3 0.50 fcvt h10, d11 # CHECK-NEXT: 1 3 0.50 frintn d12, d13 @@ -1917,7 +1917,7 @@ drps # CHECK-NEXT: 1 3 0.50 fcvt s26, h27 # CHECK-NEXT: 1 3 0.50 fcvt d28, h29 # CHECK-NEXT: 1 3 0.25 fmul s20, s19, s17 -# CHECK-NEXT: 1 10 3.50 fdiv s1, s2, s3 +# CHECK-NEXT: 1 10 1.50 fdiv s1, s2, s3 # CHECK-NEXT: 1 2 0.25 fadd s4, s5, s6 # CHECK-NEXT: 1 2 0.25 fsub s7, s8, s9 # CHECK-NEXT: 1 2 0.25 fmax s10, s11, s12 @@ -1942,42 +1942,42 @@ drps # CHECK-NEXT: 1 4 0.25 fnmadd d3, d13, d0, d23 # CHECK-NEXT: 1 4 0.25 fnmsub s3, s5, s6, s31 # CHECK-NEXT: 1 4 0.25 fnmsub d3, d13, d0, d23 -# CHECK-NEXT: 1 3 0.50 fcvtzs w3, h5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzs wzr, h20, #13 -# CHECK-NEXT: 1 3 0.50 fcvtzs w19, h0, #32 -# CHECK-NEXT: 1 3 0.50 fcvtzs x3, h5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzs x12, h30, #45 -# CHECK-NEXT: 1 3 0.50 fcvtzs x19, h0, #64 -# CHECK-NEXT: 1 3 0.50 fcvtzs w3, s5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzs wzr, s20, #13 -# CHECK-NEXT: 1 3 0.50 fcvtzs w19, s0, #32 -# CHECK-NEXT: 1 3 0.50 fcvtzs x3, s5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzs x12, s30, #45 -# CHECK-NEXT: 1 3 0.50 fcvtzs x19, s0, #64 -# CHECK-NEXT: 1 3 0.50 fcvtzs w3, d5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzs wzr, d20, #13 -# CHECK-NEXT: 1 3 0.50 fcvtzs w19, d0, #32 -# CHECK-NEXT: 1 3 0.50 fcvtzs x3, d5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzs x12, d30, #45 -# CHECK-NEXT: 1 3 0.50 fcvtzs x19, d0, #64 -# CHECK-NEXT: 1 3 0.50 fcvtzu w3, h5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzu wzr, h20, #13 -# CHECK-NEXT: 1 3 0.50 fcvtzu w19, h0, #32 -# CHECK-NEXT: 1 3 0.50 fcvtzu x3, h5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzu x12, h30, #45 -# CHECK-NEXT: 1 3 0.50 fcvtzu x19, h0, #64 -# CHECK-NEXT: 1 3 0.50 fcvtzu w3, s5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzu wzr, s20, #13 -# CHECK-NEXT: 1 3 0.50 fcvtzu w19, s0, #32 -# CHECK-NEXT: 1 3 0.50 fcvtzu x3, s5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzu x12, s30, #45 -# CHECK-NEXT: 1 3 0.50 fcvtzu x19, s0, #64 -# CHECK-NEXT: 1 3 0.50 fcvtzu w3, d5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzu wzr, d20, #13 -# CHECK-NEXT: 1 3 0.50 fcvtzu w19, d0, #32 -# CHECK-NEXT: 1 3 0.50 fcvtzu x3, d5, #1 -# CHECK-NEXT: 1 3 0.50 fcvtzu x12, d30, #45 -# CHECK-NEXT: 1 3 0.50 fcvtzu x19, d0, #64 +# CHECK-NEXT: 1 3 1.00 fcvtzs w3, h5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzs wzr, h20, #13 +# CHECK-NEXT: 1 3 1.00 fcvtzs w19, h0, #32 +# CHECK-NEXT: 1 3 1.00 fcvtzs x3, h5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzs x12, h30, #45 +# CHECK-NEXT: 1 3 1.00 fcvtzs x19, h0, #64 +# CHECK-NEXT: 1 3 1.00 fcvtzs w3, s5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzs wzr, s20, #13 +# CHECK-NEXT: 1 3 1.00 fcvtzs w19, s0, #32 +# CHECK-NEXT: 1 3 1.00 fcvtzs x3, s5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzs x12, s30, #45 +# CHECK-NEXT: 1 3 1.00 fcvtzs x19, s0, #64 +# CHECK-NEXT: 1 3 1.00 fcvtzs w3, d5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzs wzr, d20, #13 +# CHECK-NEXT: 1 3 1.00 fcvtzs w19, d0, #32 +# CHECK-NEXT: 1 3 1.00 fcvtzs x3, d5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzs x12, d30, #45 +# CHECK-NEXT: 1 3 1.00 fcvtzs x19, d0, #64 +# CHECK-NEXT: 1 3 1.00 fcvtzu w3, h5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzu wzr, h20, #13 +# CHECK-NEXT: 1 3 1.00 fcvtzu w19, h0, #32 +# CHECK-NEXT: 1 3 1.00 fcvtzu x3, h5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzu x12, h30, #45 +# CHECK-NEXT: 1 3 1.00 fcvtzu x19, h0, #64 +# CHECK-NEXT: 1 3 1.00 fcvtzu w3, s5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzu wzr, s20, #13 +# CHECK-NEXT: 1 3 1.00 fcvtzu w19, s0, #32 +# CHECK-NEXT: 1 3 1.00 fcvtzu x3, s5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzu x12, s30, #45 +# CHECK-NEXT: 1 3 1.00 fcvtzu x19, s0, #64 +# CHECK-NEXT: 1 3 1.00 fcvtzu w3, d5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzu wzr, d20, #13 +# CHECK-NEXT: 1 3 1.00 fcvtzu w19, d0, #32 +# CHECK-NEXT: 1 3 1.00 fcvtzu x3, d5, #1 +# CHECK-NEXT: 1 3 1.00 fcvtzu x12, d30, #45 +# CHECK-NEXT: 1 3 1.00 fcvtzu x19, d0, #64 # CHECK-NEXT: 1 3 1.00 scvtf h23, w19, #1 # CHECK-NEXT: 1 3 1.00 scvtf h31, wzr, #20 # CHECK-NEXT: 1 3 1.00 scvtf h14, w0, #32 @@ -2182,9 +2182,9 @@ drps # CHECK-NEXT: 3 1 0.50 * str w19, [sp], #255 # CHECK-NEXT: 3 1 0.50 * str w20, [x30], #1 # CHECK-NEXT: 3 1 0.50 * str w21, [x12], #-256 -# CHECK-NEXT: 3 1 0.50 * str xzr, [x9], #255 -# CHECK-NEXT: 3 1 0.50 * str x2, [x3], #1 -# CHECK-NEXT: 3 1 0.50 * str x19, [x12], #-256 +# CHECK-NEXT: 2 1 0.50 * str xzr, [x9], #255 +# CHECK-NEXT: 2 1 0.50 * str x2, [x3], #1 +# CHECK-NEXT: 2 1 0.50 * str x19, [x12], #-256 # CHECK-NEXT: 2 4 0.33 * ldrb w9, [x2], #255 # CHECK-NEXT: 2 4 0.33 * ldrb w10, [x3], #1 # CHECK-NEXT: 2 4 0.33 * ldrb w10, [x3], #-256 @@ -2212,18 +2212,18 @@ drps # CHECK-NEXT: 2 4 0.33 * ldrsh wzr, [x9], #255 # CHECK-NEXT: 2 4 0.33 * ldrsh w2, [x3], #1 # CHECK-NEXT: 2 4 0.33 * ldrsh w19, [x12], #-256 -# CHECK-NEXT: 3 2 0.50 * str b0, [x0], #255 -# CHECK-NEXT: 3 2 0.50 * str b3, [x3], #1 -# CHECK-NEXT: 3 2 0.50 * str b5, [sp], #-256 -# CHECK-NEXT: 3 2 0.50 * str h10, [x10], #255 -# CHECK-NEXT: 3 2 0.50 * str h13, [x23], #1 -# CHECK-NEXT: 3 2 0.50 * str h15, [sp], #-256 -# CHECK-NEXT: 3 2 0.50 * str s20, [x20], #255 -# CHECK-NEXT: 3 2 0.50 * str s23, [x23], #1 -# CHECK-NEXT: 3 2 0.50 * str s25, [x0], #-256 -# CHECK-NEXT: 3 2 0.50 * str d20, [x20], #255 -# CHECK-NEXT: 3 2 0.50 * str d23, [x23], #1 -# CHECK-NEXT: 3 2 0.50 * str d25, [x0], #-256 +# CHECK-NEXT: 2 2 0.50 * str b0, [x0], #255 +# CHECK-NEXT: 2 2 0.50 * str b3, [x3], #1 +# CHECK-NEXT: 2 2 0.50 * str b5, [sp], #-256 +# CHECK-NEXT: 2 2 0.50 * str h10, [x10], #255 +# CHECK-NEXT: 2 2 0.50 * str h13, [x23], #1 +# CHECK-NEXT: 2 2 0.50 * str h15, [sp], #-256 +# CHECK-NEXT: 2 2 0.50 * str s20, [x20], #255 +# CHECK-NEXT: 2 2 0.50 * str s23, [x23], #1 +# CHECK-NEXT: 2 2 0.50 * str s25, [x0], #-256 +# CHECK-NEXT: 2 2 0.50 * str d20, [x20], #255 +# CHECK-NEXT: 2 2 0.50 * str d23, [x23], #1 +# CHECK-NEXT: 2 2 0.50 * str d25, [x0], #-256 # CHECK-NEXT: 2 6 0.33 * ldr b0, [x0], #255 # CHECK-NEXT: 2 6 0.33 * ldr b3, [x3], #1 # CHECK-NEXT: 2 6 0.33 * ldr b5, [sp], #-256 @@ -2239,9 +2239,9 @@ drps # CHECK-NEXT: 2 6 0.33 * ldr q20, [x1], #255 # CHECK-NEXT: 2 6 0.33 * ldr q23, [x9], #1 # CHECK-NEXT: 2 6 0.33 * ldr q25, [x20], #-256 -# CHECK-NEXT: 3 2 0.50 * str q10, [x1], #255 -# CHECK-NEXT: 3 2 0.50 * str q22, [sp], #1 -# CHECK-NEXT: 3 2 0.50 * str q21, [x20], #-256 +# CHECK-NEXT: 2 2 0.50 * str q10, [x1], #255 +# CHECK-NEXT: 2 2 0.50 * str q22, [sp], #1 +# CHECK-NEXT: 2 2 0.50 * str q21, [x20], #-256 # CHECK-NEXT: 2 4 0.33 * ldr x3, [x4, #0]! # CHECK-NEXT: 3 1 0.50 * strb w9, [x2, #255]! # CHECK-NEXT: 3 1 0.50 * strb w10, [x3, #1]! @@ -2252,9 +2252,9 @@ drps # CHECK-NEXT: 3 1 0.50 * str w19, [sp, #255]! # CHECK-NEXT: 3 1 0.50 * str w20, [x30, #1]! # CHECK-NEXT: 3 1 0.50 * str w21, [x12, #-256]! -# CHECK-NEXT: 3 1 0.50 * str xzr, [x9, #255]! -# CHECK-NEXT: 3 1 0.50 * str x2, [x3, #1]! -# CHECK-NEXT: 3 1 0.50 * str x19, [x12, #-256]! +# CHECK-NEXT: 2 1 0.50 * str xzr, [x9, #255]! +# CHECK-NEXT: 2 1 0.50 * str x2, [x3, #1]! +# CHECK-NEXT: 2 1 0.50 * str x19, [x12, #-256]! # CHECK-NEXT: 2 4 0.33 * ldrb w9, [x2, #255]! # CHECK-NEXT: 2 4 0.33 * ldrb w10, [x3, #1]! # CHECK-NEXT: 2 4 0.33 * ldrb w10, [x3, #-256]! @@ -2282,18 +2282,18 @@ drps # CHECK-NEXT: 2 4 0.33 * ldrsh wzr, [x9, #255]! # CHECK-NEXT: 2 4 0.33 * ldrsh w2, [x3, #1]! # CHECK-NEXT: 2 4 0.33 * ldrsh w19, [x12, #-256]! -# CHECK-NEXT: 3 2 0.50 * str b0, [x0, #255]! -# CHECK-NEXT: 3 2 0.50 * str b3, [x3, #1]! -# CHECK-NEXT: 3 2 0.50 * str b5, [sp, #-256]! -# CHECK-NEXT: 3 2 0.50 * str h10, [x10, #255]! -# CHECK-NEXT: 3 2 0.50 * str h13, [x23, #1]! -# CHECK-NEXT: 3 2 0.50 * str h15, [sp, #-256]! -# CHECK-NEXT: 3 2 0.50 * str s20, [x20, #255]! -# CHECK-NEXT: 3 2 0.50 * str s23, [x23, #1]! -# CHECK-NEXT: 3 2 0.50 * str s25, [x0, #-256]! -# CHECK-NEXT: 3 2 0.50 * str d20, [x20, #255]! -# CHECK-NEXT: 3 2 0.50 * str d23, [x23, #1]! -# CHECK-NEXT: 3 2 0.50 * str d25, [x0, #-256]! +# CHECK-NEXT: 2 2 0.50 * str b0, [x0, #255]! +# CHECK-NEXT: 2 2 0.50 * str b3, [x3, #1]! +# CHECK-NEXT: 2 2 0.50 * str b5, [sp, #-256]! +# CHECK-NEXT: 2 2 0.50 * str h10, [x10, #255]! +# CHECK-NEXT: 2 2 0.50 * str h13, [x23, #1]! +# CHECK-NEXT: 2 2 0.50 * str h15, [sp, #-256]! +# CHECK-NEXT: 2 2 0.50 * str s20, [x20, #255]! +# CHECK-NEXT: 2 2 0.50 * str s23, [x23, #1]! +# CHECK-NEXT: 2 2 0.50 * str s25, [x0, #-256]! +# CHECK-NEXT: 2 2 0.50 * str d20, [x20, #255]! +# CHECK-NEXT: 2 2 0.50 * str d23, [x23, #1]! +# CHECK-NEXT: 2 2 0.50 * str d25, [x0, #-256]! # CHECK-NEXT: 2 6 0.33 * ldr b0, [x0, #255]! # CHECK-NEXT: 2 6 0.33 * ldr b3, [x3, #1]! # CHECK-NEXT: 2 6 0.33 * ldr b5, [sp, #-256]! @@ -2309,9 +2309,9 @@ drps # CHECK-NEXT: 2 6 0.33 * ldr q20, [x1, #255]! # CHECK-NEXT: 2 6 0.33 * ldr q23, [x9, #1]! # CHECK-NEXT: 2 6 0.33 * ldr q25, [x20, #-256]! -# CHECK-NEXT: 3 2 0.50 * str q10, [x1, #255]! -# CHECK-NEXT: 3 2 0.50 * str q22, [sp, #1]! -# CHECK-NEXT: 3 2 0.50 * str q21, [x20, #-256]! +# CHECK-NEXT: 2 2 0.50 * str q10, [x1, #255]! +# CHECK-NEXT: 2 2 0.50 * str q22, [sp, #1]! +# CHECK-NEXT: 2 2 0.50 * str q21, [x20, #-256]! # CHECK-NEXT: 2 1 0.50 * sttrb w9, [sp] # CHECK-NEXT: 2 1 0.50 * sttrh wzr, [x12, #255] # CHECK-NEXT: 2 1 0.50 * sttr w16, [x0, #-256] @@ -2363,16 +2363,16 @@ drps # CHECK-NEXT: 1 4 0.33 * ldrsb x18, [x22, w10, sxtw] # CHECK-NEXT: 1 4 0.33 * ldrsh w3, [sp, x5] # CHECK-NEXT: 1 4 0.33 * ldrsh w9, [x27, x6] -# CHECK-NEXT: 1 4 0.33 * ldrh w10, [x30, x7, lsl #1] +# CHECK-NEXT: 2 5 0.33 * ldrh w10, [x30, x7, lsl #1] # CHECK-NEXT: 2 1 0.50 * strh w11, [x29, x3, sxtx] # CHECK-NEXT: 1 4 0.33 * ldrh w12, [x28, xzr, sxtx] -# CHECK-NEXT: 1 4 0.33 * ldrsh x13, [x27, x5, sxtx #1] +# CHECK-NEXT: 2 5 0.33 * ldrsh x13, [x27, x5, sxtx #1] # CHECK-NEXT: 1 4 0.33 * ldrh w14, [x26, w6, uxtw] # CHECK-NEXT: 1 4 0.33 * ldrh w15, [x25, w7, uxtw] -# CHECK-NEXT: 1 4 0.33 * ldrsh w16, [x24, w8, uxtw #1] +# CHECK-NEXT: 2 5 0.33 * ldrsh w16, [x24, w8, uxtw #1] # CHECK-NEXT: 1 4 0.33 * ldrh w17, [x23, w9, sxtw] # CHECK-NEXT: 1 4 0.33 * ldrh w18, [x22, w10, sxtw] -# CHECK-NEXT: 2 1 0.50 * strh w19, [x21, wzr, sxtw #1] +# CHECK-NEXT: 3 2 0.50 * strh w19, [x21, wzr, sxtw #1] # CHECK-NEXT: 1 4 0.33 * ldr w3, [sp, x5] # CHECK-NEXT: 1 6 0.33 * ldr s9, [x27, x6] # CHECK-NEXT: 1 4 0.33 * ldr w10, [x30, x7, lsl #2] @@ -2397,28 +2397,28 @@ drps # CHECK-NEXT: 1 4 0.33 * ldr x17, [x23, w9, sxtw] # CHECK-NEXT: 1 4 0.33 * ldr x18, [x22, w10, sxtw] # CHECK-NEXT: 2 2 0.50 * str d19, [x21, wzr, sxtw #3] -# CHECK-NEXT: 2 7 0.33 * ldr q3, [sp, x5] -# CHECK-NEXT: 2 7 0.33 * ldr q9, [x27, x6] +# CHECK-NEXT: 1 6 0.33 * ldr q3, [sp, x5] +# CHECK-NEXT: 1 6 0.33 * ldr q9, [x27, x6] # CHECK-NEXT: 2 7 0.33 * ldr q10, [x30, x7, lsl #4] -# CHECK-NEXT: 3 2 0.50 * str q11, [x29, x3, sxtx] -# CHECK-NEXT: 3 2 0.50 * str q12, [x28, xzr, sxtx] +# CHECK-NEXT: 2 2 0.50 * str q11, [x29, x3, sxtx] +# CHECK-NEXT: 2 2 0.50 * str q12, [x28, xzr, sxtx] # CHECK-NEXT: 3 2 0.50 * str q13, [x27, x5, sxtx #4] -# CHECK-NEXT: 2 7 0.33 * ldr q14, [x26, w6, uxtw] -# CHECK-NEXT: 2 7 0.33 * ldr q15, [x25, w7, uxtw] +# CHECK-NEXT: 1 6 0.33 * ldr q14, [x26, w6, uxtw] +# CHECK-NEXT: 1 6 0.33 * ldr q15, [x25, w7, uxtw] # CHECK-NEXT: 2 7 0.33 * ldr q16, [x24, w8, uxtw #4] -# CHECK-NEXT: 2 7 0.33 * ldr q17, [x23, w9, sxtw] -# CHECK-NEXT: 3 2 0.50 * str q18, [x22, w10, sxtw] +# CHECK-NEXT: 1 6 0.33 * ldr q17, [x23, w9, sxtw] +# CHECK-NEXT: 2 2 0.50 * str q18, [x22, w10, sxtw] # CHECK-NEXT: 2 7 0.33 * ldr q19, [x21, wzr, sxtw #4] # CHECK-NEXT: 1 4 0.33 * ldp w3, w5, [sp] # CHECK-NEXT: 2 1 0.50 * stp wzr, w9, [sp, #252] # CHECK-NEXT: 1 4 0.33 * ldp w2, wzr, [sp, #-256] # CHECK-NEXT: 1 4 0.33 * ldp w9, w10, [sp, #4] -# CHECK-NEXT: 2 5 0.33 * ldpsw x9, x10, [sp, #4] -# CHECK-NEXT: 2 5 0.33 * ldpsw x9, x10, [x2, #-256] -# CHECK-NEXT: 2 5 0.33 * ldpsw x20, x30, [sp, #252] -# CHECK-NEXT: 2 4 0.67 * ldp x21, x29, [x2, #504] -# CHECK-NEXT: 2 4 0.67 * ldp x22, x23, [x3, #-512] -# CHECK-NEXT: 2 4 0.67 * ldp x24, x25, [x4, #8] +# CHECK-NEXT: 2 5 1.00 * ldpsw x9, x10, [sp, #4] +# CHECK-NEXT: 2 5 1.00 * ldpsw x9, x10, [x2, #-256] +# CHECK-NEXT: 2 5 1.00 * ldpsw x20, x30, [sp, #252] +# CHECK-NEXT: 1 4 1.00 * ldp x21, x29, [x2, #504] +# CHECK-NEXT: 1 4 1.00 * ldp x22, x23, [x3, #-512] +# CHECK-NEXT: 1 4 1.00 * ldp x24, x25, [x4, #8] # CHECK-NEXT: 1 6 0.33 * ldp s29, s28, [sp, #252] # CHECK-NEXT: 2 2 0.50 * stp s27, s26, [sp, #-256] # CHECK-NEXT: 1 6 0.33 * ldp s1, s2, [x3, #44] @@ -2427,52 +2427,52 @@ drps # CHECK-NEXT: 1 6 0.33 * ldp d2, d3, [x30, #-8] # CHECK-NEXT: 2 2 0.50 * stp q3, q5, [sp] # CHECK-NEXT: 2 2 0.50 * stp q17, q19, [sp, #1008] -# CHECK-NEXT: 2 6 0.67 * ldp q23, q29, [x1, #-1024] +# CHECK-NEXT: 1 6 0.67 * ldp q23, q29, [x1, #-1024] # CHECK-NEXT: 2 4 0.33 * ldp w3, w5, [sp], #0 # CHECK-NEXT: 3 1 0.50 * stp wzr, w9, [sp], #252 # CHECK-NEXT: 2 4 0.33 * ldp w2, wzr, [sp], #-256 # CHECK-NEXT: 2 4 0.33 * ldp w9, w10, [sp], #4 -# CHECK-NEXT: 3 5 0.50 * ldpsw x9, x10, [sp], #4 -# CHECK-NEXT: 3 5 0.50 * ldpsw x9, x10, [x2], #-256 -# CHECK-NEXT: 3 5 0.50 * ldpsw x20, x30, [sp], #252 -# CHECK-NEXT: 3 4 0.67 * ldp x21, x29, [x2], #504 -# CHECK-NEXT: 3 4 0.67 * ldp x22, x23, [x3], #-512 -# CHECK-NEXT: 3 4 0.67 * ldp x24, x25, [x4], #8 +# CHECK-NEXT: 2 5 1.00 * ldpsw x9, x10, [sp], #4 +# CHECK-NEXT: 2 5 1.00 * ldpsw x9, x10, [x2], #-256 +# CHECK-NEXT: 2 5 1.00 * ldpsw x20, x30, [sp], #252 +# CHECK-NEXT: 2 4 1.00 * ldp x21, x29, [x2], #504 +# CHECK-NEXT: 2 4 1.00 * ldp x22, x23, [x3], #-512 +# CHECK-NEXT: 2 4 1.00 * ldp x24, x25, [x4], #8 # CHECK-NEXT: 2 6 0.33 * ldp s29, s28, [sp], #252 # CHECK-NEXT: 3 2 0.50 * stp s27, s26, [sp], #-256 # CHECK-NEXT: 2 6 0.33 * ldp s1, s2, [x3], #44 # CHECK-NEXT: 3 2 0.50 * stp d3, d5, [x9], #504 # CHECK-NEXT: 3 2 0.50 * stp d7, d11, [x10], #-512 # CHECK-NEXT: 2 6 0.33 * ldp d2, d3, [x30], #-8 -# CHECK-NEXT: 4 2 1.00 * stp q3, q5, [sp], #0 -# CHECK-NEXT: 4 2 1.00 * stp q17, q19, [sp], #1008 -# CHECK-NEXT: 3 6 0.67 * ldp q23, q29, [x1], #-1024 +# CHECK-NEXT: 3 2 1.00 * stp q3, q5, [sp], #0 +# CHECK-NEXT: 3 2 1.00 * stp q17, q19, [sp], #1008 +# CHECK-NEXT: 2 6 0.67 * ldp q23, q29, [x1], #-1024 # CHECK-NEXT: 2 4 0.33 * ldp w3, w5, [sp, #0]! # CHECK-NEXT: 3 1 0.50 * stp wzr, w9, [sp, #252]! # CHECK-NEXT: 2 4 0.33 * ldp w2, wzr, [sp, #-256]! # CHECK-NEXT: 2 4 0.33 * ldp w9, w10, [sp, #4]! -# CHECK-NEXT: 3 5 0.50 * ldpsw x9, x10, [sp, #4]! -# CHECK-NEXT: 3 5 0.50 * ldpsw x9, x10, [x2, #-256]! -# CHECK-NEXT: 3 5 0.50 * ldpsw x20, x30, [sp, #252]! -# CHECK-NEXT: 3 4 0.67 * ldp x21, x29, [x2, #504]! -# CHECK-NEXT: 3 4 0.67 * ldp x22, x23, [x3, #-512]! -# CHECK-NEXT: 3 4 0.67 * ldp x24, x25, [x4, #8]! +# CHECK-NEXT: 2 5 1.00 * ldpsw x9, x10, [sp, #4]! +# CHECK-NEXT: 2 5 1.00 * ldpsw x9, x10, [x2, #-256]! +# CHECK-NEXT: 2 5 1.00 * ldpsw x20, x30, [sp, #252]! +# CHECK-NEXT: 2 4 1.00 * ldp x21, x29, [x2, #504]! +# CHECK-NEXT: 2 4 1.00 * ldp x22, x23, [x3, #-512]! +# CHECK-NEXT: 2 4 1.00 * ldp x24, x25, [x4, #8]! # CHECK-NEXT: 2 6 0.33 * ldp s29, s28, [sp, #252]! # CHECK-NEXT: 3 2 0.50 * stp s27, s26, [sp, #-256]! # CHECK-NEXT: 2 6 0.33 * ldp s1, s2, [x3, #44]! # CHECK-NEXT: 3 2 0.50 * stp d3, d5, [x9, #504]! # CHECK-NEXT: 3 2 0.50 * stp d7, d11, [x10, #-512]! # CHECK-NEXT: 2 6 0.33 * ldp d2, d3, [x30, #-8]! -# CHECK-NEXT: 4 2 1.00 * stp q3, q5, [sp, #0]! -# CHECK-NEXT: 4 2 1.00 * stp q17, q19, [sp, #1008]! -# CHECK-NEXT: 3 6 0.67 * ldp q23, q29, [x1, #-1024]! +# CHECK-NEXT: 3 2 1.00 * stp q3, q5, [sp, #0]! +# CHECK-NEXT: 3 2 1.00 * stp q17, q19, [sp, #1008]! +# CHECK-NEXT: 2 6 0.67 * ldp q23, q29, [x1, #-1024]! # CHECK-NEXT: 1 4 0.33 * ldnp w3, w5, [sp] # CHECK-NEXT: 2 1 0.50 * stnp wzr, w9, [sp, #252] # CHECK-NEXT: 1 4 0.33 * ldnp w2, wzr, [sp, #-256] # CHECK-NEXT: 1 4 0.33 * ldnp w9, w10, [sp, #4] -# CHECK-NEXT: 2 4 0.67 * ldnp x21, x29, [x2, #504] -# CHECK-NEXT: 2 4 0.67 * ldnp x22, x23, [x3, #-512] -# CHECK-NEXT: 2 4 0.67 * ldnp x24, x25, [x4, #8] +# CHECK-NEXT: 1 4 1.00 * ldnp x21, x29, [x2, #504] +# CHECK-NEXT: 1 4 1.00 * ldnp x22, x23, [x3, #-512] +# CHECK-NEXT: 1 4 1.00 * ldnp x24, x25, [x4, #8] # CHECK-NEXT: 1 6 0.33 * ldnp s29, s28, [sp, #252] # CHECK-NEXT: 2 2 0.50 * stnp s27, s26, [sp, #-256] # CHECK-NEXT: 1 6 0.33 * ldnp s1, s2, [x3, #44] @@ -2481,7 +2481,7 @@ drps # CHECK-NEXT: 1 6 0.33 * ldnp d2, d3, [x30, #-8] # CHECK-NEXT: 2 2 0.50 * stnp q3, q5, [sp] # CHECK-NEXT: 2 2 0.50 * stnp q17, q19, [sp, #1008] -# CHECK-NEXT: 2 6 0.67 * ldnp q23, q29, [x1, #-1024] +# CHECK-NEXT: 1 6 0.67 * ldnp q23, q29, [x1, #-1024] # CHECK-NEXT: 1 1 0.25 mov w3, #983055 # CHECK-NEXT: 1 1 0.25 mov x10, #-6148914691236517206 # CHECK-NEXT: 1 1 0.25 and w12, w23, w21 @@ -2502,12 +2502,12 @@ drps # CHECK-NEXT: 1 1 0.25 orr x8, x9, x10, lsl #12 # CHECK-NEXT: 1 1 0.25 orn x3, x5, x7, asr #2 # CHECK-NEXT: 1 1 0.25 orn w2, w5, w29 -# CHECK-NEXT: 1 2 0.50 ands w7, wzr, w9, lsl #1 -# CHECK-NEXT: 1 2 0.50 ands x3, x5, x20, ror #63 -# CHECK-NEXT: 1 2 0.50 bics w3, w5, w7 -# CHECK-NEXT: 1 2 0.50 bics x3, xzr, x3, lsl #1 -# CHECK-NEXT: 1 2 0.50 tst w3, w7, lsl #31 -# CHECK-NEXT: 1 2 0.50 tst x2, x20, asr #2 +# CHECK-NEXT: 2 2 0.50 ands w7, wzr, w9, lsl #1 +# CHECK-NEXT: 2 1 0.33 ands x3, x5, x20, ror #63 +# CHECK-NEXT: 2 1 0.33 bics w3, w5, w7 +# CHECK-NEXT: 2 2 0.50 bics x3, xzr, x3, lsl #1 +# CHECK-NEXT: 2 2 0.50 tst w3, w7, lsl #31 +# CHECK-NEXT: 2 2 0.50 tst x2, x20, asr #2 # CHECK-NEXT: 1 1 0.25 mov x3, x6 # CHECK-NEXT: 1 1 0.25 mov x3, xzr # CHECK-NEXT: 1 1 0.25 mov wzr, w2 @@ -2562,7 +2562,7 @@ drps # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] -# CHECK-NEXT: 11.00 11.00 33.00 33.00 45.33 45.33 45.33 96.33 162.33 162.33 306.50 205.50 139.00 139.00 167.50 44.50 51.50 9.50 +# CHECK-NEXT: 11.00 11.00 33.00 33.00 45.33 45.33 45.33 106.33 172.33 172.33 338.75 193.75 125.75 125.75 183.50 46.50 29.50 9.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] Instructions: @@ -2581,16 +2581,16 @@ drps # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w4, w20, #546, lsl #12 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub sp, sp, #288 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub wsp, w19, #16 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds w13, w23, #291, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds w13, w23, #291, lsl #12 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn w2, #4095 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds w20, wsp, #0 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn x3, #1, lsl #12 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp sp, #20, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn x3, #1, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp sp, #20, lsl #12 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp x30, #4095 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - subs x4, sp, #3822 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn w3, #291, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn w3, #291, lsl #12 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn wsp, #1365 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn sp, #1092, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn sp, #1092, lsl #12 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov sp, x30 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov wsp, w20 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x11, sp @@ -2973,10 +2973,10 @@ drps # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - clz x26, x4 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cls w3, w5 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cls x20, x5 -# CHECK-NEXT: - - - - - - - - - - 5.00 - - - - - - - udiv w0, w7, w10 -# CHECK-NEXT: - - - - - - - - - - 5.00 - - - - - - - udiv x9, x22, x4 -# CHECK-NEXT: - - - - - - - - - - 5.00 - - - - - - - sdiv w12, w21, w0 -# CHECK-NEXT: - - - - - - - - - - 5.00 - - - - - - - sdiv x13, x2, x1 +# CHECK-NEXT: - - - - - - - - - - 12.00 - - - - - - - udiv w0, w7, w10 +# CHECK-NEXT: - - - - - - - - - - 20.00 - - - - - - - udiv x9, x22, x4 +# CHECK-NEXT: - - - - - - - - - - 12.00 - - - - - - - sdiv w12, w21, w0 +# CHECK-NEXT: - - - - - - - - - - 20.00 - - - - - - - sdiv x13, x2, x1 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w11, w12, w13 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x14, x15, x16 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w17, w18, w19 @@ -3044,10 +3044,10 @@ drps # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - umull x11, w13, w17 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - smnegl x11, w13, w17 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - umnegl x11, w13, w17 -# CHECK-NEXT: - - - - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr w3, w5, w7, #0 -# CHECK-NEXT: - - - - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr w11, w13, w17, #31 -# CHECK-NEXT: - - - - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr x3, x5, x7, #15 -# CHECK-NEXT: - - - - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr x11, x13, x17, #63 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - extr w3, w5, w7, #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - extr w11, w13, w17, #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - extr x3, x5, x7, #15 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - extr x11, x13, x17, #63 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror x19, x23, #24 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror x29, xzr, #63 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror w9, w13, #31 @@ -3080,7 +3080,7 @@ drps # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s0, s1 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs s2, s3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg s4, s5 -# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt s6, s7 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fsqrt s6, s7 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt d8, s9 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt h10, s11 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintn s12, s13 @@ -3093,7 +3093,7 @@ drps # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d0, d1 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs d2, d3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg d4, d5 -# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt d6, d7 +# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - 4.00 - fsqrt d6, d7 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt s8, d9 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt h10, d11 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintn d12, d13 @@ -3106,7 +3106,7 @@ drps # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt s26, h27 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt d28, h29 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul s20, s19, s17 -# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv s1, s2, s3 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.50 - 1.50 - fdiv s1, s2, s3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd s4, s5, s6 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub s7, s8, s9 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax s10, s11, s12 @@ -3131,42 +3131,42 @@ drps # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmadd d3, d13, d0, d23 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsub s3, s5, s6, s31 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsub d3, d13, d0, d23 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs wzr, h20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w19, h0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x12, h30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x19, h0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs wzr, s20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w19, s0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x12, s30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x19, s0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs wzr, d20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w19, d0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x12, d30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x19, d0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu wzr, h20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w19, h0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x12, h30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x19, h0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu wzr, s20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w19, s0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x12, s30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x19, s0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu wzr, d20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w19, d0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x12, d30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x19, d0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs w3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs wzr, h20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs w19, h0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x12, h30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x19, h0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs w3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs wzr, s20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs w19, s0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x12, s30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x19, s0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs w3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs wzr, d20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs w19, d0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x12, d30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x19, d0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu w3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu wzr, h20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu w19, h0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x12, h30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x19, h0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu w3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu wzr, s20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu w19, s0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x12, s30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x19, s0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu w3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu wzr, d20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu w19, d0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x12, d30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x19, d0, #64 # CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h23, w19, #1 # CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h31, wzr, #20 # CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h14, w0, #32 @@ -3371,9 +3371,9 @@ drps # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w19, [sp], #255 # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w20, [x30], #1 # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w21, [x12], #-256 -# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str xzr, [x9], #255 -# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x2, [x3], #1 -# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x19, [x12], #-256 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str xzr, [x9], #255 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str x2, [x3], #1 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str x19, [x12], #-256 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w9, [x2], #255 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3], #1 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3], #-256 @@ -3401,18 +3401,18 @@ drps # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh wzr, [x9], #255 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w2, [x3], #1 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w19, [x12], #-256 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b0, [x0], #255 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b3, [x3], #1 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b5, [sp], #-256 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h10, [x10], #255 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h13, [x23], #1 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h15, [sp], #-256 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s20, [x20], #255 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s23, [x23], #1 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s25, [x0], #-256 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d20, [x20], #255 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d23, [x23], #1 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d25, [x0], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str b0, [x0], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str b3, [x3], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str b5, [sp], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str h10, [x10], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str h13, [x23], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str h15, [sp], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str s20, [x20], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str s23, [x23], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str s25, [x0], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str d20, [x20], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str d23, [x23], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str d25, [x0], #-256 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b0, [x0], #255 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b3, [x3], #1 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b5, [sp], #-256 @@ -3428,9 +3428,9 @@ drps # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q20, [x1], #255 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q23, [x9], #1 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q25, [x20], #-256 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q10, [x1], #255 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q22, [sp], #1 -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q21, [x20], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q10, [x1], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q22, [sp], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q21, [x20], #-256 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x3, [x4, #0]! # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w9, [x2, #255]! # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w10, [x3, #1]! @@ -3441,9 +3441,9 @@ drps # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w19, [sp, #255]! # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w20, [x30, #1]! # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w21, [x12, #-256]! -# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str xzr, [x9, #255]! -# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x2, [x3, #1]! -# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x19, [x12, #-256]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str xzr, [x9, #255]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str x2, [x3, #1]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str x19, [x12, #-256]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w9, [x2, #255]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3, #1]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3, #-256]! @@ -3471,18 +3471,18 @@ drps # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh wzr, [x9, #255]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w2, [x3, #1]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w19, [x12, #-256]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b0, [x0, #255]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b3, [x3, #1]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b5, [sp, #-256]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h10, [x10, #255]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h13, [x23, #1]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h15, [sp, #-256]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s20, [x20, #255]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s23, [x23, #1]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s25, [x0, #-256]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d20, [x20, #255]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d23, [x23, #1]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d25, [x0, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str b0, [x0, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str b3, [x3, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str b5, [sp, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str h10, [x10, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str h13, [x23, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str h15, [sp, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str s20, [x20, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str s23, [x23, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str s25, [x0, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str d20, [x20, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str d23, [x23, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str d25, [x0, #-256]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b0, [x0, #255]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b3, [x3, #1]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b5, [sp, #-256]! @@ -3498,9 +3498,9 @@ drps # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q20, [x1, #255]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q23, [x9, #1]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q25, [x20, #-256]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q10, [x1, #255]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q22, [sp, #1]! -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q21, [x20, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q10, [x1, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q22, [sp, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q21, [x20, #-256]! # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - sttrb w9, [sp] # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - sttrh wzr, [x12, #255] # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - sttr w16, [x0, #-256] @@ -3552,16 +3552,16 @@ drps # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb x18, [x22, w10, sxtw] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w3, [sp, x5] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w9, [x27, x6] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w10, [x30, x7, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w10, [x30, x7, lsl #1] # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - strh w11, [x29, x3, sxtx] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w12, [x28, xzr, sxtx] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh x13, [x27, x5, sxtx #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh x13, [x27, x5, sxtx #1] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w14, [x26, w6, uxtw] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w16, [x24, w8, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w16, [x24, w8, uxtw #1] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w17, [x23, w9, sxtw] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w18, [x22, w10, sxtw] -# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - strh w19, [x21, wzr, sxtw #1] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w19, [x21, wzr, sxtw #1] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w3, [sp, x5] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr s9, [x27, x6] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w10, [x30, x7, lsl #2] @@ -3586,28 +3586,28 @@ drps # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x17, [x23, w9, sxtw] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x18, [x22, w10, sxtw] # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str d19, [x21, wzr, sxtw #3] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q3, [sp, x5] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr q3, [sp, x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr q9, [x27, x6] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q10, [x30, x7, lsl #4] -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q11, [x29, x3, sxtx] -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q12, [x28, xzr, sxtx] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q11, [x29, x3, sxtx] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q12, [x28, xzr, sxtx] # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q13, [x27, x5, sxtx #4] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q14, [x26, w6, uxtw] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr q14, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr q15, [x25, w7, uxtw] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q16, [x24, w8, uxtw #4] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q18, [x22, w10, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr q17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q18, [x22, w10, sxtw] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q19, [x21, wzr, sxtw #4] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp w3, w5, [sp] # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stp wzr, w9, [sp, #252] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp w2, wzr, [sp, #-256] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp w9, w10, [sp, #4] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [sp, #4] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [x2, #-256] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldpsw x20, x30, [sp, #252] -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldp x21, x29, [x2, #504] -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldp x22, x23, [x3, #-512] -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldp x24, x25, [x4, #8] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [sp, #4] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [x2, #-256] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldpsw x20, x30, [sp, #252] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - ldp x21, x29, [x2, #504] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - ldp x22, x23, [x3, #-512] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - ldp x24, x25, [x4, #8] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp s29, s28, [sp, #252] # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp s27, s26, [sp, #-256] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp s1, s2, [x3, #44] @@ -3621,47 +3621,47 @@ drps # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - stp wzr, w9, [sp], #252 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w2, wzr, [sp], #-256 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w9, w10, [sp], #4 -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [sp], #4 -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [x2], #-256 -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x20, x30, [sp], #252 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x21, x29, [x2], #504 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x22, x23, [x3], #-512 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x24, x25, [x4], #8 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [sp], #4 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [x2], #-256 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldpsw x20, x30, [sp], #252 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldp x21, x29, [x2], #504 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldp x22, x23, [x3], #-512 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldp x24, x25, [x4], #8 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s29, s28, [sp], #252 # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp s27, s26, [sp], #-256 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s1, s2, [x3], #44 # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d3, d5, [x9], #504 # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d7, d11, [x10], #-512 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp d2, d3, [x30], #-8 -# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q3, q5, [sp], #0 -# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q17, q19, [sp], #1008 +# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 - - stp q3, q5, [sp], #0 +# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 - - stp q17, q19, [sp], #1008 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp q23, q29, [x1], #-1024 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w3, w5, [sp, #0]! # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - stp wzr, w9, [sp, #252]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w2, wzr, [sp, #-256]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w9, w10, [sp, #4]! -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [sp, #4]! -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [x2, #-256]! -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x20, x30, [sp, #252]! -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x21, x29, [x2, #504]! -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x22, x23, [x3, #-512]! -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x24, x25, [x4, #8]! +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [sp, #4]! +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [x2, #-256]! +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldpsw x20, x30, [sp, #252]! +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldp x21, x29, [x2, #504]! +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldp x22, x23, [x3, #-512]! +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ldp x24, x25, [x4, #8]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s29, s28, [sp, #252]! # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp s27, s26, [sp, #-256]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s1, s2, [x3, #44]! # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d3, d5, [x9, #504]! # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d7, d11, [x10, #-512]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp d2, d3, [x30, #-8]! -# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q3, q5, [sp, #0]! -# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q17, q19, [sp, #1008]! +# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 - - stp q3, q5, [sp, #0]! +# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 - - stp q17, q19, [sp, #1008]! # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp q23, q29, [x1, #-1024]! # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp w3, w5, [sp] # CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stnp wzr, w9, [sp, #252] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp w2, wzr, [sp, #-256] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp w9, w10, [sp, #4] -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldnp x21, x29, [x2, #504] -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldnp x22, x23, [x3, #-512] -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldnp x24, x25, [x4, #8] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - ldnp x21, x29, [x2, #504] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - ldnp x22, x23, [x3, #-512] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - ldnp x24, x25, [x4, #8] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp s29, s28, [sp, #252] # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp s27, s26, [sp, #-256] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp s1, s2, [x3, #44] @@ -3692,8 +3692,8 @@ drps # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - orn x3, x5, x7, asr #2 # CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - orn w2, w5, w29 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - ands w7, wzr, w9, lsl #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - ands x3, x5, x20, ror #63 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - bics w3, w5, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - ands x3, x5, x20, ror #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - bics w3, w5, w7 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - bics x3, xzr, x3, lsl #1 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - tst w3, w7, lsl #31 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - tst x2, x20, asr #2 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-forwarding.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-forwarding.s index 4de37f9600052..4d099f5851437 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-forwarding.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-forwarding.s @@ -893,10 +893,10 @@ bfmlalb z0.s, z0.h, z1.h # CHECK: Iterations: 100 # CHECK-NEXT: Instructions: 400 # CHECK-NEXT: Total Cycles: 1203 -# CHECK-NEXT: Total uOps: 500 +# CHECK-NEXT: Total uOps: 400 # CHECK: Dispatch Width: 15 -# CHECK-NEXT: uOps Per Cycle: 0.42 +# CHECK-NEXT: uOps Per Cycle: 0.33 # CHECK-NEXT: IPC: 0.33 # CHECK-NEXT: Block RThroughput: 2.0 @@ -931,10 +931,10 @@ bfmlalb z0.s, z0.h, z1.h # CHECK: Iterations: 100 # CHECK-NEXT: Instructions: 400 # CHECK-NEXT: Total Cycles: 1203 -# CHECK-NEXT: Total uOps: 500 +# CHECK-NEXT: Total uOps: 400 # CHECK: Dispatch Width: 15 -# CHECK-NEXT: uOps Per Cycle: 0.42 +# CHECK-NEXT: uOps Per Cycle: 0.33 # CHECK-NEXT: IPC: 0.33 # CHECK-NEXT: Block RThroughput: 2.0 @@ -969,10 +969,10 @@ bfmlalb z0.s, z0.h, z1.h # CHECK: Iterations: 100 # CHECK-NEXT: Instructions: 400 # CHECK-NEXT: Total Cycles: 1403 -# CHECK-NEXT: Total uOps: 500 +# CHECK-NEXT: Total uOps: 400 # CHECK: Dispatch Width: 15 -# CHECK-NEXT: uOps Per Cycle: 0.36 +# CHECK-NEXT: uOps Per Cycle: 0.29 # CHECK-NEXT: IPC: 0.29 # CHECK-NEXT: Block RThroughput: 5.0 @@ -1007,10 +1007,10 @@ bfmlalb z0.s, z0.h, z1.h # CHECK: Iterations: 100 # CHECK-NEXT: Instructions: 400 # CHECK-NEXT: Total Cycles: 1203 -# CHECK-NEXT: Total uOps: 500 +# CHECK-NEXT: Total uOps: 400 # CHECK: Dispatch Width: 15 -# CHECK-NEXT: uOps Per Cycle: 0.42 +# CHECK-NEXT: uOps Per Cycle: 0.33 # CHECK-NEXT: IPC: 0.33 # CHECK-NEXT: Block RThroughput: 2.0 @@ -1045,10 +1045,10 @@ bfmlalb z0.s, z0.h, z1.h # CHECK: Iterations: 100 # CHECK-NEXT: Instructions: 400 # CHECK-NEXT: Total Cycles: 1703 -# CHECK-NEXT: Total uOps: 800 +# CHECK-NEXT: Total uOps: 400 # CHECK: Dispatch Width: 15 -# CHECK-NEXT: uOps Per Cycle: 0.47 +# CHECK-NEXT: uOps Per Cycle: 0.23 # CHECK-NEXT: IPC: 0.23 # CHECK-NEXT: Block RThroughput: 8.0 @@ -1063,7 +1063,7 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: [1,0] D=================eeeeeER. . .. mul z0.d, p0/m, z0.d, z0.d # CHECK-NEXT: [1,1] D======================eeeeeER. .. mla z0.d, p0/m, z1.d, z2.d # CHECK-NEXT: [1,2] D========================eeeeeER .. mla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,3] .D============================eeeeeER mla z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [1,3] D=============================eeeeeER mla z0.d, p0/m, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1075,18 +1075,18 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: 0. 2 9.5 0.5 0.0 mul z0.d, p0/m, z0.d, z0.d # CHECK-NEXT: 1. 2 14.5 0.0 0.0 mla z0.d, p0/m, z1.d, z2.d # CHECK-NEXT: 2. 2 16.5 0.0 0.0 mla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: 3. 2 21.0 0.0 0.0 mla z0.d, p0/m, z0.d, z1.d -# CHECK-NEXT: 2 15.4 0.1 0.0 +# CHECK-NEXT: 3. 2 21.5 0.0 0.0 mla z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: 2 15.5 0.1 0.0 # CHECK: [22] Code Region - Z mad.d # CHECK: Iterations: 100 # CHECK-NEXT: Instructions: 400 # CHECK-NEXT: Total Cycles: 1703 -# CHECK-NEXT: Total uOps: 800 +# CHECK-NEXT: Total uOps: 400 # CHECK: Dispatch Width: 15 -# CHECK-NEXT: uOps Per Cycle: 0.47 +# CHECK-NEXT: uOps Per Cycle: 0.23 # CHECK-NEXT: IPC: 0.23 # CHECK-NEXT: Block RThroughput: 8.0 @@ -1101,7 +1101,7 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: [1,0] D=================eeeeeER. . .. mul z0.d, p0/m, z0.d, z0.d # CHECK-NEXT: [1,1] D======================eeeeeER. .. mad z0.d, p0/m, z1.d, z2.d # CHECK-NEXT: [1,2] D========================eeeeeER .. mad z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,3] .D============================eeeeeER mad z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [1,3] D=============================eeeeeER mad z0.d, p0/m, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1113,18 +1113,18 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: 0. 2 9.5 0.5 0.0 mul z0.d, p0/m, z0.d, z0.d # CHECK-NEXT: 1. 2 14.5 0.0 0.0 mad z0.d, p0/m, z1.d, z2.d # CHECK-NEXT: 2. 2 16.5 0.0 0.0 mad z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: 3. 2 21.0 0.0 0.0 mad z0.d, p0/m, z0.d, z1.d -# CHECK-NEXT: 2 15.4 0.1 0.0 +# CHECK-NEXT: 3. 2 21.5 0.0 0.0 mad z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: 2 15.5 0.1 0.0 # CHECK: [23] Code Region - Z msb.d # CHECK: Iterations: 100 # CHECK-NEXT: Instructions: 400 # CHECK-NEXT: Total Cycles: 1703 -# CHECK-NEXT: Total uOps: 800 +# CHECK-NEXT: Total uOps: 400 # CHECK: Dispatch Width: 15 -# CHECK-NEXT: uOps Per Cycle: 0.47 +# CHECK-NEXT: uOps Per Cycle: 0.23 # CHECK-NEXT: IPC: 0.23 # CHECK-NEXT: Block RThroughput: 8.0 @@ -1139,7 +1139,7 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: [1,0] D=================eeeeeER. . .. mul z0.d, p0/m, z0.d, z0.d # CHECK-NEXT: [1,1] D======================eeeeeER. .. msb z0.d, p0/m, z1.d, z2.d # CHECK-NEXT: [1,2] D========================eeeeeER .. msb z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,3] .D============================eeeeeER msb z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [1,3] D=============================eeeeeER msb z0.d, p0/m, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1151,8 +1151,8 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: 0. 2 9.5 0.5 0.0 mul z0.d, p0/m, z0.d, z0.d # CHECK-NEXT: 1. 2 14.5 0.0 0.0 msb z0.d, p0/m, z1.d, z2.d # CHECK-NEXT: 2. 2 16.5 0.0 0.0 msb z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: 3. 2 21.0 0.0 0.0 msb z0.d, p0/m, z0.d, z1.d -# CHECK-NEXT: 2 15.4 0.1 0.0 +# CHECK-NEXT: 3. 2 21.5 0.0 0.0 msb z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: 2 15.5 0.1 0.0 # CHECK: [24] Code Region - Z fcmla ZPmZZ diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-neon-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-neon-instructions.s index 20e76ef27c470..bc7bc2cdb14b1 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-neon-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-neon-instructions.s @@ -1248,17 +1248,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 addp v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 addv s0, v0.4s # CHECK-NEXT: 1 2 0.50 addv h0, v0.4h -# CHECK-NEXT: 2 4 0.50 addv h0, v0.8h -# CHECK-NEXT: 2 4 0.50 addv b0, v0.8b -# CHECK-NEXT: 2 4 1.00 addv b0, v0.16b +# CHECK-NEXT: 1 4 0.50 addv h0, v0.8h +# CHECK-NEXT: 1 4 0.50 addv b0, v0.8b +# CHECK-NEXT: 1 4 1.00 addv b0, v0.16b # CHECK-NEXT: 1 2 0.25 aesd v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 aese v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 aesimc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 aesmc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 and v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 bfcvt h0, s0 -# CHECK-NEXT: 1 4 0.50 bfcvtn v0.4h, v0.4s -# CHECK-NEXT: 1 4 0.50 bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: 1 4 1.00 bfcvtn v0.4h, v0.4s +# CHECK-NEXT: 1 4 1.00 bfcvtn2 v0.8h, v0.4s # CHECK-NEXT: 1 4 0.25 bfdot v0.2s, v0.4h, v0.4h # CHECK-NEXT: 1 4 0.25 bfdot v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 bfmlalb v0.4s, v0.8h, v0.8h @@ -1374,113 +1374,113 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fcmlt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmlt v0.4s, v0.4s, #0.0 # CHECK-NEXT: 1 3 0.50 fcvtas d21, d14 -# CHECK-NEXT: 2 4 1.00 fcvtas s12, s13 -# CHECK-NEXT: 4 6 1.00 fcvtas h12, h13 +# CHECK-NEXT: 1 3 0.50 fcvtas s12, s13 +# CHECK-NEXT: 1 3 0.50 fcvtas h12, h13 # CHECK-NEXT: 1 3 0.50 fcvtas v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtas v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 fcvtas v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 fcvtas v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 fcvtas v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 fcvtas v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtas v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 fcvtas v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtau d21, d14 -# CHECK-NEXT: 2 4 1.00 fcvtau s12, s13 -# CHECK-NEXT: 4 6 1.00 fcvtau h12, h13 +# CHECK-NEXT: 1 3 0.50 fcvtau s12, s13 +# CHECK-NEXT: 1 3 0.50 fcvtau h12, h13 # CHECK-NEXT: 1 3 0.50 fcvtau v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtau v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 fcvtau v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 fcvtau v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 fcvtau v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 fcvtau v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtau v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 fcvtau v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtl v0.2d, v0.2s -# CHECK-NEXT: 2 4 1.00 fcvtl v0.4s, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtl v0.4s, v0.4h # CHECK-NEXT: 1 3 0.50 fcvtl2 v0.2d, v0.4s -# CHECK-NEXT: 2 4 1.00 fcvtl2 v0.4s, v0.8h +# CHECK-NEXT: 1 4 1.00 fcvtl2 v0.4s, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtms d21, d14 -# CHECK-NEXT: 2 4 1.00 fcvtms s22, s13 -# CHECK-NEXT: 4 6 1.00 fcvtms h22, h13 +# CHECK-NEXT: 1 3 0.50 fcvtms s22, s13 +# CHECK-NEXT: 1 3 0.50 fcvtms h22, h13 # CHECK-NEXT: 1 3 0.50 fcvtms v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtms v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 fcvtms v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 fcvtms v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 fcvtms v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 fcvtms v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtms v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 fcvtms v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtmu d21, d14 -# CHECK-NEXT: 2 4 1.00 fcvtmu s12, s13 -# CHECK-NEXT: 4 6 1.00 fcvtmu h12, h13 +# CHECK-NEXT: 1 3 0.50 fcvtmu s12, s13 +# CHECK-NEXT: 1 3 0.50 fcvtmu h12, h13 # CHECK-NEXT: 1 3 0.50 fcvtmu v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtmu v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 fcvtmu v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 fcvtmu v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 fcvtmu v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 fcvtmu v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtmu v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 fcvtmu v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtn v0.2s, v0.2d -# CHECK-NEXT: 2 4 1.00 fcvtn v0.4h, v0.4s +# CHECK-NEXT: 1 4 1.00 fcvtn v0.4h, v0.4s # CHECK-NEXT: 1 3 0.50 fcvtn2 v0.4s, v0.2d -# CHECK-NEXT: 2 4 1.00 fcvtn2 v0.8h, v0.4s +# CHECK-NEXT: 1 4 1.00 fcvtn2 v0.8h, v0.4s # CHECK-NEXT: 1 3 0.50 fcvtns d21, d14 -# CHECK-NEXT: 2 4 1.00 fcvtns s22, s13 -# CHECK-NEXT: 4 6 1.00 fcvtns h22, h13 +# CHECK-NEXT: 1 3 0.50 fcvtns s22, s13 +# CHECK-NEXT: 1 3 0.50 fcvtns h22, h13 # CHECK-NEXT: 1 3 0.50 fcvtns v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtns v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 fcvtns v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 fcvtns v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 fcvtns v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 fcvtns v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtns v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 fcvtns v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtnu d21, d14 -# CHECK-NEXT: 2 4 1.00 fcvtnu s12, s13 -# CHECK-NEXT: 4 6 1.00 fcvtnu h12, h13 +# CHECK-NEXT: 1 3 0.50 fcvtnu s12, s13 +# CHECK-NEXT: 1 3 0.50 fcvtnu h12, h13 # CHECK-NEXT: 1 3 0.50 fcvtnu v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtnu v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 fcvtnu v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 fcvtnu v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 fcvtnu v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 fcvtnu v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtnu v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 fcvtnu v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtps d21, d14 -# CHECK-NEXT: 2 4 1.00 fcvtps s22, s13 -# CHECK-NEXT: 4 6 1.00 fcvtps h22, h13 +# CHECK-NEXT: 1 3 0.50 fcvtps s22, s13 +# CHECK-NEXT: 1 3 0.50 fcvtps h22, h13 # CHECK-NEXT: 1 3 0.50 fcvtps v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtps v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 fcvtps v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 fcvtps v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 fcvtps v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 fcvtps v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtps v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 fcvtps v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtpu d21, d14 -# CHECK-NEXT: 2 4 1.00 fcvtpu s12, s13 -# CHECK-NEXT: 4 6 1.00 fcvtpu h12, h13 +# CHECK-NEXT: 1 3 0.50 fcvtpu s12, s13 +# CHECK-NEXT: 1 3 0.50 fcvtpu h12, h13 # CHECK-NEXT: 1 3 0.50 fcvtpu v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtpu v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 fcvtpu v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 fcvtpu v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 fcvtpu v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 fcvtpu v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtpu v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 fcvtpu v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtxn s22, d13 # CHECK-NEXT: 1 3 0.50 fcvtxn v0.2s, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtxn2 v0.4s, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtzs d21, d12, #1 # CHECK-NEXT: 1 3 0.50 fcvtzs d21, d14 -# CHECK-NEXT: 2 4 1.00 fcvtzs s12, s13 -# CHECK-NEXT: 2 4 1.00 fcvtzs s21, s12, #1 -# CHECK-NEXT: 4 6 1.00 fcvtzs h21, h14 -# CHECK-NEXT: 4 6 1.00 fcvtzs h21, h12, #1 +# CHECK-NEXT: 1 3 0.50 fcvtzs s12, s13 +# CHECK-NEXT: 1 3 0.50 fcvtzs s21, s12, #1 +# CHECK-NEXT: 1 3 0.50 fcvtzs h21, h14 +# CHECK-NEXT: 1 3 0.50 fcvtzs h21, h12, #1 # CHECK-NEXT: 1 3 0.50 fcvtzs v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtzs v0.2d, v0.2d, #3 # CHECK-NEXT: 1 3 0.50 fcvtzs v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fcvtzs v0.2s, v0.2s, #3 -# CHECK-NEXT: 2 4 1.00 fcvtzs v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 fcvtzs v0.4s, v0.4s -# CHECK-NEXT: 2 4 1.00 fcvtzs v0.4s, v0.4s, #3 -# CHECK-NEXT: 4 6 1.00 fcvtzs v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 fcvtzs v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtzs v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 fcvtzs v0.4s, v0.4s, #3 +# CHECK-NEXT: 1 6 2.00 fcvtzs v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtzu d21, d12, #1 # CHECK-NEXT: 1 3 0.50 fcvtzu d21, d14 -# CHECK-NEXT: 2 4 1.00 fcvtzu s12, s13 -# CHECK-NEXT: 2 4 1.00 fcvtzu s21, s12, #1 -# CHECK-NEXT: 4 6 1.00 fcvtzu h12, h13 -# CHECK-NEXT: 4 6 1.00 fcvtzu h21, h12, #1 +# CHECK-NEXT: 1 3 0.50 fcvtzu s12, s13 +# CHECK-NEXT: 1 3 0.50 fcvtzu s21, s12, #1 +# CHECK-NEXT: 1 3 0.50 fcvtzu h12, h13 +# CHECK-NEXT: 1 3 0.50 fcvtzu h21, h12, #1 # CHECK-NEXT: 1 3 0.50 fcvtzu v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fcvtzu v0.2d, v0.2d, #3 # CHECK-NEXT: 1 3 0.50 fcvtzu v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fcvtzu v0.2s, v0.2s, #3 -# CHECK-NEXT: 2 4 1.00 fcvtzu v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 fcvtzu v0.4s, v0.4s -# CHECK-NEXT: 2 4 1.00 fcvtzu v0.4s, v0.4s, #3 -# CHECK-NEXT: 4 6 1.00 fcvtzu v0.8h, v0.8h -# CHECK-NEXT: 1 15 3.50 fdiv v0.2d, v0.2d, v0.2d -# CHECK-NEXT: 1 10 3.50 fdiv v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 fcvtzu v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 fcvtzu v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 fcvtzu v0.4s, v0.4s, #3 +# CHECK-NEXT: 1 6 2.00 fcvtzu v0.8h, v0.8h +# CHECK-NEXT: 1 15 7.00 fdiv v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 10 2.50 fdiv v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 7 3.50 fdiv v0.4h, v0.4h, v0.4h -# CHECK-NEXT: 1 10 3.50 fdiv v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 13 2.50 fdiv v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 10 4.50 fdiv v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 13 6.50 fdiv v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fmax v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fmax v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fmax v0.4s, v0.4s, v0.4s @@ -1493,9 +1493,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fmaxp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 2 4 0.50 fmaxv h0, v0.4h -# CHECK-NEXT: 3 6 0.75 fmaxv h0, v0.8h -# CHECK-NEXT: 2 4 0.50 fmaxv s0, v0.4s +# CHECK-NEXT: 1 4 0.50 fmaxv h0, v0.4h +# CHECK-NEXT: 1 6 0.75 fmaxv h0, v0.8h +# CHECK-NEXT: 1 4 0.50 fmaxv s0, v0.4s # CHECK-NEXT: 1 2 0.25 fmin v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fmin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fmin v0.4s, v0.4s, v0.4s @@ -1537,8 +1537,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 0.25 fmul s0, s1, v0.s[3] # CHECK-NEXT: 1 3 0.25 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.25 fmulx d0, d4, v0.d[1] -# CHECK-NEXT: 1 2 0.25 fmulx d23, d11, d1 -# CHECK-NEXT: 1 2 0.25 fmulx s20, s22, s15 +# CHECK-NEXT: 1 3 0.25 fmulx d23, d11, d1 +# CHECK-NEXT: 1 3 0.25 fmulx s20, s22, s15 # CHECK-NEXT: 1 3 0.25 fmulx s3, s5, v0.s[3] # CHECK-NEXT: 1 3 0.25 fmulx v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 3 0.25 fmulx v0.2s, v0.2s, v0.2s @@ -1550,11 +1550,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fneg v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 frecpe d13, d13 # CHECK-NEXT: 1 3 0.50 frecpe s19, s14 -# CHECK-NEXT: 1 4 0.50 frecpe v0.2d, v0.2d +# CHECK-NEXT: 1 4 1.00 frecpe v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frecpe v0.2s, v0.2s -# CHECK-NEXT: 1 4 0.50 frecpe v0.4h, v0.4h -# CHECK-NEXT: 1 4 0.50 frecpe v0.4s, v0.4s -# CHECK-NEXT: 2 6 1.00 frecpe v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 frecpe v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 frecpe v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 frecpe v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.25 frecps d22, d30, d21 # CHECK-NEXT: 1 4 0.25 frecps s21, s16, s13 @@ -1562,63 +1562,63 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 frecpx s18, s10 # CHECK-NEXT: 1 3 0.50 frinta v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frinta v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frinta v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 frinta v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 frinta v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 frinta v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 frinta v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 frinta v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 frinti v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frinti v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frinti v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 frinti v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 frinti v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 frinti v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 frinti v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 frinti v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 frintm v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frintm v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frintm v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 frintm v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 frintm v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 frintm v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 frintm v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 frintm v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 frintn v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frintn v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frintn v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 frintn v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 frintn v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 frintn v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 frintn v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 frintn v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 frintp v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frintp v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frintp v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 frintp v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 frintp v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 frintp v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 frintp v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 frintp v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 frintx v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frintx v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frintx v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 frintx v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 frintx v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 frintx v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 frintx v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 frintx v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 frintz v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frintz v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frintz v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 frintz v0.4s, v0.4s -# CHECK-NEXT: 4 6 1.00 frintz v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 frintz v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 frintz v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 frintz v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 frsqrte d21, d12 # CHECK-NEXT: 1 3 0.50 frsqrte s22, s13 -# CHECK-NEXT: 1 4 0.50 frsqrte v0.2d, v0.2d +# CHECK-NEXT: 1 4 1.00 frsqrte v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frsqrte v0.2s, v0.2s -# CHECK-NEXT: 1 4 0.50 frsqrte v0.4h, v0.4h -# CHECK-NEXT: 1 4 0.50 frsqrte v0.4s, v0.4s -# CHECK-NEXT: 2 6 1.00 frsqrte v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 frsqrte v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 frsqrte v0.4s, v0.4s +# CHECK-NEXT: 1 6 2.00 frsqrte v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 frsqrts d8, d22, d18 # CHECK-NEXT: 1 4 0.25 frsqrts s21, s5, s12 # CHECK-NEXT: 1 4 0.25 frsqrts v0.2d, v0.2d, v0.2d -# CHECK-NEXT: 1 16 3.50 fsqrt v0.2d, v0.2d -# CHECK-NEXT: 1 10 3.50 fsqrt v0.2s, v0.2s +# CHECK-NEXT: 1 16 7.50 fsqrt v0.2d, v0.2d +# CHECK-NEXT: 1 10 2.50 fsqrt v0.2s, v0.2s # CHECK-NEXT: 1 7 3.50 fsqrt v0.4h, v0.4h -# CHECK-NEXT: 1 10 3.50 fsqrt v0.4s, v0.4s -# CHECK-NEXT: 1 13 5.50 fsqrt v0.8h, v0.8h +# CHECK-NEXT: 1 10 4.50 fsqrt v0.4s, v0.4s +# CHECK-NEXT: 1 13 6.50 fsqrt v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 6 0.33 * ld1 { v0.16b }, [x0] -# CHECK-NEXT: 3 6 0.67 * ld1 { v0.8h, v1.8h }, [sp], #32 -# CHECK-NEXT: 4 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 -# CHECK-NEXT: 4 7 1.33 * ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: 2 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: 1 7 1.33 * ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] # CHECK-NEXT: 2 6 0.33 * ld1 { v0.1d }, [x15], x2 -# CHECK-NEXT: 2 6 0.67 * ld1 { v0.2s, v1.2s }, [x15] -# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4h, v1.4h, v2.4h }, [sp] -# CHECK-NEXT: 3 6 0.67 * ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 1 6 0.67 * ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: 1 6 1.00 * ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 # CHECK-NEXT: 2 8 0.33 * ld1 { v0.b }[7], [x0] # CHECK-NEXT: 3 8 0.33 * ld1 { v0.h }[3], [x0], #2 # CHECK-NEXT: 2 8 0.33 * ld1 { v0.s }[1], [x15] @@ -1627,30 +1627,30 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 3 8 0.33 * ld1r { v0.8h }, [x0], #2 # CHECK-NEXT: 2 8 0.33 * ld1r { v0.4s }, [x15] # CHECK-NEXT: 3 8 0.33 * ld1r { v0.2d }, [x15], x16 -# CHECK-NEXT: 4 8 0.67 * ld2 { v0.16b, v1.16b }, [x0] -# CHECK-NEXT: 4 8 0.50 * ld2 { v0.8b, v1.8b }, [x0], #16 -# CHECK-NEXT: 3 8 0.50 * ld2 { v0.h, v1.h }[7], [x15] -# CHECK-NEXT: 4 8 0.50 * ld2 { v0.h, v1.h }[7], [x15], x8 -# CHECK-NEXT: 3 8 0.50 * ld2r { v0.8b, v1.8b }, [x0] -# CHECK-NEXT: 4 8 0.50 * ld2r { v0.4h, v1.4h }, [x0], #4 -# CHECK-NEXT: 3 8 0.50 * ld2r { v0.2s, v1.2s }, [sp] -# CHECK-NEXT: 4 8 0.50 * ld2r { v0.1d, v1.1d }, [sp], x8 -# CHECK-NEXT: 5 8 0.75 * ld3 { v0.4h, v1.4h, v2.4h }, [x15] -# CHECK-NEXT: 7 8 1.00 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 -# CHECK-NEXT: 5 8 0.75 * ld3 { v0.s, v1.s, v2.s }[3], [sp] -# CHECK-NEXT: 6 8 0.75 * ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 -# CHECK-NEXT: 5 8 0.75 * ld3r { v0.8b, v1.8b, v2.8b }, [x15] -# CHECK-NEXT: 6 8 0.75 * ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 -# CHECK-NEXT: 5 8 0.75 * ld3r { v0.2s, v1.2s, v2.2s }, [x0] -# CHECK-NEXT: 6 8 0.75 * ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 -# CHECK-NEXT: 7 8 1.00 * ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -# CHECK-NEXT: 9 9 1.33 * ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -# CHECK-NEXT: 7 8 1.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] -# CHECK-NEXT: 8 8 1.00 * ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 -# CHECK-NEXT: 7 8 1.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] -# CHECK-NEXT: 7 8 1.00 * ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] -# CHECK-NEXT: 8 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 -# CHECK-NEXT: 8 8 1.00 * ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 +# CHECK-NEXT: 2 8 0.67 * ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: 3 8 0.33 * ld2 { v0.8b, v1.8b }, [x0], #16 +# CHECK-NEXT: 2 8 0.67 * ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: 3 8 0.67 * ld2 { v0.h, v1.h }[7], [x15], x8 +# CHECK-NEXT: 2 8 0.67 * ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 3 8 0.67 * ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: 2 8 0.67 * ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: 3 8 0.67 * ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: 2 8 1.00 * ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: 3 8 1.00 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: 2 8 1.00 * ld3 { v0.s, v1.s, v2.s }[3], [sp] +# CHECK-NEXT: 3 8 1.00 * ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: 2 8 1.00 * ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: 3 8 1.00 * ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: 2 8 1.00 * ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: 3 8 1.00 * ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: 2 8 1.00 * ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] +# CHECK-NEXT: 3 9 2.00 * ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: 2 8 1.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: 3 8 1.00 * ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: 2 8 1.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: 2 8 1.00 * ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: 3 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: 3 8 1.00 * ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: 1 4 0.50 mla v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 4 0.50 mls v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 mov b0, v0.b[15] @@ -1759,9 +1759,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 saddlp v0.8h, v0.16b # CHECK-NEXT: 1 2 0.50 saddlv d0, v0.4s # CHECK-NEXT: 1 2 0.50 saddlv s0, v0.4h -# CHECK-NEXT: 2 4 0.50 saddlv s0, v0.8h -# CHECK-NEXT: 2 4 0.50 saddlv h0, v0.8b -# CHECK-NEXT: 2 4 1.00 saddlv h0, v0.16b +# CHECK-NEXT: 1 4 0.50 saddlv s0, v0.8h +# CHECK-NEXT: 1 4 0.50 saddlv h0, v0.8b +# CHECK-NEXT: 1 4 1.00 saddlv h0, v0.16b # CHECK-NEXT: 1 2 0.25 saddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: 1 2 0.25 saddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: 1 2 0.25 saddw v0.8h, v0.8h, v0.8b @@ -1770,22 +1770,22 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 saddw2 v0.8h, v0.8h, v0.16b # CHECK-NEXT: 1 3 0.50 scvtf d21, d12 # CHECK-NEXT: 1 3 0.50 scvtf d21, d12, #64 -# CHECK-NEXT: 2 4 1.00 scvtf s22, s13 -# CHECK-NEXT: 2 4 1.00 scvtf s22, s13, #32 +# CHECK-NEXT: 1 3 0.50 scvtf s22, s13 +# CHECK-NEXT: 1 3 0.50 scvtf s22, s13, #32 # CHECK-NEXT: 1 3 0.50 scvtf v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 scvtf v0.2d, v0.2d, #3 # CHECK-NEXT: 1 3 0.50 scvtf v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 scvtf v0.2s, v0.2s, #3 -# CHECK-NEXT: 2 4 1.00 scvtf v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 scvtf v0.4s, v0.4s -# CHECK-NEXT: 2 4 1.00 scvtf v0.4s, v0.4s, #3 -# CHECK-NEXT: 4 6 1.00 scvtf v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 scvtf v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 scvtf v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 1 6 2.00 scvtf v0.8h, v0.8h # CHECK-NEXT: 1 3 0.25 sdot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: 1 3 0.25 sdot v0.2s, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.25 sdot v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.25 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.25 shadd v0.8b, v0.8b, v0.8b -# CHECK-NEXT: 1 2 0.25 shl d7, d10, #12 +# CHECK-NEXT: 1 2 0.50 shl d7, d10, #12 # CHECK-NEXT: 1 2 0.50 shl v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 shl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 0.50 shl v0.4h, v0.4h, #3 @@ -1810,7 +1810,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: 1 2 0.25 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 shsub v0.4h, v0.4h, v0.4h -# CHECK-NEXT: 1 2 0.25 sli d10, d14, #12 +# CHECK-NEXT: 1 2 0.50 sli d10, d14, #12 # CHECK-NEXT: 1 2 0.50 sli v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 sli v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 0.50 sli v0.2s, v0.2s, #3 @@ -1824,10 +1824,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 smaxp v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 smaxp v0.8b, v0.8b, v0.8b -# CHECK-NEXT: 2 4 0.50 smaxv b0, v0.8b -# CHECK-NEXT: 2 4 1.00 smaxv b0, v0.16b +# CHECK-NEXT: 1 4 0.50 smaxv b0, v0.8b +# CHECK-NEXT: 1 4 1.00 smaxv b0, v0.16b # CHECK-NEXT: 1 2 0.50 smaxv h0, v0.4h -# CHECK-NEXT: 2 4 0.50 smaxv h0, v0.8h +# CHECK-NEXT: 1 4 0.50 smaxv h0, v0.8h # CHECK-NEXT: 1 2 0.50 smaxv s0, v0.4s # CHECK-NEXT: 1 2 0.25 smin v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 smin v0.4s, v0.4s, v0.4s @@ -1835,10 +1835,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 sminp v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 sminp v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 sminp v0.8h, v0.8h, v0.8h -# CHECK-NEXT: 2 4 0.50 sminv b0, v0.8b -# CHECK-NEXT: 2 4 1.00 sminv b0, v0.16b +# CHECK-NEXT: 1 4 0.50 sminv b0, v0.8b +# CHECK-NEXT: 1 4 1.00 sminv b0, v0.16b # CHECK-NEXT: 1 2 0.50 sminv h0, v0.4h -# CHECK-NEXT: 2 4 0.50 sminv h0, v0.8h +# CHECK-NEXT: 1 4 0.50 sminv h0, v0.8h # CHECK-NEXT: 1 2 0.50 sminv s0, v0.4s # CHECK-NEXT: 1 4 0.50 smlal v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 smlal v0.4s, v0.4h, v0.4h @@ -1896,9 +1896,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sqdmulh v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 sqdmulh v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 3 0.50 sqdmull d1, s1, v0.s[1] -# CHECK-NEXT: 1 2 0.25 sqdmull d15, s22, s12 +# CHECK-NEXT: 1 3 0.50 sqdmull d15, s22, s12 # CHECK-NEXT: 1 3 0.50 sqdmull s1, h1, v0.h[3] -# CHECK-NEXT: 1 2 0.25 sqdmull s12, h22, h12 +# CHECK-NEXT: 1 3 0.50 sqdmull s12, h22, h12 # CHECK-NEXT: 1 3 0.50 sqdmull v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 sqdmull v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 3 0.50 sqdmull2 v0.2d, v0.4s, v0.4s @@ -1949,18 +1949,18 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 4 0.50 sqrshl v0.8b, v0.8b, v0.8b -# CHECK-NEXT: 1 2 0.25 sqrshrn b10, h13, #2 -# CHECK-NEXT: 1 2 0.25 sqrshrn h15, s10, #6 -# CHECK-NEXT: 1 2 0.25 sqrshrn s15, d12, #9 +# CHECK-NEXT: 1 4 0.50 sqrshrn b10, h13, #2 +# CHECK-NEXT: 1 4 0.50 sqrshrn h15, s10, #6 +# CHECK-NEXT: 1 4 0.50 sqrshrn s15, d12, #9 # CHECK-NEXT: 1 4 0.50 sqrshrn v0.2s, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 sqrshrn v0.4h, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 sqrshrn v0.8b, v0.8h, #3 # CHECK-NEXT: 1 4 0.50 sqrshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: 1 4 0.50 sqrshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 sqrshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: 1 2 0.25 sqrshrun b17, h10, #6 -# CHECK-NEXT: 1 2 0.25 sqrshrun h10, s13, #15 -# CHECK-NEXT: 1 2 0.25 sqrshrun s22, d16, #31 +# CHECK-NEXT: 1 4 0.50 sqrshrun b17, h10, #6 +# CHECK-NEXT: 1 4 0.50 sqrshrun h10, s13, #15 +# CHECK-NEXT: 1 4 0.50 sqrshrun s22, d16, #31 # CHECK-NEXT: 1 4 0.50 sqrshrun v0.2s, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 sqrshrun v0.4h, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 sqrshrun v0.8b, v0.8h, #3 @@ -1994,24 +1994,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sqshlu v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 sqshlu v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 0.50 sqshlu v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 2 0.25 sqshrn b10, h15, #5 -# CHECK-NEXT: 1 2 0.25 sqshrn h17, s10, #4 -# CHECK-NEXT: 1 2 0.25 sqshrn s18, d10, #31 +# CHECK-NEXT: 1 4 0.50 sqshrn b10, h15, #5 +# CHECK-NEXT: 1 4 0.50 sqshrn h17, s10, #4 +# CHECK-NEXT: 1 4 0.50 sqshrn s18, d10, #31 # CHECK-NEXT: 1 4 0.50 sqshrn v0.2s, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 sqshrn v0.4h, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 sqshrn v0.8b, v0.8h, #3 # CHECK-NEXT: 1 4 0.50 sqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: 1 4 0.50 sqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 sqshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: 1 2 0.25 sqshrun b15, h10, #7 -# CHECK-NEXT: 1 2 0.25 sqshrun h20, s14, #3 -# CHECK-NEXT: 1 2 0.25 sqshrun s10, d15, #15 -# CHECK-NEXT: 1 2 0.25 sqshrun v0.2s, v0.2d, #3 -# CHECK-NEXT: 1 2 0.25 sqshrun v0.4h, v0.4s, #3 -# CHECK-NEXT: 1 2 0.25 sqshrun v0.8b, v0.8h, #3 -# CHECK-NEXT: 1 2 0.25 sqshrun2 v0.16b, v0.8h, #3 -# CHECK-NEXT: 1 2 0.25 sqshrun2 v0.4s, v0.2d, #3 -# CHECK-NEXT: 1 2 0.25 sqshrun2 v0.8h, v0.4s, #3 +# CHECK-NEXT: 1 4 0.50 sqshrun b15, h10, #7 +# CHECK-NEXT: 1 4 0.50 sqshrun h20, s14, #3 +# CHECK-NEXT: 1 4 0.50 sqshrun s10, d15, #15 +# CHECK-NEXT: 1 4 0.50 sqshrun v0.2s, v0.2d, #3 +# CHECK-NEXT: 1 4 0.50 sqshrun v0.4h, v0.4s, #3 +# CHECK-NEXT: 1 4 0.50 sqshrun v0.8b, v0.8h, #3 +# CHECK-NEXT: 1 4 0.50 sqshrun2 v0.16b, v0.8h, #3 +# CHECK-NEXT: 1 4 0.50 sqshrun2 v0.4s, v0.2d, #3 +# CHECK-NEXT: 1 4 0.50 sqshrun2 v0.8h, v0.4s, #3 # CHECK-NEXT: 1 2 0.25 sqsub s20, s10, s7 # CHECK-NEXT: 1 2 0.25 sqsub v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 sqsub v0.4s, v0.4s, v0.4s @@ -2037,7 +2037,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 srhadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 srhadd v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 srhadd v0.8b, v0.8b, v0.8b -# CHECK-NEXT: 1 2 0.25 sri d10, d12, #14 +# CHECK-NEXT: 1 2 0.50 sri d10, d12, #14 # CHECK-NEXT: 1 2 0.50 sri v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 sri v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 0.50 sri v0.2s, v0.2s, #3 @@ -2049,7 +2049,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 srshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 srshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 4 0.50 srshl v0.8b, v0.8b, v0.8b -# CHECK-NEXT: 1 2 0.25 srshr d19, d18, #7 +# CHECK-NEXT: 1 4 0.50 srshr d19, d18, #7 # CHECK-NEXT: 1 4 0.50 srshr v0.16b, v0.16b, #3 # CHECK-NEXT: 1 4 0.50 srshr v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 srshr v0.2s, v0.2s, #3 @@ -2057,7 +2057,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 srshr v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 srshr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 0.50 srshr v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 2 0.25 srsra d15, d11, #19 +# CHECK-NEXT: 1 4 0.50 srsra d15, d11, #19 # CHECK-NEXT: 1 4 0.50 srsra v0.16b, v0.16b, #3 # CHECK-NEXT: 1 4 0.50 srsra v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 srsra v0.2s, v0.2s, #3 @@ -2072,7 +2072,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sshl v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 sshll v0.2d, v0.2s, #3 # CHECK-NEXT: 1 2 0.50 sshll2 v0.4s, v0.8h, #3 -# CHECK-NEXT: 1 2 0.25 sshr d15, d16, #12 +# CHECK-NEXT: 1 2 0.50 sshr d15, d16, #12 # CHECK-NEXT: 1 2 0.50 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 sshr v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 0.50 sshr v0.2s, v0.2s, #3 @@ -2080,7 +2080,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sshr v0.4s, v0.4s, #3 # CHECK-NEXT: 1 2 0.50 sshr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.50 sshr v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 2 0.25 ssra d18, d12, #21 +# CHECK-NEXT: 1 4 0.50 ssra d18, d12, #21 # CHECK-NEXT: 1 4 0.50 ssra v0.16b, v0.16b, #3 # CHECK-NEXT: 1 4 0.50 ssra v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 ssra v0.2s, v0.2s, #3 @@ -2101,27 +2101,27 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.25 ssubw2 v0.8h, v0.8h, v0.16b # CHECK-NEXT: 2 2 0.50 * st1 { v0.16b }, [x0] -# CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 -# CHECK-NEXT: 7 2 1.50 * st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -# CHECK-NEXT: 8 2 2.00 * st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 3 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: 3 2 1.50 * st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: 2 2 2.00 * st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] # CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 -# CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] -# CHECK-NEXT: 6 2 1.50 * st1 { v0.4s, v1.4s, v2.4s }, [sp] -# CHECK-NEXT: 5 2 1.00 * st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 2 2 1.00 * st1 { v0.8h, v1.8h }, [x15] +# CHECK-NEXT: 2 2 1.50 * st1 { v0.4s, v1.4s, v2.4s }, [sp] +# CHECK-NEXT: 3 2 1.00 * st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 # CHECK-NEXT: 2 4 0.50 * st1 { v0.d }[1], [x0] # CHECK-NEXT: 3 4 0.50 * st1 { v0.d }[1], [x0], #8 -# CHECK-NEXT: 5 4 1.00 * st2 { v0.16b, v1.16b }, [x0], x1 +# CHECK-NEXT: 3 4 1.00 * st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 2 4 0.50 * st2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: 2 4 0.50 * st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: 3 4 0.50 * st2 { v0.s, v1.s }[3], [sp], #8 -# CHECK-NEXT: 4 4 1.00 * st3 { v0.4h, v1.4h, v2.4h }, [x15] -# CHECK-NEXT: 7 5 1.50 * st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -# CHECK-NEXT: 4 4 1.00 * st3 { v0.h, v1.h, v2.h }[7], [x15] -# CHECK-NEXT: 5 4 1.00 * st3 { v0.h, v1.h, v2.h }[7], [x15], #6 -# CHECK-NEXT: 6 6 1.50 * st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -# CHECK-NEXT: 13 7 3.00 * st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -# CHECK-NEXT: 6 6 1.00 * st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] -# CHECK-NEXT: 5 4 1.00 * st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 +# CHECK-NEXT: 2 4 1.00 * st3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: 3 5 1.50 * st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: 2 4 1.00 * st3 { v0.h, v1.h, v2.h }[7], [x15] +# CHECK-NEXT: 3 4 1.00 * st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: 2 6 3.00 * st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] +# CHECK-NEXT: 3 7 6.00 * st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: 2 6 1.00 * st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: 3 4 1.00 * st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: 1 2 0.25 sub d15, d5, d16 # CHECK-NEXT: 1 2 0.25 sub v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 3 0.25 sudot v0.2s, v0.8b, v0.4b[2] @@ -2137,22 +2137,22 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 suqadd v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 suqadd v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 suqadd v0.8h, v0.8h -# CHECK-NEXT: 2 2 1.00 tbl v0.16b, { v0.16b }, v0.16b -# CHECK-NEXT: 2 2 1.00 tbl v0.16b, { v0.16b, v1.16b }, v0.16b -# CHECK-NEXT: 2 4 1.00 tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -# CHECK-NEXT: 3 4 1.50 tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -# CHECK-NEXT: 2 2 1.00 tbl v0.8b, { v0.16b }, v0.8b -# CHECK-NEXT: 2 2 1.00 tbl v0.8b, { v0.16b, v1.16b }, v0.8b -# CHECK-NEXT: 2 4 1.00 tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -# CHECK-NEXT: 3 4 1.50 tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -# CHECK-NEXT: 2 2 1.00 tbx v0.16b, { v0.16b }, v0.16b -# CHECK-NEXT: 2 4 1.00 tbx v0.16b, { v0.16b, v1.16b }, v0.16b -# CHECK-NEXT: 3 6 1.50 tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -# CHECK-NEXT: 5 6 2.50 tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -# CHECK-NEXT: 2 2 1.00 tbx v0.8b, { v0.16b }, v0.8b -# CHECK-NEXT: 2 4 1.00 tbx v0.8b, { v0.16b, v1.16b }, v0.8b -# CHECK-NEXT: 3 6 1.50 tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -# CHECK-NEXT: 5 6 2.50 tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b +# CHECK-NEXT: 1 2 0.50 tbl v0.16b, { v0.16b }, v0.16b +# CHECK-NEXT: 1 2 0.50 tbl v0.16b, { v0.16b, v1.16b }, v0.16b +# CHECK-NEXT: 1 4 1.00 tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b +# CHECK-NEXT: 1 4 1.50 tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b +# CHECK-NEXT: 1 2 0.50 tbl v0.8b, { v0.16b }, v0.8b +# CHECK-NEXT: 1 2 0.50 tbl v0.8b, { v0.16b, v1.16b }, v0.8b +# CHECK-NEXT: 1 4 1.00 tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b +# CHECK-NEXT: 1 4 1.50 tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b +# CHECK-NEXT: 1 2 0.50 tbx v0.16b, { v0.16b }, v0.16b +# CHECK-NEXT: 1 4 1.00 tbx v0.16b, { v0.16b, v1.16b }, v0.16b +# CHECK-NEXT: 1 6 1.50 tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b +# CHECK-NEXT: 1 6 2.50 tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b +# CHECK-NEXT: 1 2 0.50 tbx v0.8b, { v0.16b }, v0.8b +# CHECK-NEXT: 1 4 1.00 tbx v0.8b, { v0.16b, v1.16b }, v0.8b +# CHECK-NEXT: 1 6 1.50 tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b +# CHECK-NEXT: 1 6 2.50 tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b # CHECK-NEXT: 1 2 0.25 trn1 v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 trn1 v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 trn1 v0.2s, v0.2s, v0.2s @@ -2201,9 +2201,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 uaddlp v0.8h, v0.16b # CHECK-NEXT: 1 2 0.50 uaddlv d0, v0.4s # CHECK-NEXT: 1 2 0.50 uaddlv s0, v0.4h -# CHECK-NEXT: 2 4 0.50 uaddlv s0, v0.8h -# CHECK-NEXT: 2 4 0.50 uaddlv h0, v0.8b -# CHECK-NEXT: 2 4 1.00 uaddlv h0, v0.16b +# CHECK-NEXT: 1 4 0.50 uaddlv s0, v0.8h +# CHECK-NEXT: 1 4 0.50 uaddlv h0, v0.8b +# CHECK-NEXT: 1 4 1.00 uaddlv h0, v0.16b # CHECK-NEXT: 1 2 0.25 uaddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: 1 2 0.25 uaddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: 1 2 0.25 uaddw v0.8h, v0.8h, v0.8b @@ -2212,16 +2212,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 uaddw2 v0.8h, v0.8h, v0.16b # CHECK-NEXT: 1 3 0.50 ucvtf d21, d14 # CHECK-NEXT: 1 3 0.50 ucvtf d21, d14, #64 -# CHECK-NEXT: 2 4 1.00 ucvtf s22, s13 -# CHECK-NEXT: 2 4 1.00 ucvtf s22, s13, #32 +# CHECK-NEXT: 1 3 0.50 ucvtf s22, s13 +# CHECK-NEXT: 1 3 0.50 ucvtf s22, s13, #32 # CHECK-NEXT: 1 3 0.50 ucvtf v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 ucvtf v0.2d, v0.2d, #3 # CHECK-NEXT: 1 3 0.50 ucvtf v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 ucvtf v0.2s, v0.2s, #3 -# CHECK-NEXT: 2 4 1.00 ucvtf v0.4h, v0.4h -# CHECK-NEXT: 2 4 1.00 ucvtf v0.4s, v0.4s -# CHECK-NEXT: 2 4 1.00 ucvtf v0.4s, v0.4s, #3 -# CHECK-NEXT: 4 6 1.00 ucvtf v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 ucvtf v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 ucvtf v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 1 6 2.00 ucvtf v0.8h, v0.8h # CHECK-NEXT: 1 3 0.25 udot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: 1 3 0.25 udot v0.2s, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.25 udot v0.4s, v0.16b, v0.16b @@ -2235,10 +2235,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 umaxp v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 umaxp v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 umaxp v0.8h, v0.8h, v0.8h -# CHECK-NEXT: 2 4 0.50 umaxv b0, v0.8b -# CHECK-NEXT: 2 4 1.00 umaxv b0, v0.16b +# CHECK-NEXT: 1 4 0.50 umaxv b0, v0.8b +# CHECK-NEXT: 1 4 1.00 umaxv b0, v0.16b # CHECK-NEXT: 1 2 0.50 umaxv h0, v0.4h -# CHECK-NEXT: 2 4 0.50 umaxv h0, v0.8h +# CHECK-NEXT: 1 4 0.50 umaxv h0, v0.8h # CHECK-NEXT: 1 2 0.50 umaxv s0, v0.4s # CHECK-NEXT: 1 2 0.25 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 umin v0.4h, v0.4h, v0.4h @@ -2246,10 +2246,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 uminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 uminp v0.8b, v0.8b, v0.8b -# CHECK-NEXT: 2 4 0.50 uminv b0, v0.8b -# CHECK-NEXT: 2 4 1.00 uminv b0, v0.16b +# CHECK-NEXT: 1 4 0.50 uminv b0, v0.8b +# CHECK-NEXT: 1 4 1.00 uminv b0, v0.16b # CHECK-NEXT: 1 2 0.50 uminv h0, v0.4h -# CHECK-NEXT: 2 4 0.50 uminv h0, v0.8h +# CHECK-NEXT: 1 4 0.50 uminv h0, v0.8h # CHECK-NEXT: 1 2 0.50 uminv s0, v0.4s # CHECK-NEXT: 1 4 0.50 umlal v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 umlal v0.4s, v0.4h, v0.4h @@ -2264,10 +2264,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 umlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 umlsl2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.25 ummla v0.4s, v0.16b, v0.16b -# CHECK-NEXT: 1 2 0.25 umov w0, v0.b[1] -# CHECK-NEXT: 1 2 0.25 umov w0, v0.h[1] -# CHECK-NEXT: 1 2 0.25 mov w0, v0.s[1] -# CHECK-NEXT: 1 2 0.25 mov x0, v0.d[1] +# CHECK-NEXT: 1 2 1.00 umov w0, v0.b[1] +# CHECK-NEXT: 1 2 1.00 umov w0, v0.h[1] +# CHECK-NEXT: 1 2 1.00 mov w0, v0.s[1] +# CHECK-NEXT: 1 2 1.00 mov x0, v0.d[1] # CHECK-NEXT: 1 3 0.50 umull v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 umull v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 3 0.50 umull v0.8h, v0.8b, v0.8b @@ -2282,9 +2282,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 uqrshl v0.8h, v0.8h, v0.8h -# CHECK-NEXT: 1 2 0.25 uqrshrn b10, h12, #5 -# CHECK-NEXT: 1 2 0.25 uqrshrn h12, s10, #14 -# CHECK-NEXT: 1 2 0.25 uqrshrn s10, d10, #25 +# CHECK-NEXT: 1 4 0.50 uqrshrn b10, h12, #5 +# CHECK-NEXT: 1 4 0.50 uqrshrn h12, s10, #14 +# CHECK-NEXT: 1 4 0.50 uqrshrn s10, d10, #25 # CHECK-NEXT: 1 4 0.50 uqrshrn v0.2s, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 uqrshrn v0.4h, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 uqrshrn v0.8b, v0.8h, #3 @@ -2308,9 +2308,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uqshl v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 0.50 uqshl v0.8h, v0.8h, #3 # CHECK-NEXT: 1 4 0.50 uqshl v0.8h, v0.8h, v0.8h -# CHECK-NEXT: 1 2 0.25 uqshrn b12, h10, #7 -# CHECK-NEXT: 1 2 0.25 uqshrn h10, s14, #5 -# CHECK-NEXT: 1 2 0.25 uqshrn s10, d12, #13 +# CHECK-NEXT: 1 4 0.50 uqshrn b12, h10, #7 +# CHECK-NEXT: 1 4 0.50 uqshrn h10, s14, #5 +# CHECK-NEXT: 1 4 0.50 uqshrn s10, d12, #13 # CHECK-NEXT: 1 4 0.50 uqshrn v0.2s, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 uqshrn v0.4h, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 uqshrn v0.8b, v0.8h, #3 @@ -2329,7 +2329,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uqxtn2 v0.4s, v0.2d # CHECK-NEXT: 1 4 0.50 uqxtn2 v0.8h, v0.4s # CHECK-NEXT: 1 3 0.50 urecpe v0.2s, v0.2s -# CHECK-NEXT: 1 4 0.50 urecpe v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 urecpe v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 urhadd v0.8h, v0.8h, v0.8h @@ -2338,7 +2338,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 0.50 urshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 urshl v0.8h, v0.8h, v0.8h -# CHECK-NEXT: 1 2 0.25 urshr d20, d23, #31 +# CHECK-NEXT: 1 4 0.50 urshr d20, d23, #31 # CHECK-NEXT: 1 4 0.50 urshr v0.16b, v0.16b, #3 # CHECK-NEXT: 1 4 0.50 urshr v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 urshr v0.2s, v0.2s, #3 @@ -2347,8 +2347,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 urshr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 0.50 urshr v0.8h, v0.8h, #3 # CHECK-NEXT: 1 3 0.50 ursqrte v0.2s, v0.2s -# CHECK-NEXT: 1 4 0.50 ursqrte v0.4s, v0.4s -# CHECK-NEXT: 1 2 0.25 ursra d18, d10, #13 +# CHECK-NEXT: 1 4 1.00 ursqrte v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 ursra d18, d10, #13 # CHECK-NEXT: 1 4 0.50 ursra v0.16b, v0.16b, #3 # CHECK-NEXT: 1 4 0.50 ursra v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 ursra v0.2s, v0.2s, #3 @@ -2366,7 +2366,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ushll v0.4s, v0.4h, #3 # CHECK-NEXT: 1 2 0.50 ushll2 v0.8h, v0.16b, #3 -# CHECK-NEXT: 1 2 0.25 ushr d10, d17, #18 +# CHECK-NEXT: 1 2 0.50 ushr d10, d17, #18 # CHECK-NEXT: 1 2 0.50 ushr v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 ushr v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 0.50 ushr v0.2s, v0.2s, #3 @@ -2375,11 +2375,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.50 ushr v0.8h, v0.8h, #3 # CHECK-NEXT: 1 3 0.25 usmmla v0.4s, v0.16b, v0.16b -# CHECK-NEXT: 1 2 0.25 smov w0, v0.b[1] -# CHECK-NEXT: 1 2 0.25 smov w0, v0.h[1] -# CHECK-NEXT: 1 2 0.25 smov x0, v0.b[1] -# CHECK-NEXT: 1 2 0.25 smov x0, v0.h[1] -# CHECK-NEXT: 1 2 0.25 smov x0, v0.s[1] +# CHECK-NEXT: 1 2 1.00 smov w0, v0.b[1] +# CHECK-NEXT: 1 2 1.00 smov w0, v0.h[1] +# CHECK-NEXT: 1 2 1.00 smov x0, v0.b[1] +# CHECK-NEXT: 1 2 1.00 smov x0, v0.h[1] +# CHECK-NEXT: 1 2 1.00 smov x0, v0.s[1] # CHECK-NEXT: 1 2 0.25 usqadd b19, b14 # CHECK-NEXT: 1 2 0.25 usqadd d18, d22 # CHECK-NEXT: 1 2 0.25 usqadd h20, h15 @@ -2391,7 +2391,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 usqadd v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 usqadd v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 usqadd v0.8h, v0.8h -# CHECK-NEXT: 1 2 0.25 usra d20, d13, #61 +# CHECK-NEXT: 1 4 0.50 usra d20, d13, #61 # CHECK-NEXT: 1 4 0.50 usra v0.16b, v0.16b, #3 # CHECK-NEXT: 1 4 0.50 usra v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 usra v0.2s, v0.2s, #3 @@ -2468,7 +2468,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] -# CHECK-NEXT: - - - - - - - 26.67 49.17 49.17 18.75 7.75 7.75 7.75 431.00 356.50 385.50 311.00 +# CHECK-NEXT: - - - - - - - 30.67 58.67 58.67 18.75 7.75 7.75 7.75 450.75 368.25 402.75 320.25 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] Instructions: @@ -2492,8 +2492,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 addv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 addv h0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 addv h0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 addv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 addv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 addv b0, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 addv b0, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesd v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aese v0.16b, v0.16b @@ -2501,8 +2501,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesmc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvt h0, s0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - bfcvtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - bfcvtn2 v0.8h, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.8h @@ -2618,86 +2618,86 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt v0.4s, v0.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas h12, h13 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtas v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau h12, h13 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtau v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtl v0.2d, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtl v0.4s, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtl2 v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtl2 v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms s22, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms h22, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms h22, h13 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtms v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu h12, h13 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtmu v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtn v0.2s, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtn v0.4h, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtn2 v0.4s, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtn2 v0.8h, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns s22, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns h22, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns h22, h13 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtns v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu h12, h13 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtnu v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps s22, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps h22, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps h22, h13 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtps v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu h12, h13 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtpu v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn s22, d13 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn v0.2s, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn2 v0.4s, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs d21, d12, #1 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs s21, s12, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs h21, h14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs h21, h12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs s21, s12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs h21, h14 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs h21, h12, #1 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2s, v0.2s @@ -2705,13 +2705,13 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu d21, d12, #1 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu s21, s12, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu h12, h13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu h21, h12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu s21, s12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu h21, h12, #1 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2s, v0.2s @@ -2719,12 +2719,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - 7.00 - fdiv v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.50 - 2.50 - fdiv v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 2.50 - 2.50 - fdiv v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 4.50 - 4.50 - fdiv v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 6.50 - 6.50 - fdiv v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.4s, v0.4s, v0.4s @@ -2794,11 +2794,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe d13, d13 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe s19, s14 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frecpe v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frecpe v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frecpe v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frecpe v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - frecpe v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps d22, d30, d21 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps s21, s16, s13 @@ -2808,52 +2808,52 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frinta v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinta v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinta v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinta v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - frinta v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frinti v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frinti v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinti v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinti v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinti v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - frinti v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintm v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintm v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintm v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintm v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintm v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - frintm v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintn v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintn v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintn v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintn v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintn v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - frintn v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintp v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintp v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintp v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintp v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintp v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - frintp v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintx v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintx v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintx v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintx v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintx v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - frintx v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintz v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintz v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintz v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintz v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - frintz v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte d21, d12 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte s22, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - frsqrte v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts d8, d22, d18 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts s21, s5, s12 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 7.50 - 7.50 - fsqrt v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.50 - 2.50 - fsqrt v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 5.50 - 5.50 - fsqrt v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 4.50 - 4.50 - fsqrt v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 6.50 - 6.50 - fsqrt v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ld1 { v0.16b }, [x0] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ld1 { v0.8h, v1.8h }, [sp], #32 @@ -2872,29 +2872,29 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1r { v0.4s }, [x15] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ld1r { v0.2d }, [x15], x16 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld2 { v0.16b, v1.16b }, [x0] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2 { v0.8b, v1.8b }, [x0], #16 -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15], x8 -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2r { v0.8b, v1.8b }, [x0] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2r { v0.4h, v1.4h }, [x0], #4 -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2r { v0.2s, v1.2s }, [sp] -# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2r { v0.1d, v1.1d }, [sp], x8 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ld2 { v0.8b, v1.8b }, [x0], #16 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15], x8 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3 { v0.s, v1.s, v2.s }[3], [sp] -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x15] -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3r { v0.2s, v1.2s, v2.2s }, [x0] -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 -# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] -# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 -# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] -# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] -# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 -# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld3 { v0.s, v1.s, v2.s }[3], [sp] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] +# CHECK-NEXT: - - - - - - - 2.00 2.00 2.00 0.25 0.25 0.25 0.25 1.50 1.50 1.50 1.50 ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - mla v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - mls v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov b0, v0.b[15] @@ -3003,8 +3003,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.8h, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 saddlv d0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 saddlv s0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 saddlv s0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 saddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 saddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 saddlv h0, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 saddlv h0, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.4s, v0.4s, v0.4h @@ -3014,8 +3014,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw2 v0.8h, v0.8h, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf d21, d12 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf d21, d12, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf s22, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf s22, s13, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf s22, s13, #32 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2s, v0.2s @@ -3023,13 +3023,13 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.2s, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shl d7, d10, #12 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 shl d7, d10, #12 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 shl v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 shl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 shl v0.4h, v0.4h, #3 @@ -3054,7 +3054,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sli d10, d14, #12 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sli d10, d14, #12 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.2s, v0.2s, #3 @@ -3068,10 +3068,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 smaxv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 smaxv b0, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 smaxv b0, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 smaxv h0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 smaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 smaxv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 smaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.4s, v0.4s, v0.4s @@ -3079,10 +3079,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 sminv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sminv b0, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 sminv b0, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sminv h0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 sminv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sminv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v0.4s, v0.4h, v0.4h @@ -3140,9 +3140,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull d1, s1, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdmull d15, s22, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull d15, s22, s12 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull s1, h1, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdmull s12, h22, h12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull s12, h22, h12 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v0.2d, v0.4s, v0.4s @@ -3193,18 +3193,18 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrn b10, h13, #2 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrn h15, s10, #6 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrn s15, d12, #9 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn b10, h13, #2 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn h15, s10, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn s15, d12, #9 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.2s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.4h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.8b, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrun b17, h10, #6 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrun h10, s13, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrun s22, d16, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun b17, h10, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun h10, s13, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun s22, d16, #31 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.2s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.4h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.8b, v0.8h, #3 @@ -3238,24 +3238,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrn b10, h15, #5 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrn h17, s10, #4 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrn s18, d10, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn b10, h15, #5 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn h17, s10, #4 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn s18, d10, #31 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.2s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.4h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.8b, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun b15, h10, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun h20, s14, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun s10, d15, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun b15, h10, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun h20, s14, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun s10, d15, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun2 v0.8h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub s20, s10, s7 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.4s, v0.4s, v0.4s @@ -3281,7 +3281,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sri d10, d12, #14 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri d10, d12, #14 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.2s, v0.2s, #3 @@ -3293,7 +3293,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srshr d19, d18, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr d19, d18, #7 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.2s, v0.2s, #3 @@ -3301,7 +3301,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srsra d15, d11, #19 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra d15, d11, #19 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.2s, v0.2s, #3 @@ -3316,7 +3316,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshl v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshll v0.2d, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshll2 v0.4s, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshr d15, d16, #12 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr d15, d16, #12 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.2s, v0.2s, #3 @@ -3324,7 +3324,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssra d18, d12, #21 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra d18, d12, #21 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.2s, v0.2s, #3 @@ -3362,9 +3362,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 1.50 1.50 0.25 0.25 0.25 0.25 1.50 1.50 - - st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 - - st3 { v0.h, v1.h, v2.h }[7], [x15], #6 -# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -# CHECK-NEXT: - - - - - - - - 3.00 3.00 0.25 0.25 0.25 0.25 3.00 3.00 - - st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: - - - - - - - - 3.00 3.00 - - - - 3.00 3.00 - - st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] +# CHECK-NEXT: - - - - - - - - 6.00 6.00 0.25 0.25 0.25 0.25 6.00 6.00 - - st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] # CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 - - st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub d15, d5, d16 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub v0.2d, v0.2d, v0.2d @@ -3381,19 +3381,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b, v1.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.16b, { v0.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.16b, { v0.16b, v1.16b }, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 1.50 1.50 - - tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b, v1.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.8b, { v0.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.8b, { v0.16b, v1.16b }, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 1.50 1.50 - - tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbx v0.16b, { v0.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - tbx v0.16b, { v0.16b }, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbx v0.16b, { v0.16b, v1.16b }, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 1.50 1.50 - - tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 2.50 2.50 - - tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbx v0.8b, { v0.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - tbx v0.8b, { v0.16b }, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbx v0.8b, { v0.16b, v1.16b }, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 1.50 1.50 - - tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 2.50 2.50 - - tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b @@ -3445,8 +3445,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.8h, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uaddlv d0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uaddlv s0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uaddlv s0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uaddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uaddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uaddlv h0, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 uaddlv h0, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.4s, v0.4s, v0.4h @@ -3456,8 +3456,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw2 v0.8h, v0.8h, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf s22, s13 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf s22, s13, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf s22, s13, #32 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2s, v0.2s @@ -3465,7 +3465,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.2s, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.4s, v0.16b, v0.16b @@ -3479,10 +3479,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 umaxv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 umaxv b0, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 umaxv b0, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 umaxv h0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 umaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 umaxv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 umaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin v0.4h, v0.4h, v0.4h @@ -3490,10 +3490,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uminv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uminv b0, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 uminv b0, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uminv h0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uminv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uminv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.4s, v0.4h, v0.4h @@ -3508,10 +3508,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ummla v0.4s, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umov w0, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umov w0, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov w0, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov x0, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 umov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 umov w0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 mov w0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 mov x0, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umull v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umull v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umull v0.8h, v0.8b, v0.8b @@ -3526,9 +3526,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshrn b10, h12, #5 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshrn h12, s10, #14 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshrn s10, d10, #25 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn b10, h12, #5 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn h12, s10, #14 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn s10, d10, #25 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.2s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.4h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.8b, v0.8h, #3 @@ -3552,9 +3552,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8h, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn b12, h10, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn h10, s14, #5 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn s10, d12, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn b12, h10, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn h10, s14, #5 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn s10, d12, #13 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.2s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.4h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.8b, v0.8h, #3 @@ -3573,7 +3573,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.4s, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.8h, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - urecpe v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - urecpe v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - urecpe v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v0.8h, v0.8h, v0.8h @@ -3582,7 +3582,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshl v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urshr d20, d23, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr d20, d23, #31 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.2s, v0.2s, #3 @@ -3591,8 +3591,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.8h, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ursqrte v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ursqrte v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ursra d18, d10, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - ursqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra d18, d10, #13 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.2s, v0.2s, #3 @@ -3610,7 +3610,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushll v0.4s, v0.4h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushll2 v0.8h, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushr d10, d17, #18 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr d10, d17, #18 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.2s, v0.2s, #3 @@ -3619,11 +3619,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.8h, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usmmla v0.4s, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov w0, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov w0, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov x0, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov x0, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov x0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 smov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 smov w0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 smov x0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 smov x0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 smov x0, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd b19, b14 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd d18, d22 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd h20, h15 @@ -3635,7 +3635,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usra d20, d13, #61 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra d20, d13, #61 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.2s, v0.2s, #3 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-scheduling-info.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-scheduling-info.s new file mode 100644 index 0000000000000..9097ec650f2c0 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-scheduling-info.s @@ -0,0 +1,7588 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v1 -scheduling-info < %s | FileCheck %s + + .text + .file "V1-scheduling-info.s" + .globl test + .p2align 4 + .type test,@function +test: + .cfi_startproc + abs D15, D11 /* ABS , \\ ASIMD arith, basic \\ 1 2 2 4.0 V1UnitV */ + abs V25.2S, V25.2S // ABS ., . \\ ASIMD arith, basic \\ 1 2 2 4.0 V1UnitV + abs Z26.B, P6/M, Z27.B // ABS ., /M, . \\ Arithmetic, basic \\ 1 2 2 2.0 V1UnitV01 + adc W13, W6, W4 // ADC , , \\ ALU, basic \\ 1 1 1 4.0 V1UnitI + adc X8, X12, X10 // ADC , , \\ ALU, basic \\ 1 1 1 4.0 V1UnitI + adcs W29, W7, W30 // ADCS , , \\ ALU, basic, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adcs X11, X3, X5 // ADCS , , \\ ALU, basic, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + add WSP, WSP, W10 // ADD , , \\ ALU, basic, unconditional, no flagset \\ 1 1 1 4.0 V1UnitI + add WSP, WSP, W2, UXTB // ADD , , , \\ ALU, basic, unconditional, no flagset \\ 1 1 1 4.0 V1UnitI + add WSP, WSP, W13, UXTH #4 // ADD , , , # \\ ALU, basic, unconditional, no flagset \\ 1 1 1 4.0 V1UnitI + add WSP, WSP, W13, LSL #4 // ADD , , , LSL # \\ Arithmetic, LSL shift, shift <= 4 \\ 1 1 1 4.0 V1UnitI + add X22, X2, X27 // ADD , , X \\ ALU, basic \\ 1 1 1 4.0 V1UnitI + add X25, X9, W25, UXTB // ADD , , , \\ ALU, basic \\ 1 1 1 4.0 V1UnitI + add X4, X28, W3, UXTB #3 // ADD , , , # \\ ALU, extend and shift \\ 1 2 2 2.0 V1UnitM + add X0, X28, X26, LSL #3 // ADD , , X, LSL # \\ Arithmetic, LSL shift, shift <= 4 \\ 1 1 1 4.0 V1UnitI + add WSP, WSP, #3765 // ADD , , # \\ ALU, basic \\ 1 1 1 4.0 V1UnitI + add WSP, WSP, #3547, LSL #12 // ADD , , #, \\ ALU, basic \\ 1 1 1 4.0 V1UnitI + add X7, X30, #803 // ADD , , # \\ ALU, basic \\ 1 1 1 4.0 V1UnitI + add X7, X2, #319, LSL #12 // ADD , , #, \\ ALU, basic \\ 1 1 1 4.0 V1UnitI + add Z13.D, Z13.D, #245 // ADD ., ., # \\ Arithmetic, basic \\ 1 2 2 2.0 V1UnitV01 + add Z16.D, Z16.D, #233, LSL #8 // ADD ., ., #, \\ Arithmetic, basic \\ 1 2 2 2.0 V1UnitV01 + add W3, W2, W21, LSL #3 // ADD , , , LSL # \\ Arithmetic, LSL shift by immed, shift <= 4, unconditional, no flagset \\ 1 1 1 4.0 V1UnitI + add W6, W21, W17, LSL #15 // ADD , , , LSL # \\ Arithmetic, LSR/ASR/ROR shift by immed or LSL shift by immed > 4, unconditional \\ 1 2 2 2.0 V1UnitM + add W28, W30, W19, ASR #30 // ADD , , , # \\ Arithmetic, LSR/ASR/ROR shift by immed or LSL shift by immed > 4, unconditional \\ 1 2 2 2.0 V1UnitM + add X8, X3, X28, LSL #3 // ADD , , , LSL # \\ Arithmetic, LSL shift, shift <= 4 \\ 1 1 1 4.0 V1UnitI + add X12, X13, X0, LSL #44 // ADD , , , LSL # \\ Arithmetic, LSR/ASR/ROR shift or LSL shift > 4 \\ 1 2 2 2.0 V1UnitM + add X5, X20, X28, LSR #16 // ADD , , , # \\ Arithmetic, LSR/ASR/ROR shift or LSL shift > 4 \\ 1 2 2 2.0 V1UnitM + add D0, D23, D21 // ADD , , \\ ASIMD arith, basic \\ 1 2 2 4.0 V1UnitV + add V19.4S, V24.4S, V15.4S // ADD ., ., . \\ ASIMD arith, basic \\ 1 2 2 4.0 V1UnitV + add Z29.D, P5/M, Z29.D, Z29.D // ADD ., /M, ., . \\ Arithmetic, basic \\ 1 2 2 2.0 V1UnitV01 + add Z10.H, Z22.H, Z13.H // ADD ., ., . \\ Arithmetic, basic \\ 1 2 2 2.0 V1UnitV01 + addhn V26.4H, V5.4S, V9.4S // ADDHN ., ., . \\ ASIMD arith, complex \\ 1 2 2 4.0 V1UnitV + addhn2 V1.16B, V19.8H, V6.8H // ADDHN2 ., ., . \\ ASIMD arith, complex \\ 1 2 2 4.0 V1UnitV + addp D1, V14.2D // ADDP , . \\ ASIMD arith, pair-wise \\ 1 2 2 4.0 V1UnitV + addp V7.2S, V1.2S, V2.2S // ADDP ., ., . \\ ASIMD arith, pair-wise \\ 1 2 2 4.0 V1UnitV + addpl X27, X6, #-6 // ADDPL , , # \\ Predicate counting scalar \\ 1 2 2 1.0 V1UnitM0 + adds W17, WSP, W25 // ADDS , , \\ ALU, basic, unconditional, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds W6, WSP, W15, UXTH // ADDS , , , \\ ALU, basic, unconditional, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds W22, WSP, W30, UXTB #2 // ADDS , , , # \\ ALU, basic, unconditional, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds W12, WSP, W29, LSL #4 // ADDS , , , LSL # \\ Arithmetic, LSL shift by immed, shift <= 4, unconditional, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds X14, X0, X10 // ADDS , , X \\ ALU, basic, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds X13, X23, W8, UXTB // ADDS , , , \\ ALU, basic, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds X4, X26, W28, UXTB #1 // ADDS , , , # \\ ALU, flagset, extend and shift \\ 2 2 2 2.0 V1UnitM,V1UnitFlg + adds X10, X3, X29, LSL #2 // ADDS , , X, LSL # \\ Arithmetic, flagset, LSL shift, shift <= 4 \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds W23, WSP, #502 // ADDS , , # \\ ALU, basic, unconditional, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds W2, WSP, #2980, LSL #12 // ADDS , , #, \\ Arithmetic, flagset, LSR/ASR/ROR shift by immed or LSL shift by immed > 4, unconditional \\ 2 2 2 2.0 V1UnitM,V1UnitFlg + adds X12, X4, #1345 // ADDS , , # \\ ALU, basic, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds X25, X18, #3037, LSL #12 // ADDS , , #, \\ Arithmetic, flagset, LSR/ASR/ROR shift or LSL shift > 4 \\ 2 2 2 2.0 V1UnitM,V1UnitFlg + adds W12, W13, W26 // ADDS , , \\ ALU, basic, unconditional, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds W0, W23, W20, LSL #0 // ADDS , , , LSL # \\ Arithmetic, LSL shift by immed, shift <= 4, unconditional, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds W13, W16, W12, LSL #28 // ADDS , , , LSL # \\ Arithmetic, flagset, LSR/ASR/ROR shift by immed or LSL shift by immed > 4, unconditional \\ 2 2 2 2.0 V1UnitM,V1UnitFlg + adds W20, W19, W16, ASR #0 // ADDS , , , # \\ Arithmetic, flagset, LSR/ASR/ROR shift by immed or LSL shift by immed > 4, unconditional \\ 2 2 2 2.0 V1UnitM,V1UnitFlg + adds X23, X12, X4 // ADDS , , \\ ALU, basic, flagset \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds X0, X13, X4, LSL #2 // ADDS , , , LSL # \\ Arithmetic, flagset, LSL shift, shift <= 4 \\ 2 1 1 3.0 V1UnitI,V1UnitFlg + adds X4, X7, X6, LSL #31 // ADDS , , , LSL # \\ Arithmetic, flagset, LSR/ASR/ROR shift or LSL shift > 4 \\ 2 2 2 2.0 V1UnitM,V1UnitFlg + adds X9, X8, X9, ASR #41 // ADDS , , , # \\ Arithmetic, flagset, LSR/ASR/ROR shift or LSL shift > 4 \\ 2 2 2 2.0 V1UnitM,V1UnitFlg + addv B0, V28.8B // ADDV B, .8B \\ ASIMD arith, reduce, 8B/8H \\ 1 4 4 2.0 V1UnitV13 + addv B1, V26.16B // ADDV B, .16B \\ ASIMD arith, reduce, 16B \\ 1 4 4 1.0 V1UnitV13[2] + addv H18, V13.4H // ADDV H, .4H \\ ASIMD arith, reduce, 4H/4S \\ 1 2 2 2.0 V1UnitV13 + addv H29, V17.8H // ADDV H, .8H \\ ASIMD arith, reduce, 8B/8H \\ 1 4 4 2.0 V1UnitV13 + addv S22, V18.4S // ADDV S, .4S \\ ASIMD arith, reduce, 4H/4S \\ 1 2 2 2.0 V1UnitV13 + addvl X1, X27, #-8 // ADDVL , , # \\ Predicate counting scalar \\ 1 2 2 1.0 V1UnitM0 + adr X3, test // ADR ,