brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 61cdc3b Raw
172 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=armv7a < %s | FileCheck %s --check-prefix=ARM3; RUN: llc -mtriple=armv6m < %s | FileCheck %s --check-prefix=THUMB4; RUN: llc -mtriple=armv7m < %s | FileCheck %s --check-prefix=THUMB25; RUN: llc -mtriple=thumbv8.1m.main < %s | FileCheck %s --check-prefix=THUMBV86 7define i3 @sign_i3(i3 %a) {8; ARM-LABEL: sign_i3:9; ARM:       @ %bb.0:10; ARM-NEXT:    lsl r0, r0, #2911; ARM-NEXT:    mov r1, #112; ARM-NEXT:    orr r0, r1, r0, asr #3113; ARM-NEXT:    bx lr14;15; THUMB-LABEL: sign_i3:16; THUMB:       @ %bb.0:17; THUMB-NEXT:    lsls r0, r0, #2918; THUMB-NEXT:    asrs r1, r0, #3119; THUMB-NEXT:    movs r0, #120; THUMB-NEXT:    orrs r0, r121; THUMB-NEXT:    bx lr22;23; THUMB2-LABEL: sign_i3:24; THUMB2:       @ %bb.0:25; THUMB2-NEXT:    lsls r0, r0, #2926; THUMB2-NEXT:    movs r1, #127; THUMB2-NEXT:    orr.w r0, r1, r0, asr #3128; THUMB2-NEXT:    bx lr29;30; THUMBV8-LABEL: sign_i3:31; THUMBV8:       @ %bb.0:32; THUMBV8-NEXT:    lsls r0, r0, #2933; THUMBV8-NEXT:    movs r1, #134; THUMBV8-NEXT:    orr.w r0, r1, r0, asr #3135; THUMBV8-NEXT:    bx lr36  %c = icmp sgt i3 %a, -137  %res = select i1 %c, i3 1, i3 -138  ret i3 %res39}40 41define i4 @sign_i4(i4 %a) {42; ARM-LABEL: sign_i4:43; ARM:       @ %bb.0:44; ARM-NEXT:    lsl r0, r0, #2845; ARM-NEXT:    mov r1, #146; ARM-NEXT:    orr r0, r1, r0, asr #3147; ARM-NEXT:    bx lr48;49; THUMB-LABEL: sign_i4:50; THUMB:       @ %bb.0:51; THUMB-NEXT:    lsls r0, r0, #2852; THUMB-NEXT:    asrs r1, r0, #3153; THUMB-NEXT:    movs r0, #154; THUMB-NEXT:    orrs r0, r155; THUMB-NEXT:    bx lr56;57; THUMB2-LABEL: sign_i4:58; THUMB2:       @ %bb.0:59; THUMB2-NEXT:    lsls r0, r0, #2860; THUMB2-NEXT:    movs r1, #161; THUMB2-NEXT:    orr.w r0, r1, r0, asr #3162; THUMB2-NEXT:    bx lr63;64; THUMBV8-LABEL: sign_i4:65; THUMBV8:       @ %bb.0:66; THUMBV8-NEXT:    lsls r0, r0, #2867; THUMBV8-NEXT:    movs r1, #168; THUMBV8-NEXT:    orr.w r0, r1, r0, asr #3169; THUMBV8-NEXT:    bx lr70  %c = icmp sgt i4 %a, -171  %res = select i1 %c, i4 1, i4 -172  ret i4 %res73}74 75define i8 @sign_i8(i8 %a) {76; ARM-LABEL: sign_i8:77; ARM:       @ %bb.0:78; ARM-NEXT:    sxtb r0, r079; ARM-NEXT:    mov r1, #180; ARM-NEXT:    orr r0, r1, r0, asr #781; ARM-NEXT:    bx lr82;83; THUMB-LABEL: sign_i8:84; THUMB:       @ %bb.0:85; THUMB-NEXT:    sxtb r0, r086; THUMB-NEXT:    asrs r1, r0, #787; THUMB-NEXT:    movs r0, #188; THUMB-NEXT:    orrs r0, r189; THUMB-NEXT:    bx lr90;91; THUMB2-LABEL: sign_i8:92; THUMB2:       @ %bb.0:93; THUMB2-NEXT:    sxtb r0, r094; THUMB2-NEXT:    movs r1, #195; THUMB2-NEXT:    orr.w r0, r1, r0, asr #796; THUMB2-NEXT:    bx lr97;98; THUMBV8-LABEL: sign_i8:99; THUMBV8:       @ %bb.0:100; THUMBV8-NEXT:    sxtb r0, r0101; THUMBV8-NEXT:    movs r1, #1102; THUMBV8-NEXT:    orr.w r0, r1, r0, asr #7103; THUMBV8-NEXT:    bx lr104  %c = icmp sgt i8 %a, -1105  %res = select i1 %c, i8 1, i8 -1106  ret i8 %res107}108 109define i16 @sign_i16(i16 %a) {110; ARM-LABEL: sign_i16:111; ARM:       @ %bb.0:112; ARM-NEXT:    sxth r0, r0113; ARM-NEXT:    mov r1, #1114; ARM-NEXT:    orr r0, r1, r0, asr #15115; ARM-NEXT:    bx lr116;117; THUMB-LABEL: sign_i16:118; THUMB:       @ %bb.0:119; THUMB-NEXT:    sxth r0, r0120; THUMB-NEXT:    asrs r1, r0, #15121; THUMB-NEXT:    movs r0, #1122; THUMB-NEXT:    orrs r0, r1123; THUMB-NEXT:    bx lr124;125; THUMB2-LABEL: sign_i16:126; THUMB2:       @ %bb.0:127; THUMB2-NEXT:    sxth r0, r0128; THUMB2-NEXT:    movs r1, #1129; THUMB2-NEXT:    orr.w r0, r1, r0, asr #15130; THUMB2-NEXT:    bx lr131;132; THUMBV8-LABEL: sign_i16:133; THUMBV8:       @ %bb.0:134; THUMBV8-NEXT:    sxth r0, r0135; THUMBV8-NEXT:    movs r1, #1136; THUMBV8-NEXT:    orr.w r0, r1, r0, asr #15137; THUMBV8-NEXT:    bx lr138  %c = icmp sgt i16 %a, -1139  %res = select i1 %c, i16 1, i16 -1140  ret i16 %res141}142 143define i32 @sign_i32(i32 %a) {144; ARM-LABEL: sign_i32:145; ARM:       @ %bb.0:146; ARM-NEXT:    mov r1, #1147; ARM-NEXT:    orr r0, r1, r0, asr #31148; ARM-NEXT:    bx lr149;150; THUMB-LABEL: sign_i32:151; THUMB:       @ %bb.0:152; THUMB-NEXT:    asrs r1, r0, #31153; THUMB-NEXT:    movs r0, #1154; THUMB-NEXT:    orrs r0, r1155; THUMB-NEXT:    bx lr156;157; THUMB2-LABEL: sign_i32:158; THUMB2:       @ %bb.0:159; THUMB2-NEXT:    movs r1, #1160; THUMB2-NEXT:    orr.w r0, r1, r0, asr #31161; THUMB2-NEXT:    bx lr162;163; THUMBV8-LABEL: sign_i32:164; THUMBV8:       @ %bb.0:165; THUMBV8-NEXT:    movs r1, #1166; THUMBV8-NEXT:    orr.w r0, r1, r0, asr #31167; THUMBV8-NEXT:    bx lr168  %c = icmp sgt i32 %a, -1169  %res = select i1 %c, i32 1, i32 -1170  ret i32 %res171}172