Skip to content

Commit 143e1ea

Browse files
committed
integer types done
Signed-off-by: Karan Janthe <karanjanthe@gmail.com>
1 parent df85042 commit 143e1ea

27 files changed

+389
-17
lines changed

tests/ui/autodiff/f64.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
//@ run-pass
2-
//@ compile-flags: -Zautodiff=Enable,PrintTAFn=square -Zautodiff=NoPostopt -C opt-level=3 -Clto=fat -g
2+
//@ compile-flags: -Zautodiff=Enable,PrintTAFn=callee -Zautodiff=NoPostopt -C opt-level=3 -Clto=fat -g
33
//@ no-prefer-dynamic
44
//@ needs-enzyme
55
#![feature(autodiff)]
66
use std::autodiff::autodiff_reverse;
77

8-
#[autodiff_reverse(d_square, Duplicated, Active)]
8+
#[autodiff_reverse(d_callee, Duplicated, Active)]
99
#[no_mangle]
10-
fn square(x: &f64) -> f64 {
10+
fn callee(x: &f64) -> f64 {
1111
x * x
1212
}
1313

1414
fn main() {
1515
let x = std::hint::black_box(3.0);
1616

17-
let output = square(&x);
17+
let output = callee(&x);
1818
assert_eq!(9.0, output);
1919

2020
let mut df_dx = 0.0;
21-
let output_ = d_square(&x, &mut df_dx, 1.0);
21+
let output_ = d_callee(&x, &mut df_dx, 1.0);
2222
assert_eq!(output, output_);
2323
assert_eq!(6.0, df_dx);
2424
}

tests/ui/autodiff/f64.stderr

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
analyzing function square
1+
analyzing function callee
22
+ knowndata: ptr %0 : {[-1]:Pointer} - {}
33
+ retdata: {[-1]:Float@double}
44
updating analysis of val: ptr %0 current: {} new {[-1]:Pointer} from ptr %0 Changed=1 legal=1
@@ -12,19 +12,19 @@ updating analysis of val: %2 = load double, ptr %0, align 8, !dbg !384, !nound
1212
updating analysis of val: %3 = fmul double %2, %2, !dbg !385 current: {[-1]:Float@double} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !385 Changed=0 legal=1
1313
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer, [-1,0]:Float@double} from %2 = load double, ptr %0, align 8, !dbg !384, !noundef !14 Changed=1 legal=1
1414
updating analysis of val: %2 = load double, ptr %0, align 8, !dbg !384, !noundef !14 current: {[-1]:Float@double} new {[-1]:Float@double} from %2 = load double, ptr %0, align 8, !dbg !384, !noundef !14 Changed=0 legal=1
15-
analyzing function preprocess_square
15+
analyzing function preprocess_callee
1616
+ knowndata: ptr %0 : {[-1]:Pointer, [-1,0]:Float@double} - {}
1717
+ retdata: {[-1]:Float@double}
1818
updating analysis of val: ptr %0 current: {} new {[-1]:Pointer, [-1,0]:Float@double} from ptr %0 Changed=1 legal=1
1919
updating analysis of val: ptr %0 current: {[-1]:Pointer, [-1,0]:Float@double} new {[-1]:Pointer, [-1,0]:Float@double} from ptr %0 Changed=0 legal=1
20-
updating analysis of val: %3 = fmul double %2, %2, !dbg !17231 current: {} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !17231 Changed=1 legal=1
21-
updating analysis of val: %3 = fmul double %2, %2, !dbg !17231 current: {[-1]:Float@double} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !17231 Changed=0 legal=1
22-
updating analysis of val: ptr %0 current: {[-1]:Pointer, [-1,0]:Float@double} new {[-1]:Pointer} from %2 = load double, ptr %0, align 8, !dbg !17230, !noundef !14 Changed=0 legal=1
23-
updating analysis of val: %2 = load double, ptr %0, align 8, !dbg !17230, !noundef !14 current: {} new {[-1]:Float@double} from %2 = load double, ptr %0, align 8, !dbg !17230, !noundef !14 Changed=1 legal=1
24-
updating analysis of val: %2 = load double, ptr %0, align 8, !dbg !17230, !noundef !14 current: {[-1]:Float@double} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !17231 Changed=0 legal=1
25-
updating analysis of val: %2 = load double, ptr %0, align 8, !dbg !17230, !noundef !14 current: {[-1]:Float@double} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !17231 Changed=0 legal=1
26-
updating analysis of val: %3 = fmul double %2, %2, !dbg !17231 current: {[-1]:Float@double} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !17231 Changed=0 legal=1
27-
analyzing function square
20+
updating analysis of val: %3 = fmul double %2, %2, !dbg !17239 current: {} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !17239 Changed=1 legal=1
21+
updating analysis of val: %3 = fmul double %2, %2, !dbg !17239 current: {[-1]:Float@double} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !17239 Changed=0 legal=1
22+
updating analysis of val: ptr %0 current: {[-1]:Pointer, [-1,0]:Float@double} new {[-1]:Pointer} from %2 = load double, ptr %0, align 8, !dbg !17238, !noundef !14 Changed=0 legal=1
23+
updating analysis of val: %2 = load double, ptr %0, align 8, !dbg !17238, !noundef !14 current: {} new {[-1]:Float@double} from %2 = load double, ptr %0, align 8, !dbg !17238, !noundef !14 Changed=1 legal=1
24+
updating analysis of val: %2 = load double, ptr %0, align 8, !dbg !17238, !noundef !14 current: {[-1]:Float@double} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !17239 Changed=0 legal=1
25+
updating analysis of val: %2 = load double, ptr %0, align 8, !dbg !17238, !noundef !14 current: {[-1]:Float@double} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !17239 Changed=0 legal=1
26+
updating analysis of val: %3 = fmul double %2, %2, !dbg !17239 current: {[-1]:Float@double} new {[-1]:Float@double} from %3 = fmul double %2, %2, !dbg !17239 Changed=0 legal=1
27+
analyzing function callee
2828
+ knowndata: ptr %0 : {[-1]:Pointer} - {}
2929
+ retdata: {[-1]:Float@double}
3030
updating analysis of val: ptr %0 current: {} new {[-1]:Pointer} from ptr %0 Changed=1 legal=1

