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