pr41750

Created Diff never expires
10 removals
156 lines
23 additions
171 lines
xgupta@archlinux ~/compiler/llvm-project/build/bin (main?) $ cat ~/Downloads/reproducer.mir
xgupta@archlinux ~/compiler/llvm-project/build/bin (main?) $ cat after-pass

--- |
--- |
; ModuleID = '/home/xgupta/Downloads/reproducer.mir'
source_filename = "/home/xgupta/Downloads/reproducer.mir"
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-none-linux-gnu"
define dso_local void @tc_main(i32 %segment_index, i32 %num_segments, i16* nocapture %scores, i8* nocapture readonly %arr_segments_ptr) local_unnamed_addr {
define dso_local void @tc_main(i32 %segment_index, i32 %num_segments, i16* nocapture %scores, i8* nocapture readonly %arr_segments_ptr) local_unnamed_addr {
entry:
entry:
br label %while.body
br label %while.body
while.body: ; preds = %if.end8, %entry
while.body: ; preds = %if.end8, %entry
%0 = bitcast i8* %arr_segments_ptr to i16*
%0 = bitcast i8* %arr_segments_ptr to i16*
%1 = load i16, i16* %0, align 2
%1 = load i16, i16* %0, align 2
%conv = sext i16 %1 to i32
%conv = sext i16 %1 to i32
%cmp = icmp sgt i16 %1, 0
%cmp = icmp sgt i16 %1, 0
br i1 %cmp, label %if.then, label %if.else
br i1 %cmp, label %if.then, label %if.else
if.then: ; preds = %while.body
if.then: ; preds = %while.body
%div = sdiv i32 65535, %conv
%div = sdiv i32 65535, %conv
%mul = shl nsw i32 %div, 3
%mul = shl nsw i32 %div, 3
br label %if.end8
br label %if.end8
if.else: ; preds = %while.body
if.else: ; preds = %while.body
%2 = trunc i32 %conv to i16
%2 = trunc i32 %conv to i16
%cmp2 = icmp slt i16 %2, 0
%cmp2 = icmp slt i16 %2, 0
br i1 %cmp2, label %if.then4, label %if.end8
br i1 %cmp2, label %if.then4, label %if.end8
if.then4: ; preds = %if.else
if.then4: ; preds = %if.else
%div6 = sdiv i32 65535, %conv
%div6 = sdiv i32 65535, %conv
%mul7 = shl nsw i32 %div6, 3
%mul7 = shl nsw i32 %div6, 3
br label %if.end8
br label %if.end8
if.end8: ; preds = %if.then4, %if.else, %if.then
if.end8: ; preds = %if.then4, %if.else, %if.then
%ye.0 = phi i32 [ 8, %if.then ], [ %mul7, %if.then4 ], [ 8, %if.else ]
%ye.0 = phi i32 [ 8, %if.then ], [ %mul7, %if.then4 ], [ 8, %if.else ]
%ys.0 = phi i32 [ %mul, %if.then ], [ 8, %if.then4 ], [ 8, %if.else ]
%ys.0 = phi i32 [ %mul, %if.then ], [ 8, %if.then4 ], [ 8, %if.else ]
%add = add nsw i32 %ys.0, %ye.0
%add = add nsw i32 %ys.0, %ye.0
%conv9 = trunc i32 %add to i16
%conv9 = trunc i32 %add to i16
store i16 %conv9, i16* %scores, align 2
store i16 %conv9, i16* %scores, align 2
br label %while.body
br label %while.body
}
}


