1fdef7952SGarvit Gupta# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2 2fdef7952SGarvit Gupta# REQUIRES: asserts 3fdef7952SGarvit Gupta# RUN: llc %s -o - -mtriple=riscv32 -mattr=+zcmp -target-abi ilp32 -run-pass=prologepilog \ 4fdef7952SGarvit Gupta# RUN: -simplify-mir -verify-machineinstrs | FileCheck %s 5fdef7952SGarvit Gupta 6fdef7952SGarvit Gupta--- | 7fdef7952SGarvit Gupta define hidden void @f(fp128 %a) local_unnamed_addr #0 { 8fdef7952SGarvit Gupta entry: 9fdef7952SGarvit Gupta %0 = bitcast fp128 %a to i128 10fdef7952SGarvit Gupta %and.i = lshr i128 %0, 112 11fdef7952SGarvit Gupta %1 = trunc i128 %and.i to i32 12fdef7952SGarvit Gupta %2 = and i32 %1, 32767 13fdef7952SGarvit Gupta %or.i = or i128 poison, 5192296858534827628530496329220096 14fdef7952SGarvit Gupta br label %if.end.i 15fdef7952SGarvit Gupta 16fdef7952SGarvit Gupta if.end.i: ; preds = %entry 17fdef7952SGarvit Gupta br i1 poison, label %exit, label %if.then12.i 18fdef7952SGarvit Gupta 19fdef7952SGarvit Gupta if.then12.i: ; preds = %if.end.i 20fdef7952SGarvit Gupta %sub13.i = sub nuw nsw i32 16495, %2 21fdef7952SGarvit Gupta %sh_prom.i = zext i32 %sub13.i to i128 22fdef7952SGarvit Gupta %shr14.i = lshr i128 %or.i, %sh_prom.i 23fdef7952SGarvit Gupta %conv15.i = trunc i128 %shr14.i to i32 24fdef7952SGarvit Gupta br label %exit 25fdef7952SGarvit Gupta 26fdef7952SGarvit Gupta exit: ; preds = %if.then12.i, %if.end.i 27fdef7952SGarvit Gupta %retval.0.i = phi i32 [ %conv15.i, %if.then12.i ], [ -1, %if.end.i ] 28fdef7952SGarvit Gupta ret void 29fdef7952SGarvit Gupta } 30fdef7952SGarvit Gupta... 31fdef7952SGarvit Gupta--- 32fdef7952SGarvit Guptaname: f 33fdef7952SGarvit Guptaalignment: 2 34fdef7952SGarvit GuptatracksRegLiveness: true 35fdef7952SGarvit GuptatracksDebugUserValues: true 36fdef7952SGarvit Guptaliveins: 37fdef7952SGarvit Gupta - { reg: '$x10' } 38fdef7952SGarvit GuptaframeInfo: 39fdef7952SGarvit Gupta maxAlignment: 1 40fdef7952SGarvit Gupta localFrameSize: 32 41fdef7952SGarvit Gupta savePoint: '%bb.2' 42fdef7952SGarvit Gupta restorePoint: '%bb.2' 43fdef7952SGarvit Guptastack: 44fdef7952SGarvit Gupta - { id: 0, size: 32, alignment: 1, local-offset: -32 } 45fdef7952SGarvit GuptamachineFunctionInfo: 46fdef7952SGarvit Gupta varArgsFrameIndex: 0 47fdef7952SGarvit Gupta varArgsSaveSize: 0 48fdef7952SGarvit Guptabody: | 49fdef7952SGarvit Gupta ; CHECK-LABEL: name: f 50fdef7952SGarvit Gupta ; CHECK: bb.0.entry: 51fdef7952SGarvit Gupta ; CHECK-NEXT: liveins: $x10 52fdef7952SGarvit Gupta ; CHECK-NEXT: {{ $}} 53fdef7952SGarvit Gupta ; CHECK-NEXT: renamable $x10 = ADDI $x0, -1 54fdef7952SGarvit Gupta ; CHECK-NEXT: {{ $}} 55fdef7952SGarvit Gupta ; CHECK-NEXT: bb.1.if.end.i: 56fdef7952SGarvit Gupta ; CHECK-NEXT: liveins: $x10 57fdef7952SGarvit Gupta ; CHECK-NEXT: {{ $}} 58fdef7952SGarvit Gupta ; CHECK-NEXT: BNE $x0, $x0, %bb.3 59fdef7952SGarvit Gupta ; CHECK-NEXT: PseudoBR %bb.2 60fdef7952SGarvit Gupta ; CHECK-NEXT: {{ $}} 61fdef7952SGarvit Gupta ; CHECK-NEXT: bb.2.if.then12.i: 62fdef7952SGarvit Gupta ; CHECK-NEXT: liveins: $x10 63fdef7952SGarvit Gupta ; CHECK-NEXT: {{ $}} 64fdef7952SGarvit Gupta ; CHECK-NEXT: $x2 = frame-setup ADDI $x2, -32 65fdef7952SGarvit Gupta ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 32 66fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 31 :: (store (s8) into %stack.0 + 31) 67fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 30 :: (store (s8) into %stack.0 + 30) 68fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 29 :: (store (s8) into %stack.0 + 29) 69fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 28 :: (store (s8) into %stack.0 + 28) 70fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 27 :: (store (s8) into %stack.0 + 27) 71fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 26 :: (store (s8) into %stack.0 + 26) 72fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 25 :: (store (s8) into %stack.0 + 25) 73fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 24 :: (store (s8) into %stack.0 + 24) 74fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 23 :: (store (s8) into %stack.0 + 23) 75fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 22 :: (store (s8) into %stack.0 + 22) 76fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 21 :: (store (s8) into %stack.0 + 21) 77fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 20 :: (store (s8) into %stack.0 + 20) 78fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 19 :: (store (s8) into %stack.0 + 19) 79fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 18 :: (store (s8) into %stack.0 + 18) 80fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 17 :: (store (s8) into %stack.0 + 17) 81fdef7952SGarvit Gupta ; CHECK-NEXT: SB $x0, $x2, 16 :: (store (s8) into %stack.0 + 16) 82fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x10, $x2, 0 :: (store (s8) into %stack.0) 83fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x10, $x2, 4 :: (store (s8) into %stack.0 + 4) 84fdef7952SGarvit Gupta ; CHECK-NEXT: renamable $x11 = SRLI renamable $x10, 24 85fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x11, $x2, 3 :: (store (s8) into %stack.0 + 3) 86fdef7952SGarvit Gupta ; CHECK-NEXT: renamable $x12 = SRLI renamable $x10, 16 87fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x12, $x2, 2 :: (store (s8) into %stack.0 + 2) 88fdef7952SGarvit Gupta ; CHECK-NEXT: renamable $x13 = SRLI renamable $x10, 8 89fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x13, $x2, 1 :: (store (s8) into %stack.0 + 1) 90fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x10, $x2, 8 :: (store (s8) into %stack.0 + 8) 91fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x11, $x2, 7 :: (store (s8) into %stack.0 + 7) 92fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x12, $x2, 6 :: (store (s8) into %stack.0 + 6) 93fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x13, $x2, 5 :: (store (s8) into %stack.0 + 5) 94fdef7952SGarvit Gupta ; CHECK-NEXT: SB killed renamable $x10, $x2, 12 :: (store (s8) into %stack.0 + 12) 95fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x11, $x2, 11 :: (store (s8) into %stack.0 + 11) 96fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x12, $x2, 10 :: (store (s8) into %stack.0 + 10) 97fdef7952SGarvit Gupta ; CHECK-NEXT: SB renamable $x13, $x2, 9 :: (store (s8) into %stack.0 + 9) 98fdef7952SGarvit Gupta ; CHECK-NEXT: SB killed renamable $x11, $x2, 15 :: (store (s8) into %stack.0 + 15) 99fdef7952SGarvit Gupta ; CHECK-NEXT: SB killed renamable $x12, $x2, 14 :: (store (s8) into %stack.0 + 14) 100fdef7952SGarvit Gupta ; CHECK-NEXT: SB killed renamable $x13, $x2, 13 :: (store (s8) into %stack.0 + 13) 101fdef7952SGarvit Gupta ; CHECK-NEXT: $x2 = frame-destroy ADDI $x2, 32 102*97982a8cSdlav-sc ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0 103fdef7952SGarvit Gupta ; CHECK-NEXT: {{ $}} 104fdef7952SGarvit Gupta ; CHECK-NEXT: bb.3.exit: 105fdef7952SGarvit Gupta ; CHECK-NEXT: PseudoRET 106fdef7952SGarvit Gupta bb.0.entry: 107fdef7952SGarvit Gupta liveins: $x10 108fdef7952SGarvit Gupta 109fdef7952SGarvit Gupta renamable $x10 = ADDI $x0, -1 110fdef7952SGarvit Gupta 111fdef7952SGarvit Gupta bb.1.if.end.i: 112fdef7952SGarvit Gupta liveins: $x10 113fdef7952SGarvit Gupta 114fdef7952SGarvit Gupta BNE $x0, $x0, %bb.3 115fdef7952SGarvit Gupta PseudoBR %bb.2 116fdef7952SGarvit Gupta 117fdef7952SGarvit Gupta bb.2.if.then12.i: 118fdef7952SGarvit Gupta liveins: $x10 119fdef7952SGarvit Gupta 120fdef7952SGarvit Gupta SB $x0, %stack.0, 31 :: (store (s8) into %stack.0 + 31) 121fdef7952SGarvit Gupta SB $x0, %stack.0, 30 :: (store (s8) into %stack.0 + 30) 122fdef7952SGarvit Gupta SB $x0, %stack.0, 29 :: (store (s8) into %stack.0 + 29) 123fdef7952SGarvit Gupta SB $x0, %stack.0, 28 :: (store (s8) into %stack.0 + 28) 124fdef7952SGarvit Gupta SB $x0, %stack.0, 27 :: (store (s8) into %stack.0 + 27) 125fdef7952SGarvit Gupta SB $x0, %stack.0, 26 :: (store (s8) into %stack.0 + 26) 126fdef7952SGarvit Gupta SB $x0, %stack.0, 25 :: (store (s8) into %stack.0 + 25) 127fdef7952SGarvit Gupta SB $x0, %stack.0, 24 :: (store (s8) into %stack.0 + 24) 128fdef7952SGarvit Gupta SB $x0, %stack.0, 23 :: (store (s8) into %stack.0 + 23) 129fdef7952SGarvit Gupta SB $x0, %stack.0, 22 :: (store (s8) into %stack.0 + 22) 130fdef7952SGarvit Gupta SB $x0, %stack.0, 21 :: (store (s8) into %stack.0 + 21) 131fdef7952SGarvit Gupta SB $x0, %stack.0, 20 :: (store (s8) into %stack.0 + 20) 132fdef7952SGarvit Gupta SB $x0, %stack.0, 19 :: (store (s8) into %stack.0 + 19) 133fdef7952SGarvit Gupta SB $x0, %stack.0, 18 :: (store (s8) into %stack.0 + 18) 134fdef7952SGarvit Gupta SB $x0, %stack.0, 17 :: (store (s8) into %stack.0 + 17) 135fdef7952SGarvit Gupta SB $x0, %stack.0, 16 :: (store (s8) into %stack.0 + 16) 136fdef7952SGarvit Gupta SB renamable $x10, %stack.0, 0 :: (store (s8) into %stack.0) 137fdef7952SGarvit Gupta SB renamable $x10, %stack.0, 4 :: (store (s8) into %stack.0 + 4) 138fdef7952SGarvit Gupta renamable $x11 = SRLI renamable $x10, 24 139fdef7952SGarvit Gupta SB renamable $x11, %stack.0, 3 :: (store (s8) into %stack.0 + 3) 140fdef7952SGarvit Gupta renamable $x12 = SRLI renamable $x10, 16 141fdef7952SGarvit Gupta SB renamable $x12, %stack.0, 2 :: (store (s8) into %stack.0 + 2) 142fdef7952SGarvit Gupta renamable $x13 = SRLI renamable $x10, 8 143fdef7952SGarvit Gupta SB renamable $x13, %stack.0, 1 :: (store (s8) into %stack.0 + 1) 144fdef7952SGarvit Gupta SB renamable $x10, %stack.0, 8 :: (store (s8) into %stack.0 + 8) 145fdef7952SGarvit Gupta SB renamable $x11, %stack.0, 7 :: (store (s8) into %stack.0 + 7) 146fdef7952SGarvit Gupta SB renamable $x12, %stack.0, 6 :: (store (s8) into %stack.0 + 6) 147fdef7952SGarvit Gupta SB renamable $x13, %stack.0, 5 :: (store (s8) into %stack.0 + 5) 148fdef7952SGarvit Gupta SB killed renamable $x10, %stack.0, 12 :: (store (s8) into %stack.0 + 12) 149fdef7952SGarvit Gupta SB renamable $x11, %stack.0, 11 :: (store (s8) into %stack.0 + 11) 150fdef7952SGarvit Gupta SB renamable $x12, %stack.0, 10 :: (store (s8) into %stack.0 + 10) 151fdef7952SGarvit Gupta SB renamable $x13, %stack.0, 9 :: (store (s8) into %stack.0 + 9) 152fdef7952SGarvit Gupta SB killed renamable $x11, %stack.0, 15 :: (store (s8) into %stack.0 + 15) 153fdef7952SGarvit Gupta SB killed renamable $x12, %stack.0, 14 :: (store (s8) into %stack.0 + 14) 154fdef7952SGarvit Gupta SB killed renamable $x13, %stack.0, 13 :: (store (s8) into %stack.0 + 13) 155fdef7952SGarvit Gupta 156fdef7952SGarvit Gupta bb.3.exit: 157fdef7952SGarvit Gupta PseudoRET 158fdef7952SGarvit Gupta 159fdef7952SGarvit Gupta... 160