brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 5cd96ec Raw
170 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s3 4declare { i8, i1 } @llvm.sadd.with.overflow.i8(i8, i8) nounwind readnone5declare { i16, i1 } @llvm.sadd.with.overflow.i16(i16, i16) nounwind readnone6declare { i32, i1 } @llvm.sadd.with.overflow.i32(i32, i32) nounwind readnone7declare { i64, i1 } @llvm.sadd.with.overflow.i64(i64, i64) nounwind readnone8declare { <4 x i32>, <4 x i1> } @llvm.sadd.with.overflow.v4i32(<4 x i32>, <4 x i32>) nounwind readnone9declare { i8, i1 } @llvm.ssub.with.overflow.i8(i8, i8) nounwind readnone10declare { i16, i1 } @llvm.ssub.with.overflow.i16(i16, i16) nounwind readnone11declare { i32, i1 } @llvm.ssub.with.overflow.i32(i32, i32) nounwind readnone12declare { i64, i1 } @llvm.ssub.with.overflow.i64(i64, i64) nounwind readnone13declare { <4 x i32>, <4 x i1> } @llvm.ssub.with.overflow.v4i32(<4 x i32>, <4 x i32>) nounwind readnone14 15define i1 @test_saddo_i8(i8 %a, i8 %b) nounwind {16; CHECK-LABEL: test_saddo_i8:17; CHECK:       # %bb.0: # %entry18; CHECK-NEXT:    extsb 4, 419; CHECK-NEXT:    extsb 3, 320; CHECK-NEXT:    add 3, 3, 421; CHECK-NEXT:    extsb 4, 322; CHECK-NEXT:    cmpw 4, 323; CHECK-NEXT:    li 3, 124; CHECK-NEXT:    iseleq 3, 0, 325; CHECK-NEXT:    blr26entry:27  %res = call { i8, i1 } @llvm.sadd.with.overflow.i8(i8 %a, i8 %b) nounwind28  %overflow = extractvalue { i8, i1 } %res, 129  ret i1 %overflow30}31 32define i1 @test_saddo_i16(i16 %a, i16 %b) nounwind {33; CHECK-LABEL: test_saddo_i16:34; CHECK:       # %bb.0: # %entry35; CHECK-NEXT:    extsh 4, 436; CHECK-NEXT:    extsh 3, 337; CHECK-NEXT:    add 3, 3, 438; CHECK-NEXT:    extsh 4, 339; CHECK-NEXT:    cmpw 4, 340; CHECK-NEXT:    li 3, 141; CHECK-NEXT:    iseleq 3, 0, 342; CHECK-NEXT:    blr43entry:44  %res = call { i16, i1 } @llvm.sadd.with.overflow.i16(i16 %a, i16 %b) nounwind45  %overflow = extractvalue { i16, i1 } %res, 146  ret i1 %overflow47}48 49define i1 @test_saddo_i32(i32 %a, i32 %b) nounwind {50; CHECK-LABEL: test_saddo_i32:51; CHECK:       # %bb.0: # %entry52; CHECK-NEXT:    xor 5, 3, 453; CHECK-NEXT:    add 4, 3, 454; CHECK-NEXT:    xor 3, 4, 355; CHECK-NEXT:    andc 3, 3, 556; CHECK-NEXT:    srwi 3, 3, 3157; CHECK-NEXT:    blr58entry:59  %res = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %a, i32 %b) nounwind60  %overflow = extractvalue { i32, i1 } %res, 161  ret i1 %overflow62}63 64define i1 @test_saddo_i64(i64 %a, i64 %b) nounwind {65; CHECK-LABEL: test_saddo_i64:66; CHECK:       # %bb.0: # %entry67; CHECK-NEXT:    xor 5, 3, 468; CHECK-NEXT:    add 4, 3, 469; CHECK-NEXT:    xor 3, 4, 370; CHECK-NEXT:    andc 3, 3, 571; CHECK-NEXT:    rldicl 3, 3, 1, 6372; CHECK-NEXT:    blr73entry:74  %res = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %a, i64 %b) nounwind75  %overflow = extractvalue { i64, i1 } %res, 176  ret i1 %overflow77}78 79define <4 x i1> @test_saddo_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {80; CHECK-LABEL: test_saddo_v4i32:81; CHECK:       # %bb.0: # %entry82; CHECK-NEXT:    vaddsws 4, 2, 383; CHECK-NEXT:    vadduwm 2, 2, 384; CHECK-NEXT:    vcmpequw 2, 2, 485; CHECK-NEXT:    xxlnor 34, 34, 3486; CHECK-NEXT:    blr87entry:88  %res = call { <4 x i32>, <4 x i1> } @llvm.sadd.with.overflow.v4i32(<4 x i32> %a, <4 x i32> %b) nounwind89  %overflow = extractvalue { <4 x i32>, <4 x i1> } %res, 190  ret <4 x i1> %overflow91}92 93define i1 @test_ssubo_i8(i8 %a, i8 %b) nounwind {94; CHECK-LABEL: test_ssubo_i8:95; CHECK:       # %bb.0: # %entry96; CHECK-NEXT:    extsb 3, 397; CHECK-NEXT:    extsb 4, 498; CHECK-NEXT:    sub 3, 3, 499; CHECK-NEXT:    extsb 4, 3100; CHECK-NEXT:    cmpw 4, 3101; CHECK-NEXT:    li 3, 1102; CHECK-NEXT:    iseleq 3, 0, 3103; CHECK-NEXT:    blr104entry:105  %res = call { i8, i1 } @llvm.ssub.with.overflow.i8(i8 %a, i8 %b) nounwind106  %overflow = extractvalue { i8, i1 } %res, 1107  ret i1 %overflow108}109 110define i1 @test_ssubo_i16(i16 %a, i16 %b) nounwind {111; CHECK-LABEL: test_ssubo_i16:112; CHECK:       # %bb.0: # %entry113; CHECK-NEXT:    extsh 3, 3114; CHECK-NEXT:    extsh 4, 4115; CHECK-NEXT:    sub 3, 3, 4116; CHECK-NEXT:    extsh 4, 3117; CHECK-NEXT:    cmpw 4, 3118; CHECK-NEXT:    li 3, 1119; CHECK-NEXT:    iseleq 3, 0, 3120; CHECK-NEXT:    blr121entry:122  %res = call { i16, i1 } @llvm.ssub.with.overflow.i16(i16 %a, i16 %b) nounwind123  %overflow = extractvalue { i16, i1 } %res, 1124  ret i1 %overflow125}126 127define i1 @test_ssubo_i32(i32 %a, i32 %b) nounwind {128; CHECK-LABEL: test_ssubo_i32:129; CHECK:       # %bb.0: # %entry130; CHECK-NEXT:    xor 5, 4, 3131; CHECK-NEXT:    sub 4, 3, 4132; CHECK-NEXT:    xor 3, 4, 3133; CHECK-NEXT:    and 3, 5, 3134; CHECK-NEXT:    srwi 3, 3, 31135; CHECK-NEXT:    blr136entry:137  %res = call { i32, i1 } @llvm.ssub.with.overflow.i32(i32 %a, i32 %b) nounwind138  %overflow = extractvalue { i32, i1 } %res, 1139  ret i1 %overflow140}141 142define i1 @test_ssubo_i64(i64 %a, i64 %b) nounwind {143; CHECK-LABEL: test_ssubo_i64:144; CHECK:       # %bb.0: # %entry145; CHECK-NEXT:    xor 5, 4, 3146; CHECK-NEXT:    sub 4, 3, 4147; CHECK-NEXT:    xor 3, 4, 3148; CHECK-NEXT:    and 3, 5, 3149; CHECK-NEXT:    rldicl 3, 3, 1, 63150; CHECK-NEXT:    blr151entry:152  %res = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %a, i64 %b) nounwind153  %overflow = extractvalue { i64, i1 } %res, 1154  ret i1 %overflow155}156 157define <4 x i1> @test_ssubo_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {158; CHECK-LABEL: test_ssubo_v4i32:159; CHECK:       # %bb.0: # %entry160; CHECK-NEXT:    vsubsws 4, 2, 3161; CHECK-NEXT:    vsubuwm 2, 2, 3162; CHECK-NEXT:    vcmpequw 2, 2, 4163; CHECK-NEXT:    xxlnor 34, 34, 34164; CHECK-NEXT:    blr165entry:166  %res = call { <4 x i32>, <4 x i1> } @llvm.ssub.with.overflow.v4i32(<4 x i32> %a, <4 x i32> %b) nounwind167  %overflow = extractvalue { <4 x i32>, <4 x i1> } %res, 1168  ret <4 x i1> %overflow169}170