xref: /llvm-project/llvm/test/CodeGen/RISCV/opt-w-instrs.mir (revision 3bcb1f2bdd5c70b2ac4aff3290996486d9ae0236)
1e353cd81SMin-Yih Hsu# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3
2*3bcb1f2bSCraig Topper# RUN: llc -mtriple=riscv64 -mattr='+d,+zfa,+v,+xtheadmempair' -verify-machineinstrs -run-pass=riscv-opt-w-instrs %s -o - | FileCheck %s
3e353cd81SMin-Yih Hsu
4e353cd81SMin-Yih Hsu---
5e353cd81SMin-Yih Hsuname:            fcvtmod_w_d
6e353cd81SMin-Yih HsutracksRegLiveness: true
7e353cd81SMin-Yih Hsubody:             |
8e353cd81SMin-Yih Hsu  bb.0.entry:
94c66180eSMin-Yih Hsu    liveins: $x10
10e353cd81SMin-Yih Hsu
11478ec633SMin-Yih Hsu    ; CHECK-LABEL: name: fcvtmod_w_d
12478ec633SMin-Yih Hsu    ; CHECK: liveins: $x10
13478ec633SMin-Yih Hsu    ; CHECK-NEXT: {{  $}}
14478ec633SMin-Yih Hsu    ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $x10
15478ec633SMin-Yih Hsu    ; CHECK-NEXT: [[FCVTMOD_W_D:%[0-9]+]]:gpr = nofpexcept FCVTMOD_W_D [[COPY]], 1
16478ec633SMin-Yih Hsu    ; CHECK-NEXT: $x10 = COPY [[FCVTMOD_W_D]]
17478ec633SMin-Yih Hsu    ; CHECK-NEXT: PseudoRET
18e353cd81SMin-Yih Hsu    %0:fpr64 = COPY $x10
19e353cd81SMin-Yih Hsu
204c66180eSMin-Yih Hsu    %1:gpr = nofpexcept FCVTMOD_W_D %0, 1
214c66180eSMin-Yih Hsu    %2:gpr = ADDIW %1, 0
224c66180eSMin-Yih Hsu    $x10 = COPY %2
23e353cd81SMin-Yih Hsu    PseudoRET
24e353cd81SMin-Yih Hsu...
254dd5d967SCraig Topper
264dd5d967SCraig Topper---
274dd5d967SCraig Toppername:            physreg
284dd5d967SCraig ToppertracksRegLiveness: true
294dd5d967SCraig Topperbody:             |
304dd5d967SCraig Topper  bb.0.entry:
314dd5d967SCraig Topper    liveins: $x10, $x11
324dd5d967SCraig Topper
33478ec633SMin-Yih Hsu    ; CHECK-LABEL: name: physreg
34478ec633SMin-Yih Hsu    ; CHECK: liveins: $x10, $x11
35478ec633SMin-Yih Hsu    ; CHECK-NEXT: {{  $}}
36478ec633SMin-Yih Hsu    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
37478ec633SMin-Yih Hsu    ; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[COPY]], 0
38478ec633SMin-Yih Hsu    ; CHECK-NEXT: $x10 = COPY [[ADDIW]]
39478ec633SMin-Yih Hsu    ; CHECK-NEXT: PseudoRET
404dd5d967SCraig Topper    %0:gpr = COPY $x10
414dd5d967SCraig Topper    %1:gpr = ADDIW %0, 0
424dd5d967SCraig Topper    $x10 = COPY %1
434dd5d967SCraig Topper    PseudoRET
444dd5d967SCraig Topper...
45478ec633SMin-Yih Hsu---
46478ec633SMin-Yih Hsu name:            vfirst
47478ec633SMin-Yih Hsu tracksRegLiveness: true
48478ec633SMin-Yih Hsu body:             |
49478ec633SMin-Yih Hsu   bb.0.entry:
50478ec633SMin-Yih Hsu     liveins: $x10, $v8
51478ec633SMin-Yih Hsu
52478ec633SMin-Yih Hsu    ; CHECK-LABEL: name: vfirst
53478ec633SMin-Yih Hsu    ; CHECK: liveins: $x10, $v8
54478ec633SMin-Yih Hsu    ; CHECK-NEXT: {{  $}}
55478ec633SMin-Yih Hsu    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8
56478ec633SMin-Yih Hsu    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gprnox0 = COPY $x10
57478ec633SMin-Yih Hsu    ; CHECK-NEXT: [[PseudoVFIRST_M_B1_:%[0-9]+]]:gpr = PseudoVFIRST_M_B1 [[COPY]], [[COPY1]], 0 /* e8 */
58478ec633SMin-Yih Hsu    ; CHECK-NEXT: $x11 = COPY [[PseudoVFIRST_M_B1_]]
59478ec633SMin-Yih Hsu    ; CHECK-NEXT: PseudoRET
60478ec633SMin-Yih Hsu     %0:vr = COPY $v8
61478ec633SMin-Yih Hsu     %1:gprnox0 = COPY $x10
62478ec633SMin-Yih Hsu
63478ec633SMin-Yih Hsu     %2:gpr = PseudoVFIRST_M_B1 %0:vr, %1:gprnox0, 0
64478ec633SMin-Yih Hsu     %3:gpr = ADDIW %2, 0
65478ec633SMin-Yih Hsu     $x11 = COPY %3
66478ec633SMin-Yih Hsu     PseudoRET
67478ec633SMin-Yih Hsu...
68478ec633SMin-Yih Hsu---
69478ec633SMin-Yih Hsu name:            vcpop
70478ec633SMin-Yih Hsu tracksRegLiveness: true
71478ec633SMin-Yih Hsu body:             |
72478ec633SMin-Yih Hsu   bb.0.entry:
73478ec633SMin-Yih Hsu     liveins: $x10, $v8
74478ec633SMin-Yih Hsu
75478ec633SMin-Yih Hsu    ; CHECK-LABEL: name: vcpop
76478ec633SMin-Yih Hsu    ; CHECK: liveins: $x10, $v8
77478ec633SMin-Yih Hsu    ; CHECK-NEXT: {{  $}}
78478ec633SMin-Yih Hsu    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8
79478ec633SMin-Yih Hsu    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gprnox0 = COPY $x10
80478ec633SMin-Yih Hsu    ; CHECK-NEXT: [[PseudoVCPOP_M_B1_:%[0-9]+]]:gpr = PseudoVCPOP_M_B1 [[COPY]], [[COPY1]], 0 /* e8 */
81478ec633SMin-Yih Hsu    ; CHECK-NEXT: $x11 = COPY [[PseudoVCPOP_M_B1_]]
82478ec633SMin-Yih Hsu    ; CHECK-NEXT: PseudoRET
83478ec633SMin-Yih Hsu     %0:vr = COPY $v8
84478ec633SMin-Yih Hsu     %1:gprnox0 = COPY $x10
85478ec633SMin-Yih Hsu
86478ec633SMin-Yih Hsu     %2:gpr = PseudoVCPOP_M_B1 %0:vr, %1:gprnox0, 0
87478ec633SMin-Yih Hsu     %3:gpr = ADDIW %2, 0
88478ec633SMin-Yih Hsu     $x11 = COPY %3
89478ec633SMin-Yih Hsu     PseudoRET
90478ec633SMin-Yih Hsu...
91*3bcb1f2bSCraig Topper---
92*3bcb1f2bSCraig Topper name:            th_lwd
93*3bcb1f2bSCraig Topper tracksRegLiveness: true
94*3bcb1f2bSCraig Topper body:             |
95*3bcb1f2bSCraig Topper   bb.0.entry:
96*3bcb1f2bSCraig Topper     liveins: $x10
97*3bcb1f2bSCraig Topper    ; CHECK-LABEL: name: th_lwd
98*3bcb1f2bSCraig Topper    ; CHECK: liveins: $x10
99*3bcb1f2bSCraig Topper    ; CHECK-NEXT: {{  $}}
100*3bcb1f2bSCraig Topper    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
101*3bcb1f2bSCraig Topper    ; CHECK-NEXT: early-clobber %1:gpr, early-clobber %2:gpr = TH_LWD [[COPY]], 2, 3
102*3bcb1f2bSCraig Topper    ; CHECK-NEXT: $x10 = COPY %1
103*3bcb1f2bSCraig Topper    ; CHECK-NEXT: $x11 = COPY %2
104*3bcb1f2bSCraig Topper    ; CHECK-NEXT: PseudoRET
105*3bcb1f2bSCraig Topper     %0:gpr = COPY $x10
106*3bcb1f2bSCraig Topper     early-clobber %1:gpr, early-clobber %2:gpr = TH_LWD %0, 2, 3
107*3bcb1f2bSCraig Topper     %3:gpr = ADDIW %1, 0
108*3bcb1f2bSCraig Topper     %4:gpr = ADDIW %2, 0
109*3bcb1f2bSCraig Topper     $x10 = COPY %3
110*3bcb1f2bSCraig Topper     $x11 = COPY %4
111*3bcb1f2bSCraig Topper     PseudoRET
112*3bcb1f2bSCraig Topper...
113*3bcb1f2bSCraig Topper
114