1f9c90886SWang Pengcheng# REQUIRES: asserts 2f9c90886SWang Pengcheng# RUN: llc -mtriple=riscv64-linux-gnu -x=mir < %s \ 3f9c90886SWang Pengcheng# RUN: -debug-only=machine-scheduler -start-before=machine-scheduler 2>&1 \ 4f9c90886SWang Pengcheng# RUN: -mattr=+lui-addi-fusion,+auipc-addi-fusion,+zexth-fusion,+zextw-fusion,+shifted-zextw-fusion,+ld-add-fusion \ 5f9c90886SWang Pengcheng# RUN: | FileCheck %s 6f9c90886SWang Pengcheng 7f9c90886SWang Pengcheng# CHECK: lui_addi:%bb.0 8f9c90886SWang Pengcheng# CHECK: Macro fuse: {{.*}}LUI - ADDI 9f9c90886SWang Pengcheng--- 10f9c90886SWang Pengchengname: lui_addi 11f9c90886SWang PengchengtracksRegLiveness: true 12f9c90886SWang Pengchengbody: | 13f9c90886SWang Pengcheng bb.0.entry: 14f9c90886SWang Pengcheng liveins: $x10 15f9c90886SWang Pengcheng %1:gpr = COPY $x10 16f9c90886SWang Pengcheng %2:gpr = LUI 1 17f9c90886SWang Pengcheng %3:gpr = XORI %1, 2 18f9c90886SWang Pengcheng %4:gpr = ADDI %2, 3 19f9c90886SWang Pengcheng $x10 = COPY %3 20f9c90886SWang Pengcheng $x11 = COPY %4 21f9c90886SWang Pengcheng PseudoRET 22f9c90886SWang Pengcheng... 23f9c90886SWang Pengcheng 24f9c90886SWang Pengcheng# CHECK: auipc_addi 25f9c90886SWang Pengcheng# CHECK: Macro fuse: {{.*}}AUIPC - ADDI 26f9c90886SWang Pengcheng--- 27f9c90886SWang Pengchengname: auipc_addi 28f9c90886SWang PengchengtracksRegLiveness: true 29f9c90886SWang Pengchengbody: | 30f9c90886SWang Pengcheng bb.0.entry: 31f9c90886SWang Pengcheng liveins: $x10 32f9c90886SWang Pengcheng %1:gpr = COPY $x10 33f9c90886SWang Pengcheng %2:gpr = AUIPC 1 34f9c90886SWang Pengcheng %3:gpr = XORI %1, 2 35f9c90886SWang Pengcheng %4:gpr = ADDI %2, 3 36f9c90886SWang Pengcheng $x10 = COPY %3 37f9c90886SWang Pengcheng $x11 = COPY %4 38f9c90886SWang Pengcheng PseudoRET 39f9c90886SWang Pengcheng... 40f9c90886SWang Pengcheng 41f9c90886SWang Pengcheng# CHECK: slli_srli_shifted_zext 42f9c90886SWang Pengcheng# CHECK: Macro fuse: {{.*}}SLLI - SRLI 43f9c90886SWang Pengcheng--- 44*59eebb40Swangpcname: slli_srli_shifted_zext 45f9c90886SWang PengchengtracksRegLiveness: true 46f9c90886SWang Pengchengbody: | 47f9c90886SWang Pengcheng bb.0.entry: 48f9c90886SWang Pengcheng liveins: $x10 49f9c90886SWang Pengcheng %1:gpr = COPY $x10 50f9c90886SWang Pengcheng %2:gpr = SLLI %1, 32 51f9c90886SWang Pengcheng %3:gpr = XORI %1, 3 52f9c90886SWang Pengcheng %4:gpr = SRLI %2, 4 53f9c90886SWang Pengcheng $x10 = COPY %3 54f9c90886SWang Pengcheng $x11 = COPY %4 55f9c90886SWang Pengcheng PseudoRET 56f9c90886SWang Pengcheng... 57f9c90886SWang Pengcheng 58f9c90886SWang Pengcheng# CHECK: slli_srli_zexth 59f9c90886SWang Pengcheng# CHECK: Macro fuse: {{.*}}SLLI - SRLI 60f9c90886SWang Pengcheng--- 61*59eebb40Swangpcname: slli_srli_zexth 62f9c90886SWang PengchengtracksRegLiveness: true 63f9c90886SWang Pengchengbody: | 64f9c90886SWang Pengcheng bb.0.entry: 65f9c90886SWang Pengcheng liveins: $x10 66f9c90886SWang Pengcheng %1:gpr = COPY $x10 67f9c90886SWang Pengcheng %2:gpr = SLLI %1, 48 68f9c90886SWang Pengcheng %3:gpr = XORI %1, 3 69f9c90886SWang Pengcheng %4:gpr = SRLI %2, 48 70f9c90886SWang Pengcheng $x10 = COPY %3 71f9c90886SWang Pengcheng $x11 = COPY %4 72f9c90886SWang Pengcheng PseudoRET 73f9c90886SWang Pengcheng... 74f9c90886SWang Pengcheng 75f9c90886SWang Pengcheng# CHECK: slli_srli_zextw 76f9c90886SWang Pengcheng# CHECK: Macro fuse: {{.*}}SLLI - SRLI 77f9c90886SWang Pengcheng--- 78*59eebb40Swangpcname: slli_srli_zextw 79f9c90886SWang PengchengtracksRegLiveness: true 80f9c90886SWang Pengchengbody: | 81f9c90886SWang Pengcheng bb.0.entry: 82f9c90886SWang Pengcheng liveins: $x10 83f9c90886SWang Pengcheng %1:gpr = COPY $x10 84f9c90886SWang Pengcheng %2:gpr = SLLI %1, 32 85f9c90886SWang Pengcheng %3:gpr = XORI %1, 3 86f9c90886SWang Pengcheng %4:gpr = SRLI %2, 32 87f9c90886SWang Pengcheng $x10 = COPY %3 88f9c90886SWang Pengcheng $x11 = COPY %4 89f9c90886SWang Pengcheng PseudoRET 90f9c90886SWang Pengcheng... 91f9c90886SWang Pengcheng 92f9c90886SWang Pengcheng# CHECK: slli_srli_no_fusion_0 93f9c90886SWang Pengcheng# CHECK-NOT: Macro fuse: {{.*}}SLLI - SRLI 94f9c90886SWang Pengcheng--- 95f9c90886SWang Pengchengname: slli_srli_no_fusion_0 96f9c90886SWang PengchengtracksRegLiveness: true 97f9c90886SWang Pengchengbody: | 98f9c90886SWang Pengcheng bb.0.entry: 99f9c90886SWang Pengcheng liveins: $x10 100f9c90886SWang Pengcheng %1:gpr = COPY $x10 101f9c90886SWang Pengcheng %2:gpr = SLLI %1, 32 102f9c90886SWang Pengcheng %3:gpr = XORI %1, 3 103f9c90886SWang Pengcheng %4:gpr = SRLI %2, 33 104f9c90886SWang Pengcheng $x10 = COPY %3 105f9c90886SWang Pengcheng $x11 = COPY %4 106f9c90886SWang Pengcheng PseudoRET 107f9c90886SWang Pengcheng... 108f9c90886SWang Pengcheng 109f9c90886SWang Pengcheng# CHECK: slli_srli_no_fusion_1 110f9c90886SWang Pengcheng# CHECK-NOT: Macro fuse: {{.*}}SLLI - SRLI 111f9c90886SWang Pengcheng--- 112f9c90886SWang Pengchengname: slli_srli_no_fusion_1 113f9c90886SWang PengchengtracksRegLiveness: true 114f9c90886SWang Pengchengbody: | 115f9c90886SWang Pengcheng bb.0.entry: 116f9c90886SWang Pengcheng liveins: $x10 117f9c90886SWang Pengcheng %1:gpr = COPY $x10 118f9c90886SWang Pengcheng %2:gpr = SLLI %1, 48 119f9c90886SWang Pengcheng %3:gpr = XORI %1, 3 120f9c90886SWang Pengcheng %4:gpr = SRLI %2, 4 121f9c90886SWang Pengcheng $x10 = COPY %3 122f9c90886SWang Pengcheng $x11 = COPY %4 123f9c90886SWang Pengcheng PseudoRET 124f9c90886SWang Pengcheng... 125f9c90886SWang Pengcheng 126f9c90886SWang Pengcheng# CHECK: slli_srli_no_fusion_2 127f9c90886SWang Pengcheng# CHECK-NOT: Macro fuse: {{.*}}SLLI - SRLI 128f9c90886SWang Pengcheng--- 129f9c90886SWang Pengchengname: slli_srli_no_fusion_2 130f9c90886SWang PengchengtracksRegLiveness: true 131f9c90886SWang Pengchengbody: | 132f9c90886SWang Pengcheng bb.0.entry: 133f9c90886SWang Pengcheng liveins: $x10 134f9c90886SWang Pengcheng %1:gpr = COPY $x10 135f9c90886SWang Pengcheng %2:gpr = SLLI %1, 31 136f9c90886SWang Pengcheng %3:gpr = XORI %1, 3 137f9c90886SWang Pengcheng %4:gpr = SRLI %2, 4 138f9c90886SWang Pengcheng $x10 = COPY %3 139f9c90886SWang Pengcheng $x11 = COPY %4 140f9c90886SWang Pengcheng PseudoRET 141f9c90886SWang Pengcheng... 142f9c90886SWang Pengcheng 143f9c90886SWang Pengcheng# CHECK: slli_srli_no_fusion_3 144f9c90886SWang Pengcheng# CHECK-NOT: Macro fuse: {{.*}}SLLI - SRLI 145f9c90886SWang Pengcheng--- 146f9c90886SWang Pengchengname: slli_srli_no_fusion_3 147f9c90886SWang PengchengtracksRegLiveness: true 148f9c90886SWang Pengchengbody: | 149f9c90886SWang Pengcheng bb.0.entry: 150f9c90886SWang Pengcheng liveins: $x10 151f9c90886SWang Pengcheng %1:gpr = COPY $x10 152f9c90886SWang Pengcheng %2:gpr = SLLI %1, 31 153f9c90886SWang Pengcheng %3:gpr = XORI %1, 3 154f9c90886SWang Pengcheng %4:gpr = SRLI %2, 48 155f9c90886SWang Pengcheng $x10 = COPY %3 156f9c90886SWang Pengcheng $x11 = COPY %4 157f9c90886SWang Pengcheng PseudoRET 158f9c90886SWang Pengcheng... 159f9c90886SWang Pengcheng 160f9c90886SWang Pengcheng# CHECK: ld_add 161f9c90886SWang Pengcheng# CHECK: Macro fuse: {{.*}}ADD - LD 162f9c90886SWang Pengcheng--- 163f9c90886SWang Pengchengname: ld_add 164f9c90886SWang PengchengtracksRegLiveness: true 165f9c90886SWang Pengchengbody: | 166f9c90886SWang Pengcheng bb.0.entry: 167f9c90886SWang Pengcheng liveins: $x10, $x11 168f9c90886SWang Pengcheng %1:gpr = COPY $x10 169f9c90886SWang Pengcheng %2:gpr = COPY $x11 170f9c90886SWang Pengcheng %3:gpr = ADD %1, %2 171f9c90886SWang Pengcheng %4:gpr = XORI %2, 3 172f9c90886SWang Pengcheng %5:gpr = LD %3, 0 173f9c90886SWang Pengcheng $x10 = COPY %4 174f9c90886SWang Pengcheng $x11 = COPY %5 175f9c90886SWang Pengcheng PseudoRET 176f9c90886SWang Pengcheng... 177