| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3 | 
 | # RUN: llc -mtriple=riscv64 -mattr='+d,+zfa,+v,+xtheadmempair' -verify-machineinstrs -run-pass=riscv-opt-w-instrs %s -o - | FileCheck %s | 
 |  | 
 | --- | 
 | name:            fcvtmod_w_d | 
 | tracksRegLiveness: true | 
 | body:             | | 
 |   bb.0.entry: | 
 |     liveins: $x10 | 
 |  | 
 |     ; CHECK-LABEL: name: fcvtmod_w_d | 
 |     ; CHECK: liveins: $x10 | 
 |     ; CHECK-NEXT: {{  $}} | 
 |     ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $x10 | 
 |     ; CHECK-NEXT: [[FCVTMOD_W_D:%[0-9]+]]:gpr = nofpexcept FCVTMOD_W_D [[COPY]], 1 | 
 |     ; CHECK-NEXT: $x10 = COPY [[FCVTMOD_W_D]] | 
 |     ; CHECK-NEXT: PseudoRET | 
 |     %0:fpr64 = COPY $x10 | 
 |  | 
 |     %1:gpr = nofpexcept FCVTMOD_W_D %0, 1 | 
 |     %2:gpr = ADDIW %1, 0 | 
 |     $x10 = COPY %2 | 
 |     PseudoRET | 
 | ... | 
 |  | 
 | --- | 
 | name:            physreg | 
 | tracksRegLiveness: true | 
 | body:             | | 
 |   bb.0.entry: | 
 |     liveins: $x10, $x11 | 
 |  | 
 |     ; CHECK-LABEL: name: physreg | 
 |     ; CHECK: liveins: $x10, $x11 | 
 |     ; CHECK-NEXT: {{  $}} | 
 |     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 | 
 |     ; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[COPY]], 0 | 
 |     ; CHECK-NEXT: $x10 = COPY [[ADDIW]] | 
 |     ; CHECK-NEXT: PseudoRET | 
 |     %0:gpr = COPY $x10 | 
 |     %1:gpr = ADDIW %0, 0 | 
 |     $x10 = COPY %1 | 
 |     PseudoRET | 
 | ... | 
 | --- | 
 |  name:            vfirst | 
 |  tracksRegLiveness: true | 
 |  body:             | | 
 |    bb.0.entry: | 
 |      liveins: $x10, $v8 | 
 |  | 
 |     ; CHECK-LABEL: name: vfirst | 
 |     ; CHECK: liveins: $x10, $v8 | 
 |     ; CHECK-NEXT: {{  $}} | 
 |     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8 | 
 |     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gprnox0 = COPY $x10 | 
 |     ; CHECK-NEXT: [[PseudoVFIRST_M_B1_:%[0-9]+]]:gpr = PseudoVFIRST_M_B1 [[COPY]], [[COPY1]], 0 /* e8 */ | 
 |     ; CHECK-NEXT: $x11 = COPY [[PseudoVFIRST_M_B1_]] | 
 |     ; CHECK-NEXT: PseudoRET | 
 |      %0:vr = COPY $v8 | 
 |      %1:gprnox0 = COPY $x10 | 
 |  | 
 |      %2:gpr = PseudoVFIRST_M_B1 %0:vr, %1:gprnox0, 0 | 
 |      %3:gpr = ADDIW %2, 0 | 
 |      $x11 = COPY %3 | 
 |      PseudoRET | 
 | ... | 
 | --- | 
 |  name:            vcpop | 
 |  tracksRegLiveness: true | 
 |  body:             | | 
 |    bb.0.entry: | 
 |      liveins: $x10, $v8 | 
 |  | 
 |     ; CHECK-LABEL: name: vcpop | 
 |     ; CHECK: liveins: $x10, $v8 | 
 |     ; CHECK-NEXT: {{  $}} | 
 |     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8 | 
 |     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gprnox0 = COPY $x10 | 
 |     ; CHECK-NEXT: [[PseudoVCPOP_M_B1_:%[0-9]+]]:gpr = PseudoVCPOP_M_B1 [[COPY]], [[COPY1]], 0 /* e8 */ | 
 |     ; CHECK-NEXT: $x11 = COPY [[PseudoVCPOP_M_B1_]] | 
 |     ; CHECK-NEXT: PseudoRET | 
 |      %0:vr = COPY $v8 | 
 |      %1:gprnox0 = COPY $x10 | 
 |  | 
 |      %2:gpr = PseudoVCPOP_M_B1 %0:vr, %1:gprnox0, 0 | 
 |      %3:gpr = ADDIW %2, 0 | 
 |      $x11 = COPY %3 | 
 |      PseudoRET | 
 | ... | 
 | --- | 
 |  name:            th_lwd | 
 |  tracksRegLiveness: true | 
 |  body:             | | 
 |    bb.0.entry: | 
 |      liveins: $x10 | 
 |     ; CHECK-LABEL: name: th_lwd | 
 |     ; CHECK: liveins: $x10 | 
 |     ; CHECK-NEXT: {{  $}} | 
 |     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 | 
 |     ; CHECK-NEXT: early-clobber %1:gpr, early-clobber %2:gpr = TH_LWD [[COPY]], 2, 3 | 
 |     ; CHECK-NEXT: $x10 = COPY %1 | 
 |     ; CHECK-NEXT: $x11 = COPY %2 | 
 |     ; CHECK-NEXT: PseudoRET | 
 |      %0:gpr = COPY $x10 | 
 |      early-clobber %1:gpr, early-clobber %2:gpr = TH_LWD %0, 2, 3 | 
 |      %3:gpr = ADDIW %1, 0 | 
 |      %4:gpr = ADDIW %2, 0 | 
 |      $x10 = COPY %3 | 
 |      $x11 = COPY %4 | 
 |      PseudoRET | 
 | ... | 
 |  |