...
...
---
---
name: tc_main
name: tc_main
alignment: 2
alignment: 2
exposesReturnsTwice: false
exposesReturnsTwice: false
legalized: false
legalized: false
regBankSelected: false
regBankSelected: false
selected: false
selected: false
failedISel: false
failedISel: false
tracksRegLiveness: true
tracksRegLiveness: true
hasWinCFI: false
hasWinCFI: false
registers:
callsEHReturn: false
callsUnwindInit: false
hasEHCatchret: false
hasEHScopes: false
hasEHFunclets: false
failsVerification: false
tracksDebugUserValues: false
registers:
- { id: 0, class: gpr32, preferred-register: '' }
- { id: 0, class: gpr32, preferred-register: '' }
- { id: 1, class: gpr32all, preferred-register: '' }
- { id: 1, class: gpr32all, preferred-register: '' }
- { id: 2, class: gpr32all, preferred-register: '' }
- { id: 2, class: gpr32all, preferred-register: '' }
- { id: 3, class: gpr32, preferred-register: '' }
- { id: 3, class: gpr32, preferred-register: '' }
- { id: 4, class: gpr32, preferred-register: '' }
- { id: 4, class: gpr32, preferred-register: '' }
- { id: 5, class: gpr32, preferred-register: '' }
- { id: 5, class: gpr32, preferred-register: '' }
- { id: 6, class: gpr32, preferred-register: '' }
- { id: 6, class: gpr32, preferred-register: '' }
- { id: 7, class: gpr64common, preferred-register: '' }
- { id: 7, class: gpr64common, preferred-register: '' }
- { id: 8, class: gpr64common, preferred-register: '' }
- { id: 8, class: gpr64common, preferred-register: '' }
- { id: 9, class: gpr32common, preferred-register: '' }
- { id: 9, class: gpr32common, preferred-register: '' }
- { id: 10, class: gpr32, preferred-register: '' }
- { id: 10, class: gpr32, preferred-register: '' }
- { id: 11, class: gpr32all, preferred-register: '' }
- { id: 11, class: gpr32all, preferred-register: '' }
- { id: 12, class: gpr32, preferred-register: '' }
- { id: 12, class: gpr32, preferred-register: '' }
- { id: 13, class: gpr32all, preferred-register: '' }
- { id: 13, class: gpr32all, preferred-register: '' }
- { id: 14, class: gpr32, preferred-register: '' }
- { id: 14, class: gpr32, preferred-register: '' }
- { id: 15, class: gpr32, preferred-register: '' }
- { id: 15, class: gpr32, preferred-register: '' }
- { id: 16, class: gpr32, preferred-register: '' }
- { id: 16, class: gpr32, preferred-register: '' }
- { id: 17, class: gpr32, preferred-register: '' }
- { id: 17, class: gpr32, preferred-register: '' }
- { id: 18, class: gpr32all, preferred-register: '' }
- { id: 18, class: gpr32all, preferred-register: '' }
- { id: 19, class: gpr32, preferred-register: '' }
- { id: 19, class: gpr32, preferred-register: '' }
- { id: 20, class: gpr32, preferred-register: '' }
- { id: 20, class: gpr32, preferred-register: '' }
- { id: 21, class: gpr32, preferred-register: '' }
- { id: 21, class: gpr32, preferred-register: '' }
- { id: 22, class: gpr32, preferred-register: '' }
- { id: 22, class: gpr32, preferred-register: '' }
- { id: 23, class: gpr32, preferred-register: '' }
- { id: 23, class: gpr32, preferred-register: '' }
liveins:
liveins:
- { reg: '$x2', virtual-reg: '%7' }
- { reg: '$x2', virtual-reg: '%7' }
- { reg: '$x3', virtual-reg: '%8' }
- { reg: '$x3', virtual-reg: '%8' }
frameInfo:
frameInfo:
isFrameAddressTaken: false
isFrameAddressTaken: false
isReturnAddressTaken: false
isReturnAddressTaken: false
hasStackMap: false
hasStackMap: false
hasPatchPoint: false
hasPatchPoint: false
stackSize: 0
stackSize: 0
offsetAdjustment: 0
offsetAdjustment: 0
maxAlignment: 0
maxAlignment: 1
adjustsStack: false
adjustsStack: false
hasCalls: false
hasCalls: false
stackProtector: ''
stackProtector: ''
functionContext: ''
maxCallFrameSize: 0
maxCallFrameSize: 0
cvBytesOfCalleeSavedRegisters: 0
cvBytesOfCalleeSavedRegisters: 0
hasOpaqueSPAdjustment: false
hasOpaqueSPAdjustment: false
hasVAStart: false
hasVAStart: false
hasMustTailInVarArgFunc: false
hasMustTailInVarArgFunc: false
hasTailCall: false
localFrameSize: 0
localFrameSize: 0
savePoint: ''
savePoint: ''
restorePoint: ''
restorePoint: ''
fixedStack: []
fixedStack: []
stack: []
stack: []
callSites: []
debugValueSubstitutions: []
constants: []
constants: []
machineFunctionInfo: {}
machineFunctionInfo: {}
body: |
body: |
bb.0.entry:
bb.0.entry:
successors: %bb.1(0x80000000)
successors: %bb.1(0x80000000)
liveins: $x2, $x3
liveins: $x2, $x3
%8:gpr64common = COPY $x3
%8:gpr64common = COPY $x3
%7:gpr64common = COPY $x2
%7:gpr64common = COPY $x2
%19:gpr32 = MOVi32imm 65535
%19:gpr32 = MOVi32imm 65535
bb.1.while.body:
bb.1.while.body:
successors: %bb.2(0x50000000), %bb.3(0x30000000)
successors: %bb.2(0x50000000), %bb.3(0x30000000)
%9:gpr32common = LDRSHWui %8, 0 :: (load 2 from %ir.0)
%9:gpr32common = LDRSHWui %8, 0 :: (load (s16) from %ir.0)
%0:gpr32 = COPY %9
%0:gpr32 = COPY %9
%10:gpr32 = SUBSWri %9, 1, 0, implicit-def $nzcv
%10:gpr32 = SUBSWri %9, 1, 0, implicit-def $nzcv
Bcc 11, %bb.3, implicit $nzcv
Bcc 11, %bb.3, implicit $nzcv
B %bb.2
B %bb.2
bb.2.if.then:
bb.2.if.then:
successors: %bb.5(0x80000000)
successors: %bb.5(0x80000000)
%20:gpr32 = SDIVWr %19, %0
%20:gpr32 = SDIVWr %19, %9
%21:gpr32 = nsw UBFMWri killed %20, 29, 28
%21:gpr32 = nsw UBFMWri killed %20, 29, 28
%22:gpr32 = MOVi32imm 8
%22:gpr32 = MOVi32imm 8
%18:gpr32all = COPY %22
%18:gpr32all = COPY %22
%1:gpr32all = COPY %21
%1:gpr32all = COPY %21
B %bb.5
B %bb.5
bb.3.if.else:
bb.3.if.else:
successors: %bb.4(0x30000000), %bb.5(0x50000000)
successors: %bb.4(0x30000000), %bb.5(0x50000000)
%12:gpr32 = MOVi32imm 8
%12:gpr32 = MOVi32imm 8
%11:gpr32all = COPY %12
%11:gpr32all = COPY %12
TBZW %0, 31, %bb.5
TBZW %0, 31, %bb.5
B %bb.4
B %bb.4
bb.4.if.then4:
bb.4.if.then4:
successors: %bb.5(0x80000000)
successors: %bb.5(0x80000000)
%15:gpr32 = SDIVWr %19, %0
%15:gpr32 = SDIVWr %19, %9
%16:gpr32 = nsw UBFMWri killed %15, 29, 28
%16:gpr32 = nsw UBFMWri killed %15, 29, 28
%17:gpr32 = MOVi32imm 8
%17:gpr32 = MOVi32imm 8
%13:gpr32all = COPY %17
%13:gpr32all = COPY %17
%2:gpr32all = COPY %16
%2:gpr32all = COPY %16
bb.5.if.end8:
bb.5.if.end8:
successors: %bb.1(0x80000000)
successors: %bb.1(0x80000000)
%3:gpr32 = PHI %11, %bb.3, %2, %bb.4, %18, %bb.2
%3:gpr32 = PHI %11, %bb.3, %2, %bb.4, %18, %bb.2
%4:gpr32 = PHI %11, %bb.3, %13, %bb.4, %1, %bb.2
%4:gpr32 = PHI %11, %bb.3, %13, %bb.4, %1, %bb.2
%23:gpr32 = nsw ADDWrr %4, %3
%23:gpr32 = nsw ADDWrr %4, %3
STRHHui killed %23, %7, 0 :: (store 2 into %ir.scores)
STRHHui killed %23, %7, 0 :: (store (s16) into %ir.scores)
B %bb.1
B %bb.1


...
...