xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/pr3317.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86
2*9880d681SAndroid Build Coastguard Worker; PR3317
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker%VT = type [0 x i32 (...)*]
5*9880d681SAndroid Build Coastguard Worker        %ArraySInt16 = type { %JavaObject, i8*, [0 x i16] }
6*9880d681SAndroid Build Coastguard Worker        %ArraySInt8 = type { %JavaObject, i8*, [0 x i8] }
7*9880d681SAndroid Build Coastguard Worker        %Attribut = type { %ArraySInt16*, i32, i32 }
8*9880d681SAndroid Build Coastguard Worker        %CacheNode = type { i8*, %JavaCommonClass*, %CacheNode*, %Enveloppe* }
9*9880d681SAndroid Build Coastguard Worker        %Enveloppe = type { %CacheNode*, %ArraySInt16*, %ArraySInt16*, i8, %JavaClass*, %CacheNode }
10*9880d681SAndroid Build Coastguard Worker        %JavaArray = type { %JavaObject, i8* }
11*9880d681SAndroid Build Coastguard Worker        %JavaClass = type { %JavaCommonClass, i32, %VT*, [1 x %TaskClassMirror], i8*, %JavaField*, i16, %JavaField*, i16, %JavaMethod*, i16, %JavaMethod*, i16, i8*, %ArraySInt8*, i8*, %Attribut*, i16, %JavaClass**, i16, %JavaClass*, i16, i8, i32, i32, i8*, void (i8*)* }
12*9880d681SAndroid Build Coastguard Worker        %JavaCommonClass = type { %JavaCommonClass**, i32, [1 x %JavaObject*], i16, %JavaClass**, i16, %ArraySInt16*, %JavaClass*, i8* }
13*9880d681SAndroid Build Coastguard Worker        %JavaField = type { i8*, i16, %ArraySInt16*, %ArraySInt16*, %Attribut*, i16, %JavaClass*, i32, i16, i8* }
14*9880d681SAndroid Build Coastguard Worker        %JavaMethod = type { i8*, i16, %Attribut*, i16, %Enveloppe*, i16, %JavaClass*, %ArraySInt16*, %ArraySInt16*, i8, i8*, i32, i8* }
15*9880d681SAndroid Build Coastguard Worker        %JavaObject = type { %VT*, %JavaCommonClass*, i8* }
16*9880d681SAndroid Build Coastguard Worker        %TaskClassMirror = type { i32, i8* }
17*9880d681SAndroid Build Coastguard Worker        %UTF8 = type { %JavaObject, i8*, [0 x i16] }
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdeclare void @jnjvmNullPointerException()
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine i32 @JnJVM_java_rmi_activation_ActivationGroupID_hashCode__(%JavaObject* nocapture) nounwind {
22*9880d681SAndroid Build Coastguard Workerstart:
23*9880d681SAndroid Build Coastguard Worker        %1 = getelementptr %JavaObject, %JavaObject* %0, i64 1, i32 1                ; <%JavaCommonClass**> [#uses=1]
24*9880d681SAndroid Build Coastguard Worker        %2 = load %JavaCommonClass*, %JavaCommonClass** %1         ; <%JavaCommonClass*> [#uses=4]
25*9880d681SAndroid Build Coastguard Worker        %3 = icmp eq %JavaCommonClass* %2, null         ; <i1> [#uses=1]
26*9880d681SAndroid Build Coastguard Worker        br i1 %3, label %verifyNullExit1, label %verifyNullCont2
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard WorkerverifyNullExit1:                ; preds = %start
29*9880d681SAndroid Build Coastguard Worker        tail call void @jnjvmNullPointerException()
30*9880d681SAndroid Build Coastguard Worker        unreachable
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard WorkerverifyNullCont2:                ; preds = %start
33*9880d681SAndroid Build Coastguard Worker        %4 = bitcast %JavaCommonClass* %2 to { %JavaObject, i16, i32, i64 }*            ; <{ %JavaObject, i16, i32, i64 }*> [#uses=1]
34*9880d681SAndroid Build Coastguard Worker        %5 = getelementptr { %JavaObject, i16, i32, i64 }, { %JavaObject, i16, i32, i64 }* %4, i64 0, i32 2             ; <i32*> [#uses=1]
35*9880d681SAndroid Build Coastguard Worker        %6 = load i32, i32* %5               ; <i32> [#uses=1]
36*9880d681SAndroid Build Coastguard Worker        %7 = getelementptr %JavaCommonClass, %JavaCommonClass* %2, i64 0, i32 4           ; <%JavaClass***> [#uses=1]
37*9880d681SAndroid Build Coastguard Worker        %8 = bitcast %JavaClass*** %7 to i64*           ; <i64*> [#uses=1]
38*9880d681SAndroid Build Coastguard Worker        %9 = load i64, i64* %8               ; <i64> [#uses=1]
39*9880d681SAndroid Build Coastguard Worker        %10 = trunc i64 %9 to i32               ; <i32> [#uses=1]
40*9880d681SAndroid Build Coastguard Worker        %11 = getelementptr %JavaCommonClass, %JavaCommonClass* %2, i64 0, i32 3          ; <i16*> [#uses=1]
41*9880d681SAndroid Build Coastguard Worker        %12 = load i16, i16* %11             ; <i16> [#uses=1]
42*9880d681SAndroid Build Coastguard Worker        %13 = sext i16 %12 to i32               ; <i32> [#uses=1]
43*9880d681SAndroid Build Coastguard Worker        %14 = xor i32 %10, %6           ; <i32> [#uses=1]
44*9880d681SAndroid Build Coastguard Worker        %15 = xor i32 %14, %13          ; <i32> [#uses=1]
45*9880d681SAndroid Build Coastguard Worker        ret i32 %15
46*9880d681SAndroid Build Coastguard Worker}
47