brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 98f8604 Raw
90 lines · plain
1# RUN: llc -mtriple=thumbv7 -start-before=if-converter %s -o - | FileCheck %s2 3--- |4  ; ModuleID = 'vdup-test.ll'5  source_filename = "vdup-test.ll"6  target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"7  target triple = "thumbv7"8  9  define arm_aapcs_vfpcc <2 x i32> @NeonVdupMul(i32 %scalar, i32 %N, <2 x i32> %vector) {10  entry:11    %cmp = icmp ne i32 %N, 012    %broadcast = insertelement <2 x i32> undef, i32 %scalar, i32 013    %dup = shufflevector <2 x i32> %broadcast, <2 x i32> undef, <2 x i32> zeroinitializer14    %mul = mul <2 x i32> %dup, %vector15    br i1 %cmp, label %select.end, label %select.false16  17  select.false:                                     ; preds = %entry18    br label %select.end19  20  select.end:                                       ; preds = %entry, %select.false21    %res = phi <2 x i32> [ %mul, %entry ], [ %vector, %select.false ]22    ret <2 x i32> %res23  }24 25...26---27name:            NeonVdupMul28alignment:       229exposesReturnsTwice: false30legalized:       false31regBankSelected: false32selected:        false33failedISel:      false34tracksRegLiveness: true35hasWinCFI:       false36registers:       []37liveins:38  - { reg: '$r0', virtual-reg: '' }39  - { reg: '$r1', virtual-reg: '' }40  - { reg: '$d0', virtual-reg: '' }41frameInfo:42  isFrameAddressTaken: false43  isReturnAddressTaken: false44  hasStackMap:     false45  hasPatchPoint:   false46  stackSize:       047  offsetAdjustment: 048  maxAlignment:    149  adjustsStack:    false50  hasCalls:        false51  stackProtector:  ''52  maxCallFrameSize: 053  cvBytesOfCalleeSavedRegisters: 054  hasOpaqueSPAdjustment: false55  hasVAStart:      false56  hasMustTailInVarArgFunc: false57  localFrameSize:  058  savePoint:       []59  restorePoint:    []60fixedStack:      []61stack:           []62callSites:       []63constants:       []64machineFunctionInfo: {}65body:             |66  bb.0.entry:67    successors: %bb.1(0x50000000), %bb.2(0x30000000)68    liveins: $d0, $r0, $r169  70    t2CMPri killed renamable $r1, 0, 14, $noreg, implicit-def $cpsr71    t2Bcc %bb.2, 0, killed $cpsr72  73  bb.1:74    successors: %bb.2(0x80000000)75    liveins: $d0, $r076  77    renamable $d16 = VDUP32d killed renamable $r0, 14, $noreg78    ; Verify that the neon instructions haven't been conditionalized:79    ; CHECK-LABEL: NeonVdupMul80    ; CHECK: vdup.3281    ; CHECK: vmul.i3282    renamable $d0 = VMULv2i32 killed renamable $d16, killed renamable $d0, 14, $noreg83  84  bb.2.select.end:85    liveins: $d086  87    tBX_RET 14, $noreg, implicit $d088 89...90