[XCore] Add dag combines for instructions that ignore some input bits.
[oota-llvm.git] / test / CodeGen / XCore / resources_combine.ll
index 50ac30e905b4aa8466817fde7d276597d266b7fb..20c184a53b99e2ce85fedca9762703dc3e4bc339 100644 (file)
@@ -5,6 +5,10 @@ declare i32 @llvm.xcore.inct.p1i8(i8 addrspace(1)* %r)
 declare i32 @llvm.xcore.testct.p1i8(i8 addrspace(1)* %r)
 declare i32 @llvm.xcore.testwct.p1i8(i8 addrspace(1)* %r)
 declare i32 @llvm.xcore.getts.p1i8(i8 addrspace(1)* %r)
+declare void @llvm.xcore.outt.p1i8(i8 addrspace(1)* %r, i32 %value)
+declare void @llvm.xcore.outct.p1i8(i8 addrspace(1)* %r, i32 %value)
+declare void @llvm.xcore.chkct.p1i8(i8 addrspace(1)* %r, i32 %value)
+declare void @llvm.xcore.setpt.p1i8(i8 addrspace(1)* %r, i32 %value)
 
 define i32 @int(i8 addrspace(1)* %r) nounwind {
 ; CHECK-LABEL: int:
@@ -50,3 +54,40 @@ define i32 @getts(i8 addrspace(1)* %r) nounwind {
        %trunc = and i32 %result, 65535
        ret i32 %result
 }
+
+define void @outt(i8 addrspace(1)* %r, i32 %value) nounwind {
+; CHECK-LABEL: outt:
+; CHECK-NOT: zext
+; CHECK: outt res[r0], r1
+; CHECK-NEXT: retsp 0
+       %trunc = and i32 %value, 255
+       call void @llvm.xcore.outt.p1i8(i8 addrspace(1)* %r, i32 %trunc)
+       ret void
+}
+
+define void @outct(i8 addrspace(1)* %r, i32 %value) nounwind {
+; CHECK-LABEL: outct:
+; CHECK-NOT: zext
+; CHECK: outct res[r0], r1
+       %trunc = and i32 %value, 255
+       call void @llvm.xcore.outct.p1i8(i8 addrspace(1)* %r, i32 %trunc)
+       ret void
+}
+
+define void @chkct(i8 addrspace(1)* %r, i32 %value) nounwind {
+; CHECK-LABEL: chkct:
+; CHECK-NOT: zext
+; CHECK: chkct res[r0], r1
+       %trunc = and i32 %value, 255
+       call void @llvm.xcore.chkct.p1i8(i8 addrspace(1)* %r, i32 %trunc)
+       ret void
+}
+
+define void @setpt(i8 addrspace(1)* %r, i32 %value) nounwind {
+; CHECK-LABEL: setpt:
+; CHECK-NOT: zext
+; CHECK: setpt res[r0], r1
+       %trunc = and i32 %value, 65535
+       call void @llvm.xcore.setpt.p1i8(i8 addrspace(1)* %r, i32 %trunc)
+       ret void
+}