xref: /llvm-project/llvm/test/CodeGen/PowerPC/macro-fusion.mir (revision e3c2694da98d9e6585b47cebfedce8473f679fff)
19b5e2b52SQiu Chaofan# REQUIRES: asserts
29b5e2b52SQiu Chaofan# RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr10 -x=mir < %s \
39b5e2b52SQiu Chaofan# RUN:   -debug-only=machine-scheduler -start-before=postmisched 2>&1 \
4*e3c2694dSQiu Chaofan# RUN:   -mattr=+fuse-zeromove,+fuse-cmp,+fuse-wideimm,+fuse-back2back \
59b5e2b52SQiu Chaofan# RUN:   | FileCheck %s
69b5e2b52SQiu Chaofan
79b5e2b52SQiu Chaofan# CHECK: add_mulld:%bb.0
89b5e2b52SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  MULLD - ADD8
99b5e2b52SQiu Chaofan---
109b5e2b52SQiu Chaofanname: add_mulld
119b5e2b52SQiu ChaofantracksRegLiveness: true
129b5e2b52SQiu Chaofanbody:             |
139b5e2b52SQiu Chaofan  bb.0.entry:
149b5e2b52SQiu Chaofan    liveins: $x3, $x4, $x5
159b5e2b52SQiu Chaofan    renamable $x4 = MULLD $x3, $x4
169b5e2b52SQiu Chaofan    renamable $x3 = ADD8 killed renamable $x4, $x5
179b5e2b52SQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $x3
189b5e2b52SQiu Chaofan...
199b5e2b52SQiu Chaofan
209b5e2b52SQiu Chaofan# CHECK: add_and:%bb.0
219b5e2b52SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  ADD8 - AND8
229b5e2b52SQiu Chaofan---
239b5e2b52SQiu Chaofanname: add_and
249b5e2b52SQiu ChaofantracksRegLiveness: true
259b5e2b52SQiu Chaofanbody:             |
269b5e2b52SQiu Chaofan  bb.0.entry:
279b5e2b52SQiu Chaofan    liveins: $x3, $x4, $x5
289b5e2b52SQiu Chaofan    renamable $x4 = ADD8 $x3, $x4
299b5e2b52SQiu Chaofan    renamable $x3 = AND8 killed renamable $x4, $x5
309b5e2b52SQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $x3
319b5e2b52SQiu Chaofan...
329b5e2b52SQiu Chaofan
339b5e2b52SQiu Chaofan# CHECK: xor_subf:%bb.0
349b5e2b52SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  XOR8 - SUBF8
359b5e2b52SQiu Chaofan---
369b5e2b52SQiu Chaofanname: xor_subf
379b5e2b52SQiu ChaofantracksRegLiveness: true
389b5e2b52SQiu Chaofanbody:             |
399b5e2b52SQiu Chaofan  bb.0.entry:
409b5e2b52SQiu Chaofan    liveins: $x3, $x4, $x5
419b5e2b52SQiu Chaofan    renamable $x4 = XOR8 $x3, $x4
429b5e2b52SQiu Chaofan    renamable $x3 = SUBF8 killed renamable $x4, $x5
439b5e2b52SQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $x3
449b5e2b52SQiu Chaofan...
459b5e2b52SQiu Chaofan
469b5e2b52SQiu Chaofan# CHECK: or_nand:%bb.0
479b5e2b52SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  OR8 - NAND8
489b5e2b52SQiu Chaofan---
499b5e2b52SQiu Chaofanname: or_nand
509b5e2b52SQiu ChaofantracksRegLiveness: true
519b5e2b52SQiu Chaofanbody:             |
529b5e2b52SQiu Chaofan  bb.0.entry:
539b5e2b52SQiu Chaofan    liveins: $x3, $x4, $x5
549b5e2b52SQiu Chaofan    renamable $x4 = OR8 $x3, $x4
559b5e2b52SQiu Chaofan    renamable $x3 = NAND8 killed renamable $x4, $x5
569b5e2b52SQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $x3
579b5e2b52SQiu Chaofan...
589b5e2b52SQiu Chaofan
599b5e2b52SQiu Chaofan# CHECK: vand_vand:%bb.0
609b5e2b52SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  VAND - VAND
619b5e2b52SQiu Chaofan---
629b5e2b52SQiu Chaofanname: vand_vand
639b5e2b52SQiu ChaofantracksRegLiveness: true
649b5e2b52SQiu Chaofanbody:             |
659b5e2b52SQiu Chaofan  bb.0.entry:
669b5e2b52SQiu Chaofan    liveins: $v2, $v3, $v4
679b5e2b52SQiu Chaofan    renamable $v2 = VAND $v3, $v2
689b5e2b52SQiu Chaofan    renamable $v2 = VAND killed renamable $v2, $v4
699b5e2b52SQiu Chaofan    BLR8 implicit $lr8, implicit $rm
709b5e2b52SQiu Chaofan...
719b5e2b52SQiu Chaofan
729b5e2b52SQiu Chaofan# CHECK: vadd_vadd:%bb.0
739b5e2b52SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  VADDUDM - VADDUDM
749b5e2b52SQiu Chaofan---
759b5e2b52SQiu Chaofanname: vadd_vadd
769b5e2b52SQiu ChaofantracksRegLiveness: true
779b5e2b52SQiu Chaofanbody:             |
789b5e2b52SQiu Chaofan  bb.0.entry:
799b5e2b52SQiu Chaofan    liveins: $v2, $v3, $v4
809b5e2b52SQiu Chaofan    renamable $v2 = VADDUDM $v3, $v2
819b5e2b52SQiu Chaofan    renamable $v2 = VADDUDM killed renamable $v2, $v4
829b5e2b52SQiu Chaofan    BLR8 implicit $lr8, implicit $rm
839b5e2b52SQiu Chaofan...
849b5e2b52SQiu Chaofan
859b5e2b52SQiu Chaofan# CHECK: sldi_add:%bb.0
869b5e2b52SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  RLDICR - ADD8
879b5e2b52SQiu Chaofan---
889b5e2b52SQiu Chaofanname: sldi_add
899b5e2b52SQiu ChaofantracksRegLiveness: true
909b5e2b52SQiu Chaofanbody:             |
919b5e2b52SQiu Chaofan  bb.0.entry:
929b5e2b52SQiu Chaofan    liveins: $x3, $x4, $x5
939b5e2b52SQiu Chaofan    renamable $x4 = RLDICR $x3, 3, 60
949b5e2b52SQiu Chaofan    renamable $x3 = ADD8 killed renamable $x4, $x5
959b5e2b52SQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $x3
969b5e2b52SQiu Chaofan...
9759f4b3d3SQiu Chaofan
9859f4b3d3SQiu Chaofan# CHECK: rldicl_xor:%bb.0
9959f4b3d3SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  RLDICL - XOR8
10059f4b3d3SQiu Chaofan---
10159f4b3d3SQiu Chaofanname: rldicl_xor
10259f4b3d3SQiu ChaofantracksRegLiveness: true
10359f4b3d3SQiu Chaofanbody:             |
10459f4b3d3SQiu Chaofan  bb.0.entry:
10559f4b3d3SQiu Chaofan    liveins: $x3, $x4, $x5
10659f4b3d3SQiu Chaofan    renamable $x4 = RLDICL $x3, 1, 0
10759f4b3d3SQiu Chaofan    renamable $x3 = XOR8 killed renamable $x4, $x5
10859f4b3d3SQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $x3
10959f4b3d3SQiu Chaofan...
11059f4b3d3SQiu Chaofan
11159f4b3d3SQiu Chaofan# CHECK: rldicr_xor:%bb.0
11259f4b3d3SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  RLDICR - XOR8
11359f4b3d3SQiu Chaofan---
11459f4b3d3SQiu Chaofanname: rldicr_xor
11559f4b3d3SQiu ChaofantracksRegLiveness: true
11659f4b3d3SQiu Chaofanbody:             |
11759f4b3d3SQiu Chaofan  bb.0.entry:
11859f4b3d3SQiu Chaofan    liveins: $x3, $x4, $x5
11959f4b3d3SQiu Chaofan    renamable $x4 = RLDICR $x3, 1, 63
12059f4b3d3SQiu Chaofan    renamable $x3 = XOR8 killed renamable $x4, $x5
12159f4b3d3SQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $x3
12259f4b3d3SQiu Chaofan...
12359f4b3d3SQiu Chaofan
12459f4b3d3SQiu Chaofan# CHECK: ori_oris:%bb.0
12559f4b3d3SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  ORI8 - ORIS8
12659f4b3d3SQiu Chaofan---
12759f4b3d3SQiu Chaofanname: ori_oris
12859f4b3d3SQiu ChaofantracksRegLiveness: true
12959f4b3d3SQiu Chaofanbody:             |
13059f4b3d3SQiu Chaofan  bb.0.entry:
13159f4b3d3SQiu Chaofan    liveins: $x3, $x4
13259f4b3d3SQiu Chaofan    renamable $x4 = ORI8 $x3, 63
13359f4b3d3SQiu Chaofan    renamable $x3 = ORIS8 killed renamable $x4, 20
13459f4b3d3SQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $x3
13559f4b3d3SQiu Chaofan...
13659f4b3d3SQiu Chaofan
13759f4b3d3SQiu Chaofan# CHECK: load_cmp:%bb.0
13859f4b3d3SQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  LD - CMPDI
13959f4b3d3SQiu Chaofan---
14059f4b3d3SQiu Chaofanname: load_cmp
14159f4b3d3SQiu ChaofantracksRegLiveness: true
14259f4b3d3SQiu Chaofanbody:             |
14359f4b3d3SQiu Chaofan  bb.0.entry:
14459f4b3d3SQiu Chaofan    liveins: $x3, $x4, $x5
14559f4b3d3SQiu Chaofan    renamable $x3 = LD 0, killed renamable $x3
14659f4b3d3SQiu Chaofan    renamable $cr0 = CMPDI killed renamable $x3, 0
14759f4b3d3SQiu Chaofan    renamable $x3 = ISEL8 killed renamable $x5, killed renamable $x4, renamable $cr0lt, implicit killed $cr0
14859f4b3d3SQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $x3
149*e3c2694dSQiu Chaofan
150*e3c2694dSQiu Chaofan# CHECK: back2back_1:%bb.0
151*e3c2694dSQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  VADDUBM - VSUBUBM
152*e3c2694dSQiu Chaofan---
153*e3c2694dSQiu Chaofanname: back2back_1
154*e3c2694dSQiu ChaofantracksRegLiveness: true
155*e3c2694dSQiu Chaofanbody:             |
156*e3c2694dSQiu Chaofan  bb.0.entry:
157*e3c2694dSQiu Chaofan    liveins: $v2, $v3, $v4
158*e3c2694dSQiu Chaofan    renamable $v2 = VADDUBM $v3, $v2
159*e3c2694dSQiu Chaofan    renamable $v2 = VSUBUBM killed renamable $v2, $v4
160*e3c2694dSQiu Chaofan    BLR8 implicit $lr8, implicit $rm
161*e3c2694dSQiu Chaofan
162*e3c2694dSQiu Chaofan# CHECK: back2back_2:%bb.0
163*e3c2694dSQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  XSABSDP - XSNEGDP
164*e3c2694dSQiu Chaofan---
165*e3c2694dSQiu Chaofanname: back2back_2
166*e3c2694dSQiu ChaofantracksRegLiveness: true
167*e3c2694dSQiu Chaofanbody:             |
168*e3c2694dSQiu Chaofan  bb.0.entry:
169*e3c2694dSQiu Chaofan    liveins: $f1, $f2
170*e3c2694dSQiu Chaofan    renamable $f2 = XSABSDP $f1, implicit $rm
171*e3c2694dSQiu Chaofan    renamable $f1 = XSNEGDP killed renamable $f2, implicit $rm
172*e3c2694dSQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $f1
173*e3c2694dSQiu Chaofan
174*e3c2694dSQiu Chaofan# CHECK: back2back_3:%bb.0
175*e3c2694dSQiu Chaofan# CHECK: Macro fuse: SU(0) - SU(1) /  VMAXFP - XVMINSP
176*e3c2694dSQiu Chaofan---
177*e3c2694dSQiu Chaofanname: back2back_3
178*e3c2694dSQiu ChaofantracksRegLiveness: true
179*e3c2694dSQiu Chaofanbody:             |
180*e3c2694dSQiu Chaofan  bb.0.entry:
181*e3c2694dSQiu Chaofan    liveins: $v2, $v3, $v4
182*e3c2694dSQiu Chaofan    renamable $v3 = VMAXFP $v2, $v3
183*e3c2694dSQiu Chaofan    renamable $v2 = XVMINSP killed renamable $v3, $v4, implicit $rm
184*e3c2694dSQiu Chaofan    BLR8 implicit $lr8, implicit $rm, implicit $v2
185