blob: 55261abaad5312a4cc78385688ac4493ce397f0e [file] [edit]
# REQUIRES: asserts
# RUN: llc -mtriple=riscv64-linux-gnu -x=mir < %s \
# RUN: -debug-only=machine-scheduler -start-before=machine-scheduler 2>&1 \
# RUN: -mattr=+fusion-logic-imm-reg | FileCheck %s
# Test logic immediate-register fusion: ANDI/ORI/XORI + AND/OR/XOR
# This fusion combines a logic operation with an immediate followed by
# a logic operation on registers.
# CHECK: andi_and
# CHECK: Macro fuse: {{.*}}ANDI - AND
---
name: andi_and
tracksRegLiveness: true
body: |
bb.0.entry:
liveins: $x10, $x11
%1:gpr = COPY $x10
%2:gpr = COPY $x11
%3:gpr = ANDI %1, 255
%4:gpr = XORI %2, 3
%5:gpr = AND %3, %2
$x10 = COPY %4
$x11 = COPY %5
PseudoRET
...
# CHECK: ori_or
# CHECK: Macro fuse: {{.*}}ORI - OR
---
name: ori_or
tracksRegLiveness: true
body: |
bb.0.entry:
liveins: $x10, $x11
%1:gpr = COPY $x10
%2:gpr = COPY $x11
%3:gpr = ORI %1, 15
%4:gpr = XORI %2, 3
%5:gpr = OR %3, %2
$x10 = COPY %4
$x11 = COPY %5
PseudoRET
...
# CHECK: xori_xor
# CHECK: Macro fuse: {{.*}}XORI - XOR
---
name: xori_xor
tracksRegLiveness: true
body: |
bb.0.entry:
liveins: $x10, $x11
%1:gpr = COPY $x10
%2:gpr = COPY $x11
%3:gpr = XORI %1, 15
%4:gpr = XORI %2, 3
%5:gpr = XOR %3, %2
$x10 = COPY %4
$x11 = COPY %5
PseudoRET
...