brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 1f72307 Raw
110 lines · plain
1; RUN: llc -mtriple=thumbv7m-linux-gnu < %s | FileCheck %s --check-prefix=CHECK --check-prefix=T22; RUN: llc -mtriple=thumbv6m-linux-gnu < %s | FileCheck %s --check-prefix=CHECK --check-prefix=T13 4; CHECK-LABEL: single_bit:5; CHECK: lsls r0, r0, #236; T2-NEXT: mov7; T2-NEXT: it8; T1-NEXT: bmi9define i32 @single_bit(i32 %p) {10  %a = and i32 %p, 25611  %b = icmp eq i32 %a, 012  br i1 %b, label %true, label %false13 14true:15  ret i32 116 17false:18  ret i32 219}20 21; CHECK-LABEL: single_bit_multi_use:22; CHECK: lsls r0, r0, #2323; T2-NEXT: mov24; T2-NEXT: it25; T1-NEXT: bmi26define i32 @single_bit_multi_use(i32 %p, ptr %z) {27  store i32 %p, ptr %z28  %a = and i32 %p, 25629  %b = icmp eq i32 %a, 030  br i1 %b, label %true, label %false31 32true:33  ret i32 134 35false:36  ret i32 237}38 39; CHECK-LABEL: multi_bit_lsb_ubfx:40; CHECK: lsls r0, r0, #2441; T2-NEXT: mov42; T2-NEXT: it43; T1-NEXT: beq44define i32 @multi_bit_lsb_ubfx(i32 %p) {45  %a = and i32 %p, 25546  %b = icmp eq i32 %a, 047  br i1 %b, label %true, label %false48 49true:50  ret i32 151 52false:53  ret i32 254}55 56; CHECK-LABEL: multi_bit_msb:57; CHECK: lsrs r0, r0, #2458; T2-NEXT: mov59; T2-NEXT: it60; T1-NEXT: beq61define i32 @multi_bit_msb(i32 %p) {62  %a = and i32 %p, 4278190080  ; 0xff00000063  %b = icmp eq i32 %a, 064  br i1 %b, label %true, label %false65 66true:67  ret i32 168 69false:70  ret i32 271}72 73; CHECK-LABEL: multi_bit_nosb:74; T1: lsls r0, r0, #875; T1-NEXT: lsrs r0, r0, #2476; T2: tst.w77; T2-NEXT: it78; T1-NEXT: beq79define i32 @multi_bit_nosb(i32 %p) {80  %a = and i32 %p, 16711680 ; 0x00ff000081  %b = icmp eq i32 %a, 082  br i1 %b, label %true, label %false83 84true:85  ret i32 186 87false:88  ret i32 289}90 91; CHECK-LABEL: i16_cmpz:92; T1:      uxth    r0, r093; T1-NEXT: lsrs    r0, r0, #994; T1-NEXT: bne95; T2:      uxth    r0, r096; T2-NEXT: movs    r2, #097; T2-NEXT: cmp.w   r2, r0, lsr #998define void @i16_cmpz(i16 %x, ptr %foo) {99entry:100  %cmp = icmp ult i16 %x, 512101  br i1 %cmp, label %if.then, label %if.end102 103if.then:                                          ; preds = %entry104  tail call void %foo(i32 0) #1105  br label %if.end106 107if.end:                                           ; preds = %if.then, %entry108  ret void109}110