tests/ui/autodiff/f64.stdout

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
square - {[-1]:Float@double} |{[-1]:Pointer}:{}
1+
callee - {[-1]:Float@double} |{[-1]:Pointer}:{}
22
ptr %0: {[-1]:Pointer, [-1,0]:Float@double}
33

44
%2 = load double, ptr %0, align 8, !dbg !103, !noundef !14: {[-1]:Float@double}
55
%3 = fmul double %2, %2, !dbg !104: {[-1]:Float@double}
66
ret double %3, !dbg !111: {}
7-
square - {[-1]:Float@double} |{[-1]:Pointer, [-1,0]:Float@double}:{}
7+
callee - {[-1]:Float@double} |{[-1]:Pointer, [-1,0]:Float@double}:{}
88
ptr %0: {[-1]:Pointer, [-1,0]:Float@double}
99

1010
%2 = load double, ptr %0, align 8, !dbg !103, !noundef !14: {[-1]:Float@double}

tests/ui/autodiff/i128.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//@ run-pass
2+
//@ compile-flags: -Zautodiff=Enable,PrintTAFn=callee -Zautodiff=NoPostopt -C opt-level=3 -Clto=fat -g
3+
//@ no-prefer-dynamic
4+
//@ needs-enzyme
5+
#![feature(autodiff)]
6+
7+
use std::autodiff::autodiff_reverse;
8+
9+
#[autodiff_reverse(d_square, Duplicated, Active)]
10+
#[no_mangle]
11+
fn callee(x: &i128) -> i128 {
12+
*x * *x
13+
}
14+
15+
fn main() {
16+
let x: i128 = 7;
17+
let _ = callee(&x);
18+
}

