brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · c3e63d8 Raw
148 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 %s -o - | FileCheck %s3 4define i32 @xori64i32(i64 %a) {5; CHECK-LABEL: xori64i32:6; CHECK:       ; %bb.0:7; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8; CHECK-NEXT:    v_ashrrev_i32_e32 v0, 31, v19; CHECK-NEXT:    v_xor_b32_e32 v0, 0x7fffffff, v010; CHECK-NEXT:    s_setpc_b64 s[30:31]11  %shr4 = ashr i64 %a, 6312  %conv5 = trunc i64 %shr4 to i3213  %xor = xor i32 %conv5, 214748364714  ret i32 %xor15}16 17define i64 @selecti64i64(i64 %a) {18; CHECK-LABEL: selecti64i64:19; CHECK:       ; %bb.0:20; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21; CHECK-NEXT:    v_ashrrev_i32_e32 v1, 31, v122; CHECK-NEXT:    v_xor_b32_e32 v0, 0x7fffffff, v123; CHECK-NEXT:    s_setpc_b64 s[30:31]24  %c = icmp sgt i64 %a, -125  %s = select i1 %c, i64 2147483647, i64 -214748364826  ret i64 %s27}28 29define i32 @selecti64i32(i64 %a) {30; CHECK-LABEL: selecti64i32:31; CHECK:       ; %bb.0:32; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; CHECK-NEXT:    v_ashrrev_i32_e32 v0, 31, v134; CHECK-NEXT:    v_xor_b32_e32 v0, 0x7fffffff, v035; CHECK-NEXT:    s_setpc_b64 s[30:31]36  %c = icmp sgt i64 %a, -137  %s = select i1 %c, i32 2147483647, i32 -214748364838  ret i32 %s39}40 41define i64 @selecti32i64(i32 %a) {42; CHECK-LABEL: selecti32i64:43; CHECK:       ; %bb.0:44; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)45; CHECK-NEXT:    v_ashrrev_i32_e32 v1, 31, v046; CHECK-NEXT:    v_xor_b32_e32 v0, 0x7fffffff, v147; CHECK-NEXT:    v_ashrrev_i32_e32 v1, 31, v148; CHECK-NEXT:    s_setpc_b64 s[30:31]49  %c = icmp sgt i32 %a, -150  %s = select i1 %c, i64 2147483647, i64 -214748364851  ret i64 %s52}53 54 55 56define i8 @xori32i8(i32 %a) {57; CHECK-LABEL: xori32i8:58; CHECK:       ; %bb.0:59; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)60; CHECK-NEXT:    v_ashrrev_i32_e32 v0, 31, v061; CHECK-NEXT:    v_xor_b32_e32 v0, 0x54, v062; CHECK-NEXT:    s_setpc_b64 s[30:31]63  %shr4 = ashr i32 %a, 3164  %conv5 = trunc i32 %shr4 to i865  %xor = xor i8 %conv5, 8466  ret i8 %xor67}68 69define i32 @selecti32i32(i32 %a) {70; CHECK-LABEL: selecti32i32:71; CHECK:       ; %bb.0:72; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)73; CHECK-NEXT:    v_ashrrev_i32_e32 v0, 31, v074; CHECK-NEXT:    v_xor_b32_e32 v0, 0x54, v075; CHECK-NEXT:    s_setpc_b64 s[30:31]76  %c = icmp sgt i32 %a, -177  %s = select i1 %c, i32 84, i32 -8578  ret i32 %s79}80 81define i8 @selecti32i8(i32 %a) {82; CHECK-LABEL: selecti32i8:83; CHECK:       ; %bb.0:84; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)85; CHECK-NEXT:    v_ashrrev_i32_e32 v0, 31, v086; CHECK-NEXT:    v_xor_b32_e32 v0, 0x54, v087; CHECK-NEXT:    s_setpc_b64 s[30:31]88  %c = icmp sgt i32 %a, -189  %s = select i1 %c, i8 84, i8 -8590  ret i8 %s91}92 93define i32 @selecti8i32(i8 %a) {94; CHECK-LABEL: selecti8i32:95; CHECK:       ; %bb.0:96; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)97; CHECK-NEXT:    v_bfe_i32 v0, v0, 0, 898; CHECK-NEXT:    v_mov_b32_e32 v1, 0x5499; CHECK-NEXT:    v_ashrrev_i16 v0, 7, v0100; CHECK-NEXT:    v_xor_b32_sdwa v0, sext(v0), v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD101; CHECK-NEXT:    s_setpc_b64 s[30:31]102  %c = icmp sgt i8 %a, -1103  %s = select i1 %c, i32 84, i32 -85104  ret i32 %s105}106 107define i32 @icmpasreq(i32 %input, i32 %a, i32 %b) {108; CHECK-LABEL: icmpasreq:109; CHECK:       ; %bb.0:110; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)111; CHECK-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 0, v0112; CHECK-NEXT:    v_cndmask_b32_e32 v0, v2, v1, vcc_lo113; CHECK-NEXT:    s_setpc_b64 s[30:31]114  %sh = ashr i32 %input, 31115  %c = icmp eq i32 %sh, -1116  %s = select i1 %c, i32 %a, i32 %b117  ret i32 %s118}119 120define i32 @icmpasrne(i32 %input, i32 %a, i32 %b) {121; CHECK-LABEL: icmpasrne:122; CHECK:       ; %bb.0:123; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)124; CHECK-NEXT:    v_cmp_lt_i32_e32 vcc_lo, -1, v0125; CHECK-NEXT:    v_cndmask_b32_e32 v0, v2, v1, vcc_lo126; CHECK-NEXT:    s_setpc_b64 s[30:31]127  %sh = ashr i32 %input, 31128  %c = icmp ne i32 %sh, -1129  %s = select i1 %c, i32 %a, i32 %b130  ret i32 %s131}132 133define i32 @oneusecmp(i32 %a, i32 %b, i32 %d) {134; CHECK-LABEL: oneusecmp:135; CHECK:       ; %bb.0:136; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)137; CHECK-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 0, v0138; CHECK-NEXT:    v_ashrrev_i32_e32 v3, 31, v0139; CHECK-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc_lo140; CHECK-NEXT:    v_xad_u32 v0, 0x7f, v3, v0141; CHECK-NEXT:    s_setpc_b64 s[30:31]142  %c = icmp sle i32 %a, -1143  %s = select i1 %c, i32 -128, i32 127144  %s2 = select i1 %c, i32 %d, i32 %b145  %x = add i32 %s, %s2146  ret i32 %x147}148