From bb0ec9840bf6fd06fed967d5e70bee1983971344 Mon Sep 17 00:00:00 2001 From: Venkatraman Govindaraju Date: Sun, 6 Oct 2013 02:11:10 +0000 Subject: [Sparc] Use addxcc/subxcc for adde/sube instead of addx/subx. addx/subx does not modify conditional codes whereas addxcc/subxx does. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192053 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/SPARC/2011-01-11-CC.ll | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'test/CodeGen/SPARC') diff --git a/test/CodeGen/SPARC/2011-01-11-CC.ll b/test/CodeGen/SPARC/2011-01-11-CC.ll index ba90ca1a72..30f7134722 100644 --- a/test/CodeGen/SPARC/2011-01-11-CC.ll +++ b/test/CodeGen/SPARC/2011-01-11-CC.ll @@ -135,3 +135,42 @@ exit.0: exit.1: ret i32 1 } + +; V8-LABEL: test_adde_sube +; V8: addcc +; V8: addxcc +; V8: addxcc +; V8: addxcc +; V8: subcc +; V8: subxcc +; V8: subxcc +; V8: subxcc + + +; V9-LABEL: test_adde_sube +; V9: addcc +; V9: addxcc +; V9: addxcc +; V9: addxcc +; V9: subcc +; V9: subxcc +; V9: subxcc +; V9: subxcc + + +define void @test_adde_sube(i8* %a, i8* %b, i8* %sum, i8* %diff) { +entry: + %0 = bitcast i8* %a to i128* + %1 = bitcast i8* %b to i128* + %2 = load i128* %0 + %3 = load i128* %1 + %4 = add i128 %2, %3 + %5 = bitcast i8* %sum to i128* + store i128 %4, i128* %5 + tail call void asm sideeffect "", "=*m,*m"(i128 *%0, i128* %5) nounwind + %6 = load i128* %0 + %7 = sub i128 %2, %6 + %8 = bitcast i8* %diff to i128* + store i128 %7, i128* %8 + ret void +} -- cgit v1.2.3