tests/ui/autodiff/i128.stderr

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
analyzing function callee
2+
+ knowndata: ptr %0 : {[-1]:Pointer} - {}
3+
+ retdata: {}
4+
updating analysis of val: ptr %0 current: {} new {[-1]:Pointer} from ptr %0 Changed=1 legal=1
5+
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer} from ptr %0 Changed=0 legal=1
6+
updating analysis of val: %3 = mul i128 %2, %2, !dbg !414 current: {} new {} from %3 = mul i128 %2, %2, !dbg !414 Changed=0 legal=1
7+
updating analysis of val: %3 = mul i128 %2, %2, !dbg !414 current: {} new {} from %3 = mul i128 %2, %2, !dbg !414 Changed=0 legal=1
8+
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer} from %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 Changed=0 legal=1
9+
updating analysis of val: %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 current: {} new {} from %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 Changed=0 legal=1
10+
updating analysis of val: %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 current: {} new {} from %3 = mul i128 %2, %2, !dbg !414 Changed=0 legal=1
11+
updating analysis of val: %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 current: {} new {} from %3 = mul i128 %2, %2, !dbg !414 Changed=0 legal=1
12+
updating analysis of val: %3 = mul i128 %2, %2, !dbg !414 current: {} new {} from %3 = mul i128 %2, %2, !dbg !414 Changed=0 legal=1
13+
analyzing function preprocess_callee
14+
+ knowndata: ptr %0 : {[-1]:Pointer} - {}
15+
+ retdata: {}
16+
updating analysis of val: ptr %0 current: {} new {[-1]:Pointer} from ptr %0 Changed=1 legal=1
17+
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer} from ptr %0 Changed=0 legal=1
18+
updating analysis of val: %3 = mul i128 %2, %2, !dbg !16392 current: {} new {} from %3 = mul i128 %2, %2, !dbg !16392 Changed=0 legal=1
19+
updating analysis of val: %3 = mul i128 %2, %2, !dbg !16392 current: {} new {} from %3 = mul i128 %2, %2, !dbg !16392 Changed=0 legal=1
20+
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer} from %2 = load i128, ptr %0, align 16, !dbg !16392, !noundef !14 Changed=0 legal=1
21+
updating analysis of val: %2 = load i128, ptr %0, align 16, !dbg !16392, !noundef !14 current: {} new {} from %2 = load i128, ptr %0, align 16, !dbg !16392, !noundef !14 Changed=0 legal=1
22+
updating analysis of val: %2 = load i128, ptr %0, align 16, !dbg !16392, !noundef !14 current: {} new {} from %3 = mul i128 %2, %2, !dbg !16392 Changed=0 legal=1
23+
updating analysis of val: %2 = load i128, ptr %0, align 16, !dbg !16392, !noundef !14 current: {} new {} from %3 = mul i128 %2, %2, !dbg !16392 Changed=0 legal=1
24+
updating analysis of val: %3 = mul i128 %2, %2, !dbg !16392 current: {} new {} from %3 = mul i128 %2, %2, !dbg !16392 Changed=0 legal=1
25+
analyzing function callee
26+
+ knowndata: ptr %0 : {[-1]:Pointer} - {}
27+
+ retdata: {[-1]:Integer}
28+
updating analysis of val: ptr %0 current: {} new {[-1]:Pointer} from ptr %0 Changed=1 legal=1
29+
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer} from ptr %0 Changed=0 legal=1
30+
updating analysis of val: %3 = mul i128 %2, %2, !dbg !414 current: {} new {[-1]:Integer} from %3 = mul i128 %2, %2, !dbg !414 Changed=1 legal=1
31+
updating analysis of val: %3 = mul i128 %2, %2, !dbg !414 current: {[-1]:Integer} new {[-1]:Integer} from %3 = mul i128 %2, %2, !dbg !414 Changed=0 legal=1
32+
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer} from %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 Changed=0 legal=1
33+
updating analysis of val: %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 current: {} new {} from %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 Changed=0 legal=1
34+
updating analysis of val: %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 current: {} new {[-1]:Integer} from %3 = mul i128 %2, %2, !dbg !414 Changed=1 legal=1
35+
updating analysis of val: %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 current: {[-1]:Integer} new {[-1]:Integer} from %3 = mul i128 %2, %2, !dbg !414 Changed=0 legal=1
36+
updating analysis of val: %3 = mul i128 %2, %2, !dbg !414 current: {[-1]:Integer} new {} from %3 = mul i128 %2, %2, !dbg !414 Changed=0 legal=1
37+
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer} from %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 Changed=1 legal=1
38+
updating analysis of val: %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 current: {[-1]:Integer} new {[-1]:Integer} from %2 = load i128, ptr %0, align 16, !dbg !414, !noundef !14 Changed=0 legal=1

tests/ui/autodiff/i128.stdout

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
callee - {[-1]:Integer} |{[-1]:Pointer}:{}
2+
ptr %0: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer}
3+
4+
%2 = load i128, ptr %0, align 16, !dbg !61, !noundef !14: {[-1]:Integer}
5+
%3 = mul i128 %2, %2, !dbg !61: {[-1]:Integer}
6+
ret i128 %3, !dbg !62: {}
7+
callee - {[-1]:Integer} |{[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer}:{}
8+
ptr %0: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer}
9+
10+
%2 = load i128, ptr %0, align 16, !dbg !61, !noundef !14: {[-1]:Integer}
11+
%3 = mul i128 %2, %2, !dbg !61: {[-1]:Integer}
12+
ret i128 %3, !dbg !62: {}

tests/ui/autodiff/i16.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//@ run-pass
2+
//@ compile-flags: -Zautodiff=Enable,PrintTAFn=callee -Zautodiff=NoPostopt -C opt-level=3 -Clto=fat -g
3+
//@ no-prefer-dynamic
4+
//@ needs-enzyme
5+
#![feature(autodiff)]
6+
7+
use std::autodiff::autodiff_reverse;
8+
9+
#[autodiff_reverse(d_square, Duplicated, Active)]
10+
#[no_mangle]
11+
fn callee(x: &i16) -> i16 {
12+
*x * *x
13+
}
14+
15+
fn main() {
16+
let x: i16 = 7;
17+
let _ = callee(&x);
18+
}

tests/ui/autodiff/i16.stderr

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
analyzing function callee
2+
+ knowndata: ptr %0 : {[-1]:Pointer} - {}
3+
+ retdata: {[-1]:Integer}
4+
updating analysis of val: ptr %0 current: {} new {[-1]:Pointer} from ptr %0 Changed=1 legal=1
5+
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer} from ptr %0 Changed=0 legal=1
6+
updating analysis of val: %3 = mul i16 %2, %2, !dbg !92 current: {} new {[-1]:Integer} from %3 = mul i16 %2, %2, !dbg !92 Changed=1 legal=1
7+
updating analysis of val: %3 = mul i16 %2, %2, !dbg !92 current: {[-1]:Integer} new {[-1]:Integer} from %3 = mul i16 %2, %2, !dbg !92 Changed=0 legal=1
8+
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer} from %2 = load i16, ptr %0, align 2, !dbg !92, !noundef !31 Changed=0 legal=1
9+
updating analysis of val: %2 = load i16, ptr %0, align 2, !dbg !92, !noundef !31 current: {} new {} from %2 = load i16, ptr %0, align 2, !dbg !92, !noundef !31 Changed=0 legal=1
10+
updating analysis of val: %2 = load i16, ptr %0, align 2, !dbg !92, !noundef !31 current: {} new {[-1]:Integer} from %3 = mul i16 %2, %2, !dbg !92 Changed=1 legal=1
11+
updating analysis of val: %2 = load i16, ptr %0, align 2, !dbg !92, !noundef !31 current: {[-1]:Integer} new {[-1]:Integer} from %3 = mul i16 %2, %2, !dbg !92 Changed=0 legal=1
12+
updating analysis of val: %3 = mul i16 %2, %2, !dbg !92 current: {[-1]:Integer} new {} from %3 = mul i16 %2, %2, !dbg !92 Changed=0 legal=1
13+
updating analysis of val: ptr %0 current: {[-1]:Pointer} new {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer} from %2 = load i16, ptr %0, align 2, !dbg !92, !noundef !31 Changed=1 legal=1
14+
updating analysis of val: %2 = load i16, ptr %0, align 2, !dbg !92, !noundef !31 current: {[-1]:Integer} new {[-1]:Integer} from %2 = load i16, ptr %0, align 2, !dbg !92, !noundef !31 Changed=0 legal=1

tests/ui/autodiff/i16.stdout

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
callee - {[-1]:Integer} |{[-1]:Pointer}:{}
2+
ptr %0: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer}
3+
4+
%2 = load i16, ptr %0, align 2, !dbg !44, !noundef !31: {[-1]:Integer}
5+
%3 = mul i16 %2, %2, !dbg !44: {[-1]:Integer}
6+
ret i16 %3, !dbg !45: {}
7+
callee - {[-1]:Integer} |{[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer}:{}
8+
ptr %0: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer}
9+
10+
%2 = load i16, ptr %0, align 2, !dbg !44, !noundef !31: {[-1]:Integer}
11+
%3 = mul i16 %2, %2, !dbg !44: {[-1]:Integer}
12+
ret i16 %3, !dbg !45: {}

tests/ui/autodiff/i32.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//@ run-pass
2+
//@ compile-flags: -Zautodiff=Enable,PrintTAFn=callee -Zautodiff=NoPostopt -C opt-level=3 -Clto=fat -g
3+
//@ no-prefer-dynamic
4+
//@ needs-enzyme
5+
#![feature(autodiff)]
6+
7+
use std::autodiff::autodiff_reverse;
8+
9+
#[autodiff_reverse(d_square, Duplicated, Active)]
10+
#[no_mangle]
11+
fn callee(x: &i32) -> i32 {
12+
*x * *x
13+
}
14+
15+
fn main() {
16+
let x: i32 = 7;
17+
let _ = callee(&x);
18+
}

0 commit comments

Comments
 (0)